diff --git a/.qmake.conf b/.qmake.conf index b27946687f5..d3a37eb80b2 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -3,4 +3,4 @@ MODULE_QMAKE_OUTDIR = $$shadowed($$PWD/Tools/qmake) QMAKEPATH += $$PWD/Tools/qmake $$MODULE_QMAKE_OUTDIR load(qt_build_config) -MODULE_VERSION = 5.5.1 +MODULE_VERSION = 5.6.1 diff --git a/Examples/ChangeLog b/Examples/ChangeLog new file mode 100644 index 00000000000..80cf1da9d27 --- /dev/null +++ b/Examples/ChangeLog @@ -0,0 +1,384 @@ +2011-03-17 Jeff Miller + + Use a consistent set of file patterns in the svn:ignore property for all .xcodeproj directories, specifically: + + *.mode* + *.pbxuser + *.perspective* + project.xcworkspace + xcuserdata + + * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj: Modified property svn:ignore. + * NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj: Modified property svn:ignore. + * NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj: Modified property svn:ignore. + * NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj: Modified property svn:ignore. + +2011-01-17 Dan Bernstein + + Rubber-stamped by Mark Rowe. + + Update xcodeproj svn:ignore to include xcuserdata. + + * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj: Modified property svn:ignore. + * NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj: Modified property svn:ignore. + * NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj: Modified property svn:ignore. + * NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj: Modified property svn:ignore. + +2010-11-03 Darin Adler + + Updated Xcode projects by opening them with Xcode 3.2.4. + Updated svn:ignore for Xcode projects. + + * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj: Added property svn:ignore. + * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj: Updated with Xcode 3.2.4. + * NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj: Added property svn:ignore. + * NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj/project.pbxproj: + * NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj: Added property svn:ignore. + * NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj/project.pbxproj: + * NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj: Added property svn:ignore. + * NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj: Updated with Xcode 3.2.4. + +2010-06-16 Anders Carlsson + + Fix build. + + * NetscapeCoreAnimationMoviePlugin/main.m: + (NPP_New): + (NPP_WriteReady): + (NPP_Write): + (NPP_HandleEvent): + +2010-06-10 Anders Carlsson + + Fix build. + + * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj: + * NetscapeCocoaPlugin/main.m: + (NPP_New): + (NPP_NewStream): + (NPP_WriteReady): + (NPP_Write): + (NPP_HandleEvent): + +2010-03-02 Anders Carlsson + + Reviewed by Kevin Decker. + + NPWindow is now null in the Cocoa event model. + + * NetscapeInputMethodPlugin/main.m: + (handleDraw): + (NPP_HandleEvent): + +2009-07-10 Adam Roben + + Sort all our Xcode projects + + Accomplished using sort-Xcode-project-file. + + Requested by Dave Kilzer. + + * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj: + * NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj/project.pbxproj: + * NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj/project.pbxproj: + +2009-06-15 Anders Carlsson + + Reviewed by Kevin Decker. + + Add Core Animation movie plug-in example. + + * NetscapeCoreAnimationMoviePlugin: Added. + * NetscapeCoreAnimationMoviePlugin/English.lproj: Added. + * NetscapeCoreAnimationMoviePlugin/English.lproj/InfoPlist.strings: Added. + * NetscapeCoreAnimationMoviePlugin/Info.plist: Added. + * NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.h: Added. + * NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.m: Added. + (createImageNamed): + (-[MovieControllerLayer init]): + (-[MovieControllerLayer dealloc]): + (-[MovieControllerLayer _playPauseButtonRect]): + (-[MovieControllerLayer _sliderRect]): + (-[MovieControllerLayer _sliderThumbRect]): + (-[MovieControllerLayer _innerSliderRect]): + (-[MovieControllerLayer _drawPlayPauseButtonInContext:]): + (-[MovieControllerLayer _drawSliderInContext:]): + (-[MovieControllerLayer drawInContext:]): + (-[MovieControllerLayer _currentTime]): + (-[MovieControllerLayer _duration]): + (-[MovieControllerLayer _isPlaying]): + (-[MovieControllerLayer _updateTime:]): + (-[MovieControllerLayer _rateDidChange:]): + (-[MovieControllerLayer _timeDidChange:]): + (-[MovieControllerLayer actionForKey:]): + (-[MovieControllerLayer setMovie:]): + (-[MovieControllerLayer _setNewTimeForThumbCenterX:]): + (-[MovieControllerLayer handleMouseDown:]): + (-[MovieControllerLayer handleMouseUp:]): + (-[MovieControllerLayer handleMouseDragged:]): + * NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj: Added. + * NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj/project.pbxproj: Added. + * NetscapeCoreAnimationMoviePlugin/Pause.tiff: Added. + * NetscapeCoreAnimationMoviePlugin/Play.tiff: Added. + * NetscapeCoreAnimationMoviePlugin/SliderTrackCenter.tiff: Added. + * NetscapeCoreAnimationMoviePlugin/SliderTrackLeft.tiff: Added. + * NetscapeCoreAnimationMoviePlugin/SliderTrackRight.tiff: Added. + * NetscapeCoreAnimationMoviePlugin/Thumb.tiff: Added. + * NetscapeCoreAnimationMoviePlugin/main.m: Added. + (NP_Initialize): + (NP_GetEntryPoints): + (NP_Shutdown): + (NPP_New): + (NPP_Destroy): + (NPP_SetWindow): + (NPP_NewStream): + (NPP_DestroyStream): + (NPP_WriteReady): + (NPP_Write): + (NPP_StreamAsFile): + (NPP_Print): + (handleMouseDown): + (togglePlayPause): + (handleMouseUp): + (handleMouseDragged): + (handleMouseEntered): + (handleMouseExited): + (handleKeyDown): + (handleScrollEvent): + (NPP_HandleEvent): + (NPP_URLNotify): + (NPP_GetValue): + (NPP_SetValue): + * NetscapeCoreAnimationMoviePlugin/test.html: Added. + +2009-04-27 Anders Carlsson + + Reviewed by Adam Roben. + + Update the example plug-in for new changes to the Cocoa event model. + + * NetscapeCocoaPlugin/main.m: + (handleDraw): + (handleMouseEvent): + (NPP_HandleEvent): + +2009-03-13 Anders Carlsson + + Reviewed by Kevin Decker. + + Update to match new API. + + * NetscapeInputMethodPlugin/main.m: + (NPP_New): + (NPP_Destroy): + (NPP_SetWindow): + (handleDraw): + (invalidatePlugin): + (handleFocusChanged): + (handleMouseMoved): + (handleMouseDown): + (handleTextFieldKeyDown): + (handleTextInput): + (NPP_HandleEvent): + (NPP_URLNotify): + (NPP_GetValue): + (NPP_SetValue): + +2008-12-12 Anders Carlsson + + Reviewed by Darin Adler. + + There's no need to hold on to the QCComposition. Also, toggle between a gold and silver compass + when a mouse button is pressed. + + * NetscapeCoreAnimationPlugin/Composition.qtz: + * NetscapeCoreAnimationPlugin/main.m: + (NPP_Destroy): + (handleMouseClick): + (NPP_GetValue): + +2008-12-12 Anders Carlsson + + Revert some accidentally committed changes. + + * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj: + * NetscapeCocoaPlugin/main.m: + (handleDraw): + (handleMouseEvent): + (NPP_HandleEvent): + +2008-12-12 Anders Carlsson + + Reviewed by Kevin Decker. + + Add a sample Core Animation NPAPI plug-in. + + * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj: + * NetscapeCocoaPlugin/main.m: + (handleDraw): + (handleMouseEvent): + (NPP_HandleEvent): + * NetscapeCoreAnimationPlugin: Added. + * NetscapeCoreAnimationPlugin/Composition.qtz: Added. + * NetscapeCoreAnimationPlugin/English.lproj: Added. + * NetscapeCoreAnimationPlugin/English.lproj/InfoPlist.strings: Added. + * NetscapeCoreAnimationPlugin/Info.plist: Added. + * NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj: Added. + * NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj/project.pbxproj: Added. + * NetscapeCoreAnimationPlugin/main.m: Added. + (NP_Initialize): + (NP_GetEntryPoints): + (NP_Shutdown): + (NPP_New): + (NPP_Destroy): + (NPP_SetWindow): + (NPP_NewStream): + (NPP_DestroyStream): + (NPP_WriteReady): + (NPP_Write): + (NPP_StreamAsFile): + (NPP_Print): + (handleMouseClick): + (NPP_HandleEvent): + (NPP_URLNotify): + (NPP_GetValue): + (NPP_SetValue): + * NetscapeCoreAnimationPlugin/test.html: Added. + +2008-12-08 David Kilzer + + Bug 22555: Sort "children" sections in Xcode project files + + + + Reviewed by Eric Seidel. + + * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj: Sorted. + +2008-08-20 Josh Aas + + Reviewed and landed by Anders. + + + rename NPCocoaEvent's "event" struct to "data" (20446) + + * NetscapeCocoaPlugin/main.m: + (handleMouseEvent): + (handleKeyboardEvent): + (NPP_HandleEvent): + +2008-05-22 Josh Aas + + Reviewed by Anders. + + Use correct enum. + + * NetscapeCocoaPlugin/main.m: + (NPP_New): + * NetscapeInputMethodPlugin/main.m: + (NPP_New): + +2008-05-12 Anders Carlsson + + Reviewed by Alexey. + + Add input method test plug-in. + + * NetscapeInputMethodPlugin: Added. + * NetscapeInputMethodPlugin/English.lproj: Added. + * NetscapeInputMethodPlugin/English.lproj/InfoPlist.strings: Added. + * NetscapeInputMethodPlugin/Info.plist: Added. + * NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj: Added. + * NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj: Added. + * NetscapeInputMethodPlugin/main.m: Added. + (NP_Initialize): + (NP_GetEntryPoints): + (NP_Shutdown): + (NPP_New): + (NPP_Destroy): + (NPP_SetWindow): + (NPP_NewStream): + (NPP_DestroyStream): + (NPP_WriteReady): + (NPP_Write): + (NPP_StreamAsFile): + (NPP_Print): + (handleDraw): + (invalidatePlugin): + (handleFocusChanged): + (handleMouseMoved): + (handleMouseDown): + (NPP_HandleEvent): + (NPP_URLNotify): + (selectionRange): + (NPP_InsertText): + (NPP_DoCommandBySelector): + (markedTextAttributes): + (NPP_SetMarkedText): + (NPP_UnmarkText): + (NPP_HasMarkedText): + (NPP_AttributedSubstringFromRange): + (NPP_MarkedRange): + (NPP_SelectedRange): + (NPP_FirstRectForCharacterRange): + (pluginTextInputFuncs): + (NPP_GetValue): + (NPP_SetValue): + * NetscapeInputMethodPlugin/test.html: Added. + +2008-05-06 Anders Carlsson + + Reviewed by Mitz. + + Add NPN_PopUpContextMenu example. + + * NetscapeCocoaPlugin/MenuHandler.h: Added. + * NetscapeCocoaPlugin/MenuHandler.m: Added. + (-[MenuHandler _openURL:]): + (-[MenuHandler _disabledItem:]): + (-[MenuHandler validateUserInterfaceItem:]): + (-[MenuHandler initWithBrowserFuncs:instance:]): + (-[MenuHandler dealloc]): + (-[MenuHandler menu]): + * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj: + * NetscapeCocoaPlugin/main.m: + (NPP_Destroy): + (handleMouseEvent): + +2008-05-06 Anders Carlsson + + Reviewed by Jon, Tim and Mark. + + Add a sample NPAPI plugin that uses the Cocoa event model. + + * .: Added. + * ChangeLog: Added. + * NetscapeCocoaPlugin: Added. + * NetscapeCocoaPlugin/English.lproj: Added. + * NetscapeCocoaPlugin/English.lproj/InfoPlist.strings: Added. + * NetscapeCocoaPlugin/Info.plist: Added. + * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj: Added. + * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj: Added. + * NetscapeCocoaPlugin/main.m: Added. + (NP_Initialize): + (NP_GetEntryPoints): + (NP_Shutdown): + (NPP_New): + (NPP_Destroy): + (NPP_SetWindow): + (NPP_NewStream): + (NPP_DestroyStream): + (NPP_WriteReady): + (NPP_Write): + (NPP_StreamAsFile): + (NPP_Print): + (handleDraw): + (eventType): + (invalidatePlugin): + (handleMouseEvent): + (handleKeyboardEvent): + (NPP_HandleEvent): + (NPP_URLNotify): + (NPP_GetValue): + (NPP_SetValue): + * NetscapeCocoaPlugin/test.html: Added. diff --git a/Examples/NetscapeCocoaPlugin/English.lproj/InfoPlist.strings b/Examples/NetscapeCocoaPlugin/English.lproj/InfoPlist.strings new file mode 100644 index 00000000000..5e45963c382 Binary files /dev/null and b/Examples/NetscapeCocoaPlugin/English.lproj/InfoPlist.strings differ diff --git a/Examples/NetscapeCocoaPlugin/Info.plist b/Examples/NetscapeCocoaPlugin/Info.plist new file mode 100644 index 00000000000..47ae1a52263 --- /dev/null +++ b/Examples/NetscapeCocoaPlugin/Info.plist @@ -0,0 +1,36 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + NetscapeCocoaPlugin + CFBundleIconFile + + CFBundleIdentifier + com.apple.netscapecocoaplugin + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BRPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + WebPluginDescription + Simple Netscape plug-in that draws using CoreGraphics and handles events using the Cocoa event model + WebPluginMIMETypes + + test/x-netscape-cocoa-plugin + + WebPluginTypeDescription + Netscape Cocoa Plug-in + + + WebPluginName + Netscape Cocoa Plug-in + + diff --git a/Examples/NetscapeCocoaPlugin/MenuHandler.h b/Examples/NetscapeCocoaPlugin/MenuHandler.h new file mode 100644 index 00000000000..19070f0bf9f --- /dev/null +++ b/Examples/NetscapeCocoaPlugin/MenuHandler.h @@ -0,0 +1,47 @@ +/* + IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in + consideration of your agreement to the following terms, and your use, installation, + modification or redistribution of this Apple software constitutes acceptance of these + terms. If you do not agree with these terms, please do not use, install, modify or + redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and subject to these + terms, Apple grants you a personal, non-exclusive license, under Apple鈥檚 copyrights in + this original Apple software (the "Apple Software"), to use, reproduce, modify and + redistribute the Apple Software, with or without modifications, in source and/or binary + forms; provided that if you redistribute the Apple Software in its entirety and without + modifications, you must retain this notice and the following text and disclaimers in all + such redistributions of the Apple Software. Neither the name, trademarks, service marks + or logos of Apple Computer, Inc. may be used to endorse or promote products derived from + the Apple Software without specific prior written permission from Apple. Except as expressly + stated in this notice, no other rights or licenses, express or implied, are granted by Apple + herein, including but not limited to any patent rights that may be infringed by your + derivative works or by other works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, + EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS + USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, + REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND + WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR + OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import + +@interface MenuHandler : NSObject { + NSMenu *menu; + NPNetscapeFuncs *browserFuncs; + NPP instance; +} + +- (id)initWithBrowserFuncs:(NPNetscapeFuncs *)theBrowserFuncs instance:(NPP)theInstance; + +- (NSMenu *)menu; + +@end diff --git a/Examples/NetscapeCocoaPlugin/MenuHandler.m b/Examples/NetscapeCocoaPlugin/MenuHandler.m new file mode 100644 index 00000000000..b9feb1cf862 --- /dev/null +++ b/Examples/NetscapeCocoaPlugin/MenuHandler.m @@ -0,0 +1,99 @@ +/* + IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in + consideration of your agreement to the following terms, and your use, installation, + modification or redistribution of this Apple software constitutes acceptance of these + terms. If you do not agree with these terms, please do not use, install, modify or + redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and subject to these + terms, Apple grants you a personal, non-exclusive license, under Apple鈥檚 copyrights in + this original Apple software (the "Apple Software"), to use, reproduce, modify and + redistribute the Apple Software, with or without modifications, in source and/or binary + forms; provided that if you redistribute the Apple Software in its entirety and without + modifications, you must retain this notice and the following text and disclaimers in all + such redistributions of the Apple Software. Neither the name, trademarks, service marks + or logos of Apple Computer, Inc. may be used to endorse or promote products derived from + the Apple Software without specific prior written permission from Apple. Except as expressly + stated in this notice, no other rights or licenses, express or implied, are granted by Apple + herein, including but not limited to any patent rights that may be infringed by your + derivative works or by other works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, + EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS + USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, + REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND + WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR + OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import "MenuHandler.h" + +@implementation MenuHandler + +- (void)_openURL:(id)sender +{ + browserFuncs->geturl(instance, "http://www.apple.com/", "_blank"); +} + +- (void)_disabledItem:(id)sender +{ + // This should never be called +} + +- (BOOL)validateUserInterfaceItem:(id )anItem +{ + SEL sel = [anItem action]; + + if (sel == @selector(_openURL:)) + return YES; + + if (sel == @selector(_disabledItem:)) + return NO; + + return NO; +} + +- (id)initWithBrowserFuncs:(NPNetscapeFuncs *)theBrowserFuncs instance:(NPP)theInstance; +{ + self = [super init]; + if (!self) + return nil; + + browserFuncs = theBrowserFuncs; + instance = theInstance; + + // Create the menu + menu = [[NSMenu alloc] initWithTitle:@"Menu"]; + + NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:@"Open URL" action:@selector(_openURL:) keyEquivalent:@""]; + [item setTarget:self]; + [menu addItem:item]; + [item release]; + + item = [[NSMenuItem alloc] initWithTitle:@"Disabled Item" action:@selector(_disabledItem:) keyEquivalent:@""]; + [item setTarget:self]; + [menu addItem:item]; + [item release]; + + return self; +} + +- (void)dealloc +{ + [menu release]; + + [super dealloc]; +} + + +- (NSMenu *)menu +{ + return menu; +} + +@end diff --git a/Examples/NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj b/Examples/NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..c9a0b70b545 --- /dev/null +++ b/Examples/NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj @@ -0,0 +1,247 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 1A624E590DCBC7F6006898C8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A624E580DCBC7F6006898C8 /* main.m */; }; + 1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A6250410DCBC81B006898C8 /* Cocoa.framework */; }; + 1AAD6A090DD0DC52003985DA /* MenuHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AAD6A080DD0DC52003985DA /* MenuHandler.m */; }; + 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + 1A624E580DCBC7F6006898C8 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 1A6250410DCBC81B006898C8 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 1AAD6A070DD0DC52003985DA /* MenuHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuHandler.h; sourceTree = ""; }; + 1AAD6A080DD0DC52003985DA /* MenuHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuHandler.m; sourceTree = ""; }; + 8D576316048677EA00EA77CD /* NetscapeCocoaPlugin.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NetscapeCocoaPlugin.plugin; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D576313048677EA00EA77CD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* NetscapeCocoaPlugin */ = { + isa = PBXGroup; + children = ( + 08FB77AFFE84173DC02AAC07 /* Source */, + 089C167CFE841241C02AAC07 /* Resources */, + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, + 19C28FB6FE9D52B211CA2CBB /* Products */, + ); + name = NetscapeCocoaPlugin; + sourceTree = ""; + }; + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 1A6250410DCBC81B006898C8 /* Cocoa.framework */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 8D576317048677EA00EA77CD /* Info.plist */, + 8D5B49A704867FD3000E48DA /* InfoPlist.strings */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77AFFE84173DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 1A624E580DCBC7F6006898C8 /* main.m */, + 1AAD6A070DD0DC52003985DA /* MenuHandler.h */, + 1AAD6A080DD0DC52003985DA /* MenuHandler.m */, + ); + name = Source; + sourceTree = ""; + }; + 19C28FB6FE9D52B211CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D576316048677EA00EA77CD /* NetscapeCocoaPlugin.plugin */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D57630D048677EA00EA77CD /* NetscapeCocoaPlugin */ = { + isa = PBXNativeTarget; + buildConfigurationList = 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeCocoaPlugin" */; + buildPhases = ( + 8D576311048677EA00EA77CD /* Sources */, + 8D57630F048677EA00EA77CD /* Resources */, + 8D576313048677EA00EA77CD /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = NetscapeCocoaPlugin; + productInstallPath = "$(HOME)/Library/Bundles"; + productName = NetscapeCocoaPlugin; + productReference = 8D576316048677EA00EA77CD /* NetscapeCocoaPlugin.plugin */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeCocoaPlugin" */; + compatibilityVersion = "Xcode 2.4"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 089C166AFE841209C02AAC07 /* NetscapeCocoaPlugin */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D57630D048677EA00EA77CD /* NetscapeCocoaPlugin */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D57630F048677EA00EA77CD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D576311048677EA00EA77CD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A624E590DCBC7F6006898C8 /* main.m in Sources */, + 1AAD6A090DD0DC52003985DA /* MenuHandler.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C167EFE841241C02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 149C298408902C53008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DEBUGGING_SYMBOLS = full; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + PRODUCT_NAME = NetscapeCocoaPlugin; + WRAPPER_EXTENSION = plugin; + ZERO_LINK = YES; + }; + name = Debug; + }; + 149C298508902C53008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + GCC_DEBUGGING_SYMBOLS = full; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + PRODUCT_NAME = NetscapeCocoaPlugin; + WRAPPER_EXTENSION = plugin; + }; + name = Release; + }; + 149C298808902C53008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64"; + ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1 = x86_64; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + }; + name = Debug; + }; + 149C298908902C53008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64"; + ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1 = x86_64; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeCocoaPlugin" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C298408902C53008A9EFC /* Debug */, + 149C298508902C53008A9EFC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeCocoaPlugin" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C298808902C53008A9EFC /* Debug */, + 149C298908902C53008A9EFC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} diff --git a/Examples/NetscapeCocoaPlugin/main.m b/Examples/NetscapeCocoaPlugin/main.m new file mode 100644 index 00000000000..3f0396a3a75 --- /dev/null +++ b/Examples/NetscapeCocoaPlugin/main.m @@ -0,0 +1,368 @@ +/* + IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in + consideration of your agreement to the following terms, and your use, installation, + modification or redistribution of this Apple software constitutes acceptance of these + terms. If you do not agree with these terms, please do not use, install, modify or + redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and subject to these + terms, Apple grants you a personal, non-exclusive license, under Apple鈥檚 copyrights in + this original Apple software (the "Apple Software"), to use, reproduce, modify and + redistribute the Apple Software, with or without modifications, in source and/or binary + forms; provided that if you redistribute the Apple Software in its entirety and without + modifications, you must retain this notice and the following text and disclaimers in all + such redistributions of the Apple Software. Neither the name, trademarks, service marks + or logos of Apple Computer, Inc. may be used to endorse or promote products derived from + the Apple Software without specific prior written permission from Apple. Except as expressly + stated in this notice, no other rights or licenses, express or implied, are granted by Apple + herein, including but not limited to any patent rights that may be infringed by your + derivative works or by other works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, + EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS + USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, + REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND + WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR + OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import +#import + +#import + +#import "MenuHandler.h" + +// Browser function table +static NPNetscapeFuncs* browser; + +// Structure for per-instance storage +typedef struct PluginObject +{ + NPP npp; + + NPWindow window; + + NSString *string; + bool hasFocus; + bool mouseIsInsidePlugin; + + MenuHandler *menuHandler; +} PluginObject; + +NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData* saved); +NPError NPP_Destroy(NPP instance, NPSavedData** save); +NPError NPP_SetWindow(NPP instance, NPWindow* window); +NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16_t* stype); +NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason); +int32_t NPP_WriteReady(NPP instance, NPStream* stream); +int32_t NPP_Write(NPP instance, NPStream* stream, int32_t offset, int32_t len, void* buffer); +void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname); +void NPP_Print(NPP instance, NPPrint* platformPrint); +int16_t NPP_HandleEvent(NPP instance, void* event); +void NPP_URLNotify(NPP instance, const char* URL, NPReason reason, void* notifyData); +NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value); +NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value); + +#pragma export on +// Mach-o entry points +NPError NP_Initialize(NPNetscapeFuncs *browserFuncs); +NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs); +void NP_Shutdown(void); +#pragma export off + +NPError NP_Initialize(NPNetscapeFuncs* browserFuncs) +{ + browser = browserFuncs; + return NPERR_NO_ERROR; +} + +NPError NP_GetEntryPoints(NPPluginFuncs* pluginFuncs) +{ + pluginFuncs->version = 11; + pluginFuncs->size = sizeof(pluginFuncs); + pluginFuncs->newp = NPP_New; + pluginFuncs->destroy = NPP_Destroy; + pluginFuncs->setwindow = NPP_SetWindow; + pluginFuncs->newstream = NPP_NewStream; + pluginFuncs->destroystream = NPP_DestroyStream; + pluginFuncs->asfile = NPP_StreamAsFile; + pluginFuncs->writeready = NPP_WriteReady; + pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write; + pluginFuncs->print = NPP_Print; + pluginFuncs->event = NPP_HandleEvent; + pluginFuncs->urlnotify = NPP_URLNotify; + pluginFuncs->getvalue = NPP_GetValue; + pluginFuncs->setvalue = NPP_SetValue; + + return NPERR_NO_ERROR; +} + +void NP_Shutdown(void) +{ + +} + +NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData* saved) +{ + // Create per-instance storage + PluginObject *obj = (PluginObject *)malloc(sizeof(PluginObject)); + bzero(obj, sizeof(PluginObject)); + + obj->npp = instance; + instance->pdata = obj; + + // Ask the browser if it supports the CoreGraphics drawing model + NPBool supportsCoreGraphics; + if (browser->getvalue(instance, NPNVsupportsCoreGraphicsBool, &supportsCoreGraphics) != NPERR_NO_ERROR) + supportsCoreGraphics = FALSE; + + if (!supportsCoreGraphics) + return NPERR_INCOMPATIBLE_VERSION_ERROR; + + // If the browser supports the CoreGraphics drawing model, enable it. + browser->setvalue(instance, NPPVpluginDrawingModel, (void *)NPDrawingModelCoreGraphics); + + // If the browser supports the Cocoa event model, enable it. + NPBool supportsCocoa; + if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR) + supportsCocoa = FALSE; + + if (!supportsCocoa) + return NPERR_INCOMPATIBLE_VERSION_ERROR; + + browser->setvalue(instance, NPPVpluginEventModel, (void *)NPEventModelCocoa); + + return NPERR_NO_ERROR; +} + +NPError NPP_Destroy(NPP instance, NPSavedData** save) +{ + // Free per-instance storage + PluginObject *obj = instance->pdata; + + [obj->string release]; + [obj->menuHandler release]; + + free(obj); + + return NPERR_NO_ERROR; +} + +NPError NPP_SetWindow(NPP instance, NPWindow* window) +{ + PluginObject *obj = instance->pdata; + obj->window = *window; + + return NPERR_NO_ERROR; +} + + +NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16_t* stype) +{ + *stype = NP_ASFILEONLY; + return NPERR_NO_ERROR; +} + +NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason) +{ + return NPERR_NO_ERROR; +} + +int32_t NPP_WriteReady(NPP instance, NPStream* stream) +{ + return 0; +} + +int32_t NPP_Write(NPP instance, NPStream* stream, int32_t offset, int32_t len, void* buffer) +{ + return 0; +} + +void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname) +{ +} + +void NPP_Print(NPP instance, NPPrint* platformPrint) +{ + +} + +static void handleDraw(PluginObject *obj, NPCocoaEvent *event) +{ + NSGraphicsContext *oldContext = [[NSGraphicsContext currentContext] retain]; + + NSGraphicsContext *context = [NSGraphicsContext graphicsContextWithGraphicsPort:event->data.draw.context + flipped:YES]; + + [NSGraphicsContext setCurrentContext:context]; + + NSRect rect = NSMakeRect(0, 0, obj->window.width, obj->window.height); + + [[NSColor lightGrayColor] set]; + [NSBezierPath fillRect:rect]; + + // If the plugin has focus, draw a focus indicator + if (obj->hasFocus) { + [[NSColor blackColor] set]; + NSBezierPath *path = [NSBezierPath bezierPathWithRect:rect]; + [path setLineWidth:5]; + [path stroke]; + } + + [obj->string drawAtPoint:NSMakePoint(10, 10) withAttributes:nil]; + + [NSGraphicsContext setCurrentContext:oldContext]; +} + +static NSString *eventType(NPCocoaEventType type) +{ + switch (type) { + case NPCocoaEventScrollWheel: + return @"NPCocoaEventScrollWheel"; + case NPCocoaEventMouseDown: + return @"NPCocoaEventMouseDown"; + case NPCocoaEventMouseUp: + return @"NPCocoaEventMouseUp"; + case NPCocoaEventMouseMoved: + return @"NPCocoaEventMouseMoved"; + case NPCocoaEventMouseDragged: + return @"NPCocoaEventMouseDragged"; + case NPCocoaEventMouseEntered: + return @"NPCocoaEventMouseEntered"; + case NPCocoaEventMouseExited: + return @"NPCocoaEventMouseExited"; + case NPCocoaEventKeyDown: + return @"NPCocoaEventKeyDown"; + case NPCocoaEventKeyUp: + return @"NPCocoaEventKeyUp"; + case NPCocoaEventFlagsChanged: + return @"NPCocoaEventFlagsChanged"; + default: + return @"unknown"; + } +} + +static void invalidatePlugin(PluginObject *obj) +{ + NPRect rect; + rect.left = 0; + rect.top = 0; + rect.right = obj->window.width; + rect.bottom = obj->window.height; + + browser->invalidaterect(obj->npp, &rect); +} + + +static void handleMouseEvent(PluginObject *obj, NPCocoaEvent *event) +{ + NSString *string = [NSString stringWithFormat:@"Type: %@\n" + "Modifier flags: 0x%x\n" + "Coordinates: (%g, %g)\n" + "Button number: %d\n" + "Click count: %d\n" + "Delta: (%g, %g, %g)", + eventType(event->type), + event->data.mouse.modifierFlags, + event->data.mouse.pluginX, + event->data.mouse.pluginY, + event->data.mouse.buttonNumber, + event->data.mouse.clickCount, + event->data.mouse.deltaX, event->data.mouse.deltaY, event->data.mouse.deltaZ]; + + + [obj->string release]; + obj->string = [string retain]; + + invalidatePlugin(obj); + + if (event->data.mouse.buttonNumber == 1) { + if (!obj->menuHandler) + obj->menuHandler = [[MenuHandler alloc] initWithBrowserFuncs:browser instance:obj->npp]; + + browser->popupcontextmenu(obj->npp, (NPNSMenu *)[obj->menuHandler menu]); + } +} + +static void handleKeyboardEvent(PluginObject *obj, NPCocoaEvent *event) +{ + NSString *string = [NSString stringWithFormat:@"Type: %@\n" + "Modifier flags: 0x%x\n" + "Characters: %@\n" + "Characters ignoring modifiers: %@\n" + "Is a repeat: %@\n" + "Key code: %d", + eventType(event->type), + event->data.key.modifierFlags, + event->data.key.characters, + event->data.key.charactersIgnoringModifiers, + event->data.key.isARepeat ? @"YES" : @"NO", + event->data.key.keyCode]; + + + [obj->string release]; + obj->string = [string retain]; + + invalidatePlugin(obj); +} + +int16_t NPP_HandleEvent(NPP instance, void* event) +{ + PluginObject *obj = instance->pdata; + + NPCocoaEvent *cocoaEvent = event; + + switch(cocoaEvent->type) { + case NPCocoaEventFocusChanged: + obj->hasFocus = cocoaEvent->data.focus.hasFocus; + invalidatePlugin(obj); + return 1; + + case NPCocoaEventDrawRect: + handleDraw(obj, cocoaEvent); + return 1; + + case NPCocoaEventKeyDown: + case NPCocoaEventKeyUp: + case NPCocoaEventFlagsChanged: + handleKeyboardEvent(obj, cocoaEvent); + return 1; + + case NPCocoaEventMouseDown: + case NPCocoaEventMouseUp: + + // FIXME: NPCocoaEventMouseMoved is currently disabled in order to see other events more clearly + // without "drowning" in mouse moved events. +// case NPCocoaEventMouseMoved: + case NPCocoaEventMouseEntered: + case NPCocoaEventMouseExited: + case NPCocoaEventMouseDragged: + case NPCocoaEventScrollWheel: + handleMouseEvent(obj, cocoaEvent); + return 1; + } + + return 0; +} + +void NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData) +{ + +} + +NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value) +{ + return NPERR_GENERIC_ERROR; +} + +NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value) +{ + return NPERR_GENERIC_ERROR; +} diff --git a/Examples/NetscapeCocoaPlugin/test.html b/Examples/NetscapeCocoaPlugin/test.html new file mode 100644 index 00000000000..368cb1cdfe1 --- /dev/null +++ b/Examples/NetscapeCocoaPlugin/test.html @@ -0,0 +1,11 @@ + + + +Cocoa Netscape Plug-In + + +
+ +
+ + diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/English.lproj/InfoPlist.strings b/Examples/NetscapeCoreAnimationMoviePlugin/English.lproj/InfoPlist.strings new file mode 100644 index 00000000000..5e45963c382 Binary files /dev/null and b/Examples/NetscapeCoreAnimationMoviePlugin/English.lproj/InfoPlist.strings differ diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/Info.plist b/Examples/NetscapeCoreAnimationMoviePlugin/Info.plist new file mode 100644 index 00000000000..5809a146f8b --- /dev/null +++ b/Examples/NetscapeCoreAnimationMoviePlugin/Info.plist @@ -0,0 +1,36 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + NetscapeCoreAnimationMoviePlugin + CFBundleIconFile + + CFBundleIdentifier + com.apple.netscapecoreanimationmovieplugin + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BRPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + WebPluginDescription + Simple Netscape plug-in that draws using Core Animation and handles events using the Cocoa event model + WebPluginMIMETypes + + test/x-netscape-core-animation-movie-plugin + + WebPluginTypeDescription + Netscape Core Animation Movie Plug-in + + + WebPluginName + Netscape Core Animation Movie Plug-in + + diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.h b/Examples/NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.h new file mode 100644 index 00000000000..d29c9160da7 --- /dev/null +++ b/Examples/NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.h @@ -0,0 +1,75 @@ +/* + File: MovieControllerLayer.h + + Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple + Inc. ("Apple") in consideration of your agreement to the following + terms, and your use, installation, modification or redistribution of + this Apple software constitutes acceptance of these terms. If you do + not agree with these terms, please do not use, install, modify or + redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and + subject to these terms, Apple grants you a personal, non-exclusive + license, under Apple's copyrights in this original Apple software (the + "Apple Software"), to use, reproduce, modify and redistribute the Apple + Software, with or without modifications, in source and/or binary forms; + provided that if you redistribute the Apple Software in its entirety and + without modifications, you must retain this notice and the following + text and disclaimers in all such redistributions of the Apple Software. + Neither the name, trademarks, service marks or logos of Apple Inc. may + be used to endorse or promote products derived from the Apple Software + without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or + implied, are granted by Apple herein, including but not limited to any + patent rights that may be infringed by your derivative works or by other + works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE + MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION + THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND + OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, + MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED + AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), + STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + Copyright (C) 2009 Apple Inc. All Rights Reserved. + + */ + + +#import + +@class QTMovie; + +@interface MovieControllerLayer : CALayer { + CGImageRef _playImage; + CGImageRef _pauseImage; + + CGImageRef _sliderTrackLeft; + CGImageRef _sliderTrackRight; + CGImageRef _sliderTrackCenter; + + CGImageRef _thumb; + + QTMovie *_movie; + NSTimer *_updateTimeTimer; + + BOOL _wasPlayingBeforeMouseDown; + BOOL _isScrubbing; + CGFloat _mouseDownXDelta; +} + +- (void)setMovie:(QTMovie *)movie; + +- (void)handleMouseDown:(CGPoint)point; +- (void)handleMouseUp:(CGPoint)point; +- (void)handleMouseDragged:(CGPoint)point; + +@end diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.m b/Examples/NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.m new file mode 100644 index 00000000000..171dab4960c --- /dev/null +++ b/Examples/NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.m @@ -0,0 +1,355 @@ +/* + File: MovieControllerLayer.m + + Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple + Inc. ("Apple") in consideration of your agreement to the following + terms, and your use, installation, modification or redistribution of + this Apple software constitutes acceptance of these terms. If you do + not agree with these terms, please do not use, install, modify or + redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and + subject to these terms, Apple grants you a personal, non-exclusive + license, under Apple's copyrights in this original Apple software (the + "Apple Software"), to use, reproduce, modify and redistribute the Apple + Software, with or without modifications, in source and/or binary forms; + provided that if you redistribute the Apple Software in its entirety and + without modifications, you must retain this notice and the following + text and disclaimers in all such redistributions of the Apple Software. + Neither the name, trademarks, service marks or logos of Apple Inc. may + be used to endorse or promote products derived from the Apple Software + without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or + implied, are granted by Apple herein, including but not limited to any + patent rights that may be infringed by your derivative works or by other + works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE + MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION + THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND + OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, + MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED + AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), + STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + Copyright (C) 2009 Apple Inc. All Rights Reserved. + + */ + +#import "MovieControllerLayer.h" + +#import + +@interface MovieControllerLayer () +- (BOOL)_isPlaying; +- (NSTimeInterval)_currentTime; +- (NSTimeInterval)_duration; +@end + +@implementation MovieControllerLayer + +static CGImageRef createImageNamed(NSString *name) +{ + NSURL *url = [[NSBundle bundleForClass:[MovieControllerLayer class]] URLForResource:name withExtension:@"tiff"]; + + if (!url) + return NULL; + + CGImageSourceRef imageSource = CGImageSourceCreateWithURL((CFURLRef)url, NULL); + if (!imageSource) + return NULL; + + CGImageRef image = CGImageSourceCreateImageAtIndex(imageSource, 0, NULL); + CFRelease(imageSource); + + return image; +} + +- (id)init +{ + if (self = [super init]) { + self.needsDisplayOnBoundsChange = YES; + self.frame = CGRectMake(0, 0, 0, 25); + self.autoresizingMask = kCALayerWidthSizable; + + _playImage = createImageNamed(@"Play"); + _pauseImage = createImageNamed(@"Pause"); + _sliderTrackLeft = createImageNamed(@"SliderTrackLeft"); + _sliderTrackRight = createImageNamed(@"SliderTrackRight"); + _sliderTrackCenter = createImageNamed(@"SliderTrackCenter"); + + _thumb = createImageNamed(@"Thumb"); + } + + return self; +} + +- (void)dealloc +{ + CGImageRelease(_playImage); + CGImageRelease(_pauseImage); + + CGImageRelease(_sliderTrackLeft); + CGImageRelease(_sliderTrackRight); + CGImageRelease(_sliderTrackCenter); + + CGImageRelease(_thumb); + + [self setMovie:nil]; + [_updateTimeTimer invalidate]; + + [super dealloc]; +} + +#pragma mark Drawing + +- (CGRect)_playPauseButtonRect +{ + return CGRectMake(0, 0, 25, 25); +} + +- (CGRect)_sliderRect +{ + CGFloat sliderYPosition = (self.bounds.size.height - CGImageGetHeight(_sliderTrackLeft)) / 2.0; + CGFloat playPauseButtonWidth = [self _playPauseButtonRect].size.width; + + return CGRectMake(playPauseButtonWidth, sliderYPosition, + self.bounds.size.width - playPauseButtonWidth - 7, CGImageGetHeight(_sliderTrackLeft)); +} + +- (CGRect)_sliderThumbRect +{ + CGRect sliderRect = [self _sliderRect]; + + CGFloat fraction = 0.0; + if (_movie) + fraction = [self _currentTime] / [self _duration]; + + CGFloat x = fraction * (CGRectGetWidth(sliderRect) - CGImageGetWidth(_thumb)); + + return CGRectMake(CGRectGetMinX(sliderRect) + x, CGRectGetMinY(sliderRect) - 1, + CGImageGetWidth(_thumb), CGImageGetHeight(_thumb)); +} + +- (CGRect)_innerSliderRect +{ + return CGRectInset([self _sliderRect], CGRectGetWidth([self _sliderThumbRect]) / 2, 0); +} + +- (void)_drawPlayPauseButtonInContext:(CGContextRef)context +{ + CGContextDrawImage(context, [self _playPauseButtonRect], [self _isPlaying] ? _pauseImage : _playImage); +} + +- (void)_drawSliderInContext:(CGContextRef)context +{ + // Draw the thumb + CGRect sliderThumbRect = [self _sliderThumbRect]; + CGContextDrawImage(context, sliderThumbRect, _thumb); + + CGRect sliderRect = [self _sliderRect]; + + // Draw left part + CGRect sliderLeftTrackRect = CGRectMake(CGRectGetMinX(sliderRect), CGRectGetMinY(sliderRect), + CGImageGetWidth(_sliderTrackLeft), CGImageGetHeight(_sliderTrackLeft)); + CGContextDrawImage(context, sliderLeftTrackRect, _sliderTrackLeft); + + // Draw center part + CGRect sliderCenterTrackRect = CGRectInset(sliderRect, CGImageGetWidth(_sliderTrackLeft), 0); + CGContextDrawImage(context, sliderCenterTrackRect, _sliderTrackCenter); + + // Draw right part + CGRect sliderRightTrackRect = CGRectMake(CGRectGetMaxX(sliderCenterTrackRect), CGRectGetMinY(sliderRect), + CGImageGetWidth(_sliderTrackRight), CGImageGetHeight(_sliderTrackRight)); + CGContextDrawImage(context, sliderRightTrackRect, _sliderTrackRight); + +} + +- (void)drawInContext:(CGContextRef)context +{ + CGContextSaveGState(context); + CGContextSetFillColorWithColor(context, CGColorGetConstantColor(kCGColorBlack)); + CGContextFillRect(context, self.bounds); + CGContextRestoreGState(context); + + [self _drawPlayPauseButtonInContext:context]; + [self _drawSliderInContext:context]; +} + +#pragma mark Movie handling + +- (NSTimeInterval)_currentTime +{ + if (!_movie) + return 0; + + QTTime time = [_movie currentTime]; + NSTimeInterval timeInterval; + if (!QTGetTimeInterval(time, &timeInterval)) + return 0; + + return timeInterval; +} + +- (NSTimeInterval)_duration +{ + if (!_movie) + return 0; + + QTTime time = [_movie duration]; + NSTimeInterval timeInterval; + if (!QTGetTimeInterval(time, &timeInterval)) + return 0; + + return timeInterval; +} + +- (BOOL)_isPlaying +{ + return [_movie rate] != 0.0; +} + +- (void)_updateTime:(NSTimer *)timer +{ + [self setNeedsDisplay]; +} + +- (void)_rateDidChange:(NSNotification *)notification +{ + float rate = [[[notification userInfo] objectForKey:QTMovieRateDidChangeNotificationParameter] floatValue]; + + if (rate == 0.0) { + [_updateTimeTimer invalidate]; + _updateTimeTimer = nil; + } else + _updateTimeTimer = [NSTimer scheduledTimerWithTimeInterval:0.035 target:self selector:@selector(_updateTime:) userInfo:nil repeats:YES]; + + [self setNeedsDisplay]; +} + +- (void)_timeDidChange:(NSNotification *)notification +{ + [self setNeedsDisplay]; +} + +- (id)actionForKey:(NSString *)key +{ + // We don't want to animate the contents of the layer. + if ([key isEqualToString:@"contents"]) + return nil; + + return [super actionForKey:key]; +} + +- (void)setMovie:(QTMovie *)movie +{ + if (_movie == movie) + return; + + if (_movie) { + [[NSNotificationCenter defaultCenter] removeObserver:self + name:QTMovieRateDidChangeNotification + object:_movie]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:QTMovieTimeDidChangeNotification + object:_movie]; + [_movie release]; + } + + _movie = [movie retain]; + + if (_movie) { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(_rateDidChange:) + name:QTMovieRateDidChangeNotification + object:_movie]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(_timeDidChange:) + name:QTMovieTimeDidChangeNotification + object:_movie]; + [self setNeedsDisplay]; + } + +} + +# pragma mark Event handling + +- (void)_setNewTimeForThumbCenterX:(CGFloat)centerX +{ + CGRect innerRect = [self _innerSliderRect]; + + CGFloat fraction = (centerX - CGRectGetMinX(innerRect)) / CGRectGetWidth(innerRect); + if (fraction > 1.0) + fraction = 1.0; + else if (fraction < 0.0) + fraction = 0.0; + + NSTimeInterval newTime = fraction * [self _duration]; + + [_movie setCurrentTime:QTMakeTimeWithTimeInterval(newTime)]; + [self setNeedsDisplay]; +} + +- (void)handleMouseDown:(CGPoint)point +{ + if (!_movie) + return; + + if (CGRectContainsPoint([self _sliderRect], point)) { + _wasPlayingBeforeMouseDown = [self _isPlaying]; + _isScrubbing = YES; + + [_movie stop]; + if (CGRectContainsPoint([self _sliderThumbRect], point)) + _mouseDownXDelta = point.x - CGRectGetMidX([self _sliderThumbRect]); + else { + [self _setNewTimeForThumbCenterX:point.x]; + _mouseDownXDelta = 0; + } + } +} + +- (void)handleMouseUp:(CGPoint)point +{ + if (!_movie) + return; + + if (_isScrubbing) { + _isScrubbing = NO; + _mouseDownXDelta = 0; + + if (_wasPlayingBeforeMouseDown) + [_movie play]; + return; + } + + if (CGRectContainsPoint([self _playPauseButtonRect], point)) { + if ([self _isPlaying]) + [_movie stop]; + else + [_movie play]; + return; + } +} + +- (void)handleMouseDragged:(CGPoint)point +{ + if (!_movie) + return; + + if (!_isScrubbing) + return; + + point.x -= _mouseDownXDelta; + + [self _setNewTimeForThumbCenterX:point.x]; +} + +@end diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj/project.pbxproj b/Examples/NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..fef3db914f3 --- /dev/null +++ b/Examples/NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj/project.pbxproj @@ -0,0 +1,279 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 1A624E590DCBC7F6006898C8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A624E580DCBC7F6006898C8 /* main.m */; }; + 1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A6250410DCBC81B006898C8 /* Cocoa.framework */; }; + 1A80001B0FDB2C85000F3646 /* MovieControllerLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A80001A0FDB2C85000F3646 /* MovieControllerLayer.m */; }; + 1A80011A0FDB2CB2000F3646 /* Pause.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1A8001140FDB2CB2000F3646 /* Pause.tiff */; }; + 1A80011B0FDB2CB2000F3646 /* Play.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1A8001150FDB2CB2000F3646 /* Play.tiff */; }; + 1A80011C0FDB2CB2000F3646 /* SliderTrackCenter.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1A8001160FDB2CB2000F3646 /* SliderTrackCenter.tiff */; }; + 1A80011D0FDB2CB2000F3646 /* SliderTrackLeft.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1A8001170FDB2CB2000F3646 /* SliderTrackLeft.tiff */; }; + 1A80011E0FDB2CB2000F3646 /* SliderTrackRight.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1A8001180FDB2CB2000F3646 /* SliderTrackRight.tiff */; }; + 1A80011F0FDB2CB2000F3646 /* Thumb.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1A8001190FDB2CB2000F3646 /* Thumb.tiff */; }; + 1A8001470FDB2E65000F3646 /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A8001460FDB2E65000F3646 /* QTKit.framework */; }; + 1A8C87AA0EF2FBB3003F6E81 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A8C87A90EF2FBB3003F6E81 /* QuartzCore.framework */; }; + 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + 1A624E580DCBC7F6006898C8 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 1A6250410DCBC81B006898C8 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 1A8000190FDB2C85000F3646 /* MovieControllerLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MovieControllerLayer.h; sourceTree = ""; }; + 1A80001A0FDB2C85000F3646 /* MovieControllerLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MovieControllerLayer.m; sourceTree = ""; }; + 1A8001140FDB2CB2000F3646 /* Pause.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Pause.tiff; sourceTree = ""; }; + 1A8001150FDB2CB2000F3646 /* Play.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Play.tiff; sourceTree = ""; }; + 1A8001160FDB2CB2000F3646 /* SliderTrackCenter.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = SliderTrackCenter.tiff; sourceTree = ""; }; + 1A8001170FDB2CB2000F3646 /* SliderTrackLeft.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = SliderTrackLeft.tiff; sourceTree = ""; }; + 1A8001180FDB2CB2000F3646 /* SliderTrackRight.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = SliderTrackRight.tiff; sourceTree = ""; }; + 1A8001190FDB2CB2000F3646 /* Thumb.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Thumb.tiff; sourceTree = ""; }; + 1A8001460FDB2E65000F3646 /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = /System/Library/Frameworks/QTKit.framework; sourceTree = ""; }; + 1A8C87A90EF2FBB3003F6E81 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = ""; }; + 8D576316048677EA00EA77CD /* NetscapeCoreAnimationMoviePlugin.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NetscapeCoreAnimationMoviePlugin.plugin; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D576313048677EA00EA77CD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */, + 1A8001470FDB2E65000F3646 /* QTKit.framework in Frameworks */, + 1A8C87AA0EF2FBB3003F6E81 /* QuartzCore.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* NetscapeCoreAnimationMoviePlugin */ = { + isa = PBXGroup; + children = ( + 08FB77AFFE84173DC02AAC07 /* Source */, + 089C167CFE841241C02AAC07 /* Resources */, + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, + 19C28FB6FE9D52B211CA2CBB /* Products */, + 1A8001460FDB2E65000F3646 /* QTKit.framework */, + ); + name = NetscapeCoreAnimationMoviePlugin; + sourceTree = ""; + }; + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 1A6250410DCBC81B006898C8 /* Cocoa.framework */, + 1A8C87A90EF2FBB3003F6E81 /* QuartzCore.framework */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 8D576317048677EA00EA77CD /* Info.plist */, + 8D5B49A704867FD3000E48DA /* InfoPlist.strings */, + 1A8001140FDB2CB2000F3646 /* Pause.tiff */, + 1A8001150FDB2CB2000F3646 /* Play.tiff */, + 1A8001160FDB2CB2000F3646 /* SliderTrackCenter.tiff */, + 1A8001170FDB2CB2000F3646 /* SliderTrackLeft.tiff */, + 1A8001180FDB2CB2000F3646 /* SliderTrackRight.tiff */, + 1A8001190FDB2CB2000F3646 /* Thumb.tiff */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77AFFE84173DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 1A624E580DCBC7F6006898C8 /* main.m */, + 1A8000190FDB2C85000F3646 /* MovieControllerLayer.h */, + 1A80001A0FDB2C85000F3646 /* MovieControllerLayer.m */, + ); + name = Source; + sourceTree = ""; + }; + 19C28FB6FE9D52B211CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D576316048677EA00EA77CD /* NetscapeCoreAnimationMoviePlugin.plugin */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D57630D048677EA00EA77CD /* NetscapeCoreAnimationMoviePlugin */ = { + isa = PBXNativeTarget; + buildConfigurationList = 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeCoreAnimationMoviePlugin" */; + buildPhases = ( + 8D576311048677EA00EA77CD /* Sources */, + 8D57630F048677EA00EA77CD /* Resources */, + 8D576313048677EA00EA77CD /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = NetscapeCoreAnimationMoviePlugin; + productInstallPath = "$(HOME)/Library/Bundles"; + productName = NetscapeCoreAnimationMoviePlugin; + productReference = 8D576316048677EA00EA77CD /* NetscapeCoreAnimationMoviePlugin.plugin */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeCoreAnimationMoviePlugin" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 089C166AFE841209C02AAC07 /* NetscapeCoreAnimationMoviePlugin */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D57630D048677EA00EA77CD /* NetscapeCoreAnimationMoviePlugin */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D57630F048677EA00EA77CD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */, + 1A80011A0FDB2CB2000F3646 /* Pause.tiff in Resources */, + 1A80011B0FDB2CB2000F3646 /* Play.tiff in Resources */, + 1A80011C0FDB2CB2000F3646 /* SliderTrackCenter.tiff in Resources */, + 1A80011D0FDB2CB2000F3646 /* SliderTrackLeft.tiff in Resources */, + 1A80011E0FDB2CB2000F3646 /* SliderTrackRight.tiff in Resources */, + 1A80011F0FDB2CB2000F3646 /* Thumb.tiff in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D576311048677EA00EA77CD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A624E590DCBC7F6006898C8 /* main.m in Sources */, + 1A80001B0FDB2C85000F3646 /* MovieControllerLayer.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C167EFE841241C02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 149C298408902C53008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DEBUGGING_SYMBOLS = full; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + PRODUCT_NAME = NetscapeCoreAnimationMoviePlugin; + WRAPPER_EXTENSION = plugin; + ZERO_LINK = YES; + }; + name = Debug; + }; + 149C298508902C53008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + GCC_DEBUGGING_SYMBOLS = full; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + PRODUCT_NAME = NetscapeCoreAnimationMoviePlugin; + WRAPPER_EXTENSION = plugin; + }; + name = Release; + }; + 149C298808902C53008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = macosx10.6; + }; + name = Debug; + }; + 149C298908902C53008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = i386; + ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64"; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeCoreAnimationMoviePlugin" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C298408902C53008A9EFC /* Debug */, + 149C298508902C53008A9EFC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeCoreAnimationMoviePlugin" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C298808902C53008A9EFC /* Debug */, + 149C298908902C53008A9EFC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/Pause.tiff b/Examples/NetscapeCoreAnimationMoviePlugin/Pause.tiff new file mode 100644 index 00000000000..b46fa57b04e Binary files /dev/null and b/Examples/NetscapeCoreAnimationMoviePlugin/Pause.tiff differ diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/Play.tiff b/Examples/NetscapeCoreAnimationMoviePlugin/Play.tiff new file mode 100644 index 00000000000..3071a6fa749 Binary files /dev/null and b/Examples/NetscapeCoreAnimationMoviePlugin/Play.tiff differ diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackCenter.tiff b/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackCenter.tiff new file mode 100644 index 00000000000..bef65082c29 Binary files /dev/null and b/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackCenter.tiff differ diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackLeft.tiff b/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackLeft.tiff new file mode 100644 index 00000000000..16092972d67 Binary files /dev/null and b/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackLeft.tiff differ diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackRight.tiff b/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackRight.tiff new file mode 100644 index 00000000000..270c42bfcd7 Binary files /dev/null and b/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackRight.tiff differ diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/Thumb.tiff b/Examples/NetscapeCoreAnimationMoviePlugin/Thumb.tiff new file mode 100644 index 00000000000..392ce568e1e Binary files /dev/null and b/Examples/NetscapeCoreAnimationMoviePlugin/Thumb.tiff differ diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/main.m b/Examples/NetscapeCoreAnimationMoviePlugin/main.m new file mode 100644 index 00000000000..b23283f4f1b --- /dev/null +++ b/Examples/NetscapeCoreAnimationMoviePlugin/main.m @@ -0,0 +1,393 @@ +/* + File: MovieControllerLayer.m + + Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple + Inc. ("Apple") in consideration of your agreement to the following + terms, and your use, installation, modification or redistribution of + this Apple software constitutes acceptance of these terms. If you do + not agree with these terms, please do not use, install, modify or + redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and + subject to these terms, Apple grants you a personal, non-exclusive + license, under Apple's copyrights in this original Apple software (the + "Apple Software"), to use, reproduce, modify and redistribute the Apple + Software, with or without modifications, in source and/or binary forms; + provided that if you redistribute the Apple Software in its entirety and + without modifications, you must retain this notice and the following + text and disclaimers in all such redistributions of the Apple Software. + Neither the name, trademarks, service marks or logos of Apple Inc. may + be used to endorse or promote products derived from the Apple Software + without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or + implied, are granted by Apple herein, including but not limited to any + patent rights that may be infringed by your derivative works or by other + works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE + MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION + THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND + OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, + MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED + AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), + STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + Copyright (C) 2009 Apple Inc. All Rights Reserved. + + */ + +#import +#import +#import + +#import +#import + +#import "MovieControllerLayer.h" + +// Browser function table +static NPNetscapeFuncs* browser; + +// Structure for per-instance storage +typedef struct PluginObject +{ + NPP npp; + + NPWindow window; + + CALayer *rootLayer; + MovieControllerLayer *controllerLayer; + QTMovieLayer *movieLayer; + + CALayer *mouseDownLayer; + + NSURL *movieURL; + QTMovie *movie; +} PluginObject; + +NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData* saved); +NPError NPP_Destroy(NPP instance, NPSavedData** save); +NPError NPP_SetWindow(NPP instance, NPWindow* window); +NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype); +NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason); +int32_t NPP_WriteReady(NPP instance, NPStream* stream); +int32_t NPP_Write(NPP instance, NPStream* stream, int32_t offset, int32_t len, void* buffer); +void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname); +void NPP_Print(NPP instance, NPPrint* platformPrint); +int16_t NPP_HandleEvent(NPP instance, void* event); +void NPP_URLNotify(NPP instance, const char* URL, NPReason reason, void* notifyData); +NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value); +NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value); + +#pragma export on +// Mach-o entry points +NPError NP_Initialize(NPNetscapeFuncs *browserFuncs); +NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs); +void NP_Shutdown(void); +#pragma export off + +NPError NP_Initialize(NPNetscapeFuncs* browserFuncs) +{ + browser = browserFuncs; + return NPERR_NO_ERROR; +} + +NPError NP_GetEntryPoints(NPPluginFuncs* pluginFuncs) +{ + pluginFuncs->version = 11; + pluginFuncs->size = sizeof(pluginFuncs); + pluginFuncs->newp = NPP_New; + pluginFuncs->destroy = NPP_Destroy; + pluginFuncs->setwindow = NPP_SetWindow; + pluginFuncs->newstream = NPP_NewStream; + pluginFuncs->destroystream = NPP_DestroyStream; + pluginFuncs->asfile = NPP_StreamAsFile; + pluginFuncs->writeready = NPP_WriteReady; + pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write; + pluginFuncs->print = NPP_Print; + pluginFuncs->event = NPP_HandleEvent; + pluginFuncs->urlnotify = NPP_URLNotify; + pluginFuncs->getvalue = NPP_GetValue; + pluginFuncs->setvalue = NPP_SetValue; + + return NPERR_NO_ERROR; +} + +void NP_Shutdown(void) +{ + +} + +NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData* saved) +{ + // Create per-instance storage + PluginObject *obj = (PluginObject *)malloc(sizeof(PluginObject)); + bzero(obj, sizeof(PluginObject)); + + obj->npp = instance; + instance->pdata = obj; + + // Ask the browser if it supports the Core Animation drawing model + NPBool supportsCoreAnimation; + if (browser->getvalue(instance, NPNVsupportsCoreAnimationBool, &supportsCoreAnimation) != NPERR_NO_ERROR) + supportsCoreAnimation = FALSE; + + if (!supportsCoreAnimation) + return NPERR_INCOMPATIBLE_VERSION_ERROR; + + // If the browser supports the Core Animation drawing model, enable it. + browser->setvalue(instance, NPPVpluginDrawingModel, (void *)NPDrawingModelCoreAnimation); + + // If the browser supports the Cocoa event model, enable it. + NPBool supportsCocoa; + if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR) + supportsCocoa = FALSE; + + if (!supportsCocoa) + return NPERR_INCOMPATIBLE_VERSION_ERROR; + + browser->setvalue(instance, NPPVpluginEventModel, (void *)NPEventModelCocoa); + + for (int16_t i = 0; i < argc; i++) { + if (strcasecmp(argn[i], "movieurl") == 0) { + NSString *urlString = [NSString stringWithUTF8String:argv[i]]; + if (urlString) + obj->movieURL = [[NSURL URLWithString:urlString] retain]; + break; + } + + } + + return NPERR_NO_ERROR; +} + +NPError NPP_Destroy(NPP instance, NPSavedData** save) +{ + // Free per-instance storage + PluginObject *obj = instance->pdata; + + [obj->movie stop]; + [obj->rootLayer release]; + + free(obj); + + return NPERR_NO_ERROR; +} + +NPError NPP_SetWindow(NPP instance, NPWindow* window) +{ + PluginObject *obj = instance->pdata; + obj->window = *window; + + return NPERR_NO_ERROR; +} + + +NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype) +{ + *stype = NP_ASFILEONLY; + return NPERR_NO_ERROR; +} + +NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason) +{ + return NPERR_NO_ERROR; +} + +int32_t NPP_WriteReady(NPP instance, NPStream* stream) +{ + return 0; +} + +int32_t NPP_Write(NPP instance, NPStream* stream, int32_t offset, int32_t len, void* buffer) +{ + return 0; +} + +void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname) +{ +} + +void NPP_Print(NPP instance, NPPrint* platformPrint) +{ + +} + +static void handleMouseDown(PluginObject *obj, NPCocoaEvent *event) +{ + CGPoint point = CGPointMake(event->data.mouse.pluginX, + // Flip the y coordinate + obj->window.height - event->data.mouse.pluginY); + + obj->mouseDownLayer = [obj->rootLayer hitTest:point]; + if (obj->mouseDownLayer == obj->controllerLayer) { + [obj->controllerLayer handleMouseDown:[obj->rootLayer convertPoint:point toLayer:obj->controllerLayer]]; + return; + } +} + +static void togglePlayPause(PluginObject *obj) +{ + if (!obj->movie) + return; + + if ([obj->movie rate] == 0) + [obj->movie play]; + else + [obj->movie stop]; + +} + +static void handleMouseUp(PluginObject *obj, NPCocoaEvent *event) +{ + CGPoint point = CGPointMake(event->data.mouse.pluginX, + // Flip the y coordinate + obj->window.height - event->data.mouse.pluginY); + + CALayer *mouseDownLayer = obj->mouseDownLayer; + obj->mouseDownLayer = nil; + if (mouseDownLayer == obj->controllerLayer) { + [obj->controllerLayer handleMouseUp:[obj->rootLayer convertPoint:point toLayer:obj->controllerLayer]]; + return; + } +} + +static void handleMouseDragged(PluginObject *obj, NPCocoaEvent *event) +{ + CGPoint point = CGPointMake(event->data.mouse.pluginX, + // Flip the y coordinate + obj->window.height - event->data.mouse.pluginY); + + if (obj->mouseDownLayer == obj->controllerLayer) { + [obj->controllerLayer handleMouseDragged:[obj->rootLayer convertPoint:point toLayer:obj->controllerLayer]]; + return; + } +} + +static void handleMouseEntered(PluginObject *obj) +{ + // Show the controller layer. + obj->controllerLayer.opacity = 1.0; +} + +static void handleMouseExited(PluginObject *obj) +{ + // Hide the controller layer if the movie is playing. + if ([obj->movie rate]) + obj->controllerLayer.opacity = 0.0; +} + +static int handleKeyDown(PluginObject *obj, NPCocoaEvent *event) +{ + NSString *characters = (NSString *)event->data.key.characters; + + if ([characters length] == 1 && [characters characterAtIndex:0] == ' ') { + togglePlayPause(obj); + return 1; + } + + return 0; +} + + +static int handleScrollEvent(PluginObject *obj, NPCocoaEvent *event) +{ + double delta = event->data.mouse.deltaY; + if (delta < 0) + [obj->movie stepForward]; + else + [obj->movie stepBackward]; + return 0; +} + + + +int16_t NPP_HandleEvent(NPP instance, void* event) +{ + PluginObject *obj = instance->pdata; + + NPCocoaEvent *cocoaEvent = event; + + switch(cocoaEvent->type) { + case NPCocoaEventMouseDown: + handleMouseDown(obj, cocoaEvent); + return 1; + case NPCocoaEventMouseUp: + handleMouseUp(obj, cocoaEvent); + return 1; + case NPCocoaEventMouseDragged: + handleMouseDragged(obj, cocoaEvent); + return 1; + case NPCocoaEventMouseEntered: + handleMouseEntered(obj); + return 1; + case NPCocoaEventMouseExited: + handleMouseExited(obj); + return 1; + case NPCocoaEventKeyDown: + return handleKeyDown(obj, cocoaEvent); + case NPCocoaEventScrollWheel: + return handleScrollEvent(obj, cocoaEvent); + } + + return 0; +} + +void NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData) +{ + +} + +NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value) +{ + PluginObject *obj = instance->pdata; + + switch (variable) { + case NPPVpluginCoreAnimationLayer: + if (!obj->rootLayer) { + // Setup layer hierarchy. + obj->rootLayer = [[CALayer layer] retain]; + + obj->movieLayer = [QTMovieLayer layer]; + obj->movieLayer.autoresizingMask = kCALayerWidthSizable | kCALayerHeightSizable; + [obj->rootLayer addSublayer:obj->movieLayer]; + + obj->controllerLayer = [MovieControllerLayer layer]; + [obj->rootLayer addSublayer:obj->controllerLayer]; + + if (obj->movieURL) { + NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:obj->movieURL, QTMovieURLAttribute, + [NSNumber numberWithBool:YES], QTMovieOpenForPlaybackAttribute, + [NSNumber numberWithBool:YES], QTMovieLoopsAttribute, + nil]; + obj->movie = [QTMovie movieWithAttributes:attributes error:nil]; + + if (obj->movie) { + obj->movieLayer.movie = obj->movie; + [obj->controllerLayer setMovie:obj->movie]; + } + } + + } + + // Make sure to return a retained layer + *((CALayer **)value) = [obj->rootLayer retain]; + + return NPERR_NO_ERROR; + + default: + return NPERR_GENERIC_ERROR; + } +} + +NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value) +{ + return NPERR_GENERIC_ERROR; +} diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/test.html b/Examples/NetscapeCoreAnimationMoviePlugin/test.html new file mode 100644 index 00000000000..0ffb77bf8ab --- /dev/null +++ b/Examples/NetscapeCoreAnimationMoviePlugin/test.html @@ -0,0 +1,18 @@ + + + +Netscape Core Animation Movie Plug-In + + +
+ + + + +
+ + diff --git a/Examples/NetscapeCoreAnimationPlugin/Composition.qtz b/Examples/NetscapeCoreAnimationPlugin/Composition.qtz new file mode 100644 index 00000000000..53c084324c6 Binary files /dev/null and b/Examples/NetscapeCoreAnimationPlugin/Composition.qtz differ diff --git a/Examples/NetscapeCoreAnimationPlugin/English.lproj/InfoPlist.strings b/Examples/NetscapeCoreAnimationPlugin/English.lproj/InfoPlist.strings new file mode 100644 index 00000000000..5e45963c382 Binary files /dev/null and b/Examples/NetscapeCoreAnimationPlugin/English.lproj/InfoPlist.strings differ diff --git a/Examples/NetscapeCoreAnimationPlugin/Info.plist b/Examples/NetscapeCoreAnimationPlugin/Info.plist new file mode 100644 index 00000000000..146bc0d56b9 --- /dev/null +++ b/Examples/NetscapeCoreAnimationPlugin/Info.plist @@ -0,0 +1,36 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + NetscapeCoreAnimationPlugin + CFBundleIconFile + + CFBundleIdentifier + com.apple.netscapecoreanimationplugin + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BRPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + WebPluginDescription + Simple Netscape plug-in that draws using Core Animation and handles events using the Cocoa event model + WebPluginMIMETypes + + test/x-netscape-core-animation-plugin + + WebPluginTypeDescription + Netscape Core Animation Plug-in + + + WebPluginName + Netscape Core Animation Plug-in + + diff --git a/Examples/NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj/project.pbxproj b/Examples/NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..a1e3390ba1a --- /dev/null +++ b/Examples/NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj/project.pbxproj @@ -0,0 +1,251 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 1A1BA1760EF2FB3200754486 /* Composition.qtz in Resources */ = {isa = PBXBuildFile; fileRef = 1A1BA1750EF2FB3200754486 /* Composition.qtz */; }; + 1A624E590DCBC7F6006898C8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A624E580DCBC7F6006898C8 /* main.m */; }; + 1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A6250410DCBC81B006898C8 /* Cocoa.framework */; }; + 1A8C86AA0EF2FB8F003F6E81 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A8C86A90EF2FB8F003F6E81 /* Quartz.framework */; }; + 1A8C87AA0EF2FBB3003F6E81 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A8C87A90EF2FBB3003F6E81 /* QuartzCore.framework */; }; + 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + 1A1BA1750EF2FB3200754486 /* Composition.qtz */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; path = Composition.qtz; sourceTree = ""; }; + 1A624E580DCBC7F6006898C8 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 1A6250410DCBC81B006898C8 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 1A8C86A90EF2FB8F003F6E81 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = /System/Library/Frameworks/Quartz.framework; sourceTree = ""; }; + 1A8C87A90EF2FBB3003F6E81 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = ""; }; + 8D576316048677EA00EA77CD /* NetscapeCoreAnimationPlugin.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NetscapeCoreAnimationPlugin.plugin; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D576313048677EA00EA77CD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */, + 1A8C86AA0EF2FB8F003F6E81 /* Quartz.framework in Frameworks */, + 1A8C87AA0EF2FBB3003F6E81 /* QuartzCore.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* NetscapeCoreAnimationPlugin */ = { + isa = PBXGroup; + children = ( + 08FB77AFFE84173DC02AAC07 /* Source */, + 089C167CFE841241C02AAC07 /* Resources */, + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, + 19C28FB6FE9D52B211CA2CBB /* Products */, + ); + name = NetscapeCoreAnimationPlugin; + sourceTree = ""; + }; + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 1A6250410DCBC81B006898C8 /* Cocoa.framework */, + 1A8C86A90EF2FB8F003F6E81 /* Quartz.framework */, + 1A8C87A90EF2FBB3003F6E81 /* QuartzCore.framework */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 1A1BA1750EF2FB3200754486 /* Composition.qtz */, + 8D576317048677EA00EA77CD /* Info.plist */, + 8D5B49A704867FD3000E48DA /* InfoPlist.strings */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77AFFE84173DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 1A624E580DCBC7F6006898C8 /* main.m */, + ); + name = Source; + sourceTree = ""; + }; + 19C28FB6FE9D52B211CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D576316048677EA00EA77CD /* NetscapeCoreAnimationPlugin.plugin */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D57630D048677EA00EA77CD /* NetscapeCoreAnimationPlugin */ = { + isa = PBXNativeTarget; + buildConfigurationList = 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeCoreAnimationPlugin" */; + buildPhases = ( + 8D576311048677EA00EA77CD /* Sources */, + 8D57630F048677EA00EA77CD /* Resources */, + 8D576313048677EA00EA77CD /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = NetscapeCoreAnimationPlugin; + productInstallPath = "$(HOME)/Library/Bundles"; + productName = NetscapeCoreAnimationPlugin; + productReference = 8D576316048677EA00EA77CD /* NetscapeCoreAnimationPlugin.plugin */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeCoreAnimationPlugin" */; + compatibilityVersion = "Xcode 2.4"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 089C166AFE841209C02AAC07 /* NetscapeCoreAnimationPlugin */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D57630D048677EA00EA77CD /* NetscapeCoreAnimationPlugin */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D57630F048677EA00EA77CD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A1BA1760EF2FB3200754486 /* Composition.qtz in Resources */, + 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D576311048677EA00EA77CD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A624E590DCBC7F6006898C8 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C167EFE841241C02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 149C298408902C53008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DEBUGGING_SYMBOLS = full; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + PRODUCT_NAME = NetscapeCoreAnimationPlugin; + WRAPPER_EXTENSION = plugin; + ZERO_LINK = YES; + }; + name = Debug; + }; + 149C298508902C53008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + GCC_DEBUGGING_SYMBOLS = full; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + PRODUCT_NAME = NetscapeCoreAnimationPlugin; + WRAPPER_EXTENSION = plugin; + }; + name = Release; + }; + 149C298808902C53008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = i386; + ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64"; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + }; + name = Debug; + }; + 149C298908902C53008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = i386; + ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64"; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeCoreAnimationPlugin" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C298408902C53008A9EFC /* Debug */, + 149C298508902C53008A9EFC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeCoreAnimationPlugin" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C298808902C53008A9EFC /* Debug */, + 149C298908902C53008A9EFC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} diff --git a/Examples/NetscapeCoreAnimationPlugin/main.m b/Examples/NetscapeCoreAnimationPlugin/main.m new file mode 100644 index 00000000000..1f9e96b919a --- /dev/null +++ b/Examples/NetscapeCoreAnimationPlugin/main.m @@ -0,0 +1,246 @@ +/* + IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in + consideration of your agreement to the following terms, and your use, installation, + modification or redistribution of this Apple software constitutes acceptance of these + terms. If you do not agree with these terms, please do not use, install, modify or + redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and subject to these + terms, Apple grants you a personal, non-exclusive license, under Apple鈥檚 copyrights in + this original Apple software (the "Apple Software"), to use, reproduce, modify and + redistribute the Apple Software, with or without modifications, in source and/or binary + forms; provided that if you redistribute the Apple Software in its entirety and without + modifications, you must retain this notice and the following text and disclaimers in all + such redistributions of the Apple Software. Neither the name, trademarks, service marks + or logos of Apple Computer, Inc. may be used to endorse or promote products derived from + the Apple Software without specific prior written permission from Apple. Except as expressly + stated in this notice, no other rights or licenses, express or implied, are granted by Apple + herein, including but not limited to any patent rights that may be infringed by your + derivative works or by other works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, + EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS + USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, + REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND + WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR + OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import +#import + +#import +#import +#import + +// Browser function table +static NPNetscapeFuncs* browser; + +// Structure for per-instance storage +typedef struct PluginObject +{ + NPP npp; + + NPWindow window; + + QCCompositionLayer *layer; + bool gold; +} PluginObject; + +NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved); +NPError NPP_Destroy(NPP instance, NPSavedData** save); +NPError NPP_SetWindow(NPP instance, NPWindow* window); +NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype); +NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason); +int32 NPP_WriteReady(NPP instance, NPStream* stream); +int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer); +void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname); +void NPP_Print(NPP instance, NPPrint* platformPrint); +int16 NPP_HandleEvent(NPP instance, void* event); +void NPP_URLNotify(NPP instance, const char* URL, NPReason reason, void* notifyData); +NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value); +NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value); + +#pragma export on +// Mach-o entry points +NPError NP_Initialize(NPNetscapeFuncs *browserFuncs); +NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs); +void NP_Shutdown(void); +#pragma export off + +NPError NP_Initialize(NPNetscapeFuncs* browserFuncs) +{ + browser = browserFuncs; + return NPERR_NO_ERROR; +} + +NPError NP_GetEntryPoints(NPPluginFuncs* pluginFuncs) +{ + pluginFuncs->version = 11; + pluginFuncs->size = sizeof(pluginFuncs); + pluginFuncs->newp = NPP_New; + pluginFuncs->destroy = NPP_Destroy; + pluginFuncs->setwindow = NPP_SetWindow; + pluginFuncs->newstream = NPP_NewStream; + pluginFuncs->destroystream = NPP_DestroyStream; + pluginFuncs->asfile = NPP_StreamAsFile; + pluginFuncs->writeready = NPP_WriteReady; + pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write; + pluginFuncs->print = NPP_Print; + pluginFuncs->event = NPP_HandleEvent; + pluginFuncs->urlnotify = NPP_URLNotify; + pluginFuncs->getvalue = NPP_GetValue; + pluginFuncs->setvalue = NPP_SetValue; + + return NPERR_NO_ERROR; +} + +void NP_Shutdown(void) +{ + +} + +NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved) +{ + // Create per-instance storage + PluginObject *obj = (PluginObject *)malloc(sizeof(PluginObject)); + bzero(obj, sizeof(PluginObject)); + + obj->npp = instance; + instance->pdata = obj; + + // Ask the browser if it supports the Core Animation drawing model + NPBool supportsCoreAnimation; + if (browser->getvalue(instance, NPNVsupportsCoreAnimationBool, &supportsCoreAnimation) != NPERR_NO_ERROR) + supportsCoreAnimation = FALSE; + + if (!supportsCoreAnimation) + return NPERR_INCOMPATIBLE_VERSION_ERROR; + + // If the browser supports the Core Animation drawing model, enable it. + browser->setvalue(instance, NPPVpluginDrawingModel, (void *)NPDrawingModelCoreAnimation); + + // If the browser supports the Cocoa event model, enable it. + NPBool supportsCocoa; + if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR) + supportsCocoa = FALSE; + + if (!supportsCocoa) + return NPERR_INCOMPATIBLE_VERSION_ERROR; + + browser->setvalue(instance, NPPVpluginEventModel, (void *)NPEventModelCocoa); + + return NPERR_NO_ERROR; +} + +NPError NPP_Destroy(NPP instance, NPSavedData** save) +{ + // Free per-instance storage + PluginObject *obj = instance->pdata; + + [obj->layer release]; + + free(obj); + + return NPERR_NO_ERROR; +} + +NPError NPP_SetWindow(NPP instance, NPWindow* window) +{ + PluginObject *obj = instance->pdata; + obj->window = *window; + + return NPERR_NO_ERROR; +} + + +NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype) +{ + *stype = NP_ASFILEONLY; + return NPERR_NO_ERROR; +} + +NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason) +{ + return NPERR_NO_ERROR; +} + +int32 NPP_WriteReady(NPP instance, NPStream* stream) +{ + return 0; +} + +int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer) +{ + return 0; +} + +void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname) +{ +} + +void NPP_Print(NPP instance, NPPrint* platformPrint) +{ + +} + +static void handleMouseClick(PluginObject *obj, NPCocoaEvent *event) +{ + obj->gold = !obj->gold; + + [obj->layer setValue:[NSNumber numberWithBool:obj->gold] forInputKey:@"gold"]; +} + +int16 NPP_HandleEvent(NPP instance, void* event) +{ + PluginObject *obj = instance->pdata; + + NPCocoaEvent *cocoaEvent = event; + + switch(cocoaEvent->type) { + case NPCocoaEventMouseDown: + handleMouseClick(obj, cocoaEvent); + return 1; + } + + return 0; +} + +void NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData) +{ + +} + +NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value) +{ + PluginObject *obj = instance->pdata; + + switch (variable) { + case NPPVpluginCoreAnimationLayer: + if (!obj->layer) { + NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.netscapecoreanimationplugin"] pathForResource:@"Composition" ofType:@"qtz"]; + + QCComposition *composition = [QCComposition compositionWithFile:path]; + obj->layer = [[QCCompositionLayer compositionLayerWithComposition:composition] retain]; + } + + // Make sure to return a retained layer + *((CALayer **)value) = [obj->layer retain]; + + return NPERR_NO_ERROR; + + default: + return NPERR_GENERIC_ERROR; + } +} + +NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value) +{ + return NPERR_GENERIC_ERROR; +} diff --git a/Examples/NetscapeCoreAnimationPlugin/test.html b/Examples/NetscapeCoreAnimationPlugin/test.html new file mode 100644 index 00000000000..8e0b4beceaf --- /dev/null +++ b/Examples/NetscapeCoreAnimationPlugin/test.html @@ -0,0 +1,11 @@ + + + +Cocoa Netscape Plug-In + + +
+ +
+ + diff --git a/Examples/NetscapeInputMethodPlugin/English.lproj/InfoPlist.strings b/Examples/NetscapeInputMethodPlugin/English.lproj/InfoPlist.strings new file mode 100644 index 00000000000..5e45963c382 Binary files /dev/null and b/Examples/NetscapeInputMethodPlugin/English.lproj/InfoPlist.strings differ diff --git a/Examples/NetscapeInputMethodPlugin/Info.plist b/Examples/NetscapeInputMethodPlugin/Info.plist new file mode 100644 index 00000000000..a09cb1f5ccf --- /dev/null +++ b/Examples/NetscapeInputMethodPlugin/Info.plist @@ -0,0 +1,36 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + NetscapeInputMethodPlugin + CFBundleIconFile + + CFBundleIdentifier + com.apple.netscapeinputmethodplugin + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BRPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + WebPluginDescription + Simple Netscape plug-in that shows how to use input methods + WebPluginMIMETypes + + test/x-netscape-input-method-plugin + + WebPluginTypeDescription + Netscape Input Method Plug-in + + + WebPluginName + Netscape Input Method Plug-in + + diff --git a/Examples/NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj b/Examples/NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..474c2cb41b2 --- /dev/null +++ b/Examples/NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj @@ -0,0 +1,243 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 1A624E590DCBC7F6006898C8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A624E580DCBC7F6006898C8 /* main.m */; }; + 1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A6250410DCBC81B006898C8 /* Cocoa.framework */; }; + 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + 1A624E580DCBC7F6006898C8 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 1A6250410DCBC81B006898C8 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 8D576316048677EA00EA77CD /* NetscapeInputMethodPlugin.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NetscapeInputMethodPlugin.plugin; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D576313048677EA00EA77CD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* NetscapeInputMethodPlugin */ = { + isa = PBXGroup; + children = ( + 08FB77AFFE84173DC02AAC07 /* Source */, + 089C167CFE841241C02AAC07 /* Resources */, + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, + 19C28FB6FE9D52B211CA2CBB /* Products */, + ); + name = NetscapeInputMethodPlugin; + sourceTree = ""; + }; + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 1A6250410DCBC81B006898C8 /* Cocoa.framework */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 8D576317048677EA00EA77CD /* Info.plist */, + 8D5B49A704867FD3000E48DA /* InfoPlist.strings */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77AFFE84173DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 1A624E580DCBC7F6006898C8 /* main.m */, + ); + name = Source; + sourceTree = ""; + }; + 19C28FB6FE9D52B211CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D576316048677EA00EA77CD /* NetscapeInputMethodPlugin.plugin */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D57630D048677EA00EA77CD /* NetscapeInputMethodPlugin */ = { + isa = PBXNativeTarget; + buildConfigurationList = 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeInputMethodPlugin" */; + buildPhases = ( + 8D576311048677EA00EA77CD /* Sources */, + 8D57630F048677EA00EA77CD /* Resources */, + 8D576313048677EA00EA77CD /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = NetscapeInputMethodPlugin; + productInstallPath = "$(HOME)/Library/Bundles"; + productName = NetscapeInputMethodPlugin; + productReference = 8D576316048677EA00EA77CD /* NetscapeInputMethodPlugin.plugin */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeInputMethodPlugin" */; + compatibilityVersion = "Xcode 2.4"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 089C166AFE841209C02AAC07 /* NetscapeInputMethodPlugin */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D57630D048677EA00EA77CD /* NetscapeInputMethodPlugin */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D57630F048677EA00EA77CD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D576311048677EA00EA77CD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A624E590DCBC7F6006898C8 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C167EFE841241C02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 149C298408902C53008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DEBUGGING_SYMBOLS = full; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + PRODUCT_NAME = NetscapeInputMethodPlugin; + WRAPPER_EXTENSION = plugin; + ZERO_LINK = YES; + }; + name = Debug; + }; + 149C298508902C53008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + GCC_DEBUGGING_SYMBOLS = full; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + PRODUCT_NAME = NetscapeInputMethodPlugin; + WRAPPER_EXTENSION = plugin; + }; + name = Release; + }; + 149C298808902C53008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + }; + name = Debug; + }; + 149C298908902C53008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeInputMethodPlugin" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C298408902C53008A9EFC /* Debug */, + 149C298508902C53008A9EFC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeInputMethodPlugin" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C298808902C53008A9EFC /* Debug */, + 149C298908902C53008A9EFC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} diff --git a/Examples/NetscapeInputMethodPlugin/main.m b/Examples/NetscapeInputMethodPlugin/main.m new file mode 100644 index 00000000000..0adc21b84c3 --- /dev/null +++ b/Examples/NetscapeInputMethodPlugin/main.m @@ -0,0 +1,398 @@ +/* + IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in + consideration of your agreement to the following terms, and your use, installation, + modification or redistribution of this Apple software constitutes acceptance of these + terms. If you do not agree with these terms, please do not use, install, modify or + redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and subject to these + terms, Apple grants you a personal, non-exclusive license, under Apple鈥檚 copyrights in + this original Apple software (the "Apple Software"), to use, reproduce, modify and + redistribute the Apple Software, with or without modifications, in source and/or binary + forms; provided that if you redistribute the Apple Software in its entirety and without + modifications, you must retain this notice and the following text and disclaimers in all + such redistributions of the Apple Software. Neither the name, trademarks, service marks + or logos of Apple Computer, Inc. may be used to endorse or promote products derived from + the Apple Software without specific prior written permission from Apple. Except as expressly + stated in this notice, no other rights or licenses, express or implied, are granted by Apple + herein, including but not limited to any patent rights that may be infringed by your + derivative works or by other works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, + EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS + USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, + REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND + WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR + OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import +#import + +#import + +// Browser function table +static NPNetscapeFuncs* browser; + +// Structure for per-instance storage +typedef struct PluginObject +{ + NPP npp; + + NPWindow window; + + bool pluginHasFocus; + + bool textFieldHasFocus; + NSRect textFieldRect; + + NSRange selectedRange; + NSTextStorage *textStorage; + NSLayoutManager *layoutManager; + NSTextContainer *textContainer; + +} PluginObject; + +NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved); +NPError NPP_Destroy(NPP instance, NPSavedData** save); +NPError NPP_SetWindow(NPP instance, NPWindow* window); +NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype); +NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason); +int32 NPP_WriteReady(NPP instance, NPStream* stream); +int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer); +void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname); +void NPP_Print(NPP instance, NPPrint* platformPrint); +int16 NPP_HandleEvent(NPP instance, void* event); +void NPP_URLNotify(NPP instance, const char* URL, NPReason reason, void* notifyData); +NPError NPP_GetValue(NPP instance, NPPVariable variable, void* value); +NPError NPP_SetValue(NPP instance, NPNVariable variable, void* value); + +#pragma export on +// Mach-o entry points +NPError NP_Initialize(NPNetscapeFuncs* browserFuncs); +NPError NP_GetEntryPoints(NPPluginFuncs* pluginFuncs); +void NP_Shutdown(void); +#pragma export off + +NPError NP_Initialize(NPNetscapeFuncs* browserFuncs) +{ + browser = browserFuncs; + return NPERR_NO_ERROR; +} + +NPError NP_GetEntryPoints(NPPluginFuncs* pluginFuncs) +{ + pluginFuncs->version = 11; + pluginFuncs->size = sizeof(pluginFuncs); + pluginFuncs->newp = NPP_New; + pluginFuncs->destroy = NPP_Destroy; + pluginFuncs->setwindow = NPP_SetWindow; + pluginFuncs->newstream = NPP_NewStream; + pluginFuncs->destroystream = NPP_DestroyStream; + pluginFuncs->asfile = NPP_StreamAsFile; + pluginFuncs->writeready = NPP_WriteReady; + pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write; + pluginFuncs->print = NPP_Print; + pluginFuncs->event = NPP_HandleEvent; + pluginFuncs->urlnotify = NPP_URLNotify; + pluginFuncs->getvalue = NPP_GetValue; + pluginFuncs->setvalue = NPP_SetValue; + + return NPERR_NO_ERROR; +} + +void NP_Shutdown(void) +{ +} + +NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved) +{ + // Create per-instance storage + PluginObject* obj = (PluginObject*)malloc(sizeof(PluginObject)); + bzero(obj, sizeof(PluginObject)); + + obj->npp = instance; + instance->pdata = obj; + + // Ask the browser if it supports the CoreGraphics drawing model + NPBool supportsCoreGraphics; + if (browser->getvalue(instance, NPNVsupportsCoreGraphicsBool, &supportsCoreGraphics) != NPERR_NO_ERROR) + supportsCoreGraphics = FALSE; + + if (!supportsCoreGraphics) + return NPERR_INCOMPATIBLE_VERSION_ERROR; + + // If the browser supports the CoreGraphics drawing model, enable it. + browser->setvalue(instance, NPPVpluginDrawingModel, (void*)NPDrawingModelCoreGraphics); + + // If the browser supports the Cocoa event model, enable it. + NPBool supportsCocoa; + if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR) + supportsCocoa = FALSE; + + if (!supportsCocoa) + return NPERR_INCOMPATIBLE_VERSION_ERROR; + + browser->setvalue(instance, NPPVpluginEventModel, (void*)NPEventModelCocoa); + + obj->textFieldRect = NSMakeRect(10, 10, 200, 100); + + obj->textStorage = [[NSTextStorage alloc] initWithString:@""]; + obj->layoutManager = [[NSLayoutManager alloc] init]; + [obj->textStorage addLayoutManager:obj->layoutManager]; + + obj->textContainer = [[NSTextContainer alloc] initWithContainerSize:obj->textFieldRect.size]; + [obj->layoutManager addTextContainer:obj->textContainer]; + + obj->selectedRange.location = [obj->textStorage length]; + + return NPERR_NO_ERROR; +} + +NPError NPP_Destroy(NPP instance, NPSavedData** save) +{ + // Free per-instance storage + PluginObject* obj = instance->pdata; + + [obj->textStorage release]; + [obj->layoutManager release]; + + free(obj); + + return NPERR_NO_ERROR; +} + +NPError NPP_SetWindow(NPP instance, NPWindow* window) +{ + PluginObject* obj = instance->pdata; + obj->window = *window; + + return NPERR_NO_ERROR; +} + + +NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype) +{ + *stype = NP_ASFILEONLY; + return NPERR_NO_ERROR; +} + +NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason) +{ + return NPERR_NO_ERROR; +} + +int32 NPP_WriteReady(NPP instance, NPStream* stream) +{ + return 0; +} + +int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer) +{ + return 0; +} + +void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname) +{ +} + +void NPP_Print(NPP instance, NPPrint* platformPrint) +{ + +} + +static void handleDraw(PluginObject* obj, NPCocoaEvent *event) +{ + NSGraphicsContext *oldContext = [[NSGraphicsContext currentContext] retain]; + + NSGraphicsContext *context = [NSGraphicsContext graphicsContextWithGraphicsPort:event->data.draw.context + flipped:YES]; + + + [NSGraphicsContext setCurrentContext:context]; + + NSRect rect = NSMakeRect(0, 0, obj->window.width, obj->window.height); + + [[NSColor lightGrayColor] set]; + [NSBezierPath fillRect:rect]; + + if (obj->pluginHasFocus) { + [[NSColor blackColor] set]; + [NSBezierPath strokeRect:rect]; + } + + [[NSColor whiteColor] set]; + [NSBezierPath fillRect:obj->textFieldRect]; + + // Draw the text + NSRange glyphRange = [obj->layoutManager glyphRangeForTextContainer:obj->textContainer]; + if (glyphRange.length > 0) { + [obj->layoutManager drawBackgroundForGlyphRange:glyphRange atPoint:obj->textFieldRect.origin]; + [obj->layoutManager drawGlyphsForGlyphRange:glyphRange atPoint:obj->textFieldRect.origin]; + } + + NSBezierPath *textInputBorder = [NSBezierPath bezierPathWithRect:obj->textFieldRect]; + [[NSColor blackColor] set]; + + if (obj->pluginHasFocus && obj->textFieldHasFocus) + [textInputBorder setLineWidth:2]; + else + [textInputBorder setLineWidth:1]; + + [textInputBorder stroke]; + + if (obj->pluginHasFocus && obj->textFieldHasFocus) { + NSUInteger rectCount; + NSRect *rectArray = [obj->layoutManager rectArrayForCharacterRange:obj->selectedRange + withinSelectedCharacterRange:obj->selectedRange + inTextContainer:obj->textContainer + rectCount:&rectCount]; + + [[NSColor blackColor] set]; + for (unsigned i = 0; i < rectCount; i++) { + NSRect rect = rectArray[i]; + rect.origin.x += obj->textFieldRect.origin.x; + rect.origin.y += obj->textFieldRect.origin.y; + + [NSBezierPath strokeRect:rect]; + } + } + + [NSGraphicsContext setCurrentContext:oldContext]; +} + +static void invalidatePlugin(PluginObject* obj) +{ + NPRect rect; + rect.left = 0; + rect.top = 0; + rect.right = obj->window.width; + rect.bottom = obj->window.height; + + browser->invalidaterect(obj->npp, &rect); +} + +static void handleFocusChanged(NPCocoaEvent* cocoaEvent, PluginObject* obj) +{ + obj->pluginHasFocus = cocoaEvent->data.focus.hasFocus; + + invalidatePlugin(obj); +} + +static void handleMouseMoved(NPCocoaEvent* cocoaEvent, PluginObject* obj) +{ + NSPoint point = NSMakePoint(cocoaEvent->data.mouse.pluginX, cocoaEvent->data.mouse.pluginY); + + if (NSPointInRect(point, obj->textFieldRect)) + [[NSCursor IBeamCursor] set]; + else + [[NSCursor arrowCursor] set]; +} + +static void handleMouseDown(NPCocoaEvent* cocoaEvent, PluginObject* obj) +{ + NSPoint point = NSMakePoint(cocoaEvent->data.mouse.pluginX, cocoaEvent->data.mouse.pluginY); + + obj->textFieldHasFocus = NSPointInRect(point, obj->textFieldRect); + + invalidatePlugin(obj); +} + +static int16_t handleTextFieldKeyDown(NPCocoaEvent* event, PluginObject* obj) +{ + NSString *string = (NSString *)event->data.key.charactersIgnoringModifiers; + + unichar c = [string length] > 0 ? [string characterAtIndex:0] : 0; + + switch (c) { + case NSLeftArrowFunctionKey: + if (obj->selectedRange.location > 0) { + obj->selectedRange.location--; + invalidatePlugin(obj); + } + return 1; + + case NSRightArrowFunctionKey: + if (obj->selectedRange.location < [obj->textStorage length]) { + obj->selectedRange.location++; + invalidatePlugin(obj); + } + + return 1; + + default: + // Return 0 and let the text input system handle it. + return 0; + } +} + + +static int16_t handleTextInput(NPCocoaEvent* event, PluginObject* obj) +{ + NSString *string = (NSString *)event->data.text.text; + NSRange range = obj->selectedRange; + + [obj->textStorage replaceCharactersInRange:range withString:string]; + + obj->selectedRange.location = range.location + [string length]; + obj->selectedRange.length = 0; + + invalidatePlugin(obj); + + return 1; +} + +int16 NPP_HandleEvent(NPP instance, void* event) +{ + PluginObject* obj = instance->pdata; + + NPCocoaEvent* cocoaEvent = event; + + switch (cocoaEvent->type) { + case NPCocoaEventDrawRect: + handleDraw(obj, cocoaEvent); + return 1; + case NPCocoaEventFocusChanged: + handleFocusChanged(cocoaEvent, obj); + return 1; + case NPCocoaEventMouseMoved: + handleMouseMoved(cocoaEvent, obj); + return 1; + case NPCocoaEventMouseDown: + handleMouseDown(cocoaEvent, obj); + return 1; + case NPCocoaEventKeyDown: + // If the text field has focus we ignore the event, causing it + // to be sent to the input manager. + if (obj->textFieldHasFocus) + return handleTextFieldKeyDown(cocoaEvent, obj); + else + return 1; + case NPCocoaEventTextInput: + return handleTextInput(cocoaEvent, obj); + return 1; + + } + + return 0; +} + +void NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData) +{ +} + +NPError NPP_GetValue(NPP instance, NPPVariable variable, void* value) +{ + return NPERR_GENERIC_ERROR; +} + +NPError NPP_SetValue(NPP instance, NPNVariable variable, void* value) +{ + return NPERR_GENERIC_ERROR; +} diff --git a/Examples/NetscapeInputMethodPlugin/test.html b/Examples/NetscapeInputMethodPlugin/test.html new file mode 100644 index 00000000000..d41a4c05b3b --- /dev/null +++ b/Examples/NetscapeInputMethodPlugin/test.html @@ -0,0 +1,11 @@ + + + +Netscape Input Method Plug-In + + +
+ +
+ + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.make b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.make new file mode 100644 index 00000000000..311dfed53ae --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.make @@ -0,0 +1,30 @@ +!IF defined(BUILDSTYLE) && "$(BUILDSTYLE)"=="DEBUG" +BUILDSTYLE=DebugSuffix +!ELSE +BUILDSTYLE=Production +!ENDIF + +install: + set OFFICIAL_BUILD=1 + set WebKit_Libraries=$(SRCROOT)\AppleInternal + set WebKit_OutputDir=$(OBJROOT) + set ProgramFilesAAS=Program Files (x86)\Common Files\Apple\Apple Application Support + set Path=%PATH%;$(SRCROOT)\%ProgramFilesAAS% + set ConfigurationBuildDir=$(OBJROOT)\$(BUILDSTYLE) + -mkdir "%ConfigurationBuildDir%\include\private" + xcopy "%WebKit_Libraries%\include\private\*" "%ConfigurationBuildDir%\include\private" /e/v/i/h/y + devenv "JavaScriptCore.submit.sln" /clean $(BUILDSTYLE) + devenv "JavaScriptCore.submit.sln" /build $(BUILDSTYLE) + -xcopy "%ConfigurationBuildDir%\bin32\JavaScriptCore.dll" "$(DSTROOT)\%ProgramFilesAAS%\" /e/v/i/h/y + -xcopy "%ConfigurationBuildDir%\bin32\JavaScriptCore_debug.dll" "$(DSTROOT)\%ProgramFilesAAS%\" /e/v/i/h/y + -xcopy "%ConfigurationBuildDir%\bin32\JavaScriptCore.pdb" "$(DSTROOT)\%ProgramFilesAAS%\" /e/v/i/h/y + -xcopy "%ConfigurationBuildDir%\bin32\JavaScriptCore_debug.pdb" "$(DSTROOT)\%ProgramFilesAAS%\" /e/v/i/h/y + -xcopy "%ConfigurationBuildDir%\bin32\jsc.exe" "$(DSTROOT)\AppleInternal\bin32\" /e/v/i/h/y + -xcopy "%ConfigurationBuildDir%\bin32\jsc_debug.exe" "$(DSTROOT)\AppleInternal\bin32\" /e/v/i/h/y + -xcopy "%ConfigurationBuildDir%\bin32\jsc.pdb" "$(DSTROOT)\AppleInternal\bin32\" /e/v/i/h/y + -xcopy "%ConfigurationBuildDir%\bin32\jsc_debug.pdb" "$(DSTROOT)\AppleInternal\bin32\" /e/v/i/h/y + xcopy "%ConfigurationBuildDir%\include\*" "$(DSTROOT)\AppleInternal\include\" /e/v/i/h/y + xcopy "%ConfigurationBuildDir%\lib32\*" "$(DSTROOT)\AppleInternal\lib32\" /e/v/i/h/y + xcopy "%ConfigurationBuildDir%\bin32\JavaScriptCore.resources\*" "$(DSTROOT)\%ProgramFilesAAS%\JavaScriptCore.resources" /e/v/i/h/y + -mkdir "$(DSTROOT)\AppleInternal\Sources32\JavaScriptCore" + xcopy "%ConfigurationBuildDir%\obj32\JavaScriptCore\DerivedSources\*" "$(DSTROOT)\AppleInternal\Sources32\JavaScriptCore" /e/v/i/h/y diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.resources/Info.plist b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.resources/Info.plist new file mode 100644 index 00000000000..f69d73f5aff --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.resources/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + JavaScriptCore + CFBundleGetInfoString + 530, Copyright 2003-2013 Apple Inc. + CFBundleIdentifier + com.apple.JavaScriptCore + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + JavaScriptCore + CFBundlePackageType + APPL + CFBundleShortVersionString + 530 + CFBundleVersion + 530 + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.submit.sln b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.submit.sln new file mode 100644 index 00000000000..296f59f7b22 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.submit.sln @@ -0,0 +1,78 @@ +锘 +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCore", "JavaScriptCore.vcxproj", "{22413D41-3A18-42B7-92A8-CEDC6CE86920}" + ProjectSection(ProjectDependencies) = postProject + {3670D01F-95F3-45A8-B878-947EB6CF214E} = {3670D01F-95F3-45A8-B878-947EB6CF214E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCoreGenerated", "JavaScriptCoreGenerated.vcxproj", "{3670D01F-95F3-45A8-B878-947EB6CF214E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jsc", "jsc\jsc.vcxproj", "{2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}" + ProjectSection(ProjectDependencies) = postProject + {22413D41-3A18-42B7-92A8-CEDC6CE86920} = {22413D41-3A18-42B7-92A8-CEDC6CE86920} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testRegExp", "testRegExp\testRegExp.vcxproj", "{BB16286B-AADC-46C1-BC0D-6C06F323E04B}" + ProjectSection(ProjectDependencies) = postProject + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3} = {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testapi", "testapi\testapi.vcxproj", "{5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}" + ProjectSection(ProjectDependencies) = postProject + {BB16286B-AADC-46C1-BC0D-6C06F323E04B} = {BB16286B-AADC-46C1-BC0D-6C06F323E04B} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + DebugSuffix|Win32 = DebugSuffix|Win32 + Production|Win32 = Production|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Debug|Win32.ActiveCfg = Debug|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Debug|Win32.Build.0 = Debug|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.DebugSuffix|Win32.ActiveCfg = DebugSuffix|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.DebugSuffix|Win32.Build.0 = DebugSuffix|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Production|Win32.ActiveCfg = Production|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Production|Win32.Build.0 = Production|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Release|Win32.ActiveCfg = Release|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Release|Win32.Build.0 = Release|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Debug|Win32.ActiveCfg = Debug|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Debug|Win32.Build.0 = Debug|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.DebugSuffix|Win32.ActiveCfg = DebugSuffix|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.DebugSuffix|Win32.Build.0 = DebugSuffix|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Production|Win32.ActiveCfg = Production|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Production|Win32.Build.0 = Production|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Release|Win32.ActiveCfg = Release|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Release|Win32.Build.0 = Release|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Debug|Win32.ActiveCfg = Debug|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Debug|Win32.Build.0 = Debug|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.DebugSuffix|Win32.ActiveCfg = DebugSuffix|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.DebugSuffix|Win32.Build.0 = DebugSuffix|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Production|Win32.ActiveCfg = Production|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Production|Win32.Build.0 = Production|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Release|Win32.ActiveCfg = Release|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Release|Win32.Build.0 = Release|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Debug|Win32.ActiveCfg = Debug|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Debug|Win32.Build.0 = Debug|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.DebugSuffix|Win32.ActiveCfg = DebugSuffix|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.DebugSuffix|Win32.Build.0 = DebugSuffix|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Production|Win32.ActiveCfg = Production|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Production|Win32.Build.0 = Production|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Release|Win32.ActiveCfg = Release|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Release|Win32.Build.0 = Release|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Debug|Win32.ActiveCfg = Debug|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Debug|Win32.Build.0 = Debug|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.DebugSuffix|Win32.ActiveCfg = DebugSuffix|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.DebugSuffix|Win32.Build.0 = DebugSuffix|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Production|Win32.ActiveCfg = Production|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Production|Win32.Build.0 = Production|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Release|Win32.ActiveCfg = Release|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj new file mode 100644 index 00000000000..907f28582a2 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj @@ -0,0 +1,931 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + {22413D41-3A18-42B7-92A8-CEDC6CE86920} + Win32Proj + JavaScriptCore2 + JavaScriptCore + + + + true + Unicode + DynamicLibrary + + + true + Unicode + DynamicLibrary + + + true + Unicode + DynamicLibrary + + + true + Unicode + DynamicLibrary + + + true + Unicode + DynamicLibrary + + + true + Unicode + DynamicLibrary + + + DynamicLibrary + false + Unicode + + + DynamicLibrary + false + Unicode + + + DynamicLibrary + false + Unicode + + + DynamicLibrary + false + Unicode + + + DynamicLibrary + false + Unicode + + + DynamicLibrary + false + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Document + + + Document + + + Document + + + + + true + true + true + true + true + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters new file mode 100644 index 00000000000..5a0a3176aac --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters @@ -0,0 +1,1940 @@ +锘 + + + + {429783a1-5d6a-4019-ad1a-ddb2c98f9b6c} + + + {766088a0-1216-4854-aa43-560c5e283668} + + + {bddd153e-8c53-4515-ab9e-5d901686bd4f} + + + {6e0cb358-2fe7-46a4-8efd-f6649cee6370} + + + {9f7469bb-7833-4279-8d28-2fc71c632552} + + + {6c82539d-40d2-45a5-a663-8349c2141b1a} + + + {940f749b-a189-45be-83b9-b4e74ecf1486} + + + {bd49e5cf-95d6-4151-b286-8837ccd347fa} + + + {10d97ea3-2af9-489c-a54e-d69ef2e4ca0a} + + + {94d7eb64-3e51-4008-8536-0bcb6768ba9f} + + + {63e3dd92-7ea9-4723-b099-6c79a939dec0} + + + {e6a026a4-156a-4a59-9e3f-e8b54e665841} + + + {351dcbd2-e47e-4467-8609-53acfce72f91} + + + {3b9d72a5-135b-43b3-a524-c6d2b9d29d34} + + + {03eda3ec-bcb2-4474-b1b3-69ad771846a4} + + + {fac52666-842e-4d02-9d5f-844f54dca5f7} + + + {9ed0bc6e-7372-4795-9651-917c9e05c641} + + + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + assembler + + + assembler + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecodecompiler + + + bytecodecompiler + + + debugger + + + debugger + + + debugger + + + disassembler + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + interpreter + + + interpreter + + + interpreter + + + interpreter + + + interpreter + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + llint + + + llint + + + llint + + + llint + + + llint + + + llint + + + llint + + + llint + + + parser + + + parser + + + parser + + + parser + + + parser + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + tools + + + tools + + + yarr + + + yarr + + + yarr + + + yarr + + + yarr + + + runtime + + + runtime + + + runtime + + + parser + + + runtime + + + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + API + + + assembler + + + assembler + + + assembler + + + assembler + + + assembler + + + assembler + + + assembler + + + assembler + + + assembler + + + assembler + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecode + + + bytecodecompiler + + + bytecodecompiler + + + bytecodecompiler + + + bytecodecompiler + + + debugger + + + debugger + + + debugger + + + dfg + + + dfg + + + disassembler + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + heap + + + interpreter + + + interpreter + + + interpreter + + + interpreter + + + interpreter + + + interpreter + + + interpreter + + + interpreter + + + interpreter + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + jit + + + llint + + + llint + + + llint + + + llint + + + llint + + + llint + + + llint + + + llint + + + llint + + + llint + + + parser + + + parser + + + parser + + + parser + + + parser + + + parser + + + parser + + + parser + + + parser + + + parser + + + parser + + + parser + + + parser + + + parser + + + parser + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + profiler + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + runtime + + + tools + + + tools + + + tools + + + tools + + + yarr + + + yarr + + + yarr + + + yarr + + + yarr + + + yarr + + + yarr + + + + runtime + + + API + + + runtime + + + runtime + + + bytecode + + + runtime + + + runtime + + + API + + + Derived Sources + + + Derived Sources + + + Derived Sources + + + Derived Sources + + + Derived Sources + + + Derived Sources + + + Derived Sources + + + Derived Sources + + + Derived Sources + + + Derived Sources + + + Derived Sources + + + Derived Sources + + + Derived Sources + + + Derived Sources + + + Derived Sources + + + Derived Sources + + + Derived Sources + + + + + + + + + + jit + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreCF.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreCF.props new file mode 100644 index 00000000000..081981bb78d --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreCF.props @@ -0,0 +1,12 @@ +锘 + + + + + + + CoreFoundation$(DebugSuffix).lib;%(AdditionalDependencies) + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreCFLite.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreCFLite.props new file mode 100644 index 00000000000..cd3b5dd84d1 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreCFLite.props @@ -0,0 +1,12 @@ +锘 + + + + + + + CFLite.lib;%(AdditionalDependencies) + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreCommon.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreCommon.props new file mode 100644 index 00000000000..901aaa35d51 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreCommon.props @@ -0,0 +1,19 @@ +锘 + + + + + + + ..\;..\tools\;..\runtime\;..\llint\;..\jit\;..\disassembler\;..\heap\;..\debugger\;..\assembler\;..\profiler\;..\yarr\;..\interpreter\;..\bytecode\;..\dfg\;..\bytecompiler\;..\parser\;..\API\;$(ConfigurationBuildDir)\obj32\JavaScriptCore\DerivedSources\;$(ConfigurationBuildDir)\include\;$(ConfigurationBuildDir)\include\JavaScriptCore\;$(ConfigurationBuildDir)\include\private\;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;%(AdditionalIncludeDirectories) + ICUVersion.h;%(ForcedIncludeFiles) + + + winmm.lib;libicuin$(DebugSuffix).lib;libicuuc$(DebugSuffix).lib;WTF$(DebugSuffix).lib;%(AdditionalDependencies) + + + Console + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreDebug.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreDebug.props new file mode 100644 index 00000000000..1f0bd7dc302 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreDebug.props @@ -0,0 +1,16 @@ +锘 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreDebugCFLite.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreDebugCFLite.props new file mode 100644 index 00000000000..3ccdbb1b321 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreDebugCFLite.props @@ -0,0 +1,16 @@ +锘 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGenerated.make b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGenerated.make new file mode 100644 index 00000000000..e480fa7116d --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGenerated.make @@ -0,0 +1,12 @@ +all: + touch "%ConfigurationBuildDir%\buildfailed" + bash build-generated-files.sh "%ConfigurationBuildDir%" "$(WEBKIT_LIBRARIES)" + copy-files.cmd + + -del "%ConfigurationBuildDir%\include\private\JavaScriptCore\stdbool.h" "%ConfigurationBuildDir%\include\private\JavaScriptCore\stdint.h" + -del "%ConfigurationBuildDir%\buildfailed" + +clean: + -del "%ConfigurationBuildDir%\buildfailed" + copy-files.cmd clean + -del /s /q "%ConfigurationBuildDir%\obj32\JavaScriptCore\DerivedSources" diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj new file mode 100644 index 00000000000..d1f00cd0ae3 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj @@ -0,0 +1,214 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + + + + + + + {3670D01F-95F3-45A8-B878-947EB6CF214E} + MakeFileProj + + + + Makefile + true + + + Makefile + true + + + Makefile + true + + + Makefile + true + + + Makefile + true + + + Makefile + true + + + Makefile + false + + + Makefile + false + + + Makefile + false + + + Makefile + false + + + Makefile + false + + + Makefile + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WIN32;NDEBUG; + + + + WIN32;NDEBUG; + + + + WIN32;NDEBUG; + + + + WIN32;NDEBUG; + + + + WIN32;NDEBUG; + + + + WIN32;NDEBUG; + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj.filters b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj.filters new file mode 100644 index 00000000000..9dce732ff9b --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj.filters @@ -0,0 +1,9 @@ +锘 + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGeneratedCommon.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGeneratedCommon.props new file mode 100644 index 00000000000..36fc059a581 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGeneratedCommon.props @@ -0,0 +1,11 @@ +锘 + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGeneratedDebug.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGeneratedDebug.props new file mode 100644 index 00000000000..619e43a96ec --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGeneratedDebug.props @@ -0,0 +1,15 @@ +锘 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGeneratedProduction.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGeneratedProduction.props new file mode 100644 index 00000000000..aef8ccf3738 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGeneratedProduction.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGeneratedRelease.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGeneratedRelease.props new file mode 100644 index 00000000000..472cae9ec8e --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreGeneratedRelease.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCorePostBuild.cmd b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCorePostBuild.cmd new file mode 100644 index 00000000000..8b0a3a4586b --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCorePostBuild.cmd @@ -0,0 +1,2 @@ +if exist "%WEBKIT_LIBRARIES%\tools\VersionStamper\VersionStamper.exe" "%WEBKIT_LIBRARIES%\tools\VersionStamper\VersionStamper.exe" --verbose "%TARGETPATH%" +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCorePreBuild.cmd b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCorePreBuild.cmd new file mode 100644 index 00000000000..a7707767487 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCorePreBuild.cmd @@ -0,0 +1,6 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreProduction.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreProduction.props new file mode 100644 index 00000000000..48e7f4217c7 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreProduction.props @@ -0,0 +1,14 @@ +锘 + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreRelease.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreRelease.props new file mode 100644 index 00000000000..5933885317e --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreRelease.props @@ -0,0 +1,16 @@ +锘 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreReleaseCFLite.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreReleaseCFLite.props new file mode 100644 index 00000000000..f5c2632849a --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreReleaseCFLite.props @@ -0,0 +1,16 @@ +锘 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.make b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.make new file mode 100644 index 00000000000..3708c2b6ca7 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.make @@ -0,0 +1,8 @@ +all: + touch "%ConfigurationBuildDir%\buildfailed" + bash build-LLIntAssembly.sh "%ConfigurationBuildDir%" "$(WEBKIT_LIBRARIES)" "$(DEBUGSUFFIX)" + -del "%ConfigurationBuildDir%\buildfailed" + +clean: + -del "%ConfigurationBuildDir%\buildfailed" + -del /s /q "%ConfigurationBuildDir%\obj32\JavaScriptCore\DerivedSources\LLIntAssembly.h" diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj new file mode 100644 index 00000000000..4d50d473319 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj @@ -0,0 +1,271 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + {9221744B-5715-4F56-9590-42F7AB23DD8B} + LLIntAssembly + MakeFileProj + + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + LLIntAssembly.h + LLIntAssembly.h + LLIntAssembly.h + LLIntAssembly.h + LLIntAssembly.h + LLIntAssembly.h + + + + + + + + + + + + + + + + + + + + + + + + + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + LLIntAssembly.h + LLIntAssembly.h + LLIntAssembly.h + LLIntAssembly.h + LLIntAssembly.h + LLIntAssembly.h + + + + + + + + + + + + + + + + + + + + + + + + + %SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +nmake /nologo -f $(ProjectName).make DEBUGSUFFIX=_debug + %SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +nmake /nologo -f $(ProjectName).make DEBUGSUFFIX=_debug + %SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +nmake /nologo -f $(ProjectName).make clean +nmake /nologo -f $(ProjectName).make DEBUGSUFFIX=_debug + %SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +nmake /nologo -f $(ProjectName).make clean +nmake /nologo -f $(ProjectName).make DEBUGSUFFIX=_debug + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntAssembly/build-LLIntAssembly.sh b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntAssembly/build-LLIntAssembly.sh new file mode 100644 index 00000000000..e8a3b37f4ca --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntAssembly/build-LLIntAssembly.sh @@ -0,0 +1,26 @@ +#!/usr/bin/bash + +SRCROOT="`pwd`/../../.." +SRCROOT=`realpath "$SRCROOT"` +# Do a little dance to get the path into 8.3 form to make it safe for gnu make +# http://bugzilla.opendarwin.org/show_bug.cgi?id=8173 +SRCROOT=`cygpath -m -s "$SRCROOT"` +SRCROOT=`cygpath -u "$SRCROOT"` +export SRCROOT + +XDSTROOT="$1" +export XDSTROOT +# Do a little dance to get the path into 8.3 form to make it safe for gnu make +# http://bugzilla.opendarwin.org/show_bug.cgi?id=8173 +XDSTROOT=`cygpath -m -s "$XDSTROOT"` +XDSTROOT=`cygpath -u "$XDSTROOT"` +export XDSTROOT + +export BUILT_PRODUCTS_DIR="$XDSTROOT/obj32" + +cd "${BUILT_PRODUCTS_DIR}/JavaScriptCore/DerivedSources" + +############################################################################## +# Step 3: Build LLIntOffsetsExtractor + +/usr/bin/env ruby "${SRCROOT}/offlineasm/asm.rb" "${SRCROOT}/llint/LowLevelInterpreter.asm" "${BUILT_PRODUCTS_DIR}/LLIntOffsetsExtractor/LLIntOffsetsExtractor${3}.exe" "LLIntAssembly.h" || exit 1 diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.make b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.make new file mode 100644 index 00000000000..f70c92bc49c --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.make @@ -0,0 +1,9 @@ +all: + touch "%ConfigurationBuildDir%\buildfailed" + bash build-LLIntDesiredOffsets.sh "%ConfigurationBuildDir%" "$(WEBKIT_LIBRARIES)" + + -del "%ConfigurationBuildDir%\buildfailed" + +clean: + -del "%ConfigurationBuildDir%\buildfailed" + -del /s /q "%ConfigurationBuildDir%\obj32\JavaScriptCore\DerivedSources\LLIntDesiredOffsets.h" diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj new file mode 100644 index 00000000000..135fb87bda5 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj @@ -0,0 +1,257 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + {877150A0-41B3-4730-9D98-1B8298098B14} + LLIntDesiredOffsets + MakeFileProj + + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + Makefile + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + LLIntDesiredOffsets.h + LLIntDesiredOffsets.h + LLIntDesiredOffsets.h + LLIntDesiredOffsets.h + LLIntDesiredOffsets.h + LLIntDesiredOffsets.h + + + + + + + + + + + + + + + + + + + + + + + + + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + LLIntDesiredOffsets.h + LLIntDesiredOffsets.h + LLIntDesiredOffsets.h + LLIntDesiredOffsets.h + LLIntDesiredOffsets.h + LLIntDesiredOffsets.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/build-LLIntDesiredOffsets.sh b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/build-LLIntDesiredOffsets.sh new file mode 100644 index 00000000000..c3186fd7fbd --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/build-LLIntDesiredOffsets.sh @@ -0,0 +1,25 @@ +#!/usr/bin/bash + +SRCROOT="`pwd`/../../.." +SRCROOT=`realpath "$SRCROOT"` +# Do a little dance to get the path into 8.3 form to make it safe for gnu make +# http://bugzilla.opendarwin.org/show_bug.cgi?id=8173 +SRCROOT=`cygpath -m -s "$SRCROOT"` +SRCROOT=`cygpath -u "$SRCROOT"` +export SRCROOT + +XDSTROOT="$1" +export XDSTROOT +# Do a little dance to get the path into 8.3 form to make it safe for gnu make +# http://bugzilla.opendarwin.org/show_bug.cgi?id=8173 +XDSTROOT=`cygpath -m -s "$XDSTROOT"` +XDSTROOT=`cygpath -u "$XDSTROOT"` +export XDSTROOT + +export BUILT_PRODUCTS_DIR="$XDSTROOT/obj32/JavaScriptCore/DerivedSources" + +############################################################################## +# Step 1: Generate LLIntDesiredOffsets.h +mkdir -p "${BUILT_PRODUCTS_DIR}" + +/usr/bin/env ruby "${SRCROOT}/offlineasm/generate_offset_extractor.rb" "${SRCROOT}/llint/LowLevelInterpreter.asm" "${BUILT_PRODUCTS_DIR}/LLIntDesiredOffsets.h" diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj new file mode 100644 index 00000000000..fffc03eb692 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj @@ -0,0 +1,199 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + + + + {D595E3F6-24F2-4C60-935C-95D50C6B3E96} + LLIntOffsetsExtractor + + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + Application + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + $(ConfigurationBuildDir)\obj32\$(ProjectName)\ + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props new file mode 100644 index 00000000000..88c0a95a645 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props @@ -0,0 +1,19 @@ +锘 + + + .exe + + + + $(ConfigurationBuildDir)\include;$(ConfigurationBuildDir)\include\private;$(ConfigurationBuildDir)\include\private\JavaScriptCore;$(ConfigurationBuildDir)\obj32\JavaScriptCore\DerivedSources\;../../../;../../../os-win32/;../../../assembler/;../../../API/;../../../parser/;../../../heap/;../../../runtime/;../../../bytecode/;../../../interpreter/;../../../debugger/;../../../bytecompiler/;../../../profiler;../../../jit/;$(WebKit_Libraries)\include;%(AdditionalIncludeDirectories) + __STD_C;%(PreprocessorDefinitions) + ICUVersion.h;%(ForcedIncludeFiles) + %(ForcedUsingFiles) + + + libicuin$(DebugSuffix).lib;libicuuc$(DebugSuffix).lib;winmm.lib;WTF$(DebugSuffix).lib;user32.lib;%(AdditionalDependencies) + %(AdditionalLibraryDirectories) + Console + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.props new file mode 100644 index 00000000000..462c5f5a681 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.props @@ -0,0 +1,9 @@ +锘 + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.props new file mode 100644 index 00000000000..3549dab89b4 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.props new file mode 100644 index 00000000000..d32fc860feb --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.props @@ -0,0 +1,15 @@ +锘 + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/build-generated-files.sh b/Source/JavaScriptCore/JavaScriptCore.vcxproj/build-generated-files.sh new file mode 100644 index 00000000000..e6b7ebb9870 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/build-generated-files.sh @@ -0,0 +1,36 @@ +#!/usr/bin/bash + +NUMCPUS=`../../../Tools/Scripts/num-cpus` + +XSRCROOT="`pwd`/.." +XSRCROOT=`realpath "$XSRCROOT"` +# Do a little dance to get the path into 8.3 form to make it safe for gnu make +# http://bugzilla.opendarwin.org/show_bug.cgi?id=8173 +XSRCROOT=`cygpath -m "$XSRCROOT"` +XSRCROOT=`cygpath -u "$XSRCROOT"` +export XSRCROOT +export SOURCE_ROOT=$XSRCROOT +XDSTROOT="$1" +export XDSTROOT +# Do a little dance to get the path into 8.3 form to make it safe for gnu make +# http://bugzilla.opendarwin.org/show_bug.cgi?id=8173 +XDSTROOT=`cygpath -m -s "$XDSTROOT"` +XDSTROOT=`cygpath -u "$XDSTROOT"` +export XDSTROOT + +SDKROOT="$2" +export SDKROOT +# Do a little dance to get the path into 8.3 form to make it safe for gnu make +# http://bugzilla.opendarwin.org/show_bug.cgi?id=8173 +SDKROOT=`cygpath -m -s "$SDKROOT"` +SDKROOT=`cygpath -u "$SDKROOT"` +export SDKROOT + +export BUILT_PRODUCTS_DIR="$XDSTROOT/obj32/JavaScriptCore" + +mkdir -p "${BUILT_PRODUCTS_DIR}/DerivedSources/docs" +cd "${BUILT_PRODUCTS_DIR}/DerivedSources" + +export JavaScriptCore="${XSRCROOT}" +export DFTABLES_EXTENSION=".exe" +make -f "$JavaScriptCore/DerivedSources.make" -j ${NUMCPUS} || exit 1 diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd b/Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd new file mode 100755 index 00000000000..8d1e46f1e27 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd @@ -0,0 +1,68 @@ +@echo off + +set PublicHeadersDirectory=%CONFIGURATIONBUILDDIR%\include\JavaScriptCore +set PrivateHeadersDirectory=%CONFIGURATIONBUILDDIR%\include\private\JavaScriptCore +set ResourcesDirectory=%CONFIGURATIONBUILDDIR%\bin32\JavaScriptCore.resources + +if "%1" EQU "clean" goto :clean +if "%1" EQU "rebuild" call :clean + +echo Copying public headers... +mkdir "%PublicHeadersDirectory%" 2>NUL +for %%f in ( + APICast.h + APIShims.h + JSBase.h + JSClassRef.h + JSContextRef.h + JSContextRefPrivate.h + JSObjectRef.h + JSObjectRefPrivate.h + JSRetainPtr.h + JSRetainPtr.h + JSStringRef.h + JSStringRefBSTR.h + JSStringRefCF.h + JSValueRef.h + JSWeakObjectMapRefInternal.h + JSWeakObjectMapRefPrivate.h + JavaScript.h + JavaScriptCore.h + OpaqueJSString.h + WebKitAvailability.h +) do ( + xcopy /y /d ..\API\%%f "%PublicHeadersDirectory%" >NUL +) + +echo Copying private headers... +mkdir "%PrivateHeadersDirectory%" 2>NUL +for %%d in ( + assembler + bytecode + dfg + disassembler + heap + debugger + interpreter + jit + llint + parser + profiler + runtime + yarr +) do ( + xcopy /y /d ..\%%d\*.h "%PrivateHeadersDirectory%" >NUL +) + +echo Copying resources... +mkdir "%ResourcesDirectory%" 2>NUL +xcopy /y /d JavaScriptCore.resources\* "%ResourcesDirectory%" >NUL + +goto :EOF + +:clean + +echo Deleting copied files... +if exist "%PublicHeadersDirectory%" rmdir /s /q "%PublicHeadersDirectory%" >NUL +if exist "%PrivateHeadersDirectory%" rmdir /s /q "%PrivateHeadersDirectory%" >NUL +if exist "%ResourcesDirectory%" rmdir /s /q "%ResourcesDirectory%" >NUL diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jsc.vcxproj b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jsc.vcxproj new file mode 100644 index 00000000000..ca9e1f78f4b --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jsc.vcxproj @@ -0,0 +1,310 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3} + Win32Proj + jsc + + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MaxSpeed + true + + + + + + + + MaxSpeed + true + + + + + + + + MaxSpeed + true + + + + + + + + MaxSpeed + true + + + + + + + + MaxSpeed + true + + + + + + + + MaxSpeed + true + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jsc.vcxproj.filters b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jsc.vcxproj.filters new file mode 100644 index 00000000000..47638ede76e --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jsc.vcxproj.filters @@ -0,0 +1,11 @@ +锘 + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscCommon.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscCommon.props new file mode 100644 index 00000000000..bed03fdfd54 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscCommon.props @@ -0,0 +1,22 @@ +锘 + + + + + .exe + + + + ..\..\;..\..\tools\;..\..\runtime\;..\..\llint\;..\..\jit\;..\..\disassembler\;..\..\heap\;..\..\debugger\;..\..\assembler\;..\..\profiler\;..\..\interpreter\;..\..\bytecode\;..\..\dfg\;..\..\bytecompiler\;..\..\parser\;..\..\API\;$(ConfigurationBuildDir)\include\;$(ConfigurationBuildDir)\include\private\;$(ConfigurationBuildDir)\include\JavaScriptCore\;$(ConfigurationBuildDir)\obj32\JavaScriptCore\DerivedSources\;$(WebKit_Libraries)\include;%(AdditionalIncludeDirectories) + _CONSOLE;%(PreprocessorDefinitions) + ICUVersion.h + + + WTF$(DebugSuffix).lib;JavaScriptCore$(DebugSuffix).lib;winmm.lib;libicuin$(DebugSuffix).lib;libicuuc$(DebugSuffix).lib;%(AdditionalDependencies) + + + Console + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscDebug.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscDebug.props new file mode 100644 index 00000000000..3b3bc7663d4 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscDebug.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd new file mode 100644 index 00000000000..02da44bdc0c --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd @@ -0,0 +1 @@ +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed" \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscPreBuild.cmd b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscPreBuild.cmd new file mode 100644 index 00000000000..a7707767487 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscPreBuild.cmd @@ -0,0 +1,6 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscPreLink.cmd b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscPreLink.cmd new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscProduction.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscProduction.props new file mode 100644 index 00000000000..396c1b3df39 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscProduction.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscRelease.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscRelease.props new file mode 100644 index 00000000000..9a1b6626bb5 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/jsc/jscRelease.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/resource.h b/Source/JavaScriptCore/JavaScriptCore.vcxproj/resource.h new file mode 100644 index 00000000000..052eb0d0ebd --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/resource.h @@ -0,0 +1,14 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by JavaScriptCore.rc + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj new file mode 100644 index 00000000000..2d1c9706a45 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj @@ -0,0 +1,317 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + {BB16286B-AADC-46C1-BC0D-6C06F323E04B} + Win32Proj + textRegExp + testRegExp + + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICUVersion.h;%(ForcedIncludeFiles) + + + + + + + + ICUVersion.h;%(ForcedIncludeFiles) + + + + + + + + ICUVersion.h;%(ForcedIncludeFiles) + + + + + + + + ICUVersion.h;%(ForcedIncludeFiles) + + + + + + + + ICUVersion.h;%(ForcedIncludeFiles) + + + + + + + + ICUVersion.h;%(ForcedIncludeFiles) + + + + + + + + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ICUVersion.h;%(ForcedIncludeFiles) + + + Console + + + + + + + + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ICUVersion.h;%(ForcedIncludeFiles) + + + Console + + + + + + + + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ICUVersion.h;%(ForcedIncludeFiles) + + + Console + + + + + + + + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ICUVersion.h;%(ForcedIncludeFiles) + + + Console + + + + + + + + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ICUVersion.h;%(ForcedIncludeFiles) + + + Console + + + + + + + + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ICUVersion.h;%(ForcedIncludeFiles) + + + Console + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters new file mode 100644 index 00000000000..73b65999a86 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters @@ -0,0 +1,11 @@ +锘 + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props new file mode 100644 index 00000000000..62881b31b8d --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props @@ -0,0 +1,17 @@ +锘 + + + + + + + _CONSOLE;__STD_C;%(PreprocessorDefinitions) + $(ConfigurationBuildDir)\include;$(ConfigurationBuildDir)\include\private;$(ConfigurationBuildDir)\include\private\JavaScriptCore;$(ConfigurationBuildDir)\obj32\JavaScriptCore\DerivedSources;..\..\;..\..\os-win32;..\..\assembler;..\..\API;..\..\parser;..\..\heap;..\..\runtime;..\..\bytecode;..\..\interpreter;..\..\debugger;..\..\bytecompiler;..\..\profiler;..\..\jit;$(WebKit_Libraries)\include;%(AdditionalIncludeDirectories) + + + JavaScriptCore$(DebugSuffix).lib;libicuin$(DebugSuffix).lib;libicuuc$(DebugSuffix).lib;WTF$(DebugSuffix).lib;winmm.lib;user32.lib;%(AdditionalDependencies) + Console + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpDebug.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpDebug.props new file mode 100644 index 00000000000..6e8ad946dcc --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpDebug.props @@ -0,0 +1,17 @@ +锘 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd new file mode 100644 index 00000000000..0204125ca9a --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd @@ -0,0 +1,3 @@ +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed" + +cmd /c diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpPreBuild.cmd b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpPreBuild.cmd new file mode 100644 index 00000000000..a7707767487 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpPreBuild.cmd @@ -0,0 +1,6 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpProduction.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpProduction.props new file mode 100644 index 00000000000..7e6b5b24895 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpProduction.props @@ -0,0 +1,12 @@ +锘 + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpRelease.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpRelease.props new file mode 100644 index 00000000000..069677a219c --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testRegExp/testRegExpRelease.props @@ -0,0 +1,12 @@ +锘 + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapi.vcxproj b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapi.vcxproj new file mode 100644 index 00000000000..547b26af05e --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapi.vcxproj @@ -0,0 +1,287 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843} + Win32Proj + testapi + + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICUVersion.h;%(ForcedIncludeFiles) + + + + + + + + ICUVersion.h;%(ForcedIncludeFiles) + + + + + + + + ICUVersion.h;%(ForcedIncludeFiles) + + + + + + + + ICUVersion.h;%(ForcedIncludeFiles) + + + + + + + + ICUVersion.h;%(ForcedIncludeFiles) + + + + + + + + ICUVersion.h;%(ForcedIncludeFiles) + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapi.vcxproj.filters b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapi.vcxproj.filters new file mode 100644 index 00000000000..87ead9cc905 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapi.vcxproj.filters @@ -0,0 +1,12 @@ +锘 + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiCommon.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiCommon.props new file mode 100644 index 00000000000..c8c791a7d6e --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiCommon.props @@ -0,0 +1,17 @@ +锘 + + + + + + + CoreFoundation$(DebugSuffix).lib;JavaScriptCore$(DebugSuffix).lib;WTF$(DebugSuffix).lib;libicuin$(DebugSuffix).lib;libicuuc$(DebugSuffix).lib;%(AdditionalDependencies) + Console + + + NOMINMAX;_CONSOLE;%(PreprocessorDefinitions) + $(ProjectDir)\..\..\API;$(ConfigurationBuildDir)\include\JavaScriptCore;$(ConfigurationBuildDir)\include\private\JavaScriptCore;$(ConfigurationBuildDir)\include;$(ConfigurationBuildDir)\include\private;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;%(AdditionalIncludeDirectories) + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiCommonCFLite.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiCommonCFLite.props new file mode 100644 index 00000000000..0da8cdf7077 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiCommonCFLite.props @@ -0,0 +1,17 @@ +锘 + + + + + + + CFLite.lib;JavaScriptCore$(DebugSuffix).lib;WTF$(DebugSuffix).lib;libicuin.lib;libicuuc.lib;%(AdditionalDependencies) + Console + + + NOMINMAX;_CONSOLE;%(PreprocessorDefinitions) + $(ProjectDir)\..\..\API;$(ConfigurationBuildDir)\include\JavaScriptCore;$(ConfigurationBuildDir)\include\private\JavaScriptCore;$(ConfigurationBuildDir)\include;$(ConfigurationBuildDir)\include\private;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;%(AdditionalIncludeDirectories) + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiDebug.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiDebug.props new file mode 100644 index 00000000000..8dc5cc955a8 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiDebug.props @@ -0,0 +1,14 @@ +锘 + + + + + + + + + <_PropertySheetDisplayName>testapiDebug + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiDebugCFLite.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiDebugCFLite.props new file mode 100644 index 00000000000..0aead2d2fc2 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiDebugCFLite.props @@ -0,0 +1,14 @@ +锘 + + + + + + + + + <_PropertySheetDisplayName>testapiDebug + + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiPostBuild.cmd b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiPostBuild.cmd new file mode 100644 index 00000000000..0820433b000 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiPostBuild.cmd @@ -0,0 +1,3 @@ +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed" + +xcopy /y /d "%PROJECTDIR%\..\..\API\tests\testapi.js" "%OUTDIR%" diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiPreBuild.cmd b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiPreBuild.cmd new file mode 100644 index 00000000000..a7707767487 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiPreBuild.cmd @@ -0,0 +1,6 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiProduction.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiProduction.props new file mode 100644 index 00000000000..b2ef74756b6 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiProduction.props @@ -0,0 +1,12 @@ +锘 + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiRelease.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiRelease.props new file mode 100644 index 00000000000..cd9b500b2cc --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiRelease.props @@ -0,0 +1,12 @@ +锘 + + + + + + + + + + + \ No newline at end of file diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiReleaseCFLite.props b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiReleaseCFLite.props new file mode 100644 index 00000000000..efb49e7e460 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/testapi/testapiReleaseCFLite.props @@ -0,0 +1,12 @@ +锘 + + + + + + + + + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..e047fabf7c6 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj @@ -0,0 +1,4634 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXAggregateTarget section */ + 0F4680A914BA7FD900BFE272 /* LLInt Offsets */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 0F4680AC14BA7FD900BFE272 /* Build configuration list for PBXAggregateTarget "LLInt Offsets" */; + buildPhases = ( + 0F4680AA14BA7FD900BFE272 /* Generate Derived Sources */, + ); + name = "LLInt Offsets"; + productName = "Derived Sources"; + }; + 5D6B2A47152B9E17005231DE /* Test Tools */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 5D6B2A4C152B9E17005231DE /* Build configuration list for PBXAggregateTarget "Test Tools" */; + buildPhases = ( + ); + dependencies = ( + 5D6B2A4F152B9E23005231DE /* PBXTargetDependency */, + 5D6B2A51152B9E23005231DE /* PBXTargetDependency */, + 5D6B2A55152B9E23005231DE /* PBXTargetDependency */, + ); + name = "Test Tools"; + productName = "Test Tools"; + }; + 65FB3F6609D11E9100F49DEB /* Derived Sources */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 65FB3F7709D11EBD00F49DEB /* Build configuration list for PBXAggregateTarget "Derived Sources" */; + buildPhases = ( + 65FB3F6509D11E9100F49DEB /* Generate Derived Sources */, + 5D35DEE10C7C140B008648B2 /* Generate DTrace header */, + ); + dependencies = ( + 0FF922D614F46B600041A24E /* PBXTargetDependency */, + ); + name = "Derived Sources"; + productName = "Derived Sources"; + }; + 932F5BE30822A1C700736975 /* All */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 149C276C08902AFE008A9EFC /* Build configuration list for PBXAggregateTarget "All" */; + buildPhases = ( + ); + dependencies = ( + 932F5BE70822A1C700736975 /* PBXTargetDependency */, + 5D69E912152BE5470028D720 /* PBXTargetDependency */, + 5D6B2A57152B9E2E005231DE /* PBXTargetDependency */, + ); + name = All; + productName = All; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 0F05C3B41683CF9200BAF45B /* DFGArrayifySlowPathGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F05C3B21683CF8F00BAF45B /* DFGArrayifySlowPathGenerator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F0776BF14FF002B00102332 /* JITCompilationEffort.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0776BD14FF002800102332 /* JITCompilationEffort.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F0B839A14BCF45D00885B4F /* LLIntEntrypoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F0B839514BCF45A00885B4F /* LLIntEntrypoints.cpp */; }; + 0F0B839B14BCF46000885B4F /* LLIntEntrypoints.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0B839614BCF45A00885B4F /* LLIntEntrypoints.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F0B839C14BCF46300885B4F /* LLIntThunks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F0B839714BCF45A00885B4F /* LLIntThunks.cpp */; }; + 0F0B839D14BCF46600885B4F /* LLIntThunks.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0B839814BCF45A00885B4F /* LLIntThunks.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F0B83A714BCF50700885B4F /* CodeType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0B83A514BCF50400885B4F /* CodeType.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F0B83A914BCF56200885B4F /* HandlerInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0B83A814BCF55E00885B4F /* HandlerInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F0B83AB14BCF5BB00885B4F /* ExpressionRangeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0B83AA14BCF5B900885B4F /* ExpressionRangeInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F0B83AD14BCF60400885B4F /* LineInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0B83AC14BCF60200885B4F /* LineInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F0B83B014BCF71600885B4F /* CallLinkInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F0B83AE14BCF71400885B4F /* CallLinkInfo.cpp */; }; + 0F0B83B114BCF71800885B4F /* CallLinkInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0B83AF14BCF71400885B4F /* CallLinkInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F0B83B914BCF95F00885B4F /* CallReturnOffsetToBytecodeOffset.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0B83B814BCF95B00885B4F /* CallReturnOffsetToBytecodeOffset.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F0CD4C215F1A6070032F1C0 /* PutDirectIndexMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0CD4C015F1A6040032F1C0 /* PutDirectIndexMode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F0CD4C415F6B6BB0032F1C0 /* SparseArrayValueMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F0CD4C315F6B6B50032F1C0 /* SparseArrayValueMap.cpp */; }; + 0F0FC45A14BD15F500B81154 /* LLIntCallLinkInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0FC45814BD15F100B81154 /* LLIntCallLinkInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F13912916771C33009CCB07 /* ProfilerBytecodeSequence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F13912416771C30009CCB07 /* ProfilerBytecodeSequence.cpp */; }; + 0F13912A16771C36009CCB07 /* ProfilerBytecodeSequence.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F13912516771C30009CCB07 /* ProfilerBytecodeSequence.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F13912B16771C3A009CCB07 /* ProfilerProfiledBytecodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F13912616771C30009CCB07 /* ProfilerProfiledBytecodes.cpp */; }; + 0F13912C16771C3D009CCB07 /* ProfilerProfiledBytecodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F13912716771C30009CCB07 /* ProfilerProfiledBytecodes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F13E04E16164A1F00DC8DE7 /* IndexingType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F13E04C16164A1B00DC8DE7 /* IndexingType.cpp */; }; + 0F15F15F14B7A73E005DE37D /* CommonSlowPaths.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F15F15D14B7A73A005DE37D /* CommonSlowPaths.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F16015D156198C900C2587C /* DFGArgumentsSimplificationPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F16015A156198BF00C2587C /* DFGArgumentsSimplificationPhase.cpp */; }; + 0F16015E156198C900C2587C /* DFGArgumentsSimplificationPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F16015B156198BF00C2587C /* DFGArgumentsSimplificationPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F1E3A461534CBAF000F9456 /* DFGArgumentPosition.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F1E3A431534CBAD000F9456 /* DFGArgumentPosition.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F1E3A471534CBB9000F9456 /* DFGDoubleFormatState.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F1E3A441534CBAD000F9456 /* DFGDoubleFormatState.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F1E3A67153A21E2000F9456 /* DFGSilentRegisterSavePlan.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F1E3A65153A21DF000F9456 /* DFGSilentRegisterSavePlan.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F21C26814BE5F6800ADC64B /* JITDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F21C26614BE5F5E00ADC64B /* JITDriver.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F21C27C14BE727600ADC64B /* ExecutionHarness.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F21C27A14BE727300ADC64B /* ExecutionHarness.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F21C27D14BE727A00ADC64B /* CodeSpecializationKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F21C27914BE727300ADC64B /* CodeSpecializationKind.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F21C27F14BEAA8200ADC64B /* BytecodeConventions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F21C27E14BEAA8000ADC64B /* BytecodeConventions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F242DA713F3B1E8007ADD4C /* WeakReferenceHarvester.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F242DA513F3B1BB007ADD4C /* WeakReferenceHarvester.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F256C361627B0AD007F2783 /* DFGCallArrayAllocatorSlowPathGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F256C341627B0AA007F2783 /* DFGCallArrayAllocatorSlowPathGenerator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F2BDC15151C5D4D00CD8910 /* DFGFixupPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2BDC12151C5D4A00CD8910 /* DFGFixupPhase.cpp */; }; + 0F2BDC16151C5D4F00CD8910 /* DFGFixupPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2BDC13151C5D4A00CD8910 /* DFGFixupPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F2BDC21151E803B00CD8910 /* DFGInsertionSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2BDC1F151E803800CD8910 /* DFGInsertionSet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F2BDC2C151FDE9100CD8910 /* Operands.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2BDC2B151FDE8B00CD8910 /* Operands.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F2BDC451522801B00CD8910 /* DFGMinifiedGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2BDC3D1522801700CD8910 /* DFGMinifiedGraph.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F2BDC461522802000CD8910 /* DFGMinifiedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2BDC3E1522801700CD8910 /* DFGMinifiedNode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F2BDC471522802500CD8910 /* DFGValueRecoveryOverride.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2BDC3F1522801700CD8910 /* DFGValueRecoveryOverride.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F2BDC481522802900CD8910 /* DFGValueSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2BDC401522801700CD8910 /* DFGValueSource.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F2BDC491522809600CD8910 /* DFGVariableEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2BDC411522801700CD8910 /* DFGVariableEvent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F2BDC4A1522809A00CD8910 /* DFGVariableEventStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2BDC421522801700CD8910 /* DFGVariableEventStream.cpp */; }; + 0F2BDC4B1522809D00CD8910 /* DFGVariableEventStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2BDC431522801700CD8910 /* DFGVariableEventStream.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F2BDC4D1522818600CD8910 /* DFGMinifiedNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2BDC4C1522818300CD8910 /* DFGMinifiedNode.cpp */; }; + 0F2BDC4F15228BF300CD8910 /* DFGValueSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2BDC4E15228BE700CD8910 /* DFGValueSource.cpp */; }; + 0F2BDC5115228FFD00CD8910 /* DFGVariableEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2BDC5015228FFA00CD8910 /* DFGVariableEvent.cpp */; }; + 0F2C556F14738F3100121E4F /* DFGCodeBlocks.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2C556E14738F2E00121E4F /* DFGCodeBlocks.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F2C557014738F3500121E4F /* DFGCodeBlocks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2C556D14738F2E00121E4F /* DFGCodeBlocks.cpp */; }; + 0F2E892C16D028AD009E4FD2 /* UnusedPointer.h in Headers */ = {isa = PBXBuildFile; fileRef = 65987F2F16828A7E003C2F8D /* UnusedPointer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F2E892D16D02BAF009E4FD2 /* DFGMinifiedID.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB4B51016B3A964003F696B /* DFGMinifiedID.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F2FC77216E12F710038D976 /* DFGDCEPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2FC77016E12F6F0038D976 /* DFGDCEPhase.cpp */; }; + 0F2FC77316E12F740038D976 /* DFGDCEPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2FC77116E12F6F0038D976 /* DFGDCEPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F34B14916D42010001CDA5A /* DFGUseKind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F34B14716D4200E001CDA5A /* DFGUseKind.cpp */; }; + 0F34B14A16D42013001CDA5A /* DFGUseKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F34B14816D4200E001CDA5A /* DFGUseKind.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F34B14C16D43E0D001CDA5A /* PolymorphicAccessStructureList.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F34B14B16D43E0C001CDA5A /* PolymorphicAccessStructureList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F3B3A1A153E68F2003ED0FF /* DFGConstantFoldingPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F3B3A17153E68EF003ED0FF /* DFGConstantFoldingPhase.cpp */; }; + 0F3B3A1B153E68F4003ED0FF /* DFGConstantFoldingPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F3B3A18153E68EF003ED0FF /* DFGConstantFoldingPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F3B3A271544C995003ED0FF /* DFGCFGSimplificationPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F3B3A241544C991003ED0FF /* DFGCFGSimplificationPhase.cpp */; }; + 0F3B3A281544C997003ED0FF /* DFGCFGSimplificationPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F3B3A251544C991003ED0FF /* DFGCFGSimplificationPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F3B3A2B15475000003ED0FF /* DFGValidate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F3B3A2915474FF4003ED0FF /* DFGValidate.cpp */; }; + 0F3B3A2C15475002003ED0FF /* DFGValidate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F3B3A2A15474FF4003ED0FF /* DFGValidate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F426A481460CBB300131F8F /* ValueRecovery.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F426A451460CBAB00131F8F /* ValueRecovery.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F426A491460CBB700131F8F /* VirtualRegister.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F426A461460CBAB00131F8F /* VirtualRegister.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F426A4B1460CD6E00131F8F /* DataFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F426A4A1460CD6B00131F8F /* DataFormat.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F431738146BAC69007E3890 /* ListableHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F431736146BAC65007E3890 /* ListableHandler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F46808214BA572D00BFE272 /* JITExceptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F46808014BA572700BFE272 /* JITExceptions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F46808314BA573100BFE272 /* JITExceptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F46807F14BA572700BFE272 /* JITExceptions.cpp */; }; + 0F4680A314BA7F8D00BFE272 /* LLIntExceptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F46809E14BA7F8200BFE272 /* LLIntExceptions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F4680A414BA7F8D00BFE272 /* LLIntSlowPaths.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F46809F14BA7F8200BFE272 /* LLIntSlowPaths.cpp */; settings = {COMPILER_FLAGS = "-Wno-unused-parameter"; }; }; + 0F4680A514BA7F8D00BFE272 /* LLIntSlowPaths.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4680A014BA7F8200BFE272 /* LLIntSlowPaths.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F4680A814BA7FAB00BFE272 /* LLIntExceptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F46809D14BA7F8200BFE272 /* LLIntExceptions.cpp */; }; + 0F4680CA14BBB16C00BFE272 /* LLIntCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4680C514BBB16900BFE272 /* LLIntCommon.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F4680CB14BBB17200BFE272 /* LLIntOfflineAsmConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4680C614BBB16900BFE272 /* LLIntOfflineAsmConfig.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F4680CC14BBB17A00BFE272 /* LowLevelInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F4680C714BBB16900BFE272 /* LowLevelInterpreter.cpp */; }; + 0F4680CD14BBB17D00BFE272 /* LowLevelInterpreter.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4680C814BBB16900BFE272 /* LowLevelInterpreter.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F4680D214BBD16500BFE272 /* LLIntData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F4680CE14BBB3D100BFE272 /* LLIntData.cpp */; }; + 0F4680D314BBD16700BFE272 /* LLIntData.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4680CF14BBB3D100BFE272 /* LLIntData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F4680D414BBD24900BFE272 /* HostCallReturnValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F4680D014BBC5F800BFE272 /* HostCallReturnValue.cpp */; }; + 0F4680D514BBD24B00BFE272 /* HostCallReturnValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4680D114BBC5F800BFE272 /* HostCallReturnValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F493AFA16D0CAD30084508B /* SourceProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F493AF816D0CAD10084508B /* SourceProvider.cpp */; }; + 0F5541B11613C1FB00CE3E25 /* SpecialPointer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F5541AF1613C1FB00CE3E25 /* SpecialPointer.cpp */; }; + 0F5541B21613C1FB00CE3E25 /* SpecialPointer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5541B01613C1FB00CE3E25 /* SpecialPointer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F55F0F414D1063900AC7649 /* AbstractPC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F55F0F114D1063600AC7649 /* AbstractPC.cpp */; }; + 0F55F0F514D1063C00AC7649 /* AbstractPC.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F55F0F214D1063600AC7649 /* AbstractPC.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F56A1D315000F35002992B1 /* ExecutionCounter.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F56A1D115000F31002992B1 /* ExecutionCounter.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F56A1D515001CF4002992B1 /* ExecutionCounter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F56A1D415001CF2002992B1 /* ExecutionCounter.cpp */; }; + 0F572D4F16879FDD00E57FBD /* ThunkGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F572D4D16879FDB00E57FBD /* ThunkGenerator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F5EF91E16878F7A003E5C25 /* JITThunks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F5EF91B16878F78003E5C25 /* JITThunks.cpp */; }; + 0F5EF91F16878F7D003E5C25 /* JITThunks.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5EF91C16878F78003E5C25 /* JITThunks.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F5F08CF146C7633000472A9 /* UnconditionalFinalizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5F08CE146C762F000472A9 /* UnconditionalFinalizer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F620174143FCD330068B77C /* DFGVariableAccessData.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F620172143FCD2F0068B77C /* DFGVariableAccessData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F620176143FCD3B0068B77C /* DFGBasicBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F620170143FCD2F0068B77C /* DFGBasicBlock.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F620177143FCD3F0068B77C /* DFGAbstractValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F62016F143FCD2F0068B77C /* DFGAbstractValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F620178143FCD440068B77C /* DFGAbstractState.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F62016E143FCD2F0068B77C /* DFGAbstractState.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F620179143FCD480068B77C /* DFGAbstractState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F62016D143FCD2F0068B77C /* DFGAbstractState.cpp */; }; + 0F63943F15C75F19006A597C /* DFGTypeCheckHoistingPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F63943D15C75F14006A597C /* DFGTypeCheckHoistingPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F63944015C75F1D006A597C /* DFGTypeCheckHoistingPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F63943C15C75F14006A597C /* DFGTypeCheckHoistingPhase.cpp */; }; + 0F63945415D07055006A597C /* ArrayProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F63945115D07051006A597C /* ArrayProfile.cpp */; }; + 0F63945515D07057006A597C /* ArrayProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F63945215D07051006A597C /* ArrayProfile.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F63947815DCE34B006A597C /* DFGStructureAbstractValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F63947615DCE347006A597C /* DFGStructureAbstractValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F63948415E48118006A597C /* DFGArrayMode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F63948115E48114006A597C /* DFGArrayMode.cpp */; }; + 0F63948515E4811B006A597C /* DFGArrayMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F63948215E48114006A597C /* DFGArrayMode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F66E16B14DF3F1600B7B2E4 /* DFGAdjacencyList.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F66E16814DF3F1300B7B2E4 /* DFGAdjacencyList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F66E16C14DF3F1600B7B2E4 /* DFGEdge.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F66E16914DF3F1300B7B2E4 /* DFGEdge.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F714CA416EA92F000F3EBEB /* DFGBackwardsPropagationPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F714CA116EA92ED00F3EBEB /* DFGBackwardsPropagationPhase.cpp */; }; + 0F714CA516EA92F200F3EBEB /* DFGBackwardsPropagationPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F714CA216EA92ED00F3EBEB /* DFGBackwardsPropagationPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F73D7AE165A142D00ACAB71 /* ClosureCallStubRoutine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F73D7AB165A142A00ACAB71 /* ClosureCallStubRoutine.cpp */; }; + 0F73D7AF165A143000ACAB71 /* ClosureCallStubRoutine.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F73D7AC165A142A00ACAB71 /* ClosureCallStubRoutine.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F766D2815A8CC1E008F363E /* JITStubRoutine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F766D2615A8CC1B008F363E /* JITStubRoutine.cpp */; }; + 0F766D2B15A8CC38008F363E /* JITStubRoutineSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F766D2915A8CC34008F363E /* JITStubRoutineSet.cpp */; }; + 0F766D2C15A8CC3A008F363E /* JITStubRoutineSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F766D2A15A8CC34008F363E /* JITStubRoutineSet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F766D2F15A8DCE0008F363E /* GCAwareJITStubRoutine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F766D2D15A8DCDD008F363E /* GCAwareJITStubRoutine.cpp */; }; + 0F766D3015A8DCE2008F363E /* GCAwareJITStubRoutine.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F766D2E15A8DCDD008F363E /* GCAwareJITStubRoutine.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F766D3115AA8112008F363E /* JITStubRoutine.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F766D1C15A5028D008F363E /* JITStubRoutine.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F766D3415AE2538008F363E /* JumpReplacementWatchpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F766D3215AE2535008F363E /* JumpReplacementWatchpoint.cpp */; }; + 0F766D3515AE253B008F363E /* JumpReplacementWatchpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F766D3315AE2535008F363E /* JumpReplacementWatchpoint.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F766D3815AE4A1C008F363E /* StructureStubClearingWatchpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F766D3615AE4A1A008F363E /* StructureStubClearingWatchpoint.cpp */; }; + 0F766D3915AE4A1F008F363E /* StructureStubClearingWatchpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F766D3715AE4A1A008F363E /* StructureStubClearingWatchpoint.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F766D4415B2A3C0008F363E /* DFGRegisterSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F766D4215B2A3BD008F363E /* DFGRegisterSet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F766D4615B3701F008F363E /* DFGScratchRegisterAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F766D4515B3701D008F363E /* DFGScratchRegisterAllocator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F7700921402FF3C0078EB39 /* SamplingCounter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F7700911402FF280078EB39 /* SamplingCounter.cpp */; }; + 0F7B294A14C3CD29007C3DB1 /* DFGCCallHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F7B294814C3CD23007C3DB1 /* DFGCCallHelpers.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F7B294B14C3CD2F007C3DB1 /* DFGCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD82E1F14172C2F00179C94 /* DFGCapabilities.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F7B294D14C3CD4C007C3DB1 /* DFGCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC0977E1469EBC400CF2442 /* DFGCommon.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F8023EA1613832B00A0BA45 /* ByValInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F8023E91613832300A0BA45 /* ByValInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F8335B71639C1E6001443B5 /* ArrayAllocationProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F8335B41639C1E3001443B5 /* ArrayAllocationProfile.cpp */; }; + 0F8335B81639C1EA001443B5 /* ArrayAllocationProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F8335B51639C1E3001443B5 /* ArrayAllocationProfile.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F8364B7164B0C110053329A /* DFGBranchDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F8364B5164B0C0E0053329A /* DFGBranchDirection.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F8F943C1667631300D61971 /* CodeSpecializationKind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F8F943A1667631100D61971 /* CodeSpecializationKind.cpp */; }; + 0F8F94401667633000D61971 /* CodeBlockHash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F8F943D1667632D00D61971 /* CodeBlockHash.cpp */; }; + 0F8F94411667633200D61971 /* CodeBlockHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F8F943E1667632D00D61971 /* CodeBlockHash.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F8F94421667633500D61971 /* CodeType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F8F943F1667632D00D61971 /* CodeType.cpp */; }; + 0F8F94441667635400D61971 /* JITCode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F8F94431667635200D61971 /* JITCode.cpp */; }; + 0F8F9446166764F100D61971 /* CodeOrigin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F8F9445166764EE00D61971 /* CodeOrigin.cpp */; }; + 0F919D0C157EE09F004A4E7D /* JSSymbolTableObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F919D09157EE09D004A4E7D /* JSSymbolTableObject.cpp */; }; + 0F919D0D157EE0A2004A4E7D /* JSSymbolTableObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F919D0A157EE09D004A4E7D /* JSSymbolTableObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F919D10157F3329004A4E7D /* JSSegmentedVariableObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F919D0E157F3327004A4E7D /* JSSegmentedVariableObject.cpp */; }; + 0F919D11157F332C004A4E7D /* JSSegmentedVariableObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F919D0F157F3327004A4E7D /* JSSegmentedVariableObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F919D2515853CE0004A4E7D /* Watchpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F919D2215853CDE004A4E7D /* Watchpoint.cpp */; }; + 0F919D2615853CE3004A4E7D /* Watchpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F919D2315853CDE004A4E7D /* Watchpoint.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F919D2815856773004A4E7D /* SymbolTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F919D2715856770004A4E7D /* SymbolTable.cpp */; }; + 0F93329D14CA7DC30085F3C6 /* CallLinkStatus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F93329314CA7DC10085F3C6 /* CallLinkStatus.cpp */; }; + 0F93329E14CA7DC50085F3C6 /* CallLinkStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F93329414CA7DC10085F3C6 /* CallLinkStatus.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F93329F14CA7DCA0085F3C6 /* GetByIdStatus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F93329514CA7DC10085F3C6 /* GetByIdStatus.cpp */; }; + 0F9332A014CA7DCD0085F3C6 /* GetByIdStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F93329614CA7DC10085F3C6 /* GetByIdStatus.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F9332A314CA7DD70085F3C6 /* PutByIdStatus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F93329914CA7DC10085F3C6 /* PutByIdStatus.cpp */; }; + 0F9332A414CA7DD90085F3C6 /* PutByIdStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F93329A14CA7DC10085F3C6 /* PutByIdStatus.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F9332A514CA7DDD0085F3C6 /* StructureSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F93329B14CA7DC10085F3C6 /* StructureSet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F963B3813FC6FE90002D9B2 /* ValueProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F963B3613FC6FDE0002D9B2 /* ValueProfile.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F96EBB316676EF6008BADE3 /* CodeBlockWithJITType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F96EBB116676EF4008BADE3 /* CodeBlockWithJITType.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F9749711687ADE400A4FF6A /* JSCellInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F97496F1687ADE200A4FF6A /* JSCellInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F98206016BFE38100240D02 /* PreciseJumpTargets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F98205D16BFE37F00240D02 /* PreciseJumpTargets.cpp */; }; + 0F98206116BFE38300240D02 /* PreciseJumpTargets.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F98205E16BFE37F00240D02 /* PreciseJumpTargets.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F9D3370165DBB90005AD387 /* Disassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F9D336E165DBB8D005AD387 /* Disassembler.cpp */; }; + 0F9FC8C314E1B5FE00D52AE0 /* PolymorphicPutByIdList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F9FC8BF14E1B5FB00D52AE0 /* PolymorphicPutByIdList.cpp */; }; + 0F9FC8C414E1B60000D52AE0 /* PolymorphicPutByIdList.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F9FC8C014E1B5FB00D52AE0 /* PolymorphicPutByIdList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F9FC8C514E1B60400D52AE0 /* PutKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F9FC8C114E1B5FB00D52AE0 /* PutKind.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FA581BA150E952C00B9A2D9 /* DFGNodeFlags.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FA581B7150E952A00B9A2D9 /* DFGNodeFlags.cpp */; }; + 0FA581BB150E953000B9A2D9 /* DFGNodeFlags.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA581B8150E952A00B9A2D9 /* DFGNodeFlags.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FA581BC150E953000B9A2D9 /* DFGNodeType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA581B9150E952A00B9A2D9 /* DFGNodeType.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FAF7EFD165BA91B000C8455 /* JITDisassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FAF7EFA165BA919000C8455 /* JITDisassembler.cpp */; }; + 0FAF7EFE165BA91F000C8455 /* JITDisassembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FAF7EFB165BA919000C8455 /* JITDisassembler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FB105851675480F00F8AB6E /* ExitKind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB105821675480C00F8AB6E /* ExitKind.cpp */; }; + 0FB105861675481200F8AB6E /* ExitKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB105831675480C00F8AB6E /* ExitKind.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FB1058B1675483100F8AB6E /* ProfilerOSRExit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB105871675482E00F8AB6E /* ProfilerOSRExit.cpp */; }; + 0FB1058C1675483300F8AB6E /* ProfilerOSRExit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB105881675482E00F8AB6E /* ProfilerOSRExit.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FB1058D1675483700F8AB6E /* ProfilerOSRExitSite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB105891675482E00F8AB6E /* ProfilerOSRExitSite.cpp */; }; + 0FB1058E1675483A00F8AB6E /* ProfilerOSRExitSite.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB1058A1675482E00F8AB6E /* ProfilerOSRExitSite.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FB5467714F59B5C002C2989 /* LazyOperandValueProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB5467614F59AD1002C2989 /* LazyOperandValueProfile.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FB5467914F5C46B002C2989 /* LazyOperandValueProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB5467814F5C468002C2989 /* LazyOperandValueProfile.cpp */; }; + 0FB5467B14F5C7E1002C2989 /* MethodOfGettingAValueProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB5467A14F5C7D4002C2989 /* MethodOfGettingAValueProfile.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FB5467D14F5CFD6002C2989 /* MethodOfGettingAValueProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB5467C14F5CFD3002C2989 /* MethodOfGettingAValueProfile.cpp */; }; + 0FB7F39515ED8E4600F167B2 /* ArrayConventions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38915ED8E3800F167B2 /* ArrayConventions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FB7F39615ED8E4600F167B2 /* ArrayStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38A15ED8E3800F167B2 /* ArrayStorage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FB7F39715ED8E4600F167B2 /* Butterfly.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38B15ED8E3800F167B2 /* Butterfly.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FB7F39815ED8E4600F167B2 /* ButterflyInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38C15ED8E3800F167B2 /* ButterflyInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FB7F39915ED8E4600F167B2 /* IndexingHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38D15ED8E3800F167B2 /* IndexingHeader.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FB7F39A15ED8E4600F167B2 /* IndexingHeaderInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38E15ED8E3800F167B2 /* IndexingHeaderInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FB7F39B15ED8E4600F167B2 /* IndexingType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38F15ED8E3800F167B2 /* IndexingType.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FB7F39C15ED8E4600F167B2 /* PropertyStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F39015ED8E3800F167B2 /* PropertyStorage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FB7F39D15ED8E4600F167B2 /* Reject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F39115ED8E3800F167B2 /* Reject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FB7F39E15ED8E4600F167B2 /* SparseArrayValueMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F39215ED8E3800F167B2 /* SparseArrayValueMap.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FBC0AE71496C7C400D4FBDD /* DFGExitProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FBC0AE41496C7C100D4FBDD /* DFGExitProfile.cpp */; }; + 0FBC0AE81496C7C700D4FBDD /* DFGExitProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FBC0AE51496C7C100D4FBDD /* DFGExitProfile.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FBD7E691447999600481315 /* CodeOrigin.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FBD7E671447998F00481315 /* CodeOrigin.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FBE0F7216C1DB030082C5E8 /* DFGCPSRethreadingPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FBE0F6B16C1DB010082C5E8 /* DFGCPSRethreadingPhase.cpp */; }; + 0FBE0F7316C1DB050082C5E8 /* DFGCPSRethreadingPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FBE0F6C16C1DB010082C5E8 /* DFGCPSRethreadingPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FBE0F7416C1DB090082C5E8 /* DFGPredictionInjectionPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FBE0F6D16C1DB010082C5E8 /* DFGPredictionInjectionPhase.cpp */; }; + 0FBE0F7516C1DB0B0082C5E8 /* DFGPredictionInjectionPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FBE0F6E16C1DB010082C5E8 /* DFGPredictionInjectionPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FBE0F7616C1DB0F0082C5E8 /* DFGUnificationPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FBE0F6F16C1DB010082C5E8 /* DFGUnificationPhase.cpp */; }; + 0FBE0F7716C1DB120082C5E8 /* DFGUnificationPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FBE0F7016C1DB010082C5E8 /* DFGUnificationPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FC0976A1468A6F700CF2442 /* DFGOSRExit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC097681468A6EF00CF2442 /* DFGOSRExit.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FC0976D1468AB4E00CF2442 /* DFGAssemblyHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC0976C1468AB4A00CF2442 /* DFGAssemblyHelpers.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FC0976E1468AB5100CF2442 /* DFGAssemblyHelpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC0976B1468AB4A00CF2442 /* DFGAssemblyHelpers.cpp */; }; + 0FC0977114693AF500CF2442 /* DFGOSRExitCompiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC0976F14693AEF00CF2442 /* DFGOSRExitCompiler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FC0977214693AF900CF2442 /* DFGOSRExitCompiler64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC0977014693AEF00CF2442 /* DFGOSRExitCompiler64.cpp */; }; + 0FC09776146943B000CF2442 /* DFGOSRExitCompiler32_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC09775146943AD00CF2442 /* DFGOSRExitCompiler32_64.cpp */; }; + 0FC09791146A6F7100CF2442 /* DFGOSRExit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC0978E146A6F6300CF2442 /* DFGOSRExit.cpp */; }; + 0FC09792146A6F7300CF2442 /* DFGOSRExitCompiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC0978F146A6F6300CF2442 /* DFGOSRExitCompiler.cpp */; }; + 0FC097A1146B28CA00CF2442 /* DFGThunks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC0979F146B28C700CF2442 /* DFGThunks.cpp */; }; + 0FC097A2146B28CC00CF2442 /* DFGThunks.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC097A0146B28C700CF2442 /* DFGThunks.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FC8150A14043BF500CFA603 /* WriteBarrierSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC8150914043BD200CFA603 /* WriteBarrierSupport.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FC8150B14043C0E00CFA603 /* WriteBarrierSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC8150814043BCA00CFA603 /* WriteBarrierSupport.cpp */; }; + 0FC815151405119B00CFA603 /* VTableSpectrum.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC815141405118D00CFA603 /* VTableSpectrum.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FC81516140511B500CFA603 /* VTableSpectrum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC815121405118600CFA603 /* VTableSpectrum.cpp */; }; + 0FCCAE4516D0CF7400D0C65B /* ParserError.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCCAE4316D0CF6E00D0C65B /* ParserError.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FD2C92416D01EE900C7803F /* StructureInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD2C92316D01EE900C7803F /* StructureInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FD3C82614115D4000FD81CB /* DFGDriver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FD3C82014115CF800FD81CB /* DFGDriver.cpp */; }; + 0FD3C82814115D4F00FD81CB /* DFGDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD3C82214115D0E00FD81CB /* DFGDriver.h */; }; + 0FD81AD2154FB4EE00983E72 /* DFGDominators.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FD81ACF154FB4EB00983E72 /* DFGDominators.cpp */; }; + 0FD81AD3154FB4F000983E72 /* DFGDominators.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD81AD0154FB4EB00983E72 /* DFGDominators.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FD82E2114172CE300179C94 /* DFGCapabilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FD82E1E14172C2F00179C94 /* DFGCapabilities.cpp */; }; + 0FD82E39141AB14D00179C94 /* CompactJITCodeMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD82E37141AB14200179C94 /* CompactJITCodeMap.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FD82E54141DAEEE00179C94 /* SpeculatedType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD82E4F141DAEA100179C94 /* SpeculatedType.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FD82E56141DAF0800179C94 /* DFGOSREntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FD82E52141DAEDE00179C94 /* DFGOSREntry.cpp */; }; + 0FD82E57141DAF1000179C94 /* DFGOSREntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD82E53141DAEDE00179C94 /* DFGOSREntry.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FD82E86141F3FF100179C94 /* SpeculatedType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FD82E84141F3FDA00179C94 /* SpeculatedType.cpp */; }; + 0FDDBFB51666EED800C55FEF /* DFGVariableAccessDataDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FDDBFB21666EED500C55FEF /* DFGVariableAccessDataDump.cpp */; }; + 0FDDBFB61666EEDA00C55FEF /* DFGVariableAccessDataDump.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FDDBFB31666EED500C55FEF /* DFGVariableAccessDataDump.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FE228ED1436AB2700196C48 /* Options.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FE228EB1436AB2300196C48 /* Options.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FE228EE1436AB2C00196C48 /* Options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FE228EA1436AB2300196C48 /* Options.cpp */; }; + 0FEB3ECD16237F4D00AB67AD /* TypedArrayDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEB3ECB16237F4700AB67AD /* TypedArrayDescriptor.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FEB3ECF16237F6C00AB67AD /* MacroAssembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEB3ECE16237F6700AB67AD /* MacroAssembler.cpp */; }; + 0FEFC9AA1681A3B300567F53 /* DFGOSRExitJumpPlaceholder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEFC9A71681A3B000567F53 /* DFGOSRExitJumpPlaceholder.cpp */; }; + 0FEFC9AB1681A3B600567F53 /* DFGOSRExitJumpPlaceholder.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEFC9A81681A3B000567F53 /* DFGOSRExitJumpPlaceholder.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF0F19916B729F6005DF95B /* DFGLongLivedState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB4B51C16B62772003F696B /* DFGLongLivedState.cpp */; }; + 0FF0F19B16B729FA005DF95B /* DFGLongLivedState.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB4B51D16B62772003F696B /* DFGLongLivedState.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF0F19C16B72A03005DF95B /* DFGNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB4B51E16B62772003F696B /* DFGNode.cpp */; }; + 0FF0F19D16B72A08005DF95B /* DFGCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB4B51A16B62772003F696B /* DFGCommon.cpp */; }; + 0FF0F19E16B72A0B005DF95B /* DFGEdge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB4B51B16B62772003F696B /* DFGEdge.cpp */; }; + 0FF0F19F16B72A17005DF95B /* FunctionExecutableDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB4B52116B6278D003F696B /* FunctionExecutableDump.cpp */; }; + 0FF0F1A016B72A1A005DF95B /* FunctionExecutableDump.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB4B52216B6278D003F696B /* FunctionExecutableDump.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF42731158EBD54004CB9FF /* Disassembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF4272F158EBD44004CB9FF /* Disassembler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF42732158EBD58004CB9FF /* UDis86Disassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF42730158EBD44004CB9FF /* UDis86Disassembler.cpp */; }; + 0FF42740158EBE8B004CB9FF /* udis86_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FF42734158EBD94004CB9FF /* udis86_decode.c */; }; + 0FF42741158EBE8D004CB9FF /* udis86_decode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF42735158EBD94004CB9FF /* udis86_decode.h */; }; + 0FF42742158EBE91004CB9FF /* udis86_extern.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF42736158EBD94004CB9FF /* udis86_extern.h */; }; + 0FF42743158EBE91004CB9FF /* udis86_input.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FF42737158EBD94004CB9FF /* udis86_input.c */; }; + 0FF42744158EBE91004CB9FF /* udis86_input.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF42738158EBD94004CB9FF /* udis86_input.h */; }; + 0FF42745158EBE91004CB9FF /* udis86_syn-att.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FF42739158EBD94004CB9FF /* udis86_syn-att.c */; }; + 0FF42746158EBE91004CB9FF /* udis86_syn-intel.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FF4273A158EBD94004CB9FF /* udis86_syn-intel.c */; }; + 0FF42747158EBE91004CB9FF /* udis86_syn.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FF4273B158EBD94004CB9FF /* udis86_syn.c */; }; + 0FF42748158EBE91004CB9FF /* udis86_syn.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF4273C158EBD94004CB9FF /* udis86_syn.h */; }; + 0FF42749158EBE91004CB9FF /* udis86_types.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF4273D158EBD94004CB9FF /* udis86_types.h */; }; + 0FF4274A158EBE91004CB9FF /* udis86.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FF4273E158EBD94004CB9FF /* udis86.c */; }; + 0FF4274B158EBE91004CB9FF /* udis86.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF4273F158EBD94004CB9FF /* udis86.h */; }; + 0FF4274D158EBFE6004CB9FF /* udis86_itab_holder.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FF4274C158EBFE1004CB9FF /* udis86_itab_holder.c */; }; + 0FF4275715914A20004CB9FF /* LinkBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF4275615914A20004CB9FF /* LinkBuffer.cpp */; }; + 0FF427641591A1CC004CB9FF /* DFGDisassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF427611591A1C9004CB9FF /* DFGDisassembler.cpp */; }; + 0FF427651591A1CE004CB9FF /* DFGDisassembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF427621591A1C9004CB9FF /* DFGDisassembler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF42771159275D5004CB9FF /* ResolveGlobalStatus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF4276E159275D2004CB9FF /* ResolveGlobalStatus.cpp */; }; + 0FF42772159275D8004CB9FF /* ResolveGlobalStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF4276F159275D2004CB9FF /* ResolveGlobalStatus.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF60AC216740F8300029779 /* ReduceWhitespace.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF60AC016740F8100029779 /* ReduceWhitespace.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF60AC316740F8800029779 /* ReduceWhitespace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF60ABF16740F8100029779 /* ReduceWhitespace.cpp */; }; + 0FF7168C15A3B235008F5DAA /* PropertyOffset.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF7168A15A3B231008F5DAA /* PropertyOffset.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF729A5166AD351000F5BA3 /* ProfilerBytecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF72993166AD347000F5BA3 /* ProfilerBytecode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF729AD166AD35C000F5BA3 /* ProfilerBytecode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF72992166AD347000F5BA3 /* ProfilerBytecode.cpp */; }; + 0FF729AE166AD35C000F5BA3 /* ProfilerBytecodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF72994166AD347000F5BA3 /* ProfilerBytecodes.cpp */; }; + 0FF729AF166AD35C000F5BA3 /* ProfilerCompilation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF72996166AD347000F5BA3 /* ProfilerCompilation.cpp */; }; + 0FF729B0166AD35C000F5BA3 /* ProfilerCompilationKind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF72998166AD347000F5BA3 /* ProfilerCompilationKind.cpp */; }; + 0FF729B1166AD35C000F5BA3 /* ProfilerCompiledBytecode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF7299A166AD347000F5BA3 /* ProfilerCompiledBytecode.cpp */; }; + 0FF729B2166AD35C000F5BA3 /* ProfilerDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF7299C166AD347000F5BA3 /* ProfilerDatabase.cpp */; }; + 0FF729B3166AD35C000F5BA3 /* ProfilerOrigin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF7299F166AD347000F5BA3 /* ProfilerOrigin.cpp */; }; + 0FF729B4166AD35C000F5BA3 /* ProfilerOriginStack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF729A1166AD347000F5BA3 /* ProfilerOriginStack.cpp */; }; + 0FF729B9166AD360000F5BA3 /* ProfilerBytecodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF72995166AD347000F5BA3 /* ProfilerBytecodes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF729BA166AD360000F5BA3 /* ProfilerCompilation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF72997166AD347000F5BA3 /* ProfilerCompilation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF729BB166AD360000F5BA3 /* ProfilerCompilationKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF72999166AD347000F5BA3 /* ProfilerCompilationKind.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF729BC166AD360000F5BA3 /* ProfilerCompiledBytecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF7299B166AD347000F5BA3 /* ProfilerCompiledBytecode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF729BD166AD360000F5BA3 /* ProfilerDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF7299D166AD347000F5BA3 /* ProfilerDatabase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF729BE166AD360000F5BA3 /* ProfilerExecutionCounter.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF7299E166AD347000F5BA3 /* ProfilerExecutionCounter.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF729BF166AD360000F5BA3 /* ProfilerOrigin.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF729A0166AD347000F5BA3 /* ProfilerOrigin.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF729C0166AD360000F5BA3 /* ProfilerOriginStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF729A2166AD347000F5BA3 /* ProfilerOriginStack.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FF922D414F46B410041A24E /* LLIntOffsetsExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F4680A114BA7F8200BFE272 /* LLIntOffsetsExtractor.cpp */; }; + 0FFB921816D02EB20055A5DB /* DFGAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB4B51916B62772003F696B /* DFGAllocator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FFB921A16D02EC50055A5DB /* DFGBasicBlockInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD5652216AB780A00197653 /* DFGBasicBlockInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FFB921B16D02F010055A5DB /* DFGNodeAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB4B51F16B62772003F696B /* DFGNodeAllocator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FFB921C16D02F110055A5DB /* DFGOSRExitCompilationInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 65987F2C167FE84B003C2F8D /* DFGOSRExitCompilationInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FFB921D16D02F300055A5DB /* DFGSlowPathGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F1E3A501537C2CB000F9456 /* DFGSlowPathGenerator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FFB921E16D02F470055A5DB /* DFGVariadicFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F85A31E16AB76AE0077571E /* DFGVariadicFunction.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FFB921F16D033050055A5DB /* (null) in Headers */ = {isa = PBXBuildFile; settings = {ATTRIBUTES = (Private, ); }; }; + 0FFB922016D033B70055A5DB /* NodeConstructors.h in Headers */ = {isa = PBXBuildFile; fileRef = 930DAD030FB1EB1A0082D205 /* NodeConstructors.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FFFC95714EF90A000C72532 /* DFGCFAPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FFFC94B14EF909500C72532 /* DFGCFAPhase.cpp */; }; + 0FFFC95814EF90A200C72532 /* DFGCFAPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FFFC94C14EF909500C72532 /* DFGCFAPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FFFC95914EF90A600C72532 /* DFGCSEPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FFFC94D14EF909500C72532 /* DFGCSEPhase.cpp */; }; + 0FFFC95A14EF90A900C72532 /* DFGCSEPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FFFC94E14EF909500C72532 /* DFGCSEPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FFFC95B14EF90AD00C72532 /* DFGPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FFFC94F14EF909500C72532 /* DFGPhase.cpp */; }; + 0FFFC95C14EF90AF00C72532 /* DFGPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FFFC95014EF909500C72532 /* DFGPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FFFC95D14EF90B300C72532 /* DFGPredictionPropagationPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FFFC95114EF909500C72532 /* DFGPredictionPropagationPhase.cpp */; }; + 0FFFC95E14EF90B700C72532 /* DFGPredictionPropagationPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FFFC95214EF909500C72532 /* DFGPredictionPropagationPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FFFC95F14EF90BB00C72532 /* DFGVirtualRegisterAllocationPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FFFC95314EF909500C72532 /* DFGVirtualRegisterAllocationPhase.cpp */; }; + 0FFFC96014EF90BD00C72532 /* DFGVirtualRegisterAllocationPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FFFC95414EF909500C72532 /* DFGVirtualRegisterAllocationPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 140566C4107EC255005DBC8D /* JSAPIValueWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC0894D50FAFBA2D00001865 /* JSAPIValueWrapper.cpp */; }; + 140566D6107EC271005DBC8D /* JSFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A85E0255597D01FF60F7 /* JSFunction.cpp */; }; + 140B7D1D0DC69AF7009C42B8 /* JSActivation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14DA818F0D99FD2000B0A4FB /* JSActivation.cpp */; }; + 140D17D70E8AD4A9000CD17D /* JSBasePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 140D17D60E8AD4A9000CD17D /* JSBasePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 141211310A48794D00480255 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 932F5BD90822A1C700736975 /* JavaScriptCore.framework */; }; + 141211340A48795800480255 /* minidom.c in Sources */ = {isa = PBXBuildFile; fileRef = 141211020A48780900480255 /* minidom.c */; }; + 141448CB13A176EC00F5BA1A /* MarkedBlockSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 141448CA13A176EC00F5BA1A /* MarkedBlockSet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 141448CD13A1783700F5BA1A /* TinyBloomFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 141448CC13A1783700F5BA1A /* TinyBloomFilter.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14150133154BB13F005D8C98 /* WeakSetInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 14150132154BB13F005D8C98 /* WeakSetInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1420BE7B10AA6DDB00F455D2 /* WeakRandom.h in Headers */ = {isa = PBXBuildFile; fileRef = 1420BE7A10AA6DDB00F455D2 /* WeakRandom.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1421359B0A677F4F00A8195E /* JSBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1421359A0A677F4F00A8195E /* JSBase.cpp */; }; + 14280823107EC02C0013E7B2 /* Debugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A8580255597D01FF60F7 /* Debugger.cpp */; }; + 1428082D107EC0570013E7B2 /* CallData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCA62DFE0E2826230004F30D /* CallData.cpp */; }; + 1428082E107EC0570013E7B2 /* ConstructData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCA62DFF0E2826310004F30D /* ConstructData.cpp */; }; + 1428083A107EC0750013E7B2 /* JSStack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1429D85B0ED218E900B89619 /* JSStack.cpp */; }; + 14280841107EC0930013E7B2 /* RegExp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A87D0255597D01FF60F7 /* RegExp.cpp */; }; + 14280842107EC0930013E7B2 /* RegExpConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD202BD0E1706A7002C7E82 /* RegExpConstructor.cpp */; }; + 14280843107EC0930013E7B2 /* RegExpObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A87B0255597D01FF60F7 /* RegExpObject.cpp */; }; + 14280844107EC0930013E7B2 /* RegExpPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD202BF0E1706A7002C7E82 /* RegExpPrototype.cpp */; }; + 14280850107EC0D70013E7B2 /* Operations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A8770255597D01FF60F7 /* Operations.cpp */; }; + 14280855107EC0E70013E7B2 /* GetterSetter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9B80E184545000F9297 /* GetterSetter.cpp */; }; + 14280863107EC11A0013E7B2 /* BooleanConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7952320E15EB5600A898AB /* BooleanConstructor.cpp */; }; + 14280864107EC11A0013E7B2 /* BooleanObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A8500255597D01FF60F7 /* BooleanObject.cpp */; }; + 14280865107EC11A0013E7B2 /* BooleanPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7952340E15EB5600A898AB /* BooleanPrototype.cpp */; }; + 14280870107EC1340013E7B2 /* JSWrapperObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65C7A1710A8EAACB00FA37EA /* JSWrapperObject.cpp */; }; + 14280875107EC13E0013E7B2 /* JSLock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65EA4C99092AF9E20093D800 /* JSLock.cpp */; }; + 1429D77C0ED20D7300B89619 /* Interpreter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1429D77B0ED20D7300B89619 /* Interpreter.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1429D7D40ED2128200B89619 /* Interpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1429D7D30ED2128200B89619 /* Interpreter.cpp */; }; + 1429D8780ED21ACD00B89619 /* ExceptionHelpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1429D8770ED21ACD00B89619 /* ExceptionHelpers.cpp */; }; + 1429D8850ED21C3D00B89619 /* SamplingTool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1429D8830ED21C3D00B89619 /* SamplingTool.cpp */; }; + 1429D8860ED21C3D00B89619 /* SamplingTool.h in Headers */ = {isa = PBXBuildFile; fileRef = 1429D8840ED21C3D00B89619 /* SamplingTool.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1429D8DD0ED2205B00B89619 /* CallFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1429D8DB0ED2205B00B89619 /* CallFrame.cpp */; }; + 1429D8DE0ED2205B00B89619 /* CallFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 1429D8DC0ED2205B00B89619 /* CallFrame.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1429D92F0ED22D7000B89619 /* JIT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1429D92D0ED22D7000B89619 /* JIT.cpp */; }; + 1429D9300ED22D7000B89619 /* JIT.h in Headers */ = {isa = PBXBuildFile; fileRef = 1429D92E0ED22D7000B89619 /* JIT.h */; }; + 142D3939103E4560007DCB52 /* NumericStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = 142D3938103E4560007DCB52 /* NumericStrings.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 142D6F0813539A2800B02E86 /* MarkedBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 142D6F0613539A2800B02E86 /* MarkedBlock.cpp */; }; + 142D6F0913539A2800B02E86 /* MarkedBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = 142D6F0713539A2800B02E86 /* MarkedBlock.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 142D6F1113539A4100B02E86 /* MarkStack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 142D6F0E13539A4100B02E86 /* MarkStack.cpp */; }; + 142D6F1213539A4100B02E86 /* MarkStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 142D6F0F13539A4100B02E86 /* MarkStack.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 142E3134134FF0A600AFADB5 /* Handle.h in Headers */ = {isa = PBXBuildFile; fileRef = 142E312B134FF0A600AFADB5 /* Handle.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 142E3135134FF0A600AFADB5 /* HandleSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 142E312C134FF0A600AFADB5 /* HandleSet.cpp */; }; + 142E3136134FF0A600AFADB5 /* HandleSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 142E312D134FF0A600AFADB5 /* HandleSet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 142E3137134FF0A600AFADB5 /* HandleStack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 142E312E134FF0A600AFADB5 /* HandleStack.cpp */; }; + 142E3138134FF0A600AFADB5 /* HandleStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 142E312F134FF0A600AFADB5 /* HandleStack.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 142E3139134FF0A600AFADB5 /* Local.h in Headers */ = {isa = PBXBuildFile; fileRef = 142E3130134FF0A600AFADB5 /* Local.h */; }; + 142E313A134FF0A600AFADB5 /* LocalScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 142E3131134FF0A600AFADB5 /* LocalScope.h */; }; + 142E313B134FF0A600AFADB5 /* Strong.h in Headers */ = {isa = PBXBuildFile; fileRef = 142E3132134FF0A600AFADB5 /* Strong.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 142E313C134FF0A600AFADB5 /* Weak.h in Headers */ = {isa = PBXBuildFile; fileRef = 142E3133134FF0A600AFADB5 /* Weak.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1440057F0A5335640005F061 /* JSNode.c in Sources */ = {isa = PBXBuildFile; fileRef = 1440F6420A4F8B6A0005F061 /* JSNode.c */; }; + 144005CB0A5338D10005F061 /* JSNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 1440F6410A4F8B6A0005F061 /* JSNode.h */; }; + 144005CC0A5338F80005F061 /* Node.h in Headers */ = {isa = PBXBuildFile; fileRef = 1440051F0A531D3B0005F061 /* Node.h */; }; + 1440063F0A53598A0005F061 /* Node.c in Sources */ = {isa = PBXBuildFile; fileRef = 144005200A531D3B0005F061 /* Node.c */; }; + 1440074A0A536CC20005F061 /* NodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = 144007480A536CC20005F061 /* NodeList.h */; }; + 1440074B0A536CC20005F061 /* NodeList.c in Sources */ = {isa = PBXBuildFile; fileRef = 144007490A536CC20005F061 /* NodeList.c */; }; + 144007570A5370D20005F061 /* JSNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = 144007550A5370D20005F061 /* JSNodeList.h */; }; + 144007580A5370D20005F061 /* JSNodeList.c in Sources */ = {isa = PBXBuildFile; fileRef = 144007560A5370D20005F061 /* JSNodeList.c */; }; + 1440F6100A4F85670005F061 /* testapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 14BD5A2D0A3E91F600BAF59C /* testapi.c */; }; + 1440F8920A508B100005F061 /* JSCallbackFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1440F8900A508B100005F061 /* JSCallbackFunction.cpp */; }; + 1440F8AF0A508D200005F061 /* JSCallbackConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1440F8AD0A508D200005F061 /* JSCallbackConstructor.cpp */; }; + 1440FCE40A51E46B0005F061 /* JSClassRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1440FCE20A51E46B0005F061 /* JSClassRef.cpp */; }; + 1442566115EDE98D0066A49B /* JSWithScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1442565F15EDE98D0066A49B /* JSWithScope.cpp */; }; + 1442566215EDE98D0066A49B /* JSWithScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 1442566015EDE98D0066A49B /* JSWithScope.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14469DDE107EC7E700650446 /* Lookup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A8680255597D01FF60F7 /* Lookup.cpp */; }; + 14469DDF107EC7E700650446 /* MathObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A86A0255597D01FF60F7 /* MathObject.cpp */; }; + 14469DE0107EC7E700650446 /* NativeErrorConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9080E1839DB000F9297 /* NativeErrorConstructor.cpp */; }; + 14469DE1107EC7E700650446 /* NativeErrorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E90A0E1839DB000F9297 /* NativeErrorPrototype.cpp */; }; + 14469DE2107EC7E700650446 /* NumberConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C20E16D4E900A06E92 /* NumberConstructor.cpp */; }; + 14469DE3107EC7E700650446 /* NumberObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A8700255597D01FF60F7 /* NumberObject.cpp */; }; + 14469DE4107EC7E700650446 /* NumberPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C40E16D4E900A06E92 /* NumberPrototype.cpp */; }; + 14469DE5107EC7E700650446 /* ObjectConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C60E16D4E900A06E92 /* ObjectConstructor.cpp */; }; + 14469DE6107EC7E700650446 /* ObjectPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C80E16D4E900A06E92 /* ObjectPrototype.cpp */; }; + 14469DE7107EC7E700650446 /* PropertyNameArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65400C0F0A69BAF200509887 /* PropertyNameArray.cpp */; }; + 14469DE8107EC7E700650446 /* PropertySlot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65621E6B089E859700760F35 /* PropertySlot.cpp */; }; + 14469DEB107EC7E700650446 /* StringConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC18C3C00E16EE3300B34460 /* StringConstructor.cpp */; }; + 14469DEC107EC7E700650446 /* StringObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC18C3C20E16EE3300B34460 /* StringObject.cpp */; }; + 14469DED107EC7E700650446 /* StringPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC18C3C50E16EE3300B34460 /* StringPrototype.cpp */; }; + 144836E7132DA7BE005BE785 /* ConservativeRoots.h in Headers */ = {isa = PBXBuildFile; fileRef = 149DAAF212EB559D0083B12B /* ConservativeRoots.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 145722861437E140005FDE26 /* StrongInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 145722851437E140005FDE26 /* StrongInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 146AAB380B66A94400E55F16 /* JSStringRefCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 146AAB370B66A94400E55F16 /* JSStringRefCF.cpp */; }; + 146B16D812EB5B59001BEC1B /* ConservativeRoots.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 146B14DB12EB5B12001BEC1B /* ConservativeRoots.cpp */; }; + 146FE51211A710430087AE66 /* JITCall32_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 146FE51111A710430087AE66 /* JITCall32_64.cpp */; }; + 1474C33B16AA2D950062F01D /* PrototypeMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D844A316AA2C7000A65AF0 /* PrototypeMap.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1474C33C16AA2D9B0062F01D /* PrototypeMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14D844A216AA2C7000A65AF0 /* PrototypeMap.cpp */; }; + 1478297B1379E8A800A7C2A3 /* HandleTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 146FA5A81378F6B0003627A3 /* HandleTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 147B83AC0E6DB8C9004775A4 /* BatchedTransitionOptimizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 147B83AA0E6DB8C9004775A4 /* BatchedTransitionOptimizer.h */; }; + 147B84630E6DE6B1004775A4 /* PutPropertySlot.h in Headers */ = {isa = PBXBuildFile; fileRef = 147B84620E6DE6B1004775A4 /* PutPropertySlot.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 147F39BD107EC37600427A48 /* ArgList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCF605110E203EF800B9A64D /* ArgList.cpp */; }; + 147F39BE107EC37600427A48 /* Arguments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC257DE50E1F51C50016B6C9 /* Arguments.cpp */; }; + 147F39BF107EC37600427A48 /* ArrayConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7952060E15E8A800A898AB /* ArrayConstructor.cpp */; }; + 147F39C0107EC37600427A48 /* ArrayPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A84D0255597D01FF60F7 /* ArrayPrototype.cpp */; }; + 147F39C1107EC37600427A48 /* CommonIdentifiers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65EA73620BAE35D1001BB560 /* CommonIdentifiers.cpp */; }; + 147F39C2107EC37600427A48 /* Completion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 969A09220ED1E09C00F1F681 /* Completion.cpp */; }; + 147F39C3107EC37600427A48 /* DateConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD203450E17135E002C7E82 /* DateConstructor.cpp */; }; + 147F39C4107EC37600427A48 /* DateConversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D21202280AD4310C00ED79B6 /* DateConversion.cpp */; }; + 147F39C5107EC37600427A48 /* DateInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC1166000E1997B1008066DD /* DateInstance.cpp */; }; + 147F39C6107EC37600427A48 /* DatePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD203470E17135E002C7E82 /* DatePrototype.cpp */; }; + 147F39C7107EC37600427A48 /* Error.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC337BEA0E1B00CB0076918A /* Error.cpp */; }; + 147F39C8107EC37600427A48 /* ErrorConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9040E1839DB000F9297 /* ErrorConstructor.cpp */; }; + 147F39C9107EC37600427A48 /* ErrorInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E98A0E183E38000F9297 /* ErrorInstance.cpp */; }; + 147F39CA107EC37600427A48 /* ErrorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9060E1839DB000F9297 /* ErrorPrototype.cpp */; }; + 147F39CB107EC37600427A48 /* FunctionConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C00E16D4E900A06E92 /* FunctionConstructor.cpp */; }; + 147F39CC107EC37600427A48 /* FunctionPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A85C0255597D01FF60F7 /* FunctionPrototype.cpp */; }; + 147F39CE107EC37600427A48 /* Identifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 933A349D038AE80F008635CE /* Identifier.cpp */; }; + 147F39CF107EC37600427A48 /* InternalFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC9BB95B0E19680600DF8855 /* InternalFunction.cpp */; }; + 147F39D0107EC37600427A48 /* JSArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93ADFCE60CCBD7AC00D30B08 /* JSArray.cpp */; }; + 147F39D1107EC37600427A48 /* JSCell.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7F8FBA0E19D1EF008632C0 /* JSCell.cpp */; }; + 147F39D2107EC37600427A48 /* JSGlobalObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14DE0D680D02431400AACCA2 /* JSGlobalObject.cpp */; }; + 147F39D4107EC37600427A48 /* JSObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC22A3980E16E14800AF21C8 /* JSObject.cpp */; }; + 147F39D5107EC37600427A48 /* JSString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9B60E1842FA000F9297 /* JSString.cpp */; }; + 147F39D6107EC37600427A48 /* JSCJSValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A8870255597D01FF60F7 /* JSCJSValue.cpp */; }; + 147F39D7107EC37600427A48 /* JSVariableObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC22A39A0E16E14800AF21C8 /* JSVariableObject.cpp */; }; + 14816E1B154CC56C00B8054C /* BlockAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14816E19154CC56C00B8054C /* BlockAllocator.cpp */; }; + 14816E1C154CC56C00B8054C /* BlockAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 14816E1A154CC56C00B8054C /* BlockAllocator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1482B74E0A43032800517CFC /* JSStringRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1482B74C0A43032800517CFC /* JSStringRef.cpp */; }; + 1482B7E40A43076000517CFC /* JSObjectRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1482B7E20A43076000517CFC /* JSObjectRef.cpp */; }; + 14874AE315EBDE4A002E3587 /* JSNameScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14874ADF15EBDE4A002E3587 /* JSNameScope.cpp */; }; + 14874AE415EBDE4A002E3587 /* JSNameScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 14874AE015EBDE4A002E3587 /* JSNameScope.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14874AE515EBDE4A002E3587 /* JSScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14874AE115EBDE4A002E3587 /* JSScope.cpp */; }; + 14874AE615EBDE4A002E3587 /* JSScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 14874AE215EBDE4A002E3587 /* JSScope.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 148CD1D8108CF902008163C6 /* JSContextRefPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 148CD1D7108CF902008163C6 /* JSContextRefPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 148F21AA107EC53A0042EC2C /* BytecodeGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 969A07200ED1CE3300F1F681 /* BytecodeGenerator.cpp */; }; + 148F21B0107EC5410042EC2C /* Lexer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A8650255597D01FF60F7 /* Lexer.cpp */; }; + 148F21B7107EC5470042EC2C /* Nodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A86D0255597D01FF60F7 /* Nodes.cpp */; }; + 148F21BC107EC54D0042EC2C /* Parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F0B3A909BB4DC00068FCE3 /* Parser.cpp */; }; + 149559EE0DDCDDF700648087 /* DebuggerCallFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 149559ED0DDCDDF700648087 /* DebuggerCallFrame.cpp */; }; + 1497209114EB831500FEB1B7 /* PassWeak.h in Headers */ = {isa = PBXBuildFile; fileRef = 1497209014EB831500FEB1B7 /* PassWeak.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14A1563210966365006FA260 /* DateInstanceCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 14A1563010966365006FA260 /* DateInstanceCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14A23D750F4E1ABB0023CDAD /* JITStubs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14A23D6C0F4E19CE0023CDAD /* JITStubs.cpp */; }; + 14ABDF600A437FEF00ECCA01 /* JSCallbackObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14ABDF5E0A437FEF00ECCA01 /* JSCallbackObject.cpp */; }; + 14B723B212D7DA46003BD5ED /* MachineStackMarker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14B7233F12D7D0DA003BD5ED /* MachineStackMarker.cpp */; }; + 14B723B812D7DA6F003BD5ED /* MachineStackMarker.h in Headers */ = {isa = PBXBuildFile; fileRef = 14B7234012D7D0DA003BD5ED /* MachineStackMarker.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14B8EC720A5652090062BE54 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6560A4CF04B3B3E7008AE952 /* CoreFoundation.framework */; }; + 14BA78F113AAB88F005B7C2C /* SlotVisitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 14BA78F013AAB88F005B7C2C /* SlotVisitor.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14BA7A9713AADFF8005B7C2C /* Heap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14BA7A9513AADFF8005B7C2C /* Heap.cpp */; }; + 14BA7A9813AADFF8005B7C2C /* Heap.h in Headers */ = {isa = PBXBuildFile; fileRef = 14BA7A9613AADFF8005B7C2C /* Heap.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14BD59C50A3E8F9F00BAF59C /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 932F5BD90822A1C700736975 /* JavaScriptCore.framework */; }; + 14BD5A300A3E91F600BAF59C /* JSContextRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14BD5A290A3E91F600BAF59C /* JSContextRef.cpp */; }; + 14BD5A320A3E91F600BAF59C /* JSValueRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14BD5A2B0A3E91F600BAF59C /* JSValueRef.cpp */; }; + 14BE7D3317135CF400D1807A /* WeakInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 14BE7D3217135CF400D1807A /* WeakInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14BFCE6910CDB1FC00364CCE /* WeakGCMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 14BFCE6810CDB1FC00364CCE /* WeakGCMap.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14C5242B0F5355E900BA3D04 /* JITStubs.h in Headers */ = {isa = PBXBuildFile; fileRef = 14A6581A0F4E36F4000150FD /* JITStubs.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14CA958B16AB50DE00938A06 /* StaticPropertyAnalyzer.h in Headers */ = {isa = PBXBuildFile; fileRef = 14CA958A16AB50DE00938A06 /* StaticPropertyAnalyzer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14CA958D16AB50FA00938A06 /* ObjectAllocationProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 14CA958C16AB50FA00938A06 /* ObjectAllocationProfile.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14D2F3DA139F4BE200491031 /* MarkedSpace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14D2F3D8139F4BE200491031 /* MarkedSpace.cpp */; }; + 14D2F3DB139F4BE200491031 /* MarkedSpace.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D2F3D9139F4BE200491031 /* MarkedSpace.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14DF04DA16B3996D0016A513 /* StaticPropertyAnalysis.h in Headers */ = {isa = PBXBuildFile; fileRef = 14DF04D916B3996D0016A513 /* StaticPropertyAnalysis.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14E84F9E14EE1ACC00D6D5D4 /* WeakBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14E84F9914EE1ACC00D6D5D4 /* WeakBlock.cpp */; }; + 14E84F9F14EE1ACC00D6D5D4 /* WeakBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = 14E84F9A14EE1ACC00D6D5D4 /* WeakBlock.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14E84FA014EE1ACC00D6D5D4 /* WeakSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14E84F9B14EE1ACC00D6D5D4 /* WeakSet.cpp */; }; + 14E84FA114EE1ACC00D6D5D4 /* WeakSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 14E84F9C14EE1ACC00D6D5D4 /* WeakSet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14E84FA214EE1ACC00D6D5D4 /* WeakImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 14E84F9D14EE1ACC00D6D5D4 /* WeakImpl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14E9D17B107EC469004DDA21 /* JSGlobalObjectFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC756FC60E2031B200DE7D12 /* JSGlobalObjectFunctions.cpp */; }; + 14F7256514EE265E00B1652B /* WeakHandleOwner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14F7256314EE265E00B1652B /* WeakHandleOwner.cpp */; }; + 14F7256614EE265E00B1652B /* WeakHandleOwner.h in Headers */ = {isa = PBXBuildFile; fileRef = 14F7256414EE265E00B1652B /* WeakHandleOwner.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14F97447138C853E00DA1C67 /* HeapRootVisitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 14F97446138C853E00DA1C67 /* HeapRootVisitor.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A28D4A8177B71C80007FA3C /* JSStringRefPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A28D4A7177B71C80007FA3C /* JSStringRefPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1ACF7377171CA6FB00C9BB1E /* Weak.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACF7376171CA6FB00C9BB1E /* Weak.cpp */; }; + 2600B5A6152BAAA70091EE5F /* JSStringJoiner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2600B5A4152BAAA70091EE5F /* JSStringJoiner.cpp */; }; + 2600B5A7152BAAA70091EE5F /* JSStringJoiner.h in Headers */ = {isa = PBXBuildFile; fileRef = 2600B5A5152BAAA70091EE5F /* JSStringJoiner.h */; }; + 41359CF30FDD89AD00206180 /* DateConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = D21202290AD4310C00ED79B6 /* DateConversion.h */; }; + 4443AE3316E188D90076F110 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51F0EB6105C86C6B00E6DF1B /* Foundation.framework */; }; + 451539B912DC994500EF7AC4 /* Yarr.h in Headers */ = {isa = PBXBuildFile; fileRef = 451539B812DC994500EF7AC4 /* Yarr.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5D53726F0E1C54880021E549 /* Tracing.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D53726E0E1C54880021E549 /* Tracing.h */; }; + 5D5D8AD10E0D0EBE00F9C692 /* libedit.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D5D8AD00E0D0EBE00F9C692 /* libedit.dylib */; }; + 5DBB151B131D0B310056AD36 /* testapi.js in Copy Support Script */ = {isa = PBXBuildFile; fileRef = 14D857740A4696C80032146C /* testapi.js */; }; + 5DBB1525131D0BD70056AD36 /* minidom.js in Copy Support Script */ = {isa = PBXBuildFile; fileRef = 1412110D0A48788700480255 /* minidom.js */; }; + 5DE6E5B30E1728EC00180407 /* create_hash_table in Headers */ = {isa = PBXBuildFile; fileRef = F692A8540255597D01FF60F7 /* create_hash_table */; settings = {ATTRIBUTES = (); }; }; + 6507D29E0E871E5E00D7D896 /* JSTypeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 6507D2970E871E4A00D7D896 /* JSTypeInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 651122FD14046A4C002B101D /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 932F5BD90822A1C700736975 /* JavaScriptCore.framework */; }; + 651122FE14046A4C002B101D /* libedit.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D5D8AD00E0D0EBE00F9C692 /* libedit.dylib */; }; + 6511230714046B0A002B101D /* testRegExp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 651122E5140469BA002B101D /* testRegExp.cpp */; }; + 65303D641447B9E100D3F904 /* ParserTokens.h in Headers */ = {isa = PBXBuildFile; fileRef = 65303D631447B9E100D3F904 /* ParserTokens.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 655EB29B10CE2581001A990E /* NodesCodegen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 655EB29A10CE2581001A990E /* NodesCodegen.cpp */; }; + 65C02850171795E200351E35 /* ARMv7Disassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65C0284F171795E200351E35 /* ARMv7Disassembler.cpp */; }; + 65C0285C1717966800351E35 /* ARMv7DOpcode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65C0285A1717966800351E35 /* ARMv7DOpcode.cpp */; }; + 65C0285D1717966800351E35 /* ARMv7DOpcode.h in Headers */ = {isa = PBXBuildFile; fileRef = 65C0285B1717966800351E35 /* ARMv7DOpcode.h */; }; + 7E4EE7090EBB7963005934AA /* StructureChain.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E4EE7080EBB7963005934AA /* StructureChain.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7E4EE70F0EBB7A5B005934AA /* StructureChain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E4EE70E0EBB7A5B005934AA /* StructureChain.cpp */; }; + 7EFF00640EC05A9A00AA7C93 /* NodeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EFF00630EC05A9A00AA7C93 /* NodeInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 840480131021A1D9008E7F01 /* JSAPIValueWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = BC0894D60FAFBA2D00001865 /* JSAPIValueWrapper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 860161E30F3A83C100F84710 /* AbstractMacroAssembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 860161DF0F3A83C100F84710 /* AbstractMacroAssembler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 860161E40F3A83C100F84710 /* MacroAssemblerX86.h in Headers */ = {isa = PBXBuildFile; fileRef = 860161E00F3A83C100F84710 /* MacroAssemblerX86.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 860161E50F3A83C100F84710 /* MacroAssemblerX86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 860161E10F3A83C100F84710 /* MacroAssemblerX86_64.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 860161E60F3A83C100F84710 /* MacroAssemblerX86Common.h in Headers */ = {isa = PBXBuildFile; fileRef = 860161E20F3A83C100F84710 /* MacroAssemblerX86Common.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 860BD801148EA6F200112B2F /* Intrinsic.h in Headers */ = {isa = PBXBuildFile; fileRef = 86BF642A148DB2B5004DE36A /* Intrinsic.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8612E4CD152389EC00C836BE /* MatchResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 8612E4CB1522918400C836BE /* MatchResult.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86158AB3155C8B4000B45C9C /* PropertyName.h in Headers */ = {isa = PBXBuildFile; fileRef = 86158AB2155C8B3F00B45C9C /* PropertyName.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 862553D116136DA9009F17D0 /* JSProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 862553CE16136AA5009F17D0 /* JSProxy.cpp */; }; + 862553D216136E1A009F17D0 /* JSProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 862553CF16136AA5009F17D0 /* JSProxy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 863B23E00FC6118900703AA4 /* MacroAssemblerCodeRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 863B23DF0FC60E6200703AA4 /* MacroAssemblerCodeRef.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 863C6D9C1521111A00585E4E /* YarrCanonicalizeUCS2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 863C6D981521111200585E4E /* YarrCanonicalizeUCS2.cpp */; }; + 8642C510151C06A90046D4EF /* RegExpCachedResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86F75EFB151C062F007C9BA3 /* RegExpCachedResult.cpp */; }; + 8642C512151C083D0046D4EF /* RegExpMatchesArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86F75EFD151C062F007C9BA3 /* RegExpMatchesArray.cpp */; }; + 865A30F1135007E100CDB49E /* JSCJSValueInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 865A30F0135007E100CDB49E /* JSCJSValueInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 865F408810E7D56300947361 /* APIShims.h in Headers */ = {isa = PBXBuildFile; fileRef = 865F408710E7D56300947361 /* APIShims.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 866739D213BFDE710023D87C /* BigInteger.h in Headers */ = {isa = PBXBuildFile; fileRef = 866739D013BFDE710023D87C /* BigInteger.h */; }; + 866739D313BFDE710023D87C /* Uint16WithFraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 866739D113BFDE710023D87C /* Uint16WithFraction.h */; }; + 86704B4212DB8A8100A9FE7B /* YarrSyntaxChecker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86704B4012DB8A8100A9FE7B /* YarrSyntaxChecker.cpp */; }; + 86704B4312DB8A8100A9FE7B /* YarrSyntaxChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = 86704B4112DB8A8100A9FE7B /* YarrSyntaxChecker.h */; }; + 86704B8412DBA33700A9FE7B /* YarrInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86704B7D12DBA33700A9FE7B /* YarrInterpreter.cpp */; }; + 86704B8512DBA33700A9FE7B /* YarrInterpreter.h in Headers */ = {isa = PBXBuildFile; fileRef = 86704B7E12DBA33700A9FE7B /* YarrInterpreter.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86704B8612DBA33700A9FE7B /* YarrJIT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86704B7F12DBA33700A9FE7B /* YarrJIT.cpp */; }; + 86704B8712DBA33700A9FE7B /* YarrJIT.h in Headers */ = {isa = PBXBuildFile; fileRef = 86704B8012DBA33700A9FE7B /* YarrJIT.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86704B8812DBA33700A9FE7B /* YarrParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 86704B8112DBA33700A9FE7B /* YarrParser.h */; settings = {ATTRIBUTES = (); }; }; + 86704B8912DBA33700A9FE7B /* YarrPattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86704B8212DBA33700A9FE7B /* YarrPattern.cpp */; }; + 86704B8A12DBA33700A9FE7B /* YarrPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = 86704B8312DBA33700A9FE7B /* YarrPattern.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86880F1F14328BB900B08D42 /* DFGSpeculativeJIT32_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86880F1B14328BB900B08D42 /* DFGSpeculativeJIT32_64.cpp */; }; + 86880F4D14353B2100B08D42 /* DFGSpeculativeJIT64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86880F4C14353B2100B08D42 /* DFGSpeculativeJIT64.cpp */; }; + 868916B0155F286300CB2B9A /* PrivateName.h in Headers */ = {isa = PBXBuildFile; fileRef = 868916A9155F285400CB2B9A /* PrivateName.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 869D04AF1193B54D00803475 /* CachedTranscendentalFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 869D04AE1193B54D00803475 /* CachedTranscendentalFunction.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 869EBCB70E8C6D4A008722CC /* ResultType.h in Headers */ = {isa = PBXBuildFile; fileRef = 869EBCB60E8C6D4A008722CC /* ResultType.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86A90ED00EE7D51F00AB350D /* JITArithmetic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86A90ECF0EE7D51F00AB350D /* JITArithmetic.cpp */; }; + 86ADD1450FDDEA980006EEC2 /* ARMv7Assembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 86ADD1430FDDEA980006EEC2 /* ARMv7Assembler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86ADD1460FDDEA980006EEC2 /* MacroAssemblerARMv7.h in Headers */ = {isa = PBXBuildFile; fileRef = 86ADD1440FDDEA980006EEC2 /* MacroAssemblerARMv7.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86AE64A9135E5E1C00963012 /* MacroAssemblerSH4.h in Headers */ = {isa = PBXBuildFile; fileRef = 86AE64A6135E5E1C00963012 /* MacroAssemblerSH4.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86AE64AA135E5E1C00963012 /* SH4Assembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 86AE64A7135E5E1C00963012 /* SH4Assembler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86AE6C4D136A11E400963012 /* DFGFPRInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 86AE6C4B136A11E400963012 /* DFGFPRInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86AE6C4E136A11E400963012 /* DFGGPRInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 86AE6C4C136A11E400963012 /* DFGGPRInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86B5826714D2796C00A9C306 /* CodeProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86B5822E14D2373B00A9C306 /* CodeProfile.cpp */; }; + 86B5826914D2797000A9C306 /* CodeProfiling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8603CEF214C7546400AE59E3 /* CodeProfiling.cpp */; }; + 86BB09C0138E381B0056702F /* DFGRepatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BB09BE138E381B0056702F /* DFGRepatch.cpp */; }; + 86BB09C1138E381B0056702F /* DFGRepatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 86BB09BF138E381B0056702F /* DFGRepatch.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86C36EEA0EE1289D00B3DF59 /* MacroAssembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 86C36EE90EE1289D00B3DF59 /* MacroAssembler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86C568E011A213EE0007F7F0 /* MacroAssemblerARM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86C568DD11A213EE0007F7F0 /* MacroAssemblerARM.cpp */; }; + 86C568E111A213EE0007F7F0 /* MacroAssemblerMIPS.h in Headers */ = {isa = PBXBuildFile; fileRef = 86C568DE11A213EE0007F7F0 /* MacroAssemblerMIPS.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86C568E211A213EE0007F7F0 /* MIPSAssembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 86C568DF11A213EE0007F7F0 /* MIPSAssembler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86CA032E1038E8440028A609 /* Executable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86CA032D1038E8440028A609 /* Executable.cpp */; }; + 86CAFEE31035DDE60028A609 /* Executable.h in Headers */ = {isa = PBXBuildFile; fileRef = 86CAFEE21035DDE60028A609 /* Executable.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86CC85A10EE79A4700288682 /* JITInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 86CC85A00EE79A4700288682 /* JITInlines.h */; }; + 86CC85A30EE79B7400288682 /* JITCall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86CC85A20EE79B7400288682 /* JITCall.cpp */; }; + 86CC85C40EE7A89400288682 /* JITPropertyAccess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86CC85C30EE7A89400288682 /* JITPropertyAccess.cpp */; }; + 86CCEFDE0F413F8900FD7F9E /* JITCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 86CCEFDD0F413F8900FD7F9E /* JITCode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86D2221A167EF9440024C804 /* testapi.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86D22219167EF9440024C804 /* testapi.mm */; }; + 86D3B2C310156BDE002865E7 /* ARMAssembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86D3B2BF10156BDE002865E7 /* ARMAssembler.cpp */; }; + 86D3B2C410156BDE002865E7 /* ARMAssembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 86D3B2C010156BDE002865E7 /* ARMAssembler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86D3B2C510156BDE002865E7 /* AssemblerBufferWithConstantPool.h in Headers */ = {isa = PBXBuildFile; fileRef = 86D3B2C110156BDE002865E7 /* AssemblerBufferWithConstantPool.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86D3B2C610156BDE002865E7 /* MacroAssemblerARM.h in Headers */ = {isa = PBXBuildFile; fileRef = 86D3B2C210156BDE002865E7 /* MacroAssemblerARM.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86D3B3C310159D7F002865E7 /* LinkBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 86D3B3C110159D7F002865E7 /* LinkBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86D3B3C410159D7F002865E7 /* RepatchBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 86D3B3C210159D7F002865E7 /* RepatchBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86DB64640F95C6FC00D7D921 /* ExecutableAllocatorFixedVMPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86DB64630F95C6FC00D7D921 /* ExecutableAllocatorFixedVMPool.cpp */; }; + 86E116B10FE75AC800B512BC /* CodeLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E116B00FE75AC800B512BC /* CodeLocation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86E3C612167BABD7006D760A /* JSValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E3C606167BAB87006D760A /* JSValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 86E3C613167BABD7006D760A /* JSContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E3C607167BAB87006D760A /* JSContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 86E3C614167BABD7006D760A /* JSExport.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E3C60A167BAB87006D760A /* JSExport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 86E3C615167BABD7006D760A /* JSVirtualMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E3C60F167BAB87006D760A /* JSVirtualMachine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 86E3C616167BABEE006D760A /* JSContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86E3C608167BAB87006D760A /* JSContext.mm */; }; + 86E3C617167BABEE006D760A /* JSContextInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E3C609167BAB87006D760A /* JSContextInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86E3C618167BABEE006D760A /* JSWrapperMap.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86E3C60B167BAB87006D760A /* JSWrapperMap.mm */; }; + 86E3C619167BABEE006D760A /* JSWrapperMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E3C60C167BAB87006D760A /* JSWrapperMap.h */; }; + 86E3C61A167BABEE006D760A /* JSValue.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86E3C60D167BAB87006D760A /* JSValue.mm */; }; + 86E3C61B167BABEE006D760A /* JSValueInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E3C60E167BAB87006D760A /* JSValueInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86E3C61C167BABEE006D760A /* JSVirtualMachine.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86E3C610167BAB87006D760A /* JSVirtualMachine.mm */; }; + 86E3C61D167BABEE006D760A /* JSVirtualMachineInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E3C611167BAB87006D760A /* JSVirtualMachineInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86E85539111B9968001AF51E /* JSStringBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E85538111B9968001AF51E /* JSStringBuilder.h */; }; + 86EBF2FF1560F06A008E9222 /* NameConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EBF2F91560F036008E9222 /* NameConstructor.cpp */; }; + 86EBF3001560F06A008E9222 /* NameConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EBF2FA1560F036008E9222 /* NameConstructor.h */; }; + 86EBF3011560F06A008E9222 /* NameInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EBF2FB1560F036008E9222 /* NameInstance.cpp */; }; + 86EBF3021560F06A008E9222 /* NameInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EBF2FC1560F036008E9222 /* NameInstance.h */; }; + 86EBF3031560F06A008E9222 /* NamePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EBF2FD1560F036008E9222 /* NamePrototype.cpp */; }; + 86EBF3041560F06A008E9222 /* NamePrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EBF2FE1560F036008E9222 /* NamePrototype.h */; }; + 86EC9DC41328DF82002B2AD7 /* DFGByteCodeParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EC9DB41328DF82002B2AD7 /* DFGByteCodeParser.cpp */; }; + 86EC9DC51328DF82002B2AD7 /* DFGByteCodeParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DB51328DF82002B2AD7 /* DFGByteCodeParser.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86EC9DC61328DF82002B2AD7 /* DFGGenerationInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DB61328DF82002B2AD7 /* DFGGenerationInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86EC9DC71328DF82002B2AD7 /* DFGGraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EC9DB71328DF82002B2AD7 /* DFGGraph.cpp */; }; + 86EC9DC81328DF82002B2AD7 /* DFGGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DB81328DF82002B2AD7 /* DFGGraph.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86EC9DCB1328DF82002B2AD7 /* DFGJITCompiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EC9DBB1328DF82002B2AD7 /* DFGJITCompiler.cpp */; }; + 86EC9DCC1328DF82002B2AD7 /* DFGJITCompiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DBC1328DF82002B2AD7 /* DFGJITCompiler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86EC9DCF1328DF82002B2AD7 /* DFGOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EC9DBF1328DF82002B2AD7 /* DFGOperations.cpp */; }; + 86EC9DD01328DF82002B2AD7 /* DFGOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DC01328DF82002B2AD7 /* DFGOperations.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86EC9DD11328DF82002B2AD7 /* DFGRegisterBank.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DC11328DF82002B2AD7 /* DFGRegisterBank.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86EC9DD21328DF82002B2AD7 /* DFGSpeculativeJIT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EC9DC21328DF82002B2AD7 /* DFGSpeculativeJIT.cpp */; }; + 86EC9DD31328DF82002B2AD7 /* DFGSpeculativeJIT.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DC31328DF82002B2AD7 /* DFGSpeculativeJIT.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86ECA3EA132DEF1C002B2AD7 /* DFGNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 86ECA3E9132DEF1C002B2AD7 /* DFGNode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86ECA3FA132DF25A002B2AD7 /* DFGScoreBoard.h in Headers */ = {isa = PBXBuildFile; fileRef = 86ECA3F9132DF25A002B2AD7 /* DFGScoreBoard.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86F3EEBD168CDE930077B92A /* ObjCCallbackFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 86F3EEB9168CCF750077B92A /* ObjCCallbackFunction.h */; }; + 86F3EEBE168CDE930077B92A /* ObjCCallbackFunction.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86F3EEBA168CCF750077B92A /* ObjCCallbackFunction.mm */; }; + 86F3EEBF168CDE930077B92A /* ObjcRuntimeExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 86F3EEB616855A5B0077B92A /* ObjcRuntimeExtras.h */; }; + 86FA9E91142BBB2E001773B7 /* JSBoundFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86FA9E8F142BBB2D001773B7 /* JSBoundFunction.cpp */; }; + 86FA9E92142BBB2E001773B7 /* JSBoundFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 86FA9E90142BBB2E001773B7 /* JSBoundFunction.h */; }; + 90213E3D123A40C200D422F3 /* MemoryStatistics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90213E3B123A40C200D422F3 /* MemoryStatistics.cpp */; }; + 90213E3E123A40C200D422F3 /* MemoryStatistics.h in Headers */ = {isa = PBXBuildFile; fileRef = 90213E3C123A40C200D422F3 /* MemoryStatistics.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93052C340FB792190048FDC3 /* ParserArena.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93052C320FB792190048FDC3 /* ParserArena.cpp */; }; + 93052C350FB792190048FDC3 /* ParserArena.h in Headers */ = {isa = PBXBuildFile; fileRef = 93052C330FB792190048FDC3 /* ParserArena.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 932F5BD30822A1C700736975 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6560A4CF04B3B3E7008AE952 /* CoreFoundation.framework */; }; + 932F5BD60822A1C700736975 /* libobjc.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 51F0EC0705C86C9A00E6DF1B /* libobjc.dylib */; }; + 932F5BD70822A1C700736975 /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 9322A00306C341D3009067BB /* libicucore.dylib */; }; + 932F5BDD0822A1C700736975 /* jsc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45E12D8806A49B0F00E9DF84 /* jsc.cpp */; }; + 932F5BEA0822A1C700736975 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 932F5BD90822A1C700736975 /* JavaScriptCore.framework */; }; + 933040040E6A749400786E6A /* SmallStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = 93303FEA0E6A72C000786E6A /* SmallStrings.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9330402C0E6A764000786E6A /* SmallStrings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93303FE80E6A72B500786E6A /* SmallStrings.cpp */; }; + 9335F24D12E6765B002B5553 /* StringRecursionChecker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93345A8712D838C400302BE3 /* StringRecursionChecker.cpp */; }; + 9534AAFB0E5B7A9600B8A45B /* JSProfilerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 952C63AC0E4777D600C13936 /* JSProfilerPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 95742F650DD11F5A000917FB /* Profile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 95742F630DD11F5A000917FB /* Profile.cpp */; }; + 95AB83420DA4322500BC83F3 /* LegacyProfiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 95AB832E0DA42CAD00BC83F3 /* LegacyProfiler.cpp */; }; + 95AB83560DA43C3000BC83F3 /* ProfileNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 95AB83540DA43B4400BC83F3 /* ProfileNode.cpp */; }; + 95CD45760E1C4FDD0085358E /* ProfileGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 95CD45740E1C4FDD0085358E /* ProfileGenerator.cpp */; }; + 95CD45770E1C4FDD0085358E /* ProfileGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 95CD45750E1C4FDD0085358E /* ProfileGenerator.h */; settings = {ATTRIBUTES = (); }; }; + 95E3BC050E1AE68200B2D1C1 /* CallIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 95E3BC040E1AE68200B2D1C1 /* CallIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 95F6E6950E5B5F970091E860 /* JSProfilerPrivate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 95988BA90E477BEC00D28D4D /* JSProfilerPrivate.cpp */; }; + 960097A60EBABB58007A7297 /* LabelScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 960097A50EBABB58007A7297 /* LabelScope.h */; }; + 960626960FB8EC02009798AB /* JITStubCall.h in Headers */ = {isa = PBXBuildFile; fileRef = 960626950FB8EC02009798AB /* JITStubCall.h */; }; + 9688CB150ED12B4E001D649F /* AssemblerBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9688CB130ED12B4E001D649F /* AssemblerBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9688CB160ED12B4E001D649F /* X86Assembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9688CB140ED12B4E001D649F /* X86Assembler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 969A07230ED1CE3300F1F681 /* BytecodeGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 969A07210ED1CE3300F1F681 /* BytecodeGenerator.h */; }; + 969A072A0ED1CE6900F1F681 /* Label.h in Headers */ = {isa = PBXBuildFile; fileRef = 969A07270ED1CE6900F1F681 /* Label.h */; }; + 969A072B0ED1CE6900F1F681 /* RegisterID.h in Headers */ = {isa = PBXBuildFile; fileRef = 969A07280ED1CE6900F1F681 /* RegisterID.h */; }; + 969A07960ED1D3AE00F1F681 /* CodeBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 969A07900ED1D3AE00F1F681 /* CodeBlock.cpp */; settings = {COMPILER_FLAGS = "-fno-strict-aliasing"; }; }; + 969A07970ED1D3AE00F1F681 /* CodeBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = 969A07910ED1D3AE00F1F681 /* CodeBlock.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 969A07980ED1D3AE00F1F681 /* EvalCodeCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 969A07920ED1D3AE00F1F681 /* EvalCodeCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 969A07990ED1D3AE00F1F681 /* Instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = 969A07930ED1D3AE00F1F681 /* Instruction.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 969A079A0ED1D3AE00F1F681 /* Opcode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 969A07940ED1D3AE00F1F681 /* Opcode.cpp */; }; + 969A079B0ED1D3AE00F1F681 /* Opcode.h in Headers */ = {isa = PBXBuildFile; fileRef = 969A07950ED1D3AE00F1F681 /* Opcode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 978801401471AD920041B016 /* JSDateMath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9788FC221471AD0C0068CE2D /* JSDateMath.cpp */; }; + 978801411471AD920041B016 /* JSDateMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 9788FC231471AD0C0068CE2D /* JSDateMath.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A1712B3B11C7B212007A5315 /* RegExpCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1712B3A11C7B212007A5315 /* RegExpCache.cpp */; }; + A1712B3F11C7B228007A5315 /* RegExpCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A1712B3E11C7B228007A5315 /* RegExpCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A1712B4111C7B235007A5315 /* RegExpKey.h in Headers */ = {isa = PBXBuildFile; fileRef = A1712B4011C7B235007A5315 /* RegExpKey.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A71236E51195F33C00BD2174 /* JITOpcodes32_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A71236E41195F33C00BD2174 /* JITOpcodes32_64.cpp */; }; + A72028B61797601E0098028C /* JSCTestRunnerUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A72028B41797601E0098028C /* JSCTestRunnerUtils.cpp */; }; + A72028B81797601E0098028C /* JSCTestRunnerUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = A72028B51797601E0098028C /* JSCTestRunnerUtils.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A72028BA1797603D0098028C /* JSFunctionInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = A72028B91797603D0098028C /* JSFunctionInlines.h */; }; + A72700900DAC6BBC00E548D7 /* JSNotAnObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A72700780DAC605600E548D7 /* JSNotAnObject.cpp */; }; + A72701B90DADE94900E548D7 /* ExceptionHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = A72701B30DADE94900E548D7 /* ExceptionHelpers.h */; }; + A727FF6B0DA3092200E548D7 /* JSPropertyNameIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A727FF660DA3053B00E548D7 /* JSPropertyNameIterator.cpp */; }; + A7280A2811557E3000D56957 /* JSObjectRefPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = A79EDB0811531CD60019E912 /* JSObjectRefPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A72FFD64139985A800E5365A /* KeywordLookup.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C225CD1399849C00FF1662 /* KeywordLookup.h */; }; + A730B6121250068F009D25B1 /* StrictEvalActivation.h in Headers */ = {isa = PBXBuildFile; fileRef = A730B6101250068F009D25B1 /* StrictEvalActivation.h */; }; + A730B6131250068F009D25B1 /* StrictEvalActivation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A730B6111250068F009D25B1 /* StrictEvalActivation.cpp */; }; + A731B25A130093880040A7FA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51F0EB6105C86C6B00E6DF1B /* Foundation.framework */; }; + A7386554118697B400540279 /* SpecializedThunkJIT.h in Headers */ = {isa = PBXBuildFile; fileRef = A7386551118697B400540279 /* SpecializedThunkJIT.h */; }; + A7386555118697B400540279 /* ThunkGenerators.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7386552118697B400540279 /* ThunkGenerators.cpp */; }; + A7386556118697B400540279 /* ThunkGenerators.h in Headers */ = {isa = PBXBuildFile; fileRef = A7386553118697B400540279 /* ThunkGenerators.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7482B9311671147003B0712 /* JSWeakObjectMapRefPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = A7482B791166CDEA003B0712 /* JSWeakObjectMapRefPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7482B9411671147003B0712 /* JSWeakObjectMapRefPrivate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7482B7A1166CDEA003B0712 /* JSWeakObjectMapRefPrivate.cpp */; }; + A7482E93116A7CAD003B0712 /* JSWeakObjectMapRefInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = A7482E37116A697B003B0712 /* JSWeakObjectMapRefInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A74DE1D0120B875600D40D5B /* ARMv7Assembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A74DE1CB120B86D600D40D5B /* ARMv7Assembler.cpp */; }; + A75706DE118A2BCF0057F88F /* JITArithmetic32_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A75706DD118A2BCF0057F88F /* JITArithmetic32_64.cpp */; }; + A766B44F0EE8DCD1009518CA /* ExecutableAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B48DB50EE74CFC00DCBDB6 /* ExecutableAllocator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A76C51761182748D00715B05 /* JSInterfaceJIT.h in Headers */ = {isa = PBXBuildFile; fileRef = A76C51741182748D00715B05 /* JSInterfaceJIT.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A76F279415F13C9600517D67 /* UnlinkedCodeBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A79E781E15EECBA80047C855 /* UnlinkedCodeBlock.cpp */; }; + A76F54A313B28AAB00EF2BCE /* JITWriteBarrier.h in Headers */ = {isa = PBXBuildFile; fileRef = A76F54A213B28AAB00EF2BCE /* JITWriteBarrier.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A77F1821164088B200640A47 /* CodeCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A77F181F164088B200640A47 /* CodeCache.cpp */; }; + A77F1822164088B200640A47 /* CodeCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A77F1820164088B200640A47 /* CodeCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A77F1825164192C700640A47 /* ParserModes.h in Headers */ = {isa = PBXBuildFile; fileRef = A77F18241641925400640A47 /* ParserModes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A784A26111D16622005776AC /* ASTBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A7EE7411B98B8D0065A14F /* ASTBuilder.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A784A26411D16622005776AC /* SyntaxChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A7EE7711B98B8D0065A14F /* SyntaxChecker.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7AFC17915F7EFE30048F57B /* ResolveOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = A7AFC17715F7EFE30048F57B /* ResolveOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7B48F490EE8936F00DCBDB6 /* ExecutableAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7B48DB60EE74CFC00DCBDB6 /* ExecutableAllocator.cpp */; }; + A7B4ACAF1484C9CE00B38A36 /* JSExportMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B4ACAE1484C9CE00B38A36 /* JSExportMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7B601821639FD2A00372BA3 /* UnlinkedCodeBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = A79E781F15EECBA80047C855 /* UnlinkedCodeBlock.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7C0C4AC168103020017011D /* JSScriptRefPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C0C4AB167C08CD0017011D /* JSScriptRefPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7C0C4AD1681067E0017011D /* JSScriptRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7C0C4AA167C08CD0017011D /* JSScriptRef.cpp */; }; + A7C1E8E4112E72EF00A37F98 /* JITPropertyAccess32_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7C1E8C8112E701C00A37F98 /* JITPropertyAccess32_64.cpp */; }; + A7DCB97312E5193F00911940 /* WriteBarrier.h in Headers */ = {isa = PBXBuildFile; fileRef = A7DCB77912E3D90500911940 /* WriteBarrier.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7E2EA6B0FB460CF00601F06 /* LiteralParser.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E2EA690FB460CF00601F06 /* LiteralParser.h */; }; + A7E2EA6C0FB460CF00601F06 /* LiteralParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7E2EA6A0FB460CF00601F06 /* LiteralParser.cpp */; }; + A7F9935F0FD7325100A0B2D0 /* JSONObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A7F9935D0FD7325100A0B2D0 /* JSONObject.h */; }; + A7F993600FD7325100A0B2D0 /* JSONObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7F9935E0FD7325100A0B2D0 /* JSONObject.cpp */; }; + A7FB60A4103F7DC20017A286 /* PropertyDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7FB60A3103F7DC20017A286 /* PropertyDescriptor.cpp */; }; + A7FB61001040C38B0017A286 /* PropertyDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7FB604B103F5EAB0017A286 /* PropertyDescriptor.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8A4748E151A8306004123FF /* libWTF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A8A4748D151A8306004123FF /* libWTF.a */; }; + ADE39FFF16DD144B0003CD4A /* PropertyTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD1CF06816DCAB2D00B97123 /* PropertyTable.cpp */; }; + BC02E90D0E1839DB000F9297 /* ErrorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9050E1839DB000F9297 /* ErrorConstructor.h */; }; + BC02E90F0E1839DB000F9297 /* ErrorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9070E1839DB000F9297 /* ErrorPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC02E9110E1839DB000F9297 /* NativeErrorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9090E1839DB000F9297 /* NativeErrorConstructor.h */; }; + BC02E9130E1839DB000F9297 /* NativeErrorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E90B0E1839DB000F9297 /* NativeErrorPrototype.h */; }; + BC02E98D0E183E38000F9297 /* ErrorInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E98B0E183E38000F9297 /* ErrorInstance.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC1166020E1997B4008066DD /* DateInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1166010E1997B1008066DD /* DateInstance.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC11667B0E199C05008066DD /* InternalFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = BC11667A0E199C05008066DD /* InternalFunction.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC1167DA0E19BCC9008066DD /* JSCell.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1167D80E19BCC9008066DD /* JSCell.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C3E50E16F5CD00B34460 /* APICast.h in Headers */ = {isa = PBXBuildFile; fileRef = 1482B78A0A4305AB00517CFC /* APICast.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C3E60E16F5CD00B34460 /* ArrayConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC7952070E15E8A800A898AB /* ArrayConstructor.h */; }; + BC18C3E70E16F5CD00B34460 /* ArrayPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A84E0255597D01FF60F7 /* ArrayPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C3EC0E16F5CD00B34460 /* BooleanObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 704FD35305697E6D003DBED9 /* BooleanObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C3ED0E16F5CD00B34460 /* CallData.h in Headers */ = {isa = PBXBuildFile; fileRef = 145C507F0D9DF63B0088F6B9 /* CallData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C3F30E16F5CD00B34460 /* CommonIdentifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = 65EA73630BAE35D1001BB560 /* CommonIdentifiers.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C3F40E16F5CD00B34460 /* Completion.h in Headers */ = {isa = PBXBuildFile; fileRef = F5BB2BC5030F772101FCFE1D /* Completion.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C3F50E16F5CD00B34460 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = F68EBB8C0255D4C601FF60F7 /* config.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C3F60E16F5CD00B34460 /* ConstructData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8F3CCF0DAF17BA00577A80 /* ConstructData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C3FA0E16F5CD00B34460 /* Debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8590255597D01FF60F7 /* Debugger.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C3FB0E16F5CD00B34460 /* DebuggerCallFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 1480DB9B0DDC227F003CFDF2 /* DebuggerCallFrame.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4000E16F5CD00B34460 /* ExceptionHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = A72701B30DADE94900E548D7 /* ExceptionHelpers.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4040E16F5CD00B34460 /* FunctionConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680C10E16D4E900A06E92 /* FunctionConstructor.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4050E16F5CD00B34460 /* FunctionPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A85D0255597D01FF60F7 /* FunctionPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C40F0E16F5CD00B34460 /* Identifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 933A349A038AE7C6008635CE /* Identifier.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4100E16F5CD00B34460 /* InitializeThreading.h in Headers */ = {isa = PBXBuildFile; fileRef = E178633F0D9BEC0000D74E75 /* InitializeThreading.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4130E16F5CD00B34460 /* JavaScript.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CAA8B4A0D32C39A0041BCFF /* JavaScript.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC18C4140E16F5CD00B34460 /* JavaScriptCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CAA8B4B0D32C39A0041BCFF /* JavaScriptCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC18C4150E16F5CD00B34460 /* JavaScriptCorePrefix.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C290E60284F98E018635CA /* JavaScriptCorePrefix.h */; }; + BC18C4160E16F5CD00B34460 /* JSActivation.h in Headers */ = {isa = PBXBuildFile; fileRef = 14DA818E0D99FD2000B0A4FB /* JSActivation.h */; settings = {ATTRIBUTES = (); }; }; + BC18C4170E16F5CD00B34460 /* JSArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 938772E5038BFE19008635CE /* JSArray.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4180E16F5CD00B34460 /* JSBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 142711380A460BBB0080EEEA /* JSBase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC18C4190E16F5CD00B34460 /* JSCallbackConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 1440F8AC0A508D200005F061 /* JSCallbackConstructor.h */; }; + BC18C41A0E16F5CD00B34460 /* JSCallbackFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 1440F88F0A508B100005F061 /* JSCallbackFunction.h */; }; + BC18C41B0E16F5CD00B34460 /* JSCallbackObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 14ABDF5D0A437FEF00ECCA01 /* JSCallbackObject.h */; }; + BC18C41C0E16F5CD00B34460 /* JSCallbackObjectFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E894310CD0602400367179 /* JSCallbackObjectFunctions.h */; }; + BC18C41D0E16F5CD00B34460 /* JSClassRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 1440FCE10A51E46B0005F061 /* JSClassRef.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C41E0E16F5CD00B34460 /* JSContextRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 14BD5A2A0A3E91F600BAF59C /* JSContextRef.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC18C41F0E16F5CD00B34460 /* JSFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A85F0255597D01FF60F7 /* JSFunction.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4200E16F5CD00B34460 /* VM.h in Headers */ = {isa = PBXBuildFile; fileRef = E18E3A560DF9278C00D90B34 /* VM.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4210E16F5CD00B34460 /* JSGlobalObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E894330CD0603F00367179 /* JSGlobalObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4230E16F5CD00B34460 /* JSLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 65EA4C9A092AF9E20093D800 /* JSLock.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4240E16F5CD00B34460 /* JSObject.h in Headers */ = {isa = PBXBuildFile; fileRef = BC22A3990E16E14800AF21C8 /* JSObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4250E16F5CD00B34460 /* JSObjectRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 1482B7E10A43076000517CFC /* JSObjectRef.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC18C4260E16F5CD00B34460 /* JSRetainPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 95C18D3E0C90E7EF00E72F73 /* JSRetainPtr.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4270E16F5CD00B34460 /* JSString.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8620255597D01FF60F7 /* JSString.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4280E16F5CD00B34460 /* JSStringRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 1482B74B0A43032800517CFC /* JSStringRef.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC18C4290E16F5CD00B34460 /* JSStringRefCF.h in Headers */ = {isa = PBXBuildFile; fileRef = 146AAB2A0B66A84900E55F16 /* JSStringRefCF.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC18C42A0E16F5CD00B34460 /* JSType.h in Headers */ = {isa = PBXBuildFile; fileRef = 14ABB454099C2A0F00E2A24F /* JSType.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C42B0E16F5CD00B34460 /* JSCJSValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 14ABB36E099C076400E2A24F /* JSCJSValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C42C0E16F5CD00B34460 /* JSValueRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 1482B6EA0A4300B300517CFC /* JSValueRef.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC18C42D0E16F5CD00B34460 /* JSVariableObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 14F252560D08DD8D004ECFFF /* JSVariableObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C42E0E16F5CD00B34460 /* JSWrapperObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 65C7A1720A8EAACB00FA37EA /* JSWrapperObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4310E16F5CD00B34460 /* Lexer.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8660255597D01FF60F7 /* Lexer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4370E16F5CD00B34460 /* Lookup.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8690255597D01FF60F7 /* Lookup.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C43C0E16F5CD00B34460 /* MathObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A86B0255597D01FF60F7 /* MathObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C43F0E16F5CD00B34460 /* Nodes.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A86E0255597D01FF60F7 /* Nodes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4410E16F5CD00B34460 /* NumberConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680C30E16D4E900A06E92 /* NumberConstructor.h */; }; + BC18C4420E16F5CD00B34460 /* NumberConstructor.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680E60E16D52300A06E92 /* NumberConstructor.lut.h */; }; + BC18C4430E16F5CD00B34460 /* NumberObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8710255597D01FF60F7 /* NumberObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4440E16F5CD00B34460 /* NumberPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680C50E16D4E900A06E92 /* NumberPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4450E16F5CD00B34460 /* ObjectConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680C70E16D4E900A06E92 /* ObjectConstructor.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4460E16F5CD00B34460 /* ObjectPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680C90E16D4E900A06E92 /* ObjectPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4480E16F5CD00B34460 /* Operations.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8780255597D01FF60F7 /* Operations.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C44B0E16F5CD00B34460 /* Parser.h in Headers */ = {isa = PBXBuildFile; fileRef = 93F0B3AA09BB4DC00068FCE3 /* Parser.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4500E16F5CD00B34460 /* Profile.h in Headers */ = {isa = PBXBuildFile; fileRef = 95742F640DD11F5A000917FB /* Profile.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4510E16F5CD00B34460 /* ProfileNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 95AB83550DA43B4400BC83F3 /* ProfileNode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4520E16F5CD00B34460 /* LegacyProfiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 95AB832F0DA42CAD00BC83F3 /* LegacyProfiler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4540E16F5CD00B34460 /* PropertyNameArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 65400C100A69BAF200509887 /* PropertyNameArray.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4550E16F5CD00B34460 /* PropertySlot.h in Headers */ = {isa = PBXBuildFile; fileRef = 65621E6C089E859700760F35 /* PropertySlot.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4560E16F5CD00B34460 /* Protect.h in Headers */ = {isa = PBXBuildFile; fileRef = 65C02FBB0637462A003E7EE6 /* Protect.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C45A0E16F5CD00B34460 /* RegExp.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A87E0255597D01FF60F7 /* RegExp.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C45B0E16F5CD00B34460 /* RegExpObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A87C0255597D01FF60F7 /* RegExpObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C45D0E16F5CD00B34460 /* Register.h in Headers */ = {isa = PBXBuildFile; fileRef = 149B24FF0D8AF6D1009CB8C7 /* Register.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C45E0E16F5CD00B34460 /* JSStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D792640DAA03FB001A9F05 /* JSStack.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4630E16F5CD00B34460 /* SourceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 65E866ED0DD59AFA00A2B2A1 /* SourceProvider.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4640E16F5CD00B34460 /* SourceCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 65E866EE0DD59AFA00A2B2A1 /* SourceCode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C4660E16F5CD00B34460 /* StringConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C3C10E16EE3300B34460 /* StringConstructor.h */; }; + BC18C4680E16F5CD00B34460 /* StringObject.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C3C30E16EE3300B34460 /* StringObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C46A0E16F5CD00B34460 /* StringPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C3C60E16EE3300B34460 /* StringPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C46B0E16F5CD00B34460 /* SymbolTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 14A396A60CD2933100B5B4FF /* SymbolTable.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC18C47A0E16F5CD00B34460 /* WebKitAvailability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DE3D0F40DD8DDFB00468714 /* WebKitAvailability.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC18C5240E16FC8A00B34460 /* ArrayPrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C5230E16FC8A00B34460 /* ArrayPrototype.lut.h */; }; + BC18C5260E16FCA700B34460 /* StringPrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C5250E16FCA700B34460 /* StringPrototype.lut.h */; }; + BC18C52A0E16FCC200B34460 /* MathObject.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C5290E16FCC200B34460 /* MathObject.lut.h */; }; + BC18C52C0E16FCD200B34460 /* RegExpObject.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C52B0E16FCD200B34460 /* RegExpObject.lut.h */; }; + BC18C52E0E16FCE100B34460 /* Lexer.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C52D0E16FCE100B34460 /* Lexer.lut.h */; }; + BC257DE80E1F51C50016B6C9 /* Arguments.h in Headers */ = {isa = PBXBuildFile; fileRef = BC257DE60E1F51C50016B6C9 /* Arguments.h */; }; + BC3046070E1F497F003232CF /* Error.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3046060E1F497F003232CF /* Error.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC3135640F302FA3003DFD3A /* DebuggerActivation.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3135620F302FA3003DFD3A /* DebuggerActivation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC3135650F302FA3003DFD3A /* DebuggerActivation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3135630F302FA3003DFD3A /* DebuggerActivation.cpp */; }; + BC6AAAE50E1F426500AD87D8 /* ClassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6AAAE40E1F426500AD87D8 /* ClassInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC756FC90E2031B200DE7D12 /* JSGlobalObjectFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = BC756FC70E2031B200DE7D12 /* JSGlobalObjectFunctions.h */; }; + BC87CDB910712AD4000614CF /* JSONObject.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = BC87CDB810712ACA000614CF /* JSONObject.lut.h */; }; + BC9041480EB9250900FE26FA /* StructureTransitionTable.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9041470EB9250900FE26FA /* StructureTransitionTable.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC95437D0EBA70FD0072B6D3 /* PropertyMapHashTable.h in Headers */ = {isa = PBXBuildFile; fileRef = BC95437C0EBA70FD0072B6D3 /* PropertyMapHashTable.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCBE2CAE14E985AA000593AD /* GCAssertions.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBE2CAD14E985AA000593AD /* GCAssertions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCCF0D080EF0AAB900413C8F /* StructureStubInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BCCF0D070EF0AAB900413C8F /* StructureStubInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCCF0D0C0EF0B8A500413C8F /* StructureStubInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCCF0D0B0EF0B8A500413C8F /* StructureStubInfo.cpp */; }; + BCD202C20E1706A7002C7E82 /* RegExpConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD202BE0E1706A7002C7E82 /* RegExpConstructor.h */; }; + BCD202C40E1706A7002C7E82 /* RegExpPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD202C00E1706A7002C7E82 /* RegExpPrototype.h */; }; + BCD202D60E170708002C7E82 /* RegExpConstructor.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD202D50E170708002C7E82 /* RegExpConstructor.lut.h */; }; + BCD2034A0E17135E002C7E82 /* DateConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD203460E17135E002C7E82 /* DateConstructor.h */; }; + BCD2034C0E17135E002C7E82 /* DatePrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD203480E17135E002C7E82 /* DatePrototype.h */; }; + BCD203E80E1718F4002C7E82 /* DatePrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD203E70E1718F4002C7E82 /* DatePrototype.lut.h */; }; + BCDD51EB0FB8DF74004A8BDC /* JITOpcodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCDD51E90FB8DF74004A8BDC /* JITOpcodes.cpp */; }; + BCDE3AB80E6C82F5001453A7 /* Structure.h in Headers */ = {isa = PBXBuildFile; fileRef = BCDE3AB10E6C82CF001453A7 /* Structure.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCDE3B430E6C832D001453A7 /* Structure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCDE3AB00E6C82CF001453A7 /* Structure.cpp */; }; + BCF605140E203EF800B9A64D /* ArgList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF605120E203EF800B9A64D /* ArgList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCFD8C920EEB2EE700283848 /* JumpTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCFD8C900EEB2EE700283848 /* JumpTable.cpp */; }; + BCFD8C930EEB2EE700283848 /* JumpTable.h in Headers */ = {isa = PBXBuildFile; fileRef = BCFD8C910EEB2EE700283848 /* JumpTable.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C20B25991706536200C21F4E /* Region.h in Headers */ = {isa = PBXBuildFile; fileRef = C20B25981706536200C21F4E /* Region.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C20BA92D16BB1C1500B3AEA2 /* StructureRareDataInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = C20BA92C16BB1C1500B3AEA2 /* StructureRareDataInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C21122E115DD9AB300790E3A /* GCThreadSharedData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C21122DE15DD9AB300790E3A /* GCThreadSharedData.cpp */; }; + C21122E215DD9AB300790E3A /* GCThreadSharedData.h in Headers */ = {isa = PBXBuildFile; fileRef = C21122DF15DD9AB300790E3A /* GCThreadSharedData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C21122E315DD9AB300790E3A /* MarkStackInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = C21122E015DD9AB300790E3A /* MarkStackInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C2160FE715F7E95E00942DFC /* SlotVisitorInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCB408515C0A3C30048932B /* SlotVisitorInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C218D1401655CFD50062BB81 /* CopyWorkList.h in Headers */ = {isa = PBXBuildFile; fileRef = C218D13F1655CFD50062BB81 /* CopyWorkList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C2239D1716262BDD005AC5FD /* CopyVisitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C2239D1216262BDD005AC5FD /* CopyVisitor.cpp */; }; + C2239D1816262BDD005AC5FD /* CopyVisitor.h in Headers */ = {isa = PBXBuildFile; fileRef = C2239D1316262BDD005AC5FD /* CopyVisitor.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C2239D1916262BDD005AC5FD /* CopyVisitorInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = C2239D1416262BDD005AC5FD /* CopyVisitorInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C2239D1A16262BDD005AC5FD /* GCThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C2239D1516262BDD005AC5FD /* GCThread.cpp */; }; + C2239D1B16262BDD005AC5FD /* GCThread.h in Headers */ = {isa = PBXBuildFile; fileRef = C2239D1616262BDD005AC5FD /* GCThread.h */; }; + C225494315F7DBAA0065E898 /* SlotVisitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C225494215F7DBAA0065E898 /* SlotVisitor.cpp */; }; + C22B31B9140577D700DB475A /* SamplingCounter.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F77008E1402FDD60078EB39 /* SamplingCounter.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C240305514B404E60079EB64 /* CopiedSpace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C240305314B404C90079EB64 /* CopiedSpace.cpp */; }; + C24D31E2161CD695002AA4DB /* HeapStatistics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C24D31E0161CD695002AA4DB /* HeapStatistics.cpp */; }; + C24D31E3161CD695002AA4DB /* HeapStatistics.h in Headers */ = {isa = PBXBuildFile; fileRef = C24D31E1161CD695002AA4DB /* HeapStatistics.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C25D709B16DE99F400FCA6BC /* JSManagedValue.mm in Sources */ = {isa = PBXBuildFile; fileRef = C25D709916DE99F400FCA6BC /* JSManagedValue.mm */; }; + C25D709C16DE99F400FCA6BC /* JSManagedValue.h in Headers */ = {isa = PBXBuildFile; fileRef = C25D709A16DE99F400FCA6BC /* JSManagedValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C25F8BCD157544A900245B71 /* IncrementalSweeper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C25F8BCB157544A900245B71 /* IncrementalSweeper.cpp */; }; + C25F8BCE157544A900245B71 /* IncrementalSweeper.h in Headers */ = {isa = PBXBuildFile; fileRef = C25F8BCC157544A900245B71 /* IncrementalSweeper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C283190016FE4B7D00157BFD /* HandleBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = C28318FF16FE4B7D00157BFD /* HandleBlock.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C283190216FE533E00157BFD /* HandleBlockInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = C283190116FE533E00157BFD /* HandleBlockInlines.h */; }; + C2A7F688160432D400F76B98 /* JSDestructibleObject.h in Headers */ = {isa = PBXBuildFile; fileRef = C2A7F687160432D400F76B98 /* JSDestructibleObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C2B916C214DA014E00CBAC86 /* MarkedAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = C2B916C114DA014E00CBAC86 /* MarkedAllocator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C2B916C514DA040C00CBAC86 /* MarkedAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C2B916C414DA040C00CBAC86 /* MarkedAllocator.cpp */; }; + C2C8D02D14A3C6E000578E65 /* CopiedSpaceInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = C2C8D02B14A3C6B200578E65 /* CopiedSpaceInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C2C8D03014A3CEFC00578E65 /* CopiedBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = C2C8D02E14A3CEFC00578E65 /* CopiedBlock.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C2C8D03114A3CEFC00578E65 /* HeapBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = C2C8D02F14A3CEFC00578E65 /* HeapBlock.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C2CF39C116E15A8100DD69BE /* JSAPIWrapperObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = C2CF39BF16E15A8100DD69BE /* JSAPIWrapperObject.mm */; }; + C2CF39C216E15A8100DD69BE /* JSAPIWrapperObject.h in Headers */ = {isa = PBXBuildFile; fileRef = C2CF39C016E15A8100DD69BE /* JSAPIWrapperObject.h */; }; + C2D58C3415912FEE0021A844 /* GCActivityCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C2D58C3315912FEE0021A844 /* GCActivityCallback.cpp */; }; + C2DF442F1707AC0100A5CA96 /* SuperRegion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C2DF442D1707AC0100A5CA96 /* SuperRegion.cpp */; }; + C2DF44301707AC0100A5CA96 /* SuperRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = C2DF442E1707AC0100A5CA96 /* SuperRegion.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C2E526BD1590EF000054E48D /* HeapTimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C2E526BB1590EF000054E48D /* HeapTimer.cpp */; }; + C2E526BE1590EF000054E48D /* HeapTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = C2E526BC1590EF000054E48D /* HeapTimer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C2EAA3FA149A835E00FCE112 /* CopiedSpace.h in Headers */ = {isa = PBXBuildFile; fileRef = C2EAA3F8149A830800FCE112 /* CopiedSpace.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C2EAD2FC14F0249800A4B159 /* CopiedAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = C2EAD2FB14F0249800A4B159 /* CopiedAllocator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C2F0F2D116BAEEE900187C19 /* StructureRareData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C2F0F2D016BAEEE900187C19 /* StructureRareData.cpp */; }; + C2FC9BD316644DFB00810D33 /* CopiedBlockInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = C2FC9BD216644DFB00810D33 /* CopiedBlockInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C2FE18A416BAEC4000AF3061 /* StructureRareData.h in Headers */ = {isa = PBXBuildFile; fileRef = C2FE18A316BAEC4000AF3061 /* StructureRareData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + DDF7ABD411F60ED200108E36 /* GCActivityCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF7ABD211F60ED200108E36 /* GCActivityCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E124A8F70E555775003091F1 /* OpaqueJSString.h in Headers */ = {isa = PBXBuildFile; fileRef = E124A8F50E555775003091F1 /* OpaqueJSString.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E124A8F80E555775003091F1 /* OpaqueJSString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E124A8F60E555775003091F1 /* OpaqueJSString.cpp */; }; + E178636D0D9BEEC300D74E75 /* InitializeThreading.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E178636C0D9BEEC300D74E75 /* InitializeThreading.cpp */; }; + E18E3A590DF9278C00D90B34 /* VM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E18E3A570DF9278C00D90B34 /* VM.cpp */; }; + E49DC16B12EF293E00184A1F /* SourceProviderCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E49DC15512EF277200184A1F /* SourceProviderCache.cpp */; }; + E49DC16C12EF294E00184A1F /* SourceProviderCache.h in Headers */ = {isa = PBXBuildFile; fileRef = E49DC15112EF272200184A1F /* SourceProviderCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E49DC16D12EF295300184A1F /* SourceProviderCacheItem.h in Headers */ = {isa = PBXBuildFile; fileRef = E49DC14912EF261A00184A1F /* SourceProviderCacheItem.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FE20CE9D15F04A9500DF3430 /* LLIntCLoop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE20CE9B15F04A9500DF3430 /* LLIntCLoop.cpp */; }; + FE20CE9E15F04A9500DF3430 /* LLIntCLoop.h in Headers */ = {isa = PBXBuildFile; fileRef = FE20CE9C15F04A9500DF3430 /* LLIntCLoop.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FE4A331F15BD2E07006F54F3 /* VMInspector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE4A331D15BD2E07006F54F3 /* VMInspector.cpp */; }; + FE4A332015BD2E07006F54F3 /* VMInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = FE4A331E15BD2E07006F54F3 /* VMInspector.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FE6617281774E03500495B00 /* VMStackBounds.h in Headers */ = {isa = PBXBuildFile; fileRef = FE6617271774E03500495B00 /* VMStackBounds.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FED287B215EC9A5700DA8161 /* LLIntOpcode.h in Headers */ = {isa = PBXBuildFile; fileRef = FED287B115EC9A5700DA8161 /* LLIntOpcode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FED94F2E171E3E2300BE77A4 /* Watchdog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FED94F2B171E3E2300BE77A4 /* Watchdog.cpp */; }; + FED94F2F171E3E2300BE77A4 /* Watchdog.h in Headers */ = {isa = PBXBuildFile; fileRef = FED94F2C171E3E2300BE77A4 /* Watchdog.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FED94F30171E3E2300BE77A4 /* WatchdogMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FED94F2D171E3E2300BE77A4 /* WatchdogMac.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 0FF922D214F46B2F0041A24E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0F4680A914BA7FD900BFE272; + remoteInfo = "LLInt Offsets"; + }; + 0FF922D514F46B600041A24E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0FF922C314F46B130041A24E; + remoteInfo = JSCLLIntOffsetsExtractor; + }; + 5D69E911152BE5470028D720 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 932F5BDA0822A1C700736975; + remoteInfo = jsc; + }; + 5D6B2A4E152B9E23005231DE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 1412111F0A48793C00480255; + remoteInfo = minidom; + }; + 5D6B2A50152B9E23005231DE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 14BD59BE0A3E8F9000BAF59C; + remoteInfo = testapi; + }; + 5D6B2A54152B9E23005231DE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 651122F714046A4C002B101D; + remoteInfo = testRegExp; + }; + 5D6B2A56152B9E2E005231DE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5D6B2A47152B9E17005231DE; + remoteInfo = "Test Tools"; + }; + 65FB3F7D09D11EF300F49DEB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 65FB3F6609D11E9100F49DEB; + remoteInfo = "Generate Derived Sources"; + }; + 932F5BE60822A1C700736975 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 932F5B3E0822A1C700736975; + remoteInfo = "JavaScriptCore (Upgraded)"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 5DBB1511131D0B130056AD36 /* Copy Support Script */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + 5DBB151B131D0B310056AD36 /* testapi.js in Copy Support Script */, + ); + name = "Copy Support Script"; + runOnlyForDeploymentPostprocessing = 0; + }; + 5DBB1524131D0BA10056AD36 /* Copy Support Script */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + 5DBB1525131D0BD70056AD36 /* minidom.js in Copy Support Script */, + ); + name = "Copy Support Script"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 0F05C3B21683CF8F00BAF45B /* DFGArrayifySlowPathGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGArrayifySlowPathGenerator.h; path = dfg/DFGArrayifySlowPathGenerator.h; sourceTree = ""; }; + 0F0776BD14FF002800102332 /* JITCompilationEffort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITCompilationEffort.h; sourceTree = ""; }; + 0F0B839514BCF45A00885B4F /* LLIntEntrypoints.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntEntrypoints.cpp; path = llint/LLIntEntrypoints.cpp; sourceTree = ""; }; + 0F0B839614BCF45A00885B4F /* LLIntEntrypoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntEntrypoints.h; path = llint/LLIntEntrypoints.h; sourceTree = ""; }; + 0F0B839714BCF45A00885B4F /* LLIntThunks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntThunks.cpp; path = llint/LLIntThunks.cpp; sourceTree = ""; }; + 0F0B839814BCF45A00885B4F /* LLIntThunks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntThunks.h; path = llint/LLIntThunks.h; sourceTree = ""; }; + 0F0B83A514BCF50400885B4F /* CodeType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeType.h; sourceTree = ""; }; + 0F0B83A814BCF55E00885B4F /* HandlerInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HandlerInfo.h; sourceTree = ""; }; + 0F0B83AA14BCF5B900885B4F /* ExpressionRangeInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExpressionRangeInfo.h; sourceTree = ""; }; + 0F0B83AC14BCF60200885B4F /* LineInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineInfo.h; sourceTree = ""; }; + 0F0B83AE14BCF71400885B4F /* CallLinkInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CallLinkInfo.cpp; sourceTree = ""; }; + 0F0B83AF14BCF71400885B4F /* CallLinkInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallLinkInfo.h; sourceTree = ""; }; + 0F0B83B814BCF95B00885B4F /* CallReturnOffsetToBytecodeOffset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallReturnOffsetToBytecodeOffset.h; sourceTree = ""; }; + 0F0CD4C015F1A6040032F1C0 /* PutDirectIndexMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PutDirectIndexMode.h; sourceTree = ""; }; + 0F0CD4C315F6B6B50032F1C0 /* SparseArrayValueMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SparseArrayValueMap.cpp; sourceTree = ""; }; + 0F0FC45814BD15F100B81154 /* LLIntCallLinkInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LLIntCallLinkInfo.h; sourceTree = ""; }; + 0F13912416771C30009CCB07 /* ProfilerBytecodeSequence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProfilerBytecodeSequence.cpp; path = profiler/ProfilerBytecodeSequence.cpp; sourceTree = ""; }; + 0F13912516771C30009CCB07 /* ProfilerBytecodeSequence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfilerBytecodeSequence.h; path = profiler/ProfilerBytecodeSequence.h; sourceTree = ""; }; + 0F13912616771C30009CCB07 /* ProfilerProfiledBytecodes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProfilerProfiledBytecodes.cpp; path = profiler/ProfilerProfiledBytecodes.cpp; sourceTree = ""; }; + 0F13912716771C30009CCB07 /* ProfilerProfiledBytecodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfilerProfiledBytecodes.h; path = profiler/ProfilerProfiledBytecodes.h; sourceTree = ""; }; + 0F13E04C16164A1B00DC8DE7 /* IndexingType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IndexingType.cpp; sourceTree = ""; }; + 0F15F15D14B7A73A005DE37D /* CommonSlowPaths.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommonSlowPaths.h; sourceTree = ""; }; + 0F16015A156198BF00C2587C /* DFGArgumentsSimplificationPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGArgumentsSimplificationPhase.cpp; path = dfg/DFGArgumentsSimplificationPhase.cpp; sourceTree = ""; }; + 0F16015B156198BF00C2587C /* DFGArgumentsSimplificationPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGArgumentsSimplificationPhase.h; path = dfg/DFGArgumentsSimplificationPhase.h; sourceTree = ""; }; + 0F1E3A431534CBAD000F9456 /* DFGArgumentPosition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGArgumentPosition.h; path = dfg/DFGArgumentPosition.h; sourceTree = ""; }; + 0F1E3A441534CBAD000F9456 /* DFGDoubleFormatState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGDoubleFormatState.h; path = dfg/DFGDoubleFormatState.h; sourceTree = ""; }; + 0F1E3A501537C2CB000F9456 /* DFGSlowPathGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGSlowPathGenerator.h; path = dfg/DFGSlowPathGenerator.h; sourceTree = ""; }; + 0F1E3A65153A21DF000F9456 /* DFGSilentRegisterSavePlan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGSilentRegisterSavePlan.h; path = dfg/DFGSilentRegisterSavePlan.h; sourceTree = ""; }; + 0F21C26614BE5F5E00ADC64B /* JITDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITDriver.h; sourceTree = ""; }; + 0F21C27914BE727300ADC64B /* CodeSpecializationKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeSpecializationKind.h; sourceTree = ""; }; + 0F21C27A14BE727300ADC64B /* ExecutionHarness.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExecutionHarness.h; sourceTree = ""; }; + 0F21C27E14BEAA8000ADC64B /* BytecodeConventions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BytecodeConventions.h; sourceTree = ""; }; + 0F242DA513F3B1BB007ADD4C /* WeakReferenceHarvester.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakReferenceHarvester.h; sourceTree = ""; }; + 0F256C341627B0AA007F2783 /* DFGCallArrayAllocatorSlowPathGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGCallArrayAllocatorSlowPathGenerator.h; path = dfg/DFGCallArrayAllocatorSlowPathGenerator.h; sourceTree = ""; }; + 0F2BDC12151C5D4A00CD8910 /* DFGFixupPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGFixupPhase.cpp; path = dfg/DFGFixupPhase.cpp; sourceTree = ""; }; + 0F2BDC13151C5D4A00CD8910 /* DFGFixupPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGFixupPhase.h; path = dfg/DFGFixupPhase.h; sourceTree = ""; }; + 0F2BDC1F151E803800CD8910 /* DFGInsertionSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGInsertionSet.h; path = dfg/DFGInsertionSet.h; sourceTree = ""; }; + 0F2BDC2B151FDE8B00CD8910 /* Operands.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Operands.h; sourceTree = ""; }; + 0F2BDC3D1522801700CD8910 /* DFGMinifiedGraph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGMinifiedGraph.h; path = dfg/DFGMinifiedGraph.h; sourceTree = ""; }; + 0F2BDC3E1522801700CD8910 /* DFGMinifiedNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGMinifiedNode.h; path = dfg/DFGMinifiedNode.h; sourceTree = ""; }; + 0F2BDC3F1522801700CD8910 /* DFGValueRecoveryOverride.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGValueRecoveryOverride.h; path = dfg/DFGValueRecoveryOverride.h; sourceTree = ""; }; + 0F2BDC401522801700CD8910 /* DFGValueSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGValueSource.h; path = dfg/DFGValueSource.h; sourceTree = ""; }; + 0F2BDC411522801700CD8910 /* DFGVariableEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGVariableEvent.h; path = dfg/DFGVariableEvent.h; sourceTree = ""; }; + 0F2BDC421522801700CD8910 /* DFGVariableEventStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGVariableEventStream.cpp; path = dfg/DFGVariableEventStream.cpp; sourceTree = ""; }; + 0F2BDC431522801700CD8910 /* DFGVariableEventStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGVariableEventStream.h; path = dfg/DFGVariableEventStream.h; sourceTree = ""; }; + 0F2BDC4C1522818300CD8910 /* DFGMinifiedNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGMinifiedNode.cpp; path = dfg/DFGMinifiedNode.cpp; sourceTree = ""; }; + 0F2BDC4E15228BE700CD8910 /* DFGValueSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGValueSource.cpp; path = dfg/DFGValueSource.cpp; sourceTree = ""; }; + 0F2BDC5015228FFA00CD8910 /* DFGVariableEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGVariableEvent.cpp; path = dfg/DFGVariableEvent.cpp; sourceTree = ""; }; + 0F2C556D14738F2E00121E4F /* DFGCodeBlocks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DFGCodeBlocks.cpp; sourceTree = ""; }; + 0F2C556E14738F2E00121E4F /* DFGCodeBlocks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DFGCodeBlocks.h; sourceTree = ""; }; + 0F2FC77016E12F6F0038D976 /* DFGDCEPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGDCEPhase.cpp; path = dfg/DFGDCEPhase.cpp; sourceTree = ""; }; + 0F2FC77116E12F6F0038D976 /* DFGDCEPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGDCEPhase.h; path = dfg/DFGDCEPhase.h; sourceTree = ""; }; + 0F34B14716D4200E001CDA5A /* DFGUseKind.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGUseKind.cpp; path = dfg/DFGUseKind.cpp; sourceTree = ""; }; + 0F34B14816D4200E001CDA5A /* DFGUseKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGUseKind.h; path = dfg/DFGUseKind.h; sourceTree = ""; }; + 0F34B14B16D43E0C001CDA5A /* PolymorphicAccessStructureList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PolymorphicAccessStructureList.h; sourceTree = ""; }; + 0F3B3A17153E68EF003ED0FF /* DFGConstantFoldingPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGConstantFoldingPhase.cpp; path = dfg/DFGConstantFoldingPhase.cpp; sourceTree = ""; }; + 0F3B3A18153E68EF003ED0FF /* DFGConstantFoldingPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGConstantFoldingPhase.h; path = dfg/DFGConstantFoldingPhase.h; sourceTree = ""; }; + 0F3B3A241544C991003ED0FF /* DFGCFGSimplificationPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGCFGSimplificationPhase.cpp; path = dfg/DFGCFGSimplificationPhase.cpp; sourceTree = ""; }; + 0F3B3A251544C991003ED0FF /* DFGCFGSimplificationPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGCFGSimplificationPhase.h; path = dfg/DFGCFGSimplificationPhase.h; sourceTree = ""; }; + 0F3B3A2915474FF4003ED0FF /* DFGValidate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGValidate.cpp; path = dfg/DFGValidate.cpp; sourceTree = ""; }; + 0F3B3A2A15474FF4003ED0FF /* DFGValidate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGValidate.h; path = dfg/DFGValidate.h; sourceTree = ""; }; + 0F426A451460CBAB00131F8F /* ValueRecovery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValueRecovery.h; sourceTree = ""; }; + 0F426A461460CBAB00131F8F /* VirtualRegister.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualRegister.h; sourceTree = ""; }; + 0F426A4A1460CD6B00131F8F /* DataFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataFormat.h; sourceTree = ""; }; + 0F431736146BAC65007E3890 /* ListableHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ListableHandler.h; sourceTree = ""; }; + 0F46807F14BA572700BFE272 /* JITExceptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITExceptions.cpp; sourceTree = ""; }; + 0F46808014BA572700BFE272 /* JITExceptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITExceptions.h; sourceTree = ""; }; + 0F46809D14BA7F8200BFE272 /* LLIntExceptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntExceptions.cpp; path = llint/LLIntExceptions.cpp; sourceTree = ""; }; + 0F46809E14BA7F8200BFE272 /* LLIntExceptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntExceptions.h; path = llint/LLIntExceptions.h; sourceTree = ""; }; + 0F46809F14BA7F8200BFE272 /* LLIntSlowPaths.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntSlowPaths.cpp; path = llint/LLIntSlowPaths.cpp; sourceTree = ""; }; + 0F4680A014BA7F8200BFE272 /* LLIntSlowPaths.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntSlowPaths.h; path = llint/LLIntSlowPaths.h; sourceTree = ""; }; + 0F4680A114BA7F8200BFE272 /* LLIntOffsetsExtractor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntOffsetsExtractor.cpp; path = llint/LLIntOffsetsExtractor.cpp; sourceTree = ""; }; + 0F4680C514BBB16900BFE272 /* LLIntCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntCommon.h; path = llint/LLIntCommon.h; sourceTree = ""; }; + 0F4680C614BBB16900BFE272 /* LLIntOfflineAsmConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntOfflineAsmConfig.h; path = llint/LLIntOfflineAsmConfig.h; sourceTree = ""; }; + 0F4680C714BBB16900BFE272 /* LowLevelInterpreter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LowLevelInterpreter.cpp; path = llint/LowLevelInterpreter.cpp; sourceTree = ""; }; + 0F4680C814BBB16900BFE272 /* LowLevelInterpreter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LowLevelInterpreter.h; path = llint/LowLevelInterpreter.h; sourceTree = ""; }; + 0F4680CE14BBB3D100BFE272 /* LLIntData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntData.cpp; path = llint/LLIntData.cpp; sourceTree = ""; }; + 0F4680CF14BBB3D100BFE272 /* LLIntData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntData.h; path = llint/LLIntData.h; sourceTree = ""; }; + 0F4680D014BBC5F800BFE272 /* HostCallReturnValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HostCallReturnValue.cpp; sourceTree = ""; }; + 0F4680D114BBC5F800BFE272 /* HostCallReturnValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HostCallReturnValue.h; sourceTree = ""; }; + 0F493AF816D0CAD10084508B /* SourceProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SourceProvider.cpp; sourceTree = ""; }; + 0F5541AF1613C1FB00CE3E25 /* SpecialPointer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpecialPointer.cpp; sourceTree = ""; }; + 0F5541B01613C1FB00CE3E25 /* SpecialPointer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpecialPointer.h; sourceTree = ""; }; + 0F55F0F114D1063600AC7649 /* AbstractPC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AbstractPC.cpp; sourceTree = ""; }; + 0F55F0F214D1063600AC7649 /* AbstractPC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AbstractPC.h; sourceTree = ""; }; + 0F56A1D115000F31002992B1 /* ExecutionCounter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExecutionCounter.h; sourceTree = ""; }; + 0F56A1D415001CF2002992B1 /* ExecutionCounter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExecutionCounter.cpp; sourceTree = ""; }; + 0F572D4D16879FDB00E57FBD /* ThunkGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThunkGenerator.h; sourceTree = ""; }; + 0F5EF91B16878F78003E5C25 /* JITThunks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITThunks.cpp; sourceTree = ""; }; + 0F5EF91C16878F78003E5C25 /* JITThunks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITThunks.h; sourceTree = ""; }; + 0F5F08CE146C762F000472A9 /* UnconditionalFinalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnconditionalFinalizer.h; sourceTree = ""; }; + 0F62016D143FCD2F0068B77C /* DFGAbstractState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGAbstractState.cpp; path = dfg/DFGAbstractState.cpp; sourceTree = ""; }; + 0F62016E143FCD2F0068B77C /* DFGAbstractState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGAbstractState.h; path = dfg/DFGAbstractState.h; sourceTree = ""; }; + 0F62016F143FCD2F0068B77C /* DFGAbstractValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGAbstractValue.h; path = dfg/DFGAbstractValue.h; sourceTree = ""; }; + 0F620170143FCD2F0068B77C /* DFGBasicBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGBasicBlock.h; path = dfg/DFGBasicBlock.h; sourceTree = ""; }; + 0F620172143FCD2F0068B77C /* DFGVariableAccessData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGVariableAccessData.h; path = dfg/DFGVariableAccessData.h; sourceTree = ""; }; + 0F63943C15C75F14006A597C /* DFGTypeCheckHoistingPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGTypeCheckHoistingPhase.cpp; path = dfg/DFGTypeCheckHoistingPhase.cpp; sourceTree = ""; }; + 0F63943D15C75F14006A597C /* DFGTypeCheckHoistingPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGTypeCheckHoistingPhase.h; path = dfg/DFGTypeCheckHoistingPhase.h; sourceTree = ""; }; + 0F63945115D07051006A597C /* ArrayProfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArrayProfile.cpp; sourceTree = ""; }; + 0F63945215D07051006A597C /* ArrayProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArrayProfile.h; sourceTree = ""; }; + 0F63947615DCE347006A597C /* DFGStructureAbstractValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGStructureAbstractValue.h; path = dfg/DFGStructureAbstractValue.h; sourceTree = ""; }; + 0F63948115E48114006A597C /* DFGArrayMode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGArrayMode.cpp; path = dfg/DFGArrayMode.cpp; sourceTree = ""; }; + 0F63948215E48114006A597C /* DFGArrayMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGArrayMode.h; path = dfg/DFGArrayMode.h; sourceTree = ""; }; + 0F66E16814DF3F1300B7B2E4 /* DFGAdjacencyList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGAdjacencyList.h; path = dfg/DFGAdjacencyList.h; sourceTree = ""; }; + 0F66E16914DF3F1300B7B2E4 /* DFGEdge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGEdge.h; path = dfg/DFGEdge.h; sourceTree = ""; }; + 0F714CA116EA92ED00F3EBEB /* DFGBackwardsPropagationPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGBackwardsPropagationPhase.cpp; path = dfg/DFGBackwardsPropagationPhase.cpp; sourceTree = ""; }; + 0F714CA216EA92ED00F3EBEB /* DFGBackwardsPropagationPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGBackwardsPropagationPhase.h; path = dfg/DFGBackwardsPropagationPhase.h; sourceTree = ""; }; + 0F73D7AB165A142A00ACAB71 /* ClosureCallStubRoutine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ClosureCallStubRoutine.cpp; sourceTree = ""; }; + 0F73D7AC165A142A00ACAB71 /* ClosureCallStubRoutine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClosureCallStubRoutine.h; sourceTree = ""; }; + 0F766D1C15A5028D008F363E /* JITStubRoutine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITStubRoutine.h; sourceTree = ""; }; + 0F766D2615A8CC1B008F363E /* JITStubRoutine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITStubRoutine.cpp; sourceTree = ""; }; + 0F766D2915A8CC34008F363E /* JITStubRoutineSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITStubRoutineSet.cpp; sourceTree = ""; }; + 0F766D2A15A8CC34008F363E /* JITStubRoutineSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITStubRoutineSet.h; sourceTree = ""; }; + 0F766D2D15A8DCDD008F363E /* GCAwareJITStubRoutine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GCAwareJITStubRoutine.cpp; sourceTree = ""; }; + 0F766D2E15A8DCDD008F363E /* GCAwareJITStubRoutine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCAwareJITStubRoutine.h; sourceTree = ""; }; + 0F766D3215AE2535008F363E /* JumpReplacementWatchpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JumpReplacementWatchpoint.cpp; sourceTree = ""; }; + 0F766D3315AE2535008F363E /* JumpReplacementWatchpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JumpReplacementWatchpoint.h; sourceTree = ""; }; + 0F766D3615AE4A1A008F363E /* StructureStubClearingWatchpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StructureStubClearingWatchpoint.cpp; sourceTree = ""; }; + 0F766D3715AE4A1A008F363E /* StructureStubClearingWatchpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructureStubClearingWatchpoint.h; sourceTree = ""; }; + 0F766D4215B2A3BD008F363E /* DFGRegisterSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGRegisterSet.h; path = dfg/DFGRegisterSet.h; sourceTree = ""; }; + 0F766D4515B3701D008F363E /* DFGScratchRegisterAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGScratchRegisterAllocator.h; path = dfg/DFGScratchRegisterAllocator.h; sourceTree = ""; }; + 0F77008E1402FDD60078EB39 /* SamplingCounter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SamplingCounter.h; sourceTree = ""; }; + 0F7700911402FF280078EB39 /* SamplingCounter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SamplingCounter.cpp; sourceTree = ""; }; + 0F7B294814C3CD23007C3DB1 /* DFGCCallHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGCCallHelpers.h; path = dfg/DFGCCallHelpers.h; sourceTree = ""; }; + 0F8023E91613832300A0BA45 /* ByValInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ByValInfo.h; sourceTree = ""; }; + 0F8335B41639C1E3001443B5 /* ArrayAllocationProfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArrayAllocationProfile.cpp; sourceTree = ""; }; + 0F8335B51639C1E3001443B5 /* ArrayAllocationProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArrayAllocationProfile.h; sourceTree = ""; }; + 0F8364B5164B0C0E0053329A /* DFGBranchDirection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGBranchDirection.h; path = dfg/DFGBranchDirection.h; sourceTree = ""; }; + 0F85A31E16AB76AE0077571E /* DFGVariadicFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGVariadicFunction.h; path = dfg/DFGVariadicFunction.h; sourceTree = ""; }; + 0F8F943A1667631100D61971 /* CodeSpecializationKind.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CodeSpecializationKind.cpp; sourceTree = ""; }; + 0F8F943D1667632D00D61971 /* CodeBlockHash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CodeBlockHash.cpp; sourceTree = ""; }; + 0F8F943E1667632D00D61971 /* CodeBlockHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeBlockHash.h; sourceTree = ""; }; + 0F8F943F1667632D00D61971 /* CodeType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CodeType.cpp; sourceTree = ""; }; + 0F8F94431667635200D61971 /* JITCode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITCode.cpp; sourceTree = ""; }; + 0F8F9445166764EE00D61971 /* CodeOrigin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CodeOrigin.cpp; sourceTree = ""; }; + 0F919D09157EE09D004A4E7D /* JSSymbolTableObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSymbolTableObject.cpp; sourceTree = ""; }; + 0F919D0A157EE09D004A4E7D /* JSSymbolTableObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSymbolTableObject.h; sourceTree = ""; }; + 0F919D0E157F3327004A4E7D /* JSSegmentedVariableObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSegmentedVariableObject.cpp; sourceTree = ""; }; + 0F919D0F157F3327004A4E7D /* JSSegmentedVariableObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSegmentedVariableObject.h; sourceTree = ""; }; + 0F919D2215853CDE004A4E7D /* Watchpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Watchpoint.cpp; sourceTree = ""; }; + 0F919D2315853CDE004A4E7D /* Watchpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Watchpoint.h; sourceTree = ""; }; + 0F919D2715856770004A4E7D /* SymbolTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolTable.cpp; sourceTree = ""; }; + 0F93329314CA7DC10085F3C6 /* CallLinkStatus.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CallLinkStatus.cpp; sourceTree = ""; }; + 0F93329414CA7DC10085F3C6 /* CallLinkStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallLinkStatus.h; sourceTree = ""; }; + 0F93329514CA7DC10085F3C6 /* GetByIdStatus.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GetByIdStatus.cpp; sourceTree = ""; }; + 0F93329614CA7DC10085F3C6 /* GetByIdStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GetByIdStatus.h; sourceTree = ""; }; + 0F93329914CA7DC10085F3C6 /* PutByIdStatus.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PutByIdStatus.cpp; sourceTree = ""; }; + 0F93329A14CA7DC10085F3C6 /* PutByIdStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PutByIdStatus.h; sourceTree = ""; }; + 0F93329B14CA7DC10085F3C6 /* StructureSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructureSet.h; sourceTree = ""; }; + 0F963B3613FC6FDE0002D9B2 /* ValueProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValueProfile.h; sourceTree = ""; }; + 0F96EBB116676EF4008BADE3 /* CodeBlockWithJITType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeBlockWithJITType.h; sourceTree = ""; }; + 0F97496F1687ADE200A4FF6A /* JSCellInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCellInlines.h; sourceTree = ""; }; + 0F98205D16BFE37F00240D02 /* PreciseJumpTargets.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PreciseJumpTargets.cpp; sourceTree = ""; }; + 0F98205E16BFE37F00240D02 /* PreciseJumpTargets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreciseJumpTargets.h; sourceTree = ""; }; + 0F9D336E165DBB8D005AD387 /* Disassembler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Disassembler.cpp; path = disassembler/Disassembler.cpp; sourceTree = ""; }; + 0F9FC8BF14E1B5FB00D52AE0 /* PolymorphicPutByIdList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PolymorphicPutByIdList.cpp; sourceTree = ""; }; + 0F9FC8C014E1B5FB00D52AE0 /* PolymorphicPutByIdList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PolymorphicPutByIdList.h; sourceTree = ""; }; + 0F9FC8C114E1B5FB00D52AE0 /* PutKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PutKind.h; sourceTree = ""; }; + 0FA581B7150E952A00B9A2D9 /* DFGNodeFlags.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGNodeFlags.cpp; path = dfg/DFGNodeFlags.cpp; sourceTree = ""; }; + 0FA581B8150E952A00B9A2D9 /* DFGNodeFlags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGNodeFlags.h; path = dfg/DFGNodeFlags.h; sourceTree = ""; }; + 0FA581B9150E952A00B9A2D9 /* DFGNodeType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGNodeType.h; path = dfg/DFGNodeType.h; sourceTree = ""; }; + 0FAF7EFA165BA919000C8455 /* JITDisassembler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITDisassembler.cpp; sourceTree = ""; }; + 0FAF7EFB165BA919000C8455 /* JITDisassembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITDisassembler.h; sourceTree = ""; }; + 0FB105821675480C00F8AB6E /* ExitKind.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExitKind.cpp; sourceTree = ""; }; + 0FB105831675480C00F8AB6E /* ExitKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExitKind.h; sourceTree = ""; }; + 0FB105871675482E00F8AB6E /* ProfilerOSRExit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProfilerOSRExit.cpp; path = profiler/ProfilerOSRExit.cpp; sourceTree = ""; }; + 0FB105881675482E00F8AB6E /* ProfilerOSRExit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfilerOSRExit.h; path = profiler/ProfilerOSRExit.h; sourceTree = ""; }; + 0FB105891675482E00F8AB6E /* ProfilerOSRExitSite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProfilerOSRExitSite.cpp; path = profiler/ProfilerOSRExitSite.cpp; sourceTree = ""; }; + 0FB1058A1675482E00F8AB6E /* ProfilerOSRExitSite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfilerOSRExitSite.h; path = profiler/ProfilerOSRExitSite.h; sourceTree = ""; }; + 0FB4B51016B3A964003F696B /* DFGMinifiedID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGMinifiedID.h; path = dfg/DFGMinifiedID.h; sourceTree = ""; }; + 0FB4B51916B62772003F696B /* DFGAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGAllocator.h; path = dfg/DFGAllocator.h; sourceTree = ""; }; + 0FB4B51A16B62772003F696B /* DFGCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGCommon.cpp; path = dfg/DFGCommon.cpp; sourceTree = ""; }; + 0FB4B51B16B62772003F696B /* DFGEdge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGEdge.cpp; path = dfg/DFGEdge.cpp; sourceTree = ""; }; + 0FB4B51C16B62772003F696B /* DFGLongLivedState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGLongLivedState.cpp; path = dfg/DFGLongLivedState.cpp; sourceTree = ""; }; + 0FB4B51D16B62772003F696B /* DFGLongLivedState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGLongLivedState.h; path = dfg/DFGLongLivedState.h; sourceTree = ""; }; + 0FB4B51E16B62772003F696B /* DFGNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGNode.cpp; path = dfg/DFGNode.cpp; sourceTree = ""; }; + 0FB4B51F16B62772003F696B /* DFGNodeAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGNodeAllocator.h; path = dfg/DFGNodeAllocator.h; sourceTree = ""; }; + 0FB4B52116B6278D003F696B /* FunctionExecutableDump.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FunctionExecutableDump.cpp; sourceTree = ""; }; + 0FB4B52216B6278D003F696B /* FunctionExecutableDump.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FunctionExecutableDump.h; sourceTree = ""; }; + 0FB5467614F59AD1002C2989 /* LazyOperandValueProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LazyOperandValueProfile.h; sourceTree = ""; }; + 0FB5467814F5C468002C2989 /* LazyOperandValueProfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LazyOperandValueProfile.cpp; sourceTree = ""; }; + 0FB5467A14F5C7D4002C2989 /* MethodOfGettingAValueProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MethodOfGettingAValueProfile.h; sourceTree = ""; }; + 0FB5467C14F5CFD3002C2989 /* MethodOfGettingAValueProfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MethodOfGettingAValueProfile.cpp; sourceTree = ""; }; + 0FB7F38915ED8E3800F167B2 /* ArrayConventions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArrayConventions.h; sourceTree = ""; }; + 0FB7F38A15ED8E3800F167B2 /* ArrayStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArrayStorage.h; sourceTree = ""; }; + 0FB7F38B15ED8E3800F167B2 /* Butterfly.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Butterfly.h; sourceTree = ""; }; + 0FB7F38C15ED8E3800F167B2 /* ButterflyInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ButterflyInlines.h; sourceTree = ""; }; + 0FB7F38D15ED8E3800F167B2 /* IndexingHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IndexingHeader.h; sourceTree = ""; }; + 0FB7F38E15ED8E3800F167B2 /* IndexingHeaderInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IndexingHeaderInlines.h; sourceTree = ""; }; + 0FB7F38F15ED8E3800F167B2 /* IndexingType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IndexingType.h; sourceTree = ""; }; + 0FB7F39015ED8E3800F167B2 /* PropertyStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PropertyStorage.h; sourceTree = ""; }; + 0FB7F39115ED8E3800F167B2 /* Reject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reject.h; sourceTree = ""; }; + 0FB7F39215ED8E3800F167B2 /* SparseArrayValueMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SparseArrayValueMap.h; sourceTree = ""; }; + 0FBC0AE41496C7C100D4FBDD /* DFGExitProfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DFGExitProfile.cpp; sourceTree = ""; }; + 0FBC0AE51496C7C100D4FBDD /* DFGExitProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DFGExitProfile.h; sourceTree = ""; }; + 0FBD7E671447998F00481315 /* CodeOrigin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeOrigin.h; sourceTree = ""; }; + 0FBE0F6B16C1DB010082C5E8 /* DFGCPSRethreadingPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGCPSRethreadingPhase.cpp; path = dfg/DFGCPSRethreadingPhase.cpp; sourceTree = ""; }; + 0FBE0F6C16C1DB010082C5E8 /* DFGCPSRethreadingPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGCPSRethreadingPhase.h; path = dfg/DFGCPSRethreadingPhase.h; sourceTree = ""; }; + 0FBE0F6D16C1DB010082C5E8 /* DFGPredictionInjectionPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGPredictionInjectionPhase.cpp; path = dfg/DFGPredictionInjectionPhase.cpp; sourceTree = ""; }; + 0FBE0F6E16C1DB010082C5E8 /* DFGPredictionInjectionPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGPredictionInjectionPhase.h; path = dfg/DFGPredictionInjectionPhase.h; sourceTree = ""; }; + 0FBE0F6F16C1DB010082C5E8 /* DFGUnificationPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGUnificationPhase.cpp; path = dfg/DFGUnificationPhase.cpp; sourceTree = ""; }; + 0FBE0F7016C1DB010082C5E8 /* DFGUnificationPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGUnificationPhase.h; path = dfg/DFGUnificationPhase.h; sourceTree = ""; }; + 0FC097681468A6EF00CF2442 /* DFGOSRExit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGOSRExit.h; path = dfg/DFGOSRExit.h; sourceTree = ""; }; + 0FC0976B1468AB4A00CF2442 /* DFGAssemblyHelpers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGAssemblyHelpers.cpp; path = dfg/DFGAssemblyHelpers.cpp; sourceTree = ""; }; + 0FC0976C1468AB4A00CF2442 /* DFGAssemblyHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGAssemblyHelpers.h; path = dfg/DFGAssemblyHelpers.h; sourceTree = ""; }; + 0FC0976F14693AEF00CF2442 /* DFGOSRExitCompiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGOSRExitCompiler.h; path = dfg/DFGOSRExitCompiler.h; sourceTree = ""; }; + 0FC0977014693AEF00CF2442 /* DFGOSRExitCompiler64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGOSRExitCompiler64.cpp; path = dfg/DFGOSRExitCompiler64.cpp; sourceTree = ""; }; + 0FC09775146943AD00CF2442 /* DFGOSRExitCompiler32_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGOSRExitCompiler32_64.cpp; path = dfg/DFGOSRExitCompiler32_64.cpp; sourceTree = ""; }; + 0FC0977E1469EBC400CF2442 /* DFGCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGCommon.h; path = dfg/DFGCommon.h; sourceTree = ""; }; + 0FC0978E146A6F6300CF2442 /* DFGOSRExit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGOSRExit.cpp; path = dfg/DFGOSRExit.cpp; sourceTree = ""; }; + 0FC0978F146A6F6300CF2442 /* DFGOSRExitCompiler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGOSRExitCompiler.cpp; path = dfg/DFGOSRExitCompiler.cpp; sourceTree = ""; }; + 0FC0979F146B28C700CF2442 /* DFGThunks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGThunks.cpp; path = dfg/DFGThunks.cpp; sourceTree = ""; }; + 0FC097A0146B28C700CF2442 /* DFGThunks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGThunks.h; path = dfg/DFGThunks.h; sourceTree = ""; }; + 0FC8150814043BCA00CFA603 /* WriteBarrierSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WriteBarrierSupport.cpp; sourceTree = ""; }; + 0FC8150914043BD200CFA603 /* WriteBarrierSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WriteBarrierSupport.h; sourceTree = ""; }; + 0FC815121405118600CFA603 /* VTableSpectrum.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VTableSpectrum.cpp; sourceTree = ""; }; + 0FC815141405118D00CFA603 /* VTableSpectrum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VTableSpectrum.h; sourceTree = ""; }; + 0FCB408515C0A3C30048932B /* SlotVisitorInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlotVisitorInlines.h; sourceTree = ""; }; + 0FCCAE4316D0CF6E00D0C65B /* ParserError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParserError.h; sourceTree = ""; }; + 0FD2C92316D01EE900C7803F /* StructureInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructureInlines.h; sourceTree = ""; }; + 0FD3C82014115CF800FD81CB /* DFGDriver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGDriver.cpp; path = dfg/DFGDriver.cpp; sourceTree = ""; }; + 0FD3C82214115D0E00FD81CB /* DFGDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGDriver.h; path = dfg/DFGDriver.h; sourceTree = ""; }; + 0FD5652216AB780A00197653 /* DFGBasicBlockInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGBasicBlockInlines.h; path = dfg/DFGBasicBlockInlines.h; sourceTree = ""; }; + 0FD81ACF154FB4EB00983E72 /* DFGDominators.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGDominators.cpp; path = dfg/DFGDominators.cpp; sourceTree = ""; }; + 0FD81AD0154FB4EB00983E72 /* DFGDominators.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGDominators.h; path = dfg/DFGDominators.h; sourceTree = ""; }; + 0FD82E1E14172C2F00179C94 /* DFGCapabilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGCapabilities.cpp; path = dfg/DFGCapabilities.cpp; sourceTree = ""; }; + 0FD82E1F14172C2F00179C94 /* DFGCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGCapabilities.h; path = dfg/DFGCapabilities.h; sourceTree = ""; }; + 0FD82E37141AB14200179C94 /* CompactJITCodeMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CompactJITCodeMap.h; sourceTree = ""; }; + 0FD82E4F141DAEA100179C94 /* SpeculatedType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpeculatedType.h; sourceTree = ""; }; + 0FD82E52141DAEDE00179C94 /* DFGOSREntry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGOSREntry.cpp; path = dfg/DFGOSREntry.cpp; sourceTree = ""; }; + 0FD82E53141DAEDE00179C94 /* DFGOSREntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGOSREntry.h; path = dfg/DFGOSREntry.h; sourceTree = ""; }; + 0FD82E84141F3FDA00179C94 /* SpeculatedType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpeculatedType.cpp; sourceTree = ""; }; + 0FDDBFB21666EED500C55FEF /* DFGVariableAccessDataDump.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGVariableAccessDataDump.cpp; path = dfg/DFGVariableAccessDataDump.cpp; sourceTree = ""; }; + 0FDDBFB31666EED500C55FEF /* DFGVariableAccessDataDump.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGVariableAccessDataDump.h; path = dfg/DFGVariableAccessDataDump.h; sourceTree = ""; }; + 0FE228EA1436AB2300196C48 /* Options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Options.cpp; sourceTree = ""; }; + 0FE228EB1436AB2300196C48 /* Options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Options.h; sourceTree = ""; }; + 0FEB3ECB16237F4700AB67AD /* TypedArrayDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TypedArrayDescriptor.h; sourceTree = ""; }; + 0FEB3ECE16237F6700AB67AD /* MacroAssembler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MacroAssembler.cpp; sourceTree = ""; }; + 0FEFC9A71681A3B000567F53 /* DFGOSRExitJumpPlaceholder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGOSRExitJumpPlaceholder.cpp; path = dfg/DFGOSRExitJumpPlaceholder.cpp; sourceTree = ""; }; + 0FEFC9A81681A3B000567F53 /* DFGOSRExitJumpPlaceholder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGOSRExitJumpPlaceholder.h; path = dfg/DFGOSRExitJumpPlaceholder.h; sourceTree = ""; }; + 0FF4272F158EBD44004CB9FF /* Disassembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Disassembler.h; path = disassembler/Disassembler.h; sourceTree = ""; }; + 0FF42730158EBD44004CB9FF /* UDis86Disassembler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UDis86Disassembler.cpp; path = disassembler/UDis86Disassembler.cpp; sourceTree = ""; }; + 0FF42734158EBD94004CB9FF /* udis86_decode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = udis86_decode.c; path = disassembler/udis86/udis86_decode.c; sourceTree = ""; }; + 0FF42735158EBD94004CB9FF /* udis86_decode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = udis86_decode.h; path = disassembler/udis86/udis86_decode.h; sourceTree = ""; }; + 0FF42736158EBD94004CB9FF /* udis86_extern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = udis86_extern.h; path = disassembler/udis86/udis86_extern.h; sourceTree = ""; }; + 0FF42737158EBD94004CB9FF /* udis86_input.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = udis86_input.c; path = disassembler/udis86/udis86_input.c; sourceTree = ""; }; + 0FF42738158EBD94004CB9FF /* udis86_input.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = udis86_input.h; path = disassembler/udis86/udis86_input.h; sourceTree = ""; }; + 0FF42739158EBD94004CB9FF /* udis86_syn-att.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "udis86_syn-att.c"; path = "disassembler/udis86/udis86_syn-att.c"; sourceTree = ""; }; + 0FF4273A158EBD94004CB9FF /* udis86_syn-intel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "udis86_syn-intel.c"; path = "disassembler/udis86/udis86_syn-intel.c"; sourceTree = ""; }; + 0FF4273B158EBD94004CB9FF /* udis86_syn.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = udis86_syn.c; path = disassembler/udis86/udis86_syn.c; sourceTree = ""; }; + 0FF4273C158EBD94004CB9FF /* udis86_syn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = udis86_syn.h; path = disassembler/udis86/udis86_syn.h; sourceTree = ""; }; + 0FF4273D158EBD94004CB9FF /* udis86_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = udis86_types.h; path = disassembler/udis86/udis86_types.h; sourceTree = ""; }; + 0FF4273E158EBD94004CB9FF /* udis86.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = udis86.c; path = disassembler/udis86/udis86.c; sourceTree = ""; }; + 0FF4273F158EBD94004CB9FF /* udis86.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = udis86.h; path = disassembler/udis86/udis86.h; sourceTree = ""; }; + 0FF4274C158EBFE1004CB9FF /* udis86_itab_holder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = udis86_itab_holder.c; path = disassembler/udis86/udis86_itab_holder.c; sourceTree = ""; }; + 0FF4275615914A20004CB9FF /* LinkBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LinkBuffer.cpp; sourceTree = ""; }; + 0FF427611591A1C9004CB9FF /* DFGDisassembler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGDisassembler.cpp; path = dfg/DFGDisassembler.cpp; sourceTree = ""; }; + 0FF427621591A1C9004CB9FF /* DFGDisassembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGDisassembler.h; path = dfg/DFGDisassembler.h; sourceTree = ""; }; + 0FF4276E159275D2004CB9FF /* ResolveGlobalStatus.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResolveGlobalStatus.cpp; sourceTree = ""; }; + 0FF4276F159275D2004CB9FF /* ResolveGlobalStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResolveGlobalStatus.h; sourceTree = ""; }; + 0FF60ABF16740F8100029779 /* ReduceWhitespace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReduceWhitespace.cpp; sourceTree = ""; }; + 0FF60AC016740F8100029779 /* ReduceWhitespace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReduceWhitespace.h; sourceTree = ""; }; + 0FF7168A15A3B231008F5DAA /* PropertyOffset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PropertyOffset.h; sourceTree = ""; }; + 0FF72992166AD347000F5BA3 /* ProfilerBytecode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProfilerBytecode.cpp; path = profiler/ProfilerBytecode.cpp; sourceTree = ""; }; + 0FF72993166AD347000F5BA3 /* ProfilerBytecode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfilerBytecode.h; path = profiler/ProfilerBytecode.h; sourceTree = ""; }; + 0FF72994166AD347000F5BA3 /* ProfilerBytecodes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProfilerBytecodes.cpp; path = profiler/ProfilerBytecodes.cpp; sourceTree = ""; }; + 0FF72995166AD347000F5BA3 /* ProfilerBytecodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfilerBytecodes.h; path = profiler/ProfilerBytecodes.h; sourceTree = ""; }; + 0FF72996166AD347000F5BA3 /* ProfilerCompilation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProfilerCompilation.cpp; path = profiler/ProfilerCompilation.cpp; sourceTree = ""; }; + 0FF72997166AD347000F5BA3 /* ProfilerCompilation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfilerCompilation.h; path = profiler/ProfilerCompilation.h; sourceTree = ""; }; + 0FF72998166AD347000F5BA3 /* ProfilerCompilationKind.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProfilerCompilationKind.cpp; path = profiler/ProfilerCompilationKind.cpp; sourceTree = ""; }; + 0FF72999166AD347000F5BA3 /* ProfilerCompilationKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfilerCompilationKind.h; path = profiler/ProfilerCompilationKind.h; sourceTree = ""; }; + 0FF7299A166AD347000F5BA3 /* ProfilerCompiledBytecode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProfilerCompiledBytecode.cpp; path = profiler/ProfilerCompiledBytecode.cpp; sourceTree = ""; }; + 0FF7299B166AD347000F5BA3 /* ProfilerCompiledBytecode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfilerCompiledBytecode.h; path = profiler/ProfilerCompiledBytecode.h; sourceTree = ""; }; + 0FF7299C166AD347000F5BA3 /* ProfilerDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProfilerDatabase.cpp; path = profiler/ProfilerDatabase.cpp; sourceTree = ""; }; + 0FF7299D166AD347000F5BA3 /* ProfilerDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfilerDatabase.h; path = profiler/ProfilerDatabase.h; sourceTree = ""; }; + 0FF7299E166AD347000F5BA3 /* ProfilerExecutionCounter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfilerExecutionCounter.h; path = profiler/ProfilerExecutionCounter.h; sourceTree = ""; }; + 0FF7299F166AD347000F5BA3 /* ProfilerOrigin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProfilerOrigin.cpp; path = profiler/ProfilerOrigin.cpp; sourceTree = ""; }; + 0FF729A0166AD347000F5BA3 /* ProfilerOrigin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfilerOrigin.h; path = profiler/ProfilerOrigin.h; sourceTree = ""; }; + 0FF729A1166AD347000F5BA3 /* ProfilerOriginStack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProfilerOriginStack.cpp; path = profiler/ProfilerOriginStack.cpp; sourceTree = ""; }; + 0FF729A2166AD347000F5BA3 /* ProfilerOriginStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfilerOriginStack.h; path = profiler/ProfilerOriginStack.h; sourceTree = ""; }; + 0FF922CF14F46B130041A24E /* JSCLLIntOffsetsExtractor */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = JSCLLIntOffsetsExtractor; sourceTree = BUILT_PRODUCTS_DIR; }; + 0FFFC94B14EF909500C72532 /* DFGCFAPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGCFAPhase.cpp; path = dfg/DFGCFAPhase.cpp; sourceTree = ""; }; + 0FFFC94C14EF909500C72532 /* DFGCFAPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGCFAPhase.h; path = dfg/DFGCFAPhase.h; sourceTree = ""; }; + 0FFFC94D14EF909500C72532 /* DFGCSEPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGCSEPhase.cpp; path = dfg/DFGCSEPhase.cpp; sourceTree = ""; }; + 0FFFC94E14EF909500C72532 /* DFGCSEPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGCSEPhase.h; path = dfg/DFGCSEPhase.h; sourceTree = ""; }; + 0FFFC94F14EF909500C72532 /* DFGPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGPhase.cpp; path = dfg/DFGPhase.cpp; sourceTree = ""; }; + 0FFFC95014EF909500C72532 /* DFGPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGPhase.h; path = dfg/DFGPhase.h; sourceTree = ""; }; + 0FFFC95114EF909500C72532 /* DFGPredictionPropagationPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGPredictionPropagationPhase.cpp; path = dfg/DFGPredictionPropagationPhase.cpp; sourceTree = ""; }; + 0FFFC95214EF909500C72532 /* DFGPredictionPropagationPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGPredictionPropagationPhase.h; path = dfg/DFGPredictionPropagationPhase.h; sourceTree = ""; }; + 0FFFC95314EF909500C72532 /* DFGVirtualRegisterAllocationPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGVirtualRegisterAllocationPhase.cpp; path = dfg/DFGVirtualRegisterAllocationPhase.cpp; sourceTree = ""; }; + 0FFFC95414EF909500C72532 /* DFGVirtualRegisterAllocationPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGVirtualRegisterAllocationPhase.h; path = dfg/DFGVirtualRegisterAllocationPhase.h; sourceTree = ""; }; + 140D17D60E8AD4A9000CD17D /* JSBasePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBasePrivate.h; sourceTree = ""; }; + 141211020A48780900480255 /* minidom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = minidom.c; path = tests/minidom.c; sourceTree = ""; }; + 1412110D0A48788700480255 /* minidom.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; name = minidom.js; path = tests/minidom.js; sourceTree = ""; }; + 141211200A48793C00480255 /* minidom */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = minidom; sourceTree = BUILT_PRODUCTS_DIR; }; + 141448CA13A176EC00F5BA1A /* MarkedBlockSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarkedBlockSet.h; sourceTree = ""; }; + 141448CC13A1783700F5BA1A /* TinyBloomFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TinyBloomFilter.h; sourceTree = ""; }; + 14150132154BB13F005D8C98 /* WeakSetInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakSetInlines.h; sourceTree = ""; }; + 1420BE7A10AA6DDB00F455D2 /* WeakRandom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakRandom.h; sourceTree = ""; }; + 1421359A0A677F4F00A8195E /* JSBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSBase.cpp; sourceTree = ""; }; + 142711380A460BBB0080EEEA /* JSBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBase.h; sourceTree = ""; }; + 1429D77B0ED20D7300B89619 /* Interpreter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Interpreter.h; sourceTree = ""; }; + 1429D7D30ED2128200B89619 /* Interpreter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Interpreter.cpp; sourceTree = ""; }; + 1429D85B0ED218E900B89619 /* JSStack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSStack.cpp; sourceTree = ""; }; + 1429D8770ED21ACD00B89619 /* ExceptionHelpers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExceptionHelpers.cpp; sourceTree = ""; }; + 1429D8830ED21C3D00B89619 /* SamplingTool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SamplingTool.cpp; sourceTree = ""; }; + 1429D8840ED21C3D00B89619 /* SamplingTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SamplingTool.h; sourceTree = ""; }; + 1429D8DB0ED2205B00B89619 /* CallFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CallFrame.cpp; sourceTree = ""; }; + 1429D8DC0ED2205B00B89619 /* CallFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallFrame.h; sourceTree = ""; }; + 1429D92D0ED22D7000B89619 /* JIT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JIT.cpp; sourceTree = ""; }; + 1429D92E0ED22D7000B89619 /* JIT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JIT.h; sourceTree = ""; }; + 142D3938103E4560007DCB52 /* NumericStrings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumericStrings.h; sourceTree = ""; }; + 142D6F0613539A2800B02E86 /* MarkedBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MarkedBlock.cpp; sourceTree = ""; }; + 142D6F0713539A2800B02E86 /* MarkedBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarkedBlock.h; sourceTree = ""; }; + 142D6F0E13539A4100B02E86 /* MarkStack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MarkStack.cpp; sourceTree = ""; }; + 142D6F0F13539A4100B02E86 /* MarkStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarkStack.h; sourceTree = ""; }; + 142E312B134FF0A600AFADB5 /* Handle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Handle.h; sourceTree = ""; }; + 142E312C134FF0A600AFADB5 /* HandleSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HandleSet.cpp; sourceTree = ""; }; + 142E312D134FF0A600AFADB5 /* HandleSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HandleSet.h; sourceTree = ""; }; + 142E312E134FF0A600AFADB5 /* HandleStack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HandleStack.cpp; sourceTree = ""; }; + 142E312F134FF0A600AFADB5 /* HandleStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HandleStack.h; sourceTree = ""; }; + 142E3130134FF0A600AFADB5 /* Local.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Local.h; sourceTree = ""; }; + 142E3131134FF0A600AFADB5 /* LocalScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocalScope.h; sourceTree = ""; }; + 142E3132134FF0A600AFADB5 /* Strong.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Strong.h; sourceTree = ""; }; + 142E3133134FF0A600AFADB5 /* Weak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Weak.h; sourceTree = ""; }; + 1440051F0A531D3B0005F061 /* Node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Node.h; path = tests/Node.h; sourceTree = ""; }; + 144005200A531D3B0005F061 /* Node.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Node.c; path = tests/Node.c; sourceTree = ""; }; + 144007480A536CC20005F061 /* NodeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NodeList.h; path = tests/NodeList.h; sourceTree = ""; }; + 144007490A536CC20005F061 /* NodeList.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = NodeList.c; path = tests/NodeList.c; sourceTree = ""; }; + 144007550A5370D20005F061 /* JSNodeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSNodeList.h; path = tests/JSNodeList.h; sourceTree = ""; }; + 144007560A5370D20005F061 /* JSNodeList.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = JSNodeList.c; path = tests/JSNodeList.c; sourceTree = ""; }; + 1440F6410A4F8B6A0005F061 /* JSNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSNode.h; path = tests/JSNode.h; sourceTree = ""; }; + 1440F6420A4F8B6A0005F061 /* JSNode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = JSNode.c; path = tests/JSNode.c; sourceTree = ""; }; + 1440F88F0A508B100005F061 /* JSCallbackFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCallbackFunction.h; sourceTree = ""; }; + 1440F8900A508B100005F061 /* JSCallbackFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCallbackFunction.cpp; sourceTree = ""; }; + 1440F8AC0A508D200005F061 /* JSCallbackConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCallbackConstructor.h; sourceTree = ""; }; + 1440F8AD0A508D200005F061 /* JSCallbackConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCallbackConstructor.cpp; sourceTree = ""; }; + 1440FCE10A51E46B0005F061 /* JSClassRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSClassRef.h; sourceTree = ""; }; + 1440FCE20A51E46B0005F061 /* JSClassRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSClassRef.cpp; sourceTree = ""; }; + 1442565F15EDE98D0066A49B /* JSWithScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWithScope.cpp; sourceTree = ""; }; + 1442566015EDE98D0066A49B /* JSWithScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWithScope.h; sourceTree = ""; }; + 145722851437E140005FDE26 /* StrongInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StrongInlines.h; sourceTree = ""; }; + 145C507F0D9DF63B0088F6B9 /* CallData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallData.h; sourceTree = ""; }; + 146AAB2A0B66A84900E55F16 /* JSStringRefCF.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSStringRefCF.h; sourceTree = ""; }; + 146AAB370B66A94400E55F16 /* JSStringRefCF.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSStringRefCF.cpp; sourceTree = ""; }; + 146B14DB12EB5B12001BEC1B /* ConservativeRoots.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConservativeRoots.cpp; sourceTree = ""; }; + 146FA5A81378F6B0003627A3 /* HandleTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HandleTypes.h; sourceTree = ""; }; + 146FE51111A710430087AE66 /* JITCall32_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITCall32_64.cpp; sourceTree = ""; }; + 147B83AA0E6DB8C9004775A4 /* BatchedTransitionOptimizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BatchedTransitionOptimizer.h; sourceTree = ""; }; + 147B84620E6DE6B1004775A4 /* PutPropertySlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PutPropertySlot.h; sourceTree = ""; }; + 1480DB9B0DDC227F003CFDF2 /* DebuggerCallFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebuggerCallFrame.h; sourceTree = ""; }; + 14816E19154CC56C00B8054C /* BlockAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BlockAllocator.cpp; sourceTree = ""; }; + 14816E1A154CC56C00B8054C /* BlockAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockAllocator.h; sourceTree = ""; }; + 1482B6EA0A4300B300517CFC /* JSValueRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSValueRef.h; sourceTree = ""; }; + 1482B74B0A43032800517CFC /* JSStringRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStringRef.h; sourceTree = ""; }; + 1482B74C0A43032800517CFC /* JSStringRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSStringRef.cpp; sourceTree = ""; }; + 1482B78A0A4305AB00517CFC /* APICast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APICast.h; sourceTree = ""; }; + 1482B7E10A43076000517CFC /* JSObjectRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSObjectRef.h; sourceTree = ""; }; + 1482B7E20A43076000517CFC /* JSObjectRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSObjectRef.cpp; sourceTree = ""; }; + 14874ADF15EBDE4A002E3587 /* JSNameScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNameScope.cpp; sourceTree = ""; }; + 14874AE015EBDE4A002E3587 /* JSNameScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNameScope.h; sourceTree = ""; }; + 14874AE115EBDE4A002E3587 /* JSScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSScope.cpp; sourceTree = ""; }; + 14874AE215EBDE4A002E3587 /* JSScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSScope.h; sourceTree = ""; }; + 148CD1D7108CF902008163C6 /* JSContextRefPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSContextRefPrivate.h; sourceTree = ""; }; + 149559ED0DDCDDF700648087 /* DebuggerCallFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DebuggerCallFrame.cpp; sourceTree = ""; }; + 1497209014EB831500FEB1B7 /* PassWeak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PassWeak.h; sourceTree = ""; }; + 149B24FF0D8AF6D1009CB8C7 /* Register.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Register.h; sourceTree = ""; }; + 149DAAF212EB559D0083B12B /* ConservativeRoots.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConservativeRoots.h; sourceTree = ""; }; + 14A1563010966365006FA260 /* DateInstanceCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateInstanceCache.h; sourceTree = ""; }; + 14A23D6C0F4E19CE0023CDAD /* JITStubs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITStubs.cpp; sourceTree = ""; }; + 14A396A60CD2933100B5B4FF /* SymbolTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolTable.h; sourceTree = ""; }; + 14A6581A0F4E36F4000150FD /* JITStubs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITStubs.h; sourceTree = ""; }; + 14ABB36E099C076400E2A24F /* JSCJSValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCJSValue.h; sourceTree = ""; }; + 14ABB454099C2A0F00E2A24F /* JSType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSType.h; sourceTree = ""; }; + 14ABDF5D0A437FEF00ECCA01 /* JSCallbackObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCallbackObject.h; sourceTree = ""; }; + 14ABDF5E0A437FEF00ECCA01 /* JSCallbackObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCallbackObject.cpp; sourceTree = ""; }; + 14B7233F12D7D0DA003BD5ED /* MachineStackMarker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MachineStackMarker.cpp; sourceTree = ""; }; + 14B7234012D7D0DA003BD5ED /* MachineStackMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MachineStackMarker.h; sourceTree = ""; }; + 14BA78F013AAB88F005B7C2C /* SlotVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlotVisitor.h; sourceTree = ""; }; + 14BA7A9513AADFF8005B7C2C /* Heap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Heap.cpp; sourceTree = ""; }; + 14BA7A9613AADFF8005B7C2C /* Heap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Heap.h; sourceTree = ""; }; + 14BD59BF0A3E8F9000BAF59C /* testapi */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testapi; sourceTree = BUILT_PRODUCTS_DIR; }; + 14BD5A290A3E91F600BAF59C /* JSContextRef.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSContextRef.cpp; sourceTree = ""; }; + 14BD5A2A0A3E91F600BAF59C /* JSContextRef.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSContextRef.h; sourceTree = ""; }; + 14BD5A2B0A3E91F600BAF59C /* JSValueRef.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSValueRef.cpp; sourceTree = ""; }; + 14BD5A2D0A3E91F600BAF59C /* testapi.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = testapi.c; path = API/tests/testapi.c; sourceTree = ""; }; + 14BE7D3217135CF400D1807A /* WeakInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakInlines.h; sourceTree = ""; }; + 14BFCE6810CDB1FC00364CCE /* WeakGCMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakGCMap.h; sourceTree = ""; }; + 14CA958A16AB50DE00938A06 /* StaticPropertyAnalyzer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StaticPropertyAnalyzer.h; sourceTree = ""; }; + 14CA958C16AB50FA00938A06 /* ObjectAllocationProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectAllocationProfile.h; sourceTree = ""; }; + 14D2F3D8139F4BE200491031 /* MarkedSpace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MarkedSpace.cpp; sourceTree = ""; }; + 14D2F3D9139F4BE200491031 /* MarkedSpace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarkedSpace.h; sourceTree = ""; }; + 14D792640DAA03FB001A9F05 /* JSStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStack.h; sourceTree = ""; }; + 14D844A216AA2C7000A65AF0 /* PrototypeMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PrototypeMap.cpp; sourceTree = ""; }; + 14D844A316AA2C7000A65AF0 /* PrototypeMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrototypeMap.h; sourceTree = ""; }; + 14D857740A4696C80032146C /* testapi.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; name = testapi.js; path = API/tests/testapi.js; sourceTree = ""; }; + 14DA818E0D99FD2000B0A4FB /* JSActivation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSActivation.h; sourceTree = ""; }; + 14DA818F0D99FD2000B0A4FB /* JSActivation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSActivation.cpp; sourceTree = ""; }; + 14DE0D680D02431400AACCA2 /* JSGlobalObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSGlobalObject.cpp; sourceTree = ""; }; + 14DF04D916B3996D0016A513 /* StaticPropertyAnalysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StaticPropertyAnalysis.h; sourceTree = ""; }; + 14E84F9914EE1ACC00D6D5D4 /* WeakBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WeakBlock.cpp; sourceTree = ""; }; + 14E84F9A14EE1ACC00D6D5D4 /* WeakBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakBlock.h; sourceTree = ""; }; + 14E84F9B14EE1ACC00D6D5D4 /* WeakSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WeakSet.cpp; sourceTree = ""; }; + 14E84F9C14EE1ACC00D6D5D4 /* WeakSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakSet.h; sourceTree = ""; }; + 14E84F9D14EE1ACC00D6D5D4 /* WeakImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakImpl.h; sourceTree = ""; }; + 14F252560D08DD8D004ECFFF /* JSVariableObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVariableObject.h; sourceTree = ""; }; + 14F7256314EE265E00B1652B /* WeakHandleOwner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WeakHandleOwner.cpp; sourceTree = ""; }; + 14F7256414EE265E00B1652B /* WeakHandleOwner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakHandleOwner.h; sourceTree = ""; }; + 14F97446138C853E00DA1C67 /* HeapRootVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeapRootVisitor.h; sourceTree = ""; }; + 1A28D4A7177B71C80007FA3C /* JSStringRefPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStringRefPrivate.h; sourceTree = ""; }; + 1ACF7376171CA6FB00C9BB1E /* Weak.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Weak.cpp; sourceTree = ""; }; + 1C9051420BA9E8A70081E9D0 /* Version.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = ""; }; + 1C9051430BA9E8A70081E9D0 /* JavaScriptCore.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = JavaScriptCore.xcconfig; sourceTree = ""; }; + 1C9051440BA9E8A70081E9D0 /* DebugRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = ""; }; + 1C9051450BA9E8A70081E9D0 /* Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = ""; }; + 1CAA8B4A0D32C39A0041BCFF /* JavaScript.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JavaScript.h; sourceTree = ""; }; + 1CAA8B4B0D32C39A0041BCFF /* JavaScriptCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JavaScriptCore.h; sourceTree = ""; }; + 2600B5A4152BAAA70091EE5F /* JSStringJoiner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSStringJoiner.cpp; sourceTree = ""; }; + 2600B5A5152BAAA70091EE5F /* JSStringJoiner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStringJoiner.h; sourceTree = ""; }; + 449097EE0F8F81B50076A327 /* FeatureDefines.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FeatureDefines.xcconfig; sourceTree = ""; }; + 451539B812DC994500EF7AC4 /* Yarr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Yarr.h; path = yarr/Yarr.h; sourceTree = ""; }; + 45E12D8806A49B0F00E9DF84 /* jsc.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = jsc.cpp; sourceTree = ""; tabWidth = 4; }; + 51F0EB6105C86C6B00E6DF1B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 51F0EC0705C86C9A00E6DF1B /* libobjc.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libobjc.dylib; path = /usr/lib/libobjc.dylib; sourceTree = ""; }; + 5D53726D0E1C546B0021E549 /* Tracing.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Tracing.d; sourceTree = ""; }; + 5D53726E0E1C54880021E549 /* Tracing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Tracing.h; sourceTree = ""; }; + 5D53727D0E1C55EC0021E549 /* TracingDtrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TracingDtrace.h; sourceTree = ""; }; + 5D5D8AD00E0D0EBE00F9C692 /* libedit.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libedit.dylib; path = /usr/lib/libedit.dylib; sourceTree = ""; }; + 5DAFD6CB146B686300FBEFB4 /* JSC.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = JSC.xcconfig; sourceTree = ""; }; + 5DDDF44614FEE72200B4FB4D /* LLIntDesiredOffsets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntDesiredOffsets.h; path = LLIntOffsets/LLIntDesiredOffsets.h; sourceTree = BUILT_PRODUCTS_DIR; }; + 5DE3D0F40DD8DDFB00468714 /* WebKitAvailability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitAvailability.h; sourceTree = ""; }; + 6507D2970E871E4A00D7D896 /* JSTypeInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTypeInfo.h; sourceTree = ""; }; + 651122E5140469BA002B101D /* testRegExp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = testRegExp.cpp; sourceTree = ""; }; + 6511230514046A4C002B101D /* testRegExp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testRegExp; sourceTree = BUILT_PRODUCTS_DIR; }; + 65303D631447B9E100D3F904 /* ParserTokens.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParserTokens.h; sourceTree = ""; }; + 65400C0F0A69BAF200509887 /* PropertyNameArray.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PropertyNameArray.cpp; sourceTree = ""; }; + 65400C100A69BAF200509887 /* PropertyNameArray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PropertyNameArray.h; sourceTree = ""; }; + 655EB29A10CE2581001A990E /* NodesCodegen.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NodesCodegen.cpp; sourceTree = ""; }; + 6560A4CF04B3B3E7008AE952 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; + 65621E6B089E859700760F35 /* PropertySlot.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PropertySlot.cpp; sourceTree = ""; tabWidth = 8; }; + 65621E6C089E859700760F35 /* PropertySlot.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = PropertySlot.h; sourceTree = ""; tabWidth = 8; }; + 65987F2C167FE84B003C2F8D /* DFGOSRExitCompilationInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGOSRExitCompilationInfo.h; path = dfg/DFGOSRExitCompilationInfo.h; sourceTree = ""; }; + 65987F2F16828A7E003C2F8D /* UnusedPointer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnusedPointer.h; sourceTree = ""; }; + 65C0284F171795E200351E35 /* ARMv7Disassembler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ARMv7Disassembler.cpp; path = disassembler/ARMv7Disassembler.cpp; sourceTree = ""; }; + 65C0285A1717966800351E35 /* ARMv7DOpcode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ARMv7DOpcode.cpp; sourceTree = ""; }; + 65C0285B1717966800351E35 /* ARMv7DOpcode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARMv7DOpcode.h; sourceTree = ""; }; + 65C02FBB0637462A003E7EE6 /* Protect.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Protect.h; sourceTree = ""; tabWidth = 8; }; + 65C7A1710A8EAACB00FA37EA /* JSWrapperObject.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSWrapperObject.cpp; sourceTree = ""; }; + 65C7A1720A8EAACB00FA37EA /* JSWrapperObject.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSWrapperObject.h; sourceTree = ""; }; + 65E866ED0DD59AFA00A2B2A1 /* SourceProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SourceProvider.h; sourceTree = ""; }; + 65E866EE0DD59AFA00A2B2A1 /* SourceCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SourceCode.h; sourceTree = ""; }; + 65EA4C99092AF9E20093D800 /* JSLock.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSLock.cpp; sourceTree = ""; tabWidth = 8; }; + 65EA4C9A092AF9E20093D800 /* JSLock.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = JSLock.h; sourceTree = ""; tabWidth = 8; }; + 65EA73620BAE35D1001BB560 /* CommonIdentifiers.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CommonIdentifiers.cpp; sourceTree = ""; }; + 65EA73630BAE35D1001BB560 /* CommonIdentifiers.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CommonIdentifiers.h; sourceTree = ""; }; + 704FD35305697E6D003DBED9 /* BooleanObject.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = BooleanObject.h; sourceTree = ""; tabWidth = 8; }; + 7E4EE7080EBB7963005934AA /* StructureChain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructureChain.h; sourceTree = ""; }; + 7E4EE70E0EBB7A5B005934AA /* StructureChain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StructureChain.cpp; sourceTree = ""; }; + 7EFF00630EC05A9A00AA7C93 /* NodeInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeInfo.h; sourceTree = ""; }; + 860161DF0F3A83C100F84710 /* AbstractMacroAssembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AbstractMacroAssembler.h; sourceTree = ""; }; + 860161E00F3A83C100F84710 /* MacroAssemblerX86.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacroAssemblerX86.h; sourceTree = ""; }; + 860161E10F3A83C100F84710 /* MacroAssemblerX86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacroAssemblerX86_64.h; sourceTree = ""; }; + 860161E20F3A83C100F84710 /* MacroAssemblerX86Common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacroAssemblerX86Common.h; sourceTree = ""; }; + 8603CEF214C7546400AE59E3 /* CodeProfiling.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CodeProfiling.cpp; sourceTree = ""; }; + 8603CEF314C7546400AE59E3 /* CodeProfiling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeProfiling.h; sourceTree = ""; }; + 8604F4F2143A6C4400B295F5 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + 8612E4CB1522918400C836BE /* MatchResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MatchResult.h; sourceTree = ""; }; + 86158AB2155C8B3F00B45C9C /* PropertyName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PropertyName.h; sourceTree = ""; }; + 862553CE16136AA5009F17D0 /* JSProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSProxy.cpp; sourceTree = ""; }; + 862553CF16136AA5009F17D0 /* JSProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSProxy.h; sourceTree = ""; }; + 863B23DF0FC60E6200703AA4 /* MacroAssemblerCodeRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacroAssemblerCodeRef.h; sourceTree = ""; }; + 863C6D981521111200585E4E /* YarrCanonicalizeUCS2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = YarrCanonicalizeUCS2.cpp; path = yarr/YarrCanonicalizeUCS2.cpp; sourceTree = ""; }; + 863C6D991521111200585E4E /* YarrCanonicalizeUCS2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = YarrCanonicalizeUCS2.h; path = yarr/YarrCanonicalizeUCS2.h; sourceTree = ""; }; + 863C6D9A1521111200585E4E /* YarrCanonicalizeUCS2.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; name = YarrCanonicalizeUCS2.js; path = yarr/YarrCanonicalizeUCS2.js; sourceTree = ""; }; + 865A30F0135007E100CDB49E /* JSCJSValueInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCJSValueInlines.h; sourceTree = ""; }; + 865F408710E7D56300947361 /* APIShims.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIShims.h; sourceTree = ""; }; + 866739D013BFDE710023D87C /* BigInteger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BigInteger.h; sourceTree = ""; }; + 866739D113BFDE710023D87C /* Uint16WithFraction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Uint16WithFraction.h; sourceTree = ""; }; + 86704B4012DB8A8100A9FE7B /* YarrSyntaxChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = YarrSyntaxChecker.cpp; path = yarr/YarrSyntaxChecker.cpp; sourceTree = ""; }; + 86704B4112DB8A8100A9FE7B /* YarrSyntaxChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = YarrSyntaxChecker.h; path = yarr/YarrSyntaxChecker.h; sourceTree = ""; }; + 86704B7D12DBA33700A9FE7B /* YarrInterpreter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = YarrInterpreter.cpp; path = yarr/YarrInterpreter.cpp; sourceTree = ""; }; + 86704B7E12DBA33700A9FE7B /* YarrInterpreter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = YarrInterpreter.h; path = yarr/YarrInterpreter.h; sourceTree = ""; }; + 86704B7F12DBA33700A9FE7B /* YarrJIT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = YarrJIT.cpp; path = yarr/YarrJIT.cpp; sourceTree = ""; }; + 86704B8012DBA33700A9FE7B /* YarrJIT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = YarrJIT.h; path = yarr/YarrJIT.h; sourceTree = ""; }; + 86704B8112DBA33700A9FE7B /* YarrParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = YarrParser.h; path = yarr/YarrParser.h; sourceTree = ""; }; + 86704B8212DBA33700A9FE7B /* YarrPattern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = YarrPattern.cpp; path = yarr/YarrPattern.cpp; sourceTree = ""; }; + 86704B8312DBA33700A9FE7B /* YarrPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = YarrPattern.h; path = yarr/YarrPattern.h; sourceTree = ""; }; + 86880F1B14328BB900B08D42 /* DFGSpeculativeJIT32_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGSpeculativeJIT32_64.cpp; path = dfg/DFGSpeculativeJIT32_64.cpp; sourceTree = ""; }; + 86880F4C14353B2100B08D42 /* DFGSpeculativeJIT64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGSpeculativeJIT64.cpp; path = dfg/DFGSpeculativeJIT64.cpp; sourceTree = ""; }; + 868916A9155F285400CB2B9A /* PrivateName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrivateName.h; sourceTree = ""; }; + 869D04AE1193B54D00803475 /* CachedTranscendentalFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedTranscendentalFunction.h; sourceTree = ""; }; + 869EBCB60E8C6D4A008722CC /* ResultType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResultType.h; sourceTree = ""; }; + 86A054461556451B00445157 /* LowLevelInterpreter.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; name = LowLevelInterpreter.asm; path = llint/LowLevelInterpreter.asm; sourceTree = ""; }; + 86A054471556451B00445157 /* LowLevelInterpreter32_64.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; name = LowLevelInterpreter32_64.asm; path = llint/LowLevelInterpreter32_64.asm; sourceTree = ""; }; + 86A054481556451B00445157 /* LowLevelInterpreter64.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; name = LowLevelInterpreter64.asm; path = llint/LowLevelInterpreter64.asm; sourceTree = ""; }; + 86A90ECF0EE7D51F00AB350D /* JITArithmetic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITArithmetic.cpp; sourceTree = ""; }; + 86ADD1430FDDEA980006EEC2 /* ARMv7Assembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARMv7Assembler.h; sourceTree = ""; }; + 86ADD1440FDDEA980006EEC2 /* MacroAssemblerARMv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacroAssemblerARMv7.h; sourceTree = ""; }; + 86AE64A6135E5E1C00963012 /* MacroAssemblerSH4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacroAssemblerSH4.h; sourceTree = ""; }; + 86AE64A7135E5E1C00963012 /* SH4Assembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SH4Assembler.h; sourceTree = ""; }; + 86AE6C4B136A11E400963012 /* DFGFPRInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGFPRInfo.h; path = dfg/DFGFPRInfo.h; sourceTree = ""; }; + 86AE6C4C136A11E400963012 /* DFGGPRInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGGPRInfo.h; path = dfg/DFGGPRInfo.h; sourceTree = ""; }; + 86B5822C14D22F5F00A9C306 /* ProfileTreeNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProfileTreeNode.h; sourceTree = ""; }; + 86B5822E14D2373B00A9C306 /* CodeProfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CodeProfile.cpp; sourceTree = ""; }; + 86B5822F14D2373B00A9C306 /* CodeProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeProfile.h; sourceTree = ""; }; + 86B5826A14D35D5100A9C306 /* TieredMMapArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TieredMMapArray.h; sourceTree = ""; }; + 86BB09BE138E381B0056702F /* DFGRepatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGRepatch.cpp; path = dfg/DFGRepatch.cpp; sourceTree = ""; }; + 86BB09BF138E381B0056702F /* DFGRepatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGRepatch.h; path = dfg/DFGRepatch.h; sourceTree = ""; }; + 86BF642A148DB2B5004DE36A /* Intrinsic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Intrinsic.h; sourceTree = ""; }; + 86C36EE90EE1289D00B3DF59 /* MacroAssembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacroAssembler.h; sourceTree = ""; }; + 86C568DD11A213EE0007F7F0 /* MacroAssemblerARM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MacroAssemblerARM.cpp; sourceTree = ""; }; + 86C568DE11A213EE0007F7F0 /* MacroAssemblerMIPS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacroAssemblerMIPS.h; sourceTree = ""; }; + 86C568DF11A213EE0007F7F0 /* MIPSAssembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MIPSAssembler.h; sourceTree = ""; }; + 86CA032D1038E8440028A609 /* Executable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Executable.cpp; sourceTree = ""; }; + 86CAFEE21035DDE60028A609 /* Executable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Executable.h; sourceTree = ""; }; + 86CC85A00EE79A4700288682 /* JITInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITInlines.h; sourceTree = ""; }; + 86CC85A20EE79B7400288682 /* JITCall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITCall.cpp; sourceTree = ""; }; + 86CC85C30EE7A89400288682 /* JITPropertyAccess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITPropertyAccess.cpp; sourceTree = ""; }; + 86CCEFDD0F413F8900FD7F9E /* JITCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITCode.h; sourceTree = ""; }; + 86D22219167EF9440024C804 /* testapi.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = testapi.mm; path = API/tests/testapi.mm; sourceTree = ""; }; + 86D3B2BF10156BDE002865E7 /* ARMAssembler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ARMAssembler.cpp; sourceTree = ""; }; + 86D3B2C010156BDE002865E7 /* ARMAssembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARMAssembler.h; sourceTree = ""; }; + 86D3B2C110156BDE002865E7 /* AssemblerBufferWithConstantPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AssemblerBufferWithConstantPool.h; sourceTree = ""; }; + 86D3B2C210156BDE002865E7 /* MacroAssemblerARM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacroAssemblerARM.h; sourceTree = ""; }; + 86D3B3C110159D7F002865E7 /* LinkBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinkBuffer.h; sourceTree = ""; }; + 86D3B3C210159D7F002865E7 /* RepatchBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RepatchBuffer.h; sourceTree = ""; }; + 86DB64630F95C6FC00D7D921 /* ExecutableAllocatorFixedVMPool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExecutableAllocatorFixedVMPool.cpp; sourceTree = ""; }; + 86E116B00FE75AC800B512BC /* CodeLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeLocation.h; sourceTree = ""; }; + 86E3C606167BAB87006D760A /* JSValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSValue.h; sourceTree = ""; }; + 86E3C607167BAB87006D760A /* JSContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSContext.h; sourceTree = ""; }; + 86E3C608167BAB87006D760A /* JSContext.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = JSContext.mm; sourceTree = ""; }; + 86E3C609167BAB87006D760A /* JSContextInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSContextInternal.h; sourceTree = ""; }; + 86E3C60A167BAB87006D760A /* JSExport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSExport.h; sourceTree = ""; }; + 86E3C60B167BAB87006D760A /* JSWrapperMap.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = JSWrapperMap.mm; sourceTree = ""; }; + 86E3C60C167BAB87006D760A /* JSWrapperMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWrapperMap.h; sourceTree = ""; }; + 86E3C60D167BAB87006D760A /* JSValue.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = JSValue.mm; sourceTree = ""; }; + 86E3C60E167BAB87006D760A /* JSValueInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSValueInternal.h; sourceTree = ""; }; + 86E3C60F167BAB87006D760A /* JSVirtualMachine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVirtualMachine.h; sourceTree = ""; }; + 86E3C610167BAB87006D760A /* JSVirtualMachine.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = JSVirtualMachine.mm; sourceTree = ""; }; + 86E3C611167BAB87006D760A /* JSVirtualMachineInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVirtualMachineInternal.h; sourceTree = ""; }; + 86E85538111B9968001AF51E /* JSStringBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStringBuilder.h; sourceTree = ""; }; + 86EBF2F91560F036008E9222 /* NameConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NameConstructor.cpp; sourceTree = ""; }; + 86EBF2FA1560F036008E9222 /* NameConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NameConstructor.h; sourceTree = ""; }; + 86EBF2FB1560F036008E9222 /* NameInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NameInstance.cpp; sourceTree = ""; }; + 86EBF2FC1560F036008E9222 /* NameInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NameInstance.h; sourceTree = ""; }; + 86EBF2FD1560F036008E9222 /* NamePrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NamePrototype.cpp; sourceTree = ""; }; + 86EBF2FE1560F036008E9222 /* NamePrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NamePrototype.h; sourceTree = ""; }; + 86EC9DB41328DF82002B2AD7 /* DFGByteCodeParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGByteCodeParser.cpp; path = dfg/DFGByteCodeParser.cpp; sourceTree = ""; }; + 86EC9DB51328DF82002B2AD7 /* DFGByteCodeParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGByteCodeParser.h; path = dfg/DFGByteCodeParser.h; sourceTree = ""; }; + 86EC9DB61328DF82002B2AD7 /* DFGGenerationInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGGenerationInfo.h; path = dfg/DFGGenerationInfo.h; sourceTree = ""; }; + 86EC9DB71328DF82002B2AD7 /* DFGGraph.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGGraph.cpp; path = dfg/DFGGraph.cpp; sourceTree = ""; }; + 86EC9DB81328DF82002B2AD7 /* DFGGraph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGGraph.h; path = dfg/DFGGraph.h; sourceTree = ""; }; + 86EC9DBB1328DF82002B2AD7 /* DFGJITCompiler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGJITCompiler.cpp; path = dfg/DFGJITCompiler.cpp; sourceTree = ""; }; + 86EC9DBC1328DF82002B2AD7 /* DFGJITCompiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGJITCompiler.h; path = dfg/DFGJITCompiler.h; sourceTree = ""; }; + 86EC9DBF1328DF82002B2AD7 /* DFGOperations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGOperations.cpp; path = dfg/DFGOperations.cpp; sourceTree = ""; }; + 86EC9DC01328DF82002B2AD7 /* DFGOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGOperations.h; path = dfg/DFGOperations.h; sourceTree = ""; }; + 86EC9DC11328DF82002B2AD7 /* DFGRegisterBank.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGRegisterBank.h; path = dfg/DFGRegisterBank.h; sourceTree = ""; }; + 86EC9DC21328DF82002B2AD7 /* DFGSpeculativeJIT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGSpeculativeJIT.cpp; path = dfg/DFGSpeculativeJIT.cpp; sourceTree = ""; }; + 86EC9DC31328DF82002B2AD7 /* DFGSpeculativeJIT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGSpeculativeJIT.h; path = dfg/DFGSpeculativeJIT.h; sourceTree = ""; }; + 86ECA3E9132DEF1C002B2AD7 /* DFGNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGNode.h; path = dfg/DFGNode.h; sourceTree = ""; }; + 86ECA3F9132DF25A002B2AD7 /* DFGScoreBoard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGScoreBoard.h; path = dfg/DFGScoreBoard.h; sourceTree = ""; }; + 86F3EEB616855A5B0077B92A /* ObjcRuntimeExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjcRuntimeExtras.h; sourceTree = ""; }; + 86F3EEB9168CCF750077B92A /* ObjCCallbackFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjCCallbackFunction.h; sourceTree = ""; }; + 86F3EEBA168CCF750077B92A /* ObjCCallbackFunction.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ObjCCallbackFunction.mm; sourceTree = ""; }; + 86F75EFB151C062F007C9BA3 /* RegExpCachedResult.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegExpCachedResult.cpp; sourceTree = ""; }; + 86F75EFC151C062F007C9BA3 /* RegExpCachedResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpCachedResult.h; sourceTree = ""; }; + 86F75EFD151C062F007C9BA3 /* RegExpMatchesArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegExpMatchesArray.cpp; sourceTree = ""; }; + 86FA9E8F142BBB2D001773B7 /* JSBoundFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSBoundFunction.cpp; sourceTree = ""; }; + 86FA9E90142BBB2E001773B7 /* JSBoundFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBoundFunction.h; sourceTree = ""; }; + 90213E3B123A40C200D422F3 /* MemoryStatistics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryStatistics.cpp; sourceTree = ""; }; + 90213E3C123A40C200D422F3 /* MemoryStatistics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryStatistics.h; sourceTree = ""; }; + 93052C320FB792190048FDC3 /* ParserArena.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParserArena.cpp; sourceTree = ""; }; + 93052C330FB792190048FDC3 /* ParserArena.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParserArena.h; sourceTree = ""; }; + 930DAD030FB1EB1A0082D205 /* NodeConstructors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeConstructors.h; sourceTree = ""; }; + 9322A00306C341D3009067BB /* libicucore.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicucore.dylib; path = /usr/lib/libicucore.dylib; sourceTree = ""; }; + 932F5BD80822A1C700736975 /* Info.plist */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; tabWidth = 8; usesTabs = 1; }; + 932F5BD90822A1C700736975 /* JavaScriptCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = JavaScriptCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 932F5BE10822A1C700736975 /* jsc */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jsc; sourceTree = BUILT_PRODUCTS_DIR; }; + 93303FE80E6A72B500786E6A /* SmallStrings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SmallStrings.cpp; sourceTree = ""; }; + 93303FEA0E6A72C000786E6A /* SmallStrings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SmallStrings.h; sourceTree = ""; }; + 93345A8712D838C400302BE3 /* StringRecursionChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringRecursionChecker.cpp; sourceTree = ""; }; + 93345A8812D838C400302BE3 /* StringRecursionChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringRecursionChecker.h; sourceTree = ""; }; + 933A349A038AE7C6008635CE /* Identifier.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Identifier.h; sourceTree = ""; tabWidth = 8; }; + 933A349D038AE80F008635CE /* Identifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Identifier.cpp; sourceTree = ""; tabWidth = 8; }; + 937B63CC09E766D200A671DD /* DerivedSources.make */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; path = DerivedSources.make; sourceTree = ""; usesTabs = 1; }; + 938772E5038BFE19008635CE /* JSArray.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = JSArray.h; sourceTree = ""; tabWidth = 8; }; + 93ADFCE60CCBD7AC00D30B08 /* JSArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSArray.cpp; sourceTree = ""; }; + 93CEDDFB0EA91EE600258EBE /* RegExpMatchesArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpMatchesArray.h; sourceTree = ""; }; + 93F0B3A909BB4DC00068FCE3 /* Parser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Parser.cpp; sourceTree = ""; }; + 93F0B3AA09BB4DC00068FCE3 /* Parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Parser.h; sourceTree = ""; }; + 93F1981A08245AAE001E9ABC /* Keywords.table */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = text; path = Keywords.table; sourceTree = ""; tabWidth = 8; }; + 952C63AC0E4777D600C13936 /* JSProfilerPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSProfilerPrivate.h; sourceTree = ""; }; + 95742F630DD11F5A000917FB /* Profile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Profile.cpp; path = profiler/Profile.cpp; sourceTree = ""; }; + 95742F640DD11F5A000917FB /* Profile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Profile.h; path = profiler/Profile.h; sourceTree = ""; }; + 95988BA90E477BEC00D28D4D /* JSProfilerPrivate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSProfilerPrivate.cpp; sourceTree = ""; }; + 95AB832E0DA42CAD00BC83F3 /* LegacyProfiler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LegacyProfiler.cpp; path = profiler/LegacyProfiler.cpp; sourceTree = ""; }; + 95AB832F0DA42CAD00BC83F3 /* LegacyProfiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LegacyProfiler.h; path = profiler/LegacyProfiler.h; sourceTree = ""; }; + 95AB83540DA43B4400BC83F3 /* ProfileNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProfileNode.cpp; path = profiler/ProfileNode.cpp; sourceTree = ""; }; + 95AB83550DA43B4400BC83F3 /* ProfileNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfileNode.h; path = profiler/ProfileNode.h; sourceTree = ""; }; + 95C18D3E0C90E7EF00E72F73 /* JSRetainPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSRetainPtr.h; sourceTree = ""; }; + 95CD45740E1C4FDD0085358E /* ProfileGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProfileGenerator.cpp; path = profiler/ProfileGenerator.cpp; sourceTree = ""; }; + 95CD45750E1C4FDD0085358E /* ProfileGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfileGenerator.h; path = profiler/ProfileGenerator.h; sourceTree = ""; }; + 95E3BC040E1AE68200B2D1C1 /* CallIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CallIdentifier.h; path = profiler/CallIdentifier.h; sourceTree = ""; }; + 960097A50EBABB58007A7297 /* LabelScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelScope.h; sourceTree = ""; }; + 960626950FB8EC02009798AB /* JITStubCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITStubCall.h; sourceTree = ""; }; + 9688CB130ED12B4E001D649F /* AssemblerBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AssemblerBuffer.h; sourceTree = ""; }; + 9688CB140ED12B4E001D649F /* X86Assembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = X86Assembler.h; sourceTree = ""; }; + 969A07200ED1CE3300F1F681 /* BytecodeGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BytecodeGenerator.cpp; sourceTree = ""; }; + 969A07210ED1CE3300F1F681 /* BytecodeGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BytecodeGenerator.h; sourceTree = ""; }; + 969A07270ED1CE6900F1F681 /* Label.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Label.h; sourceTree = ""; }; + 969A07280ED1CE6900F1F681 /* RegisterID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterID.h; sourceTree = ""; }; + 969A07900ED1D3AE00F1F681 /* CodeBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CodeBlock.cpp; sourceTree = ""; }; + 969A07910ED1D3AE00F1F681 /* CodeBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeBlock.h; sourceTree = ""; }; + 969A07920ED1D3AE00F1F681 /* EvalCodeCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EvalCodeCache.h; sourceTree = ""; }; + 969A07930ED1D3AE00F1F681 /* Instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Instruction.h; sourceTree = ""; }; + 969A07940ED1D3AE00F1F681 /* Opcode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Opcode.cpp; sourceTree = ""; }; + 969A07950ED1D3AE00F1F681 /* Opcode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Opcode.h; sourceTree = ""; }; + 969A09220ED1E09C00F1F681 /* Completion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Completion.cpp; sourceTree = ""; }; + 9788FC221471AD0C0068CE2D /* JSDateMath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDateMath.cpp; sourceTree = ""; }; + 9788FC231471AD0C0068CE2D /* JSDateMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDateMath.h; sourceTree = ""; }; + A1712B3A11C7B212007A5315 /* RegExpCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegExpCache.cpp; sourceTree = ""; }; + A1712B3E11C7B228007A5315 /* RegExpCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpCache.h; sourceTree = ""; }; + A1712B4011C7B235007A5315 /* RegExpKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpKey.h; sourceTree = ""; }; + A71236E41195F33C00BD2174 /* JITOpcodes32_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITOpcodes32_64.cpp; sourceTree = ""; }; + A718F61A11754A21002465A7 /* RegExpJitTables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpJitTables.h; sourceTree = ""; }; + A718F8211178EB4B002465A7 /* create_regex_tables */ = {isa = PBXFileReference; explicitFileType = text.script.python; fileEncoding = 4; path = create_regex_tables; sourceTree = ""; }; + A72028B41797601E0098028C /* JSCTestRunnerUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCTestRunnerUtils.cpp; sourceTree = ""; }; + A72028B51797601E0098028C /* JSCTestRunnerUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCTestRunnerUtils.h; sourceTree = ""; }; + A72028B91797603D0098028C /* JSFunctionInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFunctionInlines.h; sourceTree = ""; }; + A72700770DAC605600E548D7 /* JSNotAnObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNotAnObject.h; sourceTree = ""; }; + A72700780DAC605600E548D7 /* JSNotAnObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNotAnObject.cpp; sourceTree = ""; }; + A72701B30DADE94900E548D7 /* ExceptionHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExceptionHelpers.h; sourceTree = ""; }; + A727FF650DA3053B00E548D7 /* JSPropertyNameIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPropertyNameIterator.h; sourceTree = ""; }; + A727FF660DA3053B00E548D7 /* JSPropertyNameIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPropertyNameIterator.cpp; sourceTree = ""; }; + A730B6101250068F009D25B1 /* StrictEvalActivation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StrictEvalActivation.h; sourceTree = ""; }; + A730B6111250068F009D25B1 /* StrictEvalActivation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StrictEvalActivation.cpp; sourceTree = ""; }; + A7386551118697B400540279 /* SpecializedThunkJIT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpecializedThunkJIT.h; sourceTree = ""; }; + A7386552118697B400540279 /* ThunkGenerators.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThunkGenerators.cpp; sourceTree = ""; }; + A7386553118697B400540279 /* ThunkGenerators.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThunkGenerators.h; sourceTree = ""; }; + A7482B791166CDEA003B0712 /* JSWeakObjectMapRefPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWeakObjectMapRefPrivate.h; sourceTree = ""; }; + A7482B7A1166CDEA003B0712 /* JSWeakObjectMapRefPrivate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWeakObjectMapRefPrivate.cpp; sourceTree = ""; }; + A7482E37116A697B003B0712 /* JSWeakObjectMapRefInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWeakObjectMapRefInternal.h; sourceTree = ""; }; + A74DE1CB120B86D600D40D5B /* ARMv7Assembler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ARMv7Assembler.cpp; sourceTree = ""; }; + A75706DD118A2BCF0057F88F /* JITArithmetic32_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITArithmetic32_64.cpp; sourceTree = ""; }; + A767FF9F14F4502900789059 /* JSCTypedArrayStubs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCTypedArrayStubs.h; sourceTree = ""; }; + A76C51741182748D00715B05 /* JSInterfaceJIT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSInterfaceJIT.h; sourceTree = ""; }; + A76F54A213B28AAB00EF2BCE /* JITWriteBarrier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITWriteBarrier.h; sourceTree = ""; }; + A77F181F164088B200640A47 /* CodeCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CodeCache.cpp; sourceTree = ""; }; + A77F1820164088B200640A47 /* CodeCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeCache.h; sourceTree = ""; }; + A77F18241641925400640A47 /* ParserModes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ParserModes.h; sourceTree = ""; }; + A79E781E15EECBA80047C855 /* UnlinkedCodeBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UnlinkedCodeBlock.cpp; sourceTree = ""; }; + A79E781F15EECBA80047C855 /* UnlinkedCodeBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnlinkedCodeBlock.h; sourceTree = ""; }; + A79EDB0811531CD60019E912 /* JSObjectRefPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSObjectRefPrivate.h; sourceTree = ""; }; + A7A7EE7411B98B8D0065A14F /* ASTBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASTBuilder.h; sourceTree = ""; }; + A7A7EE7711B98B8D0065A14F /* SyntaxChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SyntaxChecker.h; sourceTree = ""; }; + A7AFC17715F7EFE30048F57B /* ResolveOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResolveOperation.h; sourceTree = ""; }; + A7B48DB50EE74CFC00DCBDB6 /* ExecutableAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExecutableAllocator.h; sourceTree = ""; }; + A7B48DB60EE74CFC00DCBDB6 /* ExecutableAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExecutableAllocator.cpp; sourceTree = ""; }; + A7B4ACAE1484C9CE00B38A36 /* JSExportMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSExportMacros.h; sourceTree = ""; }; + A7C0C4AA167C08CD0017011D /* JSScriptRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSScriptRef.cpp; sourceTree = ""; }; + A7C0C4AB167C08CD0017011D /* JSScriptRefPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSScriptRefPrivate.h; sourceTree = ""; }; + A7C1E8C8112E701C00A37F98 /* JITPropertyAccess32_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITPropertyAccess32_64.cpp; sourceTree = ""; }; + A7C225CC139981F100FF1662 /* KeywordLookupGenerator.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = KeywordLookupGenerator.py; sourceTree = ""; }; + A7C225CD1399849C00FF1662 /* KeywordLookup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeywordLookup.h; sourceTree = ""; }; + A7DCB77912E3D90500911940 /* WriteBarrier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WriteBarrier.h; sourceTree = ""; }; + A7E2EA690FB460CF00601F06 /* LiteralParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LiteralParser.h; sourceTree = ""; }; + A7E2EA6A0FB460CF00601F06 /* LiteralParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LiteralParser.cpp; sourceTree = ""; }; + A7F8690E0F9584A100558697 /* CachedCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedCall.h; sourceTree = ""; }; + A7F869EC0F95C2EC00558697 /* CallFrameClosure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallFrameClosure.h; sourceTree = ""; }; + A7F9935D0FD7325100A0B2D0 /* JSONObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSONObject.h; sourceTree = ""; }; + A7F9935E0FD7325100A0B2D0 /* JSONObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSONObject.cpp; sourceTree = ""; }; + A7FB604B103F5EAB0017A286 /* PropertyDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PropertyDescriptor.h; sourceTree = ""; }; + A7FB60A3103F7DC20017A286 /* PropertyDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PropertyDescriptor.cpp; sourceTree = ""; }; + A8A4748D151A8306004123FF /* libWTF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libWTF.a; sourceTree = BUILT_PRODUCTS_DIR; }; + A8E894310CD0602400367179 /* JSCallbackObjectFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCallbackObjectFunctions.h; sourceTree = ""; }; + A8E894330CD0603F00367179 /* JSGlobalObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSGlobalObject.h; sourceTree = ""; }; + AD1CF06816DCAB2D00B97123 /* PropertyTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PropertyTable.cpp; sourceTree = ""; }; + BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ToolExecutable.xcconfig; sourceTree = ""; }; + BC02E9040E1839DB000F9297 /* ErrorConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ErrorConstructor.cpp; sourceTree = ""; }; + BC02E9050E1839DB000F9297 /* ErrorConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ErrorConstructor.h; sourceTree = ""; }; + BC02E9060E1839DB000F9297 /* ErrorPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ErrorPrototype.cpp; sourceTree = ""; }; + BC02E9070E1839DB000F9297 /* ErrorPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ErrorPrototype.h; sourceTree = ""; }; + BC02E9080E1839DB000F9297 /* NativeErrorConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NativeErrorConstructor.cpp; sourceTree = ""; }; + BC02E9090E1839DB000F9297 /* NativeErrorConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NativeErrorConstructor.h; sourceTree = ""; }; + BC02E90A0E1839DB000F9297 /* NativeErrorPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NativeErrorPrototype.cpp; sourceTree = ""; }; + BC02E90B0E1839DB000F9297 /* NativeErrorPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NativeErrorPrototype.h; sourceTree = ""; }; + BC02E98A0E183E38000F9297 /* ErrorInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ErrorInstance.cpp; sourceTree = ""; }; + BC02E98B0E183E38000F9297 /* ErrorInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ErrorInstance.h; sourceTree = ""; }; + BC02E9B60E1842FA000F9297 /* JSString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSString.cpp; sourceTree = ""; }; + BC02E9B80E184545000F9297 /* GetterSetter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GetterSetter.cpp; sourceTree = ""; }; + BC0894D50FAFBA2D00001865 /* JSAPIValueWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSAPIValueWrapper.cpp; path = ../runtime/JSAPIValueWrapper.cpp; sourceTree = ""; }; + BC0894D60FAFBA2D00001865 /* JSAPIValueWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSAPIValueWrapper.h; path = ../runtime/JSAPIValueWrapper.h; sourceTree = ""; }; + BC1166000E1997B1008066DD /* DateInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DateInstance.cpp; sourceTree = ""; }; + BC1166010E1997B1008066DD /* DateInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateInstance.h; sourceTree = ""; }; + BC11667A0E199C05008066DD /* InternalFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InternalFunction.h; sourceTree = ""; }; + BC1167D80E19BCC9008066DD /* JSCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCell.h; sourceTree = ""; }; + BC18C3C00E16EE3300B34460 /* StringConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringConstructor.cpp; sourceTree = ""; }; + BC18C3C10E16EE3300B34460 /* StringConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringConstructor.h; sourceTree = ""; }; + BC18C3C20E16EE3300B34460 /* StringObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringObject.cpp; sourceTree = ""; }; + BC18C3C30E16EE3300B34460 /* StringObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringObject.h; sourceTree = ""; }; + BC18C3C50E16EE3300B34460 /* StringPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringPrototype.cpp; sourceTree = ""; }; + BC18C3C60E16EE3300B34460 /* StringPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringPrototype.h; sourceTree = ""; }; + BC18C5230E16FC8A00B34460 /* ArrayPrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArrayPrototype.lut.h; sourceTree = ""; }; + BC18C5250E16FCA700B34460 /* StringPrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringPrototype.lut.h; sourceTree = ""; }; + BC18C5290E16FCC200B34460 /* MathObject.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathObject.lut.h; sourceTree = ""; }; + BC18C52B0E16FCD200B34460 /* RegExpObject.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpObject.lut.h; sourceTree = ""; }; + BC18C52D0E16FCE100B34460 /* Lexer.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Lexer.lut.h; sourceTree = ""; }; + BC22A3980E16E14800AF21C8 /* JSObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSObject.cpp; sourceTree = ""; }; + BC22A3990E16E14800AF21C8 /* JSObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSObject.h; sourceTree = ""; }; + BC22A39A0E16E14800AF21C8 /* JSVariableObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSVariableObject.cpp; sourceTree = ""; }; + BC257DE50E1F51C50016B6C9 /* Arguments.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Arguments.cpp; sourceTree = ""; }; + BC257DE60E1F51C50016B6C9 /* Arguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Arguments.h; sourceTree = ""; }; + BC2680C00E16D4E900A06E92 /* FunctionConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FunctionConstructor.cpp; sourceTree = ""; }; + BC2680C10E16D4E900A06E92 /* FunctionConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FunctionConstructor.h; sourceTree = ""; }; + BC2680C20E16D4E900A06E92 /* NumberConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NumberConstructor.cpp; sourceTree = ""; }; + BC2680C30E16D4E900A06E92 /* NumberConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumberConstructor.h; sourceTree = ""; }; + BC2680C40E16D4E900A06E92 /* NumberPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NumberPrototype.cpp; sourceTree = ""; }; + BC2680C50E16D4E900A06E92 /* NumberPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumberPrototype.h; sourceTree = ""; }; + BC2680C60E16D4E900A06E92 /* ObjectConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectConstructor.cpp; sourceTree = ""; }; + BC2680C70E16D4E900A06E92 /* ObjectConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectConstructor.h; sourceTree = ""; }; + BC2680C80E16D4E900A06E92 /* ObjectPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectPrototype.cpp; sourceTree = ""; }; + BC2680C90E16D4E900A06E92 /* ObjectPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectPrototype.h; sourceTree = ""; }; + BC2680E60E16D52300A06E92 /* NumberConstructor.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumberConstructor.lut.h; sourceTree = ""; }; + BC3046060E1F497F003232CF /* Error.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Error.h; sourceTree = ""; }; + BC3135620F302FA3003DFD3A /* DebuggerActivation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebuggerActivation.h; sourceTree = ""; }; + BC3135630F302FA3003DFD3A /* DebuggerActivation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DebuggerActivation.cpp; sourceTree = ""; }; + BC337BDE0E1AF0B80076918A /* GetterSetter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GetterSetter.h; sourceTree = ""; }; + BC337BEA0E1B00CB0076918A /* Error.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Error.cpp; sourceTree = ""; }; + BC6AAAE40E1F426500AD87D8 /* ClassInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClassInfo.h; sourceTree = ""; }; + BC756FC60E2031B200DE7D12 /* JSGlobalObjectFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSGlobalObjectFunctions.cpp; sourceTree = ""; }; + BC756FC70E2031B200DE7D12 /* JSGlobalObjectFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSGlobalObjectFunctions.h; sourceTree = ""; }; + BC7952060E15E8A800A898AB /* ArrayConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArrayConstructor.cpp; sourceTree = ""; }; + BC7952070E15E8A800A898AB /* ArrayConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArrayConstructor.h; sourceTree = ""; }; + BC7952320E15EB5600A898AB /* BooleanConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BooleanConstructor.cpp; sourceTree = ""; }; + BC7952330E15EB5600A898AB /* BooleanConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BooleanConstructor.h; sourceTree = ""; }; + BC7952340E15EB5600A898AB /* BooleanPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BooleanPrototype.cpp; sourceTree = ""; }; + BC7952350E15EB5600A898AB /* BooleanPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BooleanPrototype.h; sourceTree = ""; }; + BC7F8FBA0E19D1EF008632C0 /* JSCell.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCell.cpp; sourceTree = ""; }; + BC8149AF12F89F53007B2C32 /* HeaderDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeaderDetection.h; sourceTree = ""; }; + BC87CDB810712ACA000614CF /* JSONObject.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSONObject.lut.h; sourceTree = ""; }; + BC8F3CCF0DAF17BA00577A80 /* ConstructData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConstructData.h; sourceTree = ""; }; + BC9041470EB9250900FE26FA /* StructureTransitionTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructureTransitionTable.h; sourceTree = ""; }; + BC95437C0EBA70FD0072B6D3 /* PropertyMapHashTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PropertyMapHashTable.h; sourceTree = ""; }; + BC9BB95B0E19680600DF8855 /* InternalFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InternalFunction.cpp; sourceTree = ""; }; + BCA62DFE0E2826230004F30D /* CallData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CallData.cpp; sourceTree = ""; }; + BCA62DFF0E2826310004F30D /* ConstructData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConstructData.cpp; sourceTree = ""; }; + BCBE2CAD14E985AA000593AD /* GCAssertions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCAssertions.h; sourceTree = ""; }; + BCCF0D070EF0AAB900413C8F /* StructureStubInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructureStubInfo.h; sourceTree = ""; }; + BCCF0D0B0EF0B8A500413C8F /* StructureStubInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StructureStubInfo.cpp; sourceTree = ""; }; + BCD202BD0E1706A7002C7E82 /* RegExpConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegExpConstructor.cpp; sourceTree = ""; }; + BCD202BE0E1706A7002C7E82 /* RegExpConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpConstructor.h; sourceTree = ""; }; + BCD202BF0E1706A7002C7E82 /* RegExpPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegExpPrototype.cpp; sourceTree = ""; }; + BCD202C00E1706A7002C7E82 /* RegExpPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpPrototype.h; sourceTree = ""; }; + BCD202D50E170708002C7E82 /* RegExpConstructor.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpConstructor.lut.h; sourceTree = ""; }; + BCD203450E17135E002C7E82 /* DateConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DateConstructor.cpp; sourceTree = ""; }; + BCD203460E17135E002C7E82 /* DateConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateConstructor.h; sourceTree = ""; }; + BCD203470E17135E002C7E82 /* DatePrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DatePrototype.cpp; sourceTree = ""; }; + BCD203480E17135E002C7E82 /* DatePrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatePrototype.h; sourceTree = ""; }; + BCD203E70E1718F4002C7E82 /* DatePrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatePrototype.lut.h; sourceTree = ""; }; + BCDD51E90FB8DF74004A8BDC /* JITOpcodes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITOpcodes.cpp; sourceTree = ""; }; + BCDE3AB00E6C82CF001453A7 /* Structure.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Structure.cpp; sourceTree = ""; }; + BCDE3AB10E6C82CF001453A7 /* Structure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Structure.h; sourceTree = ""; }; + BCF605110E203EF800B9A64D /* ArgList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArgList.cpp; sourceTree = ""; }; + BCF605120E203EF800B9A64D /* ArgList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArgList.h; sourceTree = ""; }; + BCFD8C900EEB2EE700283848 /* JumpTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JumpTable.cpp; sourceTree = ""; }; + BCFD8C910EEB2EE700283848 /* JumpTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JumpTable.h; sourceTree = ""; }; + C20B25981706536200C21F4E /* Region.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Region.h; sourceTree = ""; }; + C20BA92C16BB1C1500B3AEA2 /* StructureRareDataInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructureRareDataInlines.h; sourceTree = ""; }; + C21122DE15DD9AB300790E3A /* GCThreadSharedData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GCThreadSharedData.cpp; sourceTree = ""; }; + C21122DF15DD9AB300790E3A /* GCThreadSharedData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCThreadSharedData.h; sourceTree = ""; }; + C21122E015DD9AB300790E3A /* MarkStackInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarkStackInlines.h; sourceTree = ""; }; + C218D13F1655CFD50062BB81 /* CopyWorkList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CopyWorkList.h; sourceTree = ""; }; + C2239D1216262BDD005AC5FD /* CopyVisitor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CopyVisitor.cpp; sourceTree = ""; }; + C2239D1316262BDD005AC5FD /* CopyVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CopyVisitor.h; sourceTree = ""; }; + C2239D1416262BDD005AC5FD /* CopyVisitorInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CopyVisitorInlines.h; sourceTree = ""; }; + C2239D1516262BDD005AC5FD /* GCThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GCThread.cpp; sourceTree = ""; }; + C2239D1616262BDD005AC5FD /* GCThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCThread.h; sourceTree = ""; }; + C225494215F7DBAA0065E898 /* SlotVisitor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SlotVisitor.cpp; sourceTree = ""; }; + C240305314B404C90079EB64 /* CopiedSpace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CopiedSpace.cpp; sourceTree = ""; }; + C24D31E0161CD695002AA4DB /* HeapStatistics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HeapStatistics.cpp; sourceTree = ""; }; + C24D31E1161CD695002AA4DB /* HeapStatistics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeapStatistics.h; sourceTree = ""; }; + C25D709916DE99F400FCA6BC /* JSManagedValue.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = JSManagedValue.mm; sourceTree = ""; }; + C25D709A16DE99F400FCA6BC /* JSManagedValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSManagedValue.h; sourceTree = ""; }; + C25F8BCB157544A900245B71 /* IncrementalSweeper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IncrementalSweeper.cpp; sourceTree = ""; }; + C25F8BCC157544A900245B71 /* IncrementalSweeper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IncrementalSweeper.h; sourceTree = ""; }; + C28318FF16FE4B7D00157BFD /* HandleBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HandleBlock.h; sourceTree = ""; }; + C283190116FE533E00157BFD /* HandleBlockInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HandleBlockInlines.h; sourceTree = ""; }; + C2A7F687160432D400F76B98 /* JSDestructibleObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDestructibleObject.h; sourceTree = ""; }; + C2B916C114DA014E00CBAC86 /* MarkedAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarkedAllocator.h; sourceTree = ""; }; + C2B916C414DA040C00CBAC86 /* MarkedAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MarkedAllocator.cpp; sourceTree = ""; }; + C2C8D02B14A3C6B200578E65 /* CopiedSpaceInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CopiedSpaceInlines.h; sourceTree = ""; }; + C2C8D02E14A3CEFC00578E65 /* CopiedBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CopiedBlock.h; sourceTree = ""; }; + C2C8D02F14A3CEFC00578E65 /* HeapBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeapBlock.h; sourceTree = ""; }; + C2CF39BF16E15A8100DD69BE /* JSAPIWrapperObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = JSAPIWrapperObject.mm; sourceTree = ""; }; + C2CF39C016E15A8100DD69BE /* JSAPIWrapperObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAPIWrapperObject.h; sourceTree = ""; }; + C2D58C3315912FEE0021A844 /* GCActivityCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GCActivityCallback.cpp; sourceTree = ""; }; + C2DF442D1707AC0100A5CA96 /* SuperRegion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SuperRegion.cpp; sourceTree = ""; }; + C2DF442E1707AC0100A5CA96 /* SuperRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SuperRegion.h; sourceTree = ""; }; + C2E526BB1590EF000054E48D /* HeapTimer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HeapTimer.cpp; sourceTree = ""; }; + C2E526BC1590EF000054E48D /* HeapTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeapTimer.h; sourceTree = ""; }; + C2EAA3F8149A830800FCE112 /* CopiedSpace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CopiedSpace.h; sourceTree = ""; }; + C2EAD2FB14F0249800A4B159 /* CopiedAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CopiedAllocator.h; sourceTree = ""; }; + C2F0F2D016BAEEE900187C19 /* StructureRareData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StructureRareData.cpp; sourceTree = ""; }; + C2FC9BD216644DFB00810D33 /* CopiedBlockInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CopiedBlockInlines.h; sourceTree = ""; }; + C2FE18A316BAEC4000AF3061 /* StructureRareData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructureRareData.h; sourceTree = ""; }; + D21202280AD4310C00ED79B6 /* DateConversion.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DateConversion.cpp; sourceTree = ""; }; + D21202290AD4310C00ED79B6 /* DateConversion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DateConversion.h; sourceTree = ""; }; + DDF7ABD211F60ED200108E36 /* GCActivityCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCActivityCallback.h; sourceTree = ""; }; + E124A8F50E555775003091F1 /* OpaqueJSString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpaqueJSString.h; sourceTree = ""; }; + E124A8F60E555775003091F1 /* OpaqueJSString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OpaqueJSString.cpp; sourceTree = ""; }; + E178633F0D9BEC0000D74E75 /* InitializeThreading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InitializeThreading.h; sourceTree = ""; }; + E178636C0D9BEEC300D74E75 /* InitializeThreading.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InitializeThreading.cpp; sourceTree = ""; }; + E18E3A560DF9278C00D90B34 /* VM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VM.h; sourceTree = ""; }; + E18E3A570DF9278C00D90B34 /* VM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VM.cpp; sourceTree = ""; }; + E49DC14912EF261A00184A1F /* SourceProviderCacheItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SourceProviderCacheItem.h; sourceTree = ""; }; + E49DC15112EF272200184A1F /* SourceProviderCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SourceProviderCache.h; sourceTree = ""; }; + E49DC15512EF277200184A1F /* SourceProviderCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SourceProviderCache.cpp; sourceTree = ""; }; + F5BB2BC5030F772101FCFE1D /* Completion.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Completion.h; sourceTree = ""; tabWidth = 8; }; + F5C290E60284F98E018635CA /* JavaScriptCorePrefix.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = JavaScriptCorePrefix.h; sourceTree = ""; tabWidth = 8; }; + F68EBB8C0255D4C601FF60F7 /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; tabWidth = 8; }; + F692A84D0255597D01FF60F7 /* ArrayPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArrayPrototype.cpp; sourceTree = ""; tabWidth = 8; }; + F692A84E0255597D01FF60F7 /* ArrayPrototype.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = ArrayPrototype.h; sourceTree = ""; tabWidth = 8; }; + F692A8500255597D01FF60F7 /* BooleanObject.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BooleanObject.cpp; sourceTree = ""; tabWidth = 8; }; + F692A8540255597D01FF60F7 /* create_hash_table */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = text.script.perl; path = create_hash_table; sourceTree = ""; tabWidth = 8; }; + F692A8580255597D01FF60F7 /* Debugger.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Debugger.cpp; sourceTree = ""; tabWidth = 8; }; + F692A8590255597D01FF60F7 /* Debugger.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Debugger.h; sourceTree = ""; tabWidth = 8; }; + F692A85C0255597D01FF60F7 /* FunctionPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FunctionPrototype.cpp; sourceTree = ""; tabWidth = 8; }; + F692A85D0255597D01FF60F7 /* FunctionPrototype.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = FunctionPrototype.h; sourceTree = ""; tabWidth = 8; }; + F692A85E0255597D01FF60F7 /* JSFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFunction.cpp; sourceTree = ""; tabWidth = 8; }; + F692A85F0255597D01FF60F7 /* JSFunction.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = JSFunction.h; sourceTree = ""; tabWidth = 8; }; + F692A8620255597D01FF60F7 /* JSString.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = JSString.h; sourceTree = ""; tabWidth = 8; }; + F692A8650255597D01FF60F7 /* Lexer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Lexer.cpp; sourceTree = ""; tabWidth = 8; }; + F692A8660255597D01FF60F7 /* Lexer.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Lexer.h; sourceTree = ""; tabWidth = 8; }; + F692A8680255597D01FF60F7 /* Lookup.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Lookup.cpp; sourceTree = ""; tabWidth = 8; }; + F692A8690255597D01FF60F7 /* Lookup.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Lookup.h; sourceTree = ""; tabWidth = 8; }; + F692A86A0255597D01FF60F7 /* MathObject.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MathObject.cpp; sourceTree = ""; tabWidth = 8; }; + F692A86B0255597D01FF60F7 /* MathObject.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = MathObject.h; sourceTree = ""; tabWidth = 8; }; + F692A86D0255597D01FF60F7 /* Nodes.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Nodes.cpp; sourceTree = ""; tabWidth = 8; }; + F692A86E0255597D01FF60F7 /* Nodes.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Nodes.h; sourceTree = ""; tabWidth = 8; }; + F692A8700255597D01FF60F7 /* NumberObject.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NumberObject.cpp; sourceTree = ""; tabWidth = 8; }; + F692A8710255597D01FF60F7 /* NumberObject.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = NumberObject.h; sourceTree = ""; tabWidth = 8; }; + F692A8770255597D01FF60F7 /* Operations.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Operations.cpp; sourceTree = ""; tabWidth = 8; }; + F692A8780255597D01FF60F7 /* Operations.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Operations.h; sourceTree = ""; tabWidth = 8; }; + F692A87B0255597D01FF60F7 /* RegExpObject.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegExpObject.cpp; sourceTree = ""; tabWidth = 8; }; + F692A87C0255597D01FF60F7 /* RegExpObject.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = RegExpObject.h; sourceTree = ""; tabWidth = 8; }; + F692A87D0255597D01FF60F7 /* RegExp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegExp.cpp; sourceTree = ""; tabWidth = 8; }; + F692A87E0255597D01FF60F7 /* RegExp.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = RegExp.h; sourceTree = ""; tabWidth = 8; }; + F692A8870255597D01FF60F7 /* JSCJSValue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCJSValue.cpp; sourceTree = ""; tabWidth = 8; }; + FE20CE9B15F04A9500DF3430 /* LLIntCLoop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntCLoop.cpp; path = llint/LLIntCLoop.cpp; sourceTree = ""; }; + FE20CE9C15F04A9500DF3430 /* LLIntCLoop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntCLoop.h; path = llint/LLIntCLoop.h; sourceTree = ""; }; + FE4A331D15BD2E07006F54F3 /* VMInspector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VMInspector.cpp; sourceTree = ""; }; + FE4A331E15BD2E07006F54F3 /* VMInspector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VMInspector.h; sourceTree = ""; }; + FE6617271774E03500495B00 /* VMStackBounds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VMStackBounds.h; sourceTree = ""; }; + FED287B115EC9A5700DA8161 /* LLIntOpcode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntOpcode.h; path = llint/LLIntOpcode.h; sourceTree = ""; }; + FED94F2B171E3E2300BE77A4 /* Watchdog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Watchdog.cpp; sourceTree = ""; }; + FED94F2C171E3E2300BE77A4 /* Watchdog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Watchdog.h; sourceTree = ""; }; + FED94F2D171E3E2300BE77A4 /* WatchdogMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WatchdogMac.cpp; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0FF922C614F46B130041A24E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1412111E0A48793C00480255 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 14B8EC720A5652090062BE54 /* CoreFoundation.framework in Frameworks */, + 141211310A48794D00480255 /* JavaScriptCore.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 14BD59BD0A3E8F9000BAF59C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4443AE3316E188D90076F110 /* Foundation.framework in Frameworks */, + 14BD59C50A3E8F9F00BAF59C /* JavaScriptCore.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 651122FC14046A4C002B101D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 651122FD14046A4C002B101D /* JavaScriptCore.framework in Frameworks */, + 651122FE14046A4C002B101D /* libedit.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 932F5BD20822A1C700736975 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 932F5BD30822A1C700736975 /* CoreFoundation.framework in Frameworks */, + A731B25A130093880040A7FA /* Foundation.framework in Frameworks */, + 932F5BD70822A1C700736975 /* libicucore.dylib in Frameworks */, + 932F5BD60822A1C700736975 /* libobjc.dylib in Frameworks */, + A8A4748E151A8306004123FF /* libWTF.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 932F5BDE0822A1C700736975 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 932F5BEA0822A1C700736975 /* JavaScriptCore.framework in Frameworks */, + 5D5D8AD10E0D0EBE00F9C692 /* libedit.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 034768DFFF38A50411DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + 932F5BE10822A1C700736975 /* jsc */, + 0FF922CF14F46B130041A24E /* JSCLLIntOffsetsExtractor */, + 932F5BD90822A1C700736975 /* JavaScriptCore.framework */, + 141211200A48793C00480255 /* minidom */, + 14BD59BF0A3E8F9000BAF59C /* testapi */, + 6511230514046A4C002B101D /* testRegExp */, + ); + name = Products; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 0867D691FE84028FC02AAC07 /* JavaScriptCore */ = { + isa = PBXGroup; + children = ( + 8604F4F2143A6C4400B295F5 /* ChangeLog */, + A718F8211178EB4B002465A7 /* create_regex_tables */, + 937B63CC09E766D200A671DD /* DerivedSources.make */, + A7C225CC139981F100FF1662 /* KeywordLookupGenerator.py */, + F692A8540255597D01FF60F7 /* create_hash_table */, + F5C290E60284F98E018635CA /* JavaScriptCorePrefix.h */, + 45E12D8806A49B0F00E9DF84 /* jsc.cpp */, + A767FF9F14F4502900789059 /* JSCTypedArrayStubs.h */, + F68EBB8C0255D4C601FF60F7 /* config.h */, + 1432EBD70A34CAD400717B9F /* API */, + 9688CB120ED12B4E001D649F /* assembler */, + 969A078F0ED1D3AE00F1F681 /* bytecode */, + 7E39D81D0EC38EFA003AF11A /* bytecompiler */, + 1480DB9A0DDC2231003CFDF2 /* debugger */, + 0FF4272E158EBCCE004CB9FF /* disassembler */, + 86EC9DB31328DF44002B2AD7 /* dfg */, + 142E312A134FF0A600AFADB5 /* heap */, + 1429D77A0ED20D7300B89619 /* interpreter */, + 1429D92C0ED22D7000B89619 /* jit */, + 0F46809C14BA7F4D00BFE272 /* llint */, + 7E39D8370EC3A388003AF11A /* parser */, + 95AB831A0DA42C6900BC83F3 /* profiler */, + 7EF6E0BB0EB7A1EC0079AFAF /* runtime */, + 141211000A48772600480255 /* tests */, + 8603CEF014C753EF00AE59E3 /* tools */, + 86EAC48C0F93E8B9008EC948 /* yarr */, + 1C90513E0BA9E8830081E9D0 /* Configurations */, + 650FDF8D09D0FCA700769E54 /* Derived Sources */, + 0867D69AFE84028FC02AAC07 /* Frameworks */, + 034768DFFF38A50411DB9C8B /* Products */, + 932FC3C20824BB70005B3C75 /* Resources */, + ); + name = JavaScriptCore; + sourceTree = ""; + }; + 0867D69AFE84028FC02AAC07 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 6560A4CF04B3B3E7008AE952 /* CoreFoundation.framework */, + 51F0EB6105C86C6B00E6DF1B /* Foundation.framework */, + 5D5D8AD00E0D0EBE00F9C692 /* libedit.dylib */, + 9322A00306C341D3009067BB /* libicucore.dylib */, + 51F0EC0705C86C9A00E6DF1B /* libobjc.dylib */, + A8A4748D151A8306004123FF /* libWTF.a */, + ); + name = Frameworks; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 0F46809C14BA7F4D00BFE272 /* llint */ = { + isa = PBXGroup; + children = ( + FE20CE9B15F04A9500DF3430 /* LLIntCLoop.cpp */, + FE20CE9C15F04A9500DF3430 /* LLIntCLoop.h */, + 0F4680C514BBB16900BFE272 /* LLIntCommon.h */, + 0F4680CE14BBB3D100BFE272 /* LLIntData.cpp */, + 0F4680CF14BBB3D100BFE272 /* LLIntData.h */, + 5DDDF44614FEE72200B4FB4D /* LLIntDesiredOffsets.h */, + 0F0B839514BCF45A00885B4F /* LLIntEntrypoints.cpp */, + 0F0B839614BCF45A00885B4F /* LLIntEntrypoints.h */, + 0F46809D14BA7F8200BFE272 /* LLIntExceptions.cpp */, + 0F46809E14BA7F8200BFE272 /* LLIntExceptions.h */, + 0F4680C614BBB16900BFE272 /* LLIntOfflineAsmConfig.h */, + 0F4680A114BA7F8200BFE272 /* LLIntOffsetsExtractor.cpp */, + FED287B115EC9A5700DA8161 /* LLIntOpcode.h */, + 0F46809F14BA7F8200BFE272 /* LLIntSlowPaths.cpp */, + 0F4680A014BA7F8200BFE272 /* LLIntSlowPaths.h */, + 0F0B839714BCF45A00885B4F /* LLIntThunks.cpp */, + 0F0B839814BCF45A00885B4F /* LLIntThunks.h */, + 86A054461556451B00445157 /* LowLevelInterpreter.asm */, + 0F4680C714BBB16900BFE272 /* LowLevelInterpreter.cpp */, + 0F4680C814BBB16900BFE272 /* LowLevelInterpreter.h */, + 86A054471556451B00445157 /* LowLevelInterpreter32_64.asm */, + 86A054481556451B00445157 /* LowLevelInterpreter64.asm */, + ); + name = llint; + sourceTree = ""; + }; + 0FF4272E158EBCCE004CB9FF /* disassembler */ = { + isa = PBXGroup; + children = ( + 65C028591717966800351E35 /* ARMv7 */, + 0FF42733158EBD64004CB9FF /* udis86 */, + 65C0284F171795E200351E35 /* ARMv7Disassembler.cpp */, + 0F9D336E165DBB8D005AD387 /* Disassembler.cpp */, + 0FF4272F158EBD44004CB9FF /* Disassembler.h */, + 0FF42730158EBD44004CB9FF /* UDis86Disassembler.cpp */, + ); + name = disassembler; + sourceTree = ""; + }; + 0FF42733158EBD64004CB9FF /* udis86 */ = { + isa = PBXGroup; + children = ( + 0FF4273E158EBD94004CB9FF /* udis86.c */, + 0FF4273F158EBD94004CB9FF /* udis86.h */, + 0FF42734158EBD94004CB9FF /* udis86_decode.c */, + 0FF42735158EBD94004CB9FF /* udis86_decode.h */, + 0FF42736158EBD94004CB9FF /* udis86_extern.h */, + 0FF42737158EBD94004CB9FF /* udis86_input.c */, + 0FF42738158EBD94004CB9FF /* udis86_input.h */, + 0FF4274C158EBFE1004CB9FF /* udis86_itab_holder.c */, + 0FF42739158EBD94004CB9FF /* udis86_syn-att.c */, + 0FF4273A158EBD94004CB9FF /* udis86_syn-intel.c */, + 0FF4273B158EBD94004CB9FF /* udis86_syn.c */, + 0FF4273C158EBD94004CB9FF /* udis86_syn.h */, + 0FF4273D158EBD94004CB9FF /* udis86_types.h */, + ); + name = udis86; + sourceTree = ""; + }; + 141211000A48772600480255 /* tests */ = { + isa = PBXGroup; + children = ( + 144005170A531CB50005F061 /* minidom */, + 14BD5A2D0A3E91F600BAF59C /* testapi.c */, + 14D857740A4696C80032146C /* testapi.js */, + 86D22219167EF9440024C804 /* testapi.mm */, + 651122E5140469BA002B101D /* testRegExp.cpp */, + ); + name = tests; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 1429D77A0ED20D7300B89619 /* interpreter */ = { + isa = PBXGroup; + children = ( + 0F55F0F114D1063600AC7649 /* AbstractPC.cpp */, + 0F55F0F214D1063600AC7649 /* AbstractPC.h */, + A7F8690E0F9584A100558697 /* CachedCall.h */, + 1429D8DB0ED2205B00B89619 /* CallFrame.cpp */, + 1429D8DC0ED2205B00B89619 /* CallFrame.h */, + A7F869EC0F95C2EC00558697 /* CallFrameClosure.h */, + 1429D7D30ED2128200B89619 /* Interpreter.cpp */, + 1429D77B0ED20D7300B89619 /* Interpreter.h */, + 1429D85B0ED218E900B89619 /* JSStack.cpp */, + 14D792640DAA03FB001A9F05 /* JSStack.h */, + 149B24FF0D8AF6D1009CB8C7 /* Register.h */, + FE4A331D15BD2E07006F54F3 /* VMInspector.cpp */, + FE4A331E15BD2E07006F54F3 /* VMInspector.h */, + ); + path = interpreter; + sourceTree = ""; + }; + 1429D92C0ED22D7000B89619 /* jit */ = { + isa = PBXGroup; + children = ( + 0F73D7AB165A142A00ACAB71 /* ClosureCallStubRoutine.cpp */, + 0F73D7AC165A142A00ACAB71 /* ClosureCallStubRoutine.h */, + 0FD82E37141AB14200179C94 /* CompactJITCodeMap.h */, + A7B48DB60EE74CFC00DCBDB6 /* ExecutableAllocator.cpp */, + A7B48DB50EE74CFC00DCBDB6 /* ExecutableAllocator.h */, + 86DB64630F95C6FC00D7D921 /* ExecutableAllocatorFixedVMPool.cpp */, + 0F766D2D15A8DCDD008F363E /* GCAwareJITStubRoutine.cpp */, + 0F766D2E15A8DCDD008F363E /* GCAwareJITStubRoutine.h */, + 0F4680D014BBC5F800BFE272 /* HostCallReturnValue.cpp */, + 0F4680D114BBC5F800BFE272 /* HostCallReturnValue.h */, + 1429D92D0ED22D7000B89619 /* JIT.cpp */, + 1429D92E0ED22D7000B89619 /* JIT.h */, + 86A90ECF0EE7D51F00AB350D /* JITArithmetic.cpp */, + A75706DD118A2BCF0057F88F /* JITArithmetic32_64.cpp */, + 86CC85A20EE79B7400288682 /* JITCall.cpp */, + 146FE51111A710430087AE66 /* JITCall32_64.cpp */, + 0F8F94431667635200D61971 /* JITCode.cpp */, + 86CCEFDD0F413F8900FD7F9E /* JITCode.h */, + 0F0776BD14FF002800102332 /* JITCompilationEffort.h */, + 0FAF7EFA165BA919000C8455 /* JITDisassembler.cpp */, + 0FAF7EFB165BA919000C8455 /* JITDisassembler.h */, + 0F21C26614BE5F5E00ADC64B /* JITDriver.h */, + 0F46807F14BA572700BFE272 /* JITExceptions.cpp */, + 0F46808014BA572700BFE272 /* JITExceptions.h */, + 86CC85A00EE79A4700288682 /* JITInlines.h */, + BCDD51E90FB8DF74004A8BDC /* JITOpcodes.cpp */, + A71236E41195F33C00BD2174 /* JITOpcodes32_64.cpp */, + 86CC85C30EE7A89400288682 /* JITPropertyAccess.cpp */, + A7C1E8C8112E701C00A37F98 /* JITPropertyAccess32_64.cpp */, + 960626950FB8EC02009798AB /* JITStubCall.h */, + 0F766D2615A8CC1B008F363E /* JITStubRoutine.cpp */, + 0F766D1C15A5028D008F363E /* JITStubRoutine.h */, + 14A23D6C0F4E19CE0023CDAD /* JITStubs.cpp */, + 14A6581A0F4E36F4000150FD /* JITStubs.h */, + 0F5EF91B16878F78003E5C25 /* JITThunks.cpp */, + 0F5EF91C16878F78003E5C25 /* JITThunks.h */, + A76F54A213B28AAB00EF2BCE /* JITWriteBarrier.h */, + A76C51741182748D00715B05 /* JSInterfaceJIT.h */, + 0F766D3215AE2535008F363E /* JumpReplacementWatchpoint.cpp */, + 0F766D3315AE2535008F363E /* JumpReplacementWatchpoint.h */, + A7386551118697B400540279 /* SpecializedThunkJIT.h */, + 0F572D4D16879FDB00E57FBD /* ThunkGenerator.h */, + A7386552118697B400540279 /* ThunkGenerators.cpp */, + A7386553118697B400540279 /* ThunkGenerators.h */, + 65987F2F16828A7E003C2F8D /* UnusedPointer.h */, + ); + path = jit; + sourceTree = ""; + }; + 142E312A134FF0A600AFADB5 /* heap */ = { + isa = PBXGroup; + children = ( + 14816E19154CC56C00B8054C /* BlockAllocator.cpp */, + 14816E1A154CC56C00B8054C /* BlockAllocator.h */, + 146B14DB12EB5B12001BEC1B /* ConservativeRoots.cpp */, + 149DAAF212EB559D0083B12B /* ConservativeRoots.h */, + C2EAD2FB14F0249800A4B159 /* CopiedAllocator.h */, + C2C8D02E14A3CEFC00578E65 /* CopiedBlock.h */, + C2FC9BD216644DFB00810D33 /* CopiedBlockInlines.h */, + C240305314B404C90079EB64 /* CopiedSpace.cpp */, + C2EAA3F8149A830800FCE112 /* CopiedSpace.h */, + C2C8D02B14A3C6B200578E65 /* CopiedSpaceInlines.h */, + C2239D1216262BDD005AC5FD /* CopyVisitor.cpp */, + C2239D1316262BDD005AC5FD /* CopyVisitor.h */, + C2239D1416262BDD005AC5FD /* CopyVisitorInlines.h */, + C218D13F1655CFD50062BB81 /* CopyWorkList.h */, + 0F2C556D14738F2E00121E4F /* DFGCodeBlocks.cpp */, + 0F2C556E14738F2E00121E4F /* DFGCodeBlocks.h */, + BCBE2CAD14E985AA000593AD /* GCAssertions.h */, + C2239D1516262BDD005AC5FD /* GCThread.cpp */, + C2239D1616262BDD005AC5FD /* GCThread.h */, + C21122DE15DD9AB300790E3A /* GCThreadSharedData.cpp */, + C21122DF15DD9AB300790E3A /* GCThreadSharedData.h */, + 142E312B134FF0A600AFADB5 /* Handle.h */, + C28318FF16FE4B7D00157BFD /* HandleBlock.h */, + C283190116FE533E00157BFD /* HandleBlockInlines.h */, + 142E312C134FF0A600AFADB5 /* HandleSet.cpp */, + 142E312D134FF0A600AFADB5 /* HandleSet.h */, + 142E312E134FF0A600AFADB5 /* HandleStack.cpp */, + 142E312F134FF0A600AFADB5 /* HandleStack.h */, + 146FA5A81378F6B0003627A3 /* HandleTypes.h */, + 14BA7A9513AADFF8005B7C2C /* Heap.cpp */, + 14BA7A9613AADFF8005B7C2C /* Heap.h */, + C2C8D02F14A3CEFC00578E65 /* HeapBlock.h */, + 14F97446138C853E00DA1C67 /* HeapRootVisitor.h */, + C24D31E0161CD695002AA4DB /* HeapStatistics.cpp */, + C24D31E1161CD695002AA4DB /* HeapStatistics.h */, + C2E526BB1590EF000054E48D /* HeapTimer.cpp */, + C2E526BC1590EF000054E48D /* HeapTimer.h */, + C25F8BCB157544A900245B71 /* IncrementalSweeper.cpp */, + C25F8BCC157544A900245B71 /* IncrementalSweeper.h */, + 0F766D2915A8CC34008F363E /* JITStubRoutineSet.cpp */, + 0F766D2A15A8CC34008F363E /* JITStubRoutineSet.h */, + 0F431736146BAC65007E3890 /* ListableHandler.h */, + 142E3130134FF0A600AFADB5 /* Local.h */, + 142E3131134FF0A600AFADB5 /* LocalScope.h */, + 14B7233F12D7D0DA003BD5ED /* MachineStackMarker.cpp */, + 14B7234012D7D0DA003BD5ED /* MachineStackMarker.h */, + C2B916C414DA040C00CBAC86 /* MarkedAllocator.cpp */, + C2B916C114DA014E00CBAC86 /* MarkedAllocator.h */, + 142D6F0613539A2800B02E86 /* MarkedBlock.cpp */, + 142D6F0713539A2800B02E86 /* MarkedBlock.h */, + 141448CA13A176EC00F5BA1A /* MarkedBlockSet.h */, + 14D2F3D8139F4BE200491031 /* MarkedSpace.cpp */, + 14D2F3D9139F4BE200491031 /* MarkedSpace.h */, + 142D6F0E13539A4100B02E86 /* MarkStack.cpp */, + 142D6F0F13539A4100B02E86 /* MarkStack.h */, + C21122E015DD9AB300790E3A /* MarkStackInlines.h */, + 1497209014EB831500FEB1B7 /* PassWeak.h */, + C20B25981706536200C21F4E /* Region.h */, + C225494215F7DBAA0065E898 /* SlotVisitor.cpp */, + 14BA78F013AAB88F005B7C2C /* SlotVisitor.h */, + 0FCB408515C0A3C30048932B /* SlotVisitorInlines.h */, + 142E3132134FF0A600AFADB5 /* Strong.h */, + 145722851437E140005FDE26 /* StrongInlines.h */, + C2DF442D1707AC0100A5CA96 /* SuperRegion.cpp */, + C2DF442E1707AC0100A5CA96 /* SuperRegion.h */, + 141448CC13A1783700F5BA1A /* TinyBloomFilter.h */, + 0F5F08CE146C762F000472A9 /* UnconditionalFinalizer.h */, + 0FC815121405118600CFA603 /* VTableSpectrum.cpp */, + 0FC815141405118D00CFA603 /* VTableSpectrum.h */, + 1ACF7376171CA6FB00C9BB1E /* Weak.cpp */, + 142E3133134FF0A600AFADB5 /* Weak.h */, + 14E84F9914EE1ACC00D6D5D4 /* WeakBlock.cpp */, + 14E84F9A14EE1ACC00D6D5D4 /* WeakBlock.h */, + 14F7256314EE265E00B1652B /* WeakHandleOwner.cpp */, + 14F7256414EE265E00B1652B /* WeakHandleOwner.h */, + 14E84F9D14EE1ACC00D6D5D4 /* WeakImpl.h */, + 14BE7D3217135CF400D1807A /* WeakInlines.h */, + 0F242DA513F3B1BB007ADD4C /* WeakReferenceHarvester.h */, + 14E84F9B14EE1ACC00D6D5D4 /* WeakSet.cpp */, + 14E84F9C14EE1ACC00D6D5D4 /* WeakSet.h */, + 14150132154BB13F005D8C98 /* WeakSetInlines.h */, + 0FC8150814043BCA00CFA603 /* WriteBarrierSupport.cpp */, + 0FC8150914043BD200CFA603 /* WriteBarrierSupport.h */, + ); + path = heap; + sourceTree = ""; + }; + 1432EBD70A34CAD400717B9F /* API */ = { + isa = PBXGroup; + children = ( + A72028B41797601E0098028C /* JSCTestRunnerUtils.cpp */, + A72028B51797601E0098028C /* JSCTestRunnerUtils.h */, + 1482B78A0A4305AB00517CFC /* APICast.h */, + 865F408710E7D56300947361 /* APIShims.h */, + 1CAA8B4A0D32C39A0041BCFF /* JavaScript.h */, + 1CAA8B4B0D32C39A0041BCFF /* JavaScriptCore.h */, + BC0894D50FAFBA2D00001865 /* JSAPIValueWrapper.cpp */, + BC0894D60FAFBA2D00001865 /* JSAPIValueWrapper.h */, + C2CF39C016E15A8100DD69BE /* JSAPIWrapperObject.h */, + C2CF39BF16E15A8100DD69BE /* JSAPIWrapperObject.mm */, + 1421359A0A677F4F00A8195E /* JSBase.cpp */, + 142711380A460BBB0080EEEA /* JSBase.h */, + 140D17D60E8AD4A9000CD17D /* JSBasePrivate.h */, + 1440F8AD0A508D200005F061 /* JSCallbackConstructor.cpp */, + 1440F8AC0A508D200005F061 /* JSCallbackConstructor.h */, + 1440F8900A508B100005F061 /* JSCallbackFunction.cpp */, + 1440F88F0A508B100005F061 /* JSCallbackFunction.h */, + 14ABDF5E0A437FEF00ECCA01 /* JSCallbackObject.cpp */, + 14ABDF5D0A437FEF00ECCA01 /* JSCallbackObject.h */, + A8E894310CD0602400367179 /* JSCallbackObjectFunctions.h */, + 1440FCE20A51E46B0005F061 /* JSClassRef.cpp */, + 1440FCE10A51E46B0005F061 /* JSClassRef.h */, + 86E3C607167BAB87006D760A /* JSContext.h */, + 86E3C608167BAB87006D760A /* JSContext.mm */, + 86E3C609167BAB87006D760A /* JSContextInternal.h */, + 14BD5A290A3E91F600BAF59C /* JSContextRef.cpp */, + 14BD5A2A0A3E91F600BAF59C /* JSContextRef.h */, + 148CD1D7108CF902008163C6 /* JSContextRefPrivate.h */, + 86E3C60A167BAB87006D760A /* JSExport.h */, + C25D709A16DE99F400FCA6BC /* JSManagedValue.h */, + C25D709916DE99F400FCA6BC /* JSManagedValue.mm */, + 1482B7E20A43076000517CFC /* JSObjectRef.cpp */, + 1482B7E10A43076000517CFC /* JSObjectRef.h */, + A79EDB0811531CD60019E912 /* JSObjectRefPrivate.h */, + 95988BA90E477BEC00D28D4D /* JSProfilerPrivate.cpp */, + 952C63AC0E4777D600C13936 /* JSProfilerPrivate.h */, + 95C18D3E0C90E7EF00E72F73 /* JSRetainPtr.h */, + A7C0C4AA167C08CD0017011D /* JSScriptRef.cpp */, + A7C0C4AB167C08CD0017011D /* JSScriptRefPrivate.h */, + 1482B74C0A43032800517CFC /* JSStringRef.cpp */, + 1482B74B0A43032800517CFC /* JSStringRef.h */, + 146AAB370B66A94400E55F16 /* JSStringRefCF.cpp */, + 146AAB2A0B66A84900E55F16 /* JSStringRefCF.h */, + 86E3C606167BAB87006D760A /* JSValue.h */, + 86E3C60D167BAB87006D760A /* JSValue.mm */, + 86E3C60E167BAB87006D760A /* JSValueInternal.h */, + 14BD5A2B0A3E91F600BAF59C /* JSValueRef.cpp */, + 1482B6EA0A4300B300517CFC /* JSValueRef.h */, + 86E3C60F167BAB87006D760A /* JSVirtualMachine.h */, + 86E3C610167BAB87006D760A /* JSVirtualMachine.mm */, + 86E3C611167BAB87006D760A /* JSVirtualMachineInternal.h */, + A7482E37116A697B003B0712 /* JSWeakObjectMapRefInternal.h */, + A7482B7A1166CDEA003B0712 /* JSWeakObjectMapRefPrivate.cpp */, + A7482B791166CDEA003B0712 /* JSWeakObjectMapRefPrivate.h */, + 86E3C60C167BAB87006D760A /* JSWrapperMap.h */, + 86E3C60B167BAB87006D760A /* JSWrapperMap.mm */, + 86F3EEB9168CCF750077B92A /* ObjCCallbackFunction.h */, + 86F3EEBA168CCF750077B92A /* ObjCCallbackFunction.mm */, + 86F3EEB616855A5B0077B92A /* ObjcRuntimeExtras.h */, + E124A8F60E555775003091F1 /* OpaqueJSString.cpp */, + E124A8F50E555775003091F1 /* OpaqueJSString.h */, + 5DE3D0F40DD8DDFB00468714 /* WebKitAvailability.h */, + 1A28D4A7177B71C80007FA3C /* JSStringRefPrivate.h */, + ); + path = API; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 144005170A531CB50005F061 /* minidom */ = { + isa = PBXGroup; + children = ( + 1440F6420A4F8B6A0005F061 /* JSNode.c */, + 1440F6410A4F8B6A0005F061 /* JSNode.h */, + 144007560A5370D20005F061 /* JSNodeList.c */, + 144007550A5370D20005F061 /* JSNodeList.h */, + 141211020A48780900480255 /* minidom.c */, + 1412110D0A48788700480255 /* minidom.js */, + 144005200A531D3B0005F061 /* Node.c */, + 1440051F0A531D3B0005F061 /* Node.h */, + 144007490A536CC20005F061 /* NodeList.c */, + 144007480A536CC20005F061 /* NodeList.h */, + ); + name = minidom; + path = API; + sourceTree = ""; + }; + 1480DB9A0DDC2231003CFDF2 /* debugger */ = { + isa = PBXGroup; + children = ( + F692A8580255597D01FF60F7 /* Debugger.cpp */, + F692A8590255597D01FF60F7 /* Debugger.h */, + BC3135630F302FA3003DFD3A /* DebuggerActivation.cpp */, + BC3135620F302FA3003DFD3A /* DebuggerActivation.h */, + 149559ED0DDCDDF700648087 /* DebuggerCallFrame.cpp */, + 1480DB9B0DDC227F003CFDF2 /* DebuggerCallFrame.h */, + ); + path = debugger; + sourceTree = ""; + }; + 1C90513E0BA9E8830081E9D0 /* Configurations */ = { + isa = PBXGroup; + children = ( + 1C9051450BA9E8A70081E9D0 /* Base.xcconfig */, + 1C9051440BA9E8A70081E9D0 /* DebugRelease.xcconfig */, + 449097EE0F8F81B50076A327 /* FeatureDefines.xcconfig */, + 1C9051430BA9E8A70081E9D0 /* JavaScriptCore.xcconfig */, + 5DAFD6CB146B686300FBEFB4 /* JSC.xcconfig */, + BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */, + 1C9051420BA9E8A70081E9D0 /* Version.xcconfig */, + ); + path = Configurations; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 650FDF8D09D0FCA700769E54 /* Derived Sources */ = { + isa = PBXGroup; + children = ( + BC18C5230E16FC8A00B34460 /* ArrayPrototype.lut.h */, + BCD203E70E1718F4002C7E82 /* DatePrototype.lut.h */, + BC8149AF12F89F53007B2C32 /* HeaderDetection.h */, + BC87CDB810712ACA000614CF /* JSONObject.lut.h */, + A7C225CD1399849C00FF1662 /* KeywordLookup.h */, + BC18C52D0E16FCE100B34460 /* Lexer.lut.h */, + BC18C5290E16FCC200B34460 /* MathObject.lut.h */, + BC2680E60E16D52300A06E92 /* NumberConstructor.lut.h */, + BCD202D50E170708002C7E82 /* RegExpConstructor.lut.h */, + A718F61A11754A21002465A7 /* RegExpJitTables.h */, + BC18C52B0E16FCD200B34460 /* RegExpObject.lut.h */, + BC18C5250E16FCA700B34460 /* StringPrototype.lut.h */, + 5D53727D0E1C55EC0021E549 /* TracingDtrace.h */, + ); + name = "Derived Sources"; + path = DerivedSources/JavaScriptCore; + sourceTree = BUILT_PRODUCTS_DIR; + tabWidth = 4; + usesTabs = 0; + }; + 65C028591717966800351E35 /* ARMv7 */ = { + isa = PBXGroup; + children = ( + 65C0285A1717966800351E35 /* ARMv7DOpcode.cpp */, + 65C0285B1717966800351E35 /* ARMv7DOpcode.h */, + ); + name = ARMv7; + path = disassembler/ARMv7; + sourceTree = ""; + }; + 7E39D81D0EC38EFA003AF11A /* bytecompiler */ = { + isa = PBXGroup; + children = ( + 969A07200ED1CE3300F1F681 /* BytecodeGenerator.cpp */, + 969A07210ED1CE3300F1F681 /* BytecodeGenerator.h */, + 969A07270ED1CE6900F1F681 /* Label.h */, + 960097A50EBABB58007A7297 /* LabelScope.h */, + 655EB29A10CE2581001A990E /* NodesCodegen.cpp */, + 969A07280ED1CE6900F1F681 /* RegisterID.h */, + 14DF04D916B3996D0016A513 /* StaticPropertyAnalysis.h */, + 14CA958A16AB50DE00938A06 /* StaticPropertyAnalyzer.h */, + ); + path = bytecompiler; + sourceTree = ""; + }; + 7E39D8370EC3A388003AF11A /* parser */ = { + isa = PBXGroup; + children = ( + A7A7EE7411B98B8D0065A14F /* ASTBuilder.h */, + 93F1981A08245AAE001E9ABC /* Keywords.table */, + F692A8650255597D01FF60F7 /* Lexer.cpp */, + F692A8660255597D01FF60F7 /* Lexer.h */, + 930DAD030FB1EB1A0082D205 /* NodeConstructors.h */, + 7EFF00630EC05A9A00AA7C93 /* NodeInfo.h */, + F692A86D0255597D01FF60F7 /* Nodes.cpp */, + F692A86E0255597D01FF60F7 /* Nodes.h */, + 93F0B3A909BB4DC00068FCE3 /* Parser.cpp */, + 93F0B3AA09BB4DC00068FCE3 /* Parser.h */, + 93052C320FB792190048FDC3 /* ParserArena.cpp */, + 93052C330FB792190048FDC3 /* ParserArena.h */, + 0FCCAE4316D0CF6E00D0C65B /* ParserError.h */, + A77F18241641925400640A47 /* ParserModes.h */, + 65303D631447B9E100D3F904 /* ParserTokens.h */, + 869EBCB60E8C6D4A008722CC /* ResultType.h */, + 65E866EE0DD59AFA00A2B2A1 /* SourceCode.h */, + 0F493AF816D0CAD10084508B /* SourceProvider.cpp */, + 65E866ED0DD59AFA00A2B2A1 /* SourceProvider.h */, + E49DC15512EF277200184A1F /* SourceProviderCache.cpp */, + E49DC15112EF272200184A1F /* SourceProviderCache.h */, + E49DC14912EF261A00184A1F /* SourceProviderCacheItem.h */, + A7A7EE7711B98B8D0065A14F /* SyntaxChecker.h */, + ); + path = parser; + sourceTree = ""; + }; + 7EF6E0BB0EB7A1EC0079AFAF /* runtime */ = { + isa = PBXGroup; + children = ( + A72028B91797603D0098028C /* JSFunctionInlines.h */, + BCF605110E203EF800B9A64D /* ArgList.cpp */, + BCF605120E203EF800B9A64D /* ArgList.h */, + BC257DE50E1F51C50016B6C9 /* Arguments.cpp */, + BC257DE60E1F51C50016B6C9 /* Arguments.h */, + BC7952060E15E8A800A898AB /* ArrayConstructor.cpp */, + BC7952070E15E8A800A898AB /* ArrayConstructor.h */, + 0FB7F38915ED8E3800F167B2 /* ArrayConventions.h */, + F692A84D0255597D01FF60F7 /* ArrayPrototype.cpp */, + F692A84E0255597D01FF60F7 /* ArrayPrototype.h */, + 0FB7F38A15ED8E3800F167B2 /* ArrayStorage.h */, + 147B83AA0E6DB8C9004775A4 /* BatchedTransitionOptimizer.h */, + 866739D013BFDE710023D87C /* BigInteger.h */, + BC7952320E15EB5600A898AB /* BooleanConstructor.cpp */, + BC7952330E15EB5600A898AB /* BooleanConstructor.h */, + F692A8500255597D01FF60F7 /* BooleanObject.cpp */, + 704FD35305697E6D003DBED9 /* BooleanObject.h */, + BC7952340E15EB5600A898AB /* BooleanPrototype.cpp */, + BC7952350E15EB5600A898AB /* BooleanPrototype.h */, + 0FB7F38B15ED8E3800F167B2 /* Butterfly.h */, + 0FB7F38C15ED8E3800F167B2 /* ButterflyInlines.h */, + 869D04AE1193B54D00803475 /* CachedTranscendentalFunction.h */, + BCA62DFE0E2826230004F30D /* CallData.cpp */, + 145C507F0D9DF63B0088F6B9 /* CallData.h */, + BC6AAAE40E1F426500AD87D8 /* ClassInfo.h */, + A77F181F164088B200640A47 /* CodeCache.cpp */, + A77F1820164088B200640A47 /* CodeCache.h */, + 0F8F943A1667631100D61971 /* CodeSpecializationKind.cpp */, + 0F21C27914BE727300ADC64B /* CodeSpecializationKind.h */, + 65EA73620BAE35D1001BB560 /* CommonIdentifiers.cpp */, + 65EA73630BAE35D1001BB560 /* CommonIdentifiers.h */, + 0F15F15D14B7A73A005DE37D /* CommonSlowPaths.h */, + 969A09220ED1E09C00F1F681 /* Completion.cpp */, + F5BB2BC5030F772101FCFE1D /* Completion.h */, + BCA62DFF0E2826310004F30D /* ConstructData.cpp */, + BC8F3CCF0DAF17BA00577A80 /* ConstructData.h */, + BCD203450E17135E002C7E82 /* DateConstructor.cpp */, + BCD203460E17135E002C7E82 /* DateConstructor.h */, + D21202280AD4310C00ED79B6 /* DateConversion.cpp */, + D21202290AD4310C00ED79B6 /* DateConversion.h */, + BC1166000E1997B1008066DD /* DateInstance.cpp */, + BC1166010E1997B1008066DD /* DateInstance.h */, + 14A1563010966365006FA260 /* DateInstanceCache.h */, + BCD203470E17135E002C7E82 /* DatePrototype.cpp */, + BCD203480E17135E002C7E82 /* DatePrototype.h */, + BC337BEA0E1B00CB0076918A /* Error.cpp */, + BC3046060E1F497F003232CF /* Error.h */, + BC02E9040E1839DB000F9297 /* ErrorConstructor.cpp */, + BC02E9050E1839DB000F9297 /* ErrorConstructor.h */, + BC02E98A0E183E38000F9297 /* ErrorInstance.cpp */, + BC02E98B0E183E38000F9297 /* ErrorInstance.h */, + BC02E9060E1839DB000F9297 /* ErrorPrototype.cpp */, + BC02E9070E1839DB000F9297 /* ErrorPrototype.h */, + 1429D8770ED21ACD00B89619 /* ExceptionHelpers.cpp */, + A72701B30DADE94900E548D7 /* ExceptionHelpers.h */, + 86CA032D1038E8440028A609 /* Executable.cpp */, + 86CAFEE21035DDE60028A609 /* Executable.h */, + 0F21C27A14BE727300ADC64B /* ExecutionHarness.h */, + BC2680C00E16D4E900A06E92 /* FunctionConstructor.cpp */, + BC2680C10E16D4E900A06E92 /* FunctionConstructor.h */, + 0FB4B52116B6278D003F696B /* FunctionExecutableDump.cpp */, + 0FB4B52216B6278D003F696B /* FunctionExecutableDump.h */, + F692A85C0255597D01FF60F7 /* FunctionPrototype.cpp */, + F692A85D0255597D01FF60F7 /* FunctionPrototype.h */, + C2D58C3315912FEE0021A844 /* GCActivityCallback.cpp */, + DDF7ABD211F60ED200108E36 /* GCActivityCallback.h */, + BC02E9B80E184545000F9297 /* GetterSetter.cpp */, + BC337BDE0E1AF0B80076918A /* GetterSetter.h */, + 933A349D038AE80F008635CE /* Identifier.cpp */, + 933A349A038AE7C6008635CE /* Identifier.h */, + 0FB7F38D15ED8E3800F167B2 /* IndexingHeader.h */, + 0FB7F38E15ED8E3800F167B2 /* IndexingHeaderInlines.h */, + 0F13E04C16164A1B00DC8DE7 /* IndexingType.cpp */, + 0FB7F38F15ED8E3800F167B2 /* IndexingType.h */, + E178636C0D9BEEC300D74E75 /* InitializeThreading.cpp */, + E178633F0D9BEC0000D74E75 /* InitializeThreading.h */, + BC9BB95B0E19680600DF8855 /* InternalFunction.cpp */, + BC11667A0E199C05008066DD /* InternalFunction.h */, + 86BF642A148DB2B5004DE36A /* Intrinsic.h */, + 14DA818F0D99FD2000B0A4FB /* JSActivation.cpp */, + 14DA818E0D99FD2000B0A4FB /* JSActivation.h */, + 93ADFCE60CCBD7AC00D30B08 /* JSArray.cpp */, + 938772E5038BFE19008635CE /* JSArray.h */, + 86FA9E8F142BBB2D001773B7 /* JSBoundFunction.cpp */, + 86FA9E90142BBB2E001773B7 /* JSBoundFunction.h */, + BC7F8FBA0E19D1EF008632C0 /* JSCell.cpp */, + BC1167D80E19BCC9008066DD /* JSCell.h */, + 0F97496F1687ADE200A4FF6A /* JSCellInlines.h */, + F692A8870255597D01FF60F7 /* JSCJSValue.cpp */, + 14ABB36E099C076400E2A24F /* JSCJSValue.h */, + 865A30F0135007E100CDB49E /* JSCJSValueInlines.h */, + 9788FC221471AD0C0068CE2D /* JSDateMath.cpp */, + 9788FC231471AD0C0068CE2D /* JSDateMath.h */, + C2A7F687160432D400F76B98 /* JSDestructibleObject.h */, + A7B4ACAE1484C9CE00B38A36 /* JSExportMacros.h */, + F692A85E0255597D01FF60F7 /* JSFunction.cpp */, + F692A85F0255597D01FF60F7 /* JSFunction.h */, + 14DE0D680D02431400AACCA2 /* JSGlobalObject.cpp */, + A8E894330CD0603F00367179 /* JSGlobalObject.h */, + BC756FC60E2031B200DE7D12 /* JSGlobalObjectFunctions.cpp */, + BC756FC70E2031B200DE7D12 /* JSGlobalObjectFunctions.h */, + 65EA4C99092AF9E20093D800 /* JSLock.cpp */, + 65EA4C9A092AF9E20093D800 /* JSLock.h */, + 14874ADF15EBDE4A002E3587 /* JSNameScope.cpp */, + 14874AE015EBDE4A002E3587 /* JSNameScope.h */, + A72700780DAC605600E548D7 /* JSNotAnObject.cpp */, + A72700770DAC605600E548D7 /* JSNotAnObject.h */, + BC22A3980E16E14800AF21C8 /* JSObject.cpp */, + BC22A3990E16E14800AF21C8 /* JSObject.h */, + A7F9935E0FD7325100A0B2D0 /* JSONObject.cpp */, + A7F9935D0FD7325100A0B2D0 /* JSONObject.h */, + A727FF660DA3053B00E548D7 /* JSPropertyNameIterator.cpp */, + A727FF650DA3053B00E548D7 /* JSPropertyNameIterator.h */, + 862553CE16136AA5009F17D0 /* JSProxy.cpp */, + 862553CF16136AA5009F17D0 /* JSProxy.h */, + 14874AE115EBDE4A002E3587 /* JSScope.cpp */, + 14874AE215EBDE4A002E3587 /* JSScope.h */, + 0F919D0E157F3327004A4E7D /* JSSegmentedVariableObject.cpp */, + 0F919D0F157F3327004A4E7D /* JSSegmentedVariableObject.h */, + BC02E9B60E1842FA000F9297 /* JSString.cpp */, + F692A8620255597D01FF60F7 /* JSString.h */, + 86E85538111B9968001AF51E /* JSStringBuilder.h */, + 2600B5A4152BAAA70091EE5F /* JSStringJoiner.cpp */, + 2600B5A5152BAAA70091EE5F /* JSStringJoiner.h */, + 0F919D09157EE09D004A4E7D /* JSSymbolTableObject.cpp */, + 0F919D0A157EE09D004A4E7D /* JSSymbolTableObject.h */, + 14ABB454099C2A0F00E2A24F /* JSType.h */, + 6507D2970E871E4A00D7D896 /* JSTypeInfo.h */, + BC22A39A0E16E14800AF21C8 /* JSVariableObject.cpp */, + 14F252560D08DD8D004ECFFF /* JSVariableObject.h */, + 1442565F15EDE98D0066A49B /* JSWithScope.cpp */, + 1442566015EDE98D0066A49B /* JSWithScope.h */, + 65C7A1710A8EAACB00FA37EA /* JSWrapperObject.cpp */, + 65C7A1720A8EAACB00FA37EA /* JSWrapperObject.h */, + A7E2EA6A0FB460CF00601F06 /* LiteralParser.cpp */, + A7E2EA690FB460CF00601F06 /* LiteralParser.h */, + F692A8680255597D01FF60F7 /* Lookup.cpp */, + F692A8690255597D01FF60F7 /* Lookup.h */, + 8612E4CB1522918400C836BE /* MatchResult.h */, + F692A86A0255597D01FF60F7 /* MathObject.cpp */, + F692A86B0255597D01FF60F7 /* MathObject.h */, + 90213E3B123A40C200D422F3 /* MemoryStatistics.cpp */, + 90213E3C123A40C200D422F3 /* MemoryStatistics.h */, + 86EBF2F91560F036008E9222 /* NameConstructor.cpp */, + 86EBF2FA1560F036008E9222 /* NameConstructor.h */, + 86EBF2FB1560F036008E9222 /* NameInstance.cpp */, + 86EBF2FC1560F036008E9222 /* NameInstance.h */, + 86EBF2FD1560F036008E9222 /* NamePrototype.cpp */, + 86EBF2FE1560F036008E9222 /* NamePrototype.h */, + BC02E9080E1839DB000F9297 /* NativeErrorConstructor.cpp */, + BC02E9090E1839DB000F9297 /* NativeErrorConstructor.h */, + BC02E90A0E1839DB000F9297 /* NativeErrorPrototype.cpp */, + BC02E90B0E1839DB000F9297 /* NativeErrorPrototype.h */, + BC2680C20E16D4E900A06E92 /* NumberConstructor.cpp */, + BC2680C30E16D4E900A06E92 /* NumberConstructor.h */, + F692A8700255597D01FF60F7 /* NumberObject.cpp */, + F692A8710255597D01FF60F7 /* NumberObject.h */, + BC2680C40E16D4E900A06E92 /* NumberPrototype.cpp */, + BC2680C50E16D4E900A06E92 /* NumberPrototype.h */, + 142D3938103E4560007DCB52 /* NumericStrings.h */, + BC2680C60E16D4E900A06E92 /* ObjectConstructor.cpp */, + BC2680C70E16D4E900A06E92 /* ObjectConstructor.h */, + BC2680C80E16D4E900A06E92 /* ObjectPrototype.cpp */, + BC2680C90E16D4E900A06E92 /* ObjectPrototype.h */, + F692A8770255597D01FF60F7 /* Operations.cpp */, + F692A8780255597D01FF60F7 /* Operations.h */, + 0FE228EA1436AB2300196C48 /* Options.cpp */, + 0FE228EB1436AB2300196C48 /* Options.h */, + 868916A9155F285400CB2B9A /* PrivateName.h */, + A7FB60A3103F7DC20017A286 /* PropertyDescriptor.cpp */, + A7FB604B103F5EAB0017A286 /* PropertyDescriptor.h */, + BC95437C0EBA70FD0072B6D3 /* PropertyMapHashTable.h */, + 86158AB2155C8B3F00B45C9C /* PropertyName.h */, + 65400C0F0A69BAF200509887 /* PropertyNameArray.cpp */, + 65400C100A69BAF200509887 /* PropertyNameArray.h */, + 0FF7168A15A3B231008F5DAA /* PropertyOffset.h */, + 65621E6B089E859700760F35 /* PropertySlot.cpp */, + 65621E6C089E859700760F35 /* PropertySlot.h */, + 0FB7F39015ED8E3800F167B2 /* PropertyStorage.h */, + AD1CF06816DCAB2D00B97123 /* PropertyTable.cpp */, + 65C02FBB0637462A003E7EE6 /* Protect.h */, + 14D844A216AA2C7000A65AF0 /* PrototypeMap.cpp */, + 14D844A316AA2C7000A65AF0 /* PrototypeMap.h */, + 0F0CD4C015F1A6040032F1C0 /* PutDirectIndexMode.h */, + 147B84620E6DE6B1004775A4 /* PutPropertySlot.h */, + F692A87D0255597D01FF60F7 /* RegExp.cpp */, + F692A87E0255597D01FF60F7 /* RegExp.h */, + A1712B3A11C7B212007A5315 /* RegExpCache.cpp */, + A1712B3E11C7B228007A5315 /* RegExpCache.h */, + 86F75EFB151C062F007C9BA3 /* RegExpCachedResult.cpp */, + 86F75EFC151C062F007C9BA3 /* RegExpCachedResult.h */, + BCD202BD0E1706A7002C7E82 /* RegExpConstructor.cpp */, + BCD202BE0E1706A7002C7E82 /* RegExpConstructor.h */, + A1712B4011C7B235007A5315 /* RegExpKey.h */, + 86F75EFD151C062F007C9BA3 /* RegExpMatchesArray.cpp */, + 93CEDDFB0EA91EE600258EBE /* RegExpMatchesArray.h */, + F692A87B0255597D01FF60F7 /* RegExpObject.cpp */, + F692A87C0255597D01FF60F7 /* RegExpObject.h */, + BCD202BF0E1706A7002C7E82 /* RegExpPrototype.cpp */, + BCD202C00E1706A7002C7E82 /* RegExpPrototype.h */, + 0FB7F39115ED8E3800F167B2 /* Reject.h */, + 0F7700911402FF280078EB39 /* SamplingCounter.cpp */, + 0F77008E1402FDD60078EB39 /* SamplingCounter.h */, + 93303FE80E6A72B500786E6A /* SmallStrings.cpp */, + 93303FEA0E6A72C000786E6A /* SmallStrings.h */, + 0F0CD4C315F6B6B50032F1C0 /* SparseArrayValueMap.cpp */, + 0FB7F39215ED8E3800F167B2 /* SparseArrayValueMap.h */, + A730B6111250068F009D25B1 /* StrictEvalActivation.cpp */, + A730B6101250068F009D25B1 /* StrictEvalActivation.h */, + BC18C3C00E16EE3300B34460 /* StringConstructor.cpp */, + BC18C3C10E16EE3300B34460 /* StringConstructor.h */, + BC18C3C20E16EE3300B34460 /* StringObject.cpp */, + BC18C3C30E16EE3300B34460 /* StringObject.h */, + BC18C3C50E16EE3300B34460 /* StringPrototype.cpp */, + BC18C3C60E16EE3300B34460 /* StringPrototype.h */, + 93345A8712D838C400302BE3 /* StringRecursionChecker.cpp */, + 93345A8812D838C400302BE3 /* StringRecursionChecker.h */, + BCDE3AB00E6C82CF001453A7 /* Structure.cpp */, + BCDE3AB10E6C82CF001453A7 /* Structure.h */, + 7E4EE70E0EBB7A5B005934AA /* StructureChain.cpp */, + 7E4EE7080EBB7963005934AA /* StructureChain.h */, + 0FD2C92316D01EE900C7803F /* StructureInlines.h */, + C2F0F2D016BAEEE900187C19 /* StructureRareData.cpp */, + C2FE18A316BAEC4000AF3061 /* StructureRareData.h */, + C20BA92C16BB1C1500B3AEA2 /* StructureRareDataInlines.h */, + BC9041470EB9250900FE26FA /* StructureTransitionTable.h */, + 0F919D2715856770004A4E7D /* SymbolTable.cpp */, + 14A396A60CD2933100B5B4FF /* SymbolTable.h */, + 5D53726D0E1C546B0021E549 /* Tracing.d */, + 5D53726E0E1C54880021E549 /* Tracing.h */, + 0FEB3ECB16237F4700AB67AD /* TypedArrayDescriptor.h */, + 866739D113BFDE710023D87C /* Uint16WithFraction.h */, + E18E3A570DF9278C00D90B34 /* VM.cpp */, + E18E3A560DF9278C00D90B34 /* VM.h */, + FE6617271774E03500495B00 /* VMStackBounds.h */, + FED94F2B171E3E2300BE77A4 /* Watchdog.cpp */, + FED94F2C171E3E2300BE77A4 /* Watchdog.h */, + FED94F2D171E3E2300BE77A4 /* WatchdogMac.cpp */, + 14BFCE6810CDB1FC00364CCE /* WeakGCMap.h */, + 1420BE7A10AA6DDB00F455D2 /* WeakRandom.h */, + A7DCB77912E3D90500911940 /* WriteBarrier.h */, + ); + path = runtime; + sourceTree = ""; + }; + 8603CEF014C753EF00AE59E3 /* tools */ = { + isa = PBXGroup; + children = ( + 86B5822E14D2373B00A9C306 /* CodeProfile.cpp */, + 86B5822F14D2373B00A9C306 /* CodeProfile.h */, + 8603CEF214C7546400AE59E3 /* CodeProfiling.cpp */, + 8603CEF314C7546400AE59E3 /* CodeProfiling.h */, + 86B5822C14D22F5F00A9C306 /* ProfileTreeNode.h */, + 86B5826A14D35D5100A9C306 /* TieredMMapArray.h */, + ); + path = tools; + sourceTree = ""; + }; + 86EAC48C0F93E8B9008EC948 /* yarr */ = { + isa = PBXGroup; + children = ( + 451539B812DC994500EF7AC4 /* Yarr.h */, + 863C6D981521111200585E4E /* YarrCanonicalizeUCS2.cpp */, + 863C6D991521111200585E4E /* YarrCanonicalizeUCS2.h */, + 863C6D9A1521111200585E4E /* YarrCanonicalizeUCS2.js */, + 86704B7D12DBA33700A9FE7B /* YarrInterpreter.cpp */, + 86704B7E12DBA33700A9FE7B /* YarrInterpreter.h */, + 86704B7F12DBA33700A9FE7B /* YarrJIT.cpp */, + 86704B8012DBA33700A9FE7B /* YarrJIT.h */, + 86704B8112DBA33700A9FE7B /* YarrParser.h */, + 86704B8212DBA33700A9FE7B /* YarrPattern.cpp */, + 86704B8312DBA33700A9FE7B /* YarrPattern.h */, + 86704B4012DB8A8100A9FE7B /* YarrSyntaxChecker.cpp */, + 86704B4112DB8A8100A9FE7B /* YarrSyntaxChecker.h */, + ); + name = yarr; + sourceTree = ""; + }; + 86EC9DB31328DF44002B2AD7 /* dfg */ = { + isa = PBXGroup; + children = ( + 0F62016D143FCD2F0068B77C /* DFGAbstractState.cpp */, + 0F62016E143FCD2F0068B77C /* DFGAbstractState.h */, + 0F62016F143FCD2F0068B77C /* DFGAbstractValue.h */, + 0F66E16814DF3F1300B7B2E4 /* DFGAdjacencyList.h */, + 0FB4B51916B62772003F696B /* DFGAllocator.h */, + 0F1E3A431534CBAD000F9456 /* DFGArgumentPosition.h */, + 0F16015A156198BF00C2587C /* DFGArgumentsSimplificationPhase.cpp */, + 0F16015B156198BF00C2587C /* DFGArgumentsSimplificationPhase.h */, + 0F05C3B21683CF8F00BAF45B /* DFGArrayifySlowPathGenerator.h */, + 0F63948115E48114006A597C /* DFGArrayMode.cpp */, + 0F63948215E48114006A597C /* DFGArrayMode.h */, + 0FC0976B1468AB4A00CF2442 /* DFGAssemblyHelpers.cpp */, + 0FC0976C1468AB4A00CF2442 /* DFGAssemblyHelpers.h */, + 0F714CA116EA92ED00F3EBEB /* DFGBackwardsPropagationPhase.cpp */, + 0F714CA216EA92ED00F3EBEB /* DFGBackwardsPropagationPhase.h */, + 0F620170143FCD2F0068B77C /* DFGBasicBlock.h */, + 0FD5652216AB780A00197653 /* DFGBasicBlockInlines.h */, + 0F8364B5164B0C0E0053329A /* DFGBranchDirection.h */, + 86EC9DB41328DF82002B2AD7 /* DFGByteCodeParser.cpp */, + 86EC9DB51328DF82002B2AD7 /* DFGByteCodeParser.h */, + 0F256C341627B0AA007F2783 /* DFGCallArrayAllocatorSlowPathGenerator.h */, + 0FD82E1E14172C2F00179C94 /* DFGCapabilities.cpp */, + 0FD82E1F14172C2F00179C94 /* DFGCapabilities.h */, + 0F7B294814C3CD23007C3DB1 /* DFGCCallHelpers.h */, + 0FFFC94B14EF909500C72532 /* DFGCFAPhase.cpp */, + 0FFFC94C14EF909500C72532 /* DFGCFAPhase.h */, + 0F3B3A241544C991003ED0FF /* DFGCFGSimplificationPhase.cpp */, + 0F3B3A251544C991003ED0FF /* DFGCFGSimplificationPhase.h */, + 0FB4B51A16B62772003F696B /* DFGCommon.cpp */, + 0FC0977E1469EBC400CF2442 /* DFGCommon.h */, + 0F3B3A17153E68EF003ED0FF /* DFGConstantFoldingPhase.cpp */, + 0F3B3A18153E68EF003ED0FF /* DFGConstantFoldingPhase.h */, + 0FBE0F6B16C1DB010082C5E8 /* DFGCPSRethreadingPhase.cpp */, + 0FBE0F6C16C1DB010082C5E8 /* DFGCPSRethreadingPhase.h */, + 0FFFC94D14EF909500C72532 /* DFGCSEPhase.cpp */, + 0FFFC94E14EF909500C72532 /* DFGCSEPhase.h */, + 0F2FC77016E12F6F0038D976 /* DFGDCEPhase.cpp */, + 0F2FC77116E12F6F0038D976 /* DFGDCEPhase.h */, + 0FF427611591A1C9004CB9FF /* DFGDisassembler.cpp */, + 0FF427621591A1C9004CB9FF /* DFGDisassembler.h */, + 0FD81ACF154FB4EB00983E72 /* DFGDominators.cpp */, + 0FD81AD0154FB4EB00983E72 /* DFGDominators.h */, + 0F1E3A441534CBAD000F9456 /* DFGDoubleFormatState.h */, + 0FD3C82014115CF800FD81CB /* DFGDriver.cpp */, + 0FD3C82214115D0E00FD81CB /* DFGDriver.h */, + 0FB4B51B16B62772003F696B /* DFGEdge.cpp */, + 0F66E16914DF3F1300B7B2E4 /* DFGEdge.h */, + 0F2BDC12151C5D4A00CD8910 /* DFGFixupPhase.cpp */, + 0F2BDC13151C5D4A00CD8910 /* DFGFixupPhase.h */, + 86AE6C4B136A11E400963012 /* DFGFPRInfo.h */, + 86EC9DB61328DF82002B2AD7 /* DFGGenerationInfo.h */, + 86AE6C4C136A11E400963012 /* DFGGPRInfo.h */, + 86EC9DB71328DF82002B2AD7 /* DFGGraph.cpp */, + 86EC9DB81328DF82002B2AD7 /* DFGGraph.h */, + 0F2BDC1F151E803800CD8910 /* DFGInsertionSet.h */, + 86EC9DBB1328DF82002B2AD7 /* DFGJITCompiler.cpp */, + 86EC9DBC1328DF82002B2AD7 /* DFGJITCompiler.h */, + 0FB4B51C16B62772003F696B /* DFGLongLivedState.cpp */, + 0FB4B51D16B62772003F696B /* DFGLongLivedState.h */, + 0F2BDC3D1522801700CD8910 /* DFGMinifiedGraph.h */, + 0FB4B51016B3A964003F696B /* DFGMinifiedID.h */, + 0F2BDC4C1522818300CD8910 /* DFGMinifiedNode.cpp */, + 0F2BDC3E1522801700CD8910 /* DFGMinifiedNode.h */, + 0FB4B51E16B62772003F696B /* DFGNode.cpp */, + 86ECA3E9132DEF1C002B2AD7 /* DFGNode.h */, + 0FB4B51F16B62772003F696B /* DFGNodeAllocator.h */, + 0FA581B7150E952A00B9A2D9 /* DFGNodeFlags.cpp */, + 0FA581B8150E952A00B9A2D9 /* DFGNodeFlags.h */, + 0FA581B9150E952A00B9A2D9 /* DFGNodeType.h */, + 86EC9DBF1328DF82002B2AD7 /* DFGOperations.cpp */, + 86EC9DC01328DF82002B2AD7 /* DFGOperations.h */, + 0FD82E52141DAEDE00179C94 /* DFGOSREntry.cpp */, + 0FD82E53141DAEDE00179C94 /* DFGOSREntry.h */, + 0FC0978E146A6F6300CF2442 /* DFGOSRExit.cpp */, + 0FC097681468A6EF00CF2442 /* DFGOSRExit.h */, + 65987F2C167FE84B003C2F8D /* DFGOSRExitCompilationInfo.h */, + 0FC0978F146A6F6300CF2442 /* DFGOSRExitCompiler.cpp */, + 0FC0976F14693AEF00CF2442 /* DFGOSRExitCompiler.h */, + 0FC09775146943AD00CF2442 /* DFGOSRExitCompiler32_64.cpp */, + 0FC0977014693AEF00CF2442 /* DFGOSRExitCompiler64.cpp */, + 0FEFC9A71681A3B000567F53 /* DFGOSRExitJumpPlaceholder.cpp */, + 0FEFC9A81681A3B000567F53 /* DFGOSRExitJumpPlaceholder.h */, + 0FFFC94F14EF909500C72532 /* DFGPhase.cpp */, + 0FFFC95014EF909500C72532 /* DFGPhase.h */, + 0FBE0F6D16C1DB010082C5E8 /* DFGPredictionInjectionPhase.cpp */, + 0FBE0F6E16C1DB010082C5E8 /* DFGPredictionInjectionPhase.h */, + 0FFFC95114EF909500C72532 /* DFGPredictionPropagationPhase.cpp */, + 0FFFC95214EF909500C72532 /* DFGPredictionPropagationPhase.h */, + 86EC9DC11328DF82002B2AD7 /* DFGRegisterBank.h */, + 0F766D4215B2A3BD008F363E /* DFGRegisterSet.h */, + 86BB09BE138E381B0056702F /* DFGRepatch.cpp */, + 86BB09BF138E381B0056702F /* DFGRepatch.h */, + 86ECA3F9132DF25A002B2AD7 /* DFGScoreBoard.h */, + 0F766D4515B3701D008F363E /* DFGScratchRegisterAllocator.h */, + 0F1E3A65153A21DF000F9456 /* DFGSilentRegisterSavePlan.h */, + 0F1E3A501537C2CB000F9456 /* DFGSlowPathGenerator.h */, + 86EC9DC21328DF82002B2AD7 /* DFGSpeculativeJIT.cpp */, + 86EC9DC31328DF82002B2AD7 /* DFGSpeculativeJIT.h */, + 86880F1B14328BB900B08D42 /* DFGSpeculativeJIT32_64.cpp */, + 86880F4C14353B2100B08D42 /* DFGSpeculativeJIT64.cpp */, + 0F63947615DCE347006A597C /* DFGStructureAbstractValue.h */, + 0FC0979F146B28C700CF2442 /* DFGThunks.cpp */, + 0FC097A0146B28C700CF2442 /* DFGThunks.h */, + 0F63943C15C75F14006A597C /* DFGTypeCheckHoistingPhase.cpp */, + 0F63943D15C75F14006A597C /* DFGTypeCheckHoistingPhase.h */, + 0FBE0F6F16C1DB010082C5E8 /* DFGUnificationPhase.cpp */, + 0FBE0F7016C1DB010082C5E8 /* DFGUnificationPhase.h */, + 0F34B14716D4200E001CDA5A /* DFGUseKind.cpp */, + 0F34B14816D4200E001CDA5A /* DFGUseKind.h */, + 0F3B3A2915474FF4003ED0FF /* DFGValidate.cpp */, + 0F3B3A2A15474FF4003ED0FF /* DFGValidate.h */, + 0F2BDC3F1522801700CD8910 /* DFGValueRecoveryOverride.h */, + 0F2BDC4E15228BE700CD8910 /* DFGValueSource.cpp */, + 0F2BDC401522801700CD8910 /* DFGValueSource.h */, + 0F620172143FCD2F0068B77C /* DFGVariableAccessData.h */, + 0FDDBFB21666EED500C55FEF /* DFGVariableAccessDataDump.cpp */, + 0FDDBFB31666EED500C55FEF /* DFGVariableAccessDataDump.h */, + 0F2BDC5015228FFA00CD8910 /* DFGVariableEvent.cpp */, + 0F2BDC411522801700CD8910 /* DFGVariableEvent.h */, + 0F2BDC421522801700CD8910 /* DFGVariableEventStream.cpp */, + 0F2BDC431522801700CD8910 /* DFGVariableEventStream.h */, + 0F85A31E16AB76AE0077571E /* DFGVariadicFunction.h */, + 0FFFC95314EF909500C72532 /* DFGVirtualRegisterAllocationPhase.cpp */, + 0FFFC95414EF909500C72532 /* DFGVirtualRegisterAllocationPhase.h */, + ); + name = dfg; + sourceTree = ""; + }; + 932FC3C20824BB70005B3C75 /* Resources */ = { + isa = PBXGroup; + children = ( + 932F5BD80822A1C700736975 /* Info.plist */, + ); + name = Resources; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 95AB831A0DA42C6900BC83F3 /* profiler */ = { + isa = PBXGroup; + children = ( + 95E3BC040E1AE68200B2D1C1 /* CallIdentifier.h */, + 95AB832E0DA42CAD00BC83F3 /* LegacyProfiler.cpp */, + 95AB832F0DA42CAD00BC83F3 /* LegacyProfiler.h */, + 95742F630DD11F5A000917FB /* Profile.cpp */, + 95742F640DD11F5A000917FB /* Profile.h */, + 95CD45740E1C4FDD0085358E /* ProfileGenerator.cpp */, + 95CD45750E1C4FDD0085358E /* ProfileGenerator.h */, + 95AB83540DA43B4400BC83F3 /* ProfileNode.cpp */, + 95AB83550DA43B4400BC83F3 /* ProfileNode.h */, + 0FF72992166AD347000F5BA3 /* ProfilerBytecode.cpp */, + 0FF72993166AD347000F5BA3 /* ProfilerBytecode.h */, + 0FF72994166AD347000F5BA3 /* ProfilerBytecodes.cpp */, + 0FF72995166AD347000F5BA3 /* ProfilerBytecodes.h */, + 0F13912416771C30009CCB07 /* ProfilerBytecodeSequence.cpp */, + 0F13912516771C30009CCB07 /* ProfilerBytecodeSequence.h */, + 0FF72996166AD347000F5BA3 /* ProfilerCompilation.cpp */, + 0FF72997166AD347000F5BA3 /* ProfilerCompilation.h */, + 0FF72998166AD347000F5BA3 /* ProfilerCompilationKind.cpp */, + 0FF72999166AD347000F5BA3 /* ProfilerCompilationKind.h */, + 0FF7299A166AD347000F5BA3 /* ProfilerCompiledBytecode.cpp */, + 0FF7299B166AD347000F5BA3 /* ProfilerCompiledBytecode.h */, + 0FF7299C166AD347000F5BA3 /* ProfilerDatabase.cpp */, + 0FF7299D166AD347000F5BA3 /* ProfilerDatabase.h */, + 0FF7299E166AD347000F5BA3 /* ProfilerExecutionCounter.h */, + 0FF7299F166AD347000F5BA3 /* ProfilerOrigin.cpp */, + 0FF729A0166AD347000F5BA3 /* ProfilerOrigin.h */, + 0FF729A1166AD347000F5BA3 /* ProfilerOriginStack.cpp */, + 0FF729A2166AD347000F5BA3 /* ProfilerOriginStack.h */, + 0FB105871675482E00F8AB6E /* ProfilerOSRExit.cpp */, + 0FB105881675482E00F8AB6E /* ProfilerOSRExit.h */, + 0FB105891675482E00F8AB6E /* ProfilerOSRExitSite.cpp */, + 0FB1058A1675482E00F8AB6E /* ProfilerOSRExitSite.h */, + 0F13912616771C30009CCB07 /* ProfilerProfiledBytecodes.cpp */, + 0F13912716771C30009CCB07 /* ProfilerProfiledBytecodes.h */, + ); + name = profiler; + sourceTree = ""; + usesTabs = 0; + }; + 9688CB120ED12B4E001D649F /* assembler */ = { + isa = PBXGroup; + children = ( + 860161DF0F3A83C100F84710 /* AbstractMacroAssembler.h */, + 86D3B2BF10156BDE002865E7 /* ARMAssembler.cpp */, + 86D3B2C010156BDE002865E7 /* ARMAssembler.h */, + A74DE1CB120B86D600D40D5B /* ARMv7Assembler.cpp */, + 86ADD1430FDDEA980006EEC2 /* ARMv7Assembler.h */, + 9688CB130ED12B4E001D649F /* AssemblerBuffer.h */, + 86D3B2C110156BDE002865E7 /* AssemblerBufferWithConstantPool.h */, + 86E116B00FE75AC800B512BC /* CodeLocation.h */, + 0FF4275615914A20004CB9FF /* LinkBuffer.cpp */, + 86D3B3C110159D7F002865E7 /* LinkBuffer.h */, + 0FEB3ECE16237F6700AB67AD /* MacroAssembler.cpp */, + 86C36EE90EE1289D00B3DF59 /* MacroAssembler.h */, + 86C568DD11A213EE0007F7F0 /* MacroAssemblerARM.cpp */, + 86D3B2C210156BDE002865E7 /* MacroAssemblerARM.h */, + 86ADD1440FDDEA980006EEC2 /* MacroAssemblerARMv7.h */, + 863B23DF0FC60E6200703AA4 /* MacroAssemblerCodeRef.h */, + 86C568DE11A213EE0007F7F0 /* MacroAssemblerMIPS.h */, + 86AE64A6135E5E1C00963012 /* MacroAssemblerSH4.h */, + 860161E00F3A83C100F84710 /* MacroAssemblerX86.h */, + 860161E10F3A83C100F84710 /* MacroAssemblerX86_64.h */, + 860161E20F3A83C100F84710 /* MacroAssemblerX86Common.h */, + 86C568DF11A213EE0007F7F0 /* MIPSAssembler.h */, + 86D3B3C210159D7F002865E7 /* RepatchBuffer.h */, + 86AE64A7135E5E1C00963012 /* SH4Assembler.h */, + 9688CB140ED12B4E001D649F /* X86Assembler.h */, + ); + path = assembler; + sourceTree = ""; + }; + 969A078F0ED1D3AE00F1F681 /* bytecode */ = { + isa = PBXGroup; + children = ( + 0F8335B41639C1E3001443B5 /* ArrayAllocationProfile.cpp */, + 0F8335B51639C1E3001443B5 /* ArrayAllocationProfile.h */, + 0F63945115D07051006A597C /* ArrayProfile.cpp */, + 0F63945215D07051006A597C /* ArrayProfile.h */, + 0F21C27E14BEAA8000ADC64B /* BytecodeConventions.h */, + 0F8023E91613832300A0BA45 /* ByValInfo.h */, + 0F0B83AE14BCF71400885B4F /* CallLinkInfo.cpp */, + 0F0B83AF14BCF71400885B4F /* CallLinkInfo.h */, + 0F93329314CA7DC10085F3C6 /* CallLinkStatus.cpp */, + 0F93329414CA7DC10085F3C6 /* CallLinkStatus.h */, + 0F0B83B814BCF95B00885B4F /* CallReturnOffsetToBytecodeOffset.h */, + 969A07900ED1D3AE00F1F681 /* CodeBlock.cpp */, + 969A07910ED1D3AE00F1F681 /* CodeBlock.h */, + 0F8F943D1667632D00D61971 /* CodeBlockHash.cpp */, + 0F8F943E1667632D00D61971 /* CodeBlockHash.h */, + 0F96EBB116676EF4008BADE3 /* CodeBlockWithJITType.h */, + 0F8F9445166764EE00D61971 /* CodeOrigin.cpp */, + 0FBD7E671447998F00481315 /* CodeOrigin.h */, + 0F8F943F1667632D00D61971 /* CodeType.cpp */, + 0F0B83A514BCF50400885B4F /* CodeType.h */, + 0F426A4A1460CD6B00131F8F /* DataFormat.h */, + 0FBC0AE41496C7C100D4FBDD /* DFGExitProfile.cpp */, + 0FBC0AE51496C7C100D4FBDD /* DFGExitProfile.h */, + 969A07920ED1D3AE00F1F681 /* EvalCodeCache.h */, + 0F56A1D415001CF2002992B1 /* ExecutionCounter.cpp */, + 0F56A1D115000F31002992B1 /* ExecutionCounter.h */, + 0FB105821675480C00F8AB6E /* ExitKind.cpp */, + 0FB105831675480C00F8AB6E /* ExitKind.h */, + 0F0B83AA14BCF5B900885B4F /* ExpressionRangeInfo.h */, + 0F93329514CA7DC10085F3C6 /* GetByIdStatus.cpp */, + 0F93329614CA7DC10085F3C6 /* GetByIdStatus.h */, + 0F0B83A814BCF55E00885B4F /* HandlerInfo.h */, + 969A07930ED1D3AE00F1F681 /* Instruction.h */, + BCFD8C900EEB2EE700283848 /* JumpTable.cpp */, + BCFD8C910EEB2EE700283848 /* JumpTable.h */, + 0FB5467814F5C468002C2989 /* LazyOperandValueProfile.cpp */, + 0FB5467614F59AD1002C2989 /* LazyOperandValueProfile.h */, + 0F0B83AC14BCF60200885B4F /* LineInfo.h */, + 0F0FC45814BD15F100B81154 /* LLIntCallLinkInfo.h */, + 0FB5467C14F5CFD3002C2989 /* MethodOfGettingAValueProfile.cpp */, + 0FB5467A14F5C7D4002C2989 /* MethodOfGettingAValueProfile.h */, + 14CA958C16AB50FA00938A06 /* ObjectAllocationProfile.h */, + 969A07940ED1D3AE00F1F681 /* Opcode.cpp */, + 969A07950ED1D3AE00F1F681 /* Opcode.h */, + 0F2BDC2B151FDE8B00CD8910 /* Operands.h */, + 0F34B14B16D43E0C001CDA5A /* PolymorphicAccessStructureList.h */, + 0F9FC8BF14E1B5FB00D52AE0 /* PolymorphicPutByIdList.cpp */, + 0F9FC8C014E1B5FB00D52AE0 /* PolymorphicPutByIdList.h */, + 0F98205D16BFE37F00240D02 /* PreciseJumpTargets.cpp */, + 0F98205E16BFE37F00240D02 /* PreciseJumpTargets.h */, + 0F93329914CA7DC10085F3C6 /* PutByIdStatus.cpp */, + 0F93329A14CA7DC10085F3C6 /* PutByIdStatus.h */, + 0F9FC8C114E1B5FB00D52AE0 /* PutKind.h */, + 0FF60ABF16740F8100029779 /* ReduceWhitespace.cpp */, + 0FF60AC016740F8100029779 /* ReduceWhitespace.h */, + 0FF4276E159275D2004CB9FF /* ResolveGlobalStatus.cpp */, + 0FF4276F159275D2004CB9FF /* ResolveGlobalStatus.h */, + A7AFC17715F7EFE30048F57B /* ResolveOperation.h */, + 1429D8830ED21C3D00B89619 /* SamplingTool.cpp */, + 1429D8840ED21C3D00B89619 /* SamplingTool.h */, + 0F5541AF1613C1FB00CE3E25 /* SpecialPointer.cpp */, + 0F5541B01613C1FB00CE3E25 /* SpecialPointer.h */, + 0FD82E84141F3FDA00179C94 /* SpeculatedType.cpp */, + 0FD82E4F141DAEA100179C94 /* SpeculatedType.h */, + 0F93329B14CA7DC10085F3C6 /* StructureSet.h */, + 0F766D3615AE4A1A008F363E /* StructureStubClearingWatchpoint.cpp */, + 0F766D3715AE4A1A008F363E /* StructureStubClearingWatchpoint.h */, + BCCF0D0B0EF0B8A500413C8F /* StructureStubInfo.cpp */, + BCCF0D070EF0AAB900413C8F /* StructureStubInfo.h */, + A79E781E15EECBA80047C855 /* UnlinkedCodeBlock.cpp */, + A79E781F15EECBA80047C855 /* UnlinkedCodeBlock.h */, + 0F963B3613FC6FDE0002D9B2 /* ValueProfile.h */, + 0F426A451460CBAB00131F8F /* ValueRecovery.h */, + 0F426A461460CBAB00131F8F /* VirtualRegister.h */, + 0F919D2215853CDE004A4E7D /* Watchpoint.cpp */, + 0F919D2315853CDE004A4E7D /* Watchpoint.h */, + ); + path = bytecode; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 144005C70A5338C60005F061 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A72701B90DADE94900E548D7 /* ExceptionHelpers.h in Headers */, + 144005CB0A5338D10005F061 /* JSNode.h in Headers */, + 144007570A5370D20005F061 /* JSNodeList.h in Headers */, + 144005CC0A5338F80005F061 /* Node.h in Headers */, + 1440074A0A536CC20005F061 /* NodeList.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 932F5B3F0822A1C700736975 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0FFB921F16D033050055A5DB /* (null) in Headers */, + 860161E30F3A83C100F84710 /* AbstractMacroAssembler.h in Headers */, + 0F55F0F514D1063C00AC7649 /* AbstractPC.h in Headers */, + BC18C3E50E16F5CD00B34460 /* APICast.h in Headers */, + 865F408810E7D56300947361 /* APIShims.h in Headers */, + BCF605140E203EF800B9A64D /* ArgList.h in Headers */, + BC257DE80E1F51C50016B6C9 /* Arguments.h in Headers */, + 86D3B2C410156BDE002865E7 /* ARMAssembler.h in Headers */, + 86ADD1450FDDEA980006EEC2 /* ARMv7Assembler.h in Headers */, + 65C0285D1717966800351E35 /* ARMv7DOpcode.h in Headers */, + 0F8335B81639C1EA001443B5 /* ArrayAllocationProfile.h in Headers */, + BC18C3E60E16F5CD00B34460 /* ArrayConstructor.h in Headers */, + 0FB7F39515ED8E4600F167B2 /* ArrayConventions.h in Headers */, + 0F63945515D07057006A597C /* ArrayProfile.h in Headers */, + BC18C3E70E16F5CD00B34460 /* ArrayPrototype.h in Headers */, + BC18C5240E16FC8A00B34460 /* ArrayPrototype.lut.h in Headers */, + 0FB7F39615ED8E4600F167B2 /* ArrayStorage.h in Headers */, + 9688CB150ED12B4E001D649F /* AssemblerBuffer.h in Headers */, + 86D3B2C510156BDE002865E7 /* AssemblerBufferWithConstantPool.h in Headers */, + A784A26111D16622005776AC /* ASTBuilder.h in Headers */, + 147B83AC0E6DB8C9004775A4 /* BatchedTransitionOptimizer.h in Headers */, + 866739D213BFDE710023D87C /* BigInteger.h in Headers */, + 14816E1C154CC56C00B8054C /* BlockAllocator.h in Headers */, + BC18C3EC0E16F5CD00B34460 /* BooleanObject.h in Headers */, + 0FB7F39715ED8E4600F167B2 /* Butterfly.h in Headers */, + 0FB7F39815ED8E4600F167B2 /* ButterflyInlines.h in Headers */, + 0F21C27F14BEAA8200ADC64B /* BytecodeConventions.h in Headers */, + 969A07230ED1CE3300F1F681 /* BytecodeGenerator.h in Headers */, + 0F8023EA1613832B00A0BA45 /* ByValInfo.h in Headers */, + 869D04AF1193B54D00803475 /* CachedTranscendentalFunction.h in Headers */, + BC18C3ED0E16F5CD00B34460 /* CallData.h in Headers */, + 1429D8DE0ED2205B00B89619 /* CallFrame.h in Headers */, + 95E3BC050E1AE68200B2D1C1 /* CallIdentifier.h in Headers */, + 0F0B83B114BCF71800885B4F /* CallLinkInfo.h in Headers */, + 0F93329E14CA7DC50085F3C6 /* CallLinkStatus.h in Headers */, + 0F0B83B914BCF95F00885B4F /* CallReturnOffsetToBytecodeOffset.h in Headers */, + BC6AAAE50E1F426500AD87D8 /* ClassInfo.h in Headers */, + 0F73D7AF165A143000ACAB71 /* ClosureCallStubRoutine.h in Headers */, + 969A07970ED1D3AE00F1F681 /* CodeBlock.h in Headers */, + 0F8F94411667633200D61971 /* CodeBlockHash.h in Headers */, + 0F96EBB316676EF6008BADE3 /* CodeBlockWithJITType.h in Headers */, + A77F1822164088B200640A47 /* CodeCache.h in Headers */, + 86E116B10FE75AC800B512BC /* CodeLocation.h in Headers */, + 0FBD7E691447999600481315 /* CodeOrigin.h in Headers */, + 0F21C27D14BE727A00ADC64B /* CodeSpecializationKind.h in Headers */, + 0F0B83A714BCF50700885B4F /* CodeType.h in Headers */, + BC18C3F30E16F5CD00B34460 /* CommonIdentifiers.h in Headers */, + 0F15F15F14B7A73E005DE37D /* CommonSlowPaths.h in Headers */, + 0FD82E39141AB14D00179C94 /* CompactJITCodeMap.h in Headers */, + BC18C3F40E16F5CD00B34460 /* Completion.h in Headers */, + BC18C3F50E16F5CD00B34460 /* config.h in Headers */, + 144836E7132DA7BE005BE785 /* ConservativeRoots.h in Headers */, + BC18C3F60E16F5CD00B34460 /* ConstructData.h in Headers */, + C2EAD2FC14F0249800A4B159 /* CopiedAllocator.h in Headers */, + 1A28D4A8177B71C80007FA3C /* JSStringRefPrivate.h in Headers */, + C2C8D03014A3CEFC00578E65 /* CopiedBlock.h in Headers */, + C2FC9BD316644DFB00810D33 /* CopiedBlockInlines.h in Headers */, + C2EAA3FA149A835E00FCE112 /* CopiedSpace.h in Headers */, + C2C8D02D14A3C6E000578E65 /* CopiedSpaceInlines.h in Headers */, + C2239D1816262BDD005AC5FD /* CopyVisitor.h in Headers */, + C2239D1916262BDD005AC5FD /* CopyVisitorInlines.h in Headers */, + C218D1401655CFD50062BB81 /* CopyWorkList.h in Headers */, + 5DE6E5B30E1728EC00180407 /* create_hash_table in Headers */, + 0F426A4B1460CD6E00131F8F /* DataFormat.h in Headers */, + BCD2034A0E17135E002C7E82 /* DateConstructor.h in Headers */, + 41359CF30FDD89AD00206180 /* DateConversion.h in Headers */, + BC1166020E1997B4008066DD /* DateInstance.h in Headers */, + 14A1563210966365006FA260 /* DateInstanceCache.h in Headers */, + BCD2034C0E17135E002C7E82 /* DatePrototype.h in Headers */, + BCD203E80E1718F4002C7E82 /* DatePrototype.lut.h in Headers */, + BC18C3FA0E16F5CD00B34460 /* Debugger.h in Headers */, + BC3135640F302FA3003DFD3A /* DebuggerActivation.h in Headers */, + BC18C3FB0E16F5CD00B34460 /* DebuggerCallFrame.h in Headers */, + 0F620178143FCD440068B77C /* DFGAbstractState.h in Headers */, + 0F620177143FCD3F0068B77C /* DFGAbstractValue.h in Headers */, + 0F66E16B14DF3F1600B7B2E4 /* DFGAdjacencyList.h in Headers */, + 0FFB921816D02EB20055A5DB /* DFGAllocator.h in Headers */, + 0F1E3A461534CBAF000F9456 /* DFGArgumentPosition.h in Headers */, + 0F16015E156198C900C2587C /* DFGArgumentsSimplificationPhase.h in Headers */, + 0F05C3B41683CF9200BAF45B /* DFGArrayifySlowPathGenerator.h in Headers */, + 0F63948515E4811B006A597C /* DFGArrayMode.h in Headers */, + 0FC0976D1468AB4E00CF2442 /* DFGAssemblyHelpers.h in Headers */, + 0F714CA516EA92F200F3EBEB /* DFGBackwardsPropagationPhase.h in Headers */, + 0F620176143FCD3B0068B77C /* DFGBasicBlock.h in Headers */, + 0FFB921A16D02EC50055A5DB /* DFGBasicBlockInlines.h in Headers */, + A72028B81797601E0098028C /* JSCTestRunnerUtils.h in Headers */, + 0F8364B7164B0C110053329A /* DFGBranchDirection.h in Headers */, + 86EC9DC51328DF82002B2AD7 /* DFGByteCodeParser.h in Headers */, + 0F256C361627B0AD007F2783 /* DFGCallArrayAllocatorSlowPathGenerator.h in Headers */, + 0F7B294B14C3CD2F007C3DB1 /* DFGCapabilities.h in Headers */, + 0F7B294A14C3CD29007C3DB1 /* DFGCCallHelpers.h in Headers */, + 0FFFC95814EF90A200C72532 /* DFGCFAPhase.h in Headers */, + 0F3B3A281544C997003ED0FF /* DFGCFGSimplificationPhase.h in Headers */, + 0F2C556F14738F3100121E4F /* DFGCodeBlocks.h in Headers */, + 0F7B294D14C3CD4C007C3DB1 /* DFGCommon.h in Headers */, + 0F3B3A1B153E68F4003ED0FF /* DFGConstantFoldingPhase.h in Headers */, + 0FBE0F7316C1DB050082C5E8 /* DFGCPSRethreadingPhase.h in Headers */, + 0FFFC95A14EF90A900C72532 /* DFGCSEPhase.h in Headers */, + 0F2FC77316E12F740038D976 /* DFGDCEPhase.h in Headers */, + 0FF427651591A1CE004CB9FF /* DFGDisassembler.h in Headers */, + 0FD81AD3154FB4F000983E72 /* DFGDominators.h in Headers */, + 0F1E3A471534CBB9000F9456 /* DFGDoubleFormatState.h in Headers */, + 0FD3C82814115D4F00FD81CB /* DFGDriver.h in Headers */, + 0F66E16C14DF3F1600B7B2E4 /* DFGEdge.h in Headers */, + 0FBC0AE81496C7C700D4FBDD /* DFGExitProfile.h in Headers */, + 0F2BDC16151C5D4F00CD8910 /* DFGFixupPhase.h in Headers */, + 86AE6C4D136A11E400963012 /* DFGFPRInfo.h in Headers */, + 86EC9DC61328DF82002B2AD7 /* DFGGenerationInfo.h in Headers */, + 86AE6C4E136A11E400963012 /* DFGGPRInfo.h in Headers */, + 86EC9DC81328DF82002B2AD7 /* DFGGraph.h in Headers */, + 0F2BDC21151E803B00CD8910 /* DFGInsertionSet.h in Headers */, + 86EC9DCC1328DF82002B2AD7 /* DFGJITCompiler.h in Headers */, + 0FF0F19B16B729FA005DF95B /* DFGLongLivedState.h in Headers */, + 0F2BDC451522801B00CD8910 /* DFGMinifiedGraph.h in Headers */, + 0F2E892D16D02BAF009E4FD2 /* DFGMinifiedID.h in Headers */, + 0F2BDC461522802000CD8910 /* DFGMinifiedNode.h in Headers */, + 86ECA3EA132DEF1C002B2AD7 /* DFGNode.h in Headers */, + 0FFB921B16D02F010055A5DB /* DFGNodeAllocator.h in Headers */, + 0FA581BB150E953000B9A2D9 /* DFGNodeFlags.h in Headers */, + 0FA581BC150E953000B9A2D9 /* DFGNodeType.h in Headers */, + 86EC9DD01328DF82002B2AD7 /* DFGOperations.h in Headers */, + 0FD82E57141DAF1000179C94 /* DFGOSREntry.h in Headers */, + 0FC0976A1468A6F700CF2442 /* DFGOSRExit.h in Headers */, + 0FFB921C16D02F110055A5DB /* DFGOSRExitCompilationInfo.h in Headers */, + 0FC0977114693AF500CF2442 /* DFGOSRExitCompiler.h in Headers */, + 0FEFC9AB1681A3B600567F53 /* DFGOSRExitJumpPlaceholder.h in Headers */, + 0FFFC95C14EF90AF00C72532 /* DFGPhase.h in Headers */, + 0FBE0F7516C1DB0B0082C5E8 /* DFGPredictionInjectionPhase.h in Headers */, + 0FFFC95E14EF90B700C72532 /* DFGPredictionPropagationPhase.h in Headers */, + 86EC9DD11328DF82002B2AD7 /* DFGRegisterBank.h in Headers */, + 0F766D4415B2A3C0008F363E /* DFGRegisterSet.h in Headers */, + 86BB09C1138E381B0056702F /* DFGRepatch.h in Headers */, + 86ECA3FA132DF25A002B2AD7 /* DFGScoreBoard.h in Headers */, + 0F766D4615B3701F008F363E /* DFGScratchRegisterAllocator.h in Headers */, + 0F1E3A67153A21E2000F9456 /* DFGSilentRegisterSavePlan.h in Headers */, + 0FFB921D16D02F300055A5DB /* DFGSlowPathGenerator.h in Headers */, + 86EC9DD31328DF82002B2AD7 /* DFGSpeculativeJIT.h in Headers */, + 0F63947815DCE34B006A597C /* DFGStructureAbstractValue.h in Headers */, + 0FC097A2146B28CC00CF2442 /* DFGThunks.h in Headers */, + 0F63943F15C75F19006A597C /* DFGTypeCheckHoistingPhase.h in Headers */, + 0FBE0F7716C1DB120082C5E8 /* DFGUnificationPhase.h in Headers */, + 0F34B14A16D42013001CDA5A /* DFGUseKind.h in Headers */, + 0F3B3A2C15475002003ED0FF /* DFGValidate.h in Headers */, + 0F2BDC471522802500CD8910 /* DFGValueRecoveryOverride.h in Headers */, + 0F2BDC481522802900CD8910 /* DFGValueSource.h in Headers */, + 0F620174143FCD330068B77C /* DFGVariableAccessData.h in Headers */, + 0FDDBFB61666EEDA00C55FEF /* DFGVariableAccessDataDump.h in Headers */, + 0F2BDC491522809600CD8910 /* DFGVariableEvent.h in Headers */, + 0F2BDC4B1522809D00CD8910 /* DFGVariableEventStream.h in Headers */, + 0FFB921E16D02F470055A5DB /* DFGVariadicFunction.h in Headers */, + 0FFFC96014EF90BD00C72532 /* DFGVirtualRegisterAllocationPhase.h in Headers */, + 0FF42731158EBD54004CB9FF /* Disassembler.h in Headers */, + BC3046070E1F497F003232CF /* Error.h in Headers */, + BC02E90D0E1839DB000F9297 /* ErrorConstructor.h in Headers */, + BC02E98D0E183E38000F9297 /* ErrorInstance.h in Headers */, + BC02E90F0E1839DB000F9297 /* ErrorPrototype.h in Headers */, + 969A07980ED1D3AE00F1F681 /* EvalCodeCache.h in Headers */, + BC18C4000E16F5CD00B34460 /* ExceptionHelpers.h in Headers */, + 86CAFEE31035DDE60028A609 /* Executable.h in Headers */, + A766B44F0EE8DCD1009518CA /* ExecutableAllocator.h in Headers */, + 0F56A1D315000F35002992B1 /* ExecutionCounter.h in Headers */, + 0F21C27C14BE727600ADC64B /* ExecutionHarness.h in Headers */, + 0FB105861675481200F8AB6E /* ExitKind.h in Headers */, + 0F0B83AB14BCF5BB00885B4F /* ExpressionRangeInfo.h in Headers */, + BC18C4040E16F5CD00B34460 /* FunctionConstructor.h in Headers */, + 0FF0F1A016B72A1A005DF95B /* FunctionExecutableDump.h in Headers */, + BC18C4050E16F5CD00B34460 /* FunctionPrototype.h in Headers */, + DDF7ABD411F60ED200108E36 /* GCActivityCallback.h in Headers */, + BCBE2CAE14E985AA000593AD /* GCAssertions.h in Headers */, + 0F766D3015A8DCE2008F363E /* GCAwareJITStubRoutine.h in Headers */, + C2239D1B16262BDD005AC5FD /* GCThread.h in Headers */, + C21122E215DD9AB300790E3A /* GCThreadSharedData.h in Headers */, + 0F9332A014CA7DCD0085F3C6 /* GetByIdStatus.h in Headers */, + 142E3134134FF0A600AFADB5 /* Handle.h in Headers */, + C283190016FE4B7D00157BFD /* HandleBlock.h in Headers */, + C283190216FE533E00157BFD /* HandleBlockInlines.h in Headers */, + 0F0B83A914BCF56200885B4F /* HandlerInfo.h in Headers */, + 142E3136134FF0A600AFADB5 /* HandleSet.h in Headers */, + 142E3138134FF0A600AFADB5 /* HandleStack.h in Headers */, + 1478297B1379E8A800A7C2A3 /* HandleTypes.h in Headers */, + 14BA7A9813AADFF8005B7C2C /* Heap.h in Headers */, + C2C8D03114A3CEFC00578E65 /* HeapBlock.h in Headers */, + 14F97447138C853E00DA1C67 /* HeapRootVisitor.h in Headers */, + C24D31E3161CD695002AA4DB /* HeapStatistics.h in Headers */, + C2E526BE1590EF000054E48D /* HeapTimer.h in Headers */, + 0F4680D514BBD24B00BFE272 /* HostCallReturnValue.h in Headers */, + BC18C40F0E16F5CD00B34460 /* Identifier.h in Headers */, + C25F8BCE157544A900245B71 /* IncrementalSweeper.h in Headers */, + 0FB7F39915ED8E4600F167B2 /* IndexingHeader.h in Headers */, + 0FB7F39A15ED8E4600F167B2 /* IndexingHeaderInlines.h in Headers */, + 0FB7F39B15ED8E4600F167B2 /* IndexingType.h in Headers */, + BC18C4100E16F5CD00B34460 /* InitializeThreading.h in Headers */, + 969A07990ED1D3AE00F1F681 /* Instruction.h in Headers */, + BC11667B0E199C05008066DD /* InternalFunction.h in Headers */, + 1429D77C0ED20D7300B89619 /* Interpreter.h in Headers */, + 860BD801148EA6F200112B2F /* Intrinsic.h in Headers */, + BC18C4130E16F5CD00B34460 /* JavaScript.h in Headers */, + BC18C4140E16F5CD00B34460 /* JavaScriptCore.h in Headers */, + BC18C4150E16F5CD00B34460 /* JavaScriptCorePrefix.h in Headers */, + 1429D9300ED22D7000B89619 /* JIT.h in Headers */, + 86CCEFDE0F413F8900FD7F9E /* JITCode.h in Headers */, + 0F0776BF14FF002B00102332 /* JITCompilationEffort.h in Headers */, + 0FAF7EFE165BA91F000C8455 /* JITDisassembler.h in Headers */, + 0F21C26814BE5F6800ADC64B /* JITDriver.h in Headers */, + 0F46808214BA572D00BFE272 /* JITExceptions.h in Headers */, + 86CC85A10EE79A4700288682 /* JITInlines.h in Headers */, + 960626960FB8EC02009798AB /* JITStubCall.h in Headers */, + 0F766D3115AA8112008F363E /* JITStubRoutine.h in Headers */, + 0F766D2C15A8CC3A008F363E /* JITStubRoutineSet.h in Headers */, + 14C5242B0F5355E900BA3D04 /* JITStubs.h in Headers */, + 0F5EF91F16878F7D003E5C25 /* JITThunks.h in Headers */, + A76F54A313B28AAB00EF2BCE /* JITWriteBarrier.h in Headers */, + BC18C4160E16F5CD00B34460 /* JSActivation.h in Headers */, + 840480131021A1D9008E7F01 /* JSAPIValueWrapper.h in Headers */, + C2CF39C216E15A8100DD69BE /* JSAPIWrapperObject.h in Headers */, + BC18C4170E16F5CD00B34460 /* JSArray.h in Headers */, + BC18C4180E16F5CD00B34460 /* JSBase.h in Headers */, + 140D17D70E8AD4A9000CD17D /* JSBasePrivate.h in Headers */, + 86FA9E92142BBB2E001773B7 /* JSBoundFunction.h in Headers */, + BC18C4190E16F5CD00B34460 /* JSCallbackConstructor.h in Headers */, + BC18C41A0E16F5CD00B34460 /* JSCallbackFunction.h in Headers */, + BC18C41B0E16F5CD00B34460 /* JSCallbackObject.h in Headers */, + BC18C41C0E16F5CD00B34460 /* JSCallbackObjectFunctions.h in Headers */, + BC1167DA0E19BCC9008066DD /* JSCell.h in Headers */, + 0F9749711687ADE400A4FF6A /* JSCellInlines.h in Headers */, + BC18C42B0E16F5CD00B34460 /* JSCJSValue.h in Headers */, + 865A30F1135007E100CDB49E /* JSCJSValueInlines.h in Headers */, + BC18C41D0E16F5CD00B34460 /* JSClassRef.h in Headers */, + 86E3C613167BABD7006D760A /* JSContext.h in Headers */, + 86E3C617167BABEE006D760A /* JSContextInternal.h in Headers */, + BC18C41E0E16F5CD00B34460 /* JSContextRef.h in Headers */, + 148CD1D8108CF902008163C6 /* JSContextRefPrivate.h in Headers */, + 978801411471AD920041B016 /* JSDateMath.h in Headers */, + C2A7F688160432D400F76B98 /* JSDestructibleObject.h in Headers */, + 86E3C614167BABD7006D760A /* JSExport.h in Headers */, + A7B4ACAF1484C9CE00B38A36 /* JSExportMacros.h in Headers */, + BC18C41F0E16F5CD00B34460 /* JSFunction.h in Headers */, + BC18C4210E16F5CD00B34460 /* JSGlobalObject.h in Headers */, + BC756FC90E2031B200DE7D12 /* JSGlobalObjectFunctions.h in Headers */, + A76C51761182748D00715B05 /* JSInterfaceJIT.h in Headers */, + BC18C4230E16F5CD00B34460 /* JSLock.h in Headers */, + C25D709C16DE99F400FCA6BC /* JSManagedValue.h in Headers */, + 14874AE415EBDE4A002E3587 /* JSNameScope.h in Headers */, + BC18C4240E16F5CD00B34460 /* JSObject.h in Headers */, + BC18C4250E16F5CD00B34460 /* JSObjectRef.h in Headers */, + A7280A2811557E3000D56957 /* JSObjectRefPrivate.h in Headers */, + A7F9935F0FD7325100A0B2D0 /* JSONObject.h in Headers */, + BC87CDB910712AD4000614CF /* JSONObject.lut.h in Headers */, + 9534AAFB0E5B7A9600B8A45B /* JSProfilerPrivate.h in Headers */, + 862553D216136E1A009F17D0 /* JSProxy.h in Headers */, + BC18C4260E16F5CD00B34460 /* JSRetainPtr.h in Headers */, + 14874AE615EBDE4A002E3587 /* JSScope.h in Headers */, + A7C0C4AC168103020017011D /* JSScriptRefPrivate.h in Headers */, + 0F919D11157F332C004A4E7D /* JSSegmentedVariableObject.h in Headers */, + BC18C45E0E16F5CD00B34460 /* JSStack.h in Headers */, + BC18C4270E16F5CD00B34460 /* JSString.h in Headers */, + 86E85539111B9968001AF51E /* JSStringBuilder.h in Headers */, + 2600B5A7152BAAA70091EE5F /* JSStringJoiner.h in Headers */, + BC18C4280E16F5CD00B34460 /* JSStringRef.h in Headers */, + BC18C4290E16F5CD00B34460 /* JSStringRefCF.h in Headers */, + 0F919D0D157EE0A2004A4E7D /* JSSymbolTableObject.h in Headers */, + BC18C42A0E16F5CD00B34460 /* JSType.h in Headers */, + 6507D29E0E871E5E00D7D896 /* JSTypeInfo.h in Headers */, + 86E3C612167BABD7006D760A /* JSValue.h in Headers */, + 86E3C61B167BABEE006D760A /* JSValueInternal.h in Headers */, + BC18C42C0E16F5CD00B34460 /* JSValueRef.h in Headers */, + BC18C42D0E16F5CD00B34460 /* JSVariableObject.h in Headers */, + 86E3C615167BABD7006D760A /* JSVirtualMachine.h in Headers */, + 86E3C61D167BABEE006D760A /* JSVirtualMachineInternal.h in Headers */, + A7482E93116A7CAD003B0712 /* JSWeakObjectMapRefInternal.h in Headers */, + A7482B9311671147003B0712 /* JSWeakObjectMapRefPrivate.h in Headers */, + 1442566215EDE98D0066A49B /* JSWithScope.h in Headers */, + 86E3C619167BABEE006D760A /* JSWrapperMap.h in Headers */, + BC18C42E0E16F5CD00B34460 /* JSWrapperObject.h in Headers */, + 0F766D3515AE253B008F363E /* JumpReplacementWatchpoint.h in Headers */, + BCFD8C930EEB2EE700283848 /* JumpTable.h in Headers */, + A72FFD64139985A800E5365A /* KeywordLookup.h in Headers */, + 969A072A0ED1CE6900F1F681 /* Label.h in Headers */, + 960097A60EBABB58007A7297 /* LabelScope.h in Headers */, + 0FB5467714F59B5C002C2989 /* LazyOperandValueProfile.h in Headers */, + BC18C4520E16F5CD00B34460 /* LegacyProfiler.h in Headers */, + BC18C4310E16F5CD00B34460 /* Lexer.h in Headers */, + BC18C52E0E16FCE100B34460 /* Lexer.lut.h in Headers */, + 0F0B83AD14BCF60400885B4F /* LineInfo.h in Headers */, + 86D3B3C310159D7F002865E7 /* LinkBuffer.h in Headers */, + 0F431738146BAC69007E3890 /* ListableHandler.h in Headers */, + A7E2EA6B0FB460CF00601F06 /* LiteralParser.h in Headers */, + 0F0FC45A14BD15F500B81154 /* LLIntCallLinkInfo.h in Headers */, + FE20CE9E15F04A9500DF3430 /* LLIntCLoop.h in Headers */, + 0F4680CA14BBB16C00BFE272 /* LLIntCommon.h in Headers */, + 0F4680D314BBD16700BFE272 /* LLIntData.h in Headers */, + 0F0B839B14BCF46000885B4F /* LLIntEntrypoints.h in Headers */, + 0F4680A314BA7F8D00BFE272 /* LLIntExceptions.h in Headers */, + 0F4680CB14BBB17200BFE272 /* LLIntOfflineAsmConfig.h in Headers */, + FED287B215EC9A5700DA8161 /* LLIntOpcode.h in Headers */, + 0F4680A514BA7F8D00BFE272 /* LLIntSlowPaths.h in Headers */, + 0F0B839D14BCF46600885B4F /* LLIntThunks.h in Headers */, + 142E3139134FF0A600AFADB5 /* Local.h in Headers */, + 142E313A134FF0A600AFADB5 /* LocalScope.h in Headers */, + BC18C4370E16F5CD00B34460 /* Lookup.h in Headers */, + 0F4680CD14BBB17D00BFE272 /* LowLevelInterpreter.h in Headers */, + 14B723B812D7DA6F003BD5ED /* MachineStackMarker.h in Headers */, + 86C36EEA0EE1289D00B3DF59 /* MacroAssembler.h in Headers */, + 86D3B2C610156BDE002865E7 /* MacroAssemblerARM.h in Headers */, + 86ADD1460FDDEA980006EEC2 /* MacroAssemblerARMv7.h in Headers */, + 863B23E00FC6118900703AA4 /* MacroAssemblerCodeRef.h in Headers */, + 86C568E111A213EE0007F7F0 /* MacroAssemblerMIPS.h in Headers */, + 86AE64A9135E5E1C00963012 /* MacroAssemblerSH4.h in Headers */, + 860161E40F3A83C100F84710 /* MacroAssemblerX86.h in Headers */, + 860161E50F3A83C100F84710 /* MacroAssemblerX86_64.h in Headers */, + 860161E60F3A83C100F84710 /* MacroAssemblerX86Common.h in Headers */, + C2B916C214DA014E00CBAC86 /* MarkedAllocator.h in Headers */, + 142D6F0913539A2800B02E86 /* MarkedBlock.h in Headers */, + 141448CB13A176EC00F5BA1A /* MarkedBlockSet.h in Headers */, + 14D2F3DB139F4BE200491031 /* MarkedSpace.h in Headers */, + 142D6F1213539A4100B02E86 /* MarkStack.h in Headers */, + C21122E315DD9AB300790E3A /* MarkStackInlines.h in Headers */, + 8612E4CD152389EC00C836BE /* MatchResult.h in Headers */, + BC18C43C0E16F5CD00B34460 /* MathObject.h in Headers */, + BC18C52A0E16FCC200B34460 /* MathObject.lut.h in Headers */, + 90213E3E123A40C200D422F3 /* MemoryStatistics.h in Headers */, + 0FB5467B14F5C7E1002C2989 /* MethodOfGettingAValueProfile.h in Headers */, + 86C568E211A213EE0007F7F0 /* MIPSAssembler.h in Headers */, + 86EBF3001560F06A008E9222 /* NameConstructor.h in Headers */, + 86EBF3021560F06A008E9222 /* NameInstance.h in Headers */, + 86EBF3041560F06A008E9222 /* NamePrototype.h in Headers */, + BC02E9110E1839DB000F9297 /* NativeErrorConstructor.h in Headers */, + BC02E9130E1839DB000F9297 /* NativeErrorPrototype.h in Headers */, + 0FFB922016D033B70055A5DB /* NodeConstructors.h in Headers */, + 7EFF00640EC05A9A00AA7C93 /* NodeInfo.h in Headers */, + BC18C43F0E16F5CD00B34460 /* Nodes.h in Headers */, + BC18C4410E16F5CD00B34460 /* NumberConstructor.h in Headers */, + BC18C4420E16F5CD00B34460 /* NumberConstructor.lut.h in Headers */, + BC18C4430E16F5CD00B34460 /* NumberObject.h in Headers */, + BC18C4440E16F5CD00B34460 /* NumberPrototype.h in Headers */, + 142D3939103E4560007DCB52 /* NumericStrings.h in Headers */, + 86F3EEBD168CDE930077B92A /* ObjCCallbackFunction.h in Headers */, + 86F3EEBF168CDE930077B92A /* ObjcRuntimeExtras.h in Headers */, + 14CA958D16AB50FA00938A06 /* ObjectAllocationProfile.h in Headers */, + BC18C4450E16F5CD00B34460 /* ObjectConstructor.h in Headers */, + BC18C4460E16F5CD00B34460 /* ObjectPrototype.h in Headers */, + E124A8F70E555775003091F1 /* OpaqueJSString.h in Headers */, + 969A079B0ED1D3AE00F1F681 /* Opcode.h in Headers */, + 0F2BDC2C151FDE9100CD8910 /* Operands.h in Headers */, + BC18C4480E16F5CD00B34460 /* Operations.h in Headers */, + 0FE228ED1436AB2700196C48 /* Options.h in Headers */, + BC18C44B0E16F5CD00B34460 /* Parser.h in Headers */, + 93052C350FB792190048FDC3 /* ParserArena.h in Headers */, + 0FCCAE4516D0CF7400D0C65B /* ParserError.h in Headers */, + A77F1825164192C700640A47 /* ParserModes.h in Headers */, + 65303D641447B9E100D3F904 /* ParserTokens.h in Headers */, + 1497209114EB831500FEB1B7 /* PassWeak.h in Headers */, + 0F34B14C16D43E0D001CDA5A /* PolymorphicAccessStructureList.h in Headers */, + 0F9FC8C414E1B60000D52AE0 /* PolymorphicPutByIdList.h in Headers */, + 0F98206116BFE38300240D02 /* PreciseJumpTargets.h in Headers */, + 868916B0155F286300CB2B9A /* PrivateName.h in Headers */, + BC18C4500E16F5CD00B34460 /* Profile.h in Headers */, + 95CD45770E1C4FDD0085358E /* ProfileGenerator.h in Headers */, + BC18C4510E16F5CD00B34460 /* ProfileNode.h in Headers */, + 0FF729A5166AD351000F5BA3 /* ProfilerBytecode.h in Headers */, + 0FF729B9166AD360000F5BA3 /* ProfilerBytecodes.h in Headers */, + 0F13912A16771C36009CCB07 /* ProfilerBytecodeSequence.h in Headers */, + 0FF729BA166AD360000F5BA3 /* ProfilerCompilation.h in Headers */, + 0FF729BB166AD360000F5BA3 /* ProfilerCompilationKind.h in Headers */, + A72028BA1797603D0098028C /* JSFunctionInlines.h in Headers */, + 0FF729BC166AD360000F5BA3 /* ProfilerCompiledBytecode.h in Headers */, + 0FF729BD166AD360000F5BA3 /* ProfilerDatabase.h in Headers */, + 0FF729BE166AD360000F5BA3 /* ProfilerExecutionCounter.h in Headers */, + 0FF729BF166AD360000F5BA3 /* ProfilerOrigin.h in Headers */, + 0FF729C0166AD360000F5BA3 /* ProfilerOriginStack.h in Headers */, + 0FB1058C1675483300F8AB6E /* ProfilerOSRExit.h in Headers */, + 0FB1058E1675483A00F8AB6E /* ProfilerOSRExitSite.h in Headers */, + 0F13912C16771C3D009CCB07 /* ProfilerProfiledBytecodes.h in Headers */, + A7FB61001040C38B0017A286 /* PropertyDescriptor.h in Headers */, + BC95437D0EBA70FD0072B6D3 /* PropertyMapHashTable.h in Headers */, + 86158AB3155C8B4000B45C9C /* PropertyName.h in Headers */, + BC18C4540E16F5CD00B34460 /* PropertyNameArray.h in Headers */, + 0FF7168C15A3B235008F5DAA /* PropertyOffset.h in Headers */, + BC18C4550E16F5CD00B34460 /* PropertySlot.h in Headers */, + 0FB7F39C15ED8E4600F167B2 /* PropertyStorage.h in Headers */, + BC18C4560E16F5CD00B34460 /* Protect.h in Headers */, + 1474C33B16AA2D950062F01D /* PrototypeMap.h in Headers */, + 0F9332A414CA7DD90085F3C6 /* PutByIdStatus.h in Headers */, + 0F0CD4C215F1A6070032F1C0 /* PutDirectIndexMode.h in Headers */, + 0F9FC8C514E1B60400D52AE0 /* PutKind.h in Headers */, + 147B84630E6DE6B1004775A4 /* PutPropertySlot.h in Headers */, + 0FF60AC216740F8300029779 /* ReduceWhitespace.h in Headers */, + BC18C45A0E16F5CD00B34460 /* RegExp.h in Headers */, + A1712B3F11C7B228007A5315 /* RegExpCache.h in Headers */, + BCD202C20E1706A7002C7E82 /* RegExpConstructor.h in Headers */, + BCD202D60E170708002C7E82 /* RegExpConstructor.lut.h in Headers */, + A1712B4111C7B235007A5315 /* RegExpKey.h in Headers */, + BC18C45B0E16F5CD00B34460 /* RegExpObject.h in Headers */, + BC18C52C0E16FCD200B34460 /* RegExpObject.lut.h in Headers */, + BCD202C40E1706A7002C7E82 /* RegExpPrototype.h in Headers */, + C20B25991706536200C21F4E /* Region.h in Headers */, + BC18C45D0E16F5CD00B34460 /* Register.h in Headers */, + 969A072B0ED1CE6900F1F681 /* RegisterID.h in Headers */, + 0FB7F39D15ED8E4600F167B2 /* Reject.h in Headers */, + 86D3B3C410159D7F002865E7 /* RepatchBuffer.h in Headers */, + 0FF42772159275D8004CB9FF /* ResolveGlobalStatus.h in Headers */, + A7AFC17915F7EFE30048F57B /* ResolveOperation.h in Headers */, + 869EBCB70E8C6D4A008722CC /* ResultType.h in Headers */, + C22B31B9140577D700DB475A /* SamplingCounter.h in Headers */, + 1429D8860ED21C3D00B89619 /* SamplingTool.h in Headers */, + 86AE64AA135E5E1C00963012 /* SH4Assembler.h in Headers */, + 14BA78F113AAB88F005B7C2C /* SlotVisitor.h in Headers */, + C2160FE715F7E95E00942DFC /* SlotVisitorInlines.h in Headers */, + 933040040E6A749400786E6A /* SmallStrings.h in Headers */, + BC18C4640E16F5CD00B34460 /* SourceCode.h in Headers */, + BC18C4630E16F5CD00B34460 /* SourceProvider.h in Headers */, + E49DC16C12EF294E00184A1F /* SourceProviderCache.h in Headers */, + E49DC16D12EF295300184A1F /* SourceProviderCacheItem.h in Headers */, + 0FB7F39E15ED8E4600F167B2 /* SparseArrayValueMap.h in Headers */, + A7386554118697B400540279 /* SpecializedThunkJIT.h in Headers */, + 0F5541B21613C1FB00CE3E25 /* SpecialPointer.h in Headers */, + 0FD82E54141DAEEE00179C94 /* SpeculatedType.h in Headers */, + 14DF04DA16B3996D0016A513 /* StaticPropertyAnalysis.h in Headers */, + 14CA958B16AB50DE00938A06 /* StaticPropertyAnalyzer.h in Headers */, + A730B6121250068F009D25B1 /* StrictEvalActivation.h in Headers */, + BC18C4660E16F5CD00B34460 /* StringConstructor.h in Headers */, + BC18C4680E16F5CD00B34460 /* StringObject.h in Headers */, + BC18C46A0E16F5CD00B34460 /* StringPrototype.h in Headers */, + BC18C5260E16FCA700B34460 /* StringPrototype.lut.h in Headers */, + 142E313B134FF0A600AFADB5 /* Strong.h in Headers */, + 145722861437E140005FDE26 /* StrongInlines.h in Headers */, + BCDE3AB80E6C82F5001453A7 /* Structure.h in Headers */, + 7E4EE7090EBB7963005934AA /* StructureChain.h in Headers */, + 0FD2C92416D01EE900C7803F /* StructureInlines.h in Headers */, + C2FE18A416BAEC4000AF3061 /* StructureRareData.h in Headers */, + C20BA92D16BB1C1500B3AEA2 /* StructureRareDataInlines.h in Headers */, + 0F9332A514CA7DDD0085F3C6 /* StructureSet.h in Headers */, + 0F766D3915AE4A1F008F363E /* StructureStubClearingWatchpoint.h in Headers */, + BCCF0D080EF0AAB900413C8F /* StructureStubInfo.h in Headers */, + BC9041480EB9250900FE26FA /* StructureTransitionTable.h in Headers */, + C2DF44301707AC0100A5CA96 /* SuperRegion.h in Headers */, + BC18C46B0E16F5CD00B34460 /* SymbolTable.h in Headers */, + A784A26411D16622005776AC /* SyntaxChecker.h in Headers */, + 0F572D4F16879FDD00E57FBD /* ThunkGenerator.h in Headers */, + A7386556118697B400540279 /* ThunkGenerators.h in Headers */, + 141448CD13A1783700F5BA1A /* TinyBloomFilter.h in Headers */, + 5D53726F0E1C54880021E549 /* Tracing.h in Headers */, + 0FEB3ECD16237F4D00AB67AD /* TypedArrayDescriptor.h in Headers */, + 0FF4274B158EBE91004CB9FF /* udis86.h in Headers */, + 0FF42741158EBE8D004CB9FF /* udis86_decode.h in Headers */, + 0FF42742158EBE91004CB9FF /* udis86_extern.h in Headers */, + 0FF42744158EBE91004CB9FF /* udis86_input.h in Headers */, + 0FF42748158EBE91004CB9FF /* udis86_syn.h in Headers */, + 0FF42749158EBE91004CB9FF /* udis86_types.h in Headers */, + 866739D313BFDE710023D87C /* Uint16WithFraction.h in Headers */, + 0F5F08CF146C7633000472A9 /* UnconditionalFinalizer.h in Headers */, + A7B601821639FD2A00372BA3 /* UnlinkedCodeBlock.h in Headers */, + 0F2E892C16D028AD009E4FD2 /* UnusedPointer.h in Headers */, + 0F963B3813FC6FE90002D9B2 /* ValueProfile.h in Headers */, + 0F426A481460CBB300131F8F /* ValueRecovery.h in Headers */, + 0F426A491460CBB700131F8F /* VirtualRegister.h in Headers */, + BC18C4200E16F5CD00B34460 /* VM.h in Headers */, + FE4A332015BD2E07006F54F3 /* VMInspector.h in Headers */, + FE6617281774E03500495B00 /* VMStackBounds.h in Headers */, + 0FC815151405119B00CFA603 /* VTableSpectrum.h in Headers */, + FED94F2F171E3E2300BE77A4 /* Watchdog.h in Headers */, + 0F919D2615853CE3004A4E7D /* Watchpoint.h in Headers */, + 142E313C134FF0A600AFADB5 /* Weak.h in Headers */, + 14E84F9F14EE1ACC00D6D5D4 /* WeakBlock.h in Headers */, + 14BFCE6910CDB1FC00364CCE /* WeakGCMap.h in Headers */, + 14F7256614EE265E00B1652B /* WeakHandleOwner.h in Headers */, + 14E84FA214EE1ACC00D6D5D4 /* WeakImpl.h in Headers */, + 14BE7D3317135CF400D1807A /* WeakInlines.h in Headers */, + 1420BE7B10AA6DDB00F455D2 /* WeakRandom.h in Headers */, + 0F242DA713F3B1E8007ADD4C /* WeakReferenceHarvester.h in Headers */, + 14E84FA114EE1ACC00D6D5D4 /* WeakSet.h in Headers */, + 14150133154BB13F005D8C98 /* WeakSetInlines.h in Headers */, + BC18C47A0E16F5CD00B34460 /* WebKitAvailability.h in Headers */, + A7DCB97312E5193F00911940 /* WriteBarrier.h in Headers */, + 0FC8150A14043BF500CFA603 /* WriteBarrierSupport.h in Headers */, + 9688CB160ED12B4E001D649F /* X86Assembler.h in Headers */, + 451539B912DC994500EF7AC4 /* Yarr.h in Headers */, + 86704B8512DBA33700A9FE7B /* YarrInterpreter.h in Headers */, + 86704B8712DBA33700A9FE7B /* YarrJIT.h in Headers */, + 86704B8812DBA33700A9FE7B /* YarrParser.h in Headers */, + 86704B8A12DBA33700A9FE7B /* YarrPattern.h in Headers */, + 86704B4312DB8A8100A9FE7B /* YarrSyntaxChecker.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0FF922CA14F46B130041A24E /* Build configuration list for PBXNativeTarget "JSCLLIntOffsetsExtractor" */; + buildPhases = ( + 0FF922C414F46B130041A24E /* Sources */, + 0FF922C614F46B130041A24E /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 0FF922D314F46B2F0041A24E /* PBXTargetDependency */, + ); + name = JSCLLIntOffsetsExtractor; + productInstallPath = /usr/local/bin; + productName = jsc; + productReference = 0FF922CF14F46B130041A24E /* JSCLLIntOffsetsExtractor */; + productType = "com.apple.product-type.tool"; + }; + 1412111F0A48793C00480255 /* minidom */ = { + isa = PBXNativeTarget; + buildConfigurationList = 141211390A48798400480255 /* Build configuration list for PBXNativeTarget "minidom" */; + buildPhases = ( + 1412111D0A48793C00480255 /* Sources */, + 1412111E0A48793C00480255 /* Frameworks */, + 144005C70A5338C60005F061 /* Headers */, + 5DBB1524131D0BA10056AD36 /* Copy Support Script */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = minidom; + productName = minidom; + productReference = 141211200A48793C00480255 /* minidom */; + productType = "com.apple.product-type.tool"; + }; + 14BD59BE0A3E8F9000BAF59C /* testapi */ = { + isa = PBXNativeTarget; + buildConfigurationList = 14BD59D60A3E8FC900BAF59C /* Build configuration list for PBXNativeTarget "testapi" */; + buildPhases = ( + 14BD59BC0A3E8F9000BAF59C /* Sources */, + 14BD59BD0A3E8F9000BAF59C /* Frameworks */, + 5DBB1511131D0B130056AD36 /* Copy Support Script */, + 5DAFD6CD146B6B6E00FBEFB4 /* Install Support Script */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testapi; + productName = testapi; + productReference = 14BD59BF0A3E8F9000BAF59C /* testapi */; + productType = "com.apple.product-type.tool"; + }; + 651122F714046A4C002B101D /* testRegExp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6511230014046A4C002B101D /* Build configuration list for PBXNativeTarget "testRegExp" */; + buildPhases = ( + 651122FA14046A4C002B101D /* Sources */, + 651122FC14046A4C002B101D /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testRegExp; + productInstallPath = /usr/local/bin; + productName = jsc; + productReference = 6511230514046A4C002B101D /* testRegExp */; + productType = "com.apple.product-type.tool"; + }; + 932F5B3E0822A1C700736975 /* JavaScriptCore */ = { + isa = PBXNativeTarget; + buildConfigurationList = 149C275D08902AFE008A9EFC /* Build configuration list for PBXNativeTarget "JavaScriptCore" */; + buildPhases = ( + 5D2F7CF90C6875BB00B5B72B /* Update Info.plist with version information */, + 932F5B3F0822A1C700736975 /* Headers */, + 932F5B910822A1C700736975 /* Sources */, + 932F5BD20822A1C700736975 /* Frameworks */, + 5D29D8BE0E9860B400C3D2D0 /* Check For Weak VTables and Externals */, + 3713F014142905240036387F /* Check For Inappropriate Objective-C Class Names */, + A55DEAA416703DF7003DB841 /* Check For Inappropriate Macros in External Headers */, + ); + buildRules = ( + ); + dependencies = ( + 65FB3F7E09D11EF300F49DEB /* PBXTargetDependency */, + ); + name = JavaScriptCore; + productInstallPath = "${SYSTEM_LIBRARY_DIR}/Frameworks/WebKit.framework/Versions/A/Frameworks"; + productName = JavaScriptCore; + productReference = 932F5BD90822A1C700736975 /* JavaScriptCore.framework */; + productType = "com.apple.product-type.framework"; + }; + 932F5BDA0822A1C700736975 /* jsc */ = { + isa = PBXNativeTarget; + buildConfigurationList = 149C276708902AFE008A9EFC /* Build configuration list for PBXNativeTarget "jsc" */; + buildPhases = ( + 932F5BDC0822A1C700736975 /* Sources */, + 932F5BDE0822A1C700736975 /* Frameworks */, + 5D5D8ABF0E0D0B0300F9C692 /* Copy Into Framework */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = jsc; + productInstallPath = /usr/local/bin; + productName = jsc; + productReference = 932F5BE10822A1C700736975 /* jsc */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 0440; + }; + buildConfigurationList = 149C277108902AFE008A9EFC /* Build configuration list for PBXProject "JavaScriptCore" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 0867D691FE84028FC02AAC07 /* JavaScriptCore */; + productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 932F5BE30822A1C700736975 /* All */, + 932F5B3E0822A1C700736975 /* JavaScriptCore */, + 65FB3F6609D11E9100F49DEB /* Derived Sources */, + 1412111F0A48793C00480255 /* minidom */, + 14BD59BE0A3E8F9000BAF59C /* testapi */, + 932F5BDA0822A1C700736975 /* jsc */, + 651122F714046A4C002B101D /* testRegExp */, + 0F4680A914BA7FD900BFE272 /* LLInt Offsets */, + 0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */, + 5D6B2A47152B9E17005231DE /* Test Tools */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + 0F4680AA14BA7FD900BFE272 /* Generate Derived Sources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/llint/LowLevelAssembler.asm", + ); + name = "Generate Derived Sources"; + outputPaths = ( + "$(BUILT_PRODUCTS_DIR)/LLIntOffsets/LLIntDesiredOffsets.h", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "mkdir -p \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/\"\n\n/usr/bin/env ruby \"${SRCROOT}/offlineasm/generate_offset_extractor.rb\" \"${SRCROOT}/llint/LowLevelInterpreter.asm\" \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/LLIntDesiredOffsets.h\"\n"; + }; + 3713F014142905240036387F /* Check For Inappropriate Objective-C Class Names */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)", + ); + name = "Check For Inappropriate Objective-C Class Names"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${ACTION}\" = \"installhdrs\" ]; then\n exit 0;\nfi\n\nif [ -f ../../Tools/Scripts/check-for-inappropriate-objc-class-names ]; then\n ../../Tools/Scripts/check-for-inappropriate-objc-class-names JS || exit $?\nfi"; + }; + 5D29D8BE0E9860B400C3D2D0 /* Check For Weak VTables and Externals */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)", + ); + name = "Check For Weak VTables and Externals"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ -f ../../Tools/Scripts/check-for-weak-vtables-and-externals ]; then\n ../../Tools/Scripts/check-for-weak-vtables-and-externals || exit $?\nfi"; + }; + 5D2F7CF90C6875BB00B5B72B /* Update Info.plist with version information */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/Configurations/Version.xcconfig", + ); + name = "Update Info.plist with version information"; + outputPaths = ( + "$(SRCROOT)/Info.plist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Touch Info.plist to let Xcode know it needs to copy it into the built product\nif [[ \"${CONFIGURATION}\" != \"Production\" ]]; then\n touch \"$SRCROOT/Info.plist\";\nfi;\n"; + }; + 5D35DEE10C7C140B008648B2 /* Generate DTrace header */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/runtime/Tracing.d", + ); + name = "Generate DTrace header"; + outputPaths = ( + "$(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/TracingDtrace.h", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "TRACING_D=\"$SRCROOT/runtime/Tracing.d\";\nTRACING_H=\"$BUILT_PRODUCTS_DIR/DerivedSources/JavaScriptCore/TracingDtrace.h\";\n\nif [[ \"$HAVE_DTRACE\" = \"1\" && \"$TRACING_D\" -nt \"$TRACING_H\" ]];\nthen\n\tdtrace -h -o \"$TRACING_H\" -s \"$TRACING_D\";\nfi;\n"; + }; + 5D5D8ABF0E0D0B0300F9C692 /* Copy Into Framework */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(BUILT_PRODUCTS_DIR)/JavaScriptCore.framework/Resources/jsc", + ); + name = "Copy Into Framework"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Skip for Production builds.\nif [[ ${CONFIGURATION:=Debug} == \"Production\" ]]; then\n exit\nfi\n\n# Copy and update the jsc binary to refer to JavaScriptcore.framework relative to its location.\nditto \"${BUILT_PRODUCTS_DIR}/jsc\" \"${BUILT_PRODUCTS_DIR}/JavaScriptCore.framework/Resources/jsc\"\ninstall_name_tool -change \"${BUILT_PRODUCTS_DIR}/JavaScriptCore.framework/Versions/A/JavaScriptCore\" \"@loader_path/../JavaScriptCore\" \"${BUILT_PRODUCTS_DIR}/JavaScriptCore.framework/Resources/jsc\"\n"; + }; + 5DAFD6CD146B6B6E00FBEFB4 /* Install Support Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 8; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/API/tests/testapi.js", + ); + name = "Install Support Script"; + outputPaths = ( + "$(DSTROOT)$(INSTALL_PATH)/testapi.js", + ); + runOnlyForDeploymentPostprocessing = 1; + shellPath = /bin/sh; + shellScript = "if [[ \"${SKIP_INSTALL}\" == \"NO\" ]]; then\n cp \"${SRCROOT}/API/tests/testapi.js\" \"${DSTROOT}${INSTALL_PATH}/testapi.js\"\nfi\n"; + }; + 65FB3F6509D11E9100F49DEB /* Generate Derived Sources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Generate Derived Sources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "mkdir -p \"${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore/docs\"\ncd \"${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\"\n\n/bin/ln -sfh \"${SRCROOT}\" JavaScriptCore\nexport JavaScriptCore=\"JavaScriptCore\"\nexport BUILT_PRODUCTS_DIR=\"../..\"\n\nmake --no-builtin-rules -f \"JavaScriptCore/DerivedSources.make\" -j `/usr/sbin/sysctl -n hw.ncpu` || exit 1\n\n/usr/bin/env ruby JavaScriptCore/offlineasm/asm.rb JavaScriptCore/llint/LowLevelInterpreter.asm ${BUILT_PRODUCTS_DIR}/JSCLLIntOffsetsExtractor LLIntAssembly.h || exit 1\n"; + }; + A55DEAA416703DF7003DB841 /* Check For Inappropriate Macros in External Headers */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)", + ); + name = "Check For Inappropriate Macros in External Headers"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${ACTION}\" = \"installhdrs\" ]; then\n exit 0;\nfi\n\nif [ -f ../../Tools/Scripts/check-for-inappropriate-macros-in-external-headers ]; then\n ../../Tools/Scripts/check-for-inappropriate-macros-in-external-headers Headers PrivateHeaders/JSBasePrivate.h || exit $?\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0FF922C414F46B130041A24E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0FF922D414F46B410041A24E /* LLIntOffsetsExtractor.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1412111D0A48793C00480255 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1440057F0A5335640005F061 /* JSNode.c in Sources */, + 144007580A5370D20005F061 /* JSNodeList.c in Sources */, + 141211340A48795800480255 /* minidom.c in Sources */, + 1440063F0A53598A0005F061 /* Node.c in Sources */, + 1440074B0A536CC20005F061 /* NodeList.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 14BD59BC0A3E8F9000BAF59C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1440F6100A4F85670005F061 /* testapi.c in Sources */, + 86D2221A167EF9440024C804 /* testapi.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 651122FA14046A4C002B101D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6511230714046B0A002B101D /* testRegExp.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 932F5B910822A1C700736975 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0F55F0F414D1063900AC7649 /* AbstractPC.cpp in Sources */, + 147F39BD107EC37600427A48 /* ArgList.cpp in Sources */, + 147F39BE107EC37600427A48 /* Arguments.cpp in Sources */, + 86D3B2C310156BDE002865E7 /* ARMAssembler.cpp in Sources */, + A74DE1D0120B875600D40D5B /* ARMv7Assembler.cpp in Sources */, + 65C02850171795E200351E35 /* ARMv7Disassembler.cpp in Sources */, + 65C0285C1717966800351E35 /* ARMv7DOpcode.cpp in Sources */, + 0F8335B71639C1E6001443B5 /* ArrayAllocationProfile.cpp in Sources */, + 147F39BF107EC37600427A48 /* ArrayConstructor.cpp in Sources */, + 0F63945415D07055006A597C /* ArrayProfile.cpp in Sources */, + 147F39C0107EC37600427A48 /* ArrayPrototype.cpp in Sources */, + 14816E1B154CC56C00B8054C /* BlockAllocator.cpp in Sources */, + 14280863107EC11A0013E7B2 /* BooleanConstructor.cpp in Sources */, + 14280864107EC11A0013E7B2 /* BooleanObject.cpp in Sources */, + 14280865107EC11A0013E7B2 /* BooleanPrototype.cpp in Sources */, + 148F21AA107EC53A0042EC2C /* BytecodeGenerator.cpp in Sources */, + 1428082D107EC0570013E7B2 /* CallData.cpp in Sources */, + 1429D8DD0ED2205B00B89619 /* CallFrame.cpp in Sources */, + 0F0B83B014BCF71600885B4F /* CallLinkInfo.cpp in Sources */, + 0F93329D14CA7DC30085F3C6 /* CallLinkStatus.cpp in Sources */, + 0F73D7AE165A142D00ACAB71 /* ClosureCallStubRoutine.cpp in Sources */, + 969A07960ED1D3AE00F1F681 /* CodeBlock.cpp in Sources */, + 0F8F94401667633000D61971 /* CodeBlockHash.cpp in Sources */, + A77F1821164088B200640A47 /* CodeCache.cpp in Sources */, + 0F8F9446166764F100D61971 /* CodeOrigin.cpp in Sources */, + 86B5826714D2796C00A9C306 /* CodeProfile.cpp in Sources */, + 86B5826914D2797000A9C306 /* CodeProfiling.cpp in Sources */, + 0F8F943C1667631300D61971 /* CodeSpecializationKind.cpp in Sources */, + 0F8F94421667633500D61971 /* CodeType.cpp in Sources */, + 147F39C1107EC37600427A48 /* CommonIdentifiers.cpp in Sources */, + 147F39C2107EC37600427A48 /* Completion.cpp in Sources */, + 146B16D812EB5B59001BEC1B /* ConservativeRoots.cpp in Sources */, + 1428082E107EC0570013E7B2 /* ConstructData.cpp in Sources */, + C240305514B404E60079EB64 /* CopiedSpace.cpp in Sources */, + C2239D1716262BDD005AC5FD /* CopyVisitor.cpp in Sources */, + 147F39C3107EC37600427A48 /* DateConstructor.cpp in Sources */, + 147F39C4107EC37600427A48 /* DateConversion.cpp in Sources */, + 147F39C5107EC37600427A48 /* DateInstance.cpp in Sources */, + 147F39C6107EC37600427A48 /* DatePrototype.cpp in Sources */, + 14280823107EC02C0013E7B2 /* Debugger.cpp in Sources */, + BC3135650F302FA3003DFD3A /* DebuggerActivation.cpp in Sources */, + 149559EE0DDCDDF700648087 /* DebuggerCallFrame.cpp in Sources */, + 0F620179143FCD480068B77C /* DFGAbstractState.cpp in Sources */, + 0F16015D156198C900C2587C /* DFGArgumentsSimplificationPhase.cpp in Sources */, + 0F63948415E48118006A597C /* DFGArrayMode.cpp in Sources */, + 0FC0976E1468AB5100CF2442 /* DFGAssemblyHelpers.cpp in Sources */, + 0F714CA416EA92F000F3EBEB /* DFGBackwardsPropagationPhase.cpp in Sources */, + 86EC9DC41328DF82002B2AD7 /* DFGByteCodeParser.cpp in Sources */, + 0FD82E2114172CE300179C94 /* DFGCapabilities.cpp in Sources */, + 0FFFC95714EF90A000C72532 /* DFGCFAPhase.cpp in Sources */, + 0F3B3A271544C995003ED0FF /* DFGCFGSimplificationPhase.cpp in Sources */, + 0F2C557014738F3500121E4F /* DFGCodeBlocks.cpp in Sources */, + 0FF0F19D16B72A08005DF95B /* DFGCommon.cpp in Sources */, + 0F3B3A1A153E68F2003ED0FF /* DFGConstantFoldingPhase.cpp in Sources */, + 0FBE0F7216C1DB030082C5E8 /* DFGCPSRethreadingPhase.cpp in Sources */, + 0FFFC95914EF90A600C72532 /* DFGCSEPhase.cpp in Sources */, + 0F2FC77216E12F710038D976 /* DFGDCEPhase.cpp in Sources */, + 0FF427641591A1CC004CB9FF /* DFGDisassembler.cpp in Sources */, + 0FD81AD2154FB4EE00983E72 /* DFGDominators.cpp in Sources */, + 0FD3C82614115D4000FD81CB /* DFGDriver.cpp in Sources */, + 0FF0F19E16B72A0B005DF95B /* DFGEdge.cpp in Sources */, + 0FBC0AE71496C7C400D4FBDD /* DFGExitProfile.cpp in Sources */, + 0F2BDC15151C5D4D00CD8910 /* DFGFixupPhase.cpp in Sources */, + 86EC9DC71328DF82002B2AD7 /* DFGGraph.cpp in Sources */, + 86EC9DCB1328DF82002B2AD7 /* DFGJITCompiler.cpp in Sources */, + 0FF0F19916B729F6005DF95B /* DFGLongLivedState.cpp in Sources */, + 0F2BDC4D1522818600CD8910 /* DFGMinifiedNode.cpp in Sources */, + 0FF0F19C16B72A03005DF95B /* DFGNode.cpp in Sources */, + 0FA581BA150E952C00B9A2D9 /* DFGNodeFlags.cpp in Sources */, + 86EC9DCF1328DF82002B2AD7 /* DFGOperations.cpp in Sources */, + 0FD82E56141DAF0800179C94 /* DFGOSREntry.cpp in Sources */, + 0FC09791146A6F7100CF2442 /* DFGOSRExit.cpp in Sources */, + 0FC09792146A6F7300CF2442 /* DFGOSRExitCompiler.cpp in Sources */, + 0FC09776146943B000CF2442 /* DFGOSRExitCompiler32_64.cpp in Sources */, + 0FC0977214693AF900CF2442 /* DFGOSRExitCompiler64.cpp in Sources */, + 0FEFC9AA1681A3B300567F53 /* DFGOSRExitJumpPlaceholder.cpp in Sources */, + 0FFFC95B14EF90AD00C72532 /* DFGPhase.cpp in Sources */, + 0FBE0F7416C1DB090082C5E8 /* DFGPredictionInjectionPhase.cpp in Sources */, + 0FFFC95D14EF90B300C72532 /* DFGPredictionPropagationPhase.cpp in Sources */, + 86BB09C0138E381B0056702F /* DFGRepatch.cpp in Sources */, + 86EC9DD21328DF82002B2AD7 /* DFGSpeculativeJIT.cpp in Sources */, + 86880F1F14328BB900B08D42 /* DFGSpeculativeJIT32_64.cpp in Sources */, + 86880F4D14353B2100B08D42 /* DFGSpeculativeJIT64.cpp in Sources */, + 0FC097A1146B28CA00CF2442 /* DFGThunks.cpp in Sources */, + 0F63944015C75F1D006A597C /* DFGTypeCheckHoistingPhase.cpp in Sources */, + 0FBE0F7616C1DB0F0082C5E8 /* DFGUnificationPhase.cpp in Sources */, + 0F34B14916D42010001CDA5A /* DFGUseKind.cpp in Sources */, + 0F3B3A2B15475000003ED0FF /* DFGValidate.cpp in Sources */, + 0F2BDC4F15228BF300CD8910 /* DFGValueSource.cpp in Sources */, + 0FDDBFB51666EED800C55FEF /* DFGVariableAccessDataDump.cpp in Sources */, + 0F2BDC5115228FFD00CD8910 /* DFGVariableEvent.cpp in Sources */, + 0F2BDC4A1522809A00CD8910 /* DFGVariableEventStream.cpp in Sources */, + 0FFFC95F14EF90BB00C72532 /* DFGVirtualRegisterAllocationPhase.cpp in Sources */, + 0F9D3370165DBB90005AD387 /* Disassembler.cpp in Sources */, + 147F39C7107EC37600427A48 /* Error.cpp in Sources */, + 147F39C8107EC37600427A48 /* ErrorConstructor.cpp in Sources */, + 147F39C9107EC37600427A48 /* ErrorInstance.cpp in Sources */, + 147F39CA107EC37600427A48 /* ErrorPrototype.cpp in Sources */, + 1429D8780ED21ACD00B89619 /* ExceptionHelpers.cpp in Sources */, + 86CA032E1038E8440028A609 /* Executable.cpp in Sources */, + A7B48F490EE8936F00DCBDB6 /* ExecutableAllocator.cpp in Sources */, + 86DB64640F95C6FC00D7D921 /* ExecutableAllocatorFixedVMPool.cpp in Sources */, + 0F56A1D515001CF4002992B1 /* ExecutionCounter.cpp in Sources */, + 0FB105851675480F00F8AB6E /* ExitKind.cpp in Sources */, + 147F39CB107EC37600427A48 /* FunctionConstructor.cpp in Sources */, + 0FF0F19F16B72A17005DF95B /* FunctionExecutableDump.cpp in Sources */, + 147F39CC107EC37600427A48 /* FunctionPrototype.cpp in Sources */, + C2D58C3415912FEE0021A844 /* GCActivityCallback.cpp in Sources */, + 0F766D2F15A8DCE0008F363E /* GCAwareJITStubRoutine.cpp in Sources */, + C2239D1A16262BDD005AC5FD /* GCThread.cpp in Sources */, + C21122E115DD9AB300790E3A /* GCThreadSharedData.cpp in Sources */, + 0F93329F14CA7DCA0085F3C6 /* GetByIdStatus.cpp in Sources */, + 14280855107EC0E70013E7B2 /* GetterSetter.cpp in Sources */, + 142E3135134FF0A600AFADB5 /* HandleSet.cpp in Sources */, + 142E3137134FF0A600AFADB5 /* HandleStack.cpp in Sources */, + 14BA7A9713AADFF8005B7C2C /* Heap.cpp in Sources */, + C24D31E2161CD695002AA4DB /* HeapStatistics.cpp in Sources */, + C2E526BD1590EF000054E48D /* HeapTimer.cpp in Sources */, + 0F4680D414BBD24900BFE272 /* HostCallReturnValue.cpp in Sources */, + 147F39CE107EC37600427A48 /* Identifier.cpp in Sources */, + C25F8BCD157544A900245B71 /* IncrementalSweeper.cpp in Sources */, + 0F13E04E16164A1F00DC8DE7 /* IndexingType.cpp in Sources */, + E178636D0D9BEEC300D74E75 /* InitializeThreading.cpp in Sources */, + 147F39CF107EC37600427A48 /* InternalFunction.cpp in Sources */, + 1429D7D40ED2128200B89619 /* Interpreter.cpp in Sources */, + 1429D92F0ED22D7000B89619 /* JIT.cpp in Sources */, + 86A90ED00EE7D51F00AB350D /* JITArithmetic.cpp in Sources */, + A75706DE118A2BCF0057F88F /* JITArithmetic32_64.cpp in Sources */, + 86CC85A30EE79B7400288682 /* JITCall.cpp in Sources */, + 146FE51211A710430087AE66 /* JITCall32_64.cpp in Sources */, + 0F8F94441667635400D61971 /* JITCode.cpp in Sources */, + 0FAF7EFD165BA91B000C8455 /* JITDisassembler.cpp in Sources */, + 0F46808314BA573100BFE272 /* JITExceptions.cpp in Sources */, + BCDD51EB0FB8DF74004A8BDC /* JITOpcodes.cpp in Sources */, + A71236E51195F33C00BD2174 /* JITOpcodes32_64.cpp in Sources */, + 86CC85C40EE7A89400288682 /* JITPropertyAccess.cpp in Sources */, + A7C1E8E4112E72EF00A37F98 /* JITPropertyAccess32_64.cpp in Sources */, + 0F766D2815A8CC1E008F363E /* JITStubRoutine.cpp in Sources */, + 0F766D2B15A8CC38008F363E /* JITStubRoutineSet.cpp in Sources */, + 14A23D750F4E1ABB0023CDAD /* JITStubs.cpp in Sources */, + A72028B61797601E0098028C /* JSCTestRunnerUtils.cpp in Sources */, + 0F5EF91E16878F7A003E5C25 /* JITThunks.cpp in Sources */, + 140B7D1D0DC69AF7009C42B8 /* JSActivation.cpp in Sources */, + 140566C4107EC255005DBC8D /* JSAPIValueWrapper.cpp in Sources */, + C2CF39C116E15A8100DD69BE /* JSAPIWrapperObject.mm in Sources */, + 147F39D0107EC37600427A48 /* JSArray.cpp in Sources */, + 1421359B0A677F4F00A8195E /* JSBase.cpp in Sources */, + 86FA9E91142BBB2E001773B7 /* JSBoundFunction.cpp in Sources */, + 1440F8AF0A508D200005F061 /* JSCallbackConstructor.cpp in Sources */, + 1440F8920A508B100005F061 /* JSCallbackFunction.cpp in Sources */, + 14ABDF600A437FEF00ECCA01 /* JSCallbackObject.cpp in Sources */, + 147F39D1107EC37600427A48 /* JSCell.cpp in Sources */, + 147F39D6107EC37600427A48 /* JSCJSValue.cpp in Sources */, + 1440FCE40A51E46B0005F061 /* JSClassRef.cpp in Sources */, + 86E3C616167BABEE006D760A /* JSContext.mm in Sources */, + 14BD5A300A3E91F600BAF59C /* JSContextRef.cpp in Sources */, + 978801401471AD920041B016 /* JSDateMath.cpp in Sources */, + 140566D6107EC271005DBC8D /* JSFunction.cpp in Sources */, + 147F39D2107EC37600427A48 /* JSGlobalObject.cpp in Sources */, + 14E9D17B107EC469004DDA21 /* JSGlobalObjectFunctions.cpp in Sources */, + 14280875107EC13E0013E7B2 /* JSLock.cpp in Sources */, + C25D709B16DE99F400FCA6BC /* JSManagedValue.mm in Sources */, + 14874AE315EBDE4A002E3587 /* JSNameScope.cpp in Sources */, + A72700900DAC6BBC00E548D7 /* JSNotAnObject.cpp in Sources */, + 147F39D4107EC37600427A48 /* JSObject.cpp in Sources */, + 1482B7E40A43076000517CFC /* JSObjectRef.cpp in Sources */, + A7F993600FD7325100A0B2D0 /* JSONObject.cpp in Sources */, + 95F6E6950E5B5F970091E860 /* JSProfilerPrivate.cpp in Sources */, + A727FF6B0DA3092200E548D7 /* JSPropertyNameIterator.cpp in Sources */, + 862553D116136DA9009F17D0 /* JSProxy.cpp in Sources */, + 14874AE515EBDE4A002E3587 /* JSScope.cpp in Sources */, + A7C0C4AD1681067E0017011D /* JSScriptRef.cpp in Sources */, + 0F919D10157F3329004A4E7D /* JSSegmentedVariableObject.cpp in Sources */, + 1428083A107EC0750013E7B2 /* JSStack.cpp in Sources */, + 147F39D5107EC37600427A48 /* JSString.cpp in Sources */, + 2600B5A6152BAAA70091EE5F /* JSStringJoiner.cpp in Sources */, + 1482B74E0A43032800517CFC /* JSStringRef.cpp in Sources */, + 146AAB380B66A94400E55F16 /* JSStringRefCF.cpp in Sources */, + 0F919D0C157EE09F004A4E7D /* JSSymbolTableObject.cpp in Sources */, + 86E3C61A167BABEE006D760A /* JSValue.mm in Sources */, + 14BD5A320A3E91F600BAF59C /* JSValueRef.cpp in Sources */, + 147F39D7107EC37600427A48 /* JSVariableObject.cpp in Sources */, + 86E3C61C167BABEE006D760A /* JSVirtualMachine.mm in Sources */, + A7482B9411671147003B0712 /* JSWeakObjectMapRefPrivate.cpp in Sources */, + 1442566115EDE98D0066A49B /* JSWithScope.cpp in Sources */, + 86E3C618167BABEE006D760A /* JSWrapperMap.mm in Sources */, + 14280870107EC1340013E7B2 /* JSWrapperObject.cpp in Sources */, + 0F766D3415AE2538008F363E /* JumpReplacementWatchpoint.cpp in Sources */, + BCFD8C920EEB2EE700283848 /* JumpTable.cpp in Sources */, + 0FB5467914F5C46B002C2989 /* LazyOperandValueProfile.cpp in Sources */, + 95AB83420DA4322500BC83F3 /* LegacyProfiler.cpp in Sources */, + 148F21B0107EC5410042EC2C /* Lexer.cpp in Sources */, + 0FF4275715914A20004CB9FF /* LinkBuffer.cpp in Sources */, + A7E2EA6C0FB460CF00601F06 /* LiteralParser.cpp in Sources */, + FE20CE9D15F04A9500DF3430 /* LLIntCLoop.cpp in Sources */, + 0F4680D214BBD16500BFE272 /* LLIntData.cpp in Sources */, + 0F0B839A14BCF45D00885B4F /* LLIntEntrypoints.cpp in Sources */, + 0F4680A814BA7FAB00BFE272 /* LLIntExceptions.cpp in Sources */, + 0F4680A414BA7F8D00BFE272 /* LLIntSlowPaths.cpp in Sources */, + 0F0B839C14BCF46300885B4F /* LLIntThunks.cpp in Sources */, + 14469DDE107EC7E700650446 /* Lookup.cpp in Sources */, + 0F4680CC14BBB17A00BFE272 /* LowLevelInterpreter.cpp in Sources */, + 14B723B212D7DA46003BD5ED /* MachineStackMarker.cpp in Sources */, + 0FEB3ECF16237F6C00AB67AD /* MacroAssembler.cpp in Sources */, + 86C568E011A213EE0007F7F0 /* MacroAssemblerARM.cpp in Sources */, + C2B916C514DA040C00CBAC86 /* MarkedAllocator.cpp in Sources */, + 142D6F0813539A2800B02E86 /* MarkedBlock.cpp in Sources */, + 14D2F3DA139F4BE200491031 /* MarkedSpace.cpp in Sources */, + 142D6F1113539A4100B02E86 /* MarkStack.cpp in Sources */, + 14469DDF107EC7E700650446 /* MathObject.cpp in Sources */, + 90213E3D123A40C200D422F3 /* MemoryStatistics.cpp in Sources */, + 0FB5467D14F5CFD6002C2989 /* MethodOfGettingAValueProfile.cpp in Sources */, + 86EBF2FF1560F06A008E9222 /* NameConstructor.cpp in Sources */, + 86EBF3011560F06A008E9222 /* NameInstance.cpp in Sources */, + 86EBF3031560F06A008E9222 /* NamePrototype.cpp in Sources */, + 14469DE0107EC7E700650446 /* NativeErrorConstructor.cpp in Sources */, + 14469DE1107EC7E700650446 /* NativeErrorPrototype.cpp in Sources */, + 148F21B7107EC5470042EC2C /* Nodes.cpp in Sources */, + 655EB29B10CE2581001A990E /* NodesCodegen.cpp in Sources */, + 14469DE2107EC7E700650446 /* NumberConstructor.cpp in Sources */, + 14469DE3107EC7E700650446 /* NumberObject.cpp in Sources */, + 14469DE4107EC7E700650446 /* NumberPrototype.cpp in Sources */, + 86F3EEBE168CDE930077B92A /* ObjCCallbackFunction.mm in Sources */, + 14469DE5107EC7E700650446 /* ObjectConstructor.cpp in Sources */, + 14469DE6107EC7E700650446 /* ObjectPrototype.cpp in Sources */, + E124A8F80E555775003091F1 /* OpaqueJSString.cpp in Sources */, + 969A079A0ED1D3AE00F1F681 /* Opcode.cpp in Sources */, + 14280850107EC0D70013E7B2 /* Operations.cpp in Sources */, + 0FE228EE1436AB2C00196C48 /* Options.cpp in Sources */, + 148F21BC107EC54D0042EC2C /* Parser.cpp in Sources */, + 93052C340FB792190048FDC3 /* ParserArena.cpp in Sources */, + 0F9FC8C314E1B5FE00D52AE0 /* PolymorphicPutByIdList.cpp in Sources */, + 0F98206016BFE38100240D02 /* PreciseJumpTargets.cpp in Sources */, + 95742F650DD11F5A000917FB /* Profile.cpp in Sources */, + 95CD45760E1C4FDD0085358E /* ProfileGenerator.cpp in Sources */, + 95AB83560DA43C3000BC83F3 /* ProfileNode.cpp in Sources */, + 0FF729AD166AD35C000F5BA3 /* ProfilerBytecode.cpp in Sources */, + 0FF729AE166AD35C000F5BA3 /* ProfilerBytecodes.cpp in Sources */, + 0F13912916771C33009CCB07 /* ProfilerBytecodeSequence.cpp in Sources */, + 0FF729AF166AD35C000F5BA3 /* ProfilerCompilation.cpp in Sources */, + 0FF729B0166AD35C000F5BA3 /* ProfilerCompilationKind.cpp in Sources */, + 0FF729B1166AD35C000F5BA3 /* ProfilerCompiledBytecode.cpp in Sources */, + 0FF729B2166AD35C000F5BA3 /* ProfilerDatabase.cpp in Sources */, + 0FF729B3166AD35C000F5BA3 /* ProfilerOrigin.cpp in Sources */, + 0FF729B4166AD35C000F5BA3 /* ProfilerOriginStack.cpp in Sources */, + 0FB1058B1675483100F8AB6E /* ProfilerOSRExit.cpp in Sources */, + 0FB1058D1675483700F8AB6E /* ProfilerOSRExitSite.cpp in Sources */, + 0F13912B16771C3A009CCB07 /* ProfilerProfiledBytecodes.cpp in Sources */, + A7FB60A4103F7DC20017A286 /* PropertyDescriptor.cpp in Sources */, + 14469DE7107EC7E700650446 /* PropertyNameArray.cpp in Sources */, + 14469DE8107EC7E700650446 /* PropertySlot.cpp in Sources */, + ADE39FFF16DD144B0003CD4A /* PropertyTable.cpp in Sources */, + 1474C33C16AA2D9B0062F01D /* PrototypeMap.cpp in Sources */, + 0F9332A314CA7DD70085F3C6 /* PutByIdStatus.cpp in Sources */, + 0FF60AC316740F8800029779 /* ReduceWhitespace.cpp in Sources */, + 14280841107EC0930013E7B2 /* RegExp.cpp in Sources */, + A1712B3B11C7B212007A5315 /* RegExpCache.cpp in Sources */, + 8642C510151C06A90046D4EF /* RegExpCachedResult.cpp in Sources */, + 14280842107EC0930013E7B2 /* RegExpConstructor.cpp in Sources */, + 8642C512151C083D0046D4EF /* RegExpMatchesArray.cpp in Sources */, + 14280843107EC0930013E7B2 /* RegExpObject.cpp in Sources */, + 14280844107EC0930013E7B2 /* RegExpPrototype.cpp in Sources */, + 0FF42771159275D5004CB9FF /* ResolveGlobalStatus.cpp in Sources */, + 0F7700921402FF3C0078EB39 /* SamplingCounter.cpp in Sources */, + 1429D8850ED21C3D00B89619 /* SamplingTool.cpp in Sources */, + C225494315F7DBAA0065E898 /* SlotVisitor.cpp in Sources */, + 9330402C0E6A764000786E6A /* SmallStrings.cpp in Sources */, + 0F493AFA16D0CAD30084508B /* SourceProvider.cpp in Sources */, + E49DC16B12EF293E00184A1F /* SourceProviderCache.cpp in Sources */, + 0F0CD4C415F6B6BB0032F1C0 /* SparseArrayValueMap.cpp in Sources */, + 0F5541B11613C1FB00CE3E25 /* SpecialPointer.cpp in Sources */, + 0FD82E86141F3FF100179C94 /* SpeculatedType.cpp in Sources */, + A730B6131250068F009D25B1 /* StrictEvalActivation.cpp in Sources */, + 14469DEB107EC7E700650446 /* StringConstructor.cpp in Sources */, + 14469DEC107EC7E700650446 /* StringObject.cpp in Sources */, + 14469DED107EC7E700650446 /* StringPrototype.cpp in Sources */, + 9335F24D12E6765B002B5553 /* StringRecursionChecker.cpp in Sources */, + BCDE3B430E6C832D001453A7 /* Structure.cpp in Sources */, + 7E4EE70F0EBB7A5B005934AA /* StructureChain.cpp in Sources */, + C2F0F2D116BAEEE900187C19 /* StructureRareData.cpp in Sources */, + 0F766D3815AE4A1C008F363E /* StructureStubClearingWatchpoint.cpp in Sources */, + BCCF0D0C0EF0B8A500413C8F /* StructureStubInfo.cpp in Sources */, + C2DF442F1707AC0100A5CA96 /* SuperRegion.cpp in Sources */, + 0F919D2815856773004A4E7D /* SymbolTable.cpp in Sources */, + A7386555118697B400540279 /* ThunkGenerators.cpp in Sources */, + 0FF4274A158EBE91004CB9FF /* udis86.c in Sources */, + 0FF42740158EBE8B004CB9FF /* udis86_decode.c in Sources */, + 0FF42743158EBE91004CB9FF /* udis86_input.c in Sources */, + 0FF4274D158EBFE6004CB9FF /* udis86_itab_holder.c in Sources */, + 0FF42745158EBE91004CB9FF /* udis86_syn-att.c in Sources */, + 0FF42746158EBE91004CB9FF /* udis86_syn-intel.c in Sources */, + 0FF42747158EBE91004CB9FF /* udis86_syn.c in Sources */, + 0FF42732158EBD58004CB9FF /* UDis86Disassembler.cpp in Sources */, + A76F279415F13C9600517D67 /* UnlinkedCodeBlock.cpp in Sources */, + E18E3A590DF9278C00D90B34 /* VM.cpp in Sources */, + FE4A331F15BD2E07006F54F3 /* VMInspector.cpp in Sources */, + 0FC81516140511B500CFA603 /* VTableSpectrum.cpp in Sources */, + FED94F2E171E3E2300BE77A4 /* Watchdog.cpp in Sources */, + FED94F30171E3E2300BE77A4 /* WatchdogMac.cpp in Sources */, + 0F919D2515853CE0004A4E7D /* Watchpoint.cpp in Sources */, + 1ACF7377171CA6FB00C9BB1E /* Weak.cpp in Sources */, + 14E84F9E14EE1ACC00D6D5D4 /* WeakBlock.cpp in Sources */, + 14F7256514EE265E00B1652B /* WeakHandleOwner.cpp in Sources */, + 14E84FA014EE1ACC00D6D5D4 /* WeakSet.cpp in Sources */, + 0FC8150B14043C0E00CFA603 /* WriteBarrierSupport.cpp in Sources */, + 863C6D9C1521111A00585E4E /* YarrCanonicalizeUCS2.cpp in Sources */, + 86704B8412DBA33700A9FE7B /* YarrInterpreter.cpp in Sources */, + 86704B8612DBA33700A9FE7B /* YarrJIT.cpp in Sources */, + 86704B8912DBA33700A9FE7B /* YarrPattern.cpp in Sources */, + 86704B4212DB8A8100A9FE7B /* YarrSyntaxChecker.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 932F5BDC0822A1C700736975 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 932F5BDD0822A1C700736975 /* jsc.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 0FF922D314F46B2F0041A24E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 0F4680A914BA7FD900BFE272 /* LLInt Offsets */; + targetProxy = 0FF922D214F46B2F0041A24E /* PBXContainerItemProxy */; + }; + 0FF922D614F46B600041A24E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */; + targetProxy = 0FF922D514F46B600041A24E /* PBXContainerItemProxy */; + }; + 5D69E912152BE5470028D720 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 932F5BDA0822A1C700736975 /* jsc */; + targetProxy = 5D69E911152BE5470028D720 /* PBXContainerItemProxy */; + }; + 5D6B2A4F152B9E23005231DE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 1412111F0A48793C00480255 /* minidom */; + targetProxy = 5D6B2A4E152B9E23005231DE /* PBXContainerItemProxy */; + }; + 5D6B2A51152B9E23005231DE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 14BD59BE0A3E8F9000BAF59C /* testapi */; + targetProxy = 5D6B2A50152B9E23005231DE /* PBXContainerItemProxy */; + }; + 5D6B2A55152B9E23005231DE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 651122F714046A4C002B101D /* testRegExp */; + targetProxy = 5D6B2A54152B9E23005231DE /* PBXContainerItemProxy */; + }; + 5D6B2A57152B9E2E005231DE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 5D6B2A47152B9E17005231DE /* Test Tools */; + targetProxy = 5D6B2A56152B9E2E005231DE /* PBXContainerItemProxy */; + }; + 65FB3F7E09D11EF300F49DEB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 65FB3F6609D11E9100F49DEB /* Derived Sources */; + targetProxy = 65FB3F7D09D11EF300F49DEB /* PBXContainerItemProxy */; + }; + 932F5BE70822A1C700736975 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 932F5B3E0822A1C700736975 /* JavaScriptCore */; + targetProxy = 932F5BE60822A1C700736975 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 0F4680AD14BA7FD900BFE272 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "Derived Sources copy"; + }; + name = Debug; + }; + 0F4680AE14BA7FD900BFE272 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "Derived Sources copy"; + }; + name = Release; + }; + 0F4680AF14BA7FD900BFE272 /* Profiling */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "Derived Sources copy"; + }; + name = Profiling; + }; + 0F4680B014BA7FD900BFE272 /* Production */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "Derived Sources copy"; + }; + name = Production; + }; + 0FF922CB14F46B130041A24E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + 0FF922CC14F46B130041A24E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Release; + }; + 0FF922CD14F46B130041A24E /* Profiling */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Profiling; + }; + 0FF922CE14F46B130041A24E /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Production; + }; + 1412113A0A48798400480255 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + 1412113B0A48798400480255 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Release; + }; + 1412113C0A48798400480255 /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Production; + }; + 149C275E08902AFE008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C9051430BA9E8A70081E9D0 /* JavaScriptCore.xcconfig */; + buildSettings = { + INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)"; + }; + name = Debug; + }; + 149C275F08902AFE008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C9051430BA9E8A70081E9D0 /* JavaScriptCore.xcconfig */; + buildSettings = { + INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)"; + }; + name = Release; + }; + 149C276108902AFE008A9EFC /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C9051430BA9E8A70081E9D0 /* JavaScriptCore.xcconfig */; + buildSettings = { + BUILD_VARIANTS = normal; + }; + name = Production; + }; + 149C276808902AFE008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5DAFD6CB146B686300FBEFB4 /* JSC.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + 149C276908902AFE008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5DAFD6CB146B686300FBEFB4 /* JSC.xcconfig */; + buildSettings = { + }; + name = Release; + }; + 149C276B08902AFE008A9EFC /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5DAFD6CB146B686300FBEFB4 /* JSC.xcconfig */; + buildSettings = { + }; + name = Production; + }; + 149C276D08902AFE008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = All; + }; + name = Debug; + }; + 149C276E08902AFE008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = All; + }; + name = Release; + }; + 149C277008902AFE008A9EFC /* Production */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = All; + }; + name = Production; + }; + 149C277208902AFE008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C9051440BA9E8A70081E9D0 /* DebugRelease.xcconfig */; + buildSettings = { + DEAD_CODE_STRIPPING = "$(DEAD_CODE_STRIPPING_debug)"; + DEBUG_DEFINES = "$(DEBUG_DEFINES_debug)"; + GCC_OPTIMIZATION_LEVEL = "$(GCC_OPTIMIZATION_LEVEL_debug)"; + STRIP_INSTALLED_PRODUCT = "$(STRIP_INSTALLED_PRODUCT_debug)"; + }; + name = Debug; + }; + 149C277308902AFE008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C9051440BA9E8A70081E9D0 /* DebugRelease.xcconfig */; + buildSettings = { + STRIP_INSTALLED_PRODUCT = NO; + }; + name = Release; + }; + 149C277508902AFE008A9EFC /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C9051450BA9E8A70081E9D0 /* Base.xcconfig */; + buildSettings = { + }; + name = Production; + }; + 14BD59D70A3E8FC900BAF59C /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + 14BD59D80A3E8FC900BAF59C /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Release; + }; + 14BD59D90A3E8FC900BAF59C /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Production; + }; + 5D6B2A48152B9E17005231DE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 5D6B2A49152B9E17005231DE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 5D6B2A4A152B9E17005231DE /* Profiling */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profiling; + }; + 5D6B2A4B152B9E17005231DE /* Production */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Production; + }; + 6511230114046A4C002B101D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + 6511230214046A4C002B101D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Release; + }; + 6511230314046A4C002B101D /* Profiling */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Profiling; + }; + 6511230414046A4C002B101D /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Production; + }; + 65FB3F7809D11EBD00F49DEB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "Generate Derived Sources"; + }; + name = Debug; + }; + 65FB3F7909D11EBD00F49DEB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "Generate Derived Sources"; + }; + name = Release; + }; + 65FB3F7A09D11EBD00F49DEB /* Production */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "Generate Derived Sources"; + }; + name = Production; + }; + A761483D0E6402F700E357FA /* Profiling */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C9051440BA9E8A70081E9D0 /* DebugRelease.xcconfig */; + buildSettings = { + STRIP_INSTALLED_PRODUCT = NO; + }; + name = Profiling; + }; + A761483E0E6402F700E357FA /* Profiling */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = All; + }; + name = Profiling; + }; + A761483F0E6402F700E357FA /* Profiling */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C9051430BA9E8A70081E9D0 /* JavaScriptCore.xcconfig */; + buildSettings = { + INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)"; + }; + name = Profiling; + }; + A76148400E6402F700E357FA /* Profiling */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "Generate Derived Sources"; + }; + name = Profiling; + }; + A76148410E6402F700E357FA /* Profiling */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Profiling; + }; + A76148420E6402F700E357FA /* Profiling */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */; + buildSettings = { + }; + name = Profiling; + }; + A76148430E6402F700E357FA /* Profiling */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5DAFD6CB146B686300FBEFB4 /* JSC.xcconfig */; + buildSettings = { + }; + name = Profiling; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0F4680AC14BA7FD900BFE272 /* Build configuration list for PBXAggregateTarget "LLInt Offsets" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0F4680AD14BA7FD900BFE272 /* Debug */, + 0F4680AE14BA7FD900BFE272 /* Release */, + 0F4680AF14BA7FD900BFE272 /* Profiling */, + 0F4680B014BA7FD900BFE272 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 0FF922CA14F46B130041A24E /* Build configuration list for PBXNativeTarget "JSCLLIntOffsetsExtractor" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0FF922CB14F46B130041A24E /* Debug */, + 0FF922CC14F46B130041A24E /* Release */, + 0FF922CD14F46B130041A24E /* Profiling */, + 0FF922CE14F46B130041A24E /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 141211390A48798400480255 /* Build configuration list for PBXNativeTarget "minidom" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1412113A0A48798400480255 /* Debug */, + 1412113B0A48798400480255 /* Release */, + A76148410E6402F700E357FA /* Profiling */, + 1412113C0A48798400480255 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 149C275D08902AFE008A9EFC /* Build configuration list for PBXNativeTarget "JavaScriptCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C275E08902AFE008A9EFC /* Debug */, + 149C275F08902AFE008A9EFC /* Release */, + A761483F0E6402F700E357FA /* Profiling */, + 149C276108902AFE008A9EFC /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 149C276708902AFE008A9EFC /* Build configuration list for PBXNativeTarget "jsc" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C276808902AFE008A9EFC /* Debug */, + 149C276908902AFE008A9EFC /* Release */, + A76148430E6402F700E357FA /* Profiling */, + 149C276B08902AFE008A9EFC /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 149C276C08902AFE008A9EFC /* Build configuration list for PBXAggregateTarget "All" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C276D08902AFE008A9EFC /* Debug */, + 149C276E08902AFE008A9EFC /* Release */, + A761483E0E6402F700E357FA /* Profiling */, + 149C277008902AFE008A9EFC /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 149C277108902AFE008A9EFC /* Build configuration list for PBXProject "JavaScriptCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C277208902AFE008A9EFC /* Debug */, + 149C277308902AFE008A9EFC /* Release */, + A761483D0E6402F700E357FA /* Profiling */, + 149C277508902AFE008A9EFC /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 14BD59D60A3E8FC900BAF59C /* Build configuration list for PBXNativeTarget "testapi" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 14BD59D70A3E8FC900BAF59C /* Debug */, + 14BD59D80A3E8FC900BAF59C /* Release */, + A76148420E6402F700E357FA /* Profiling */, + 14BD59D90A3E8FC900BAF59C /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 5D6B2A4C152B9E17005231DE /* Build configuration list for PBXAggregateTarget "Test Tools" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5D6B2A48152B9E17005231DE /* Debug */, + 5D6B2A49152B9E17005231DE /* Release */, + 5D6B2A4A152B9E17005231DE /* Profiling */, + 5D6B2A4B152B9E17005231DE /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 6511230014046A4C002B101D /* Build configuration list for PBXNativeTarget "testRegExp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6511230114046A4C002B101D /* Debug */, + 6511230214046A4C002B101D /* Release */, + 6511230314046A4C002B101D /* Profiling */, + 6511230414046A4C002B101D /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 65FB3F7709D11EBD00F49DEB /* Build configuration list for PBXAggregateTarget "Derived Sources" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 65FB3F7809D11EBD00F49DEB /* Debug */, + 65FB3F7909D11EBD00F49DEB /* Release */, + A76148400E6402F700E357FA /* Profiling */, + 65FB3F7A09D11EBD00F49DEB /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/Source/JavaScriptCore/LLIntOffsetsExtractor.pro b/Source/JavaScriptCore/LLIntOffsetsExtractor.pro index 5a66d1ff38f..e522053d7ed 100644 --- a/Source/JavaScriptCore/LLIntOffsetsExtractor.pro +++ b/Source/JavaScriptCore/LLIntOffsetsExtractor.pro @@ -16,6 +16,7 @@ debug_and_release { # Don't try to link against any Qt libraries, but at least # pull in include paths as we include qglobal.h. INCLUDEPATH += $$QT.core.includes +DEFINES += QT_NO_VERSION_TAGGING CONFIG += console CONFIG -= qt @@ -61,6 +62,12 @@ macx { DESTDIR = $$targetSubDir() llint.output = $$targetSubDir()/$$llint.output INCLUDEPATH += $$targetSubDir() + contains(QT_CONFIG, qt_framework) { + # Add framework headers directly to make #include work + INCLUDEPATH += $$QT.core.libs/QtCore.framework/Headers + # Extend framework search path to make #include work + QMAKE_CXXFLAGS += -F$$QT.core.libs + } } # Compilation of this file will automatically depend on LLIntDesiredOffsets.h diff --git a/Source/JavaScriptCore/assembler/ARMv7Assembler.h b/Source/JavaScriptCore/assembler/ARMv7Assembler.h index 28989549d45..ddb57b19ddf 100644 --- a/Source/JavaScriptCore/assembler/ARMv7Assembler.h +++ b/Source/JavaScriptCore/assembler/ARMv7Assembler.h @@ -1960,8 +1960,10 @@ class ARMv7Assembler { int jumpSizeDelta(JumpType jumpType, JumpLinkType jumpLinkType) { return JUMP_ENUM_SIZE(jumpType) - JUMP_ENUM_SIZE(jumpLinkType); } // Assembler admin methods: - - static ALWAYS_INLINE bool linkRecordSourceComparator(const LinkRecord& a, const LinkRecord& b) +#if !OS(QNX) + ALWAYS_INLINE +#endif + static bool linkRecordSourceComparator(const LinkRecord& a, const LinkRecord& b) { return a.from() < b.from(); } diff --git a/Source/JavaScriptCore/jsc.pro b/Source/JavaScriptCore/jsc.pro index dfd73e825b7..91ebcc2a0dc 100644 --- a/Source/JavaScriptCore/jsc.pro +++ b/Source/JavaScriptCore/jsc.pro @@ -13,7 +13,7 @@ QT -= gui win32-*: CONFIG += console win32-msvc*: CONFIG += exceptions_off stl_off -win32-msvc*|win32-icc: INCLUDEPATH += $$ROOT_WEBKIT_DIR/Source/JavaScriptCore/os-win32 +win32-msvc2005|win32-msvc2008|win32-msvc2010|win32-msvc2012|win32-msvc2013|win32-icc: INCLUDEPATH += $$ROOT_WEBKIT_DIR/Source/JavaScriptCore/os-win32 WEBKIT += javascriptcore wtf diff --git a/Source/JavaScriptCore/offlineasm/asm.rb b/Source/JavaScriptCore/offlineasm/asm.rb index bf242639914..ed0f1534037 100644 --- a/Source/JavaScriptCore/offlineasm/asm.rb +++ b/Source/JavaScriptCore/offlineasm/asm.rb @@ -28,6 +28,7 @@ require "config" require "backends" require "digest/sha1" +require "fileutils" require "offsets" require "parser" require "self_hash" @@ -244,6 +245,7 @@ def annotation(text) firstLine = inp.gets if firstLine and firstLine.chomp == inputHash $stderr.puts "offlineasm: Nothing changed." + FileUtils.touch(outputFlnm) exit 0 end } diff --git a/Source/JavaScriptCore/tests/mozilla/Getopt/Mixed.pm b/Source/JavaScriptCore/tests/mozilla/Getopt/Mixed.pm new file mode 100644 index 00000000000..3caee45e400 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/Getopt/Mixed.pm @@ -0,0 +1,754 @@ +#--------------------------------------------------------------------- +package Getopt::Mixed; +# +# Copyright 1995 Christopher J. Madsen +# +# Author: Christopher J. Madsen +# Created: 1 Jan 1995 +# Version: $Revision: 1.8 $ ($Date: 1996/02/09 00:05:00 $) +# Note that RCS revision 1.23 => $Getopt::Mixed::VERSION = "1.023" +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Perl; see the file COPYING. If not, write to the +# Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# +# Process both single-character and extended options +#--------------------------------------------------------------------- + +require 5.000; +use Carp; + +require Exporter; +@ISA = qw(Exporter); +@EXPORT = (); +@EXPORT_OK = qw(abortMsg getOptions nextOption); + +#===================================================================== +# Package Global Variables: + +BEGIN +{ + # The permissible settings for $order: + $REQUIRE_ORDER = 0; + $PERMUTE = 1; + $RETURN_IN_ORDER = 2; + + # Regular expressions: + $intRegexp = '^[-+]?\d+$'; # Match an integer + $floatRegexp = '^[-+]?(\d*\.?\d+|\d+\.)$'; # Match a real number + $typeChars = 'sif'; # Match type characters + + # Convert RCS revision number (must be main branch) to d.ddd format: + ' $Revision: 1.8 $ ' =~ / (\d+)\.(\d{1,3}) / + or die "Invalid version number"; + $VERSION = sprintf("%d.%03d",$1,$2); +} # end BEGIN + +#===================================================================== +# Subroutines: +#--------------------------------------------------------------------- +# Initialize the option processor: +# +# You should set any customization variables *after* calling init. +# +# For a description of option declarations, see the documentation at +# the end of this file. +# +# Input: +# List of option declarations (separated by whitespace) +# If the first argument is entirely non-alphanumeric characters +# with no whitespace, it is the characters that start options. + +sub init +{ + undef %options; + my($opt,$type); + + $ignoreCase = 1; # Ignore case by default + $optionStart = "-"; # Dash is the default option starter + + # If the first argument is entirely non-alphanumeric characters + # with no whitespace, it is the desired value for $optionStart: + $optionStart = shift @_ if $_[0] =~ /^[^a-z0-9\s]+$/i; + + foreach $group (@_) { + # Ignore case unless there are upper-case options: + $ignoreCase = 0 if $group =~ /[A-Z]/; + foreach $option (split(/\s+/,$group)) { + croak "Invalid option declaration `$option'" + unless $option =~ /^([^=:>]+)([=:][$typeChars]|>[^=:>]+)?$/o; + $opt = $1; + $type = $2 || ""; + if ($type =~ /^>(.*)$/) { + $type = $1; + croak "Invalid synonym `$option'" + if (not defined $options{$type} + or $options{$type} =~ /^[^:=]/); + } # end if synonym + $options{$opt} = $type; + } # end foreach option + } # end foreach group + + # Handle POSIX compliancy: + if (defined $ENV{"POSIXLY_CORRECT"}) { + $order = $REQUIRE_ORDER; + } else { + $order = $PERMUTE; + } + + $optionEnd = 0; + $badOption = \&badOption; + $checkArg = \&checkArg; +} # end init + +#--------------------------------------------------------------------- +# Clean up when we're done: +# +# This just releases the memory used by the %options hash. +# +# If 'help' was defined as an option, a new hash with just 'help' is +# created, in case the program calls abortMsg. + +sub cleanup +{ + my $help = defined($options{'help'}); + undef %options; + $options{'help'} = "" if $help; +} # end cleanup + +#--------------------------------------------------------------------- +# Abort program with message: +# +# Prints program name and arguments to STDERR +# If --help is an option, prints message saying 'Try --help' +# Exits with code 1 + +sub abortMsg +{ + my $name = $0; + $name =~ s|^.+[\\/]||; # Remove any directories from name + print STDERR $name,": ",@_,"\n"; + print STDERR "Try `$name --help' for more information.\n" + if defined $options{"help"}; + exit 1; +} # end abortMsg + +#--------------------------------------------------------------------- +# Standard function for handling bad options: +# +# Prints an error message and exits. +# +# You can override this by setting $Getopt::Mixed::badOption to a +# function reference. +# +# Input: +# Index into @ARGV +# The option that caused the error +# An optional string describing the problem +# Currently, this can be +# undef The option was not recognized +# 'ambiguous' The option could match several long options +# +# Note: +# The option has already been removed from @ARGV. To put it back, +# you can say: +# splice(@ARGV,$_[0],0,$_[1]); +# +# If your function returns, it should return whatever you want +# nextOption to return. + +sub badOption +{ + my ($index, $option, $problem) = @_; + + $problem = 'unrecognized' unless $problem; + + abortMsg("$problem option `$option'"); +} # end badOption + +#--------------------------------------------------------------------- +# Make sure we have the proper argument for this option: +# +# You can override this by setting $Getopt::Mixed::checkArg to a +# function reference. +# +# Input: +# $i: Position of argument in @ARGV +# $value: The text appended to the option (undef if no text) +# $option: The pretty name of the option (as the user typed it) +# $type: The type of the option +# +# Returns: +# The value of the option's argument + +sub checkArg +{ + my ($i,$value,$option,$type) = @_; + + abortMsg("option `$option' does not take an argument") + if (not $type and defined $value); + + if ($type =~ /^=/) { + # An argument is required for this option: + $value = splice(@ARGV,$i,1) unless defined $value; + abortMsg("option `$option' requires an argument") + unless defined $value; + } + + if ($type =~ /i$/) { + abortMsg("option `$option' requires integer argument") + if (defined $value and $value !~ /$intRegexp/o); + } + elsif ($type =~ /f$/) { + abortMsg("option `$option' requires numeric argument") + if (defined $value and $value !~ /$floatRegexp/o); + } + elsif ($type =~ /^[=:]/ and ref($checkType)) { + $value = &$checkType($i,$value,$option,$type); + } + + $value = "" if not defined $value and $type =~ /^:/; + + $value; +} # end checkArg + +#--------------------------------------------------------------------- +# Find a match for an incomplete long option: +# +# Input: +# The option text to match +# +# Returns: +# The option that matched, or +# undef, if no option matched, or +# (undef, 'ambiguous'), if multiple options matched + +sub findMatch +{ + my $opt = shift; + + $opt =~ s/-/[^-]*-/g; + $opt .= ".*"; + + my @matches = grep(/^$opt$/, keys %options); + + return undef if $#matches < 0; + return $matches[0] if $#matches == 0; + + $opt = $matches[0]; + $opt = $options{$opt} if $options{$opt} =~ /^[^=:]/; + + foreach (@matches) { + return (undef, 'ambiguous') + unless $_ eq $opt or $options{$_} eq $opt; + } + + $opt; +} # end findMatch + +#--------------------------------------------------------------------- +# Return the next option: +# +# Returns a list of 3 elements: (OPTION, VALUE, PRETTYNAME), where +# OPTION is the name of the option, +# VALUE is its argument, and +# PRETTYNAME is the option as the user entered it. +# Returns the null list if there are no more options to process +# +# If $order is $RETURN_IN_ORDER, and this is a normal argument (not an +# option), OPTION will be the null string, VALUE will be the argument, +# and PRETTYNAME will be undefined. + +sub nextOption +{ + return () if $#ARGV < 0; # No more arguments + + if ($optionEnd) { + # We aren't processing any more options: + return ("", shift @ARGV) if $order == $RETURN_IN_ORDER; + return (); + } + + # Find the next option: + my $i = 0; + while (length($ARGV[$i]) < 2 or + index($optionStart,substr($ARGV[$i],0,1)) < 0) { + return () if $order == $REQUIRE_ORDER; + return ("", shift @ARGV) if $order == $RETURN_IN_ORDER; + ++$i; + return () if $i > $#ARGV; + } # end while + + # Process the option: + my($option,$opt,$value,$optType,$prettyOpt); + $option = $ARGV[$i]; + if (substr($option,0,1) eq substr($option,1,1)) { + # If the option start character is repeated, it's a long option: + splice @ARGV,$i,1; + if (length($option) == 2) { + # A double dash by itself marks the end of the options: + $optionEnd = 1; # Don't process any more options + return nextOption(); + } # end if bare double dash + $opt = substr($option,2); + if ($opt =~ /^([^=]+)=(.*)$/) { + $opt = $1; + $value = $2; + } # end if option is followed by value + $opt =~ tr/A-Z/a-z/ if $ignoreCase; + $prettyOpt = substr($option,0,2) . $opt; + my $problem; + ($opt, $problem) = findMatch($opt) + unless defined $options{$opt} and length($opt) > 1; + return &$badOption($i,$option,$problem) unless $opt; + $optType = $options{$opt}; + if ($optType =~ /^[^:=]/) { + $opt = $optType; + $optType = $options{$opt}; + } + $value = &$checkArg($i,$value,$prettyOpt,$optType); + } # end if long option + else { + # It's a short option: + $opt = substr($option,1,1); + $opt =~ tr/A-Z/a-z/ if $ignoreCase; + return &$badOption($i,$option) unless defined $options{$opt}; + $optType = $options{$opt}; + if ($optType =~ /^[^:=]/) { + $opt = $optType; + $optType = $options{$opt}; + } + if (length($option) == 2 or $optType) { + # This is the last option in the group, so remove the group: + splice(@ARGV,$i,1); + } else { + # Just remove this option from the group: + substr($ARGV[$i],1,1) = ""; + } + if ($optType) { + $value = (length($option) > 2) ? substr($option,2) : undef; + $value =~ s/^=// if $value; # Allow either -d3 or -d=3 + } # end if option takes an argument + $prettyOpt = substr($option,0,2); + $value = &$checkArg($i,$value,$prettyOpt,$optType); + } # end else short option + ($opt,$value,$prettyOpt); +} # end nextOption + +#--------------------------------------------------------------------- +# Get options: +# +# Input: +# The same as for init() +# If no parameters are supplied, init() is NOT called. This allows +# you to call init() yourself and then change the configuration +# variables. +# +# Output Variables: +# Sets $opt_X for each `-X' option encountered. +# +# Note that if --apple is a synonym for -a, then --apple will cause +# $opt_a to be set, not $opt_apple. + +sub getOptions +{ + &init if $#_ >= 0; # Pass arguments (if any) on to init + + # If you want to use $RETURN_IN_ORDER, you have to call + # nextOption yourself; getOptions doesn't support it: + $order = $PERMUTE if $order == $RETURN_IN_ORDER; + + my ($option,$value,$package); + + $package = (caller)[0]; + + while (($option, $value) = nextOption()) { + $option =~ s/\W/_/g; # Make a legal Perl identifier + $value = 1 unless defined $value; + eval("\$" . $package . '::opt_' . $option . ' = $value;'); + } # end while + + cleanup(); +} # end getOptions + +#===================================================================== +# Package return value: + +$VERSION; + +__END__ + +=head1 NAME + +Getopt::Mixed - getopt processing with both long and short options + +=head1 SYNOPSIS + + use Getopt::Mixed; + Getopt::Mixed::getOptions(...option-descriptions...); + ...examine $opt_* variables... + +or + + use Getopt::Mixed "nextOption"; + Getopt::Mixed::init(...option-descriptions...); + while (($option, $value) = nextOption()) { + ...process option... + } + Getopt::Mixed::cleanup(); + +=head1 DESCRIPTION + +This package is my response to the standard modules Getopt::Std and +Getopt::Long. C doesn't support long options, and C +doesn't support short options. I wanted both, since long options are +easier to remember and short options are faster to type. + +This package is intended to be the "Getopt-to-end-all-Getop's". It +combines (I hope) flexibility and simplicity. It supports both short +options (introduced by C<->) and long options (introduced by C<-->). +Short options which do not take an argument can be grouped together. +Short options which do take an argument must be the last option in +their group, because everything following the option will be +considered to be its argument. + +There are two methods for using Getopt::Mixed: the simple method and +the flexible method. Both methods use the same format for option +descriptions. + +=head2 Option Descriptions + +The option-description arguments required by C and C +are strings composed of individual option descriptions. Several +option descriptions can appear in the same string if they are +separated by whitespace. + +Each description consists of the option name and an optional trailing +argument specifier. Option names may consist of any characters but +whitespace, C<=>, C<:>, and C>. + +Values for argument specifiers are: + + option does not take an argument + =s :s option takes a mandatory (=) or optional (:) string argument + =i :i option takes a mandatory (=) or optional (:) integer argument + =f :f option takes a mandatory (=) or optional (:) real number argument + >new option is a synonym for option `new' + +The C> specifier is not really an argument specifier. It +defines an option as being a synonym for another option. For example, +"a=i apples>a" would define B<-a> as an option that requires an +integer argument and B<--apples> as a synonym for B<-a>. Only one +level of synonyms is supported, and the root option must be listed +first. For example, "apples>a a=i" and "a=i apples>a oranges>apples" +are illegal; use "a=i apples>a oranges>a" if that's what you want. + +For example, in the option description: + "a b=i c:s apple baker>b charlie:s" + -a and --apple do not take arguments + -b takes a mandatory integer argument + --baker is a synonym for -b + -c and --charlie take an optional string argument + +If the first argument to C or C is entirely +non-alphanumeric characters with no whitespace, it represents the +characters which can begin options. + +=head2 User Interface + +From the user's perspective, short options are introduced by a dash +(C<->) and long options are introduced by a double dash (C<-->). +Short options may be combined ("-a -b" can be written "-ab"), but an +option that takes an argument must be the last one in its group, +because anything following it is considered part of the argument. A +double dash by itself marks the end of the options; all arguments +following it are treated as normal arguments, not options. A single +dash by itself is treated as a normal argument, I an option. + +Long options may be abbreviated. An option B<--all-the-time> could be +abbreviated B<--all>, B<--a--tim>, or even B<--a>. Note that B<--time> +would not work; the abbreviation must start at the beginning of the +option name. If an abbreviation is ambiguous, an error message will +be printed. + +In the following examples, B<-i> and B<--int> take integer arguments, +B<-f> and B<--float> take floating point arguments, and B<-s> and +B<--string> take string arguments. All other options do not take an +argument. + + -i24 -f24.5 -sHello + -i=24 --int=-27 -f=24.5 --float=0.27 -s=Hello --string=Hello + +If the argument is required, it can also be separated by whitespace: + + -i 24 --int -27 -f 24.5 --float 0.27 -s Hello --string Hello + +Note that if the option is followed by C<=>, whatever follows the C<=> +I the argument, even if it's the null string. In the example + + -i= 24 -f= 24.5 -s= Hello + +B<-i> and B<-f> will cause an error, because the null string is not a +number, but B<-s> is perfectly legal; its argument is the null string, +not "Hello". + +Remember that optional arguments I be separated from the +option by whitespace. + +=head2 The Simple Method + +The simple method is + + use Getopt::Mixed; + Getopt::Mixed::getOptions(...option-descriptions...); + +You then examine the C<$opt_*> variables to find out what options were +specified and the C<@ARGV> array to see what arguments are left. + +If B<-a> is an option that doesn't take an argument, then C<$opt_a> +will be set to 1 if the option is present, or left undefined if the +option is not present. + +If B<-b> is an option that takes an argument, then C<$opt_b> will be +set to the value of the argument if the option is present, or left +undefined if the option is not present. If the argument is optional +but not supplied, C<$opt_b> will be set to the null string. + +Note that even if you specify that an option I a string +argument, you can still get the null string (if the user specifically +enters it). If the option requires a numeric argument, you will never +get the null string (because it isn't a number). + +When converting the option name to a Perl identifier, any non-word +characters in the name will be converted to underscores (C<_>). + +If the same option occurs more than once, only the last occurrence +will be recorded. If that's not acceptable, you'll have to use the +flexible method instead. + +=head2 The Flexible Method + +The flexible method is + + use Getopt::Mixed "nextOption"; + Getopt::Mixed::init(...option-descriptions...); + while (($option, $value, $pretty) = nextOption()) { + ...process option... + } + Getopt::Mixed::cleanup(); + +This lets you process arguments one at a time. You can then handle +repeated options any way you want to. It also lets you see option +names with non-alphanumeric characters without any translation. This +is also the only method that lets you find out what order the options +and other arguments were in. + +First, you call Getopt::Mixed::init with the option descriptions. +Then, you keep calling nextOption until it returns an empty list. +Finally, you call Getopt::Mixed::cleanup when you're done. The +remaining (non-option) arguments will be found in @ARGV. + +Each call to nextOption returns a list of the next option, its value, +and the option as the user typed it. The value will be undefined if +the option does not take an argument. The option is stripped of its +starter (e.g., you get "a" and "foo", not "-a" or "--foo"). If you +want to print an error message, use the third element, which does +include the option starter. + +=head1 OTHER FUNCTIONS + +Getopt::Mixed provides one other function you can use. C +prints its arguments on STDERR, plus your program's name and a +newline. It then exits with status 1. For example, if F +calls C like this: + + Getopt::Mixed::abortMsg("Error"); + +The output will be: + + foo.pl: Error + +=head1 CUSTOMIZATION + +There are several customization variables you can set. All of these +variables should be set I calling Getopt::Mixed::init and +I calling nextOption. + +If you set any of these variables, you I check the version +number first. The easiest way to do this is like this: + + use Getopt::Mixed 1.006; + +If you are using the simple method, and you want to set these +variables, you'll need to call init before calling getOptions, like +this: + + use Getopt::Mixed 1.006; + Getopt::Mixed::init(...option-descriptions...); + ...set configuration variables... + Getopt::Mixed::getOptions(); # IMPORTANT: no parameters + +=over 4 + +=item $order + +$order can be set to $REQUIRE_ORDER, $PERMUTE, or $RETURN_IN_ORDER. +The default is $REQUIRE_ORDER if the environment variable +POSIXLY_CORRECT has been set, $PERMUTE otherwise. + +$REQUIRE_ORDER means that no options can follow the first argument +which isn't an option. + +$PERMUTE means that all options are treated as if they preceded all +other arguments. + +$RETURN_IN_ORDER means that all arguments maintain their ordering. +When nextOption is called, and the next argument is not an option, it +returns the null string as the option and the argument as the value. +nextOption never returns the null list until all the arguments have +been processed. + +=item $ignoreCase + +Ignore case when matching options. Default is 1 unless the option +descriptions contain an upper-case letter. + +=item $optionStart + +A string of characters that can start options. Default is "-". + +=item $badOption + +A reference to a function that is called when an unrecognized option +is encountered. The function receives three arguments. $_[0] is the +position in @ARGV where the option came from. $_[1] is the option as +the user typed it (including the option start character). $_[2] is +either undef or a string describing the reason the option was not +recognized (Currently, the only possible value is 'ambiguous', for a +long option with several possible matches). The option has already +been removed from @ARGV. To put it back, you can say: + + splice(@ARGV,$_[0],0,$_[1]); + +The function can do anything you want to @ARGV. It should return +whatever you want nextOption to return. + +The default is a function that prints an error message and exits the +program. + +=item $checkArg + +A reference to a function that is called to make sure the argument +type is correct. The function receives four arguments. $_[0] is the +position in @ARGV where the option came from. $_[1] is the text +following the option, or undefined if there was no text following the +option. $_[2] is the name of the option as the user typed it +(including the option start character), suitable for error messages. +$_[3] is the argument type specifier. + +The function can do anything you want to @ARGV. It should return +the value for this option. + +The default is a function that prints an error message and exits the +program if the argument is not the right type for the option. You can +also adjust the behavior of the default function by changing +$intRegexp or $floatRegexp. + +=item $intRegexp + +A regular expression that matches an integer. Default is +'^[-+]?\d+$', which matches a string of digits preceded by an +optional sign. Unlike the other configuration variables, this cannot +be changed after nextOption is called, because the pattern is compiled +only once. + +=item $floatRegexp + +A regular expression that matches a floating point number. Default is +'^[-+]?(\d*\.?\d+|\d+\.)$', which matches the following formats: +"123", "123.", "123.45", and ".123" (plus an optional sign). It does +not match exponential notation. Unlike the other configuration +variables, this cannot be changed after nextOption is called, because +the pattern is compiled only once. + +=item $typeChars + +A string of the characters which are legal argument types. The +default is 'sif', for String, Integer, and Floating point arguments. +The string should consist only of letters. Upper case letters are +discouraged, since this will hamper the case-folding of options. If +you change this, you should set $checkType to a function that will +check arguments of your new type. Unlike the other configuration +variables, this must be set I calling init(), and cannot be +changed afterwards. + +=item $checkType + +If you add new types to $typeChars, you should set this to a function +which will check arguments of the new types. + +=back + +=head1 BUGS + +=over 4 + +=item * + +This document should be expanded. + +=item * + +A long option must be at least two characters long. Sorry. + +=item * + +The C argument specifier of Getopt::Long is not supported, but you +could have options B<--foo> and B<--nofoo> and then do something like: + + $opt_foo = 0 if $opt_nofoo; + +=item * + +The C<@> argument specifier of Getopt::Long is not supported. If you +want your values pushed into an array, you'll have to use nextOption +and do it yourself. + +=back + +=head1 LICENSE + +Getopt::Mixed is distributed under the terms of the GNU General Public +License as published by the Free Software Foundation; either version +2, or (at your option) any later version. + +This means it is distributed in the hope that it will be useful, but +I; without even the implied warranty of +I or I. See the +GNU General Public License for more details. + +Since Perl scripts are only compiled at runtime, and simply calling +Getopt::Mixed does I bring your program under the GPL, the only +real restriction is that you can't use Getopt::Mixed in an +binary-only distribution produced with C (unless you also +provide source code). + +=head1 AUTHOR + +Christopher J. Madsen EFE + +Thanks are also due to Andreas Koenig for helping Getopt::Mixed +conform to the standards for Perl modules and for answering a bunch of +questions. Any remaining deficiencies are my fault. + +=cut diff --git a/Source/JavaScriptCore/tests/mozilla/Makefile b/Source/JavaScriptCore/tests/mozilla/Makefile new file mode 100644 index 00000000000..21cfc6f423f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/Makefile @@ -0,0 +1,3 @@ +testmenu: + exec perl mklistpage.pl > menubody.html + cat menuhead.html menubody.html menufoot.html > menu.html diff --git a/Source/JavaScriptCore/tests/mozilla/README-jsDriver.html b/Source/JavaScriptCore/tests/mozilla/README-jsDriver.html new file mode 100644 index 00000000000..57e4c244dac --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/README-jsDriver.html @@ -0,0 +1,344 @@ + + + + jsDriver.pl + + + +

jsDriver.pl

+ +
+
NAME
+
+ jsDriver.pl - execute JavaScript programs in various shells in + batch or single mode, reporting on failures encountered. +
+
+ +
SYNOPSIS
+
+ + + + + +
+ + jsDriver.pl + + + + [-hkt] [-b BUGURL] [-c CLASSPATH] [-f OUTFILE] + [-j JAVAPATH] [-l TESTLIST ...] [-L NEGLIST ...] [-p TESTPATH] + [-s SHELLPATH] [-u LXRURL] [--help] [--confail] [--trace] + [--classpath=CLASSPATH] [--file=OUTFILE] [--javapath=JAVAPATH] + [--list=TESTLIST] [--neglist=TESTLIST] [--testpath=TESTPATH] + [--shellpath=SHELLPATH] [--lxrurl=LXRURL] {-e ENGINETYPE | + --engine=ENGINETYPE} + +
+
+
+ +
DESCRIPTION
+
+ jsDriver.pl is normally used to run a series of tests against + one of the JavaScript shells. These tests are expected to be laid out + in a directory structure exactly three levels deep. The first level + is considered the root of the tests, subdirectories under the + root represent Test Suites and generally mark broad + categories such as ECMA Level 1 or Live Connect 3. Under the + Test Suites are the Test Categories, which divide the + Test Suite into smaller categories, such as Execution Contexts + or Lexical Rules. Testcases are located under the + Test Categories as normal JavaScript (*.js) files. +

+ If a file named shell.js exists in either the + Test Suite or the Test Category directory, it is + loaded into the shell before the testcase. If shell.js + exists in both directories, the version in the Test Suite + directory is loaded first, giving the version associated with + the Test Category the ability to override functions previously + declared. You can use this to + create functions and variables common to an entire suite or category. +

+ Testcases can report failures back to jsDriver.pl in one of + two ways. The most common is to write a line of text containing + the word FAILED! to STDOUT or STDERR. + When the engine encounters a matching line, the test is marked as + failed, and any line containing FAILED! is displayed in + the failure report. The second way a test case can report failure is + to return an unexpected exit code. By default, jsDriver.pl + expects all test cases to return exit code 0, although a test + can output a line containing EXPECT EXIT n where + n is the exit code the driver should expect to see. Testcases + can return a nonzero exit code by calling the shell function + quit(n) where n is the + code to exit with. The various JavaScript shells report + non-zero exit codes under the following conditions: + +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ReasonExit Code
+ Engine initialization failure. + + 1 +
+ Invalid argument on command line. + + 2 +
+ Runtime error (uncaught exception) encountered. + + 3 +
+ File argument specified on command line not found. + + 4 +
+ Reserved for future use. + + 5-9 +
+
+
+
+ +
OPTIONS
+
+
+
-b URL, --bugurl=URL
+
+ Bugzilla URL. When a testcase writes a line in the format + BUGNUMBER n to STDOUT or STDERR, + jsDriver.pl interprets n as a bugnumber + in the BugZilla bug + tracking system. In the event that a testcase which has specified + a bugnumber fails, a hyperlink to the BugZilla database + will be included in the output by prefixing the bugnumber with the + URL specified here. By default, URL is assumed to be + "http://bugzilla.mozilla.org/show_bug.cgi?id=". +
+
+ +
-c PATH, --classpath=PATH
+
+ Classpath to pass the the Java Virtual Machine. When running tests + against the Rhino engine, PATH will be passed in as the value + to an argument named "-classpath". If your particular JVM + does not support this option, it is recommended you specify your + class path via an environment setting. Refer to your JVM + documentation for more details about CLASSPATH. +
+
+
-e TYPE ..., --engine=TYPE ...
+
+ Required. Type of engine(s) to run the tests against. TYPE can be + one or more of the following values: +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TYPEEngine
lcoptLiveConnect, optimized
lcdebugLiveConnect, debug
rhinoRhino compiled mode
rhinoiRhino interpreted mode
rhinomsRhino compiled mode for the Microsoft VM (jview)
rhinomsiRhino interpreted mode for the Microsoft VM (jview)
smoptSpider-Monkey, optimized
smdebugSpider-Monkey, debug
xpcshellXPConnect shell
+
+
+
+
-f FILE, --file=FILE
+
+ Generate html output to the HTML file named by FILE. By default, + a filename will be generated using a combination of the engine type + and a date/time stamp, in the format: + results-<engine-type>-<date-stamp>.html +
+
+
-h, --help
+
+ Prints usage information. +
+
+
-j PATH, --javapath=PATH
+
+ Set the location of the Java Virtual Machine to use when running + tests against the Rhino engine. This can be used to test + against multiple JVMs on the same system. +
+
+
-k, --confail
+
+ Log failures to the console. This will show any failures, as they + occur, on STDERR in addition to creating the HTML results + file. This can be useful for times when it may be + counter-productive to load an HTML version of the results each time + a test is re-run. +
+
+
-l FILE ..., --list=FILE ...
+
+ Specify a list of tests to execute. FILE can be a plain text file + containing a list of testcases to execute, a subdirectory + in which to + grovel + for tests, or a single testcase to execute. Any number of FILE + specifiers may follow this option. The driver uses the fact that a + valid testcase should be a file ending in .js to make the distinction + between a file containing a list of tests and an actual testcase. +
+
+
-L FILE ..., --neglist=FILE ...
+
+ Specify a list of tests to skip. FILE has the same meaning as in + the -l option. This option is evaluated after + all -l and --list options, allowing a user + to subtract a single testcase, a directory of testcases, or a + collection of unrelated testcases from the execution list. +
+
+
-p PATH, --testpath=PATH
+
+ Directory holding the "Test Suite" subdirectories. By + default this is ./ +
+
+
-s PATH, --shellpath=PATH
+
+ Directory holding the JavaScript shell. This can be used to override + the automatic shell location jsDriver.pl performs based on + you OS and engine type. For Non Rhino engines, this + includes the name of the executable as well as the path. In + Rhino, this path will be appended to your + CLASSPATH. For the + SpiderMonkey shells, this value defaults to + ../src/<Platform-and-buildtype-specific-directory>/[js|jsshell], + for the + LiveConnect shells, + ../src/liveconnect/src/<Platform-and-buildtype-specific-directory>/lschell + and for the xpcshell the default is the value of your + MOZILLA_FIVE_HOME environment variable. There is no + default (as it is usually not needed) for the Rhino shell. +
+
+
-t, --trace
+
+ Trace execution of jsDriver.pl. This option is primarily + used for debugging of the script itself, but if you are interested in + seeing the actual command being run, or generally like gobs of + useless information, you may find it entertaining. +
+
+
-u URL, --lxrurl=URL
+
+ Failures listed in the HTML results will be hyperlinked to the + lxr source available online by prefixing the test path and + name with this URL. By default, URL is + http://lxr.mozilla.org/mozilla/source/js/tests/ +
+
+ +
+
SEE ALSO
+
+ jsDriver.pl, + mklistpage.pl, + http://www.mozilla.org/js/, + http://www.mozilla.org/js/tests/library.html +
+
+ +
REQUIREMENTS
+
+ jsDriver.pl requires the + Getopt::Mixed + perl package, available from cpan.org. +
+
+
EXAMPLES
+
+ perl jsDriver.pl -e smdebug -L lc*
+ Executes all tests EXCEPT the liveconnect tests against the + SpiderMonkey debug shell, writing the results + to the default result file. (NOTE: Unix shells take care of wildcard + expansion, turning lc* into lc2 lc3. Under + a DOS shell, you must explicitly list the directories.) +

+ perl jsDriver.pl -e rhino -L rhino-n.tests
+ Executes all tests EXCEPT those listed in the + rhino-n.tests file. +

+ perl -I/home/rginda/perl/lib/ jsDriver.pl -e lcopt -l lc2 + lc3 -f lcresults.html -k
+ Executes ONLY the tests under the lc2 and lc3 + directories against the LiveConnect shell. Results will be written to + the file lcresults.html AND the console. The + -I option tells perl to look for modules in the + /home/rginda/perl/lib directory (in addition to the + usual places), useful if you do not have root access to install new + modules on the system. +

+
+ Author: Robert Ginda
+ Currently maintained by Phil Schwartau
+ + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4-1.js new file mode 100644 index 00000000000..c5c3178739f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4-1.js @@ -0,0 +1,126 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4-1.js + ECMA Section: 15.4 Array Objects + + Description: Every Array object has a length property whose value + is always an integer with positive sign and less than + Math.pow(2,32). + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.4-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array Objects"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "var myarr = new Array(); myarr[Math.pow(2,32)-2]='hi'; myarr[Math.pow(2,32)-2]", + "hi", + eval("var myarr = new Array(); myarr[Math.pow(2,32)-2]='hi'; myarr[Math.pow(2,32)-2]") + ); + array[item++] = new TestCase( SECTION, + "var myarr = new Array(); myarr[Math.pow(2,32)-2]='hi'; myarr.length", + (Math.pow(2,32)-1), + eval("var myarr = new Array(); myarr[Math.pow(2,32)-2]='hi'; myarr.length") + ); + array[item++] = new TestCase( SECTION, + "var myarr = new Array(); myarr[Math.pow(2,32)-3]='hi'; myarr[Math.pow(2,32)-3]", + "hi", + eval("var myarr = new Array(); myarr[Math.pow(2,32)-3]='hi'; myarr[Math.pow(2,32)-3]") + ); + array[item++] = new TestCase( SECTION, + "var myarr = new Array(); myarr[Math.pow(2,32)-3]='hi'; myarr.length", + (Math.pow(2,32)-2), + eval("var myarr = new Array(); myarr[Math.pow(2,32)-3]='hi'; myarr.length") + ); + + array[item++] = new TestCase( SECTION, + "var myarr = new Array(); myarr[Math.pow(2,31)-2]='hi'; myarr[Math.pow(2,31)-2]", + "hi", + eval("var myarr = new Array(); myarr[Math.pow(2,31)-2]='hi'; myarr[Math.pow(2,31)-2]") + ); + array[item++] = new TestCase( SECTION, + "var myarr = new Array(); myarr[Math.pow(2,31)-2]='hi'; myarr.length", + (Math.pow(2,31)-1), + eval("var myarr = new Array(); myarr[Math.pow(2,31)-2]='hi'; myarr.length") + ); + + array[item++] = new TestCase( SECTION, + "var myarr = new Array(); myarr[Math.pow(2,31)-1]='hi'; myarr[Math.pow(2,31)-1]", + "hi", + eval("var myarr = new Array(); myarr[Math.pow(2,31)-1]='hi'; myarr[Math.pow(2,31)-1]") + ); + array[item++] = new TestCase( SECTION, + "var myarr = new Array(); myarr[Math.pow(2,31)-1]='hi'; myarr.length", + (Math.pow(2,31)), + eval("var myarr = new Array(); myarr[Math.pow(2,31)-1]='hi'; myarr.length") + ); + + + array[item++] = new TestCase( SECTION, + "var myarr = new Array(); myarr[Math.pow(2,31)]='hi'; myarr[Math.pow(2,31)]", + "hi", + eval("var myarr = new Array(); myarr[Math.pow(2,31)]='hi'; myarr[Math.pow(2,31)]") + ); + array[item++] = new TestCase( SECTION, + "var myarr = new Array(); myarr[Math.pow(2,31)]='hi'; myarr.length", + (Math.pow(2,31)+1), + eval("var myarr = new Array(); myarr[Math.pow(2,31)]='hi'; myarr.length") + ); + + array[item++] = new TestCase( SECTION, + "var myarr = new Array(); myarr[Math.pow(2,30)-2]='hi'; myarr[Math.pow(2,30)-2]", + "hi", + eval("var myarr = new Array(); myarr[Math.pow(2,30)-2]='hi'; myarr[Math.pow(2,30)-2]") + ); + array[item++] = new TestCase( SECTION, + "var myarr = new Array(); myarr[Math.pow(2,30)-2]='hi'; myarr.length", + (Math.pow(2,30)-1), + eval("var myarr = new Array(); myarr[Math.pow(2,30)-2]='hi'; myarr.length") + ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4-2.js new file mode 100644 index 00000000000..ca046e642d3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4-2.js @@ -0,0 +1,83 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4-2.js + ECMA Section: 15.4 Array Objects + + Description: Whenever a property is added whose name is an array + index, the length property is changed, if necessary, + to be one more than the numeric value of that array + index; and whenever the length property is changed, + every property whose name is an array index whose value + is not smaller than the new length is automatically + deleted. This constraint applies only to the Array + object itself, and is unaffected by length or array + index properties that may be inherited from its + prototype. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.4-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array Objects"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "var arr=new Array(); arr[Math.pow(2,16)] = 'hi'; arr.length", Math.pow(2,16)+1, eval("var arr=new Array(); arr[Math.pow(2,16)] = 'hi'; arr.length") ); + + array[item++] = new TestCase( SECTION, "var arr=new Array(); arr[Math.pow(2,30)-2] = 'hi'; arr.length", Math.pow(2,30)-1, eval("var arr=new Array(); arr[Math.pow(2,30)-2] = 'hi'; arr.length") ); + array[item++] = new TestCase( SECTION, "var arr=new Array(); arr[Math.pow(2,30)-1] = 'hi'; arr.length", Math.pow(2,30), eval("var arr=new Array(); arr[Math.pow(2,30)-1] = 'hi'; arr.length") ); + array[item++] = new TestCase( SECTION, "var arr=new Array(); arr[Math.pow(2,30)] = 'hi'; arr.length", Math.pow(2,30)+1, eval("var arr=new Array(); arr[Math.pow(2,30)] = 'hi'; arr.length") ); + + array[item++] = new TestCase( SECTION, "var arr=new Array(); arr[Math.pow(2,31)-2] = 'hi'; arr.length", Math.pow(2,31)-1, eval("var arr=new Array(); arr[Math.pow(2,31)-2] = 'hi'; arr.length") ); + array[item++] = new TestCase( SECTION, "var arr=new Array(); arr[Math.pow(2,31)-1] = 'hi'; arr.length", Math.pow(2,31), eval("var arr=new Array(); arr[Math.pow(2,31)-1] = 'hi'; arr.length") ); + array[item++] = new TestCase( SECTION, "var arr=new Array(); arr[Math.pow(2,31)] = 'hi'; arr.length", Math.pow(2,31)+1, eval("var arr=new Array(); arr[Math.pow(2,31)] = 'hi'; arr.length") ); + + array[item++] = new TestCase( SECTION, "var arr = new Array(0,1,2,3,4,5); arr.length = 2; String(arr)", "0,1", eval("var arr = new Array(0,1,2,3,4,5); arr.length = 2; String(arr)") ); + array[item++] = new TestCase( SECTION, "var arr = new Array(0,1); arr.length = 3; String(arr)", "0,1,", eval("var arr = new Array(0,1); arr.length = 3; String(arr)") ); +// array[item++] = new TestCase( SECTION, "var arr = new Array(0,1,2,3,4,5); delete arr[0]; arr.length", 5, eval("var arr = new Array(0,1,2,3,4,5); delete arr[0]; arr.length") ); +// array[item++] = new TestCase( SECTION, "var arr = new Array(0,1,2,3,4,5); delete arr[6]; arr.length", 5, eval("var arr = new Array(0,1,2,3,4,5); delete arr[6]; arr.length") ); + + return ( array ); +} +function test( array ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.1.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.1.1.js new file mode 100644 index 00000000000..315aa2c0d23 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.1.1.js @@ -0,0 +1,88 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.1.1.js + ECMA Section: 15.4.1 Array( item0, item1,... ) + + Description: When Array is called as a function rather than as a + constructor, it creates and initializes a new array + object. Thus, the function call Array(...) is + equivalent to the object creation new Array(...) with + the same arguments. + + An array is created and returned as if by the expression + new Array( item0, item1, ... ). + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + var SECTION = "15.4.1.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array Constructor Called as a Function"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function ToUint32( n ) { + n = Number( n ); + if( isNaN(n) || n == 0 || n == Number.POSITIVE_INFINITY || + n == Number.NEGATIVE_INFINITY ) { + return 0; + } + var sign = n < 0 ? -1 : 1; + + return ( sign * ( n * Math.floor( Math.abs(n) ) ) ) % Math.pow(2, 32); +} + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "typeof Array(1,2)", "object", typeof Array(1,2) ); + array[item++] = new TestCase( SECTION, "(Array(1,2)).toString", Array.prototype.toString, (Array(1,2)).toString ); + array[item++] = new TestCase( SECTION, + "var arr = Array(1,2,3); arr.toString = Object.prototype.toString; arr.toString()", + "[object Array]", + eval("var arr = Array(1,2,3); arr.toString = Object.prototype.toString; arr.toString()") ); + + + array[item++] = new TestCase( SECTION, "(Array(1,2)).length", 2, (Array(1,2)).length ); + array[item++] = new TestCase( SECTION, "var arr = (Array(1,2)); arr[0]", 1, eval("var arr = (Array(1,2)); arr[0]") ); + array[item++] = new TestCase( SECTION, "var arr = (Array(1,2)); arr[1]", 2, eval("var arr = (Array(1,2)); arr[1]") ); + array[item++] = new TestCase( SECTION, "var arr = (Array(1,2)); String(arr)", "1,2", eval("var arr = (Array(1,2)); String(arr)") ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.1.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.1.2.js new file mode 100644 index 00000000000..29352e1a059 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.1.2.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.1.2.js + ECMA Section: 15.4.1.2 Array(len) + + Description: When Array is called as a function rather than as a + constructor, it creates and initializes a new array + object. Thus, the function call Array(...) is + equivalent to the object creationi new Array(...) with + the same arguments. + + An array is created and returned as if by the + expression new Array(len). + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + var SECTION = "15.4.1.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array Constructor Called as a Function: Array(len)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "(Array()).length", 0, (Array()).length ); + array[item++] = new TestCase( SECTION, "(Array(0)).length", 0, (Array(0)).length ); + array[item++] = new TestCase( SECTION, "(Array(1)).length", 1, (Array(1)).length ); + array[item++] = new TestCase( SECTION, "(Array(10)).length", 10, (Array(10)).length ); + array[item++] = new TestCase( SECTION, "(Array('1')).length", 1, (Array('1')).length ); + array[item++] = new TestCase( SECTION, "(Array(1000)).length", 1000, (Array(1000)).length ); + array[item++] = new TestCase( SECTION, "(Array('1000')).length", 1, (Array('1000')).length ); + array[item++] = new TestCase( SECTION, "(Array(4294967295)).length", ToUint32(4294967295), (Array(4294967295)).length ); + array[item++] = new TestCase( SECTION, "(Array(Math.pow(2,31)-1)).length", ToUint32(Math.pow(2,31)-1), (Array(Math.pow(2,31)-1)).length ); + array[item++] = new TestCase( SECTION, "(Array(Math.pow(2,31))).length", ToUint32(Math.pow(2,31)), (Array(Math.pow(2,31))).length ); + array[item++] = new TestCase( SECTION, "(Array(Math.pow(2,31)+1)).length", ToUint32(Math.pow(2,31)+1), (Array(Math.pow(2,31)+1)).length ); + array[item++] = new TestCase( SECTION, "(Array('8589934592')).length", 1, (Array("8589934592")).length ); + array[item++] = new TestCase( SECTION, "(Array('4294967296')).length", 1, (Array("4294967296")).length ); + array[item++] = new TestCase( SECTION, "(Array(1073741823)).length", ToUint32(1073741823), (Array(1073741823)).length ); + array[item++] = new TestCase( SECTION, "(Array(1073741824)).length", ToUint32(1073741824), (Array(1073741824)).length ); + array[item++] = new TestCase( SECTION, "(Array('a string')).length", 1, (Array("a string")).length ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function ToUint32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + n = sign * Math.floor( Math.abs(n) ) + + n = n % Math.pow(2,32); + + if ( n < 0 ){ + n += Math.pow(2,32); + } + + return ( n ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.1.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.1.3.js new file mode 100644 index 00000000000..4c3393e8dae --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.1.3.js @@ -0,0 +1,86 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.1.3.js + ECMA Section: 15.4.1.3 Array() + + Description: When Array is called as a function rather than as a + constructor, it creates and initializes a new array + object. Thus, the function call Array(...) is + equivalent to the object creationi new Array(...) with + the same arguments. + + An array is created and returned as if by the + expression new Array(len). + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + var SECTION = "15.4.1.3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array Constructor Called as a Function: Array()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "typeof Array()", + "object", + typeof Array() ); + + array[item++] = new TestCase( SECTION, + "MYARR = new Array();MYARR.getClass = Object.prototype.toString;MYARR.getClass()", + "[object Array]", + eval("MYARR = Array();MYARR.getClass = Object.prototype.toString;MYARR.getClass()") ); + + array[item++] = new TestCase( SECTION, + "(Array()).length", + 0, ( + Array()).length ); + + array[item++] = new TestCase( SECTION, + "Array().toString()", + "", + Array().toString() ); + + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.1.js new file mode 100644 index 00000000000..564058432d9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.1.js @@ -0,0 +1,133 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.1.js + ECMA Section: 15.4.1 The Array Constructor Called as a Function + + Description: When Array is called as a function rather than as a + constructor, it creates and initializes a new array + object. Thus, the function call Array(...) is + equivalent to the object creationi new Array(...) with + the same arguments. + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + + var SECTION = "15.4.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Array Constructor Called as a Function"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "Array() +''", + "", + Array() +"" ); + + array[item++] = new TestCase( SECTION, + "typeof Array()", + "object", + typeof Array() ); + + array[item++] = new TestCase( SECTION, + "var arr = Array(); arr.getClass = Object.prototype.toString; arr.getClass()", + "[object Array]", + eval("var arr = Array(); arr.getClass = Object.prototype.toString; arr.getClass()") ); + + array[item++] = new TestCase( SECTION, + "var arr = Array(); arr.toString == Array.prototype.toString", + true, + eval("var arr = Array(); arr.toString == Array.prototype.toString") ); + + array[item++] = new TestCase( SECTION, + "Array().length", + 0, + Array().length ); + + + array[item++] = new TestCase( SECTION, + "Array(1,2,3) +''", + "1,2,3", + Array(1,2,3) +"" ); + + array[item++] = new TestCase( SECTION, + "typeof Array(1,2,3)", + "object", + typeof Array(1,2,3) ); + + array[item++] = new TestCase( SECTION, + "var arr = Array(1,2,3); arr.getClass = Object.prototype.toString; arr.getClass()", + "[object Array]", + eval("var arr = Array(1,2,3); arr.getClass = Object.prototype.toString; arr.getClass()") ); + + array[item++] = new TestCase( SECTION, + "var arr = Array(1,2,3); arr.toString == Array.prototype.toString", + true, + eval("var arr = Array(1,2,3); arr.toString == Array.prototype.toString") ); + + array[item++] = new TestCase( SECTION, + "Array(1,2,3).length", + 3, + Array(1,2,3).length ); + + array[item++] = new TestCase( SECTION, + "typeof Array(12345)", + "object", + typeof Array(12345) ); + + array[item++] = new TestCase( SECTION, + "var arr = Array(12345); arr.getClass = Object.prototype.toString; arr.getClass()", + "[object Array]", + eval("var arr = Array(12345); arr.getClass = Object.prototype.toString; arr.getClass()") ); + + array[item++] = new TestCase( SECTION, + "var arr = Array(1,2,3,4,5); arr.toString == Array.prototype.toString", + true, + eval("var arr = Array(1,2,3,4,5); arr.toString == Array.prototype.toString") ); + + array[item++] = new TestCase( SECTION, + "Array(12345).length", + 12345, + Array(12345).length ); + + return ( array ); +} +function test() { + for (tc=0 ; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.1-1.js new file mode 100644 index 00000000000..4c1c0c6145b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.1-1.js @@ -0,0 +1,92 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.2.1-1.js + ECMA Section: 15.4.2.1 new Array( item0, item1, ... ) + Description: This description only applies of the constructor is + given two or more arguments. + + The [[Prototype]] property of the newly constructed + object is set to the original Array prototype object, + the one that is the initial value of Array.prototype + (15.4.3.1). + + The [[Class]] property of the newly constructed object + is set to "Array". + + The length property of the newly constructed object is + set to the number of arguments. + + The 0 property of the newly constructed object is set + to item0... in general, for as many arguments as there + are, the k property of the newly constructed object is + set to argument k, where the first argument is + considered to be argument number 0. + + This file tests the typeof the newly constructed object. + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + + var SECTION = "15.4.2.1-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Array Constructor: new Array( item0, item1, ...)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "typeof new Array(1,2)", "object", typeof new Array(1,2) ); + array[item++] = new TestCase( SECTION, "(new Array(1,2)).toString", Array.prototype.toString, (new Array(1,2)).toString ); + array[item++] = new TestCase( SECTION, + "var arr = new Array(1,2,3); arr.getClass = Object.prototype.toString; arr.getClass()", + "[object Array]", + eval("var arr = new Array(1,2,3); arr.getClass = Object.prototype.toString; arr.getClass()") ); + + array[item++] = new TestCase( SECTION, "(new Array(1,2)).length", 2, (new Array(1,2)).length ); + array[item++] = new TestCase( SECTION, "var arr = (new Array(1,2)); arr[0]", 1, eval("var arr = (new Array(1,2)); arr[0]") ); + array[item++] = new TestCase( SECTION, "var arr = (new Array(1,2)); arr[1]", 2, eval("var arr = (new Array(1,2)); arr[1]") ); + array[item++] = new TestCase( SECTION, "var arr = (new Array(1,2)); String(arr)", "1,2", eval("var arr = (new Array(1,2)); String(arr)") ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.1-2.js new file mode 100644 index 00000000000..d5a65deda95 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.1-2.js @@ -0,0 +1,83 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.2.1-2.js + ECMA Section: 15.4.2.1 new Array( item0, item1, ... ) + Description: This description only applies of the constructor is + given two or more arguments. + + The [[Prototype]] property of the newly constructed + object is set to the original Array prototype object, + the one that is the initial value of Array.prototype + (15.4.3.1). + + The [[Class]] property of the newly constructed object + is set to "Array". + + The length property of the newly constructed object is + set to the number of arguments. + + The 0 property of the newly constructed object is set + to item0... in general, for as many arguments as there + are, the k property of the newly constructed object is + set to argument k, where the first argument is + considered to be argument number 0. + + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + var SECTION = "15.4.2.1-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Array Constructor: new Array( item0, item1, ...)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + + var TEST_STRING = "new Array("; + var ARGUMENTS = "" + var TEST_LENGTH = Math.pow(2,10); //Math.pow(2,32); + + for ( var index = 0; index < TEST_LENGTH; index++ ) { + ARGUMENTS += index; + ARGUMENTS += (index == (TEST_LENGTH-1) ) ? "" : ","; + } + + TEST_STRING += ARGUMENTS + ")"; + + TEST_ARRAY = eval( TEST_STRING ); + + for ( item = 0; item < TEST_LENGTH; item++ ) { + array[item] = new TestCase( SECTION, "["+item+"]", item, TEST_ARRAY[item] ); + } + + array[item++ ] = new TestCase( SECTION, "new Array( ["+TEST_LENGTH+" arguments] ) +''", ARGUMENTS, TEST_ARRAY +"" ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.1-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.1-3.js new file mode 100644 index 00000000000..b299183b684 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.1-3.js @@ -0,0 +1,112 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.2.1-3.js + ECMA Section: 15.4.2.1 new Array( item0, item1, ... ) + Description: This description only applies of the constructor is + given two or more arguments. + + The [[Prototype]] property of the newly constructed + object is set to the original Array prototype object, + the one that is the initial value of Array.prototype + (15.4.3.1). + + The [[Class]] property of the newly constructed object + is set to "Array". + + The length property of the newly constructed object is + set to the number of arguments. + + The 0 property of the newly constructed object is set + to item0... in general, for as many arguments as there + are, the k property of the newly constructed object is + set to argument k, where the first argument is + considered to be argument number 0. + + This test stresses the number of arguments presented to + the Array constructor. Should support up to Math.pow + (2,32) arguments, since that is the maximum length of an + ECMAScript array. + + ***Change TEST_LENGTH to Math.pow(2,32) when larger array + lengths are supported. + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + var SECTION = "15.4.2.1-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Array Constructor: new Array( item0, item1, ...)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + + var TEST_STRING = "new Array("; + var ARGUMENTS = "" + var TEST_LENGTH = Math.pow(2,10); //Math.pow(2,32); + + for ( var index = 0; index < TEST_LENGTH; index++ ) { + ARGUMENTS += index; + ARGUMENTS += (index == (TEST_LENGTH-1) ) ? "" : ","; + } + + TEST_STRING += ARGUMENTS + ")"; + + TEST_ARRAY = eval( TEST_STRING ); + + for ( item = 0; item < TEST_LENGTH; item++ ) { + array[item] = new TestCase( SECTION, "TEST_ARRAY["+item+"]", item, TEST_ARRAY[item] ); + } + + array[item++] = new TestCase( SECTION, "new Array( ["+TEST_LENGTH+" arguments] ) +''", ARGUMENTS, TEST_ARRAY +"" ); + array[item++] = new TestCase( SECTION, "TEST_ARRAY.toString", Array.prototype.toString, TEST_ARRAY.toString ); + array[item++] = new TestCase( SECTION, "TEST_ARRAY.join", Array.prototype.join, TEST_ARRAY.join ); + array[item++] = new TestCase( SECTION, "TEST_ARRAY.sort", Array.prototype.sort, TEST_ARRAY.sort ); + array[item++] = new TestCase( SECTION, "TEST_ARRAY.reverse", Array.prototype.reverse, TEST_ARRAY.reverse ); + array[item++] = new TestCase( SECTION, "TEST_ARRAY.length", TEST_LENGTH, TEST_ARRAY.length ); + array[item++] = new TestCase( SECTION, + "TEST_ARRAY.toString = Object.prototype.toString; TEST_ARRAY.toString()", + "[object Array]", + eval("TEST_ARRAY.toString = Object.prototype.toString; TEST_ARRAY.toString()") ); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.2-1.js new file mode 100644 index 00000000000..a2e41ef4960 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.2-1.js @@ -0,0 +1,124 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.2.2-1.js + ECMA Section: 15.4.2.2 new Array(len) + + Description: This description only applies of the constructor is + given two or more arguments. + + The [[Prototype]] property of the newly constructed + object is set to the original Array prototype object, + the one that is the initial value of Array.prototype(0) + (15.4.3.1). + + The [[Class]] property of the newly constructed object + is set to "Array". + + If the argument len is a number, then the length + property of the newly constructed object is set to + ToUint32(len). + + If the argument len is not a number, then the length + property of the newly constructed object is set to 1 + and the 0 property of the newly constructed object is + set to len. + + This file tests cases where len is a number. + + The cases in this test need to be updated since the + ToUint32 description has changed. + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + var SECTION = "15.4.2.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Array Constructor: new Array( len )"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "new Array(0)", "", (new Array(0)).toString() ); + array[item++] = new TestCase( SECTION, "typeof new Array(0)", "object", (typeof new Array(0)) ); + array[item++] = new TestCase( SECTION, "(new Array(0)).length", 0, (new Array(0)).length ); + array[item++] = new TestCase( SECTION, "(new Array(0)).toString", Array.prototype.toString, (new Array(0)).toString ); + + array[item++] = new TestCase( SECTION, "new Array(1)", "", (new Array(1)).toString() ); + array[item++] = new TestCase( SECTION, "new Array(1).length", 1, (new Array(1)).length ); + array[item++] = new TestCase( SECTION, "(new Array(1)).toString", Array.prototype.toString, (new Array(1)).toString ); + + array[item++] = new TestCase( SECTION, "(new Array(-0)).length", 0, (new Array(-0)).length ); + array[item++] = new TestCase( SECTION, "(new Array(0)).length", 0, (new Array(0)).length ); + + array[item++] = new TestCase( SECTION, "(new Array(10)).length", 10, (new Array(10)).length ); + array[item++] = new TestCase( SECTION, "(new Array('1')).length", 1, (new Array('1')).length ); + array[item++] = new TestCase( SECTION, "(new Array(1000)).length", 1000, (new Array(1000)).length ); + array[item++] = new TestCase( SECTION, "(new Array('1000')).length", 1, (new Array('1000')).length ); + + array[item++] = new TestCase( SECTION, "(new Array(4294967295)).length", ToUint32(4294967295), (new Array(4294967295)).length ); + + array[item++] = new TestCase( SECTION, "(new Array('8589934592')).length", 1, (new Array("8589934592")).length ); + array[item++] = new TestCase( SECTION, "(new Array('4294967296')).length", 1, (new Array("4294967296")).length ); + array[item++] = new TestCase( SECTION, "(new Array(1073741824)).length", ToUint32(1073741824), (new Array(1073741824)).length ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) + ? "" + : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function ToUint32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + n = sign * Math.floor( Math.abs(n) ) + + n = n % Math.pow(2,32); + + if ( n < 0 ){ + n += Math.pow(2,32); + } + + return ( n ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.2-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.2-2.js new file mode 100644 index 00000000000..c360702a952 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.2-2.js @@ -0,0 +1,89 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.2.2-2.js + ECMA Section: 15.4.2.2 new Array(len) + + Description: This description only applies of the constructor is + given two or more arguments. + + The [[Prototype]] property of the newly constructed + object is set to the original Array prototype object, + the one that is the initial value of Array.prototype(0) + (15.4.3.1). + + The [[Class]] property of the newly constructed object + is set to "Array". + + If the argument len is a number, then the length + property of the newly constructed object is set to + ToUint32(len). + + If the argument len is not a number, then the length + property of the newly constructed object is set to 1 + and the 0 property of the newly constructed object is + set to len. + + This file tests length of the newly constructed array + when len is not a number. + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + var SECTION = "15.4.2.2-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Array Constructor: new Array( len )"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "(new Array(new Number(1073741823))).length", 1, (new Array(new Number(1073741823))).length ); + array[item++] = new TestCase( SECTION, "(new Array(new Number(0))).length", 1, (new Array(new Number(0))).length ); + array[item++] = new TestCase( SECTION, "(new Array(new Number(1000))).length", 1, (new Array(new Number(1000))).length ); + array[item++] = new TestCase( SECTION, "(new Array('mozilla, larryzilla, curlyzilla')).length", 1, (new Array('mozilla, larryzilla, curlyzilla')).length ); + array[item++] = new TestCase( SECTION, "(new Array(true)).length", 1, (new Array(true)).length ); + array[item++] = new TestCase( SECTION, "(new Array(false)).length", 1, (new Array(false)).length); + array[item++] = new TestCase( SECTION, "(new Array(new Boolean(true)).length", 1, (new Array(new Boolean(true))).length ); + array[item++] = new TestCase( SECTION, "(new Array(new Boolean(false)).length", 1, (new Array(new Boolean(false))).length ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) + ? "" + : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.3.js new file mode 100644 index 00000000000..2ddd31b1dd5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.2.3.js @@ -0,0 +1,74 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.2.3.js + ECMA Section: 15.4.2.3 new Array() + Description: The [[Prototype]] property of the newly constructed + object is set to the origianl Array prototype object, + the one that is the initial value of Array.prototype. + The [[Class]] property of the new object is set to + "Array". The length of the object is set to 0. + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + + var SECTION = "15.4.2.3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Array Constructor: new Array()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "new Array() +''", "", (new Array()) +"" ); + array[item++] = new TestCase( SECTION, "typeof new Array()", "object", (typeof new Array()) ); + array[item++] = new TestCase( SECTION, + "var arr = new Array(); arr.getClass = Object.prototype.toString; arr.getClass()", + "[object Array]", + eval("var arr = new Array(); arr.getClass = Object.prototype.toString; arr.getClass()") ); + + array[item++] = new TestCase( SECTION, "(new Array()).length", 0, (new Array()).length ); + array[item++] = new TestCase( SECTION, "(new Array()).toString == Array.prototype.toString", true, (new Array()).toString == Array.prototype.toString ); + array[item++] = new TestCase( SECTION, "(new Array()).join == Array.prototype.join", true, (new Array()).join == Array.prototype.join ); + array[item++] = new TestCase( SECTION, "(new Array()).reverse == Array.prototype.reverse", true, (new Array()).reverse == Array.prototype.reverse ); + array[item++] = new TestCase( SECTION, "(new Array()).sort == Array.prototype.sort", true, (new Array()).sort == Array.prototype.sort ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.3.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.3.1-2.js new file mode 100644 index 00000000000..994ce5e545e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.3.1-2.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.3.1-1.js + ECMA Section: 15.4.3.1 Array.prototype + Description: The initial value of Array.prototype is the built-in + Array prototype object (15.4.4). + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + + var SECTION = "15.4.3.1-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array.prototype"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + var ARRAY_PROTO = Array.prototype; + + array[item++] = new TestCase( SECTION, "var props = ''; for ( p in Array ) { props += p } props", "", eval("var props = ''; for ( p in Array ) { props += p } props") ); + + array[item++] = new TestCase( SECTION, "Array.prototype = null; Array.prototype", ARRAY_PROTO, eval("Array.prototype = null; Array.prototype") ); + + array[item++] = new TestCase( SECTION, "delete Array.prototype", false, delete Array.prototype ); + array[item++] = new TestCase( SECTION, "delete Array.prototype; Array.prototype", ARRAY_PROTO, eval("delete Array.prototype; Array.prototype") ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.3.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.3.2.js new file mode 100644 index 00000000000..43c2b4cbbd5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.3.2.js @@ -0,0 +1,57 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.3.2.js + ECMA Section: 15.4.3.2 Array.length + Description: The length property is 1. + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + + var SECTION = "15.4.3.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array.length"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "Array.length", 1, Array.length ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.3.js new file mode 100644 index 00000000000..b44c6cb6a00 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.3.js @@ -0,0 +1,63 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.3.js + ECMA Section: 15.4.3 Properties of the Array Constructor + Description: The value of the internal [[Prototype]] property of the + Array constructor is the Function prototype object. + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + + var SECTION = "15.4.3"; + var VERSION = "ECMA_2"; + startTest(); + var TITLE = "Properties of the Array Constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Array.__proto__", Function.prototype, Array.__proto__ ); + + return ( array ); +} +function test() { + for (tc=0 ; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + + stopTest(); + + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.1.js new file mode 100644 index 00000000000..4b461360dfb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.1.js @@ -0,0 +1,57 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.4.1.js + ECMA Section: 15.4.4.1 Array.prototype.constructor + Description: The initial value of Array.prototype.constructor + is the built-in Array constructor. + Author: christine@netscape.com + Date: 7 october 1997 +*/ + + var SECTION = "15.4.4.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array.prototype.constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "Array.prototype.constructor == Array", true, Array.prototype.constructor == Array); + return ( array ); +} +function test() { + for (tc=0 ; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.2.js new file mode 100644 index 00000000000..9565798cb96 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.2.js @@ -0,0 +1,83 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.4.2.js + ECMA Section: 15.4.4.2 Array.prototype.toString() + Description: The elements of this object are converted to strings + and these strings are then concatenated, separated by + comma characters. The result is the same as if the + built-in join method were invoiked for this object + with no argument. + Author: christine@netscape.com + Date: 7 october 1997 +*/ + + var SECTION = "15.4.4.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array.prototype.toString"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Array.prototype.toString.length", 0, Array.prototype.toString.length ); + + array[item++] = new TestCase( SECTION, "(new Array()).toString()", "", (new Array()).toString() ); + array[item++] = new TestCase( SECTION, "(new Array(2)).toString()", ",", (new Array(2)).toString() ); + array[item++] = new TestCase( SECTION, "(new Array(0,1)).toString()", "0,1", (new Array(0,1)).toString() ); + array[item++] = new TestCase( SECTION, "(new Array( Number.NaN, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY)).toString()", "NaN,Infinity,-Infinity", (new Array( Number.NaN, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY)).toString() ); + + array[item++] = new TestCase( SECTION, "(new Array( Boolean(1), Boolean(0))).toString()", "true,false", (new Array(Boolean(1),Boolean(0))).toString() ); + array[item++] = new TestCase( SECTION, "(new Array(void 0,null)).toString()", ",", (new Array(void 0,null)).toString() ); + + var EXPECT_STRING = ""; + var MYARR = new Array(); + + for ( var i = -50; i < 50; i+= 0.25 ) { + MYARR[MYARR.length] = i; + EXPECT_STRING += i +","; + } + + EXPECT_STRING = EXPECT_STRING.substring( 0, EXPECT_STRING.length -1 ); + + array[item++] = new TestCase( SECTION, "MYARR.toString()", EXPECT_STRING, MYARR.toString() ); + + + return ( array ); +} +function test() { + for ( tc=0 ; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.3-1.js new file mode 100644 index 00000000000..63ec5b0cd6b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.3-1.js @@ -0,0 +1,159 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.4.3-1.js + ECMA Section: 15.4.4.3-1 Array.prototype.join() + Description: The elements of this object are converted to strings and + these strings are then concatenated, separated by comma + characters. The result is the same as if the built-in join + method were invoiked for this object with no argument. + Author: christine@netscape.com, pschwartau@netscape.com + Date: 07 October 1997 + Modified: 14 July 2002 + Reason: See http://bugzilla.mozilla.org/show_bug.cgi?id=155285 + ECMA-262 Ed.3 Section 15.4.4.5 Array.prototype.join() + Step 3: If |separator| is |undefined|, let |separator| + be the single-character string "," +* +*/ + + var SECTION = "15.4.4.3-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Array.prototype.join()"); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var ARR_PROTOTYPE = Array.prototype; + + array[item++] = new TestCase( SECTION, "Array.prototype.join.length", 1, Array.prototype.join.length ); + array[item++] = new TestCase( SECTION, "delete Array.prototype.join.length", false, delete Array.prototype.join.length ); + array[item++] = new TestCase( SECTION, "delete Array.prototype.join.length; Array.prototype.join.length", 1, eval("delete Array.prototype.join.length; Array.prototype.join.length") ); + + // case where array length is 0 + + array[item++] = new TestCase( SECTION, + "var TEST_ARRAY = new Array(); TEST_ARRAY.join()", + "", + eval("var TEST_ARRAY = new Array(); TEST_ARRAY.join()") ); + + // array length is 0, but spearator is specified + + array[item++] = new TestCase( SECTION, + "var TEST_ARRAY = new Array(); TEST_ARRAY.join(' ')", + "", + eval("var TEST_ARRAY = new Array(); TEST_ARRAY.join(' ')") ); + + // length is greater than 0, separator is supplied + array[item++] = new TestCase( SECTION, + "var TEST_ARRAY = new Array(null, void 0, true, false, 123, new Object(), new Boolean(true) ); TEST_ARRAY.join('&')", + "&&true&false&123&[object Object]&true", + eval("var TEST_ARRAY = new Array(null, void 0, true, false, 123, new Object(), new Boolean(true) ); TEST_ARRAY.join('&')") ); + + // length is greater than 0, separator is empty string + array[item++] = new TestCase( SECTION, + "var TEST_ARRAY = new Array(null, void 0, true, false, 123, new Object(), new Boolean(true) ); TEST_ARRAY.join('')", + "truefalse123[object Object]true", + eval("var TEST_ARRAY = new Array(null, void 0, true, false, 123, new Object(), new Boolean(true) ); TEST_ARRAY.join('')") ); + // length is greater than 0, separator is undefined + array[item++] = new TestCase( SECTION, + "var TEST_ARRAY = new Array(null, void 0, true, false, 123, new Object(), new Boolean(true) ); TEST_ARRAY.join(void 0)", + ",,true,false,123,[object Object],true", + eval("var TEST_ARRAY = new Array(null, void 0, true, false, 123, new Object(), new Boolean(true) ); TEST_ARRAY.join(void 0)") ); + + // length is greater than 0, separator is not supplied + array[item++] = new TestCase( SECTION, + "var TEST_ARRAY = new Array(null, void 0, true, false, 123, new Object(), new Boolean(true) ); TEST_ARRAY.join()", + ",,true,false,123,[object Object],true", + eval("var TEST_ARRAY = new Array(null, void 0, true, false, 123, new Object(), new Boolean(true) ); TEST_ARRAY.join()") ); + + // separator is a control character + array[item++] = new TestCase( SECTION, + "var TEST_ARRAY = new Array(null, void 0, true, false, 123, new Object(), new Boolean(true) ); TEST_ARRAY.join('\v')", + unescape("%u000B%u000Btrue%u000Bfalse%u000B123%u000B[object Object]%u000Btrue"), + eval("var TEST_ARRAY = new Array(null, void 0, true, false, 123, new Object(), new Boolean(true) ); TEST_ARRAY.join('\v')") ); + + // length of array is 1 + array[item++] = new TestCase( SECTION, + "var TEST_ARRAY = new Array(true) ); TEST_ARRAY.join('\v')", + "true", + eval("var TEST_ARRAY = new Array(true); TEST_ARRAY.join('\v')") ); + + + SEPARATOR = "\t" + TEST_LENGTH = 100; + TEST_STRING = ""; + ARGUMENTS = ""; + TEST_RESULT = ""; + + for ( var index = 0; index < TEST_LENGTH; index++ ) { + ARGUMENTS += index; + ARGUMENTS += ( index == TEST_LENGTH -1 ) ? "" : ","; + + TEST_RESULT += index; + TEST_RESULT += ( index == TEST_LENGTH -1 ) ? "" : SEPARATOR; + } + + TEST_ARRAY = eval( "new Array( "+ARGUMENTS +")" ); + + array[item++] = new TestCase( SECTION, "TEST_ARRAY.join("+SEPARATOR+")", TEST_RESULT, TEST_ARRAY.join( SEPARATOR ) ); + + array[item++] = new TestCase( SECTION, "(new Array( Boolean(true), Boolean(false), null, void 0, Number(1e+21), Number(1e-7))).join()", + "true,false,,,1e+21,1e-7", + (new Array( Boolean(true), Boolean(false), null, void 0, Number(1e+21), Number(1e-7))).join() ); + + // this is not an Array object + array[item++] = new TestCase( SECTION, + "var OB = new Object_1('true,false,111,0.5,1.23e6,NaN,void 0,null'); OB.join(':')", + "true:false:111:0.5:1230000:NaN::", + eval("var OB = new Object_1('true,false,111,0.5,1.23e6,NaN,void 0,null'); OB.join(':')") ); + + + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function Object_1( value ) { + this.array = value.split(","); + this.length = this.array.length; + for ( var i = 0; i < this.length; i++ ) { + this[i] = eval(this.array[i]); + } + this.join = Array.prototype.join; + this.getClass = Object.prototype.toString; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.4-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.4-1.js new file mode 100644 index 00000000000..c8e74226b7b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.4-1.js @@ -0,0 +1,272 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.4.3-1.js + ECMA Section: 15.4.4.3-1 Array.prototype.reverse() + Description: + + The elements of the array are rearranged so as to reverse their order. + This object is returned as the result of the call. + + 1. Call the [[Get]] method of this object with argument "length". + 2. Call ToUint32(Result(1)). + 3. Compute floor(Result(2)/2). + 4. Let k be 0. + 5. If k equals Result(3), return this object. + 6. Compute Result(2)k1. + 7. Call ToString(k). + 8. ToString(Result(6)). + 9. Call the [[Get]] method of this object with argument Result(7). + 10. Call the [[Get]] method of this object with argument Result(8). + 11. If this object has a property named by Result(8), go to step 12; but + if this object has no property named by Result(8), then go to either + step 12 or step 14, depending on the implementation. + 12. Call the [[Put]] method of this object with arguments Result(7) and + Result(10). + 13. Go to step 15. + 14. Call the [[Delete]] method on this object, providing Result(7) as the + name of the property to delete. + 15. If this object has a property named by Result(7), go to step 16; but if + this object has no property named by Result(7), then go to either step 16 + or step 18, depending on the implementation. + 16. Call the [[Put]] method of this object with arguments Result(8) and + Result(9). + 17. Go to step 19. + 18. Call the [[Delete]] method on this object, providing Result(8) as the + name of the property to delete. + 19. Increase k by 1. + 20. Go to step 5. + +Note that the reverse function is intentionally generic; it does not require +that its this value be an Array object. Therefore it can be transferred to other +kinds of objects for use as a method. Whether the reverse function can be applied +successfully to a host object is implementation dependent. + + Note: Array.prototype.reverse allows some flexibility in implementation + regarding array indices that have not been populated. This test covers the + cases in which unpopulated indices are not deleted, since the JavaScript + implementation does not delete uninitialzed indices. + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + var SECTION = "15.4.4.4-1"; + var VERSION = "ECMA_1"; + startTest(); + var BUGNUMBER="123724"; + + writeHeaderToLog( SECTION + " Array.prototype.reverse()"); + + var testcases = new Array(); + getTestCases(); + test(); + +function getTestCases() { + var ARR_PROTOTYPE = Array.prototype; + + testcases[testcases.length] = new TestCase( SECTION, "Array.prototype.reverse.length", 0, Array.prototype.reverse.length ); + testcases[testcases.length] = new TestCase( SECTION, "delete Array.prototype.reverse.length", false, delete Array.prototype.reverse.length ); + testcases[testcases.length] = new TestCase( SECTION, "delete Array.prototype.reverse.length; Array.prototype.reverse.length", 0, eval("delete Array.prototype.reverse.length; Array.prototype.reverse.length") ); + + // length of array is 0 + testcases[testcases.length] = new TestCase( SECTION, + "var A = new Array(); A.reverse(); A.length", + 0, + eval("var A = new Array(); A.reverse(); A.length") ); + + // length of array is 1 + var A = new Array(true); + var R = Reverse(A); + + testcases[testcases.length] = new TestCase( SECTION, + "var A = new Array(true); A.reverse(); A.length", + R.length, + eval("var A = new Array(true); A.reverse(); A.length") ); + CheckItems( R, A ); + + // length of array is 2 + var S = "var A = new Array( true,false )"; + eval(S); + var R = Reverse(A); + + testcases[testcases.length] = new TestCase( + SECTION, + S +"; A.reverse(); A.length", + R.length, + eval( S + "; A.reverse(); A.length") ); + + CheckItems( R, A ); + + // length of array is 3 + var S = "var A = new Array( true,false,null )"; + eval(S); + var R = Reverse(A); + + testcases[testcases.length] = new TestCase( SECTION, + S +"; A.reverse(); A.length", + R.length, + eval( S + "; A.reverse(); A.length") ); + CheckItems( R, A ); + + // length of array is 4 + var S = "var A = new Array( true,false,null,void 0 )"; + eval(S); + var R = Reverse(A); + + testcases[testcases.length] = new TestCase( SECTION, + S +"; A.reverse(); A.length", + R.length, + eval( S + "; A.reverse(); A.length") ); + CheckItems( R, A ); + + + // some array indexes have not been set + var S = "var A = new Array(); A[8] = 'hi', A[3] = 'yo'"; + eval(S); + var R = Reverse(A); + + testcases[testcases.length] = new TestCase( SECTION, + S +"; A.reverse(); A.length", + R.length, + eval( S + "; A.reverse(); A.length") ); + CheckItems( R, A ); + + + var OBJECT_OBJECT = new Object(); + var FUNCTION_OBJECT = new Function( 'return this' ); + var BOOLEAN_OBJECT = new Boolean; + var DATE_OBJECT = new Date(0); + var STRING_OBJECT = new String('howdy'); + var NUMBER_OBJECT = new Number(Math.PI); + var ARRAY_OBJECT= new Array(1000); + + var args = "null, void 0, Math.pow(2,32), 1.234e-32, OBJECT_OBJECT, BOOLEAN_OBJECT, FUNCTION_OBJECT, DATE_OBJECT, STRING_OBJECT,"+ + "ARRAY_OBJECT, NUMBER_OBJECT, Math, true, false, 123, '90210'"; + + var S = "var A = new Array("+args+")"; + eval(S); + var R = Reverse(A); + + testcases[testcases.length] = new TestCase( SECTION, + S +"; A.reverse(); A.length", + R.length, + eval( S + "; A.reverse(); A.length") ); + CheckItems( R, A ); + + var limit = 1000; + var args = ""; + for (var i = 0; i < limit; i++ ) { + args += i +""; + if ( i + 1 < limit ) { + args += ","; + } + } + + var S = "var A = new Array("+args+")"; + eval(S); + var R = Reverse(A); + + testcases[testcases.length] = new TestCase( SECTION, + S +"; A.reverse(); A.length", + R.length, + eval( S + "; A.reverse(); A.length") ); + CheckItems( R, A ); + + var S = "var MYOBJECT = new Object_1( \"void 0, 1, null, 2, \'\'\" )"; + eval(S); + var R = Reverse( A ); + + testcases[testcases.length] = new TestCase( SECTION, + S +"; A.reverse(); A.length", + R.length, + eval( S + "; A.reverse(); A.length") ); + CheckItems( R, A ); + + return ( testcases ); +} +function CheckItems( R, A ) { + for ( var i = 0; i < R.length; i++ ) { + testcases[testcases.length] = new TestCase( + SECTION, + "A["+i+ "]", + R[i], + A[i] ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function Object_1( value ) { + this.array = value.split(","); + this.length = this.array.length; + for ( var i = 0; i < this.length; i++ ) { + this[i] = eval(this.array[i]); + } + this.join = Array.prototype.reverse; + this.getClass = Object.prototype.toString; +} +function Reverse( array ) { + var r2 = array.length; + var k = 0; + var r3 = Math.floor( r2/2 ); + if ( r3 == k ) { + return array; + } + + for ( k = 0; k < r3; k++ ) { + var r6 = r2 - k - 1; +// var r7 = String( k ); + var r7 = k; + var r8 = String( r6 ); + + var r9 = array[r7]; + var r10 = array[r8]; + + array[r7] = r10; + array[r8] = r9; + } + + return array; +} +function Iterate( array ) { + for ( var i = 0; i < array.length; i++ ) { +// print( i+": "+ array[String(i)] ); + } +} + +function Object_1( value ) { + this.array = value.split(","); + this.length = this.array.length; + for ( var i = 0; i < this.length; i++ ) { + this[i] = this.array[i]; + } + this.reverse = Array.prototype.reverse; + this.getClass = Object.prototype.toString; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.4-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.4-2.js new file mode 100644 index 00000000000..1d0d8508128 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.4-2.js @@ -0,0 +1,163 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.4.3-1.js + ECMA Section: 15.4.4.3-1 Array.prototype.reverse() + Description: + + The elements of the array are rearranged so as to reverse their order. + This object is returned as the result of the call. + + 1. Call the [[Get]] method of this object with argument "length". + 2. Call ToUint32(Result(1)). + 3. Compute floor(Result(2)/2). + 4. Let k be 0. + 5. If k equals Result(3), return this object. + 6. Compute Result(2)k1. + 7. Call ToString(k). + 8. ToString(Result(6)). + 9. Call the [[Get]] method of this object with argument Result(7). + 10. Call the [[Get]] method of this object with argument Result(8). + 11. If this object has a property named by Result(8), go to step 12; but + if this object has no property named by Result(8), then go to either + step 12 or step 14, depending on the implementation. + 12. Call the [[Put]] method of this object with arguments Result(7) and + Result(10). + 13. Go to step 15. + 14. Call the [[Delete]] method on this object, providing Result(7) as the + name of the property to delete. + 15. If this object has a property named by Result(7), go to step 16; but if + this object has no property named by Result(7), then go to either step 16 + or step 18, depending on the implementation. + 16. Call the [[Put]] method of this object with arguments Result(8) and + Result(9). + 17. Go to step 19. + 18. Call the [[Delete]] method on this object, providing Result(8) as the + name of the property to delete. + 19. Increase k by 1. + 20. Go to step 5. + +Note that the reverse function is intentionally generic; it does not require +that its this value be an Array object. Therefore it can be transferred to other +kinds of objects for use as a method. Whether the reverse function can be applied +successfully to a host object is implementation dependent. + + Note: Array.prototype.reverse allows some flexibility in implementation + regarding array indices that have not been populated. This test covers the + cases in which unpopulated indices are not deleted, since the JavaScript + implementation does not delete uninitialzed indices. + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + + var SECTION = "15.4.4.4-1"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = new Array(); + + writeHeaderToLog( SECTION + " Array.prototype.reverse()"); + + getTestCases(); + test(); + +function getTestCases() { + var ARR_PROTOTYPE = Array.prototype; + + testcases[testcases.length] = new TestCase( SECTION, "Array.prototype.reverse.length", 0, Array.prototype.reverse.length ); + testcases[testcases.length] = new TestCase( SECTION, "delete Array.prototype.reverse.length", false, delete Array.prototype.reverse.length ); + testcases[testcases.length] = new TestCase( SECTION, "delete Array.prototype.reverse.length; Array.prototype.reverse.length", 0, eval("delete Array.prototype.reverse.length; Array.prototype.reverse.length") ); + + // length of array is 0 + testcases[testcases.length] = new TestCase( SECTION, + "var A = new Array(); A.reverse(); A.length", + 0, + eval("var A = new Array(); A.reverse(); A.length") ); + return ( testcases ); +} +function CheckItems( R, A ) { + for ( var i = 0; i < R.length; i++ ) { + testcases[testcases.length] = new TestCase( + SECTION, + "A["+i+ "]", + R[i], + A[i] ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function Object_1( value ) { + this.array = value.split(","); + this.length = this.array.length; + for ( var i = 0; i < this.length; i++ ) { + this[i] = eval(this.array[i]); + } + this.join = Array.prototype.reverse; + this.getClass = Object.prototype.toString; +} +function Reverse( array ) { + var r2 = array.length; + var k = 0; + var r3 = Math.floor( r2/2 ); + if ( r3 == k ) { + return array; + } + + for ( k = 0; k < r3; k++ ) { + var r6 = r2 - k - 1; +// var r7 = String( k ); + var r7 = k; + var r8 = String( r6 ); + + var r9 = array[r7]; + var r10 = array[r8]; + + array[r7] = r10; + array[r8] = r9; + } + + return array; +} +function Iterate( array ) { + for ( var i = 0; i < array.length; i++ ) { +// print( i+": "+ array[String(i)] ); + } +} + +function Object_1( value ) { + this.array = value.split(","); + this.length = this.array.length; + for ( var i = 0; i < this.length; i++ ) { + this[i] = this.array[i]; + } + this.reverse = Array.prototype.reverse; + this.getClass = Object.prototype.toString; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.5-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.5-1.js new file mode 100644 index 00000000000..0a759c30dc6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.5-1.js @@ -0,0 +1,223 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.4.5.js + ECMA Section: Array.prototype.sort(comparefn) + Description: + + This test file tests cases in which the compare function is not supplied. + + The elements of this array are sorted. The sort is not necessarily stable. + If comparefn is provided, it should be a function that accepts two arguments + x and y and returns a negative value if x < y, zero if x = y, or a positive + value if x > y. + + 1. Call the [[Get]] method of this object with argument "length". + 2. Call ToUint32(Result(1)). + 1. Perform an implementation-dependent sequence of calls to the + [[Get]] , [[Put]], and [[Delete]] methods of this object and + toSortCompare (described below), where the first argument for each call + to [[Get]], [[Put]] , or [[Delete]] is a nonnegative integer less + than Result(2) and where the arguments for calls to SortCompare are + results of previous calls to the [[Get]] method. After this sequence + is complete, this object must have the following two properties. + (1) There must be some mathematical permutation of the nonnegative + integers less than Result(2), such that for every nonnegative integer + j less than Result(2), if property old[j] existed, then new[(j)] is + exactly the same value as old[j],. but if property old[j] did not exist, + then new[(j)] either does not exist or exists with value undefined. + (2) If comparefn is not supplied or is a consistent comparison + function for the elements of this array, then for all nonnegative + integers j and k, each less than Result(2), if old[j] compares less + than old[k] (see SortCompare below), then (j) < (k). Here we use the + notation old[j] to refer to the hypothetical result of calling the [ + [Get]] method of this object with argument j before this step is + executed, and the notation new[j] to refer to the hypothetical result + of calling the [[Get]] method of this object with argument j after this + step has been completely executed. A function is a consistent + comparison function for a set of values if (a) for any two of those + values (possibly the same value) considered as an ordered pair, it + always returns the same value when given that pair of values as its + two arguments, and the result of applying ToNumber to this value is + not NaN; (b) when considered as a relation, where the pair (x, y) is + considered to be in the relation if and only if applying the function + to x and y and then applying ToNumber to the result produces a + negative value, this relation is a partial order; and (c) when + considered as a different relation, where the pair (x, y) is considered + to be in the relation if and only if applying the function to x and y + and then applying ToNumber to the result produces a zero value (of either + sign), this relation is an equivalence relation. In this context, the + phrase "x compares less than y" means applying Result(2) to x and y and + then applying ToNumber to the result produces a negative value. + 3.Return this object. + + When the SortCompare operator is called with two arguments x and y, the following steps are taken: + 1.If x and y are both undefined, return +0. + 2.If x is undefined, return 1. + 3.If y is undefined, return 1. + 4.If the argument comparefn was not provided in the call to sort, go to step 7. + 5.Call comparefn with arguments x and y. + 6.Return Result(5). + 7.Call ToString(x). + 8.Call ToString(y). + 9.If Result(7) < Result(8), return 1. + 10.If Result(7) > Result(8), return 1. + 11.Return +0. + +Note that, because undefined always compared greater than any other value, undefined and nonexistent +property values always sort to the end of the result. It is implementation-dependent whether or not such +properties will exist or not at the end of the array when the sort is concluded. + +Note that the sort function is intentionally generic; it does not require that its this value be an Array object. +Therefore it can be transferred to other kinds of objects for use as a method. Whether the sort function can be +applied successfully to a host object is implementation dependent . + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + + var SECTION = "15.4.4.5-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array.prototype.sort(comparefn)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var S = new Array(); + var item = 0; + + // array is empty. + S[item++] = "var A = new Array()"; + + // array contains one item + S[item++] = "var A = new Array( true )"; + + // length of array is 2 + S[item++] = "var A = new Array( true, false, new Boolean(true), new Boolean(false), 'true', 'false' )"; + + S[item++] = "var A = new Array(); A[3] = 'undefined'; A[6] = null; A[8] = 'null'; A[0] = void 0"; + + S[item] = "var A = new Array( "; + + var limit = 0x0061; + for ( var i = 0x007A; i >= limit; i-- ) { + S[item] += "\'"+ String.fromCharCode(i) +"\'" ; + if ( i > limit ) { + S[item] += ","; + } + } + + S[item] += ")"; + + item++; + + for ( var i = 0; i < S.length; i++ ) { + CheckItems( S[i] ); + } +} +function CheckItems( S ) { + eval( S ); + var E = Sort( A ); + + testcases[testcases.length] = new TestCase( SECTION, + S +"; A.sort(); A.length", + E.length, + eval( S + "; A.sort(); A.length") ); + + for ( var i = 0; i < E.length; i++ ) { + testcases[testcases.length] = new TestCase( + SECTION, + "A["+i+ "].toString()", + E[i] +"", + A[i] +""); + + if ( A[i] == void 0 && typeof A[i] == "undefined" ) { + testcases[testcases.length] = new TestCase( + SECTION, + "typeof A["+i+ "]", + typeof E[i], + typeof A[i] ); + } + } +} +function Object_1( value ) { + this.array = value.split(","); + this.length = this.array.length; + for ( var i = 0; i < this.length; i++ ) { + this[i] = eval(this.array[i]); + } + this.sort = Array.prototype.sort; + this.getClass = Object.prototype.toString; +} +function Sort( a ) { + for ( i = 0; i < a.length; i++ ) { + for ( j = i+1; j < a.length; j++ ) { + var lo = a[i]; + var hi = a[j]; + var c = Compare( lo, hi ); + if ( c == 1 ) { + a[i] = hi; + a[j] = lo; + } + } + } + return a; +} +function Compare( x, y ) { + if ( x == void 0 && y == void 0 && typeof x == "undefined" && typeof y == "undefined" ) { + return +0; + } + if ( x == void 0 && typeof x == "undefined" ) { + return 1; + } + if ( y == void 0 && typeof y == "undefined" ) { + return -1; + } + x = String(x); + y = String(y); + if ( x < y ) { + return -1; + } + if ( x > y ) { + return 1; + } + return 0; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.5-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.5-2.js new file mode 100644 index 00000000000..23e1eacd296 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.5-2.js @@ -0,0 +1,224 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.4.5-2.js + ECMA Section: Array.prototype.sort(comparefn) + Description: + + This test file tests cases in which the compare function is supplied. + In this cases, the sort creates a reverse sort. + + The elements of this array are sorted. The sort is not necessarily stable. + If comparefn is provided, it should be a function that accepts two arguments + x and y and returns a negative value if x < y, zero if x = y, or a positive + value if x > y. + + 1. Call the [[Get]] method of this object with argument "length". + 2. Call ToUint32(Result(1)). + 1. Perform an implementation-dependent sequence of calls to the + [[Get]] , [[Put]], and [[Delete]] methods of this object and + toSortCompare (described below), where the first argument for each call + to [[Get]], [[Put]] , or [[Delete]] is a nonnegative integer less + than Result(2) and where the arguments for calls to SortCompare are + results of previous calls to the [[Get]] method. After this sequence + is complete, this object must have the following two properties. + (1) There must be some mathematical permutation of the nonnegative + integers less than Result(2), such that for every nonnegative integer + j less than Result(2), if property old[j] existed, then new[(j)] is + exactly the same value as old[j],. but if property old[j] did not exist, + then new[(j)] either does not exist or exists with value undefined. + (2) If comparefn is not supplied or is a consistent comparison + function for the elements of this array, then for all nonnegative + integers j and k, each less than Result(2), if old[j] compares less + than old[k] (see SortCompare below), then (j) < (k). Here we use the + notation old[j] to refer to the hypothetical result of calling the [ + [Get]] method of this object with argument j before this step is + executed, and the notation new[j] to refer to the hypothetical result + of calling the [[Get]] method of this object with argument j after this + step has been completely executed. A function is a consistent + comparison function for a set of values if (a) for any two of those + values (possibly the same value) considered as an ordered pair, it + always returns the same value when given that pair of values as its + two arguments, and the result of applying ToNumber to this value is + not NaN; (b) when considered as a relation, where the pair (x, y) is + considered to be in the relation if and only if applying the function + to x and y and then applying ToNumber to the result produces a + negative value, this relation is a partial order; and (c) when + considered as a different relation, where the pair (x, y) is considered + to be in the relation if and only if applying the function to x and y + and then applying ToNumber to the result produces a zero value (of either + sign), this relation is an equivalence relation. In this context, the + phrase "x compares less than y" means applying Result(2) to x and y and + then applying ToNumber to the result produces a negative value. + 3.Return this object. + + When the SortCompare operator is called with two arguments x and y, the following steps are taken: + 1.If x and y are both undefined, return +0. + 2.If x is undefined, return 1. + 3.If y is undefined, return 1. + 4.If the argument comparefn was not provided in the call to sort, go to step 7. + 5.Call comparefn with arguments x and y. + 6.Return Result(5). + 7.Call ToString(x). + 8.Call ToString(y). + 9.If Result(7) < Result(8), return 1. + 10.If Result(7) > Result(8), return 1. + 11.Return +0. + +Note that, because undefined always compared greater than any other value, undefined and nonexistent +property values always sort to the end of the result. It is implementation-dependent whether or not such +properties will exist or not at the end of the array when the sort is concluded. + +Note that the sort function is intentionally generic; it does not require that its this value be an Array object. +Therefore it can be transferred to other kinds of objects for use as a method. Whether the sort function can be +applied successfully to a host object is implementation dependent . + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + + var SECTION = "15.4.4.5-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array.prototype.sort(comparefn)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var S = new Array(); + var item = 0; + + // array is empty. + S[item++] = "var A = new Array()"; + + // array contains one item + S[item++] = "var A = new Array( true )"; + + // length of array is 2 + S[item++] = "var A = new Array( true, false, new Boolean(true), new Boolean(false), 'true', 'false' )"; + + S[item++] = "var A = new Array(); A[3] = 'undefined'; A[6] = null; A[8] = 'null'; A[0] = void 0"; + + S[item] = "var A = new Array( "; + + var limit = 0x0061; + for ( var i = 0x007A; i >= limit; i-- ) { + S[item] += "\'"+ String.fromCharCode(i) +"\'" ; + if ( i > limit ) { + S[item] += ","; + } + } + + S[item] += ")"; + + for ( var i = 0; i < S.length; i++ ) { + CheckItems( S[i] ); + } + +} +function CheckItems( S ) { + eval( S ); + var E = Sort( A ); + + testcases[testcases.length] = new TestCase( SECTION, + S +"; A.sort(Compare); A.length", + E.length, + eval( S + "; A.sort(Compare); A.length") ); + + for ( var i = 0; i < E.length; i++ ) { + testcases[testcases.length] = new TestCase( + SECTION, + "A["+i+ "].toString()", + E[i] +"", + A[i] +""); + + if ( A[i] == void 0 && typeof A[i] == "undefined" ) { + testcases[testcases.length] = new TestCase( + SECTION, + "typeof A["+i+ "]", + typeof E[i], + typeof A[i] ); + } + } +} +function Object_1( value ) { + this.array = value.split(","); + this.length = this.array.length; + for ( var i = 0; i < this.length; i++ ) { + this[i] = eval(this.array[i]); + } + this.sort = Array.prototype.sort; + this.getClass = Object.prototype.toString; +} +function Sort( a ) { + var r1 = a.length; + for ( i = 0; i < a.length; i++ ) { + for ( j = i+1; j < a.length; j++ ) { + var lo = a[i]; + var hi = a[j]; + var c = Compare( lo, hi ); + if ( c == 1 ) { + a[i] = hi; + a[j] = lo; + } + } + } + return a; +} +function Compare( x, y ) { + if ( x == void 0 && y == void 0 && typeof x == "undefined" && typeof y == "undefined" ) { + return +0; + } + if ( x == void 0 && typeof x == "undefined" ) { + return 1; + } + if ( y == void 0 && typeof y == "undefined" ) { + return -1; + } + x = String(x); + y = String(y); + if ( x < y ) { + return 1; + } + if ( x > y ) { + return -1; + } + return 0; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.5-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.5-3.js new file mode 100644 index 00000000000..47bbe5d4b26 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.5-3.js @@ -0,0 +1,181 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.4.5-3.js + ECMA Section: Array.prototype.sort(comparefn) + Description: + + This is a regression test for + http://scopus/bugsplat/show_bug.cgi?id=117144 + + Verify that sort is successfull, even if the sort compare function returns + a very large negative or positive value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + + var SECTION = "15.4.4.5-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array.prototype.sort(comparefn)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + var array = new Array(); + + array[array.length] = new Date( TIME_2000 * Math.PI ); + array[array.length] = new Date( TIME_2000 * 10 ); + array[array.length] = new Date( TIME_1900 + TIME_1900 ); + array[array.length] = new Date(0); + array[array.length] = new Date( TIME_2000 ); + array[array.length] = new Date( TIME_1900 + TIME_1900 +TIME_1900 ); + array[array.length] = new Date( TIME_1900 * Math.PI ); + array[array.length] = new Date( TIME_1900 * 10 ); + array[array.length] = new Date( TIME_1900 ); + array[array.length] = new Date( TIME_2000 + TIME_2000 ); + array[array.length] = new Date( 1899, 0, 1 ); + array[array.length] = new Date( 2000, 1, 29 ); + array[array.length] = new Date( 2000, 0, 1 ); + array[array.length] = new Date( 1999, 11, 31 ); + + var testarr1 = new Array() + clone( array, testarr1 ); + testarr1.sort( comparefn1 ); + + var testarr2 = new Array() + clone( array, testarr2 ); + testarr2.sort( comparefn2 ); + + testarr3 = new Array(); + clone( array, testarr3 ); + testarr3.sort( comparefn3 ); + + // when there's no sort function, sort sorts by the toString value of Date. + + var testarr4 = new Array() + clone( array, testarr4 ); + testarr4.sort(); + + var realarr = new Array(); + clone( array, realarr ); + realarr.sort( realsort ); + + var stringarr = new Array(); + clone( array, stringarr ); + stringarr.sort( stringsort ); + + for ( var i = 0, tc = 0; i < array.length; i++, tc++) { + testcases[tc] = new TestCase( + SECTION, + "testarr1["+i+"]", + realarr[i], + testarr1[i] ); + } + + for ( var i=0; i < array.length; i++, tc++) { + testcases[tc] = new TestCase( + SECTION, + "testarr2["+i+"]", + realarr[i], + testarr2[i] ); + } + + for ( var i=0; i < array.length; i++, tc++) { + testcases[tc] = new TestCase( + SECTION, + "testarr3["+i+"]", + realarr[i], + testarr3[i] ); + } + + for ( var i=0; i < array.length; i++, tc++) { + testcases[tc] = new TestCase( + SECTION, + "testarr4["+i+"]", + stringarr[i].toString(), + testarr4[i].toString() ); + } + +} +function comparefn1( x, y ) { + return x - y; +} +function comparefn2( x, y ) { + return x.valueOf() - y.valueOf(); +} +function realsort( x, y ) { + return ( x.valueOf() == y.valueOf() ? 0 : ( x.valueOf() > y.valueOf() ? 1 : -1 ) ); +} +function comparefn3( x, y ) { + return ( +x == +y ? 0 : ( x > y ? 1 : -1 ) ); +} +function clone( source, target ) { + for (i = 0; i < source.length; i++ ) { + target[i] = source[i]; + } +} +function stringsort( x, y ) { + for ( var i = 0; i < x.toString().length; i++ ) { + var d = (x.toString()).charCodeAt(i) - (y.toString()).charCodeAt(i); + if ( d > 0 ) { + return 1; + } else { + if ( d < 0 ) { + return -1; + } else { + continue; + } + } + + var d = x.length - y.length; + + if ( d > 0 ) { + return 1; + } else { + if ( d < 0 ) { + return -1; + } + } + } + return 0; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.js new file mode 100644 index 00000000000..4197dfb7d58 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.js @@ -0,0 +1,77 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.4.js + ECMA Section: 15.4.4 Properties of the Array Prototype Object + Description: The value of the internal [[Prototype]] property of + the Array prototype object is the Object prototype + object. + + Note that the Array prototype object is itself an + array; it has a length property (whose initial value + is (0) and the special [[Put]] method. + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + + var SECTION = "15.4.4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Properties of the Array Prototype Object"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + +// these testcases are ECMA_2 +// array[item++] = new TestCase( SECTION, "Array.prototype.__proto__", Object.prototype, Array.prototype.__proto__ ); +// array[item++] = new TestCase( SECTION, "Array.__proto__.valueOf == Object.__proto__.valueOf", true, (Array.__proto__.valueOf == Object.__proto__.valueOf) ); + + array[item++] = new TestCase( SECTION, "Array.prototype.length", 0, Array.prototype.length ); + +// verify that prototype object is an Array object. + array[item++] = new TestCase( SECTION, "typeof Array.prototype", "object", typeof Array.prototype ); + + array[item++] = new TestCase( SECTION, + "Array.prototype.toString = Object.prototype.toString; Array.prototype.toString()", + "[object Array]", + eval("Array.prototype.toString = Object.prototype.toString; Array.prototype.toString()") ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.5.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.5.1-1.js new file mode 100644 index 00000000000..71a45e66e11 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.5.1-1.js @@ -0,0 +1,174 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.5.1-1.js + ECMA Section: [[ Put]] (P, V) + Description: + Array objects use a variation of the [[Put]] method used for other native + ECMAScript objects (section 8.6.2.2). + + Assume A is an Array object and P is a string. + + When the [[Put]] method of A is called with property P and value V, the + following steps are taken: + + 1. Call the [[CanPut]] method of A with name P. + 2. If Result(1) is false, return. + 3. If A doesn't have a property with name P, go to step 7. + 4. If P is "length", go to step 12. + 5. Set the value of property P of A to V. + 6. Go to step 8. + 7. Create a property with name P, set its value to V and give it empty + attributes. + 8. If P is not an array index, return. + 9. If A itself has a property (not an inherited property) named "length", + andToUint32(P) is less than the value of the length property of A, then + return. + 10. Change (or set) the value of the length property of A to ToUint32(P)+1. + 11. Return. + 12. Compute ToUint32(V). + 13. For every integer k that is less than the value of the length property + of A but not less than Result(12), if A itself has a property (not an + inherited property) named ToString(k), then delete that property. + 14. Set the value of property P of A to Result(12). + 15. Return. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.4.5.1-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array [[Put]] (P, V)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + + var item = 0; + + // P is "length" + + array[item++] = new TestCase( SECTION, + "var A = new Array(); A.length = 1000; A.length", + 1000, + eval("var A = new Array(); A.length = 1000; A.length") ); + + // A has Property P, and P is not length or an array index + array[item++] = new TestCase( SECTION, + "var A = new Array(1000); A.name = 'name of this array'; A.name", + 'name of this array', + eval("var A = new Array(1000); A.name = 'name of this array'; A.name") ); + + array[item++] = new TestCase( SECTION, + "var A = new Array(1000); A.name = 'name of this array'; A.length", + 1000, + eval("var A = new Array(1000); A.name = 'name of this array'; A.length") ); + + + // A has Property P, P is not length, P is an array index, and ToUint32(p) is less than the + // value of length + + array[item++] = new TestCase( SECTION, + "var A = new Array(1000); A[123] = 'hola'; A[123]", + 'hola', + eval("var A = new Array(1000); A[123] = 'hola'; A[123]") ); + + array[item++] = new TestCase( SECTION, + "var A = new Array(1000); A[123] = 'hola'; A.length", + 1000, + eval("var A = new Array(1000); A[123] = 'hola'; A.length") ); + + + for ( var i = 0X0020, TEST_STRING = "var A = new Array( " ; i < 0x00ff; i++ ) { + if ( i === 0x58 || i === 0x78 ) // x or X - skip testing invalid hex escapes. + continue; + TEST_STRING += "\'\\"+ String.fromCharCode( i ) +"\'"; + if ( i < 0x00FF - 1 ) { + TEST_STRING += ","; + } else { + TEST_STRING += ");" + } + } + + var LENGTH = 0x00ff - 0x0020 - 2; // x & X + + array[item++] = new TestCase( SECTION, + TEST_STRING +" A[150] = 'hello'; A[150]", + 'hello', + eval( TEST_STRING + " A[150] = 'hello'; A[150]" ) ); + + array[item++] = new TestCase( SECTION, + TEST_STRING +" A[150] = 'hello'; A[150]", + LENGTH, + eval( TEST_STRING + " A[150] = 'hello'; A.length" ) ); + + // A has Property P, P is not length, P is an array index, and ToUint32(p) is not less than the + // value of length + + array[item++] = new TestCase( SECTION, + "var A = new Array(); A[123] = true; A.length", + 124, + eval("var A = new Array(); A[123] = true; A.length") ); + + array[item++] = new TestCase( SECTION, + "var A = new Array(0,1,2,3,4,5,6,7,8,9,10); A[15] ='15'; A.length", + 16, + eval("var A = new Array(0,1,2,3,4,5,6,7,8,9,10); A[15] ='15'; A.length") ); + + for ( var i = 0; i < A.length; i++, item++ ) { + array[item] = new TestCase( SECTION, + "var A = new Array(0,1,2,3,4,5,6,7,8,9,10); A[15] ='15'; A[" +i +"]", + (i <= 10) ? i : ( i == 15 ? '15' : void 0 ), + A[i] ); + } + // P is not an array index, and P is not "length" + + array[item++] = new TestCase( SECTION, + "var A = new Array(); A.join.length = 4; A.join.length", + 1, + eval("var A = new Array(); A.join.length = 4; A.join.length") ); + + array[item++] = new TestCase( SECTION, + "var A = new Array(); A.join.length = 4; A.length", + 0, + eval("var A = new Array(); A.join.length = 4; A.length") ); + + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.5.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.5.1-2.js new file mode 100644 index 00000000000..08b4721f27c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.5.1-2.js @@ -0,0 +1,150 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.5.1-2.js + ECMA Section: [[ Put]] (P, V) + Description: + Array objects use a variation of the [[Put]] method used for other native + ECMAScript objects (section 8.6.2.2). + + Assume A is an Array object and P is a string. + + When the [[Put]] method of A is called with property P and value V, the + following steps are taken: + + 1. Call the [[CanPut]] method of A with name P. + 2. If Result(1) is false, return. + 3. If A doesn't have a property with name P, go to step 7. + 4. If P is "length", go to step 12. + 5. Set the value of property P of A to V. + 6. Go to step 8. + 7. Create a property with name P, set its value to V and give it empty + attributes. + 8. If P is not an array index, return. + 9. If A itself has a property (not an inherited property) named "length", + andToUint32(P) is less than the value of the length property of A, then + return. + 10. Change (or set) the value of the length property of A to ToUint32(P)+1. + 11. Return. + 12. Compute ToUint32(V). + 13. For every integer k that is less than the value of the length property + of A but not less than Result(12), if A itself has a property (not an + inherited property) named ToString(k), then delete that property. + 14. Set the value of property P of A to Result(12). + 15. Return. + + + These are testcases from Waldemar, detailed in + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=123552 + + Author: christine@netscape.com + Date: 15 June 1998 +*/ + + var SECTION = "15.4.5.1-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array [[Put]] (P,V)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var a = new Array(); + + AddCase( "3.00", "three" ); + AddCase( "00010", "eight" ); + AddCase( "37xyz", "thirty-five" ); + AddCase("5000000000", 5) + AddCase( "-2", -3 ); + + testcases[tc++] = new TestCase( SECTION, + "a[10]", + void 0, + a[10] ); + + testcases[tc++] = new TestCase( SECTION, + "a[3]", + void 0, + a[3] ); + + a[4] = "four"; + + testcases[tc++] = new TestCase( SECTION, + "a[4] = \"four\"; a[4]", + "four", + a[4] ); + + testcases[tc++] = new TestCase( SECTION, + "a[\"4\"]", + "four", + a["4"] ); + + testcases[tc++] = new TestCase( SECTION, + "a[\"4.00\"]", + void 0, + a["4.00"] ); + + testcases[tc++] = new TestCase( SECTION, + "a.length", + 5, + a.length ); + + + a["5000000000"] = 5; + + testcases[tc++] = new TestCase( SECTION, + "a[\"5000000000\"] = 5; a.length", + 5, + a.length ); + + testcases[tc++] = new TestCase( SECTION, + "a[\"-2\"] = -3; a.length", + 5, + a.length ); + + test(); + +function AddCase ( arg, value ) { + + a[arg] = value; + + testcases[tc++] = new TestCase( SECTION, + "a[\"" + arg + "\"] = "+ value +"; a.length", + 0, + a.length ); +} + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.5.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.5.2-1.js new file mode 100644 index 00000000000..069ae5766d5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.5.2-1.js @@ -0,0 +1,93 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.5.2-1.js + ECMA Section: Array.length + Description: + 15.4.5.2 length + The length property of this Array object is always numerically greater + than the name of every property whose name is an array index. + + The length property has the attributes { DontEnum, DontDelete }. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.4.5.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array.length"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "var A = new Array(); A.length", + 0, + eval("var A = new Array(); A.length") ); + + array[item++] = new TestCase( SECTION, + "var A = new Array(); A[Math.pow(2,32)-2] = 'hi'; A.length", + Math.pow(2,32)-1, + eval("var A = new Array(); A[Math.pow(2,32)-2] = 'hi'; A.length") ); + + array[item++] = new TestCase( SECTION, + "var A = new Array(); A.length = 123; A.length", + 123, + eval("var A = new Array(); A.length = 123; A.length") ); + + array[item++] = new TestCase( SECTION, + "var A = new Array(); A.length = 123; var PROPS = ''; for ( var p in A ) { PROPS += ( p == 'length' ? p : ''); } PROPS", + "", + eval("var A = new Array(); A.length = 123; var PROPS = ''; for ( var p in A ) { PROPS += ( p == 'length' ? p : ''); } PROPS") ); + + + array[item++] = new TestCase( SECTION, + "var A = new Array(); A.length = 123; delete A.length", + false , + eval("var A = new Array(); A.length = 123; delete A.length") ); + + array[item++] = new TestCase( SECTION, + "var A = new Array(); A.length = 123; delete A.length; A.length", + 123, + eval("var A = new Array(); A.length = 123; delete A.length; A.length") ); + return array; +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.5.2-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.5.2-2.js new file mode 100644 index 00000000000..9d65b2c21a7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.5.2-2.js @@ -0,0 +1,123 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.4.5.2-2.js + ECMA Section: Array.length + Description: + 15.4.5.2 length + The length property of this Array object is always numerically greater + than the name of every property whose name is an array index. + + The length property has the attributes { DontEnum, DontDelete }. + + This test verifies that the Array.length property is not Read Only. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.4.5.2-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Array.length"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + addCase( new Array(), 0, Math.pow(2,14), Math.pow(2,14) ); + + addCase( new Array(), 0, 1, 1 ); + + addCase( new Array(Math.pow(2,12)), Math.pow(2,12), 0, 0 ); + addCase( new Array(Math.pow(2,13)), Math.pow(2,13), Math.pow(2,12), Math.pow(2,12) ); + addCase( new Array(Math.pow(2,12)), Math.pow(2,12), Math.pow(2,12), Math.pow(2,12) ); + addCase( new Array(Math.pow(2,14)), Math.pow(2,14), Math.pow(2,12), Math.pow(2,12) ) + + // some tests where array is not empty + // array is populated with strings + for ( var arg = "", i = 0; i < Math.pow(2,12); i++ ) { + arg += String(i) + ( i != Math.pow(2,12)-1 ? "," : "" ); + + } +// print(i +":"+arg); + + var a = eval( "new Array("+arg+")" ); + + addCase( a, i, i, i ); + addCase( a, i, Math.pow(2,12)+i+1, Math.pow(2,12)+i+1, true ); + addCase( a, Math.pow(2,12)+5, 0, 0, true ); + + test(); + +function addCase( object, old_len, set_len, new_len, checkitems ) { + object.length = set_len; + + testcases[testcases.length] = new TestCase( SECTION, + "array = new Array("+ old_len+"); array.length = " + set_len + + "; array.length", + new_len, + object.length ); + + if ( checkitems ) { + // verify that items between old and newlen are all undefined + if ( new_len < old_len ) { + var passed = true; + for ( var i = new_len; i < old_len; i++ ) { + if ( object[i] != void 0 ) { + passed = false; + } + } + testcases[testcases.length] = new TestCase( SECTION, + "verify that array items have been deleted", + true, + passed ); + } + if ( new_len > old_len ) { + var passed = true; + for ( var i = old_len; i < new_len; i++ ) { + if ( object[i] != void 0 ) { + passed = false; + } + } + testcases[testcases.length] = new TestCase( SECTION, + "verify that new items are undefined", + true, + passed ); + } + } + +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.1.js new file mode 100644 index 00000000000..762b06deebe --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.1.js @@ -0,0 +1,96 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.1.js + ECMA Section: 15.6.1 The Boolean Function + 15.6.1.1 Boolean( value ) + 15.6.1.2 Boolean () + Description: Boolean( value ) should return a Boolean value + not a Boolean object) computed by + Boolean.toBooleanValue( value) + + 15.6.1.2 Boolean() returns false + + Author: christine@netscape.com + Date: 27 jun 1997 + + + Data File Fields: + VALUE Argument passed to the Boolean function + TYPE typeof VALUE (not used, but helpful in understanding + the data file) + E_RETURN Expected return value of Boolean( VALUE ) +*/ + var SECTION = "15.6.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Boolean constructor called as a function: Boolean( value ) and Boolean()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Boolean(1)", true, Boolean(1) ); + array[item++] = new TestCase( SECTION, "Boolean(0)", false, Boolean(0) ); + array[item++] = new TestCase( SECTION, "Boolean(-1)", true, Boolean(-1) ); + array[item++] = new TestCase( SECTION, "Boolean('1')", true, Boolean("1") ); + array[item++] = new TestCase( SECTION, "Boolean('0')", true, Boolean("0") ); + array[item++] = new TestCase( SECTION, "Boolean('-1')", true, Boolean("-1") ); + array[item++] = new TestCase( SECTION, "Boolean(true)", true, Boolean(true) ); + array[item++] = new TestCase( SECTION, "Boolean(false)", false, Boolean(false) ); + + array[item++] = new TestCase( SECTION, "Boolean('true')", true, Boolean("true") ); + array[item++] = new TestCase( SECTION, "Boolean('false')", true, Boolean("false") ); + array[item++] = new TestCase( SECTION, "Boolean(null)", false, Boolean(null) ); + + array[item++] = new TestCase( SECTION, "Boolean(-Infinity)", true, Boolean(Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Boolean(NaN)", false, Boolean(Number.NaN) ); + array[item++] = new TestCase( SECTION, "Boolean(void(0))", false, Boolean( void(0) ) ); + array[item++] = new TestCase( SECTION, "Boolean(x=0)", false, Boolean( x=0 ) ); + array[item++] = new TestCase( SECTION, "Boolean(x=1)", true, Boolean( x=1 ) ); + array[item++] = new TestCase( SECTION, "Boolean(x=false)", false, Boolean( x=false ) ); + array[item++] = new TestCase( SECTION, "Boolean(x=true)", true, Boolean( x=true ) ); + array[item++] = new TestCase( SECTION, "Boolean(x=null)", false, Boolean( x=null ) ); + array[item++] = new TestCase( SECTION, "Boolean()", false, Boolean() ); +// array[item++] = new TestCase( SECTION, "Boolean(var someVar)", false, Boolean( someVar ) ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.2.js new file mode 100644 index 00000000000..2d4e142e789 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.2.js @@ -0,0 +1,160 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.2.js + ECMA Section: 15.6.2 The Boolean Constructor + 15.6.2.1 new Boolean( value ) + 15.6.2.2 new Boolean() + + This test verifies that the Boolean constructor + initializes a new object (typeof should return + "object"). The prototype of the new object should + be Boolean.prototype. The value of the object + should be ToBoolean( value ) (a boolean value). + + Description: + Author: christine@netscape.com + Date: june 27, 1997 + +*/ + var SECTION = "15.6.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "15.6.2 The Boolean Constructor; 15.6.2.1 new Boolean( value ); 15.6.2.2 new Boolean()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "typeof (new Boolean(1))", "object", typeof (new Boolean(1)) ); + array[item++] = new TestCase( SECTION, "(new Boolean(1)).constructor", Boolean.prototype.constructor, (new Boolean(1)).constructor ); + array[item++] = new TestCase( SECTION, + "TESTBOOL=new Boolean(1);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()", + "[object Boolean]", + eval("TESTBOOL=new Boolean(1);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()") ); + array[item++] = new TestCase( SECTION, "(new Boolean(1)).valueOf()", true, (new Boolean(1)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof new Boolean(1)", "object", typeof new Boolean(1) ); + array[item++] = new TestCase( SECTION, "(new Boolean(0)).constructor", Boolean.prototype.constructor, (new Boolean(0)).constructor ); + array[item++] = new TestCase( SECTION, + "TESTBOOL=new Boolean(0);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()", + "[object Boolean]", + eval("TESTBOOL=new Boolean(0);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()") ); + array[item++] = new TestCase( SECTION, "(new Boolean(0)).valueOf()", false, (new Boolean(0)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof new Boolean(0)", "object", typeof new Boolean(0) ); + array[item++] = new TestCase( SECTION, "(new Boolean(-1)).constructor", Boolean.prototype.constructor, (new Boolean(-1)).constructor ); + array[item++] = new TestCase( SECTION, + "TESTBOOL=new Boolean(-1);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()", + "[object Boolean]", + eval("TESTBOOL=new Boolean(-1);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()") ); + array[item++] = new TestCase( SECTION, "(new Boolean(-1)).valueOf()", true, (new Boolean(-1)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof new Boolean(-1)", "object", typeof new Boolean(-1) ); + array[item++] = new TestCase( SECTION, "(new Boolean('1')).constructor", Boolean.prototype.constructor, (new Boolean('1')).constructor ); + array[item++] = new TestCase( SECTION, + "TESTBOOL=new Boolean('1');TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()", + "[object Boolean]", + eval("TESTBOOL=new Boolean('1');TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()") ); + array[item++] = new TestCase( SECTION, "(new Boolean('1')).valueOf()", true, (new Boolean('1')).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof new Boolean('1')", "object", typeof new Boolean('1') ); + array[item++] = new TestCase( SECTION, "(new Boolean('0')).constructor", Boolean.prototype.constructor, (new Boolean('0')).constructor ); + array[item++] = new TestCase( SECTION, + "TESTBOOL=new Boolean('0');TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()", + "[object Boolean]", + eval("TESTBOOL=new Boolean('0');TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()") ); + array[item++] = new TestCase( SECTION, "(new Boolean('0')).valueOf()", true, (new Boolean('0')).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof new Boolean('0')", "object", typeof new Boolean('0') ); + array[item++] = new TestCase( SECTION, "(new Boolean('-1')).constructor", Boolean.prototype.constructor, (new Boolean('-1')).constructor ); + array[item++] = new TestCase( SECTION, + "TESTBOOL=new Boolean('-1');TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()", + "[object Boolean]", + eval("TESTBOOL=new Boolean('-1');TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()") ); + array[item++] = new TestCase( SECTION, "(new Boolean('-1')).valueOf()", true, (new Boolean('-1')).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof new Boolean('-1')", "object", typeof new Boolean('-1') ); + array[item++] = new TestCase( SECTION, "(new Boolean(new Boolean(true))).constructor", Boolean.prototype.constructor, (new Boolean(new Boolean(true))).constructor ); + array[item++] = new TestCase( SECTION, + "TESTBOOL=new Boolean(new Boolean(true));TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()", + "[object Boolean]", + eval("TESTBOOL=new Boolean(new Boolean(true));TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()") ); + array[item++] = new TestCase( SECTION, "(new Boolean(new Boolean(true))).valueOf()", true, (new Boolean(new Boolean(true))).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof new Boolean(new Boolean(true))", "object", typeof new Boolean(new Boolean(true)) ); + array[item++] = new TestCase( SECTION, "(new Boolean(Number.NaN)).constructor", Boolean.prototype.constructor, (new Boolean(Number.NaN)).constructor ); + array[item++] = new TestCase( SECTION, + "TESTBOOL=new Boolean(Number.NaN);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()", + "[object Boolean]", + eval("TESTBOOL=new Boolean(Number.NaN);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()") ); + array[item++] = new TestCase( SECTION, "(new Boolean(Number.NaN)).valueOf()", false, (new Boolean(Number.NaN)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof new Boolean(Number.NaN)", "object", typeof new Boolean(Number.NaN) ); + array[item++] = new TestCase( SECTION, "(new Boolean(null)).constructor", Boolean.prototype.constructor, (new Boolean(null)).constructor ); + array[item++] = new TestCase( SECTION, + "TESTBOOL=new Boolean(null);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()", + "[object Boolean]", + eval("TESTBOOL=new Boolean(null);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()") ); + array[item++] = new TestCase( SECTION, "(new Boolean(null)).valueOf()", false, (new Boolean(null)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof new Boolean(null)", "object", typeof new Boolean(null) ); + array[item++] = new TestCase( SECTION, "(new Boolean(void 0)).constructor", Boolean.prototype.constructor, (new Boolean(void 0)).constructor ); + array[item++] = new TestCase( SECTION, + "TESTBOOL=new Boolean(void 0);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()", + "[object Boolean]", + eval("TESTBOOL=new Boolean(void 0);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()") ); + array[item++] = new TestCase( SECTION, "(new Boolean(void 0)).valueOf()", false, (new Boolean(void 0)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof new Boolean(void 0)", "object", typeof new Boolean(void 0) ); + array[item++] = new TestCase( SECTION, "(new Boolean(Number.POSITIVE_INFINITY)).constructor", Boolean.prototype.constructor, (new Boolean(Number.POSITIVE_INFINITY)).constructor ); + array[item++] = new TestCase( SECTION, + "TESTBOOL=new Boolean(Number.POSITIVE_INFINITY);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()", + "[object Boolean]", + eval("TESTBOOL=new Boolean(Number.POSITIVE_INFINITY);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()") ); + array[item++] = new TestCase( SECTION, "(new Boolean(Number.POSITIVE_INFINITY)).valueOf()", true, (new Boolean(Number.POSITIVE_INFINITY)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof new Boolean(Number.POSITIVE_INFINITY)", "object", typeof new Boolean(Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "(new Boolean(Number.NEGATIVE_INFINITY)).constructor", Boolean.prototype.constructor, (new Boolean(Number.NEGATIVE_INFINITY)).constructor ); + array[item++] = new TestCase( SECTION, + "TESTBOOL=new Boolean(Number.NEGATIVE_INFINITY);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()", + "[object Boolean]", + eval("TESTBOOL=new Boolean(Number.NEGATIVE_INFINITY);TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()") ); + array[item++] = new TestCase( SECTION, "(new Boolean(Number.NEGATIVE_INFINITY)).valueOf()", true, (new Boolean(Number.NEGATIVE_INFINITY)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof new Boolean(Number.NEGATIVE_INFINITY)", "object", typeof new Boolean(Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "(new Boolean(Number.NEGATIVE_INFINITY)).constructor", Boolean.prototype.constructor, (new Boolean(Number.NEGATIVE_INFINITY)).constructor ); + array[item++] = new TestCase( "15.6.2.2", + "TESTBOOL=new Boolean();TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()", + "[object Boolean]", + eval("TESTBOOL=new Boolean();TESTBOOL.toString=Object.prototype.toString;TESTBOOL.toString()") ); + array[item++] = new TestCase( "15.6.2.2", "(new Boolean()).valueOf()", false, (new Boolean()).valueOf() ); + array[item++] = new TestCase( "15.6.2.2", "typeof new Boolean()", "object", typeof new Boolean() ); + + return ( array ); +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1-1.js new file mode 100644 index 00000000000..c3897e4ec3c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1-1.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.3.1-1.js + ECMA Section: 15.6.3 Boolean.prototype + + Description: The initial value of Boolean.prototype is the built-in + Boolean prototype object (15.6.4). + + The property shall have the attributes [DontEnum, + DontDelete, ReadOnly ]. + + This tests the DontEnum property of Boolean.prototype + + Author: christine@netscape.com + Date: june 27, 1997 + +*/ + var SECTION = "15.6.3.1-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Boolean.prototype"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "var str='';for ( p in Boolean ) { str += p } str;", + "", + eval("var str='';for ( p in Boolean ) { str += p } str;") ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1-2.js new file mode 100644 index 00000000000..0ff248a9bd1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1-2.js @@ -0,0 +1,69 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.3.1-2.js + ECMA Section: 15.6.3.1 Boolean.prototype + + Description: The initial valu eof Boolean.prototype is the built-in + Boolean prototype object (15.6.4). + + The property shall have the attributes [DontEnum, + DontDelete, ReadOnly ]. + + This tests the DontDelete property of Boolean.prototype + + Author: christine@netscape.com + Date: june 27, 1997 + +*/ + var SECTION = "15.6.3.1-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Boolean.prototype" + writeHeaderToLog( SECTION + TITLE ); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "delete( Boolean.prototype)", + false, + delete( Boolean.prototype) ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1-3.js new file mode 100644 index 00000000000..5ba5c959ad4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1-3.js @@ -0,0 +1,69 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.3.1-3.js + ECMA Section: 15.6.3.1 Boolean.prototype + + Description: The initial valu eof Boolean.prototype is the built-in + Boolean prototype object (15.6.4). + + The property shall have the attributes [DontEnum, + DontDelete, ReadOnly ]. + + This tests the DontDelete property of Boolean.prototype + + Author: christine@netscape.com + Date: june 27, 1997 + +*/ + var SECTION = "15.6.3.1-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Boolean.prototype" + writeHeaderToLog( SECTION + TITLE ); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "delete( Boolean.prototype); Boolean.prototype", + Boolean.prototype, + eval("delete( Boolean.prototype); Boolean.prototype") ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1-4.js new file mode 100644 index 00000000000..56972e87383 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1-4.js @@ -0,0 +1,79 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.3.1-4.js + ECMA Section: 15.6.3.1 Properties of the Boolean Prototype Object + + Description: The initial value of Boolean.prototype is the built-in + Boolean prototype object (15.6.4). + + The property shall have the attributes [DontEnum, + DontDelete, ReadOnly ]. + + This tests the ReadOnly property of Boolean.prototype + + Author: christine@netscape.com + Date: 30 september 1997 + +*/ + var SECTION = "15.6.3.1-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Boolean.prototype" + writeHeaderToLog( SECTION + TITLE ); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var BOOL_PROTO = Boolean.prototype; + + array[item++] = new TestCase( SECTION, + "var BOOL_PROTO = Boolean.prototype; Boolean.prototype=null; Boolean.prototype == BOOL_PROTO", + true, + eval("var BOOL_PROTO = Boolean.prototype; Boolean.prototype=null; Boolean.prototype == BOOL_PROTO") ); + + array[item++] = new TestCase( SECTION, + "var BOOL_PROTO = Boolean.prototype; Boolean.prototype=null; Boolean.prototype == null", + false, + eval("var BOOL_PROTO = Boolean.prototype; Boolean.prototype=null; Boolean.prototype == null") ); + + return ( array ); +} + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1-5.js new file mode 100644 index 00000000000..fb3605c870a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1-5.js @@ -0,0 +1,61 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.3.1-5.js + ECMA Section: 15.6.3.1 Boolean.prototype + Description: + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var VERSION = "ECMA_2"; + startTest(); + var SECTION = "15.6.3.1-5"; + var TITLE = "Boolean.prototype" + + writeHeaderToLog( SECTION + " " + TITLE ); + var tc= 0; + var testcases = getTestCases(); + +// all tests must call a function that returns an array of TestCase objects. + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "Function.prototype == Boolean.__proto__", true, Function.prototype == Boolean.__proto__ ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1.js new file mode 100644 index 00000000000..55614f554bd --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.1.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.3.1.js + ECMA Section: 15.6.3.1 Boolean.prototype + + Description: The initial valu eof Boolean.prototype is the built-in + Boolean prototype object (15.6.4). + + The property shall have the attributes [DontEnum, + DontDelete, ReadOnly ]. + + It has the internal [[Call]] and [[Construct]] + properties (not tested), and the length property. + + Author: christine@netscape.com + Date: june 27, 1997 + +*/ + + var SECTION = "15.6.3.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Boolean.prototype"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Boolean.prototype.valueOf()", false, Boolean.prototype.valueOf() ); + array[item++] = new TestCase( SECTION, "Boolean.length", 1, Boolean.length ); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.js new file mode 100644 index 00000000000..0e9a2528936 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.3.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.3.js + ECMA Section: 15.6.3 Properties of the Boolean Constructor + + Description: The value of the internal prototype property is + the Function prototype object. + + It has the internal [[Call]] and [[Construct]] + properties, and the length property. + + Author: christine@netscape.com + Date: june 27, 1997 + +*/ + var SECTION = "15.6.3"; + var VERSION = "ECMA_2"; + startTest(); + var TITLE = "Properties of the Boolean Constructor" + writeHeaderToLog( SECTION + TITLE ); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Boolean.__proto__ == Function.prototype", true, Boolean.__proto__ == Function.prototype ); + array[item++] = new TestCase( SECTION, "Boolean.length", 1, Boolean.length ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4-1.js new file mode 100644 index 00000000000..e40d71a48ea --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4-1.js @@ -0,0 +1,73 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.4-1.js + ECMA Section: 15.6.4 Properties of the Boolean Prototype Object + + Description: + The Boolean prototype object is itself a Boolean object (its [[Class]] is + "Boolean") whose value is false. + + The value of the internal [[Prototype]] property of the Boolean prototype object + is the Object prototype object (15.2.3.1). + + Author: christine@netscape.com + Date: 30 september 1997 + +*/ + + + var VERSION = "ECMA_1" + startTest(); + var SECTION = "15.6.4-1"; + + writeHeaderToLog( SECTION + " Properties of the Boolean Prototype Object"); + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "typeof Boolean.prototype == typeof( new Boolean )", true, typeof Boolean.prototype == typeof( new Boolean ) ); + array[item++] = new TestCase( SECTION, "typeof( Boolean.prototype )", "object", typeof(Boolean.prototype) ); + array[item++] = new TestCase( SECTION, + "Boolean.prototype.toString = Object.prototype.toString; Boolean.prototype.toString()", + "[object Boolean]", + eval("Boolean.prototype.toString = Object.prototype.toString; Boolean.prototype.toString()") ); + array[item++] = new TestCase( SECTION, "Boolean.prototype.valueOf()", false, Boolean.prototype.valueOf() ); + + return ( array ); +} + +function test() { + for (tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value " + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4-2.js new file mode 100644 index 00000000000..760272e0302 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4-2.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.4-2.js + ECMA Section: 15.6.4 Properties of the Boolean Prototype Object + + Description: + The Boolean prototype object is itself a Boolean object (its [[Class]] is + "Boolean") whose value is false. + + The value of the internal [[Prototype]] property of the Boolean prototype object + is the Object prototype object (15.2.3.1). + + Author: christine@netscape.com + Date: 30 september 1997 + +*/ + + + var VERSION = "ECMA_2" + startTest(); + var SECTION = "15.6.4-2"; + + writeHeaderToLog( SECTION + " Properties of the Boolean Prototype Object"); + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Boolean.prototype.__proto__", Object.prototype, Boolean.prototype.__proto__ ); + + return ( array ); +} + +function test() { + for (tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value " + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.1.js new file mode 100644 index 00000000000..848b1f45418 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.1.js @@ -0,0 +1,65 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.4.1.js + ECMA Section: 15.6.4.1 Boolean.prototype.constructor + + Description: The initial value of Boolean.prototype.constructor + is the built-in Boolean constructor. + + Author: christine@netscape.com + Date: 30 september 1997 + +*/ + var SECTION = "15.6.4.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Boolean.prototype.constructor" + writeHeaderToLog( SECTION + TITLE ); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "( Boolean.prototype.constructor == Boolean )", + true , + (Boolean.prototype.constructor == Boolean) ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.2-1.js new file mode 100644 index 00000000000..85514fd416d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.2-1.js @@ -0,0 +1,97 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.4.2.js + ECMA Section: 15.6.4.2-1 Boolean.prototype.toString() + Description: If this boolean value is true, then the string "true" + is returned; otherwise this boolean value must be false, + and the string "false" is returned. + + The toString function is not generic; it generates + a runtime error if its this value is not a Boolean + object. Therefore it cannot be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: june 27, 1997 +*/ + + var SECTION = "15.6.4.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Boolean.prototype.toString()" + writeHeaderToLog( SECTION + TITLE ); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "new Boolean(1)", "true", (new Boolean(1)).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(0)", "false", (new Boolean(0)).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(-1)", "true", (new Boolean(-1)).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean('1')", "true", (new Boolean("1")).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean('0')", "true", (new Boolean("0")).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(true)", "true", (new Boolean(true)).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(false)", "false", (new Boolean(false)).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean('true')", "true", (new Boolean('true')).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean('false')", "true", (new Boolean('false')).toString() ); + + array[item++] = new TestCase( SECTION, "new Boolean('')", "false", (new Boolean('')).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(null)", "false", (new Boolean(null)).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(void(0))", "false", (new Boolean(void(0))).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(-Infinity)", "true", (new Boolean(Number.NEGATIVE_INFINITY)).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(NaN)", "false", (new Boolean(Number.NaN)).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean()", "false", (new Boolean()).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(x=1)", "true", (new Boolean(x=1)).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(x=0)", "false", (new Boolean(x=0)).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(x=false)", "false", (new Boolean(x=false)).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(x=true)", "true", (new Boolean(x=true)).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(x=null)", "false", (new Boolean(x=null)).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(x='')", "false", (new Boolean(x="")).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(x=' ')", "true", (new Boolean(x=" ")).toString() ); + + array[item++] = new TestCase( SECTION, "new Boolean(new MyObject(true))", "true", (new Boolean(new MyObject(true))).toString() ); + array[item++] = new TestCase( SECTION, "new Boolean(new MyObject(false))", "true", (new Boolean(new MyObject(false))).toString() ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.valueOf = new Function( "return this.value" ); + return this; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.2-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.2-2.js new file mode 100644 index 00000000000..d46c49bb324 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.2-2.js @@ -0,0 +1,79 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.4.2-2.js + ECMA Section: 15.6.4.2 Boolean.prototype.toString() + Description: Returns this boolean value. + + The toString function is not generic; it generates + a runtime error if its this value is not a Boolean + object. Therefore it cannot be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: june 27, 1997 +*/ + + var SECTION = "15.6.4.2-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Boolean.prototype.toString()" + writeHeaderToLog( SECTION + TITLE ); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + + array[item++] = new TestCase( SECTION, + "tostr=Boolean.prototype.toString; x=new Boolean(); x.toString=tostr;x.toString()", + "false", + "tostr=Boolean.prototype.toString; x=new Boolean(); x.toString=tostr;x.toString()" ); + array[item++] = new TestCase( SECTION, + "tostr=Boolean.prototype.toString; x=new Boolean(true); x.toString=tostr; x.toString()", + "true", + "tostr=Boolean.prototype.toString; x=new Boolean(true); x.toString=tostr; x.toString()" ); + array[item++] = new TestCase( SECTION, + "tostr=Boolean.prototype.toString; x=new Boolean(false); x.toString=tostr;x.toString()", + "false", + "tostr=Boolean.prototype.toString; x=new Boolean(); x.toString=tostr;x.toString()" ); + return ( array ); + +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.2-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.2-3.js new file mode 100644 index 00000000000..faf0a94f548 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.2-3.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.4.2-3.js + ECMA Section: 15.6.4.2 Boolean.prototype.toString() + Description: Returns this boolean value. + + The toString function is not generic; it generates + a runtime error if its this value is not a Boolean + object. Therefore it cannot be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: june 27, 1997 +*/ + + + var SECTION = "15.6.4.2-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Boolean.prototype.toString()" + writeHeaderToLog( SECTION + TITLE ); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "tostr=Boolean.prototype.toString; x=true; x.toString=tostr;x.toString()", "true", eval("tostr=Boolean.prototype.toString; x=true; x.toString=tostr;x.toString()") ); + array[item++] = new TestCase( SECTION, "tostr=Boolean.prototype.toString; x=false; x.toString=tostr;x.toString()", "false", eval("tostr=Boolean.prototype.toString; x=false; x.toString=tostr;x.toString()") ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.2-4-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.2-4-n.js new file mode 100644 index 00000000000..a86ba512601 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.2-4-n.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.4.2-4.js + ECMA Section: 15.6.4.2 Boolean.prototype.toString() + Description: Returns this boolean value. + + The toString function is not generic; it generates + a runtime error if its this value is not a Boolean + object. Therefore it cannot be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: june 27, 1997 +*/ + + var SECTION = "15.6.4.2-4-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Boolean.prototype.toString()"; + writeHeaderToLog( SECTION +" "+ TITLE ); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "tostr=Boolean.prototype.toString; x=new String( 'hello' ); x.toString=tostr; x.toString()", + "error", + "tostr=Boolean.prototype.toString; x=new String( 'hello' ); x.toString=tostr; x.toString()" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval(testcases[tc].actual); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.3-1.js new file mode 100644 index 00000000000..3589197a42e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.3-1.js @@ -0,0 +1,91 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.4.3.js + ECMA Section: 15.6.4.3 Boolean.prototype.valueOf() + Description: Returns this boolean value. + + The valueOf function is not generic; it generates + a runtime error if its this value is not a Boolean + object. Therefore it cannot be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: june 27, 1997 +*/ + + var SECTION = "15.6.4.3-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Boolean.prototype.valueOf()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "new Boolean(1)", true, (new Boolean(1)).valueOf() ); + + array[item++] = new TestCase( SECTION, "new Boolean(0)", false, (new Boolean(0)).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean(-1)", true, (new Boolean(-1)).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean('1')", true, (new Boolean("1")).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean('0')", true, (new Boolean("0")).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean(true)", true, (new Boolean(true)).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean(false)", false, (new Boolean(false)).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean('true')", true, (new Boolean("true")).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean('false')", true, (new Boolean('false')).valueOf() ); + + array[item++] = new TestCase( SECTION, "new Boolean('')", false, (new Boolean('')).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean(null)", false, (new Boolean(null)).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean(void(0))", false, (new Boolean(void(0))).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean(-Infinity)", true, (new Boolean(Number.NEGATIVE_INFINITY)).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean(NaN)", false, (new Boolean(Number.NaN)).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean()", false, (new Boolean()).valueOf() ); + + array[item++] = new TestCase( SECTION, "new Boolean(x=1)", true, (new Boolean(x=1)).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean(x=0)", false, (new Boolean(x=0)).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean(x=false)", false, (new Boolean(x=false)).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean(x=true)", true, (new Boolean(x=true)).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean(x=null)", false, (new Boolean(x=null)).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean(x='')", false, (new Boolean(x="")).valueOf() ); + array[item++] = new TestCase( SECTION, "new Boolean(x=' ')", true, (new Boolean(x=" ")).valueOf() ); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.3-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.3-2.js new file mode 100644 index 00000000000..f1bc83dc336 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.3-2.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.4.3-2.js + ECMA Section: 15.6.4.3 Boolean.prototype.valueOf() + Description: Returns this boolean value. + + The valueOf function is not generic; it generates + a runtime error if its this value is not a Boolean + object. Therefore it cannot be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: june 27, 1997 +*/ + + var SECTION = "15.6.4.3-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Boolean.prototype.valueOf()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "valof=Boolean.prototype.valueOf; x=new Boolean(); x.valueOf=valof;x.valueOf()", false, eval("valof=Boolean.prototype.valueOf; x=new Boolean(); x.valueOf=valof;x.valueOf()") ); + array[item++] = new TestCase( SECTION, "valof=Boolean.prototype.valueOf; x=new Boolean(true); x.valueOf=valof;x.valueOf()", true, eval("valof=Boolean.prototype.valueOf; x=new Boolean(true); x.valueOf=valof;x.valueOf()") ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.3-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.3-3.js new file mode 100644 index 00000000000..f19c168d648 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.3-3.js @@ -0,0 +1,71 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.4.3-3.js + ECMA Section: 15.6.4.3 Boolean.prototype.valueOf() + Description: Returns this boolean value. + + The valueOf function is not generic; it generates + a runtime error if its this value is not a Boolean + object. Therefore it cannot be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: june 27, 1997 +*/ + + var SECTION = "15.6.4.3-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Boolean.prototype.valueOf()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "x=true; x.valueOf=Boolean.prototype.valueOf;x.valueOf()", + true, + eval("x=true; x.valueOf=Boolean.prototype.valueOf;x.valueOf()") ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.3-4-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.3-4-n.js new file mode 100644 index 00000000000..fe7b17c17ac --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.3-4-n.js @@ -0,0 +1,71 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.4.3-4.js + ECMA Section: 15.6.4.3 Boolean.prototype.valueOf() + Description: Returns this boolean value. + + The valueOf function is not generic; it generates + a runtime error if its this value is not a Boolean + object. Therefore it cannot be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: june 27, 1997 +*/ + var SECTION = "15.6.4.3-4-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Boolean.prototype.valueOf()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "valof=Boolean.prototype.valueOf; x=new String( 'hello' ); x.valueOf=valof;x.valueOf()", + "error", + "valof=Boolean.prototype.valueOf; x=new String( 'hello' ); x.valueOf=valof;x.valueOf()" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.3.js new file mode 100644 index 00000000000..67b9a1bdd56 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.3.js @@ -0,0 +1,97 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.4.3.js + ECMA Section: 15.6.4.3 Boolean.prototype.valueOf() + Description: Returns this boolean value. + + The valueOf function is not generic; it generates + a runtime error if its this value is not a Boolean + object. Therefore it cannot be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: june 27, 1997 +*/ + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( "15.8.6.4", "new Boolean(1)", true, (new Boolean(1)).valueOf() ); + + array[item++] = new TestCase( "15.8.6.4", "new Boolean(0)", false, (new Boolean(0)).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean(-1)", true, (new Boolean(-1)).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean('1')", true, (new Boolean("1")).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean('0')", true, (new Boolean("0")).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean(true)", true, (new Boolean(true)).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean(false)", false, (new Boolean(false)).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean('true')", true, (new Boolean("true")).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean('false')", true, (new Boolean('false')).valueOf() ); + + array[item++] = new TestCase( "15.8.6.4", "new Boolean('')", false, (new Boolean('')).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean(null)", false, (new Boolean(null)).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean(void(0))", false, (new Boolean(void(0))).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean(-Infinity)", true, (new Boolean(Number.NEGATIVE_INFINITY)).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean(NaN)", false, (new Boolean(Number.NaN)).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean()", false, (new Boolean()).valueOf() ); + + array[item++] = new TestCase( "15.8.6.4", "new Boolean(x=1)", true, (new Boolean(x=1)).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean(x=0)", false, (new Boolean(x=0)).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean(x=false)", false, (new Boolean(x=false)).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean(x=true)", true, (new Boolean(x=true)).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean(x=null)", false, (new Boolean(x=null)).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean(x='')", false, (new Boolean(x="")).valueOf() ); + array[item++] = new TestCase( "15.8.6.4", "new Boolean(x=' ')", true, (new Boolean(x=" ")).valueOf() ); + + return ( array ); +} + +function test( array ) { + var passed = true; + + writeHeaderToLog("15.8.6.4.3 Properties of the Boolean Object: valueOf"); + + for ( i = 0; i < array.length; i++ ) { + + array[i].passed = writeTestCaseResult( + array[i].expect, + array[i].actual, + "( "+ array[i].description +" ).valueOf() = "+ array[i].actual ); + + array[i].reason += ( array[i].passed ) ? "" : "wrong value "; + + passed = ( array[i].passed ) ? passed : false; + + } + + stopTest(); + + // all tests must return a boolean value + return ( array ); +} + +// for TCMS, the testcases array must be global. + var testcases = getTestCases(); + +// all tests must call a function that returns a boolean value + test( testcases ); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.js new file mode 100644 index 00000000000..44d12c17a76 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Boolean/15.6.4.js @@ -0,0 +1,77 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.6.4.js + ECMA Section: Properties of the Boolean Prototype Object + Description: + The Boolean prototype object is itself a Boolean object (its [[Class]] is " + Boolean") whose value is false. + + The value of the internal [[Prototype]] property of the Boolean prototype + object is the Object prototype object (15.2.3.1). + + In following descriptions of functions that are properties of the Boolean + prototype object, the phrase "this Boolean object" refers to the object that + is the this value for the invocation of the function; it is an error if + this does not refer to an object for which the value of the internal + [[Class]] property is "Boolean". Also, the phrase "this boolean value" + refers to the boolean value represented by this Boolean object, that is, + the value of the internal [[Value]] property of this Boolean object. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.6.4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Properties of the Boolean Prototype Object"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( SECTION, + "Boolean.prototype == false", + true, + Boolean.prototype == false ); + + testcases[tc++] = new TestCase( SECTION, + "Boolean.prototype.toString = Object.prototype.toString; Boolean.prototype.toString()", + "[object Boolean]", + eval("Boolean.prototype.toString = Object.prototype.toString; Boolean.prototype.toString()") ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.1.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.1.1-1.js new file mode 100644 index 00000000000..4d936af0d63 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.1.1-1.js @@ -0,0 +1,87 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.1.1-1.js + ECMA Section: 15.9.1.1 Time Range + Description: + - leap seconds are ignored + - assume 86400000 ms / day + - numbers range fom +/- 9,007,199,254,740,991 + - ms precision for any instant that is within + approximately +/-285,616 years from 1 jan 1970 + UTC + - range of times supported is -100,000,000 days + to 100,000,000 days from 1 jan 1970 12:00 am + - time supported is 8.64e5*10e8 milliseconds from + 1 jan 1970 UTC (+/-273972.6027397 years) + + - this test generates its own data -- it does not + read data from a file. + Author: christine@netscape.com + Date: 7 july 1997 + + Static variables: + FOUR_HUNDRED_YEARS + +*/ + +function test() { + writeHeaderToLog("15.8.1.1 Time Range"); + + for ( M_SECS = 0, CURRENT_YEAR = 1970; + M_SECS < 8640000000000000; + tc++, M_SECS += FOUR_HUNDRED_YEARS, CURRENT_YEAR += 400 ) { + + testcases[tc] = new TestCase( SECTION, "new Date("+M_SECS+")", CURRENT_YEAR, (new Date( M_SECS)).getUTCFullYear() ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + if ( ! testcases[tc].passed ) { + testcases[tc].reason = "wrong year value"; + } + } + + stopTest(); + + return ( testcases ); +} + +// every one hundred years contains: +// 24 years with 366 days +// +// every four hundred years contains: +// 97 years with 366 days +// 303 years with 365 days +// +// 86400000*365*97 = 3067372800000 +// +86400000*366*303 = + 9555408000000 +// = 1.26227808e+13 + var FOUR_HUNDRED_YEARS = 1.26227808e+13; + var SECTION = "15.9.1.1-1"; + var tc = 0; + var testcases = new Array(); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.1.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.1.1-2.js new file mode 100644 index 00000000000..c66ce38a65f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.1.1-2.js @@ -0,0 +1,82 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.1.1-2.js + ECMA Section: 15.9.1.1 Time Range + Description: + - leap seconds are ignored + - assume 86400000 ms / day + - numbers range fom +/- 9,007,199,254,740,991 + - ms precision for any instant that is within + approximately +/-285,616 years from 1 jan 1970 + UTC + - range of times supported is -100,000,000 days + to 100,000,000 days from 1 jan 1970 12:00 am + - time supported is 8.64e5*10e8 milliseconds from + 1 jan 1970 UTC (+/-273972.6027397 years) + Author: christine@netscape.com + Date: 9 july 1997 +*/ + +function test() { + + writeHeaderToLog("15.8.1.1 Time Range"); + + for ( M_SECS = 0, CURRENT_YEAR = 1970; + M_SECS > -8640000000000000; + tc++, M_SECS -= FOUR_HUNDRED_YEARS, CURRENT_YEAR -= 400 ) { + + testcases[tc] = new TestCase( SECTION, "new Date("+M_SECS+")", CURRENT_YEAR, (new Date( M_SECS )).getUTCFullYear() ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description + " = " + + testcases[tc].actual ); + + if ( ! testcases[tc].passed ) { + testcases[tc].reason = "wrong year value"; + } + } + + stopTest(); + + return ( testcases ); +} + // every one hundred years contains: + // 24 years with 366 days + // + // every four hundred years contains: + // 97 years with 366 days + // 303 years with 365 days + // + // 86400000*366*97 = 3067372800000 + // +86400000*365*303 = + 9555408000000 + // = 1.26227808e+13 + + var FOUR_HUNDRED_YEARS = 1.26227808e+13; + var SECTION = "15.9.1.1-2"; + var tc = 0; + var testcases = new Array(); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.1.js new file mode 100644 index 00000000000..354580651a4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.1.js @@ -0,0 +1,108 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.2.1.js + ECMA Section: 15.9.2.1 Date constructor used as a function + Date( year, month, date, hours, minutes, seconds, ms ) + Description: The arguments are accepted, but are completely ignored. + A string is created and returned as if by the + expression (new Date()).toString(). + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var VERSION = "ECMA_1"; + startTest(); + var SECTION = "15.9.2.1"; + var TITLE = "Date Constructor used as a function"; + var TYPEOF = "string"; + var TOLERANCE = 1000; + + writeHeaderToLog("15.9.2.1 The Date Constructor Called as a Function: " + + "Date( year, month, date, hours, minutes, seconds, ms )" ); + var tc= 0; + var testcases = getTestCases(); + +// all tests must call a function that returns an array of TestCase objects. + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var TODAY = new Date(); + + // Dates around 1970 + + array[item++] = new TestCase( SECTION, "Date(1970,0,1,0,0,0,0)", (new Date()).toString(), Date(1970,0,1,0,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(1969,11,31,15,59,59,999)", (new Date()).toString(), Date(1969,11,31,15,59,59,999)) + array[item++] = new TestCase( SECTION, "Date(1969,11,31,16,0,0,0)", (new Date()).toString(), Date(1969,11,31,16,0,0,0)) + array[item++] = new TestCase( SECTION, "Date(1969,11,31,16,0,0,1)", (new Date()).toString(), Date(1969,11,31,16,0,0,1)) + + // Dates around 2000 + array[item++] = new TestCase( SECTION, "Date(1999,11,15,59,59,999)", (new Date()).toString(), Date(1999,11,15,59,59,999)); + array[item++] = new TestCase( SECTION, "Date(1999,11,16,0,0,0,0)", (new Date()).toString(), Date(1999,11,16,0,0,0,0)); + array[item++] = new TestCase( SECTION, "Date(1999,11,31,23,59,59,999)", (new Date()).toString(), Date(1999,11,31,23,59,59,999) ); + array[item++] = new TestCase( SECTION, "Date(2000,0,1,0,0,0,0)", (new Date()).toString(), Date(2000,0,0,0,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2000,0,1,0,0,0,1)", (new Date()).toString(), Date(2000,0,0,0,0,0,1) ); + + // Dates around 1900 + + array[item++] = new TestCase( SECTION, "Date(1899,11,31,23,59,59,999)", (new Date()).toString(), Date(1899,11,31,23,59,59,999)); + array[item++] = new TestCase( SECTION, "Date(1900,0,1,0,0,0,0)", (new Date()).toString(), Date(1900,0,1,0,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(1900,0,1,0,0,0,1)", (new Date()).toString(), Date(1900,0,1,0,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(1899,11,31,16,0,0,0,0)", (new Date()).toString(), Date(1899,11,31,16,0,0,0,0)); + + // Dates around feb 29, 2000 + + array[item++] = new TestCase( SECTION, "Date( 2000,1,29,0,0,0,0)", (new Date()).toString(), Date(2000,1,29,0,0,0,0)); + array[item++] = new TestCase( SECTION, "Date( 2000,1,28,23,59,59,999)", (new Date()).toString(), Date( 2000,1,28,23,59,59,999)); + array[item++] = new TestCase( SECTION, "Date( 2000,1,27,16,0,0,0)", (new Date()).toString(), Date(2000,1,27,16,0,0,0)); + + // Dates around jan 1, 2005 + array[item++] = new TestCase( SECTION, "Date(2004,11,31,23,59,59,999)", (new Date()).toString(), Date(2004,11,31,23,59,59,999)); + array[item++] = new TestCase( SECTION, "Date(2005,0,1,0,0,0,0)", (new Date()).toString(), Date(2005,0,1,0,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2005,0,1,0,0,0,1)", (new Date()).toString(), Date(2005,0,1,0,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(2004,11,31,16,0,0,0,0)", (new Date()).toString(), Date(2004,11,31,16,0,0,0,0)); + + // Dates around jan 1, 2032 + array[item++] = new TestCase( SECTION, "Date(2031,11,31,23,59,59,999)", (new Date()).toString(), Date(2031,11,31,23,59,59,999)); + array[item++] = new TestCase( SECTION, "Date(2032,0,1,0,0,0,0)", (new Date()).toString(), Date(2032,0,1,0,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2032,0,1,0,0,0,1)", (new Date()).toString(), Date(2032,0,1,0,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(2031,11,31,16,0,0,0,0)", (new Date()).toString(), Date(2031,11,31,16,0,0,0,0)); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-1.js new file mode 100644 index 00000000000..8ad56941030 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-1.js @@ -0,0 +1,105 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.2.2.js + ECMA Section: 15.9.2.2 Date constructor used as a function + Date( year, month, date, hours, minutes, seconds ) + Description: The arguments are accepted, but are completely ignored. + A string is created and returned as if by the + expression (new Date()).toString(). + + Author: christine@netscape.com + Date: 28 october 1997 + Version: 9706 + +*/ + var VERSION = 9706; + startTest(); + var SECTION = "15.9.2.2"; + var TOLERANCE = 100; + var TITLE = "The Date Constructor Called as a Function"; + + writeHeaderToLog(SECTION+" "+TITLE ); + var tc= 0; + var testcases = getTestCases(); + +// all tests must call a function that returns an array of TestCase objects. + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // Dates around 1970 + + array[item++] = new TestCase( SECTION, "Date(1970,0,1,0,0,0)", (new Date()).toString(), Date(1970,0,1,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(1969,11,31,15,59,59)", (new Date()).toString(), Date(1969,11,31,15,59,59)) + array[item++] = new TestCase( SECTION, "Date(1969,11,31,16,0,0)", (new Date()).toString(), Date(1969,11,31,16,0,0)) + array[item++] = new TestCase( SECTION, "Date(1969,11,31,16,0,1)", (new Date()).toString(), Date(1969,11,31,16,0,1)) +/* + // Dates around 2000 + array[item++] = new TestCase( SECTION, "Date(1999,11,15,59,59)", (new Date()).toString(), Date(1999,11,15,59,59)); + array[item++] = new TestCase( SECTION, "Date(1999,11,16,0,0,0)", (new Date()).toString(), Date(1999,11,16,0,0,0)); + array[item++] = new TestCase( SECTION, "Date(1999,11,31,23,59,59)", (new Date()).toString(), Date(1999,11,31,23,59,59) ); + array[item++] = new TestCase( SECTION, "Date(2000,0,1,0,0,0)", (new Date()).toString(), Date(2000,0,0,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2000,0,1,0,0,1)", (new Date()).toString(), Date(2000,0,0,0,0,1) ); + + // Dates around 1900 + + array[item++] = new TestCase( SECTION, "Date(1899,11,31,23,59,59)", (new Date()).toString(), Date(1899,11,31,23,59,59)); + array[item++] = new TestCase( SECTION, "Date(1900,0,1,0,0,0)", (new Date()).toString(), Date(1900,0,1,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(1900,0,1,0,0,1)", (new Date()).toString(), Date(1900,0,1,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(1899,11,31,16,0,0,0)", (new Date()).toString(), Date(1899,11,31,16,0,0,0)); + + // Dates around feb 29, 2000 + + array[item++] = new TestCase( SECTION, "Date( 2000,1,29,0,0,0)", (new Date()).toString(), Date(2000,1,29,0,0,0)); + array[item++] = new TestCase( SECTION, "Date( 2000,1,28,23,59,59)", (new Date()).toString(), Date( 2000,1,28,23,59,59)); + array[item++] = new TestCase( SECTION, "Date( 2000,1,27,16,0,0)", (new Date()).toString(), Date(2000,1,27,16,0,0)); + + // Dates around jan 1, 2005 + array[item++] = new TestCase( SECTION, "Date(2004,11,31,23,59,59)", (new Date()).toString(), Date(2004,11,31,23,59,59)); + array[item++] = new TestCase( SECTION, "Date(2005,0,1,0,0,0)", (new Date()).toString(), Date(2005,0,1,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2005,0,1,0,0,1)", (new Date()).toString(), Date(2005,0,1,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(2004,11,31,16,0,0,0)", (new Date()).toString(), Date(2004,11,31,16,0,0,0)); + + // Dates around jan 1, 2032 + array[item++] = new TestCase( SECTION, "Date(2031,11,31,23,59,59)", (new Date()).toString(), Date(2031,11,31,23,59,59)); + array[item++] = new TestCase( SECTION, "Date(2032,0,1,0,0,0)", (new Date()).toString(), Date(2032,0,1,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2032,0,1,0,0,1)", (new Date()).toString(), Date(2032,0,1,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(2031,11,31,16,0,0,0)", (new Date()).toString(), Date(2031,11,31,16,0,0,0)); +*/ + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-2.js new file mode 100644 index 00000000000..5baaf532752 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-2.js @@ -0,0 +1,99 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.2.2.js + ECMA Section: 15.9.2.2 Date constructor used as a function + Date( year, month, date, hours, minutes, seconds ) + Description: The arguments are accepted, but are completely ignored. + A string is created and returned as if by the + expression (new Date()).toString(). + + Author: christine@netscape.com + Date: 28 october 1997 + Version: 9706 + +*/ + var VERSION = 9706; + startTest(); + var SECTION = "15.9.2.2"; + var TOLERANCE = 100; + var TITLE = "The Date Constructor Called as a Function"; + + writeHeaderToLog(SECTION+" "+TITLE ); + var tc= 0; + var testcases = getTestCases(); + +// all tests must call a function that returns an array of TestCase objects. + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // Dates around 2000 + array[item++] = new TestCase( SECTION, "Date(1999,11,15,59,59)", (new Date()).toString(), Date(1999,11,15,59,59)); + array[item++] = new TestCase( SECTION, "Date(1999,11,16,0,0,0)", (new Date()).toString(), Date(1999,11,16,0,0,0)); + array[item++] = new TestCase( SECTION, "Date(1999,11,31,23,59,59)", (new Date()).toString(), Date(1999,11,31,23,59,59) ); + array[item++] = new TestCase( SECTION, "Date(2000,0,1,0,0,0)", (new Date()).toString(), Date(2000,0,0,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2000,0,1,0,0,1)", (new Date()).toString(), Date(2000,0,0,0,0,1) ); + +/* + // Dates around 1900 + + array[item++] = new TestCase( SECTION, "Date(1899,11,31,23,59,59)", (new Date()).toString(), Date(1899,11,31,23,59,59)); + array[item++] = new TestCase( SECTION, "Date(1900,0,1,0,0,0)", (new Date()).toString(), Date(1900,0,1,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(1900,0,1,0,0,1)", (new Date()).toString(), Date(1900,0,1,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(1899,11,31,16,0,0,0)", (new Date()).toString(), Date(1899,11,31,16,0,0,0)); + + // Dates around feb 29, 2000 + + array[item++] = new TestCase( SECTION, "Date( 2000,1,29,0,0,0)", (new Date()).toString(), Date(2000,1,29,0,0,0)); + array[item++] = new TestCase( SECTION, "Date( 2000,1,28,23,59,59)", (new Date()).toString(), Date( 2000,1,28,23,59,59)); + array[item++] = new TestCase( SECTION, "Date( 2000,1,27,16,0,0)", (new Date()).toString(), Date(2000,1,27,16,0,0)); + + // Dates around jan 1, 2005 + array[item++] = new TestCase( SECTION, "Date(2004,11,31,23,59,59)", (new Date()).toString(), Date(2004,11,31,23,59,59)); + array[item++] = new TestCase( SECTION, "Date(2005,0,1,0,0,0)", (new Date()).toString(), Date(2005,0,1,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2005,0,1,0,0,1)", (new Date()).toString(), Date(2005,0,1,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(2004,11,31,16,0,0,0)", (new Date()).toString(), Date(2004,11,31,16,0,0,0)); + + // Dates around jan 1, 2032 + array[item++] = new TestCase( SECTION, "Date(2031,11,31,23,59,59)", (new Date()).toString(), Date(2031,11,31,23,59,59)); + array[item++] = new TestCase( SECTION, "Date(2032,0,1,0,0,0)", (new Date()).toString(), Date(2032,0,1,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2032,0,1,0,0,1)", (new Date()).toString(), Date(2032,0,1,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(2031,11,31,16,0,0,0)", (new Date()).toString(), Date(2031,11,31,16,0,0,0)); +*/ + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-3.js new file mode 100644 index 00000000000..59255e2f578 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-3.js @@ -0,0 +1,92 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.2.2.js + ECMA Section: 15.9.2.2 Date constructor used as a function + Date( year, month, date, hours, minutes, seconds ) + Description: The arguments are accepted, but are completely ignored. + A string is created and returned as if by the + expression (new Date()).toString(). + + Author: christine@netscape.com + Date: 28 october 1997 + Version: 9706 + +*/ + var VERSION = 9706; + startTest(); + var SECTION = "15.9.2.2"; + var TOLERANCE = 100; + var TITLE = "The Date Constructor Called as a Function"; + + writeHeaderToLog(SECTION+" "+TITLE ); + var tc= 0; + var testcases = getTestCases(); + +// all tests must call a function that returns an array of TestCase objects. + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // Dates around 1900 + + array[item++] = new TestCase( SECTION, "Date(1899,11,31,23,59,59)", (new Date()).toString(), Date(1899,11,31,23,59,59)); + array[item++] = new TestCase( SECTION, "Date(1900,0,1,0,0,0)", (new Date()).toString(), Date(1900,0,1,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(1900,0,1,0,0,1)", (new Date()).toString(), Date(1900,0,1,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(1899,11,31,16,0,0,0)", (new Date()).toString(), Date(1899,11,31,16,0,0,0)); + +/* + // Dates around feb 29, 2000 + + array[item++] = new TestCase( SECTION, "Date( 2000,1,29,0,0,0)", (new Date()).toString(), Date(2000,1,29,0,0,0)); + array[item++] = new TestCase( SECTION, "Date( 2000,1,28,23,59,59)", (new Date()).toString(), Date( 2000,1,28,23,59,59)); + array[item++] = new TestCase( SECTION, "Date( 2000,1,27,16,0,0)", (new Date()).toString(), Date(2000,1,27,16,0,0)); + + // Dates around jan 1, 2005 + array[item++] = new TestCase( SECTION, "Date(2004,11,31,23,59,59)", (new Date()).toString(), Date(2004,11,31,23,59,59)); + array[item++] = new TestCase( SECTION, "Date(2005,0,1,0,0,0)", (new Date()).toString(), Date(2005,0,1,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2005,0,1,0,0,1)", (new Date()).toString(), Date(2005,0,1,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(2004,11,31,16,0,0,0)", (new Date()).toString(), Date(2004,11,31,16,0,0,0)); + + // Dates around jan 1, 2032 + array[item++] = new TestCase( SECTION, "Date(2031,11,31,23,59,59)", (new Date()).toString(), Date(2031,11,31,23,59,59)); + array[item++] = new TestCase( SECTION, "Date(2032,0,1,0,0,0)", (new Date()).toString(), Date(2032,0,1,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2032,0,1,0,0,1)", (new Date()).toString(), Date(2032,0,1,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(2031,11,31,16,0,0,0)", (new Date()).toString(), Date(2031,11,31,16,0,0,0)); +*/ + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-4.js new file mode 100644 index 00000000000..b63bb3e960c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-4.js @@ -0,0 +1,85 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.2.2.js + ECMA Section: 15.9.2.2 Date constructor used as a function + Date( year, month, date, hours, minutes, seconds ) + Description: The arguments are accepted, but are completely ignored. + A string is created and returned as if by the + expression (new Date()).toString(). + + Author: christine@netscape.com + Date: 28 october 1997 + Version: 9706 + +*/ + var VERSION = 9706; + startTest(); + var SECTION = "15.9.2.2"; + var TOLERANCE = 100; + var TITLE = "The Date Constructor Called as a Function"; + + writeHeaderToLog(SECTION+" "+TITLE ); + var tc= 0; + var testcases = getTestCases(); + +// all tests must call a function that returns an array of TestCase objects. + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // Dates around feb 29, 2000 + + array[item++] = new TestCase( SECTION, "Date( 2000,1,29,0,0,0)", (new Date()).toString(), Date(2000,1,29,0,0,0)); + array[item++] = new TestCase( SECTION, "Date( 2000,1,28,23,59,59)", (new Date()).toString(), Date( 2000,1,28,23,59,59)); + array[item++] = new TestCase( SECTION, "Date( 2000,1,27,16,0,0)", (new Date()).toString(), Date(2000,1,27,16,0,0)); + +/* + // Dates around jan 1, 2005 + array[item++] = new TestCase( SECTION, "Date(2004,11,31,23,59,59)", (new Date()).toString(), Date(2004,11,31,23,59,59)); + array[item++] = new TestCase( SECTION, "Date(2005,0,1,0,0,0)", (new Date()).toString(), Date(2005,0,1,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2005,0,1,0,0,1)", (new Date()).toString(), Date(2005,0,1,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(2004,11,31,16,0,0,0)", (new Date()).toString(), Date(2004,11,31,16,0,0,0)); + + // Dates around jan 1, 2032 + array[item++] = new TestCase( SECTION, "Date(2031,11,31,23,59,59)", (new Date()).toString(), Date(2031,11,31,23,59,59)); + array[item++] = new TestCase( SECTION, "Date(2032,0,1,0,0,0)", (new Date()).toString(), Date(2032,0,1,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2032,0,1,0,0,1)", (new Date()).toString(), Date(2032,0,1,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(2031,11,31,16,0,0,0)", (new Date()).toString(), Date(2031,11,31,16,0,0,0)); +*/ + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-5.js new file mode 100644 index 00000000000..54226822fe0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-5.js @@ -0,0 +1,78 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.2.2.js + ECMA Section: 15.9.2.2 Date constructor used as a function + Date( year, month, date, hours, minutes, seconds ) + Description: The arguments are accepted, but are completely ignored. + A string is created and returned as if by the + expression (new Date()).toString(). + + Author: christine@netscape.com + Date: 28 october 1997 + Version: 9706 + +*/ + var VERSION = 9706; + startTest(); + var SECTION = "15.9.2.2"; + var TOLERANCE = 100; + var TITLE = "The Date Constructor Called as a Function"; + + writeHeaderToLog(SECTION+" "+TITLE ); + var tc= 0; + var testcases = getTestCases(); + +// all tests must call a function that returns an array of TestCase objects. + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // Dates around jan 1, 2005 + array[item++] = new TestCase( SECTION, "Date(2004,11,31,23,59,59)", (new Date()).toString(), Date(2004,11,31,23,59,59)); + array[item++] = new TestCase( SECTION, "Date(2005,0,1,0,0,0)", (new Date()).toString(), Date(2005,0,1,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2005,0,1,0,0,1)", (new Date()).toString(), Date(2005,0,1,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(2004,11,31,16,0,0,0)", (new Date()).toString(), Date(2004,11,31,16,0,0,0)); +/* + // Dates around jan 1, 2032 + array[item++] = new TestCase( SECTION, "Date(2031,11,31,23,59,59)", (new Date()).toString(), Date(2031,11,31,23,59,59)); + array[item++] = new TestCase( SECTION, "Date(2032,0,1,0,0,0)", (new Date()).toString(), Date(2032,0,1,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2032,0,1,0,0,1)", (new Date()).toString(), Date(2032,0,1,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(2031,11,31,16,0,0,0)", (new Date()).toString(), Date(2031,11,31,16,0,0,0)); +*/ + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-6.js new file mode 100644 index 00000000000..8e269d05575 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.2.2-6.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.2.2.js + ECMA Section: 15.9.2.2 Date constructor used as a function + Date( year, month, date, hours, minutes, seconds ) + Description: The arguments are accepted, but are completely ignored. + A string is created and returned as if by the + expression (new Date()).toString(). + + Author: christine@netscape.com + Date: 28 october 1997 + Version: 9706 + +*/ + var VERSION = 9706; + startTest(); + var SECTION = "15.9.2.2"; + var TOLERANCE = 100; + var TITLE = "The Date Constructor Called as a Function"; + + writeHeaderToLog(SECTION+" "+TITLE ); + var tc= 0; + var testcases = getTestCases(); + +// all tests must call a function that returns an array of TestCase objects. + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // Dates around jan 1, 2032 + array[item++] = new TestCase( SECTION, "Date(2031,11,31,23,59,59)", (new Date()).toString(), Date(2031,11,31,23,59,59)); + array[item++] = new TestCase( SECTION, "Date(2032,0,1,0,0,0)", (new Date()).toString(), Date(2032,0,1,0,0,0) ); + array[item++] = new TestCase( SECTION, "Date(2032,0,1,0,0,1)", (new Date()).toString(), Date(2032,0,1,0,0,1) ); + array[item++] = new TestCase( SECTION, "Date(2031,11,31,16,0,0,0)", (new Date()).toString(), Date(2031,11,31,16,0,0,0)); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.1-1.js new file mode 100644 index 00000000000..30900554ae0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.1-1.js @@ -0,0 +1,274 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.3.1.js + ECMA Section: 15.9.3.1 new Date (year, month, date, hours, minutes, seconds, ms) + Description: The [[Prototype]] property of the newly constructed + object is set to the original Date prototype object, + the one that is the initial value of Date.prototype. + + The [[Class]] property of the newly constructed object + is set as follows: + 1. Call ToNumber(year) + 2. Call ToNumber(month) + 3. Call ToNumber(date) + 4. Call ToNumber(hours) + 5. Call ToNumber(minutes) + 6. Call ToNumber(seconds) + 7. Call ToNumber(ms) + 8. If Result(1) is NaN and 0 <= ToInteger(Result(1)) <= + 99, Result(8) is 1900+ToInteger(Result(1)); otherwise, + Result(8) is Result(1) + 9. Compute MakeDay(Result(8), Result(2), Result(3) + 10. Compute MakeTime(Result(4), Result(5), Result(6), + Result(7) + 11. Compute MakeDate(Result(9), Result(10)) + 12. Set the [[Value]] property of the newly constructed + object to TimeClip(UTC(Result(11))). + + + This tests the returned value of a newly constructed + Date object. + + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var SECTION = "15.9.3.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "new Date( year, month, date, hours, minutes, seconds, ms )"; + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + getTestCases(); + test(); + +function getTestCases( ) { + // all the "ResultArrays" below are hard-coded to Pacific Standard Time values - + var TZ_ADJUST = TZ_PST * msPerHour; + + // Dates around 1970 + + addNewTestCase( new Date( 1969,11,31,15,59,59,999), + "new Date( 1969,11,31,15,59,59,999)", + [TIME_1970-1,1969,11,31,3,23,59,59,999,1969,11,31,3,15,59,59,999] ); + + addNewTestCase( new Date( 1969,11,31,23,59,59,999), + "new Date( 1969,11,31,23,59,59,999)", + [TIME_1970-TZ_ADJUST-1,1970,0,1,4,7,59,59,999,1969,11,31,3,23,59,59,999] ); + + addNewTestCase( new Date( 1970,0,1,0,0,0,0), + "new Date( 1970,0,1,0,0,0,0)", + [TIME_1970-TZ_ADJUST,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); + + addNewTestCase( new Date( 1969,11,31,16,0,0,0), + "new Date( 1969,11,31,16,0,0,0)", + [TIME_1970,1970,0,1,4,0,0,0,0,1969,11,31,3,16,0,0,0] ); + + addNewTestCase( new Date(1969,12,1,0,0,0,0), + "new Date(1969,12,1,0,0,0,0)", + [TIME_1970-TZ_ADJUST,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); + + addNewTestCase( new Date(1969,11,32,0,0,0,0), + "new Date(1969,11,32,0,0,0,0)", + [TIME_1970-TZ_ADJUST,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); + + addNewTestCase( new Date(1969,11,31,24,0,0,0), + "new Date(1969,11,31,24,0,0,0)", + [TIME_1970-TZ_ADJUST,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); + + addNewTestCase( new Date(1969,11,31,23,60,0,0), + "new Date(1969,11,31,23,60,0,0)", + [TIME_1970-TZ_ADJUST,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); + + addNewTestCase( new Date(1969,11,31,23,59,60,0), + "new Date(1969,11,31,23,59,60,0)", + [TIME_1970-TZ_ADJUST,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); + + addNewTestCase( new Date(1969,11,31,23,59,59,1000), + "new Date(1969,11,31,23,59,59,1000)", + [TIME_1970-TZ_ADJUST,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); + + // Dates around 2000 + + addNewTestCase( new Date( 1999,11,31,15,59,59,999), + "new Date( 1999,11,31,15,59,59,999)", + [TIME_2000-1,1999,11,31,5,23,59,59,999,1999,11,31,5,15,59,59,999] ); + + addNewTestCase( new Date( 1999,11,31,16,0,0,0), + "new Date( 1999,11,31,16,0,0,0)", + [TIME_2000,2000,0,1,6,0,0,0,0,1999,11,31,5, 16,0,0,0] ); + + addNewTestCase( new Date( 1999,11,31,23,59,59,999), + "new Date( 1999,11,31,23,59,59,999)", + [TIME_2000-TZ_ADJUST-1,2000,0,1,6,7,59,59,999,1999,11,31,5,23,59,59,999] ); + + addNewTestCase( new Date( 2000,0,1,0,0,0,0), + "new Date( 2000,0,1,0,0,0,0)", + [TIME_2000-TZ_ADJUST,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date( 2000,0,1,0,0,0,1), + "new Date( 2000,0,1,0,0,0,1)", + [TIME_2000-TZ_ADJUST+1,2000,0,1,6,8,0,0,1,2000,0,1,6,0,0,0,1] ); + + // Dates around 29 Feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + ( 30 * msPerDay ) + ( 29 * msPerDay ); + + addNewTestCase( new Date(2000,1,28,16,0,0,0), + "new Date(2000,1,28,16,0,0,0)", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); + + addNewTestCase( new Date(2000,1,29,0,0,0,0), + "new Date(2000,1,29,0,0,0,0)", + [UTC_FEB_29_2000-TZ_ADJUST,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + addNewTestCase( new Date(2000,1,28,24,0,0,0), + "new Date(2000,1,28,24,0,0,0)", + [UTC_FEB_29_2000-TZ_ADJUST,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + // Dates around 1900 + + addNewTestCase( new Date(1899,11,31,16,0,0,0), + "new Date(1899,11,31,16,0,0,0)", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date(1899,11,31,15,59,59,999), + "new Date(1899,11,31,15,59,59,999)", + [TIME_1900-1,1899,11,31,0,23,59,59,999,1899,11,31,0,15,59,59,999] ); + + addNewTestCase( new Date(1899,11,31,23,59,59,999), + "new Date(1899,11,31,23,59,59,999)", + [TIME_1900-TZ_ADJUST-1,1900,0,1,1,7,59,59,999,1899,11,31,0,23,59,59,999] ); + + addNewTestCase( new Date(1900,0,1,0,0,0,0), + "new Date(1900,0,1,0,0,0,0)", + [TIME_1900-TZ_ADJUST,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date(1900,0,1,0,0,0,1), + "new Date(1900,0,1,0,0,0,1)", + [TIME_1900-TZ_ADJUST+1,1900,0,1,1,8,0,0,1,1900,0,1,1,0,0,0,1] ); + + // Dates around 2005 + + var UTC_YEAR_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001) + + TimeInYear(2002) + TimeInYear(2003) + TimeInYear(2004); + + addNewTestCase( new Date(2005,0,1,0,0,0,0), + "new Date(2005,0,1,0,0,0,0)", + [UTC_YEAR_2005-TZ_ADJUST,2005,0,1,6,8,0,0,0,2005,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date(2004,11,31,16,0,0,0), + "new Date(2004,11,31,16,0,0,0)", + [UTC_YEAR_2005,2005,0,1,6,0,0,0,0,2004,11,31,5,16,0,0,0] ); + +/* + This test case is incorrect. Need to fix the DaylightSavings functions in + shell.js for this to work properly. + + // Daylight Savings test case + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + addNewTestCase( new Date(1998,3,5,1,59,59,999), + "new Date(1998,3,5,1,59,59,999)", + [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); + + addNewTestCase( new Date(1998,3,5,2,0,0,0), + "new Date(1998,3,5,2,0,0,0)", + [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addNewTestCase ( new Date(1998,9,25,1,59,59,999), + "new Date(1998,9,25,1,59,59,999)", + [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); + + addNewTestCase ( new Date(1998,9,25,2,0,0,0), + "new Date(1998,9,25,2,0,0,0)", + [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); +*/ +} + +function addNewTestCase( DateCase, DateString, ResultArray ) { + //adjust hard-coded ResultArray for tester's timezone instead of PST + adjustResultArray(ResultArray); + + var item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); +} + + +function test() { + for( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + return testcases; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.1-2.js new file mode 100644 index 00000000000..13d0ab66e6c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.1-2.js @@ -0,0 +1,231 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.3.1.js + ECMA Section: 15.9.3.1 new Date (year, month, date, hours, minutes, seconds, ms) + Description: The [[Prototype]] property of the newly constructed + object is set to the original Date prototype object, + the one that is the initial value of Date.prototype. + + The [[Class]] property of the newly constructed object + is set as follows: + 1. Call ToNumber(year) + 2. Call ToNumber(month) + 3. Call ToNumber(date) + 4. Call ToNumber(hours) + 5. Call ToNumber(minutes) + 6. Call ToNumber(seconds) + 7. Call ToNumber(ms) + 8. If Result(1) is NaN and 0 <= ToInteger(Result(1)) <= + 99, Result(8) is 1900+ToInteger(Result(1)); otherwise, + Result(8) is Result(1) + 9. Compute MakeDay(Result(8), Result(2), Result(3) + 10. Compute MakeTime(Result(4), Result(5), Result(6), + Result(7) + 11. Compute MakeDate(Result(9), Result(10)) + 12. Set the [[Value]] property of the newly constructed + object to TimeClip(UTC(Result(11))). + + + This tests the returned value of a newly constructed + Date object. + + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var SECTION = "15.9.3.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "new Date( year, month, date, hours, minutes, seconds, ms )"; + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + getTestCases(); + test(); + +function getTestCases( ) { + // all the "ResultArrays" below are hard-coded to Pacific Standard Time values - + var TZ_ADJUST = TZ_PST * msPerHour; + + // Dates around 2000 + + addNewTestCase( new Date( 1999,11,31,15,59,59,999), + "new Date( 1999,11,31,15,59,59,999)", + [TIME_2000-1,1999,11,31,5,23,59,59,999,1999,11,31,5,15,59,59,999] ); + + addNewTestCase( new Date( 1999,11,31,16,0,0,0), + "new Date( 1999,11,31,16,0,0,0)", + [TIME_2000,2000,0,1,6,0,0,0,0,1999,11,31,5, 16,0,0,0] ); + + addNewTestCase( new Date( 1999,11,31,23,59,59,999), + "new Date( 1999,11,31,23,59,59,999)", + [TIME_2000-TZ_ADJUST-1,2000,0,1,6,7,59,59,999,1999,11,31,5,23,59,59,999] ); + + addNewTestCase( new Date( 2000,0,1,0,0,0,0), + "new Date( 2000,0,1,0,0,0,0)", + [TIME_2000-TZ_ADJUST,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date( 2000,0,1,0,0,0,1), + "new Date( 2000,0,1,0,0,0,1)", + [TIME_2000-TZ_ADJUST+1,2000,0,1,6,8,0,0,1,2000,0,1,6,0,0,0,1] ); +/* + // Dates around 29 Feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + ( 30 * msPerDay ) + ( 29 * msPerDay ); + + addNewTestCase( new Date(2000,1,28,16,0,0,0), + "new Date(2000,1,28,16,0,0,0)", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); + + addNewTestCase( new Date(2000,1,29,0,0,0,0), + "new Date(2000,1,29,0,0,0,0)", + [UTC_FEB_29_2000-TZ_ADJUST,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + addNewTestCase( new Date(2000,1,28,24,0,0,0), + "new Date(2000,1,28,24,0,0,0)", + [UTC_FEB_29_2000-TZ_ADJUST,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + // Dates around 1900 + + addNewTestCase( new Date(1899,11,31,16,0,0,0), + "new Date(1899,11,31,16,0,0,0)", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date(1899,11,31,15,59,59,999), + "new Date(1899,11,31,15,59,59,999)", + [TIME_1900-1,1899,11,31,0,23,59,59,999,1899,11,31,0,15,59,59,999] ); + + addNewTestCase( new Date(1899,11,31,23,59,59,999), + "new Date(1899,11,31,23,59,59,999)", + [TIME_1900-TZ_ADJUST-1,1900,0,1,1,7,59,59,999,1899,11,31,0,23,59,59,999] ); + + addNewTestCase( new Date(1900,0,1,0,0,0,0), + "new Date(1900,0,1,0,0,0,0)", + [TIME_1900-TZ_ADJUST,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date(1900,0,1,0,0,0,1), + "new Date(1900,0,1,0,0,0,1)", + [TIME_1900-TZ_ADJUST+1,1900,0,1,1,8,0,0,1,1900,0,1,1,0,0,0,1] ); + + // Dates around 2005 + + var UTC_YEAR_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001) + + TimeInYear(2002) + TimeInYear(2003) + TimeInYear(2004); + + addNewTestCase( new Date(2005,0,1,0,0,0,0), + "new Date(2005,0,1,0,0,0,0)", + [UTC_YEAR_2005-TZ_ADJUST,2005,0,1,6,8,0,0,0,2005,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date(2004,11,31,16,0,0,0), + "new Date(2004,11,31,16,0,0,0)", + [UTC_YEAR_2005,2005,0,1,6,0,0,0,0,2004,11,31,5,16,0,0,0] ); +*/ +/* + This test case is incorrect. Need to fix the DaylightSavings functions in + shell.js for this to work properly. + + // Daylight Savings test case + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + addNewTestCase( new Date(1998,3,5,1,59,59,999), + "new Date(1998,3,5,1,59,59,999)", + [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); + + addNewTestCase( new Date(1998,3,5,2,0,0,0), + "new Date(1998,3,5,2,0,0,0)", + [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addNewTestCase ( new Date(1998,9,25,1,59,59,999), + "new Date(1998,9,25,1,59,59,999)", + [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); + + addNewTestCase ( new Date(1998,9,25,2,0,0,0), + "new Date(1998,9,25,2,0,0,0)", + [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); +*/ +} + +function addNewTestCase( DateCase, DateString, ResultArray ) { + //adjust hard-coded ResultArray for tester's timezone instead of PST + adjustResultArray(ResultArray); + + var item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); +} + +function test() { + for( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + return testcases; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.1-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.1-3.js new file mode 100644 index 00000000000..ced3027afe5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.1-3.js @@ -0,0 +1,209 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.3.1.js + ECMA Section: 15.9.3.1 new Date (year, month, date, hours, minutes, seconds, ms) + Description: The [[Prototype]] property of the newly constructed + object is set to the original Date prototype object, + the one that is the initial value of Date.prototype. + + The [[Class]] property of the newly constructed object + is set as follows: + 1. Call ToNumber(year) + 2. Call ToNumber(month) + 3. Call ToNumber(date) + 4. Call ToNumber(hours) + 5. Call ToNumber(minutes) + 6. Call ToNumber(seconds) + 7. Call ToNumber(ms) + 8. If Result(1) is NaN and 0 <= ToInteger(Result(1)) <= + 99, Result(8) is 1900+ToInteger(Result(1)); otherwise, + Result(8) is Result(1) + 9. Compute MakeDay(Result(8), Result(2), Result(3) + 10. Compute MakeTime(Result(4), Result(5), Result(6), + Result(7) + 11. Compute MakeDate(Result(9), Result(10)) + 12. Set the [[Value]] property of the newly constructed + object to TimeClip(UTC(Result(11))). + + + This tests the returned value of a newly constructed + Date object. + + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var SECTION = "15.9.3.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "new Date( year, month, date, hours, minutes, seconds, ms )"; + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + getTestCases(); + test(); + +function getTestCases( ) { + // all the "ResultArrays" below are hard-coded to Pacific Standard Time values - + var TZ_ADJUST = TZ_PST * msPerHour; + + // Dates around 29 Feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + ( 30 * msPerDay ) + ( 29 * msPerDay ); + + addNewTestCase( new Date(2000,1,28,16,0,0,0), + "new Date(2000,1,28,16,0,0,0)", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); + + addNewTestCase( new Date(2000,1,29,0,0,0,0), + "new Date(2000,1,29,0,0,0,0)", + [UTC_FEB_29_2000-TZ_ADJUST,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + addNewTestCase( new Date(2000,1,28,24,0,0,0), + "new Date(2000,1,28,24,0,0,0)", + [UTC_FEB_29_2000-TZ_ADJUST,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); +/* + // Dates around 1900 + + addNewTestCase( new Date(1899,11,31,16,0,0,0), + "new Date(1899,11,31,16,0,0,0)", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date(1899,11,31,15,59,59,999), + "new Date(1899,11,31,15,59,59,999)", + [TIME_1900-1,1899,11,31,0,23,59,59,999,1899,11,31,0,15,59,59,999] ); + + addNewTestCase( new Date(1899,11,31,23,59,59,999), + "new Date(1899,11,31,23,59,59,999)", + [TIME_1900-TZ_ADJUST-1,1900,0,1,1,7,59,59,999,1899,11,31,0,23,59,59,999] ); + + addNewTestCase( new Date(1900,0,1,0,0,0,0), + "new Date(1900,0,1,0,0,0,0)", + [TIME_1900-TZ_ADJUST,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date(1900,0,1,0,0,0,1), + "new Date(1900,0,1,0,0,0,1)", + [TIME_1900-TZ_ADJUST+1,1900,0,1,1,8,0,0,1,1900,0,1,1,0,0,0,1] ); + + // Dates around 2005 + + var UTC_YEAR_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001) + + TimeInYear(2002) + TimeInYear(2003) + TimeInYear(2004); + + addNewTestCase( new Date(2005,0,1,0,0,0,0), + "new Date(2005,0,1,0,0,0,0)", + [UTC_YEAR_2005-TZ_ADJUST,2005,0,1,6,8,0,0,0,2005,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date(2004,11,31,16,0,0,0), + "new Date(2004,11,31,16,0,0,0)", + [UTC_YEAR_2005,2005,0,1,6,0,0,0,0,2004,11,31,5,16,0,0,0] ); +*/ +/* + This test case is incorrect. Need to fix the DaylightSavings functions in + shell.js for this to work properly. + + // Daylight Savings test case + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + addNewTestCase( new Date(1998,3,5,1,59,59,999), + "new Date(1998,3,5,1,59,59,999)", + [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); + + addNewTestCase( new Date(1998,3,5,2,0,0,0), + "new Date(1998,3,5,2,0,0,0)", + [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addNewTestCase ( new Date(1998,9,25,1,59,59,999), + "new Date(1998,9,25,1,59,59,999)", + [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); + + addNewTestCase ( new Date(1998,9,25,2,0,0,0), + "new Date(1998,9,25,2,0,0,0)", + [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); +*/ +} + +function addNewTestCase( DateCase, DateString, ResultArray ) { + //adjust hard-coded ResultArray for tester's timezone instead of PST + adjustResultArray(ResultArray); + + var item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); +} + +function test() { + for( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + return testcases; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.1-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.1-4.js new file mode 100644 index 00000000000..0f18b12cf5b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.1-4.js @@ -0,0 +1,193 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.3.1.js + ECMA Section: 15.9.3.1 new Date (year, month, date, hours, minutes, seconds, ms) + Description: The [[Prototype]] property of the newly constructed + object is set to the original Date prototype object, + the one that is the initial value of Date.prototype. + + The [[Class]] property of the newly constructed object + is set as follows: + 1. Call ToNumber(year) + 2. Call ToNumber(month) + 3. Call ToNumber(date) + 4. Call ToNumber(hours) + 5. Call ToNumber(minutes) + 6. Call ToNumber(seconds) + 7. Call ToNumber(ms) + 8. If Result(1) is NaN and 0 <= ToInteger(Result(1)) <= + 99, Result(8) is 1900+ToInteger(Result(1)); otherwise, + Result(8) is Result(1) + 9. Compute MakeDay(Result(8), Result(2), Result(3) + 10. Compute MakeTime(Result(4), Result(5), Result(6), + Result(7) + 11. Compute MakeDate(Result(9), Result(10)) + 12. Set the [[Value]] property of the newly constructed + object to TimeClip(UTC(Result(11))). + + + This tests the returned value of a newly constructed + Date object. + + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var SECTION = "15.9.3.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "new Date( year, month, date, hours, minutes, seconds, ms )"; + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + getTestCases(); + test(); + +function getTestCases( ) { + // all the "ResultArrays" below are hard-coded to Pacific Standard Time values - + var TZ_ADJUST = TZ_PST * msPerHour; + + // Dates around 1900 + + addNewTestCase( new Date(1899,11,31,16,0,0,0), + "new Date(1899,11,31,16,0,0,0)", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date(1899,11,31,15,59,59,999), + "new Date(1899,11,31,15,59,59,999)", + [TIME_1900-1,1899,11,31,0,23,59,59,999,1899,11,31,0,15,59,59,999] ); + + addNewTestCase( new Date(1899,11,31,23,59,59,999), + "new Date(1899,11,31,23,59,59,999)", + [TIME_1900-TZ_ADJUST-1,1900,0,1,1,7,59,59,999,1899,11,31,0,23,59,59,999] ); + + addNewTestCase( new Date(1900,0,1,0,0,0,0), + "new Date(1900,0,1,0,0,0,0)", + [TIME_1900-TZ_ADJUST,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date(1900,0,1,0,0,0,1), + "new Date(1900,0,1,0,0,0,1)", + [TIME_1900-TZ_ADJUST+1,1900,0,1,1,8,0,0,1,1900,0,1,1,0,0,0,1] ); +/* + // Dates around 2005 + + var UTC_YEAR_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001) + + TimeInYear(2002) + TimeInYear(2003) + TimeInYear(2004); + + addNewTestCase( new Date(2005,0,1,0,0,0,0), + "new Date(2005,0,1,0,0,0,0)", + [UTC_YEAR_2005-TZ_ADJUST,2005,0,1,6,8,0,0,0,2005,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date(2004,11,31,16,0,0,0), + "new Date(2004,11,31,16,0,0,0)", + [UTC_YEAR_2005,2005,0,1,6,0,0,0,0,2004,11,31,5,16,0,0,0] ); +*/ +/* + This test case is incorrect. Need to fix the DaylightSavings functions in + shell.js for this to work properly. + + // Daylight Savings test case + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + addNewTestCase( new Date(1998,3,5,1,59,59,999), + "new Date(1998,3,5,1,59,59,999)", + [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); + + addNewTestCase( new Date(1998,3,5,2,0,0,0), + "new Date(1998,3,5,2,0,0,0)", + [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addNewTestCase ( new Date(1998,9,25,1,59,59,999), + "new Date(1998,9,25,1,59,59,999)", + [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); + + addNewTestCase ( new Date(1998,9,25,2,0,0,0), + "new Date(1998,9,25,2,0,0,0)", + [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); +*/ +} + +function addNewTestCase( DateCase, DateString, ResultArray ) { + //adjust hard-coded ResultArray for tester's timezone instead of PST + adjustResultArray(ResultArray); + + var item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); +} + +function test() { + for( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + return testcases; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.1-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.1-5.js new file mode 100644 index 00000000000..0b7d4362c2e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.1-5.js @@ -0,0 +1,170 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.3.1.js + ECMA Section: 15.9.3.1 new Date (year, month, date, hours, minutes, seconds, ms) + Description: The [[Prototype]] property of the newly constructed + object is set to the original Date prototype object, + the one that is the initial value of Date.prototype. + + The [[Class]] property of the newly constructed object + is set as follows: + 1. Call ToNumber(year) + 2. Call ToNumber(month) + 3. Call ToNumber(date) + 4. Call ToNumber(hours) + 5. Call ToNumber(minutes) + 6. Call ToNumber(seconds) + 7. Call ToNumber(ms) + 8. If Result(1) is NaN and 0 <= ToInteger(Result(1)) <= + 99, Result(8) is 1900+ToInteger(Result(1)); otherwise, + Result(8) is Result(1) + 9. Compute MakeDay(Result(8), Result(2), Result(3) + 10. Compute MakeTime(Result(4), Result(5), Result(6), + Result(7) + 11. Compute MakeDate(Result(9), Result(10)) + 12. Set the [[Value]] property of the newly constructed + object to TimeClip(UTC(Result(11))). + + + This tests the returned value of a newly constructed + Date object. + + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var SECTION = "15.9.3.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "new Date( year, month, date, hours, minutes, seconds, ms )"; + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + getTestCases(); + test(); + +function getTestCases( ) { + // all the "ResultArrays" below are hard-coded to Pacific Standard Time values - + var TZ_ADJUST = TZ_PST * msPerHour; + + // Dates around 2005 + + var UTC_YEAR_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001) + + TimeInYear(2002) + TimeInYear(2003) + TimeInYear(2004); + + addNewTestCase( new Date(2005,0,1,0,0,0,0), + "new Date(2005,0,1,0,0,0,0)", + [UTC_YEAR_2005-TZ_ADJUST,2005,0,1,6,8,0,0,0,2005,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date(2004,11,31,16,0,0,0), + "new Date(2004,11,31,16,0,0,0)", + [UTC_YEAR_2005,2005,0,1,6,0,0,0,0,2004,11,31,5,16,0,0,0] ); +/* + This test case is incorrect. Need to fix the DaylightSavings functions in + shell.js for this to work properly. + + // Daylight Savings test case + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + addNewTestCase( new Date(1998,3,5,1,59,59,999), + "new Date(1998,3,5,1,59,59,999)", + [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); + + addNewTestCase( new Date(1998,3,5,2,0,0,0), + "new Date(1998,3,5,2,0,0,0)", + [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addNewTestCase ( new Date(1998,9,25,1,59,59,999), + "new Date(1998,9,25,1,59,59,999)", + [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); + + addNewTestCase ( new Date(1998,9,25,2,0,0,0), + "new Date(1998,9,25,2,0,0,0)", + [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); +*/ +} + +function addNewTestCase( DateCase, DateString, ResultArray ) { + //adjust hard-coded ResultArray for tester's timezone instead of PST + adjustResultArray(ResultArray); + + var item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); +} + +function test() { + for( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + return testcases; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.2-1.js new file mode 100644 index 00000000000..718d3145050 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.2-1.js @@ -0,0 +1,241 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.3.1.js + ECMA Section: 15.9.3.1 new Date (year, month, date, hours, minutes, seconds, ms) + Description: The [[Prototype]] property of the newly constructed + object is set to the original Date prototype object, + the one that is the initial value of Date.prototype. + + The [[Class]] property of the newly constructed object + is set as follows: + 1. Call ToNumber(year) + 2. Call ToNumber(month) + 3. Call ToNumber(date) + 4. Call ToNumber(hours) + 5. Call ToNumber(minutes) + 6. Call ToNumber(seconds) + 7. Call ToNumber(ms) + 8. If Result(1)is NaN and 0 <= ToInteger(Result(1)) <= + 99, Result(8) is 1900+ToInteger(Result(1)); otherwise, + Result(8) is Result(1) + 9. Compute MakeDay(Result(8), Result(2), Result(3) + 10. Compute MakeTime(Result(4), Result(5), Result(6), + Result(7) + 11. Compute MakeDate(Result(9), Result(10)) + 12. Set the [[Value]] property of the newly constructed + object to TimeClip(UTC(Result(11))). + + + This tests the returned value of a newly constructed + Date object. + + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + +// for TCMS, the testcases array must be global. + var SECTION = "15.9.3.1"; + var TITLE = "Date( year, month, date, hours, minutes, seconds )"; + + writeHeaderToLog( SECTION+" " +TITLE ); + + var testcases = new Array(); + getTestCases(); + +// all tests must call a function that returns an array of TestCase object + test(); + +function getTestCases( ) { + + // Dates around 1970 + + addNewTestCase( new Date( 1969,11,31,15,59,59), + "new Date( 1969,11,31,15,59,59)", + [-1000,1969,11,31,3,23,59,59,0,1969,11,31,3,15,59,59,0] ); + + addNewTestCase( new Date( 1969,11,31,16,0,0), + "new Date( 1969,11,31,16,0,0)", + [0,1970,0,1,4,0,0,0,0,1969,11,31,3,16,0,0,0] ); + + addNewTestCase( new Date( 1969,11,31,23,59,59), + "new Date( 1969,11,31,23,59,59)", + [28799000,1970,0,1,4,7,59,59,0,1969,11,31,3,23,59,59,0] ); + + addNewTestCase( new Date( 1970, 0, 1, 0, 0, 0), + "new Date( 1970, 0, 1, 0, 0, 0)", + [28800000,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); + + addNewTestCase( new Date( 1969,11,31,16,0,0), + "new Date( 1969,11,31,16,0,0)", + [0,1970,0,1,4,0,0,0,0,1969,11,31,3,16,0,0,0] ); +/* + // Dates around 2000 + + addNewTestCase( new Date( 1999,11,31,15,59,59), + "new Date( 1999,11,31,15,59,59)", + [946684799000,1999,11,31,5,23,59,59,0,1999,11,31,5,15,59,59,0] ); + + addNewTestCase( new Date( 1999,11,31,16,0,0), + "new Date( 1999,11,31,16,0,0)", + [946684800000,2000,0,1,6,0,0,0,0,1999,11,31,5, 16,0,0,0] ); + + addNewTestCase( new Date( 2000,0,1,0,0,0), + "new Date( 2000,0,1,0,0,0)", + [946713600000,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); + + // Dates around 1900 + + addNewTestCase( new Date(1899,11,31,16,0,0), + "new Date(1899,11,31,16,0,0)", + [-2208988800000,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date(1899,11,31,15,59,59), + "new Date(1899,11,31,15,59,59)", + [-2208988801000,1899,11,31,0,23,59,59,0,1899,11,31,0,15,59,59,0] ); + + addNewTestCase( new Date(1900,0,1,0,0,0), + "new Date(1900,0,1,0,0,0)", + [-2208960000000,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date(1900,0,1,0,0,1), + "new Date(1900,0,1,0,0,1)", + [-2208959999000,1900,0,1,1,8,0,1,0,1900,0,1,1,0,0,1,0] ); + + var UTC_FEB_29_2000 = TIME_2000 + msPerDay*31 + msPerDay*28; + var PST_FEB_29_2000 = UTC_FEB_29_2000 + 8*msPerHour; + + // Dates around Feb 29, 2000 + addNewTestCase( new Date(2000,1,28,16,0,0,0), + "new Date(2000,1,28,16,0,0,0)", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0,0] ); + + addNewTestCase( new Date(2000,1,29,0,0,0,0), + "new Date(2000,1,29,0,0,0,0)", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + addNewTestCase( new Date(2000,1,29,24,0,0,0), + "new Date(2000,1,29,24,0,0,0)", + [PST_FEB_29_2000+msPerDay,2000,2,1,3,8,0,0,0,2000,2,1,3,0,0,0,0] ); + + // Dates around Jan 1, 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001) + + TimeInYear(2002)+ TimeInYear(2003) + TimeInYear(2004); + var PST_JAN_1_2005 = UTC_JAN_1_2005 + 8*msPerHour; + + addNewTestCase( new Date(2005,0,1,0,0,0,0), + "new Date(2005,0,1,0,0,0,0)", + [PST_JAN_1_2005,2005,0,1,6,8,0,0,0,2005,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date(2004,11,31,16,0,0,0), + "new Date(2004,11,31,16,0,0,0)", + [UTC_JAN_1_2005,2005,0,1,6,0,0,0,0,2004,11,31,5,16,0,0,0] ); +*/ +/* + This test case is incorrect. Need to fix the DaylightSavings functions in + shell.js for this to work properly. + + // Daylight Savings Time + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + addNewTestCase( new Date(1998,3,5,1,59,59,999), + "new Date(1998,3,5,1,59,59,999)", + [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); + + addNewTestCase( new Date(1998,3,5,2,0,0,0), + "new Date(1998,3,5,2,0,0,0)", + [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addNewTestCase ( new Date(1998,9,25,1,59,59,999), + "new Date(1998,9,25,1,59,59,999)", + [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); + + addNewTestCase ( new Date(1998,9,25,2,0,0,0), + "new Date(1998,9,25,2,0,0,0)", + [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); +*/ +} + +function addNewTestCase( DateCase, DateString, ResultArray ) { + //adjust hard-coded ResultArray for tester's timezone instead of PST + adjustResultArray(ResultArray); + + item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); + +} + +function test() { + for( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + return testcases; +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.2-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.2-2.js new file mode 100644 index 00000000000..b110f521172 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.2-2.js @@ -0,0 +1,219 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.3.1.js + ECMA Section: 15.9.3.1 new Date (year, month, date, hours, minutes, seconds, ms) + Description: The [[Prototype]] property of the newly constructed + object is set to the original Date prototype object, + the one that is the initial value of Date.prototype. + + The [[Class]] property of the newly constructed object + is set as follows: + 1. Call ToNumber(year) + 2. Call ToNumber(month) + 3. Call ToNumber(date) + 4. Call ToNumber(hours) + 5. Call ToNumber(minutes) + 6. Call ToNumber(seconds) + 7. Call ToNumber(ms) + 8. If Result(1)is NaN and 0 <= ToInteger(Result(1)) <= + 99, Result(8) is 1900+ToInteger(Result(1)); otherwise, + Result(8) is Result(1) + 9. Compute MakeDay(Result(8), Result(2), Result(3) + 10. Compute MakeTime(Result(4), Result(5), Result(6), + Result(7) + 11. Compute MakeDate(Result(9), Result(10)) + 12. Set the [[Value]] property of the newly constructed + object to TimeClip(UTC(Result(11))). + + + This tests the returned value of a newly constructed + Date object. + + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + +// for TCMS, the testcases array must be global. + var SECTION = "15.9.3.1"; + var TITLE = "Date( year, month, date, hours, minutes, seconds )"; + + writeHeaderToLog( SECTION+" " +TITLE ); + + var testcases = new Array(); + getTestCases(); + +// all tests must call a function that returns an array of TestCase object + test(); + +function getTestCases( ) { + + // Dates around 2000 + + addNewTestCase( new Date( 1999,11,31,15,59,59), + "new Date( 1999,11,31,15,59,59)", + [946684799000,1999,11,31,5,23,59,59,0,1999,11,31,5,15,59,59,0] ); + + addNewTestCase( new Date( 1999,11,31,16,0,0), + "new Date( 1999,11,31,16,0,0)", + [946684800000,2000,0,1,6,0,0,0,0,1999,11,31,5, 16,0,0,0] ); + + addNewTestCase( new Date( 2000,0,1,0,0,0), + "new Date( 2000,0,1,0,0,0)", + [946713600000,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); +/* + // Dates around 1900 + + addNewTestCase( new Date(1899,11,31,16,0,0), + "new Date(1899,11,31,16,0,0)", + [-2208988800000,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date(1899,11,31,15,59,59), + "new Date(1899,11,31,15,59,59)", + [-2208988801000,1899,11,31,0,23,59,59,0,1899,11,31,0,15,59,59,0] ); + + addNewTestCase( new Date(1900,0,1,0,0,0), + "new Date(1900,0,1,0,0,0)", + [-2208960000000,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date(1900,0,1,0,0,1), + "new Date(1900,0,1,0,0,1)", + [-2208959999000,1900,0,1,1,8,0,1,0,1900,0,1,1,0,0,1,0] ); + + var UTC_FEB_29_2000 = TIME_2000 + msPerDay*31 + msPerDay*28; + var PST_FEB_29_2000 = UTC_FEB_29_2000 + 8*msPerHour; + + // Dates around Feb 29, 2000 + addNewTestCase( new Date(2000,1,28,16,0,0,0), + "new Date(2000,1,28,16,0,0,0)", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0,0] ); + + addNewTestCase( new Date(2000,1,29,0,0,0,0), + "new Date(2000,1,29,0,0,0,0)", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + addNewTestCase( new Date(2000,1,29,24,0,0,0), + "new Date(2000,1,29,24,0,0,0)", + [PST_FEB_29_2000+msPerDay,2000,2,1,3,8,0,0,0,2000,2,1,3,0,0,0,0] ); + + // Dates around Jan 1, 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001) + + TimeInYear(2002)+ TimeInYear(2003) + TimeInYear(2004); + var PST_JAN_1_2005 = UTC_JAN_1_2005 + 8*msPerHour; + + addNewTestCase( new Date(2005,0,1,0,0,0,0), + "new Date(2005,0,1,0,0,0,0)", + [PST_JAN_1_2005,2005,0,1,6,8,0,0,0,2005,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date(2004,11,31,16,0,0,0), + "new Date(2004,11,31,16,0,0,0)", + [UTC_JAN_1_2005,2005,0,1,6,0,0,0,0,2004,11,31,5,16,0,0,0] ); +*/ +/* + This test case is incorrect. Need to fix the DaylightSavings functions in + shell.js for this to work properly. + + // Daylight Savings Time + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + addNewTestCase( new Date(1998,3,5,1,59,59,999), + "new Date(1998,3,5,1,59,59,999)", + [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); + + addNewTestCase( new Date(1998,3,5,2,0,0,0), + "new Date(1998,3,5,2,0,0,0)", + [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addNewTestCase ( new Date(1998,9,25,1,59,59,999), + "new Date(1998,9,25,1,59,59,999)", + [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); + + addNewTestCase ( new Date(1998,9,25,2,0,0,0), + "new Date(1998,9,25,2,0,0,0)", + [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); +*/ +} + +function addNewTestCase( DateCase, DateString, ResultArray ) { + //adjust hard-coded ResultArray for tester's timezone instead of PST + adjustResultArray(ResultArray); + + item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); + +} + +function test() { + for( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + return testcases; +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.2-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.2-3.js new file mode 100644 index 00000000000..9e57730169b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.2-3.js @@ -0,0 +1,205 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.3.1.js + ECMA Section: 15.9.3.1 new Date (year, month, date, hours, minutes, seconds, ms) + Description: The [[Prototype]] property of the newly constructed + object is set to the original Date prototype object, + the one that is the initial value of Date.prototype. + + The [[Class]] property of the newly constructed object + is set as follows: + 1. Call ToNumber(year) + 2. Call ToNumber(month) + 3. Call ToNumber(date) + 4. Call ToNumber(hours) + 5. Call ToNumber(minutes) + 6. Call ToNumber(seconds) + 7. Call ToNumber(ms) + 8. If Result(1)is NaN and 0 <= ToInteger(Result(1)) <= + 99, Result(8) is 1900+ToInteger(Result(1)); otherwise, + Result(8) is Result(1) + 9. Compute MakeDay(Result(8), Result(2), Result(3) + 10. Compute MakeTime(Result(4), Result(5), Result(6), + Result(7) + 11. Compute MakeDate(Result(9), Result(10)) + 12. Set the [[Value]] property of the newly constructed + object to TimeClip(UTC(Result(11))). + + + This tests the returned value of a newly constructed + Date object. + + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + +// for TCMS, the testcases array must be global. + var SECTION = "15.9.3.1"; + var TITLE = "Date( year, month, date, hours, minutes, seconds )"; + + writeHeaderToLog( SECTION+" " +TITLE ); + + var testcases = new Array(); + getTestCases(); + +// all tests must call a function that returns an array of TestCase object + test(); + +function getTestCases( ) { + + // Dates around 1900 + + addNewTestCase( new Date(1899,11,31,16,0,0), + "new Date(1899,11,31,16,0,0)", + [-2208988800000,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date(1899,11,31,15,59,59), + "new Date(1899,11,31,15,59,59)", + [-2208988801000,1899,11,31,0,23,59,59,0,1899,11,31,0,15,59,59,0] ); + + addNewTestCase( new Date(1900,0,1,0,0,0), + "new Date(1900,0,1,0,0,0)", + [-2208960000000,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date(1900,0,1,0,0,1), + "new Date(1900,0,1,0,0,1)", + [-2208959999000,1900,0,1,1,8,0,1,0,1900,0,1,1,0,0,1,0] ); +/* + var UTC_FEB_29_2000 = TIME_2000 + msPerDay*31 + msPerDay*28; + var PST_FEB_29_2000 = UTC_FEB_29_2000 + 8*msPerHour; + + // Dates around Feb 29, 2000 + addNewTestCase( new Date(2000,1,28,16,0,0,0), + "new Date(2000,1,28,16,0,0,0)", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0,0] ); + + addNewTestCase( new Date(2000,1,29,0,0,0,0), + "new Date(2000,1,29,0,0,0,0)", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + addNewTestCase( new Date(2000,1,29,24,0,0,0), + "new Date(2000,1,29,24,0,0,0)", + [PST_FEB_29_2000+msPerDay,2000,2,1,3,8,0,0,0,2000,2,1,3,0,0,0,0] ); + + // Dates around Jan 1, 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001) + + TimeInYear(2002)+ TimeInYear(2003) + TimeInYear(2004); + var PST_JAN_1_2005 = UTC_JAN_1_2005 + 8*msPerHour; + + addNewTestCase( new Date(2005,0,1,0,0,0,0), + "new Date(2005,0,1,0,0,0,0)", + [PST_JAN_1_2005,2005,0,1,6,8,0,0,0,2005,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date(2004,11,31,16,0,0,0), + "new Date(2004,11,31,16,0,0,0)", + [UTC_JAN_1_2005,2005,0,1,6,0,0,0,0,2004,11,31,5,16,0,0,0] ); +*/ +/* + This test case is incorrect. Need to fix the DaylightSavings functions in + shell.js for this to work properly. + + // Daylight Savings Time + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + addNewTestCase( new Date(1998,3,5,1,59,59,999), + "new Date(1998,3,5,1,59,59,999)", + [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); + + addNewTestCase( new Date(1998,3,5,2,0,0,0), + "new Date(1998,3,5,2,0,0,0)", + [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addNewTestCase ( new Date(1998,9,25,1,59,59,999), + "new Date(1998,9,25,1,59,59,999)", + [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); + + addNewTestCase ( new Date(1998,9,25,2,0,0,0), + "new Date(1998,9,25,2,0,0,0)", + [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); +*/ +} + +function addNewTestCase( DateCase, DateString, ResultArray ) { + //adjust hard-coded ResultArray for tester's timezone instead of PST + adjustResultArray(ResultArray); + + item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); + +} + +function test() { + for( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + return testcases; +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.2-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.2-4.js new file mode 100644 index 00000000000..6b6b0c4b862 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.2-4.js @@ -0,0 +1,188 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.3.1.js + ECMA Section: 15.9.3.1 new Date (year, month, date, hours, minutes, seconds, ms) + Description: The [[Prototype]] property of the newly constructed + object is set to the original Date prototype object, + the one that is the initial value of Date.prototype. + + The [[Class]] property of the newly constructed object + is set as follows: + 1. Call ToNumber(year) + 2. Call ToNumber(month) + 3. Call ToNumber(date) + 4. Call ToNumber(hours) + 5. Call ToNumber(minutes) + 6. Call ToNumber(seconds) + 7. Call ToNumber(ms) + 8. If Result(1)is NaN and 0 <= ToInteger(Result(1)) <= + 99, Result(8) is 1900+ToInteger(Result(1)); otherwise, + Result(8) is Result(1) + 9. Compute MakeDay(Result(8), Result(2), Result(3) + 10. Compute MakeTime(Result(4), Result(5), Result(6), + Result(7) + 11. Compute MakeDate(Result(9), Result(10)) + 12. Set the [[Value]] property of the newly constructed + object to TimeClip(UTC(Result(11))). + + + This tests the returned value of a newly constructed + Date object. + + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + +// for TCMS, the testcases array must be global. + var SECTION = "15.9.3.1"; + var TITLE = "Date( year, month, date, hours, minutes, seconds )"; + + writeHeaderToLog( SECTION+" " +TITLE ); + + var testcases = new Array(); + getTestCases(); + +// all tests must call a function that returns an array of TestCase object + test(); + +function getTestCases( ) { + + + var UTC_FEB_29_2000 = TIME_2000 + msPerDay*31 + msPerDay*28; + var PST_FEB_29_2000 = UTC_FEB_29_2000 + 8*msPerHour; + + // Dates around Feb 29, 2000 + addNewTestCase( new Date(2000,1,28,16,0,0,0), + "new Date(2000,1,28,16,0,0,0)", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0,0] ); + + addNewTestCase( new Date(2000,1,29,0,0,0,0), + "new Date(2000,1,29,0,0,0,0)", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + addNewTestCase( new Date(2000,1,29,24,0,0,0), + "new Date(2000,1,29,24,0,0,0)", + [PST_FEB_29_2000+msPerDay,2000,2,1,3,8,0,0,0,2000,2,1,3,0,0,0,0] ); +/* + // Dates around Jan 1, 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001) + + TimeInYear(2002)+ TimeInYear(2003) + TimeInYear(2004); + var PST_JAN_1_2005 = UTC_JAN_1_2005 + 8*msPerHour; + + addNewTestCase( new Date(2005,0,1,0,0,0,0), + "new Date(2005,0,1,0,0,0,0)", + [PST_JAN_1_2005,2005,0,1,6,8,0,0,0,2005,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date(2004,11,31,16,0,0,0), + "new Date(2004,11,31,16,0,0,0)", + [UTC_JAN_1_2005,2005,0,1,6,0,0,0,0,2004,11,31,5,16,0,0,0] ); +*/ +/* + This test case is incorrect. Need to fix the DaylightSavings functions in + shell.js for this to work properly. + + // Daylight Savings Time + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + addNewTestCase( new Date(1998,3,5,1,59,59,999), + "new Date(1998,3,5,1,59,59,999)", + [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); + + addNewTestCase( new Date(1998,3,5,2,0,0,0), + "new Date(1998,3,5,2,0,0,0)", + [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addNewTestCase ( new Date(1998,9,25,1,59,59,999), + "new Date(1998,9,25,1,59,59,999)", + [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); + + addNewTestCase ( new Date(1998,9,25,2,0,0,0), + "new Date(1998,9,25,2,0,0,0)", + [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); +*/ +} + +function addNewTestCase( DateCase, DateString, ResultArray ) { + //adjust hard-coded ResultArray for tester's timezone instead of PST + adjustResultArray(ResultArray); + + item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); + +} + +function test() { + for( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + return testcases; +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.2-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.2-5.js new file mode 100644 index 00000000000..798320b32c0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.2-5.js @@ -0,0 +1,170 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.3.1.js + ECMA Section: 15.9.3.1 new Date (year, month, date, hours, minutes, seconds, ms) + Description: The [[Prototype]] property of the newly constructed + object is set to the original Date prototype object, + the one that is the initial value of Date.prototype. + + The [[Class]] property of the newly constructed object + is set as follows: + 1. Call ToNumber(year) + 2. Call ToNumber(month) + 3. Call ToNumber(date) + 4. Call ToNumber(hours) + 5. Call ToNumber(minutes) + 6. Call ToNumber(seconds) + 7. Call ToNumber(ms) + 8. If Result(1)is NaN and 0 <= ToInteger(Result(1)) <= + 99, Result(8) is 1900+ToInteger(Result(1)); otherwise, + Result(8) is Result(1) + 9. Compute MakeDay(Result(8), Result(2), Result(3) + 10. Compute MakeTime(Result(4), Result(5), Result(6), + Result(7) + 11. Compute MakeDate(Result(9), Result(10)) + 12. Set the [[Value]] property of the newly constructed + object to TimeClip(UTC(Result(11))). + + + This tests the returned value of a newly constructed + Date object. + + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + +// for TCMS, the testcases array must be global. + var SECTION = "15.9.3.1"; + var TITLE = "Date( year, month, date, hours, minutes, seconds )"; + + writeHeaderToLog( SECTION+" " +TITLE ); + + var testcases = new Array(); + getTestCases(); + +// all tests must call a function that returns an array of TestCase object + test(); + +function getTestCases( ) { + + // Dates around Jan 1, 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001) + + TimeInYear(2002)+ TimeInYear(2003) + TimeInYear(2004); + var PST_JAN_1_2005 = UTC_JAN_1_2005 + 8*msPerHour; + + addNewTestCase( new Date(2005,0,1,0,0,0,0), + "new Date(2005,0,1,0,0,0,0)", + [PST_JAN_1_2005,2005,0,1,6,8,0,0,0,2005,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date(2004,11,31,16,0,0,0), + "new Date(2004,11,31,16,0,0,0)", + [UTC_JAN_1_2005,2005,0,1,6,0,0,0,0,2004,11,31,5,16,0,0,0] ); +/* + This test case is incorrect. Need to fix the DaylightSavings functions in + shell.js for this to work properly. + + // Daylight Savings Time + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + addNewTestCase( new Date(1998,3,5,1,59,59,999), + "new Date(1998,3,5,1,59,59,999)", + [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); + + addNewTestCase( new Date(1998,3,5,2,0,0,0), + "new Date(1998,3,5,2,0,0,0)", + [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addNewTestCase ( new Date(1998,9,25,1,59,59,999), + "new Date(1998,9,25,1,59,59,999)", + [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); + + addNewTestCase ( new Date(1998,9,25,2,0,0,0), + "new Date(1998,9,25,2,0,0,0)", + [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); +*/ +} + +function addNewTestCase( DateCase, DateString, ResultArray ) { + //adjust hard-coded ResultArray for tester's timezone instead of PST + adjustResultArray(ResultArray); + + item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); + +} + +function test() { + for( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + return testcases; +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.8-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.8-1.js new file mode 100644 index 00000000000..644f37c791b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.8-1.js @@ -0,0 +1,300 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.3.8.js + ECMA Section: 15.9.3.8 The Date Constructor + new Date( value ) + Description: The [[Prototype]] property of the newly constructed + object is set to the original Date prototype object, + the one that is the initial valiue of Date.prototype. + + The [[Class]] property of the newly constructed object is + set to "Date". + + The [[Value]] property of the newly constructed object is + set as follows: + + 1. Call ToPrimitive(value) + 2. If Type( Result(1) ) is String, then go to step 5. + 3. Let V be ToNumber( Result(1) ). + 4. Set the [[Value]] property of the newly constructed + object to TimeClip(V) and return. + 5. Parse Result(1) as a date, in exactly the same manner + as for the parse method. Let V be the time value for + this date. + 6. Go to step 4. + + Author: christine@netscape.com + Date: 28 october 1997 + Version: 9706 + +*/ + + var VERSION = "ECMA_1"; + startTest(); + var SECTION = "15.9.3.8"; + var TYPEOF = "object"; + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + + +// for TCMS, the testcases array must be global. + var tc= 0; + var TITLE = "Date constructor: new Date( value )"; + var SECTION = "15.9.3.8"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION +" " + TITLE ); + + testcases = new Array(); + getTestCases(); + +// all tests must call a function that returns a boolean value + test(); + +function getTestCases( ) { + // all the "ResultArrays" below are hard-coded to Pacific Standard Time values - + var TZ_ADJUST = -TZ_PST * msPerHour; + + + // Dates around 1970 + addNewTestCase( new Date(0), + "new Date(0)", + [0,1970,0,1,4,0,0,0,0,1969,11,31,3,16,0,0,0] ); + + addNewTestCase( new Date(1), + "new Date(1)", + [1,1970,0,1,4,0,0,0,1,1969,11,31,3,16,0,0,1] ); + + addNewTestCase( new Date(true), + "new Date(true)", + [1,1970,0,1,4,0,0,0,1,1969,11,31,3,16,0,0,1] ); + + addNewTestCase( new Date(false), + "new Date(false)", + [0,1970,0,1,4,0,0,0,0,1969,11,31,3,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(0)).toString() ), + "new Date(\""+ (new Date(0)).toString()+"\" )", + [0,1970,0,1,4,0,0,0,0,1969,11,31,3,16,0,0,0] ); +/* +// addNewTestCase( "new Date(\""+ (new Date(0)).toLocaleString()+"\")", [0,1970,0,1,4,0,0,0,0,1969,11,31,3,16,0,0,0] ); + + addNewTestCase( new Date((new Date(0)).toUTCString()), + "new Date(\""+ (new Date(0)).toUTCString()+"\" )", + [0,1970,0,1,4,0,0,0,0,1969,11,31,3,16,0,0,0] ); + + addNewTestCase( new Date((new Date(1)).toString()), + "new Date(\""+ (new Date(1)).toString()+"\" )", + [0,1970,0,1,4,0,0,0,0,1969,11,31,3,16,0,0,0] ); + + addNewTestCase( new Date( TZ_ADJUST ), + "new Date(" + TZ_ADJUST+")", + [TZ_ADJUST,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); + + addNewTestCase( new Date((new Date(TZ_ADJUST)).toString()), + "new Date(\""+ (new Date(TZ_ADJUST)).toString()+"\")", + [TZ_ADJUST,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); + +// addNewTestCase( "new Date(\""+ (new Date(TZ_ADJUST)).toLocaleString()+"\")",[TZ_ADJUST,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(TZ_ADJUST)).toUTCString() ), + "new Date(\""+ (new Date(TZ_ADJUST)).toUTCString()+"\")", + [TZ_ADJUST,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); + + // Dates around 2000 + + addNewTestCase( new Date(TIME_2000+TZ_ADJUST), + "new Date(" +(TIME_2000+TZ_ADJUST)+")", + [TIME_2000+TZ_ADJUST,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date(TIME_2000), + "new Date(" +TIME_2000+")", + [TIME_2000,2000,0,1,6,0,0,0,0,1999,11,31,5,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_2000+TZ_ADJUST)).toString()), + "new Date(\"" +(new Date(TIME_2000+TZ_ADJUST)).toString()+"\")", + [TIME_2000+TZ_ADJUST,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date((new Date(TIME_2000)).toString()), + "new Date(\"" +(new Date(TIME_2000)).toString()+"\")", + [TIME_2000,2000,0,1,6,0,0,0,0,1999,11,31,5,16,0,0,0] ); + +// addNewTestCase( "new Date(\"" +(new Date(TIME_2000+TZ_ADJUST)).toLocaleString()+"\")", [TIME_2000+TZ_ADJUST,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); +// addNewTestCase( "new Date(\"" +(new Date(TIME_2000)).toLocaleString()+"\")", [TIME_2000,2000,0,1,6,0,0,0,0,1999,11,31,5,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_2000+TZ_ADJUST)).toUTCString()), + "new Date(\"" +(new Date(TIME_2000+TZ_ADJUST)).toUTCString()+"\")", + [TIME_2000+TZ_ADJUST,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_2000)).toUTCString()), + "new Date(\"" +(new Date(TIME_2000)).toUTCString()+"\")", + [TIME_2000,2000,0,1,6,0,0,0,0,1999,11,31,5,16,0,0,0] ); + + // Dates around Feb 29, 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerDay; + var PST_FEB_29_2000 = UTC_FEB_29_2000 + TZ_ADJUST; + + addNewTestCase( new Date(UTC_FEB_29_2000), + "new Date("+UTC_FEB_29_2000+")", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); + + addNewTestCase( new Date(PST_FEB_29_2000), + "new Date("+PST_FEB_29_2000+")", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(UTC_FEB_29_2000)).toString() ), + "new Date(\""+(new Date(UTC_FEB_29_2000)).toString()+"\")", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_FEB_29_2000)).toString() ), + "new Date(\""+(new Date(PST_FEB_29_2000)).toString()+"\")", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + +// Parsing toLocaleString() is not guaranteed by ECMA. +// addNewTestCase( "new Date(\""+(new Date(UTC_FEB_29_2000)).toLocaleString()+"\")", [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); +// addNewTestCase( "new Date(\""+(new Date(PST_FEB_29_2000)).toLocaleString()+"\")", [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(UTC_FEB_29_2000)).toGMTString() ), + "new Date(\""+(new Date(UTC_FEB_29_2000)).toGMTString()+"\")", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_FEB_29_2000)).toGMTString() ), + "new Date(\""+(new Date(PST_FEB_29_2000)).toGMTString()+"\")", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + // Dates around 1900 + + var PST_1900 = TIME_1900 + 8*msPerHour; + + addNewTestCase( new Date( TIME_1900 ), + "new Date("+TIME_1900+")", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date(PST_1900), + "new Date("+PST_1900+")", + [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_1900)).toString() ), + "new Date(\""+(new Date(TIME_1900)).toString()+"\")", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_1900)).toString() ), + "new Date(\""+(new Date(PST_1900 )).toString()+"\")", + [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_1900)).toUTCString() ), + "new Date(\""+(new Date(TIME_1900)).toUTCString()+"\")", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_1900)).toUTCString() ), + "new Date(\""+(new Date(PST_1900 )).toUTCString()+"\")", + [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + +// addNewTestCase( "new Date(\""+(new Date(TIME_1900)).toLocaleString()+"\")", [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); +// addNewTestCase( "new Date(\""+(new Date(PST_1900 )).toLocaleString()+"\")", [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); +*/ +/* + This test case is incorrect. Need to fix the DaylightSavings functions in + shell.js for this to work properly. + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + addNewTestCase( new Date(DST_START_1998-1), + "new Date("+(DST_START_1998-1)+")", + [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); + + addNewTestCase( new Date(DST_START_1998), + "new Date("+DST_START_1998+")", + [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addNewTestCase ( new Date(DST_END_1998-1), + "new Date("+(DST_END_1998-1)+")", + [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); + + addNewTestCase ( new Date(DST_END_1998), + "new Date("+DST_END_1998+")", + [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); +*/ +} + +function addNewTestCase( DateCase, DateString, ResultArray ) { + //adjust hard-coded ResultArray for tester's timezone instead of PST + adjustResultArray(ResultArray, 'msMode'); + + item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); +} + +function test() { + for( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + + // all tests must return a boolean value + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.8-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.8-2.js new file mode 100644 index 00000000000..4cfcb0470e6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.8-2.js @@ -0,0 +1,275 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.3.8.js + ECMA Section: 15.9.3.8 The Date Constructor + new Date( value ) + Description: The [[Prototype]] property of the newly constructed + object is set to the original Date prototype object, + the one that is the initial valiue of Date.prototype. + + The [[Class]] property of the newly constructed object is + set to "Date". + + The [[Value]] property of the newly constructed object is + set as follows: + + 1. Call ToPrimitive(value) + 2. If Type( Result(1) ) is String, then go to step 5. + 3. Let V be ToNumber( Result(1) ). + 4. Set the [[Value]] property of the newly constructed + object to TimeClip(V) and return. + 5. Parse Result(1) as a date, in exactly the same manner + as for the parse method. Let V be the time value for + this date. + 6. Go to step 4. + + Author: christine@netscape.com + Date: 28 october 1997 + Version: 9706 + +*/ + + var VERSION = "ECMA_1"; + startTest(); + var SECTION = "15.9.3.8"; + var TYPEOF = "object"; + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + + +// for TCMS, the testcases array must be global. + var tc= 0; + var TITLE = "Date constructor: new Date( value )"; + var SECTION = "15.9.3.8"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION +" " + TITLE ); + + testcases = new Array(); + getTestCases(); + +// all tests must call a function that returns a boolean value + test(); + +function getTestCases( ) { + // all the "ResultArrays" below are hard-coded to Pacific Standard Time values - + var TZ_ADJUST = -TZ_PST * msPerHour; + + addNewTestCase( new Date((new Date(0)).toUTCString()), + "new Date(\""+ (new Date(0)).toUTCString()+"\" )", + [0,1970,0,1,4,0,0,0,0,1969,11,31,3,16,0,0,0] ); + + addNewTestCase( new Date((new Date(1)).toString()), + "new Date(\""+ (new Date(1)).toString()+"\" )", + [0,1970,0,1,4,0,0,0,0,1969,11,31,3,16,0,0,0] ); + + addNewTestCase( new Date( TZ_ADJUST ), + "new Date(" + TZ_ADJUST+")", + [TZ_ADJUST,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); + + addNewTestCase( new Date((new Date(TZ_ADJUST)).toString()), + "new Date(\""+ (new Date(TZ_ADJUST)).toString()+"\")", + [TZ_ADJUST,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); + + + addNewTestCase( new Date( (new Date(TZ_ADJUST)).toUTCString() ), + "new Date(\""+ (new Date(TZ_ADJUST)).toUTCString()+"\")", + [TZ_ADJUST,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); +/* + // Dates around 2000 + + addNewTestCase( new Date(TIME_2000+TZ_ADJUST), + "new Date(" +(TIME_2000+TZ_ADJUST)+")", + [TIME_2000+TZ_ADJUST,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date(TIME_2000), + "new Date(" +TIME_2000+")", + [TIME_2000,2000,0,1,6,0,0,0,0,1999,11,31,5,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_2000+TZ_ADJUST)).toString()), + "new Date(\"" +(new Date(TIME_2000+TZ_ADJUST)).toString()+"\")", + [TIME_2000+TZ_ADJUST,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date((new Date(TIME_2000)).toString()), + "new Date(\"" +(new Date(TIME_2000)).toString()+"\")", + [TIME_2000,2000,0,1,6,0,0,0,0,1999,11,31,5,16,0,0,0] ); + +// addNewTestCase( "new Date(\"" +(new Date(TIME_2000+TZ_ADJUST)).toLocaleString()+"\")", [TIME_2000+TZ_ADJUST,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); +// addNewTestCase( "new Date(\"" +(new Date(TIME_2000)).toLocaleString()+"\")", [TIME_2000,2000,0,1,6,0,0,0,0,1999,11,31,5,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_2000+TZ_ADJUST)).toUTCString()), + "new Date(\"" +(new Date(TIME_2000+TZ_ADJUST)).toUTCString()+"\")", + [TIME_2000+TZ_ADJUST,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_2000)).toUTCString()), + "new Date(\"" +(new Date(TIME_2000)).toUTCString()+"\")", + [TIME_2000,2000,0,1,6,0,0,0,0,1999,11,31,5,16,0,0,0] ); + + // Dates around Feb 29, 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerDay; + var PST_FEB_29_2000 = UTC_FEB_29_2000 + TZ_ADJUST; + + addNewTestCase( new Date(UTC_FEB_29_2000), + "new Date("+UTC_FEB_29_2000+")", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); + + addNewTestCase( new Date(PST_FEB_29_2000), + "new Date("+PST_FEB_29_2000+")", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(UTC_FEB_29_2000)).toString() ), + "new Date(\""+(new Date(UTC_FEB_29_2000)).toString()+"\")", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_FEB_29_2000)).toString() ), + "new Date(\""+(new Date(PST_FEB_29_2000)).toString()+"\")", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + +// Parsing toLocaleString() is not guaranteed by ECMA. +// addNewTestCase( "new Date(\""+(new Date(UTC_FEB_29_2000)).toLocaleString()+"\")", [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); +// addNewTestCase( "new Date(\""+(new Date(PST_FEB_29_2000)).toLocaleString()+"\")", [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(UTC_FEB_29_2000)).toGMTString() ), + "new Date(\""+(new Date(UTC_FEB_29_2000)).toGMTString()+"\")", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_FEB_29_2000)).toGMTString() ), + "new Date(\""+(new Date(PST_FEB_29_2000)).toGMTString()+"\")", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + // Dates around 1900 + + var PST_1900 = TIME_1900 + 8*msPerHour; + + addNewTestCase( new Date( TIME_1900 ), + "new Date("+TIME_1900+")", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date(PST_1900), + "new Date("+PST_1900+")", + [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_1900)).toString() ), + "new Date(\""+(new Date(TIME_1900)).toString()+"\")", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_1900)).toString() ), + "new Date(\""+(new Date(PST_1900 )).toString()+"\")", + [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_1900)).toUTCString() ), + "new Date(\""+(new Date(TIME_1900)).toUTCString()+"\")", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_1900)).toUTCString() ), + "new Date(\""+(new Date(PST_1900 )).toUTCString()+"\")", + [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + +// addNewTestCase( "new Date(\""+(new Date(TIME_1900)).toLocaleString()+"\")", [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); +// addNewTestCase( "new Date(\""+(new Date(PST_1900 )).toLocaleString()+"\")", [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); +*/ +/* + This test case is incorrect. Need to fix the DaylightSavings functions in + shell.js for this to work properly. + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + addNewTestCase( new Date(DST_START_1998-1), + "new Date("+(DST_START_1998-1)+")", + [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); + + addNewTestCase( new Date(DST_START_1998), + "new Date("+DST_START_1998+")", + [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addNewTestCase ( new Date(DST_END_1998-1), + "new Date("+(DST_END_1998-1)+")", + [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); + + addNewTestCase ( new Date(DST_END_1998), + "new Date("+DST_END_1998+")", + [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); +*/ +} + +function addNewTestCase( DateCase, DateString, ResultArray ) { + //adjust hard-coded ResultArray for tester's timezone instead of PST + adjustResultArray(ResultArray, 'msMode'); + + item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); +} + +function test() { + for( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + + // all tests must return a boolean value + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.8-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.8-3.js new file mode 100644 index 00000000000..aaf430d1265 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.8-3.js @@ -0,0 +1,253 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.3.8.js + ECMA Section: 15.9.3.8 The Date Constructor + new Date( value ) + Description: The [[Prototype]] property of the newly constructed + object is set to the original Date prototype object, + the one that is the initial valiue of Date.prototype. + + The [[Class]] property of the newly constructed object is + set to "Date". + + The [[Value]] property of the newly constructed object is + set as follows: + + 1. Call ToPrimitive(value) + 2. If Type( Result(1) ) is String, then go to step 5. + 3. Let V be ToNumber( Result(1) ). + 4. Set the [[Value]] property of the newly constructed + object to TimeClip(V) and return. + 5. Parse Result(1) as a date, in exactly the same manner + as for the parse method. Let V be the time value for + this date. + 6. Go to step 4. + + Author: christine@netscape.com + Date: 28 october 1997 + Version: 9706 + +*/ + + var VERSION = "ECMA_1"; + startTest(); + var SECTION = "15.9.3.8"; + var TYPEOF = "object"; + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + + +// for TCMS, the testcases array must be global. + var tc= 0; + var TITLE = "Date constructor: new Date( value )"; + var SECTION = "15.9.3.8"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION +" " + TITLE ); + + testcases = new Array(); + getTestCases(); + +// all tests must call a function that returns a boolean value + test(); + +function getTestCases( ) { + // all the "ResultArrays" below are hard-coded to Pacific Standard Time values - + var TZ_ADJUST = -TZ_PST * msPerHour; + + + // Dates around 2000 + + addNewTestCase( new Date(TIME_2000+TZ_ADJUST), + "new Date(" +(TIME_2000+TZ_ADJUST)+")", + [TIME_2000+TZ_ADJUST,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date(TIME_2000), + "new Date(" +TIME_2000+")", + [TIME_2000,2000,0,1,6,0,0,0,0,1999,11,31,5,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_2000+TZ_ADJUST)).toString()), + "new Date(\"" +(new Date(TIME_2000+TZ_ADJUST)).toString()+"\")", + [TIME_2000+TZ_ADJUST,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date((new Date(TIME_2000)).toString()), + "new Date(\"" +(new Date(TIME_2000)).toString()+"\")", + [TIME_2000,2000,0,1,6,0,0,0,0,1999,11,31,5,16,0,0,0] ); + + + addNewTestCase( new Date( (new Date(TIME_2000+TZ_ADJUST)).toUTCString()), + "new Date(\"" +(new Date(TIME_2000+TZ_ADJUST)).toUTCString()+"\")", + [TIME_2000+TZ_ADJUST,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_2000)).toUTCString()), + "new Date(\"" +(new Date(TIME_2000)).toUTCString()+"\")", + [TIME_2000,2000,0,1,6,0,0,0,0,1999,11,31,5,16,0,0,0] ); +/* + // Dates around Feb 29, 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerDay; + var PST_FEB_29_2000 = UTC_FEB_29_2000 + TZ_ADJUST; + + addNewTestCase( new Date(UTC_FEB_29_2000), + "new Date("+UTC_FEB_29_2000+")", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); + + addNewTestCase( new Date(PST_FEB_29_2000), + "new Date("+PST_FEB_29_2000+")", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(UTC_FEB_29_2000)).toString() ), + "new Date(\""+(new Date(UTC_FEB_29_2000)).toString()+"\")", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_FEB_29_2000)).toString() ), + "new Date(\""+(new Date(PST_FEB_29_2000)).toString()+"\")", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + +// Parsing toLocaleString() is not guaranteed by ECMA. +// addNewTestCase( "new Date(\""+(new Date(UTC_FEB_29_2000)).toLocaleString()+"\")", [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); +// addNewTestCase( "new Date(\""+(new Date(PST_FEB_29_2000)).toLocaleString()+"\")", [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(UTC_FEB_29_2000)).toGMTString() ), + "new Date(\""+(new Date(UTC_FEB_29_2000)).toGMTString()+"\")", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_FEB_29_2000)).toGMTString() ), + "new Date(\""+(new Date(PST_FEB_29_2000)).toGMTString()+"\")", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + // Dates around 1900 + + var PST_1900 = TIME_1900 + 8*msPerHour; + + addNewTestCase( new Date( TIME_1900 ), + "new Date("+TIME_1900+")", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date(PST_1900), + "new Date("+PST_1900+")", + [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_1900)).toString() ), + "new Date(\""+(new Date(TIME_1900)).toString()+"\")", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_1900)).toString() ), + "new Date(\""+(new Date(PST_1900 )).toString()+"\")", + [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_1900)).toUTCString() ), + "new Date(\""+(new Date(TIME_1900)).toUTCString()+"\")", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_1900)).toUTCString() ), + "new Date(\""+(new Date(PST_1900 )).toUTCString()+"\")", + [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + +// addNewTestCase( "new Date(\""+(new Date(TIME_1900)).toLocaleString()+"\")", [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); +// addNewTestCase( "new Date(\""+(new Date(PST_1900 )).toLocaleString()+"\")", [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); +*/ +/* + This test case is incorrect. Need to fix the DaylightSavings functions in + shell.js for this to work properly. + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + addNewTestCase( new Date(DST_START_1998-1), + "new Date("+(DST_START_1998-1)+")", + [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); + + addNewTestCase( new Date(DST_START_1998), + "new Date("+DST_START_1998+")", + [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addNewTestCase ( new Date(DST_END_1998-1), + "new Date("+(DST_END_1998-1)+")", + [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); + + addNewTestCase ( new Date(DST_END_1998), + "new Date("+DST_END_1998+")", + [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); +*/ +} + +function addNewTestCase( DateCase, DateString, ResultArray ) { + //adjust hard-coded ResultArray for tester's timezone instead of PST + adjustResultArray(ResultArray, 'msMode'); + + item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); +} + +function test() { + for( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + + // all tests must return a boolean value + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.8-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.8-4.js new file mode 100644 index 00000000000..c25bda8fb42 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.8-4.js @@ -0,0 +1,222 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.3.8.js + ECMA Section: 15.9.3.8 The Date Constructor + new Date( value ) + Description: The [[Prototype]] property of the newly constructed + object is set to the original Date prototype object, + the one that is the initial valiue of Date.prototype. + + The [[Class]] property of the newly constructed object is + set to "Date". + + The [[Value]] property of the newly constructed object is + set as follows: + + 1. Call ToPrimitive(value) + 2. If Type( Result(1) ) is String, then go to step 5. + 3. Let V be ToNumber( Result(1) ). + 4. Set the [[Value]] property of the newly constructed + object to TimeClip(V) and return. + 5. Parse Result(1) as a date, in exactly the same manner + as for the parse method. Let V be the time value for + this date. + 6. Go to step 4. + + Author: christine@netscape.com + Date: 28 october 1997 + Version: 9706 + +*/ + + var VERSION = "ECMA_1"; + startTest(); + var SECTION = "15.9.3.8"; + var TYPEOF = "object"; + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + + +// for TCMS, the testcases array must be global. + var tc= 0; + var TITLE = "Date constructor: new Date( value )"; + var SECTION = "15.9.3.8"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION +" " + TITLE ); + + testcases = new Array(); + getTestCases(); + +// all tests must call a function that returns a boolean value + test(); + +function getTestCases( ) { + // all the "ResultArrays" below are hard-coded to Pacific Standard Time values - + var TZ_ADJUST = -TZ_PST * msPerHour; + + // Dates around Feb 29, 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerDay; + var PST_FEB_29_2000 = UTC_FEB_29_2000 + TZ_ADJUST; + + addNewTestCase( new Date(UTC_FEB_29_2000), + "new Date("+UTC_FEB_29_2000+")", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); + + addNewTestCase( new Date(PST_FEB_29_2000), + "new Date("+PST_FEB_29_2000+")", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(UTC_FEB_29_2000)).toString() ), + "new Date(\""+(new Date(UTC_FEB_29_2000)).toString()+"\")", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_FEB_29_2000)).toString() ), + "new Date(\""+(new Date(PST_FEB_29_2000)).toString()+"\")", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); + + + addNewTestCase( new Date( (new Date(UTC_FEB_29_2000)).toGMTString() ), + "new Date(\""+(new Date(UTC_FEB_29_2000)).toGMTString()+"\")", + [UTC_FEB_29_2000,2000,1,29,2,0,0,0,0,2000,1,28,1,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_FEB_29_2000)).toGMTString() ), + "new Date(\""+(new Date(PST_FEB_29_2000)).toGMTString()+"\")", + [PST_FEB_29_2000,2000,1,29,2,8,0,0,0,2000,1,29,2,0,0,0,0] ); +/* + // Dates around 1900 + + var PST_1900 = TIME_1900 + 8*msPerHour; + + addNewTestCase( new Date( TIME_1900 ), + "new Date("+TIME_1900+")", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date(PST_1900), + "new Date("+PST_1900+")", + [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_1900)).toString() ), + "new Date(\""+(new Date(TIME_1900)).toString()+"\")", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_1900)).toString() ), + "new Date(\""+(new Date(PST_1900 )).toString()+"\")", + [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_1900)).toUTCString() ), + "new Date(\""+(new Date(TIME_1900)).toUTCString()+"\")", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_1900)).toUTCString() ), + "new Date(\""+(new Date(PST_1900 )).toUTCString()+"\")", + [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + +// addNewTestCase( "new Date(\""+(new Date(TIME_1900)).toLocaleString()+"\")", [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); +// addNewTestCase( "new Date(\""+(new Date(PST_1900 )).toLocaleString()+"\")", [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); +*/ +/* + This test case is incorrect. Need to fix the DaylightSavings functions in + shell.js for this to work properly. + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + addNewTestCase( new Date(DST_START_1998-1), + "new Date("+(DST_START_1998-1)+")", + [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); + + addNewTestCase( new Date(DST_START_1998), + "new Date("+DST_START_1998+")", + [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addNewTestCase ( new Date(DST_END_1998-1), + "new Date("+(DST_END_1998-1)+")", + [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); + + addNewTestCase ( new Date(DST_END_1998), + "new Date("+DST_END_1998+")", + [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); +*/ +} + +function addNewTestCase( DateCase, DateString, ResultArray ) { + //adjust hard-coded ResultArray for tester's timezone instead of PST + adjustResultArray(ResultArray, 'msMode'); + + item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); +} + +function test() { + for( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + + // all tests must return a boolean value + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.8-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.8-5.js new file mode 100644 index 00000000000..00b3b47b050 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.3.8-5.js @@ -0,0 +1,190 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.3.8.js + ECMA Section: 15.9.3.8 The Date Constructor + new Date( value ) + Description: The [[Prototype]] property of the newly constructed + object is set to the original Date prototype object, + the one that is the initial valiue of Date.prototype. + + The [[Class]] property of the newly constructed object is + set to "Date". + + The [[Value]] property of the newly constructed object is + set as follows: + + 1. Call ToPrimitive(value) + 2. If Type( Result(1) ) is String, then go to step 5. + 3. Let V be ToNumber( Result(1) ). + 4. Set the [[Value]] property of the newly constructed + object to TimeClip(V) and return. + 5. Parse Result(1) as a date, in exactly the same manner + as for the parse method. Let V be the time value for + this date. + 6. Go to step 4. + + Author: christine@netscape.com + Date: 28 october 1997 + Version: 9706 + +*/ + + var VERSION = "ECMA_1"; + startTest(); + var SECTION = "15.9.3.8"; + var TYPEOF = "object"; + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + + +// for TCMS, the testcases array must be global. + var tc= 0; + var TITLE = "Date constructor: new Date( value )"; + var SECTION = "15.9.3.8"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION +" " + TITLE ); + + testcases = new Array(); + getTestCases(); + +// all tests must call a function that returns a boolean value + test(); + +function getTestCases( ) { + // all the "ResultArrays" below are hard-coded to Pacific Standard Time values - + var TZ_ADJUST = -TZ_PST * msPerHour; + + + // Dates around 1900 + + var PST_1900 = TIME_1900 + 8*msPerHour; + + addNewTestCase( new Date( TIME_1900 ), + "new Date("+TIME_1900+")", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date(PST_1900), + "new Date("+PST_1900+")", + [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_1900)).toString() ), + "new Date(\""+(new Date(TIME_1900)).toString()+"\")", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_1900)).toString() ), + "new Date(\""+(new Date(PST_1900 )).toString()+"\")", + [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + + addNewTestCase( new Date( (new Date(TIME_1900)).toUTCString() ), + "new Date(\""+(new Date(TIME_1900)).toUTCString()+"\")", + [TIME_1900,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date( (new Date(PST_1900)).toUTCString() ), + "new Date(\""+(new Date(PST_1900 )).toUTCString()+"\")", + [ PST_1900,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + +/* + This test case is incorrect. Need to fix the DaylightSavings functions in + shell.js for this to work properly. + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + addNewTestCase( new Date(DST_START_1998-1), + "new Date("+(DST_START_1998-1)+")", + [DST_START_1998-1,1998,3,5,0,9,59,59,999,1998,3,5,0,1,59,59,999] ); + + addNewTestCase( new Date(DST_START_1998), + "new Date("+DST_START_1998+")", + [DST_START_1998,1998,3,5,0,10,0,0,0,1998,3,5,0,3,0,0,0]); + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addNewTestCase ( new Date(DST_END_1998-1), + "new Date("+(DST_END_1998-1)+")", + [DST_END_1998-1,1998,9,25,0,8,59,59,999,1998,9,25,0,1,59,59,999] ); + + addNewTestCase ( new Date(DST_END_1998), + "new Date("+DST_END_1998+")", + [DST_END_1998,1998,9,25,0,9,0,0,0,1998,9,25,0,1,0,0,0] ); +*/ +} + +function addNewTestCase( DateCase, DateString, ResultArray ) { + //adjust hard-coded ResultArray for tester's timezone instead of PST + adjustResultArray(ResultArray, 'msMode'); + + item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ResultArray[UTC_HOURS], DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ResultArray[UTC_MINUTES],DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); +} + +function test() { + for( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + + // all tests must return a boolean value + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.4.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.4.2-1.js new file mode 100644 index 00000000000..2fa4cbf382b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.4.2-1.js @@ -0,0 +1,63 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): +*/ + +/** + * File Name: + * Reference: http://bugzilla.mozilla.org/show_bug.cgi?id=4088 + * Description: Date parsing gets 12:30 AM wrong. + * New behavior: + * js> d = new Date('1/1/1999 13:30 AM') + * Invalid Date + * js> d = new Date('1/1/1999 13:30 PM') + * Invalid Date + * js> d = new Date('1/1/1999 12:30 AM') + * Fri Jan 01 00:30:00 GMT-0800 (PST) 1999 + * js> d = new Date('1/1/1999 12:30 PM') + * Fri Jan 01 12:30:00 GMT-0800 (PST) 1999 + * Author: christine@netscape.com + */ + + var SECTION = "15.9.4.2-1"; // provide a document reference (ie, ECMA section) + var VERSION = "ECMA"; // Version of JavaScript or ECMA + var TITLE = "Regression Test for Date.parse"; // Provide ECMA section title or a description + var BUGNUMBER = "http://bugzilla.mozilla.org/show_bug.cgi?id=4088"; // Provide URL to bugsplat or bugzilla report + + startTest(); // leave this alone + + AddTestCase( "new Date('1/1/1999 12:30 AM').toString()", + new Date(1999,0,1,0,30).toString(), + new Date('1/1/1999 12:30 AM').toString() ); + + AddTestCase( "new Date('1/1/1999 12:30 PM').toString()", + new Date( 1999,0,1,12,30 ).toString(), + new Date('1/1/1999 12:30 PM').toString() ); + + AddTestCase( "new Date('1/1/1999 13:30 AM')", + "Invalid Date", + new Date('1/1/1999 13:30 AM').toString() ); + + + AddTestCase( "new Date('1/1/1999 13:30 PM')", + "Invalid Date", + new Date('1/1/1999 13:30 PM').toString() ); + + test(); // leave this alone. this executes the test cases and + // displays results. diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.4.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.4.2.js new file mode 100644 index 00000000000..5fd15bae956 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.4.2.js @@ -0,0 +1,213 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.4.2.js + ECMA Section: 15.9.4.2 Date.parse() + Description: The parse() function applies the to ToString() operator + to its argument and interprets the resulting string as + a date. It returns a number, the UTC time value + corresponding to the date. + + The string may be interpreted as a local time, a UTC + time, or a time in some other time zone, depending on + the contents of the string. + + (need to test strings containing stuff with the time + zone specified, and verify that parse() returns the + correct GMT time) + + so for any Date object x, all of these things should + be equal: + + value tested in function: + x.valueOf() test_value() + Date.parse(x.toString()) test_tostring() + Date.parse(x.toGMTString()) test_togmt() + + Date.parse(x.toLocaleString()) is not required to + produce the same number value as the preceeding three + expressions. in general the value produced by + Date.parse is implementation dependent when given any + string value that could not be produced in that + implementation by the toString or toGMTString method. + + value tested in function: + Date.parse( x.toLocaleString()) test_tolocale() + + Author: christine@netscape.com + Date: 10 july 1997 + +*/ + + var VERSION = "ECMA_1"; + startTest(); + var SECTION = "15.9.4.2"; + var TITLE = "Date.parse()"; + + var TIME = 0; + var UTC_YEAR = 1; + var UTC_MONTH = 2; + var UTC_DATE = 3; + var UTC_DAY = 4; + var UTC_HOURS = 5; + var UTC_MINUTES = 6; + var UTC_SECONDS = 7; + var UTC_MS = 8; + + var YEAR = 9; + var MONTH = 10; + var DATE = 11; + var DAY = 12; + var HOURS = 13; + var MINUTES = 14; + var SECONDS = 15; + var MS = 16; + var TYPEOF = "object"; + +// for TCMS, the testcases array must be global. + writeHeaderToLog("15.9.4.2 Date.parse()" ); + var tc= 0; + testcases = new Array(); + getTestCases(); + +// all tests must call a function that returns an array of TestCase objects. + test(); + +function getTestCases() { + + // Dates around 1970 + + addNewTestCase( new Date(0), + "new Date(0)", + [0,1970,0,1,4,0,0,0,0,1969,11,31,3,16,0,0,0] ); + + addNewTestCase( new Date(-1), + "new Date(-1)", + [-1,1969,11,31,3,23,59,59,999,1969,11,31,3,15,59,59,999] ); + addNewTestCase( new Date(28799999), + "new Date(28799999)", + [28799999,1970,0,1,4,7,59,59,999,1969,11,31,3,23,59,59,999] ); + addNewTestCase( new Date(28800000), + "new Date(28800000)", + [28800000,1970,0,1,4,8,0,0,0,1970,0,1,4,0,0,0,0] ); + + // Dates around 2000 + + addNewTestCase( new Date(946684799999), + "new Date(946684799999)", + [946684799999,1999,11,31,5,23,59,59,999,1999,11,31,5,15,59,59,999] ); + addNewTestCase( new Date(946713599999), + "new Date(946713599999)", + [946713599999,2000,0,1,6,7,59,59,999,1999,11,31,5,23,59,59,999] ); + addNewTestCase( new Date(946684800000), + "new Date(946684800000)", + [946684800000,2000,0,1,6,0,0,0,0,1999,11,31,5, 16,0,0,0] ); + addNewTestCase( new Date(946713600000), + "new Date(946713600000)", + [946713600000,2000,0,1,6,8,0,0,0,2000,0,1,6,0,0,0,0] ); + + // Dates around 1900 + + addNewTestCase( new Date(-2208988800000), + "new Date(-2208988800000)", + [-2208988800000,1900,0,1,1,0,0,0,0,1899,11,31,0,16,0,0,0] ); + + addNewTestCase( new Date(-2208988800001), + "new Date(-2208988800001)", + [-2208988800001,1899,11,31,0,23,59,59,999,1899,11,31,0,15,59,59,999] ); + + addNewTestCase( new Date(-2208960000001), + "new Date(-2208960000001)", + [-2208960000001,1900,0,1,1,7,59,59,0,1899,11,31,0,23,59,59,999] ); + addNewTestCase( new Date(-2208960000000), + "new Date(-2208960000000)", + [-2208960000000,1900,0,1,1,8,0,0,0,1900,0,1,1,0,0,0,0] ); + addNewTestCase( new Date(-2208959999999), + "new Date(-2208959999999)", + [-2208959999999,1900,0,1,1,8,0,0,1,1900,0,1,1,0,0,0,1] ); + + // Dates around Feb 29, 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerDay; + var PST_FEB_29_2000 = UTC_FEB_29_2000 + 8*msPerHour; + addNewTestCase( new Date(UTC_FEB_29_2000), + "new Date(" + UTC_FEB_29_2000 +")", + [UTC_FEB_29_2000,2000,0,1,6,0,0,0,0,1999,11,31,5,16,0,0,0] ); + addNewTestCase( new Date(PST_FEB_29_2000), + "new Date(" + PST_FEB_29_2000 +")", + [PST_FEB_29_2000,2000,0,1,6,8.0,0,0,2000,0,1,6,0,0,0,0]); + + // Dates around Jan 1 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001) + + TimeInYear(2002) + TimeInYear(2003) + TimeInYear(2004); + var PST_JAN_1_2005 = UTC_JAN_1_2005 + 8*msPerHour; + + addNewTestCase( new Date(UTC_JAN_1_2005), + "new Date("+ UTC_JAN_1_2005 +")", + [UTC_JAN_1_2005,2005,0,1,6,0,0,0,0,2004,11,31,5,16,0,0,0] ); + addNewTestCase( new Date(PST_JAN_1_2005), + "new Date("+ PST_JAN_1_2005 +")", + [PST_JAN_1_2005,2005,0,1,6,8,0,0,0,2005,0,1,6,0,0,0,0] ); + +} +function addNewTestCase( DateCase, DateString, ResultArray ) { + DateCase = DateCase; + + item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", ResultArray[TIME], DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", ResultArray[TIME], DateCase.valueOf() ); + testcases[item++] = new TestCase( SECTION, "Date.parse(" + DateCase.toString() +")", Math.floor(ResultArray[TIME]/1000)*1000, Date.parse(DateCase.toString()) ); + testcases[item++] = new TestCase( SECTION, "Date.parse(" + DateCase.toGMTString() +")", Math.floor(ResultArray[TIME]/1000)*1000, Date.parse(DateCase.toGMTString()) ); +/* + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ResultArray[UTC_YEAR], DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ResultArray[UTC_MONTH], DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ResultArray[UTC_DATE], DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ResultArray[UTC_DAY], DateCase.getUTCDay() z inutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ResultArray[UTC_SECONDS],DateCase.getUTCSeconds() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ResultArray[UTC_MS], DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ResultArray[YEAR], DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ResultArray[MONTH], DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ResultArray[DATE], DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ResultArray[DAY], DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ResultArray[HOURS], DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ResultArray[MINUTES], DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ResultArray[SECONDS], DateCase.getSeconds() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ResultArray[MS], DateCase.getMilliseconds() ); +*/ +} +function test() { + for( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + stopTest(); + + // all tests must return an array of TestCase objects + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.4.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.4.3.js new file mode 100644 index 00000000000..e56f971262d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.4.3.js @@ -0,0 +1,209 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + + + var testcases = new Array(); + var SECTION = "15.9.4.3"; + var TITLE = "Date.UTC( year, month, date, hours, minutes, seconds, ms )"; + + getTestCases(); + test(); + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} + +function utc( year, month, date, hours, minutes, seconds, ms ) { + d = new MyDate(); + d.year = Number(year); + + if (month) + d.month = Number(month); + if (date) + d.date = Number(date); + if (hours) + d.hours = Number(hours); + if (minutes) + d.minutes = Number(minutes); + if (seconds) + d.seconds = Number(seconds); + if (ms) + d.ms = Number(ms); + + if ( isNaN(d.year) && 0 <= ToInteger(d.year) && d.year <= 99 ) { + d.year = 1900 + ToInteger(d.year); + } + + if (isNaN(month) || isNaN(year) || isNaN(date) || isNaN(hours) || + isNaN(minutes) || isNaN(seconds) || isNaN(ms) ) { + d.year = Number.NaN; + d.month = Number.NaN; + d.date = Number.NaN; + d.hours = Number.NaN; + d.minutes = Number.NaN; + d.seconds = Number.NaN; + d.ms = Number.NaN; + d.value = Number.NaN; + d.time = Number.NaN; + d.day =Number.NaN; + return d; + } + + d.day = MakeDay( d.year, d.month, d.date ); + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = (TimeClip( MakeDate(d.day,d.time))); + + return d; +} + +function UTCTime( t ) { + sign = ( t < 0 ) ? -1 : 1; + return ( (t +(TZ_DIFF*msPerHour)) ); +} + +function getTestCases() { + + // Dates around 1970 + + addNewTestCase( Date.UTC( 1970,0,1,0,0,0,0), + "Date.UTC( 1970,0,1,0,0,0,0)", + utc(1970,0,1,0,0,0,0) ); + + addNewTestCase( Date.UTC( 1969,11,31,23,59,59,999), + "Date.UTC( 1969,11,31,23,59,59,999)", + utc(1969,11,31,23,59,59,999) ); + addNewTestCase( Date.UTC( 1972,1,29,23,59,59,999), + "Date.UTC( 1972,1,29,23,59,59,999)", + utc(1972,1,29,23,59,59,999) ); + addNewTestCase( Date.UTC( 1972,2,1,23,59,59,999), + "Date.UTC( 1972,2,1,23,59,59,999)", + utc(1972,2,1,23,59,59,999) ); + addNewTestCase( Date.UTC( 1968,1,29,23,59,59,999), + "Date.UTC( 1968,1,29,23,59,59,999)", + utc(1968,1,29,23,59,59,999) ); + addNewTestCase( Date.UTC( 1968,2,1,23,59,59,999), + "Date.UTC( 1968,2,1,23,59,59,999)", + utc(1968,2,1,23,59,59,999) ); + addNewTestCase( Date.UTC( 1969,0,1,0,0,0,0), + "Date.UTC( 1969,0,1,0,0,0,0)", + utc(1969,0,1,0,0,0,0) ); + addNewTestCase( Date.UTC( 1969,11,31,23,59,59,1000), + "Date.UTC( 1969,11,31,23,59,59,1000)", + utc(1970,0,1,0,0,0,0) ); + addNewTestCase( Date.UTC( 1969,Number.NaN,31,23,59,59,999), + "Date.UTC( 1969,Number.NaN,31,23,59,59,999)", + utc(1969,Number.NaN,31,23,59,59,999) ); + + // Dates around 2000 + + addNewTestCase( Date.UTC( 1999,11,31,23,59,59,999), + "Date.UTC( 1999,11,31,23,59,59,999)", + utc(1999,11,31,23,59,59,999) ); + addNewTestCase( Date.UTC( 2000,0,1,0,0,0,0), + "Date.UTC( 2000,0,1,0,0,0,0)", + utc(2000,0,1,0,0,0,0) ); + + // Dates around 1900 + addNewTestCase( Date.UTC( 1899,11,31,23,59,59,999), + "Date.UTC( 1899,11,31,23,59,59,999)", + utc(1899,11,31,23,59,59,999) ); + addNewTestCase( Date.UTC( 1900,0,1,0,0,0,0), + "Date.UTC( 1900,0,1,0,0,0,0)", + utc(1900,0,1,0,0,0,0) ); + addNewTestCase( Date.UTC( 1973,0,1,0,0,0,0), + "Date.UTC( 1973,0,1,0,0,0,0)", + utc(1973,0,1,0,0,0,0) ); + addNewTestCase( Date.UTC( 1776,6,4,12,36,13,111), + "Date.UTC( 1776,6,4,12,36,13,111)", + utc(1776,6,4,12,36,13,111) ); + addNewTestCase( Date.UTC( 2525,9,18,15,30,1,123), + "Date.UTC( 2525,9,18,15,30,1,123)", + utc(2525,9,18,15,30,1,123) ); + + // Dates around 29 Feb 2000 + + addNewTestCase( Date.UTC( 2000,1,29,0,0,0,0 ), + "Date.UTC( 2000,1,29,0,0,0,0 )", + utc(2000,1,29,0,0,0,0) ); + addNewTestCase( Date.UTC( 2000,1,29,8,0,0,0 ), + "Date.UTC( 2000,1,29,8,0,0,0 )", + utc(2000,1,29,8,0,0,0) ); + + // Dates around 1 Jan 2005 + + addNewTestCase( Date.UTC( 2005,0,1,0,0,0,0 ), + "Date.UTC( 2005,0,1,0,0,0,0 )", + utc(2005,0,1,0,0,0,0) ); + addNewTestCase( Date.UTC( 2004,11,31,16,0,0,0 ), + "Date.UTC( 2004,11,31,16,0,0,0 )", + utc(2004,11,31,16,0,0,0) ); +} + +function addNewTestCase( DateCase, DateString, ExpectDate) { + DateCase = DateCase; + + item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString, ExpectDate.value, DateCase ); + testcases[item++] = new TestCase( SECTION, DateString, ExpectDate.value, DateCase ); +/* + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", ExpectDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", ExpectDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", ExpectDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", ExpectDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", ExpectDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", ExpectDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", ExpectDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", ExpectDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", ExpectDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", ExpectDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", ExpectDate.date, DateCase.getDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getDay()", ExpectDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", ExpectDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", ExpectDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", ExpectDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", ExpectDate.ms, DateCase.getMilliseconds() ); +*/ +} +function test() { + for( tc=0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = " + + testcases[tc].actual ); + } + + stopTest(); + return testcases; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.1.js new file mode 100644 index 00000000000..d6058963422 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.1.js @@ -0,0 +1,59 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.1.js + ECMA Section: 15.9.5.1 Date.prototype.constructor + Description: + The initial value of Date.prototype.constructor is the built-in Date + constructor. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.constructor == Date", + true, + Date.prototype.constructor == Date ); + test(); +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-1.js new file mode 100644 index 00000000000..f13e9d76793 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-1.js @@ -0,0 +1,115 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.10.js + ECMA Section: 15.9.5.10 + Description: Date.prototype.getDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return DateFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + // some daylight savings time cases + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + +/* + // We don't use |now| because it fails every night at midnight. + // The test is more reproducable if we use concrete times. + addTestCase( now ); + addTestCase( TIME_YEAR_0 ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); +*/ + addTestCase( UTC_JAN_1_2005 ); +/* + addTestCase( DST_START_1998 ); + addTestCase( DST_START_1998-1 ); + addTestCase( DST_START_1998+1 ); + addTestCase( DST_END_1998 ); + addTestCase( DST_END_1998-1 ); + addTestCase( DST_END_1998+1 ); +*/ + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDate()", + NaN, + (new Date(NaN)).getDate() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDate.length", + 0, + Date.prototype.getDate.length ); + test(); +function addTestCase( t ) { + for ( d = 0; d < TimeInMonth(MonthFromTime(t)); d+= msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDate()", + DateFromTime(LocalTime(t)), + (new Date(t)).getDate() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-10.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-10.js new file mode 100644 index 00000000000..1d8060dd2fe --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-10.js @@ -0,0 +1,102 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.10.js + ECMA Section: 15.9.5.10 + Description: Date.prototype.getDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return DateFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + // some daylight savings time cases + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addTestCase( DST_START_1998+1 ); +/* + addTestCase( DST_END_1998 ); + addTestCase( DST_END_1998-1 ); + addTestCase( DST_END_1998+1 ); +*/ + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDate()", + NaN, + (new Date(NaN)).getDate() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDate.length", + 0, + Date.prototype.getDate.length ); + test(); +function addTestCase( t ) { + for ( d = 0; d < TimeInMonth(MonthFromTime(t)); d+= msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDate()", + DateFromTime(LocalTime(t)), + (new Date(t)).getDate() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-11.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-11.js new file mode 100644 index 00000000000..752b11414b4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-11.js @@ -0,0 +1,101 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.10.js + ECMA Section: 15.9.5.10 + Description: Date.prototype.getDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return DateFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + // some daylight savings time cases + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addTestCase( DST_END_1998 ); +/* + addTestCase( DST_END_1998-1 ); + addTestCase( DST_END_1998+1 ); +*/ + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDate()", + NaN, + (new Date(NaN)).getDate() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDate.length", + 0, + Date.prototype.getDate.length ); + test(); +function addTestCase( t ) { + for ( d = 0; d < TimeInMonth(MonthFromTime(t)); d+= msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDate()", + DateFromTime(LocalTime(t)), + (new Date(t)).getDate() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-12.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-12.js new file mode 100644 index 00000000000..587b0238906 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-12.js @@ -0,0 +1,100 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.10.js + ECMA Section: 15.9.5.10 + Description: Date.prototype.getDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return DateFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + // some daylight savings time cases + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addTestCase( DST_END_1998-1 ); +/* + addTestCase( DST_END_1998+1 ); +*/ + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDate()", + NaN, + (new Date(NaN)).getDate() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDate.length", + 0, + Date.prototype.getDate.length ); + test(); +function addTestCase( t ) { + for ( d = 0; d < TimeInMonth(MonthFromTime(t)); d+= msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDate()", + DateFromTime(LocalTime(t)), + (new Date(t)).getDate() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-13.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-13.js new file mode 100644 index 00000000000..bf9027aae17 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-13.js @@ -0,0 +1,97 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.10.js + ECMA Section: 15.9.5.10 + Description: Date.prototype.getDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return DateFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + // some daylight savings time cases + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addTestCase( DST_END_1998+1 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDate()", + NaN, + (new Date(NaN)).getDate() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDate.length", + 0, + Date.prototype.getDate.length ); + test(); +function addTestCase( t ) { + for ( d = 0; d < TimeInMonth(MonthFromTime(t)); d+= msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDate()", + DateFromTime(LocalTime(t)), + (new Date(t)).getDate() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-2.js new file mode 100644 index 00000000000..a775643352d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-2.js @@ -0,0 +1,110 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.10.js + ECMA Section: 15.9.5.10 + Description: Date.prototype.getDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return DateFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + // some daylight savings time cases + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addTestCase( TIME_YEAR_0 ); +/* + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + addTestCase( DST_START_1998 ); + addTestCase( DST_START_1998-1 ); + addTestCase( DST_START_1998+1 ); + addTestCase( DST_END_1998 ); + addTestCase( DST_END_1998-1 ); + addTestCase( DST_END_1998+1 ); +*/ + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDate()", + NaN, + (new Date(NaN)).getDate() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDate.length", + 0, + Date.prototype.getDate.length ); + test(); +function addTestCase( t ) { + for ( d = 0; d < TimeInMonth(MonthFromTime(t)); d+= msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDate()", + DateFromTime(LocalTime(t)), + (new Date(t)).getDate() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-3.js new file mode 100644 index 00000000000..56fee4bc183 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-3.js @@ -0,0 +1,109 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.10.js + ECMA Section: 15.9.5.10 + Description: Date.prototype.getDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return DateFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + // some daylight savings time cases + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addTestCase( TIME_1970 ); +/* + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + addTestCase( DST_START_1998 ); + addTestCase( DST_START_1998-1 ); + addTestCase( DST_START_1998+1 ); + addTestCase( DST_END_1998 ); + addTestCase( DST_END_1998-1 ); + addTestCase( DST_END_1998+1 ); +*/ + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDate()", + NaN, + (new Date(NaN)).getDate() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDate.length", + 0, + Date.prototype.getDate.length ); + test(); +function addTestCase( t ) { + for ( d = 0; d < TimeInMonth(MonthFromTime(t)); d+= msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDate()", + DateFromTime(LocalTime(t)), + (new Date(t)).getDate() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-4.js new file mode 100644 index 00000000000..1f22d11162f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-4.js @@ -0,0 +1,107 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.10.js + ECMA Section: 15.9.5.10 + Description: Date.prototype.getDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return DateFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + // some daylight savings time cases + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addTestCase( TIME_1900 ); +/* + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + addTestCase( DST_START_1998 ); + addTestCase( DST_START_1998-1 ); + addTestCase( DST_START_1998+1 ); + addTestCase( DST_END_1998 ); + addTestCase( DST_END_1998-1 ); + addTestCase( DST_END_1998+1 ); +*/ + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDate()", + NaN, + (new Date(NaN)).getDate() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDate.length", + 0, + Date.prototype.getDate.length ); + test(); +function addTestCase( t ) { + for ( d = 0; d < TimeInMonth(MonthFromTime(t)); d+= msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDate()", + DateFromTime(LocalTime(t)), + (new Date(t)).getDate() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-5.js new file mode 100644 index 00000000000..4e7c80afa0d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-5.js @@ -0,0 +1,107 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.10.js + ECMA Section: 15.9.5.10 + Description: Date.prototype.getDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return DateFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + // some daylight savings time cases + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addTestCase( TIME_2000 ); +/* + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + addTestCase( DST_START_1998 ); + addTestCase( DST_START_1998-1 ); + addTestCase( DST_START_1998+1 ); + addTestCase( DST_END_1998 ); + addTestCase( DST_END_1998-1 ); + addTestCase( DST_END_1998+1 ); +*/ + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDate()", + NaN, + (new Date(NaN)).getDate() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDate.length", + 0, + Date.prototype.getDate.length ); + test(); +function addTestCase( t ) { + for ( d = 0; d < TimeInMonth(MonthFromTime(t)); d+= msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDate()", + DateFromTime(LocalTime(t)), + (new Date(t)).getDate() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-6.js new file mode 100644 index 00000000000..64086225e3e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-6.js @@ -0,0 +1,106 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.10.js + ECMA Section: 15.9.5.10 + Description: Date.prototype.getDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return DateFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + // some daylight savings time cases + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addTestCase( UTC_FEB_29_2000 ); +/* + addTestCase( UTC_JAN_1_2005 ); + addTestCase( DST_START_1998 ); + addTestCase( DST_START_1998-1 ); + addTestCase( DST_START_1998+1 ); + addTestCase( DST_END_1998 ); + addTestCase( DST_END_1998-1 ); + addTestCase( DST_END_1998+1 ); +*/ + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDate()", + NaN, + (new Date(NaN)).getDate() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDate.length", + 0, + Date.prototype.getDate.length ); + test(); +function addTestCase( t ) { + for ( d = 0; d < TimeInMonth(MonthFromTime(t)); d+= msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDate()", + DateFromTime(LocalTime(t)), + (new Date(t)).getDate() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-7.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-7.js new file mode 100644 index 00000000000..d1741e35388 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-7.js @@ -0,0 +1,105 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.10.js + ECMA Section: 15.9.5.10 + Description: Date.prototype.getDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return DateFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + // some daylight savings time cases + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addTestCase( UTC_JAN_1_2005 ); +/* + addTestCase( DST_START_1998 ); + addTestCase( DST_START_1998-1 ); + addTestCase( DST_START_1998+1 ); + addTestCase( DST_END_1998 ); + addTestCase( DST_END_1998-1 ); + addTestCase( DST_END_1998+1 ); +*/ + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDate()", + NaN, + (new Date(NaN)).getDate() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDate.length", + 0, + Date.prototype.getDate.length ); + test(); +function addTestCase( t ) { + for ( d = 0; d < TimeInMonth(MonthFromTime(t)); d+= msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDate()", + DateFromTime(LocalTime(t)), + (new Date(t)).getDate() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-8.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-8.js new file mode 100644 index 00000000000..3ef0398db35 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-8.js @@ -0,0 +1,104 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.10.js + ECMA Section: 15.9.5.10 + Description: Date.prototype.getDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return DateFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + // some daylight savings time cases + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addTestCase( DST_START_1998 ); +/* + addTestCase( DST_START_1998-1 ); + addTestCase( DST_START_1998+1 ); + addTestCase( DST_END_1998 ); + addTestCase( DST_END_1998-1 ); + addTestCase( DST_END_1998+1 ); +*/ + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDate()", + NaN, + (new Date(NaN)).getDate() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDate.length", + 0, + Date.prototype.getDate.length ); + test(); +function addTestCase( t ) { + for ( d = 0; d < TimeInMonth(MonthFromTime(t)); d+= msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDate()", + DateFromTime(LocalTime(t)), + (new Date(t)).getDate() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-9.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-9.js new file mode 100644 index 00000000000..1d8325c36b7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.10-9.js @@ -0,0 +1,103 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.10.js + ECMA Section: 15.9.5.10 + Description: Date.prototype.getDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return DateFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + // some daylight savings time cases + + var DST_START_1998 = UTC( GetSecondSundayInMarch(TimeFromYear(1998)) + 2*msPerHour ) + + var DST_END_1998 = UTC( GetFirstSundayInNovember(TimeFromYear(1998)) + 2*msPerHour ); + + addTestCase( DST_START_1998-1 ); +/* + addTestCase( DST_START_1998+1 ); + addTestCase( DST_END_1998 ); + addTestCase( DST_END_1998-1 ); + addTestCase( DST_END_1998+1 ); +*/ + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDate()", + NaN, + (new Date(NaN)).getDate() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDate.length", + 0, + Date.prototype.getDate.length ); + test(); +function addTestCase( t ) { + for ( d = 0; d < TimeInMonth(MonthFromTime(t)); d+= msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDate()", + DateFromTime(LocalTime(t)), + (new Date(t)).getDate() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-1.js new file mode 100644 index 00000000000..9b425e89e65 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-1.js @@ -0,0 +1,99 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.11.js + ECMA Section: 15.9.5.11 + Description: Date.prototype.getUTCDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 1.Return DateFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.11"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + addTestCase( now ); + + test() + +function addTestCase( t ) { + for ( var m = 0; m < 11; m++ ) { + t += TimeInMonth(m); + + for ( var d = 0; d < TimeInMonth( m ); d += 7*msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCDate()", + DateFromTime((t)), + (new Date(t)).getUTCDate() ); +/* + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+1)+")).getUTCDate()", + DateFromTime((t+1)), + (new Date(t+1)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-1)+")).getUTCDate()", + DateFromTime((t-1)), + (new Date(t-1)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-TZ_ADJUST)+")).getUTCDate()", + DateFromTime((t-TZ_ADJUST)), + (new Date(t-TZ_ADJUST)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+TZ_ADJUST)+")).getUTCDate()", + DateFromTime((t+TZ_ADJUST)), + (new Date(t+TZ_ADJUST)).getUTCDate() ); +*/ + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-2.js new file mode 100644 index 00000000000..ed946ea6bcb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-2.js @@ -0,0 +1,96 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.11 + ECMA Section: 15.9.5.11 + Description: Date.prototype.getUTCDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 1.Return DateFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.11"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + + addTestCase( TIME_YEAR_0 ); + + test(); +function addTestCase( t ) { + for ( var m = 0; m < 11; m++ ) { + t += TimeInMonth(m); + + for ( var d = 0; d < TimeInMonth( m ); d += 7*msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCDate()", + DateFromTime((t)), + (new Date(t)).getUTCDate() ); +/* + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+1)+")).getUTCDate()", + DateFromTime((t+1)), + (new Date(t+1)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-1)+")).getUTCDate()", + DateFromTime((t-1)), + (new Date(t-1)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-TZ_ADJUST)+")).getUTCDate()", + DateFromTime((t-TZ_ADJUST)), + (new Date(t-TZ_ADJUST)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+TZ_ADJUST)+")).getUTCDate()", + DateFromTime((t+TZ_ADJUST)), + (new Date(t+TZ_ADJUST)).getUTCDate() ); +*/ + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-3.js new file mode 100644 index 00000000000..f596a837323 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-3.js @@ -0,0 +1,95 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.11.js + ECMA Section: 15.9.5.11 + Description: Date.prototype.getUTCDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 1.Return DateFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.11"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + addTestCase( TIME_1970 ); + + test(); +function addTestCase( t ) { + for ( var m = 0; m < 11; m++ ) { + t += TimeInMonth(m); + + for ( var d = 0; d < TimeInMonth( m ); d += 7*msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCDate()", + DateFromTime((t)), + (new Date(t)).getUTCDate() ); +/* + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+1)+")).getUTCDate()", + DateFromTime((t+1)), + (new Date(t+1)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-1)+")).getUTCDate()", + DateFromTime((t-1)), + (new Date(t-1)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-TZ_ADJUST)+")).getUTCDate()", + DateFromTime((t-TZ_ADJUST)), + (new Date(t-TZ_ADJUST)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+TZ_ADJUST)+")).getUTCDate()", + DateFromTime((t+TZ_ADJUST)), + (new Date(t+TZ_ADJUST)).getUTCDate() ); +*/ + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-4.js new file mode 100644 index 00000000000..3b9d48033aa --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-4.js @@ -0,0 +1,95 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.11.js + ECMA Section: 15.9.5.11 + Description: Date.prototype.getUTCDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 1.Return DateFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.11"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + addTestCase( TIME_1900 ); + + test(); +function addTestCase( t ) { + for ( var m = 0; m < 11; m++ ) { + t += TimeInMonth(m); + + for ( var d = 0; d < TimeInMonth( m ); d += 7* msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCDate()", + DateFromTime((t)), + (new Date(t)).getUTCDate() ); +/* + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+1)+")).getUTCDate()", + DateFromTime((t+1)), + (new Date(t+1)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-1)+")).getUTCDate()", + DateFromTime((t-1)), + (new Date(t-1)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-TZ_ADJUST)+")).getUTCDate()", + DateFromTime((t-TZ_ADJUST)), + (new Date(t-TZ_ADJUST)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+TZ_ADJUST)+")).getUTCDate()", + DateFromTime((t+TZ_ADJUST)), + (new Date(t+TZ_ADJUST)).getUTCDate() ); +*/ + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-5.js new file mode 100644 index 00000000000..d76f392dcd9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-5.js @@ -0,0 +1,95 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.11.js + ECMA Section: 15.9.5.11 + Description: Date.prototype.getUTCDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 1.Return DateFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.11"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + addTestCase( TIME_2000 ); + + test(); +function addTestCase( t ) { + for ( var m = 0; m < 11; m++ ) { + t += TimeInMonth(m); + + for ( var d = 0; d < TimeInMonth( m ); d += 7*msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCDate()", + DateFromTime((t)), + (new Date(t)).getUTCDate() ); +/* + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+1)+")).getUTCDate()", + DateFromTime((t+1)), + (new Date(t+1)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-1)+")).getUTCDate()", + DateFromTime((t-1)), + (new Date(t-1)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-TZ_ADJUST)+")).getUTCDate()", + DateFromTime((t-TZ_ADJUST)), + (new Date(t-TZ_ADJUST)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+TZ_ADJUST)+")).getUTCDate()", + DateFromTime((t+TZ_ADJUST)), + (new Date(t+TZ_ADJUST)).getUTCDate() ); +*/ + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-6.js new file mode 100644 index 00000000000..7cb05098ca5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-6.js @@ -0,0 +1,96 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.11.js + ECMA Section: 15.9.5.11 + Description: Date.prototype.getUTCDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 1.Return DateFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.11"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + var UTC_FEB_29_2000 = TIME_2000 + ( 30 * msPerDay ) + ( 29 * msPerDay ); + + addTestCase( UTC_FEB_29_2000 ); + test(); +function addTestCase( t ) { + for ( var m = 0; m < 11; m++ ) { + t += TimeInMonth(m); + + for ( var d = 0; d < TimeInMonth( m ); d += 7*msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCDate()", + DateFromTime((t)), + (new Date(t)).getUTCDate() ); +/* + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+1)+")).getUTCDate()", + DateFromTime((t+1)), + (new Date(t+1)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-1)+")).getUTCDate()", + DateFromTime((t-1)), + (new Date(t-1)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-TZ_ADJUST)+")).getUTCDate()", + DateFromTime((t-TZ_ADJUST)), + (new Date(t-TZ_ADJUST)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+TZ_ADJUST)+")).getUTCDate()", + DateFromTime((t+TZ_ADJUST)), + (new Date(t+TZ_ADJUST)).getUTCDate() ); +*/ + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-7.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-7.js new file mode 100644 index 00000000000..08eb7f6a0a1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.11-7.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.11.js + ECMA Section: 15.9.5.11 + Description: Date.prototype.getUTCDate + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 1.Return DateFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.11"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCDate()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( UTC_JAN_1_2005 ); + + test(); +function addTestCase( t ) { + for ( var m = 0; m < 11; m++ ) { + t += TimeInMonth(m); + + for ( var d = 0; d < TimeInMonth( m ); d += 7*msPerDay ) { + t += d; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCDate()", + DateFromTime((t)), + (new Date(t)).getUTCDate() ); +/* + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+1)+")).getUTCDate()", + DateFromTime((t+1)), + (new Date(t+1)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-1)+")).getUTCDate()", + DateFromTime((t-1)), + (new Date(t-1)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-TZ_ADJUST)+")).getUTCDate()", + DateFromTime((t-TZ_ADJUST)), + (new Date(t-TZ_ADJUST)).getUTCDate() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+TZ_ADJUST)+")).getUTCDate()", + DateFromTime((t+TZ_ADJUST)), + (new Date(t+TZ_ADJUST)).getUTCDate() ); +*/ + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-1.js new file mode 100644 index 00000000000..8dcf1a4e55e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-1.js @@ -0,0 +1,110 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.12.js + ECMA Section: 15.9.5.12 + Description: Date.prototype.getDay + + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return WeekDay(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.12"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + +/* + // We don't use |now| because it fails every night at midnight. + // The test is more reproducable if we use concrete times. + addTestCase( now ); + + addTestCase( TIME_YEAR_0 ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); +*/ + addTestCase( UTC_JAN_1_2005 ); +/* + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDay()", + NaN, + (new Date(NaN)).getDay() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDay.length", + 0, + Date.prototype.getDay.length ); +*/ + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*6 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDay()", + WeekDay(LocalTime(t)), + (new Date(t)).getDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-2.js new file mode 100644 index 00000000000..dd58cb06aa3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-2.js @@ -0,0 +1,104 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.12.js + ECMA Section: 15.9.5.12 + Description: Date.prototype.getDay + + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return WeekDay(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.12"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( TIME_YEAR_0 ); +/* + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDay()", + NaN, + (new Date(NaN)).getDay() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDay.length", + 0, + Date.prototype.getDay.length ); +*/ + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*6 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDay()", + WeekDay(LocalTime(t)), + (new Date(t)).getDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-3.js new file mode 100644 index 00000000000..62124589099 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-3.js @@ -0,0 +1,103 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.12.js + ECMA Section: 15.9.5.12 + Description: Date.prototype.getDay + + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return WeekDay(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.12"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( TIME_1970 ); +/* + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDay()", + NaN, + (new Date(NaN)).getDay() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDay.length", + 0, + Date.prototype.getDay.length ); +*/ + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*6 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDay()", + WeekDay(LocalTime(t)), + (new Date(t)).getDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-4.js new file mode 100644 index 00000000000..e7bde151853 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-4.js @@ -0,0 +1,102 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.12.js + ECMA Section: 15.9.5.12 + Description: Date.prototype.getDay + + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return WeekDay(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.12"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( TIME_1900 ); +/* + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDay()", + NaN, + (new Date(NaN)).getDay() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDay.length", + 0, + Date.prototype.getDay.length ); +*/ + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*6 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDay()", + WeekDay(LocalTime(t)), + (new Date(t)).getDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-5.js new file mode 100644 index 00000000000..796187ae2b5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-5.js @@ -0,0 +1,101 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.12.js + ECMA Section: 15.9.5.12 + Description: Date.prototype.getDay + + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return WeekDay(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.12"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( TIME_2000 ); +/* + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDay()", + NaN, + (new Date(NaN)).getDay() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDay.length", + 0, + Date.prototype.getDay.length ); +*/ + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*6 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDay()", + WeekDay(LocalTime(t)), + (new Date(t)).getDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-6.js new file mode 100644 index 00000000000..1aa0a1d92e2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-6.js @@ -0,0 +1,100 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.12.js + ECMA Section: 15.9.5.12 + Description: Date.prototype.getDay + + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return WeekDay(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.12"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( UTC_FEB_29_2000 ); +/* + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDay()", + NaN, + (new Date(NaN)).getDay() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDay.length", + 0, + Date.prototype.getDay.length ); +*/ + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*6 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDay()", + WeekDay(LocalTime(t)), + (new Date(t)).getDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-7.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-7.js new file mode 100644 index 00000000000..c638614abe2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-7.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.12.js + ECMA Section: 15.9.5.12 + Description: Date.prototype.getDay + + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return WeekDay(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.12"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( UTC_JAN_1_2005 ); +/* + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDay()", + NaN, + (new Date(NaN)).getDay() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDay.length", + 0, + Date.prototype.getDay.length ); +*/ + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*6 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDay()", + WeekDay(LocalTime(t)), + (new Date(t)).getDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-8.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-8.js new file mode 100644 index 00000000000..54260caf552 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.12-8.js @@ -0,0 +1,95 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.12 + ECMA Section: 15.9.5.12 + Description: Date.prototype.getDay + + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return WeekDay(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.12"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getDay()", + NaN, + (new Date(NaN)).getDay() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getDay.length", + 0, + Date.prototype.getDay.length ); + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*6 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getDay()", + WeekDay(LocalTime(t)), + (new Date(t)).getDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-1.js new file mode 100644 index 00000000000..06bd92e436c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-1.js @@ -0,0 +1,78 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.13.js + ECMA Section: 15.9.5.13 + Description: Date.prototype.getUTCDay + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return WeekDay(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.13"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + addTestCase( now ); + + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*14 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCDay()", + WeekDay((t)), + (new Date(t)).getUTCDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-2.js new file mode 100644 index 00000000000..bec562cd404 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-2.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.13 + ECMA Section: 15.9.5.13 + Description: Date.prototype.getUTCDay + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return WeekDay(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.13"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + + addTestCase( TIME_YEAR_0 ); + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*14 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCDay()", + WeekDay((t)), + (new Date(t)).getUTCDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-3.js new file mode 100644 index 00000000000..6124d867dc9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-3.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.13.js + ECMA Section: 15.9.5.13 + Description: Date.prototype.getUTCDay + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return WeekDay(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.13"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + addTestCase( TIME_1970 ); + + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*14 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCDay()", + WeekDay((t)), + (new Date(t)).getUTCDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-4.js new file mode 100644 index 00000000000..37fd9898ca5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-4.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.13.js + ECMA Section: 15.9.5.13 + Description: Date.prototype.getUTCDay + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return WeekDay(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.13"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + addTestCase( TIME_1900 ); + + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*14 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCDay()", + WeekDay((t)), + (new Date(t)).getUTCDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-5.js new file mode 100644 index 00000000000..2af2e9e0da5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-5.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.13.js + ECMA Section: 15.9.5.13 + Description: Date.prototype.getUTCDay + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return WeekDay(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.13"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + addTestCase( TIME_2000 ); + + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*14 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCDay()", + WeekDay((t)), + (new Date(t)).getUTCDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-6.js new file mode 100644 index 00000000000..ce5e3352e2e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-6.js @@ -0,0 +1,78 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.13.js + ECMA Section: 15.9.5.13 + Description: Date.prototype.getUTCDay + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return WeekDay(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.13"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + addTestCase( UTC_FEB_29_2000 ); + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*7 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCDay()", + WeekDay((t)), + (new Date(t)).getUTCDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-7.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-7.js new file mode 100644 index 00000000000..2870bc56e98 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-7.js @@ -0,0 +1,80 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.13.js + ECMA Section: 15.9.5.13 + Description: Date.prototype.getUTCDay + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return WeekDay(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.13"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( UTC_JAN_1_2005 ); + + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*7 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCDay()", + WeekDay((t)), + (new Date(t)).getUTCDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-8.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-8.js new file mode 100644 index 00000000000..703483e4047 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.13-8.js @@ -0,0 +1,95 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.13.js + ECMA Section: 15.9.5.13 + Description: Date.prototype.getUTCDay + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return WeekDay(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.13"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCDay()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getUTCDay()", + NaN, + (new Date(NaN)).getUTCDay() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getUTCDay.length", + 0, + Date.prototype.getUTCDay.length ); + + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + t += TimeInMonth(m); + + for ( d = 0; d < TimeInMonth(m); d+= msPerDay*7 ) { + t += d; + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCDay()", + WeekDay((t)), + (new Date(t)).getUTCDay() ); + } + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.14.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.14.js new file mode 100644 index 00000000000..4d95ada2d2f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.14.js @@ -0,0 +1,96 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.14.js + ECMA Section: 15.9.5.14 + Description: Date.prototype.getHours + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return HourFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.14"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getHours()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( now ); + addTestCase( TIME_YEAR_0 ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getHours()", + NaN, + (new Date(NaN)).getHours() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getHours.length", + 0, + Date.prototype.getHours.length ); + test(); +function addTestCase( t ) { + for ( h = 0; h < 24; h+=4 ) { + t += msPerHour; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getHours()", + HourFromTime((LocalTime(t))), + (new Date(t)).getHours() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.15.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.15.js new file mode 100644 index 00000000000..de4a1321e4b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.15.js @@ -0,0 +1,97 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.15.js + ECMA Section: 15.9.5.15 + Description: Date.prototype.getUTCHours + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return HourFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.15"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCHours()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( now ); + addTestCase( TIME_YEAR_0 ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getUTCHours()", + NaN, + (new Date(NaN)).getUTCHours() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getUTCHours.length", + 0, + Date.prototype.getUTCHours.length ); + test(); +function addTestCase( t ) { + for ( h = 0; h < 24; h+=3 ) { + t += msPerHour; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCHours()", + HourFromTime((t)), + (new Date(t)).getUTCHours() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.16.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.16.js new file mode 100644 index 00000000000..2a02370772a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.16.js @@ -0,0 +1,96 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.16.js + ECMA Section: 15.9.5.16 + Description: Date.prototype.getMinutes + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return MinFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.16"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getMinutes()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( now ); + addTestCase( TIME_YEAR_0 ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getMinutes()", + NaN, + (new Date(NaN)).getMinutes() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getMinutes.length", + 0, + Date.prototype.getMinutes.length ); + test(); +function addTestCase( t ) { + for ( m = 0; m <= 60; m+=10 ) { + t += msPerMinute; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getMinutes()", + MinFromTime((LocalTime(t))), + (new Date(t)).getMinutes() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.17.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.17.js new file mode 100644 index 00000000000..0afaa7b7c24 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.17.js @@ -0,0 +1,97 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.17.js + ECMA Section: 15.9.5.17 + Description: Date.prototype.getUTCMinutes + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return MinFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.17"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCMinutes()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( now ); + addTestCase( TIME_YEAR_0 ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getUTCMinutes()", + NaN, + (new Date(NaN)).getUTCMinutes() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getUTCMinutes.length", + 0, + Date.prototype.getUTCMinutes.length ); + test(); +function addTestCase( t ) { + for ( m = 0; m <= 60; m+=10 ) { + t += msPerMinute; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCMinutes()", + MinFromTime(t), + (new Date(t)).getUTCMinutes() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.18.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.18.js new file mode 100644 index 00000000000..15376831512 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.18.js @@ -0,0 +1,97 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.18.js + ECMA Section: 15.9.5.18 + Description: Date.prototype.getSeconds + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return SecFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.18"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getSeconds()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( now ); + addTestCase( TIME_YEAR_0 ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getSeconds()", + NaN, + (new Date(NaN)).getSeconds() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getSeconds.length", + 0, + Date.prototype.getSeconds.length ); + test(); +function addTestCase( t ) { + for ( m = 0; m <= 60; m+=10 ) { + t += 1000; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getSeconds()", + SecFromTime(LocalTime(t)), + (new Date(t)).getSeconds() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.19.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.19.js new file mode 100644 index 00000000000..91f2a0a8eda --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.19.js @@ -0,0 +1,97 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.19.js + ECMA Section: 15.9.5.19 + Description: Date.prototype.getUTCSeconds + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return SecFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.19"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCSeconds()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( now ); + addTestCase( TIME_YEAR_0 ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getUTCSeconds()", + NaN, + (new Date(NaN)).getUTCSeconds() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getUTCSeconds.length", + 0, + Date.prototype.getUTCSeconds.length ); + test(); +function addTestCase( t ) { + for ( m = 0; m <= 60; m+=10 ) { + t += 1000; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCSeconds()", + SecFromTime(t), + (new Date(t)).getUTCSeconds() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.2-1.js new file mode 100644 index 00000000000..bb0fb02d37b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.2-1.js @@ -0,0 +1,152 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.2.js + ECMA Section: 15.9.5.2 Date.prototype.toString + Description: + This function returns a string value. The contents of the string are + implementation dependent, but are intended to represent the Date in a + convenient, human-readable form in the current time zone. + + The toString function is not generic; it generates a runtime error if its + this value is not a Date object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.toString"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.toString.length", + 0, + Date.prototype.toString.length ); + + var now = new Date(); + + // can't test the content of the string, but can verify that the string is + // parsable by Date.parse + + testcases[tc++] = new TestCase( SECTION, + "Math.abs(Date.parse(now.toString()) - now.valueOf()) < 1000", + true, + Math.abs(Date.parse(now.toString()) - now.valueOf()) < 1000 ); + + testcases[tc++] = new TestCase( SECTION, + "typeof now.toString()", + "string", + typeof now.toString() ); + // 1970 + + TZ_ADJUST = TZ_DIFF * msPerHour; + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date(0)).toString() )", + 0, + Date.parse( (new Date(0)).toString() ) ) + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+TZ_ADJUST+")).toString() )", + TZ_ADJUST, + Date.parse( (new Date(TZ_ADJUST)).toString() ) ) + + // 1900 + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+TIME_1900+")).toString() )", + TIME_1900, + Date.parse( (new Date(TIME_1900)).toString() ) ) + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+TIME_1900 -TZ_ADJUST+")).toString() )", + TIME_1900 -TZ_ADJUST, + Date.parse( (new Date(TIME_1900 -TZ_ADJUST)).toString() ) ) + + // 2000 + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+TIME_2000+")).toString() )", + TIME_2000, + Date.parse( (new Date(TIME_2000)).toString() ) ) + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+TIME_2000 -TZ_ADJUST+")).toString() )", + TIME_2000 -TZ_ADJUST, + Date.parse( (new Date(TIME_2000 -TZ_ADJUST)).toString() ) ) + + // 29 Feb 2000 + + var UTC_29_FEB_2000 = TIME_2000 + 31*msPerDay + 28*msPerDay; + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+UTC_29_FEB_2000+")).toString() )", + UTC_29_FEB_2000, + Date.parse( (new Date(UTC_29_FEB_2000)).toString() ) ) + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+(UTC_29_FEB_2000-1000)+")).toString() )", + UTC_29_FEB_2000-1000, + Date.parse( (new Date(UTC_29_FEB_2000-1000)).toString() ) ) + + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+(UTC_29_FEB_2000-TZ_ADJUST)+")).toString() )", + UTC_29_FEB_2000-TZ_ADJUST, + Date.parse( (new Date(UTC_29_FEB_2000-TZ_ADJUST)).toString() ) ) + // 2O05 + + var UTC_1_JAN_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001) + + TimeInYear(2002) + TimeInYear(2003) + TimeInYear(2004); + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+UTC_1_JAN_2005+")).toString() )", + UTC_1_JAN_2005, + Date.parse( (new Date(UTC_1_JAN_2005)).toString() ) ) + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+(UTC_1_JAN_2005-1000)+")).toString() )", + UTC_1_JAN_2005-1000, + Date.parse( (new Date(UTC_1_JAN_2005-1000)).toString() ) ) + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+(UTC_1_JAN_2005-TZ_ADJUST)+")).toString() )", + UTC_1_JAN_2005-TZ_ADJUST, + Date.parse( (new Date(UTC_1_JAN_2005-TZ_ADJUST)).toString() ) ) + + test(); +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.2-2-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.2-2-n.js new file mode 100644 index 00000000000..8044dd80861 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.2-2-n.js @@ -0,0 +1,77 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.2-2.js + ECMA Section: 15.9.5.2 Date.prototype.toString + Description: + This function returns a string value. The contents of the string are + implementation dependent, but are intended to represent the Date in a + convenient, human-readable form in the current time zone. + + The toString function is not generic; it generates a runtime error if its + this value is not a Date object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + + This verifies that calling toString on an object that is not a string + generates a runtime error. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.2-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.toString"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var OBJ = new MyObject( new Date(0) ); + + testcases[tc++] = new TestCase( SECTION, + "var OBJ = new MyObject( new Date(0) ); OBJ.toString()", + "error", + OBJ.toString() ); + test(); + +function MyObject( value ) { + this.value = value; + this.valueOf = new Function( "return this.value" ); + this.toString = Date.prototype.toString; + return this; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.2.js new file mode 100644 index 00000000000..bb0fb02d37b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.2.js @@ -0,0 +1,152 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.2.js + ECMA Section: 15.9.5.2 Date.prototype.toString + Description: + This function returns a string value. The contents of the string are + implementation dependent, but are intended to represent the Date in a + convenient, human-readable form in the current time zone. + + The toString function is not generic; it generates a runtime error if its + this value is not a Date object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.toString"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.toString.length", + 0, + Date.prototype.toString.length ); + + var now = new Date(); + + // can't test the content of the string, but can verify that the string is + // parsable by Date.parse + + testcases[tc++] = new TestCase( SECTION, + "Math.abs(Date.parse(now.toString()) - now.valueOf()) < 1000", + true, + Math.abs(Date.parse(now.toString()) - now.valueOf()) < 1000 ); + + testcases[tc++] = new TestCase( SECTION, + "typeof now.toString()", + "string", + typeof now.toString() ); + // 1970 + + TZ_ADJUST = TZ_DIFF * msPerHour; + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date(0)).toString() )", + 0, + Date.parse( (new Date(0)).toString() ) ) + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+TZ_ADJUST+")).toString() )", + TZ_ADJUST, + Date.parse( (new Date(TZ_ADJUST)).toString() ) ) + + // 1900 + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+TIME_1900+")).toString() )", + TIME_1900, + Date.parse( (new Date(TIME_1900)).toString() ) ) + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+TIME_1900 -TZ_ADJUST+")).toString() )", + TIME_1900 -TZ_ADJUST, + Date.parse( (new Date(TIME_1900 -TZ_ADJUST)).toString() ) ) + + // 2000 + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+TIME_2000+")).toString() )", + TIME_2000, + Date.parse( (new Date(TIME_2000)).toString() ) ) + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+TIME_2000 -TZ_ADJUST+")).toString() )", + TIME_2000 -TZ_ADJUST, + Date.parse( (new Date(TIME_2000 -TZ_ADJUST)).toString() ) ) + + // 29 Feb 2000 + + var UTC_29_FEB_2000 = TIME_2000 + 31*msPerDay + 28*msPerDay; + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+UTC_29_FEB_2000+")).toString() )", + UTC_29_FEB_2000, + Date.parse( (new Date(UTC_29_FEB_2000)).toString() ) ) + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+(UTC_29_FEB_2000-1000)+")).toString() )", + UTC_29_FEB_2000-1000, + Date.parse( (new Date(UTC_29_FEB_2000-1000)).toString() ) ) + + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+(UTC_29_FEB_2000-TZ_ADJUST)+")).toString() )", + UTC_29_FEB_2000-TZ_ADJUST, + Date.parse( (new Date(UTC_29_FEB_2000-TZ_ADJUST)).toString() ) ) + // 2O05 + + var UTC_1_JAN_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001) + + TimeInYear(2002) + TimeInYear(2003) + TimeInYear(2004); + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+UTC_1_JAN_2005+")).toString() )", + UTC_1_JAN_2005, + Date.parse( (new Date(UTC_1_JAN_2005)).toString() ) ) + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+(UTC_1_JAN_2005-1000)+")).toString() )", + UTC_1_JAN_2005-1000, + Date.parse( (new Date(UTC_1_JAN_2005-1000)).toString() ) ) + + testcases[tc++] = new TestCase( SECTION, + "Date.parse( (new Date("+(UTC_1_JAN_2005-TZ_ADJUST)+")).toString() )", + UTC_1_JAN_2005-TZ_ADJUST, + Date.parse( (new Date(UTC_1_JAN_2005-TZ_ADJUST)).toString() ) ) + + test(); +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.20.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.20.js new file mode 100644 index 00000000000..3ef81f2e734 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.20.js @@ -0,0 +1,97 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.20.js + ECMA Section: 15.9.5.20 + Description: Date.prototype.getMilliseconds + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return msFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.20"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getMilliseconds()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( now ); + addTestCase( TIME_YEAR_0 ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getMilliseconds()", + NaN, + (new Date(NaN)).getMilliseconds() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getMilliseconds.length", + 0, + Date.prototype.getMilliseconds.length ); + test(); +function addTestCase( t ) { + for ( m = 0; m <= 1000; m+=100 ) { + t++; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getMilliseconds()", + msFromTime(LocalTime(t)), + (new Date(t)).getMilliseconds() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-1.js new file mode 100644 index 00000000000..eb89ba49ba5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-1.js @@ -0,0 +1,97 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.21.js + ECMA Section: 15.9.5.21 + Description: Date.prototype.getUTCMilliseconds + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return msFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.21"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCMilliseconds()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( now ); +/* + addTestCase( TIME_YEAR_0 ); + + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getUTCMilliseconds()", + NaN, + (new Date(NaN)).getUTCMilliseconds() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getUTCMilliseconds.length", + 0, + Date.prototype.getUTCMilliseconds.length ); +*/ + test(); +function addTestCase( t ) { + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCMilliseconds()", + msFromTime(t), + (new Date(t)).getUTCMilliseconds() ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-2.js new file mode 100644 index 00000000000..5a70d4757f6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-2.js @@ -0,0 +1,95 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.21.js + ECMA Section: 15.9.5.21 + Description: Date.prototype.getUTCMilliseconds + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return msFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.21"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCMilliseconds()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( TIME_YEAR_0 ); +/* + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getUTCMilliseconds()", + NaN, + (new Date(NaN)).getUTCMilliseconds() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getUTCMilliseconds.length", + 0, + Date.prototype.getUTCMilliseconds.length ); +*/ + test(); +function addTestCase( t ) { + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCMilliseconds()", + msFromTime(t), + (new Date(t)).getUTCMilliseconds() ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-3.js new file mode 100644 index 00000000000..bfd80c8a0dd --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-3.js @@ -0,0 +1,78 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.21.js + ECMA Section: 15.9.5.21 + Description: Date.prototype.getUTCMilliseconds + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return msFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.21"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCMilliseconds()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( TIME_1970 ); + test(); +function addTestCase( t ) { + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCMilliseconds()", + msFromTime(t), + (new Date(t)).getUTCMilliseconds() ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-4.js new file mode 100644 index 00000000000..3f0e4e8ea8d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-4.js @@ -0,0 +1,78 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.21.js + ECMA Section: 15.9.5.21 + Description: Date.prototype.getUTCMilliseconds + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return msFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.21"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCMilliseconds()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( TIME_1900 ); + test(); +function addTestCase( t ) { + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCMilliseconds()", + msFromTime(t), + (new Date(t)).getUTCMilliseconds() ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-5.js new file mode 100644 index 00000000000..2ef6e21c322 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-5.js @@ -0,0 +1,78 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.21.js + ECMA Section: 15.9.5.21 + Description: Date.prototype.getUTCMilliseconds + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return msFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.21"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCMilliseconds()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( TIME_2000 ); + test(); +function addTestCase( t ) { + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCMilliseconds()", + msFromTime(t), + (new Date(t)).getUTCMilliseconds() ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-6.js new file mode 100644 index 00000000000..397347213c1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-6.js @@ -0,0 +1,79 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.21.js + ECMA Section: 15.9.5.21 + Description: Date.prototype.getUTCMilliseconds + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return msFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.21"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCMilliseconds()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( UTC_FEB_29_2000 ); + + test(); +function addTestCase( t ) { + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCMilliseconds()", + msFromTime(t), + (new Date(t)).getUTCMilliseconds() ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-7.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-7.js new file mode 100644 index 00000000000..e50aa04209d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-7.js @@ -0,0 +1,78 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.21.js + ECMA Section: 15.9.5.21 + Description: Date.prototype.getUTCMilliseconds + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return msFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.21"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCMilliseconds()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( UTC_JAN_1_2005 ); + test(); +function addTestCase( t ) { + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCMilliseconds()", + msFromTime(t), + (new Date(t)).getUTCMilliseconds() ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-8.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-8.js new file mode 100644 index 00000000000..b23dfc35cb0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.21-8.js @@ -0,0 +1,86 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.21.js + ECMA Section: 15.9.5.21 + Description: Date.prototype.getUTCMilliseconds + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return msFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.21"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCMilliseconds()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getUTCMilliseconds()", + NaN, + (new Date(NaN)).getUTCMilliseconds() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getUTCMilliseconds.length", + 0, + Date.prototype.getUTCMilliseconds.length ); + test(); +function addTestCase( t ) { + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCMilliseconds()", + msFromTime(t), + (new Date(t)).getUTCMilliseconds() ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-1.js new file mode 100644 index 00000000000..cd84a9b6126 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-1.js @@ -0,0 +1,100 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.22.js + ECMA Section: 15.9.5.22 + Description: Date.prototype.getTimezoneOffset + + Returns the difference between local time and UTC time in minutes. + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return (t - LocalTime(t)) / msPerMinute. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.22"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getTimezoneOffset()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + +// addTestCase( now ); + + addTestCase( TIME_YEAR_0 ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getTimezoneOffset()", + NaN, + (new Date(NaN)).getTimezoneOffset() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getTimezoneOffset.length", + 0, + Date.prototype.getTimezoneOffset.length ); + + test(); +function addTestCase( t ) { + for ( m = 0; m <= 1000; m+=100 ) { + t++; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getTimezoneOffset()", + (t - LocalTime(t)) / msPerMinute, + (new Date(t)).getTimezoneOffset() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-2.js new file mode 100644 index 00000000000..e516135ecaf --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-2.js @@ -0,0 +1,99 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.22.js + ECMA Section: 15.9.5.22 + Description: Date.prototype.getTimezoneOffset + + Returns the difference between local time and UTC time in minutes. + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return (t - LocalTime(t)) / msPerMinute. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.22"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getTimezoneOffset()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( TIME_YEAR_0 ); +/* + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getTimezoneOffset()", + NaN, + (new Date(NaN)).getTimezoneOffset() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getTimezoneOffset.length", + 0, + Date.prototype.getTimezoneOffset.length ); +*/ + test(); +function addTestCase( t ) { + for ( m = 0; m <= 1000; m+=100 ) { + t++; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getTimezoneOffset()", + (t - LocalTime(t)) / msPerMinute, + (new Date(t)).getTimezoneOffset() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-3.js new file mode 100644 index 00000000000..371cbc2606c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-3.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.22.js + ECMA Section: 15.9.5.22 + Description: Date.prototype.getTimezoneOffset + + Returns the difference between local time and UTC time in minutes. + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return (t - LocalTime(t)) / msPerMinute. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.22"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getTimezoneOffset()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( TIME_1970 ); +/* + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getTimezoneOffset()", + NaN, + (new Date(NaN)).getTimezoneOffset() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getTimezoneOffset.length", + 0, + Date.prototype.getTimezoneOffset.length ); +*/ + test(); +function addTestCase( t ) { + for ( m = 0; m <= 1000; m+=100 ) { + t++; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getTimezoneOffset()", + (t - LocalTime(t)) / msPerMinute, + (new Date(t)).getTimezoneOffset() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-4.js new file mode 100644 index 00000000000..1c63441dca4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-4.js @@ -0,0 +1,97 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.22.js + ECMA Section: 15.9.5.22 + Description: Date.prototype.getTimezoneOffset + + Returns the difference between local time and UTC time in minutes. + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return (t - LocalTime(t)) / msPerMinute. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.22"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getTimezoneOffset()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( TIME_1900 ); +/* + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getTimezoneOffset()", + NaN, + (new Date(NaN)).getTimezoneOffset() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getTimezoneOffset.length", + 0, + Date.prototype.getTimezoneOffset.length ); +*/ + test(); +function addTestCase( t ) { + for ( m = 0; m <= 1000; m+=100 ) { + t++; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getTimezoneOffset()", + (t - LocalTime(t)) / msPerMinute, + (new Date(t)).getTimezoneOffset() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-5.js new file mode 100644 index 00000000000..3f20ea42e5c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-5.js @@ -0,0 +1,96 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.22.js + ECMA Section: 15.9.5.22 + Description: Date.prototype.getTimezoneOffset + + Returns the difference between local time and UTC time in minutes. + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return (t - LocalTime(t)) / msPerMinute. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.22"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getTimezoneOffset()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( TIME_2000 ); +/* + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getTimezoneOffset()", + NaN, + (new Date(NaN)).getTimezoneOffset() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getTimezoneOffset.length", + 0, + Date.prototype.getTimezoneOffset.length ); +*/ + test(); +function addTestCase( t ) { + for ( m = 0; m <= 1000; m+=100 ) { + t++; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getTimezoneOffset()", + (t - LocalTime(t)) / msPerMinute, + (new Date(t)).getTimezoneOffset() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-6.js new file mode 100644 index 00000000000..0aee4a0db17 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-6.js @@ -0,0 +1,95 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.22.js + ECMA Section: 15.9.5.22 + Description: Date.prototype.getTimezoneOffset + + Returns the difference between local time and UTC time in minutes. + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return (t - LocalTime(t)) / msPerMinute. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.22"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getTimezoneOffset()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( UTC_FEB_29_2000 ); +/* + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getTimezoneOffset()", + NaN, + (new Date(NaN)).getTimezoneOffset() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getTimezoneOffset.length", + 0, + Date.prototype.getTimezoneOffset.length ); +*/ + test(); +function addTestCase( t ) { + for ( m = 0; m <= 1000; m+=100 ) { + t++; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getTimezoneOffset()", + (t - LocalTime(t)) / msPerMinute, + (new Date(t)).getTimezoneOffset() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-7.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-7.js new file mode 100644 index 00000000000..2d6ecfc127c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-7.js @@ -0,0 +1,93 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.22.js + ECMA Section: 15.9.5.22 + Description: Date.prototype.getTimezoneOffset + + Returns the difference between local time and UTC time in minutes. + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return (t - LocalTime(t)) / msPerMinute. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.22"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getTimezoneOffset()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( UTC_JAN_1_2005 ); +/* + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getTimezoneOffset()", + NaN, + (new Date(NaN)).getTimezoneOffset() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getTimezoneOffset.length", + 0, + Date.prototype.getTimezoneOffset.length ); +*/ + test(); +function addTestCase( t ) { + for ( m = 0; m <= 1000; m+=100 ) { + t++; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getTimezoneOffset()", + (t - LocalTime(t)) / msPerMinute, + (new Date(t)).getTimezoneOffset() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-8.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-8.js new file mode 100644 index 00000000000..f7d65208a11 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.22-8.js @@ -0,0 +1,90 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.22.js + ECMA Section: 15.9.5.22 + Description: Date.prototype.getTimezoneOffset + + Returns the difference between local time and UTC time in minutes. + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return (t - LocalTime(t)) / msPerMinute. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.22"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getTimezoneOffset()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getTimezoneOffset()", + NaN, + (new Date(NaN)).getTimezoneOffset() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getTimezoneOffset.length", + 0, + Date.prototype.getTimezoneOffset.length ); + test(); +function addTestCase( t ) { + for ( m = 0; m <= 1000; m+=100 ) { + t++; + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getTimezoneOffset()", + (t - LocalTime(t)) / msPerMinute, + (new Date(t)).getTimezoneOffset() ); + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-1.js new file mode 100644 index 00000000000..3a744504b16 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-1.js @@ -0,0 +1,157 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-1.js + ECMA Section: 15.9.5.23 Date.prototype.setTime(time) + Description: + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "15.9.5.23-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + + var testcases = new Array(); + writeHeaderToLog( SECTION + " Date.prototype.setTime(time)"); + + getTestCases(); + test(); + +function getTestCases() { + var now = "now"; + addTestCase( 0, 0 ); +/* + addTestCase( now, -2208988800000 ); + addTestCase( now, -86400000 ); + addTestCase( now, 946684800000 ); + + // this daylight savings case fails -- need to fix date test functions +// addTestCase( now, -69609600000 ); + addTestCase( now, -2208988800000 ); + addTestCase( now, 946684800000 ); + + // this daylight savings case fails -- need to fix date test functions +// addTestCase( now, -69609600000 ); + addTestCase( now, 0 ); + addTestCase( now, String( TIME_1900 ) ); + addTestCase( now, String( TZ_DIFF* msPerHour ) ); + addTestCase( now, String( TIME_2000 ) ); +*/ +} + +function addTestCase( startTime, setTime ) { + if ( startTime == "now" ) { + DateCase = new Date(); + } else { + DateCase = new Date( startTime ); + } + + DateCase.setTime( setTime ); + var DateString = "var d = new Date("+startTime+"); d.setTime("+setTime+"); d" ; + var UTCDate = UTCDateFromTime ( Number(setTime) ); + var LocalDate = LocalDateFromTime( Number(setTime) ); + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes, DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds, DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + return (d); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-10.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-10.js new file mode 100644 index 00000000000..406123b5b58 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-10.js @@ -0,0 +1,156 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-1.js + ECMA Section: 15.9.5.23 Date.prototype.setTime(time) + Description: + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "15.9.5.23-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + + var testcases = new Array(); + + getTestCases(); + writeHeaderToLog( SECTION + " Date.prototype.setTime(time)"); + test(); + +function getTestCases() { + var now = "now"; + addTestCase( now, -2208988800000 ); +/* + addTestCase( now, -86400000 ); + addTestCase( now, 946684800000 ); + + // this daylight savings case fails -- need to fix date test functions +// addTestCase( now, -69609600000 ); + addTestCase( now, -2208988800000 ); + addTestCase( now, 946684800000 ); + + // this daylight savings case fails -- need to fix date test functions +// addTestCase( now, -69609600000 ); + addTestCase( now, 0 ); + addTestCase( now, String( TIME_1900 ) ); + addTestCase( now, String( TZ_DIFF* msPerHour ) ); + addTestCase( now, String( TIME_2000 ) ); +*/ +} + +function addTestCase( startTime, setTime ) { + if ( startTime == "now" ) { + DateCase = new Date(); + } else { + DateCase = new Date( startTime ); + } + + DateCase.setTime( setTime ); + var DateString = "var d = new Date("+startTime+"); d.setTime("+setTime+"); d" ; + var UTCDate = UTCDateFromTime ( Number(setTime) ); + var LocalDate = LocalDateFromTime( Number(setTime) ); + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes, DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds, DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + return (d); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-11.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-11.js new file mode 100644 index 00000000000..377edd5ccc6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-11.js @@ -0,0 +1,155 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-1.js + ECMA Section: 15.9.5.23 Date.prototype.setTime(time) + Description: + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "15.9.5.23-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + writeHeaderToLog( SECTION + " Date.prototype.setTime(time)"); + + var testcases = new Array(); + getTestCases(); + + test(); + +function getTestCases() { + var now = "now"; + addTestCase( now, -86400000 ); +/* + addTestCase( now, 946684800000 ); + + // this daylight savings case fails -- need to fix date test functions +// addTestCase( now, -69609600000 ); + addTestCase( now, -2208988800000 ); + addTestCase( now, 946684800000 ); + + // this daylight savings case fails -- need to fix date test functions +// addTestCase( now, -69609600000 ); + addTestCase( now, 0 ); + addTestCase( now, String( TIME_1900 ) ); + addTestCase( now, String( TZ_DIFF* msPerHour ) ); + addTestCase( now, String( TIME_2000 ) ); +*/ +} + +function addTestCase( startTime, setTime ) { + if ( startTime == "now" ) { + DateCase = new Date(); + } else { + DateCase = new Date( startTime ); + } + + DateCase.setTime( setTime ); + var DateString = "var d = new Date("+startTime+"); d.setTime("+setTime+"); d" ; + var UTCDate = UTCDateFromTime ( Number(setTime) ); + var LocalDate = LocalDateFromTime( Number(setTime) ); + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes, DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds, DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + return (d); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-12.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-12.js new file mode 100644 index 00000000000..b0820c046d9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-12.js @@ -0,0 +1,153 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-1.js + ECMA Section: 15.9.5.23 Date.prototype.setTime(time) + Description: + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "15.9.5.23-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + + var testcases = new Array(); + getTestCases(); + + writeHeaderToLog( SECTION + " Date.prototype.setTime(time)"); + test(); + +function getTestCases() { + var now = "now"; + addTestCase( now, 946684800000 ); +/* + // this daylight savings case fails -- need to fix date test functions +// addTestCase( now, -69609600000 ); + addTestCase( now, -2208988800000 ); + addTestCase( now, 946684800000 ); + + // this daylight savings case fails -- need to fix date test functions +// addTestCase( now, -69609600000 ); + addTestCase( now, 0 ); + addTestCase( now, String( TIME_1900 ) ); + addTestCase( now, String( TZ_DIFF* msPerHour ) ); + addTestCase( now, String( TIME_2000 ) ); +*/ +} + +function addTestCase( startTime, setTime ) { + if ( startTime == "now" ) { + DateCase = new Date(); + } else { + DateCase = new Date( startTime ); + } + + DateCase.setTime( setTime ); + var DateString = "var d = new Date("+startTime+"); d.setTime("+setTime+"); d" ; + var UTCDate = UTCDateFromTime ( Number(setTime) ); + var LocalDate = LocalDateFromTime( Number(setTime) ); + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes, DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds, DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + return (d); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-13.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-13.js new file mode 100644 index 00000000000..058a7c7c669 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-13.js @@ -0,0 +1,150 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-1.js + ECMA Section: 15.9.5.23 Date.prototype.setTime(time) + Description: + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "15.9.5.23-13"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + + writeHeaderToLog( SECTION + " Date.prototype.setTime(time)"); + + var testcases = new Array(); + getTestCases(); + test(); + +function getTestCases() { + var now = "now"; + addTestCase( now, -2208988800000 ); +/* + addTestCase( now, 946684800000 ); + + // this daylight savings case fails -- need to fix date test functions +// addTestCase( now, -69609600000 ); + addTestCase( now, 0 ); + addTestCase( now, String( TIME_1900 ) ); + addTestCase( now, String( TZ_DIFF* msPerHour ) ); + addTestCase( now, String( TIME_2000 ) ); +*/ +} + +function addTestCase( startTime, setTime ) { + if ( startTime == "now" ) { + DateCase = new Date(); + } else { + DateCase = new Date( startTime ); + } + + DateCase.setTime( setTime ); + var DateString = "var d = new Date("+startTime+"); d.setTime("+setTime+"); d" ; + var UTCDate = UTCDateFromTime ( Number(setTime) ); + var LocalDate = LocalDateFromTime( Number(setTime) ); + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes, DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds, DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + return (d); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-14.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-14.js new file mode 100644 index 00000000000..135e80805ad --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-14.js @@ -0,0 +1,148 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-1.js + ECMA Section: 15.9.5.23 Date.prototype.setTime(time) + Description: + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "15.9.5.23-14"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + + writeHeaderToLog( SECTION + " Date.prototype.setTime(time)"); + + var testcases = new Array(); + getTestCases(); + test(); + +function getTestCases() { + var now = "now"; + addTestCase( now, 946684800000 ); +/* + // this daylight savings case fails -- need to fix date test functions +// addTestCase( now, -69609600000 ); + addTestCase( now, 0 ); + addTestCase( now, String( TIME_1900 ) ); + addTestCase( now, String( TZ_DIFF* msPerHour ) ); + addTestCase( now, String( TIME_2000 ) ); +*/ +} + +function addTestCase( startTime, setTime ) { + if ( startTime == "now" ) { + DateCase = new Date(); + } else { + DateCase = new Date( startTime ); + } + + DateCase.setTime( setTime ); + var DateString = "var d = new Date("+startTime+"); d.setTime("+setTime+"); d" ; + var UTCDate = UTCDateFromTime ( Number(setTime) ); + var LocalDate = LocalDateFromTime( Number(setTime) ); + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes, DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds, DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + return (d); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-15.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-15.js new file mode 100644 index 00000000000..0f4e58764c7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-15.js @@ -0,0 +1,144 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-1.js + ECMA Section: 15.9.5.23 Date.prototype.setTime(time) + Description: + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "15.9.5.23-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + writeHeaderToLog( SECTION + " Date.prototype.setTime(time)"); + + var testcases = new Array(); + getTestCases(); + test(); + +function getTestCases() { + var now = "now"; + addTestCase( now, 0 ); +/* + addTestCase( now, String( TIME_1900 ) ); + addTestCase( now, String( TZ_DIFF* msPerHour ) ); + addTestCase( now, String( TIME_2000 ) ); +*/ +} + +function addTestCase( startTime, setTime ) { + if ( startTime == "now" ) { + DateCase = new Date(); + } else { + DateCase = new Date( startTime ); + } + + DateCase.setTime( setTime ); + var DateString = "var d = new Date("+startTime+"); d.setTime("+setTime+"); d" ; + var UTCDate = UTCDateFromTime ( Number(setTime) ); + var LocalDate = LocalDateFromTime( Number(setTime) ); + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes, DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds, DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + return (d); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-16.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-16.js new file mode 100644 index 00000000000..7390eb5f7b7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-16.js @@ -0,0 +1,143 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-1.js + ECMA Section: 15.9.5.23 Date.prototype.setTime(time) + Description: + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "15.9.5.23-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + writeHeaderToLog( SECTION + " Date.prototype.setTime(time)"); + + var testcases = new Array(); + getTestCases(); + test(); + +function getTestCases() { + var now = "now"; + addTestCase( now, String( TIME_1900 ) ); +/* + addTestCase( now, String( TZ_DIFF* msPerHour ) ); + addTestCase( now, String( TIME_2000 ) ); +*/ +} + +function addTestCase( startTime, setTime ) { + if ( startTime == "now" ) { + DateCase = new Date(); + } else { + DateCase = new Date( startTime ); + } + + DateCase.setTime( setTime ); + var DateString = "var d = new Date("+startTime+"); d.setTime("+setTime+"); d" ; + var UTCDate = UTCDateFromTime ( Number(setTime) ); + var LocalDate = LocalDateFromTime( Number(setTime) ); + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes, DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds, DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + return (d); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-17.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-17.js new file mode 100644 index 00000000000..0ac866e241b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-17.js @@ -0,0 +1,142 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-1.js + ECMA Section: 15.9.5.23 Date.prototype.setTime(time) + Description: + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "15.9.5.23-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + writeHeaderToLog( SECTION + " Date.prototype.setTime(time)"); + + var testcases = new Array(); + getTestCases(); + test(); + +function getTestCases() { + var now = "now"; + addTestCase( now, String( TZ_DIFF* msPerHour ) ); +/* + addTestCase( now, String( TIME_2000 ) ); +*/ +} + +function addTestCase( startTime, setTime ) { + if ( startTime == "now" ) { + DateCase = new Date(); + } else { + DateCase = new Date( startTime ); + } + + DateCase.setTime( setTime ); + var DateString = "var d = new Date("+startTime+"); d.setTime("+setTime+"); d" ; + var UTCDate = UTCDateFromTime ( Number(setTime) ); + var LocalDate = LocalDateFromTime( Number(setTime) ); + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes, DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds, DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + return (d); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-18.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-18.js new file mode 100644 index 00000000000..902f41126f1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-18.js @@ -0,0 +1,139 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-1.js + ECMA Section: 15.9.5.23 Date.prototype.setTime(time) + Description: + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "15.9.5.23-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + writeHeaderToLog( SECTION + " Date.prototype.setTime(time)"); + + var testcases = new Array(); + getTestCases(); + test(); + +function getTestCases() { + var now = "now"; + addTestCase( now, String( TIME_2000 ) ); +} + +function addTestCase( startTime, setTime ) { + if ( startTime == "now" ) { + DateCase = new Date(); + } else { + DateCase = new Date( startTime ); + } + + DateCase.setTime( setTime ); + var DateString = "var d = new Date("+startTime+"); d.setTime("+setTime+"); d" ; + var UTCDate = UTCDateFromTime ( Number(setTime) ); + var LocalDate = LocalDateFromTime( Number(setTime) ); + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes, DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds, DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + return (d); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-2.js new file mode 100644 index 00000000000..e4715146d5f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-2.js @@ -0,0 +1,111 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-2.js + ECMA Section: 15.9.5.23 + Description: Date.prototype.setTime + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "15.9.5.23-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + test_times = new Array( now, TIME_1970, TIME_1900, TIME_2000 ); + + + for ( var j = 0; j < test_times.length; j++ ) { + addTestCase( new Date(now), test_times[j] ); + } + + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).setTime()", + NaN, + (new Date(NaN)).setTime() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.setTime.length", + 1, + Date.prototype.setTime.length ); + test(); +function addTestCase( d, t ) { + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+t+")", + t, + d.setTime(t) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+1.1)+")", + TimeClip(t+1.1), + d.setTime(t+1.1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+1)+")", + t+1, + d.setTime(t+1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t-1)+")", + t-1, + d.setTime(t-1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t-TZ_ADJUST)+")", + t-TZ_ADJUST, + d.setTime(t-TZ_ADJUST) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+TZ_ADJUST)+")", + t+TZ_ADJUST, + d.setTime(t+TZ_ADJUST) ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-3-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-3-n.js new file mode 100644 index 00000000000..44fffdf155d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-3-n.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-3-n.js + ECMA Section: 15.9.5.23 + Description: Date.prototype.setTime + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.23-3-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var MYDATE = new MyDate(TIME_1970); + + testcases[tc++] = new TestCase( SECTION, + "MYDATE.setTime(TIME_2000)", + "error", + MYDATE.setTime(TIME_2000) ); + +function MyDate(value) { + this.value = value; + this.setTime = Date.prototype.setTime; + return this; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-4.js new file mode 100644 index 00000000000..633bbf6409a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-4.js @@ -0,0 +1,122 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-2.js + ECMA Section: 15.9.5.23 + Description: Date.prototype.setTime + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.23-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + test_times = new Array( now, TIME_YEAR_0, TIME_1970, TIME_1900, TIME_2000, + UTC_FEB_29_2000, UTC_JAN_1_2005 ); + + + for ( var j = 0; j < test_times.length; j++ ) { + addTestCase( new Date(TIME_YEAR_0), test_times[j] ); + } + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).setTime()", + NaN, + (new Date(NaN)).setTime() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.setTime.length", + 1, + Date.prototype.setTime.length ); + test(); + +function addTestCase( d, t ) { + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+t+")", + t, + d.setTime(t) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+1.1)+")", + TimeClip(t+1.1), + d.setTime(t+1.1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+1)+")", + t+1, + d.setTime(t+1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t-1)+")", + t-1, + d.setTime(t-1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t-TZ_ADJUST)+")", + t-TZ_ADJUST, + d.setTime(t-TZ_ADJUST) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+TZ_ADJUST)+")", + t+TZ_ADJUST, + d.setTime(t+TZ_ADJUST) ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-5.js new file mode 100644 index 00000000000..ab8d9a7e1a0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-5.js @@ -0,0 +1,122 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-2.js + ECMA Section: 15.9.5.23 + Description: Date.prototype.setTime + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.23-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + test_times = new Array( now, TIME_YEAR_0, TIME_1970, TIME_1900, TIME_2000, + UTC_FEB_29_2000, UTC_JAN_1_2005 ); + + + for ( var j = 0; j < test_times.length; j++ ) { + addTestCase( new Date(TIME_1970), test_times[j] ); + } + + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).setTime()", + NaN, + (new Date(NaN)).setTime() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.setTime.length", + 1, + Date.prototype.setTime.length ); + test(); +function addTestCase( d, t ) { + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+t+")", + t, + d.setTime(t) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+1.1)+")", + TimeClip(t+1.1), + d.setTime(t+1.1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+1)+")", + t+1, + d.setTime(t+1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t-1)+")", + t-1, + d.setTime(t-1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t-TZ_ADJUST)+")", + t-TZ_ADJUST, + d.setTime(t-TZ_ADJUST) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+TZ_ADJUST)+")", + t+TZ_ADJUST, + d.setTime(t+TZ_ADJUST) ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-6.js new file mode 100644 index 00000000000..3f0c3f70a24 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-6.js @@ -0,0 +1,122 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-2.js + ECMA Section: 15.9.5.23 + Description: Date.prototype.setTime + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.23-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + test_times = new Array( now, TIME_YEAR_0, TIME_1970, TIME_1900, TIME_2000, + UTC_FEB_29_2000, UTC_JAN_1_2005 ); + + + for ( var j = 0; j < test_times.length; j++ ) { + addTestCase( new Date(TIME_1900), test_times[j] ); + } + + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).setTime()", + NaN, + (new Date(NaN)).setTime() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.setTime.length", + 1, + Date.prototype.setTime.length ); + test(); +function addTestCase( d, t ) { + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+t+")", + t, + d.setTime(t) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+1.1)+")", + TimeClip(t+1.1), + d.setTime(t+1.1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+1)+")", + t+1, + d.setTime(t+1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t-1)+")", + t-1, + d.setTime(t-1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t-TZ_ADJUST)+")", + t-TZ_ADJUST, + d.setTime(t-TZ_ADJUST) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+TZ_ADJUST)+")", + t+TZ_ADJUST, + d.setTime(t+TZ_ADJUST) ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-7.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-7.js new file mode 100644 index 00000000000..328642f8ad8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-7.js @@ -0,0 +1,122 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-2.js + ECMA Section: 15.9.5.23 + Description: Date.prototype.setTime + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.23-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + test_times = new Array( now, TIME_YEAR_0, TIME_1970, TIME_1900, TIME_2000, + UTC_FEB_29_2000, UTC_JAN_1_2005 ); + + + for ( var j = 0; j < test_times.length; j++ ) { + addTestCase( new Date(TIME_2000), test_times[j] ); + } + + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).setTime()", + NaN, + (new Date(NaN)).setTime() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.setTime.length", + 1, + Date.prototype.setTime.length ); + test(); +function addTestCase( d, t ) { + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+t+")", + t, + d.setTime(t) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+1.1)+")", + TimeClip(t+1.1), + d.setTime(t+1.1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+1)+")", + t+1, + d.setTime(t+1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t-1)+")", + t-1, + d.setTime(t-1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t-TZ_ADJUST)+")", + t-TZ_ADJUST, + d.setTime(t-TZ_ADJUST) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+TZ_ADJUST)+")", + t+TZ_ADJUST, + d.setTime(t+TZ_ADJUST) ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-8.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-8.js new file mode 100644 index 00000000000..4b9fbb3803e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-8.js @@ -0,0 +1,111 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-2.js + ECMA Section: 15.9.5.23 + Description: Date.prototype.setTime + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.23-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + test_times = new Array( now, TIME_YEAR_0, TIME_1970, TIME_1900, TIME_2000, + UTC_FEB_29_2000, UTC_JAN_1_2005 ); + + + for ( var j = 0; j < test_times.length; j++ ) { + addTestCase( new Date(UTC_FEB_29_2000), test_times[j] ); + } + + test(); +function addTestCase( d, t ) { + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+t+")", + t, + d.setTime(t) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+1.1)+")", + TimeClip(t+1.1), + d.setTime(t+1.1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+1)+")", + t+1, + d.setTime(t+1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t-1)+")", + t-1, + d.setTime(t-1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t-TZ_ADJUST)+")", + t-TZ_ADJUST, + d.setTime(t-TZ_ADJUST) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+TZ_ADJUST)+")", + t+TZ_ADJUST, + d.setTime(t+TZ_ADJUST) ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-9.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-9.js new file mode 100644 index 00000000000..cbf8f185e7f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.23-9.js @@ -0,0 +1,112 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.23-2.js + ECMA Section: 15.9.5.23 + Description: Date.prototype.setTime + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.23-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.setTime()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + test_times = new Array( now, TIME_YEAR_0, TIME_1970, TIME_1900, TIME_2000, + UTC_FEB_29_2000, UTC_JAN_1_2005 ); + + + for ( var j = 0; j < test_times.length; j++ ) { + addTestCase( new Date(UTC_JAN_1_2005), test_times[j] ); + } + + test(); +function addTestCase( d, t ) { + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+t+")", + t, + d.setTime(t) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+1.1)+")", + TimeClip(t+1.1), + d.setTime(t+1.1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+1)+")", + t+1, + d.setTime(t+1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t-1)+")", + t-1, + d.setTime(t-1) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t-TZ_ADJUST)+")", + t-TZ_ADJUST, + d.setTime(t-TZ_ADJUST) ); + + testcases[tc++] = new TestCase( SECTION, + "( "+d+" ).setTime("+(t+TZ_ADJUST)+")", + t+TZ_ADJUST, + d.setTime(t+TZ_ADJUST) ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-1.js new file mode 100644 index 00000000000..4e7a4fbae49 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-1.js @@ -0,0 +1,151 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.24-1.js + ECMA Section: 15.9.5.24 Date.prototype.setTime(time) + Description: + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var TITLE = "Date.prototype.setTime" + var SECTION = "15.9.5.24-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setMilliseconds(ms)"); + + var testcases = new Array(); + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + + addTestCase( 0, 0 ); +/* + addTestCase( 0, -86400000 ); + addTestCase( 0, -2208988800000 ); + addTestCase( 0, 946684800000 ); + +// This test case is incorrect. Need to fix the DaylightSavings functions in +// shell.js for this to work properly. +// addTestCase( 0, -69609600000 ); +// addTestCase( 0, "-69609600000" ); + + addTestCase( 0, "0" ); + addTestCase( 0, "-2208988800000" ); + addTestCase( 0, "-86400000" ); + addTestCase( 0, "946684800000" ); +*/ +} +function addTestCase( startms, newms ) { + + var DateCase = new Date( startms ); + DateCase.setMilliseconds( newms ); + var DateString = "var date = new Date("+ startms +"); date.setMilliseconds("+ newms +"); date"; + var UTCDate = UTCDateFromTime( Number(newms) ); + var LocalDate = LocalDateFromTime( Number(newms) ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-2.js new file mode 100644 index 00000000000..8995cf2d857 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-2.js @@ -0,0 +1,150 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.24-1.js + ECMA Section: 15.9.5.24 Date.prototype.setTime(time) + Description: + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var TITLE = "Date.prototype.setTime" + var SECTION = "15.9.5.24-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setMilliseconds(ms)"); + + var testcases = new Array(); + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + + addTestCase( 0, -86400000 ); +/* + addTestCase( 0, -2208988800000 ); + addTestCase( 0, 946684800000 ); + +// This test case is incorrect. Need to fix the DaylightSavings functions in +// shell.js for this to work properly. +// addTestCase( 0, -69609600000 ); +// addTestCase( 0, "-69609600000" ); + + addTestCase( 0, "0" ); + addTestCase( 0, "-2208988800000" ); + addTestCase( 0, "-86400000" ); + addTestCase( 0, "946684800000" ); +*/ +} +function addTestCase( startms, newms ) { + + var DateCase = new Date( startms ); + DateCase.setMilliseconds( newms ); + var DateString = "var date = new Date("+ startms +"); date.setMilliseconds("+ newms +"); date"; + var UTCDate = UTCDateFromTime( Number(newms) ); + var LocalDate = LocalDateFromTime( Number(newms) ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-3.js new file mode 100644 index 00000000000..788fc80a8c0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-3.js @@ -0,0 +1,149 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.24-1.js + ECMA Section: 15.9.5.24 Date.prototype.setTime(time) + Description: + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var TITLE = "Date.prototype.setTime" + var SECTION = "15.9.5.24-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setMilliseconds(ms)"); + + var testcases = new Array(); + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + + addTestCase( 0, -2208988800000 ); +/* + addTestCase( 0, 946684800000 ); + +// This test case is incorrect. Need to fix the DaylightSavings functions in +// shell.js for this to work properly. +// addTestCase( 0, -69609600000 ); +// addTestCase( 0, "-69609600000" ); + + addTestCase( 0, "0" ); + addTestCase( 0, "-2208988800000" ); + addTestCase( 0, "-86400000" ); + addTestCase( 0, "946684800000" ); +*/ +} +function addTestCase( startms, newms ) { + + var DateCase = new Date( startms ); + DateCase.setMilliseconds( newms ); + var DateString = "var date = new Date("+ startms +"); date.setMilliseconds("+ newms +"); date"; + var UTCDate = UTCDateFromTime( Number(newms) ); + var LocalDate = LocalDateFromTime( Number(newms) ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-4.js new file mode 100644 index 00000000000..b003de4765f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-4.js @@ -0,0 +1,148 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.24-1.js + ECMA Section: 15.9.5.24 Date.prototype.setTime(time) + Description: + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var TITLE = "Date.prototype.setTime" + var SECTION = "15.9.5.24-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setMilliseconds(ms)"); + + var testcases = new Array(); + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + + addTestCase( 0, 946684800000 ); +/* + +// This test case is incorrect. Need to fix the DaylightSavings functions in +// shell.js for this to work properly. +// addTestCase( 0, -69609600000 ); +// addTestCase( 0, "-69609600000" ); + + addTestCase( 0, "0" ); + addTestCase( 0, "-2208988800000" ); + addTestCase( 0, "-86400000" ); + addTestCase( 0, "946684800000" ); +*/ +} +function addTestCase( startms, newms ) { + + var DateCase = new Date( startms ); + DateCase.setMilliseconds( newms ); + var DateString = "var date = new Date("+ startms +"); date.setMilliseconds("+ newms +"); date"; + var UTCDate = UTCDateFromTime( Number(newms) ); + var LocalDate = LocalDateFromTime( Number(newms) ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-5.js new file mode 100644 index 00000000000..ccfadc0360c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-5.js @@ -0,0 +1,141 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.24-1.js + ECMA Section: 15.9.5.24 Date.prototype.setTime(time) + Description: + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var TITLE = "Date.prototype.setTime" + var SECTION = "15.9.5.24-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setMilliseconds(ms)"); + + var testcases = new Array(); + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + + addTestCase( 0, "0" ); +/* + addTestCase( 0, "-2208988800000" ); + addTestCase( 0, "-86400000" ); + addTestCase( 0, "946684800000" ); +*/ +} +function addTestCase( startms, newms ) { + + var DateCase = new Date( startms ); + DateCase.setMilliseconds( newms ); + var DateString = "var date = new Date("+ startms +"); date.setMilliseconds("+ newms +"); date"; + var UTCDate = UTCDateFromTime( Number(newms) ); + var LocalDate = LocalDateFromTime( Number(newms) ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-6.js new file mode 100644 index 00000000000..cd2d9d1d0b6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-6.js @@ -0,0 +1,140 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.24-1.js + ECMA Section: 15.9.5.24 Date.prototype.setTime(time) + Description: + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var TITLE = "Date.prototype.setTime" + var SECTION = "15.9.5.24-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setMilliseconds(ms)"); + + var testcases = new Array(); + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + + addTestCase( 0, "-2208988800000" ); +/* + addTestCase( 0, "-86400000" ); + addTestCase( 0, "946684800000" ); +*/ +} +function addTestCase( startms, newms ) { + + var DateCase = new Date( startms ); + DateCase.setMilliseconds( newms ); + var DateString = "var date = new Date("+ startms +"); date.setMilliseconds("+ newms +"); date"; + var UTCDate = UTCDateFromTime( Number(newms) ); + var LocalDate = LocalDateFromTime( Number(newms) ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-7.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-7.js new file mode 100644 index 00000000000..8e5846ef734 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-7.js @@ -0,0 +1,139 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.24-1.js + ECMA Section: 15.9.5.24 Date.prototype.setTime(time) + Description: + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var TITLE = "Date.prototype.setTime" + var SECTION = "15.9.5.24-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setMilliseconds(ms)"); + + var testcases = new Array(); + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + + addTestCase( 0, "-86400000" ); +/* + addTestCase( 0, "946684800000" ); +*/ +} +function addTestCase( startms, newms ) { + + var DateCase = new Date( startms ); + DateCase.setMilliseconds( newms ); + var DateString = "var date = new Date("+ startms +"); date.setMilliseconds("+ newms +"); date"; + var UTCDate = UTCDateFromTime( Number(newms) ); + var LocalDate = LocalDateFromTime( Number(newms) ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-8.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-8.js new file mode 100644 index 00000000000..956bc9dd4d1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.24-8.js @@ -0,0 +1,135 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.24-1.js + ECMA Section: 15.9.5.24 Date.prototype.setTime(time) + Description: + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var TITLE = "Date.prototype.setTime" + var SECTION = "15.9.5.24-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setMilliseconds(ms)"); + + var testcases = new Array(); + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + addTestCase( 0, "946684800000" ); +} +function addTestCase( startms, newms ) { + + var DateCase = new Date( startms ); + DateCase.setMilliseconds( newms ); + var DateString = "var date = new Date("+ startms +"); date.setMilliseconds("+ newms +"); date"; + var UTCDate = UTCDateFromTime( Number(newms) ); + var LocalDate = LocalDateFromTime( Number(newms) ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.25-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.25-1.js new file mode 100644 index 00000000000..65cecdcf88f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.25-1.js @@ -0,0 +1,190 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.25-1.js + ECMA Section: 15.9.5.25 Date.prototype.setUTCMilliseconds(ms) + Description: + 1. Let t be this time value. + 2. Call ToNumber(ms). + 3. Compute MakeTime(HourFromTime(t), MinFromTime(t), SecFromTime(t), Result(2)). + 4. Compute MakeDate(Day(t), Result(3)). + 5. Set the [[Value]] property of the this value to TimeClip(Result(4)). + 6. Return the value of the [[Value]] property of the this value. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "15.9.5.25-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setUTCMilliseconds(ms)"); + + var testcases = new Array(); + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + addNewTestCase( 0, 0, "TDATE = new Date(0);(TDATE).setUTCMilliseconds(0);TDATE", + UTCDateFromTime(SetUTCMilliseconds(0,0)), + LocalDateFromTime(SetUTCMilliseconds(0,0)) ); + addNewTestCase( 28800000,999, + "TDATE = new Date(28800000);(TDATE).setUTCMilliseconds(999);TDATE", + UTCDateFromTime(SetUTCMilliseconds(28800000,999)), + LocalDateFromTime(SetUTCMilliseconds(28800000,999)) ); + addNewTestCase( 28800000,-28800000, + "TDATE = new Date(28800000);(TDATE).setUTCMilliseconds(-28800000);TDATE", + UTCDateFromTime(SetUTCMilliseconds(28800000,-28800000)), + LocalDateFromTime(SetUTCMilliseconds(28800000,-28800000)) ); + addNewTestCase( 946684800000,1234567, + "TDATE = new Date(946684800000);(TDATE).setUTCMilliseconds(1234567);TDATE", + UTCDateFromTime(SetUTCMilliseconds(946684800000,1234567)), + LocalDateFromTime(SetUTCMilliseconds(946684800000,1234567)) ); + addNewTestCase( 946684800000, 123456789, + "TDATE = new Date(946684800000);(TDATE).setUTCMilliseconds(123456789);TDATE", + UTCDateFromTime(SetUTCMilliseconds(946684800000,123456789)), + LocalDateFromTime(SetUTCMilliseconds(946684800000,123456789)) ); + + addNewTestCase( -2208988800000,123456789, + "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(123456789);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,123456789)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,123456789)) ); + + addNewTestCase( -2208988800000,123456, + "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(123456);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,123456)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,123456)) ); + + addNewTestCase( -2208988800000,-123456, + "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(-123456);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,-123456)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,-123456)) ); + + addNewTestCase( 0,-999, + "TDATE = new Date(0);(TDATE).setUTCMilliseconds(-999);TDATE", + UTCDateFromTime(SetUTCMilliseconds(0,-999)), + LocalDateFromTime(SetUTCMilliseconds(0,-999)) ); +/* + addNewTestCase( "TEST_DATE = new Date(0);(TEST_DATE).setMilliseconds(0);TEST_DATE", UTCDateFromTime(0), LocalDateFromTime(0) ); +// addNewTestCase( "TEST_DATE = new Date(0);(TEST_DATE).setMilliseconds(-2208988800000);TEST_DATE", UTCDateFromTime(-2208988800000), LocalDateFromTime(-2208988800000) ); + addNewTestCase( "TEST_DATE = new Date(0);(TEST_DATE).setMilliseconds(-86400000);TEST_DATE", UTCDateFromTime(-86400000), LocalDateFromTime(-86400000) ); + addNewTestCase( "TEST_DATE = new Date(0);(TEST_DATE).setMilliseconds(946684800000);TEST_DATE", UTCDateFromTime(946684800000), LocalDateFromTime(946684800000) ); + addNewTestCase( "TEST_DATE = new Date(0);(TEST_DATE).setMilliseconds(-69609600000);TEST_DATE", UTCDateFromTime(-69609600000), LocalDateFromTime(-69609600000) ); + + + addNewTestCase( "TEST_DATE = new Date(0);(TEST_DATE).setMilliseconds('0');TEST_DATE", UTCDateFromTime(0), LocalDateFromTime(0) ); +// addNewTestCase( "TEST_DATE = new Date(0);(TEST_DATE).setMilliseconds('-2208988800000');TEST_DATE", UTCDateFromTime(-2208988800000), LocalDateFromTime(-2208988800000) ); + addNewTestCase( "TEST_DATE = new Date(0);(TEST_DATE).setMilliseconds('-86400000');TEST_DATE", UTCDateFromTime(-86400000), LocalDateFromTime(-86400000) ); + addNewTestCase( "TEST_DATE = new Date(0);(TEST_DATE).setMilliseconds('946684800000');TEST_DATE", UTCDateFromTime(946684800000), LocalDateFromTime(946684800000) ); + addNewTestCase( "TEST_DATE = new Date(0);(TEST_DATE).setMilliseconds('-69609600000');TEST_DATE", UTCDateFromTime(-69609600000), LocalDateFromTime(-69609600000) ); +*/ +} +function addNewTestCase( initialTime, ms, DateString, UTCDate, LocalDate) { + DateCase = new Date(initialTime); + DateCase.setUTCMilliseconds(ms); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} + +function SetUTCMilliseconds( T, MS ) { + T = Number( T ); + TIME = MakeTime( HourFromTime(T), + MinFromTime(T), + SecFromTime(T), + MS ); + return( MakeDate( Day(T), TIME )); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.26-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.26-1.js new file mode 100644 index 00000000000..58f70ff6856 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.26-1.js @@ -0,0 +1,203 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** File Name: 15.9.5.26-1.js + ECMA Section: 15.9.5.26 Date.prototype.setSeconds(sec [,ms]) + Description: + + If ms is not specified, this behaves as if ms were specified with the + value getMilliseconds( ). + + 1. Let t be the result of LocalTime(this time value). + 2. Call ToNumber(sec). + 3. If ms is not specified, compute msFromTime(t); otherwise, call + ToNumber(ms). + 4. Compute MakeTime(HourFromTime(t), MinFromTime(t), Result(2), + Result(3)). + 5. Compute UTC(MakeDate(Day(t), Result(4))). + 6. Set the [[Value]] property of the this value to TimeClip(Result(5)). + 7. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "15.9.5.26-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setSeconds(sec [,ms] )"); + + var testcases = new Array(); + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + addNewTestCase( 0, 0, 0, + "TDATE = new Date(0);(TDATE).setSeconds(0,0);TDATE", + UTCDateFromTime(SetSeconds(0,0,0)), + LocalDateFromTime(SetSeconds(0,0,0)) ); + + addNewTestCase( 28800000,59,999, + "TDATE = new Date(28800000);(TDATE).setSeconds(59,999);TDATE", + UTCDateFromTime(SetSeconds(28800000,59,999)), + LocalDateFromTime(SetSeconds(28800000,59,999)) ); + + addNewTestCase( 28800000,999,999, + "TDATE = new Date(28800000);(TDATE).setSeconds(999,999);TDATE", + UTCDateFromTime(SetSeconds(28800000,999,999)), + LocalDateFromTime(SetSeconds(28800000,999,999)) ); + + addNewTestCase( 28800000,999, void 0, + "TDATE = new Date(28800000);(TDATE).setSeconds(999);TDATE", + UTCDateFromTime(SetSeconds(28800000,999,0)), + LocalDateFromTime(SetSeconds(28800000,999,0)) ); + + addNewTestCase( 28800000,-28800, void 0, + "TDATE = new Date(28800000);(TDATE).setSeconds(-28800);TDATE", + UTCDateFromTime(SetSeconds(28800000,-28800)), + LocalDateFromTime(SetSeconds(28800000,-28800)) ); + + addNewTestCase( 946684800000,1234567,void 0, + "TDATE = new Date(946684800000);(TDATE).setSeconds(1234567);TDATE", + UTCDateFromTime(SetSeconds(946684800000,1234567)), + LocalDateFromTime(SetSeconds(946684800000,1234567)) ); + + addNewTestCase( -2208988800000,59,999, + "TDATE = new Date(-2208988800000);(TDATE).setSeconds(59,999);TDATE", + UTCDateFromTime(SetSeconds(-2208988800000,59,999)), + LocalDateFromTime(SetSeconds(-2208988800000,59,999)) ); + +/* + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(123456789);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,123456789)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,123456789)) ); + + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(123456);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,123456)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,123456)) ); + + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(-123456);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,-123456)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,-123456)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCMilliseconds(-999);TDATE", + UTCDateFromTime(SetUTCMilliseconds(0,-999)), + LocalDateFromTime(SetUTCMilliseconds(0,-999)) ); +*/ +} +function addNewTestCase( startTime, sec, ms, DateString,UTCDate, LocalDate) { + DateCase = new Date( startTime ); + if ( ms != void 0 ) { + DateCase.setSeconds( sec, ms ); + } else { + DateCase.setSeconds( sec ); + } + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetSeconds( t, s, m ) { + var MS = ( m == void 0 ) ? msFromTime(t) : Number( m ); + var TIME = LocalTime( t ); + var SEC = Number(s); + var RESULT4 = MakeTime( HourFromTime( TIME ), + MinFromTime( TIME ), + SEC, + MS ); + var UTC_TIME = UTC(MakeDate(Day(TIME), RESULT4)); + return ( TimeClip(UTC_TIME) ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.27-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.27-1.js new file mode 100644 index 00000000000..38cd843936d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.27-1.js @@ -0,0 +1,202 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.27-1.js + ECMA Section: 15.9.5.27 Date.prototype.setUTCSeconds(sec [,ms]) + Description: + + If ms is not specified, this behaves as if ms were specified with the + value getUTCMilliseconds( ). + + 1. Let t be this time value. + 2. Call ToNumber(sec). + 3. If ms is not specified, compute msFromTime(t); otherwise, call + ToNumber(ms) + 4. Compute MakeTime(HourFromTime(t), MinFromTime(t), Result(2), Result(3)) + 5. Compute MakeDate(Day(t), Result(4)). + 6. Set the [[Value]] property of the this value to TimeClip(Result(5)). + 7. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "15.9.5.27-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setUTCSeconds(sec [,ms] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + addNewTestCase( 0, 0, 0, "TDATE = new Date(0);(TDATE).setUTCSeconds(0,0);TDATE", + UTCDateFromTime(SetUTCSeconds(0,0,0)), + LocalDateFromTime(SetUTCSeconds(0,0,0)) ); + + addNewTestCase( 28800000,59,999, + "TDATE = new Date(28800000);(TDATE).setUTCSeconds(59,999);TDATE", + UTCDateFromTime(SetUTCSeconds(28800000,59,999)), + LocalDateFromTime(SetUTCSeconds(28800000,59,999)) ); + + addNewTestCase( 28800000,999,999, + "TDATE = new Date(28800000);(TDATE).setUTCSeconds(999,999);TDATE", + UTCDateFromTime(SetUTCSeconds(28800000,999,999)), + LocalDateFromTime(SetUTCSeconds(28800000,999,999)) ); + + addNewTestCase( 28800000, 999, void 0, + "TDATE = new Date(28800000);(TDATE).setUTCSeconds(999);TDATE", + UTCDateFromTime(SetUTCSeconds(28800000,999,0)), + LocalDateFromTime(SetUTCSeconds(28800000,999,0)) ); + + addNewTestCase( 28800000, -28800, void 0, + "TDATE = new Date(28800000);(TDATE).setUTCSeconds(-28800);TDATE", + UTCDateFromTime(SetUTCSeconds(28800000,-28800)), + LocalDateFromTime(SetUTCSeconds(28800000,-28800)) ); + + addNewTestCase( 946684800000, 1234567, void 0, + "TDATE = new Date(946684800000);(TDATE).setUTCSeconds(1234567);TDATE", + UTCDateFromTime(SetUTCSeconds(946684800000,1234567)), + LocalDateFromTime(SetUTCSeconds(946684800000,1234567)) ); + + addNewTestCase( -2208988800000,59,999, + "TDATE = new Date(-2208988800000);(TDATE).setUTCSeconds(59,999);TDATE", + UTCDateFromTime(SetUTCSeconds(-2208988800000,59,999)), + LocalDateFromTime(SetUTCSeconds(-2208988800000,59,999)) ); +/* + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(123456789);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,123456789)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,123456789)) ); + + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(123456);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,123456)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,123456)) ); + + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(-123456);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,-123456)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,-123456)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCMilliseconds(-999);TDATE", + UTCDateFromTime(SetUTCMilliseconds(0,-999)), + LocalDateFromTime(SetUTCMilliseconds(0,-999)) ); +*/ +} +function addNewTestCase( startTime, sec, ms, DateString, UTCDate, LocalDate) { + DateCase = new Date( startTime ); + if ( ms == void 0) { + DateCase.setSeconds( sec ); + } else { + DateCase.setSeconds( sec, ms ); + } + + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} + +function SetUTCSeconds( t, s, m ) { + var TIME = t; + var SEC = Number(s); + var MS = ( m == void 0 ) ? msFromTime(TIME) : Number( m ); + var RESULT4 = MakeTime( HourFromTime( TIME ), + MinFromTime( TIME ), + SEC, + MS ); + return ( TimeClip(MakeDate(Day(TIME), RESULT4)) ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.28-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.28-1.js new file mode 100644 index 00000000000..8fd97d11c38 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.28-1.js @@ -0,0 +1,216 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.28-1.js + ECMA Section: 15.9.5.28 Date.prototype.setMinutes(min [, sec [, ms ]] ) + Description: + If sec is not specified, this behaves as if sec were specified with the + value getSeconds ( ). + + If ms is not specified, this behaves as if ms were specified with the + value getMilliseconds( ). + + 1. Let t be the result of LocalTime(this time value). + 2. Call ToNumber(min). + 3. If sec is not specified, compute SecFromTime(t); otherwise, call ToNumber(sec). + 4. If ms is not specified, compute msFromTime(t); otherwise, call ToNumber(ms). + 5. Compute MakeTime(HourFromTime(t), Result(2), Result(3), Result(4)). + 6. Compute UTC(MakeDate(Day(t), Result(5))). + 7. Set the [[Value]] property of the this value to TimeClip(Result(6)). + 8. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "15.9.5.28-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setMinutes(sec [,ms] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + addNewTestCase( 0, 0, void 0, void 0, + "TDATE = new Date(0);(TDATE).setMinutes(0);TDATE", + UTCDateFromTime(SetMinutes(0,0,0,0)), + LocalDateFromTime(SetMinutes(0,0,0,0)) ); + + addNewTestCase( 28800000, 59, 59, void 0, + "TDATE = new Date(28800000);(TDATE).setMinutes(59,59);TDATE", + UTCDateFromTime(SetMinutes(28800000,59,59)), + LocalDateFromTime(SetMinutes(28800000,59,59)) ); + + addNewTestCase( 28800000, 59, 59, 999, + "TDATE = new Date(28800000);(TDATE).setMinutes(59,59,999);TDATE", + UTCDateFromTime(SetMinutes(28800000,59,59,999)), + LocalDateFromTime(SetMinutes(28800000,59,59,999)) ); + + addNewTestCase( 28800000, 59, void 0, void 0, + "TDATE = new Date(28800000);(TDATE).setMinutes(59);TDATE", + UTCDateFromTime(SetMinutes(28800000,59,0)), + LocalDateFromTime(SetMinutes(28800000,59,0)) ); + + addNewTestCase( 28800000, -480, void 0, void 0, + "TDATE = new Date(28800000);(TDATE).setMinutes(-480);TDATE", + UTCDateFromTime(SetMinutes(28800000,-480)), + LocalDateFromTime(SetMinutes(28800000,-480)) ); + + addNewTestCase( 946684800000, 1234567, void 0, void 0, + "TDATE = new Date(946684800000);(TDATE).setMinutes(1234567);TDATE", + UTCDateFromTime(SetMinutes(946684800000,1234567)), + LocalDateFromTime(SetMinutes(946684800000,1234567)) ); + + addNewTestCase( -2208988800000,59, 59, void 0, + "TDATE = new Date(-2208988800000);(TDATE).setMinutes(59,59);TDATE", + UTCDateFromTime(SetMinutes(-2208988800000,59,59)), + LocalDateFromTime(SetMinutes(-2208988800000,59,59)) ); + + addNewTestCase( -2208988800000, 59, 59, 999, + "TDATE = new Date(-2208988800000);(TDATE).setMinutes(59,59,999);TDATE", + UTCDateFromTime(SetMinutes(-2208988800000,59,59,999)), + LocalDateFromTime(SetMinutes(-2208988800000,59,59,999)) ); +/* + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(123456789);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,123456789)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,123456789)) ); + + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(123456);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,123456)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,123456)) ); + + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(-123456);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,-123456)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,-123456)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCMilliseconds(-999);TDATE", + UTCDateFromTime(SetUTCMilliseconds(0,-999)), + LocalDateFromTime(SetUTCMilliseconds(0,-999)) ); +*/ + +} +function addNewTestCase( time, min, sec, ms, DateString, UTCDate, LocalDate) { + DateCase = new Date( time ); + + if ( sec == void 0 ) { + DateCase.setMinutes( min ); + } else { + if ( ms == void 0 ) { + DateCase.setMinutes( min, sec ); + } else { + DateCase.setMinutes( min, sec, ms ); + } + } + + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} + +function SetMinutes( t, min, sec, ms ) { + var TIME = LocalTime(t); + var MIN = Number(min); + var SEC = ( sec == void 0) ? SecFromTime(TIME) : Number(sec); + var MS = ( ms == void 0 ) ? msFromTime(TIME) : Number(ms); + var RESULT5 = MakeTime( HourFromTime( TIME ), + MIN, + SEC, + MS ); + return ( TimeClip(UTC( MakeDate(Day(TIME),RESULT5))) ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.29-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.29-1.js new file mode 100644 index 00000000000..0640a74d9ae --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.29-1.js @@ -0,0 +1,210 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.29-1.js + ECMA Section: 15.9.5.29 Date.prototype.setUTCMinutes(min [, sec [, ms ]] ) + Description: + If sec is not specified, this behaves as if sec were specified with the + value getUTCSeconds ( ). + + If ms is not specified, this behaves as if ms were specified with the value + getUTCMilliseconds( ). + + 1. Let t be this time value. + 2. Call ToNumber(min). + 3. If sec is not specified, compute SecFromTime(t); otherwise, call + ToNumber(sec). + 4. If ms is not specified, compute msFromTime(t); otherwise, call + ToNumber(ms). + 5. Compute MakeTime(HourFromTime(t), Result(2), Result(3), Result(4)). + 6. Compute MakeDate(Day(t), Result(5)). + 7. Set the [[Value]] property of the this value to TimeClip(Result(6)). + 8. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "15.9.5.29-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setUTCMinutes( min [, sec, ms] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + addNewTestCase( 0, 0, void 0, void 0, + "TDATE = new Date(0);(TDATE).setUTCMinutes(0);TDATE", + UTCDateFromTime(SetUTCMinutes(0,0,0,0)), + LocalDateFromTime(SetUTCMinutes(0,0,0,0)) ); + + addNewTestCase( 28800000, 59, 59, void 0, + "TDATE = new Date(28800000);(TDATE).setUTCMinutes(59,59);TDATE", + UTCDateFromTime(SetUTCMinutes(28800000,59,59)), + LocalDateFromTime(SetUTCMinutes(28800000,59,59)) ); + + addNewTestCase( 28800000, 59, 59, 999, + "TDATE = new Date(28800000);(TDATE).setUTCMinutes(59,59,999);TDATE", + UTCDateFromTime(SetUTCMinutes(28800000,59,59,999)), + LocalDateFromTime(SetUTCMinutes(28800000,59,59,999)) ); + + addNewTestCase( 28800000, 59, void 0, void 0, + "TDATE = new Date(28800000);(TDATE).setUTCMinutes(59);TDATE", + UTCDateFromTime(SetUTCMinutes(28800000,59)), + LocalDateFromTime(SetUTCMinutes(28800000,59)) ); + + addNewTestCase( 28800000, -480, 0, 0, + "TDATE = new Date(28800000);(TDATE).setUTCMinutes(-480);TDATE", + UTCDateFromTime(SetUTCMinutes(28800000,-480)), + LocalDateFromTime(SetUTCMinutes(28800000,-480)) ); + + addNewTestCase( 946684800000, 1234567, void 0, void 0, + "TDATE = new Date(946684800000);(TDATE).setUTCMinutes(1234567);TDATE", + UTCDateFromTime(SetUTCMinutes(946684800000,1234567)), + LocalDateFromTime(SetUTCMinutes(946684800000,1234567)) ); + + addNewTestCase( -2208988800000, 59, 999, void 0, + "TDATE = new Date(-2208988800000);(TDATE).setUTCMinutes(59,999);TDATE", + UTCDateFromTime(SetUTCMinutes(-2208988800000,59,999)), + LocalDateFromTime(SetUTCMinutes(-2208988800000,59,999)) ); +/* + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(123456789);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,123456789)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,123456789)) ); + + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(123456);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,123456)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,123456)) ); + + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(-123456);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,-123456)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,-123456)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCMilliseconds(-999);TDATE", + UTCDateFromTime(SetUTCMilliseconds(0,-999)), + LocalDateFromTime(SetUTCMilliseconds(0,-999)) ); +*/ + +} +function addNewTestCase( time, min, sec, ms, DateString, UTCDate, LocalDate) { + var DateCase = new Date( time ); + + if ( sec == void 0 ) { + DateCase.setUTCMinutes( min ); + } else { + if ( ms == void 0 ) { + DateCase.setUTCMinutes( min, sec ); + } else { + DateCase.setUTCMinutes( min, sec, ms ); + } + } + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); +// testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetUTCMinutes( t, min, sec, ms ) { + var TIME = t; + var MIN = Number(min); + var SEC = ( sec == void 0) ? SecFromTime(TIME) : Number(sec); + var MS = ( ms == void 0 ) ? msFromTime(TIME) : Number(ms); + var RESULT5 = MakeTime( HourFromTime( TIME ), + MIN, + SEC, + MS ); + return ( TimeClip(MakeDate(Day(TIME),RESULT5)) ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.3-1-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.3-1-n.js new file mode 100644 index 00000000000..109fc26cf57 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.3-1-n.js @@ -0,0 +1,73 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.3-1.js + ECMA Section: 15.9.5.3-1 Date.prototype.valueOf + Description: + + The valueOf function returns a number, which is this time value. + + The valueOf function is not generic; it generates a runtime error if + its this value is not a Date object. Therefore it cannot be transferred + to other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.3-1-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.valueOf"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var OBJ = new MyObject( new Date(0) ); + + testcases[tc++] = new TestCase( SECTION, + "var OBJ = new MyObject( new Date(0) ); OBJ.valueOf()", + "error", + OBJ.valueOf() ); + test(); + +function MyObject( value ) { + this.value = value; + this.valueOf = Date.prototype.valueOf; +// The following line causes an infinte loop +// this.toString = new Function( "return this+\"\";"); + return this; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.3-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.3-2.js new file mode 100644 index 00000000000..7698ac1f014 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.3-2.js @@ -0,0 +1,107 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.3-2.js + ECMA Section: 15.9.5.3-2 Date.prototype.valueOf + Description: + + The valueOf function returns a number, which is this time value. + + The valueOf function is not generic; it generates a runtime error if + its this value is not a Date object. Therefore it cannot be transferred + to other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.3-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.valueOf"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + + var TZ_ADJUST = TZ_DIFF * msPerHour; + var now = (new Date()).valueOf(); + var UTC_29_FEB_2000 = TIME_2000 + 31*msPerDay + 28*msPerDay; + var UTC_1_JAN_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( now ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_29_FEB_2000 ); + addTestCase( UTC_1_JAN_2005 ); + + test(); + +function addTestCase( t ) { + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+").valueOf()", + t, + (new Date(t)).valueOf() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+1)+").valueOf()", + t+1, + (new Date(t+1)).valueOf() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-1)+").valueOf()", + t-1, + (new Date(t-1)).valueOf() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-TZ_ADJUST)+").valueOf()", + t-TZ_ADJUST, + (new Date(t-TZ_ADJUST)).valueOf() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+TZ_ADJUST)+").valueOf()", + t+TZ_ADJUST, + (new Date(t+TZ_ADJUST)).valueOf() ); +} + +function MyObject( value ) { + this.value = value; + this.valueOf = Date.prototype.valueOf; + this.toString = new Function( "return this+\"\";"); + return this; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.30-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.30-1.js new file mode 100644 index 00000000000..6e6715fcf60 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.30-1.js @@ -0,0 +1,215 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.30-1.js + ECMA Section: 15.9.5.30 Date.prototype.setHours(hour [, min [, sec [, ms ]]] ) + Description: + If min is not specified, this behaves as if min were specified with the + value getMinutes( ). If sec is not specified, this behaves as if sec were + specified with the value getSeconds ( ). If ms is not specified, this + behaves as if ms were specified with the value getMilliseconds( ). + + 1. Let t be the result of LocalTime(this time value). + 2. Call ToNumber(hour). + 3. If min is not specified, compute MinFromTime(t); otherwise, call + ToNumber(min). + 4. If sec is not specified, compute SecFromTime(t); otherwise, call + ToNumber(sec). + 5. If ms is not specified, compute msFromTime(t); otherwise, call + ToNumber(ms). + 6. Compute MakeTime(Result(2), Result(3), Result(4), Result(5)). + 7. Compute UTC(MakeDate(Day(t), Result(6))). + 8. Set the [[Value]] property of the this value to TimeClip(Result(7)). + 9. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "15.9.5.30-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setHours( hour [, min, sec, ms] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + addNewTestCase( 0,0,0,0,void 0, + "TDATE = new Date(0);(TDATE).setHours(0);TDATE" ); + + addNewTestCase( 28800000, 23, 59, 999,void 0, + "TDATE = new Date(28800000);(TDATE).setHours(23,59,999);TDATE" ); + + addNewTestCase( 28800000, 999, 999, void 0, void 0, + "TDATE = new Date(28800000);(TDATE).setHours(999,999);TDATE" ); + + addNewTestCase( 28800000,999,0, void 0, void 0, + "TDATE = new Date(28800000);(TDATE).setHours(999);TDATE" ); + + addNewTestCase( 28800000,-8, void 0, void 0, void 0, + "TDATE = new Date(28800000);(TDATE).setHours(-8);TDATE" ); + + addNewTestCase( 946684800000,8760, void 0, void 0, void 0, + "TDATE = new Date(946684800000);(TDATE).setHours(8760);TDATE" ); + + addNewTestCase( TIME_2000 - msPerDay, 23, 59, 59, 999, + "d = new Date( " + (TIME_2000-msPerDay) +"); d.setHours(23,59,59,999)" ); + + addNewTestCase( TIME_2000 - msPerDay, 23, 59, 59, 1000, + "d = new Date( " + (TIME_2000-msPerDay) +"); d.setHours(23,59,59,1000)" ); + + +/* + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setHours(59,999);TDATE", + UTCDateFromTime(SetHours(-2208988800000,59,999)), + LocalDateFromTime(SetHours(-2208988800000,59,999)) ); + + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(123456789);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,123456789)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,123456789)) ); + + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(123456);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,123456)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,123456)) ); + + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(-123456);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,-123456)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,-123456)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCMilliseconds(-999);TDATE", + UTCDateFromTime(SetUTCMilliseconds(0,-999)), + LocalDateFromTime(SetUTCMilliseconds(0,-999)) ); +*/ + +} +function addNewTestCase( time, hours, min, sec, ms, DateString) { + var UTCDate = UTCDateFromTime( SetHours( time, hours, min, sec, ms )); + var LocalDate = LocalDateFromTime( SetHours( time, hours, min, sec, ms )); + + var DateCase = new Date( time ); + + if ( min == void 0 ) { + DateCase.setHours( hours ); + } else { + if ( sec == void 0 ) { + DateCase.setHours( hours, min ); + } else { + if ( ms == void 0 ) { + DateCase.setHours( hours, min, sec ); + } else { + DateCase.setHours( hours, min, sec, ms ); + } + } + } + + + var item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.day = WeekDay( t ); + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + + return (d); +} +function SetHours( t, hour, min, sec, ms ) { + var TIME = LocalTime(t); + var HOUR = Number(hour); + var MIN = ( min == void 0) ? MinFromTime(TIME) : Number(min); + var SEC = ( sec == void 0) ? SecFromTime(TIME) : Number(sec); + var MS = ( ms == void 0 ) ? msFromTime(TIME) : Number(ms); + var RESULT6 = MakeTime( HOUR, + MIN, + SEC, + MS ); + var UTC_TIME = UTC( MakeDate(Day(TIME), RESULT6) ); + return ( TimeClip(UTC_TIME) ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.31-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.31-1.js new file mode 100644 index 00000000000..b6a2feebcf3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.31-1.js @@ -0,0 +1,212 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.31-1.js + ECMA Section: 15.9.5.31 Date.prototype.setUTCHours(hour [, min [, sec [, ms ]]] ) + Description: + If min is not specified, this behaves as if min were specified with the value getUTCMinutes( ). + If sec is not specified, this behaves as if sec were specified with the value getUTCSeconds ( ). + If ms is not specified, this behaves as if ms were specified with the value getUTCMilliseconds( ). + + 1.Let t be this time value. + 2.Call ToNumber(hour). + 3.If min is not specified, compute MinFromTime(t); otherwise, call ToNumber(min). + 4.If sec is not specified, compute SecFromTime(t); otherwise, call ToNumber(sec). + 5.If ms is not specified, compute msFromTime(t); otherwise, call ToNumber(ms). + 6.Compute MakeTime(Result(2), Result(3), Result(4), Result(5)). + 7.Compute MakeDate(Day(t), Result(6)). + 8.Set the [[Value]] property of the this value to TimeClip(Result(7)). + + 1.Return the value of the [[Value]] property of the this value. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "15.9.5.31-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setUTCHours(hour [, min [, sec [, ms ]]] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + addNewTestCase( 0, 0, void 0, void 0, void 0, + "TDATE = new Date(0);(TDATE).setUTCHours(0);TDATE", + UTCDateFromTime(SetUTCHours(0,0,0,0)), + LocalDateFromTime(SetUTCHours(0,0,0,0)) ); + + addNewTestCase( 28800000, 23, 59, 999, void 0, + "TDATE = new Date(28800000);(TDATE).setUTCHours(23,59,999);TDATE", + UTCDateFromTime(SetUTCHours(28800000,23,59,999)), + LocalDateFromTime(SetUTCHours(28800000,23,59,999)) ); + + addNewTestCase( 28800000,999,999, void 0, void 0, + "TDATE = new Date(28800000);(TDATE).setUTCHours(999,999);TDATE", + UTCDateFromTime(SetUTCHours(28800000,999,999)), + LocalDateFromTime(SetUTCHours(28800000,999,999)) ); + + addNewTestCase( 28800000, 999, void 0, void 0, void 0, + "TDATE = new Date(28800000);(TDATE).setUTCHours(999);TDATE", + UTCDateFromTime(SetUTCHours(28800000,999,0)), + LocalDateFromTime(SetUTCHours(28800000,999,0)) ); + + addNewTestCase( 28800000, -8670, void 0, void 0, void 0, + "TDATE = new Date(28800000);(TDATE).setUTCHours(-8670);TDATE", + UTCDateFromTime(SetUTCHours(28800000,-8670)), + LocalDateFromTime(SetUTCHours(28800000,-8670)) ); + + addNewTestCase( 946684800000, 1234567, void 0, void 0, void 0, + "TDATE = new Date(946684800000);(TDATE).setUTCHours(1234567);TDATE", + UTCDateFromTime(SetUTCHours(946684800000,1234567)), + LocalDateFromTime(SetUTCHours(946684800000,1234567)) ); + + addNewTestCase( -2208988800000, 59, 999, void 0, void 0, + "TDATE = new Date(-2208988800000);(TDATE).setUTCHours(59,999);TDATE", + UTCDateFromTime(SetUTCHours(-2208988800000,59,999)), + LocalDateFromTime(SetUTCHours(-2208988800000,59,999)) ); +/* + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(123456789);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,123456789)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,123456789)) ); + + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(123456);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,123456)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,123456)) ); + + addNewTestCase( "TDATE = new Date(-2208988800000);(TDATE).setUTCMilliseconds(-123456);TDATE", + UTCDateFromTime(SetUTCMilliseconds(-2208988800000,-123456)), + LocalDateFromTime(SetUTCMilliseconds(-2208988800000,-123456)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCMilliseconds(-999);TDATE", + UTCDateFromTime(SetUTCMilliseconds(0,-999)), + LocalDateFromTime(SetUTCMilliseconds(0,-999)) ); +*/ + +} +function addNewTestCase( time, hours, min, sec, ms, DateString, UTCDate, LocalDate) { + + DateCase = new Date(time); + if ( min == void 0 ) { + DateCase.setUTCHours( hours ); + } else { + if ( sec == void 0 ) { + DateCase.setUTCHours( hours, min ); + } else { + if ( ms == void 0 ) { + DateCase.setUTCHours( hours, min, sec ); + } else { + DateCase.setUTCHours( hours, min, sec, ms ); + } + } + } + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetUTCHours( t, hour, min, sec, ms ) { + var TIME = t; + var HOUR = Number(hour); + var MIN = ( min == void 0) ? MinFromTime(TIME) : Number(min); + var SEC = ( sec == void 0) ? SecFromTime(TIME) : Number(sec); + var MS = ( ms == void 0 ) ? msFromTime(TIME) : Number(ms); + var RESULT6 = MakeTime( HOUR, + MIN, + SEC, + MS ); + return ( TimeClip(MakeDate(Day(TIME), RESULT6)) ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.32-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.32-1.js new file mode 100644 index 00000000000..eded146cab6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.32-1.js @@ -0,0 +1,157 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 15.9.5.32-1.js + ECMA Section: 15.9.5.32 Date.prototype.setDate(date) + Description: + 1. Let t be the result of LocalTime(this time value). + 2. Call ToNumber(date). + 3. Compute MakeDay(YearFromTime(t), MonthFromTime(t), Result(2)). + 4. Compute UTC(MakeDate(Result(3), TimeWithinDay(t))). + 5. Set the [[Value]] property of the this value to TimeClip(Result(4)). + 6. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "15.9.5.32-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setDate(date) "); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + addNewTestCase( 0, 1, + "TDATE = new Date(0);(TDATE).setDate(1);TDATE" ); + +/* + addNewTestCase( "TDATE = new Date(86400000);(TDATE).setDate(1);TDATE", + UTCDateFromTime(SetDate(86400000,1)), + LocalDateFromTime(SetDate(86400000,1)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCFullYear(1972);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1972)), + LocalDateFromTime(SetUTCFullYear(0,1972)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCFullYear(1968);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1968)), + LocalDateFromTime(SetUTCFullYear(0,1968)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCFullYear(1969);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1969)), + LocalDateFromTime(SetUTCFullYear(0,1969)) ); +*/ +} +function addNewTestCase( t, d, DateString ) { + var DateCase = new Date( t ); + DateCase.setDate( d ); + + var UTCDate = UTCDateFromTime(SetDate(t, d)); + var LocalDate=LocalDateFromTime(SetDate(t,d)); + + var item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} + +function SetDate( t, date ) { + var T = LocalTime( t ); + var DATE = Number( date ); + var RESULT3 = MakeDay(YearFromTime(T), MonthFromTime(T), DATE ); + var UTC_DATE = UTC( MakeDate(RESULT3, TimeWithinDay(T)) ); + return ( TimeClip(UTC_DATE) ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.33-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.33-1.js new file mode 100644 index 00000000000..017d43e92e3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.33-1.js @@ -0,0 +1,156 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 15.9.5.33-1.js + ECMA Section: 15.9.5.33 Date.prototype.setUTCDate(date) + Description: + 1. Let t be this time value. + 2. Call ToNumber(date). + 3. Compute MakeDay(YearFromTime(t), MonthFromTime(t), Result(2)). + 4. Compute MakeDate(Result(3), TimeWithinDay(t)). + 5. Set the [[Value]] property of the this value to TimeClip(Result(4)). + 6. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "15.9.5.33-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setUTCDate(date) "); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCDate(31);TDATE", + UTCDateFromTime(SetUTCDate(0,31)), + LocalDateFromTime(SetUTCDate(0,31)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCDate(1);TDATE", + UTCDateFromTime(SetUTCDate(0,1)), + LocalDateFromTime(SetUTCDate(0,1)) ); + + addNewTestCase( "TDATE = new Date(86400000);(TDATE).setUTCDate(1);TDATE", + UTCDateFromTime(SetUTCDate(86400000,1)), + LocalDateFromTime(SetUTCDate(86400000,1)) ); +/* + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCFullYear(1972);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1972)), + LocalDateFromTime(SetUTCFullYear(0,1972)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCFullYear(1968);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1968)), + LocalDateFromTime(SetUTCFullYear(0,1968)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCFullYear(1969);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1969)), + LocalDateFromTime(SetUTCFullYear(0,1969)) ); +*/ +} +function addNewTestCase( DateString, UTCDate, LocalDate) { + DateCase = eval( DateString ); + + var item = testcases.length; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetUTCDate( t, date ) { + var T = t; + var DATE = Number( date ); + var RESULT3 = MakeDay(YearFromTime(T), MonthFromTime(T), DATE ); + return ( TimeClip(MakeDate(RESULT3, TimeWithinDay(t))) ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.34-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.34-1.js new file mode 100644 index 00000000000..e042ab944e8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.34-1.js @@ -0,0 +1,220 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.34-1.js + ECMA Section: 15.9.5.34 Date.prototype.setMonth(mon [, date ] ) + Description: + If date is not specified, this behaves as if date were specified with the + value getDate( ). + + 1. Let t be the result of LocalTime(this time value). + 2. Call ToNumber(date). + 3. If date is not specified, compute DateFromTime(t); otherwise, call ToNumber(date). + 4. Compute MakeDay(YearFromTime(t), Result(2), Result(3)). + 5. Compute UTC(MakeDate(Result(4), TimeWithinDay(t))). + 6. Set the [[Value]] property of the this value to TimeClip(Result(5)). + 7. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "15.9.5.34-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setMonth(mon [, date ] )"); + + var now = (new Date()).valueOf(); + + getFunctionCases(); + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getFunctionCases() { + // some tests for all functions + testcases[testcases.length] = new TestCase( + SECTION, + "Date.prototype.setMonth.length", + 2, + Date.prototype.setMonth.length ); + + testcases[testcases.length] = new TestCase( + SECTION, + "typeof Date.prototype.setMonth", + "function", + typeof Date.prototype.setMonth ); + + +/* + + testcases[testcases.length] = new TestCase( + SECTION, + "delete Date.prototype.setMonth", + false, + delete Date.prototype.setMonth ); +*/ + +} + + +function getTestCases() { + // regression test for http://scopus.mcom.com/bugsplat/show_bug.cgi?id=112404 + d = new Date(0); + d.setMonth(1,1,1,1,1,1); + + addNewTestCase( + "TDATE = new Date(0); TDATE.setMonth(1,1,1,1,1,1); TDATE", + UTCDateFromTime(SetMonth(0,1,1)), + LocalDateFromTime(SetMonth(0,1,1)) ); + + + // whatever today is + + addNewTestCase( "TDATE = new Date(now); (TDATE).setMonth(11,31); TDATE", + UTCDateFromTime(SetMonth(now,11,31)), + LocalDateFromTime(SetMonth(now,11,31)) ); + + // 1970 + + addNewTestCase( "TDATE = new Date(0);(TDATE).setMonth(0,1);TDATE", + UTCDateFromTime(SetMonth(0,0,1)), + LocalDateFromTime(SetMonth(0,0,1)) ); + + addNewTestCase( "TDATE = new Date("+TIME_1900+"); "+ + "(TDATE).setMonth(11,31); TDATE", + UTCDateFromTime( SetMonth(TIME_1900,11,31) ), + LocalDateFromTime( SetMonth(TIME_1900,11,31) ) ); + + + + +/* + addNewTestCase( "TDATE = new Date(28800000);(TDATE).setMonth(11,23,59,999);TDATE", + UTCDateFromTime(SetMonth(28800000,11,23,59,999)), + LocalDateFromTime(SetMonth(28800000,11,23,59,999)) ); + + addNewTestCase( "TDATE = new Date(28800000);(TDATE).setMonth(99,99);TDATE", + UTCDateFromTime(SetMonth(28800000,99,99)), + LocalDateFromTime(SetMonth(28800000,99,99)) ); + + addNewTestCase( "TDATE = new Date(28800000);(TDATE).setMonth(11);TDATE", + UTCDateFromTime(SetMonth(28800000,11,0)), + LocalDateFromTime(SetMonth(28800000,11,0)) ); + + addNewTestCase( "TDATE = new Date(28800000);(TDATE).setMonth(-11);TDATE", + UTCDateFromTime(SetMonth(28800000,-11)), + LocalDateFromTime(SetMonth(28800000,-11)) ); + + // 1900 + +// addNewTestCase( "TDATE = new Date(); (TDATE).setMonth(11,31); TDATE;" +*/ + +} +function addNewTestCase( DateString, UTCDate, LocalDate) { + DateCase = eval( DateString ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetMonth( t, mon, date ) { + var TIME = LocalTime(t); + var MONTH = Number( mon ); + var DATE = ( date == void 0 ) ? DateFromTime(TIME) : Number( date ); + var DAY = MakeDay( YearFromTime(TIME), MONTH, DATE ); + return ( TimeClip (UTC(MakeDate( DAY, TimeWithinDay(TIME) ))) ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.35-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.35-1.js new file mode 100644 index 00000000000..242c0d80b9d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.35-1.js @@ -0,0 +1,143 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 15.9.5.35-1.js + ECMA Section: 15.9.5.35 Date.prototype.setUTCMonth(mon [,date]) + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "15.9.5.35-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setUTCMonth(mon [,date] ) "); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCMonth(0);TDATE", + UTCDateFromTime(SetUTCMonth(0,0)), + LocalDateFromTime(SetUTCMonth(0,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCMonth(11);TDATE", + UTCDateFromTime(SetUTCMonth(0,11)), + LocalDateFromTime(SetUTCMonth(0,11)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCMonth(3,4);TDATE", + UTCDateFromTime(SetUTCMonth(0,3,4)), + LocalDateFromTime(SetUTCMonth(0,3,4)) ); + +} + +function addNewTestCase( DateString, UTCDate, LocalDate) { + DateCase = eval( DateString ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetUTCMonth( t, month, date ) { + var T = t; + var MONTH = Number( month ); + var DATE = ( date == void 0) ? DateFromTime(T) : Number( date ); + + var RESULT4 = MakeDay(YearFromTime(T), MONTH, DATE ); + var RESULT5 = MakeDate( RESULT4, TimeWithinDay(T)); + + return ( TimeClip(RESULT5) ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-1.js new file mode 100644 index 00000000000..f0468299008 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-1.js @@ -0,0 +1,245 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.36-1.js + ECMA Section: 15.9.5.36 Date.prototype.setFullYear(year [, mon [, date ]] ) + Description: + + If mon is not specified, this behaves as if mon were specified with the + value getMonth( ). If date is not specified, this behaves as if date were + specified with the value getDate( ). + + 1. Let t be the result of LocalTime(this time value); but if this time + value is NaN, let t be +0. + 2. Call ToNumber(year). + 3. If mon is not specified, compute MonthFromTime(t); otherwise, call + ToNumber(mon). + 4. If date is not specified, compute DateFromTime(t); otherwise, call + ToNumber(date). + 5. Compute MakeDay(Result(2), Result(3), Result(4)). + 6. Compute UTC(MakeDate(Result(5), TimeWithinDay(t))). + 7. Set the [[Value]] property of the this value to TimeClip(Result(6)). + 8. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + + Added test cases for Year 2000 Compatilibity Testing. + +*/ + var SECTION = "15.9.5.36-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setFullYear(year [, mon [, date ]] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + + // 1969 + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1969);TDATE", + UTCDateFromTime(SetFullYear(0,1969)), + LocalDateFromTime(SetFullYear(0,1969)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1969,11);TDATE", + UTCDateFromTime(SetFullYear(0,1969,11)), + LocalDateFromTime(SetFullYear(0,1969,11)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1969,11,31);TDATE", + UTCDateFromTime(SetFullYear(0,1969,11,31)), + LocalDateFromTime(SetFullYear(0,1969,11,31)) ); +/* + // 1970 + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1970);TDATE", + UTCDateFromTime(SetFullYear(0,1970)), + LocalDateFromTime(SetFullYear(0,1970)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1970,0);TDATE", + UTCDateFromTime(SetFullYear(0,1970,0)), + LocalDateFromTime(SetFullYear(0,1970,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1970,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,1970,0,1)), + LocalDateFromTime(SetFullYear(0,1970,0,1)) ); + // 1971 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1971);TDATE", + UTCDateFromTime(SetFullYear(0,1971)), + LocalDateFromTime(SetFullYear(0,1971)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1971,0);TDATE", + UTCDateFromTime(SetFullYear(0,1971,0)), + LocalDateFromTime(SetFullYear(0,1971,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1971,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,1971,0,1)), + LocalDateFromTime(SetFullYear(0,1971,0,1)) ); + + // 1999 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1999);TDATE", + UTCDateFromTime(SetFullYear(0,1999)), + LocalDateFromTime(SetFullYear(0,1999)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1999,11);TDATE", + UTCDateFromTime(SetFullYear(0,1999,11)), + LocalDateFromTime(SetFullYear(0,1999,11)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1999,11,31);TDATE", + UTCDateFromTime(SetFullYear(0,1999,11,31)), + LocalDateFromTime(SetFullYear(0,1999,11,31)) ); + + // 2000 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000);TDATE", + UTCDateFromTime(SetFullYear(0,2000)), + LocalDateFromTime(SetFullYear(0,2000)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,0);TDATE", + UTCDateFromTime(SetFullYear(0,2000,0)), + LocalDateFromTime(SetFullYear(0,2000,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,2000,0,1)), + LocalDateFromTime(SetFullYear(0,2000,0,1)) ); + + // feb 29, 2000 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000);TDATE", + UTCDateFromTime(SetFullYear(0,2000)), + LocalDateFromTime(SetFullYear(0,2000)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,1);TDATE", + UTCDateFromTime(SetFullYear(0,2000,1)), + LocalDateFromTime(SetFullYear(0,2000,1)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,1,29);TDATE", + UTCDateFromTime(SetFullYear(0,2000,1,29)), + LocalDateFromTime(SetFullYear(0,2000,1,29)) ); + + // Jan 1, 2005 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005);TDATE", + UTCDateFromTime(SetFullYear(0,2005)), + LocalDateFromTime(SetFullYear(0,2005)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0);TDATE", + UTCDateFromTime(SetFullYear(0,2005,0)), + LocalDateFromTime(SetFullYear(0,2005,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,2005,0,1)), + LocalDateFromTime(SetFullYear(0,2005,0,1)) ); + +*/ +} +function addNewTestCase( DateString, UTCDate, LocalDate) { + DateCase = eval( DateString ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetFullYear( t, year, mon, date ) { + var T = ( isNaN(t) ) ? 0 : LocalTime(t) ; + var YEAR = Number( year ); + var MONTH = ( mon == void 0 ) ? MonthFromTime(T) : Number( mon ); + var DATE = ( date == void 0 ) ? DateFromTime(T) : Number( date ); + + var DAY = MakeDay( YEAR, MONTH, DATE ); + var UTC_DATE = UTC(MakeDate( DAY, TimeWithinDay(T))); + + return ( TimeClip(UTC_DATE) ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-2.js new file mode 100644 index 00000000000..1e207ed8d54 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-2.js @@ -0,0 +1,231 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.36-1.js + ECMA Section: 15.9.5.36 Date.prototype.setFullYear(year [, mon [, date ]] ) + Description: + + If mon is not specified, this behaves as if mon were specified with the + value getMonth( ). If date is not specified, this behaves as if date were + specified with the value getDate( ). + + 1. Let t be the result of LocalTime(this time value); but if this time + value is NaN, let t be +0. + 2. Call ToNumber(year). + 3. If mon is not specified, compute MonthFromTime(t); otherwise, call + ToNumber(mon). + 4. If date is not specified, compute DateFromTime(t); otherwise, call + ToNumber(date). + 5. Compute MakeDay(Result(2), Result(3), Result(4)). + 6. Compute UTC(MakeDate(Result(5), TimeWithinDay(t))). + 7. Set the [[Value]] property of the this value to TimeClip(Result(6)). + 8. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + + Added test cases for Year 2000 Compatilibity Testing. + +*/ + var SECTION = "15.9.5.36-2"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setFullYear(year [, mon [, date ]] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + // 1970 + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1970);TDATE", + UTCDateFromTime(SetFullYear(0,1970)), + LocalDateFromTime(SetFullYear(0,1970)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1970,0);TDATE", + UTCDateFromTime(SetFullYear(0,1970,0)), + LocalDateFromTime(SetFullYear(0,1970,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1970,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,1970,0,1)), + LocalDateFromTime(SetFullYear(0,1970,0,1)) ); +/* + // 1971 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1971);TDATE", + UTCDateFromTime(SetFullYear(0,1971)), + LocalDateFromTime(SetFullYear(0,1971)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1971,0);TDATE", + UTCDateFromTime(SetFullYear(0,1971,0)), + LocalDateFromTime(SetFullYear(0,1971,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1971,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,1971,0,1)), + LocalDateFromTime(SetFullYear(0,1971,0,1)) ); + + // 1999 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1999);TDATE", + UTCDateFromTime(SetFullYear(0,1999)), + LocalDateFromTime(SetFullYear(0,1999)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1999,11);TDATE", + UTCDateFromTime(SetFullYear(0,1999,11)), + LocalDateFromTime(SetFullYear(0,1999,11)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1999,11,31);TDATE", + UTCDateFromTime(SetFullYear(0,1999,11,31)), + LocalDateFromTime(SetFullYear(0,1999,11,31)) ); + + // 2000 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000);TDATE", + UTCDateFromTime(SetFullYear(0,2000)), + LocalDateFromTime(SetFullYear(0,2000)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,0);TDATE", + UTCDateFromTime(SetFullYear(0,2000,0)), + LocalDateFromTime(SetFullYear(0,2000,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,2000,0,1)), + LocalDateFromTime(SetFullYear(0,2000,0,1)) ); + + // feb 29, 2000 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000);TDATE", + UTCDateFromTime(SetFullYear(0,2000)), + LocalDateFromTime(SetFullYear(0,2000)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,1);TDATE", + UTCDateFromTime(SetFullYear(0,2000,1)), + LocalDateFromTime(SetFullYear(0,2000,1)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,1,29);TDATE", + UTCDateFromTime(SetFullYear(0,2000,1,29)), + LocalDateFromTime(SetFullYear(0,2000,1,29)) ); + + // Jan 1, 2005 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005);TDATE", + UTCDateFromTime(SetFullYear(0,2005)), + LocalDateFromTime(SetFullYear(0,2005)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0);TDATE", + UTCDateFromTime(SetFullYear(0,2005,0)), + LocalDateFromTime(SetFullYear(0,2005,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,2005,0,1)), + LocalDateFromTime(SetFullYear(0,2005,0,1)) ); + +*/ +} +function addNewTestCase( DateString, UTCDate, LocalDate) { + DateCase = eval( DateString ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetFullYear( t, year, mon, date ) { + var T = ( isNaN(t) ) ? 0 : LocalTime(t) ; + var YEAR = Number( year ); + var MONTH = ( mon == void 0 ) ? MonthFromTime(T) : Number( mon ); + var DATE = ( date == void 0 ) ? DateFromTime(T) : Number( date ); + + var DAY = MakeDay( YEAR, MONTH, DATE ); + var UTC_DATE = UTC(MakeDate( DAY, TimeWithinDay(T))); + + return ( TimeClip(UTC_DATE) ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-3.js new file mode 100644 index 00000000000..c1e9c8113f3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-3.js @@ -0,0 +1,218 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.36-1.js + ECMA Section: 15.9.5.36 Date.prototype.setFullYear(year [, mon [, date ]] ) + Description: + + If mon is not specified, this behaves as if mon were specified with the + value getMonth( ). If date is not specified, this behaves as if date were + specified with the value getDate( ). + + 1. Let t be the result of LocalTime(this time value); but if this time + value is NaN, let t be +0. + 2. Call ToNumber(year). + 3. If mon is not specified, compute MonthFromTime(t); otherwise, call + ToNumber(mon). + 4. If date is not specified, compute DateFromTime(t); otherwise, call + ToNumber(date). + 5. Compute MakeDay(Result(2), Result(3), Result(4)). + 6. Compute UTC(MakeDate(Result(5), TimeWithinDay(t))). + 7. Set the [[Value]] property of the this value to TimeClip(Result(6)). + 8. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + + Added test cases for Year 2000 Compatilibity Testing. + +*/ + var SECTION = "15.9.5.36-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setFullYear(year [, mon [, date ]] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + // 1971 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1971);TDATE", + UTCDateFromTime(SetFullYear(0,1971)), + LocalDateFromTime(SetFullYear(0,1971)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1971,0);TDATE", + UTCDateFromTime(SetFullYear(0,1971,0)), + LocalDateFromTime(SetFullYear(0,1971,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1971,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,1971,0,1)), + LocalDateFromTime(SetFullYear(0,1971,0,1)) ); + +/* + // 1999 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1999);TDATE", + UTCDateFromTime(SetFullYear(0,1999)), + LocalDateFromTime(SetFullYear(0,1999)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1999,11);TDATE", + UTCDateFromTime(SetFullYear(0,1999,11)), + LocalDateFromTime(SetFullYear(0,1999,11)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1999,11,31);TDATE", + UTCDateFromTime(SetFullYear(0,1999,11,31)), + LocalDateFromTime(SetFullYear(0,1999,11,31)) ); + + // 2000 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000);TDATE", + UTCDateFromTime(SetFullYear(0,2000)), + LocalDateFromTime(SetFullYear(0,2000)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,0);TDATE", + UTCDateFromTime(SetFullYear(0,2000,0)), + LocalDateFromTime(SetFullYear(0,2000,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,2000,0,1)), + LocalDateFromTime(SetFullYear(0,2000,0,1)) ); + + // feb 29, 2000 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000);TDATE", + UTCDateFromTime(SetFullYear(0,2000)), + LocalDateFromTime(SetFullYear(0,2000)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,1);TDATE", + UTCDateFromTime(SetFullYear(0,2000,1)), + LocalDateFromTime(SetFullYear(0,2000,1)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,1,29);TDATE", + UTCDateFromTime(SetFullYear(0,2000,1,29)), + LocalDateFromTime(SetFullYear(0,2000,1,29)) ); + + // Jan 1, 2005 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005);TDATE", + UTCDateFromTime(SetFullYear(0,2005)), + LocalDateFromTime(SetFullYear(0,2005)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0);TDATE", + UTCDateFromTime(SetFullYear(0,2005,0)), + LocalDateFromTime(SetFullYear(0,2005,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,2005,0,1)), + LocalDateFromTime(SetFullYear(0,2005,0,1)) ); + +*/ +} +function addNewTestCase( DateString, UTCDate, LocalDate) { + DateCase = eval( DateString ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetFullYear( t, year, mon, date ) { + var T = ( isNaN(t) ) ? 0 : LocalTime(t) ; + var YEAR = Number( year ); + var MONTH = ( mon == void 0 ) ? MonthFromTime(T) : Number( mon ); + var DATE = ( date == void 0 ) ? DateFromTime(T) : Number( date ); + + var DAY = MakeDay( YEAR, MONTH, DATE ); + var UTC_DATE = UTC(MakeDate( DAY, TimeWithinDay(T))); + + return ( TimeClip(UTC_DATE) ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-4.js new file mode 100644 index 00000000000..4d7f08b0850 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-4.js @@ -0,0 +1,205 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.36-1.js + ECMA Section: 15.9.5.36 Date.prototype.setFullYear(year [, mon [, date ]] ) + Description: + + If mon is not specified, this behaves as if mon were specified with the + value getMonth( ). If date is not specified, this behaves as if date were + specified with the value getDate( ). + + 1. Let t be the result of LocalTime(this time value); but if this time + value is NaN, let t be +0. + 2. Call ToNumber(year). + 3. If mon is not specified, compute MonthFromTime(t); otherwise, call + ToNumber(mon). + 4. If date is not specified, compute DateFromTime(t); otherwise, call + ToNumber(date). + 5. Compute MakeDay(Result(2), Result(3), Result(4)). + 6. Compute UTC(MakeDate(Result(5), TimeWithinDay(t))). + 7. Set the [[Value]] property of the this value to TimeClip(Result(6)). + 8. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + + Added test cases for Year 2000 Compatilibity Testing. + +*/ + var SECTION = "15.9.5.36-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setFullYear(year [, mon [, date ]] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + // 1999 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1999);TDATE", + UTCDateFromTime(SetFullYear(0,1999)), + LocalDateFromTime(SetFullYear(0,1999)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1999,11);TDATE", + UTCDateFromTime(SetFullYear(0,1999,11)), + LocalDateFromTime(SetFullYear(0,1999,11)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1999,11,31);TDATE", + UTCDateFromTime(SetFullYear(0,1999,11,31)), + LocalDateFromTime(SetFullYear(0,1999,11,31)) ); + +/* + // 2000 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000);TDATE", + UTCDateFromTime(SetFullYear(0,2000)), + LocalDateFromTime(SetFullYear(0,2000)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,0);TDATE", + UTCDateFromTime(SetFullYear(0,2000,0)), + LocalDateFromTime(SetFullYear(0,2000,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,2000,0,1)), + LocalDateFromTime(SetFullYear(0,2000,0,1)) ); + + // feb 29, 2000 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000);TDATE", + UTCDateFromTime(SetFullYear(0,2000)), + LocalDateFromTime(SetFullYear(0,2000)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,1);TDATE", + UTCDateFromTime(SetFullYear(0,2000,1)), + LocalDateFromTime(SetFullYear(0,2000,1)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,1,29);TDATE", + UTCDateFromTime(SetFullYear(0,2000,1,29)), + LocalDateFromTime(SetFullYear(0,2000,1,29)) ); + + // Jan 1, 2005 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005);TDATE", + UTCDateFromTime(SetFullYear(0,2005)), + LocalDateFromTime(SetFullYear(0,2005)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0);TDATE", + UTCDateFromTime(SetFullYear(0,2005,0)), + LocalDateFromTime(SetFullYear(0,2005,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,2005,0,1)), + LocalDateFromTime(SetFullYear(0,2005,0,1)) ); + +*/ +} +function addNewTestCase( DateString, UTCDate, LocalDate) { + DateCase = eval( DateString ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetFullYear( t, year, mon, date ) { + var T = ( isNaN(t) ) ? 0 : LocalTime(t) ; + var YEAR = Number( year ); + var MONTH = ( mon == void 0 ) ? MonthFromTime(T) : Number( mon ); + var DATE = ( date == void 0 ) ? DateFromTime(T) : Number( date ); + + var DAY = MakeDay( YEAR, MONTH, DATE ); + var UTC_DATE = UTC(MakeDate( DAY, TimeWithinDay(T))); + + return ( TimeClip(UTC_DATE) ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-5.js new file mode 100644 index 00000000000..41dc1438964 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-5.js @@ -0,0 +1,192 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.36-1.js + ECMA Section: 15.9.5.36 Date.prototype.setFullYear(year [, mon [, date ]] ) + Description: + + If mon is not specified, this behaves as if mon were specified with the + value getMonth( ). If date is not specified, this behaves as if date were + specified with the value getDate( ). + + 1. Let t be the result of LocalTime(this time value); but if this time + value is NaN, let t be +0. + 2. Call ToNumber(year). + 3. If mon is not specified, compute MonthFromTime(t); otherwise, call + ToNumber(mon). + 4. If date is not specified, compute DateFromTime(t); otherwise, call + ToNumber(date). + 5. Compute MakeDay(Result(2), Result(3), Result(4)). + 6. Compute UTC(MakeDate(Result(5), TimeWithinDay(t))). + 7. Set the [[Value]] property of the this value to TimeClip(Result(6)). + 8. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + + Added test cases for Year 2000 Compatilibity Testing. + +*/ + var SECTION = "15.9.5.36-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setFullYear(year [, mon [, date ]] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + // 2000 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000);TDATE", + UTCDateFromTime(SetFullYear(0,2000)), + LocalDateFromTime(SetFullYear(0,2000)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,0);TDATE", + UTCDateFromTime(SetFullYear(0,2000,0)), + LocalDateFromTime(SetFullYear(0,2000,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,2000,0,1)), + LocalDateFromTime(SetFullYear(0,2000,0,1)) ); + +/* + // feb 29, 2000 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000);TDATE", + UTCDateFromTime(SetFullYear(0,2000)), + LocalDateFromTime(SetFullYear(0,2000)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,1);TDATE", + UTCDateFromTime(SetFullYear(0,2000,1)), + LocalDateFromTime(SetFullYear(0,2000,1)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,1,29);TDATE", + UTCDateFromTime(SetFullYear(0,2000,1,29)), + LocalDateFromTime(SetFullYear(0,2000,1,29)) ); + + // Jan 1, 2005 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005);TDATE", + UTCDateFromTime(SetFullYear(0,2005)), + LocalDateFromTime(SetFullYear(0,2005)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0);TDATE", + UTCDateFromTime(SetFullYear(0,2005,0)), + LocalDateFromTime(SetFullYear(0,2005,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,2005,0,1)), + LocalDateFromTime(SetFullYear(0,2005,0,1)) ); + +*/ +} +function addNewTestCase( DateString, UTCDate, LocalDate) { + DateCase = eval( DateString ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetFullYear( t, year, mon, date ) { + var T = ( isNaN(t) ) ? 0 : LocalTime(t) ; + var YEAR = Number( year ); + var MONTH = ( mon == void 0 ) ? MonthFromTime(T) : Number( mon ); + var DATE = ( date == void 0 ) ? DateFromTime(T) : Number( date ); + + var DAY = MakeDay( YEAR, MONTH, DATE ); + var UTC_DATE = UTC(MakeDate( DAY, TimeWithinDay(T))); + + return ( TimeClip(UTC_DATE) ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-6.js new file mode 100644 index 00000000000..8bed8d2c935 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-6.js @@ -0,0 +1,179 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.36-1.js + ECMA Section: 15.9.5.36 Date.prototype.setFullYear(year [, mon [, date ]] ) + Description: + + If mon is not specified, this behaves as if mon were specified with the + value getMonth( ). If date is not specified, this behaves as if date were + specified with the value getDate( ). + + 1. Let t be the result of LocalTime(this time value); but if this time + value is NaN, let t be +0. + 2. Call ToNumber(year). + 3. If mon is not specified, compute MonthFromTime(t); otherwise, call + ToNumber(mon). + 4. If date is not specified, compute DateFromTime(t); otherwise, call + ToNumber(date). + 5. Compute MakeDay(Result(2), Result(3), Result(4)). + 6. Compute UTC(MakeDate(Result(5), TimeWithinDay(t))). + 7. Set the [[Value]] property of the this value to TimeClip(Result(6)). + 8. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + + Added test cases for Year 2000 Compatilibity Testing. + +*/ + var SECTION = "15.9.5.36-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setFullYear(year [, mon [, date ]] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + // feb 29, 2000 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000);TDATE", + UTCDateFromTime(SetFullYear(0,2000)), + LocalDateFromTime(SetFullYear(0,2000)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,1);TDATE", + UTCDateFromTime(SetFullYear(0,2000,1)), + LocalDateFromTime(SetFullYear(0,2000,1)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,1,29);TDATE", + UTCDateFromTime(SetFullYear(0,2000,1,29)), + LocalDateFromTime(SetFullYear(0,2000,1,29)) ); + +/* + // Jan 1, 2005 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005);TDATE", + UTCDateFromTime(SetFullYear(0,2005)), + LocalDateFromTime(SetFullYear(0,2005)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0);TDATE", + UTCDateFromTime(SetFullYear(0,2005,0)), + LocalDateFromTime(SetFullYear(0,2005,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,2005,0,1)), + LocalDateFromTime(SetFullYear(0,2005,0,1)) ); + +*/ +} +function addNewTestCase( DateString, UTCDate, LocalDate) { + DateCase = eval( DateString ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetFullYear( t, year, mon, date ) { + var T = ( isNaN(t) ) ? 0 : LocalTime(t) ; + var YEAR = Number( year ); + var MONTH = ( mon == void 0 ) ? MonthFromTime(T) : Number( mon ); + var DATE = ( date == void 0 ) ? DateFromTime(T) : Number( date ); + + var DAY = MakeDay( YEAR, MONTH, DATE ); + var UTC_DATE = UTC(MakeDate( DAY, TimeWithinDay(T))); + + return ( TimeClip(UTC_DATE) ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-7.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-7.js new file mode 100644 index 00000000000..8520844c5ce --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.36-7.js @@ -0,0 +1,164 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.36-1.js + ECMA Section: 15.9.5.36 Date.prototype.setFullYear(year [, mon [, date ]] ) + Description: + + If mon is not specified, this behaves as if mon were specified with the + value getMonth( ). If date is not specified, this behaves as if date were + specified with the value getDate( ). + + 1. Let t be the result of LocalTime(this time value); but if this time + value is NaN, let t be +0. + 2. Call ToNumber(year). + 3. If mon is not specified, compute MonthFromTime(t); otherwise, call + ToNumber(mon). + 4. If date is not specified, compute DateFromTime(t); otherwise, call + ToNumber(date). + 5. Compute MakeDay(Result(2), Result(3), Result(4)). + 6. Compute UTC(MakeDate(Result(5), TimeWithinDay(t))). + 7. Set the [[Value]] property of the this value to TimeClip(Result(6)). + 8. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + + Added test cases for Year 2000 Compatilibity Testing. + +*/ + var SECTION = "15.9.5.36-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setFullYear(year [, mon [, date ]] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + // Jan 1, 2005 + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005);TDATE", + UTCDateFromTime(SetFullYear(0,2005)), + LocalDateFromTime(SetFullYear(0,2005)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0);TDATE", + UTCDateFromTime(SetFullYear(0,2005,0)), + LocalDateFromTime(SetFullYear(0,2005,0)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0,1);TDATE", + UTCDateFromTime(SetFullYear(0,2005,0,1)), + LocalDateFromTime(SetFullYear(0,2005,0,1)) ); + +} +function addNewTestCase( DateString, UTCDate, LocalDate) { + DateCase = eval( DateString ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetFullYear( t, year, mon, date ) { + var T = ( isNaN(t) ) ? 0 : LocalTime(t) ; + var YEAR = Number( year ); + var MONTH = ( mon == void 0 ) ? MonthFromTime(T) : Number( mon ); + var DATE = ( date == void 0 ) ? DateFromTime(T) : Number( date ); + + var DAY = MakeDay( YEAR, MONTH, DATE ); + var UTC_DATE = UTC(MakeDate( DAY, TimeWithinDay(T))); + + return ( TimeClip(UTC_DATE) ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.37-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.37-1.js new file mode 100644 index 00000000000..9eaf49da494 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.37-1.js @@ -0,0 +1,235 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 15.9.5.37-1.js + ECMA Section: 15.9.5.37 Date.prototype.setUTCFullYear(year [, mon [, date ]] ) + Description: + + If mon is not specified, this behaves as if mon were specified with the + value getUTCMonth( ). If date is not specified, this behaves as if date + were specified with the value getUTCDate( ). + + 1. Let t be this time value; but if this time value is NaN, let t be +0. + 2. Call ToNumber(year). + 3. If mon is not specified, compute MonthFromTime(t); otherwise, call + ToNumber(mon). + 4. If date is not specified, compute DateFromTime(t); otherwise, call + ToNumber(date). + 5. Compute MakeDay(Result(2), Result(3), Result(4)). + 6. Compute MakeDate(Result(5), TimeWithinDay(t)). + 7. Set the [[Value]] property of the this value to TimeClip(Result(6)). + 8. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + + Added some Year 2000 test cases. +*/ + var SECTION = "15.9.5.37-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setUTCFullYear(year [, mon [, date ]] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + + // Dates around 1970 + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCFullYear(1970);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1970)), + LocalDateFromTime(SetUTCFullYear(0,1970)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCFullYear(1971);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1971)), + LocalDateFromTime(SetUTCFullYear(0,1971)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCFullYear(1972);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1972)), + LocalDateFromTime(SetUTCFullYear(0,1972)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCFullYear(1968);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1968)), + LocalDateFromTime(SetUTCFullYear(0,1968)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCFullYear(1969);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1969)), + LocalDateFromTime(SetUTCFullYear(0,1969)) ); + + addNewTestCase( "TDATE = new Date(0);(TDATE).setUTCFullYear(1969);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1969)), + LocalDateFromTime(SetUTCFullYear(0,1969)) ); +/* + // Dates around 2000 + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2000);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2000)), + LocalDateFromTime(SetUTCFullYear(0,2000)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2001);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2001)), + LocalDateFromTime(SetUTCFullYear(0,2001)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1999);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1999)), + LocalDateFromTime(SetUTCFullYear(0,1999)) ); + + // Dates around 29 February 2000 + + var UTC_FEB_29_1972 = TIME_1970 + TimeInYear(1970) + TimeInYear(1971) + + 31*msPerDay + 28*msPerDay; + + var PST_FEB_29_1972 = UTC_FEB_29_1972 - TZ_DIFF * msPerHour; + + addNewTestCase( "TDATE = new Date("+UTC_FEB_29_1972+"); "+ + "TDATE.setUTCFullYear(2000);TDATE", + UTCDateFromTime(SetUTCFullYear(UTC_FEB_29_1972,2000)), + LocalDateFromTime(SetUTCFullYear(UTC_FEB_29_1972,2000)) ); + + addNewTestCase( "TDATE = new Date("+PST_FEB_29_1972+"); "+ + "TDATE.setUTCFullYear(2000);TDATE", + UTCDateFromTime(SetUTCFullYear(PST_FEB_29_1972,2000)), + LocalDateFromTime(SetUTCFullYear(PST_FEB_29_1972,2000)) ); + + // Dates around 2005 + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2005);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2005)), + LocalDateFromTime(SetUTCFullYear(0,2005)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2004);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2004)), + LocalDateFromTime(SetUTCFullYear(0,2004)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2006);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2006)), + LocalDateFromTime(SetUTCFullYear(0,2006)) ); + + + // Dates around 1900 + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1900);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1900)), + LocalDateFromTime(SetUTCFullYear(0,1900)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1899);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1899)), + LocalDateFromTime(SetUTCFullYear(0,1899)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1901);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1901)), + LocalDateFromTime(SetUTCFullYear(0,1901)) ); + +*/ +} +function addNewTestCase( DateString, UTCDate, LocalDate) { + DateCase = eval( DateString ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetUTCFullYear( t, year, mon, date ) { + var T = ( t != t ) ? 0 : t; + var YEAR = Number(year); + var MONTH = ( mon == void 0 ) ? MonthFromTime(T) : Number( mon ); + var DATE = ( date == void 0 ) ? DateFromTime(T) : Number( date ); + var DAY = MakeDay( YEAR, MONTH, DATE ); + + return ( TimeClip(MakeDate(DAY, TimeWithinDay(T))) ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.37-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.37-2.js new file mode 100644 index 00000000000..ffb8fda3f8b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.37-2.js @@ -0,0 +1,209 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 15.9.5.37-1.js + ECMA Section: 15.9.5.37 Date.prototype.setUTCFullYear(year [, mon [, date ]] ) + Description: + + If mon is not specified, this behaves as if mon were specified with the + value getUTCMonth( ). If date is not specified, this behaves as if date + were specified with the value getUTCDate( ). + + 1. Let t be this time value; but if this time value is NaN, let t be +0. + 2. Call ToNumber(year). + 3. If mon is not specified, compute MonthFromTime(t); otherwise, call + ToNumber(mon). + 4. If date is not specified, compute DateFromTime(t); otherwise, call + ToNumber(date). + 5. Compute MakeDay(Result(2), Result(3), Result(4)). + 6. Compute MakeDate(Result(5), TimeWithinDay(t)). + 7. Set the [[Value]] property of the this value to TimeClip(Result(6)). + 8. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + + Added some Year 2000 test cases. +*/ + var SECTION = "15.9.5.37-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setUTCFullYear(year [, mon [, date ]] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + + // Dates around 2000 + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2000);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2000)), + LocalDateFromTime(SetUTCFullYear(0,2000)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2001);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2001)), + LocalDateFromTime(SetUTCFullYear(0,2001)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1999);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1999)), + LocalDateFromTime(SetUTCFullYear(0,1999)) ); +/* + // Dates around 29 February 2000 + + var UTC_FEB_29_1972 = TIME_1970 + TimeInYear(1970) + TimeInYear(1971) + + 31*msPerDay + 28*msPerDay; + + var PST_FEB_29_1972 = UTC_FEB_29_1972 - TZ_DIFF * msPerHour; + + addNewTestCase( "TDATE = new Date("+UTC_FEB_29_1972+"); "+ + "TDATE.setUTCFullYear(2000);TDATE", + UTCDateFromTime(SetUTCFullYear(UTC_FEB_29_1972,2000)), + LocalDateFromTime(SetUTCFullYear(UTC_FEB_29_1972,2000)) ); + + addNewTestCase( "TDATE = new Date("+PST_FEB_29_1972+"); "+ + "TDATE.setUTCFullYear(2000);TDATE", + UTCDateFromTime(SetUTCFullYear(PST_FEB_29_1972,2000)), + LocalDateFromTime(SetUTCFullYear(PST_FEB_29_1972,2000)) ); + + // Dates around 2005 + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2005);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2005)), + LocalDateFromTime(SetUTCFullYear(0,2005)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2004);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2004)), + LocalDateFromTime(SetUTCFullYear(0,2004)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2006);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2006)), + LocalDateFromTime(SetUTCFullYear(0,2006)) ); + + + // Dates around 1900 + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1900);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1900)), + LocalDateFromTime(SetUTCFullYear(0,1900)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1899);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1899)), + LocalDateFromTime(SetUTCFullYear(0,1899)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1901);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1901)), + LocalDateFromTime(SetUTCFullYear(0,1901)) ); + +*/ +} +function addNewTestCase( DateString, UTCDate, LocalDate) { + DateCase = eval( DateString ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetUTCFullYear( t, year, mon, date ) { + var T = ( t != t ) ? 0 : t; + var YEAR = Number(year); + var MONTH = ( mon == void 0 ) ? MonthFromTime(T) : Number( mon ); + var DATE = ( date == void 0 ) ? DateFromTime(T) : Number( date ); + var DAY = MakeDay( YEAR, MONTH, DATE ); + + return ( TimeClip(MakeDate(DAY, TimeWithinDay(T))) ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.37-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.37-3.js new file mode 100644 index 00000000000..136ec892c4b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.37-3.js @@ -0,0 +1,195 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 15.9.5.37-1.js + ECMA Section: 15.9.5.37 Date.prototype.setUTCFullYear(year [, mon [, date ]] ) + Description: + + If mon is not specified, this behaves as if mon were specified with the + value getUTCMonth( ). If date is not specified, this behaves as if date + were specified with the value getUTCDate( ). + + 1. Let t be this time value; but if this time value is NaN, let t be +0. + 2. Call ToNumber(year). + 3. If mon is not specified, compute MonthFromTime(t); otherwise, call + ToNumber(mon). + 4. If date is not specified, compute DateFromTime(t); otherwise, call + ToNumber(date). + 5. Compute MakeDay(Result(2), Result(3), Result(4)). + 6. Compute MakeDate(Result(5), TimeWithinDay(t)). + 7. Set the [[Value]] property of the this value to TimeClip(Result(6)). + 8. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + + Added some Year 2000 test cases. +*/ + var SECTION = "15.9.5.37-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setUTCFullYear(year [, mon [, date ]] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + + // Dates around 29 February 2000 + + var UTC_FEB_29_1972 = TIME_1970 + TimeInYear(1970) + TimeInYear(1971) + + 31*msPerDay + 28*msPerDay; + + var PST_FEB_29_1972 = UTC_FEB_29_1972 - TZ_DIFF * msPerHour; + + addNewTestCase( "TDATE = new Date("+UTC_FEB_29_1972+"); "+ + "TDATE.setUTCFullYear(2000);TDATE", + UTCDateFromTime(SetUTCFullYear(UTC_FEB_29_1972,2000)), + LocalDateFromTime(SetUTCFullYear(UTC_FEB_29_1972,2000)) ); + + addNewTestCase( "TDATE = new Date("+PST_FEB_29_1972+"); "+ + "TDATE.setUTCFullYear(2000);TDATE", + UTCDateFromTime(SetUTCFullYear(PST_FEB_29_1972,2000)), + LocalDateFromTime(SetUTCFullYear(PST_FEB_29_1972,2000)) ); +/* + // Dates around 2005 + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2005);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2005)), + LocalDateFromTime(SetUTCFullYear(0,2005)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2004);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2004)), + LocalDateFromTime(SetUTCFullYear(0,2004)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2006);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2006)), + LocalDateFromTime(SetUTCFullYear(0,2006)) ); + + + // Dates around 1900 + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1900);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1900)), + LocalDateFromTime(SetUTCFullYear(0,1900)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1899);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1899)), + LocalDateFromTime(SetUTCFullYear(0,1899)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1901);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1901)), + LocalDateFromTime(SetUTCFullYear(0,1901)) ); + +*/ +} +function addNewTestCase( DateString, UTCDate, LocalDate) { + DateCase = eval( DateString ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetUTCFullYear( t, year, mon, date ) { + var T = ( t != t ) ? 0 : t; + var YEAR = Number(year); + var MONTH = ( mon == void 0 ) ? MonthFromTime(T) : Number( mon ); + var DATE = ( date == void 0 ) ? DateFromTime(T) : Number( date ); + var DAY = MakeDay( YEAR, MONTH, DATE ); + + return ( TimeClip(MakeDate(DAY, TimeWithinDay(T))) ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.37-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.37-4.js new file mode 100644 index 00000000000..c7876d1d782 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.37-4.js @@ -0,0 +1,177 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 15.9.5.37-1.js + ECMA Section: 15.9.5.37 Date.prototype.setUTCFullYear(year [, mon [, date ]] ) + Description: + + If mon is not specified, this behaves as if mon were specified with the + value getUTCMonth( ). If date is not specified, this behaves as if date + were specified with the value getUTCDate( ). + + 1. Let t be this time value; but if this time value is NaN, let t be +0. + 2. Call ToNumber(year). + 3. If mon is not specified, compute MonthFromTime(t); otherwise, call + ToNumber(mon). + 4. If date is not specified, compute DateFromTime(t); otherwise, call + ToNumber(date). + 5. Compute MakeDay(Result(2), Result(3), Result(4)). + 6. Compute MakeDate(Result(5), TimeWithinDay(t)). + 7. Set the [[Value]] property of the this value to TimeClip(Result(6)). + 8. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + + Added some Year 2000 test cases. +*/ + var SECTION = "15.9.5.37-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setUTCFullYear(year [, mon [, date ]] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + // Dates around 2005 + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2005);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2005)), + LocalDateFromTime(SetUTCFullYear(0,2005)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2004);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2004)), + LocalDateFromTime(SetUTCFullYear(0,2004)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(2006);TDATE", + UTCDateFromTime(SetUTCFullYear(0,2006)), + LocalDateFromTime(SetUTCFullYear(0,2006)) ); + +/* + // Dates around 1900 + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1900);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1900)), + LocalDateFromTime(SetUTCFullYear(0,1900)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1899);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1899)), + LocalDateFromTime(SetUTCFullYear(0,1899)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1901);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1901)), + LocalDateFromTime(SetUTCFullYear(0,1901)) ); + +*/ +} +function addNewTestCase( DateString, UTCDate, LocalDate) { + DateCase = eval( DateString ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetUTCFullYear( t, year, mon, date ) { + var T = ( t != t ) ? 0 : t; + var YEAR = Number(year); + var MONTH = ( mon == void 0 ) ? MonthFromTime(T) : Number( mon ); + var DATE = ( date == void 0 ) ? DateFromTime(T) : Number( date ); + var DAY = MakeDay( YEAR, MONTH, DATE ); + + return ( TimeClip(MakeDate(DAY, TimeWithinDay(T))) ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.37-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.37-5.js new file mode 100644 index 00000000000..cee31edcbf8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.37-5.js @@ -0,0 +1,160 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 15.9.5.37-1.js + ECMA Section: 15.9.5.37 Date.prototype.setUTCFullYear(year [, mon [, date ]] ) + Description: + + If mon is not specified, this behaves as if mon were specified with the + value getUTCMonth( ). If date is not specified, this behaves as if date + were specified with the value getUTCDate( ). + + 1. Let t be this time value; but if this time value is NaN, let t be +0. + 2. Call ToNumber(year). + 3. If mon is not specified, compute MonthFromTime(t); otherwise, call + ToNumber(mon). + 4. If date is not specified, compute DateFromTime(t); otherwise, call + ToNumber(date). + 5. Compute MakeDay(Result(2), Result(3), Result(4)). + 6. Compute MakeDate(Result(5), TimeWithinDay(t)). + 7. Set the [[Value]] property of the this value to TimeClip(Result(6)). + 8. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 + + Added some Year 2000 test cases. +*/ + var SECTION = "15.9.5.37-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Date.prototype.setUTCFullYear(year [, mon [, date ]] )"); + + getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + // Dates around 1900 + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1900);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1900)), + LocalDateFromTime(SetUTCFullYear(0,1900)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1899);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1899)), + LocalDateFromTime(SetUTCFullYear(0,1899)) ); + + addNewTestCase( "TDATE = new Date(0); TDATE.setUTCFullYear(1901);TDATE", + UTCDateFromTime(SetUTCFullYear(0,1901)), + LocalDateFromTime(SetUTCFullYear(0,1901)) ); +} +function addNewTestCase( DateString, UTCDate, LocalDate) { + DateCase = eval( DateString ); + + var item = testcases.length; + +// fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; + + testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); + testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); + + testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); + testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); + testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); + testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); + testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); + + DateCase.toString = Object.prototype.toString; + + testcases[item++] = new TestCase( SECTION, + DateString+".toString=Object.prototype.toString;"+DateString+".toString()", + "[object Date]", + DateCase.toString() ); +} + +function MyDate() { + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.ms = 0; +} +function LocalDateFromTime(t) { + t = LocalTime(t); + return ( MyDateFromTime(t) ); +} +function UTCDateFromTime(t) { + return ( MyDateFromTime(t) ); +} +function MyDateFromTime( t ) { + var d = new MyDate(); + d.year = YearFromTime(t); + d.month = MonthFromTime(t); + d.date = DateFromTime(t); + d.hours = HourFromTime(t); + d.minutes = MinFromTime(t); + d.seconds = SecFromTime(t); + d.ms = msFromTime(t); + + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); + d.day = WeekDay( d.value ); + + return (d); +} +function SetUTCFullYear( t, year, mon, date ) { + var T = ( t != t ) ? 0 : t; + var YEAR = Number(year); + var MONTH = ( mon == void 0 ) ? MonthFromTime(T) : Number( mon ); + var DATE = ( date == void 0 ) ? DateFromTime(T) : Number( date ); + var DAY = MakeDay( YEAR, MONTH, DATE ); + + return ( TimeClip(MakeDate(DAY, TimeWithinDay(T))) ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.4-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.4-1.js new file mode 100644 index 00000000000..81c3740f35f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.4-1.js @@ -0,0 +1,96 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.4-1.js + ECMA Section: 15.9.5.4-1 Date.prototype.getTime + Description: + + 1. If the this value is not an object whose [[Class]] property is "Date", + generate a runtime error. + 2. Return this time value. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "15.9.5.4-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getTime"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + var now = (new Date()).valueOf(); + var UTC_29_FEB_2000 = TIME_2000 + 31*msPerDay + 28*msPerDay; + var UTC_1_JAN_2005 = TIME_2000 + TimeInYear(2000) + TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( now ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_29_FEB_2000 ); + addTestCase( UTC_1_JAN_2005 ); + + test(); + +function addTestCase( t ) { + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+").getTime()", + t, + (new Date(t)).getTime() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+1)+").getTime()", + t+1, + (new Date(t+1)).getTime() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-1)+").getTime()", + t-1, + (new Date(t-1)).getTime() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-TZ_ADJUST)+").getTime()", + t-TZ_ADJUST, + (new Date(t-TZ_ADJUST)).getTime() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+TZ_ADJUST)+").getTime()", + t+TZ_ADJUST, + (new Date(t+TZ_ADJUST)).getTime() ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.4-2-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.4-2-n.js new file mode 100644 index 00000000000..c90559a6667 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.4-2-n.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.4-2-n.js + ECMA Section: 15.9.5.4-1 Date.prototype.getTime + Description: + + 1. If the this value is not an object whose [[Class]] property is "Date", + generate a runtime error. + 2. Return this time value. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + + var SECTION = "15.9.5.4-2-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getTime"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var MYDATE = new MyDate( TIME_2000 ); + + testcases[tc++] = new TestCase( SECTION, + "MYDATE.getTime()", + "error", + MYDATE.getTime() ); + +function MyDate( value ) { + this.value = value; + this.getTime = Date.prototype.getTime; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.5.js new file mode 100644 index 00000000000..5660c4ca8e5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.5.js @@ -0,0 +1,123 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.5.js + ECMA Section: 15.9.5.5 + Description: Date.prototype.getYear + + This function is specified here for backwards compatibility only. The + function getFullYear is much to be preferred for nearly all purposes, + because it avoids the "year 2000 problem." + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return YearFromTime(LocalTime(t)) 1900. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.5"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getYear()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + addTestCase( now ); + addTestCase( TIME_YEAR_0 ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getYear()", + NaN, + (new Date(NaN)).getYear() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getYear.length", + 0, + Date.prototype.getYear.length ); + + test(); +function addTestCase( t ) { + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getYear()", + GetYear(YearFromTime(LocalTime(t))), + (new Date(t)).getYear() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+1)+")).getYear()", + GetYear(YearFromTime(LocalTime(t+1))), + (new Date(t+1)).getYear() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-1)+")).getYear()", + GetYear(YearFromTime(LocalTime(t-1))), + (new Date(t-1)).getYear() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-TZ_ADJUST)+")).getYear()", + GetYear(YearFromTime(LocalTime(t-TZ_ADJUST))), + (new Date(t-TZ_ADJUST)).getYear() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+TZ_ADJUST)+")).getYear()", + GetYear(YearFromTime(LocalTime(t+TZ_ADJUST))), + (new Date(t+TZ_ADJUST)).getYear() ); +} +function GetYear( year ) { +/* + if ( year >= 1900 && year < 2000 ) { + return year - 1900; + } else { + return year; + } +*/ + return year - 1900; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.6.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.6.js new file mode 100644 index 00000000000..5a9cf38a48f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.6.js @@ -0,0 +1,114 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.6.js + ECMA Section: 15.9.5.6 + Description: Date.prototype.getFullYear + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return YearFromTime(LocalTime(t)). + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.6"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getFullYear()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( now ); + addTestCase( TIME_YEAR_0 ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getFullYear()", + NaN, + (new Date(NaN)).getFullYear() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getFullYear.length", + 0, + Date.prototype.getFullYear.length ); + + test(); +function addTestCase( t ) { + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getFullYear()", + YearFromTime(LocalTime(t)), + (new Date(t)).getFullYear() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+1)+")).getFullYear()", + YearFromTime(LocalTime(t+1)), + (new Date(t+1)).getFullYear() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-1)+")).getFullYear()", + YearFromTime(LocalTime(t-1)), + (new Date(t-1)).getFullYear() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-TZ_ADJUST)+")).getFullYear()", + YearFromTime(LocalTime(t-TZ_ADJUST)), + (new Date(t-TZ_ADJUST)).getFullYear() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+TZ_ADJUST)+")).getFullYear()", + YearFromTime(LocalTime(t+TZ_ADJUST)), + (new Date(t+TZ_ADJUST)).getFullYear() ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.7.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.7.js new file mode 100644 index 00000000000..8a7f5c02439 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.7.js @@ -0,0 +1,114 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.7.js + ECMA Section: 15.9.5.7 + Description: Date.prototype.getUTCFullYear + + 1.Let t be this time value. + 2.If t is NaN, return NaN. + 3.Return YearFromTime(t). + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.7"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCFullYear()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( now ); + addTestCase( TIME_YEAR_0 ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getUTCFullYear()", + NaN, + (new Date(NaN)).getUTCFullYear() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getUTCFullYear.length", + 0, + Date.prototype.getUTCFullYear.length ); + + test(); +function addTestCase( t ) { + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCFullYear()", + YearFromTime(t), + (new Date(t)).getUTCFullYear() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+1)+")).getUTCFullYear()", + YearFromTime(t+1), + (new Date(t+1)).getUTCFullYear() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-1)+")).getUTCFullYear()", + YearFromTime(t-1), + (new Date(t-1)).getUTCFullYear() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-TZ_ADJUST)+")).getUTCFullYear()", + YearFromTime(t-TZ_ADJUST), + (new Date(t-TZ_ADJUST)).getUTCFullYear() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+TZ_ADJUST)+")).getUTCFullYear()", + YearFromTime(t+TZ_ADJUST), + (new Date(t+TZ_ADJUST)).getUTCFullYear() ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.8.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.8.js new file mode 100644 index 00000000000..038eda92db5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.8.js @@ -0,0 +1,120 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.8.js + ECMA Section: 15.9.5.8 + Description: Date.prototype.getMonth + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return MonthFromTime(LocalTime(t)). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.8"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getMonth()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( now ); + addTestCase( TIME_YEAR_0 ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getMonth()", + NaN, + (new Date(NaN)).getMonth() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getMonth.length", + 0, + Date.prototype.getMonth.length ); + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + + t += TimeInMonth(m); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getMonth()", + MonthFromTime(LocalTime(t)), + (new Date(t)).getMonth() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+1)+")).getMonth()", + MonthFromTime(LocalTime(t+1)), + (new Date(t+1)).getMonth() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-1)+")).getMonth()", + MonthFromTime(LocalTime(t-1)), + (new Date(t-1)).getMonth() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-TZ_ADJUST)+")).getMonth()", + MonthFromTime(LocalTime(t-TZ_ADJUST)), + (new Date(t-TZ_ADJUST)).getMonth() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+TZ_ADJUST)+")).getMonth()", + MonthFromTime(LocalTime(t+TZ_ADJUST)), + (new Date(t+TZ_ADJUST)).getMonth() ); + + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.9.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.9.js new file mode 100644 index 00000000000..9fda4ea3e06 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.9.js @@ -0,0 +1,120 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.9.js + ECMA Section: 15.9.5.9 + Description: Date.prototype.getUTCMonth + + 1. Let t be this time value. + 2. If t is NaN, return NaN. + 3. Return MonthFromTime(t). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5.8"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Date.prototype.getUTCMonth()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var TZ_ADJUST = TZ_DIFF * msPerHour; + + // get the current time + var now = (new Date()).valueOf(); + + // get time for 29 feb 2000 + + var UTC_FEB_29_2000 = TIME_2000 + 31*msPerDay + 28*msPerHour; + + // get time for 1 jan 2005 + + var UTC_JAN_1_2005 = TIME_2000 + TimeInYear(2000)+TimeInYear(2001)+ + TimeInYear(2002)+TimeInYear(2003)+TimeInYear(2004); + + addTestCase( now ); + addTestCase( TIME_YEAR_0 ); + addTestCase( TIME_1970 ); + addTestCase( TIME_1900 ); + addTestCase( TIME_2000 ); + addTestCase( UTC_FEB_29_2000 ); + addTestCase( UTC_JAN_1_2005 ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date(NaN)).getUTCMonth()", + NaN, + (new Date(NaN)).getUTCMonth() ); + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getUTCMonth.length", + 0, + Date.prototype.getUTCMonth.length ); + test(); +function addTestCase( t ) { + for ( var m = 0; m < 12; m++ ) { + + t += TimeInMonth(m); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+t+")).getUTCMonth()", + MonthFromTime(t), + (new Date(t)).getUTCMonth() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+1)+")).getUTCMonth()", + MonthFromTime(t+1), + (new Date(t+1)).getUTCMonth() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-1)+")).getUTCMonth()", + MonthFromTime(t-1), + (new Date(t-1)).getUTCMonth() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t-TZ_ADJUST)+")).getUTCMonth()", + MonthFromTime(t-TZ_ADJUST), + (new Date(t-TZ_ADJUST)).getUTCMonth() ); + + testcases[tc++] = new TestCase( SECTION, + "(new Date("+(t+TZ_ADJUST)+")).getUTCMonth()", + MonthFromTime(t+TZ_ADJUST), + (new Date(t+TZ_ADJUST)).getUTCMonth() ); + + } +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.js new file mode 100644 index 00000000000..d7bd3031f15 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Date/15.9.5.js @@ -0,0 +1,81 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.9.5.js + ECMA Section: 15.9.5 Properties of the Date prototype object + Description: + + The Date prototype object is itself a Date object (its [[Class]] is + "Date") whose value is NaN. + + The value of the internal [[Prototype]] property of the Date prototype + object is the Object prototype object (15.2.3.1). + + In following descriptions of functions that are properties of the Date + prototype object, the phrase "this Date object" refers to the object that + is the this value for the invocation of the function; it is an error if + this does not refer to an object for which the value of the internal + [[Class]] property is "Date". Also, the phrase "this time value" refers + to the number value for the time represented by this Date object, that is, + the value of the internal [[Value]] property of this Date object. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.9.5"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Properties of the Date Prototype Object"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + Date.prototype.getClass = Object.prototype.toString; + + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.getClass", + "[object Date]", + Date.prototype.getClass() ); + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.valueOf()", + NaN, + Date.prototype.valueOf() ); + testcases[tc++] = new TestCase( SECTION, + "Date.prototype.__proto__ == Object.prototype", + true, + Date.prototype.__proto__ == Object.prototype ); + test(); +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.3-1.js new file mode 100644 index 00000000000..f827cc7fcb8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.3-1.js @@ -0,0 +1,107 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.3-1.js + ECMA Section: 10.1.3 + Description: + + For each formal parameter, as defined in the FormalParameterList, create + a property of the variable object whose name is the Identifier and whose + attributes are determined by the type of code. The values of the + parameters are supplied by the caller. If the caller supplies fewer + parameter values than there are formal parameters, the extra formal + parameters have value undefined. If two or more formal parameters share + the same name, hence the same property, the corresponding property is + given the value that was supplied for the last parameter with this name. + If the value of this last parameter was not supplied by the caller, + the value of the corresponding property is undefined. + + + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=104191 + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "10.1.3-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Variable Instantiation: Formal Parameters"; + var BUGNUMBER="104191"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var myfun1 = new Function( "a", "a", "return a" ); + var myfun2 = new Function( "a", "b", "a", "return a" ); + + function myfun3(a, b, a) { + return a; + } + + // myfun1, myfun2, myfun3 tostring + + + testcases[tc++] = new TestCase( + SECTION, + String(myfun2) +"; myfun2(2,4,8)", + 8, + myfun2(2,4,8) ); + + testcases[tc++] = new TestCase( + SECTION, + "myfun2(2,4)", + void 0, + myfun2(2,4)); + + testcases[tc++] = new TestCase( + SECTION, + String(myfun3) +"; myfun3(2,4,8)", + 8, + myfun3(2,4,8) ); + + testcases[tc++] = new TestCase( + SECTION, + "myfun3(2,4)", + void 0, + myfun3(2,4) ); + + + + + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.3.js new file mode 100644 index 00000000000..be75451e7f4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.3.js @@ -0,0 +1,160 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.3.js + ECMA Section: 10.1.3.js Variable Instantiation + Description: + Author: christine@netscape.com + Date: 11 september 1997 +*/ + +var SECTION = "10.1.3"; +var VERSION = "ECMA_1"; +startTest(); +var TITLE = "Variable instantiation"; +var BUGNUMBER = "20256"; + +writeHeaderToLog( SECTION + " "+ TITLE); + +var testcases = getTestCases(); + +test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + // overriding a variable or function name with a function should succeed + array[item++] = + new TestCase(SECTION, + "function t() { return \"first\" };" + + "function t() { return \"second\" };t() ", + "second", + eval("function t() { return \"first\" };" + + "function t() { return \"second\" };t()")); + + array[item++] = + new TestCase(SECTION, + "var t; function t(){}; typeof(t)", + "function", + eval("var t; function t(){}; typeof(t)")); + + + // formal parameter tests + array[item++] = + new TestCase(SECTION, + "function t1(a,b) { return b; }; t1( 4 );", + void 0, + eval("function t1(a,b) { return b; }; t1( 4 );") ); + array[item++] = + new TestCase(SECTION, + "function t1(a,b) { return a; }; t1(4);", + 4, + eval("function t1(a,b) { return a; }; t1(4)")); + array[item++] = + new TestCase(SECTION, + "function t1(a,b) { return a; }; t1();", + void 0, + eval("function t1(a,b) { return a; }; t1()")); + array[item++] = + new TestCase(SECTION, + "function t1(a,b) { return a; }; t1(1,2,4);", + 1, + eval("function t1(a,b) { return a; }; t1(1,2,4)")); +/* + array[item++] = + new TestCase(SECTION, "function t1(a,a) { return a; }; t1( 4 );", + void 0, + eval("function t1(a,a) { return a; }; t1( 4 )")); + array[item++] = + new TestCase(SECTION, + "function t1(a,a) { return a; }; t1( 1,2 );", + 2, + eval("function t1(a,a) { return a; }; t1( 1,2 )")); +*/ + // variable declarations + array[item++] = + new TestCase(SECTION, + "function t1(a,b) { return a; }; t1( false, true );", + false, + eval("function t1(a,b) { return a; }; t1( false, true );")); + array[item++] = + new TestCase(SECTION, + "function t1(a,b) { return b; }; t1( false, true );", + true, + eval("function t1(a,b) { return b; }; t1( false, true );")); + array[item++] = + new TestCase(SECTION, + "function t1(a,b) { return a+b; }; t1( 4, 2 );", + 6, + eval("function t1(a,b) { return a+b; }; t1( 4, 2 );")); + array[item++] = + new TestCase(SECTION, + "function t1(a,b) { return a+b; }; t1( 4 );", + Number.NaN, + eval("function t1(a,b) { return a+b; }; t1( 4 );")); + + // overriding a function name with a variable should fail + array[item++] = + new TestCase(SECTION, + "function t() { return 'function' };" + + "var t = 'variable'; typeof(t)", + "string", + eval("function t() { return 'function' };" + + "var t = 'variable'; typeof(t)")); + + // function as a constructor + array[item++] = + new TestCase(SECTION, + "function t1(a,b) { var a = b; return a; } t1(1,3);", + 3, + eval("function t1(a, b){ var a = b; return a;}; t1(1,3)")); + array[item++] = + new TestCase(SECTION, + "function t2(a,b) { this.a = b; } x = new t2(1,3); x.a", + 3, + eval("function t2(a,b) { this.a = b; };" + + "x = new t2(1,3); x.a")); + array[item++] = + new TestCase(SECTION, + "function t2(a,b) { this.a = a; } x = new t2(1,3); x.a", + 1, + eval("function t2(a,b) { this.a = a; };" + + "x = new t2(1,3); x.a")); + array[item++] = + new TestCase(SECTION, + "function t2(a,b) { this.a = b; this.b = a; } " + + "x = new t2(1,3);x.a;", + 3, + eval("function t2(a,b) { this.a = b; this.b = a; };" + + "x = new t2(1,3);x.a;")); + array[item++] = + new TestCase(SECTION, + "function t2(a,b) { this.a = b; this.b = a; }" + + "x = new t2(1,3);x.b;", + 1, + eval("function t2(a,b) { this.a = b; this.b = a; };" + + "x = new t2(1,3);x.b;") ); + + return (array); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-1.js new file mode 100644 index 00000000000..639096085fc --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-1.js @@ -0,0 +1,100 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.4-1.js + ECMA Section: 10.1.4 Scope Chain and Identifier Resolution + Description: + Every execution context has associated with it a scope chain. This is + logically a list of objects that are searched when binding an Identifier. + When control enters an execution context, the scope chain is created and + is populated with an initial set of objects, depending on the type of + code. When control leaves the execution context, the scope chain is + destroyed. + + During execution, the scope chain of the execution context is affected + only by WithStatement. When execution enters a with block, the object + specified in the with statement is added to the front of the scope chain. + When execution leaves a with block, whether normally or via a break or + continue statement, the object is removed from the scope chain. The object + being removed will always be the first object in the scope chain. + + During execution, the syntactic production PrimaryExpression : Identifier + is evaluated using the following algorithm: + + 1. Get the next object in the scope chain. If there isn't one, go to step 5. + 2. Call the [[HasProperty]] method of Result(l), passing the Identifier as + the property. + 3. If Result(2) is true, return a value of type Reference whose base object + is Result(l) and whose property name is the Identifier. + 4. Go to step 1. + 5. Return a value of type Reference whose base object is null and whose + property name is the Identifier. + The result of binding an identifier is always a value of type Reference with + its member name component equal to the identifier string. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "10.1.4-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Scope Chain and Identifier Resolution"); + + var testcases = getTestCases(); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + + var MYOBJECT = new MyObject(); + var INPUT = 2; + testcases[tc].description += "( " + INPUT +" )" ; + + with ( MYOBJECT ) { + testcases[tc].actual = eval( INPUT ); + testcases[tc].expect = Math.pow(INPUT,2); + } + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( "SECTION", "with MyObject, eval should return square of " ); + + return ( array ); +} + +function MyObject() { + this.eval = new Function( "x", "return(Math.pow(Number(x),2))" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-10.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-10.js new file mode 100644 index 00000000000..6966acf771c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-10.js @@ -0,0 +1,94 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.4-10.js + ECMA Section: 10.1.4 Scope Chain and Identifier Resolution + Description: + Every execution context has associated with it a scope chain. This is + logically a list of objects that are searched when binding an Identifier. + When control enters an execution context, the scope chain is created and + is populated with an initial set of objects, depending on the type of + code. When control leaves the execution context, the scope chain is + destroyed. + + During execution, the scope chain of the execution context is affected + only by WithStatement. When execution enters a with block, the object + specified in the with statement is added to the front of the scope chain. + When execution leaves a with block, whether normally or via a break or + continue statement, the object is removed from the scope chain. The object + being removed will always be the first object in the scope chain. + + During execution, the syntactic production PrimaryExpression : Identifier + is evaluated using the following algorithm: + + 1. Get the next object in the scope chain. If there isn't one, go to step 5. + 2. Call the [[HasProperty]] method of Result(l), passing the Identifier as + the property. + 3. If Result(2) is true, return a value of type Reference whose base object + is Result(l) and whose property name is the Identifier. + 4. Go to step 1. + 5. Return a value of type Reference whose base object is null and whose + property name is the Identifier. + The result of binding an identifier is always a value of type Reference with + its member name component equal to the identifier string. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "10.1.4-10"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Scope Chain and Identifier Resolution"); + + var testcases = getTestCases(); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + var VALUE = 12345; + var MYOBJECT = new Number( VALUE ); + + with ( MYOBJECT ) { + testcases[tc].actual = toString(); + testcases[tc].expect = String(VALUE); + } + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( "SECTION", "MYOBJECT.toString()" ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-2.js new file mode 100644 index 00000000000..b42697a7421 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-2.js @@ -0,0 +1,102 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.4-1.js + ECMA Section: 10.1.4 Scope Chain and Identifier Resolution + Description: + Every execution context has associated with it a scope chain. This is + logically a list of objects that are searched when binding an Identifier. + When control enters an execution context, the scope chain is created and + is populated with an initial set of objects, depending on the type of + code. When control leaves the execution context, the scope chain is + destroyed. + + During execution, the scope chain of the execution context is affected + only by WithStatement. When execution enters a with block, the object + specified in the with statement is added to the front of the scope chain. + When execution leaves a with block, whether normally or via a break or + continue statement, the object is removed from the scope chain. The object + being removed will always be the first object in the scope chain. + + During execution, the syntactic production PrimaryExpression : Identifier + is evaluated using the following algorithm: + + 1. Get the next object in the scope chain. If there isn't one, go to step 5. + 2. Call the [[HasProperty]] method of Result(l), passing the Identifier as + the property. + 3. If Result(2) is true, return a value of type Reference whose base object + is Result(l) and whose property name is the Identifier. + 4. Go to step 1. + 5. Return a value of type Reference whose base object is null and whose + property name is the Identifier. + The result of binding an identifier is always a value of type Reference with + its member name component equal to the identifier string. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "10.1.4-2"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Scope Chain and Identifier Resolution"); + + var testcases = getTestCases(); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + + var MYOBJECT = new MyObject(); + var INPUT = 2; + testcases[tc].description += "( "+INPUT +" )" ; + + with ( this ) { + with ( MYOBJECT ) { + testcases[tc].actual = eval( INPUT ); + testcases[tc].expect = Math.pow(INPUT,2); + } + } + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( "SECTION", "with MyObject, eval should return square of " ); + + return ( array ); +} + +function MyObject() { + this.eval = new Function( "x", "return(Math.pow(Number(x),2))" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-3.js new file mode 100644 index 00000000000..54980af4755 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-3.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.4-1.js + ECMA Section: 10.1.4 Scope Chain and Identifier Resolution + Description: + Every execution context has associated with it a scope chain. This is + logically a list of objects that are searched when binding an Identifier. + When control enters an execution context, the scope chain is created and + is populated with an initial set of objects, depending on the type of + code. When control leaves the execution context, the scope chain is + destroyed. + + During execution, the scope chain of the execution context is affected + only by WithStatement. When execution enters a with block, the object + specified in the with statement is added to the front of the scope chain. + When execution leaves a with block, whether normally or via a break or + continue statement, the object is removed from the scope chain. The object + being removed will always be the first object in the scope chain. + + During execution, the syntactic production PrimaryExpression : Identifier + is evaluated using the following algorithm: + + 1. Get the next object in the scope chain. If there isn't one, go to step 5. + 2. Call the [[HasProperty]] method of Result(l), passing the Identifier as + the property. + 3. If Result(2) is true, return a value of type Reference whose base object + is Result(l) and whose property name is the Identifier. + 4. Go to step 1. + 5. Return a value of type Reference whose base object is null and whose + property name is the Identifier. + The result of binding an identifier is always a value of type Reference with + its member name component equal to the identifier string. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "10.1.4-3"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Scope Chain and Identifier Resolution"); + + var testcases = getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + + var MYOBJECT = new MyObject(); + var INPUT = 2; + testcases[tc].description += ( INPUT +"" ); + + with ( MYOBJECT ) { + eval( INPUT ); + } + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( "SECTION", "with MyObject, eval should be [object Global].eval " ); + + return ( array ); +} + +function MyObject() { + this.eval = new Function( "x", "return(Math.pow(Number(x),2))" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-4.js new file mode 100644 index 00000000000..88f824108c5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-4.js @@ -0,0 +1,101 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.4-1.js + ECMA Section: 10.1.4 Scope Chain and Identifier Resolution + Description: + Every execution context has associated with it a scope chain. This is + logically a list of objects that are searched when binding an Identifier. + When control enters an execution context, the scope chain is created and + is populated with an initial set of objects, depending on the type of + code. When control leaves the execution context, the scope chain is + destroyed. + + During execution, the scope chain of the execution context is affected + only by WithStatement. When execution enters a with block, the object + specified in the with statement is added to the front of the scope chain. + When execution leaves a with block, whether normally or via a break or + continue statement, the object is removed from the scope chain. The object + being removed will always be the first object in the scope chain. + + During execution, the syntactic production PrimaryExpression : Identifier + is evaluated using the following algorithm: + + 1. Get the next object in the scope chain. If there isn't one, go to step 5. + 2. Call the [[HasProperty]] method of Result(l), passing the Identifier as + the property. + 3. If Result(2) is true, return a value of type Reference whose base object + is Result(l) and whose property name is the Identifier. + 4. Go to step 1. + 5. Return a value of type Reference whose base object is null and whose + property name is the Identifier. + The result of binding an identifier is always a value of type Reference with + its member name component equal to the identifier string. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "10.1.4-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Scope Chain and Identifier Resolution"); + + var testcases = getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + + var MYOBJECT = new MyObject(); + var INPUT = 2; + testcases[tc].description += ( INPUT +"" ); + + with ( MYOBJECT ) { + eval( INPUT ); + } + + testcases[tc].actual = eval( INPUT ); + testcases[tc].expect = INPUT; + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( "SECTION", "with MyObject, eval should be [object Global].eval " ); + + return ( array ); +} + +function MyObject() { + this.eval = new Function( "x", "return(Math.pow(Number(x),2))" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-5.js new file mode 100644 index 00000000000..f03d120ac31 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-5.js @@ -0,0 +1,101 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.4-1.js + ECMA Section: 10.1.4 Scope Chain and Identifier Resolution + Description: + Every execution context has associated with it a scope chain. This is + logically a list of objects that are searched when binding an Identifier. + When control enters an execution context, the scope chain is created and + is populated with an initial set of objects, depending on the type of + code. When control leaves the execution context, the scope chain is + destroyed. + + During execution, the scope chain of the execution context is affected + only by WithStatement. When execution enters a with block, the object + specified in the with statement is added to the front of the scope chain. + When execution leaves a with block, whether normally or via a break or + continue statement, the object is removed from the scope chain. The object + being removed will always be the first object in the scope chain. + + During execution, the syntactic production PrimaryExpression : Identifier + is evaluated using the following algorithm: + + 1. Get the next object in the scope chain. If there isn't one, go to step 5. + 2. Call the [[HasProperty]] method of Result(l), passing the Identifier as + the property. + 3. If Result(2) is true, return a value of type Reference whose base object + is Result(l) and whose property name is the Identifier. + 4. Go to step 1. + 5. Return a value of type Reference whose base object is null and whose + property name is the Identifier. + The result of binding an identifier is always a value of type Reference with + its member name component equal to the identifier string. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "10.1.4-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Scope Chain and Identifier Resolution"); + + var testcases = getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + + var MYOBJECT = new MyObject(); + var INPUT = 2; + testcases[tc].description += ( INPUT +"" ); + + with ( MYOBJECT ) { + eval = null; + } + + testcases[tc].actual = eval( INPUT ); + testcases[tc].expect = INPUT; + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( "SECTION", "with MyObject, eval should be [object Global].eval " ); + + return ( array ); +} + +function MyObject() { + this.eval = new Function( "x", "return(Math.pow(Number(x),2))" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-6.js new file mode 100644 index 00000000000..def668aae0d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-6.js @@ -0,0 +1,83 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.4-1.js + ECMA Section: 10.1.4 Scope Chain and Identifier Resolution + Description: + Every execution context has associated with it a scope chain. This is + logically a list of objects that are searched when binding an Identifier. + When control enters an execution context, the scope chain is created and + is populated with an initial set of objects, depending on the type of + code. When control leaves the execution context, the scope chain is + destroyed. + + During execution, the scope chain of the execution context is affected + only by WithStatement. When execution enters a with block, the object + specified in the with statement is added to the front of the scope chain. + When execution leaves a with block, whether normally or via a break or + continue statement, the object is removed from the scope chain. The object + being removed will always be the first object in the scope chain. + + During execution, the syntactic production PrimaryExpression : Identifier + is evaluated using the following algorithm: + + 1. Get the next object in the scope chain. If there isn't one, go to step 5. + 2. Call the [[HasProperty]] method of Result(l), passing the Identifier as + the property. + 3. If Result(2) is true, return a value of type Reference whose base object + is Result(l) and whose property name is the Identifier. + 4. Go to step 1. + 5. Return a value of type Reference whose base object is null and whose + property name is the Identifier. + The result of binding an identifier is always a value of type Reference with + its member name component equal to the identifier string. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "10.1.4-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Scope Chain and Identifier Resolution"); + + getTestCases(); + test(); + +function getTestCases() { + testcases[0] = new TestCase( "SECTION", + "with MyObject, eval should be [object Global].eval " ); + + var MYOBJECT = new MyObject(); + var INPUT = 2; + testcases[0].description += ( INPUT +"" ); + + with ( MYOBJECT ) { + ; + } + testcases[0].actual = eval( INPUT ); + testcases[0].expect = INPUT; + +} + +function MyObject() { + this.eval = new Function( "x", "return(Math.pow(Number(x),2))" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-7.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-7.js new file mode 100644 index 00000000000..7f900b549e1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-7.js @@ -0,0 +1,100 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.4-1.js + ECMA Section: 10.1.4 Scope Chain and Identifier Resolution + Description: + Every execution context has associated with it a scope chain. This is + logically a list of objects that are searched when binding an Identifier. + When control enters an execution context, the scope chain is created and + is populated with an initial set of objects, depending on the type of + code. When control leaves the execution context, the scope chain is + destroyed. + + During execution, the scope chain of the execution context is affected + only by WithStatement. When execution enters a with block, the object + specified in the with statement is added to the front of the scope chain. + When execution leaves a with block, whether normally or via a break or + continue statement, the object is removed from the scope chain. The object + being removed will always be the first object in the scope chain. + + During execution, the syntactic production PrimaryExpression : Identifier + is evaluated using the following algorithm: + + 1. Get the next object in the scope chain. If there isn't one, go to step 5. + 2. Call the [[HasProperty]] method of Result(l), passing the Identifier as + the property. + 3. If Result(2) is true, return a value of type Reference whose base object + is Result(l) and whose property name is the Identifier. + 4. Go to step 1. + 5. Return a value of type Reference whose base object is null and whose + property name is the Identifier. + The result of binding an identifier is always a value of type Reference with + its member name component equal to the identifier string. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "10.1.4-7"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Scope Chain and Identifier Resolution"); + + var testcases = getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + + var MYOBJECT = new MyObject(); + var INPUT = 2; + testcases[tc].description += ( INPUT +"" ); + + with ( MYOBJECT ) { + delete( eval ); + testcases[tc].actual = eval( INPUT ); + testcases[tc].expect = INPUT; + } + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( "SECTION", "with MyObject, eval should be [object Global].eval " ); + + return ( array ); +} + +function MyObject() { + this.eval = new Function( "x", "return(Math.pow(Number(x),2))" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-8.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-8.js new file mode 100644 index 00000000000..288f0ed854e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-8.js @@ -0,0 +1,101 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.4-1.js + ECMA Section: 10.1.4 Scope Chain and Identifier Resolution + Description: + Every execution context has associated with it a scope chain. This is + logically a list of objects that are searched when binding an Identifier. + When control enters an execution context, the scope chain is created and + is populated with an initial set of objects, depending on the type of + code. When control leaves the execution context, the scope chain is + destroyed. + + During execution, the scope chain of the execution context is affected + only by WithStatement. When execution enters a with block, the object + specified in the with statement is added to the front of the scope chain. + When execution leaves a with block, whether normally or via a break or + continue statement, the object is removed from the scope chain. The object + being removed will always be the first object in the scope chain. + + During execution, the syntactic production PrimaryExpression : Identifier + is evaluated using the following algorithm: + + 1. Get the next object in the scope chain. If there isn't one, go to step 5. + 2. Call the [[HasProperty]] method of Result(l), passing the Identifier as + the property. + 3. If Result(2) is true, return a value of type Reference whose base object + is Result(l) and whose property name is the Identifier. + 4. Go to step 1. + 5. Return a value of type Reference whose base object is null and whose + property name is the Identifier. + The result of binding an identifier is always a value of type Reference with + its member name component equal to the identifier string. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "10.1.4-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Scope Chain and Identifier Resolution"); + + var testcases = getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + + var MYOBJECT = new MyObject(); + var INPUT = 2; + testcases[tc].description += ( INPUT +"" ); + + with ( MYOBJECT ) { + eval = new Function ( "x", "return(Math.pow(Number(x),3))" ); + + testcases[tc].actual = eval( INPUT ); + testcases[tc].expect = Math.pow(INPUT,3); + } + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( "SECTION", "with MyObject, eval should cube INPUT: " ); + + return ( array ); +} + +function MyObject() { + this.eval = new Function( "x", "return(Math.pow(Number(x),2))" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-9.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-9.js new file mode 100644 index 00000000000..ec72ecd7422 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.4-9.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.4-9.js + ECMA Section: 10.1.4 Scope Chain and Identifier Resolution + Description: + Every execution context has associated with it a scope chain. This is + logically a list of objects that are searched when binding an Identifier. + When control enters an execution context, the scope chain is created and + is populated with an initial set of objects, depending on the type of + code. When control leaves the execution context, the scope chain is + destroyed. + + During execution, the scope chain of the execution context is affected + only by WithStatement. When execution enters a with block, the object + specified in the with statement is added to the front of the scope chain. + When execution leaves a with block, whether normally or via a break or + continue statement, the object is removed from the scope chain. The object + being removed will always be the first object in the scope chain. + + During execution, the syntactic production PrimaryExpression : Identifier + is evaluated using the following algorithm: + + 1. Get the next object in the scope chain. If there isn't one, go to step 5. + 2. Call the [[HasProperty]] method of Result(l), passing the Identifier as + the property. + 3. If Result(2) is true, return a value of type Reference whose base object + is Result(l) and whose property name is the Identifier. + 4. Go to step 1. + 5. Return a value of type Reference whose base object is null and whose + property name is the Identifier. + The result of binding an identifier is always a value of type Reference with + its member name component equal to the identifier string. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "10.1.4-9"; + var VERSION = "ECMA_2"; + startTest(); + + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Scope Chain and Identifier Resolution"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + + var MYOBJECT = new MyObject(); + var RESULT = "hello"; + + with ( MYOBJECT ) { + NEW_PROPERTY = RESULT; + } + testcases[tc].actual = NEW_PROPERTY; + testcases[tc].expect = RESULT; + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "NEW_PROPERTY = " ); + + return ( array ); +} +function MyObject( n ) { + this.__proto__ = Number.prototype; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.5-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.5-1.js new file mode 100644 index 00000000000..0cfb7c3a5e7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.5-1.js @@ -0,0 +1,118 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.5-1.js + ECMA Section: 10.1.5 Global Object + Description: + There is a unique global object which is created before control enters + any execution context. Initially the global object has the following + properties: + + Built-in objects such as Math, String, Date, parseInt, etc. These have + attributes { DontEnum }. + + Additional host defined properties. This may include a property whose + value is the global object itself, for example window in HTML. + + As control enters execution contexts, and as ECMAScript code is executed, + additional properties may be added to the global object and the initial + properties may be changed. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "10.5.1-1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Global Ojbect"); + + var testcases = getTestCases(); + + if ( Object == null ) { + testcases[0].reason += " Object == null" ; + } + if ( Function == null ) { + testcases[0].reason += " Function == null"; + } + if ( String == null ) { + testcases[0].reason += " String == null"; + } + if ( Array == null ) { + testcases[0].reason += " Array == null"; + } + if ( Number == null ) { + testcases[0].reason += " Function == null"; + } + if ( Math == null ) { + testcases[0].reason += " Math == null"; + } + if ( Boolean == null ) { + testcases[0].reason += " Boolean == null"; + } + if ( Date == null ) { + testcases[0].reason += " Date == null"; + } +/* + if ( NaN == null ) { + testcases[0].reason += " NaN == null"; + } + if ( Infinity == null ) { + testcases[0].reason += " Infinity == null"; + } +*/ + if ( eval == null ) { + testcases[0].reason += " eval == null"; + } + if ( parseInt == null ) { + testcases[0].reason += " parseInt == null"; + } + + if ( testcases[0].reason != "" ) { + testcases[0].actual = "fail"; + } else { + testcases[0].actual = "pass"; + } + testcases[0].expect = "pass"; + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( "SECTION", "Global Code check" ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.5-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.5-2.js new file mode 100644 index 00000000000..a09c1ae278e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.5-2.js @@ -0,0 +1,101 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 10.1.5-2.js + ECMA Section: 10.1.5 Global Object + Description: + There is a unique global object which is created before control enters + any execution context. Initially the global object has the following + properties: + + Built-in objects such as Math, String, Date, parseInt, etc. These have + attributes { DontEnum }. + + Additional host defined properties. This may include a property whose + value is the global object itself, for example window in HTML. + + As control enters execution contexts, and as ECMAScript code is executed, + additional properties may be added to the global object and the initial + properties may be changed. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "10.5.1-2"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Global Ojbect"); + + var testcases = getTestCases(); + + var EVAL_STRING = 'if ( Object == null ) { testcases[0].reason += " Object == null" ; }' + + 'if ( Function == null ) { testcases[0].reason += " Function == null"; }' + + 'if ( String == null ) { testcases[0].reason += " String == null"; }' + + 'if ( Array == null ) { testcases[0].reason += " Array == null"; }' + + 'if ( Number == null ) { testcases[0].reason += " Function == null";}' + + 'if ( Math == null ) { testcases[0].reason += " Math == null"; }' + + 'if ( Boolean == null ) { testcases[0].reason += " Boolean == null"; }' + + 'if ( Date == null ) { testcases[0].reason += " Date == null"; }' + + 'if ( eval == null ) { testcases[0].reason += " eval == null"; }' + + 'if ( parseInt == null ) { testcases[0].reason += " parseInt == null"; }' ; + + eval( EVAL_STRING ); + +/* + if ( NaN == null ) { + testcases[0].reason += " NaN == null"; + } + if ( Infinity == null ) { + testcases[0].reason += " Infinity == null"; + } +*/ + + if ( testcases[0].reason != "" ) { + testcases[0].actual = "fail"; + } else { + testcases[0].actual = "pass"; + } + testcases[0].expect = "pass"; + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual + " "+ + testcases[tc].reason ); + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( "SECTION", "Eval Code check" ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.5-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.5-3.js new file mode 100644 index 00000000000..7b0f85fbafb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.5-3.js @@ -0,0 +1,119 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.5-3.js + ECMA Section: 10.1.5 Global Object + Description: + There is a unique global object which is created before control enters + any execution context. Initially the global object has the following + properties: + + Built-in objects such as Math, String, Date, parseInt, etc. These have + attributes { DontEnum }. + + Additional host defined properties. This may include a property whose + value is the global object itself, for example window in HTML. + + As control enters execution contexts, and as ECMAScript code is executed, + additional properties may be added to the global object and the initial + properties may be changed. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "10.5.1-3"; + var VERSION = "ECMA_1"; + startTest(); + writeHeaderToLog( SECTION + " Global Ojbect"); + + var testcases = getTestCases(); + + test(); + +function test() { + if ( Object == null ) { + testcases[0].reason += " Object == null" ; + } + if ( Function == null ) { + testcases[0].reason += " Function == null"; + } + if ( String == null ) { + testcases[0].reason += " String == null"; + } + if ( Array == null ) { + testcases[0].reason += " Array == null"; + } + if ( Number == null ) { + testcases[0].reason += " Function == null"; + } + if ( Math == null ) { + testcases[0].reason += " Math == null"; + } + if ( Boolean == null ) { + testcases[0].reason += " Boolean == null"; + } + if ( Date == null ) { + testcases[0].reason += " Date == null"; + } +/* + if ( NaN == null ) { + testcases[0].reason += " NaN == null"; + } + if ( Infinity == null ) { + testcases[0].reason += " Infinity == null"; + } +*/ + if ( eval == null ) { + testcases[0].reason += " eval == null"; + } + if ( parseInt == null ) { + testcases[0].reason += " parseInt == null"; + } + + if ( testcases[0].reason != "" ) { + testcases[0].actual = "fail"; + } else { + testcases[0].actual = "pass"; + } + testcases[0].expect = "pass"; + + for ( tc=0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( "SECTION", "Function Code check" ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.5-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.5-4.js new file mode 100644 index 00000000000..295434668be --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.5-4.js @@ -0,0 +1,94 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.5-4.js + ECMA Section: 10.1.5 Global Object + Description: + There is a unique global object which is created before control enters + any execution context. Initially the global object has the following + properties: + + Built-in objects such as Math, String, Date, parseInt, etc. These have + attributes { DontEnum }. + + Additional host defined properties. This may include a property whose + value is the global object itself, for example window in HTML. + + As control enters execution contexts, and as ECMAScript code is executed, + additional properties may be added to the global object and the initial + properties may be changed. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "10.5.1-4"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Global Ojbect"); + + var testcases = getTestCases(); + + var EVAL_STRING = 'if ( Object == null ) { testcases[0].reason += " Object == null" ; }' + + 'if ( Function == null ) { testcases[0].reason += " Function == null"; }' + + 'if ( String == null ) { testcases[0].reason += " String == null"; }' + + 'if ( Array == null ) { testcases[0].reason += " Array == null"; }' + + 'if ( Number == null ) { testcases[0].reason += " Function == null";}' + + 'if ( Math == null ) { testcases[0].reason += " Math == null"; }' + + 'if ( Boolean == null ) { testcases[0].reason += " Boolean == null"; }' + + 'if ( Date == null ) { testcases[0].reason += " Date == null"; }' + + 'if ( eval == null ) { testcases[0].reason += " eval == null"; }' + + 'if ( parseInt == null ) { testcases[0].reason += " parseInt == null"; }' ; + + var NEW_FUNCTION = new Function( EVAL_STRING ); + + if ( testcases[0].reason != "" ) { + testcases[0].actual = "fail"; + } else { + testcases[0].actual = "pass"; + } + testcases[0].expect = "pass"; + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual + " "+ + testcases[tc].reason ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( "SECTION", "Anonymous Code check" ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.6.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.6.js new file mode 100644 index 00000000000..8224cb2380a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.6.js @@ -0,0 +1,124 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.6 + ECMA Section: Activation Object + Description: + + If the function object being invoked has an arguments property, let x be + the value of that property; the activation object is also given an internal + property [[OldArguments]] whose initial value is x; otherwise, an arguments + property is created for the function object but the activation object is + not given an [[OldArguments]] property. Next, arguments object described + below (the same one stored in the arguments property of the activation + object) is used as the new value of the arguments property of the function + object. This new value is installed even if the arguments property already + exists and has the ReadOnly attribute (as it will for native Function + objects). (These actions are taken to provide compatibility with a form of + program syntax that is now discouraged: to access the arguments object for + function f within the body of f by using the expression f.arguments. + The recommended way to access the arguments object for function f within + the body of f is simply to refer to the variable arguments.) + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "10.1.6"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Activation Object"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var arguments = "FAILED!"; + + var ARG_STRING = "value of the argument property"; + + testcases[tc++] = new TestCase( SECTION, + "(new TestObject(0,1,2,3,4,5)).length", + 6, + (new TestObject(0,1,2,3,4,5)).length ); + + for ( i = 0; i < 6; i++ ) { + + testcases[tc++] = new TestCase( SECTION, + "(new TestObject(0,1,2,3,4,5))["+i+"]", + i, + (new TestObject(0,1,2,3,4,5))[i]); + } + + + // The current object already has an arguments property. + + testcases[tc++] = new TestCase( SECTION, + "(new AnotherTestObject(1,2,3)).arguments", + ARG_STRING, + (new AnotherTestObject(1,2,3)).arguments ); + + // The function invoked with [[Call]] + + testcases[tc++] = new TestCase( SECTION, + "TestFunction(1,2,3)", + ARG_STRING, + TestFunction() + '' ); + + + test(); + + + +function Prototype() { + this.arguments = ARG_STRING; +} +function TestObject() { + this.__proto__ = new Prototype(); + return arguments; +} +function AnotherTestObject() { + this.__proto__ = new Prototype(); + return this; +} +function TestFunction() { + arguments = ARG_STRING; + return arguments; +} +function AnotherTestFunction() { + this.__proto__ = new Prototype(); + return this; +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.8-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.8-1.js new file mode 100644 index 00000000000..28b403f79e5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.8-1.js @@ -0,0 +1,132 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.8 + ECMA Section: Arguments Object + Description: + + When control enters an execution context for declared function code, + anonymous code, or implementation-supplied code, an arguments object is + created and initialized as follows: + + The [[Prototype]] of the arguments object is to the original Object + prototype object, the one that is the initial value of Object.prototype + (section 15.2.3.1). + + A property is created with name callee and property attributes {DontEnum}. + The initial value of this property is the function object being executed. + This allows anonymous functions to be recursive. + + A property is created with name length and property attributes {DontEnum}. + The initial value of this property is the number of actual parameter values + supplied by the caller. + + For each non-negative integer, iarg, less than the value of the length + property, a property is created with name ToString(iarg) and property + attributes { DontEnum }. The initial value of this property is the value + of the corresponding actual parameter supplied by the caller. The first + actual parameter value corresponds to iarg = 0, the second to iarg = 1 and + so on. In the case when iarg is less than the number of formal parameters + for the function object, this property shares its value with the + corresponding property of the activation object. This means that changing + this property changes the corresponding property of the activation object + and vice versa. The value sharing mechanism depends on the implementation. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "10.1.8"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Arguments Object"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var ARG_STRING = "value of the argument property"; + + testcases[tc++] = new TestCase( SECTION, + "GetCallee()", + GetCallee, + GetCallee() ); + + var LIMIT = 100; + + for ( var i = 0, args = "" ; i < LIMIT; i++ ) { + args += String(i) + ( i+1 < LIMIT ? "," : "" ); + + } + + var LENGTH = eval( "GetLength("+ args +")" ); + + testcases[tc++] = new TestCase( SECTION, + "GetLength("+args+")", + 100, + LENGTH ); + + var ARGUMENTS = eval( "GetArguments( " +args+")" ); + + for ( var i = 0; i < 100; i++ ) { + testcases[tc++] = new TestCase( SECTION, + "GetArguments("+args+")["+i+"]", + i, + ARGUMENTS[i] ); + } + + test(); + +function TestFunction() { + var arg_proto = arguments.__proto__; +} +function GetCallee() { + var c = arguments.callee; + return c; +} +function GetArguments() { + var a = arguments; + return a; +} +function GetLength() { + var l = arguments.length; + return l; +} + +function AnotherTestFunction() { + this.__proto__ = new Prototype(); + return this; +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.8-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.8-2.js new file mode 100644 index 00000000000..b4ff57889cf --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.1.8-2.js @@ -0,0 +1,117 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.1.8-2 + ECMA Section: Arguments Object + Description: + + When control enters an execution context for declared function code, + anonymous code, or implementation-supplied code, an arguments object is + created and initialized as follows: + + The [[Prototype]] of the arguments object is to the original Object + prototype object, the one that is the initial value of Object.prototype + (section 15.2.3.1). + + A property is created with name callee and property attributes {DontEnum}. + The initial value of this property is the function object being executed. + This allows anonymous functions to be recursive. + + A property is created with name length and property attributes {DontEnum}. + The initial value of this property is the number of actual parameter values + supplied by the caller. + + For each non-negative integer, iarg, less than the value of the length + property, a property is created with name ToString(iarg) and property + attributes { DontEnum }. The initial value of this property is the value + of the corresponding actual parameter supplied by the caller. The first + actual parameter value corresponds to iarg = 0, the second to iarg = 1 and + so on. In the case when iarg is less than the number of formal parameters + for the function object, this property shares its value with the + corresponding property of the activation object. This means that changing + this property changes the corresponding property of the activation object + and vice versa. The value sharing mechanism depends on the implementation. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "10.1.8-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Arguments Object"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + +// Tests for anonymous functions + + var GetCallee = new Function( "var c = arguments.callee; return c" ); + var GetArguments = new Function( "var a = arguments; return a" ); + var GetLength = new Function( "var l = arguments.length; return l" ); + + var ARG_STRING = "value of the argument property"; + + testcases[tc++] = new TestCase( SECTION, + "GetCallee()", + GetCallee, + GetCallee() ); + + var LIMIT = 100; + + for ( var i = 0, args = "" ; i < LIMIT; i++ ) { + args += String(i) + ( i+1 < LIMIT ? "," : "" ); + + } + + var LENGTH = eval( "GetLength("+ args +")" ); + + testcases[tc++] = new TestCase( SECTION, + "GetLength("+args+")", + 100, + LENGTH ); + + var ARGUMENTS = eval( "GetArguments( " +args+")" ); + + for ( var i = 0; i < 100; i++ ) { + testcases[tc++] = new TestCase( SECTION, + "GetArguments("+args+")["+i+"]", + i, + ARGUMENTS[i] ); + } + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.2.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.2.1.js new file mode 100644 index 00000000000..5e5737bd528 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.2.1.js @@ -0,0 +1,82 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.2.1.js + ECMA Section: 10.2.1 Global Code + Description: + + The scope chain is created and initialized to contain the global object and + no others. + + Variable instantiation is performed using the global object as the variable + object and using empty property attributes. + + The this value is the global object. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "10.2.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Global Code"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var THIS = this; + + testcases[tc++] = new TestCase( SECTION, + "this +''", + GLOBAL, + THIS + "" ); + + var GLOBAL_PROPERTIES = new Array(); + var i = 0; + + for ( p in this ) { + GLOBAL_PROPERTIES[i++] = p; + } + + for ( i = 0; i < GLOBAL_PROPERTIES.length; i++ ) { + testcases[tc++] = new TestCase( SECTION, + GLOBAL_PROPERTIES[i] +" == void 0", + false, + eval("GLOBAL_PROPERTIES["+i+"] == void 0")); + } + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.2.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.2.2-1.js new file mode 100644 index 00000000000..db03ad61aba --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.2.2-1.js @@ -0,0 +1,119 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.2.2-1.js + ECMA Section: 10.2.2 Eval Code + Description: + + When control enters an execution context for eval code, the previous + active execution context, referred to as the calling context, is used to + determine the scope chain, the variable object, and the this value. If + there is no calling context, then initializing the scope chain, variable + instantiation, and determination of the this value are performed just as + for global code. + + The scope chain is initialized to contain the same objects, in the same + order, as the calling context's scope chain. This includes objects added + to the calling context's scope chain by WithStatement. + + Variable instantiation is performed using the calling context's variable + object and using empty property attributes. + + The this value is the same as the this value of the calling context. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "10.2.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Eval Code"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var THIS = eval("this"); + + testcases[tc++] = new TestCase( SECTION, + "this +''", + GLOBAL, + THIS + "" ); + + var GLOBAL_PROPERTIES = new Array(); + var i = 0; + + for ( p in THIS ) { + GLOBAL_PROPERTIES[i++] = p; + } + + for ( i = 0; i < GLOBAL_PROPERTIES.length; i++ ) { + testcases[tc++] = new TestCase( SECTION, + GLOBAL_PROPERTIES[i] +" == THIS["+GLOBAL_PROPERTIES[i]+"]", + true, + eval(GLOBAL_PROPERTIES[i]) == eval( "THIS[GLOBAL_PROPERTIES[i]]") ); + } + + // this in eval statements is the same as this value of the calling context + + var RESULT = THIS == this; + + testcases[tc++] = new TestCase( SECTION, + "eval( 'this == THIS' )", + true, + RESULT ); + + var RESULT = THIS +''; + + testcases[tc++] = new TestCase( SECTION, + "eval( 'this + \"\"' )", + GLOBAL, + RESULT ); + + + testcases[tc++] = new TestCase( SECTION, + "eval( 'this == THIS' )", + true, + eval( "this == THIS" ) ); + + testcases[tc++] = new TestCase( SECTION, + "eval( 'this + \"\"' )", + GLOBAL, + eval( "this +''") ); + + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.2.2-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.2.2-2.js new file mode 100644 index 00000000000..c73feff2645 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.2.2-2.js @@ -0,0 +1,105 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.2.2-2.js + ECMA Section: 10.2.2 Eval Code + Description: + + When control enters an execution context for eval code, the previous + active execution context, referred to as the calling context, is used to + determine the scope chain, the variable object, and the this value. If + there is no calling context, then initializing the scope chain, variable + instantiation, and determination of the this value are performed just as + for global code. + + The scope chain is initialized to contain the same objects, in the same + order, as the calling context's scope chain. This includes objects added + to the calling context's scope chain by WithStatement. + + Variable instantiation is performed using the calling context's variable + object and using empty property attributes. + + The this value is the same as the this value of the calling context. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "10.2.2-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Eval Code"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + // Test Objects + + var OBJECT = new MyObject( "hello" ); + var GLOBAL_PROPERTIES = new Array(); + var i = 0; + + for ( p in this ) { + GLOBAL_PROPERTIES[i++] = p; + } + + with ( OBJECT ) { + var THIS = this; + testcases[tc++] = new TestCase( SECTION, "eval( 'this == THIS' )", true, eval("this == THIS") ); + testcases[tc++] = new TestCase( SECTION, "this in a with() block", GLOBAL, this+"" ); + testcases[tc++] = new TestCase( SECTION, "new MyObject('hello').value", "hello", value ); + testcases[tc++] = new TestCase( SECTION, "eval(new MyObject('hello').value)", "hello", eval("value") ); + testcases[tc++] = new TestCase( SECTION, "new MyObject('hello').getClass()", "[object Object]", getClass() ); + testcases[tc++] = new TestCase( SECTION, "eval(new MyObject('hello').getClass())", "[object Object]", eval("getClass()") ); + testcases[tc++] = new TestCase( SECTION, "eval(new MyObject('hello').toString())", "hello", eval("toString()") ); + testcases[tc++] = new TestCase( SECTION, "eval('getClass') == Object.prototype.toString", true, eval("getClass") == Object.prototype.toString ); + + for ( i = 0; i < GLOBAL_PROPERTIES.length; i++ ) { + testcases[tc++] = new TestCase( SECTION, GLOBAL_PROPERTIES[i] + + " == THIS["+GLOBAL_PROPERTIES[i]+"]", true, + eval(GLOBAL_PROPERTIES[i]) == eval( "THIS[GLOBAL_PROPERTIES[i]]") ); + } + + } + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.getClass = Object.prototype.toString; + this.toString = new Function( "return this.value+''" ); + return this; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.2.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.2.3-1.js new file mode 100644 index 00000000000..be1a00f41ad --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.2.3-1.js @@ -0,0 +1,83 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.2.3-1.js + ECMA Section: 10.2.3 Function and Anonymous Code + Description: + + The scope chain is initialized to contain the activation object followed + by the global object. Variable instantiation is performed using the + activation by the global object. Variable instantiation is performed using + the activation object as the variable object and using property attributes + { DontDelete }. The caller provides the this value. If the this value + provided by the caller is not an object (including the case where it is + null), then the this value is the global object. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "10.2.3-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Eval Code"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var o = new MyObject("hello") + + testcases[tc++] = new TestCase( SECTION, + "var o = new MyObject('hello'); o.THIS == x", + true, + o.THIS == o ); + + var o = MyFunction(); + + testcases[tc++] = new TestCase( SECTION, + "var o = MyFunction(); o == this", + true, + o == this ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function MyFunction( value ) { + return this; +} +function MyObject( value ) { + this.THIS = this; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.2.3-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.2.3-2.js new file mode 100644 index 00000000000..084d72f7d0c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ExecutionContexts/10.2.3-2.js @@ -0,0 +1,89 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 10.2.3-2.js + ECMA Section: 10.2.3 Function and Anonymous Code + Description: + + The scope chain is initialized to contain the activation object followed + by the global object. Variable instantiation is performed using the + activation by the global object. Variable instantiation is performed using + the activation object as the variable object and using property attributes + { DontDelete }. The caller provides the this value. If the this value + provided by the caller is not an object (including the case where it is + null), then the this value is the global object. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "10.2.3-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Function and Anonymous Code"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var o = new MyObject("hello") + + testcases[tc++] = new TestCase( SECTION, + "MyFunction(\"PASSED!\")", + "PASSED!", + MyFunction("PASSED!") ); + + var o = MyFunction(); + + testcases[tc++] = new TestCase( SECTION, + "MyOtherFunction(true);", + false, + MyOtherFunction(true) ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function MyFunction( value ) { + var x = value; + delete x; + return x; +} +function MyOtherFunction(value) { + var x = value; + return delete x; +} +function MyObject( value ) { + this.THIS = this; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.1.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.1.1.js new file mode 100644 index 00000000000..5801961f03e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.1.1.js @@ -0,0 +1,135 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.1.1.js + ECMA Section: 11.1.1 The this keyword + Description: + + The this keyword evaluates to the this value of the execution context. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.1.1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " The this keyword"); + + var testcases = new Array(); + var item = 0; + + var GLOBAL_OBJECT = this.toString(); + + // this in global code and eval(this) in global code should return the global object. + + testcases[item++] = new TestCase( SECTION, + "Global Code: this.toString()", + GLOBAL_OBJECT, + this.toString() ); + + testcases[item++] = new TestCase( SECTION, + "Global Code: eval('this.toString()')", + GLOBAL_OBJECT, + eval('this.toString()') ); + + // this in anonymous code called as a function should return the global object. + + testcases[item++] = new TestCase( SECTION, + "Anonymous Code: var MYFUNC = new Function('return this.toString()'); MYFUNC()", + GLOBAL_OBJECT, + eval("var MYFUNC = new Function('return this.toString()'); MYFUNC()") ); + + // eval( this ) in anonymous code called as a function should return that function's activation object + + testcases[item++] = new TestCase( SECTION, + "Anonymous Code: var MYFUNC = new Function('return (eval(\"this.toString()\")'); (MYFUNC()).toString()", + GLOBAL_OBJECT, + eval("var MYFUNC = new Function('return eval(\"this.toString()\")'); (MYFUNC()).toString()") ); + + // this and eval( this ) in anonymous code called as a constructor should return the object + + testcases[item++] = new TestCase( SECTION, + "Anonymous Code: var MYFUNC = new Function('this.THIS = this'); ((new MYFUNC()).THIS).toString()", + "[object Object]", + eval("var MYFUNC = new Function('this.THIS = this'); ((new MYFUNC()).THIS).toString()") ); + + testcases[item++] = new TestCase( SECTION, + "Anonymous Code: var MYFUNC = new Function('this.THIS = this'); var FUN1 = new MYFUNC(); FUN1.THIS == FUN1", + true, + eval("var MYFUNC = new Function('this.THIS = this'); var FUN1 = new MYFUNC(); FUN1.THIS == FUN1") ); + + testcases[item++] = new TestCase( SECTION, + "Anonymous Code: var MYFUNC = new Function('this.THIS = eval(\"this\")'); ((new MYFUNC().THIS).toString()", + "[object Object]", + eval("var MYFUNC = new Function('this.THIS = eval(\"this\")'); ((new MYFUNC()).THIS).toString()") ); + + testcases[item++] = new TestCase( SECTION, + "Anonymous Code: var MYFUNC = new Function('this.THIS = eval(\"this\")'); var FUN1 = new MYFUNC(); FUN1.THIS == FUN1", + true, + eval("var MYFUNC = new Function('this.THIS = eval(\"this\")'); var FUN1 = new MYFUNC(); FUN1.THIS == FUN1") ); + + // this and eval(this) in function code called as a function should return the global object. + testcases[item++] = new TestCase( SECTION, + "Function Code: ReturnThis()", + GLOBAL_OBJECT, + ReturnThis() ); + + testcases[item++] = new TestCase( SECTION, + "Function Code: ReturnEvalThis()", + GLOBAL_OBJECT, + ReturnEvalThis() ); + + // this and eval(this) in function code called as a contructor should return the object. + testcases[item++] = new TestCase( SECTION, + "var MYOBJECT = new ReturnThis(); MYOBJECT.toString()", + "[object Object]", + eval("var MYOBJECT = new ReturnThis(); MYOBJECT.toString()") ); + + testcases[item++] = new TestCase( SECTION, + "var MYOBJECT = new ReturnEvalThis(); MYOBJECT.toString()", + "[object Object]", + eval("var MYOBJECT = new ReturnEvalThis(); MYOBJECT.toString()") ); + + + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function ReturnThis() { + return this.toString(); +} +function ReturnEvalThis() { + return( eval("this.toString()") ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.10-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.10-1.js new file mode 100644 index 00000000000..c5f691111ff --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.10-1.js @@ -0,0 +1,270 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.10-1.js + ECMA Section: 11.10-1 Binary Bitwise Operators: & + Description: + Semantics + + The production A : A @ B, where @ is one of the bitwise operators in the + productions &, ^, | , is evaluated as follows: + + 1. Evaluate A. + 2. Call GetValue(Result(1)). + 3. Evaluate B. + 4. Call GetValue(Result(3)). + 5. Call ToInt32(Result(2)). + 6. Call ToInt32(Result(4)). + 7. Apply the bitwise operator @ to Result(5) and Result(6). The result is + a signed 32 bit integer. + 8. Return Result(7). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.10-1"; + var VERSION = "ECMA_1"; + startTest(); + + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Binary Bitwise Operators: &"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + var shiftexp = 0; + var addexp = 0; + +// for ( shiftpow = 0; shiftpow < 33; shiftpow++ ) { + for ( shiftpow = 0; shiftpow < 1; shiftpow++ ) { + shiftexp += Math.pow( 2, shiftpow ); + + for ( addpow = 0; addpow < 33; addpow++ ) { + addexp += Math.pow(2, addpow); + + array[item++] = new TestCase( SECTION, + shiftexp + " & " + addexp, + And( shiftexp, addexp ), + shiftexp & addexp ); + } + } + + return ( array ); +} +function ToInteger( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( n != n ) { + return 0; + } + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY ) { + return n; + } + return ( sign * Math.floor(Math.abs(n)) ); +} +function ToInt32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + + n = (sign * Math.floor( Math.abs(n) )) % Math.pow(2,32); + n = ( n >= Math.pow(2,31) ) ? n - Math.pow(2,32) : n; + + return ( n ); +} +function ToUint32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + n = sign * Math.floor( Math.abs(n) ) + + n = n % Math.pow(2,32); + + if ( n < 0 ){ + n += Math.pow(2,32); + } + + return ( n ); +} +function ToUint16( n ) { + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + + n = ( sign * Math.floor( Math.abs(n) ) ) % Math.pow(2,16); + + if (n <0) { + n += Math.pow(2,16); + } + + return ( n ); +} +function Mask( b, n ) { + b = ToUint32BitString( b ); + b = b.substring( b.length - n ); + b = ToUint32Decimal( b ); + return ( b ); +} +function ToUint32BitString( n ) { + var b = ""; + for ( p = 31; p >=0; p-- ) { + if ( n >= Math.pow(2,p) ) { + b += "1"; + n -= Math.pow(2,p); + } else { + b += "0"; + } + } + return b; +} +function ToInt32BitString( n ) { + var b = ""; + var sign = ( n < 0 ) ? -1 : 1; + + b += ( sign == 1 ) ? "0" : "1"; + + for ( p = 30; p >=0; p-- ) { + if ( (sign == 1 ) ? sign * n >= Math.pow(2,p) : sign * n > Math.pow(2,p) ) { + b += ( sign == 1 ) ? "1" : "0"; + n -= sign * Math.pow( 2, p ); + } else { + b += ( sign == 1 ) ? "0" : "1"; + } + } + + return b; +} +function ToInt32Decimal( bin ) { + var r = 0; + var sign; + + if ( Number(bin.charAt(0)) == 0 ) { + sign = 1; + r = 0; + } else { + sign = -1; + r = -(Math.pow(2,31)); + } + + for ( var j = 0; j < 31; j++ ) { + r += Math.pow( 2, j ) * Number(bin.charAt(31-j)); + } + + return r; +} +function ToUint32Decimal( bin ) { + var r = 0; + + + for ( l = bin.length; l < 32; l++ ) { + bin = "0" + bin; + } + + for ( j = 0; j < 31; j++ ) { + r += Math.pow( 2, j ) * Number(bin.charAt(31-j)); + + } + + return r; +} +function And( s, a ) { + s = ToInt32( s ); + a = ToInt32( a ); + + var bs = ToInt32BitString( s ); + var ba = ToInt32BitString( a ); + + var result = ""; + + for ( var bit = 0; bit < bs.length; bit++ ) { + if ( bs.charAt(bit) == "1" && ba.charAt(bit) == "1" ) { + result += "1"; + } else { + result += "0"; + } + } + return ToInt32Decimal(result); +} +function Xor( s, a ) { + s = ToInt32( s ); + a = ToInt32( a ); + + var bs = ToInt32BitString( s ); + var ba = ToInt32BitString( a ); + + var result = ""; + + for ( var bit = 0; bit < bs.length; bit++ ) { + if ( (bs.charAt(bit) == "1" && ba.charAt(bit) == "0") || + (bs.charAt(bit) == "0" && ba.charAt(bit) == "1") + ) { + result += "1"; + } else { + result += "0"; + } + } + + return ToInt32Decimal(result); +} +function Or( s, a ) { + s = ToInt32( s ); + a = ToInt32( a ); + + var bs = ToInt32BitString( s ); + var ba = ToInt32BitString( a ); + + var result = ""; + + for ( var bit = 0; bit < bs.length; bit++ ) { + if ( bs.charAt(bit) == "1" || ba.charAt(bit) == "1" ) { + result += "1"; + } else { + result += "0"; + } + } + + return ToInt32Decimal(result); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.10-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.10-2.js new file mode 100644 index 00000000000..fc2e10e55cb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.10-2.js @@ -0,0 +1,269 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.10-2.js + ECMA Section: 11.10-2 Binary Bitwise Operators: | + Description: + Semantics + + The production A : A @ B, where @ is one of the bitwise operators in the + productions &, ^, | , is evaluated as follows: + + 1. Evaluate A. + 2. Call GetValue(Result(1)). + 3. Evaluate B. + 4. Call GetValue(Result(3)). + 5. Call ToInt32(Result(2)). + 6. Call ToInt32(Result(4)). + 7. Apply the bitwise operator @ to Result(5) and Result(6). The result is + a signed 32 bit integer. + 8. Return Result(7). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.10-2"; + var VERSION = "ECMA_1"; + startTest(); + + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Binary Bitwise Operators: |"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + var shiftexp = 0; + var addexp = 0; + + for ( shiftpow = 0; shiftpow < 33; shiftpow++ ) { + shiftexp += Math.pow( 2, shiftpow ); + + for ( addpow = 0; addpow < 33; addpow++ ) { + addexp += Math.pow(2, addpow); + + array[item++] = new TestCase( SECTION, + shiftexp + " | " + addexp, + Or( shiftexp, addexp ), + shiftexp | addexp ); + } + } + + return ( array ); +} +function ToInteger( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( n != n ) { + return 0; + } + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY ) { + return n; + } + return ( sign * Math.floor(Math.abs(n)) ); +} +function ToInt32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + + n = (sign * Math.floor( Math.abs(n) )) % Math.pow(2,32); + n = ( n >= Math.pow(2,31) ) ? n - Math.pow(2,32) : n; + + return ( n ); +} +function ToUint32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + n = sign * Math.floor( Math.abs(n) ) + + n = n % Math.pow(2,32); + + if ( n < 0 ){ + n += Math.pow(2,32); + } + + return ( n ); +} +function ToUint16( n ) { + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + + n = ( sign * Math.floor( Math.abs(n) ) ) % Math.pow(2,16); + + if (n <0) { + n += Math.pow(2,16); + } + + return ( n ); +} +function Mask( b, n ) { + b = ToUint32BitString( b ); + b = b.substring( b.length - n ); + b = ToUint32Decimal( b ); + return ( b ); +} +function ToUint32BitString( n ) { + var b = ""; + for ( p = 31; p >=0; p-- ) { + if ( n >= Math.pow(2,p) ) { + b += "1"; + n -= Math.pow(2,p); + } else { + b += "0"; + } + } + return b; +} +function ToInt32BitString( n ) { + var b = ""; + var sign = ( n < 0 ) ? -1 : 1; + + b += ( sign == 1 ) ? "0" : "1"; + + for ( p = 30; p >=0; p-- ) { + if ( (sign == 1 ) ? sign * n >= Math.pow(2,p) : sign * n > Math.pow(2,p) ) { + b += ( sign == 1 ) ? "1" : "0"; + n -= sign * Math.pow( 2, p ); + } else { + b += ( sign == 1 ) ? "0" : "1"; + } + } + + return b; +} +function ToInt32Decimal( bin ) { + var r = 0; + var sign; + + if ( Number(bin.charAt(0)) == 0 ) { + sign = 1; + r = 0; + } else { + sign = -1; + r = -(Math.pow(2,31)); + } + + for ( var j = 0; j < 31; j++ ) { + r += Math.pow( 2, j ) * Number(bin.charAt(31-j)); + } + + return r; +} +function ToUint32Decimal( bin ) { + var r = 0; + + + for ( l = bin.length; l < 32; l++ ) { + bin = "0" + bin; + } + + for ( j = 0; j < 31; j++ ) { + r += Math.pow( 2, j ) * Number(bin.charAt(31-j)); + + } + + return r; +} +function And( s, a ) { + s = ToInt32( s ); + a = ToInt32( a ); + + var bs = ToInt32BitString( s ); + var ba = ToInt32BitString( a ); + + var result = ""; + + for ( var bit = 0; bit < bs.length; bit++ ) { + if ( bs.charAt(bit) == "1" && ba.charAt(bit) == "1" ) { + result += "1"; + } else { + result += "0"; + } + } + return ToInt32Decimal(result); +} +function Xor( s, a ) { + s = ToInt32( s ); + a = ToInt32( a ); + + var bs = ToInt32BitString( s ); + var ba = ToInt32BitString( a ); + + var result = ""; + + for ( var bit = 0; bit < bs.length; bit++ ) { + if ( (bs.charAt(bit) == "1" && ba.charAt(bit) == "0") || + (bs.charAt(bit) == "0" && ba.charAt(bit) == "1") + ) { + result += "1"; + } else { + result += "0"; + } + } + + return ToInt32Decimal(result); +} +function Or( s, a ) { + s = ToInt32( s ); + a = ToInt32( a ); + + var bs = ToInt32BitString( s ); + var ba = ToInt32BitString( a ); + + var result = ""; + + for ( var bit = 0; bit < bs.length; bit++ ) { + if ( bs.charAt(bit) == "1" || ba.charAt(bit) == "1" ) { + result += "1"; + } else { + result += "0"; + } + } + + return ToInt32Decimal(result); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.10-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.10-3.js new file mode 100644 index 00000000000..0d5535768a4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.10-3.js @@ -0,0 +1,268 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.10-3.js + ECMA Section: 11.10-3 Binary Bitwise Operators: ^ + Description: + Semantics + + The production A : A @ B, where @ is one of the bitwise operators in the + productions &, ^, | , is evaluated as follows: + + 1. Evaluate A. + 2. Call GetValue(Result(1)). + 3. Evaluate B. + 4. Call GetValue(Result(3)). + 5. Call ToInt32(Result(2)). + 6. Call ToInt32(Result(4)). + 7. Apply the bitwise operator @ to Result(5) and Result(6). The result is + a signed 32 bit integer. + 8. Return Result(7). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.10-3"; + var VERSION = "ECMA_1"; + startTest(); + + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Binary Bitwise Operators: ^"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + var shiftexp = 0; + var addexp = 0; + + for ( shiftpow = 0; shiftpow < 33; shiftpow++ ) { + shiftexp += Math.pow( 2, shiftpow ); + + for ( addpow = 0; addpow < 33; addpow++ ) { + addexp += Math.pow(2, addpow); + + array[item++] = new TestCase( SECTION, + shiftexp + " ^ " + addexp, + Xor( shiftexp, addexp ), + shiftexp ^ addexp ); + } + } + + return ( array ); +} +function ToInteger( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( n != n ) { + return 0; + } + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY ) { + return n; + } + return ( sign * Math.floor(Math.abs(n)) ); +} +function ToInt32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + + n = (sign * Math.floor( Math.abs(n) )) % Math.pow(2,32); + n = ( n >= Math.pow(2,31) ) ? n - Math.pow(2,32) : n; + + return ( n ); +} +function ToUint32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + n = sign * Math.floor( Math.abs(n) ) + + n = n % Math.pow(2,32); + + if ( n < 0 ){ + n += Math.pow(2,32); + } + + return ( n ); +} +function ToUint16( n ) { + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + + n = ( sign * Math.floor( Math.abs(n) ) ) % Math.pow(2,16); + + if (n <0) { + n += Math.pow(2,16); + } + + return ( n ); +} +function Mask( b, n ) { + b = ToUint32BitString( b ); + b = b.substring( b.length - n ); + b = ToUint32Decimal( b ); + return ( b ); +} +function ToUint32BitString( n ) { + var b = ""; + for ( p = 31; p >=0; p-- ) { + if ( n >= Math.pow(2,p) ) { + b += "1"; + n -= Math.pow(2,p); + } else { + b += "0"; + } + } + return b; +} +function ToInt32BitString( n ) { + var b = ""; + var sign = ( n < 0 ) ? -1 : 1; + + b += ( sign == 1 ) ? "0" : "1"; + + for ( p = 30; p >=0; p-- ) { + if ( (sign == 1 ) ? sign * n >= Math.pow(2,p) : sign * n > Math.pow(2,p) ) { + b += ( sign == 1 ) ? "1" : "0"; + n -= sign * Math.pow( 2, p ); + } else { + b += ( sign == 1 ) ? "0" : "1"; + } + } + + return b; +} +function ToInt32Decimal( bin ) { + var r = 0; + var sign; + + if ( Number(bin.charAt(0)) == 0 ) { + sign = 1; + r = 0; + } else { + sign = -1; + r = -(Math.pow(2,31)); + } + + for ( var j = 0; j < 31; j++ ) { + r += Math.pow( 2, j ) * Number(bin.charAt(31-j)); + } + + return r; +} +function ToUint32Decimal( bin ) { + var r = 0; + + for ( l = bin.length; l < 32; l++ ) { + bin = "0" + bin; + } + + for ( j = 0; j < 31; j++ ) { + r += Math.pow( 2, j ) * Number(bin.charAt(31-j)); + + } + + return r; +} +function And( s, a ) { + s = ToInt32( s ); + a = ToInt32( a ); + + var bs = ToInt32BitString( s ); + var ba = ToInt32BitString( a ); + + var result = ""; + + for ( var bit = 0; bit < bs.length; bit++ ) { + if ( bs.charAt(bit) == "1" && ba.charAt(bit) == "1" ) { + result += "1"; + } else { + result += "0"; + } + } + return ToInt32Decimal(result); +} +function Xor( s, a ) { + s = ToInt32( s ); + a = ToInt32( a ); + + var bs = ToInt32BitString( s ); + var ba = ToInt32BitString( a ); + + var result = ""; + + for ( var bit = 0; bit < bs.length; bit++ ) { + if ( (bs.charAt(bit) == "1" && ba.charAt(bit) == "0") || + (bs.charAt(bit) == "0" && ba.charAt(bit) == "1") + ) { + result += "1"; + } else { + result += "0"; + } + } + + return ToInt32Decimal(result); +} +function Or( s, a ) { + s = ToInt32( s ); + a = ToInt32( a ); + + var bs = ToInt32BitString( s ); + var ba = ToInt32BitString( a ); + + var result = ""; + + for ( var bit = 0; bit < bs.length; bit++ ) { + if ( bs.charAt(bit) == "1" || ba.charAt(bit) == "1" ) { + result += "1"; + } else { + result += "0"; + } + } + + return ToInt32Decimal(result); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.12-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.12-1.js new file mode 100644 index 00000000000..38ff1df722e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.12-1.js @@ -0,0 +1,88 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.12.js + ECMA Section: 11.12 Conditional Operator + Description: + Logi + + calORExpression ? AssignmentExpression : AssignmentExpression + + Semantics + + The production ConditionalExpression : + LogicalORExpression ? AssignmentExpression : AssignmentExpression + is evaluated as follows: + + 1. Evaluate LogicalORExpression. + 2. Call GetValue(Result(1)). + 3. Call ToBoolean(Result(2)). + 4. If Result(3) is false, go to step 8. + 5. Evaluate the first AssignmentExpression. + 6. Call GetValue(Result(5)). + 7. Return Result(6). + 8. Evaluate the second AssignmentExpression. + 9. Call GetValue(Result(8)). + 10. Return Result(9). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.12"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Conditional operator( ? : )"); + test(); +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "true ? 'PASSED' : 'FAILED'", "PASSED", (true?"PASSED":"FAILED")); + array[item++] = new TestCase( SECTION, "false ? 'FAILED' : 'PASSED'", "PASSED", (false?"FAILED":"PASSED")); + + array[item++] = new TestCase( SECTION, "1 ? 'PASSED' : 'FAILED'", "PASSED", (true?"PASSED":"FAILED")); + array[item++] = new TestCase( SECTION, "0 ? 'FAILED' : 'PASSED'", "PASSED", (false?"FAILED":"PASSED")); + array[item++] = new TestCase( SECTION, "-1 ? 'PASSED' : 'FAILED'", "PASSED", (true?"PASSED":"FAILED")); + + array[item++] = new TestCase( SECTION, "NaN ? 'FAILED' : 'PASSED'", "PASSED", (Number.NaN?"FAILED":"PASSED")); + + array[item++] = new TestCase( SECTION, "var VAR = true ? , : 'FAILED'", "PASSED", (VAR = true ? "PASSED" : "FAILED") ); + + array[item++] = new TestCase( SECTION, "item = " + item +"; VAR = (item < -2147483648) ? 'FAILED' : 'PASSED'", "PASSED", (VAR = (item < -2147483648) ? "FAILED" : "PASSED") ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.12-2-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.12-2-n.js new file mode 100644 index 00000000000..05e42dcb20f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.12-2-n.js @@ -0,0 +1,71 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.12-2-n.js + ECMA Section: 11.12 + Description: + + The grammar for a ConditionalExpression in ECMAScript is a little bit + different from that in C and Java, which each allow the second + subexpression to be an Expression but restrict the third expression to + be a ConditionalExpression. The motivation for this difference in + ECMAScript is to allow an assignment expression to be governed by either + arm of a conditional and to eliminate the confusing and fairly useless + case of a comma expression as the center expression. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.12-2-n"; + var VERSION = "ECMA_1"; + startTest(); + writeHeaderToLog( SECTION + " Conditional operator ( ? : )"); + + var testcases = new Array(); + + // the following expression should be an error in JS. + + testcases[tc] = new TestCase( SECTION, + "var MYVAR = true ? 'EXPR1', 'EXPR2' : 'EXPR3'; MYVAR", + "error", + "var MYVAR = true ? 'EXPR1', 'EXPR2' : 'EXPR3'; MYVAR" ); + + // get around parse time error by putting expression in an eval statement + + testcases[tc].actual = eval ( testcases[tc].actual ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.12-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.12-3.js new file mode 100644 index 00000000000..eb79c16afb1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.12-3.js @@ -0,0 +1,71 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.12-3.js + ECMA Section: 11.12 + Description: + + The grammar for a ConditionalExpression in ECMAScript is a little bit + different from that in C and Java, which each allow the second + subexpression to be an Expression but restrict the third expression to + be a ConditionalExpression. The motivation for this difference in + ECMAScript is to allow an assignment expression to be governed by either + arm of a conditional and to eliminate the confusing and fairly useless + case of a comma expression as the center expression. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.12-3"; + var VERSION = "ECMA_1"; + startTest(); + writeHeaderToLog( SECTION + " Conditional operator ( ? : )"); + + var testcases = new Array(); + + // the following expression should NOT be an error in JS. + + testcases[tc] = new TestCase( SECTION, + "var MYVAR = true ? ('FAIL1', 'PASSED') : 'FAIL2'; MYVAR", + "PASSED", + "var MYVAR = true ? ('FAIL1', 'PASSED') : 'FAIL2'; MYVAR" ); + + // get around potential parse time error by putting expression in an eval statement + + testcases[tc].actual = eval ( testcases[tc].actual ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.12-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.12-4.js new file mode 100644 index 00000000000..017cf4b3506 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.12-4.js @@ -0,0 +1,71 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.12-4.js + ECMA Section: 11.12 + Description: + + The grammar for a ConditionalExpression in ECMAScript is a little bit + different from that in C and Java, which each allow the second + subexpression to be an Expression but restrict the third expression to + be a ConditionalExpression. The motivation for this difference in + ECMAScript is to allow an assignment expression to be governed by either + arm of a conditional and to eliminate the confusing and fairly useless + case of a comma expression as the center expression. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.12-4"; + var VERSION = "ECMA_1"; + startTest(); + writeHeaderToLog( SECTION + " Conditional operator ( ? : )"); + + var testcases = new Array(); + + // the following expression should NOT be an error in JS. + + testcases[tc] = new TestCase( SECTION, + "true ? MYVAR1 = 'PASSED' : MYVAR1 = 'FAILED'; MYVAR1", + "PASSED", + "true ? MYVAR1 = 'PASSED' : MYVAR1 = 'FAILED'; MYVAR1" ); + + // get around potential parse time error by putting expression in an eval statement + + testcases[tc].actual = eval ( testcases[tc].actual ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.1.js new file mode 100644 index 00000000000..537ec289afe --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.1.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 11.13.1.js + ECMA Section: 11.13.1 Simple assignment + Description: + + 11.13.1 Simple Assignment ( = ) + + The production AssignmentExpression : + LeftHandSideExpression = AssignmentExpression is evaluated as follows: + + 1. Evaluate LeftHandSideExpression. + 2. Evaluate AssignmentExpression. + 3. Call GetValue(Result(2)). + 4. Call PutValue(Result(1), Result(3)). + 5. Return Result(3). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.13.1"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Simple Assignment ( = )"); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "SOMEVAR = true", true, SOMEVAR = true ); + + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.2-1.js new file mode 100644 index 00000000000..721fb19ee70 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.2-1.js @@ -0,0 +1,122 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 11.13.2-1.js + ECMA Section: 11.13.2 Compound Assignment: *= + Description: + + *= /= %= += -= <<= >>= >>>= &= ^= |= + + 11.13.2 Compound assignment ( op= ) + + The production AssignmentExpression : + LeftHandSideExpression @ = AssignmentExpression, where @ represents one of + the operators indicated above, is evaluated as follows: + + 1. Evaluate LeftHandSideExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate AssignmentExpression. + 4. Call GetValue(Result(3)). + 5. Apply operator @ to Result(2) and Result(4). + 6. Call PutValue(Result(1), Result(5)). + 7. Return Result(5). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.13.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Compound Assignment: *="); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // NaN cases + + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=1; VAR1 *= VAR2", Number.NaN, eval("VAR1 = Number.NaN; VAR2=1; VAR1 *= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=1; VAR1 *= VAR2; VAR1", Number.NaN, eval("VAR1 = Number.NaN; VAR2=1; VAR1 *= VAR2; VAR1") ); + + // number cases + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=1; VAR1 *= VAR2", 0, eval("VAR1 = 0; VAR2=1; VAR1 *= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=1; VAR1 *= VAR2;VAR1", 0, eval("VAR1 = 0; VAR2=1; VAR1 *= VAR2;VAR1") ); + + array[item++] = new TestCase( SECTION, "VAR1 = 0xFF; VAR2 = 0xA, VAR1 *= VAR2", 2550, eval("VAR1 = 0XFF; VAR2 = 0XA, VAR1 *= VAR2") ); + + // special multiplication cases + + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= Infinity; VAR1 *= VAR2", Number.NaN, eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 *= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= Infinity; VAR1 *= VAR2", Number.NaN, eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 *= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= -Infinity; VAR1 *= VAR2", Number.NaN, eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 *= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= -Infinity; VAR1 *= VAR2", Number.NaN, eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 *= VAR2; VAR1") ); + + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= Infinity; VAR2 *= VAR1", Number.NaN, eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR2 *= VAR1; VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= Infinity; VAR2 *= VAR1", Number.NaN, eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR2 *= VAR1; VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= -Infinity; VAR2 *= VAR1", Number.NaN, eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 *= VAR1; VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= -Infinity; VAR2 *= VAR1", Number.NaN, eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 *= VAR1; VAR2") ); + + array[item++] = new TestCase( SECTION, "VAR1 = Infinity; VAR2= Infinity; VAR1 *= VAR2", Number.POSITIVE_INFINITY, eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 *= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = Infinity; VAR2= -Infinity; VAR1 *= VAR2", Number.NEGATIVE_INFINITY, eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 *= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 =-Infinity; VAR2= Infinity; VAR1 *= VAR2", Number.NEGATIVE_INFINITY, eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 *= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 =-Infinity; VAR2=-Infinity; VAR1 *= VAR2", Number.POSITIVE_INFINITY, eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 *= VAR2; VAR1") ); + + // string cases + array[item++] = new TestCase( SECTION, "VAR1 = 10; VAR2 = '255', VAR1 *= VAR2", 2550, eval("VAR1 = 10; VAR2 = '255', VAR1 *= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '255'; VAR2 = 10, VAR1 *= VAR2", 2550, eval("VAR1 = '255'; VAR2 = 10, VAR1 *= VAR2") ); + + array[item++] = new TestCase( SECTION, "VAR1 = 10; VAR2 = '0XFF', VAR1 *= VAR2", 2550, eval("VAR1 = 10; VAR2 = '0XFF', VAR1 *= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 *= VAR2", 2550, eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 *= VAR2") ); + + array[item++] = new TestCase( SECTION, "VAR1 = '10'; VAR2 = '255', VAR1 *= VAR2", 2550, eval("VAR1 = '10'; VAR2 = '255', VAR1 *= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '10'; VAR2 = '0XFF', VAR1 *= VAR2", 2550, eval("VAR1 = '10'; VAR2 = '0XFF', VAR1 *= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 *= VAR2", 2550, eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 *= VAR2") ); + + // boolean cases + array[item++] = new TestCase( SECTION, "VAR1 = true; VAR2 = false; VAR1 *= VAR2", 0, eval("VAR1 = true; VAR2 = false; VAR1 *= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = true; VAR2 = true; VAR1 *= VAR2", 1, eval("VAR1 = true; VAR2 = true; VAR1 *= VAR2") ); + + // object cases + array[item++] = new TestCase( SECTION, "VAR1 = new Boolean(true); VAR2 = 10; VAR1 *= VAR2;VAR1", 10, eval("VAR1 = new Boolean(true); VAR2 = 10; VAR1 *= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = new Number(11); VAR2 = 10; VAR1 *= VAR2; VAR1", 110, eval("VAR1 = new Number(11); VAR2 = 10; VAR1 *= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = new Number(11); VAR2 = new Number(10); VAR1 *= VAR2", 110, eval("VAR1 = new Number(11); VAR2 = new Number(10); VAR1 *= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 *= VAR2", 225, eval("VAR1 = String('15'); VAR2 = new String('0xF'); VAR1 *= VAR2") ); + + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.2-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.2-2.js new file mode 100644 index 00000000000..5838acf670c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.2-2.js @@ -0,0 +1,136 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 11.13.2-2js + ECMA Section: 11.13.2 Compound Assignment: /= + Description: + + *= /= %= += -= <<= >>= >>>= &= ^= |= + + 11.13.2 Compound assignment ( op= ) + + The production AssignmentExpression : + LeftHandSideExpression @ = AssignmentExpression, where @ represents one of + the operators indicated above, is evaluated as follows: + + 1. Evaluate LeftHandSideExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate AssignmentExpression. + 4. Call GetValue(Result(3)). + 5. Apply operator @ to Result(2) and Result(4). + 6. Call PutValue(Result(1), Result(5)). + 7. Return Result(5). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.13.2-2"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Compound Assignment: /="); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // NaN cases + + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=1; VAR1 /= VAR2", Number.NaN, eval("VAR1 = Number.NaN; VAR2=1; VAR1 /= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=1; VAR1 /= VAR2; VAR1", Number.NaN, eval("VAR1 = Number.NaN; VAR2=1; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=0; VAR1 /= VAR2", Number.NaN, eval("VAR1 = Number.NaN; VAR2=0; VAR1 /= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=0; VAR1 /= VAR2; VAR1", Number.NaN, eval("VAR1 = Number.NaN; VAR2=0; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=NaN; VAR1 /= VAR2", Number.NaN, eval("VAR1 = 0; VAR2=Number.NaN; VAR1 /= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=NaN; VAR1 /= VAR2; VAR1", Number.NaN, eval("VAR1 = 0; VAR2=Number.NaN; VAR1 /= VAR2; VAR1") ); + + // number cases + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=1; VAR1 /= VAR2", 0, eval("VAR1 = 0; VAR2=1; VAR1 /= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=1; VAR1 /= VAR2;VAR1", 0, eval("VAR1 = 0; VAR2=1; VAR1 /= VAR2;VAR1") ); + + array[item++] = new TestCase( SECTION, "VAR1 = 0xFF; VAR2 = 0xA, VAR1 /= VAR2", 25.5, eval("VAR1 = 0XFF; VAR2 = 0XA, VAR1 /= VAR2") ); + + // special division cases + + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= Infinity; VAR1 /= VAR2", 0, eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= Infinity; VAR1 /= VAR2", 0, eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= -Infinity; VAR1 /= VAR2", 0, eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= -Infinity; VAR1 /= VAR2", 0, eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2; VAR1") ); + + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= Infinity; VAR2 /= VAR1", Number.POSITIVE_INFINITY, eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR2 /= VAR1; VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= Infinity; VAR2 /= VAR1", Number.NEGATIVE_INFINITY, eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR2 /= VAR1; VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= -Infinity; VAR2 /= VAR1", Number.POSITIVE_INFINITY, eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 /= VAR1; VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= -Infinity; VAR2 /= VAR1", Number.NEGATIVE_INFINITY, eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 /= VAR1; VAR2") ); + + array[item++] = new TestCase( SECTION, "VAR1 = Infinity; VAR2= Infinity; VAR1 /= VAR2", Number.NaN, eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = Infinity; VAR2= -Infinity; VAR1 /= VAR2", Number.NaN, eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 =-Infinity; VAR2= Infinity; VAR1 /= VAR2", Number.NaN, eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 =-Infinity; VAR2=-Infinity; VAR1 /= VAR2", Number.NaN, eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2; VAR1") ); + + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= 0; VAR1 /= VAR2", Number.NaN, eval("VAR1 = 0; VAR2 = 0; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= -0; VAR1 /= VAR2", Number.NaN, eval("VAR1 = 0; VAR2 = -0; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= 0; VAR1 /= VAR2", Number.NaN, eval("VAR1 = -0; VAR2 = 0; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= -0; VAR1 /= VAR2", Number.NaN, eval("VAR1 = -0; VAR2 = -0; VAR1 /= VAR2; VAR1") ); + + array[item++] = new TestCase( SECTION, "VAR1 = 1; VAR2= 0; VAR1 /= VAR2", Number.POSITIVE_INFINITY, eval("VAR1 = 1; VAR2 = 0; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 1; VAR2= -0; VAR1 /= VAR2", Number.NEGATIVE_INFINITY, eval("VAR1 = 1; VAR2 = -0; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -1; VAR2= 0; VAR1 /= VAR2", Number.NEGATIVE_INFINITY, eval("VAR1 = -1; VAR2 = 0; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -1; VAR2= -0; VAR1 /= VAR2", Number.POSITIVE_INFINITY, eval("VAR1 = -1; VAR2 = -0; VAR1 /= VAR2; VAR1") ); + + // string cases + array[item++] = new TestCase( SECTION, "VAR1 = 1000; VAR2 = '10', VAR1 /= VAR2; VAR1", 100, eval("VAR1 = 1000; VAR2 = '10', VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = '1000'; VAR2 = 10, VAR1 /= VAR2; VAR1", 100, eval("VAR1 = '1000'; VAR2 = 10, VAR1 /= VAR2; VAR1") ); +/* + array[item++] = new TestCase( SECTION, "VAR1 = 10; VAR2 = '0XFF', VAR1 /= VAR2", 2550, eval("VAR1 = 10; VAR2 = '0XFF', VAR1 /= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 /= VAR2", 2550, eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 /= VAR2") ); + + array[item++] = new TestCase( SECTION, "VAR1 = '10'; VAR2 = '255', VAR1 /= VAR2", 2550, eval("VAR1 = '10'; VAR2 = '255', VAR1 /= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '10'; VAR2 = '0XFF', VAR1 /= VAR2", 2550, eval("VAR1 = '10'; VAR2 = '0XFF', VAR1 /= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 /= VAR2", 2550, eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 /= VAR2") ); + + // boolean cases + array[item++] = new TestCase( SECTION, "VAR1 = true; VAR2 = false; VAR1 /= VAR2", 0, eval("VAR1 = true; VAR2 = false; VAR1 /= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = true; VAR2 = true; VAR1 /= VAR2", 1, eval("VAR1 = true; VAR2 = true; VAR1 /= VAR2") ); + + // object cases + array[item++] = new TestCase( SECTION, "VAR1 = new Boolean(true); VAR2 = 10; VAR1 /= VAR2;VAR1", 10, eval("VAR1 = new Boolean(true); VAR2 = 10; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = new Number(11); VAR2 = 10; VAR1 /= VAR2; VAR1", 110, eval("VAR1 = new Number(11); VAR2 = 10; VAR1 /= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = new Number(11); VAR2 = new Number(10); VAR1 /= VAR2", 110, eval("VAR1 = new Number(11); VAR2 = new Number(10); VAR1 /= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 /= VAR2", 255, eval("VAR1 = String('15'); VAR2 = new String('0xF'); VAR1 /= VAR2") ); + +*/ + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.2-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.2-3.js new file mode 100644 index 00000000000..cf151db3d87 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.2-3.js @@ -0,0 +1,149 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 11.13.2-4.js + ECMA Section: 11.13.2 Compound Assignment: %= + Description: + + *= /= %= += -= <<= >>= >>>= &= ^= |= + + 11.13.2 Compound assignment ( op= ) + + The production AssignmentExpression : + LeftHandSideExpression @ = AssignmentExpression, where @ represents one of + the operators indicated above, is evaluated as follows: + + 1. Evaluate LeftHandSideExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate AssignmentExpression. + 4. Call GetValue(Result(3)). + 5. Apply operator @ to Result(2) and Result(4). + 6. Call PutValue(Result(1), Result(5)). + 7. Return Result(5). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.13.2-3"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Compound Assignment: +="); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // If either operand is NaN, result is NaN + + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=1; VAR1 %= VAR2", Number.NaN, eval("VAR1 = Number.NaN; VAR2=1; VAR1 %= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=1; VAR1 %= VAR2; VAR1", Number.NaN, eval("VAR1 = Number.NaN; VAR2=1; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=0; VAR1 %= VAR2", Number.NaN, eval("VAR1 = Number.NaN; VAR2=0; VAR1 %= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=0; VAR1 %= VAR2; VAR1", Number.NaN, eval("VAR1 = Number.NaN; VAR2=0; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=NaN; VAR1 %= VAR2", Number.NaN, eval("VAR1 = 0; VAR2=Number.NaN; VAR1 %= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=NaN; VAR1 %= VAR2; VAR1", Number.NaN, eval("VAR1 = 0; VAR2=Number.NaN; VAR1 %= VAR2; VAR1") ); + + // if the dividend is infinity or the divisor is zero or both, the result is NaN + + array[item++] = new TestCase( SECTION, "VAR1 = Infinity; VAR2= Infinity; VAR1 %= VAR2; VAR1", Number.NaN, eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = Infinity; VAR2= -Infinity; VAR1 %= VAR2; VAR1", Number.NaN, eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 =-Infinity; VAR2= Infinity; VAR1 %= VAR2; VAR1", Number.NaN, eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 =-Infinity; VAR2=-Infinity; VAR1 %= VAR2; VAR1", Number.NaN, eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2; VAR1") ); + + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= Infinity; VAR2 %= VAR1", Number.NaN, eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR2 %= VAR1; VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= Infinity; VAR2 %= VAR1", Number.NaN, eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR2 %= VAR1; VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= -Infinity; VAR2 %= VAR1", Number.NaN, eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 %= VAR1; VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= -Infinity; VAR2 %= VAR1", Number.NaN, eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 %= VAR1; VAR2") ); + + array[item++] = new TestCase( SECTION, "VAR1 = 1; VAR2= Infinity; VAR2 %= VAR1", Number.NaN, eval("VAR1 = 1; VAR2 = Number.POSITIVE_INFINITY; VAR2 %= VAR1; VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = -1; VAR2= Infinity; VAR2 %= VAR1", Number.NaN, eval("VAR1 = -1; VAR2 = Number.POSITIVE_INFINITY; VAR2 %= VAR1; VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = -1; VAR2= -Infinity; VAR2 %= VAR1", Number.NaN, eval("VAR1 = -1; VAR2 = Number.NEGATIVE_INFINITY; VAR2 %= VAR1; VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = 1; VAR2= -Infinity; VAR2 %= VAR1", Number.NaN, eval("VAR1 = 1; VAR2 = Number.NEGATIVE_INFINITY; VAR2 %= VAR1; VAR2") ); + + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= 0; VAR1 %= VAR2", Number.NaN, eval("VAR1 = 0; VAR2 = 0; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= -0; VAR1 %= VAR2", Number.NaN, eval("VAR1 = 0; VAR2 = -0; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= 0; VAR1 %= VAR2", Number.NaN, eval("VAR1 = -0; VAR2 = 0; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= -0; VAR1 %= VAR2", Number.NaN, eval("VAR1 = -0; VAR2 = -0; VAR1 %= VAR2; VAR1") ); + + array[item++] = new TestCase( SECTION, "VAR1 = 1; VAR2= 0; VAR1 %= VAR2", Number.NaN, eval("VAR1 = 1; VAR2 = 0; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 1; VAR2= -0; VAR1 %= VAR2", Number.NaN, eval("VAR1 = 1; VAR2 = -0; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -1; VAR2= 0; VAR1 %= VAR2", Number.NaN, eval("VAR1 = -1; VAR2 = 0; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -1; VAR2= -0; VAR1 %= VAR2", Number.NaN, eval("VAR1 = -1; VAR2 = -0; VAR1 %= VAR2; VAR1") ); + + // if the dividend is finite and the divisor is an infinity, the result equals the dividend. + + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= Infinity; VAR1 %= VAR2;VAR1", 0, eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= Infinity; VAR1 %= VAR2;VAR1", -0, eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= -Infinity; VAR1 %= VAR2;VAR1", -0, eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= -Infinity; VAR1 %= VAR2;VAR1", 0, eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2; VAR1") ); + + array[item++] = new TestCase( SECTION, "VAR1 = 1; VAR2= Infinity; VAR1 %= VAR2;VAR1", 1, eval("VAR1 = 1; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -1; VAR2= Infinity; VAR1 %= VAR2;VAR1", -1, eval("VAR1 = -1; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -1; VAR2= -Infinity; VAR1 %= VAR2;VAR1", -1, eval("VAR1 = -1; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 1; VAR2= -Infinity; VAR1 %= VAR2;VAR1", 1, eval("VAR1 = 1; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2; VAR1") ); + + // if the dividend is a zero and the divisor is finite, the result is the same as the dividend + + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= 1; VAR1 %= VAR2; VAR1", 0, eval("VAR1 = 0; VAR2 = 1; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= 1; VAR1 %= VAR2; VAR1", -0, eval("VAR1 = -0; VAR2 = 1; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= -1; VAR1 %= VAR2; VAR1", -0, eval("VAR1 = -0; VAR2 = -1; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= -1; VAR1 %= VAR2; VAR1", 0, eval("VAR1 = 0; VAR2 = -1; VAR1 %= VAR2; VAR1") ); + + // string cases + array[item++] = new TestCase( SECTION, "VAR1 = 1000; VAR2 = '10', VAR1 %= VAR2; VAR1", 0, eval("VAR1 = 1000; VAR2 = '10', VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = '1000'; VAR2 = 10, VAR1 %= VAR2; VAR1", 0, eval("VAR1 = '1000'; VAR2 = 10, VAR1 %= VAR2; VAR1") ); +/* + array[item++] = new TestCase( SECTION, "VAR1 = 10; VAR2 = '0XFF', VAR1 %= VAR2", 2550, eval("VAR1 = 10; VAR2 = '0XFF', VAR1 %= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 %= VAR2", 2550, eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 %= VAR2") ); + + array[item++] = new TestCase( SECTION, "VAR1 = '10'; VAR2 = '255', VAR1 %= VAR2", 2550, eval("VAR1 = '10'; VAR2 = '255', VAR1 %= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '10'; VAR2 = '0XFF', VAR1 %= VAR2", 2550, eval("VAR1 = '10'; VAR2 = '0XFF', VAR1 %= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 %= VAR2", 2550, eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 %= VAR2") ); + + // boolean cases + array[item++] = new TestCase( SECTION, "VAR1 = true; VAR2 = false; VAR1 %= VAR2", 0, eval("VAR1 = true; VAR2 = false; VAR1 %= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = true; VAR2 = true; VAR1 %= VAR2", 1, eval("VAR1 = true; VAR2 = true; VAR1 %= VAR2") ); + + // object cases + array[item++] = new TestCase( SECTION, "VAR1 = new Boolean(true); VAR2 = 10; VAR1 %= VAR2;VAR1", 10, eval("VAR1 = new Boolean(true); VAR2 = 10; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = new Number(11); VAR2 = 10; VAR1 %= VAR2; VAR1", 110, eval("VAR1 = new Number(11); VAR2 = 10; VAR1 %= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = new Number(11); VAR2 = new Number(10); VAR1 %= VAR2", 110, eval("VAR1 = new Number(11); VAR2 = new Number(10); VAR1 %= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 %= VAR2", 255, eval("VAR1 = String('15'); VAR2 = new String('0xF'); VAR1 %= VAR2") ); + +*/ + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason %= ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.2-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.2-4.js new file mode 100644 index 00000000000..edf79a73e86 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.2-4.js @@ -0,0 +1,137 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 11.13.2-4.js + ECMA Section: 11.13.2 Compound Assignment:+= + Description: + + *= /= %= += -= <<= >>= >>>= &= ^= |= + + 11.13.2 Compound assignment ( op= ) + + The production AssignmentExpression : + LeftHandSideExpression @ = AssignmentExpression, where @ represents one of + the operators indicated above, is evaluated as follows: + + 1. Evaluate LeftHandSideExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate AssignmentExpression. + 4. Call GetValue(Result(3)). + 5. Apply operator @ to Result(2) and Result(4). + 6. Call PutValue(Result(1), Result(5)). + 7. Return Result(5). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.13.2-4"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Compound Assignment: +="); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // If either operand is NaN, result is NaN + + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=1; VAR1 += VAR2", Number.NaN, eval("VAR1 = Number.NaN; VAR2=1; VAR1 += VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=1; VAR1 += VAR2; VAR1", Number.NaN, eval("VAR1 = Number.NaN; VAR2=1; VAR1 += VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=0; VAR1 += VAR2", Number.NaN, eval("VAR1 = Number.NaN; VAR2=0; VAR1 += VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=0; VAR1 += VAR2; VAR1", Number.NaN, eval("VAR1 = Number.NaN; VAR2=0; VAR1 += VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=NaN; VAR1 += VAR2", Number.NaN, eval("VAR1 = 0; VAR2=Number.NaN; VAR1 += VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=NaN; VAR1 += VAR2; VAR1", Number.NaN, eval("VAR1 = 0; VAR2=Number.NaN; VAR1 += VAR2; VAR1") ); + + // the sum of two Infinities the same sign is the infinity of that sign + // the sum of two Infinities of opposite sign is NaN + + array[item++] = new TestCase( SECTION, "VAR1 = Infinity; VAR2= Infinity; VAR1 += VAR2; VAR1", Number.POSITIVE_INFINITY, eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 += VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = Infinity; VAR2= -Infinity; VAR1 += VAR2; VAR1", Number.NaN, eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 += VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 =-Infinity; VAR2= Infinity; VAR1 += VAR2; VAR1", Number.NaN, eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 += VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 =-Infinity; VAR2=-Infinity; VAR1 += VAR2; VAR1", Number.NEGATIVE_INFINITY, eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 += VAR2; VAR1") ); + + // the sum of an infinity and a finite value is equal to the infinite operand + + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= Infinity; VAR1 += VAR2;VAR1", Number.POSITIVE_INFINITY, eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 += VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= Infinity; VAR1 += VAR2;VAR1", Number.POSITIVE_INFINITY, eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 += VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= -Infinity; VAR1 += VAR2;VAR1", Number.NEGATIVE_INFINITY, eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 += VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= -Infinity; VAR1 += VAR2;VAR1", Number.NEGATIVE_INFINITY, eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 += VAR2; VAR1") ); + + // the sum of two negative zeros is -0. the sum of two positive zeros, or of two zeros of opposite sign, is +0 + + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= 0; VAR1 += VAR2", 0, eval("VAR1 = 0; VAR2 = 0; VAR1 += VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= -0; VAR1 += VAR2", 0, eval("VAR1 = 0; VAR2 = -0; VAR1 += VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= 0; VAR1 += VAR2", 0, eval("VAR1 = -0; VAR2 = 0; VAR1 += VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= -0; VAR1 += VAR2", -0, eval("VAR1 = -0; VAR2 = -0; VAR1 += VAR2; VAR1") ); + + // the sum of a zero and a nonzero finite value is eqal to the nonzero operand + + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= 1; VAR2 += VAR1; VAR2", 1, eval("VAR1 = 0; VAR2 = 1; VAR2 += VAR1; VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= 1; VAR2 += VAR1; VAR2", 1, eval("VAR1 = -0; VAR2 = 1; VAR2 += VAR1; VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= -1; VAR2 += VAR1; VAR2", -1, eval("VAR1 = -0; VAR2 = -1; VAR2 += VAR1; VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= -1; VAR2 += VAR1; VAR2", -1, eval("VAR1 = 0; VAR2 = -1; VAR2 += VAR1; VAR2") ); + + // the sum of a zero and a nozero finite value is equal to the nonzero operand. + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=1; VAR1 += VAR2", 1, eval("VAR1 = 0; VAR2=1; VAR1 += VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=1; VAR1 += VAR2;VAR1", 1, eval("VAR1 = 0; VAR2=1; VAR1 += VAR2;VAR1") ); + + // the sum of two nonzero finite values of the same magnitude and opposite sign is +0 + array[item++] = new TestCase( SECTION, "VAR1 = Number.MAX_VALUE; VAR2= -Number.MAX_VALUE; VAR1 += VAR2; VAR1", 0, eval("VAR1 = Number.MAX_VALUE; VAR2= -Number.MAX_VALUE; VAR1 += VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = Number.MIN_VALUE; VAR2= -Number.MIN_VALUE; VAR1 += VAR2; VAR1", 0, eval("VAR1 = Number.MIN_VALUE; VAR2= -Number.MIN_VALUE; VAR1 += VAR2; VAR1") ); + +/* + array[item++] = new TestCase( SECTION, "VAR1 = 10; VAR2 = '0XFF', VAR1 += VAR2", 2550, eval("VAR1 = 10; VAR2 = '0XFF', VAR1 += VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 += VAR2", 2550, eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 += VAR2") ); + + array[item++] = new TestCase( SECTION, "VAR1 = '10'; VAR2 = '255', VAR1 += VAR2", 2550, eval("VAR1 = '10'; VAR2 = '255', VAR1 += VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '10'; VAR2 = '0XFF', VAR1 += VAR2", 2550, eval("VAR1 = '10'; VAR2 = '0XFF', VAR1 += VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 += VAR2", 2550, eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 += VAR2") ); + + // boolean cases + array[item++] = new TestCase( SECTION, "VAR1 = true; VAR2 = false; VAR1 += VAR2", 0, eval("VAR1 = true; VAR2 = false; VAR1 += VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = true; VAR2 = true; VAR1 += VAR2", 1, eval("VAR1 = true; VAR2 = true; VAR1 += VAR2") ); + + // object cases + array[item++] = new TestCase( SECTION, "VAR1 = new Boolean(true); VAR2 = 10; VAR1 += VAR2;VAR1", 10, eval("VAR1 = new Boolean(true); VAR2 = 10; VAR1 += VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = new Number(11); VAR2 = 10; VAR1 += VAR2; VAR1", 110, eval("VAR1 = new Number(11); VAR2 = 10; VAR1 += VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = new Number(11); VAR2 = new Number(10); VAR1 += VAR2", 110, eval("VAR1 = new Number(11); VAR2 = new Number(10); VAR1 += VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 += VAR2", 255, eval("VAR1 = String('15'); VAR2 = new String('0xF'); VAR1 += VAR2") ); + +*/ + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.2-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.2-5.js new file mode 100644 index 00000000000..6923befee99 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.2-5.js @@ -0,0 +1,137 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 11.13.2-5.js + ECMA Section: 11.13.2 Compound Assignment: -= + Description: + + *= /= %= -= -= <<= >>= >>>= &= ^= |= + + 11.13.2 Compound assignment ( op= ) + + The production AssignmentExpression : + LeftHandSideExpression @ = AssignmentExpression, where @ represents one of + the operators indicated above, is evaluated as follows: + + 1. Evaluate LeftHandSideExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate AssignmentExpression. + 4. Call GetValue(Result(3)). + 5. Apply operator @ to Result(2) and Result(4). + 6. Call PutValue(Result(1), Result(5)). + 7. Return Result(5). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.13.2-5"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Compound Assignment: -="); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // If either operand is NaN, result is NaN + + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=1; VAR1 -= VAR2", Number.NaN, eval("VAR1 = Number.NaN; VAR2=1; VAR1 -= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=1; VAR1 -= VAR2; VAR1", Number.NaN, eval("VAR1 = Number.NaN; VAR2=1; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=0; VAR1 -= VAR2", Number.NaN, eval("VAR1 = Number.NaN; VAR2=0; VAR1 -= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = NaN; VAR2=0; VAR1 -= VAR2; VAR1", Number.NaN, eval("VAR1 = Number.NaN; VAR2=0; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=NaN; VAR1 -= VAR2", Number.NaN, eval("VAR1 = 0; VAR2=Number.NaN; VAR1 -= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=NaN; VAR1 -= VAR2; VAR1", Number.NaN, eval("VAR1 = 0; VAR2=Number.NaN; VAR1 -= VAR2; VAR1") ); + + // the sum of two Infinities the same sign is the infinity of that sign + // the sum of two Infinities of opposite sign is NaN + + array[item++] = new TestCase( SECTION, "VAR1 = Infinity; VAR2= Infinity; VAR1 -= VAR2; VAR1", Number.NaN, eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = Infinity; VAR2= -Infinity; VAR1 -= VAR2; VAR1", Number.POSITIVE_INFINITY, eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 =-Infinity; VAR2= Infinity; VAR1 -= VAR2; VAR1", Number.NEGATIVE_INFINITY, eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 =-Infinity; VAR2=-Infinity; VAR1 -= VAR2; VAR1", Number.NaN, eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 -= VAR2; VAR1") ); + + // the sum of an infinity and a finite value is equal to the infinite operand + + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= Infinity; VAR1 -= VAR2;VAR1", Number.NEGATIVE_INFINITY, eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= Infinity; VAR1 -= VAR2;VAR1", Number.NEGATIVE_INFINITY, eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= -Infinity; VAR1 -= VAR2;VAR1", Number.POSITIVE_INFINITY, eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= -Infinity; VAR1 -= VAR2;VAR1", Number.POSITIVE_INFINITY, eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 -= VAR2; VAR1") ); + + // the sum of two negative zeros is -0. the sum of two positive zeros, or of two zeros of opposite sign, is +0 + + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= -0; VAR1 -= VAR2", 0, eval("VAR1 = 0; VAR2 = 0; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= 0; VAR1 -= VAR2", 0, eval("VAR1 = 0; VAR2 = -0; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= -0; VAR1 -= VAR2", 0, eval("VAR1 = -0; VAR2 = 0; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= 0; VAR1 -= VAR2", -0, eval("VAR1 = -0; VAR2 = -0; VAR1 -= VAR2; VAR1") ); + + // the sum of a zero and a nonzero finite value is eqal to the nonzero operand + + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= -1; VAR1 -= VAR2; VAR1", 1, eval("VAR1 = 0; VAR2 = -1; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= -1; VAR1 -= VAR2; VAR1", 1, eval("VAR1 = -0; VAR2 = -1; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = -0; VAR2= 1; VAR1 -= VAR2; VAR1", -1, eval("VAR1 = -0; VAR2 = 1; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2= 1; VAR1 -= VAR2; VAR1", -1, eval("VAR1 = 0; VAR2 = 1; VAR1 -= VAR2; VAR1") ); + + // the sum of a zero and a nozero finite value is equal to the nonzero operand. + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=-1; VAR1 -= VAR2", 1, eval("VAR1 = 0; VAR2=-1; VAR1 -= VAR2;VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = 0; VAR2=-1; VAR1 -= VAR2;VAR1", 1, eval("VAR1 = 0; VAR2=-1; VAR1 -= VAR2;VAR1") ); + + // the sum of two nonzero finite values of the same magnitude and opposite sign is +0 + array[item++] = new TestCase( SECTION, "VAR1 = Number.MAX_VALUE; VAR2= Number.MAX_VALUE; VAR1 -= VAR2; VAR1", 0, eval("VAR1 = Number.MAX_VALUE; VAR2= Number.MAX_VALUE; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = Number.MIN_VALUE; VAR2= Number.MIN_VALUE; VAR1 -= VAR2; VAR1", 0, eval("VAR1 = Number.MIN_VALUE; VAR2= Number.MIN_VALUE; VAR1 -= VAR2; VAR1") ); + +/* + array[item++] = new TestCase( SECTION, "VAR1 = 10; VAR2 = '0XFF', VAR1 -= VAR2", 2550, eval("VAR1 = 10; VAR2 = '0XFF', VAR1 -= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 -= VAR2", 2550, eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 -= VAR2") ); + + array[item++] = new TestCase( SECTION, "VAR1 = '10'; VAR2 = '255', VAR1 -= VAR2", 2550, eval("VAR1 = '10'; VAR2 = '255', VAR1 -= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '10'; VAR2 = '0XFF', VAR1 -= VAR2", 2550, eval("VAR1 = '10'; VAR2 = '0XFF', VAR1 -= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 -= VAR2", 2550, eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 -= VAR2") ); + + // boolean cases + array[item++] = new TestCase( SECTION, "VAR1 = true; VAR2 = false; VAR1 -= VAR2", 0, eval("VAR1 = true; VAR2 = false; VAR1 -= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = true; VAR2 = true; VAR1 -= VAR2", 1, eval("VAR1 = true; VAR2 = true; VAR1 -= VAR2") ); + + // object cases + array[item++] = new TestCase( SECTION, "VAR1 = new Boolean(true); VAR2 = 10; VAR1 -= VAR2;VAR1", 10, eval("VAR1 = new Boolean(true); VAR2 = 10; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = new Number(11); VAR2 = 10; VAR1 -= VAR2; VAR1", 110, eval("VAR1 = new Number(11); VAR2 = 10; VAR1 -= VAR2; VAR1") ); + array[item++] = new TestCase( SECTION, "VAR1 = new Number(11); VAR2 = new Number(10); VAR1 -= VAR2", 110, eval("VAR1 = new Number(11); VAR2 = new Number(10); VAR1 -= VAR2") ); + array[item++] = new TestCase( SECTION, "VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 -= VAR2", 255, eval("VAR1 = String('15'); VAR2 = new String('0xF'); VAR1 -= VAR2") ); + +*/ + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason -= ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.js new file mode 100644 index 00000000000..73b4d19f311 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.13.js @@ -0,0 +1,86 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 11.12.js + ECMA Section: 11.12 Conditional Operator + Description: + Logi + + calORExpression ? AssignmentExpression : AssignmentExpression + + Semantics + + The production ConditionalExpression : + LogicalORExpression ? AssignmentExpression : AssignmentExpression + is evaluated as follows: + + 1. Evaluate LogicalORExpression. + 2. Call GetValue(Result(1)). + 3. Call ToBoolean(Result(2)). + 4. If Result(3) is false, go to step 8. + 5. Evaluate the first AssignmentExpression. + 6. Call GetValue(Result(5)). + 7. Return Result(6). + 8. Evaluate the second AssignmentExpression. + 9. Call GetValue(Result(8)). + 10. Return Result(9). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.12"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Conditional operator( ? : )"); + test(); +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "true ? 'PASSED' : 'FAILED'", "PASSED", (true?"PASSED":"FAILED")); + array[item++] = new TestCase( SECTION, "false ? 'FAILED' : 'PASSED'", "PASSED", (false?"FAILED":"PASSED")); + + array[item++] = new TestCase( SECTION, "1 ? 'PASSED' : 'FAILED'", "PASSED", (true?"PASSED":"FAILED")); + array[item++] = new TestCase( SECTION, "0 ? 'FAILED' : 'PASSED'", "PASSED", (false?"FAILED":"PASSED")); + array[item++] = new TestCase( SECTION, "-1 ? 'PASSED' : 'FAILED'", "PASSED", (true?"PASSED":"FAILED")); + + array[item++] = new TestCase( SECTION, "NaN ? 'FAILED' : 'PASSED'", "PASSED", (Number.NaN?"FAILED":"PASSED")); + + array[item++] = new TestCase( SECTION, "var VAR = true ? , : 'FAILED'", "PASSED", (VAR = true ? "PASSED" : "FAILED") ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.14-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.14-1.js new file mode 100644 index 00000000000..bd3e8f13690 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.14-1.js @@ -0,0 +1,73 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.14-1.js + ECMA Section: 11.14 Comma operator (,) + Description: + Expression : + + AssignmentExpression + Expression , AssignmentExpression + + Semantics + + The production Expression : Expression , AssignmentExpression is evaluated as follows: + + 1. Evaluate Expression. + 2. Call GetValue(Result(1)). + 3. Evaluate AssignmentExpression. + 4. Call GetValue(Result(3)). + 5. Return Result(4). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.14-1"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Comma operator (,)"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "true, false", false, eval("true, false") ); + array[item++] = new TestCase( SECTION, "VAR1=true, VAR2=false", false, eval("VAR1=true, VAR2=false") ); + array[item++] = new TestCase( SECTION, "VAR1=true, VAR2=false;VAR1", true, eval("VAR1=true, VAR2=false; VAR1") ); + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.1-1.js new file mode 100644 index 00000000000..6144c9abed7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.1-1.js @@ -0,0 +1,268 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.1-1.js + ECMA Section: 11.2.1 Property Accessors + Description: + + Properties are accessed by name, using either the dot notation: + MemberExpression . Identifier + CallExpression . Identifier + + or the bracket notation: MemberExpression [ Expression ] + CallExpression [ Expression ] + + The dot notation is explained by the following syntactic conversion: + MemberExpression . Identifier + is identical in its behavior to + MemberExpression [ ] + and similarly + CallExpression . Identifier + is identical in its behavior to + CallExpression [ ] + where is a string literal containing the same sequence + of characters as the Identifier. + + The production MemberExpression : MemberExpression [ Expression ] is + evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Expression. + 4. Call GetValue(Result(3)). + 5. Call ToObject(Result(2)). + 6. Call ToString(Result(4)). + 7. Return a value of type Reference whose base object is Result(5) and + whose property name is Result(6). + + The production CallExpression : CallExpression [ Expression ] is evaluated + in exactly the same manner, except that the contained CallExpression is + evaluated in step 1. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.2.1-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Property Accessors"; + writeHeaderToLog( SECTION + " "+TITLE ); + + var testcases = new Array(); + + // go through all Native Function objects, methods, and properties and get their typeof. + + var PROPERTY = new Array(); + var p = 0; + + // properties and functions of the global object + + PROPERTY[p++] = new Property( "this", "NaN", "number" ); + PROPERTY[p++] = new Property( "this", "Infinity", "number" ); + PROPERTY[p++] = new Property( "this", "eval", "function" ); + PROPERTY[p++] = new Property( "this", "parseInt", "function" ); + PROPERTY[p++] = new Property( "this", "parseFloat", "function" ); + PROPERTY[p++] = new Property( "this", "escape", "function" ); + PROPERTY[p++] = new Property( "this", "unescape", "function" ); + PROPERTY[p++] = new Property( "this", "isNaN", "function" ); + PROPERTY[p++] = new Property( "this", "isFinite", "function" ); + PROPERTY[p++] = new Property( "this", "Object", "function" ); + PROPERTY[p++] = new Property( "this", "Number", "function" ); + PROPERTY[p++] = new Property( "this", "Function", "function" ); + PROPERTY[p++] = new Property( "this", "Array", "function" ); + PROPERTY[p++] = new Property( "this", "String", "function" ); + PROPERTY[p++] = new Property( "this", "Boolean", "function" ); + PROPERTY[p++] = new Property( "this", "Date", "function" ); + PROPERTY[p++] = new Property( "this", "Math", "object" ); + + // properties and methods of Object objects + + PROPERTY[p++] = new Property( "Object", "prototype", "object" ); + PROPERTY[p++] = new Property( "Object", "toString", "function" ); + PROPERTY[p++] = new Property( "Object", "valueOf", "function" ); + PROPERTY[p++] = new Property( "Object", "constructor", "function" ); + + // properties of the Function object + + PROPERTY[p++] = new Property( "Function", "prototype", "function" ); + PROPERTY[p++] = new Property( "Function.prototype", "toString", "function" ); + PROPERTY[p++] = new Property( "Function.prototype", "length", "number" ); + PROPERTY[p++] = new Property( "Function.prototype", "valueOf", "function" ); + + Function.prototype.myProperty = "hi"; + + PROPERTY[p++] = new Property( "Function.prototype", "myProperty", "string" ); + + // properties of the Array object + PROPERTY[p++] = new Property( "Array", "prototype", "object" ); + PROPERTY[p++] = new Property( "Array", "length", "number" ); + PROPERTY[p++] = new Property( "Array.prototype", "constructor", "function" ); + PROPERTY[p++] = new Property( "Array.prototype", "toString", "function" ); + PROPERTY[p++] = new Property( "Array.prototype", "join", "function" ); + PROPERTY[p++] = new Property( "Array.prototype", "reverse", "function" ); + PROPERTY[p++] = new Property( "Array.prototype", "sort", "function" ); + + // properties of the String object + PROPERTY[p++] = new Property( "String", "prototype", "object" ); + PROPERTY[p++] = new Property( "String", "fromCharCode", "function" ); + PROPERTY[p++] = new Property( "String.prototype", "toString", "function" ); + PROPERTY[p++] = new Property( "String.prototype", "constructor", "function" ); + PROPERTY[p++] = new Property( "String.prototype", "valueOf", "function" ); + PROPERTY[p++] = new Property( "String.prototype", "charAt", "function" ); + PROPERTY[p++] = new Property( "String.prototype", "charCodeAt", "function" ); + PROPERTY[p++] = new Property( "String.prototype", "indexOf", "function" ); + PROPERTY[p++] = new Property( "String.prototype", "lastIndexOf", "function" ); + PROPERTY[p++] = new Property( "String.prototype", "split", "function" ); + PROPERTY[p++] = new Property( "String.prototype", "substring", "function" ); + PROPERTY[p++] = new Property( "String.prototype", "toLowerCase", "function" ); + PROPERTY[p++] = new Property( "String.prototype", "toUpperCase", "function" ); + PROPERTY[p++] = new Property( "String.prototype", "length", "number" ); + + // properties of the Boolean object + PROPERTY[p++] = new Property( "Boolean", "prototype", "object" ); + PROPERTY[p++] = new Property( "Boolean", "constructor", "function" ); + PROPERTY[p++] = new Property( "Boolean.prototype", "valueOf", "function" ); + PROPERTY[p++] = new Property( "Boolean.prototype", "toString", "function" ); + + // properties of the Number object + + PROPERTY[p++] = new Property( "Number", "MAX_VALUE", "number" ); + PROPERTY[p++] = new Property( "Number", "MIN_VALUE", "number" ); + PROPERTY[p++] = new Property( "Number", "NaN", "number" ); + PROPERTY[p++] = new Property( "Number", "NEGATIVE_INFINITY", "number" ); + PROPERTY[p++] = new Property( "Number", "POSITIVE_INFINITY", "number" ); + PROPERTY[p++] = new Property( "Number.prototype", "toString", "function" ); + PROPERTY[p++] = new Property( "Number.prototype", "constructor", "function" ); + PROPERTY[p++] = new Property( "Number.prototype", "valueOf", "function" ); + + // properties of the Math Object. + PROPERTY[p++] = new Property( "Math", "E", "number" ); + PROPERTY[p++] = new Property( "Math", "LN10", "number" ); + PROPERTY[p++] = new Property( "Math", "LN2", "number" ); + PROPERTY[p++] = new Property( "Math", "LOG2E", "number" ); + PROPERTY[p++] = new Property( "Math", "LOG10E", "number" ); + PROPERTY[p++] = new Property( "Math", "PI", "number" ); + PROPERTY[p++] = new Property( "Math", "SQRT1_2", "number" ); + PROPERTY[p++] = new Property( "Math", "SQRT2", "number" ); + PROPERTY[p++] = new Property( "Math", "abs", "function" ); + PROPERTY[p++] = new Property( "Math", "acos", "function" ); + PROPERTY[p++] = new Property( "Math", "asin", "function" ); + PROPERTY[p++] = new Property( "Math", "atan", "function" ); + PROPERTY[p++] = new Property( "Math", "atan2", "function" ); + PROPERTY[p++] = new Property( "Math", "ceil", "function" ); + PROPERTY[p++] = new Property( "Math", "cos", "function" ); + PROPERTY[p++] = new Property( "Math", "exp", "function" ); + PROPERTY[p++] = new Property( "Math", "floor", "function" ); + PROPERTY[p++] = new Property( "Math", "log", "function" ); + PROPERTY[p++] = new Property( "Math", "max", "function" ); + PROPERTY[p++] = new Property( "Math", "min", "function" ); + PROPERTY[p++] = new Property( "Math", "pow", "function" ); + PROPERTY[p++] = new Property( "Math", "random", "function" ); + PROPERTY[p++] = new Property( "Math", "round", "function" ); + PROPERTY[p++] = new Property( "Math", "sin", "function" ); + PROPERTY[p++] = new Property( "Math", "sqrt", "function" ); + PROPERTY[p++] = new Property( "Math", "tan", "function" ); + + // properties of the Date object + PROPERTY[p++] = new Property( "Date", "parse", "function" ); + PROPERTY[p++] = new Property( "Date", "prototype", "object" ); + PROPERTY[p++] = new Property( "Date", "UTC", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "constructor", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "toString", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "valueOf", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getTime", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getYear", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getFullYear", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getUTCFullYear", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getMonth", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getUTCMonth", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getDate", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getUTCDate", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getDay", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getUTCDay", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getHours", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getUTCHours", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getMinutes", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getUTCMinutes", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getSeconds", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getUTCSeconds", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getMilliseconds","function" ); + PROPERTY[p++] = new Property( "Date.prototype", "getUTCMilliseconds", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setTime", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setMilliseconds","function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setUTCMilliseconds", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setSeconds", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setUTCSeconds", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setMinutes", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setUTCMinutes", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setHours", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setUTCHours", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setDate", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setUTCDate", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setMonth", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setUTCMonth", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setFullYear", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setUTCFullYear", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "setYear", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "toLocaleString", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "toUTCString", "function" ); + PROPERTY[p++] = new Property( "Date.prototype", "toGMTString", "function" ); + + for ( var i = 0, RESULT; i < PROPERTY.length; i++ ) { + RESULT = eval("typeof " + PROPERTY[i].object + "." + PROPERTY[i].name ); + + testcases[tc++] = new TestCase( SECTION, + "typeof " + PROPERTY[i].object + "." + PROPERTY[i].name, + PROPERTY[i].type, + RESULT ); + + RESULT = eval("typeof " + PROPERTY[i].object + "['" + PROPERTY[i].name +"']"); + + testcases[tc++] = new TestCase( SECTION, + "typeof " + PROPERTY[i].object + "['" + PROPERTY[i].name +"']", + PROPERTY[i].type, + RESULT ); + } + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( arg0, arg1, arg2, arg3, arg4 ) { + this.name = arg0; +} +function Property( object, name, type ) { + this.object = object; + this.name = name; + this.type = type; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.1-2.js new file mode 100644 index 00000000000..fa3056b357c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.1-2.js @@ -0,0 +1,124 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.1-2.js + ECMA Section: 11.2.1 Property Accessors + Description: + + Properties are accessed by name, using either the dot notation: + MemberExpression . Identifier + CallExpression . Identifier + + or the bracket notation: MemberExpression [ Expression ] + CallExpression [ Expression ] + + The dot notation is explained by the following syntactic conversion: + MemberExpression . Identifier + is identical in its behavior to + MemberExpression [ ] + and similarly + CallExpression . Identifier + is identical in its behavior to + CallExpression [ ] + where is a string literal containing the same sequence + of characters as the Identifier. + + The production MemberExpression : MemberExpression [ Expression ] is + evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Expression. + 4. Call GetValue(Result(3)). + 5. Call ToObject(Result(2)). + 6. Call ToString(Result(4)). + 7. Return a value of type Reference whose base object is Result(5) and + whose property name is Result(6). + + The production CallExpression : CallExpression [ Expression ] is evaluated + in exactly the same manner, except that the contained CallExpression is + evaluated in step 1. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.2.1-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Property Accessors"; + writeHeaderToLog( SECTION + " "+TITLE ); + + var testcases = new Array(); + + // go through all Native Function objects, methods, and properties and get their typeof. + + var PROPERTY = new Array(); + var p = 0; + + // try to access properties of primitive types + + PROPERTY[p++] = new Property( "\"hi\"", "hi", "hi", NaN ); + PROPERTY[p++] = new Property( NaN, NaN, "NaN", NaN ); +// PROPERTY[p++] = new Property( 3, 3, "3", 3 ); + PROPERTY[p++] = new Property( true, true, "true", 1 ); + PROPERTY[p++] = new Property( false, false, "false", 0 ); + + for ( var i = 0, RESULT; i < PROPERTY.length; i++ ) { + testcases[tc++] = new TestCase( SECTION, + PROPERTY[i].object + ".valueOf()", + PROPERTY[i].value, + eval( PROPERTY[i].object+ ".valueOf()" ) ); + + testcases[tc++] = new TestCase( SECTION, + PROPERTY[i].object + ".toString()", + PROPERTY[i].string, + eval( PROPERTY[i].object+ ".toString()" ) ); + + } + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.stringValue = value +""; + this.numberValue = Number(value); + return this; +} +function Property( object, value, string, number ) { + this.object = object; + this.string = String(value); + this.number = Number(value); + this.value = value; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.1-3-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.1-3-n.js new file mode 100644 index 00000000000..f84bb287a27 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.1-3-n.js @@ -0,0 +1,120 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.1-2.js + ECMA Section: 11.2.1 Property Accessors + Description: + + Properties are accessed by name, using either the dot notation: + MemberExpression . Identifier + CallExpression . Identifier + + or the bracket notation: MemberExpression [ Expression ] + CallExpression [ Expression ] + + The dot notation is explained by the following syntactic conversion: + MemberExpression . Identifier + is identical in its behavior to + MemberExpression [ ] + and similarly + CallExpression . Identifier + is identical in its behavior to + CallExpression [ ] + where is a string literal containing the same sequence + of characters as the Identifier. + + The production MemberExpression : MemberExpression [ Expression ] is + evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Expression. + 4. Call GetValue(Result(3)). + 5. Call ToObject(Result(2)). + 6. Call ToString(Result(4)). + 7. Return a value of type Reference whose base object is Result(5) and + whose property name is Result(6). + + The production CallExpression : CallExpression [ Expression ] is evaluated + in exactly the same manner, except that the contained CallExpression is + evaluated in step 1. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.2.1-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Property Accessors"; + writeHeaderToLog( SECTION + " "+TITLE ); + + var testcases = new Array(); + + // go through all Native Function objects, methods, and properties and get their typeof. + + var PROPERTY = new Array(); + var p = 0; + + // try to access properties of primitive types + + PROPERTY[p++] = new Property( "undefined", void 0, "undefined", NaN ); + + for ( var i = 0, RESULT; i < PROPERTY.length; i++ ) { + testcases[tc++] = new TestCase( SECTION, + PROPERTY[i].object + ".valueOf()", + PROPERTY[i].value, + eval( PROPERTY[i].object+ ".valueOf()" ) ); + + testcases[tc++] = new TestCase( SECTION, + PROPERTY[i].object + ".toString()", + PROPERTY[i].string, + eval( PROPERTY[i].object+ ".toString()" ) ); + + } + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.stringValue = value +""; + this.numberValue = Number(value); + return this; +} +function Property( object, value, string, number ) { + this.object = object; + this.string = String(value); + this.number = Number(value); + this.value = value; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.1-4-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.1-4-n.js new file mode 100644 index 00000000000..01272531a47 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.1-4-n.js @@ -0,0 +1,120 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.1-4-n.js + ECMA Section: 11.2.1 Property Accessors + Description: + + Properties are accessed by name, using either the dot notation: + MemberExpression . Identifier + CallExpression . Identifier + + or the bracket notation: MemberExpression [ Expression ] + CallExpression [ Expression ] + + The dot notation is explained by the following syntactic conversion: + MemberExpression . Identifier + is identical in its behavior to + MemberExpression [ ] + and similarly + CallExpression . Identifier + is identical in its behavior to + CallExpression [ ] + where is a string literal containing the same sequence + of characters as the Identifier. + + The production MemberExpression : MemberExpression [ Expression ] is + evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Expression. + 4. Call GetValue(Result(3)). + 5. Call ToObject(Result(2)). + 6. Call ToString(Result(4)). + 7. Return a value of type Reference whose base object is Result(5) and + whose property name is Result(6). + + The production CallExpression : CallExpression [ Expression ] is evaluated + in exactly the same manner, except that the contained CallExpression is + evaluated in step 1. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.2.1-4-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Property Accessors"; + writeHeaderToLog( SECTION + " "+TITLE ); + + var testcases = new Array(); + + // go through all Native Function objects, methods, and properties and get their typeof. + + var PROPERTY = new Array(); + var p = 0; + + // try to access properties of primitive types + + PROPERTY[p++] = new Property( "null", null, "null", 0 ); + + for ( var i = 0, RESULT; i < PROPERTY.length; i++ ) { + testcases[tc++] = new TestCase( SECTION, + PROPERTY[i].object + ".valueOf()", + PROPERTY[i].value, + eval( PROPERTY[i].object+ ".valueOf()" ) ); + + testcases[tc++] = new TestCase( SECTION, + PROPERTY[i].object + ".toString()", + PROPERTY[i].string, + eval( PROPERTY[i].object+ ".toString()" ) ); + + } + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.stringValue = value +""; + this.numberValue = Number(value); + return this; +} +function Property( object, value, string, number ) { + this.object = object; + this.string = String(value); + this.number = Number(value); + this.value = value; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.1-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.1-5.js new file mode 100644 index 00000000000..0cb19c9d21e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.1-5.js @@ -0,0 +1,124 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.1-5.js + ECMA Section: 11.2.1 Property Accessors + Description: + + Properties are accessed by name, using either the dot notation: + MemberExpression . Identifier + CallExpression . Identifier + + or the bracket notation: MemberExpression [ Expression ] + CallExpression [ Expression ] + + The dot notation is explained by the following syntactic conversion: + MemberExpression . Identifier + is identical in its behavior to + MemberExpression [ ] + and similarly + CallExpression . Identifier + is identical in its behavior to + CallExpression [ ] + where is a string literal containing the same sequence + of characters as the Identifier. + + The production MemberExpression : MemberExpression [ Expression ] is + evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Expression. + 4. Call GetValue(Result(3)). + 5. Call ToObject(Result(2)). + 6. Call ToString(Result(4)). + 7. Return a value of type Reference whose base object is Result(5) and + whose property name is Result(6). + + The production CallExpression : CallExpression [ Expression ] is evaluated + in exactly the same manner, except that the contained CallExpression is + evaluated in step 1. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.2.1-5"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Property Accessors"; + writeHeaderToLog( SECTION + " "+TITLE ); + + var testcases = new Array(); + + // go through all Native Function objects, methods, and properties and get their typeof. + + var PROPERTY = new Array(); + var p = 0; + + // try to access properties of primitive types + + PROPERTY[p++] = new Property( new String("hi"), "hi", "hi", NaN ); + PROPERTY[p++] = new Property( new Number(NaN), NaN, "NaN", NaN ); + PROPERTY[p++] = new Property( new Number(3), 3, "3", 3 ); + PROPERTY[p++] = new Property( new Boolean(true), true, "true", 1 ); + PROPERTY[p++] = new Property( new Boolean(false), false, "false", 0 ); + + for ( var i = 0, RESULT; i < PROPERTY.length; i++ ) { + testcases[tc++] = new TestCase( SECTION, + PROPERTY[i].object + ".valueOf()", + PROPERTY[i].value, + eval( "PROPERTY[i].object.valueOf()" ) ); + + testcases[tc++] = new TestCase( SECTION, + PROPERTY[i].object + ".toString()", + PROPERTY[i].string, + eval( "PROPERTY[i].object.toString()" ) ); + + } + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.stringValue = value +""; + this.numberValue = Number(value); + return this; +} +function Property( object, value, string, number ) { + this.object = object; + this.string = String(value); + this.number = Number(value); + this.value = value; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-1-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-1-n.js new file mode 100644 index 00000000000..db73cadb722 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-1-n.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.2-1.js + ECMA Section: 11.2.2. The new operator + Description: + + MemberExpression: + PrimaryExpression + MemberExpression[Expression] + MemberExpression.Identifier + new MemberExpression Arguments + + new NewExpression + + The production NewExpression : new NewExpression is evaluated as follows: + + 1. Evaluate NewExpression. + 2. Call GetValue(Result(1)). + 3. If Type(Result(2)) is not Object, generate a runtime error. + 4. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 5. Call the [[Construct]] method on Result(2), providing no arguments + (that is, an empty list of arguments). + 6. If Type(Result(5)) is not Object, generate a runtime error. + 7. Return Result(5). + + The production MemberExpression : new MemberExpression Arguments is evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Arguments, producing an internal list of argument values + (section 0). + 4. If Type(Result(2)) is not Object, generate a runtime error. + 5. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 6. Call the [[Construct]] method on Result(2), providing the list + Result(3) as the argument values. + 7. If Type(Result(6)) is not Object, generate a runtime error. + 8 .Return Result(6). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.2-1-n.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The new operator"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + + var OBJECT = new Object(); + + testcases[tc++] = new TestCase( SECTION, + "OBJECT = new Object; var o = new OBJECT()", + "error", + o = new OBJECT() ); + test(); + +function TestFunction() { + return arguments; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-1.js new file mode 100644 index 00000000000..48c2e6a6c14 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-1.js @@ -0,0 +1,99 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.2-1.js + ECMA Section: 11.2.2. The new operator + Description: + + MemberExpression: + PrimaryExpression + MemberExpression[Expression] + MemberExpression.Identifier + new MemberExpression Arguments + + new NewExpression + + The production NewExpression : new NewExpression is evaluated as follows: + + 1. Evaluate NewExpression. + 2. Call GetValue(Result(1)). + 3. If Type(Result(2)) is not Object, generate a runtime error. + 4. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 5. Call the [[Construct]] method on Result(2), providing no arguments + (that is, an empty list of arguments). + 6. If Type(Result(5)) is not Object, generate a runtime error. + 7. Return Result(5). + + The production MemberExpression : new MemberExpression Arguments is evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Arguments, producing an internal list of argument values + (section 0). + 4. If Type(Result(2)) is not Object, generate a runtime error. + 5. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 6. Call the [[Construct]] method on Result(2), providing the list + Result(3) as the argument values. + 7. If Type(Result(6)) is not Object, generate a runtime error. + 8 .Return Result(6). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The new operator"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + + testcases[tc++] = new TestCase( SECTION, + "(new TestFunction(0,1,2,3,4,5)).length", + 6, + (new TestFunction(0,1,2,3,4,5)).length ); + + + + test(); + +function TestFunction() { + return arguments; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-10-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-10-n.js new file mode 100644 index 00000000000..619554d07fe --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-10-n.js @@ -0,0 +1,96 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.2-9-n.js + ECMA Section: 11.2.2. The new operator + Description: + + MemberExpression: + PrimaryExpression + MemberExpression[Expression] + MemberExpression.Identifier + new MemberExpression Arguments + + new NewExpression + + The production NewExpression : new NewExpression is evaluated as follows: + + 1. Evaluate NewExpression. + 2. Call GetValue(Result(1)). + 3. If Type(Result(2)) is not Object, generate a runtime error. + 4. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 5. Call the [[Construct]] method on Result(2), providing no arguments + (that is, an empty list of arguments). + 6. If Type(Result(5)) is not Object, generate a runtime error. + 7. Return Result(5). + + The production MemberExpression : new MemberExpression Arguments is evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Arguments, producing an internal list of argument values + (section 0). + 4. If Type(Result(2)) is not Object, generate a runtime error. + 5. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 6. Call the [[Construct]] method on Result(2), providing the list + Result(3) as the argument values. + 7. If Type(Result(6)) is not Object, generate a runtime error. + 8 .Return Result(6). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.2-9-n.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The new operator"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + + testcases[tc++] = new TestCase( SECTION, + "var m = new Math()", + "error", + m = new Math() ); + test(); + +function TestFunction() { + return arguments; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-11.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-11.js new file mode 100644 index 00000000000..a6f7364aa47 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-11.js @@ -0,0 +1,99 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.2-9-n.js + ECMA Section: 11.2.2. The new operator + Description: + + MemberExpression: + PrimaryExpression + MemberExpression[Expression] + MemberExpression.Identifier + new MemberExpression Arguments + + new NewExpression + + The production NewExpression : new NewExpression is evaluated as follows: + + 1. Evaluate NewExpression. + 2. Call GetValue(Result(1)). + 3. If Type(Result(2)) is not Object, generate a runtime error. + 4. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 5. Call the [[Construct]] method on Result(2), providing no arguments + (that is, an empty list of arguments). + 6. If Type(Result(5)) is not Object, generate a runtime error. + 7. Return Result(5). + + The production MemberExpression : new MemberExpression Arguments is evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Arguments, producing an internal list of argument values + (section 0). + 4. If Type(Result(2)) is not Object, generate a runtime error. + 5. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 6. Call the [[Construct]] method on Result(2), providing the list + Result(3) as the argument values. + 7. If Type(Result(6)) is not Object, generate a runtime error. + 8 Return Result(6). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.2-9-n.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The new operator"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var FUNCTION = new Function(); + + testcases[tc++] = new TestCase( SECTION, + "var FUNCTION = new Function(); f = new FUNCTION(); typeof f", + "object", + eval("var FUNCTION = new Function(); f = new FUNCTION(); typeof f") ); + + testcases[tc++] = new TestCase( SECTION, + "var FUNCTION = new Function('return this'); f = new FUNCTION(); typeof f", + "object", + eval("var FUNCTION = new Function('return this'); f = new FUNCTION(); typeof f") ); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-2-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-2-n.js new file mode 100644 index 00000000000..4e74cd4d554 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-2-n.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.2-2.js + ECMA Section: 11.2.2. The new operator + Description: + + MemberExpression: + PrimaryExpression + MemberExpression[Expression] + MemberExpression.Identifier + new MemberExpression Arguments + + new NewExpression + + The production NewExpression : new NewExpression is evaluated as follows: + + 1. Evaluate NewExpression. + 2. Call GetValue(Result(1)). + 3. If Type(Result(2)) is not Object, generate a runtime error. + 4. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 5. Call the [[Construct]] method on Result(2), providing no arguments + (that is, an empty list of arguments). + 6. If Type(Result(5)) is not Object, generate a runtime error. + 7. Return Result(5). + + The production MemberExpression : new MemberExpression Arguments is evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Arguments, producing an internal list of argument values + (section 0). + 4. If Type(Result(2)) is not Object, generate a runtime error. + 5. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 6. Call the [[Construct]] method on Result(2), providing the list + Result(3) as the argument values. + 7. If Type(Result(6)) is not Object, generate a runtime error. + 8 .Return Result(6). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.2-2-n.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The new operator"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + + var UNDEFINED = void 0; + + testcases[tc++] = new TestCase( SECTION, + "UNDEFINED = void 0; var o = new UNDEFINED()", + "error", + o = new UNDEFINED() ); + test(); + +function TestFunction() { + return arguments; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-3-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-3-n.js new file mode 100644 index 00000000000..2c6b5095478 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-3-n.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.2-3-n.js + ECMA Section: 11.2.2. The new operator + Description: + + MemberExpression: + PrimaryExpression + MemberExpression[Expression] + MemberExpression.Identifier + new MemberExpression Arguments + + new NewExpression + + The production NewExpression : new NewExpression is evaluated as follows: + + 1. Evaluate NewExpression. + 2. Call GetValue(Result(1)). + 3. If Type(Result(2)) is not Object, generate a runtime error. + 4. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 5. Call the [[Construct]] method on Result(2), providing no arguments + (that is, an empty list of arguments). + 6. If Type(Result(5)) is not Object, generate a runtime error. + 7. Return Result(5). + + The production MemberExpression : new MemberExpression Arguments is evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Arguments, producing an internal list of argument values + (section 0). + 4. If Type(Result(2)) is not Object, generate a runtime error. + 5. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 6. Call the [[Construct]] method on Result(2), providing the list + Result(3) as the argument values. + 7. If Type(Result(6)) is not Object, generate a runtime error. + 8 .Return Result(6). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.2-3-n.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The new operator"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + + var NULL = null; + + testcases[tc++] = new TestCase( SECTION, + "NULL = null; var o = new NULL()", + "error", + o = new NULL() ); + test(); + +function TestFunction() { + return arguments; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-4-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-4-n.js new file mode 100644 index 00000000000..a9e5f4a812a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-4-n.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.2-4-n.js + ECMA Section: 11.2.2. The new operator + Description: + + MemberExpression: + PrimaryExpression + MemberExpression[Expression] + MemberExpression.Identifier + new MemberExpression Arguments + + new NewExpression + + The production NewExpression : new NewExpression is evaluated as follows: + + 1. Evaluate NewExpression. + 2. Call GetValue(Result(1)). + 3. If Type(Result(2)) is not Object, generate a runtime error. + 4. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 5. Call the [[Construct]] method on Result(2), providing no arguments + (that is, an empty list of arguments). + 6. If Type(Result(5)) is not Object, generate a runtime error. + 7. Return Result(5). + + The production MemberExpression : new MemberExpression Arguments is evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Arguments, producing an internal list of argument values + (section 0). + 4. If Type(Result(2)) is not Object, generate a runtime error. + 5. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 6. Call the [[Construct]] method on Result(2), providing the list + Result(3) as the argument values. + 7. If Type(Result(6)) is not Object, generate a runtime error. + 8 .Return Result(6). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.2-4-n.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The new operator"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + + var STRING = ""; + + testcases[tc++] = new TestCase( SECTION, + "STRING = '', var s = new STRING()", + "error", + s = new STRING() ); + test(); + +function TestFunction() { + return arguments; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-5-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-5-n.js new file mode 100644 index 00000000000..304f1d38c31 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-5-n.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.2-5-n.js + ECMA Section: 11.2.2. The new operator + Description: + + MemberExpression: + PrimaryExpression + MemberExpression[Expression] + MemberExpression.Identifier + new MemberExpression Arguments + + new NewExpression + + The production NewExpression : new NewExpression is evaluated as follows: + + 1. Evaluate NewExpression. + 2. Call GetValue(Result(1)). + 3. If Type(Result(2)) is not Object, generate a runtime error. + 4. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 5. Call the [[Construct]] method on Result(2), providing no arguments + (that is, an empty list of arguments). + 6. If Type(Result(5)) is not Object, generate a runtime error. + 7. Return Result(5). + + The production MemberExpression : new MemberExpression Arguments is evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Arguments, producing an internal list of argument values + (section 0). + 4. If Type(Result(2)) is not Object, generate a runtime error. + 5. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 6. Call the [[Construct]] method on Result(2), providing the list + Result(3) as the argument values. + 7. If Type(Result(6)) is not Object, generate a runtime error. + 8 .Return Result(6). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.2-5-n.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The new operator"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + + var NUMBER = 0; + + testcases[tc++] = new TestCase( SECTION, + "NUMBER=0, var n = new NUMBER()", + "error", + n = new NUMBER() ); + test(); + +function TestFunction() { + return arguments; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-6-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-6-n.js new file mode 100644 index 00000000000..fd24e4f8a4f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-6-n.js @@ -0,0 +1,81 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.2-6-n.js + ECMA Section: 11.2.2. The new operator + Description: + + MemberExpression: + PrimaryExpression + MemberExpression[Expression] + MemberExpression.Identifier + new MemberExpression Arguments + + new NewExpression + + The production NewExpression : new NewExpression is evaluated as follows: + + 1. Evaluate NewExpression. + 2. Call GetValue(Result(1)). + 3. If Type(Result(2)) is not Object, generate a runtime error. + 4. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 5. Call the [[Construct]] method on Result(2), providing no arguments + (that is, an empty list of arguments). + 6. If Type(Result(5)) is not Object, generate a runtime error. + 7. Return Result(5). + + The production MemberExpression : new MemberExpression Arguments is evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Arguments, producing an internal list of argument values + (section 0). + 4. If Type(Result(2)) is not Object, generate a runtime error. + 5. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 6. Call the [[Construct]] method on Result(2), providing the list + Result(3) as the argument values. + 7. If Type(Result(6)) is not Object, generate a runtime error. + 8 .Return Result(6). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.2.2-6-n.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The new operator"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var BOOLEAN = true; + + testcases[tc++] = new TestCase( SECTION, + "BOOLEAN = true; var b = new BOOLEAN()", + "error", + b = new BOOLEAN() ); + test(); + +function TestFunction() { + return arguments; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-7-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-7-n.js new file mode 100644 index 00000000000..4a547267758 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-7-n.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.2-6-n.js + ECMA Section: 11.2.2. The new operator + Description: + + MemberExpression: + PrimaryExpression + MemberExpression[Expression] + MemberExpression.Identifier + new MemberExpression Arguments + + new NewExpression + + The production NewExpression : new NewExpression is evaluated as follows: + + 1. Evaluate NewExpression. + 2. Call GetValue(Result(1)). + 3. If Type(Result(2)) is not Object, generate a runtime error. + 4. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 5. Call the [[Construct]] method on Result(2), providing no arguments + (that is, an empty list of arguments). + 6. If Type(Result(5)) is not Object, generate a runtime error. + 7. Return Result(5). + + The production MemberExpression : new MemberExpression Arguments is evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Arguments, producing an internal list of argument values + (section 0). + 4. If Type(Result(2)) is not Object, generate a runtime error. + 5. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 6. Call the [[Construct]] method on Result(2), providing the list + Result(3) as the argument values. + 7. If Type(Result(6)) is not Object, generate a runtime error. + 8 .Return Result(6). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.2-6-n.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The new operator"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + + var STRING = new String("hi"); + + testcases[tc++] = new TestCase( SECTION, + "var STRING = new String('hi'); var s = new STRING()", + "error", + s = new STRING() ); + test(); + +function TestFunction() { + return arguments; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-8-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-8-n.js new file mode 100644 index 00000000000..eb58ff5a5b0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-8-n.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.2-8-n.js + ECMA Section: 11.2.2. The new operator + Description: + + MemberExpression: + PrimaryExpression + MemberExpression[Expression] + MemberExpression.Identifier + new MemberExpression Arguments + + new NewExpression + + The production NewExpression : new NewExpression is evaluated as follows: + + 1. Evaluate NewExpression. + 2. Call GetValue(Result(1)). + 3. If Type(Result(2)) is not Object, generate a runtime error. + 4. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 5. Call the [[Construct]] method on Result(2), providing no arguments + (that is, an empty list of arguments). + 6. If Type(Result(5)) is not Object, generate a runtime error. + 7. Return Result(5). + + The production MemberExpression : new MemberExpression Arguments is evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Arguments, producing an internal list of argument values + (section 0). + 4. If Type(Result(2)) is not Object, generate a runtime error. + 5. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 6. Call the [[Construct]] method on Result(2), providing the list + Result(3) as the argument values. + 7. If Type(Result(6)) is not Object, generate a runtime error. + 8 .Return Result(6). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.2-8-n.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The new operator"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + + var NUMBER = new Number(1); + + testcases[tc++] = new TestCase( SECTION, + "var NUMBER = new Number(1); var n = new NUMBER()", + "error", + n = new NUMBER() ); + test(); + +function TestFunction() { + return arguments; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-9-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-9-n.js new file mode 100644 index 00000000000..56199cff923 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.2-9-n.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.2-9-n.js + ECMA Section: 11.2.2. The new operator + Description: + + MemberExpression: + PrimaryExpression + MemberExpression[Expression] + MemberExpression.Identifier + new MemberExpression Arguments + + new NewExpression + + The production NewExpression : new NewExpression is evaluated as follows: + + 1. Evaluate NewExpression. + 2. Call GetValue(Result(1)). + 3. If Type(Result(2)) is not Object, generate a runtime error. + 4. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 5. Call the [[Construct]] method on Result(2), providing no arguments + (that is, an empty list of arguments). + 6. If Type(Result(5)) is not Object, generate a runtime error. + 7. Return Result(5). + + The production MemberExpression : new MemberExpression Arguments is evaluated as follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate Arguments, producing an internal list of argument values + (section 0). + 4. If Type(Result(2)) is not Object, generate a runtime error. + 5. If Result(2) does not implement the internal [[Construct]] method, + generate a runtime error. + 6. Call the [[Construct]] method on Result(2), providing the list + Result(3) as the argument values. + 7. If Type(Result(6)) is not Object, generate a runtime error. + 8 .Return Result(6). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.2-9-n.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The new operator"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + + var BOOLEAN = new Boolean(); + + testcases[tc++] = new TestCase( SECTION, + "var BOOLEAN = new Boolean(); var b = new BOOLEAN()", + "error", + b = new BOOLEAN() ); + test(); + +function TestFunction() { + return arguments; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.3-1.js new file mode 100644 index 00000000000..7653900cca2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.3-1.js @@ -0,0 +1,121 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.3-1.js + ECMA Section: 11.2.3. Function Calls + Description: + + The production CallExpression : MemberExpression Arguments is evaluated as + follows: + + 1.Evaluate MemberExpression. + 2.Evaluate Arguments, producing an internal list of argument values + (section 0). + 3.Call GetValue(Result(1)). + 4.If Type(Result(3)) is not Object, generate a runtime error. + 5.If Result(3) does not implement the internal [[Call]] method, generate a + runtime error. + 6.If Type(Result(1)) is Reference, Result(6) is GetBase(Result(1)). Otherwise, + Result(6) is null. + 7.If Result(6) is an activation object, Result(7) is null. Otherwise, Result(7) is + the same as Result(6). + 8.Call the [[Call]] method on Result(3), providing Result(7) as the this value + and providing the list Result(2) as the argument values. + 9.Return Result(8). + + The production CallExpression : CallExpression Arguments is evaluated in + exactly the same manner, except that the contained CallExpression is + evaluated in step 1. + + Note: Result(8) will never be of type Reference if Result(3) is a native + ECMAScript object. Whether calling a host object can return a value of + type Reference is implementation-dependent. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.3-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Function Calls"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + +/* this.eval() is no longer legal syntax. + // MemberExpression : this + + testcases[tc++] = new TestCase( SECTION, + "this.eval()", + void 0, + this.eval() ); + + testcases[tc++] = new TestCase( SECTION, + "this.eval('NaN')", + NaN, + this.eval("NaN") ); +*/ + // MemberExpression: Identifier + + var OBJECT = true; + + testcases[tc++] = new TestCase( SECTION, + "OBJECT.toString()", + "true", + OBJECT.toString() ); + + // MemberExpression[ Expression] + + testcases[tc++] = new TestCase( SECTION, + "(new Array())['length'].valueOf()", + 0, + (new Array())["length"].valueOf() ); + + // MemberExpression . Identifier + testcases[tc++] = new TestCase( SECTION, + "(new Array()).length.valueOf()", + 0, + (new Array()).length.valueOf() ); + // new MemberExpression Arguments + + testcases[tc++] = new TestCase( SECTION, + "(new Array(20))['length'].valueOf()", + 20, + (new Array(20))["length"].valueOf() ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.3-2-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.3-2-n.js new file mode 100644 index 00000000000..e5ba65c7e71 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.3-2-n.js @@ -0,0 +1,90 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.3-2-n.js + ECMA Section: 11.2.3. Function Calls + Description: + + The production CallExpression : MemberExpression Arguments is evaluated as + follows: + + 1.Evaluate MemberExpression. + 2.Evaluate Arguments, producing an internal list of argument values + (section 0). + 3.Call GetValue(Result(1)). + 4.If Type(Result(3)) is not Object, generate a runtime error. + 5.If Result(3) does not implement the internal [[Call]] method, generate a + runtime error. + 6.If Type(Result(1)) is Reference, Result(6) is GetBase(Result(1)). Otherwise, + Result(6) is null. + 7.If Result(6) is an activation object, Result(7) is null. Otherwise, Result(7) is + the same as Result(6). + 8.Call the [[Call]] method on Result(3), providing Result(7) as the this value + and providing the list Result(2) as the argument values. + 9.Return Result(8). + + The production CallExpression : CallExpression Arguments is evaluated in + exactly the same manner, except that the contained CallExpression is + evaluated in step 1. + + Note: Result(8) will never be of type Reference if Result(3) is a native + ECMAScript object. Whether calling a host object can return a value of + type Reference is implementation-dependent. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.3-2-n.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Function Calls"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( SECTION, + "3.valueOf()", + 3, + 3.valueOf() ); + + testcases[tc++] = new TestCase( SECTION, + "(3).valueOf()", + 3, + (3).valueOf() ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.3-3-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.3-3-n.js new file mode 100644 index 00000000000..da589075bb0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.3-3-n.js @@ -0,0 +1,81 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.3-3-n.js + ECMA Section: 11.2.3. Function Calls + Description: + + The production CallExpression : MemberExpression Arguments is evaluated as + follows: + + 1.Evaluate MemberExpression. + 2.Evaluate Arguments, producing an internal list of argument values + (section 0). + 3.Call GetValue(Result(1)). + 4.If Type(Result(3)) is not Object, generate a runtime error. + 5.If Result(3) does not implement the internal [[Call]] method, generate a + runtime error. + 6.If Type(Result(1)) is Reference, Result(6) is GetBase(Result(1)). Otherwise, + Result(6) is null. + 7.If Result(6) is an activation object, Result(7) is null. Otherwise, Result(7) is + the same as Result(6). + 8.Call the [[Call]] method on Result(3), providing Result(7) as the this value + and providing the list Result(2) as the argument values. + 9.Return Result(8). + + The production CallExpression : CallExpression Arguments is evaluated in + exactly the same manner, except that the contained CallExpression is + evaluated in step 1. + + Note: Result(8) will never be of type Reference if Result(3) is a native + ECMAScript object. Whether calling a host object can return a value of + type Reference is implementation-dependent. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.3-3-n.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Function Calls"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( SECTION, "(void 0).valueOf()", "error", (void 0).valueOf() ); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.3-4-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.3-4-n.js new file mode 100644 index 00000000000..eed49b2a823 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.3-4-n.js @@ -0,0 +1,81 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.3-4-n.js + ECMA Section: 11.2.3. Function Calls + Description: + + The production CallExpression : MemberExpression Arguments is evaluated as + follows: + + 1.Evaluate MemberExpression. + 2.Evaluate Arguments, producing an internal list of argument values + (section 0). + 3.Call GetValue(Result(1)). + 4.If Type(Result(3)) is not Object, generate a runtime error. + 5.If Result(3) does not implement the internal [[Call]] method, generate a + runtime error. + 6.If Type(Result(1)) is Reference, Result(6) is GetBase(Result(1)). Otherwise, + Result(6) is null. + 7.If Result(6) is an activation object, Result(7) is null. Otherwise, Result(7) is + the same as Result(6). + 8.Call the [[Call]] method on Result(3), providing Result(7) as the this value + and providing the list Result(2) as the argument values. + 9.Return Result(8). + + The production CallExpression : CallExpression Arguments is evaluated in + exactly the same manner, except that the contained CallExpression is + evaluated in step 1. + + Note: Result(8) will never be of type Reference if Result(3) is a native + ECMAScript object. Whether calling a host object can return a value of + type Reference is implementation-dependent. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.3-4-n.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Function Calls"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( SECTION, "null.valueOf()", "error", null.valueOf() ); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.3-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.3-5.js new file mode 100644 index 00000000000..77a0f6c4118 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.2.3-5.js @@ -0,0 +1,81 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.2.3-5-n.js + ECMA Section: 11.2.3. Function Calls + Description: + + The production CallExpression : MemberExpression Arguments is evaluated as + follows: + + 1. Evaluate MemberExpression. + 2. Evaluate Arguments, producing an internal list of argument values + (section 0). + 3. Call GetValue(Result(1)). + 4. If Type(Result(3)) is not Object, generate a runtime error. + 5. If Result(3) does not implement the internal [[Call]] method, generate a + runtime error. + 6. If Type(Result(1)) is Reference, Result(6) is GetBase(Result(1)). Otherwise, + Result(6) is null. + 7. If Result(6) is an activation object, Result(7) is null. Otherwise, Result(7) is + the same as Result(6). + 8. Call the [[Call]] method on Result(3), providing Result(7) as the this value + and providing the list Result(2) as the argument values. + 9. Return Result(8). + + The production CallExpression : CallExpression Arguments is evaluated in + exactly the same manner, except that the contained CallExpression is + evaluated in step 1. + + Note: Result(8) will never be of type Reference if Result(3) is a native + ECMAScript object. Whether calling a host object can return a value of + type Reference is implementation-dependent. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "11.2.3-5"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Function Calls"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( SECTION, "true.valueOf()", true, true.valueOf() ); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.3.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.3.1.js new file mode 100644 index 00000000000..0e1e8aa1ef7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.3.1.js @@ -0,0 +1,154 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.3.1.js + ECMA Section: 11.3.1 Postfix increment operator + Description: + The production MemberExpression : MemberExpression ++ is evaluated as + follows: + + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Call ToNumber(Result(2)). + 4. Add the value 1 to Result(3), using the same rules as for the + + operator (section 0). + 5. Call PutValue(Result(1), Result(4)). + 6. Return Result(3). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.3.1"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Postfix increment operator"); + + testcases = getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // special numbers + array[item++] = new TestCase( SECTION, "var MYVAR; MYVAR++", NaN, eval("var MYVAR; MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR= void 0; MYVAR++", NaN, eval("var MYVAR=void 0; MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR=null; MYVAR++", 0, eval("var MYVAR=null; MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR=true; MYVAR++", 1, eval("var MYVAR=true; MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR=false; MYVAR++", 0, eval("var MYVAR=false; MYVAR++") ); + + // verify return value + + array[item++] = new TestCase( SECTION, "var MYVAR=Number.POSITIVE_INFINITY;MYVAR++", Number.POSITIVE_INFINITY, eval("var MYVAR=Number.POSITIVE_INFINITY;MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NEGATIVE_INFINITY;MYVAR++", Number.NEGATIVE_INFINITY, eval("var MYVAR=Number.NEGATIVE_INFINITY;MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NaN;MYVAR++", Number.NaN, eval("var MYVAR=Number.NaN;MYVAR++") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=Number.POSITIVE_INFINITY;MYVAR++;MYVAR", Number.POSITIVE_INFINITY, eval("var MYVAR=Number.POSITIVE_INFINITY;MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NEGATIVE_INFINITY;MYVAR++;MYVAR", Number.NEGATIVE_INFINITY, eval("var MYVAR=Number.NEGATIVE_INFINITY;MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NaN;MYVAR++;MYVAR", Number.NaN, eval("var MYVAR=Number.NaN;MYVAR++;MYVAR") ); + + // number primitives + array[item++] = new TestCase( SECTION, "var MYVAR=0;MYVAR++", 0, eval("var MYVAR=0;MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0.2345;MYVAR++", 0.2345, eval("var MYVAR=0.2345;MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR=-0.2345;MYVAR++", -0.2345, eval("var MYVAR=-0.2345;MYVAR++") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=0;MYVAR++;MYVAR", 1, eval("var MYVAR=0;MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0.2345;MYVAR++;MYVAR", 1.2345, eval("var MYVAR=0.2345;MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=-0.2345;MYVAR++;MYVAR", 0.7655, eval("var MYVAR=-0.2345;MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0;MYVAR++;MYVAR", 1, eval("var MYVAR=0;MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0;MYVAR++;MYVAR", 1, eval("var MYVAR=0;MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0;MYVAR++;MYVAR", 1, eval("var MYVAR=0;MYVAR++;MYVAR") ); + + // boolean values + // verify return value + + array[item++] = new TestCase( SECTION, "var MYVAR=true;MYVAR++", 1, eval("var MYVAR=true;MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR=false;MYVAR++", 0, eval("var MYVAR=false;MYVAR++") ); + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=true;MYVAR++;MYVAR", 2, eval("var MYVAR=true;MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=false;MYVAR++;MYVAR", 1, eval("var MYVAR=false;MYVAR++;MYVAR") ); + + // boolean objects + // verify return value + + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(true);MYVAR++", 1, eval("var MYVAR=true;MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(false);MYVAR++", 0, eval("var MYVAR=false;MYVAR++") ); + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(true);MYVAR++;MYVAR", 2, eval("var MYVAR=new Boolean(true);MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(false);MYVAR++;MYVAR", 1, eval("var MYVAR=new Boolean(false);MYVAR++;MYVAR") ); + + // string primitives + array[item++] = new TestCase( SECTION, "var MYVAR='string';MYVAR++", Number.NaN, eval("var MYVAR='string';MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR='12345';MYVAR++", 12345, eval("var MYVAR='12345';MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR='-12345';MYVAR++", -12345, eval("var MYVAR='-12345';MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR='0Xf';MYVAR++", 15, eval("var MYVAR='0Xf';MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR='077';MYVAR++", 77, eval("var MYVAR='077';MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR=''; MYVAR++", 0, eval("var MYVAR='';MYVAR++") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR='string';MYVAR++;MYVAR", Number.NaN, eval("var MYVAR='string';MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='12345';MYVAR++;MYVAR", 12346, eval("var MYVAR='12345';MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='-12345';MYVAR++;MYVAR", -12344, eval("var MYVAR='-12345';MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='0xf';MYVAR++;MYVAR", 16, eval("var MYVAR='0xf';MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='077';MYVAR++;MYVAR", 78, eval("var MYVAR='077';MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='';MYVAR++;MYVAR", 1, eval("var MYVAR='';MYVAR++;MYVAR") ); + + // string objects + array[item++] = new TestCase( SECTION, "var MYVAR=new String('string');MYVAR++", Number.NaN, eval("var MYVAR=new String('string');MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('12345');MYVAR++", 12345, eval("var MYVAR=new String('12345');MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('-12345');MYVAR++", -12345, eval("var MYVAR=new String('-12345');MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('0Xf');MYVAR++", 15, eval("var MYVAR=new String('0Xf');MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('077');MYVAR++", 77, eval("var MYVAR=new String('077');MYVAR++") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String(''); MYVAR++", 0, eval("var MYVAR=new String('');MYVAR++") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=new String('string');MYVAR++;MYVAR", Number.NaN, eval("var MYVAR=new String('string');MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('12345');MYVAR++;MYVAR", 12346, eval("var MYVAR=new String('12345');MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('-12345');MYVAR++;MYVAR", -12344, eval("var MYVAR=new String('-12345');MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('0xf');MYVAR++;MYVAR", 16, eval("var MYVAR=new String('0xf');MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('077');MYVAR++;MYVAR", 78, eval("var MYVAR=new String('077');MYVAR++;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('');MYVAR++;MYVAR", 1, eval("var MYVAR=new String('');MYVAR++;MYVAR") ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.3.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.3.2.js new file mode 100644 index 00000000000..1042f85f4f4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.3.2.js @@ -0,0 +1,154 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.3.2.js + ECMA Section: 11.3.2 Postfix decrement operator + Description: + + 11.3.2 Postfix decrement operator + + The production MemberExpression : MemberExpression -- is evaluated as follows: + 1. Evaluate MemberExpression. + 2. Call GetValue(Result(1)). + 3. Call ToNumber(Result(2)). + 4. Subtract the value 1 from Result(3), using the same rules as for the - + operator (section 0). + 5. Call PutValue(Result(1), Result(4)). + 6. Return Result(3). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.3.2"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Postfix decrement operator"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // special numbers + array[item++] = new TestCase( SECTION, "var MYVAR; MYVAR--", NaN, eval("var MYVAR; MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR= void 0; MYVAR--", NaN, eval("var MYVAR=void 0; MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR=null; MYVAR--", 0, eval("var MYVAR=null; MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR=true; MYVAR--", 1, eval("var MYVAR=true; MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR=false; MYVAR--", 0, eval("var MYVAR=false; MYVAR--") ); + + // verify return value + + array[item++] = new TestCase( SECTION, "var MYVAR=Number.POSITIVE_INFINITY;MYVAR--", Number.POSITIVE_INFINITY, eval("var MYVAR=Number.POSITIVE_INFINITY;MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NEGATIVE_INFINITY;MYVAR--", Number.NEGATIVE_INFINITY, eval("var MYVAR=Number.NEGATIVE_INFINITY;MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NaN;MYVAR--", Number.NaN, eval("var MYVAR=Number.NaN;MYVAR--") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=Number.POSITIVE_INFINITY;MYVAR--;MYVAR", Number.POSITIVE_INFINITY, eval("var MYVAR=Number.POSITIVE_INFINITY;MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NEGATIVE_INFINITY;MYVAR--;MYVAR", Number.NEGATIVE_INFINITY, eval("var MYVAR=Number.NEGATIVE_INFINITY;MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NaN;MYVAR--;MYVAR", Number.NaN, eval("var MYVAR=Number.NaN;MYVAR--;MYVAR") ); + + // number primitives + array[item++] = new TestCase( SECTION, "var MYVAR=0;MYVAR--", 0, eval("var MYVAR=0;MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0.2345;MYVAR--", 0.2345, eval("var MYVAR=0.2345;MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR=-0.2345;MYVAR--", -0.2345, eval("var MYVAR=-0.2345;MYVAR--") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=0;MYVAR--;MYVAR", -1, eval("var MYVAR=0;MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0.2345;MYVAR--;MYVAR", -0.7655, eval("var MYVAR=0.2345;MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=-0.2345;MYVAR--;MYVAR", -1.2345, eval("var MYVAR=-0.2345;MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0;MYVAR--;MYVAR", -1, eval("var MYVAR=0;MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0;MYVAR--;MYVAR", -1, eval("var MYVAR=0;MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0;MYVAR--;MYVAR", -1, eval("var MYVAR=0;MYVAR--;MYVAR") ); + + // boolean values + // verify return value + + array[item++] = new TestCase( SECTION, "var MYVAR=true;MYVAR--", 1, eval("var MYVAR=true;MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR=false;MYVAR--", 0, eval("var MYVAR=false;MYVAR--") ); + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=true;MYVAR--;MYVAR", 0, eval("var MYVAR=true;MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=false;MYVAR--;MYVAR", -1, eval("var MYVAR=false;MYVAR--;MYVAR") ); + + // boolean objects + // verify return value + + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(true);MYVAR--", 1, eval("var MYVAR=true;MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(false);MYVAR--", 0, eval("var MYVAR=false;MYVAR--") ); + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(true);MYVAR--;MYVAR", 0, eval("var MYVAR=new Boolean(true);MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(false);MYVAR--;MYVAR", -1, eval("var MYVAR=new Boolean(false);MYVAR--;MYVAR") ); + + // string primitives + array[item++] = new TestCase( SECTION, "var MYVAR='string';MYVAR--", Number.NaN, eval("var MYVAR='string';MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR='12345';MYVAR--", 12345, eval("var MYVAR='12345';MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR='-12345';MYVAR--", -12345, eval("var MYVAR='-12345';MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR='0Xf';MYVAR--", 15, eval("var MYVAR='0Xf';MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR='077';MYVAR--", 77, eval("var MYVAR='077';MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR=''; MYVAR--", 0, eval("var MYVAR='';MYVAR--") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR='string';MYVAR--;MYVAR", Number.NaN, eval("var MYVAR='string';MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='12345';MYVAR--;MYVAR", 12344, eval("var MYVAR='12345';MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='-12345';MYVAR--;MYVAR", -12346, eval("var MYVAR='-12345';MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='0xf';MYVAR--;MYVAR", 14, eval("var MYVAR='0xf';MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='077';MYVAR--;MYVAR", 76, eval("var MYVAR='077';MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='';MYVAR--;MYVAR", -1, eval("var MYVAR='';MYVAR--;MYVAR") ); + + // string objects + array[item++] = new TestCase( SECTION, "var MYVAR=new String('string');MYVAR--", Number.NaN, eval("var MYVAR=new String('string');MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('12345');MYVAR--", 12345, eval("var MYVAR=new String('12345');MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('-12345');MYVAR--", -12345, eval("var MYVAR=new String('-12345');MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('0Xf');MYVAR--", 15, eval("var MYVAR=new String('0Xf');MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('077');MYVAR--", 77, eval("var MYVAR=new String('077');MYVAR--") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String(''); MYVAR--", 0, eval("var MYVAR=new String('');MYVAR--") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=new String('string');MYVAR--;MYVAR", Number.NaN, eval("var MYVAR=new String('string');MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('12345');MYVAR--;MYVAR", 12344, eval("var MYVAR=new String('12345');MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('-12345');MYVAR--;MYVAR", -12346, eval("var MYVAR=new String('-12345');MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('0xf');MYVAR--;MYVAR", 14, eval("var MYVAR=new String('0xf');MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('077');MYVAR--;MYVAR", 76, eval("var MYVAR=new String('077');MYVAR--;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('');MYVAR--;MYVAR", -1, eval("var MYVAR=new String('');MYVAR--;MYVAR") ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.1.js new file mode 100644 index 00000000000..766b786bf94 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.1.js @@ -0,0 +1,95 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.4.1.js + ECMA Section: 11.4.1 the Delete Operator + Description: returns true if the property could be deleted + returns false if it could not be deleted + Author: christine@netscape.com + Date: 7 july 1997 + +*/ + + + var SECTION = "11.4.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The delete operator"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + +// array[item++] = new TestCase( SECTION, "x=[9,8,7];delete(x[2]);x.length", 2, eval("x=[9,8,7];delete(x[2]);x.length") ); +// array[item++] = new TestCase( SECTION, "x=[9,8,7];delete(x[2]);x.toString()", "9,8", eval("x=[9,8,7];delete(x[2]);x.toString()") ); + array[item++] = new TestCase( SECTION, "x=new Date();delete x;typeof(x)", "undefined", eval("x=new Date();delete x;typeof(x)") ); + +// array[item++] = new TestCase( SECTION, "delete(x=new Date())", true, delete(x=new Date()) ); +// array[item++] = new TestCase( SECTION, "delete('string primitive')", true, delete("string primitive") ); +// array[item++] = new TestCase( SECTION, "delete(new String( 'string object' ) )", true, delete(new String("string object")) ); +// array[item++] = new TestCase( SECTION, "delete(new Number(12345) )", true, delete(new Number(12345)) ); + array[item++] = new TestCase( SECTION, "delete(Math.PI)", false, delete(Math.PI) ); +// array[item++] = new TestCase( SECTION, "delete(null)", true, delete(null) ); +// array[item++] = new TestCase( SECTION, "delete(void(0))", true, delete(void(0)) ); + + // variables declared with the var statement are not deletable. + + var abc; + array[item++] = new TestCase( SECTION, "var abc; delete(abc)", false, delete abc ); + + array[item++] = new TestCase( SECTION, + "var OB = new MyObject(); for ( p in OB ) { delete p }", + true, + eval("var OB = new MyObject(); for ( p in OB ) { delete p }") ); + return ( array ); +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value " + + } + stopTest(); + return ( testcases ); +} + +function MyObject() { + this.prop1 = true; + this.prop2 = false; + this.prop3 = null + this.prop4 = void 0; + this.prop5 = "hi"; + this.prop6 = 42; + this.prop7 = new Date(); + this.prop8 = Math.PI; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.2.js new file mode 100644 index 00000000000..c889ec6b8ba --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.2.js @@ -0,0 +1,85 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.4.2.js + ECMA Section: 11.4.2 the Void Operator + Description: always returns undefined (?) + Author: christine@netscape.com + Date: 7 july 1997 + +*/ + var SECTION = "11.4.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The void operator"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "void(new String('string object'))", void 0, void(new String( 'string object' )) ); + array[item++] = new TestCase( SECTION, "void('string primitive')", void 0, void("string primitive") ); + array[item++] = new TestCase( SECTION, "void(Number.NaN)", void 0, void(Number.NaN) ); + array[item++] = new TestCase( SECTION, "void(Number.POSITIVE_INFINITY)", void 0, void(Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "void(1)", void 0, void(1) ); + array[item++] = new TestCase( SECTION, "void(0)", void 0, void(0) ); + array[item++] = new TestCase( SECTION, "void(-1)", void 0, void(-1) ); + array[item++] = new TestCase( SECTION, "void(Number.NEGATIVE_INFINITY)", void 0, void(Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "void(Math.PI)", void 0, void(Math.PI) ); + array[item++] = new TestCase( SECTION, "void(true)", void 0, void(true) ); + array[item++] = new TestCase( SECTION, "void(false)", void 0, void(false) ); + array[item++] = new TestCase( SECTION, "void(null)", void 0, void(null) ); + array[item++] = new TestCase( SECTION, "void new String('string object')", void 0, void new String( 'string object' ) ); + array[item++] = new TestCase( SECTION, "void 'string primitive'", void 0, void "string primitive" ); + array[item++] = new TestCase( SECTION, "void Number.NaN", void 0, void Number.NaN ); + array[item++] = new TestCase( SECTION, "void Number.POSITIVE_INFINITY", void 0, void Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "void 1", void 0, void 1 ); + array[item++] = new TestCase( SECTION, "void 0", void 0, void 0 ); + array[item++] = new TestCase( SECTION, "void -1", void 0, void -1 ); + array[item++] = new TestCase( SECTION, "void Number.NEGATIVE_INFINITY", void 0, void Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "void Math.PI", void 0, void Math.PI ); + array[item++] = new TestCase( SECTION, "void true", void 0, void true ); + array[item++] = new TestCase( SECTION, "void false", void 0, void false ); + array[item++] = new TestCase( SECTION, "void null", void 0, void null ); + +// array[item++] = new TestCase( SECTION, "void()", void 0, void() ); + + return ( array ); +} + +function test() { + for ( i = 0; i < testcases.length; i++ ) { + testcases[i].passed = writeTestCaseResult( + testcases[i].expect, + testcases[i].actual, + testcases[i].description +" = "+ testcases[i].actual ); + testcases[i].reason += ( testcases[i].passed ) ? "" : "wrong value " + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.3.js new file mode 100644 index 00000000000..eccfa0d7723 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.3.js @@ -0,0 +1,109 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: typeof_1.js + ECMA Section: 11.4.3 typeof operator + Description: typeof evaluates unary expressions: + undefined "undefined" + null "object" + Boolean "boolean" + Number "number" + String "string" + Object "object" [native, doesn't implement Call] + Object "function" [native, implements [Call]] + Object implementation dependent + [not sure how to test this] + Author: christine@netscape.com + Date: june 30, 1997 + +*/ + + var SECTION = "11.4.3"; + + var VERSION = "ECMA_1"; + startTest(); + var TITLE = " The typeof operator"; + + var testcases = new Array(); + + + testcases[testcases.length] = new TestCase( SECTION, "typeof(void(0))", "undefined", typeof(void(0)) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(null)", "object", typeof(null) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(true)", "boolean", typeof(true) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(false)", "boolean", typeof(false) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(new Boolean())", "object", typeof(new Boolean()) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(new Boolean(true))", "object", typeof(new Boolean(true)) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(Boolean())", "boolean", typeof(Boolean()) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(Boolean(false))", "boolean", typeof(Boolean(false)) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(Boolean(true))", "boolean", typeof(Boolean(true)) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(NaN)", "number", typeof(Number.NaN) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(Infinity)", "number", typeof(Number.POSITIVE_INFINITY) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(-Infinity)", "number", typeof(Number.NEGATIVE_INFINITY) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(Math.PI)", "number", typeof(Math.PI) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(0)", "number", typeof(0) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(1)", "number", typeof(1) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(-1)", "number", typeof(-1) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof('0')", "string", typeof("0") ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(Number())", "number", typeof(Number()) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(Number(0))", "number", typeof(Number(0)) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(Number(1))", "number", typeof(Number(1)) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(Nubmer(-1))", "number", typeof(Number(-1)) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(new Number())", "object", typeof(new Number()) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(new Number(0))", "object", typeof(new Number(0)) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(new Number(1))", "object", typeof(new Number(1)) ); + + // Math does not implement [[Construct]] or [[Call]] so its type is object. + + testcases[testcases.length] = new TestCase( SECTION, "typeof(Math)", "object", typeof(Math) ); + + testcases[testcases.length] = new TestCase( SECTION, "typeof(Number.prototype.toString)", "function", typeof(Number.prototype.toString) ); + + testcases[testcases.length] = new TestCase( SECTION, "typeof('a string')", "string", typeof("a string") ); + testcases[testcases.length] = new TestCase( SECTION, "typeof('')", "string", typeof("") ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(new Date())", "object", typeof(new Date()) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(new Array(1,2,3))", "object", typeof(new Array(1,2,3)) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(new String('string object'))", "object", typeof(new String("string object")) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(String('string primitive'))", "string", typeof(String("string primitive")) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(['array', 'of', 'strings'])", "object", typeof(["array", "of", "strings"]) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(new Function())", "function", typeof( new Function() ) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(parseInt)", "function", typeof( parseInt ) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(test)", "function", typeof( test ) ); + testcases[testcases.length] = new TestCase( SECTION, "typeof(String.fromCharCode)", "function", typeof( String.fromCharCode ) ); + + + writeHeaderToLog( SECTION + " "+ TITLE); + test(); + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.4.js new file mode 100644 index 00000000000..7a7a547cb4f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.4.js @@ -0,0 +1,156 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.4.4.js + ECMA Section: 11.4.4 Prefix increment operator + Description: + The production UnaryExpression : ++ UnaryExpression is evaluated as + follows: + + 1. Evaluate UnaryExpression. + 2. Call GetValue(Result(1)). + 3. Call ToNumber(Result(2)). + 4. Add the value 1 to Result(3), using the same rules as for the + + operator (section 11.6.3). + 5. Call PutValue(Result(1), Result(4)). + 6. Return Result(4). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.4.4"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Prefix increment operator"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // special case: var is not defined + + array[item++] = new TestCase( SECTION, "var MYVAR; ++MYVAR", NaN, eval("var MYVAR; ++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR= void 0; ++MYVAR", NaN, eval("var MYVAR=void 0; ++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=null; ++MYVAR", 1, eval("var MYVAR=null; ++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=true; ++MYVAR", 2, eval("var MYVAR=true; ++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=false; ++MYVAR", 1, eval("var MYVAR=false; ++MYVAR") ); + + // special numbers + // verify return value + + array[item++] = new TestCase( SECTION, "var MYVAR=Number.POSITIVE_INFINITY;++MYVAR", Number.POSITIVE_INFINITY, eval("var MYVAR=Number.POSITIVE_INFINITY;++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NEGATIVE_INFINITY;++MYVAR", Number.NEGATIVE_INFINITY, eval("var MYVAR=Number.NEGATIVE_INFINITY;++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NaN;++MYVAR", Number.NaN, eval("var MYVAR=Number.NaN;++MYVAR") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=Number.POSITIVE_INFINITY;++MYVAR;MYVAR", Number.POSITIVE_INFINITY, eval("var MYVAR=Number.POSITIVE_INFINITY;++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NEGATIVE_INFINITY;++MYVAR;MYVAR", Number.NEGATIVE_INFINITY, eval("var MYVAR=Number.NEGATIVE_INFINITY;++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NaN;++MYVAR;MYVAR", Number.NaN, eval("var MYVAR=Number.NaN;++MYVAR;MYVAR") ); + + + // number primitives + array[item++] = new TestCase( SECTION, "var MYVAR=0;++MYVAR", 1, eval("var MYVAR=0;++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0.2345;++MYVAR", 1.2345, eval("var MYVAR=0.2345;++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=-0.2345;++MYVAR", 0.7655, eval("var MYVAR=-0.2345;++MYVAR") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=0;++MYVAR;MYVAR", 1, eval("var MYVAR=0;++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0.2345;++MYVAR;MYVAR", 1.2345, eval("var MYVAR=0.2345;++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=-0.2345;++MYVAR;MYVAR", 0.7655, eval("var MYVAR=-0.2345;++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0;++MYVAR;MYVAR", 1, eval("var MYVAR=0;++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0;++MYVAR;MYVAR", 1, eval("var MYVAR=0;++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0;++MYVAR;MYVAR", 1, eval("var MYVAR=0;++MYVAR;MYVAR") ); + + // boolean values + // verify return value + + array[item++] = new TestCase( SECTION, "var MYVAR=true;++MYVAR", 2, eval("var MYVAR=true;++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=false;++MYVAR", 1, eval("var MYVAR=false;++MYVAR") ); + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=true;++MYVAR;MYVAR", 2, eval("var MYVAR=true;++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=false;++MYVAR;MYVAR", 1, eval("var MYVAR=false;++MYVAR;MYVAR") ); + + // boolean objects + // verify return value + + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(true);++MYVAR", 2, eval("var MYVAR=true;++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(false);++MYVAR", 1, eval("var MYVAR=false;++MYVAR") ); + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(true);++MYVAR;MYVAR", 2, eval("var MYVAR=new Boolean(true);++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(false);++MYVAR;MYVAR", 1, eval("var MYVAR=new Boolean(false);++MYVAR;MYVAR") ); + + // string primitives + array[item++] = new TestCase( SECTION, "var MYVAR='string';++MYVAR", Number.NaN, eval("var MYVAR='string';++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='12345';++MYVAR", 12346, eval("var MYVAR='12345';++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='-12345';++MYVAR", -12344, eval("var MYVAR='-12345';++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='0Xf';++MYVAR", 16, eval("var MYVAR='0Xf';++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='077';++MYVAR", 78, eval("var MYVAR='077';++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=''; ++MYVAR", 1, eval("var MYVAR='';++MYVAR") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR='string';++MYVAR;MYVAR", Number.NaN, eval("var MYVAR='string';++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='12345';++MYVAR;MYVAR", 12346, eval("var MYVAR='12345';++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='-12345';++MYVAR;MYVAR", -12344, eval("var MYVAR='-12345';++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='0xf';++MYVAR;MYVAR", 16, eval("var MYVAR='0xf';++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='077';++MYVAR;MYVAR", 78, eval("var MYVAR='077';++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='';++MYVAR;MYVAR", 1, eval("var MYVAR='';++MYVAR;MYVAR") ); + + // string objects + array[item++] = new TestCase( SECTION, "var MYVAR=new String('string');++MYVAR", Number.NaN, eval("var MYVAR=new String('string');++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('12345');++MYVAR", 12346, eval("var MYVAR=new String('12345');++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('-12345');++MYVAR", -12344, eval("var MYVAR=new String('-12345');++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('0Xf');++MYVAR", 16, eval("var MYVAR=new String('0Xf');++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('077');++MYVAR", 78, eval("var MYVAR=new String('077');++MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String(''); ++MYVAR", 1, eval("var MYVAR=new String('');++MYVAR") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=new String('string');++MYVAR;MYVAR", Number.NaN, eval("var MYVAR=new String('string');++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('12345');++MYVAR;MYVAR", 12346, eval("var MYVAR=new String('12345');++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('-12345');++MYVAR;MYVAR", -12344, eval("var MYVAR=new String('-12345');++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('0xf');++MYVAR;MYVAR", 16, eval("var MYVAR=new String('0xf');++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('077');++MYVAR;MYVAR", 78, eval("var MYVAR=new String('077');++MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('');++MYVAR;MYVAR", 1, eval("var MYVAR=new String('');++MYVAR;MYVAR") ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.5.js new file mode 100644 index 00000000000..d82ac601ece --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.5.js @@ -0,0 +1,154 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.4.5.js + ECMA Section: 11.4.5 Prefix decrement operator + Description: + + The production UnaryExpression : -- UnaryExpression is evaluated as follows: + + 1.Evaluate UnaryExpression. + 2.Call GetValue(Result(1)). + 3.Call ToNumber(Result(2)). + 4.Subtract the value 1 from Result(3), using the same rules as for the - operator (section 11.6.3). + 5.Call PutValue(Result(1), Result(4)). + + 1.Return Result(4). + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.4.5"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Prefix decrement operator"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // + array[item++] = new TestCase( SECTION, "var MYVAR; --MYVAR", NaN, eval("var MYVAR; --MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR= void 0; --MYVAR", NaN, eval("var MYVAR=void 0; --MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=null; --MYVAR", -1, eval("var MYVAR=null; --MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=true; --MYVAR", 0, eval("var MYVAR=true; --MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=false; --MYVAR", -1, eval("var MYVAR=false; --MYVAR") ); + + // special numbers + // verify return value + + array[item++] = new TestCase( SECTION, "var MYVAR=Number.POSITIVE_INFINITY;--MYVAR", Number.POSITIVE_INFINITY, eval("var MYVAR=Number.POSITIVE_INFINITY;--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NEGATIVE_INFINITY;--MYVAR", Number.NEGATIVE_INFINITY, eval("var MYVAR=Number.NEGATIVE_INFINITY;--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NaN;--MYVAR", Number.NaN, eval("var MYVAR=Number.NaN;--MYVAR") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=Number.POSITIVE_INFINITY;--MYVAR;MYVAR", Number.POSITIVE_INFINITY, eval("var MYVAR=Number.POSITIVE_INFINITY;--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NEGATIVE_INFINITY;--MYVAR;MYVAR", Number.NEGATIVE_INFINITY, eval("var MYVAR=Number.NEGATIVE_INFINITY;--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=Number.NaN;--MYVAR;MYVAR", Number.NaN, eval("var MYVAR=Number.NaN;--MYVAR;MYVAR") ); + + + // number primitives + array[item++] = new TestCase( SECTION, "var MYVAR=0;--MYVAR", -1, eval("var MYVAR=0;--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0.2345;--MYVAR", -0.7655, eval("var MYVAR=0.2345;--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=-0.2345;--MYVAR", -1.2345, eval("var MYVAR=-0.2345;--MYVAR") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=0;--MYVAR;MYVAR", -1, eval("var MYVAR=0;--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0.2345;--MYVAR;MYVAR", -0.7655, eval("var MYVAR=0.2345;--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=-0.2345;--MYVAR;MYVAR", -1.2345, eval("var MYVAR=-0.2345;--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0;--MYVAR;MYVAR", -1, eval("var MYVAR=0;--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0;--MYVAR;MYVAR", -1, eval("var MYVAR=0;--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=0;--MYVAR;MYVAR", -1, eval("var MYVAR=0;--MYVAR;MYVAR") ); + + // boolean values + // verify return value + + array[item++] = new TestCase( SECTION, "var MYVAR=true;--MYVAR", 0, eval("var MYVAR=true;--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=false;--MYVAR", -1, eval("var MYVAR=false;--MYVAR") ); + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=true;--MYVAR;MYVAR", 0, eval("var MYVAR=true;--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=false;--MYVAR;MYVAR", -1, eval("var MYVAR=false;--MYVAR;MYVAR") ); + + // boolean objects + // verify return value + + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(true);--MYVAR", 0, eval("var MYVAR=true;--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(false);--MYVAR", -1, eval("var MYVAR=false;--MYVAR") ); + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(true);--MYVAR;MYVAR", 0, eval("var MYVAR=new Boolean(true);--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new Boolean(false);--MYVAR;MYVAR", -1, eval("var MYVAR=new Boolean(false);--MYVAR;MYVAR") ); + + // string primitives + array[item++] = new TestCase( SECTION, "var MYVAR='string';--MYVAR", Number.NaN, eval("var MYVAR='string';--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='12345';--MYVAR", 12344, eval("var MYVAR='12345';--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='-12345';--MYVAR", -12346, eval("var MYVAR='-12345';--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='0Xf';--MYVAR", 14, eval("var MYVAR='0Xf';--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='077';--MYVAR", 76, eval("var MYVAR='077';--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=''; --MYVAR", -1, eval("var MYVAR='';--MYVAR") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR='string';--MYVAR;MYVAR", Number.NaN, eval("var MYVAR='string';--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='12345';--MYVAR;MYVAR", 12344, eval("var MYVAR='12345';--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='-12345';--MYVAR;MYVAR", -12346, eval("var MYVAR='-12345';--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='0xf';--MYVAR;MYVAR", 14, eval("var MYVAR='0xf';--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='077';--MYVAR;MYVAR", 76, eval("var MYVAR='077';--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR='';--MYVAR;MYVAR", -1, eval("var MYVAR='';--MYVAR;MYVAR") ); + + // string objects + array[item++] = new TestCase( SECTION, "var MYVAR=new String('string');--MYVAR", Number.NaN, eval("var MYVAR=new String('string');--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('12345');--MYVAR", 12344, eval("var MYVAR=new String('12345');--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('-12345');--MYVAR", -12346, eval("var MYVAR=new String('-12345');--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('0Xf');--MYVAR", 14, eval("var MYVAR=new String('0Xf');--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('077');--MYVAR", 76, eval("var MYVAR=new String('077');--MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String(''); --MYVAR", -1, eval("var MYVAR=new String('');--MYVAR") ); + + // verify value of variable + + array[item++] = new TestCase( SECTION, "var MYVAR=new String('string');--MYVAR;MYVAR", Number.NaN, eval("var MYVAR=new String('string');--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('12345');--MYVAR;MYVAR", 12344, eval("var MYVAR=new String('12345');--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('-12345');--MYVAR;MYVAR", -12346, eval("var MYVAR=new String('-12345');--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('0xf');--MYVAR;MYVAR", 14, eval("var MYVAR=new String('0xf');--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('077');--MYVAR;MYVAR", 76, eval("var MYVAR=new String('077');--MYVAR;MYVAR") ); + array[item++] = new TestCase( SECTION, "var MYVAR=new String('');--MYVAR;MYVAR", -1, eval("var MYVAR=new String('');--MYVAR;MYVAR") ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.6.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.6.js new file mode 100644 index 00000000000..31d95512a4c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.6.js @@ -0,0 +1,299 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.4.6.js + ECMA Section: 11.4.6 Unary + Operator + Description: convert operand to Number type + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var SECTION = "11.4.6"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + var BUGNUMBER="77391"; + + writeHeaderToLog( SECTION + " Unary + operator"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "+('')", 0, +("") ); + array[item++] = new TestCase( SECTION, "+(' ')", 0, +(" ") ); + array[item++] = new TestCase( SECTION, "+(\\t)", 0, +("\t") ); + array[item++] = new TestCase( SECTION, "+(\\n)", 0, +("\n") ); + array[item++] = new TestCase( SECTION, "+(\\r)", 0, +("\r") ); + array[item++] = new TestCase( SECTION, "+(\\f)", 0, +("\f") ); + + array[item++] = new TestCase( SECTION, "+(String.fromCharCode(0x0009)", 0, +(String.fromCharCode(0x0009)) ); + array[item++] = new TestCase( SECTION, "+(String.fromCharCode(0x0020)", 0, +(String.fromCharCode(0x0020)) ); + array[item++] = new TestCase( SECTION, "+(String.fromCharCode(0x000C)", 0, +(String.fromCharCode(0x000C)) ); + array[item++] = new TestCase( SECTION, "+(String.fromCharCode(0x000B)", 0, +(String.fromCharCode(0x000B)) ); + array[item++] = new TestCase( SECTION, "+(String.fromCharCode(0x000D)", 0, +(String.fromCharCode(0x000D)) ); + array[item++] = new TestCase( SECTION, "+(String.fromCharCode(0x000A)", 0, +(String.fromCharCode(0x000A)) ); + + // a StringNumericLiteral may be preceeded or followed by whitespace and/or + // line terminators + + array[item++] = new TestCase( SECTION, "+( ' ' + 999 )", 999, +( ' '+999) ); + array[item++] = new TestCase( SECTION, "+( '\\n' + 999 )", 999, +( '\n' +999) ); + array[item++] = new TestCase( SECTION, "+( '\\r' + 999 )", 999, +( '\r' +999) ); + array[item++] = new TestCase( SECTION, "+( '\\t' + 999 )", 999, +( '\t' +999) ); + array[item++] = new TestCase( SECTION, "+( '\\f' + 999 )", 999, +( '\f' +999) ); + + array[item++] = new TestCase( SECTION, "+( 999 + ' ' )", 999, +( 999+' ') ); + array[item++] = new TestCase( SECTION, "+( 999 + '\\n' )", 999, +( 999+'\n' ) ); + array[item++] = new TestCase( SECTION, "+( 999 + '\\r' )", 999, +( 999+'\r' ) ); + array[item++] = new TestCase( SECTION, "+( 999 + '\\t' )", 999, +( 999+'\t' ) ); + array[item++] = new TestCase( SECTION, "+( 999 + '\\f' )", 999, +( 999+'\f' ) ); + + array[item++] = new TestCase( SECTION, "+( '\\n' + 999 + '\\n' )", 999, +( '\n' +999+'\n' ) ); + array[item++] = new TestCase( SECTION, "+( '\\r' + 999 + '\\r' )", 999, +( '\r' +999+'\r' ) ); + array[item++] = new TestCase( SECTION, "+( '\\t' + 999 + '\\t' )", 999, +( '\t' +999+'\t' ) ); + array[item++] = new TestCase( SECTION, "+( '\\f' + 999 + '\\f' )", 999, +( '\f' +999+'\f' ) ); + + array[item++] = new TestCase( SECTION, "+( ' ' + '999' )", 999, +( ' '+'999') ); + array[item++] = new TestCase( SECTION, "+( '\\n' + '999' )", 999, +( '\n' +'999') ); + array[item++] = new TestCase( SECTION, "+( '\\r' + '999' )", 999, +( '\r' +'999') ); + array[item++] = new TestCase( SECTION, "+( '\\t' + '999' )", 999, +( '\t' +'999') ); + array[item++] = new TestCase( SECTION, "+( '\\f' + '999' )", 999, +( '\f' +'999') ); + + array[item++] = new TestCase( SECTION, "+( '999' + ' ' )", 999, +( '999'+' ') ); + array[item++] = new TestCase( SECTION, "+( '999' + '\\n' )", 999, +( '999'+'\n' ) ); + array[item++] = new TestCase( SECTION, "+( '999' + '\\r' )", 999, +( '999'+'\r' ) ); + array[item++] = new TestCase( SECTION, "+( '999' + '\\t' )", 999, +( '999'+'\t' ) ); + array[item++] = new TestCase( SECTION, "+( '999' + '\\f' )", 999, +( '999'+'\f' ) ); + + array[item++] = new TestCase( SECTION, "+( '\\n' + '999' + '\\n' )", 999, +( '\n' +'999'+'\n' ) ); + array[item++] = new TestCase( SECTION, "+( '\\r' + '999' + '\\r' )", 999, +( '\r' +'999'+'\r' ) ); + array[item++] = new TestCase( SECTION, "+( '\\t' + '999' + '\\t' )", 999, +( '\t' +'999'+'\t' ) ); + array[item++] = new TestCase( SECTION, "+( '\\f' + '999' + '\\f' )", 999, +( '\f' +'999'+'\f' ) ); + + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x0009) + '99' )", 99, +( String.fromCharCode(0x0009) + '99' ) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x0020) + '99' )", 99, +( String.fromCharCode(0x0020) + '99' ) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000C) + '99' )", 99, +( String.fromCharCode(0x000C) + '99' ) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000B) + '99' )", 99, +( String.fromCharCode(0x000B) + '99' ) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000D) + '99' )", 99, +( String.fromCharCode(0x000D) + '99' ) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000A) + '99' )", 99, +( String.fromCharCode(0x000A) + '99' ) ); + + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x0009)", 99, +( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x0009)) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x0020) + '99' + String.fromCharCode(0x0020)", 99, +( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x0020)) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000C) + '99' + String.fromCharCode(0x000C)", 99, +( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000C)) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000D) + '99' + String.fromCharCode(0x000D)", 99, +( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000D)) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000B) + '99' + String.fromCharCode(0x000B)", 99, +( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000B)) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000A) + '99' + String.fromCharCode(0x000A)", 99, +( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000A)) ); + + array[item++] = new TestCase( SECTION, "+( '99' + String.fromCharCode(0x0009)", 99, +( '99' + String.fromCharCode(0x0009)) ); + array[item++] = new TestCase( SECTION, "+( '99' + String.fromCharCode(0x0020)", 99, +( '99' + String.fromCharCode(0x0020)) ); + array[item++] = new TestCase( SECTION, "+( '99' + String.fromCharCode(0x000C)", 99, +( '99' + String.fromCharCode(0x000C)) ); + array[item++] = new TestCase( SECTION, "+( '99' + String.fromCharCode(0x000D)", 99, +( '99' + String.fromCharCode(0x000D)) ); + array[item++] = new TestCase( SECTION, "+( '99' + String.fromCharCode(0x000B)", 99, +( '99' + String.fromCharCode(0x000B)) ); + array[item++] = new TestCase( SECTION, "+( '99' + String.fromCharCode(0x000A)", 99, +( '99' + String.fromCharCode(0x000A)) ); + + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x0009) + 99 )", 99, +( String.fromCharCode(0x0009) + 99 ) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x0020) + 99 )", 99, +( String.fromCharCode(0x0020) + 99 ) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000C) + 99 )", 99, +( String.fromCharCode(0x000C) + 99 ) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000B) + 99 )", 99, +( String.fromCharCode(0x000B) + 99 ) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000D) + 99 )", 99, +( String.fromCharCode(0x000D) + 99 ) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000A) + 99 )", 99, +( String.fromCharCode(0x000A) + 99 ) ); + + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x0009)", 99, +( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x0009)) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x0020) + 99 + String.fromCharCode(0x0020)", 99, +( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x0020)) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000C) + 99 + String.fromCharCode(0x000C)", 99, +( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000C)) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000D) + 99 + String.fromCharCode(0x000D)", 99, +( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000D)) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000B) + 99 + String.fromCharCode(0x000B)", 99, +( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000B)) ); + array[item++] = new TestCase( SECTION, "+( String.fromCharCode(0x000A) + 99 + String.fromCharCode(0x000A)", 99, +( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000A)) ); + + array[item++] = new TestCase( SECTION, "+( 99 + String.fromCharCode(0x0009)", 99, +( 99 + String.fromCharCode(0x0009)) ); + array[item++] = new TestCase( SECTION, "+( 99 + String.fromCharCode(0x0020)", 99, +( 99 + String.fromCharCode(0x0020)) ); + array[item++] = new TestCase( SECTION, "+( 99 + String.fromCharCode(0x000C)", 99, +( 99 + String.fromCharCode(0x000C)) ); + array[item++] = new TestCase( SECTION, "+( 99 + String.fromCharCode(0x000D)", 99, +( 99 + String.fromCharCode(0x000D)) ); + array[item++] = new TestCase( SECTION, "+( 99 + String.fromCharCode(0x000B)", 99, +( 99 + String.fromCharCode(0x000B)) ); + array[item++] = new TestCase( SECTION, "+( 99 + String.fromCharCode(0x000A)", 99, +( 99 + String.fromCharCode(0x000A)) ); + + + // StrNumericLiteral:::StrDecimalLiteral:::Infinity + + array[item++] = new TestCase( SECTION, "+('Infinity')", Math.pow(10,10000), +("Infinity") ); + array[item++] = new TestCase( SECTION, "+('-Infinity')", -Math.pow(10,10000), +("-Infinity") ); + array[item++] = new TestCase( SECTION, "+('+Infinity')", Math.pow(10,10000), +("+Infinity") ); + + // StrNumericLiteral::: StrDecimalLiteral ::: DecimalDigits . DecimalDigits opt ExponentPart opt + + array[item++] = new TestCase( SECTION, "+('0')", 0, +("0") ); + array[item++] = new TestCase( SECTION, "+('-0')", -0, +("-0") ); + array[item++] = new TestCase( SECTION, "+('+0')", 0, +("+0") ); + + array[item++] = new TestCase( SECTION, "+('1')", 1, +("1") ); + array[item++] = new TestCase( SECTION, "+('-1')", -1, +("-1") ); + array[item++] = new TestCase( SECTION, "+('+1')", 1, +("+1") ); + + array[item++] = new TestCase( SECTION, "+('2')", 2, +("2") ); + array[item++] = new TestCase( SECTION, "+('-2')", -2, +("-2") ); + array[item++] = new TestCase( SECTION, "+('+2')", 2, +("+2") ); + + array[item++] = new TestCase( SECTION, "+('3')", 3, +("3") ); + array[item++] = new TestCase( SECTION, "+('-3')", -3, +("-3") ); + array[item++] = new TestCase( SECTION, "+('+3')", 3, +("+3") ); + + array[item++] = new TestCase( SECTION, "+('4')", 4, +("4") ); + array[item++] = new TestCase( SECTION, "+('-4')", -4, +("-4") ); + array[item++] = new TestCase( SECTION, "+('+4')", 4, +("+4") ); + + array[item++] = new TestCase( SECTION, "+('5')", 5, +("5") ); + array[item++] = new TestCase( SECTION, "+('-5')", -5, +("-5") ); + array[item++] = new TestCase( SECTION, "+('+5')", 5, +("+5") ); + + array[item++] = new TestCase( SECTION, "+('6')", 6, +("6") ); + array[item++] = new TestCase( SECTION, "+('-6')", -6, +("-6") ); + array[item++] = new TestCase( SECTION, "+('+6')", 6, +("+6") ); + + array[item++] = new TestCase( SECTION, "+('7')", 7, +("7") ); + array[item++] = new TestCase( SECTION, "+('-7')", -7, +("-7") ); + array[item++] = new TestCase( SECTION, "+('+7')", 7, +("+7") ); + + array[item++] = new TestCase( SECTION, "+('8')", 8, +("8") ); + array[item++] = new TestCase( SECTION, "+('-8')", -8, +("-8") ); + array[item++] = new TestCase( SECTION, "+('+8')", 8, +("+8") ); + + array[item++] = new TestCase( SECTION, "+('9')", 9, +("9") ); + array[item++] = new TestCase( SECTION, "+('-9')", -9, +("-9") ); + array[item++] = new TestCase( SECTION, "+('+9')", 9, +("+9") ); + + array[item++] = new TestCase( SECTION, "+('3.14159')", 3.14159, +("3.14159") ); + array[item++] = new TestCase( SECTION, "+('-3.14159')", -3.14159, +("-3.14159") ); + array[item++] = new TestCase( SECTION, "+('+3.14159')", 3.14159, +("+3.14159") ); + + array[item++] = new TestCase( SECTION, "+('3.')", 3, +("3.") ); + array[item++] = new TestCase( SECTION, "+('-3.')", -3, +("-3.") ); + array[item++] = new TestCase( SECTION, "+('+3.')", 3, +("+3.") ); + + array[item++] = new TestCase( SECTION, "+('3.e1')", 30, +("3.e1") ); + array[item++] = new TestCase( SECTION, "+('-3.e1')", -30, +("-3.e1") ); + array[item++] = new TestCase( SECTION, "+('+3.e1')", 30, +("+3.e1") ); + + array[item++] = new TestCase( SECTION, "+('3.e+1')", 30, +("3.e+1") ); + array[item++] = new TestCase( SECTION, "+('-3.e+1')", -30, +("-3.e+1") ); + array[item++] = new TestCase( SECTION, "+('+3.e+1')", 30, +("+3.e+1") ); + + array[item++] = new TestCase( SECTION, "+('3.e-1')", .30, +("3.e-1") ); + array[item++] = new TestCase( SECTION, "+('-3.e-1')", -.30, +("-3.e-1") ); + array[item++] = new TestCase( SECTION, "+('+3.e-1')", .30, +("+3.e-1") ); + + // StrDecimalLiteral::: .DecimalDigits ExponentPart opt + + array[item++] = new TestCase( SECTION, "+('.00001')", 0.00001, +(".00001") ); + array[item++] = new TestCase( SECTION, "+('+.00001')", 0.00001, +("+.00001") ); + array[item++] = new TestCase( SECTION, "+('-0.0001')", -0.00001, +("-.00001") ); + + array[item++] = new TestCase( SECTION, "+('.01e2')", 1, +(".01e2") ); + array[item++] = new TestCase( SECTION, "+('+.01e2')", 1, +("+.01e2") ); + array[item++] = new TestCase( SECTION, "+('-.01e2')", -1, +("-.01e2") ); + + array[item++] = new TestCase( SECTION, "+('.01e+2')", 1, +(".01e+2") ); + array[item++] = new TestCase( SECTION, "+('+.01e+2')", 1, +("+.01e+2") ); + array[item++] = new TestCase( SECTION, "+('-.01e+2')", -1, +("-.01e+2") ); + + array[item++] = new TestCase( SECTION, "+('.01e-2')", 0.0001, +(".01e-2") ); + array[item++] = new TestCase( SECTION, "+('+.01e-2')", 0.0001, +("+.01e-2") ); + array[item++] = new TestCase( SECTION, "+('-.01e-2')", -0.0001, +("-.01e-2") ); + + // StrDecimalLiteral::: DecimalDigits ExponentPart opt + + array[item++] = new TestCase( SECTION, "+('1234e5')", 123400000, +("1234e5") ); + array[item++] = new TestCase( SECTION, "+('+1234e5')", 123400000, +("+1234e5") ); + array[item++] = new TestCase( SECTION, "+('-1234e5')", -123400000, +("-1234e5") ); + + array[item++] = new TestCase( SECTION, "+('1234e+5')", 123400000, +("1234e+5") ); + array[item++] = new TestCase( SECTION, "+('+1234e+5')", 123400000, +("+1234e+5") ); + array[item++] = new TestCase( SECTION, "+('-1234e+5')", -123400000, +("-1234e+5") ); + + array[item++] = new TestCase( SECTION, "+('1234e-5')", 0.01234, +("1234e-5") ); + array[item++] = new TestCase( SECTION, "+('+1234e-5')", 0.01234, +("+1234e-5") ); + array[item++] = new TestCase( SECTION, "+('-1234e-5')", -0.01234, +("-1234e-5") ); + + // StrNumericLiteral::: HexIntegerLiteral + + array[item++] = new TestCase( SECTION, "+('0x0')", 0, +("0x0")); + array[item++] = new TestCase( SECTION, "+('0x1')", 1, +("0x1")); + array[item++] = new TestCase( SECTION, "+('0x2')", 2, +("0x2")); + array[item++] = new TestCase( SECTION, "+('0x3')", 3, +("0x3")); + array[item++] = new TestCase( SECTION, "+('0x4')", 4, +("0x4")); + array[item++] = new TestCase( SECTION, "+('0x5')", 5, +("0x5")); + array[item++] = new TestCase( SECTION, "+('0x6')", 6, +("0x6")); + array[item++] = new TestCase( SECTION, "+('0x7')", 7, +("0x7")); + array[item++] = new TestCase( SECTION, "+('0x8')", 8, +("0x8")); + array[item++] = new TestCase( SECTION, "+('0x9')", 9, +("0x9")); + array[item++] = new TestCase( SECTION, "+('0xa')", 10, +("0xa")); + array[item++] = new TestCase( SECTION, "+('0xb')", 11, +("0xb")); + array[item++] = new TestCase( SECTION, "+('0xc')", 12, +("0xc")); + array[item++] = new TestCase( SECTION, "+('0xd')", 13, +("0xd")); + array[item++] = new TestCase( SECTION, "+('0xe')", 14, +("0xe")); + array[item++] = new TestCase( SECTION, "+('0xf')", 15, +("0xf")); + array[item++] = new TestCase( SECTION, "+('0xA')", 10, +("0xA")); + array[item++] = new TestCase( SECTION, "+('0xB')", 11, +("0xB")); + array[item++] = new TestCase( SECTION, "+('0xC')", 12, +("0xC")); + array[item++] = new TestCase( SECTION, "+('0xD')", 13, +("0xD")); + array[item++] = new TestCase( SECTION, "+('0xE')", 14, +("0xE")); + array[item++] = new TestCase( SECTION, "+('0xF')", 15, +("0xF")); + + array[item++] = new TestCase( SECTION, "+('0X0')", 0, +("0X0")); + array[item++] = new TestCase( SECTION, "+('0X1')", 1, +("0X1")); + array[item++] = new TestCase( SECTION, "+('0X2')", 2, +("0X2")); + array[item++] = new TestCase( SECTION, "+('0X3')", 3, +("0X3")); + array[item++] = new TestCase( SECTION, "+('0X4')", 4, +("0X4")); + array[item++] = new TestCase( SECTION, "+('0X5')", 5, +("0X5")); + array[item++] = new TestCase( SECTION, "+('0X6')", 6, +("0X6")); + array[item++] = new TestCase( SECTION, "+('0X7')", 7, +("0X7")); + array[item++] = new TestCase( SECTION, "+('0X8')", 8, +("0X8")); + array[item++] = new TestCase( SECTION, "+('0X9')", 9, +("0X9")); + array[item++] = new TestCase( SECTION, "+('0Xa')", 10, +("0Xa")); + array[item++] = new TestCase( SECTION, "+('0Xb')", 11, +("0Xb")); + array[item++] = new TestCase( SECTION, "+('0Xc')", 12, +("0Xc")); + array[item++] = new TestCase( SECTION, "+('0Xd')", 13, +("0Xd")); + array[item++] = new TestCase( SECTION, "+('0Xe')", 14, +("0Xe")); + array[item++] = new TestCase( SECTION, "+('0Xf')", 15, +("0Xf")); + array[item++] = new TestCase( SECTION, "+('0XA')", 10, +("0XA")); + array[item++] = new TestCase( SECTION, "+('0XB')", 11, +("0XB")); + array[item++] = new TestCase( SECTION, "+('0XC')", 12, +("0XC")); + array[item++] = new TestCase( SECTION, "+('0XD')", 13, +("0XD")); + array[item++] = new TestCase( SECTION, "+('0XE')", 14, +("0XE")); + array[item++] = new TestCase( SECTION, "+('0XF')", 15, +("0XF")); + + return array; + +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.8.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.8.js new file mode 100644 index 00000000000..491167f431a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.8.js @@ -0,0 +1,215 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 11.4.8.js + ECMA Section: 11.4.8 Bitwise NOT Operator + Description: flip bits up to 32 bits + no special cases + Author: christine@netscape.com + Date: 7 july 1997 + + Data File Fields: + VALUE value passed as an argument to the ~ operator + E_RESULT expected return value of ~ VALUE; + + Static variables: + none + +*/ + + var SECTION = "11.4.8"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Bitwise Not operator"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + for ( var i = 0; i < 35; i++ ) { + var p = Math.pow(2,i); + + array[item++] = new TestCase( SECTION, "~"+p, Not(p), ~p ); + + } + for ( i = 0; i < 35; i++ ) { + var p = -Math.pow(2,i); + + array[item++] = new TestCase( SECTION, "~"+p, Not(p), ~p ); + + } + + return ( array ); +} +function ToInteger( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( n != n ) { + return 0; + } + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY ) { + return n; + } + return ( sign * Math.floor(Math.abs(n)) ); +} +function ToInt32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + + n = (sign * Math.floor( Math.abs(n) )) % Math.pow(2,32); + n = ( n >= Math.pow(2,31) ) ? n - Math.pow(2,32) : n; + + return ( n ); +} +function ToUint32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + n = sign * Math.floor( Math.abs(n) ) + + n = n % Math.pow(2,32); + + if ( n < 0 ){ + n += Math.pow(2,32); + } + + return ( n ); +} +function ToUint16( n ) { + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + + n = ( sign * Math.floor( Math.abs(n) ) ) % Math.pow(2,16); + + if (n <0) { + n += Math.pow(2,16); + } + + return ( n ); +} +function Mask( b, n ) { + b = ToUint32BitString( b ); + b = b.substring( b.length - n ); + b = ToUint32Decimal( b ); + return ( b ); +} +function ToUint32BitString( n ) { + var b = ""; + for ( p = 31; p >=0; p-- ) { + if ( n >= Math.pow(2,p) ) { + b += "1"; + n -= Math.pow(2,p); + } else { + b += "0"; + } + } + return b; +} +function ToInt32BitString( n ) { + var b = ""; + var sign = ( n < 0 ) ? -1 : 1; + + b += ( sign == 1 ) ? "0" : "1"; + + for ( p = 30; p >=0; p-- ) { + if ( (sign == 1 ) ? sign * n >= Math.pow(2,p) : sign * n > Math.pow(2,p) ) { + b += ( sign == 1 ) ? "1" : "0"; + n -= sign * Math.pow( 2, p ); + } else { + b += ( sign == 1 ) ? "0" : "1"; + } + } + + return b; +} +function ToInt32Decimal( bin ) { + var r = 0; + var sign; + + if ( Number(bin.charAt(0)) == 0 ) { + sign = 1; + r = 0; + } else { + sign = -1; + r = -(Math.pow(2,31)); + } + + for ( var j = 0; j < 31; j++ ) { + r += Math.pow( 2, j ) * Number(bin.charAt(31-j)); + } + + return r; +} +function ToUint32Decimal( bin ) { + var r = 0; + + for ( l = bin.length; l < 32; l++ ) { + bin = "0" + bin; + } + + for ( j = 0; j < 31; j++ ) { + r += Math.pow( 2, j ) * Number(bin.charAt(31-j)); + } + + return r; +} +function Not( n ) { + n = ToInt32(n); + n = ToInt32BitString(n); + + r = "" + + for( var l = 0; l < n.length; l++ ) { + r += ( n.charAt(l) == "0" ) ? "1" : "0"; + } + + n = ToInt32Decimal(r); + + return n; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.9.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.9.js new file mode 100644 index 00000000000..90ef06d5714 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.4.9.js @@ -0,0 +1,90 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.4.9.js + ECMA Section: 11.4.9 Logical NOT Operator (!) + Description: if the ToBoolean( VALUE ) result is true, return + true. else return false. + Author: christine@netscape.com + Date: 7 july 1997 + + Static variables: + none +*/ + var SECTION = "11.4.9"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Logical NOT operator (!)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + +// version("130") + + var testcases = new Array(); + + testcases[tc++] = new TestCase( SECTION, "!(null)", true, !(null) ); + testcases[tc++] = new TestCase( SECTION, "!(var x)", true, !(eval("var x")) ); + testcases[tc++] = new TestCase( SECTION, "!(void 0)", true, !(void 0) ); + + testcases[tc++] = new TestCase( SECTION, "!(false)", true, !(false) ); + testcases[tc++] = new TestCase( SECTION, "!(true)", false, !(true) ); + testcases[tc++] = new TestCase( SECTION, "!()", true, !(eval()) ); + testcases[tc++] = new TestCase( SECTION, "!(0)", true, !(0) ); + testcases[tc++] = new TestCase( SECTION, "!(-0)", true, !(-0) ); + testcases[tc++] = new TestCase( SECTION, "!(NaN)", true, !(Number.NaN) ); + testcases[tc++] = new TestCase( SECTION, "!(Infinity)", false, !(Number.POSITIVE_INFINITY) ); + testcases[tc++] = new TestCase( SECTION, "!(-Infinity)", false, !(Number.NEGATIVE_INFINITY) ); + testcases[tc++] = new TestCase( SECTION, "!(Math.PI)", false, !(Math.PI) ); + testcases[tc++] = new TestCase( SECTION, "!(1)", false, !(1) ); + testcases[tc++] = new TestCase( SECTION, "!(-1)", false, !(-1) ); + testcases[tc++] = new TestCase( SECTION, "!('')", true, !("") ); + testcases[tc++] = new TestCase( SECTION, "!('\t')", false, !("\t") ); + testcases[tc++] = new TestCase( SECTION, "!('0')", false, !("0") ); + testcases[tc++] = new TestCase( SECTION, "!('string')", false, !("string") ); + testcases[tc++] = new TestCase( SECTION, "!(new String(''))", false, !(new String("")) ); + testcases[tc++] = new TestCase( SECTION, "!(new String('string'))", false, !(new String("string")) ); + testcases[tc++] = new TestCase( SECTION, "!(new String())", false, !(new String()) ); + testcases[tc++] = new TestCase( SECTION, "!(new Boolean(true))", false, !(new Boolean(true)) ); + testcases[tc++] = new TestCase( SECTION, "!(new Boolean(false))", false, !(new Boolean(false)) ); + testcases[tc++] = new TestCase( SECTION, "!(new Array())", false, !(new Array()) ); + testcases[tc++] = new TestCase( SECTION, "!(new Array(1,2,3)", false, !(new Array(1,2,3)) ); + testcases[tc++] = new TestCase( SECTION, "!(new Number())", false, !(new Number()) ); + testcases[tc++] = new TestCase( SECTION, "!(new Number(0))", false, !(new Number(0)) ); + testcases[tc++] = new TestCase( SECTION, "!(new Number(NaN))", false, !(new Number(Number.NaN)) ); + testcases[tc++] = new TestCase( SECTION, "!(new Number(Infinity))", false, !(new Number(Number.POSITIVE_INFINITY)) ); + + test(); + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value " + } + stopTest(); + + // all tests must return a boolean value + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.5.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.5.1.js new file mode 100644 index 00000000000..67c0a8af4e6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.5.1.js @@ -0,0 +1,115 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.5.1.js + ECMA Section: 11.5.1 Applying the * operator + Description: + + 11.5.1 Applying the * operator + + The * operator performs multiplication, producing the product of its + operands. Multiplication is commutative. Multiplication is not always + associative in ECMAScript, because of finite precision. + + The result of a floating-point multiplication is governed by the rules + of IEEE 754 double-precision arithmetic: + + If either operand is NaN, the result is NaN. + The sign of the result is positive if both operands have the same sign, + negative if the operands have different signs. + Multiplication of an infinity by a zero results in NaN. + Multiplication of an infinity by an infinity results in an infinity. + The sign is determined by the rule already stated above. + Multiplication of an infinity by a finite non-zero value results in a + signed infinity. The sign is determined by the rule already stated above. + In the remaining cases, where neither an infinity or NaN is involved, the + product is computed and rounded to the nearest representable value using IEEE + 754 round-to-nearest mode. If the magnitude is too large to represent, + the result is then an infinity of appropriate sign. If the magnitude is + oo small to represent, the result is then a zero + of appropriate sign. The ECMAScript language requires support of gradual + underflow as defined by IEEE 754. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.5.1"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Applying the * operator"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Number.NaN * Number.NaN", Number.NaN, Number.NaN * Number.NaN ); + array[item++] = new TestCase( SECTION, "Number.NaN * 1", Number.NaN, Number.NaN * 1 ); + array[item++] = new TestCase( SECTION, "1 * Number.NaN", Number.NaN, 1 * Number.NaN ); + + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY * 0", Number.NaN, Number.POSITIVE_INFINITY * 0 ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY * 0", Number.NaN, Number.NEGATIVE_INFINITY * 0 ); + array[item++] = new TestCase( SECTION, "0 * Number.POSITIVE_INFINITY", Number.NaN, 0 * Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "0 * Number.NEGATIVE_INFINITY", Number.NaN, 0 * Number.NEGATIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "-0 * Number.POSITIVE_INFINITY", Number.NaN, -0 * Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-0 * Number.NEGATIVE_INFINITY", Number.NaN, -0 * Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY * -0", Number.NaN, Number.POSITIVE_INFINITY * -0 ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY * -0", Number.NaN, Number.NEGATIVE_INFINITY * -0 ); + + array[item++] = new TestCase( SECTION, "0 * -0", -0, 0 * -0 ); + array[item++] = new TestCase( SECTION, "-0 * 0", -0, -0 * 0 ); + array[item++] = new TestCase( SECTION, "-0 * -0", 0, -0 * -0 ); + array[item++] = new TestCase( SECTION, "0 * 0", 0, 0 * 0 ); + + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY * Number.NEGATIVE_INFINITY", Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY * Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY * Number.NEGATIVE_INFINITY", Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY * Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY * Number.POSITIVE_INFINITY", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY * Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY * Number.POSITIVE_INFINITY", Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY * Number.POSITIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY * 1 ", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY * 1 ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY * -1 ", Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY * -1 ); + array[item++] = new TestCase( SECTION, "1 * Number.NEGATIVE_INFINITY", Number.NEGATIVE_INFINITY, 1 * Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-1 * Number.NEGATIVE_INFINITY", Number.POSITIVE_INFINITY, -1 * Number.NEGATIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY * 1 ", Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY * 1 ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY * -1 ", Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY * -1 ); + array[item++] = new TestCase( SECTION, "1 * Number.POSITIVE_INFINITY", Number.POSITIVE_INFINITY, 1 * Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-1 * Number.POSITIVE_INFINITY", Number.NEGATIVE_INFINITY, -1 * Number.POSITIVE_INFINITY ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.5.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.5.2.js new file mode 100644 index 00000000000..c681a35c6b6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.5.2.js @@ -0,0 +1,154 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.5.2.js + ECMA Section: 11.5.2 Applying the / operator + Description: + + The / operator performs division, producing the quotient of its operands. + The left operand is the dividend and the right operand is the divisor. + ECMAScript does not perform integer division. The operands and result of all + division operations are double-precision floating-point numbers. + The result of division is determined by the specification of IEEE 754 arithmetic: + + If either operand is NaN, the result is NaN. + The sign of the result is positive if both operands have the same sign, negative if the operands have different + signs. + Division of an infinity by an infinity results in NaN. + Division of an infinity by a zero results in an infinity. The sign is determined by the rule already stated above. + Division of an infinity by a non-zero finite value results in a signed infinity. The sign is determined by the rule + already stated above. + Division of a finite value by an infinity results in zero. The sign is determined by the rule already stated above. + Division of a zero by a zero results in NaN; division of zero by any other finite value results in zero, with the sign + determined by the rule already stated above. + Division of a non-zero finite value by a zero results in a signed infinity. The sign is determined by the rule + already stated above. + In the remaining cases, where neither an infinity, nor a zero, nor NaN is involved, the quotient is computed and + rounded to the nearest representable value using IEEE 754 round-to-nearest mode. If the magnitude is too + large to represent, we say the operation overflows; the result is then an infinity of appropriate sign. If the + magnitude is too small to represent, we say the operation underflows and the result is a zero of the appropriate + sign. The ECMAScript language requires support of gradual underflow as defined by IEEE 754. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.5.2"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + var BUGNUMBER="111202"; + + writeHeaderToLog( SECTION + " Applying the / operator"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // if either operand is NaN, the result is NaN. + + array[item++] = new TestCase( SECTION, "Number.NaN / Number.NaN", Number.NaN, Number.NaN / Number.NaN ); + array[item++] = new TestCase( SECTION, "Number.NaN / 1", Number.NaN, Number.NaN / 1 ); + array[item++] = new TestCase( SECTION, "1 / Number.NaN", Number.NaN, 1 / Number.NaN ); + + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY / Number.NaN", Number.NaN, Number.POSITIVE_INFINITY / Number.NaN ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY / Number.NaN", Number.NaN, Number.NEGATIVE_INFINITY / Number.NaN ); + + // Division of an infinity by an infinity results in NaN. + + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY / Number.NEGATIVE_INFINITY", Number.NaN, Number.NEGATIVE_INFINITY / Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY / Number.NEGATIVE_INFINITY", Number.NaN, Number.POSITIVE_INFINITY / Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY / Number.POSITIVE_INFINITY", Number.NaN, Number.NEGATIVE_INFINITY / Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY / Number.POSITIVE_INFINITY", Number.NaN, Number.POSITIVE_INFINITY / Number.POSITIVE_INFINITY ); + + // Division of an infinity by a zero results in an infinity. + + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY / 0", Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY / 0 ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY / 0", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY / 0 ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY / -0", Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY / -0 ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY / -0", Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY / -0 ); + + // Division of an infinity by a non-zero finite value results in a signed infinity. + + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY / 1 ", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY / 1 ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY / -1 ", Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY / -1 ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY / 1 ", Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY / 1 ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY / -1 ", Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY / -1 ); + + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY / Number.MAX_VALUE ", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY / Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY / -Number.MAX_VALUE ", Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY / -Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY / Number.MAX_VALUE ", Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY / Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY / -Number.MAX_VALUE ", Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY / -Number.MAX_VALUE ); + + // Division of a finite value by an infinity results in zero. + + array[item++] = new TestCase( SECTION, "1 / Number.NEGATIVE_INFINITY", -0, 1 / Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "1 / Number.POSITIVE_INFINITY", 0, 1 / Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-1 / Number.POSITIVE_INFINITY", -0, -1 / Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-1 / Number.NEGATIVE_INFINITY", 0, -1 / Number.NEGATIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE / Number.NEGATIVE_INFINITY", -0, Number.MAX_VALUE / Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE / Number.POSITIVE_INFINITY", 0, Number.MAX_VALUE / Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-Number.MAX_VALUE / Number.POSITIVE_INFINITY", -0, -Number.MAX_VALUE / Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-Number.MAX_VALUE / Number.NEGATIVE_INFINITY", 0, -Number.MAX_VALUE / Number.NEGATIVE_INFINITY ); + + // Division of a zero by a zero results in NaN + + array[item++] = new TestCase( SECTION, "0 / -0", Number.NaN, 0 / -0 ); + array[item++] = new TestCase( SECTION, "-0 / 0", Number.NaN, -0 / 0 ); + array[item++] = new TestCase( SECTION, "-0 / -0", Number.NaN, -0 / -0 ); + array[item++] = new TestCase( SECTION, "0 / 0", Number.NaN, 0 / 0 ); + + // division of zero by any other finite value results in zero + + array[item++] = new TestCase( SECTION, "0 / 1", 0, 0 / 1 ); + array[item++] = new TestCase( SECTION, "0 / -1", -0, 0 / -1 ); + array[item++] = new TestCase( SECTION, "-0 / 1", -0, -0 / 1 ); + array[item++] = new TestCase( SECTION, "-0 / -1", 0, -0 / -1 ); + + // Division of a non-zero finite value by a zero results in a signed infinity. + + array[item++] = new TestCase( SECTION, "1 / 0", Number.POSITIVE_INFINITY, 1/0 ); + array[item++] = new TestCase( SECTION, "1 / -0", Number.NEGATIVE_INFINITY, 1/-0 ); + array[item++] = new TestCase( SECTION, "-1 / 0", Number.NEGATIVE_INFINITY, -1/0 ); + array[item++] = new TestCase( SECTION, "-1 / -0", Number.POSITIVE_INFINITY, -1/-0 ); + + array[item++] = new TestCase( SECTION, "0 / Number.POSITIVE_INFINITY", 0, 0 / Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "0 / Number.NEGATIVE_INFINITY", -0, 0 / Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-0 / Number.POSITIVE_INFINITY", -0, -0 / Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-0 / Number.NEGATIVE_INFINITY", 0, -0 / Number.NEGATIVE_INFINITY ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.5.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.5.3.js new file mode 100644 index 00000000000..8b9722c7cf3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.5.3.js @@ -0,0 +1,160 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.5.3.js + ECMA Section: 11.5.3 Applying the % operator + Description: + + The binary % operator is said to yield the remainder of its operands from + an implied division; the left operand is the dividend and the right operand + is the divisor. In C and C++, the remainder operator accepts only integral + operands, but in ECMAScript, it also accepts floating-point operands. + + The result of a floating-point remainder operation as computed by the % + operator is not the same as the "remainder" operation defined by IEEE 754. + The IEEE 754 "remainder" operation computes the remainder from a rounding + division, not a truncating division, and so its behavior is not analogous + to that of the usual integer remainder operator. Instead the ECMAScript + language defines % on floating-point operations to behave in a manner + analogous to that of the Java integer remainder operator; this may be + compared with the C library function fmod. + + The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetic: + + If either operand is NaN, the result is NaN. + The sign of the result equals the sign of the dividend. + If the dividend is an infinity, or the divisor is a zero, or both, the result is NaN. + If the dividend is finite and the divisor is an infinity, the result equals the dividend. + If the dividend is a zero and the divisor is finite, the result is the same as the dividend. + In the remaining cases, where neither an infinity, nor a zero, nor NaN is involved, the floating-point remainder r + from a dividend n and a divisor d is defined by the mathematical relation r = n (d * q) where q is an integer that + is negative only if n/d is negative and positive only if n/d is positive, and whose magnitude is as large as + possible without exceeding the magnitude of the true mathematical quotient of n and d. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.5.3"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + var BUGNUMBER="111202"; + + writeHeaderToLog( SECTION + " Applying the % operator"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // if either operand is NaN, the result is NaN. + + array[item++] = new TestCase( SECTION, "Number.NaN % Number.NaN", Number.NaN, Number.NaN % Number.NaN ); + array[item++] = new TestCase( SECTION, "Number.NaN % 1", Number.NaN, Number.NaN % 1 ); + array[item++] = new TestCase( SECTION, "1 % Number.NaN", Number.NaN, 1 % Number.NaN ); + + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY % Number.NaN", Number.NaN, Number.POSITIVE_INFINITY % Number.NaN ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY % Number.NaN", Number.NaN, Number.NEGATIVE_INFINITY % Number.NaN ); + + // If the dividend is an infinity, or the divisor is a zero, or both, the result is NaN. + // dividend is an infinity + + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY % Number.NEGATIVE_INFINITY", Number.NaN, Number.NEGATIVE_INFINITY % Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY % Number.NEGATIVE_INFINITY", Number.NaN, Number.POSITIVE_INFINITY % Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY % Number.POSITIVE_INFINITY", Number.NaN, Number.NEGATIVE_INFINITY % Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY % Number.POSITIVE_INFINITY", Number.NaN, Number.POSITIVE_INFINITY % Number.POSITIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY % 0", Number.NaN, Number.POSITIVE_INFINITY % 0 ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY % 0", Number.NaN, Number.NEGATIVE_INFINITY % 0 ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY % -0", Number.NaN, Number.POSITIVE_INFINITY % -0 ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY % -0", Number.NaN, Number.NEGATIVE_INFINITY % -0 ); + + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY % 1 ", Number.NaN, Number.NEGATIVE_INFINITY % 1 ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY % -1 ", Number.NaN, Number.NEGATIVE_INFINITY % -1 ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY % 1 ", Number.NaN, Number.POSITIVE_INFINITY % 1 ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY % -1 ", Number.NaN, Number.POSITIVE_INFINITY % -1 ); + + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY % Number.MAX_VALUE ", Number.NaN, Number.NEGATIVE_INFINITY % Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY % -Number.MAX_VALUE ", Number.NaN, Number.NEGATIVE_INFINITY % -Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY % Number.MAX_VALUE ", Number.NaN, Number.POSITIVE_INFINITY % Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY % -Number.MAX_VALUE ", Number.NaN, Number.POSITIVE_INFINITY % -Number.MAX_VALUE ); + + // divisor is 0 + array[item++] = new TestCase( SECTION, "0 % -0", Number.NaN, 0 % -0 ); + array[item++] = new TestCase( SECTION, "-0 % 0", Number.NaN, -0 % 0 ); + array[item++] = new TestCase( SECTION, "-0 % -0", Number.NaN, -0 % -0 ); + array[item++] = new TestCase( SECTION, "0 % 0", Number.NaN, 0 % 0 ); + + array[item++] = new TestCase( SECTION, "1 % 0", Number.NaN, 1%0 ); + array[item++] = new TestCase( SECTION, "1 % -0", Number.NaN, 1%-0 ); + array[item++] = new TestCase( SECTION, "-1 % 0", Number.NaN, -1%0 ); + array[item++] = new TestCase( SECTION, "-1 % -0", Number.NaN, -1%-0 ); + + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE % 0", Number.NaN, Number.MAX_VALUE%0 ); + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE % -0", Number.NaN, Number.MAX_VALUE%-0 ); + array[item++] = new TestCase( SECTION, "-Number.MAX_VALUE % 0", Number.NaN, -Number.MAX_VALUE%0 ); + array[item++] = new TestCase( SECTION, "-Number.MAX_VALUE % -0", Number.NaN, -Number.MAX_VALUE%-0 ); + + // If the dividend is finite and the divisor is an infinity, the result equals the dividend. + + array[item++] = new TestCase( SECTION, "1 % Number.NEGATIVE_INFINITY", 1, 1 % Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "1 % Number.POSITIVE_INFINITY", 1, 1 % Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-1 % Number.POSITIVE_INFINITY", -1, -1 % Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-1 % Number.NEGATIVE_INFINITY", -1, -1 % Number.NEGATIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE % Number.NEGATIVE_INFINITY", Number.MAX_VALUE, Number.MAX_VALUE % Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE % Number.POSITIVE_INFINITY", Number.MAX_VALUE, Number.MAX_VALUE % Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-Number.MAX_VALUE % Number.POSITIVE_INFINITY", -Number.MAX_VALUE, -Number.MAX_VALUE % Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-Number.MAX_VALUE % Number.NEGATIVE_INFINITY", -Number.MAX_VALUE, -Number.MAX_VALUE % Number.NEGATIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "0 % Number.POSITIVE_INFINITY", 0, 0 % Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "0 % Number.NEGATIVE_INFINITY", 0, 0 % Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-0 % Number.POSITIVE_INFINITY", -0, -0 % Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-0 % Number.NEGATIVE_INFINITY", -0, -0 % Number.NEGATIVE_INFINITY ); + + // If the dividend is a zero and the divisor is finite, the result is the same as the dividend. + + array[item++] = new TestCase( SECTION, "0 % 1", 0, 0 % 1 ); + array[item++] = new TestCase( SECTION, "0 % -1", -0, 0 % -1 ); + array[item++] = new TestCase( SECTION, "-0 % 1", -0, -0 % 1 ); + array[item++] = new TestCase( SECTION, "-0 % -1", 0, -0 % -1 ); + +// In the remaining cases, where neither an infinity, nor a zero, nor NaN is involved, the floating-point remainder r +// from a dividend n and a divisor d is defined by the mathematical relation r = n (d * q) where q is an integer that +// is negative only if n/d is negative and positive only if n/d is positive, and whose magnitude is as large as +// possible without exceeding the magnitude of the true mathematical quotient of n and d. + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.6.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.6.1-1.js new file mode 100644 index 00000000000..58e5edca962 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.6.1-1.js @@ -0,0 +1,211 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.6.1-1.js + ECMA Section: 11.6.1 The addition operator ( + ) + Description: + + The addition operator either performs string concatenation or numeric + addition. + + The production AdditiveExpression : AdditiveExpression + MultiplicativeExpression + is evaluated as follows: + + 1. Evaluate AdditiveExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate MultiplicativeExpression. + 4. Call GetValue(Result(3)). + 5. Call ToPrimitive(Result(2)). + 6. Call ToPrimitive(Result(4)). + 7. If Type(Result(5)) is String or Type(Result(6)) is String, go to step 12. + (Note that this step differs from step 3 in the algorithm for comparison + for the relational operators in using or instead of and.) + 8. Call ToNumber(Result(5)). + 9. Call ToNumber(Result(6)). + 10. Apply the addition operation to Result(8) and Result(9). See the discussion below (11.6.3). + 11. Return Result(10). + 12. Call ToString(Result(5)). + 13. Call ToString(Result(6)). + 14. Concatenate Result(12) followed by Result(13). + 15. Return Result(14). + + Note that no hint is provided in the calls to ToPrimitive in steps 5 and 6. + All native ECMAScript objects except Date objects handle the absence of a + hint as if the hint Number were given; Date objects handle the absence of a + hint as if the hint String were given. Host objects may handle the absence + of a hint in some other manner. + + This test does not cover cases where the Additive or Mulplicative expression + ToPrimitive is string. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.6.1-1"; + var VERSION = "ECMA_1"; + startTest(); + + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " The Addition operator ( + )"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function getTestCases() { + var array = new Array(); + var item = 0; + + // tests for boolean primitive, boolean object, Object object, a "MyObject" whose value is + // a boolean primitive and a boolean object, and "MyValuelessObject", where the value is + // set in the object's prototype, not the object itself. + + array[item++] = new TestCase( SECTION, + "var EXP_1 = true; var EXP_2 = false; EXP_1 + EXP_2", + 1, + eval("var EXP_1 = true; var EXP_2 = false; EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Boolean(true); var EXP_2 = new Boolean(false); EXP_1 + EXP_2", + 1, + eval("var EXP_1 = new Boolean(true); var EXP_2 = new Boolean(false); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Object(true); var EXP_2 = new Object(false); EXP_1 + EXP_2", + 1, + eval("var EXP_1 = new Object(true); var EXP_2 = new Object(false); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Object(new Boolean(true)); var EXP_2 = new Object(new Boolean(false)); EXP_1 + EXP_2", + 1, + eval("var EXP_1 = new Object(new Boolean(true)); var EXP_2 = new Object(new Boolean(false)); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyObject(true); var EXP_2 = new MyObject(false); EXP_1 + EXP_2", + 1, + eval("var EXP_1 = new MyObject(true); var EXP_2 = new MyObject(false); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyObject(new Boolean(true)); var EXP_2 = new MyObject(new Boolean(false)); EXP_1 + EXP_2", + "[object Object][object Object]", + eval("var EXP_1 = new MyObject(new Boolean(true)); var EXP_2 = new MyObject(new Boolean(false)); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyValuelessObject(true); var EXP_2 = new MyValuelessObject(false); EXP_1 + EXP_2", + 1, + eval("var EXP_1 = new MyValuelessObject(true); var EXP_2 = new MyValuelessObject(false); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyValuelessObject(new Boolean(true)); var EXP_2 = new MyValuelessObject(new Boolean(false)); EXP_1 + EXP_2", + "truefalse", + eval("var EXP_1 = new MyValuelessObject(new Boolean(true)); var EXP_2 = new MyValuelessObject(new Boolean(false)); EXP_1 + EXP_2") ); + + // tests for number primitive, number object, Object object, a "MyObject" whose value is + // a number primitive and a number object, and "MyValuelessObject", where the value is + // set in the object's prototype, not the object itself. + + array[item++] = new TestCase( SECTION, + "var EXP_1 = 100; var EXP_2 = -1; EXP_1 + EXP_2", + 99, + eval("var EXP_1 = 100; var EXP_2 = -1; EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Number(100); var EXP_2 = new Number(-1); EXP_1 + EXP_2", + 99, + eval("var EXP_1 = new Number(100); var EXP_2 = new Number(-1); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Object(100); var EXP_2 = new Object(-1); EXP_1 + EXP_2", + 99, + eval("var EXP_1 = new Object(100); var EXP_2 = new Object(-1); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Object(new Number(100)); var EXP_2 = new Object(new Number(-1)); EXP_1 + EXP_2", + 99, + eval("var EXP_1 = new Object(new Number(100)); var EXP_2 = new Object(new Number(-1)); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyObject(100); var EXP_2 = new MyObject(-1); EXP_1 + EXP_2", + 99, + eval("var EXP_1 = new MyObject(100); var EXP_2 = new MyObject(-1); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyObject(new Number(100)); var EXP_2 = new MyObject(new Number(-1)); EXP_1 + EXP_2", + "[object Object][object Object]", + eval("var EXP_1 = new MyObject(new Number(100)); var EXP_2 = new MyObject(new Number(-1)); EXP_1 + EXP_2") ); + + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyValuelessObject(100); var EXP_2 = new MyValuelessObject(-1); EXP_1 + EXP_2", + 99, + eval("var EXP_1 = new MyValuelessObject(100); var EXP_2 = new MyValuelessObject(-1); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyValuelessObject(new Number(100)); var EXP_2 = new MyValuelessObject(new Number(-1)); EXP_1 + EXP_2", + "100-1", + eval("var EXP_1 = new MyValuelessObject(new Number(100)); var EXP_2 = new MyValuelessObject(new Number(-1)); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyValuelessObject( new MyValuelessObject( new Boolean(true) ) ); EXP_1 + EXP_1", + "truetrue", + eval("var EXP_1 = new MyValuelessObject( new MyValuelessObject( new Boolean(true) ) ); EXP_1 + EXP_1") ); + + return ( array ); +} + + +function MyProtoValuelessObject() { + this.valueOf = new Function ( "" ); + this.__proto__ = null; +} + +function MyProtolessObject( value ) { + this.valueOf = new Function( "return this.value" ); + this.__proto__ = null; + this.value = value; +} + +function MyValuelessObject(value) { + this.__proto__ = new MyPrototypeObject(value); +} +function MyPrototypeObject(value) { + this.valueOf = new Function( "return this.value;" ); + this.toString = new Function( "return (this.value + '');" ); + this.value = value; +} + +function MyObject( value ) { + this.valueOf = new Function( "return this.value" ); + this.value = value; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.6.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.6.1-2.js new file mode 100644 index 00000000000..400ec719ff0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.6.1-2.js @@ -0,0 +1,203 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.6.1-2.js + ECMA Section: 11.6.1 The addition operator ( + ) + Description: + + The addition operator either performs string concatenation or numeric + addition. + + The production AdditiveExpression : AdditiveExpression + MultiplicativeExpression + is evaluated as follows: + + 1. Evaluate AdditiveExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate MultiplicativeExpression. + 4. Call GetValue(Result(3)). + 5. Call ToPrimitive(Result(2)). + 6. Call ToPrimitive(Result(4)). + 7. If Type(Result(5)) is String or Type(Result(6)) is String, go to step 12. + (Note that this step differs from step 3 in the algorithm for comparison + for the relational operators in using or instead of and.) + 8. Call ToNumber(Result(5)). + 9. Call ToNumber(Result(6)). + 10. Apply the addition operation to Result(8) and Result(9). See the discussion below (11.6.3). + 11. Return Result(10). + 12. Call ToString(Result(5)). + 13. Call ToString(Result(6)). + 14. Concatenate Result(12) followed by Result(13). + 15. Return Result(14). + + Note that no hint is provided in the calls to ToPrimitive in steps 5 and 6. + All native ECMAScript objects except Date objects handle the absence of a + hint as if the hint Number were given; Date objects handle the absence of a + hint as if the hint String were given. Host objects may handle the absence + of a hint in some other manner. + + This test does only covers cases where the Additive or Mulplicative expression + ToPrimitive is a string. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.6.1-2"; + var VERSION = "ECMA_1"; + startTest(); + + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " The Addition operator ( + )"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // tests for boolean primitive, boolean object, Object object, a "MyObject" whose value is + // a boolean primitive and a boolean object, and "MyValuelessObject", where the value is + // set in the object's prototype, not the object itself. + + array[item++] = new TestCase( SECTION, + "var EXP_1 = 'string'; var EXP_2 = false; EXP_1 + EXP_2", + "stringfalse", + eval("var EXP_1 = 'string'; var EXP_2 = false; EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = true; var EXP_2 = 'string'; EXP_1 + EXP_2", + "truestring", + eval("var EXP_1 = true; var EXP_2 = 'string'; EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Boolean(true); var EXP_2 = new String('string'); EXP_1 + EXP_2", + "truestring", + eval("var EXP_1 = new Boolean(true); var EXP_2 = new String('string'); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Object(true); var EXP_2 = new Object('string'); EXP_1 + EXP_2", + "truestring", + eval("var EXP_1 = new Object(true); var EXP_2 = new Object('string'); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Object(new String('string')); var EXP_2 = new Object(new Boolean(false)); EXP_1 + EXP_2", + "stringfalse", + eval("var EXP_1 = new Object(new String('string')); var EXP_2 = new Object(new Boolean(false)); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyObject(true); var EXP_2 = new MyObject('string'); EXP_1 + EXP_2", + "truestring", + eval("var EXP_1 = new MyObject(true); var EXP_2 = new MyObject('string'); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyObject(new String('string')); var EXP_2 = new MyObject(new Boolean(false)); EXP_1 + EXP_2", + "[object Object][object Object]", + eval("var EXP_1 = new MyObject(new String('string')); var EXP_2 = new MyObject(new Boolean(false)); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyValuelessObject('string'); var EXP_2 = new MyValuelessObject(false); EXP_1 + EXP_2", + "stringfalse", + eval("var EXP_1 = new MyValuelessObject('string'); var EXP_2 = new MyValuelessObject(false); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyValuelessObject(new String('string')); var EXP_2 = new MyValuelessObject(new Boolean(false)); EXP_1 + EXP_2", + "stringfalse", + eval("var EXP_1 = new MyValuelessObject(new String('string')); var EXP_2 = new MyValuelessObject(new Boolean(false)); EXP_1 + EXP_2") ); + + // tests for number primitive, number object, Object object, a "MyObject" whose value is + // a number primitive and a number object, and "MyValuelessObject", where the value is + // set in the object's prototype, not the object itself. + + array[item++] = new TestCase( SECTION, + "var EXP_1 = 100; var EXP_2 = 'string'; EXP_1 + EXP_2", + "100string", + eval("var EXP_1 = 100; var EXP_2 = 'string'; EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new String('string'); var EXP_2 = new Number(-1); EXP_1 + EXP_2", + "string-1", + eval("var EXP_1 = new String('string'); var EXP_2 = new Number(-1); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Object(100); var EXP_2 = new Object('string'); EXP_1 + EXP_2", + "100string", + eval("var EXP_1 = new Object(100); var EXP_2 = new Object('string'); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Object(new String('string')); var EXP_2 = new Object(new Number(-1)); EXP_1 + EXP_2", + "string-1", + eval("var EXP_1 = new Object(new String('string')); var EXP_2 = new Object(new Number(-1)); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyObject(100); var EXP_2 = new MyObject('string'); EXP_1 + EXP_2", + "100string", + eval("var EXP_1 = new MyObject(100); var EXP_2 = new MyObject('string'); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyObject(new String('string')); var EXP_2 = new MyObject(new Number(-1)); EXP_1 + EXP_2", + "[object Object][object Object]", + eval("var EXP_1 = new MyObject(new String('string')); var EXP_2 = new MyObject(new Number(-1)); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyValuelessObject(100); var EXP_2 = new MyValuelessObject('string'); EXP_1 + EXP_2", + "100string", + eval("var EXP_1 = new MyValuelessObject(100); var EXP_2 = new MyValuelessObject('string'); EXP_1 + EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyValuelessObject(new String('string')); var EXP_2 = new MyValuelessObject(new Number(-1)); EXP_1 + EXP_2", + "string-1", + eval("var EXP_1 = new MyValuelessObject(new String('string')); var EXP_2 = new MyValuelessObject(new Number(-1)); EXP_1 + EXP_2") ); + return ( array ); +} +function MyProtoValuelessObject() { + this.valueOf = new Function ( "" ); + this.__proto__ = null; +} +function MyProtolessObject( value ) { + this.valueOf = new Function( "return this.value" ); + this.__proto__ = null; + this.value = value; +} +function MyValuelessObject(value) { + this.__proto__ = new MyPrototypeObject(value); +} +function MyPrototypeObject(value) { + this.valueOf = new Function( "return this.value;" ); + this.toString = new Function( "return (this.value + '');" ); + this.value = value; +} +function MyObject( value ) { + this.valueOf = new Function( "return this.value" ); + this.value = value; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.6.1-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.6.1-3.js new file mode 100644 index 00000000000..a5fdc881e9b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.6.1-3.js @@ -0,0 +1,181 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.6.1-3.js + ECMA Section: 11.6.1 The addition operator ( + ) + Description: + + The addition operator either performs string concatenation or numeric + addition. + + The production AdditiveExpression : AdditiveExpression + MultiplicativeExpression + is evaluated as follows: + + 1. Evaluate AdditiveExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate MultiplicativeExpression. + 4. Call GetValue(Result(3)). + 5. Call ToPrimitive(Result(2)). + 6. Call ToPrimitive(Result(4)). + 7. If Type(Result(5)) is String or Type(Result(6)) is String, go to step 12. + (Note that this step differs from step 3 in the algorithm for comparison + for the relational operators in using or instead of and.) + 8. Call ToNumber(Result(5)). + 9. Call ToNumber(Result(6)). + 10. Apply the addition operation to Result(8) and Result(9). See the discussion below (11.6.3). + 11. Return Result(10). + 12. Call ToString(Result(5)). + 13. Call ToString(Result(6)). + 14. Concatenate Result(12) followed by Result(13). + 15. Return Result(14). + + Note that no hint is provided in the calls to ToPrimitive in steps 5 and 6. + All native ECMAScript objects except Date objects handle the absence of a + hint as if the hint Number were given; Date objects handle the absence of a + hint as if the hint String were given. Host objects may handle the absence + of a hint in some other manner. + + This test does only covers cases where the Additive or Mulplicative expression + is a Date. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.6.1-3"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " The Addition operator ( + )"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // tests for boolean primitive, boolean object, Object object, a "MyObject" whose value is + // a boolean primitive and a boolean object, and "MyValuelessObject", where the value is + // set in the object's prototype, not the object itself. + + var DATE1 = new Date(); + + array[item++] = new TestCase( SECTION, + "var DATE1 = new Date(); DATE1 + DATE1", + DATE1.toString() + DATE1.toString(), + DATE1 + DATE1 ); + + array[item++] = new TestCase( SECTION, + "var DATE1 = new Date(); DATE1 + 0", + DATE1.toString() + 0, + DATE1 + 0 ); + + array[item++] = new TestCase( SECTION, + "var DATE1 = new Date(); DATE1 + new Number(0)", + DATE1.toString() + 0, + DATE1 + new Number(0) ); + + array[item++] = new TestCase( SECTION, + "var DATE1 = new Date(); DATE1 + true", + DATE1.toString() + "true", + DATE1 + true ); + + array[item++] = new TestCase( SECTION, + "var DATE1 = new Date(); DATE1 + new Boolean(true)", + DATE1.toString() + "true", + DATE1 + new Boolean(true) ); + + array[item++] = new TestCase( SECTION, + "var DATE1 = new Date(); DATE1 + new Boolean(true)", + DATE1.toString() + "true", + DATE1 + new Boolean(true) ); + + var MYOB1 = new MyObject( DATE1 ); + var MYOB2 = new MyValuelessObject( DATE1 ); + var MYOB3 = new MyProtolessObject( DATE1 ); + var MYOB4 = new MyProtoValuelessObject( DATE1 ); + + array[item++] = new TestCase( SECTION, + "MYOB1 = new MyObject(DATE1); MYOB1 + new Number(1)", + "[object Object]1", + MYOB1 + new Number(1) ); + + array[item++] = new TestCase( SECTION, + "MYOB1 = new MyObject(DATE1); MYOB1 + 1", + "[object Object]1", + MYOB1 + 1 ); + + array[item++] = new TestCase( SECTION, + "MYOB2 = new MyValuelessObject(DATE1); MYOB3 + 'string'", + DATE1.toString() + "string", + MYOB2 + 'string' ); + + array[item++] = new TestCase( SECTION, + "MYOB2 = new MyValuelessObject(DATE1); MYOB3 + new String('string')", + DATE1.toString() + "string", + MYOB2 + new String('string') ); +/* + array[item++] = new TestCase( SECTION, + "MYOB3 = new MyProtolessObject(DATE1); MYOB3 + new Boolean(true)", + DATE1.toString() + "true", + MYOB3 + new Boolean(true) ); +*/ + array[item++] = new TestCase( SECTION, + "MYOB1 = new MyObject(DATE1); MYOB1 + true", + "[object Object]true", + MYOB1 + true ); + + return ( array ); +} +function MyProtoValuelessObject() { + this.valueOf = new Function ( "" ); + this.__proto__ = null; +} +function MyProtolessObject( value ) { + this.valueOf = new Function( "return this.value" ); + this.__proto__ = null; + this.value = value; +} +function MyValuelessObject(value) { + this.__proto__ = new MyPrototypeObject(value); +} +function MyPrototypeObject(value) { + this.valueOf = new Function( "return this.value;" ); + this.toString = new Function( "return (this.value + '');" ); + this.value = value; +} +function MyObject( value ) { + this.valueOf = new Function( "return this.value" ); + this.value = value; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.6.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.6.2-1.js new file mode 100644 index 00000000000..3c1bd9194ec --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.6.2-1.js @@ -0,0 +1,199 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.6.2-1.js + ECMA Section: 11.6.2 The Subtraction operator ( - ) + Description: + + The production AdditiveExpression : AdditiveExpression - + MultiplicativeExpression is evaluated as follows: + + 1. Evaluate AdditiveExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate MultiplicativeExpression. + 4. Call GetValue(Result(3)). + 5. Call ToNumber(Result(2)). + 6. Call ToNumber(Result(4)). + 7. Apply the subtraction operation to Result(5) and Result(6). See the + discussion below (11.6.3). + 8. Return Result(7). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.6.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " The subtraction operator ( - )"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // tests for boolean primitive, boolean object, Object object, a "MyObject" whose value is + // a boolean primitive and a boolean object, and "MyValuelessObject", where the value is + // set in the object's prototype, not the object itself. + + array[item++] = new TestCase( SECTION, + "var EXP_1 = true; var EXP_2 = false; EXP_1 - EXP_2", + 1, + eval("var EXP_1 = true; var EXP_2 = false; EXP_1 - EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Boolean(true); var EXP_2 = new Boolean(false); EXP_1 - EXP_2", + 1, + eval("var EXP_1 = new Boolean(true); var EXP_2 = new Boolean(false); EXP_1 - EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Object(true); var EXP_2 = new Object(false); EXP_1 - EXP_2", + 1, + eval("var EXP_1 = new Object(true); var EXP_2 = new Object(false); EXP_1 - EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Object(new Boolean(true)); var EXP_2 = new Object(new Boolean(false)); EXP_1 - EXP_2", + 1, + eval("var EXP_1 = new Object(new Boolean(true)); var EXP_2 = new Object(new Boolean(false)); EXP_1 - EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyObject(true); var EXP_2 = new MyObject(false); EXP_1 - EXP_2", + 1, + eval("var EXP_1 = new MyObject(true); var EXP_2 = new MyObject(false); EXP_1 - EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyObject(new Boolean(true)); var EXP_2 = new MyObject(new Boolean(false)); EXP_1 - EXP_2", + Number.NaN, + eval("var EXP_1 = new MyObject(new Boolean(true)); var EXP_2 = new MyObject(new Boolean(false)); EXP_1 - EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyOtherObject(new Boolean(true)); var EXP_2 = new MyOtherObject(new Boolean(false)); EXP_1 - EXP_2", + Number.NaN, + eval("var EXP_1 = new MyOtherObject(new Boolean(true)); var EXP_2 = new MyOtherObject(new Boolean(false)); EXP_1 - EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyValuelessObject(true); var EXP_2 = new MyValuelessObject(false); EXP_1 - EXP_2", + 1, + eval("var EXP_1 = new MyValuelessObject(true); var EXP_2 = new MyValuelessObject(false); EXP_1 - EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyValuelessObject(new Boolean(true)); var EXP_2 = new MyValuelessObject(new Boolean(false)); EXP_1 - EXP_2", + Number.NaN, + eval("var EXP_1 = new MyValuelessObject(new Boolean(true)); var EXP_2 = new MyValuelessObject(new Boolean(false)); EXP_1 - EXP_2") ); + + // tests for number primitive, number object, Object object, a "MyObject" whose value is + // a number primitive and a number object, and "MyValuelessObject", where the value is + // set in the object's prototype, not the object itself. + + array[item++] = new TestCase( SECTION, + "var EXP_1 = 100; var EXP_2 = 1; EXP_1 - EXP_2", + 99, + eval("var EXP_1 = 100; var EXP_2 = 1; EXP_1 - EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Number(100); var EXP_2 = new Number(1); EXP_1 - EXP_2", + 99, + eval("var EXP_1 = new Number(100); var EXP_2 = new Number(1); EXP_1 - EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Object(100); var EXP_2 = new Object(1); EXP_1 - EXP_2", + 99, + eval("var EXP_1 = new Object(100); var EXP_2 = new Object(1); EXP_1 - EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new Object(new Number(100)); var EXP_2 = new Object(new Number(1)); EXP_1 - EXP_2", + 99, + eval("var EXP_1 = new Object(new Number(100)); var EXP_2 = new Object(new Number(1)); EXP_1 - EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyObject(100); var EXP_2 = new MyObject(1); EXP_1 - EXP_2", + 99, + eval("var EXP_1 = new MyObject(100); var EXP_2 = new MyObject(1); EXP_1 - EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyObject(new Number(100)); var EXP_2 = new MyObject(new Number(1)); EXP_1 - EXP_2", + Number.NaN, + eval("var EXP_1 = new MyObject(new Number(100)); var EXP_2 = new MyObject(new Number(1)); EXP_1 - EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyOtherObject(new Number(100)); var EXP_2 = new MyOtherObject(new Number(1)); EXP_1 - EXP_2", + 99, + eval("var EXP_1 = new MyOtherObject(new Number(100)); var EXP_2 = new MyOtherObject(new Number(1)); EXP_1 - EXP_2") ); + + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyValuelessObject(100); var EXP_2 = new MyValuelessObject(1); EXP_1 - EXP_2", + 99, + eval("var EXP_1 = new MyValuelessObject(100); var EXP_2 = new MyValuelessObject(1); EXP_1 - EXP_2") ); +/* + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyValuelessObject(new Number(100)); var EXP_2 = new MyValuelessObject(new Number(1)); EXP_1 - EXP_2", + Number.NaN, + eval("var EXP_1 = new MyValuelessObject(new Number(100)); var EXP_2 = new MyValuelessObject(new Number(1)); EXP_1 - EXP_2") ); +*/ + // same thing with string! + array[item++] = new TestCase( SECTION, + "var EXP_1 = new MyOtherObject(new String('0xff')); var EXP_2 = new MyOtherObject(new String('1'); EXP_1 - EXP_2", + 254, + eval("var EXP_1 = new MyOtherObject(new String('0xff')); var EXP_2 = new MyOtherObject(new String('1')); EXP_1 - EXP_2") ); + + return ( array ); +} +function MyProtoValuelessObject() { + this.valueOf = new Function ( "" ); + this.__proto__ = null; +} +function MyProtolessObject( value ) { + this.valueOf = new Function( "return this.value" ); + this.__proto__ = null; + this.value = value; +} +function MyValuelessObject(value) { + this.__proto__ = new MyPrototypeObject(value); +} +function MyPrototypeObject(value) { + this.valueOf = new Function( "return this.value;" ); + this.toString = new Function( "return (this.value + '');" ); + this.value = value; +} +function MyObject( value ) { + this.valueOf = new Function( "return this.value" ); + this.value = value; +} +function MyOtherObject( value ) { + this.valueOf = new Function( "return this.value" ); + this.toString = new Function ( "return this.value + ''" ); + this.value = value; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.6.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.6.3.js new file mode 100644 index 00000000000..91af1b74023 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.6.3.js @@ -0,0 +1,116 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.6.3.js + ECMA Section: 11.6.3 Applying the additive operators + (+, -) to numbers + Description: + The + operator performs addition when applied to two operands of numeric + type, producing the sum of the operands. The - operator performs + subtraction, producing the difference of two numeric operands. + + Addition is a commutative operation, but not always associative. + + The result of an addition is determined using the rules of IEEE 754 + double-precision arithmetic: + + If either operand is NaN, the result is NaN. + The sum of two infinities of opposite sign is NaN. + The sum of two infinities of the same sign is the infinity of that sign. + The sum of an infinity and a finite value is equal to the infinite operand. + The sum of two negative zeros is 0. The sum of two positive zeros, or of + two zeros of opposite sign, is +0. + The sum of a zero and a nonzero finite value is equal to the nonzero + operand. + The sum of two nonzero finite values of the same magnitude and opposite + sign is +0. + In the remaining cases, where neither an infinity, nor a zero, nor NaN is + involved, and the operands have the same sign or have different + magnitudes, the sum is computed and rounded to the nearest + representable value using IEEE 754 round-to-nearest mode. If the + magnitude is too large to represent, the operation overflows and + the result is then an infinity of appropriate sign. The ECMAScript + language requires support of gradual underflow as defined by IEEE 754. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.6.3"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Applying the additive operators (+,-) to numbers"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Number.NaN + 1", Number.NaN, Number.NaN + 1 ); + array[item++] = new TestCase( SECTION, "1 + Number.NaN", Number.NaN, 1 + Number.NaN ); + + array[item++] = new TestCase( SECTION, "Number.NaN - 1", Number.NaN, Number.NaN - 1 ); + array[item++] = new TestCase( SECTION, "1 - Number.NaN", Number.NaN, 1 - Number.NaN ); + + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY + Number.POSITIVE_INFINITY", Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY + Number.POSITIVE_INFINITY); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY + Number.NEGATIVE_INFINITY", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY + Number.NEGATIVE_INFINITY); + + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY + Number.NEGATIVE_INFINITY", Number.NaN, Number.POSITIVE_INFINITY + Number.NEGATIVE_INFINITY); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY + Number.POSITIVE_INFINITY", Number.NaN, Number.NEGATIVE_INFINITY + Number.POSITIVE_INFINITY); + + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY - Number.POSITIVE_INFINITY", Number.NaN, Number.POSITIVE_INFINITY - Number.POSITIVE_INFINITY); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY - Number.NEGATIVE_INFINITY", Number.NaN, Number.NEGATIVE_INFINITY - Number.NEGATIVE_INFINITY); + + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY - Number.NEGATIVE_INFINITY", Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY - Number.NEGATIVE_INFINITY); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY - Number.POSITIVE_INFINITY", Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY - Number.POSITIVE_INFINITY); + + array[item++] = new TestCase( SECTION, "-0 + -0", -0, -0 + -0 ); + array[item++] = new TestCase( SECTION, "-0 - 0", -0, -0 - 0 ); + + array[item++] = new TestCase( SECTION, "0 + 0", 0, 0 + 0 ); + array[item++] = new TestCase( SECTION, "0 + -0", 0, 0 + -0 ); + array[item++] = new TestCase( SECTION, "0 - -0", 0, 0 - -0 ); + array[item++] = new TestCase( SECTION, "0 - 0", 0, 0 - 0 ); + array[item++] = new TestCase( SECTION, "-0 - -0", 0, -0 - -0 ); + array[item++] = new TestCase( SECTION, "-0 + 0", 0, -0 + 0 ); + + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE - Number.MAX_VALUE", 0, Number.MAX_VALUE - Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "1/Number.MAX_VALUE - 1/Number.MAX_VALUE", 0, 1/Number.MAX_VALUE - 1/Number.MAX_VALUE ); + + array[item++] = new TestCase( SECTION, "Number.MIN_VALUE - Number.MIN_VALUE", 0, Number.MIN_VALUE - Number.MIN_VALUE ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.7.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.7.1.js new file mode 100644 index 00000000000..23e2ab58192 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.7.1.js @@ -0,0 +1,229 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.7.1.js + ECMA Section: 11.7.1 The Left Shift Operator ( << ) + Description: + Performs a bitwise left shift operation on the left argument by the amount + specified by the right argument. + + The production ShiftExpression : ShiftExpression << AdditiveExpression is + evaluated as follows: + + 1. Evaluate ShiftExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate AdditiveExpression. + 4. Call GetValue(Result(3)). + 5. Call ToInt32(Result(2)). + 6. Call ToUint32(Result(4)). + 7. Mask out all but the least significant 5 bits of Result(6), that is, + compute Result(6) & 0x1F. + 8. Left shift Result(5) by Result(7) bits. The result is a signed 32 bit + integer. + 9. Return Result(8). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.7.1"; + var VERSION = "ECMA_1"; + startTest(); + + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " The left shift operator ( << )"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + for ( power = 0; power < 33; power++ ) { + shiftexp = Math.pow( 2, power ); + + for ( addexp = 0; addexp < 33; addexp++ ) { + array[item++] = new TestCase( SECTION, + shiftexp + " << " + addexp, + LeftShift( shiftexp, addexp ), + shiftexp << addexp ); + } + } + + return ( array ); +} +function ToInteger( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( n != n ) { + return 0; + } + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY ) { + return n; + } + return ( sign * Math.floor(Math.abs(n)) ); +} +function ToInt32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + + n = (sign * Math.floor( Math.abs(n) )) % Math.pow(2,32); + n = ( n >= Math.pow(2,31) ) ? n - Math.pow(2,32) : n; + + return ( n ); +} +function ToUint32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + n = sign * Math.floor( Math.abs(n) ) + + n = n % Math.pow(2,32); + + if ( n < 0 ){ + n += Math.pow(2,32); + } + + return ( n ); +} +function ToUint16( n ) { + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + + n = ( sign * Math.floor( Math.abs(n) ) ) % Math.pow(2,16); + + if (n <0) { + n += Math.pow(2,16); + } + + return ( n ); +} +function Mask( b, n ) { + b = ToUint32BitString( b ); + b = b.substring( b.length - n ); + b = ToUint32Decimal( b ); + return ( b ); +} +function ToUint32BitString( n ) { + var b = ""; + for ( p = 31; p >=0; p-- ) { + if ( n >= Math.pow(2,p) ) { + b += "1"; + n -= Math.pow(2,p); + } else { + b += "0"; + } + } + return b; +} +function ToInt32BitString( n ) { + var b = ""; + var sign = ( n < 0 ) ? -1 : 1; + + b += ( sign == 1 ) ? "0" : "1"; + + for ( p = 30; p >=0; p-- ) { + if ( (sign == 1 ) ? sign * n >= Math.pow(2,p) : sign * n > Math.pow(2,p) ) { + b += ( sign == 1 ) ? "1" : "0"; + n -= sign * Math.pow( 2, p ); + } else { + b += ( sign == 1 ) ? "0" : "1"; + } + } + + return b; +} +function ToInt32Decimal( bin ) { + var r = 0; + var sign; + + if ( Number(bin.charAt(0)) == 0 ) { + sign = 1; + r = 0; + } else { + sign = -1; + r = -(Math.pow(2,31)); + } + + for ( var j = 0; j < 31; j++ ) { + r += Math.pow( 2, j ) * Number(bin.charAt(31-j)); + } + + return r; +} +function ToUint32Decimal( bin ) { + var r = 0; + + + for ( l = bin.length; l < 32; l++ ) { + bin = "0" + bin; + } + + for ( j = 0; j < 31; j++ ) { + r += Math.pow( 2, j ) * Number(bin.charAt(31-j)); + + } + + return r; +} +function LeftShift( s, a ) { + var shift = ToInt32( s ); + var add = ToUint32( a ); + add = Mask( add, 5 ); + var exp = LShift( shift, add ); + + return ( exp ); +} +function LShift( s, a ) { + s = ToInt32BitString( s ); + + for ( var z = 0; z < a; z++ ) { + s += "0"; + } + + s = s.substring( a, s.length); + + return ToInt32(ToInt32Decimal(s)); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.7.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.7.2.js new file mode 100644 index 00000000000..b2761cfc8fc --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.7.2.js @@ -0,0 +1,246 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.7.2.js + ECMA Section: 11.7.2 The signed right shift operator ( >> ) + Description: + Performs a sign-filling bitwise right shift operation on the left argument + by the amount specified by the right argument. + + The production ShiftExpression : ShiftExpression >> AdditiveExpression is + evaluated as follows: + + 1. Evaluate ShiftExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate AdditiveExpression. + 4. Call GetValue(Result(3)). + 5. Call ToInt32(Result(2)). + 6. Call ToUint32(Result(4)). + 7. Mask out all but the least significant 5 bits of Result(6), that is, + compute Result(6) & 0x1F. + 8. Perform sign-extending right shift of Result(5) by Result(7) bits. The + most significant bit is propagated. The result is a signed 32 bit + integer. + 9. Return Result(8). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.7.2"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " The signed right shift operator ( >> )"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + var power = 0; + var addexp = 0; + + for ( power = 0; power <= 32; power++ ) { + shiftexp = Math.pow( 2, power ); + + for ( addexp = 0; addexp <= 32; addexp++ ) { + array[item++] = new TestCase( SECTION, + shiftexp + " >> " + addexp, + SignedRightShift( shiftexp, addexp ), + shiftexp >> addexp ); + } + } + + for ( power = 0; power <= 32; power++ ) { + shiftexp = -Math.pow( 2, power ); + + for ( addexp = 0; addexp <= 32; addexp++ ) { + array[item++] = new TestCase( SECTION, + shiftexp + " >> " + addexp, + SignedRightShift( shiftexp, addexp ), + shiftexp >> addexp ); + } + } + + return ( array ); +} + +function ToInteger( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( n != n ) { + return 0; + } + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY ) { + return n; + } + return ( sign * Math.floor(Math.abs(n)) ); +} +function ToInt32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + + n = (sign * Math.floor( Math.abs(n) )) % Math.pow(2,32); + n = ( n >= Math.pow(2,31) ) ? n - Math.pow(2,32) : n; + + return ( n ); +} +function ToUint32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + n = sign * Math.floor( Math.abs(n) ) + + n = n % Math.pow(2,32); + + if ( n < 0 ){ + n += Math.pow(2,32); + } + + return ( n ); +} +function ToUint16( n ) { + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + + n = ( sign * Math.floor( Math.abs(n) ) ) % Math.pow(2,16); + + if (n <0) { + n += Math.pow(2,16); + } + + return ( n ); +} +function Mask( b, n ) { + b = ToUint32BitString( b ); + b = b.substring( b.length - n ); + b = ToUint32Decimal( b ); + return ( b ); +} +function ToUint32BitString( n ) { + var b = ""; + for ( p = 31; p >=0; p-- ) { + if ( n >= Math.pow(2,p) ) { + b += "1"; + n -= Math.pow(2,p); + } else { + b += "0"; + } + } + return b; +} +function ToInt32BitString( n ) { + var b = ""; + var sign = ( n < 0 ) ? -1 : 1; + + b += ( sign == 1 ) ? "0" : "1"; + + for ( p = 30; p >=0; p-- ) { + if ( (sign == 1 ) ? sign * n >= Math.pow(2,p) : sign * n > Math.pow(2,p) ) { + b += ( sign == 1 ) ? "1" : "0"; + n -= sign * Math.pow( 2, p ); + } else { + b += ( sign == 1 ) ? "0" : "1"; + } + } + + return b; +} +function ToInt32Decimal( bin ) { + var r = 0; + var sign; + + if ( Number(bin.charAt(0)) == 0 ) { + sign = 1; + r = 0; + } else { + sign = -1; + r = -(Math.pow(2,31)); + } + + for ( var j = 0; j < 31; j++ ) { + r += Math.pow( 2, j ) * Number(bin.charAt(31-j)); + } + + return r; +} +function ToUint32Decimal( bin ) { + var r = 0; + + for ( l = bin.length; l < 32; l++ ) { + bin = "0" + bin; + } + + for ( j = 0; j < 31; j++ ) { + r += Math.pow( 2, j ) * Number(bin.charAt(31-j)); + } + + return r; +} +function SignedRightShift( s, a ) { + s = ToInt32( s ); + a = ToUint32( a ); + a = Mask( a, 5 ); + return ( SignedRShift( s, a ) ); +} +function SignedRShift( s, a ) { + s = ToInt32BitString( s ); + + var firstbit = s.substring(0,1); + + s = s.substring( 1, s.length ); + + for ( var z = 0; z < a; z++ ) { + s = firstbit + s; + } + + s = s.substring( 0, s.length - a); + + s = firstbit +s; + + + return ToInt32(ToInt32Decimal(s)); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.7.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.7.3.js new file mode 100644 index 00000000000..9c963e1c1ea --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.7.3.js @@ -0,0 +1,230 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.7.3.js + ECMA Section: 11.7.3 The unsigned right shift operator ( >>> ) + Description: + 11.7.3 The unsigned right shift operator ( >>> ) + Performs a zero-filling bitwise right shift operation on the left argument + by the amount specified by the right argument. + + The production ShiftExpression : ShiftExpression >>> AdditiveExpression is + evaluated as follows: + + 1. Evaluate ShiftExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate AdditiveExpression. + 4. Call GetValue(Result(3)). + 5. Call ToUint32(Result(2)). + 6. Call ToUint32(Result(4)). + 7. Mask out all but the least significant 5 bits of Result(6), that is, + compute Result(6) & 0x1F. + 8. Perform zero-filling right shift of Result(5) by Result(7) bits. + Vacated bits are filled with zero. The result is an unsigned 32 bit + integer. + 9. Return Result(8). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.7.3"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " The unsigned right shift operator ( >>> )"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + var addexp = 0; + var power = 0; + + for ( power = 0; power <= 32; power++ ) { + shiftexp = Math.pow( 2, power ); + + for ( addexp = 0; addexp <= 32; addexp++ ) { + array[item++] = new TestCase( SECTION, + shiftexp + " >>> " + addexp, + UnsignedRightShift( shiftexp, addexp ), + shiftexp >>> addexp ); + } + } + + return ( array ); +} + +function ToInteger( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( n != n ) { + return 0; + } + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY ) { + return n; + } + return ( sign * Math.floor(Math.abs(n)) ); +} +function ToInt32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + + n = (sign * Math.floor( Math.abs(n) )) % Math.pow(2,32); + n = ( n >= Math.pow(2,31) ) ? n - Math.pow(2,32) : n; + + return ( n ); +} +function ToUint32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + n = sign * Math.floor( Math.abs(n) ) + + n = n % Math.pow(2,32); + + if ( n < 0 ){ + n += Math.pow(2,32); + } + + return ( n ); +} +function ToUint16( n ) { + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + + n = ( sign * Math.floor( Math.abs(n) ) ) % Math.pow(2,16); + + if (n <0) { + n += Math.pow(2,16); + } + + return ( n ); +} +function Mask( b, n ) { + b = ToUint32BitString( b ); + b = b.substring( b.length - n ); + b = ToUint32Decimal( b ); + return ( b ); +} +function ToUint32BitString( n ) { + var b = ""; + for ( p = 31; p >=0; p-- ) { + if ( n >= Math.pow(2,p) ) { + b += "1"; + n -= Math.pow(2,p); + } else { + b += "0"; + } + } + return b; +} +function ToInt32BitString( n ) { + var b = ""; + var sign = ( n < 0 ) ? -1 : 1; + + b += ( sign == 1 ) ? "0" : "1"; + + for ( p = 30; p >=0; p-- ) { + if ( (sign == 1 ) ? sign * n >= Math.pow(2,p) : sign * n > Math.pow(2,p) ) { + b += ( sign == 1 ) ? "1" : "0"; + n -= sign * Math.pow( 2, p ); + } else { + b += ( sign == 1 ) ? "0" : "1"; + } + } + + return b; +} +function ToInt32Decimal( bin ) { + var r = 0; + var sign; + + if ( Number(bin.charAt(0)) == 0 ) { + sign = 1; + r = 0; + } else { + sign = -1; + r = -(Math.pow(2,31)); + } + + for ( var j = 0; j < 31; j++ ) { + r += Math.pow( 2, j ) * Number(bin.charAt(31-j)); + } + + return r; +} +function ToUint32Decimal( bin ) { + var r = 0; + + + for ( l = bin.length; l < 32; l++ ) { + bin = "0" + bin; + } + + for ( j = 0; j < 32; j++ ) { + r += Math.pow( 2, j ) * Number(bin.charAt(31-j)); + + } + + return r; +} +function RShift( s, a ) { + s = ToUint32BitString( s ); + for ( z = 0; z < a; z++ ) { + s = "0" + s; + } + s = s.substring( 0, s.length - a ); + + return ToUint32Decimal(s); +} +function UnsignedRightShift( s, a ) { + s = ToUint32( s ); + a = ToUint32( a ); + a = Mask( a, 5 ); + return ( RShift( s, a ) ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.8.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.8.1.js new file mode 100644 index 00000000000..db2c7016b83 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.8.1.js @@ -0,0 +1,121 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.8.1.js + ECMA Section: 11.8.1 The less-than operator ( < ) + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.8.1"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " The less-than operator ( < )"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "true < false", false, true < false ); + array[item++] = new TestCase( SECTION, "false < true", true, false < true ); + array[item++] = new TestCase( SECTION, "false < false", false, false < false ); + array[item++] = new TestCase( SECTION, "true < true", false, true < true ); + + array[item++] = new TestCase( SECTION, "new Boolean(true) < new Boolean(true)", false, new Boolean(true) < new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(true) < new Boolean(false)", false, new Boolean(true) < new Boolean(false) ); + array[item++] = new TestCase( SECTION, "new Boolean(false) < new Boolean(true)", true, new Boolean(false) < new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(false) < new Boolean(false)", false, new Boolean(false) < new Boolean(false) ); + + array[item++] = new TestCase( SECTION, "new MyObject(Infinity) < new MyObject(Infinity)", false, new MyObject( Number.POSITIVE_INFINITY ) < new MyObject( Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "new MyObject(-Infinity) < new MyObject(Infinity)", true, new MyObject( Number.NEGATIVE_INFINITY ) < new MyObject( Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "new MyObject(-Infinity) < new MyObject(-Infinity)", false, new MyObject( Number.NEGATIVE_INFINITY ) < new MyObject( Number.NEGATIVE_INFINITY) ); + + array[item++] = new TestCase( SECTION, "new MyValueObject(false) < new MyValueObject(true)", true, new MyValueObject(false) < new MyValueObject(true) ); + array[item++] = new TestCase( SECTION, "new MyValueObject(true) < new MyValueObject(true)", false, new MyValueObject(true) < new MyValueObject(true) ); + array[item++] = new TestCase( SECTION, "new MyValueObject(false) < new MyValueObject(false)", false, new MyValueObject(false) < new MyValueObject(false) ); + + array[item++] = new TestCase( SECTION, "new MyStringObject(false) < new MyStringObject(true)", true, new MyStringObject(false) < new MyStringObject(true) ); + array[item++] = new TestCase( SECTION, "new MyStringObject(true) < new MyStringObject(true)", false, new MyStringObject(true) < new MyStringObject(true) ); + array[item++] = new TestCase( SECTION, "new MyStringObject(false) < new MyStringObject(false)", false, new MyStringObject(false) < new MyStringObject(false) ); + + array[item++] = new TestCase( SECTION, "Number.NaN < Number.NaN", false, Number.NaN < Number.NaN ); + array[item++] = new TestCase( SECTION, "0 < Number.NaN", false, 0 < Number.NaN ); + array[item++] = new TestCase( SECTION, "Number.NaN < 0", false, Number.NaN < 0 ); + + array[item++] = new TestCase( SECTION, "0 < -0", false, 0 < -0 ); + array[item++] = new TestCase( SECTION, "-0 < 0", false, -0 < 0 ); + + array[item++] = new TestCase( SECTION, "Infinity < 0", false, Number.POSITIVE_INFINITY < 0 ); + array[item++] = new TestCase( SECTION, "Infinity < Number.MAX_VALUE", false, Number.POSITIVE_INFINITY < Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "Infinity < Infinity", false, Number.POSITIVE_INFINITY < Number.POSITIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "0 < Infinity", true, 0 < Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE < Infinity", true, Number.MAX_VALUE < Number.POSITIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "0 < -Infinity", false, 0 < Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE < -Infinity", false, Number.MAX_VALUE < Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-Infinity < -Infinity", false, Number.NEGATIVE_INFINITY < Number.NEGATIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "-Infinity < 0", true, Number.NEGATIVE_INFINITY < 0 ); + array[item++] = new TestCase( SECTION, "-Infinity < -Number.MAX_VALUE", true, Number.NEGATIVE_INFINITY < -Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "-Infinity < Number.MIN_VALUE", true, Number.NEGATIVE_INFINITY < Number.MIN_VALUE ); + + array[item++] = new TestCase( SECTION, "'string' < 'string'", false, 'string' < 'string' ); + array[item++] = new TestCase( SECTION, "'astring' < 'string'", true, 'astring' < 'string' ); + array[item++] = new TestCase( SECTION, "'strings' < 'stringy'", true, 'strings' < 'stringy' ); + array[item++] = new TestCase( SECTION, "'strings' < 'stringier'", false, 'strings' < 'stringier' ); + array[item++] = new TestCase( SECTION, "'string' < 'astring'", false, 'string' < 'astring' ); + array[item++] = new TestCase( SECTION, "'string' < 'strings'", true, 'string' < 'strings' ); + + return ( array ); +} +function MyObject(value) { + this.value = value; + this.valueOf = new Function( "return this.value" ); + this.toString = new Function( "return this.value +''" ); +} +function MyValueObject(value) { + this.value = value; + this.valueOf = new Function( "return this.value" ); +} +function MyStringObject(value) { + this.value = value; + this.toString = new Function( "return this.value +''" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.8.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.8.2.js new file mode 100644 index 00000000000..962c33e788a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.8.2.js @@ -0,0 +1,122 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.8.2.js + ECMA Section: 11.8.2 The greater-than operator ( > ) + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.8.2"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " The greater-than operator ( > )"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "true > false", true, true > false ); + array[item++] = new TestCase( SECTION, "false > true", false, false > true ); + array[item++] = new TestCase( SECTION, "false > false", false, false > false ); + array[item++] = new TestCase( SECTION, "true > true", false, true > true ); + + array[item++] = new TestCase( SECTION, "new Boolean(true) > new Boolean(true)", false, new Boolean(true) > new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(true) > new Boolean(false)", true, new Boolean(true) > new Boolean(false) ); + array[item++] = new TestCase( SECTION, "new Boolean(false) > new Boolean(true)", false, new Boolean(false) > new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(false) > new Boolean(false)", false, new Boolean(false) > new Boolean(false) ); + + array[item++] = new TestCase( SECTION, "new MyObject(Infinity) > new MyObject(Infinity)", false, new MyObject( Number.POSITIVE_INFINITY ) > new MyObject( Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "new MyObject(-Infinity) > new MyObject(Infinity)", false, new MyObject( Number.NEGATIVE_INFINITY ) > new MyObject( Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "new MyObject(-Infinity) > new MyObject(-Infinity)", false, new MyObject( Number.NEGATIVE_INFINITY ) > new MyObject( Number.NEGATIVE_INFINITY) ); + + array[item++] = new TestCase( SECTION, "new MyValueObject(false) > new MyValueObject(true)", false, new MyValueObject(false) > new MyValueObject(true) ); + array[item++] = new TestCase( SECTION, "new MyValueObject(true) > new MyValueObject(true)", false, new MyValueObject(true) > new MyValueObject(true) ); + array[item++] = new TestCase( SECTION, "new MyValueObject(false) > new MyValueObject(false)", false, new MyValueObject(false) > new MyValueObject(false) ); + + array[item++] = new TestCase( SECTION, "new MyStringObject(false) > new MyStringObject(true)", false, new MyStringObject(false) > new MyStringObject(true) ); + array[item++] = new TestCase( SECTION, "new MyStringObject(true) > new MyStringObject(true)", false, new MyStringObject(true) > new MyStringObject(true) ); + array[item++] = new TestCase( SECTION, "new MyStringObject(false) > new MyStringObject(false)", false, new MyStringObject(false) > new MyStringObject(false) ); + + array[item++] = new TestCase( SECTION, "Number.NaN > Number.NaN", false, Number.NaN > Number.NaN ); + array[item++] = new TestCase( SECTION, "0 > Number.NaN", false, 0 > Number.NaN ); + array[item++] = new TestCase( SECTION, "Number.NaN > 0", false, Number.NaN > 0 ); + + array[item++] = new TestCase( SECTION, "0 > -0", false, 0 > -0 ); + array[item++] = new TestCase( SECTION, "-0 > 0", false, -0 > 0 ); + + array[item++] = new TestCase( SECTION, "Infinity > 0", true, Number.POSITIVE_INFINITY > 0 ); + array[item++] = new TestCase( SECTION, "Infinity > Number.MAX_VALUE", true, Number.POSITIVE_INFINITY > Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "Infinity > Infinity", false, Number.POSITIVE_INFINITY > Number.POSITIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "0 > Infinity", false, 0 > Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE > Infinity", false, Number.MAX_VALUE > Number.POSITIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "0 > -Infinity", true, 0 > Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE > -Infinity", true, Number.MAX_VALUE > Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-Infinity > -Infinity", false, Number.NEGATIVE_INFINITY > Number.NEGATIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "-Infinity > 0", false, Number.NEGATIVE_INFINITY > 0 ); + array[item++] = new TestCase( SECTION, "-Infinity > -Number.MAX_VALUE", false, Number.NEGATIVE_INFINITY > -Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "-Infinity > Number.MIN_VALUE", false, Number.NEGATIVE_INFINITY > Number.MIN_VALUE ); + + array[item++] = new TestCase( SECTION, "'string' > 'string'", false, 'string' > 'string' ); + array[item++] = new TestCase( SECTION, "'astring' > 'string'", false, 'astring' > 'string' ); + array[item++] = new TestCase( SECTION, "'strings' > 'stringy'", false, 'strings' > 'stringy' ); + array[item++] = new TestCase( SECTION, "'strings' > 'stringier'", true, 'strings' > 'stringier' ); + array[item++] = new TestCase( SECTION, "'string' > 'astring'", true, 'string' > 'astring' ); + array[item++] = new TestCase( SECTION, "'string' > 'strings'", false, 'string' > 'strings' ); + + + return ( array ); +} +function MyObject(value) { + this.value = value; + this.valueOf = new Function( "return this.value" ); + this.toString = new Function( "return this.value +''" ); +} +function MyValueObject(value) { + this.value = value; + this.valueOf = new Function( "return this.value" ); +} +function MyStringObject(value) { + this.value = value; + this.toString = new Function( "return this.value +''" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.8.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.8.3.js new file mode 100644 index 00000000000..5da73d62cb4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.8.3.js @@ -0,0 +1,120 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.8.3.js + ECMA Section: 11.8.3 The less-than-or-equal operator ( <= ) + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.8.1"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " The less-than-or-equal operator ( <= )"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "true <= false", false, true <= false ); + array[item++] = new TestCase( SECTION, "false <= true", true, false <= true ); + array[item++] = new TestCase( SECTION, "false <= false", true, false <= false ); + array[item++] = new TestCase( SECTION, "true <= true", true, true <= true ); + + array[item++] = new TestCase( SECTION, "new Boolean(true) <= new Boolean(true)", true, new Boolean(true) <= new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(true) <= new Boolean(false)", false, new Boolean(true) <= new Boolean(false) ); + array[item++] = new TestCase( SECTION, "new Boolean(false) <= new Boolean(true)", true, new Boolean(false) <= new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(false) <= new Boolean(false)", true, new Boolean(false) <= new Boolean(false) ); + + array[item++] = new TestCase( SECTION, "new MyObject(Infinity) <= new MyObject(Infinity)", true, new MyObject( Number.POSITIVE_INFINITY ) <= new MyObject( Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "new MyObject(-Infinity) <= new MyObject(Infinity)", true, new MyObject( Number.NEGATIVE_INFINITY ) <= new MyObject( Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "new MyObject(-Infinity) <= new MyObject(-Infinity)", true, new MyObject( Number.NEGATIVE_INFINITY ) <= new MyObject( Number.NEGATIVE_INFINITY) ); + + array[item++] = new TestCase( SECTION, "new MyValueObject(false) <= new MyValueObject(true)", true, new MyValueObject(false) <= new MyValueObject(true) ); + array[item++] = new TestCase( SECTION, "new MyValueObject(true) <= new MyValueObject(true)", true, new MyValueObject(true) <= new MyValueObject(true) ); + array[item++] = new TestCase( SECTION, "new MyValueObject(false) <= new MyValueObject(false)", true, new MyValueObject(false) <= new MyValueObject(false) ); + + array[item++] = new TestCase( SECTION, "new MyStringObject(false) <= new MyStringObject(true)", true, new MyStringObject(false) <= new MyStringObject(true) ); + array[item++] = new TestCase( SECTION, "new MyStringObject(true) <= new MyStringObject(true)", true, new MyStringObject(true) <= new MyStringObject(true) ); + array[item++] = new TestCase( SECTION, "new MyStringObject(false) <= new MyStringObject(false)", true, new MyStringObject(false) <= new MyStringObject(false) ); + + array[item++] = new TestCase( SECTION, "Number.NaN <= Number.NaN", false, Number.NaN <= Number.NaN ); + array[item++] = new TestCase( SECTION, "0 <= Number.NaN", false, 0 <= Number.NaN ); + array[item++] = new TestCase( SECTION, "Number.NaN <= 0", false, Number.NaN <= 0 ); + + array[item++] = new TestCase( SECTION, "0 <= -0", true, 0 <= -0 ); + array[item++] = new TestCase( SECTION, "-0 <= 0", true, -0 <= 0 ); + + array[item++] = new TestCase( SECTION, "Infinity <= 0", false, Number.POSITIVE_INFINITY <= 0 ); + array[item++] = new TestCase( SECTION, "Infinity <= Number.MAX_VALUE", false, Number.POSITIVE_INFINITY <= Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "Infinity <= Infinity", true, Number.POSITIVE_INFINITY <= Number.POSITIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "0 <= Infinity", true, 0 <= Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE <= Infinity", true, Number.MAX_VALUE <= Number.POSITIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "0 <= -Infinity", false, 0 <= Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE <= -Infinity", false, Number.MAX_VALUE <= Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-Infinity <= -Infinity", true, Number.NEGATIVE_INFINITY <= Number.NEGATIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "-Infinity <= 0", true, Number.NEGATIVE_INFINITY <= 0 ); + array[item++] = new TestCase( SECTION, "-Infinity <= -Number.MAX_VALUE", true, Number.NEGATIVE_INFINITY <= -Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "-Infinity <= Number.MIN_VALUE", true, Number.NEGATIVE_INFINITY <= Number.MIN_VALUE ); + + array[item++] = new TestCase( SECTION, "'string' <= 'string'", true, 'string' <= 'string' ); + array[item++] = new TestCase( SECTION, "'astring' <= 'string'", true, 'astring' <= 'string' ); + array[item++] = new TestCase( SECTION, "'strings' <= 'stringy'", true, 'strings' <= 'stringy' ); + array[item++] = new TestCase( SECTION, "'strings' <= 'stringier'", false, 'strings' <= 'stringier' ); + array[item++] = new TestCase( SECTION, "'string' <= 'astring'", false, 'string' <= 'astring' ); + array[item++] = new TestCase( SECTION, "'string' <= 'strings'", true, 'string' <= 'strings' ); + + return ( array ); +} +function MyObject(value) { + this.value = value; + this.valueOf = new Function( "return this.value" ); + this.toString = new Function( "return this.value +''" ); +} +function MyValueObject(value) { + this.value = value; + this.valueOf = new Function( "return this.value" ); +} +function MyStringObject(value) { + this.value = value; + this.toString = new Function( "return this.value +''" ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.8.4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.8.4.js new file mode 100644 index 00000000000..7e25b05fc75 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.8.4.js @@ -0,0 +1,122 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.8.4.js + ECMA Section: 11.8.4 The greater-than-or-equal operator ( >= ) + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.8.4"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " The greater-than-or-equal operator ( >= )"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "true >= false", true, true >= false ); + array[item++] = new TestCase( SECTION, "false >= true", false, false >= true ); + array[item++] = new TestCase( SECTION, "false >= false", true, false >= false ); + array[item++] = new TestCase( SECTION, "true >= true", true, true >= true ); + + array[item++] = new TestCase( SECTION, "new Boolean(true) >= new Boolean(true)", true, new Boolean(true) >= new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(true) >= new Boolean(false)", true, new Boolean(true) >= new Boolean(false) ); + array[item++] = new TestCase( SECTION, "new Boolean(false) >= new Boolean(true)", false, new Boolean(false) >= new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(false) >= new Boolean(false)", true, new Boolean(false) >= new Boolean(false) ); + + array[item++] = new TestCase( SECTION, "new MyObject(Infinity) >= new MyObject(Infinity)", true, new MyObject( Number.POSITIVE_INFINITY ) >= new MyObject( Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "new MyObject(-Infinity) >= new MyObject(Infinity)", false, new MyObject( Number.NEGATIVE_INFINITY ) >= new MyObject( Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "new MyObject(-Infinity) >= new MyObject(-Infinity)", true, new MyObject( Number.NEGATIVE_INFINITY ) >= new MyObject( Number.NEGATIVE_INFINITY) ); + + array[item++] = new TestCase( SECTION, "new MyValueObject(false) >= new MyValueObject(true)", false, new MyValueObject(false) >= new MyValueObject(true) ); + array[item++] = new TestCase( SECTION, "new MyValueObject(true) >= new MyValueObject(true)", true, new MyValueObject(true) >= new MyValueObject(true) ); + array[item++] = new TestCase( SECTION, "new MyValueObject(false) >= new MyValueObject(false)", true, new MyValueObject(false) >= new MyValueObject(false) ); + + array[item++] = new TestCase( SECTION, "new MyStringObject(false) >= new MyStringObject(true)", false, new MyStringObject(false) >= new MyStringObject(true) ); + array[item++] = new TestCase( SECTION, "new MyStringObject(true) >= new MyStringObject(true)", true, new MyStringObject(true) >= new MyStringObject(true) ); + array[item++] = new TestCase( SECTION, "new MyStringObject(false) >= new MyStringObject(false)", true, new MyStringObject(false) >= new MyStringObject(false) ); + + array[item++] = new TestCase( SECTION, "Number.NaN >= Number.NaN", false, Number.NaN >= Number.NaN ); + array[item++] = new TestCase( SECTION, "0 >= Number.NaN", false, 0 >= Number.NaN ); + array[item++] = new TestCase( SECTION, "Number.NaN >= 0", false, Number.NaN >= 0 ); + + array[item++] = new TestCase( SECTION, "0 >= -0", true, 0 >= -0 ); + array[item++] = new TestCase( SECTION, "-0 >= 0", true, -0 >= 0 ); + + array[item++] = new TestCase( SECTION, "Infinity >= 0", true, Number.POSITIVE_INFINITY >= 0 ); + array[item++] = new TestCase( SECTION, "Infinity >= Number.MAX_VALUE", true, Number.POSITIVE_INFINITY >= Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "Infinity >= Infinity", true, Number.POSITIVE_INFINITY >= Number.POSITIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "0 >= Infinity", false, 0 >= Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE >= Infinity", false, Number.MAX_VALUE >= Number.POSITIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "0 >= -Infinity", true, 0 >= Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE >= -Infinity", true, Number.MAX_VALUE >= Number.NEGATIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "-Infinity >= -Infinity", true, Number.NEGATIVE_INFINITY >= Number.NEGATIVE_INFINITY ); + + array[item++] = new TestCase( SECTION, "-Infinity >= 0", false, Number.NEGATIVE_INFINITY >= 0 ); + array[item++] = new TestCase( SECTION, "-Infinity >= -Number.MAX_VALUE", false, Number.NEGATIVE_INFINITY >= -Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "-Infinity >= Number.MIN_VALUE", false, Number.NEGATIVE_INFINITY >= Number.MIN_VALUE ); + + array[item++] = new TestCase( SECTION, "'string' > 'string'", false, 'string' > 'string' ); + array[item++] = new TestCase( SECTION, "'astring' > 'string'", false, 'astring' > 'string' ); + array[item++] = new TestCase( SECTION, "'strings' > 'stringy'", false, 'strings' > 'stringy' ); + array[item++] = new TestCase( SECTION, "'strings' > 'stringier'", true, 'strings' > 'stringier' ); + array[item++] = new TestCase( SECTION, "'string' > 'astring'", true, 'string' > 'astring' ); + array[item++] = new TestCase( SECTION, "'string' > 'strings'", false, 'string' > 'strings' ); + + + return ( array ); +} +function MyObject(value) { + this.value = value; + this.valueOf = new Function( "return this.value" ); + this.toString = new Function( "return this.value +''" ); +} +function MyValueObject(value) { + this.value = value; + this.valueOf = new Function( "return this.value" ); +} +function MyStringObject(value) { + this.value = value; + this.toString = new Function( "return this.value +''" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.9.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.9.1.js new file mode 100644 index 00000000000..b64df9aa7e3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.9.1.js @@ -0,0 +1,162 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.9.1.js + ECMA Section: 11.9.1 The equals operator ( == ) + Description: + + The production EqualityExpression: + EqualityExpression == RelationalExpression is evaluated as follows: + + 1. Evaluate EqualityExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate RelationalExpression. + 4. Call GetValue(Result(3)). + 5. Perform the comparison Result(4) == Result(2). (See section 11.9.3) + 6. Return Result(5). + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.9.1"; + var VERSION = "ECMA_1"; + startTest(); + var BUGNUMBER="77391"; + + + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " The equals operator ( == )"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // type x and type y are the same. if type x is undefined or null, return true + + array[item++] = new TestCase( SECTION, "void 0 = void 0", true, void 0 == void 0 ); + array[item++] = new TestCase( SECTION, "null == null", true, null == null ); + + // if x is NaN, return false. if y is NaN, return false. + + array[item++] = new TestCase( SECTION, "NaN == NaN", false, Number.NaN == Number.NaN ); + array[item++] = new TestCase( SECTION, "NaN == 0", false, Number.NaN == 0 ); + array[item++] = new TestCase( SECTION, "0 == NaN", false, 0 == Number.NaN ); + array[item++] = new TestCase( SECTION, "NaN == Infinity", false, Number.NaN == Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Infinity == NaN", false, Number.POSITIVE_INFINITY == Number.NaN ); + + // if x is the same number value as y, return true. + + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE == Number.MAX_VALUE", true, Number.MAX_VALUE == Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "Number.MIN_VALUE == Number.MIN_VALUE", true, Number.MIN_VALUE == Number.MIN_VALUE ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY == Number.POSITIVE_INFINITY", true, Number.POSITIVE_INFINITY == Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY == Number.NEGATIVE_INFINITY", true, Number.NEGATIVE_INFINITY == Number.NEGATIVE_INFINITY ); + + // if xis 0 and y is -0, return true. if x is -0 and y is 0, return true. + + array[item++] = new TestCase( SECTION, "0 == 0", true, 0 == 0 ); + array[item++] = new TestCase( SECTION, "0 == -0", true, 0 == -0 ); + array[item++] = new TestCase( SECTION, "-0 == 0", true, -0 == 0 ); + array[item++] = new TestCase( SECTION, "-0 == -0", true, -0 == -0 ); + + // return false. + + array[item++] = new TestCase( SECTION, "0.9 == 1", false, 0.9 == 1 ); + array[item++] = new TestCase( SECTION, "0.999999 == 1", false, 0.999999 == 1 ); + array[item++] = new TestCase( SECTION, "0.9999999999 == 1", false, 0.9999999999 == 1 ); + array[item++] = new TestCase( SECTION, "0.9999999999999 == 1", false, 0.9999999999999 == 1 ); + + // type x and type y are the same type, but not numbers. + + + // x and y are strings. return true if x and y are exactly the same sequence of characters. + // otherwise, return false. + + array[item++] = new TestCase( SECTION, "'hello' == 'hello'", true, "hello" == "hello" ); + + // x and y are booleans. return true if both are true or both are false. + + array[item++] = new TestCase( SECTION, "true == true", true, true == true ); + array[item++] = new TestCase( SECTION, "false == false", true, false == false ); + array[item++] = new TestCase( SECTION, "true == false", false, true == false ); + array[item++] = new TestCase( SECTION, "false == true", false, false == true ); + + // return true if x and y refer to the same object. otherwise return false. + + array[item++] = new TestCase( SECTION, "new MyObject(true) == new MyObject(true)", false, new MyObject(true) == new MyObject(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(true) == new Boolean(true)", false, new Boolean(true) == new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(false) == new Boolean(false)", false, new Boolean(false) == new Boolean(false) ); + + + array[item++] = new TestCase( SECTION, "x = new MyObject(true); y = x; z = x; z == y", true, eval("x = new MyObject(true); y = x; z = x; z == y") ); + array[item++] = new TestCase( SECTION, "x = new MyObject(false); y = x; z = x; z == y", true, eval("x = new MyObject(false); y = x; z = x; z == y") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); y = x; z = x; z == y", true, eval("x = new Boolean(true); y = x; z = x; z == y") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(false); y = x; z = x; z == y", true, eval("x = new Boolean(false); y = x; z = x; z == y") ); + + array[item++] = new TestCase( SECTION, "new Boolean(true) == new Boolean(true)", false, new Boolean(true) == new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(false) == new Boolean(false)", false, new Boolean(false) == new Boolean(false) ); + + // if x is null and y is undefined, return true. if x is undefined and y is null return true. + + array[item++] = new TestCase( SECTION, "null == void 0", true, null == void 0 ); + array[item++] = new TestCase( SECTION, "void 0 == null", true, void 0 == null ); + + // if type(x) is Number and type(y) is string, return the result of the comparison x == ToNumber(y). + + array[item++] = new TestCase( SECTION, "1 == '1'", true, 1 == '1' ); + array[item++] = new TestCase( SECTION, "255 == '0xff'", true, 255 == '0xff' ); + array[item++] = new TestCase( SECTION, "0 == '\r'", true, 0 == "\r" ); + array[item++] = new TestCase( SECTION, "1e19 == '1e19'", true, 1e19 == "1e19" ); + + + array[item++] = new TestCase( SECTION, "new Boolean(true) == true", true, true == new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new MyObject(true) == true", true, true == new MyObject(true) ); + + array[item++] = new TestCase( SECTION, "new Boolean(false) == false", true, new Boolean(false) == false ); + array[item++] = new TestCase( SECTION, "new MyObject(false) == false", true, new MyObject(false) == false ); + + array[item++] = new TestCase( SECTION, "true == new Boolean(true)", true, true == new Boolean(true) ); + array[item++] = new TestCase( SECTION, "true == new MyObject(true)", true, true == new MyObject(true) ); + + array[item++] = new TestCase( SECTION, "false == new Boolean(false)", true, false == new Boolean(false) ); + array[item++] = new TestCase( SECTION, "false == new MyObject(false)", true, false == new MyObject(false) ); + + return ( array ); +} + +function MyObject( value ) { + this.value = value; + this.valueOf = new Function( "return this.value" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.9.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.9.2.js new file mode 100644 index 00000000000..9eb4bfc1c07 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.9.2.js @@ -0,0 +1,161 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.9.2.js + ECMA Section: 11.9.2 The equals operator ( == ) + Description: + + The production EqualityExpression: + EqualityExpression == RelationalExpression is evaluated as follows: + + 1. Evaluate EqualityExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate RelationalExpression. + 4. Call GetValue(Result(3)). + 5. Perform the comparison Result(4) == Result(2). (See section 11.9.3) + 6. Return Result(5). + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.9.2"; + var VERSION = "ECMA_1"; + startTest(); + var BUGNUMBER="77391"; + + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " The equals operator ( == )"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // type x and type y are the same. if type x is undefined or null, return true + + array[item++] = new TestCase( SECTION, "void 0 == void 0", false, void 0 != void 0 ); + array[item++] = new TestCase( SECTION, "null == null", false, null != null ); + + // if x is NaN, return false. if y is NaN, return false. + + array[item++] = new TestCase( SECTION, "NaN != NaN", true, Number.NaN != Number.NaN ); + array[item++] = new TestCase( SECTION, "NaN != 0", true, Number.NaN != 0 ); + array[item++] = new TestCase( SECTION, "0 != NaN", true, 0 != Number.NaN ); + array[item++] = new TestCase( SECTION, "NaN != Infinity", true, Number.NaN != Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Infinity != NaN", true, Number.POSITIVE_INFINITY != Number.NaN ); + + // if x is the same number value as y, return true. + + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE != Number.MAX_VALUE", false, Number.MAX_VALUE != Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "Number.MIN_VALUE != Number.MIN_VALUE", false, Number.MIN_VALUE != Number.MIN_VALUE ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY != Number.POSITIVE_INFINITY", false, Number.POSITIVE_INFINITY != Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY != Number.NEGATIVE_INFINITY", false, Number.NEGATIVE_INFINITY != Number.NEGATIVE_INFINITY ); + + // if xis 0 and y is -0, return true. if x is -0 and y is 0, return true. + + array[item++] = new TestCase( SECTION, "0 != 0", false, 0 != 0 ); + array[item++] = new TestCase( SECTION, "0 != -0", false, 0 != -0 ); + array[item++] = new TestCase( SECTION, "-0 != 0", false, -0 != 0 ); + array[item++] = new TestCase( SECTION, "-0 != -0", false, -0 != -0 ); + + // return false. + + array[item++] = new TestCase( SECTION, "0.9 != 1", true, 0.9 != 1 ); + array[item++] = new TestCase( SECTION, "0.999999 != 1", true, 0.999999 != 1 ); + array[item++] = new TestCase( SECTION, "0.9999999999 != 1", true, 0.9999999999 != 1 ); + array[item++] = new TestCase( SECTION, "0.9999999999999 != 1", true, 0.9999999999999 != 1 ); + + // type x and type y are the same type, but not numbers. + + + // x and y are strings. return true if x and y are exactly the same sequence of characters. + // otherwise, return false. + + array[item++] = new TestCase( SECTION, "'hello' != 'hello'", false, "hello" != "hello" ); + + // x and y are booleans. return true if both are true or both are false. + + array[item++] = new TestCase( SECTION, "true != true", false, true != true ); + array[item++] = new TestCase( SECTION, "false != false", false, false != false ); + array[item++] = new TestCase( SECTION, "true != false", true, true != false ); + array[item++] = new TestCase( SECTION, "false != true", true, false != true ); + + // return true if x and y refer to the same object. otherwise return false. + + array[item++] = new TestCase( SECTION, "new MyObject(true) != new MyObject(true)", true, new MyObject(true) != new MyObject(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(true) != new Boolean(true)", true, new Boolean(true) != new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(false) != new Boolean(false)", true, new Boolean(false) != new Boolean(false) ); + + + array[item++] = new TestCase( SECTION, "x = new MyObject(true); y = x; z = x; z != y", false, eval("x = new MyObject(true); y = x; z = x; z != y") ); + array[item++] = new TestCase( SECTION, "x = new MyObject(false); y = x; z = x; z != y", false, eval("x = new MyObject(false); y = x; z = x; z != y") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); y = x; z = x; z != y", false, eval("x = new Boolean(true); y = x; z = x; z != y") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(false); y = x; z = x; z != y", false, eval("x = new Boolean(false); y = x; z = x; z != y") ); + + array[item++] = new TestCase( SECTION, "new Boolean(true) != new Boolean(true)", true, new Boolean(true) != new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(false) != new Boolean(false)", true, new Boolean(false) != new Boolean(false) ); + + // if x is null and y is undefined, return true. if x is undefined and y is null return true. + + array[item++] = new TestCase( SECTION, "null != void 0", false, null != void 0 ); + array[item++] = new TestCase( SECTION, "void 0 != null", false, void 0 != null ); + + // if type(x) is Number and type(y) is string, return the result of the comparison x != ToNumber(y). + + array[item++] = new TestCase( SECTION, "1 != '1'", false, 1 != '1' ); + array[item++] = new TestCase( SECTION, "255 != '0xff'", false, 255 != '0xff' ); + array[item++] = new TestCase( SECTION, "0 != '\r'", false, 0 != "\r" ); + array[item++] = new TestCase( SECTION, "1e19 != '1e19'", false, 1e19 != "1e19" ); + + + array[item++] = new TestCase( SECTION, "new Boolean(true) != true", false, true != new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new MyObject(true) != true", false, true != new MyObject(true) ); + + array[item++] = new TestCase( SECTION, "new Boolean(false) != false", false, new Boolean(false) != false ); + array[item++] = new TestCase( SECTION, "new MyObject(false) != false", false, new MyObject(false) != false ); + + array[item++] = new TestCase( SECTION, "true != new Boolean(true)", false, true != new Boolean(true) ); + array[item++] = new TestCase( SECTION, "true != new MyObject(true)", false, true != new MyObject(true) ); + + array[item++] = new TestCase( SECTION, "false != new Boolean(false)", false, false != new Boolean(false) ); + array[item++] = new TestCase( SECTION, "false != new MyObject(false)", false, false != new MyObject(false) ); + + return ( array ); +} + +function MyObject( value ) { + this.value = value; + this.valueOf = new Function( "return this.value" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.9.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.9.3.js new file mode 100644 index 00000000000..134060bd4dc --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Expressions/11.9.3.js @@ -0,0 +1,161 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 11.9.3.js + ECMA Section: 11.9.3 The equals operator ( == ) + Description: + + The production EqualityExpression: + EqualityExpression == RelationalExpression is evaluated as follows: + + 1. Evaluate EqualityExpression. + 2. Call GetValue(Result(1)). + 3. Evaluate RelationalExpression. + 4. Call GetValue(Result(3)). + 5. Perform the comparison Result(4) == Result(2). (See section 11.9.3) + 6. Return Result(5). + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "11.9.3"; + var VERSION = "ECMA_1"; + startTest(); + var BUGNUMBER="77391"; + + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " The equals operator ( == )"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // type x and type y are the same. if type x is undefined or null, return true + + array[item++] = new TestCase( SECTION, "void 0 = void 0", true, void 0 == void 0 ); + array[item++] = new TestCase( SECTION, "null == null", true, null == null ); + + // if x is NaN, return false. if y is NaN, return false. + + array[item++] = new TestCase( SECTION, "NaN == NaN", false, Number.NaN == Number.NaN ); + array[item++] = new TestCase( SECTION, "NaN == 0", false, Number.NaN == 0 ); + array[item++] = new TestCase( SECTION, "0 == NaN", false, 0 == Number.NaN ); + array[item++] = new TestCase( SECTION, "NaN == Infinity", false, Number.NaN == Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Infinity == NaN", false, Number.POSITIVE_INFINITY == Number.NaN ); + + // if x is the same number value as y, return true. + + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE == Number.MAX_VALUE", true, Number.MAX_VALUE == Number.MAX_VALUE ); + array[item++] = new TestCase( SECTION, "Number.MIN_VALUE == Number.MIN_VALUE", true, Number.MIN_VALUE == Number.MIN_VALUE ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY == Number.POSITIVE_INFINITY", true, Number.POSITIVE_INFINITY == Number.POSITIVE_INFINITY ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY == Number.NEGATIVE_INFINITY", true, Number.NEGATIVE_INFINITY == Number.NEGATIVE_INFINITY ); + + // if xis 0 and y is -0, return true. if x is -0 and y is 0, return true. + + array[item++] = new TestCase( SECTION, "0 == 0", true, 0 == 0 ); + array[item++] = new TestCase( SECTION, "0 == -0", true, 0 == -0 ); + array[item++] = new TestCase( SECTION, "-0 == 0", true, -0 == 0 ); + array[item++] = new TestCase( SECTION, "-0 == -0", true, -0 == -0 ); + + // return false. + + array[item++] = new TestCase( SECTION, "0.9 == 1", false, 0.9 == 1 ); + array[item++] = new TestCase( SECTION, "0.999999 == 1", false, 0.999999 == 1 ); + array[item++] = new TestCase( SECTION, "0.9999999999 == 1", false, 0.9999999999 == 1 ); + array[item++] = new TestCase( SECTION, "0.9999999999999 == 1", false, 0.9999999999999 == 1 ); + + // type x and type y are the same type, but not numbers. + + + // x and y are strings. return true if x and y are exactly the same sequence of characters. + // otherwise, return false. + + array[item++] = new TestCase( SECTION, "'hello' == 'hello'", true, "hello" == "hello" ); + + // x and y are booleans. return true if both are true or both are false. + + array[item++] = new TestCase( SECTION, "true == true", true, true == true ); + array[item++] = new TestCase( SECTION, "false == false", true, false == false ); + array[item++] = new TestCase( SECTION, "true == false", false, true == false ); + array[item++] = new TestCase( SECTION, "false == true", false, false == true ); + + // return true if x and y refer to the same object. otherwise return false. + + array[item++] = new TestCase( SECTION, "new MyObject(true) == new MyObject(true)", false, new MyObject(true) == new MyObject(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(true) == new Boolean(true)", false, new Boolean(true) == new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(false) == new Boolean(false)", false, new Boolean(false) == new Boolean(false) ); + + + array[item++] = new TestCase( SECTION, "x = new MyObject(true); y = x; z = x; z == y", true, eval("x = new MyObject(true); y = x; z = x; z == y") ); + array[item++] = new TestCase( SECTION, "x = new MyObject(false); y = x; z = x; z == y", true, eval("x = new MyObject(false); y = x; z = x; z == y") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); y = x; z = x; z == y", true, eval("x = new Boolean(true); y = x; z = x; z == y") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(false); y = x; z = x; z == y", true, eval("x = new Boolean(false); y = x; z = x; z == y") ); + + array[item++] = new TestCase( SECTION, "new Boolean(true) == new Boolean(true)", false, new Boolean(true) == new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new Boolean(false) == new Boolean(false)", false, new Boolean(false) == new Boolean(false) ); + + // if x is null and y is undefined, return true. if x is undefined and y is null return true. + + array[item++] = new TestCase( SECTION, "null == void 0", true, null == void 0 ); + array[item++] = new TestCase( SECTION, "void 0 == null", true, void 0 == null ); + + // if type(x) is Number and type(y) is string, return the result of the comparison x == ToNumber(y). + + array[item++] = new TestCase( SECTION, "1 == '1'", true, 1 == '1' ); + array[item++] = new TestCase( SECTION, "255 == '0xff'", true, 255 == '0xff' ); + array[item++] = new TestCase( SECTION, "0 == '\r'", true, 0 == "\r" ); + array[item++] = new TestCase( SECTION, "1e19 == '1e19'", true, 1e19 == "1e19" ); + + + array[item++] = new TestCase( SECTION, "new Boolean(true) == true", true, true == new Boolean(true) ); + array[item++] = new TestCase( SECTION, "new MyObject(true) == true", true, true == new MyObject(true) ); + + array[item++] = new TestCase( SECTION, "new Boolean(false) == false", true, new Boolean(false) == false ); + array[item++] = new TestCase( SECTION, "new MyObject(false) == false", true, new MyObject(false) == false ); + + array[item++] = new TestCase( SECTION, "true == new Boolean(true)", true, true == new Boolean(true) ); + array[item++] = new TestCase( SECTION, "true == new MyObject(true)", true, true == new MyObject(true) ); + + array[item++] = new TestCase( SECTION, "false == new Boolean(false)", true, false == new Boolean(false) ); + array[item++] = new TestCase( SECTION, "false == new MyObject(false)", true, false == new MyObject(false) ); + + return ( array ); +} + +function MyObject( value ) { + this.value = value; + this.valueOf = new Function( "return this.value" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.1.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.1.1-1.js new file mode 100644 index 00000000000..c20dd372a25 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.1.1-1.js @@ -0,0 +1,90 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.1.1.js + ECMA Section: 15.3.1.1 The Function Constructor Called as a Function + + Description: + When the Function function is called with some arguments p1, p2, . . . , pn, body + (where n might be 0, that is, there are no "p" arguments, and where body might + also not be provided), the following steps are taken: + + 1. Create and return a new Function object exactly if the function constructor had + been called with the same arguments (15.3.2.1). + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.3.1.1-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Function Constructor Called as a Function"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var MyObject = Function( "value", "this.value = value; this.valueOf = Function( 'return this.value' ); this.toString = Function( 'return String(this.value);' )" ); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var myfunc = Function(); + myfunc.toString = Object.prototype.toString; + +// not going to test toString here since it is implementation dependent. +// array[item++] = new TestCase( SECTION, "myfunc.toString()", "function anonymous() { }", myfunc.toString() ); + + myfunc.toString = Object.prototype.toString; + array[item++] = new TestCase( SECTION, + "myfunc = Function(); myfunc.toString = Object.prototype.toString; myfunc.toString()", + "[object Function]", + myfunc.toString() ); + array[item++] = new TestCase( SECTION, "myfunc.length", 0, myfunc.length ); + array[item++] = new TestCase( SECTION, "myfunc.prototype.toString()", "[object Object]", myfunc.prototype.toString() ); + array[item++] = new TestCase( SECTION, "myfunc.prototype.constructor", myfunc, myfunc.prototype.constructor ); + array[item++] = new TestCase( SECTION, "myfunc.arguments", null, myfunc.arguments ); + array[item++] = new TestCase( SECTION, "var OBJ = new MyObject(true); OBJ.valueOf()", true, eval("var OBJ = new MyObject(true); OBJ.valueOf()") ); + array[item++] = new TestCase( SECTION, "OBJ.toString()", "true", OBJ.toString() ); + array[item++] = new TestCase( SECTION, "OBJ.toString = Object.prototype.toString; OBJ.toString()", "[object Object]", eval("OBJ.toString = Object.prototype.toString; OBJ.toString()") ); + array[item++] = new TestCase( SECTION, "MyObject.toString = Object.prototype.toString; MyObject.toString()", "[object Function]", eval("MyObject.toString = Object.prototype.toString; MyObject.toString()") ); + array[item++] = new TestCase( SECTION, "MyObject.__proto__ == Function.prototype", true, MyObject.__proto__ == Function.prototype ); + array[item++] = new TestCase( SECTION, "MyObject.length", 1, MyObject.length ); + array[item++] = new TestCase( SECTION, "MyObject.prototype.constructor", MyObject, MyObject.prototype.constructor ); + array[item++] = new TestCase( SECTION, "MyObject.arguments", null, MyObject.arguments ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.1.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.1.1-2.js new file mode 100644 index 00000000000..ce6994e849d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.1.1-2.js @@ -0,0 +1,118 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.1.1-2.js + ECMA Section: 15.3.1.1 The Function Constructor Called as a Function + Function(p1, p2, ..., pn, body ) + + Description: + When the Function function is called with some arguments p1, p2, . . . , pn, + body (where n might be 0, that is, there are no "p" arguments, and where body + might also not be provided), the following steps are taken: + + 1. Create and return a new Function object exactly if the function constructor + had been called with the same arguments (15.3.2.1). + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.3.1.1-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Function Constructor Called as a Function"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + var myfunc1 = Function("a","b","c", "return a+b+c" ); + var myfunc2 = Function("a, b, c", "return a+b+c" ); + var myfunc3 = Function("a,b", "c", "return a+b+c" ); + + myfunc1.toString = Object.prototype.toString; + myfunc2.toString = Object.prototype.toString; + myfunc3.toString = Object.prototype.toString; + + array[item++] = new TestCase( SECTION, "myfunc1 = Function('a','b','c'); myfunc.toString = Object.prototype.toString; myfunc.toString()", + "[object Function]", + myfunc1.toString() ); + + array[item++] = new TestCase( SECTION, "myfunc1.length", 3, myfunc1.length ); + array[item++] = new TestCase( SECTION, "myfunc1.prototype.toString()", "[object Object]", myfunc1.prototype.toString() ); + + array[item++] = new TestCase( SECTION, "myfunc1.prototype.constructor", myfunc1, myfunc1.prototype.constructor ); + array[item++] = new TestCase( SECTION, "myfunc1.arguments", null, myfunc1.arguments ); + array[item++] = new TestCase( SECTION, "myfunc1(1,2,3)", 6, myfunc1(1,2,3) ); + array[item++] = new TestCase( SECTION, "var MYPROPS = ''; for ( var p in myfunc1.prototype ) { MYPROPS += p; }; MYPROPS", + "", + eval("var MYPROPS = ''; for ( var p in myfunc1.prototype ) { MYPROPS += p; }; MYPROPS") ); + + array[item++] = new TestCase( SECTION, "myfunc2 = Function('a','b','c'); myfunc.toString = Object.prototype.toString; myfunc.toString()", + "[object Function]", + myfunc2.toString() ); + array[item++] = new TestCase( SECTION, "myfunc2.__proto__", Function.prototype, myfunc2.__proto__ ); + array[item++] = new TestCase( SECTION, "myfunc2.length", 3, myfunc2.length ); + array[item++] = new TestCase( SECTION, "myfunc2.prototype.toString()", "[object Object]", myfunc2.prototype.toString() ); + + array[item++] = new TestCase( SECTION, "myfunc2.prototype.constructor", myfunc2, myfunc2.prototype.constructor ); + array[item++] = new TestCase( SECTION, "myfunc2.arguments", null, myfunc2.arguments ); + array[item++] = new TestCase( SECTION, "myfunc2( 1000, 200, 30 )", 1230, myfunc2(1000,200,30) ); + array[item++] = new TestCase( SECTION, "var MYPROPS = ''; for ( var p in myfunc2.prototype ) { MYPROPS += p; }; MYPROPS", + "", + eval("var MYPROPS = ''; for ( var p in myfunc2.prototype ) { MYPROPS += p; }; MYPROPS") ); + + array[item++] = new TestCase( SECTION, "myfunc3 = Function('a','b','c'); myfunc.toString = Object.prototype.toString; myfunc.toString()", + "[object Function]", + myfunc3.toString() ); + array[item++] = new TestCase( SECTION, "myfunc3.__proto__", Function.prototype, myfunc3.__proto__ ); + array[item++] = new TestCase( SECTION, "myfunc3.length", 3, myfunc3.length ); + array[item++] = new TestCase( SECTION, "myfunc3.prototype.toString()", "[object Object]", myfunc3.prototype.toString() ); + array[item++] = new TestCase( SECTION, "myfunc3.prototype.valueOf() +''", "[object Object]", myfunc3.prototype.valueOf() +'' ); + array[item++] = new TestCase( SECTION, "myfunc3.prototype.constructor", myfunc3, myfunc3.prototype.constructor ); + array[item++] = new TestCase( SECTION, "myfunc3.arguments", null, myfunc3.arguments ); + array[item++] = new TestCase( SECTION, "myfunc3(-100,100,NaN)", Number.NaN, myfunc3(-100,100,NaN) ); + + array[item++] = new TestCase( SECTION, "var MYPROPS = ''; for ( var p in myfunc3.prototype ) { MYPROPS += p; }; MYPROPS", + "", + eval("var MYPROPS = ''; for ( var p in myfunc3.prototype ) { MYPROPS += p; }; MYPROPS") ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.1.1-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.1.1-3.js new file mode 100644 index 00000000000..459a6bf7296 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.1.1-3.js @@ -0,0 +1,96 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.1.1-3.js + ECMA Section: 15.3.1.1 The Function Constructor Called as a Function + + new Function(p1, p2, ..., pn, body ) + + Description: The last argument specifies the body (executable code) + of a function; any preceeding arguments sepcify formal + parameters. + + See the text for description of this section. + + This test examples from the specification. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.3.1.1-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Function Constructor Called as a Function"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + + var testcases = new Array(); + + var args = ""; + + for ( var i = 0; i < 2000; i++ ) { + args += "arg"+i; + if ( i != 1999 ) { + args += ","; + } + } + + var s = ""; + + for ( var i = 0; i < 2000; i++ ) { + s += ".0005"; + if ( i != 1999 ) { + s += ","; + } + } + + MyFunc = Function( args, "var r=0; for (var i = 0; i < MyFunc.length; i++ ) { if ( eval('arg'+i) == void 0) break; else r += eval('arg'+i); }; return r"); + MyObject = Function( args, "for (var i = 0; i < MyFunc.length; i++ ) { if ( eval('arg'+i) == void 0) break; eval('this.arg'+i +'=arg'+i); };"); + + var MY_OB = eval( "MyFunc("+ s +")" ); + + testcases[testcases.length] = new TestCase( SECTION, "MyFunc.length", 2000, MyFunc.length ); + testcases[testcases.length] = new TestCase( SECTION, "var MY_OB = eval('MyFunc(s)')", 1, MY_OB ); + testcases[testcases.length] = new TestCase( SECTION, "var MY_OB = eval('MyFunc(s)')", 1, eval("var MY_OB = MyFunc("+s+"); MY_OB") ); + + testcases[testcases.length] = new TestCase( SECTION, "MyObject.length", 2000, MyObject.length ); + + testcases[testcases.length] = new TestCase( SECTION, "FUN1 = Function( 'a','b','c', 'return FUN1.length' ); FUN1.length", 3, eval("FUN1 = Function( 'a','b','c', 'return FUN1.length' ); FUN1.length") ); + testcases[testcases.length] = new TestCase( SECTION, "FUN1 = Function( 'a','b','c', 'return FUN1.length' ); FUN1()", 3, eval("FUN1 = Function( 'a','b','c', 'return FUN1.length' ); FUN1()") ); + testcases[testcases.length] = new TestCase( SECTION, "FUN1 = Function( 'a','b','c', 'return FUN1.length' ); FUN1(1,2,3,4,5)", 3, eval("FUN1 = Function( 'a','b','c', 'return FUN1.length' ); FUN1(1,2,3,4,5)") ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.2.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.2.1-1.js new file mode 100644 index 00000000000..ec1b86bed1c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.2.1-1.js @@ -0,0 +1,94 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.2.1.js + ECMA Section: 15.3.2.1 The Function Constructor + new Function(p1, p2, ..., pn, body ) + + Description: The last argument specifies the body (executable code) + of a function; any preceeding arguments sepcify formal + parameters. + + See the text for description of this section. + + This test examples from the specification. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.3.2.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Function Constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var MyObject = new Function( "value", "this.value = value; this.valueOf = new Function( 'return this.value' ); this.toString = new Function( 'return String(this.value);' )" ); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var myfunc = new Function(); + +// not going to test toString here since it is implementation dependent. +// array[item++] = new TestCase( SECTION, "myfunc.toString()", "function anonymous() { }", myfunc.toString() ); + + myfunc.toString = Object.prototype.toString; + + array[item++] = new TestCase( SECTION, "myfunc = new Function(); myfunc.toString = Object.prototype.toString; myfunc.toString()", + "[object Function]", + myfunc.toString() ); + array[item++] = new TestCase( SECTION, "myfunc.length", 0, myfunc.length ); + array[item++] = new TestCase( SECTION, "myfunc.prototype.toString()", "[object Object]", myfunc.prototype.toString() ); + + array[item++] = new TestCase( SECTION, "myfunc.prototype.constructor", myfunc, myfunc.prototype.constructor ); + array[item++] = new TestCase( SECTION, "myfunc.arguments", null, myfunc.arguments ); + + array[item++] = new TestCase( SECTION, "var OBJ = new MyObject(true); OBJ.valueOf()", true, eval("var OBJ = new MyObject(true); OBJ.valueOf()") ); + array[item++] = new TestCase( SECTION, "OBJ.toString()", "true", OBJ.toString() ); + array[item++] = new TestCase( SECTION, "OBJ.toString = Object.prototype.toString; OBJ.toString()", "[object Object]", eval("OBJ.toString = Object.prototype.toString; OBJ.toString()") ); + array[item++] = new TestCase( SECTION, "MyObject.toString = Object.prototype.toString; MyObject.toString()", "[object Function]", eval("MyObject.toString = Object.prototype.toString; MyObject.toString()") ); + + array[item++] = new TestCase( SECTION, "MyObject.__proto__ == Function.prototype", true, MyObject.__proto__ == Function.prototype ); + array[item++] = new TestCase( SECTION, "MyObject.length", 1, MyObject.length ); + array[item++] = new TestCase( SECTION, "MyObject.prototype.constructor", MyObject, MyObject.prototype.constructor ); + array[item++] = new TestCase( SECTION, "MyObject.arguments", null, MyObject.arguments ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.2.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.2.1-2.js new file mode 100644 index 00000000000..b8f403cecfb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.2.1-2.js @@ -0,0 +1,111 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.2.1.js + ECMA Section: 15.3.2.1 The Function Constructor + new Function(p1, p2, ..., pn, body ) + + Description: + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.3.2.1-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Function Constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + var myfunc1 = new Function("a","b","c", "return a+b+c" ); + var myfunc2 = new Function("a, b, c", "return a+b+c" ); + var myfunc3 = new Function("a,b", "c", "return a+b+c" ); + + myfunc1.toString = Object.prototype.toString; + myfunc2.toString = Object.prototype.toString; + myfunc3.toString = Object.prototype.toString; + + array[item++] = new TestCase( SECTION, "myfunc1 = new Function('a','b','c'); myfunc.toString = Object.prototype.toString; myfunc.toString()", + "[object Function]", + myfunc1.toString() ); + + array[item++] = new TestCase( SECTION, "myfunc1.length", 3, myfunc1.length ); + array[item++] = new TestCase( SECTION, "myfunc1.prototype.toString()", "[object Object]", myfunc1.prototype.toString() ); + + array[item++] = new TestCase( SECTION, "myfunc1.prototype.constructor", myfunc1, myfunc1.prototype.constructor ); + array[item++] = new TestCase( SECTION, "myfunc1.arguments", null, myfunc1.arguments ); + array[item++] = new TestCase( SECTION, "myfunc1(1,2,3)", 6, myfunc1(1,2,3) ); + array[item++] = new TestCase( SECTION, "var MYPROPS = ''; for ( var p in myfunc1.prototype ) { MYPROPS += p; }; MYPROPS", + "", + eval("var MYPROPS = ''; for ( var p in myfunc1.prototype ) { MYPROPS += p; }; MYPROPS") ); + + array[item++] = new TestCase( SECTION, "myfunc2 = new Function('a','b','c'); myfunc.toString = Object.prototype.toString; myfunc.toString()", + "[object Function]", + myfunc2.toString() ); + array[item++] = new TestCase( SECTION, "myfunc2.__proto__", Function.prototype, myfunc2.__proto__ ); + array[item++] = new TestCase( SECTION, "myfunc2.length", 3, myfunc2.length ); + array[item++] = new TestCase( SECTION, "myfunc2.prototype.toString()", "[object Object]", myfunc2.prototype.toString() ); + + array[item++] = new TestCase( SECTION, "myfunc2.prototype.constructor", myfunc2, myfunc2.prototype.constructor ); + array[item++] = new TestCase( SECTION, "myfunc2.arguments", null, myfunc2.arguments ); + array[item++] = new TestCase( SECTION, "myfunc2( 1000, 200, 30 )", 1230, myfunc2(1000,200,30) ); + array[item++] = new TestCase( SECTION, "var MYPROPS = ''; for ( var p in myfunc2.prototype ) { MYPROPS += p; }; MYPROPS", + "", + eval("var MYPROPS = ''; for ( var p in myfunc2.prototype ) { MYPROPS += p; }; MYPROPS") ); + + array[item++] = new TestCase( SECTION, "myfunc3 = new Function('a','b','c'); myfunc.toString = Object.prototype.toString; myfunc.toString()", + "[object Function]", + myfunc3.toString() ); + array[item++] = new TestCase( SECTION, "myfunc3.__proto__", Function.prototype, myfunc3.__proto__ ); + array[item++] = new TestCase( SECTION, "myfunc3.length", 3, myfunc3.length ); + array[item++] = new TestCase( SECTION, "myfunc3.prototype.toString()", "[object Object]", myfunc3.prototype.toString() ); + array[item++] = new TestCase( SECTION, "myfunc3.prototype.valueOf() +''", "[object Object]", myfunc3.prototype.valueOf() +'' ); + array[item++] = new TestCase( SECTION, "myfunc3.prototype.constructor", myfunc3, myfunc3.prototype.constructor ); + array[item++] = new TestCase( SECTION, "myfunc3.arguments", null, myfunc3.arguments ); + array[item++] = new TestCase( SECTION, "myfunc3(-100,100,NaN)", Number.NaN, myfunc3(-100,100,NaN) ); + + array[item++] = new TestCase( SECTION, "var MYPROPS = ''; for ( var p in myfunc3.prototype ) { MYPROPS += p; }; MYPROPS", + "", + eval("var MYPROPS = ''; for ( var p in myfunc3.prototype ) { MYPROPS += p; }; MYPROPS") ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.2.1-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.2.1-3.js new file mode 100644 index 00000000000..76c5e2fcc15 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.2.1-3.js @@ -0,0 +1,96 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.2.1-3.js + ECMA Section: 15.3.2.1 The Function Constructor + new Function(p1, p2, ..., pn, body ) + + Description: The last argument specifies the body (executable code) + of a function; any preceeding arguments sepcify formal + parameters. + + See the text for description of this section. + + This test examples from the specification. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.3.2.1-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Function Constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var args = ""; + + for ( var i = 0; i < 2000; i++ ) { + args += "arg"+i; + if ( i != 1999 ) { + args += ","; + } + } + + var s = ""; + + for ( var i = 0; i < 2000; i++ ) { + s += ".0005"; + if ( i != 1999 ) { + s += ","; + } + } + + MyFunc = new Function( args, "var r=0; for (var i = 0; i < MyFunc.length; i++ ) { if ( eval('arg'+i) == void 0) break; else r += eval('arg'+i); }; return r"); + MyObject = new Function( args, "for (var i = 0; i < MyFunc.length; i++ ) { if ( eval('arg'+i) == void 0) break; eval('this.arg'+i +'=arg'+i); };"); + + array[item++] = new TestCase( SECTION, "MyFunc.length", 2000, MyFunc.length ); + array[item++] = new TestCase( SECTION, "var MY_OB = eval('MyFunc(s)')", 1, eval("var MY_OB = MyFunc("+s+"); MY_OB") ); + + array[item++] = new TestCase( SECTION, "MyObject.length", 2000, MyObject.length ); + + array[item++] = new TestCase( SECTION, "FUN1 = new Function( 'a','b','c', 'return FUN1.length' ); FUN1.length", 3, eval("FUN1 = new Function( 'a','b','c', 'return FUN1.length' ); FUN1.length") ); + array[item++] = new TestCase( SECTION, "FUN1 = new Function( 'a','b','c', 'return FUN1.length' ); FUN1()", 3, eval("FUN1 = new Function( 'a','b','c', 'return FUN1.length' ); FUN1()") ); + array[item++] = new TestCase( SECTION, "FUN1 = new Function( 'a','b','c', 'return FUN1.length' ); FUN1(1,2,3,4,5)", 3, eval("FUN1 = new Function( 'a','b','c', 'return FUN1.length' ); FUN1(1,2,3,4,5)") ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.3.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.3.1-1.js new file mode 100644 index 00000000000..4442e27e02d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.3.1-1.js @@ -0,0 +1,62 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.3.1-1.js + ECMA Section: 15.3.3.1 Properties of the Function Constructor + Function.prototype + + Description: The initial value of Function.prototype is the built-in + Function prototype object. + + This property shall have the attributes [DontEnum | + DontDelete | ReadOnly] + + This test the value of Function.prototype. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.3.3.1-1"; + var VERSION = "ECMA_2"; + startTest(); + var TITLE = "Function.prototype"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + testcases[tc++] = new TestCase( SECTION, "Function.prototype == Function.proto", true, Function.__proto__ == Function.prototype ); + + test(); + +function test() { + for (tc=0 ; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.3.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.3.1-2.js new file mode 100644 index 00000000000..e39abbf8ad5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.3.1-2.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.3.1-2.js + ECMA Section: 15.3.3.1 Properties of the Function Constructor + Function.prototype + + Description: The initial value of Function.prototype is the built-in + Function prototype object. + + This property shall have the attributes [DontEnum | + DontDelete | ReadOnly] + + This test the DontEnum property of Function.prototype. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.3.3.1-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Function.prototype"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "var str='';for (prop in Function ) str += prop; str;", + "", + eval("var str='';for (prop in Function) str += prop; str;") + ); + return ( array ); +} +function test( array ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.3.1-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.3.1-3.js new file mode 100644 index 00000000000..b95752c9c1a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.3.1-3.js @@ -0,0 +1,79 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.3.1-3.js + ECMA Section: 15.3.3.1 Properties of the Function Constructor + Function.prototype + + Description: The initial value of Function.prototype is the built-in + Function prototype object. + + This property shall have the attributes [DontEnum | + DontDelete | ReadOnly] + + This test the DontDelete property of Function.prototype. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.3.3.1-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Function.prototype"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var FUN_PROTO = Function.prototype; + + array[item++] = new TestCase( SECTION, + "delete Function.prototype", + false, + delete Function.prototype + ); + + array[item++] = new TestCase( SECTION, + "delete Function.prototype; Function.prototype", + FUN_PROTO, + eval("delete Function.prototype; Function.prototype") + ); + return ( array ); +} +function test( array ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.3.1-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.3.1-4.js new file mode 100644 index 00000000000..5b4e81148d8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.3.1-4.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.3.1-4.js + ECMA Section: 15.3.3.1 Properties of the Function Constructor + Function.prototype + + Description: The initial value of Function.prototype is the built-in + Function prototype object. + + This property shall have the attributes [DontEnum | + DontDelete | ReadOnly] + + This test the ReadOnly property of Function.prototype. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.3.3.1-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Function.prototype"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "Function.prototype = null; Function.prototype", + Function.prototype, + eval("Function.prototype = null; Function.prototype") + ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.3.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.3.2.js new file mode 100644 index 00000000000..821f93e8d5a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.3.2.js @@ -0,0 +1,60 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.3.2.js + ECMA Section: 15.3.3.2 Properties of the Function Constructor + Function.length + + Description: The length property is 1. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + + var SECTION = "15.3.3.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Function.length"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "Function.length", 1, Function.length ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.4-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.4-1.js new file mode 100644 index 00000000000..d919d414b5c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.4-1.js @@ -0,0 +1,80 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.4-1.js + ECMA Section: 15.3.4 Properties of the Function Prototype Object + + Description: The Function prototype object is itself a Function + object ( its [[Class]] is "Function") that, when + invoked, accepts any arguments and returns undefined. + + The value of the internal [[Prototype]] property + object is the Object prototype object. + + It is a function with an "empty body"; if it is + invoked, it merely returns undefined. + + The Function prototype object does not have a valueOf + property of its own; however it inherits the valueOf + property from the Object prototype Object. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + + var SECTION = "15.3.4-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Properties of the Function Prototype Object"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "var myfunc = Function.prototype; myfunc.toString = Object.prototype.toString; myfunc.toString()", + "[object Function]", + eval("var myfunc = Function.prototype; myfunc.toString = Object.prototype.toString; myfunc.toString()")); + + +// array[item++] = new TestCase( SECTION, "Function.prototype.__proto__", Object.prototype, Function.prototype.__proto__ ); + array[item++] = new TestCase( SECTION, "Function.prototype.valueOf", Object.prototype.valueOf, Function.prototype.valueOf ); + array[item++] = new TestCase( SECTION, "Function.prototype()", (void 0), Function.prototype() ); + array[item++] = new TestCase( SECTION, "Function.prototype(1,true,false,'string', new Date(),null)", (void 0), Function.prototype(1,true,false,'string', new Date(),null) ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.4.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.4.1.js new file mode 100644 index 00000000000..ce75a145bb9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.4.1.js @@ -0,0 +1,62 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.4.1.js + ECMA Section: 15.3.4.1 Function.prototype.constructor + + Description: The initial value of Function.prototype.constructor + is the built-in Function constructor. + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + + var SECTION = "15.3.4.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Function.prototype.constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Function.prototype.constructor", Function, Function.prototype.constructor ); + + return ( array ); +} +function test( array ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.4.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.4.js new file mode 100644 index 00000000000..df519d2e4b3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.4.js @@ -0,0 +1,79 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.4.js + ECMA Section: 15.3.4 Properties of the Function Prototype Object + + Description: The Function prototype object is itself a Function + object ( its [[Class]] is "Function") that, when + invoked, accepts any arguments and returns undefined. + + The value of the internal [[Prototype]] property + object is the Object prototype object. + + It is a function with an "empty body"; if it is + invoked, it merely returns undefined. + + The Function prototype object does not have a valueOf + property of its own; however it inherits the valueOf + property from the Object prototype Object. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.3.4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Properties of the Function Prototype Object"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "var myfunc = Function.prototype; myfunc.toString = Object.prototype.toString; myfunc.toString()", + "[object Function]", + eval("var myfunc = Function.prototype; myfunc.toString = Object.prototype.toString; myfunc.toString()")); + + +// array[item++] = new TestCase( SECTION, "Function.prototype.__proto__", Object.prototype, Function.prototype.__proto__ ); + array[item++] = new TestCase( SECTION, "Function.prototype.valueOf", Object.prototype.valueOf, Function.prototype.valueOf ); + array[item++] = new TestCase( SECTION, "Function.prototype()", (void 0), Function.prototype() ); + array[item++] = new TestCase( SECTION, "Function.prototype(1,true,false,'string', new Date(),null)", (void 0), Function.prototype(1,true,false,'string', new Date(),null) ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.5-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.5-1.js new file mode 100644 index 00000000000..1e63370d680 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.5-1.js @@ -0,0 +1,118 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.5-1.js + ECMA Section: 15.3.5 Properties of Function Instances + new Function(p1, p2, ..., pn, body ) + + Description: + + 15.3.5.1 length + + The value of the length property is usually an integer that indicates + the "typical" number of arguments expected by the function. However, + the language permits the function to be invoked with some other number + of arguments. The behavior of a function when invoked on a number of + arguments other than the number specified by its length property depends + on the function. + + 15.3.5.2 prototype + The value of the prototype property is used to initialize the internal [[ + Prototype]] property of a newly created object before the Function object + is invoked as a constructor for that newly created object. + + 15.3.5.3 arguments + + The value of the arguments property is normally null if there is no + outstanding invocation of the function in progress (that is, the function has been called + but has not yet returned). When a non-internal Function object (15.3.2.1) is invoked, its + arguments property is "dynamically bound" to a newly created object that contains the + arguments on which it was invoked (see 10.1.6 and 10.1.8). Note that the use of this + property is discouraged; it is provided principally for compatibility with existing old code. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + + var SECTION = "15.3.5-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Properties of Function Instances"; + + writeHeaderToLog( SECTION + " "+TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var args = ""; + + for ( var i = 0; i < 2000; i++ ) { + args += "arg"+i; + if ( i != 1999 ) { + args += ","; + } + } + + var s = ""; + + for ( var i = 0; i < 2000; i++ ) { + s += ".0005"; + if ( i != 1999 ) { + s += ","; + } + } + + MyFunc = new Function( args, "var r=0; for (var i = 0; i < MyFunc.length; i++ ) { if ( eval('arg'+i) == void 0) break; else r += eval('arg'+i); }; return r"); + MyObject = new Function( args, "for (var i = 0; i < MyFunc.length; i++ ) { if ( eval('arg'+i) == void 0) break; eval('this.arg'+i +'=arg'+i); };"); + + + array[item++] = new TestCase( SECTION, "MyFunc.length", 2000, MyFunc.length ); + array[item++] = new TestCase( SECTION, "var MY_OB = eval('MyFunc(s)')", 1, eval("var MY_OB = MyFunc("+s+"); MY_OB") ); + array[item++] = new TestCase( SECTION, "MyFunc.prototype.toString()", "[object Object]", MyFunc.prototype.toString() ); + array[item++] = new TestCase( SECTION, "typeof MyFunc.prototype", "object", typeof MyFunc.prototype ); + + + array[item++] = new TestCase( SECTION, "MyObject.length", 2000, MyObject.length ); + + array[item++] = new TestCase( SECTION, "FUN1 = new Function( 'a','b','c', 'return FUN1.length' ); FUN1.length", 3, eval("FUN1 = new Function( 'a','b','c', 'return FUN1.length' ); FUN1.length") ); + array[item++] = new TestCase( SECTION, "FUN1 = new Function( 'a','b','c', 'return FUN1.length' ); FUN1()", 3, eval("FUN1 = new Function( 'a','b','c', 'return FUN1.length' ); FUN1()") ); + array[item++] = new TestCase( SECTION, "FUN1 = new Function( 'a','b','c', 'return FUN1.length' ); FUN1(1,2,3,4,5)", 3, eval("FUN1 = new Function( 'a','b','c', 'return FUN1.length' ); FUN1(1,2,3,4,5)") ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.5-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.5-2.js new file mode 100644 index 00000000000..fe24e32f85b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.5-2.js @@ -0,0 +1,92 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.5-1.js + ECMA Section: 15.3.5 Properties of Function Instances + new Function(p1, p2, ..., pn, body ) + + Description: + + 15.3.5.1 length + + The value of the length property is usually an integer that indicates + the "typical" number of arguments expected by the function. However, + the language permits the function to be invoked with some other number + of arguments. The behavior of a function when invoked on a number of + arguments other than the number specified by its length property depends + on the function. + + 15.3.5.2 prototype + The value of the prototype property is used to initialize the internal [[ + Prototype]] property of a newly created object before the Function object + is invoked as a constructor for that newly created object. + + 15.3.5.3 arguments + + The value of the arguments property is normally null if there is no + outstanding invocation of the function in progress (that is, the function has been called + but has not yet returned). When a non-internal Function object (15.3.2.1) is invoked, its + arguments property is "dynamically bound" to a newly created object that contains the + arguments on which it was invoked (see 10.1.6 and 10.1.8). Note that the use of this + property is discouraged; it is provided principally for compatibility with existing old code. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + + var SECTION = "15.3.5-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Properties of Function Instances"; + + writeHeaderToLog( SECTION + " "+TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var MyObject = new Function( 'a', 'b', 'c', 'this.a = a; this.b = b; this.c = c; this.value = a+b+c; this.valueOf = new Function( "return this.value" )' ); + + array[item++] = new TestCase( SECTION, "MyObject.length", 3, MyObject.length ); + array[item++] = new TestCase( SECTION, "typeof MyObject.prototype", "object", typeof MyObject.prototype ); + array[item++] = new TestCase( SECTION, "typeof MyObject.prototype.constructor", "function", typeof MyObject.prototype.constructor ); + array[item++] = new TestCase( SECTION, "MyObject.arguments", null, MyObject.arguments ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.5.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.5.1.js new file mode 100644 index 00000000000..3da3b0e9edd --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.5.1.js @@ -0,0 +1,80 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.5.1.js + ECMA Section: Function.length + Description: + + The value of the length property is usually an integer that indicates the + "typical" number of arguments expected by the function. However, the + language permits the function to be invoked with some other number of + arguments. The behavior of a function when invoked on a number of arguments + other than the number specified by its length property depends on the function. + + this test needs a 1.2 version check. + + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=104204 + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.3.5.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Function.length"; + var BUGNUMBER="104204"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var f = new Function( "a","b", "c", "return f.length"); + + testcases[tc++] = new TestCase( SECTION, + 'var f = new Function( "a","b", "c", "return f.length"); f()', + 3, + f() ); + + + testcases[tc++] = new TestCase( SECTION, + 'var f = new Function( "a","b", "c", "return f.length"); f(1,2,3,4,5)', + 3, + f(1,2,3,4,5) ); + + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.5.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.5.3.js new file mode 100644 index 00000000000..eaf6dbe60e4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/FunctionObjects/15.3.5.3.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.5.3.js + ECMA Section: Function.arguments + Description: + + The value of the arguments property is normally null if there is no + outstanding invocation of the function in progress (that is, the + function has been called but has not yet returned). When a non-internal + Function object (15.3.2.1) is invoked, its arguments property is + "dynamically bound" to a newly created object that contains the arguments + on which it was invoked (see 10.1.6 and 10.1.8). Note that the use of this + property is discouraged; it is provided principally for compatibility + with existing old code. + + See sections 10.1.6 and 10.1.8 for more extensive tests. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.3.5.3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Function.arguments"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array =new Array(); + var item = 0; + + var MYFUNCTION = new Function( "return this.arguments" ); + + + array[item++] = new TestCase( SECTION, "var MYFUNCTION = new Function( 'return this.arguments' ); MYFUNCTION.arguments", null, MYFUNCTION.arguments ); + + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1-1-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1-1-n.js new file mode 100644 index 00000000000..906b0b4842b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1-1-n.js @@ -0,0 +1,65 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1-1-n.js + ECMA Section: The global object + Description: + + The global object does not have a [[Construct]] property; it is not + possible to use the global object as a constructor with the new operator. + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.1-1-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Global Object"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc] = new TestCase( SECTION, + "var MY_GLOBAL = new this()", + "error", + "var MY_GLOBAL = new this()" ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval(testcases[tc].actual); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1-2-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1-2-n.js new file mode 100644 index 00000000000..327c685e567 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1-2-n.js @@ -0,0 +1,63 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1-2-n.js + ECMA Section: The global object + Description: + + The global object does not have a [[Call]] property; it is not possible + to invoke the global object as a function. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.1-2-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Global Object"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc] = new TestCase( SECTION, + "var MY_GLOBAL = this()", + "error", + "var MY_GLOBAL = this()" ); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval(testcases[tc].actual); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.1.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.1.1.js new file mode 100644 index 00000000000..4310a519222 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.1.1.js @@ -0,0 +1,65 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1.1.1.js + ECMA Section: 15.1.1.1 NaN + + Description: The initial value of NaN is NaN. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.1.1.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "NaN"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[array.length] = new TestCase( SECTION, "NaN", Number.NaN, NaN ); + array[array.length] = new TestCase( SECTION, "this.NaN", Number.NaN, this.NaN ); + array[array.length] = new TestCase( SECTION, "typeof NaN", "number", typeof NaN ); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.1.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.1.2.js new file mode 100644 index 00000000000..35324d65e84 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.1.2.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1.1.2.js + ECMA Section: 15.1.1.2 Infinity + + Description: The initial value of Infinity is +Infinity. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.1.1.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Infinity"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Infinity", Number.POSITIVE_INFINITY, Infinity ); + array[item++] = new TestCase( SECTION, "this.Infinity", Number.POSITIVE_INFINITY, this.Infinity ); + array[item++] = new TestCase( SECTION, "typeof Infinity", "number", typeof Infinity ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + + } + + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.1-1.js new file mode 100644 index 00000000000..d4f38a79d23 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.1-1.js @@ -0,0 +1,91 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1.2.1-1.js + ECMA Section: 15.1.2.1 eval(x) + + if x is not a string object, return x. + Description: + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.1.2.1-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "eval(x)"; + + var BUGNUMBER = "111199"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "eval.length", 1, eval.length ); + array[item++] = new TestCase( SECTION, "delete eval.length", false, delete eval.length ); + array[item++] = new TestCase( SECTION, "var PROPS = ''; for ( p in eval ) { PROPS += p }; PROPS", "", eval("var PROPS = ''; for ( p in eval ) { PROPS += p }; PROPS") ); + array[item++] = new TestCase( SECTION, "eval.length = null; eval.length", 1, eval( "eval.length = null; eval.length") ); +// array[item++] = new TestCase( SECTION, "eval.__proto__", Function.prototype, eval.__proto__ ); + + // test cases where argument is not a string. should return the argument. + + array[item++] = new TestCase( SECTION, "eval()", void 0, eval() ); + array[item++] = new TestCase( SECTION, "eval(void 0)", void 0, eval( void 0) ); + array[item++] = new TestCase( SECTION, "eval(null)", null, eval( null ) ); + array[item++] = new TestCase( SECTION, "eval(true)", true, eval( true ) ); + array[item++] = new TestCase( SECTION, "eval(false)", false, eval( false ) ); + + array[item++] = new TestCase( SECTION, "typeof eval(new String('Infinity/-0')", "object", typeof eval(new String('Infinity/-0')) ); + + array[item++] = new TestCase( SECTION, "eval([1,2,3,4,5,6])", "1,2,3,4,5,6", ""+eval([1,2,3,4,5,6]) ); + array[item++] = new TestCase( SECTION, "eval(new Array(0,1,2,3)", "1,2,3", ""+ eval(new Array(1,2,3)) ); + array[item++] = new TestCase( SECTION, "eval(1)", 1, eval(1) ); + array[item++] = new TestCase( SECTION, "eval(0)", 0, eval(0) ); + array[item++] = new TestCase( SECTION, "eval(-1)", -1, eval(-1) ); + array[item++] = new TestCase( SECTION, "eval(Number.NaN)", Number.NaN, eval(Number.NaN) ); + array[item++] = new TestCase( SECTION, "eval(Number.MIN_VALUE)", 5e-308, eval(Number.MIN_VALUE) ); + array[item++] = new TestCase( SECTION, "eval(-Number.MIN_VALUE)", -5e-308, eval(-Number.MIN_VALUE) ); + array[item++] = new TestCase( SECTION, "eval(Number.POSITIVE_INFINITY)", Number.POSITIVE_INFINITY, eval(Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "eval(Number.NEGATIVE_INFINITY)", Number.NEGATIVE_INFINITY, eval(Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "eval( 4294967296 )", 4294967296, eval(4294967296) ); + array[item++] = new TestCase( SECTION, "eval( 2147483648 )", 2147483648, eval(2147483648) ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.1-2.js new file mode 100644 index 00000000000..203cd4d55d1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.1-2.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1.2.1-2.js + ECMA Section: 15.1.2.1 eval(x) + + Parse x as an ECMAScript Program. If the parse fails, + generate a runtime error. Evaluate the program. If + result is "Normal completion after value V", return + the value V. Else, return undefined. + Description: + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.1.2.1-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "eval(x)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[0] = new TestCase( SECTION, + "d = new Date(0); with (d) { x = getUTCMonth() +'/'+ getUTCDate() +'/'+ getUTCFullYear(); } x", + "0/1/1970", + eval( "d = new Date(0); with (d) { x = getUTCMonth() +'/'+ getUTCDate() +'/'+ getUTCFullYear(); } x" ) + ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.2-1.js new file mode 100644 index 00000000000..5d3904644fc --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.2-1.js @@ -0,0 +1,290 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1.2.2-1.js + ECMA Section: 15.1.2.2 Function properties of the global object + parseInt( string, radix ) + + Description: + + The parseInt function produces an integer value dictated by intepretation + of the contents of the string argument according to the specified radix. + + When the parseInt function is called, the following steps are taken: + + 1. Call ToString(string). + 2. Compute a substring of Result(1) consisting of the leftmost character + that is not a StrWhiteSpaceChar and all characters to the right of + that character. (In other words, remove leading whitespace.) + 3. Let sign be 1. + 4. If Result(2) is not empty and the first character of Result(2) is a + minus sign -, let sign be -1. + 5. If Result(2) is not empty and the first character of Result(2) is a + plus sign + or a minus sign -, then Result(5) is the substring of + Result(2) produced by removing the first character; otherwise, Result(5) + is Result(2). + 6. If the radix argument is not supplied, go to step 12. + 7. Call ToInt32(radix). + 8. If Result(7) is zero, go to step 12; otherwise, if Result(7) < 2 or + Result(7) > 36, return NaN. + 9. Let R be Result(7). + 10. If R = 16 and the length of Result(5) is at least 2 and the first two + characters of Result(5) are either "0x" or "0X", let S be the substring + of Result(5) consisting of all but the first two characters; otherwise, + let S be Result(5). + 11. Go to step 22. + 12. If Result(5) is empty or the first character of Result(5) is not 0, + go to step 20. + 13. If the length of Result(5) is at least 2 and the second character of + Result(5) is x or X, go to step 17. + 14. Let R be 8. + 15. Let S be Result(5). + 16. Go to step 22. + 17. Let R be 16. + 18. Let S be the substring of Result(5) consisting of all but the first + two characters. + 19. Go to step 22. + 20. Let R be 10. + 21. Let S be Result(5). + 22. If S contains any character that is not a radix-R digit, then let Z be + the substring of S consisting of all characters to the left of the + leftmost such character; otherwise, let Z be S. + 23. If Z is empty, return NaN. + 24. Compute the mathematical integer value that is represented by Z in + radix-R notation. (But if R is 10 and Z contains more than 20 + significant digits, every digit after the 20th may be replaced by a 0 + digit, at the option of the implementation; and if R is not 2, 4, 8, + 10, 16, or 32, then Result(24) may be an implementation-dependent + approximation to the mathematical integer value that is represented + by Z in radix-R notation.) + 25. Compute the number value for Result(24). + 26. Return sign Result(25). + + Note that parseInt may interpret only a leading portion of the string as + an integer value; it ignores any characters that cannot be interpreted as + part of the notation of an integer, and no indication is given that any + such characters were ignored. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.1.2.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "parseInt(string, radix)"; + var BUGNUMBER="111199"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var HEX_STRING = "0x0"; + var HEX_VALUE = 0; + + array[item++] = new TestCase( SECTION, "parseInt.length", 2, parseInt.length ); + array[item++] = new TestCase( SECTION, "parseInt.length = 0; parseInt.length", 2, eval("parseInt.length = 0; parseInt.length") ); + array[item++] = new TestCase( SECTION, "var PROPS=''; for ( var p in parseInt ) { PROPS += p; }; PROPS", "", eval("var PROPS=''; for ( var p in parseInt ) { PROPS += p; }; PROPS") ); + array[item++] = new TestCase( SECTION, "delete parseInt.length", false, delete parseInt.length ); + array[item++] = new TestCase( SECTION, "delete parseInt.length; parseInt.length", 2, eval("delete parseInt.length; parseInt.length") ); + array[item++] = new TestCase( SECTION, "parseInt.length = null; parseInt.length", 2, eval("parseInt.length = null; parseInt.length") ); + + array[item++] = new TestCase( SECTION, "parseInt()", NaN, parseInt() ); + array[item++] = new TestCase( SECTION, "parseInt('')", NaN, parseInt("") ); + array[item++] = new TestCase( SECTION, "parseInt('','')", NaN, parseInt("","") ); + array[item++] = new TestCase( SECTION, + "parseInt(\" 0xabcdef ", + 11259375, + parseInt( " 0xabcdef " )); + + array[item++] = new TestCase( SECTION, + "parseInt(\" 0XABCDEF ", + 11259375, + parseInt( " 0XABCDEF " ) ); + + array[item++] = new TestCase( SECTION, + "parseInt( 0xabcdef )", + 11259375, + parseInt( "0xabcdef") ); + + array[item++] = new TestCase( SECTION, + "parseInt( 0XABCDEF )", + 11259375, + parseInt( "0XABCDEF") ); + + for ( HEX_STRING = "0x0", HEX_VALUE = 0, POWER = 0; POWER < 15; POWER++, HEX_STRING = HEX_STRING +"f" ) { + array[item++] = new TestCase( SECTION, "parseInt("+HEX_STRING+")", HEX_VALUE, parseInt(HEX_STRING) ); + HEX_VALUE += Math.pow(16,POWER)*15; + } + for ( HEX_STRING = "0X0", HEX_VALUE = 0, POWER = 0; POWER < 15; POWER++, HEX_STRING = HEX_STRING +"f" ) { + array[item++] = new TestCase( SECTION, "parseInt("+HEX_STRING+")", HEX_VALUE, parseInt(HEX_STRING) ); + HEX_VALUE += Math.pow(16,POWER)*15; + } + for ( HEX_STRING = "0x0", HEX_VALUE = 0, POWER = 0; POWER < 15; POWER++, HEX_STRING = HEX_STRING +"f" ) { + array[item++] = new TestCase( SECTION, "parseInt("+HEX_STRING+",16)", HEX_VALUE, parseInt(HEX_STRING,16) ); + HEX_VALUE += Math.pow(16,POWER)*15; + } + for ( HEX_STRING = "0x0", HEX_VALUE = 0, POWER = 0; POWER < 15; POWER++, HEX_STRING = HEX_STRING +"f" ) { + array[item++] = new TestCase( SECTION, "parseInt("+HEX_STRING+",16)", HEX_VALUE, parseInt(HEX_STRING,16) ); + HEX_VALUE += Math.pow(16,POWER)*15; + } + for ( HEX_STRING = "0x0", HEX_VALUE = 0, POWER = 0; POWER < 15; POWER++, HEX_STRING = HEX_STRING +"f" ) { + array[item++] = new TestCase( SECTION, "parseInt("+HEX_STRING+",null)", HEX_VALUE, parseInt(HEX_STRING,null) ); + HEX_VALUE += Math.pow(16,POWER)*15; + } + for ( HEX_STRING = "0x0", HEX_VALUE = 0, POWER = 0; POWER < 15; POWER++, HEX_STRING = HEX_STRING +"f" ) { + array[item++] = new TestCase( SECTION, "parseInt("+HEX_STRING+", void 0)", HEX_VALUE, parseInt(HEX_STRING, void 0) ); + HEX_VALUE += Math.pow(16,POWER)*15; + } + + // a few tests with spaces + + for ( var space = " ", HEX_STRING = "0x0", HEX_VALUE = 0, POWER = 0; + POWER < 15; + POWER++, HEX_STRING = HEX_STRING +"f", space += " ") + { + array[item++] = new TestCase( SECTION, "parseInt("+space+HEX_STRING+space+", void 0)", HEX_VALUE, parseInt(space+HEX_STRING+space, void 0) ); + HEX_VALUE += Math.pow(16,POWER)*15; + } + + // a few tests with negative numbers + for ( HEX_STRING = "-0x0", HEX_VALUE = 0, POWER = 0; POWER < 15; POWER++, HEX_STRING = HEX_STRING +"f" ) { + array[item++] = new TestCase( SECTION, "parseInt("+HEX_STRING+")", HEX_VALUE, parseInt(HEX_STRING) ); + HEX_VALUE -= Math.pow(16,POWER)*15; + } + + // we should stop parsing when we get to a value that is not a numeric literal for the type we expect + + for ( HEX_STRING = "0x0", HEX_VALUE = 0, POWER = 0; POWER < 15; POWER++, HEX_STRING = HEX_STRING +"f" ) { + array[item++] = new TestCase( SECTION, "parseInt("+HEX_STRING+"g,16)", HEX_VALUE, parseInt(HEX_STRING+"g",16) ); + HEX_VALUE += Math.pow(16,POWER)*15; + } + for ( HEX_STRING = "0x0", HEX_VALUE = 0, POWER = 0; POWER < 15; POWER++, HEX_STRING = HEX_STRING +"f" ) { + array[item++] = new TestCase( SECTION, "parseInt("+HEX_STRING+"g,16)", HEX_VALUE, parseInt(HEX_STRING+"G",16) ); + HEX_VALUE += Math.pow(16,POWER)*15; + } + + for ( HEX_STRING = "-0x0", HEX_VALUE = 0, POWER = 0; POWER < 15; POWER++, HEX_STRING = HEX_STRING +"f" ) { + array[item++] = new TestCase( SECTION, "parseInt("+HEX_STRING+")", HEX_VALUE, parseInt(HEX_STRING) ); + HEX_VALUE -= Math.pow(16,POWER)*15; + } + for ( HEX_STRING = "-0X0", HEX_VALUE = 0, POWER = 0; POWER < 15; POWER++, HEX_STRING = HEX_STRING +"f" ) { + array[item++] = new TestCase( SECTION, "parseInt("+HEX_STRING+")", HEX_VALUE, parseInt(HEX_STRING) ); + HEX_VALUE -= Math.pow(16,POWER)*15; + } + for ( HEX_STRING = "-0x0", HEX_VALUE = 0, POWER = 0; POWER < 15; POWER++, HEX_STRING = HEX_STRING +"f" ) { + array[item++] = new TestCase( SECTION, "parseInt("+HEX_STRING+",16)", HEX_VALUE, parseInt(HEX_STRING,16) ); + HEX_VALUE -= Math.pow(16,POWER)*15; + } + for ( HEX_STRING = "-0x0", HEX_VALUE = 0, POWER = 0; POWER < 15; POWER++, HEX_STRING = HEX_STRING +"f" ) { + array[item++] = new TestCase( SECTION, "parseInt("+HEX_STRING+",16)", HEX_VALUE, parseInt(HEX_STRING,16) ); + HEX_VALUE -= Math.pow(16,POWER)*15; + } + + // let us do some 'octal' tests - ES5 does not permit octal, these must be treated as decimal. + + var OCT_STRING = "0"; + var OCT_VALUE = 0; + + for ( OCT_STRING = "0", OCT_VALUE = 0, POWER = 0; POWER < 15; POWER++, OCT_STRING = OCT_STRING +"7" ) { + array[item++] = new TestCase( SECTION, "parseInt("+OCT_STRING+")", OCT_VALUE, parseInt(OCT_STRING) ); + OCT_VALUE += Math.pow(10,POWER)*7; + } + + for ( OCT_STRING = "-0", OCT_VALUE = 0, POWER = 0; POWER < 15; POWER++, OCT_STRING = OCT_STRING +"7" ) { + array[item++] = new TestCase( SECTION, "parseInt("+OCT_STRING+")", OCT_VALUE, parseInt(OCT_STRING) ); + OCT_VALUE -= Math.pow(10,POWER)*7; + } + + // should get the same results as above if we provid the radix of 8 (or 010) + + for ( OCT_STRING = "0", OCT_VALUE = 0, POWER = 0; POWER < 15; POWER++, OCT_STRING = OCT_STRING +"7" ) { + array[item++] = new TestCase( SECTION, "parseInt("+OCT_STRING+",8)", OCT_VALUE, parseInt(OCT_STRING,8) ); + OCT_VALUE += Math.pow(8,POWER)*7; + } + for ( OCT_STRING = "-0", OCT_VALUE = 0, POWER = 0; POWER < 15; POWER++, OCT_STRING = OCT_STRING +"7" ) { + array[item++] = new TestCase( SECTION, "parseInt("+OCT_STRING+",010)", OCT_VALUE, parseInt(OCT_STRING,010) ); + OCT_VALUE -= Math.pow(8,POWER)*7; + } + + // we shall stop parsing digits when we get one that isn't a numeric literal of the type we think + // it should be. + for ( OCT_STRING = "0", OCT_VALUE = 0, POWER = 0; POWER < 15; POWER++, OCT_STRING = OCT_STRING +"7" ) { + array[item++] = new TestCase( SECTION, "parseInt("+OCT_STRING+"8,8)", OCT_VALUE, parseInt(OCT_STRING+"8",8) ); + OCT_VALUE += Math.pow(8,POWER)*7; + } + for ( OCT_STRING = "-0", OCT_VALUE = 0, POWER = 0; POWER < 15; POWER++, OCT_STRING = OCT_STRING +"7" ) { + array[item++] = new TestCase( SECTION, "parseInt("+OCT_STRING+"8,010)", OCT_VALUE, parseInt(OCT_STRING+"8",010) ); + OCT_VALUE -= Math.pow(8,POWER)*7; + } + + array[item++] = new TestCase( SECTION, "parseInt( '0x' )", NaN, parseInt("0x") ); + array[item++] = new TestCase( SECTION, "parseInt( '0X' )", NaN, parseInt("0X") ); + + array[item++] = new TestCase( SECTION, "parseInt( '11111111112222222222' )", 11111111112222222222, parseInt("11111111112222222222") ); + array[item++] = new TestCase( SECTION, "parseInt( '111111111122222222223' )", 111111111122222222220, parseInt("111111111122222222223") ); + array[item++] = new TestCase( SECTION, "parseInt( '11111111112222222222',10 )", 11111111112222222222, parseInt("11111111112222222222",10) ); + array[item++] = new TestCase( SECTION, "parseInt( '111111111122222222223',10 )", 111111111122222222220, parseInt("111111111122222222223",10) ); + + array[item++] = new TestCase( SECTION, "parseInt( '01234567890', -1 )", Number.NaN, parseInt("01234567890",-1) ); + array[item++] = new TestCase( SECTION, "parseInt( '01234567890', 0 )", Number.NaN, parseInt("01234567890",1) ); + array[item++] = new TestCase( SECTION, "parseInt( '01234567890', 1 )", Number.NaN, parseInt("01234567890",1) ); + array[item++] = new TestCase( SECTION, "parseInt( '01234567890', 2 )", 1, parseInt("01234567890",2) ); + array[item++] = new TestCase( SECTION, "parseInt( '01234567890', 3 )", 5, parseInt("01234567890",3) ); + array[item++] = new TestCase( SECTION, "parseInt( '01234567890', 4 )", 27, parseInt("01234567890",4) ); + array[item++] = new TestCase( SECTION, "parseInt( '01234567890', 5 )", 194, parseInt("01234567890",5) ); + array[item++] = new TestCase( SECTION, "parseInt( '01234567890', 6 )", 1865, parseInt("01234567890",6) ); + array[item++] = new TestCase( SECTION, "parseInt( '01234567890', 7 )", 22875, parseInt("01234567890",7) ); + array[item++] = new TestCase( SECTION, "parseInt( '01234567890', 8 )", 342391, parseInt("01234567890",8) ); + array[item++] = new TestCase( SECTION, "parseInt( '01234567890', 9 )", 6053444, parseInt("01234567890",9) ); + array[item++] = new TestCase( SECTION, "parseInt( '01234567890', 10 )", 1234567890, parseInt("01234567890",10) ); + + // need more test cases with hex radix + + array[item++] = new TestCase( SECTION, "parseInt( '1234567890', '0xa')", 1234567890, parseInt("1234567890","0xa") ); + + array[item++] = new TestCase( SECTION, "parseInt( '012345', 11 )", 17715, parseInt("012345",11) ); + + array[item++] = new TestCase( SECTION, "parseInt( '012345', 35 )", 1590195, parseInt("012345",35) ); + array[item++] = new TestCase( SECTION, "parseInt( '012345', 36 )", 1776965, parseInt("012345",36) ); + array[item++] = new TestCase( SECTION, "parseInt( '012345', 37 )", Number.NaN, parseInt("012345",37) ); + + return ( array ); +} +function test( array ) { + for ( tc=0 ; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.2-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.2-2.js new file mode 100644 index 00000000000..ad48fac9858 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.2-2.js @@ -0,0 +1,232 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1.2.2-1.js + ECMA Section: 15.1.2.2 Function properties of the global object + parseInt( string, radix ) + + Description: parseInt test cases written by waldemar, and documented in + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=123874. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ +var SECTION = "15.1.2.2-2"; +var VERSION = "ECMA_1"; + startTest(); +var TITLE = "parseInt(string, radix)"; +var BUGNUMBER="123874"; + +writeHeaderToLog( SECTION + " "+ TITLE); + +var testcases = new Array(); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("000000100000000100100011010001010110011110001001101010111100",2)', + 9027215253084860, + parseInt("000000100000000100100011010001010110011110001001101010111100",2) ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("000000100000000100100011010001010110011110001001101010111101",2)', + 9027215253084860, + parseInt("000000100000000100100011010001010110011110001001101010111101",2)); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("000000100000000100100011010001010110011110001001101010111111",2)', + 9027215253084864, + parseInt("000000100000000100100011010001010110011110001001101010111111",2) ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("0000001000000001001000110100010101100111100010011010101111010",2)', + 18054430506169720, + parseInt("0000001000000001001000110100010101100111100010011010101111010",2) ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("0000001000000001001000110100010101100111100010011010101111011",2)', + 18054430506169724, + parseInt("0000001000000001001000110100010101100111100010011010101111011",2)); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("0000001000000001001000110100010101100111100010011010101111100",2)', + 18054430506169724, + parseInt("0000001000000001001000110100010101100111100010011010101111100",2) ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("0000001000000001001000110100010101100111100010011010101111110",2)', + 18054430506169728, + parseInt("0000001000000001001000110100010101100111100010011010101111110",2) ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("yz",35)', + 34, + parseInt("yz",35) ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("yz",36)', + 1259, + parseInt("yz",36) ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("yz",37)', + NaN, + parseInt("yz",37) ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("+77")', + 77, + parseInt("+77") ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("-77",9)', + -70, + parseInt("-77",9) ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("\u20001234\u2000")', + 1234, + parseInt("\u20001234\u2000") ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("123456789012345678")', + 123456789012345680, + parseInt("123456789012345678") ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("9",8)', + NaN, + parseInt("9",8) ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("1e2")', + 1, + parseInt("1e2") ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("1.9999999999999999999")', + 1, + parseInt("1.9999999999999999999") ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("0x10")', + 16, + parseInt("0x10") ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("0x10",10)', + 0, + parseInt("0x10",10)); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("0022")', + 22, + parseInt("0022")); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("0022",10)', + 22, + parseInt("0022",10) ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("0x1000000000000080")', + 1152921504606847000, + parseInt("0x1000000000000080") ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt("0x1000000000000081")', + 1152921504606847200, + parseInt("0x1000000000000081") ); + +s = +"0xFFFFFFFFFFFFF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + +s += "0000000000000000000000000000000000000"; + +testcases[tc++] = new TestCase( SECTION, + "s = " + s +"; -s", + -1.7976931348623157e+308, + -s ); + +s = +"0xFFFFFFFFFFFFF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; +s += "0000000000000000000000000000000000001"; + +testcases[tc++] = new TestCase( SECTION, + "s = " + s +"; -s", + -1.7976931348623157e+308, + -s ); + + +s = "0xFFFFFFFFFFFFFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + +s += "0000000000000000000000000000000000000" + + +testcases[tc++] = new TestCase( SECTION, + "s = " + s + "; -s", + -Infinity, + -s ); + +s = "0xFFFFFFFFFFFFFB0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; +s += "0000000000000000000000000000000000001"; + +testcases[tc++] = new TestCase( SECTION, + "s = " + s + "; -s", + -1.7976931348623157e+308, + -s ); + +s += "0" + +testcases[tc++] = new TestCase( SECTION, + "s = " + s + "; -s", + -Infinity, + -s ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt(s)', + Infinity, + parseInt(s) ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt(s,32)', + 0, + parseInt(s,32) ); + +testcases[tc++] = new TestCase( SECTION, + 'parseInt(s,36)', + Infinity, + parseInt(s,36)); + +test(); + +function test( array ) { + for ( tc=0 ; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.3-1.js new file mode 100644 index 00000000000..0efec6b33a6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.3-1.js @@ -0,0 +1,444 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1.2.3.js + ECMA Section: 15.1.2.3 Function properties of the global object: + parseFloat( string ) + + Description: The parseFloat function produces a number value dictated + by the interpretation of the contents of the string + argument defined as a decimal literal. + + When the parseFloat function is called, the following + steps are taken: + + 1. Call ToString( string ). + 2. Remove leading whitespace Result(1). + 3. If neither Result(2) nor any prefix of Result(2) + satisfies the syntax of a StrDecimalLiteral, + return NaN. + 4. Compute the longest prefix of Result(2) which might + be Resusult(2) itself, that satisfies the syntax of + a StrDecimalLiteral + 5. Return the number value for the MV of Result(4). + + Note that parseFloate may interpret only a leading + portion of the string as a number value; it ignores any + characters that cannot be interpreted as part of the + notation of a decimal literal, and no indication is given + that such characters were ignored. + + StrDecimalLiteral:: + Infinity + DecimalDigits.DecimalDigits opt ExponentPart opt + .DecimalDigits ExponentPart opt + DecimalDigits ExponentPart opt + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + + var SECTION = "15.1.2.3-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "parseFloat(string)"; + var BUGNUMBER= "77391"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "parseFloat.length", 1, parseFloat.length ); + + array[item++] = new TestCase( SECTION, "parseFloat.length = null; parseFloat.length", 1, eval("parseFloat.length = null; parseFloat.length") ); + array[item++] = new TestCase( SECTION, "delete parseFloat.length", false, delete parseFloat.length ); + array[item++] = new TestCase( SECTION, "delete parseFloat.length; parseFloat.length", 1, eval("delete parseFloat.length; parseFloat.length") ); + array[item++] = new TestCase( SECTION, "var MYPROPS=''; for ( var p in parseFloat ) { MYPROPS += p }; MYPROPS", "", eval("var MYPROPS=''; for ( var p in parseFloat ) { MYPROPS += p }; MYPROPS") ); + + array[item++] = new TestCase( SECTION, "parseFloat()", Number.NaN, parseFloat() ); + array[item++] = new TestCase( SECTION, "parseFloat('')", Number.NaN, parseFloat('') ); + + array[item++] = new TestCase( SECTION, "parseFloat(' ')", Number.NaN, parseFloat(' ') ); + array[item++] = new TestCase( SECTION, "parseFloat(true)", Number.NaN, parseFloat(true) ); + array[item++] = new TestCase( SECTION, "parseFloat(false)", Number.NaN, parseFloat(false) ); + array[item++] = new TestCase( SECTION, "parseFloat('string')", Number.NaN, parseFloat("string") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' Infinity')", Infinity, parseFloat("Infinity") ); + array[item++] = new TestCase( SECTION, "parseFloat(' Infinity ')", Infinity, parseFloat(' Infinity ') ); + + array[item++] = new TestCase( SECTION, "parseFloat('Infinity')", Infinity, parseFloat("Infinity") ); + array[item++] = new TestCase( SECTION, "parseFloat(Infinity)", Infinity, parseFloat(Infinity) ); + + + array[item++] = new TestCase( SECTION, "parseFloat(' +Infinity')", +Infinity, parseFloat("+Infinity") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -Infinity ')", -Infinity, parseFloat(' -Infinity ') ); + + array[item++] = new TestCase( SECTION, "parseFloat('+Infinity')", +Infinity, parseFloat("+Infinity") ); + array[item++] = new TestCase( SECTION, "parseFloat(-Infinity)", -Infinity, parseFloat(-Infinity) ); + + array[item++] = new TestCase( SECTION, "parseFloat('0')", 0, parseFloat("0") ); + array[item++] = new TestCase( SECTION, "parseFloat('-0')", -0, parseFloat("-0") ); + array[item++] = new TestCase( SECTION, "parseFloat('+0')", 0, parseFloat("+0") ); + + array[item++] = new TestCase( SECTION, "parseFloat('1')", 1, parseFloat("1") ); + array[item++] = new TestCase( SECTION, "parseFloat('-1')", -1, parseFloat("-1") ); + array[item++] = new TestCase( SECTION, "parseFloat('+1')", 1, parseFloat("+1") ); + + array[item++] = new TestCase( SECTION, "parseFloat('2')", 2, parseFloat("2") ); + array[item++] = new TestCase( SECTION, "parseFloat('-2')", -2, parseFloat("-2") ); + array[item++] = new TestCase( SECTION, "parseFloat('+2')", 2, parseFloat("+2") ); + + array[item++] = new TestCase( SECTION, "parseFloat('3')", 3, parseFloat("3") ); + array[item++] = new TestCase( SECTION, "parseFloat('-3')", -3, parseFloat("-3") ); + array[item++] = new TestCase( SECTION, "parseFloat('+3')", 3, parseFloat("+3") ); + + array[item++] = new TestCase( SECTION, "parseFloat('4')", 4, parseFloat("4") ); + array[item++] = new TestCase( SECTION, "parseFloat('-4')", -4, parseFloat("-4") ); + array[item++] = new TestCase( SECTION, "parseFloat('+4')", 4, parseFloat("+4") ); + + array[item++] = new TestCase( SECTION, "parseFloat('5')", 5, parseFloat("5") ); + array[item++] = new TestCase( SECTION, "parseFloat('-5')", -5, parseFloat("-5") ); + array[item++] = new TestCase( SECTION, "parseFloat('+5')", 5, parseFloat("+5") ); + + array[item++] = new TestCase( SECTION, "parseFloat('6')", 6, parseFloat("6") ); + array[item++] = new TestCase( SECTION, "parseFloat('-6')", -6, parseFloat("-6") ); + array[item++] = new TestCase( SECTION, "parseFloat('+6')", 6, parseFloat("+6") ); + + array[item++] = new TestCase( SECTION, "parseFloat('7')", 7, parseFloat("7") ); + array[item++] = new TestCase( SECTION, "parseFloat('-7')", -7, parseFloat("-7") ); + array[item++] = new TestCase( SECTION, "parseFloat('+7')", 7, parseFloat("+7") ); + + array[item++] = new TestCase( SECTION, "parseFloat('8')", 8, parseFloat("8") ); + array[item++] = new TestCase( SECTION, "parseFloat('-8')", -8, parseFloat("-8") ); + array[item++] = new TestCase( SECTION, "parseFloat('+8')", 8, parseFloat("+8") ); + + array[item++] = new TestCase( SECTION, "parseFloat('9')", 9, parseFloat("9") ); + array[item++] = new TestCase( SECTION, "parseFloat('-9')", -9, parseFloat("-9") ); + array[item++] = new TestCase( SECTION, "parseFloat('+9')", 9, parseFloat("+9") ); + + array[item++] = new TestCase( SECTION, "parseFloat('3.14159')", 3.14159, parseFloat("3.14159") ); + array[item++] = new TestCase( SECTION, "parseFloat('-3.14159')", -3.14159, parseFloat("-3.14159") ); + array[item++] = new TestCase( SECTION, "parseFloat('+3.14159')", 3.14159, parseFloat("+3.14159") ); + + array[item++] = new TestCase( SECTION, "parseFloat('3.')", 3, parseFloat("3.") ); + array[item++] = new TestCase( SECTION, "parseFloat('-3.')", -3, parseFloat("-3.") ); + array[item++] = new TestCase( SECTION, "parseFloat('+3.')", 3, parseFloat("+3.") ); + + array[item++] = new TestCase( SECTION, "parseFloat('3.e1')", 30, parseFloat("3.e1") ); + array[item++] = new TestCase( SECTION, "parseFloat('-3.e1')", -30, parseFloat("-3.e1") ); + array[item++] = new TestCase( SECTION, "parseFloat('+3.e1')", 30, parseFloat("+3.e1") ); + + array[item++] = new TestCase( SECTION, "parseFloat('3.e+1')", 30, parseFloat("3.e+1") ); + array[item++] = new TestCase( SECTION, "parseFloat('-3.e+1')", -30, parseFloat("-3.e+1") ); + array[item++] = new TestCase( SECTION, "parseFloat('+3.e+1')", 30, parseFloat("+3.e+1") ); + + array[item++] = new TestCase( SECTION, "parseFloat('3.e-1')", .30, parseFloat("3.e-1") ); + array[item++] = new TestCase( SECTION, "parseFloat('-3.e-1')", -.30, parseFloat("-3.e-1") ); + array[item++] = new TestCase( SECTION, "parseFloat('+3.e-1')", .30, parseFloat("+3.e-1") ); + + // StrDecimalLiteral::: .DecimalDigits ExponentPart opt + + array[item++] = new TestCase( SECTION, "parseFloat('.00001')", 0.00001, parseFloat(".00001") ); + array[item++] = new TestCase( SECTION, "parseFloat('+.00001')", 0.00001, parseFloat("+.00001") ); + array[item++] = new TestCase( SECTION, "parseFloat('-0.0001')", -0.00001, parseFloat("-.00001") ); + + array[item++] = new TestCase( SECTION, "parseFloat('.01e2')", 1, parseFloat(".01e2") ); + array[item++] = new TestCase( SECTION, "parseFloat('+.01e2')", 1, parseFloat("+.01e2") ); + array[item++] = new TestCase( SECTION, "parseFloat('-.01e2')", -1, parseFloat("-.01e2") ); + + array[item++] = new TestCase( SECTION, "parseFloat('.01e+2')", 1, parseFloat(".01e+2") ); + array[item++] = new TestCase( SECTION, "parseFloat('+.01e+2')", 1, parseFloat("+.01e+2") ); + array[item++] = new TestCase( SECTION, "parseFloat('-.01e+2')", -1, parseFloat("-.01e+2") ); + + array[item++] = new TestCase( SECTION, "parseFloat('.01e-2')", 0.0001, parseFloat(".01e-2") ); + array[item++] = new TestCase( SECTION, "parseFloat('+.01e-2')", 0.0001, parseFloat("+.01e-2") ); + array[item++] = new TestCase( SECTION, "parseFloat('-.01e-2')", -0.0001, parseFloat("-.01e-2") ); + + // StrDecimalLiteral::: DecimalDigits ExponentPart opt + + array[item++] = new TestCase( SECTION, "parseFloat('1234e5')", 123400000, parseFloat("1234e5") ); + array[item++] = new TestCase( SECTION, "parseFloat('+1234e5')", 123400000, parseFloat("+1234e5") ); + array[item++] = new TestCase( SECTION, "parseFloat('-1234e5')", -123400000, parseFloat("-1234e5") ); + + array[item++] = new TestCase( SECTION, "parseFloat('1234e+5')", 123400000, parseFloat("1234e+5") ); + array[item++] = new TestCase( SECTION, "parseFloat('+1234e+5')", 123400000, parseFloat("+1234e+5") ); + array[item++] = new TestCase( SECTION, "parseFloat('-1234e+5')", -123400000, parseFloat("-1234e+5") ); + + array[item++] = new TestCase( SECTION, "parseFloat('1234e-5')", 0.01234, parseFloat("1234e-5") ); + array[item++] = new TestCase( SECTION, "parseFloat('+1234e-5')", 0.01234, parseFloat("+1234e-5") ); + array[item++] = new TestCase( SECTION, "parseFloat('-1234e-5')", -0.01234, parseFloat("-1234e-5") ); + + + array[item++] = new TestCase( SECTION, "parseFloat(0)", 0, parseFloat(0) ); + array[item++] = new TestCase( SECTION, "parseFloat(-0)", -0, parseFloat(-0) ); + + array[item++] = new TestCase( SECTION, "parseFloat(1)", 1, parseFloat(1) ); + array[item++] = new TestCase( SECTION, "parseFloat(-1)", -1, parseFloat(-1) ); + + array[item++] = new TestCase( SECTION, "parseFloat(2)", 2, parseFloat(2) ); + array[item++] = new TestCase( SECTION, "parseFloat(-2)", -2, parseFloat(-2) ); + + array[item++] = new TestCase( SECTION, "parseFloat(3)", 3, parseFloat(3) ); + array[item++] = new TestCase( SECTION, "parseFloat(-3)", -3, parseFloat(-3) ); + + array[item++] = new TestCase( SECTION, "parseFloat(4)", 4, parseFloat(4) ); + array[item++] = new TestCase( SECTION, "parseFloat(-4)", -4, parseFloat(-4) ); + + array[item++] = new TestCase( SECTION, "parseFloat(5)", 5, parseFloat(5) ); + array[item++] = new TestCase( SECTION, "parseFloat(-5)", -5, parseFloat(-5) ); + + array[item++] = new TestCase( SECTION, "parseFloat(6)", 6, parseFloat(6) ); + array[item++] = new TestCase( SECTION, "parseFloat(-6)", -6, parseFloat(-6) ); + + array[item++] = new TestCase( SECTION, "parseFloat(7)", 7, parseFloat(7) ); + array[item++] = new TestCase( SECTION, "parseFloat(-7)", -7, parseFloat(-7) ); + + array[item++] = new TestCase( SECTION, "parseFloat(8)", 8, parseFloat(8) ); + array[item++] = new TestCase( SECTION, "parseFloat(-8)", -8, parseFloat(-8) ); + + array[item++] = new TestCase( SECTION, "parseFloat(9)", 9, parseFloat(9) ); + array[item++] = new TestCase( SECTION, "parseFloat(-9)", -9, parseFloat(-9) ); + + array[item++] = new TestCase( SECTION, "parseFloat(3.14159)", 3.14159, parseFloat(3.14159) ); + array[item++] = new TestCase( SECTION, "parseFloat(-3.14159)", -3.14159, parseFloat(-3.14159) ); + + array[item++] = new TestCase( SECTION, "parseFloat(3.)", 3, parseFloat(3.) ); + array[item++] = new TestCase( SECTION, "parseFloat(-3.)", -3, parseFloat(-3.) ); + + array[item++] = new TestCase( SECTION, "parseFloat(3.e1)", 30, parseFloat(3.e1) ); + array[item++] = new TestCase( SECTION, "parseFloat(-3.e1)", -30, parseFloat(-3.e1) ); + + array[item++] = new TestCase( SECTION, "parseFloat(3.e+1)", 30, parseFloat(3.e+1) ); + array[item++] = new TestCase( SECTION, "parseFloat(-3.e+1)", -30, parseFloat(-3.e+1) ); + + array[item++] = new TestCase( SECTION, "parseFloat(3.e-1)", .30, parseFloat(3.e-1) ); + array[item++] = new TestCase( SECTION, "parseFloat(-3.e-1)", -.30, parseFloat(-3.e-1) ); + + + array[item++] = new TestCase( SECTION, "parseFloat(3.E1)", 30, parseFloat(3.E1) ); + array[item++] = new TestCase( SECTION, "parseFloat(-3.E1)", -30, parseFloat(-3.E1) ); + + array[item++] = new TestCase( SECTION, "parseFloat(3.E+1)", 30, parseFloat(3.E+1) ); + array[item++] = new TestCase( SECTION, "parseFloat(-3.E+1)", -30, parseFloat(-3.E+1) ); + + array[item++] = new TestCase( SECTION, "parseFloat(3.E-1)", .30, parseFloat(3.E-1) ); + array[item++] = new TestCase( SECTION, "parseFloat(-3.E-1)", -.30, parseFloat(-3.E-1) ); + + // StrDecimalLiteral::: .DecimalDigits ExponentPart opt + + array[item++] = new TestCase( SECTION, "parseFloat(.00001)", 0.00001, parseFloat(.00001) ); + array[item++] = new TestCase( SECTION, "parseFloat(-0.0001)", -0.00001, parseFloat(-.00001) ); + + array[item++] = new TestCase( SECTION, "parseFloat(.01e2)", 1, parseFloat(.01e2) ); + array[item++] = new TestCase( SECTION, "parseFloat(-.01e2)", -1, parseFloat(-.01e2) ); + + array[item++] = new TestCase( SECTION, "parseFloat(.01e+2)", 1, parseFloat(.01e+2) ); + array[item++] = new TestCase( SECTION, "parseFloat(-.01e+2)", -1, parseFloat(-.01e+2) ); + + array[item++] = new TestCase( SECTION, "parseFloat(.01e-2)", 0.0001, parseFloat(.01e-2) ); + array[item++] = new TestCase( SECTION, "parseFloat(-.01e-2)", -0.0001, parseFloat(-.01e-2) ); + + // StrDecimalLiteral::: DecimalDigits ExponentPart opt + + array[item++] = new TestCase( SECTION, "parseFloat(1234e5)", 123400000, parseFloat(1234e5) ); + array[item++] = new TestCase( SECTION, "parseFloat(-1234e5)", -123400000, parseFloat(-1234e5) ); + + array[item++] = new TestCase( SECTION, "parseFloat(1234e+5)", 123400000, parseFloat(1234e+5) ); + array[item++] = new TestCase( SECTION, "parseFloat(-1234e+5)", -123400000, parseFloat(-1234e+5) ); + + array[item++] = new TestCase( SECTION, "parseFloat(1234e-5)", 0.01234, parseFloat(1234e-5) ); + array[item++] = new TestCase( SECTION, "parseFloat(-1234e-5)", -0.01234, parseFloat(-1234e-5) ); + + // hex cases should all return 0 (0 is the longest string that satisfies a StringDecimalLiteral) + + array[item++] = new TestCase( SECTION, "parseFloat('0x0')", 0, parseFloat("0x0")); + array[item++] = new TestCase( SECTION, "parseFloat('0x1')", 0, parseFloat("0x1")); + array[item++] = new TestCase( SECTION, "parseFloat('0x2')", 0, parseFloat("0x2")); + array[item++] = new TestCase( SECTION, "parseFloat('0x3')", 0, parseFloat("0x3")); + array[item++] = new TestCase( SECTION, "parseFloat('0x4')", 0, parseFloat("0x4")); + array[item++] = new TestCase( SECTION, "parseFloat('0x5')", 0, parseFloat("0x5")); + array[item++] = new TestCase( SECTION, "parseFloat('0x6')", 0, parseFloat("0x6")); + array[item++] = new TestCase( SECTION, "parseFloat('0x7')", 0, parseFloat("0x7")); + array[item++] = new TestCase( SECTION, "parseFloat('0x8')", 0, parseFloat("0x8")); + array[item++] = new TestCase( SECTION, "parseFloat('0x9')", 0, parseFloat("0x9")); + array[item++] = new TestCase( SECTION, "parseFloat('0xa')", 0, parseFloat("0xa")); + array[item++] = new TestCase( SECTION, "parseFloat('0xb')", 0, parseFloat("0xb")); + array[item++] = new TestCase( SECTION, "parseFloat('0xc')", 0, parseFloat("0xc")); + array[item++] = new TestCase( SECTION, "parseFloat('0xd')", 0, parseFloat("0xd")); + array[item++] = new TestCase( SECTION, "parseFloat('0xe')", 0, parseFloat("0xe")); + array[item++] = new TestCase( SECTION, "parseFloat('0xf')", 0, parseFloat("0xf")); + array[item++] = new TestCase( SECTION, "parseFloat('0xA')", 0, parseFloat("0xA")); + array[item++] = new TestCase( SECTION, "parseFloat('0xB')", 0, parseFloat("0xB")); + array[item++] = new TestCase( SECTION, "parseFloat('0xC')", 0, parseFloat("0xC")); + array[item++] = new TestCase( SECTION, "parseFloat('0xD')", 0, parseFloat("0xD")); + array[item++] = new TestCase( SECTION, "parseFloat('0xE')", 0, parseFloat("0xE")); + array[item++] = new TestCase( SECTION, "parseFloat('0xF')", 0, parseFloat("0xF")); + + array[item++] = new TestCase( SECTION, "parseFloat('0X0')", 0, parseFloat("0X0")); + array[item++] = new TestCase( SECTION, "parseFloat('0X1')", 0, parseFloat("0X1")); + array[item++] = new TestCase( SECTION, "parseFloat('0X2')", 0, parseFloat("0X2")); + array[item++] = new TestCase( SECTION, "parseFloat('0X3')", 0, parseFloat("0X3")); + array[item++] = new TestCase( SECTION, "parseFloat('0X4')", 0, parseFloat("0X4")); + array[item++] = new TestCase( SECTION, "parseFloat('0X5')", 0, parseFloat("0X5")); + array[item++] = new TestCase( SECTION, "parseFloat('0X6')", 0, parseFloat("0X6")); + array[item++] = new TestCase( SECTION, "parseFloat('0X7')", 0, parseFloat("0X7")); + array[item++] = new TestCase( SECTION, "parseFloat('0X8')", 0, parseFloat("0X8")); + array[item++] = new TestCase( SECTION, "parseFloat('0X9')", 0, parseFloat("0X9")); + array[item++] = new TestCase( SECTION, "parseFloat('0Xa')", 0, parseFloat("0Xa")); + array[item++] = new TestCase( SECTION, "parseFloat('0Xb')", 0, parseFloat("0Xb")); + array[item++] = new TestCase( SECTION, "parseFloat('0Xc')", 0, parseFloat("0Xc")); + array[item++] = new TestCase( SECTION, "parseFloat('0Xd')", 0, parseFloat("0Xd")); + array[item++] = new TestCase( SECTION, "parseFloat('0Xe')", 0, parseFloat("0Xe")); + array[item++] = new TestCase( SECTION, "parseFloat('0Xf')", 0, parseFloat("0Xf")); + array[item++] = new TestCase( SECTION, "parseFloat('0XA')", 0, parseFloat("0XA")); + array[item++] = new TestCase( SECTION, "parseFloat('0XB')", 0, parseFloat("0XB")); + array[item++] = new TestCase( SECTION, "parseFloat('0XC')", 0, parseFloat("0XC")); + array[item++] = new TestCase( SECTION, "parseFloat('0XD')", 0, parseFloat("0XD")); + array[item++] = new TestCase( SECTION, "parseFloat('0XE')", 0, parseFloat("0XE")); + array[item++] = new TestCase( SECTION, "parseFloat('0XF')", 0, parseFloat("0XF")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0XF ')", 0, parseFloat(" 0XF ")); + + // hex literals should still succeed + + array[item++] = new TestCase( SECTION, "parseFloat(0x0)", 0, parseFloat(0x0)); + array[item++] = new TestCase( SECTION, "parseFloat(0x1)", 1, parseFloat(0x1)); + array[item++] = new TestCase( SECTION, "parseFloat(0x2)", 2, parseFloat(0x2)); + array[item++] = new TestCase( SECTION, "parseFloat(0x3)", 3, parseFloat(0x3)); + array[item++] = new TestCase( SECTION, "parseFloat(0x4)", 4, parseFloat(0x4)); + array[item++] = new TestCase( SECTION, "parseFloat(0x5)", 5, parseFloat(0x5)); + array[item++] = new TestCase( SECTION, "parseFloat(0x6)", 6, parseFloat(0x6)); + array[item++] = new TestCase( SECTION, "parseFloat(0x7)", 7, parseFloat(0x7)); + array[item++] = new TestCase( SECTION, "parseFloat(0x8)", 8, parseFloat(0x8)); + array[item++] = new TestCase( SECTION, "parseFloat(0x9)", 9, parseFloat(0x9)); + array[item++] = new TestCase( SECTION, "parseFloat(0xa)", 10, parseFloat(0xa)); + array[item++] = new TestCase( SECTION, "parseFloat(0xb)", 11, parseFloat(0xb)); + array[item++] = new TestCase( SECTION, "parseFloat(0xc)", 12, parseFloat(0xc)); + array[item++] = new TestCase( SECTION, "parseFloat(0xd)", 13, parseFloat(0xd)); + array[item++] = new TestCase( SECTION, "parseFloat(0xe)", 14, parseFloat(0xe)); + array[item++] = new TestCase( SECTION, "parseFloat(0xf)", 15, parseFloat(0xf)); + array[item++] = new TestCase( SECTION, "parseFloat(0xA)", 10, parseFloat(0xA)); + array[item++] = new TestCase( SECTION, "parseFloat(0xB)", 11, parseFloat(0xB)); + array[item++] = new TestCase( SECTION, "parseFloat(0xC)", 12, parseFloat(0xC)); + array[item++] = new TestCase( SECTION, "parseFloat(0xD)", 13, parseFloat(0xD)); + array[item++] = new TestCase( SECTION, "parseFloat(0xE)", 14, parseFloat(0xE)); + array[item++] = new TestCase( SECTION, "parseFloat(0xF)", 15, parseFloat(0xF)); + + array[item++] = new TestCase( SECTION, "parseFloat(0X0)", 0, parseFloat(0X0)); + array[item++] = new TestCase( SECTION, "parseFloat(0X1)", 1, parseFloat(0X1)); + array[item++] = new TestCase( SECTION, "parseFloat(0X2)", 2, parseFloat(0X2)); + array[item++] = new TestCase( SECTION, "parseFloat(0X3)", 3, parseFloat(0X3)); + array[item++] = new TestCase( SECTION, "parseFloat(0X4)", 4, parseFloat(0X4)); + array[item++] = new TestCase( SECTION, "parseFloat(0X5)", 5, parseFloat(0X5)); + array[item++] = new TestCase( SECTION, "parseFloat(0X6)", 6, parseFloat(0X6)); + array[item++] = new TestCase( SECTION, "parseFloat(0X7)", 7, parseFloat(0X7)); + array[item++] = new TestCase( SECTION, "parseFloat(0X8)", 8, parseFloat(0X8)); + array[item++] = new TestCase( SECTION, "parseFloat(0X9)", 9, parseFloat(0X9)); + array[item++] = new TestCase( SECTION, "parseFloat(0Xa)", 10, parseFloat(0Xa)); + array[item++] = new TestCase( SECTION, "parseFloat(0Xb)", 11, parseFloat(0Xb)); + array[item++] = new TestCase( SECTION, "parseFloat(0Xc)", 12, parseFloat(0Xc)); + array[item++] = new TestCase( SECTION, "parseFloat(0Xd)", 13, parseFloat(0Xd)); + array[item++] = new TestCase( SECTION, "parseFloat(0Xe)", 14, parseFloat(0Xe)); + array[item++] = new TestCase( SECTION, "parseFloat(0Xf)", 15, parseFloat(0Xf)); + array[item++] = new TestCase( SECTION, "parseFloat(0XA)", 10, parseFloat(0XA)); + array[item++] = new TestCase( SECTION, "parseFloat(0XB)", 11, parseFloat(0XB)); + array[item++] = new TestCase( SECTION, "parseFloat(0XC)", 12, parseFloat(0XC)); + array[item++] = new TestCase( SECTION, "parseFloat(0XD)", 13, parseFloat(0XD)); + array[item++] = new TestCase( SECTION, "parseFloat(0XE)", 14, parseFloat(0XE)); + array[item++] = new TestCase( SECTION, "parseFloat(0XF)", 15, parseFloat(0XF)); + + + // A StringNumericLiteral may not use octal notation + + array[item++] = new TestCase( SECTION, "parseFloat('00')", 0, parseFloat("00")); + array[item++] = new TestCase( SECTION, "parseFloat('01')", 1, parseFloat("01")); + array[item++] = new TestCase( SECTION, "parseFloat('02')", 2, parseFloat("02")); + array[item++] = new TestCase( SECTION, "parseFloat('03')", 3, parseFloat("03")); + array[item++] = new TestCase( SECTION, "parseFloat('04')", 4, parseFloat("04")); + array[item++] = new TestCase( SECTION, "parseFloat('05')", 5, parseFloat("05")); + array[item++] = new TestCase( SECTION, "parseFloat('06')", 6, parseFloat("06")); + array[item++] = new TestCase( SECTION, "parseFloat('07')", 7, parseFloat("07")); + array[item++] = new TestCase( SECTION, "parseFloat('010')", 10, parseFloat("010")); + array[item++] = new TestCase( SECTION, "parseFloat('011')", 11, parseFloat("011")); + + // A StringNumericLIteral may have any number of leading 0 digits + + array[item++] = new TestCase( SECTION, "parseFloat('001')", 1, parseFloat("001")); + array[item++] = new TestCase( SECTION, "parseFloat('0001')", 1, parseFloat("0001")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0001 ')", 1, parseFloat(" 0001 ")); + + // an octal numeric literal should be treated as an octal + + array[item++] = new TestCase( SECTION, "parseFloat(00)", 0, parseFloat(00)); + array[item++] = new TestCase( SECTION, "parseFloat(01)", 1, parseFloat(01)); + array[item++] = new TestCase( SECTION, "parseFloat(02)", 2, parseFloat(02)); + array[item++] = new TestCase( SECTION, "parseFloat(03)", 3, parseFloat(03)); + array[item++] = new TestCase( SECTION, "parseFloat(04)", 4, parseFloat(04)); + array[item++] = new TestCase( SECTION, "parseFloat(05)", 5, parseFloat(05)); + array[item++] = new TestCase( SECTION, "parseFloat(06)", 6, parseFloat(06)); + array[item++] = new TestCase( SECTION, "parseFloat(07)", 7, parseFloat(07)); + array[item++] = new TestCase( SECTION, "parseFloat(010)", 8, parseFloat(010)); + array[item++] = new TestCase( SECTION, "parseFloat(011)", 9, parseFloat(011)); + + // A StringNumericLIteral may have any number of leading 0 digits + + array[item++] = new TestCase( SECTION, "parseFloat(001)", 1, parseFloat(001)); + array[item++] = new TestCase( SECTION, "parseFloat(0001)", 1, parseFloat(0001)); + + // make sure it's reflexive + array[item++] = new TestCase( SECTION, "parseFloat(Math.PI)", Math.PI, parseFloat(Math.PI)); + array[item++] = new TestCase( SECTION, "parseFloat(Math.LN2)", Math.LN2, parseFloat(Math.LN2)); + array[item++] = new TestCase( SECTION, "parseFloat(Math.LN10)", Math.LN10, parseFloat(Math.LN10)); + array[item++] = new TestCase( SECTION, "parseFloat(Math.LOG2E)", Math.LOG2E, parseFloat(Math.LOG2E)); + array[item++] = new TestCase( SECTION, "parseFloat(Math.LOG10E)", Math.LOG10E, parseFloat(Math.LOG10E)); + array[item++] = new TestCase( SECTION, "parseFloat(Math.SQRT2)", Math.SQRT2, parseFloat(Math.SQRT2)); + array[item++] = new TestCase( SECTION, "parseFloat(Math.SQRT1_2)", Math.SQRT1_2, parseFloat(Math.SQRT1_2)); + + array[item++] = new TestCase( SECTION, "parseFloat(Math.PI+'')", Math.PI, parseFloat(Math.PI+'')); + array[item++] = new TestCase( SECTION, "parseFloat(Math.LN2+'')", Math.LN2, parseFloat(Math.LN2+'')); + array[item++] = new TestCase( SECTION, "parseFloat(Math.LN10+'')", Math.LN10, parseFloat(Math.LN10+'')); + array[item++] = new TestCase( SECTION, "parseFloat(Math.LOG2E+'')", Math.LOG2E, parseFloat(Math.LOG2E+'')); + array[item++] = new TestCase( SECTION, "parseFloat(Math.LOG10E+'')", Math.LOG10E, parseFloat(Math.LOG10E+'')); + array[item++] = new TestCase( SECTION, "parseFloat(Math.SQRT2+'')", Math.SQRT2, parseFloat(Math.SQRT2+'')); + array[item++] = new TestCase( SECTION, "parseFloat(Math.SQRT1_2+'')", Math.SQRT1_2, parseFloat(Math.SQRT1_2+'')); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.3-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.3-2.js new file mode 100644 index 00000000000..c3905c0520c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.3-2.js @@ -0,0 +1,295 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1.2.3-2.js + ECMA Section: 15.1.2.3 Function properties of the global object: + parseFloat( string ) + + Description: The parseFloat function produces a number value dictated + by the interpretation of the contents of the string + argument defined as a decimal literal. + + When the parseFloat function is called, the following + steps are taken: + + 1. Call ToString( string ). + 2. Remove leading whitespace Result(1). + 3. If neither Result(2) nor any prefix of Result(2) + satisfies the syntax of a StrDecimalLiteral, + return NaN. + 4. Compute the longest prefix of Result(2) which might + be Resusult(2) itself, that satisfies the syntax of + a StrDecimalLiteral + 5. Return the number value for the MV of Result(4). + + Note that parseFloate may interpret only a leading + portion of the string as a number value; it ignores any + characters that cannot be interpreted as part of the + notation of a decimal literal, and no indication is given + that such characters were ignored. + + StrDecimalLiteral:: + Infinity + DecimalDigits.DecimalDigits opt ExponentPart opt + .DecimalDigits ExponentPart opt + DecimalDigits ExponentPart opt + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.1.2.3-2"; + var VERSION = "ECMA_1"; + startTest(); + + var BUGNUMBER = "77391"; + + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " parseFloat(string)"); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "parseFloat(true)", Number.NaN, parseFloat(true) ); + array[item++] = new TestCase( SECTION, "parseFloat(false)", Number.NaN, parseFloat(false) ); + array[item++] = new TestCase( SECTION, "parseFloat('string')", Number.NaN, parseFloat("string") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' Infinity')", Number.POSITIVE_INFINITY, parseFloat("Infinity") ); +// array[item++] = new TestCase( SECTION, "parseFloat(Infinity)", Number.POSITIVE_INFINITY, parseFloat(Infinity) ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 0')", 0, parseFloat(" 0") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -0')", -0, parseFloat(" -0") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +0')", 0, parseFloat(" +0") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 1')", 1, parseFloat(" 1") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -1')", -1, parseFloat(" -1") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +1')", 1, parseFloat(" +1") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 2')", 2, parseFloat(" 2") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -2')", -2, parseFloat(" -2") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +2')", 2, parseFloat(" +2") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 3')", 3, parseFloat(" 3") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -3')", -3, parseFloat(" -3") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +3')", 3, parseFloat(" +3") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 4')", 4, parseFloat(" 4") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -4')", -4, parseFloat(" -4") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +4')", 4, parseFloat(" +4") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 5')", 5, parseFloat(" 5") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -5')", -5, parseFloat(" -5") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +5')", 5, parseFloat(" +5") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 6')", 6, parseFloat(" 6") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -6')", -6, parseFloat(" -6") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +6')", 6, parseFloat(" +6") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 7')", 7, parseFloat(" 7") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -7')", -7, parseFloat(" -7") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +7')", 7, parseFloat(" +7") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 8')", 8, parseFloat(" 8") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -8')", -8, parseFloat(" -8") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +8')", 8, parseFloat(" +8") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 9')", 9, parseFloat(" 9") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -9')", -9, parseFloat(" -9") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +9')", 9, parseFloat(" +9") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 3.14159')", 3.14159, parseFloat(" 3.14159") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -3.14159')", -3.14159, parseFloat(" -3.14159") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +3.14159')", 3.14159, parseFloat(" +3.14159") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 3.')", 3, parseFloat(" 3.") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -3.')", -3, parseFloat(" -3.") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +3.')", 3, parseFloat(" +3.") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 3.e1')", 30, parseFloat(" 3.e1") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -3.e1')", -30, parseFloat(" -3.e1") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +3.e1')", 30, parseFloat(" +3.e1") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 3.e+1')", 30, parseFloat(" 3.e+1") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -3.e+1')", -30, parseFloat(" -3.e+1") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +3.e+1')", 30, parseFloat(" +3.e+1") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 3.e-1')", .30, parseFloat(" 3.e-1") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -3.e-1')", -.30, parseFloat(" -3.e-1") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +3.e-1')", .30, parseFloat(" +3.e-1") ); + + // StrDecimalLiteral::: .DecimalDigits ExponentPart opt + + array[item++] = new TestCase( SECTION, "parseFloat(' .00001')", 0.00001, parseFloat(" .00001") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +.00001')", 0.00001, parseFloat(" +.00001") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -0.0001')", -0.00001, parseFloat(" -.00001") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' .01e2')", 1, parseFloat(" .01e2") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +.01e2')", 1, parseFloat(" +.01e2") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -.01e2')", -1, parseFloat(" -.01e2") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' .01e+2')", 1, parseFloat(" .01e+2") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +.01e+2')", 1, parseFloat(" +.01e+2") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -.01e+2')", -1, parseFloat(" -.01e+2") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' .01e-2')", 0.0001, parseFloat(" .01e-2") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +.01e-2')", 0.0001, parseFloat(" +.01e-2") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -.01e-2')", -0.0001, parseFloat(" -.01e-2") ); + + // StrDecimalLiteral::: DecimalDigits ExponentPart opt + + array[item++] = new TestCase( SECTION, "parseFloat(' 1234e5')", 123400000, parseFloat(" 1234e5") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +1234e5')", 123400000, parseFloat(" +1234e5") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -1234e5')", -123400000, parseFloat(" -1234e5") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 1234e+5')", 123400000, parseFloat(" 1234e+5") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +1234e+5')", 123400000, parseFloat(" +1234e+5") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -1234e+5')", -123400000, parseFloat(" -1234e+5") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 1234e-5')", 0.01234, parseFloat(" 1234e-5") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +1234e-5')", 0.01234, parseFloat(" +1234e-5") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -1234e-5')", -0.01234, parseFloat(" -1234e-5") ); + + + array[item++] = new TestCase( SECTION, "parseFloat(' .01E2')", 1, parseFloat(" .01E2") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +.01E2')", 1, parseFloat(" +.01E2") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -.01E2')", -1, parseFloat(" -.01E2") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' .01E+2')", 1, parseFloat(" .01E+2") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +.01E+2')", 1, parseFloat(" +.01E+2") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -.01E+2')", -1, parseFloat(" -.01E+2") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' .01E-2')", 0.0001, parseFloat(" .01E-2") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +.01E-2')", 0.0001, parseFloat(" +.01E-2") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -.01E-2')", -0.0001, parseFloat(" -.01E-2") ); + + // StrDecimalLiteral::: DecimalDigits ExponentPart opt + array[item++] = new TestCase( SECTION, "parseFloat(' 1234E5')", 123400000, parseFloat(" 1234E5") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +1234E5')", 123400000, parseFloat(" +1234E5") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -1234E5')", -123400000, parseFloat(" -1234E5") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 1234E+5')", 123400000, parseFloat(" 1234E+5") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +1234E+5')", 123400000, parseFloat(" +1234E+5") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -1234E+5')", -123400000, parseFloat(" -1234E+5") ); + + array[item++] = new TestCase( SECTION, "parseFloat(' 1234E-5')", 0.01234, parseFloat(" 1234E-5") ); + array[item++] = new TestCase( SECTION, "parseFloat(' +1234E-5')", 0.01234, parseFloat(" +1234E-5") ); + array[item++] = new TestCase( SECTION, "parseFloat(' -1234E-5')", -0.01234, parseFloat(" -1234E-5") ); + + + // hex cases should all return NaN + + array[item++] = new TestCase( SECTION, "parseFloat(' 0x0')", 0, parseFloat(" 0x0")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0x1')", 0, parseFloat(" 0x1")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0x2')", 0, parseFloat(" 0x2")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0x3')", 0, parseFloat(" 0x3")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0x4')", 0, parseFloat(" 0x4")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0x5')", 0, parseFloat(" 0x5")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0x6')", 0, parseFloat(" 0x6")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0x7')", 0, parseFloat(" 0x7")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0x8')", 0, parseFloat(" 0x8")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0x9')", 0, parseFloat(" 0x9")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0xa')", 0, parseFloat(" 0xa")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0xb')", 0, parseFloat(" 0xb")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0xc')", 0, parseFloat(" 0xc")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0xd')", 0, parseFloat(" 0xd")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0xe')", 0, parseFloat(" 0xe")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0xf')", 0, parseFloat(" 0xf")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0xA')", 0, parseFloat(" 0xA")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0xB')", 0, parseFloat(" 0xB")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0xC')", 0, parseFloat(" 0xC")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0xD')", 0, parseFloat(" 0xD")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0xE')", 0, parseFloat(" 0xE")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0xF')", 0, parseFloat(" 0xF")); + + array[item++] = new TestCase( SECTION, "parseFloat(' 0X0')", 0, parseFloat(" 0X0")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0X1')", 0, parseFloat(" 0X1")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0X2')", 0, parseFloat(" 0X2")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0X3')", 0, parseFloat(" 0X3")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0X4')", 0, parseFloat(" 0X4")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0X5')", 0, parseFloat(" 0X5")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0X6')", 0, parseFloat(" 0X6")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0X7')", 0, parseFloat(" 0X7")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0X8')", 0, parseFloat(" 0X8")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0X9')", 0, parseFloat(" 0X9")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0Xa')", 0, parseFloat(" 0Xa")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0Xb')", 0, parseFloat(" 0Xb")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0Xc')", 0, parseFloat(" 0Xc")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0Xd')", 0, parseFloat(" 0Xd")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0Xe')", 0, parseFloat(" 0Xe")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0Xf')", 0, parseFloat(" 0Xf")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0XA')", 0, parseFloat(" 0XA")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0XB')", 0, parseFloat(" 0XB")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0XC')", 0, parseFloat(" 0XC")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0XD')", 0, parseFloat(" 0XD")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0XE')", 0, parseFloat(" 0XE")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0XF')", 0, parseFloat(" 0XF")); + + // A StringNumericLiteral may not use octal notation + + array[item++] = new TestCase( SECTION, "parseFloat(' 00')", 0, parseFloat(" 00")); + array[item++] = new TestCase( SECTION, "parseFloat(' 01')", 1, parseFloat(" 01")); + array[item++] = new TestCase( SECTION, "parseFloat(' 02')", 2, parseFloat(" 02")); + array[item++] = new TestCase( SECTION, "parseFloat(' 03')", 3, parseFloat(" 03")); + array[item++] = new TestCase( SECTION, "parseFloat(' 04')", 4, parseFloat(" 04")); + array[item++] = new TestCase( SECTION, "parseFloat(' 05')", 5, parseFloat(" 05")); + array[item++] = new TestCase( SECTION, "parseFloat(' 06')", 6, parseFloat(" 06")); + array[item++] = new TestCase( SECTION, "parseFloat(' 07')", 7, parseFloat(" 07")); + array[item++] = new TestCase( SECTION, "parseFloat(' 010')", 10, parseFloat(" 010")); + array[item++] = new TestCase( SECTION, "parseFloat(' 011')", 11, parseFloat(" 011")); + + // A StringNumericLIteral may have any number of leading 0 digits + + array[item++] = new TestCase( SECTION, "parseFloat(' 001')", 1, parseFloat(" 001")); + array[item++] = new TestCase( SECTION, "parseFloat(' 0001')", 1, parseFloat(" 0001")); + + // A StringNumericLIteral may have any number of leading 0 digits + + array[item++] = new TestCase( SECTION, "parseFloat(001)", 1, parseFloat(001)); + array[item++] = new TestCase( SECTION, "parseFloat(0001)", 1, parseFloat(0001)); + + // make sure it' s reflexive + array[item++] = new TestCase( SECTION, "parseFloat( ' ' +Math.PI+' ')", Math.PI, parseFloat( ' ' +Math.PI+' ')); + array[item++] = new TestCase( SECTION, "parseFloat( ' ' +Math.LN2+' ')", Math.LN2, parseFloat( ' ' +Math.LN2+' ')); + array[item++] = new TestCase( SECTION, "parseFloat( ' ' +Math.LN10+' ')", Math.LN10, parseFloat( ' ' +Math.LN10+' ')); + array[item++] = new TestCase( SECTION, "parseFloat( ' ' +Math.LOG2E+' ')", Math.LOG2E, parseFloat( ' ' +Math.LOG2E+' ')); + array[item++] = new TestCase( SECTION, "parseFloat( ' ' +Math.LOG10E+' ')", Math.LOG10E, parseFloat( ' ' +Math.LOG10E+' ')); + array[item++] = new TestCase( SECTION, "parseFloat( ' ' +Math.SQRT2+' ')", Math.SQRT2, parseFloat( ' ' +Math.SQRT2+' ')); + array[item++] = new TestCase( SECTION, "parseFloat( ' ' +Math.SQRT1_2+' ')", Math.SQRT1_2, parseFloat( ' ' +Math.SQRT1_2+' ')); + + + return ( array ); +} +function test( array ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.4.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.4.js new file mode 100644 index 00000000000..386f3a6cdec --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.4.js @@ -0,0 +1,206 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1.2.4.js + ECMA Section: 15.1.2.4 Function properties of the global object + escape( string ) + + Description: + The escape function computes a new version of a string value in which + certain characters have been replaced by a hexadecimal escape sequence. + The result thus contains no special characters that might have special + meaning within a URL. + + For characters whose Unicode encoding is 0xFF or less, a two-digit + escape sequence of the form %xx is used in accordance with RFC1738. + For characters whose Unicode encoding is greater than 0xFF, a four- + digit escape sequence of the form %uxxxx is used. + + When the escape function is called with one argument string, the + following steps are taken: + + 1. Call ToString(string). + 2. Compute the number of characters in Result(1). + 3. Let R be the empty string. + 4. Let k be 0. + 5. If k equals Result(2), return R. + 6. Get the character at position k within Result(1). + 7. If Result(6) is one of the 69 nonblank ASCII characters + ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz + 0123456789 @*_+-./, go to step 14. + 8. Compute the 16-bit unsigned integer that is the Unicode character + encoding of Result(6). + 9. If Result(8), is less than 256, go to step 12. + 10. Let S be a string containing six characters "%uwxyz" where wxyz are + four hexadecimal digits encoding the value of Result(8). + 11. Go to step 15. + 12. Let S be a string containing three characters "%xy" where xy are two + hexadecimal digits encoding the value of Result(8). + 13. Go to step 15. + 14. Let S be a string containing the single character Result(6). + 15. Let R be a new string value computed by concatenating the previous value + of R and S. + 16. Increase k by 1. + 17. Go to step 5. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.1.2.4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "escape(string)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "escape.length", 1, escape.length ); + array[item++] = new TestCase( SECTION, "escape.length = null; escape.length", 1, eval("escape.length = null; escape.length") ); + array[item++] = new TestCase( SECTION, "delete escape.length", false, delete escape.length ); + array[item++] = new TestCase( SECTION, "delete escape.length; escape.length", 1, eval("delete escape.length; escape.length") ); + array[item++] = new TestCase( SECTION, "var MYPROPS=''; for ( var p in escape ) { MYPROPS+= p}; MYPROPS", "", eval("var MYPROPS=''; for ( var p in escape ) { MYPROPS+= p}; MYPROPS") ); + + array[item++] = new TestCase( SECTION, "escape()", "undefined", escape() ); + array[item++] = new TestCase( SECTION, "escape('')", "", escape('') ); + array[item++] = new TestCase( SECTION, "escape( null )", "null", escape(null) ); + array[item++] = new TestCase( SECTION, "escape( void 0 )", "undefined", escape(void 0) ); + array[item++] = new TestCase( SECTION, "escape( true )", "true", escape( true ) ); + array[item++] = new TestCase( SECTION, "escape( false )", "false", escape( false ) ); + + array[item++] = new TestCase( SECTION, "escape( new Boolean(true) )", "true", escape(new Boolean(true)) ); + array[item++] = new TestCase( SECTION, "escape( new Boolean(false) )", "false", escape(new Boolean(false)) ); + + array[item++] = new TestCase( SECTION, "escape( Number.NaN )", "NaN", escape(Number.NaN) ); + array[item++] = new TestCase( SECTION, "escape( -0 )", "0", escape( -0 ) ); + array[item++] = new TestCase( SECTION, "escape( 'Infinity' )", "Infinity", escape( "Infinity" ) ); + array[item++] = new TestCase( SECTION, "escape( Number.POSITIVE_INFINITY )", "Infinity", escape( Number.POSITIVE_INFINITY ) ); + array[item++] = new TestCase( SECTION, "escape( Number.NEGATIVE_INFINITY )", "-Infinity", escape( Number.NEGATIVE_INFINITY ) ); + + var ASCII_TEST_STRING = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@*_+-./"; + + array[item++] = new TestCase( SECTION, "escape( " +ASCII_TEST_STRING+" )", ASCII_TEST_STRING, escape( ASCII_TEST_STRING ) ); + + // ASCII value less than + + for ( var CHARCODE = 0; CHARCODE < 32; CHARCODE++ ) { + array[item++] = new TestCase( SECTION, + "escape(String.fromCharCode("+CHARCODE+"))", + "%"+ToHexString(CHARCODE), + escape(String.fromCharCode(CHARCODE)) ); + } + for ( var CHARCODE = 128; CHARCODE < 256; CHARCODE++ ) { + array[item++] = new TestCase( SECTION, + "escape(String.fromCharCode("+CHARCODE+"))", + "%"+ToHexString(CHARCODE), + escape(String.fromCharCode(CHARCODE)) ); + } + + for ( var CHARCODE = 256; CHARCODE < 1024; CHARCODE++ ) { + array[item++] = new TestCase( SECTION, + "escape(String.fromCharCode("+CHARCODE+"))", + "%u"+ ToUnicodeString(CHARCODE), + escape(String.fromCharCode(CHARCODE)) ); + } + for ( var CHARCODE = 65500; CHARCODE < 65536; CHARCODE++ ) { + array[item++] = new TestCase( SECTION, + "escape(String.fromCharCode("+CHARCODE+"))", + "%u"+ ToUnicodeString(CHARCODE), + escape(String.fromCharCode(CHARCODE)) ); + } + + return ( array ); +} + +function ToUnicodeString( n ) { + var string = ToHexString(n); + + for ( var PAD = (4 - string.length ); PAD > 0; PAD-- ) { + string = "0" + string; + } + + return string; +} +function ToHexString( n ) { + var hex = new Array(); + + for ( var mag = 1; Math.pow(16,mag) <= n ; mag++ ) { + ; + } + + for ( index = 0, mag -= 1; mag > 0; index++, mag-- ) { + hex[index] = Math.floor( n / Math.pow(16,mag) ); + n -= Math.pow(16,mag) * Math.floor( n/Math.pow(16,mag) ); + } + + hex[hex.length] = n % 16; + + var string =""; + + for ( var index = 0 ; index < hex.length ; index++ ) { + switch ( hex[index] ) { + case 10: + string += "A"; + break; + case 11: + string += "B"; + break; + case 12: + string += "C"; + break; + case 13: + string += "D"; + break; + case 14: + string += "E"; + break; + case 15: + string += "F"; + break; + default: + string += hex[index]; + } + } + + if ( string.length == 1 ) { + string = "0" + string; + } + return string; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.5-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.5-1.js new file mode 100644 index 00000000000..da1a6f9fb6b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.5-1.js @@ -0,0 +1,207 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1.2.5-1.js + ECMA Section: 15.1.2.5 Function properties of the global object + unescape( string ) + + Description: + The unescape function computes a new version of a string value in which + each escape sequences of the sort that might be introduced by the escape + function is replaced with the character that it represents. + + When the unescape function is called with one argument string, the + following steps are taken: + + 1. Call ToString(string). + 2. Compute the number of characters in Result(1). + 3. Let R be the empty string. + 4. Let k be 0. + 5. If k equals Result(2), return R. + 6. Let c be the character at position k within Result(1). + 7. If c is not %, go to step 18. + 8. If k is greater than Result(2)-6, go to step 14. + 9. If the character at position k+1 within result(1) is not u, go to step + 14. + 10. If the four characters at positions k+2, k+3, k+4, and k+5 within + Result(1) are not all hexadecimal digits, go to step 14. + 11. Let c be the character whose Unicode encoding is the integer represented + by the four hexadecimal digits at positions k+2, k+3, k+4, and k+5 + within Result(1). + 12. Increase k by 5. + 13. Go to step 18. + 14. If k is greater than Result(2)-3, go to step 18. + 15. If the two characters at positions k+1 and k+2 within Result(1) are not + both hexadecimal digits, go to step 18. + 16. Let c be the character whose Unicode encoding is the integer represented + by two zeroes plus the two hexadecimal digits at positions k+1 and k+2 + within Result(1). + 17. Increase k by 2. + 18. Let R be a new string value computed by concatenating the previous value + of R and c. + 19. Increase k by 1. + 20. Go to step 5. + Author: christine@netscape.com + Date: 28 october 1997 +*/ + + var SECTION = "15.1.2.5-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "unescape(string)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "unescape.length", 1, unescape.length ); + array[item++] = new TestCase( SECTION, "unescape.length = null; unescape.length", 1, eval("unescape.length=null; unescape.length") ); + array[item++] = new TestCase( SECTION, "delete unescape.length", false, delete unescape.length ); + array[item++] = new TestCase( SECTION, "delete unescape.length; unescape.length", 1, eval("delete unescape.length; unescape.length") ); + array[item++] = new TestCase( SECTION, "var MYPROPS=''; for ( var p in unescape ) { MYPROPS+= p }; MYPROPS", "", eval("var MYPROPS=''; for ( var p in unescape ) { MYPROPS+= p }; MYPROPS") ); + + array[item++] = new TestCase( SECTION, "unescape()", "undefined", unescape() ); + array[item++] = new TestCase( SECTION, "unescape('')", "", unescape('') ); + array[item++] = new TestCase( SECTION, "unescape( null )", "null", unescape(null) ); + array[item++] = new TestCase( SECTION, "unescape( void 0 )", "undefined", unescape(void 0) ); + array[item++] = new TestCase( SECTION, "unescape( true )", "true", unescape( true ) ); + array[item++] = new TestCase( SECTION, "unescape( false )", "false", unescape( false ) ); + + array[item++] = new TestCase( SECTION, "unescape( new Boolean(true) )", "true", unescape(new Boolean(true)) ); + array[item++] = new TestCase( SECTION, "unescape( new Boolean(false) )", "false", unescape(new Boolean(false)) ); + + array[item++] = new TestCase( SECTION, "unescape( Number.NaN )", "NaN", unescape(Number.NaN) ); + array[item++] = new TestCase( SECTION, "unescape( -0 )", "0", unescape( -0 ) ); + array[item++] = new TestCase( SECTION, "unescape( 'Infinity' )", "Infinity", unescape( "Infinity" ) ); + array[item++] = new TestCase( SECTION, "unescape( Number.POSITIVE_INFINITY )", "Infinity", unescape( Number.POSITIVE_INFINITY ) ); + array[item++] = new TestCase( SECTION, "unescape( Number.NEGATIVE_INFINITY )", "-Infinity", unescape( Number.NEGATIVE_INFINITY ) ); + + var ASCII_TEST_STRING = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@*_+-./"; + + array[item++] = new TestCase( SECTION, "unescape( " +ASCII_TEST_STRING+" )", ASCII_TEST_STRING, unescape( ASCII_TEST_STRING ) ); + + // escaped chars with ascii values less than 256 + + for ( var CHARCODE = 0; CHARCODE < 256; CHARCODE++ ) { + array[item++] = new TestCase( SECTION, + "unescape( %"+ ToHexString(CHARCODE)+" )", + String.fromCharCode(CHARCODE), + unescape( "%" + ToHexString(CHARCODE) ) ); + } + + // unicode chars represented by two hex digits + for ( var CHARCODE = 0; CHARCODE < 256; CHARCODE++ ) { + array[item++] = new TestCase( SECTION, + "unescape( %u"+ ToHexString(CHARCODE)+" )", + "%u"+ToHexString(CHARCODE), + unescape( "%u" + ToHexString(CHARCODE) ) ); + } +/* + for ( var CHARCODE = 0; CHARCODE < 256; CHARCODE++ ) { + array[item++] = new TestCase( SECTION, + "unescape( %u"+ ToUnicodeString(CHARCODE)+" )", + String.fromCharCode(CHARCODE), + unescape( "%u" + ToUnicodeString(CHARCODE) ) ); + } + for ( var CHARCODE = 256; CHARCODE < 65536; CHARCODE+= 333 ) { + array[item++] = new TestCase( SECTION, + "unescape( %u"+ ToUnicodeString(CHARCODE)+" )", + String.fromCharCode(CHARCODE), + unescape( "%u" + ToUnicodeString(CHARCODE) ) ); + } +*/ + return ( array ); +} + +function ToUnicodeString( n ) { + var string = ToHexString(n); + + for ( var PAD = (4 - string.length ); PAD > 0; PAD-- ) { + string = "0" + string; + } + + return string; +} +function ToHexString( n ) { + var hex = new Array(); + + for ( var mag = 1; Math.pow(16,mag) <= n ; mag++ ) { + ; + } + + for ( index = 0, mag -= 1; mag > 0; index++, mag-- ) { + hex[index] = Math.floor( n / Math.pow(16,mag) ); + n -= Math.pow(16,mag) * Math.floor( n/Math.pow(16,mag) ); + } + + hex[hex.length] = n % 16; + + var string =""; + + for ( var index = 0 ; index < hex.length ; index++ ) { + switch ( hex[index] ) { + case 10: + string += "A"; + break; + case 11: + string += "B"; + break; + case 12: + string += "C"; + break; + case 13: + string += "D"; + break; + case 14: + string += "E"; + break; + case 15: + string += "F"; + break; + default: + string += hex[index]; + } + } + + if ( string.length == 1 ) { + string = "0" + string; + } + return string; +} +function test( array ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.5-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.5-2.js new file mode 100644 index 00000000000..d8fc2535cf3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.5-2.js @@ -0,0 +1,184 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1.2.5-2.js + ECMA Section: 15.1.2.5 Function properties of the global object + unescape( string ) + Description: + + This tests the cases where there are fewer than 4 characters following "%u", + or fewer than 2 characters following "%" or "%u". + + The unescape function computes a new version of a string value in which + each escape sequences of the sort that might be introduced by the escape + function is replaced with the character that it represents. + + When the unescape function is called with one argument string, the + following steps are taken: + + 1. Call ToString(string). + 2. Compute the number of characters in Result(1). + 3. Let R be the empty string. + 4. Let k be 0. + 5. If k equals Result(2), return R. + 6. Let c be the character at position k within Result(1). + 7. If c is not %, go to step 18. + 8. If k is greater than Result(2)-6, go to step 14. + 9. If the character at position k+1 within result(1) is not u, go to step + 14. + 10. If the four characters at positions k+2, k+3, k+4, and k+5 within + Result(1) are not all hexadecimal digits, go to step 14. + 11. Let c be the character whose Unicode encoding is the integer represented + by the four hexadecimal digits at positions k+2, k+3, k+4, and k+5 + within Result(1). + 12. Increase k by 5. + 13. Go to step 18. + 14. If k is greater than Result(2)-3, go to step 18. + 15. If the two characters at positions k+1 and k+2 within Result(1) are not + both hexadecimal digits, go to step 18. + 16. Let c be the character whose Unicode encoding is the integer represented + by two zeroes plus the two hexadecimal digits at positions k+1 and k+2 + within Result(1). + 17. Increase k by 2. + 18. Let R be a new string value computed by concatenating the previous value + of R and c. + 19. Increase k by 1. + 20. Go to step 5. + Author: christine@netscape.com + Date: 28 october 1997 +*/ + + var SECTION = "15.1.2.5-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "unescape(string)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // since there is only one character following "%", no conversion should occur. + + for ( var CHARCODE = 0; CHARCODE < 256; CHARCODE += 16 ) { + array[item++] = new TestCase( SECTION, + "unescape( %"+ (ToHexString(CHARCODE)).substring(0,1) +" )", + "%"+(ToHexString(CHARCODE)).substring(0,1), + unescape( "%" + (ToHexString(CHARCODE)).substring(0,1) ) ); + } + + // since there is only one character following "%u", no conversion should occur. + + for ( var CHARCODE = 0; CHARCODE < 256; CHARCODE +=16 ) { + array[item++] = new TestCase( SECTION, + "unescape( %u"+ (ToHexString(CHARCODE)).substring(0,1) +" )", + "%u"+(ToHexString(CHARCODE)).substring(0,1), + unescape( "%u" + (ToHexString(CHARCODE)).substring(0,1) ) ); + } + + + // three char unicode string. no conversion should occur + + for ( var CHARCODE = 1024; CHARCODE < 65536; CHARCODE+= 1234 ) { + array[item++] = new TestCase + ( SECTION, + "unescape( %u"+ (ToUnicodeString(CHARCODE)).substring(0,3)+ " )", + + "%u"+(ToUnicodeString(CHARCODE)).substring(0,3), + unescape( "%u"+(ToUnicodeString(CHARCODE)).substring(0,3) ) + ); + } + + return ( array ); +} + +function ToUnicodeString( n ) { + var string = ToHexString(n); + + for ( var PAD = (4 - string.length ); PAD > 0; PAD-- ) { + string = "0" + string; + } + + return string; +} +function ToHexString( n ) { + var hex = new Array(); + + for ( var mag = 1; Math.pow(16,mag) <= n ; mag++ ) { + ; + } + + for ( index = 0, mag -= 1; mag > 0; index++, mag-- ) { + hex[index] = Math.floor( n / Math.pow(16,mag) ); + n -= Math.pow(16,mag) * Math.floor( n/Math.pow(16,mag) ); + } + + hex[hex.length] = n % 16; + + var string =""; + + for ( var index = 0 ; index < hex.length ; index++ ) { + switch ( hex[index] ) { + case 10: + string += "A"; + break; + case 11: + string += "B"; + break; + case 12: + string += "C"; + break; + case 13: + string += "D"; + break; + case 14: + string += "E"; + break; + case 15: + string += "F"; + break; + default: + string += hex[index]; + } + } + + if ( string.length == 1 ) { + string = "0" + string; + } + return string; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.5-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.5-3.js new file mode 100644 index 00000000000..9fa83f31021 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.5-3.js @@ -0,0 +1,207 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1.2.5-3.js + ECMA Section: 15.1.2.5 Function properties of the global object + unescape( string ) + + Description: + This tests the cases where one of the four characters following "%u" is + not a hexidecimal character, or one of the two characters following "%" + or "%u" is not a hexidecimal character. + + The unescape function computes a new version of a string value in which + each escape sequences of the sort that might be introduced by the escape + function is replaced with the character that it represents. + + When the unescape function is called with one argument string, the + following steps are taken: + + 1. Call ToString(string). + 2. Compute the number of characters in Result(1). + 3. Let R be the empty string. + 4. Let k be 0. + 5. If k equals Result(2), return R. + 6. Let c be the character at position k within Result(1). + 7. If c is not %, go to step 18. + 8. If k is greater than Result(2)-6, go to step 14. + 9. If the character at position k+1 within result(1) is not u, go to step + 14. + 10. If the four characters at positions k+2, k+3, k+4, and k+5 within + Result(1) are not all hexadecimal digits, go to step 14. + 11. Let c be the character whose Unicode encoding is the integer represented + by the four hexadecimal digits at positions k+2, k+3, k+4, and k+5 + within Result(1). + 12. Increase k by 5. + 13. Go to step 18. + 14. If k is greater than Result(2)-3, go to step 18. + 15. If the two characters at positions k+1 and k+2 within Result(1) are not + both hexadecimal digits, go to step 18. + 16. Let c be the character whose Unicode encoding is the integer represented + by two zeroes plus the two hexadecimal digits at positions k+1 and k+2 + within Result(1). + 17. Increase k by 2. + 18. Let R be a new string value computed by concatenating the previous value + of R and c. + 19. Increase k by 1. + 20. Go to step 5. + Author: christine@netscape.com + Date: 28 october 1997 +*/ + + + var SECTION = "15.1.2.5-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "unescape(string)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + for ( var CHARCODE = 0, NONHEXCHARCODE = 0; CHARCODE < 256; CHARCODE++, NONHEXCHARCODE++ ) { + NONHEXCHARCODE = getNextNonHexCharCode( NONHEXCHARCODE ); + + array[item++] = new TestCase( SECTION, + "unescape( %"+ (ToHexString(CHARCODE)).substring(0,1) + + String.fromCharCode( NONHEXCHARCODE ) +" )" + + "[where last character is String.fromCharCode("+NONHEXCHARCODE+")]", + "%"+(ToHexString(CHARCODE)).substring(0,1)+ + String.fromCharCode( NONHEXCHARCODE ), + unescape( "%" + (ToHexString(CHARCODE)).substring(0,1)+ + String.fromCharCode( NONHEXCHARCODE ) ) ); + } + for ( var CHARCODE = 0, NONHEXCHARCODE = 0; CHARCODE < 256; CHARCODE++, NONHEXCHARCODE++ ) { + NONHEXCHARCODE = getNextNonHexCharCode( NONHEXCHARCODE ); + + array[item++] = new TestCase( SECTION, + "unescape( %u"+ (ToHexString(CHARCODE)).substring(0,1) + + String.fromCharCode( NONHEXCHARCODE ) +" )" + + "[where last character is String.fromCharCode("+NONHEXCHARCODE+")]", + "%u"+(ToHexString(CHARCODE)).substring(0,1)+ + String.fromCharCode( NONHEXCHARCODE ), + unescape( "%u" + (ToHexString(CHARCODE)).substring(0,1)+ + String.fromCharCode( NONHEXCHARCODE ) ) ); + } + + for ( var CHARCODE = 0, NONHEXCHARCODE = 0 ; CHARCODE < 65536; CHARCODE+= 54321, NONHEXCHARCODE++ ) { + NONHEXCHARCODE = getNextNonHexCharCode( NONHEXCHARCODE ); + + array[item++] = new TestCase( SECTION, + "unescape( %u"+ (ToUnicodeString(CHARCODE)).substring(0,3) + + String.fromCharCode( NONHEXCHARCODE ) +" )" + + "[where last character is String.fromCharCode("+NONHEXCHARCODE+")]", + + String.fromCharCode(eval("0x"+ (ToUnicodeString(CHARCODE)).substring(0,2))) + + (ToUnicodeString(CHARCODE)).substring(2,3) + + String.fromCharCode( NONHEXCHARCODE ), + + unescape( "%" + (ToUnicodeString(CHARCODE)).substring(0,3)+ + String.fromCharCode( NONHEXCHARCODE ) ) ); + } + + return ( array ); +} +function getNextNonHexCharCode( n ) { + for ( ; n < Math.pow(2,16); n++ ) { + if ( ( n == 43 || n == 45 || n == 46 || n == 47 || + (n >= 71 && n <= 90) || (n >= 103 && n <= 122) || + n == 64 || n == 95 ) ) { + break; + } else { + n = ( n > 122 ) ? 0 : n; + } + } + return n; +} +function ToUnicodeString( n ) { + var string = ToHexString(n); + + for ( var PAD = (4 - string.length ); PAD > 0; PAD-- ) { + string = "0" + string; + } + + return string; +} +function ToHexString( n ) { + var hex = new Array(); + + for ( var mag = 1; Math.pow(16,mag) <= n ; mag++ ) { + ; + } + + for ( index = 0, mag -= 1; mag > 0; index++, mag-- ) { + hex[index] = Math.floor( n / Math.pow(16,mag) ); + n -= Math.pow(16,mag) * Math.floor( n/Math.pow(16,mag) ); + } + + hex[hex.length] = n % 16; + + var string =""; + + for ( var index = 0 ; index < hex.length ; index++ ) { + switch ( hex[index] ) { + case 10: + string += "A"; + break; + case 11: + string += "B"; + break; + case 12: + string += "C"; + break; + case 13: + string += "D"; + break; + case 14: + string += "E"; + break; + case 15: + string += "F"; + break; + default: + string += hex[index]; + } + } + + if ( string.length == 1 ) { + string = "0" + string; + } + return string; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.6.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.6.js new file mode 100644 index 00000000000..053dab47ff6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.6.js @@ -0,0 +1,127 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1.2.6.js + ECMA Section: 15.1.2.6 isNaN( x ) + + Description: Applies ToNumber to its argument, then returns true if + the result isNaN and otherwise returns false. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.1.2.6"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "isNaN( x )"; + + var BUGNUMBER = "77391"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "isNaN.length", 1, isNaN.length ); + array[item++] = new TestCase( SECTION, "var MYPROPS=''; for ( var p in isNaN ) { MYPROPS+= p }; MYPROPS", "", eval("var MYPROPS=''; for ( var p in isNaN ) { MYPROPS+= p }; MYPROPS") ); + array[item++] = new TestCase( SECTION, "isNaN.length = null; isNaN.length", 1, eval("isNaN.length=null; isNaN.length") ); + array[item++] = new TestCase( SECTION, "delete isNaN.length", false, delete isNaN.length ); + array[item++] = new TestCase( SECTION, "delete isNaN.length; isNaN.length", 1, eval("delete isNaN.length; isNaN.length") ); + +// array[item++] = new TestCase( SECTION, "isNaN.__proto__", Function.prototype, isNaN.__proto__ ); + + array[item++] = new TestCase( SECTION, "isNaN()", true, isNaN() ); + array[item++] = new TestCase( SECTION, "isNaN( null )", false, isNaN(null) ); + array[item++] = new TestCase( SECTION, "isNaN( void 0 )", true, isNaN(void 0) ); + array[item++] = new TestCase( SECTION, "isNaN( true )", false, isNaN(true) ); + array[item++] = new TestCase( SECTION, "isNaN( false)", false, isNaN(false) ); + array[item++] = new TestCase( SECTION, "isNaN( ' ' )", false, isNaN( " " ) ); + + array[item++] = new TestCase( SECTION, "isNaN( 0 )", false, isNaN(0) ); + array[item++] = new TestCase( SECTION, "isNaN( 1 )", false, isNaN(1) ); + array[item++] = new TestCase( SECTION, "isNaN( 2 )", false, isNaN(2) ); + array[item++] = new TestCase( SECTION, "isNaN( 3 )", false, isNaN(3) ); + array[item++] = new TestCase( SECTION, "isNaN( 4 )", false, isNaN(4) ); + array[item++] = new TestCase( SECTION, "isNaN( 5 )", false, isNaN(5) ); + array[item++] = new TestCase( SECTION, "isNaN( 6 )", false, isNaN(6) ); + array[item++] = new TestCase( SECTION, "isNaN( 7 )", false, isNaN(7) ); + array[item++] = new TestCase( SECTION, "isNaN( 8 )", false, isNaN(8) ); + array[item++] = new TestCase( SECTION, "isNaN( 9 )", false, isNaN(9) ); + + array[item++] = new TestCase( SECTION, "isNaN( '0' )", false, isNaN('0') ); + array[item++] = new TestCase( SECTION, "isNaN( '1' )", false, isNaN('1') ); + array[item++] = new TestCase( SECTION, "isNaN( '2' )", false, isNaN('2') ); + array[item++] = new TestCase( SECTION, "isNaN( '3' )", false, isNaN('3') ); + array[item++] = new TestCase( SECTION, "isNaN( '4' )", false, isNaN('4') ); + array[item++] = new TestCase( SECTION, "isNaN( '5' )", false, isNaN('5') ); + array[item++] = new TestCase( SECTION, "isNaN( '6' )", false, isNaN('6') ); + array[item++] = new TestCase( SECTION, "isNaN( '7' )", false, isNaN('7') ); + array[item++] = new TestCase( SECTION, "isNaN( '8' )", false, isNaN('8') ); + array[item++] = new TestCase( SECTION, "isNaN( '9' )", false, isNaN('9') ); + + + array[item++] = new TestCase( SECTION, "isNaN( 0x0a )", false, isNaN( 0x0a ) ); + array[item++] = new TestCase( SECTION, "isNaN( 0xaa )", false, isNaN( 0xaa ) ); + array[item++] = new TestCase( SECTION, "isNaN( 0x0A )", false, isNaN( 0x0A ) ); + array[item++] = new TestCase( SECTION, "isNaN( 0xAA )", false, isNaN( 0xAA ) ); + + array[item++] = new TestCase( SECTION, "isNaN( '0x0a' )", false, isNaN( "0x0a" ) ); + array[item++] = new TestCase( SECTION, "isNaN( '0xaa' )", false, isNaN( "0xaa" ) ); + array[item++] = new TestCase( SECTION, "isNaN( '0x0A' )", false, isNaN( "0x0A" ) ); + array[item++] = new TestCase( SECTION, "isNaN( '0xAA' )", false, isNaN( "0xAA" ) ); + + array[item++] = new TestCase( SECTION, "isNaN( 077 )", false, isNaN( 077 ) ); + array[item++] = new TestCase( SECTION, "isNaN( '077' )", false, isNaN( "077" ) ); + + + array[item++] = new TestCase( SECTION, "isNaN( Number.NaN )", true, isNaN(Number.NaN) ); + array[item++] = new TestCase( SECTION, "isNaN( Number.POSITIVE_INFINITY )", false, isNaN(Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "isNaN( Number.NEGATIVE_INFINITY )", false, isNaN(Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "isNaN( Number.MAX_VALUE )", false, isNaN(Number.MAX_VALUE) ); + array[item++] = new TestCase( SECTION, "isNaN( Number.MIN_VALUE )", false, isNaN(Number.MIN_VALUE) ); + + array[item++] = new TestCase( SECTION, "isNaN( NaN )", true, isNaN(NaN) ); + array[item++] = new TestCase( SECTION, "isNaN( Infinity )", false, isNaN(Infinity) ); + + array[item++] = new TestCase( SECTION, "isNaN( 'Infinity' )", false, isNaN("Infinity") ); + array[item++] = new TestCase( SECTION, "isNaN( '-Infinity' )", false, isNaN("-Infinity") ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.7.js b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.7.js new file mode 100644 index 00000000000..df384fa5191 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.7.js @@ -0,0 +1,131 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.1.2.7.js + ECMA Section: 15.1.2.7 isFinite(number) + + Description: Applies ToNumber to its argument, then returns false if + the result is NaN, Infinity, or -Infinity, and otherwise + returns true. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.1.2.7"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "isFinite( x )"; + + var BUGNUMBER= "77391"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "isFinite.length", 1, isFinite.length ); + array[item++] = new TestCase( SECTION, "isFinite.length = null; isFinite.length", 1, eval("isFinite.length=null; isFinite.length") ); + array[item++] = new TestCase( SECTION, "delete isFinite.length", false, delete isFinite.length ); + array[item++] = new TestCase( SECTION, "delete isFinite.length; isFinite.length", 1, eval("delete isFinite.length; isFinite.length") ); + array[item++] = new TestCase( SECTION, "var MYPROPS=''; for ( p in isFinite ) { MYPROPS+= p }; MYPROPS", "", eval("var MYPROPS=''; for ( p in isFinite ) { MYPROPS += p }; MYPROPS") ); + + array[item++] = new TestCase( SECTION, "isFinite()", false, isFinite() ); + array[item++] = new TestCase( SECTION, "isFinite( null )", true, isFinite(null) ); + array[item++] = new TestCase( SECTION, "isFinite( void 0 )", false, isFinite(void 0) ); + array[item++] = new TestCase( SECTION, "isFinite( false )", true, isFinite(false) ); + array[item++] = new TestCase( SECTION, "isFinite( true)", true, isFinite(true) ); + array[item++] = new TestCase( SECTION, "isFinite( ' ' )", true, isFinite( " " ) ); + + array[item++] = new TestCase( SECTION, "isFinite( new Boolean(true) )", true, isFinite(new Boolean(true)) ); + array[item++] = new TestCase( SECTION, "isFinite( new Boolean(false) )", true, isFinite(new Boolean(false)) ); + + array[item++] = new TestCase( SECTION, "isFinite( 0 )", true, isFinite(0) ); + array[item++] = new TestCase( SECTION, "isFinite( 1 )", true, isFinite(1) ); + array[item++] = new TestCase( SECTION, "isFinite( 2 )", true, isFinite(2) ); + array[item++] = new TestCase( SECTION, "isFinite( 3 )", true, isFinite(3) ); + array[item++] = new TestCase( SECTION, "isFinite( 4 )", true, isFinite(4) ); + array[item++] = new TestCase( SECTION, "isFinite( 5 )", true, isFinite(5) ); + array[item++] = new TestCase( SECTION, "isFinite( 6 )", true, isFinite(6) ); + array[item++] = new TestCase( SECTION, "isFinite( 7 )", true, isFinite(7) ); + array[item++] = new TestCase( SECTION, "isFinite( 8 )", true, isFinite(8) ); + array[item++] = new TestCase( SECTION, "isFinite( 9 )", true, isFinite(9) ); + + array[item++] = new TestCase( SECTION, "isFinite( '0' )", true, isFinite('0') ); + array[item++] = new TestCase( SECTION, "isFinite( '1' )", true, isFinite('1') ); + array[item++] = new TestCase( SECTION, "isFinite( '2' )", true, isFinite('2') ); + array[item++] = new TestCase( SECTION, "isFinite( '3' )", true, isFinite('3') ); + array[item++] = new TestCase( SECTION, "isFinite( '4' )", true, isFinite('4') ); + array[item++] = new TestCase( SECTION, "isFinite( '5' )", true, isFinite('5') ); + array[item++] = new TestCase( SECTION, "isFinite( '6' )", true, isFinite('6') ); + array[item++] = new TestCase( SECTION, "isFinite( '7' )", true, isFinite('7') ); + array[item++] = new TestCase( SECTION, "isFinite( '8' )", true, isFinite('8') ); + array[item++] = new TestCase( SECTION, "isFinite( '9' )", true, isFinite('9') ); + + array[item++] = new TestCase( SECTION, "isFinite( 0x0a )", true, isFinite( 0x0a ) ); + array[item++] = new TestCase( SECTION, "isFinite( 0xaa )", true, isFinite( 0xaa ) ); + array[item++] = new TestCase( SECTION, "isFinite( 0x0A )", true, isFinite( 0x0A ) ); + array[item++] = new TestCase( SECTION, "isFinite( 0xAA )", true, isFinite( 0xAA ) ); + + array[item++] = new TestCase( SECTION, "isFinite( '0x0a' )", true, isFinite( "0x0a" ) ); + array[item++] = new TestCase( SECTION, "isFinite( '0xaa' )", true, isFinite( "0xaa" ) ); + array[item++] = new TestCase( SECTION, "isFinite( '0x0A' )", true, isFinite( "0x0A" ) ); + array[item++] = new TestCase( SECTION, "isFinite( '0xAA' )", true, isFinite( "0xAA" ) ); + + array[item++] = new TestCase( SECTION, "isFinite( 077 )", true, isFinite( 077 ) ); + array[item++] = new TestCase( SECTION, "isFinite( '077' )", true, isFinite( "077" ) ); + + array[item++] = new TestCase( SECTION, "isFinite( new String('Infinity') )", false, isFinite(new String("Infinity")) ); + array[item++] = new TestCase( SECTION, "isFinite( new String('-Infinity') )", false, isFinite(new String("-Infinity")) ); + + array[item++] = new TestCase( SECTION, "isFinite( 'Infinity' )", false, isFinite("Infinity") ); + array[item++] = new TestCase( SECTION, "isFinite( '-Infinity' )", false, isFinite("-Infinity") ); + array[item++] = new TestCase( SECTION, "isFinite( Number.POSITIVE_INFINITY )", false, isFinite(Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "isFinite( Number.NEGATIVE_INFINITY )", false, isFinite(Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "isFinite( Number.NaN )", false, isFinite(Number.NaN) ); + + array[item++] = new TestCase( SECTION, "isFinite( Infinity )", false, isFinite(Infinity) ); + array[item++] = new TestCase( SECTION, "isFinite( -Infinity )", false, isFinite(-Infinity) ); + array[item++] = new TestCase( SECTION, "isFinite( NaN )", false, isFinite(NaN) ); + + + array[item++] = new TestCase( SECTION, "isFinite( Number.MAX_VALUE )", true, isFinite(Number.MAX_VALUE) ); + array[item++] = new TestCase( SECTION, "isFinite( Number.MIN_VALUE )", true, isFinite(Number.MIN_VALUE) ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.1-1.js new file mode 100644 index 00000000000..d801063fae8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.1-1.js @@ -0,0 +1,86 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.1-1.js + ECMA Section: 7.1 White Space + Description: - readability + - separate tokens + - otherwise should be insignificant + - in strings, white space characters are significant + - cannot appear within any other kind of token + + white space characters are: + unicode name formal name string representation + \u0009 tab \t + \u000B veritical tab \v + \U000C form feed \f + \u0020 space " " + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + + var SECTION = "7.1-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "White Space"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + // whitespace between var keyword and identifier + + array[item++] = new TestCase( SECTION, 'var'+'\t'+'MYVAR1=10;MYVAR1', 10, eval('var'+'\t'+'MYVAR1=10;MYVAR1') ); + array[item++] = new TestCase( SECTION, 'var'+'\f'+'MYVAR2=10;MYVAR2', 10, eval('var'+'\f'+'MYVAR2=10;MYVAR2') ); + array[item++] = new TestCase( SECTION, 'var'+'\v'+'MYVAR2=10;MYVAR2', 10, eval('var'+'\v'+'MYVAR2=10;MYVAR2') ); + array[item++] = new TestCase( SECTION, 'var'+'\ '+'MYVAR2=10;MYVAR2', 10, eval('var'+'\ '+'MYVAR2=10;MYVAR2') ); + + // use whitespace between tokens object name, dot operator, and object property + + array[item++] = new TestCase( SECTION, + "var a = new Array(12345); a\t\v\f .\\u0009\\000B\\u000C\\u0020length", + 12345, + eval("var a = new Array(12345); a\t\v\f .\u0009\u0020\u000C\u000Blength") ); + + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.1-2.js new file mode 100644 index 00000000000..04da3c9a945 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.1-2.js @@ -0,0 +1,74 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.1-2.js + ECMA Section: 7.1 White Space + Description: - readability + - separate tokens + - otherwise should be insignificant + - in strings, white space characters are significant + - cannot appear within any other kind of token + + white space characters are: + unicode name formal name string representation + \u0009 tab \t + \u000B veritical tab ?? + \U000C form feed \f + \u0020 space " " + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + + var SECTION = "7.1-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "White Space"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "'var'+'\u000B'+'MYVAR1=10;MYVAR1'", 10, eval('var'+'\u000B'+'MYVAR1=10;MYVAR1') ); + array[item++] = new TestCase( SECTION, "'var'+'\u0009'+'MYVAR2=10;MYVAR2'", 10, eval('var'+'\u0009'+'MYVAR2=10;MYVAR2') ); + array[item++] = new TestCase( SECTION, "'var'+'\u000C'+'MYVAR3=10;MYVAR3'", 10, eval('var'+'\u000C'+'MYVAR3=10;MYVAR3') ); + array[item++] = new TestCase( SECTION, "'var'+'\u0020'+'MYVAR4=10;MYVAR4'", 10, eval('var'+'\u0020'+'MYVAR4=10;MYVAR4') ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.1-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.1-3.js new file mode 100644 index 00000000000..c9c6ae11e60 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.1-3.js @@ -0,0 +1,92 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.1-3.js + ECMA Section: 7.1 White Space + Description: - readability + - separate tokens + - otherwise should be insignificant + - in strings, white space characters are significant + - cannot appear within any other kind of token + + white space characters are: + unicode name formal name string representation + \u0009 tab \t + \u000B veritical tab ?? + \U000C form feed \f + \u0020 space " " + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + + var SECTION = "7.1-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "White Space"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "'var'+'\u000B'+'MYVAR1=10;MYVAR1'", 10, eval('var'+'\u000B'+'MYVAR1=10;MYVAR1') ); + array[item++] = new TestCase( SECTION, "'var'+'\u0009'+'MYVAR2=10;MYVAR2'", 10, eval('var'+'\u0009'+'MYVAR2=10;MYVAR2') ); + array[item++] = new TestCase( SECTION, "'var'+'\u000C'+'MYVAR3=10;MYVAR3'", 10, eval('var'+'\u000C'+'MYVAR3=10;MYVAR3') ); + array[item++] = new TestCase( SECTION, "'var'+'\u0020'+'MYVAR4=10;MYVAR4'", 10, eval('var'+'\u0020'+'MYVAR4=10;MYVAR4') ); + + // ++ should be interpreted as the unary + operator twice, not as a post or prefix increment operator + + array[item++] = new TestCase( SECTION, + "var VAR = 12345; + + VAR", + 12345, + eval("var VAR = 12345; + + VAR") ); + + array[item++] = new TestCase( SECTION, + "var VAR = 12345;VAR+ + VAR", + 24690, + eval("var VAR = 12345;VAR+ +VAR") ); + array[item++] = new TestCase( SECTION, + "var VAR = 12345;VAR - - VAR", + 24690, + eval("var VAR = 12345;VAR- -VAR") ); + + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-1.js new file mode 100644 index 00000000000..4936984dbfe --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-1.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.2-1.js + ECMA Section: 7.2 Line Terminators + Description: - readability + - separate tokens + - may occur between any two tokens + - cannot occur within any token, not even a string + - affect the process of automatic semicolon insertion. + + white space characters are: + unicode name formal name string representation + \u000A line feed \n + \u000D carriage return \r + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Line Terminators"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "var a\nb = 5; ab=10;ab;", 10, eval("var a\nb = 5; ab=10;ab") ); + array[item++] = new TestCase( SECTION, "var a\nb = 5; ab=10;b;", 5, eval("var a\nb = 5; ab=10;b") ); + array[item++] = new TestCase( SECTION, "var a\rb = 5; ab=10;ab;", 10, eval("var a\rb = 5; ab=10;ab") ); + array[item++] = new TestCase( SECTION, "var a\rb = 5; ab=10;b;", 5, eval("var a\rb = 5; ab=10;b") ); + array[item++] = new TestCase( SECTION, "var a\r\nb = 5; ab=10;ab;", 10, eval("var a\r\nb = 5; ab=10;ab") ); + array[item++] = new TestCase( SECTION, "var a\r\nb = 5; ab=10;b;", 5, eval("var a\r\nb = 5; ab=10;b") ); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-2-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-2-n.js new file mode 100644 index 00000000000..268fc568894 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-2-n.js @@ -0,0 +1,80 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.2.js + ECMA Section: 7.2 Line Terminators + Description: - readability + - separate tokens + - may occur between any two tokens + - cannot occur within any token, not even a string + - affect the process of automatic semicolon insertion. + + white space characters are: + unicode name formal name string representation + \u000A line feed \n + \u000D carriage return \r + + this test uses onerror to capture line numbers. because + we use on error, we can only have one test case per file. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.2-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Line Terminators"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function test() { + // this is line 29 + a = "\r\r\r\nb"; + eval( a ); + + // if we get this far, the test failed. + testcases[tc].passed = writeTestCaseResult( + "failure on line" + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[0].passed = false; + + testcases[tc].reason = "test should have caused runtime error "; + + stopTest(); + + return ( testcases ); +} + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[0] = new TestCase( "7.2", "a", "error", ""); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-3-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-3-n.js new file mode 100644 index 00000000000..ff3753df391 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-3-n.js @@ -0,0 +1,83 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.2-3.js + ECMA Section: 7.2 Line Terminators + Description: - readability + - separate tokens + - may occur between any two tokens + - cannot occur within any token, not even a string + - affect the process of automatic semicolon insertion. + + white space characters are: + unicode name formal name string representation + \u000A line feed \n + \u000D carriage return \r + + this test uses onerror to capture line numbers. because + we use on error, we can only have one test case per file. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.2-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Line Terminators"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function test() { + + // this is line 27 + + a = "\r\nb"; + eval( a ); + + // if we get this far, the test failed. + testcases[tc].passed = writeTestCaseResult( + "failure on line" + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[0].passed = false; + + testcases[tc].reason = "test should have caused runtime error "; + + stopTest(); + return ( testcases ); +} + + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[0] = new TestCase( "7.2", "a", "error", ""); + + return ( array ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-4-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-4-n.js new file mode 100644 index 00000000000..0f98b9b4a04 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-4-n.js @@ -0,0 +1,82 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.2.js + ECMA Section: 7.2 Line Terminators + Description: - readability + - separate tokens + - may occur between any two tokens + - cannot occur within any token, not even a string + - affect the process of automatic semicolon insertion. + + white space characters are: + unicode name formal name string representation + \u000A line feed \n + \u000D carriage return \r + + this test uses onerror to capture line numbers. because + we use on error, we can only have one test case per file. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.2-6"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Line Terminators"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function test() { + // this is line 33 + + a = "\nb"; + eval( a ); + + // if we get this far, the test failed. + testcases[tc].passed = writeTestCaseResult( + "failure on line" + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[0].passed = false; + + testcases[tc].reason = "test should have caused runtime error "; + + stopTest(); + + return ( testcases ); +} + + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[0] = new TestCase( "7.2", "a = \\nb", "error", ""); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-5-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-5-n.js new file mode 100644 index 00000000000..b226a98b063 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-5-n.js @@ -0,0 +1,85 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.2.js + ECMA Section: 7.2 Line Terminators + Description: - readability + - separate tokens + - may occur between any two tokens + - cannot occur within any token, not even a string + - affect the process of automatic semicolon insertion. + + white space characters are: + unicode name formal name string representation + \u000A line feed \n + \u000D carriage return \r + + this test uses onerror to capture line numbers. because + we use on error, we can only have one test case per file. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.2-5"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Line Terminators"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function test() { + // this is line 27 + + a = "\rb"; + eval( a ); + + // if we get this far, the test failed. + testcases[tc].passed = writeTestCaseResult( + "failure on line" + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].passed = false; + + testcases[tc].reason = "test should have caused runtime error "; + + passed = false; + stopTest(); + + // all tests must return a boolean value + return ( testcases ); +} + + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[0] = new TestCase( "7.2", "a", "error", ""); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-6.js new file mode 100644 index 00000000000..70cff7ef561 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.2-6.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.2-6.js + ECMA Section: 7.2 Line Terminators + Description: - readability + - separate tokens + - may occur between any two tokens + - cannot occur within any token, not even a string + - affect the process of automatic semicolon insertion. + + white space characters are: + unicode name formal name string representation + \u000A line feed \n + \u000D carriage return \r + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.2-6"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Line Terminators"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "var a\u000Ab = 5; ab=10;ab;", 10, eval("var a\nb = 5; ab=10;ab") ); + array[item++] = new TestCase( SECTION, "var a\u000Db = 5; ab=10;b;", 5, eval("var a\nb = 5; ab=10;b") ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-1.js new file mode 100644 index 00000000000..ff94a3cf072 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-1.js @@ -0,0 +1,79 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.3-1.js + ECMA Section: 7.3 Comments + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.3-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Comments"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item] = new TestCase( SECTION, + "a comment with a line terminator string, and text following", + "pass", + "pass"); + + // "\u000A" array[item].actual = "fail"; + + item++; + + array[item] = new TestCase( SECTION, + "// test \\n array[item].actual = \"pass\"", + "pass", + "" ); + + var x = "// test \n array[item].actual = 'pass'" + + array[0].actual = eval(x); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-10.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-10.js new file mode 100644 index 00000000000..ed4a5b3f5a2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-10.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.3-10.js + ECMA Section: 7.3 Comments + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.3-10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Comments"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "code following multiline comment", + "pass", + "fail"); + return ( array ); +} +function test() { + + /*//*/testcases[tc].actual="pass"; + + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-11.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-11.js new file mode 100644 index 00000000000..8b6773a0bd7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-11.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.3-11.js + ECMA Section: 7.3 Comments + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.3-11"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Comments"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "code following multiline comment", + "pass", + "pass"); + return ( array ); +} +function test() { + + ////testcases[tc].actual="fail"; + + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-12.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-12.js new file mode 100644 index 00000000000..fede098de2d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-12.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.3-12.js + ECMA Section: 7.3 Comments + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.3-12"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Comments"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "code following multiline comment", + "pass", + "pass"); + return ( array ); +} +function test() { + + /*testcases[tc].actual="fail";**/ + + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-13-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-13-n.js new file mode 100644 index 00000000000..92394e6cf56 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-13-n.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.3-13-n.js + ECMA Section: 7.3 Comments + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.3-13-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Comments"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "nested comment", + "error", + "pass"); + return ( array ); +} +function test() { + + /*/*testcases[tc].actual="fail";*/*/ + + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-2.js new file mode 100644 index 00000000000..8eca512fdb5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-2.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.3-2.js + ECMA Section: 7.3 Comments + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.3-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Comments"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "a comment with a carriage return, and text following", + "pass", + "pass"); + return ( array ); +} +function test() { + + // "\u000D" testcases[tc].actual = "fail"; + + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-3.js new file mode 100644 index 00000000000..1bcd56105de --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-3.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.3-3.js + ECMA Section: 7.3 Comments + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.3-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Comments"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "source text directly following a single-line comment", + "pass", + "fail"); + return ( array ); +} +function test() { + + // a comment string + testcases[tc].actual = "pass"; + + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-4.js new file mode 100644 index 00000000000..7ac82c7b4e1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-4.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.3-4.js + ECMA Section: 7.3 Comments + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.3-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Comments"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "multiline comment ", + "pass", + "pass"); + return ( array ); +} +function test() { + + /*testcases[tc].actual = "fail";*/ + + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-5.js new file mode 100644 index 00000000000..2ce6844c74f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-5.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.3-5.js + ECMA Section: 7.3 Comments + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.3-5"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Comments"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "a comment with a carriage return, and text following", + "pass", + "pass"); + return ( array ); +} +function test() { + + // "\u000A" testcases[tc].actual = "fail"; + + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-6.js new file mode 100644 index 00000000000..d0108175ba6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-6.js @@ -0,0 +1,68 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.3-6.js + ECMA Section: 7.3 Comments + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.3-6"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Comments"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "comment with multiple asterisks", + "pass", + "fail"); + return ( array ); +} +function test() { + + /* + ***/testcases[tc].actual="pass"; + + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-7.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-7.js new file mode 100644 index 00000000000..8bdf6239730 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-7.js @@ -0,0 +1,68 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.3-7.js + ECMA Section: 7.3 Comments + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.3-7"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Comments"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "single line comment following multiline comment", + "pass", + "pass"); + return ( array ); +} +function test() { + + /* + ***///testcases[tc].actual="fail"; + + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-8.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-8.js new file mode 100644 index 00000000000..6d686cf2c43 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-8.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.3-7.js + ECMA Section: 7.3 Comments + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.3-8"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Comments"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "code following multiline comment", + "pass", + "fail"); + return ( array ); +} +function test() { + + /**/testcases[tc].actual="pass"; + + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-9.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-9.js new file mode 100644 index 00000000000..701e115190d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.3-9.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.3-9.js + ECMA Section: 7.3 Comments + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.3-9"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Comments"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "code following multiline comment", + "pass", + "fail"); + return ( array ); +} +function test() { + + /*/*/testcases[tc].actual="pass"; + + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.1-1-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.1-1-n.js new file mode 100644 index 00000000000..37b1c4eb2b7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.1-1-n.js @@ -0,0 +1,71 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.1-1-n.js + ECMA Section: 7.4.1 + + Description: + + Reserved words cannot be used as identifiers. + + ReservedWord :: + Keyword + FutureReservedWord + NullLiteral + BooleanLiteral + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.1-1-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var null = true", "error", "var null = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.1-2-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.1-2-n.js new file mode 100644 index 00000000000..f85891be8c0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.1-2-n.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.1-2.js + ECMA Section: 7.4.1 + + Description: + + Reserved words cannot be used as identifiers. + + ReservedWord :: + Keyword + FutureReservedWord + NullLiteral + BooleanLiteral + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.1-2-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var true = false", "error", "var true = false" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.1-3-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.1-3-n.js new file mode 100644 index 00000000000..a05480a0242 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.1-3-n.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.1-3-n.js + ECMA Section: 7.4.1 + + Description: + + Reserved words cannot be used as identifiers. + + ReservedWord :: + Keyword + FutureReservedWord + NullLiteral + BooleanLiteral + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.1-3-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var false = true", "error", "var false = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-1-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-1-n.js new file mode 100644 index 00000000000..43d0425535e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-1-n.js @@ -0,0 +1,76 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-1.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.2-1-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var break = true", "error", "var break = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-10-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-10-n.js new file mode 100644 index 00000000000..0ad19db3b24 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-10-n.js @@ -0,0 +1,76 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-10.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.1-10-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var if = true", "error", "var if = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-11-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-11-n.js new file mode 100644 index 00000000000..e8a0f806757 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-11-n.js @@ -0,0 +1,76 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-11-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.1-11-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var this = true", "error", "var this = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-12-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-12-n.js new file mode 100644 index 00000000000..ffc33509170 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-12-n.js @@ -0,0 +1,77 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-12-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.1-12-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var while = true", "error", "var while = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-13-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-13-n.js new file mode 100644 index 00000000000..78320b20338 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-13-n.js @@ -0,0 +1,76 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-13-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.1-13-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var else = true", "error", "var else = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-14-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-14-n.js new file mode 100644 index 00000000000..4b8bb0f0b06 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-14-n.js @@ -0,0 +1,76 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-14-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.1-14-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var in = true", "error", "var in = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-15-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-15-n.js new file mode 100644 index 00000000000..d84f9d78001 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-15-n.js @@ -0,0 +1,77 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-15-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.1-15-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var typeof = true", "error", "var typeof = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-16-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-16-n.js new file mode 100644 index 00000000000..8293eee7c7a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-16-n.js @@ -0,0 +1,76 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-16-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.1-16-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var with = true", "error", "var with = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-2-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-2-n.js new file mode 100644 index 00000000000..2b799b1a181 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-2-n.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-2-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.1-2-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var for = true", "error", "var for = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-3-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-3-n.js new file mode 100644 index 00000000000..3b5feb04ddc --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-3-n.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-3-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.2-3-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var new = true", "error", "var new = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-4-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-4-n.js new file mode 100644 index 00000000000..13faf32bd98 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-4-n.js @@ -0,0 +1,76 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-4-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.2-4-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var var = true", "error", "var var = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-5-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-5-n.js new file mode 100644 index 00000000000..004249b8599 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-5-n.js @@ -0,0 +1,76 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-5-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.2-5-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var continue = true", "error", "var continue = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-6-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-6-n.js new file mode 100644 index 00000000000..3b830f8e5e8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-6-n.js @@ -0,0 +1,76 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-6.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.2-6-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var function = true", "error", "var function = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-7-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-7-n.js new file mode 100644 index 00000000000..c84ca9df2b5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-7-n.js @@ -0,0 +1,73 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-7-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.2-7"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + writeHeaderToLog( SECTION + " Keywords"); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var return = true", "error", "var return = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-8-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-8-n.js new file mode 100644 index 00000000000..f2397bb86c5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-8-n.js @@ -0,0 +1,73 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-8-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.2-8"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + writeHeaderToLog( SECTION + " Keywords"); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var void = true", "error", "var void = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-9-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-9-n.js new file mode 100644 index 00000000000..5b5a288699e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.2-9-n.js @@ -0,0 +1,76 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.2-9-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "7.4.1-9-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Keywords"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var delete = true", "error", "var delete = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-1-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-1-n.js new file mode 100644 index 00000000000..5a626a48d07 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-1-n.js @@ -0,0 +1,71 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.3-1-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "7.4.3-1-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var case = true", "error", "var case = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-10-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-10-n.js new file mode 100644 index 00000000000..84d6cf3eeda --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-10-n.js @@ -0,0 +1,71 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.3-10-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "7.4.3-10-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var do = true", "error", "var do = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-11-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-11-n.js new file mode 100644 index 00000000000..b8505842540 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-11-n.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.3-11-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "7.4.3-11-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var finally = true", "error", "var finally = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-12-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-12-n.js new file mode 100644 index 00000000000..7dfe3ccbd7f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-12-n.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.3-12-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "7.4.3-12-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var throw = true", "error", "var throw = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-13-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-13-n.js new file mode 100644 index 00000000000..ede44c18ea1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-13-n.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.3-13-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "7.4.3-13-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var const = true", "error", "var const = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-14-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-14-n.js new file mode 100644 index 00000000000..31b6794e2c7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-14-n.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.3-14-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "7.4.3-14-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var enum = true", "error", "var enum = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-15-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-15-n.js new file mode 100644 index 00000000000..dfda05432da --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-15-n.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.3-15-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "7.4.3-15-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var import = true", "error", "var import = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-16-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-16-n.js new file mode 100644 index 00000000000..cf616354fe4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-16-n.js @@ -0,0 +1,69 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: lexical-023.js + Corresponds To: 7.4.3-16-n.js + ECMA Section: 7.4.3 + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-023.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + try = true; + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "try = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-2-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-2-n.js new file mode 100644 index 00000000000..46da571b30e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-2-n.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.3-2-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "7.4.3-2-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var debugger = true", "error", "var debugger = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-3-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-3-n.js new file mode 100644 index 00000000000..bfdbe3ba774 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-3-n.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.3-3-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "7.4.3-3-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var export = true", "error", "var export = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-4-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-4-n.js new file mode 100644 index 00000000000..11b97c960b5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-4-n.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.3-4-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "7.4.3-4-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var super = true", "error", "var super = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-5-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-5-n.js new file mode 100644 index 00000000000..8acbbcd0673 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-5-n.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.3-5-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "7.4.3-5-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var catch = true", "error", "var catch = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-6-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-6-n.js new file mode 100644 index 00000000000..d5ea75e7243 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-6-n.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.3-6-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "7.4.3-6-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var default = true", "error", "var default = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-7-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-7-n.js new file mode 100644 index 00000000000..93cf4cdc9c5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-7-n.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.3-7-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "7.4.3-7-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var extends = true", "error", "var extends = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-8-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-8-n.js new file mode 100644 index 00000000000..7d09f0c0a20 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-8-n.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.3-8-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "7.4.3-9-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var switch = true", "error", "var switch = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-9-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-9-n.js new file mode 100644 index 00000000000..f0e71f907e1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.4.3-9-n.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.4.3-9-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "7.4.3-9-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Future Reserved Words"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var class = true", "error", "var class = true" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-1.js new file mode 100644 index 00000000000..ef1b2578b2b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-1.js @@ -0,0 +1,65 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.5-1.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.5-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Identifiers"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "var $123 = 5", 5, eval("var $123 = 5;$123") ); + array[item++] = new TestCase( SECTION, "var _123 = 5", 5, eval("var _123 = 5;_123") ); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-10-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-10-n.js new file mode 100644 index 00000000000..b1bb8728fbb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-10-n.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.5-9-n.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.5-9-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Identifiers"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item] = new TestCase( SECTION, "var 123=\"hi\"", "error", "" ); + + 123 = "hi"; + + array[item] = 123; + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-2-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-2-n.js new file mode 100644 index 00000000000..b8a161d934c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-2-n.js @@ -0,0 +1,65 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.5-2-n.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.5-2-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Identifiers"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "var 0abc", "error", "var 0abc" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-3-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-3-n.js new file mode 100644 index 00000000000..0d0aa843fec --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-3-n.js @@ -0,0 +1,65 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.5-2.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.5-3-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Identifiers"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "var 0abc", "error", "var 1abc" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-4-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-4-n.js new file mode 100644 index 00000000000..8a21a7775db --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-4-n.js @@ -0,0 +1,65 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.5-4-n.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.5-4-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Identifiers"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "var 0abc", "error", "var 2abc" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-5-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-5-n.js new file mode 100644 index 00000000000..7a17f1612b9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-5-n.js @@ -0,0 +1,65 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.5-5-n.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.5-5-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Identifiers"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "var 0abc", "error", "var 3abc" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-6.js new file mode 100644 index 00000000000..8b19307b93f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-6.js @@ -0,0 +1,65 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.5-6.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.5-6"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Identifiers"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "var _0abc = 5", 5, "var _0abc = 5; _0abc" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-7.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-7.js new file mode 100644 index 00000000000..7ade9395d48 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-7.js @@ -0,0 +1,65 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.5-7.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.5-7"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Identifiers"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "var $0abc = 5", 5, "var $0abc = 5; $0abc" ); + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-8-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-8-n.js new file mode 100644 index 00000000000..f17e07170ba --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-8-n.js @@ -0,0 +1,65 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.5-8-n.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.5-8-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Identifiers"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "var @0abc = 5", "error", "var @0abc = 5; @0abc" ); + return ( array ); +} + +function test() {s + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-9-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-9-n.js new file mode 100644 index 00000000000..8ef78d6e2c0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.5-9-n.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.5-9-n.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "7.5-9-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Identifiers"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item] = new TestCase( SECTION, "var 123=\"hi\"", "error", "" ); + + var 123 = "hi"; + + array[item] = 123; + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +": "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : " ignored chars after line terminator of single-line comment"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.6.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.6.js new file mode 100644 index 00000000000..68b66be3e39 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.6.js @@ -0,0 +1,309 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.6.js + ECMA Section: Punctuators + Description: + + This tests verifies that all ECMA punctutors are recognized as a + token separator, but does not attempt to verify the functionality + of any punctuator. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "7.6"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Punctuators"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + // == + testcases[tc++] = new TestCase( SECTION, + "var c,d;c==d", + true, + eval("var c,d;c==d") ); + + // = + + testcases[tc++] = new TestCase( SECTION, + "var a=true;a", + true, + eval("var a=true;a") ); + + // > + testcases[tc++] = new TestCase( SECTION, + "var a=true,b=false;a>b", + true, + eval("var a=true,b=false;a>b") ); + + // < + testcases[tc++] = new TestCase( SECTION, + "var a=true,b=false;a= + testcases[tc++] = new TestCase( SECTION, + "var a=0xFFFF,b=0XFFFE;a>=b", + true, + eval("var a=0xFFFF,b=0XFFFE;a>=b") ); + + // != + testcases[tc++] = new TestCase( SECTION, + "var a=true,b=false;a!=b", + true, + eval("var a=true,b=false;a!=b") ); + + testcases[tc++] = new TestCase( SECTION, + "var a=false,b=false;a!=b", + false, + eval("var a=false,b=false;a!=b") ); + // , + testcases[tc++] = new TestCase( SECTION, + "var a=true,b=false;a,b", + false, + eval("var a=true,b=false;a,b") ); + // ! + testcases[tc++] = new TestCase( SECTION, + "var a=true,b=false;!a", + false, + eval("var a=true,b=false;!a") ); + + // ~ + testcases[tc++] = new TestCase( SECTION, + "var a=true;~a", + -2, + eval("var a=true;~a") ); + // ? + testcases[tc++] = new TestCase( SECTION, + "var a=true; (a ? 'PASS' : '')", + "PASS", + eval("var a=true; (a ? 'PASS' : '')") ); + + // : + + testcases[tc++] = new TestCase( SECTION, + "var a=false; (a ? 'FAIL' : 'PASS')", + "PASS", + eval("var a=false; (a ? 'FAIL' : 'PASS')") ); + // . + + testcases[tc++] = new TestCase( SECTION, + "var a=Number;a.NaN", + NaN, + eval("var a=Number;a.NaN") ); + + // && + testcases[tc++] = new TestCase( SECTION, + "var a=true,b=true;if(a&&b)'PASS';else'FAIL'", + "PASS", + eval("var a=true,b=true;if(a&&b)'PASS';else'FAIL'") ); + + // || + testcases[tc++] = new TestCase( SECTION, + "var a=false,b=false;if(a||b)'FAIL';else'PASS'", + "PASS", + eval("var a=false,b=false;if(a||b)'FAIL';else'PASS'") ); + // ++ + testcases[tc++] = new TestCase( SECTION, + "var a=false,b=false;++a", + 1, + eval("var a=false,b=false;++a") ); + // -- + testcases[tc++] = new TestCase( SECTION, + "var a=true,b=false--a", + 0, + eval("var a=true,b=false;--a") ); + // + + + testcases[tc++] = new TestCase( SECTION, + "var a=true,b=true;a+b", + 2, + eval("var a=true,b=true;a+b") ); + // - + testcases[tc++] = new TestCase( SECTION, + "var a=true,b=true;a-b", + 0, + eval("var a=true,b=true;a-b") ); + // * + testcases[tc++] = new TestCase( SECTION, + "var a=true,b=true;a*b", + 1, + eval("var a=true,b=true;a*b") ); + // / + testcases[tc++] = new TestCase( SECTION, + "var a=true,b=true;a/b", + 1, + eval("var a=true,b=true;a/b") ); + // & + testcases[tc++] = new TestCase( SECTION, + "var a=3,b=2;a&b", + 2, + eval("var a=3,b=2;a&b") ); + // | + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=3;a|b", + 7, + eval("var a=4,b=3;a|b") ); + + // | + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=3;a^b", + 7, + eval("var a=4,b=3;a^b") ); + + // % + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=3;a|b", + 1, + eval("var a=4,b=3;a%b") ); + + // << + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=3;a<> + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=1;a>>b", + 2, + eval("var a=4,b=1;a>>b") ); + + // >>> + testcases[tc++] = new TestCase( SECTION, + "var a=1,b=1;a>>>b", + 0, + eval("var a=1,b=1;a>>>b") ); + // += + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=3;a+=b;a", + 7, + eval("var a=4,b=3;a+=b;a") ); + + // -= + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=3;a-=b;a", + 1, + eval("var a=4,b=3;a-=b;a") ); + // *= + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=3;a*=b;a", + 12, + eval("var a=4,b=3;a*=b;a") ); + // += + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=3;a+=b;a", + 7, + eval("var a=4,b=3;a+=b;a") ); + // /= + testcases[tc++] = new TestCase( SECTION, + "var a=12,b=3;a/=b;a", + 4, + eval("var a=12,b=3;a/=b;a") ); + + // &= + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=5;a&=b;a", + 4, + eval("var a=4,b=5;a&=b;a") ); + + // |= + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=5;a&=b;a", + 5, + eval("var a=4,b=5;a|=b;a") ); + // ^= + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=5;a^=b;a", + 1, + eval("var a=4,b=5;a^=b;a") ); + // %= + testcases[tc++] = new TestCase( SECTION, + "var a=12,b=5;a%=b;a", + 2, + eval("var a=12,b=5;a%=b;a") ); + // <<= + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=3;a<<=b;a", + 32, + eval("var a=4,b=3;a<<=b;a") ); + + // >> + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=1;a>>=b;a", + 2, + eval("var a=4,b=1;a>>=b;a") ); + + // >>> + testcases[tc++] = new TestCase( SECTION, + "var a=1,b=1;a>>>=b;a", + 0, + eval("var a=1,b=1;a>>>=b;a") ); + + // () + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=3;(a)", + 4, + eval("var a=4,b=3;(a)") ); + // {} + testcases[tc++] = new TestCase( SECTION, + "var a=4,b=3;{b}", + 3, + eval("var a=4,b=3;{b}") ); + + // [] + testcases[tc++] = new TestCase( SECTION, + "var a=new Array('hi');a[0]", + "hi", + eval("var a=new Array('hi');a[0]") ); + // [] + testcases[tc++] = new TestCase( SECTION, + ";", + void 0, + eval(";") ); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.1.js new file mode 100644 index 00000000000..a939e5120b9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.1.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.7.1.js + ECMA Section: 7.7.1 Null Literals + + Description: NullLiteral:: + null + + + The value of the null literal null is the sole value + of the Null type, namely null. + + Author: christine@netscape.com + Date: 21 october 1997 +*/ + var SECTION = "7.7.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Null Literals"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "null", null, null); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = testcases[tc].actual; + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + + stopTest(); + + // all tests must return the test array + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.2.js new file mode 100644 index 00000000000..1202df316e3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.2.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.7.2.js + ECMA Section: 7.7.2 Boolean Literals + + Description: BooleanLiteral:: + true + false + + The value of the Boolean literal true is a value of the + Boolean type, namely true. + + The value of the Boolean literal false is a value of the + Boolean type, namely false. + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "7.7.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Boolean Literals"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // StringLiteral:: "" and '' + + array[item++] = new TestCase( SECTION, "true", Boolean(true), true ); + array[item++] = new TestCase( SECTION, "false", Boolean(false), false ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = testcases[tc].actual; + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + + stopTest(); + } + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.3-1.js new file mode 100644 index 00000000000..91beccaac2c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.3-1.js @@ -0,0 +1,197 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.7.3-1.js + ECMA Section: 7.7.3 Numeric Literals + + Description: A numeric literal stands for a value of the Number type + This value is determined in two steps: first a + mathematical value (MV) is derived from the literal; + second, this mathematical value is rounded, ideally + using IEEE 754 round-to-nearest mode, to a reprentable + value of of the number type. + + These test cases came from Waldemar. + + Author: christine@netscape.com + Date: 12 June 1998 +*/ + +var SECTION = "7.7.3-1"; +var VERSION = "ECMA_1"; + startTest(); +var TITLE = "Numeric Literals"; +var BUGNUMBER="122877"; + +writeHeaderToLog( SECTION + " "+ TITLE); + +var testcases = new Array(); + + +testcases[tc++] = new TestCase( SECTION, + "0x12345678", + 305419896, + 0x12345678 ); + +testcases[tc++] = new TestCase( SECTION, + "0x80000000", + 2147483648, + 0x80000000 ); + +testcases[tc++] = new TestCase( SECTION, + "0xffffffff", + 4294967295, + 0xffffffff ); + +testcases[tc++] = new TestCase( SECTION, + "0x100000000", + 4294967296, + 0x100000000 ); + +testcases[tc++] = new TestCase( SECTION, + "077777777777777777", + 2251799813685247, + 077777777777777777 ); + +testcases[tc++] = new TestCase( SECTION, + "077777777777777776", + 2251799813685246, + 077777777777777776 ); + +testcases[tc++] = new TestCase( SECTION, + "0x1fffffffffffff", + 9007199254740991, + 0x1fffffffffffff ); + +testcases[tc++] = new TestCase( SECTION, + "0x20000000000000", + 9007199254740992, + 0x20000000000000 ); + +testcases[tc++] = new TestCase( SECTION, + "0x20123456789abc", + 9027215253084860, + 0x20123456789abc ); + +testcases[tc++] = new TestCase( SECTION, + "0x20123456789abd", + 9027215253084860, + 0x20123456789abd ); + +testcases[tc++] = new TestCase( SECTION, + "0x20123456789abe", + 9027215253084862, + 0x20123456789abe ); + +testcases[tc++] = new TestCase( SECTION, + "0x20123456789abf", + 9027215253084864, + 0x20123456789abf ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000080", + 1152921504606847000, + 0x1000000000000080 ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000081", + 1152921504606847200, + 0x1000000000000081 ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000100", + 1152921504606847200, + 0x1000000000000100 ); + +testcases[tc++] = new TestCase( SECTION, + "0x100000000000017f", + 1152921504606847200, + 0x100000000000017f ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000180", + 1152921504606847500, + 0x1000000000000180 ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000181", + 1152921504606847500, + 0x1000000000000181 ); + +testcases[tc++] = new TestCase( SECTION, + "0x10000000000001f0", + 1152921504606847500, + 0x10000000000001f0 ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000200", + 1152921504606847500, + 0x1000000000000200 ); + +testcases[tc++] = new TestCase( SECTION, + "0x100000000000027f", + 1152921504606847500, + 0x100000000000027f ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000280", + 1152921504606847500, + 0x1000000000000280 ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000281", + 1152921504606847700, + 0x1000000000000281 ); + +testcases[tc++] = new TestCase( SECTION, + "0x10000000000002ff", + 1152921504606847700, + 0x10000000000002ff ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000300", + 1152921504606847700, + 0x1000000000000300 ); + +testcases[tc++] = new TestCase( SECTION, + "0x10000000000000000", + 18446744073709552000, + 0x10000000000000000 ); + +test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = testcases[tc].actual; + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + + } + + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.3-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.3-2.js new file mode 100644 index 00000000000..b6e750c9d83 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.3-2.js @@ -0,0 +1,93 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.7.3-2.js + ECMA Section: 7.7.3 Numeric Literals + + Description: + + This is a regression test for + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=122884 + + Waldemar's comments: + + A numeric literal that starts with either '08' or '09' is interpreted as a + decimal literal; it should be an error instead. (Strictly speaking, according + to ECMA v1 such literals should be interpreted as two integers -- a zero + followed by a decimal number whose first digit is 8 or 9, but this is a bug in + ECMA that will be fixed in v2. In any case, there is no place in the grammar + where two consecutive numbers would be legal.) + + Author: christine@netscape.com + Date: 15 june 1998 + +*/ + var SECTION = "7.7.3-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Numeric Literals"; + var BUGNUMBER="122884"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( SECTION, + "9", + 9, + 9 ); + + testcases[tc++] = new TestCase( SECTION, + "09", + 9, + 09 ); + + testcases[tc++] = new TestCase( SECTION, + "099", + 99, + 099 ); + + + testcases[tc++] = new TestCase( SECTION, + "077", + 63, + 077 ); + + test(); + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = testcases[tc].actual; + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + + } + + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.3.js new file mode 100644 index 00000000000..7d47a4040b9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.3.js @@ -0,0 +1,337 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.7.3.js + ECMA Section: 7.7.3 Numeric Literals + + Description: A numeric literal stands for a value of the Number type + This value is determined in two steps: first a + mathematical value (MV) is derived from the literal; + second, this mathematical value is rounded, ideally + using IEEE 754 round-to-nearest mode, to a reprentable + value of of the number type. + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "7.7.3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Numeric Literals"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "0", 0, 0 ); + array[item++] = new TestCase( SECTION, "1", 1, 1 ); + array[item++] = new TestCase( SECTION, "2", 2, 2 ); + array[item++] = new TestCase( SECTION, "3", 3, 3 ); + array[item++] = new TestCase( SECTION, "4", 4, 4 ); + array[item++] = new TestCase( SECTION, "5", 5, 5 ); + array[item++] = new TestCase( SECTION, "6", 6, 6 ); + array[item++] = new TestCase( SECTION, "7", 7, 7 ); + array[item++] = new TestCase( SECTION, "8", 8, 8 ); + array[item++] = new TestCase( SECTION, "9", 9, 9 ); + + array[item++] = new TestCase( SECTION, "0.", 0, 0. ); + array[item++] = new TestCase( SECTION, "1.", 1, 1. ); + array[item++] = new TestCase( SECTION, "2.", 2, 2. ); + array[item++] = new TestCase( SECTION, "3.", 3, 3. ); + array[item++] = new TestCase( SECTION, "4.", 4, 4. ); + + array[item++] = new TestCase( SECTION, "0.e0", 0, 0.e0 ); + array[item++] = new TestCase( SECTION, "1.e1", 10, 1.e1 ); + array[item++] = new TestCase( SECTION, "2.e2", 200, 2.e2 ); + array[item++] = new TestCase( SECTION, "3.e3", 3000, 3.e3 ); + array[item++] = new TestCase( SECTION, "4.e4", 40000, 4.e4 ); + + array[item++] = new TestCase( SECTION, "0.1e0", .1, 0.1e0 ); + array[item++] = new TestCase( SECTION, "1.1e1", 11, 1.1e1 ); + array[item++] = new TestCase( SECTION, "2.2e2", 220, 2.2e2 ); + array[item++] = new TestCase( SECTION, "3.3e3", 3300, 3.3e3 ); + array[item++] = new TestCase( SECTION, "4.4e4", 44000, 4.4e4 ); + + array[item++] = new TestCase( SECTION, ".1e0", .1, .1e0 ); + array[item++] = new TestCase( SECTION, ".1e1", 1, .1e1 ); + array[item++] = new TestCase( SECTION, ".2e2", 20, .2e2 ); + array[item++] = new TestCase( SECTION, ".3e3", 300, .3e3 ); + array[item++] = new TestCase( SECTION, ".4e4", 4000, .4e4 ); + + array[item++] = new TestCase( SECTION, "0e0", 0, 0e0 ); + array[item++] = new TestCase( SECTION, "1e1", 10, 1e1 ); + array[item++] = new TestCase( SECTION, "2e2", 200, 2e2 ); + array[item++] = new TestCase( SECTION, "3e3", 3000, 3e3 ); + array[item++] = new TestCase( SECTION, "4e4", 40000, 4e4 ); + + array[item++] = new TestCase( SECTION, "0e0", 0, 0e0 ); + array[item++] = new TestCase( SECTION, "1e1", 10, 1e1 ); + array[item++] = new TestCase( SECTION, "2e2", 200, 2e2 ); + array[item++] = new TestCase( SECTION, "3e3", 3000, 3e3 ); + array[item++] = new TestCase( SECTION, "4e4", 40000, 4e4 ); + + array[item++] = new TestCase( SECTION, "0E0", 0, 0E0 ); + array[item++] = new TestCase( SECTION, "1E1", 10, 1E1 ); + array[item++] = new TestCase( SECTION, "2E2", 200, 2E2 ); + array[item++] = new TestCase( SECTION, "3E3", 3000, 3E3 ); + array[item++] = new TestCase( SECTION, "4E4", 40000, 4E4 ); + + array[item++] = new TestCase( SECTION, "1.e-1", 0.1, 1.e-1 ); + array[item++] = new TestCase( SECTION, "2.e-2", 0.02, 2.e-2 ); + array[item++] = new TestCase( SECTION, "3.e-3", 0.003, 3.e-3 ); + array[item++] = new TestCase( SECTION, "4.e-4", 0.0004, 4.e-4 ); + + array[item++] = new TestCase( SECTION, "0.1e-0", .1, 0.1e-0 ); + array[item++] = new TestCase( SECTION, "1.1e-1", 0.11, 1.1e-1 ); + array[item++] = new TestCase( SECTION, "2.2e-2", .022, 2.2e-2 ); + array[item++] = new TestCase( SECTION, "3.3e-3", .0033, 3.3e-3 ); + array[item++] = new TestCase( SECTION, "4.4e-4", .00044, 4.4e-4 ); + + array[item++] = new TestCase( SECTION, ".1e-0", .1, .1e-0 ); + array[item++] = new TestCase( SECTION, ".1e-1", .01, .1e-1 ); + array[item++] = new TestCase( SECTION, ".2e-2", .002, .2e-2 ); + array[item++] = new TestCase( SECTION, ".3e-3", .0003, .3e-3 ); + array[item++] = new TestCase( SECTION, ".4e-4", .00004, .4e-4 ); + + array[item++] = new TestCase( SECTION, "1.e+1", 10, 1.e+1 ); + array[item++] = new TestCase( SECTION, "2.e+2", 200, 2.e+2 ); + array[item++] = new TestCase( SECTION, "3.e+3", 3000, 3.e+3 ); + array[item++] = new TestCase( SECTION, "4.e+4", 40000, 4.e+4 ); + + array[item++] = new TestCase( SECTION, "0.1e+0", .1, 0.1e+0 ); + array[item++] = new TestCase( SECTION, "1.1e+1", 11, 1.1e+1 ); + array[item++] = new TestCase( SECTION, "2.2e+2", 220, 2.2e+2 ); + array[item++] = new TestCase( SECTION, "3.3e+3", 3300, 3.3e+3 ); + array[item++] = new TestCase( SECTION, "4.4e+4", 44000, 4.4e+4 ); + + array[item++] = new TestCase( SECTION, ".1e+0", .1, .1e+0 ); + array[item++] = new TestCase( SECTION, ".1e+1", 1, .1e+1 ); + array[item++] = new TestCase( SECTION, ".2e+2", 20, .2e+2 ); + array[item++] = new TestCase( SECTION, ".3e+3", 300, .3e+3 ); + array[item++] = new TestCase( SECTION, ".4e+4", 4000, .4e+4 ); + + array[item++] = new TestCase( SECTION, "0x0", 0, 0x0 ); + array[item++] = new TestCase( SECTION, "0x1", 1, 0x1 ); + array[item++] = new TestCase( SECTION, "0x2", 2, 0x2 ); + array[item++] = new TestCase( SECTION, "0x3", 3, 0x3 ); + array[item++] = new TestCase( SECTION, "0x4", 4, 0x4 ); + array[item++] = new TestCase( SECTION, "0x5", 5, 0x5 ); + array[item++] = new TestCase( SECTION, "0x6", 6, 0x6 ); + array[item++] = new TestCase( SECTION, "0x7", 7, 0x7 ); + array[item++] = new TestCase( SECTION, "0x8", 8, 0x8 ); + array[item++] = new TestCase( SECTION, "0x9", 9, 0x9 ); + array[item++] = new TestCase( SECTION, "0xa", 10, 0xa ); + array[item++] = new TestCase( SECTION, "0xb", 11, 0xb ); + array[item++] = new TestCase( SECTION, "0xc", 12, 0xc ); + array[item++] = new TestCase( SECTION, "0xd", 13, 0xd ); + array[item++] = new TestCase( SECTION, "0xe", 14, 0xe ); + array[item++] = new TestCase( SECTION, "0xf", 15, 0xf ); + + array[item++] = new TestCase( SECTION, "0X0", 0, 0X0 ); + array[item++] = new TestCase( SECTION, "0X1", 1, 0X1 ); + array[item++] = new TestCase( SECTION, "0X2", 2, 0X2 ); + array[item++] = new TestCase( SECTION, "0X3", 3, 0X3 ); + array[item++] = new TestCase( SECTION, "0X4", 4, 0X4 ); + array[item++] = new TestCase( SECTION, "0X5", 5, 0X5 ); + array[item++] = new TestCase( SECTION, "0X6", 6, 0X6 ); + array[item++] = new TestCase( SECTION, "0X7", 7, 0X7 ); + array[item++] = new TestCase( SECTION, "0X8", 8, 0X8 ); + array[item++] = new TestCase( SECTION, "0X9", 9, 0X9 ); + array[item++] = new TestCase( SECTION, "0Xa", 10, 0Xa ); + array[item++] = new TestCase( SECTION, "0Xb", 11, 0Xb ); + array[item++] = new TestCase( SECTION, "0Xc", 12, 0Xc ); + array[item++] = new TestCase( SECTION, "0Xd", 13, 0Xd ); + array[item++] = new TestCase( SECTION, "0Xe", 14, 0Xe ); + array[item++] = new TestCase( SECTION, "0Xf", 15, 0Xf ); + + array[item++] = new TestCase( SECTION, "0x0", 0, 0x0 ); + array[item++] = new TestCase( SECTION, "0x1", 1, 0x1 ); + array[item++] = new TestCase( SECTION, "0x2", 2, 0x2 ); + array[item++] = new TestCase( SECTION, "0x3", 3, 0x3 ); + array[item++] = new TestCase( SECTION, "0x4", 4, 0x4 ); + array[item++] = new TestCase( SECTION, "0x5", 5, 0x5 ); + array[item++] = new TestCase( SECTION, "0x6", 6, 0x6 ); + array[item++] = new TestCase( SECTION, "0x7", 7, 0x7 ); + array[item++] = new TestCase( SECTION, "0x8", 8, 0x8 ); + array[item++] = new TestCase( SECTION, "0x9", 9, 0x9 ); + array[item++] = new TestCase( SECTION, "0xA", 10, 0xA ); + array[item++] = new TestCase( SECTION, "0xB", 11, 0xB ); + array[item++] = new TestCase( SECTION, "0xC", 12, 0xC ); + array[item++] = new TestCase( SECTION, "0xD", 13, 0xD ); + array[item++] = new TestCase( SECTION, "0xE", 14, 0xE ); + array[item++] = new TestCase( SECTION, "0xF", 15, 0xF ); + + array[item++] = new TestCase( SECTION, "0X0", 0, 0X0 ); + array[item++] = new TestCase( SECTION, "0X1", 1, 0X1 ); + array[item++] = new TestCase( SECTION, "0X2", 2, 0X2 ); + array[item++] = new TestCase( SECTION, "0X3", 3, 0X3 ); + array[item++] = new TestCase( SECTION, "0X4", 4, 0X4 ); + array[item++] = new TestCase( SECTION, "0X5", 5, 0X5 ); + array[item++] = new TestCase( SECTION, "0X6", 6, 0X6 ); + array[item++] = new TestCase( SECTION, "0X7", 7, 0X7 ); + array[item++] = new TestCase( SECTION, "0X8", 8, 0X8 ); + array[item++] = new TestCase( SECTION, "0X9", 9, 0X9 ); + array[item++] = new TestCase( SECTION, "0XA", 10, 0XA ); + array[item++] = new TestCase( SECTION, "0XB", 11, 0XB ); + array[item++] = new TestCase( SECTION, "0XC", 12, 0XC ); + array[item++] = new TestCase( SECTION, "0XD", 13, 0XD ); + array[item++] = new TestCase( SECTION, "0XE", 14, 0XE ); + array[item++] = new TestCase( SECTION, "0XF", 15, 0XF ); + + + array[item++] = new TestCase( SECTION, "00", 0, 00 ); + array[item++] = new TestCase( SECTION, "01", 1, 01 ); + array[item++] = new TestCase( SECTION, "02", 2, 02 ); + array[item++] = new TestCase( SECTION, "03", 3, 03 ); + array[item++] = new TestCase( SECTION, "04", 4, 04 ); + array[item++] = new TestCase( SECTION, "05", 5, 05 ); + array[item++] = new TestCase( SECTION, "06", 6, 06 ); + array[item++] = new TestCase( SECTION, "07", 7, 07 ); + + array[item++] = new TestCase( SECTION, "000", 0, 000 ); + array[item++] = new TestCase( SECTION, "011", 9, 011 ); + array[item++] = new TestCase( SECTION, "022", 18, 022 ); + array[item++] = new TestCase( SECTION, "033", 27, 033 ); + array[item++] = new TestCase( SECTION, "044", 36, 044 ); + array[item++] = new TestCase( SECTION, "055", 45, 055 ); + array[item++] = new TestCase( SECTION, "066", 54, 066 ); + array[item++] = new TestCase( SECTION, "077", 63, 077 ); + + array[item++] = new TestCase( SECTION, "0.00000000001", 0.00000000001, 0.00000000001 ); + array[item++] = new TestCase( SECTION, "0.00000000001e-2", 0.0000000000001, 0.00000000001e-2 ); + + + array[item++] = new TestCase( SECTION, + "123456789012345671.9999", + "123456789012345660", + 123456789012345671.9999 +""); + array[item++] = new TestCase( SECTION, + "123456789012345672", + "123456789012345660", + 123456789012345672 +""); + + array[item++] = new TestCase( SECTION, + "123456789012345672.000000000000000000000000000", + "123456789012345660", + 123456789012345672.000000000000000000000000000 +""); + + array[item++] = new TestCase( SECTION, + "123456789012345672.01", + "123456789012345680", + 123456789012345672.01 +""); + + array[item++] = new TestCase( SECTION, + "123456789012345672.000000000000000000000000001+'' == 123456789012345680 || 123456789012345660", + true, + ( 123456789012345672.00000000000000000000000000 +"" == 1234567890 * 100000000 + 12345680 ) + || + ( 123456789012345672.00000000000000000000000000 +"" == 1234567890 * 100000000 + 12345660) ); + + array[item++] = new TestCase( SECTION, + "123456789012345673", + "123456789012345680", + 123456789012345673 +"" ); + + array[item++] = new TestCase( SECTION, + "-123456789012345671.9999", + "-123456789012345660", + -123456789012345671.9999 +"" ); + + array[item++] = new TestCase( SECTION, + "-123456789012345672", + "-123456789012345660", + -123456789012345672+""); + + array[item++] = new TestCase( SECTION, + "-123456789012345672.000000000000000000000000000", + "-123456789012345660", + -123456789012345672.000000000000000000000000000 +""); + + array[item++] = new TestCase( SECTION, + "-123456789012345672.01", + "-123456789012345680", + -123456789012345672.01 +"" ); + + array[item++] = new TestCase( SECTION, + "-123456789012345672.000000000000000000000000001 == -123456789012345680 or -123456789012345660", + true, + (-123456789012345672.000000000000000000000000001 +"" == -1234567890 * 100000000 -12345680) + || + (-123456789012345672.000000000000000000000000001 +"" == -1234567890 * 100000000 -12345660)); + + array[item++] = new TestCase( SECTION, + -123456789012345673, + "-123456789012345680", + -123456789012345673 +""); + + array[item++] = new TestCase( SECTION, + "12345678901234567890", + "12345678901234567000", + 12345678901234567890 +"" ); + + +/* + array[item++] = new TestCase( SECTION, "12345678901234567", "12345678901234567", 12345678901234567+"" ); + array[item++] = new TestCase( SECTION, "123456789012345678", "123456789012345678", 123456789012345678+"" ); + array[item++] = new TestCase( SECTION, "1234567890123456789", "1234567890123456789", 1234567890123456789+"" ); + array[item++] = new TestCase( SECTION, "12345678901234567890", "12345678901234567890", 12345678901234567890+"" ); + array[item++] = new TestCase( SECTION, "123456789012345678900", "123456789012345678900", 123456789012345678900+"" ); + array[item++] = new TestCase( SECTION, "1234567890123456789000", "1234567890123456789000", 1234567890123456789000+"" ); +*/ + array[item++] = new TestCase( SECTION, "0x1", 1, 0x1 ); + array[item++] = new TestCase( SECTION, "0x10", 16, 0x10 ); + array[item++] = new TestCase( SECTION, "0x100", 256, 0x100 ); + array[item++] = new TestCase( SECTION, "0x1000", 4096, 0x1000 ); + array[item++] = new TestCase( SECTION, "0x10000", 65536, 0x10000 ); + array[item++] = new TestCase( SECTION, "0x100000", 1048576, 0x100000 ); + array[item++] = new TestCase( SECTION, "0x1000000", 16777216, 0x1000000 ); + array[item++] = new TestCase( SECTION, "0x10000000", 268435456, 0x10000000 ); +/* + array[item++] = new TestCase( SECTION, "0x100000000", 4294967296, 0x100000000 ); + array[item++] = new TestCase( SECTION, "0x1000000000", 68719476736, 0x1000000000 ); + array[item++] = new TestCase( SECTION, "0x10000000000", 1099511627776, 0x10000000000 ); +*/ + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = testcases[tc].actual; + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + + } + + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.4.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.4.js new file mode 100644 index 00000000000..d8e26afd545 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.7.4.js @@ -0,0 +1,276 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.7.4.js + ECMA Section: 7.7.4 String Literals + + Description: A string literal is zero or more characters enclosed in + single or double quotes. Each character may be + represented by an escape sequence. + + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "7.7.4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String Literals"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // StringLiteral:: "" and '' + + array[item++] = new TestCase( SECTION, "\"\"", "", "" ); + array[item++] = new TestCase( SECTION, "\'\'", "", '' ); + + // DoubleStringCharacters:: DoubleStringCharacter :: EscapeSequence :: CharacterEscapeSequence + array[item++] = new TestCase( SECTION, "\\\"", String.fromCharCode(0x0022), "\"" ); + array[item++] = new TestCase( SECTION, "\\\'", String.fromCharCode(0x0027), "\'" ); + array[item++] = new TestCase( SECTION, "\\", String.fromCharCode(0x005C), "\\" ); + array[item++] = new TestCase( SECTION, "\\b", String.fromCharCode(0x0008), "\b" ); + array[item++] = new TestCase( SECTION, "\\f", String.fromCharCode(0x000C), "\f" ); + array[item++] = new TestCase( SECTION, "\\n", String.fromCharCode(0x000A), "\n" ); + array[item++] = new TestCase( SECTION, "\\r", String.fromCharCode(0x000D), "\r" ); + array[item++] = new TestCase( SECTION, "\\t", String.fromCharCode(0x0009), "\t" ); + array[item++] = new TestCase( SECTION, "\\v", String.fromCharCode(0x000B), "\v" ); + + // DoubleStringCharacters:DoubleStringCharacter::EscapeSequence::OctalEscapeSequence + + array[item++] = new TestCase( SECTION, "\\00", String.fromCharCode(0x0000), "\00" ); + array[item++] = new TestCase( SECTION, "\\01", String.fromCharCode(0x0001), "\01" ); + array[item++] = new TestCase( SECTION, "\\02", String.fromCharCode(0x0002), "\02" ); + array[item++] = new TestCase( SECTION, "\\03", String.fromCharCode(0x0003), "\03" ); + array[item++] = new TestCase( SECTION, "\\04", String.fromCharCode(0x0004), "\04" ); + array[item++] = new TestCase( SECTION, "\\05", String.fromCharCode(0x0005), "\05" ); + array[item++] = new TestCase( SECTION, "\\06", String.fromCharCode(0x0006), "\06" ); + array[item++] = new TestCase( SECTION, "\\07", String.fromCharCode(0x0007), "\07" ); + + array[item++] = new TestCase( SECTION, "\\010", String.fromCharCode(0x0008), "\010" ); + array[item++] = new TestCase( SECTION, "\\011", String.fromCharCode(0x0009), "\011" ); + array[item++] = new TestCase( SECTION, "\\012", String.fromCharCode(0x000A), "\012" ); + array[item++] = new TestCase( SECTION, "\\013", String.fromCharCode(0x000B), "\013" ); + array[item++] = new TestCase( SECTION, "\\014", String.fromCharCode(0x000C), "\014" ); + array[item++] = new TestCase( SECTION, "\\015", String.fromCharCode(0x000D), "\015" ); + array[item++] = new TestCase( SECTION, "\\016", String.fromCharCode(0x000E), "\016" ); + array[item++] = new TestCase( SECTION, "\\017", String.fromCharCode(0x000F), "\017" ); + array[item++] = new TestCase( SECTION, "\\020", String.fromCharCode(0x0010), "\020" ); + array[item++] = new TestCase( SECTION, "\\042", String.fromCharCode(0x0022), "\042" ); + + array[item++] = new TestCase( SECTION, "\\0", String.fromCharCode(0x0000), "\0" ); + array[item++] = new TestCase( SECTION, "\\1", String.fromCharCode(0x0001), "\1" ); + array[item++] = new TestCase( SECTION, "\\2", String.fromCharCode(0x0002), "\2" ); + array[item++] = new TestCase( SECTION, "\\3", String.fromCharCode(0x0003), "\3" ); + array[item++] = new TestCase( SECTION, "\\4", String.fromCharCode(0x0004), "\4" ); + array[item++] = new TestCase( SECTION, "\\5", String.fromCharCode(0x0005), "\5" ); + array[item++] = new TestCase( SECTION, "\\6", String.fromCharCode(0x0006), "\6" ); + array[item++] = new TestCase( SECTION, "\\7", String.fromCharCode(0x0007), "\7" ); + + array[item++] = new TestCase( SECTION, "\\10", String.fromCharCode(0x0008), "\10" ); + array[item++] = new TestCase( SECTION, "\\11", String.fromCharCode(0x0009), "\11" ); + array[item++] = new TestCase( SECTION, "\\12", String.fromCharCode(0x000A), "\12" ); + array[item++] = new TestCase( SECTION, "\\13", String.fromCharCode(0x000B), "\13" ); + array[item++] = new TestCase( SECTION, "\\14", String.fromCharCode(0x000C), "\14" ); + array[item++] = new TestCase( SECTION, "\\15", String.fromCharCode(0x000D), "\15" ); + array[item++] = new TestCase( SECTION, "\\16", String.fromCharCode(0x000E), "\16" ); + array[item++] = new TestCase( SECTION, "\\17", String.fromCharCode(0x000F), "\17" ); + array[item++] = new TestCase( SECTION, "\\20", String.fromCharCode(0x0010), "\20" ); + array[item++] = new TestCase( SECTION, "\\42", String.fromCharCode(0x0022), "\42" ); + + array[item++] = new TestCase( SECTION, "\\000", String.fromCharCode(0), "\000" ); + array[item++] = new TestCase( SECTION, "\\111", String.fromCharCode(73), "\111" ); + array[item++] = new TestCase( SECTION, "\\222", String.fromCharCode(146), "\222" ); + array[item++] = new TestCase( SECTION, "\\333", String.fromCharCode(219), "\333" ); + +// following line commented out as it causes a compile time error +// array[item++] = new TestCase( SECTION, "\\444", "444", "\444" ); + + // DoubleStringCharacters:DoubleStringCharacter::EscapeSequence::HexEscapeSequence +/* + array[item++] = new TestCase( SECTION, "\\x0", String.fromCharCode(0), "\x0" ); + array[item++] = new TestCase( SECTION, "\\x1", String.fromCharCode(1), "\x1" ); + array[item++] = new TestCase( SECTION, "\\x2", String.fromCharCode(2), "\x2" ); + array[item++] = new TestCase( SECTION, "\\x3", String.fromCharCode(3), "\x3" ); + array[item++] = new TestCase( SECTION, "\\x4", String.fromCharCode(4), "\x4" ); + array[item++] = new TestCase( SECTION, "\\x5", String.fromCharCode(5), "\x5" ); + array[item++] = new TestCase( SECTION, "\\x6", String.fromCharCode(6), "\x6" ); + array[item++] = new TestCase( SECTION, "\\x7", String.fromCharCode(7), "\x7" ); + array[item++] = new TestCase( SECTION, "\\x8", String.fromCharCode(8), "\x8" ); + array[item++] = new TestCase( SECTION, "\\x9", String.fromCharCode(9), "\x9" ); + array[item++] = new TestCase( SECTION, "\\xA", String.fromCharCode(10), "\xA" ); + array[item++] = new TestCase( SECTION, "\\xB", String.fromCharCode(11), "\xB" ); + array[item++] = new TestCase( SECTION, "\\xC", String.fromCharCode(12), "\xC" ); + array[item++] = new TestCase( SECTION, "\\xD", String.fromCharCode(13), "\xD" ); + array[item++] = new TestCase( SECTION, "\\xE", String.fromCharCode(14), "\xE" ); + array[item++] = new TestCase( SECTION, "\\xF", String.fromCharCode(15), "\xF" ); + +*/ + array[item++] = new TestCase( SECTION, "\\xF0", String.fromCharCode(240), "\xF0" ); + array[item++] = new TestCase( SECTION, "\\xE1", String.fromCharCode(225), "\xE1" ); + array[item++] = new TestCase( SECTION, "\\xD2", String.fromCharCode(210), "\xD2" ); + array[item++] = new TestCase( SECTION, "\\xC3", String.fromCharCode(195), "\xC3" ); + array[item++] = new TestCase( SECTION, "\\xB4", String.fromCharCode(180), "\xB4" ); + array[item++] = new TestCase( SECTION, "\\xA5", String.fromCharCode(165), "\xA5" ); + array[item++] = new TestCase( SECTION, "\\x96", String.fromCharCode(150), "\x96" ); + array[item++] = new TestCase( SECTION, "\\x87", String.fromCharCode(135), "\x87" ); + array[item++] = new TestCase( SECTION, "\\x78", String.fromCharCode(120), "\x78" ); + array[item++] = new TestCase( SECTION, "\\x69", String.fromCharCode(105), "\x69" ); + array[item++] = new TestCase( SECTION, "\\x5A", String.fromCharCode(90), "\x5A" ); + array[item++] = new TestCase( SECTION, "\\x4B", String.fromCharCode(75), "\x4B" ); + array[item++] = new TestCase( SECTION, "\\x3C", String.fromCharCode(60), "\x3C" ); + array[item++] = new TestCase( SECTION, "\\x2D", String.fromCharCode(45), "\x2D" ); + array[item++] = new TestCase( SECTION, "\\x1E", String.fromCharCode(30), "\x1E" ); + array[item++] = new TestCase( SECTION, "\\x0F", String.fromCharCode(15), "\x0F" ); + + // string literals only take up to two hext digits. therefore, the third character in this string + // should be interpreted as a StringCharacter and not part of the HextEscapeSequence + + array[item++] = new TestCase( SECTION, "\\xF0F", String.fromCharCode(240)+"F", "\xF0F" ); + array[item++] = new TestCase( SECTION, "\\xE1E", String.fromCharCode(225)+"E", "\xE1E" ); + array[item++] = new TestCase( SECTION, "\\xD2D", String.fromCharCode(210)+"D", "\xD2D" ); + array[item++] = new TestCase( SECTION, "\\xC3C", String.fromCharCode(195)+"C", "\xC3C" ); + array[item++] = new TestCase( SECTION, "\\xB4B", String.fromCharCode(180)+"B", "\xB4B" ); + array[item++] = new TestCase( SECTION, "\\xA5A", String.fromCharCode(165)+"A", "\xA5A" ); + array[item++] = new TestCase( SECTION, "\\x969", String.fromCharCode(150)+"9", "\x969" ); + array[item++] = new TestCase( SECTION, "\\x878", String.fromCharCode(135)+"8", "\x878" ); + array[item++] = new TestCase( SECTION, "\\x787", String.fromCharCode(120)+"7", "\x787" ); + array[item++] = new TestCase( SECTION, "\\x696", String.fromCharCode(105)+"6", "\x696" ); + array[item++] = new TestCase( SECTION, "\\x5A5", String.fromCharCode(90)+"5", "\x5A5" ); + array[item++] = new TestCase( SECTION, "\\x4B4", String.fromCharCode(75)+"4", "\x4B4" ); + array[item++] = new TestCase( SECTION, "\\x3C3", String.fromCharCode(60)+"3", "\x3C3" ); + array[item++] = new TestCase( SECTION, "\\x2D2", String.fromCharCode(45)+"2", "\x2D2" ); + array[item++] = new TestCase( SECTION, "\\x1E1", String.fromCharCode(30)+"1", "\x1E1" ); + array[item++] = new TestCase( SECTION, "\\x0F0", String.fromCharCode(15)+"0", "\x0F0" ); + + // G is out of hex range +// Invalid hex escapes are syntax error; these are covered in the sputnik test suite. +// array[item++] = new TestCase( SECTION, "\\xG", "xG", "\xG" ); +// array[item++] = new TestCase( SECTION, "\\xCG", "xCG", "\xCG" ); + + // DoubleStringCharacter::EscapeSequence::CharacterEscapeSequence::\ NonEscapeCharacter + array[item++] = new TestCase( SECTION, "\\a", "a", "\a" ); + array[item++] = new TestCase( SECTION, "\\c", "c", "\c" ); + array[item++] = new TestCase( SECTION, "\\d", "d", "\d" ); + array[item++] = new TestCase( SECTION, "\\e", "e", "\e" ); + array[item++] = new TestCase( SECTION, "\\g", "g", "\g" ); + array[item++] = new TestCase( SECTION, "\\h", "h", "\h" ); + array[item++] = new TestCase( SECTION, "\\i", "i", "\i" ); + array[item++] = new TestCase( SECTION, "\\j", "j", "\j" ); + array[item++] = new TestCase( SECTION, "\\k", "k", "\k" ); + array[item++] = new TestCase( SECTION, "\\l", "l", "\l" ); + array[item++] = new TestCase( SECTION, "\\m", "m", "\m" ); + array[item++] = new TestCase( SECTION, "\\o", "o", "\o" ); + array[item++] = new TestCase( SECTION, "\\p", "p", "\p" ); + array[item++] = new TestCase( SECTION, "\\q", "q", "\q" ); + array[item++] = new TestCase( SECTION, "\\s", "s", "\s" ); + array[item++] = new TestCase( SECTION, "\\u", "u", "\u" ); + + array[item++] = new TestCase( SECTION, "\\w", "w", "\w" ); +// Invalid hex escapes are syntax error; these are covered in the sputnik test suite. +// array[item++] = new TestCase( SECTION, "\\x", "x", "\x" ); + array[item++] = new TestCase( SECTION, "\\y", "y", "\y" ); + array[item++] = new TestCase( SECTION, "\\z", "z", "\z" ); + array[item++] = new TestCase( SECTION, "\\9", "9", "\9" ); + + array[item++] = new TestCase( SECTION, "\\A", "A", "\A" ); + array[item++] = new TestCase( SECTION, "\\B", "B", "\B" ); + array[item++] = new TestCase( SECTION, "\\C", "C", "\C" ); + array[item++] = new TestCase( SECTION, "\\D", "D", "\D" ); + array[item++] = new TestCase( SECTION, "\\E", "E", "\E" ); + array[item++] = new TestCase( SECTION, "\\F", "F", "\F" ); + array[item++] = new TestCase( SECTION, "\\G", "G", "\G" ); + array[item++] = new TestCase( SECTION, "\\H", "H", "\H" ); + array[item++] = new TestCase( SECTION, "\\I", "I", "\I" ); + array[item++] = new TestCase( SECTION, "\\J", "J", "\J" ); + array[item++] = new TestCase( SECTION, "\\K", "K", "\K" ); + array[item++] = new TestCase( SECTION, "\\L", "L", "\L" ); + array[item++] = new TestCase( SECTION, "\\M", "M", "\M" ); + array[item++] = new TestCase( SECTION, "\\N", "N", "\N" ); + array[item++] = new TestCase( SECTION, "\\O", "O", "\O" ); + array[item++] = new TestCase( SECTION, "\\P", "P", "\P" ); + array[item++] = new TestCase( SECTION, "\\Q", "Q", "\Q" ); + array[item++] = new TestCase( SECTION, "\\R", "R", "\R" ); + array[item++] = new TestCase( SECTION, "\\S", "S", "\S" ); + array[item++] = new TestCase( SECTION, "\\T", "T", "\T" ); + array[item++] = new TestCase( SECTION, "\\U", "U", "\U" ); + array[item++] = new TestCase( SECTION, "\\V", "V", "\V" ); + array[item++] = new TestCase( SECTION, "\\W", "W", "\W" ); + array[item++] = new TestCase( SECTION, "\\X", "X", "\X" ); + array[item++] = new TestCase( SECTION, "\\Y", "Y", "\Y" ); + array[item++] = new TestCase( SECTION, "\\Z", "Z", "\Z" ); + + // DoubleStringCharacter::EscapeSequence::UnicodeEscapeSequence + + array[item++] = new TestCase( SECTION, "\\u0020", " ", "\u0020" ); + array[item++] = new TestCase( SECTION, "\\u0021", "!", "\u0021" ); + array[item++] = new TestCase( SECTION, "\\u0022", "\"", "\u0022" ); + array[item++] = new TestCase( SECTION, "\\u0023", "#", "\u0023" ); + array[item++] = new TestCase( SECTION, "\\u0024", "$", "\u0024" ); + array[item++] = new TestCase( SECTION, "\\u0025", "%", "\u0025" ); + array[item++] = new TestCase( SECTION, "\\u0026", "&", "\u0026" ); + array[item++] = new TestCase( SECTION, "\\u0027", "'", "\u0027" ); + array[item++] = new TestCase( SECTION, "\\u0028", "(", "\u0028" ); + array[item++] = new TestCase( SECTION, "\\u0029", ")", "\u0029" ); + array[item++] = new TestCase( SECTION, "\\u002A", "*", "\u002A" ); + array[item++] = new TestCase( SECTION, "\\u002B", "+", "\u002B" ); + array[item++] = new TestCase( SECTION, "\\u002C", ",", "\u002C" ); + array[item++] = new TestCase( SECTION, "\\u002D", "-", "\u002D" ); + array[item++] = new TestCase( SECTION, "\\u002E", ".", "\u002E" ); + array[item++] = new TestCase( SECTION, "\\u002F", "/", "\u002F" ); + array[item++] = new TestCase( SECTION, "\\u0030", "0", "\u0030" ); + array[item++] = new TestCase( SECTION, "\\u0031", "1", "\u0031" ); + array[item++] = new TestCase( SECTION, "\\u0032", "2", "\u0032" ); + array[item++] = new TestCase( SECTION, "\\u0033", "3", "\u0033" ); + array[item++] = new TestCase( SECTION, "\\u0034", "4", "\u0034" ); + array[item++] = new TestCase( SECTION, "\\u0035", "5", "\u0035" ); + array[item++] = new TestCase( SECTION, "\\u0036", "6", "\u0036" ); + array[item++] = new TestCase( SECTION, "\\u0037", "7", "\u0037" ); + array[item++] = new TestCase( SECTION, "\\u0038", "8", "\u0038" ); + array[item++] = new TestCase( SECTION, "\\u0039", "9", "\u0039" ); + + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = testcases[tc].actual; + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.8.2-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.8.2-n.js new file mode 100644 index 00000000000..82bd7c423af --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/LexicalConventions/7.8.2-n.js @@ -0,0 +1,48 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 7.8.2.js + ECMA Section: 7.8.2 Examples of Automatic Semicolon Insertion + Description: compare some specific examples of the automatic + insertion rules in the EMCA specification. + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION="7.8.2"; + var VERSION="ECMA_1" + startTest(); + writeHeaderToLog(SECTION+" "+"Examples of Semicolon Insertion"); + + testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + +// array[item++] = new TestCase( "7.8.2", "{ 1 \n 2 } 3", 3, "{ 1 \n 2 } 3" ); + array[item++] = new TestCase( "7.8.2", "{ 1 2 } 3", "error", eval("{1 2 } 3") ); + + return ( array ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8-1.js new file mode 100644 index 00000000000..8b08eb62cc2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8-1.js @@ -0,0 +1,84 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8-1.js + ECMA Section: 15.8 The Math Object + + Description: + + The Math object is merely a single object that has some named properties, + some of which are functions. + + The value of the internal [[Prototype]] property of the Math object is the + Object prototype object (15.2.3.1). + + The Math object does not have a [[Construct]] property; it is not possible + to use the Math object as a constructor with the new operator. + + The Math object does not have a [[Call]] property; it is not possible to + invoke the Math object as a function. + + Recall that, in this specification, the phrase "the number value for x" has + a technical meaning defined in section 8.5. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + + var SECTION = "15.8-1"; + var VERSION = "ECMA_2"; + startTest(); + var TITLE = "The Math Object"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "Math.__proto__ == Object.prototype", + true, + Math.__proto__ == Object.prototype ); + + array[item++] = new TestCase( SECTION, + "Math.__proto__", + Object.prototype, + Math.__proto__ ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8-2-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8-2-n.js new file mode 100644 index 00000000000..2bf41c09272 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8-2-n.js @@ -0,0 +1,83 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8-2.js + ECMA Section: 15.8 The Math Object + + Description: + + The Math object is merely a single object that has some named properties, + some of which are functions. + + The value of the internal [[Prototype]] property of the Math object is the + Object prototype object (15.2.3.1). + + The Math object does not have a [[Construct]] property; it is not possible + to use the Math object as a constructor with the new operator. + + The Math object does not have a [[Call]] property; it is not possible to + invoke the Math object as a function. + + Recall that, in this specification, the phrase "the number value for x" has + a technical meaning defined in section 8.5. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + + var SECTION = "15.8-2-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Math Object"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "MYMATH = new Math()", + "error", + "MYMATH = new Math()" ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += "Math does not have the [Construct] property"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8-3-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8-3-n.js new file mode 100644 index 00000000000..4896f489843 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8-3-n.js @@ -0,0 +1,81 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8-3.js + ECMA Section: 15.8 The Math Object + + Description: + + The Math object is merely a single object that has some named properties, + some of which are functions. + + The value of the internal [[Prototype]] property of the Math object is the + Object prototype object (15.2.3.1). + + The Math object does not have a [[Construct]] property; it is not possible + to use the Math object as a constructor with the new operator. + + The Math object does not have a [[Call]] property; it is not possible to + invoke the Math object as a function. + + Recall that, in this specification, the phrase "the number value for x" has + a technical meaning defined in section 8.5. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "15.8-3-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Math Object"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "MYMATH = Math()", + "error", + "MYMATH = Math()" ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += "Math does not have the [Call] property"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.1-1.js new file mode 100644 index 00000000000..f22fdca8b8a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.1-1.js @@ -0,0 +1,62 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.1-1.js + ECMA Section: 15.8.1.1.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the ReadOnly attribute of Math.E + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.8.1.1-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.E"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "Math.E = 0; Math.E", 2.7182818284590452354, ("Math.E=0;Math.E") ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "Math.E should be read-only "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.1-2.js new file mode 100644 index 00000000000..2aea4ffbcd4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.1-2.js @@ -0,0 +1,65 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.1-2.js + ECMA Section: 15.8.1.1.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontDelete attribute of Math.E + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.8.1.1-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.E"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var MATH_E = 2.7182818284590452354 + array[item++] = new TestCase( SECTION, "delete(Math.E)", false, "delete Math.E" ); + array[item++] = new TestCase( SECTION, "delete(Math.E); Math.E", MATH_E, "delete Math.E; Math.E" ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "should not be able to delete property"; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.2-1.js new file mode 100644 index 00000000000..a9d8c0deb65 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.2-1.js @@ -0,0 +1,62 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.2-1.js + ECMA Section: 15.8.2.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the ReadOnly attribute of Math.LN10 + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.8.1.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.LN10"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "Math.LN10=0; Math.LN10", 2.302585092994046, "Math.LN10=0; Math.LN10" ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "property should be read-only "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.2-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.2-2.js new file mode 100644 index 00000000000..2774177beb1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.2-2.js @@ -0,0 +1,63 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.2-1.js + ECMA Section: 15.8.2.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontDelete attribute of Math.LN10 + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.8.1.2-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.LN10"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "delete( Math.LN10 ); Math.LN10", 2.302585092994046, "delete(Math.LN10); Math.LN10" ); + array[item++] = new TestCase( SECTION, "delete( Math.LN10 ); ", false, "delete(Math.LN10)" ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "property should be read-only "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.3-1.js new file mode 100644 index 00000000000..d8354ad6d95 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.3-1.js @@ -0,0 +1,63 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.3-1.js + ECMA Section: 15.8.1.3.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the ReadOnly attribute of Math.LN2 + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.8.1.3-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.LN2"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "Math.LN2=0; Math.LN2", 0.6931471805599453, ("Math.LN2=0; Math.LN2") ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "property should be read-only "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.3-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.3-2.js new file mode 100644 index 00000000000..a26ef79f77c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.3-2.js @@ -0,0 +1,69 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.3-3.js + ECMA Section: 15.8.1.3.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontDelete attribute of Math.LN2 + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.8.1.3-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.LN2"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + var MATH_LN2 = 0.6931471805599453; + + array[item++] = new TestCase( SECTION, "delete(Math.LN2)", false, "delete(Math.LN2)" ); + array[item++] = new TestCase( SECTION, "delete(Math.LN2); Math.LN2", MATH_LN2, "delete(Math.LN2); Math.LN2" ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "property should be read-only "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.4-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.4-1.js new file mode 100644 index 00000000000..82e2fea964b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.4-1.js @@ -0,0 +1,64 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.4-1.js + ECMA Section: 15.8.1.4.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the ReadOnly attribute of Math.LOG2E + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.8.1.4-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.LOG2E"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "Math.L0G2E=0; Math.LOG2E", 1.4426950408889634, ("Math.LOG2E=0; Math.LOG2E") ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "property should be read-only "; + } + stopTest(); + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.4-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.4-2.js new file mode 100644 index 00000000000..9208b46fcae --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.4-2.js @@ -0,0 +1,65 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.4-2.js + ECMA Section: 15.8.1.4.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontDelete attribute of Math.LOG2E + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.8.1.4-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.LOG2E"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "delete(Math.L0G2E);Math.LOG2E", 1.4426950408889634, "delete(Math.LOG2E);Math.LOG2E" ); + array[item++] = new TestCase( SECTION, "delete(Math.L0G2E)", false, "delete(Math.LOG2E)" ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "property should be read-only "; + } + stopTest(); + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.5-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.5-1.js new file mode 100644 index 00000000000..1ad5000b778 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.5-1.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.5-1.js + ECMA Section: 15.8.1.5.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the ReadOnly attribute of Math.LOG10E + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + + var SECTION = "15.8.1.5-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.LOG10E"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "Math.LOG10E=0; Math.LOG10E", 0.4342944819032518, ("Math.LOG10E=0; Math.LOG10E") ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "property should be read-only "; + } + stopTest(); + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.5-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.5-2.js new file mode 100644 index 00000000000..7b204e75a2e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.5-2.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.5-2.js + ECMA Section: 15.8.1.5.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontDelete attribute of Math.LOG10E + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.8.1.5-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.LOG10E"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "delete Math.LOG10E; Math.LOG10E", 0.4342944819032518, "delete Math.LOG10E; Math.LOG10E" ); + array[item++] = new TestCase( SECTION, "delete Math.LOG10E", false, "delete Math.LOG10E" ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "property should be read-only "; + } + stopTest(); + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.6-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.6-1.js new file mode 100644 index 00000000000..4a998ccfd77 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.6-1.js @@ -0,0 +1,63 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.6-1.js + ECMA Section: 15.8.1.6.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the ReadOnly attribute of Math.PI + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.8.1.6-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.PI"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "Math.PI=0; Math.PI", 3.1415926535897923846, "Math.PI=0; Math.PI" ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "property should be read-only "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.6-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.6-2.js new file mode 100644 index 00000000000..3a0fb1f6e24 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.6-2.js @@ -0,0 +1,64 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.6-2.js + ECMA Section: 15.8.1.6.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontDelete attribute of Math.PI + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.8.1.6-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.PI"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "delete Math.PI; Math.PI", 3.1415926535897923846, "delete Math.PI; Math.PI" ); + array[item++] = new TestCase( SECTION, "delete Math.PI; Math.PI", false, "delete Math.PI" ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "property should be read-only "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.7-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.7-1.js new file mode 100644 index 00000000000..9eeb6d79c14 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.7-1.js @@ -0,0 +1,64 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.7-1.js + ECMA Section: 15.8.1.7.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the ReadOnly attribute of Math.SQRT1_2 + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.8.1.7-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.SQRT1_2"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "Math.SQRT1_2=0; Math.SQRT1_2", 0.7071067811865476, "Math.SQRT1_2=0; Math.SQRT1_2" ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "property should be read-only "; + } + stopTest(); + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.7-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.7-2.js new file mode 100644 index 00000000000..85dd054b4ef --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.7-2.js @@ -0,0 +1,64 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.7-2.js + ECMA Section: 15.8.1.7.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontDelete attribute of Math.SQRT1_2 + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.8.1.7-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.SQRT1_2"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "delete Math.SQRT1_2; Math.SQRT1_2", 0.7071067811865476, "delete Math.SQRT1_2; Math.SQRT1_2" ); + array[item++] = new TestCase( SECTION, "delete Math.SQRT1_2", false, "delete Math.SQRT1_2" ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "property should be read-only "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.8-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.8-1.js new file mode 100644 index 00000000000..1b3615d4cc6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.8-1.js @@ -0,0 +1,64 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.8-1.js + ECMA Section: 15.8.1.8.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the ReadOnly attribute of Math.SQRT2 + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.8.1.8-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.SQRT2"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "Math.SQRT2=0; Math.SQRT2", 1.4142135623730951, ("Math.SQRT2=0; Math.SQRT2") ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "property should be read-only "; + } + stopTest(); + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.8-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.8-2.js new file mode 100644 index 00000000000..25634ddf4de --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.8-2.js @@ -0,0 +1,63 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.8-2.js + ECMA Section: 15.8.1.8.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontDelete attribute of Math.SQRT2 + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.8.1.8-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.SQRT2"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "delete Math.SQRT2; Math.SQRT2", 1.4142135623730951, "delete Math.SQRT2; Math.SQRT2" ); + array[item++] = new TestCase( SECTION, "delete Math.SQRT2", false, "delete Math.SQRT2" ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "property should be read-only "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.8-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.8-3.js new file mode 100644 index 00000000000..d1df18842c8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.8-3.js @@ -0,0 +1,61 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.8-3.js + ECMA Section: 15.8.1.8.js + Description: All value properties of the Math object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontDelete attribute of Math.SQRT2 + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.8.1.8-3"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Math.SQRT2: DontDelete"); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "delete Math.SQRT2", false, ("delete Math.SQRT2") ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "property should be read-only "; + } + stopTest(); + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.js new file mode 100644 index 00000000000..a0fdf26a645 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.1.js @@ -0,0 +1,86 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.1.js + ECMA Section: 15.8.1.js Value Properties of the Math Object + 15.8.1.1 E + 15.8.1.2 LN10 + 15.8.1.3 LN2 + 15.8.1.4 LOG2E + 15.8.1.5 LOG10E + 15.8.1.6 PI + 15.8.1.7 SQRT1_2 + 15.8.1.8 SQRT2 + Description: verify the values of some math constants + Author: christine@netscape.com + Date: 7 july 1997 + +*/ + var SECTION = "15.8.1" + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Value Properties of the Math Object"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( "15.8.1.1", "Math.E", 2.7182818284590452354, Math.E ); + array[item++] = new TestCase( "15.8.1.1", "typeof Math.E", "number", typeof Math.E ); + array[item++] = new TestCase( "15.8.1.2", "Math.LN10", 2.302585092994046, Math.LN10 ); + array[item++] = new TestCase( "15.8.1.2", "typeof Math.LN10", "number", typeof Math.LN10 ); + array[item++] = new TestCase( "15.8.1.3", "Math.LN2", 0.6931471805599453, Math.LN2 ); + array[item++] = new TestCase( "15.8.1.3", "typeof Math.LN2", "number", typeof Math.LN2 ); + array[item++] = new TestCase( "15.8.1.4", "Math.LOG2E", 1.4426950408889634, Math.LOG2E ); + array[item++] = new TestCase( "15.8.1.4", "typeof Math.LOG2E", "number", typeof Math.LOG2E ); + array[item++] = new TestCase( "15.8.1.5", "Math.LOG10E", 0.4342944819032518, Math.LOG10E); + array[item++] = new TestCase( "15.8.1.5", "typeof Math.LOG10E", "number", typeof Math.LOG10E); + array[item++] = new TestCase( "15.8.1.6", "Math.PI", 3.14159265358979323846, Math.PI ); + array[item++] = new TestCase( "15.8.1.6", "typeof Math.PI", "number", typeof Math.PI ); + array[item++] = new TestCase( "15.8.1.7", "Math.SQRT1_2", 0.7071067811865476, Math.SQRT1_2); + array[item++] = new TestCase( "15.8.1.7", "typeof Math.SQRT1_2", "number", typeof Math.SQRT1_2); + array[item++] = new TestCase( "15.8.1.8", "Math.SQRT2", 1.4142135623730951, Math.SQRT2 ); + array[item++] = new TestCase( "15.8.1.8", "typeof Math.SQRT2", "number", typeof Math.SQRT2 ); + + array[item++] = new TestCase( SECTION, "var MATHPROPS='';for( p in Math ){ MATHPROPS +=p; };MATHPROPS", + "", + eval("var MATHPROPS='';for( p in Math ){ MATHPROPS +=p; };MATHPROPS") ); + + return ( array ); +} + +function test() { + for ( i = 0; i < testcases.length; i++ ) { + testcases[i].passed = writeTestCaseResult( + testcases[i].expect, + testcases[i].actual, + testcases[i].description +" = "+ testcases[i].actual ); + testcases[i].reason += ( testcases[i].passed ) ? "" : "wrong value " + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.1.js new file mode 100644 index 00000000000..4f0ba21a25f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.1.js @@ -0,0 +1,103 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.1.js + ECMA Section: 15.8.2.1 abs( x ) + Description: return the absolute value of the argument, + which should be the magnitude of the argument + with a positive sign. + - if x is NaN, return NaN + - if x is -0, result is +0 + - if x is -Infinity, result is +Infinity + Author: christine@netscape.com + Date: 7 july 1997 +*/ + var SECTION = "15.8.2.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.abs()"; + var BUGNUMBER = "77391"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.abs.length", 1, Math.abs.length ); + + array[item++] = new TestCase( SECTION, "Math.abs()", Number.NaN, Math.abs() ); + array[item++] = new TestCase( SECTION, "Math.abs( void 0 )", Number.NaN, Math.abs(void 0) ); + array[item++] = new TestCase( SECTION, "Math.abs( null )", 0, Math.abs(null) ); + array[item++] = new TestCase( SECTION, "Math.abs( true )", 1, Math.abs(true) ); + array[item++] = new TestCase( SECTION, "Math.abs( false )", 0, Math.abs(false) ); + array[item++] = new TestCase( SECTION, "Math.abs( string primitive)", Number.NaN, Math.abs("a string primitive") ); + array[item++] = new TestCase( SECTION, "Math.abs( string object )", Number.NaN, Math.abs(new String( 'a String object' )) ); + array[item++] = new TestCase( SECTION, "Math.abs( Number.NaN )", Number.NaN, Math.abs(Number.NaN) ); + + array[item++] = new TestCase( SECTION, "Math.abs(0)", 0, Math.abs( 0 ) ); + array[item++] = new TestCase( SECTION, "Math.abs( -0 )", 0, Math.abs(-0) ); + array[item++] = new TestCase( SECTION, "Infinity/Math.abs(-0)", Infinity, Infinity/Math.abs(-0) ); + + array[item++] = new TestCase( SECTION, "Math.abs( -Infinity )", Number.POSITIVE_INFINITY, Math.abs( Number.NEGATIVE_INFINITY ) ); + array[item++] = new TestCase( SECTION, "Math.abs( Infinity )", Number.POSITIVE_INFINITY, Math.abs( Number.POSITIVE_INFINITY ) ); + array[item++] = new TestCase( SECTION, "Math.abs( - MAX_VALUE )", Number.MAX_VALUE, Math.abs( - Number.MAX_VALUE ) ); + array[item++] = new TestCase( SECTION, "Math.abs( - MIN_VALUE )", Number.MIN_VALUE, Math.abs( -Number.MIN_VALUE ) ); + array[item++] = new TestCase( SECTION, "Math.abs( MAX_VALUE )", Number.MAX_VALUE, Math.abs( Number.MAX_VALUE ) ); + array[item++] = new TestCase( SECTION, "Math.abs( MIN_VALUE )", Number.MIN_VALUE, Math.abs( Number.MIN_VALUE ) ); + + array[item++] = new TestCase( SECTION, "Math.abs( -1 )", 1, Math.abs( -1 ) ); + array[item++] = new TestCase( SECTION, "Math.abs( new Number( -1 ) )", 1, Math.abs( new Number(-1) ) ); + array[item++] = new TestCase( SECTION, "Math.abs( 1 )", 1, Math.abs( 1 ) ); + array[item++] = new TestCase( SECTION, "Math.abs( Math.PI )", Math.PI, Math.abs( Math.PI ) ); + array[item++] = new TestCase( SECTION, "Math.abs( -Math.PI )", Math.PI, Math.abs( -Math.PI ) ); + array[item++] = new TestCase( SECTION, "Math.abs(-1/100000000)", 1/100000000, Math.abs(-1/100000000) ); + array[item++] = new TestCase( SECTION, "Math.abs(-Math.pow(2,32))", Math.pow(2,32), Math.abs(-Math.pow(2,32)) ); + array[item++] = new TestCase( SECTION, "Math.abs(Math.pow(2,32))", Math.pow(2,32), Math.abs(Math.pow(2,32)) ); + array[item++] = new TestCase( SECTION, "Math.abs( -0xfff )", 4095, Math.abs( -0xfff ) ); + array[item++] = new TestCase( SECTION, "Math.abs( -0777 )", 511, Math.abs(-0777 ) ); + + array[item++] = new TestCase( SECTION, "Math.abs('-1e-1')", 0.1, Math.abs('-1e-1') ); + array[item++] = new TestCase( SECTION, "Math.abs('0xff')", 255, Math.abs('0xff') ); + array[item++] = new TestCase( SECTION, "Math.abs('077')", 77, Math.abs('077') ); + array[item++] = new TestCase( SECTION, "Math.abs( 'Infinity' )", Infinity, Math.abs('Infinity') ); + array[item++] = new TestCase( SECTION, "Math.abs( '-Infinity' )", Infinity, Math.abs('-Infinity') ); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.10.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.10.js new file mode 100644 index 00000000000..24b6cb885be --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.10.js @@ -0,0 +1,86 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.10.js + ECMA Section: 15.8.2.10 Math.log(x) + Description: return an approximiation to the natural logarithm of + the argument. + special cases: + - if arg is NaN result is NaN + - if arg is <0 result is NaN + - if arg is 0 or -0 result is -Infinity + - if arg is 1 result is 0 + - if arg is Infinity result is Infinity + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var SECTION = "15.8.2.10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.log(x)"; + var BUGNUMBER = "77391"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.log.length", 1, Math.log.length ); + + array[item++] = new TestCase( SECTION, "Math.log()", Number.NaN, Math.log() ); + array[item++] = new TestCase( SECTION, "Math.log(void 0)", Number.NaN, Math.log(void 0) ); + array[item++] = new TestCase( SECTION, "Math.log(null)", Number.NEGATIVE_INFINITY, Math.log(null) ); + array[item++] = new TestCase( SECTION, "Math.log(true)", 0, Math.log(true) ); + array[item++] = new TestCase( SECTION, "Math.log(false)", -Infinity, Math.log(false) ); + array[item++] = new TestCase( SECTION, "Math.log('0')", -Infinity, Math.log('0') ); + array[item++] = new TestCase( SECTION, "Math.log('1')", 0, Math.log('1') ); + array[item++] = new TestCase( SECTION, "Math.log('Infinity')", Infinity, Math.log("Infinity") ); + + array[item++] = new TestCase( SECTION, "Math.log(NaN)", Number.NaN, Math.log(Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.log(-0.0000001)", Number.NaN, Math.log(-0.000001) ); + array[item++] = new TestCase( SECTION, "Math.log(-1)", Number.NaN, Math.log(-1) ); + array[item++] = new TestCase( SECTION, "Math.log(0)", Number.NEGATIVE_INFINITY, Math.log(0) ); + array[item++] = new TestCase( SECTION, "Math.log(-0)", Number.NEGATIVE_INFINITY, Math.log(-0)); + array[item++] = new TestCase( SECTION, "Math.log(1)", 0, Math.log(1) ); + array[item++] = new TestCase( SECTION, "Math.log(Infinity)", Number.POSITIVE_INFINITY, Math.log(Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.log(-Infinity)", Number.NaN, Math.log(Number.NEGATIVE_INFINITY) ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.11.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.11.js new file mode 100644 index 00000000000..4be499cf8e0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.11.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.11.js + ECMA Section: 15.8.2.11 Math.max(x, y) + Description: return the smaller of the two arguments. + special cases: + - if x is NaN or y is NaN return NaN + - if x < y return x + - if y > x return y + - if x is +0 and y is +0 return +0 + - if x is +0 and y is -0 return -0 + - if x is -0 and y is +0 return -0 + - if x is -0 and y is -0 return -0 + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var SECTION = "15.8.2.11"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.max(x, y)"; + var BUGNUMBER="76439"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.max.length", 2, Math.max.length ); + + array[item++] = new TestCase( SECTION, "Math.max()", -Infinity, Math.max() ); + array[item++] = new TestCase( SECTION, "Math.max(void 0, 1)", Number.NaN, Math.max( void 0, 1 ) ); + array[item++] = new TestCase( SECTION, "Math.max(void 0, void 0)", Number.NaN, Math.max( void 0, void 0 ) ); + array[item++] = new TestCase( SECTION, "Math.max(null, 1)", 1, Math.max( null, 1 ) ); + array[item++] = new TestCase( SECTION, "Math.max(-1, null)", 0, Math.max( -1, null ) ); + array[item++] = new TestCase( SECTION, "Math.max(true, false)", 1, Math.max(true,false) ); + + array[item++] = new TestCase( SECTION, "Math.max('-99','99')", 99, Math.max( "-99","99") ); + + array[item++] = new TestCase( SECTION, "Math.max(NaN, Infinity)", Number.NaN, Math.max(Number.NaN,Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.max(NaN, 0)", Number.NaN, Math.max(Number.NaN, 0) ); + array[item++] = new TestCase( SECTION, "Math.max('a string', 0)", Number.NaN, Math.max("a string", 0) ); + array[item++] = new TestCase( SECTION, "Math.max(NaN, 1)", Number.NaN, Math.max(Number.NaN,1) ); + array[item++] = new TestCase( SECTION, "Math.max('a string',Infinity)", Number.NaN, Math.max("a string", Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.max(Infinity, NaN)", Number.NaN, Math.max( Number.POSITIVE_INFINITY, Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.max(NaN, NaN)", Number.NaN, Math.max(Number.NaN, Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.max(0,NaN)", Number.NaN, Math.max(0,Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.max(1, NaN)", Number.NaN, Math.max(1, Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.max(0,0)", 0, Math.max(0,0) ); + array[item++] = new TestCase( SECTION, "Math.max(0,-0)", 0, Math.max(0,-0) ); + array[item++] = new TestCase( SECTION, "Math.max(-0,0)", 0, Math.max(-0,0) ); + array[item++] = new TestCase( SECTION, "Math.max(-0,-0)", -0, Math.max(-0,-0) ); + array[item++] = new TestCase( SECTION, "Infinity/Math.max(-0,-0)", -Infinity, Infinity/Math.max(-0,-0) ); + array[item++] = new TestCase( SECTION, "Math.max(Infinity, Number.MAX_VALUE)", Number.POSITIVE_INFINITY, Math.max(Number.POSITIVE_INFINITY, Number.MAX_VALUE) ); + array[item++] = new TestCase( SECTION, "Math.max(Infinity, Infinity)", Number.POSITIVE_INFINITY, Math.max(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.max(-Infinity,-Infinity)", Number.NEGATIVE_INFINITY, Math.max(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.max(1,.99999999999999)", 1, Math.max(1,.99999999999999) ); + array[item++] = new TestCase( SECTION, "Math.max(-1,-.99999999999999)", -.99999999999999, Math.max(-1,-.99999999999999) ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.12.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.12.js new file mode 100644 index 00000000000..0706e0bad3d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.12.js @@ -0,0 +1,96 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.12.js + ECMA Section: 15.8.2.12 Math.min(x, y) + Description: return the smaller of the two arguments. + special cases: + - if x is NaN or y is NaN return NaN + - if x < y return x + - if y > x return y + - if x is +0 and y is +0 return +0 + - if x is +0 and y is -0 return -0 + - if x is -0 and y is +0 return -0 + - if x is -0 and y is -0 return -0 + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + + var SECTION = "15.8.2.12"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.min(x, y)"; + var BUGNUMBER="76439"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.min.length", 2, Math.min.length ); + + array[item++] = new TestCase( SECTION, "Math.min()", Infinity, Math.min() ); + array[item++] = new TestCase( SECTION, "Math.min(void 0, 1)", Number.NaN, Math.min( void 0, 1 ) ); + array[item++] = new TestCase( SECTION, "Math.min(void 0, void 0)", Number.NaN, Math.min( void 0, void 0 ) ); + array[item++] = new TestCase( SECTION, "Math.min(null, 1)", 0, Math.min( null, 1 ) ); + array[item++] = new TestCase( SECTION, "Math.min(-1, null)", -1, Math.min( -1, null ) ); + array[item++] = new TestCase( SECTION, "Math.min(true, false)", 0, Math.min(true,false) ); + + array[item++] = new TestCase( SECTION, "Math.min('-99','99')", -99, Math.min( "-99","99") ); + + array[item++] = new TestCase( SECTION, "Math.min(NaN,0)", Number.NaN, Math.min(Number.NaN,0) ); + array[item++] = new TestCase( SECTION, "Math.min(NaN,1)", Number.NaN, Math.min(Number.NaN,1) ); + array[item++] = new TestCase( SECTION, "Math.min(NaN,-1)", Number.NaN, Math.min(Number.NaN,-1) ); + array[item++] = new TestCase( SECTION, "Math.min(0,NaN)", Number.NaN, Math.min(0,Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.min(1,NaN)", Number.NaN, Math.min(1,Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.min(-1,NaN)", Number.NaN, Math.min(-1,Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.min(NaN,NaN)", Number.NaN, Math.min(Number.NaN,Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.min(1,1.0000000001)", 1, Math.min(1,1.0000000001) ); + array[item++] = new TestCase( SECTION, "Math.min(1.0000000001,1)", 1, Math.min(1.0000000001,1) ); + array[item++] = new TestCase( SECTION, "Math.min(0,0)", 0, Math.min(0,0) ); + array[item++] = new TestCase( SECTION, "Math.min(0,-0)", -0, Math.min(0,-0) ); + array[item++] = new TestCase( SECTION, "Math.min(-0,-0)", -0, Math.min(-0,-0) ); + + array[item++] = new TestCase( SECTION, "Infinity/Math.min(0,-0)", -Infinity, Infinity/Math.min(0,-0) ); + array[item++] = new TestCase( SECTION, "Infinity/Math.min(-0,-0)", -Infinity, Infinity/Math.min(-0,-0) ); + + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.13.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.13.js new file mode 100644 index 00000000000..4744eb0b579 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.13.js @@ -0,0 +1,132 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.13.js + ECMA Section: 15.8.2.13 Math.pow(x, y) + Description: return an approximation to the result of x + to the power of y. there are many special cases; + refer to the spec. + Author: christine@netscape.com + Date: 9 july 1997 +*/ + + var SECTION = "15.8.2.13"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.pow(x, y)"; + var BUGNUMBER="77141"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.pow.length", 2, Math.pow.length ); + + array[item++] = new TestCase( SECTION, "Math.pow()", Number.NaN, Math.pow() ); + array[item++] = new TestCase( SECTION, "Math.pow(null, null)", 1, Math.pow(null,null) ); + array[item++] = new TestCase( SECTION, "Math.pow(void 0, void 0)", Number.NaN, Math.pow(void 0, void 0)); + array[item++] = new TestCase( SECTION, "Math.pow(true, false)", 1, Math.pow(true, false) ); + array[item++] = new TestCase( SECTION, "Math.pow(false,true)", 0, Math.pow(false,true) ); + array[item++] = new TestCase( SECTION, "Math.pow('2','32')", 4294967296, Math.pow('2','32') ); + + array[item++] = new TestCase( SECTION, "Math.pow(1,NaN)", Number.NaN, Math.pow(1,Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.pow(0,NaN)", Number.NaN, Math.pow(0,Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.pow(NaN,0)", 1, Math.pow(Number.NaN,0) ); + array[item++] = new TestCase( SECTION, "Math.pow(NaN,-0)", 1, Math.pow(Number.NaN,-0) ); + array[item++] = new TestCase( SECTION, "Math.pow(NaN,1)", Number.NaN, Math.pow(Number.NaN, 1) ); + array[item++] = new TestCase( SECTION, "Math.pow(NaN,.5)", Number.NaN, Math.pow(Number.NaN, .5) ); + array[item++] = new TestCase( SECTION, "Math.pow(1.00000001, Infinity)", Number.POSITIVE_INFINITY, Math.pow(1.00000001, Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(1.00000001, -Infinity)", 0, Math.pow(1.00000001, Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(-1.00000001, Infinity)", Number.POSITIVE_INFINITY, Math.pow(-1.00000001,Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(-1.00000001, -Infinity)", 0, Math.pow(-1.00000001,Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(1, Infinity)", Number.NaN, Math.pow(1, Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(1, -Infinity)", Number.NaN, Math.pow(1, Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(-1, Infinity)", Number.NaN, Math.pow(-1, Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(-1, -Infinity)", Number.NaN, Math.pow(-1, Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(.0000000009, Infinity)", 0, Math.pow(.0000000009, Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(-.0000000009, Infinity)", 0, Math.pow(-.0000000009, Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(.0000000009, -Infinity)", Number.POSITIVE_INFINITY, Math.pow(-.0000000009, Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(Infinity, .00000000001)", Number.POSITIVE_INFINITY, Math.pow(Number.POSITIVE_INFINITY,.00000000001) ); + array[item++] = new TestCase( SECTION, "Math.pow(Infinity, 1)", Number.POSITIVE_INFINITY, Math.pow(Number.POSITIVE_INFINITY, 1) ); + array[item++] = new TestCase( SECTION, "Math.pow(Infinity, -.00000000001)",0, Math.pow(Number.POSITIVE_INFINITY, -.00000000001) ); + array[item++] = new TestCase( SECTION, "Math.pow(Infinity, -1)", 0, Math.pow(Number.POSITIVE_INFINITY, -1) ); + array[item++] = new TestCase( SECTION, "Math.pow(-Infinity, 1)", Number.NEGATIVE_INFINITY, Math.pow(Number.NEGATIVE_INFINITY, 1) ); + array[item++] = new TestCase( SECTION, "Math.pow(-Infinity, 333)", Number.NEGATIVE_INFINITY, Math.pow(Number.NEGATIVE_INFINITY, 333) ); + array[item++] = new TestCase( SECTION, "Math.pow(Infinity, 2)", Number.POSITIVE_INFINITY, Math.pow(Number.POSITIVE_INFINITY, 2) ); + array[item++] = new TestCase( SECTION, "Math.pow(-Infinity, 666)", Number.POSITIVE_INFINITY, Math.pow(Number.NEGATIVE_INFINITY, 666) ); + array[item++] = new TestCase( SECTION, "Math.pow(-Infinity, 0.5)", Number.POSITIVE_INFINITY, Math.pow(Number.NEGATIVE_INFINITY, 0.5) ); + array[item++] = new TestCase( SECTION, "Math.pow(-Infinity, Infinity)", Number.POSITIVE_INFINITY, Math.pow(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY) ); + + array[item++] = new TestCase( SECTION, "Math.pow(-Infinity, -1)", -0, Math.pow(Number.NEGATIVE_INFINITY, -1) ); + array[item++] = new TestCase( SECTION, "Infinity/Math.pow(-Infinity, -1)", -Infinity, Infinity/Math.pow(Number.NEGATIVE_INFINITY, -1) ); + + array[item++] = new TestCase( SECTION, "Math.pow(-Infinity, -3)", -0, Math.pow(Number.NEGATIVE_INFINITY, -3) ); + array[item++] = new TestCase( SECTION, "Math.pow(-Infinity, -2)", 0, Math.pow(Number.NEGATIVE_INFINITY, -2) ); + array[item++] = new TestCase( SECTION, "Math.pow(-Infinity, -0.5)", 0, Math.pow(Number.NEGATIVE_INFINITY,-0.5) ); + array[item++] = new TestCase( SECTION, "Math.pow(-Infinity, -Infinity)", 0, Math.pow(Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(0, 1)", 0, Math.pow(0,1) ); + array[item++] = new TestCase( SECTION, "Math.pow(0, 0)", 1, Math.pow(0,0) ); + array[item++] = new TestCase( SECTION, "Math.pow(1, 0)", 1, Math.pow(1,0) ); + array[item++] = new TestCase( SECTION, "Math.pow(-1, 0)", 1, Math.pow(-1,0) ); + array[item++] = new TestCase( SECTION, "Math.pow(0, 0.5)", 0, Math.pow(0,0.5) ); + array[item++] = new TestCase( SECTION, "Math.pow(0, 1000)", 0, Math.pow(0,1000) ); + array[item++] = new TestCase( SECTION, "Math.pow(0, Infinity)", 0, Math.pow(0, Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(0, -1)", Number.POSITIVE_INFINITY, Math.pow(0, -1) ); + array[item++] = new TestCase( SECTION, "Math.pow(0, -0.5)", Number.POSITIVE_INFINITY, Math.pow(0, -0.5) ); + array[item++] = new TestCase( SECTION, "Math.pow(0, -1000)", Number.POSITIVE_INFINITY, Math.pow(0, -1000) ); + array[item++] = new TestCase( SECTION, "Math.pow(0, -Infinity)", Number.POSITIVE_INFINITY, Math.pow(0, Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(-0, 1)", -0, Math.pow(-0, 1) ); + array[item++] = new TestCase( SECTION, "Math.pow(-0, 3)", -0, Math.pow(-0,3) ); + + array[item++] = new TestCase( SECTION, "Infinity/Math.pow(-0, 1)", -Infinity, Infinity/Math.pow(-0, 1) ); + array[item++] = new TestCase( SECTION, "Infinity/Math.pow(-0, 3)", -Infinity, Infinity/Math.pow(-0,3) ); + + array[item++] = new TestCase( SECTION, "Math.pow(-0, 2)", 0, Math.pow(-0,2) ); + array[item++] = new TestCase( SECTION, "Math.pow(-0, Infinity)", 0, Math.pow(-0, Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(-0, -1)", Number.NEGATIVE_INFINITY, Math.pow(-0, -1) ); + array[item++] = new TestCase( SECTION, "Math.pow(-0, -10001)", Number.NEGATIVE_INFINITY, Math.pow(-0, -10001) ); + array[item++] = new TestCase( SECTION, "Math.pow(-0, -2)", Number.POSITIVE_INFINITY, Math.pow(-0, -2) ); + array[item++] = new TestCase( SECTION, "Math.pow(-0, 0.5)", 0, Math.pow(-0, 0.5) ); + array[item++] = new TestCase( SECTION, "Math.pow(-0, Infinity)", 0, Math.pow(-0, Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.pow(-1, 0.5)", Number.NaN, Math.pow(-1, 0.5) ); + array[item++] = new TestCase( SECTION, "Math.pow(-1, NaN)", Number.NaN, Math.pow(-1, Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.pow(-1, -0.5)", Number.NaN, Math.pow(-1, -0.5) ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.14.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.14.js new file mode 100644 index 00000000000..e5ed1fb8001 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.14.js @@ -0,0 +1,83 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.14.js + ECMA Section: 15.8.2.14 Math.random() + returns a number value x with a positive sign + with 1 > x >= 0 with approximately uniform + distribution over that range, using an + implementation-dependent algorithm or strategy. + This function takes no arguments. + + Description: + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.8.2.14"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.random()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + for ( item = 0; item < 100; item++ ) { + array[item] = new TestCase( SECTION, "Math.random()", "pass", null ); + } + + return ( array ); +} +function getRandom( caseno ) { + testcases[caseno].reason = Math.random(); + testcases[caseno].actual = "pass"; + + if ( ! ( testcases[caseno].reason >= 0) ) { + testcases[caseno].actual = "fail"; + } + + if ( ! (testcases[caseno].reason < 1) ) { + testcases[caseno].actual = "fail"; + } +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + getRandom( tc ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.15.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.15.js new file mode 100644 index 00000000000..ca8cc94b1ba --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.15.js @@ -0,0 +1,113 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.15.js + ECMA Section: 15.8.2.15 Math.round(x) + Description: return the greatest number value that is closest to the + argument and is an integer. if two integers are equally + close to the argument. then the result is the number value + that is closer to Infinity. if the argument is an integer, + return the argument. + special cases: + - if x is NaN return NaN + - if x = +0 return +0 + - if x = -0 return -0 + - if x = Infinity return Infinity + - if x = -Infinity return -Infinity + - if 0 < x < 0.5 return 0 + - if -0.5 <= x < 0 return -0 + example: + Math.round( 3.5 ) == 4 + Math.round( -3.5 ) == 3 + also: + - Math.round(x) == Math.floor( x + 0.5 ) + except if x = -0. in that case, Math.round(x) = -0 + + and Math.floor( x+0.5 ) = +0 + + + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var SECTION = "15.8.2.15"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.round(x)"; + var BUGNUMBER="331411"; + + var EXCLUDE = "true"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.round.length", 1, Math.round.length ); + + array[item++] = new TestCase( SECTION, "Math.round()", Number.NaN, Math.round() ); + array[item++] = new TestCase( SECTION, "Math.round(null)", 0, Math.round(0) ); + array[item++] = new TestCase( SECTION, "Math.round(void 0)", Number.NaN, Math.round(void 0) ); + array[item++] = new TestCase( SECTION, "Math.round(true)", 1, Math.round(true) ); + array[item++] = new TestCase( SECTION, "Math.round(false)", 0, Math.round(false) ); + array[item++] = new TestCase( SECTION, "Math.round('.99999')", 1, Math.round('.99999') ); + array[item++] = new TestCase( SECTION, "Math.round('12345e-2')", 123, Math.round('12345e-2') ); + + array[item++] = new TestCase( SECTION, "Math.round(NaN)", Number.NaN, Math.round(Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.round(0)", 0, Math.round(0) ); + array[item++] = new TestCase( SECTION, "Math.round(-0)", -0, Math.round(-0)); + array[item++] = new TestCase( SECTION, "Infinity/Math.round(-0)", -Infinity, Infinity/Math.round(-0) ); + + array[item++] = new TestCase( SECTION, "Math.round(Infinity)", Number.POSITIVE_INFINITY, Math.round(Number.POSITIVE_INFINITY)); + array[item++] = new TestCase( SECTION, "Math.round(-Infinity)",Number.NEGATIVE_INFINITY, Math.round(Number.NEGATIVE_INFINITY)); + array[item++] = new TestCase( SECTION, "Math.round(0.49)", 0, Math.round(0.49)); + array[item++] = new TestCase( SECTION, "Math.round(0.5)", 1, Math.round(0.5)); + array[item++] = new TestCase( SECTION, "Math.round(0.51)", 1, Math.round(0.51)); + + array[item++] = new TestCase( SECTION, "Math.round(-0.49)", -0, Math.round(-0.49)); + array[item++] = new TestCase( SECTION, "Math.round(-0.5)", -0, Math.round(-0.5)); + array[item++] = new TestCase( SECTION, "Infinity/Math.round(-0.49)", -Infinity, Infinity/Math.round(-0.49)); + array[item++] = new TestCase( SECTION, "Infinity/Math.round(-0.5)", -Infinity, Infinity/Math.round(-0.5)); + + array[item++] = new TestCase( SECTION, "Math.round(-0.51)", -1, Math.round(-0.51)); + array[item++] = new TestCase( SECTION, "Math.round(3.5)", 4, Math.round(3.5)); + array[item++] = new TestCase( SECTION, "Math.round(-3.5)", -3, Math.round(-3)); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.16.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.16.js new file mode 100644 index 00000000000..b144d9b4977 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.16.js @@ -0,0 +1,78 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.16.js + ECMA Section: 15.8.2.16 sin( x ) + Description: return an approximation to the sine of the + argument. argument is expressed in radians + Author: christine@netscape.com + Date: 7 july 1997 + +*/ + var SECTION = "15.8.2.16"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.sin(x)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.sin.length", 1, Math.sin.length ); + + array[item++] = new TestCase( SECTION, "Math.sin()", Number.NaN, Math.sin() ); + array[item++] = new TestCase( SECTION, "Math.sin(null)", 0, Math.sin(null) ); + array[item++] = new TestCase( SECTION, "Math.sin(void 0)", Number.NaN, Math.sin(void 0) ); + array[item++] = new TestCase( SECTION, "Math.sin(false)", 0, Math.sin(false) ); + array[item++] = new TestCase( SECTION, "Math.sin('2.356194490192')", 0.7071067811865, Math.sin('2.356194490192') ); + + array[item++] = new TestCase( SECTION, "Math.sin(NaN)", Number.NaN, Math.sin(Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.sin(0)", 0, Math.sin(0) ); + array[item++] = new TestCase( SECTION, "Math.sin(-0)", -0, Math.sin(-0)); + array[item++] = new TestCase( SECTION, "Math.sin(Infinity)", Number.NaN, Math.sin(Number.POSITIVE_INFINITY)); + array[item++] = new TestCase( SECTION, "Math.sin(-Infinity)", Number.NaN, Math.sin(Number.NEGATIVE_INFINITY)); + array[item++] = new TestCase( SECTION, "Math.sin(0.7853981633974)", 0.7071067811865, Math.sin(0.7853981633974)); + array[item++] = new TestCase( SECTION, "Math.sin(1.570796326795)", 1, Math.sin(1.570796326795)); + array[item++] = new TestCase( SECTION, "Math.sin(2.356194490192)", 0.7071067811865, Math.sin(2.356194490192)); + array[item++] = new TestCase( SECTION, "Math.sin(3.14159265359)", 0, Math.sin(3.14159265359)); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.17.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.17.js new file mode 100644 index 00000000000..16859ed9cb5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.17.js @@ -0,0 +1,99 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.17.js + ECMA Section: 15.8.2.17 Math.sqrt(x) + Description: return an approximation to the squareroot of the argument. + special cases: + - if x is NaN return NaN + - if x < 0 return NaN + - if x == 0 return 0 + - if x == -0 return -0 + - if x == Infinity return Infinity + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var SECTION = "15.8.2.17"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.sqrt(x)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.sqrt.length", 1, Math.sqrt.length ); + + array[item++] = new TestCase( SECTION, "Math.sqrt()", Number.NaN, Math.sqrt() ); + array[item++] = new TestCase( SECTION, "Math.sqrt(void 0)", Number.NaN, Math.sqrt(void 0) ); + array[item++] = new TestCase( SECTION, "Math.sqrt(null)", 0, Math.sqrt(null) ); + array[item++] = new TestCase( SECTION, "Math.sqrt(true)", 1, Math.sqrt(1) ); + array[item++] = new TestCase( SECTION, "Math.sqrt(false)", 0, Math.sqrt(false) ); + array[item++] = new TestCase( SECTION, "Math.sqrt('225')", 15, Math.sqrt('225') ); + + array[item++] = new TestCase( SECTION, "Math.sqrt(NaN)", Number.NaN, Math.sqrt(Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.sqrt(-Infinity)", Number.NaN, Math.sqrt(Number.NEGATIVE_INFINITY)); + array[item++] = new TestCase( SECTION, "Math.sqrt(-1)", Number.NaN, Math.sqrt(-1)); + array[item++] = new TestCase( SECTION, "Math.sqrt(-0.5)", Number.NaN, Math.sqrt(-0.5)); + array[item++] = new TestCase( SECTION, "Math.sqrt(0)", 0, Math.sqrt(0)); + array[item++] = new TestCase( SECTION, "Math.sqrt(-0)", -0, Math.sqrt(-0)); + array[item++] = new TestCase( SECTION, "Infinity/Math.sqrt(-0)", -Infinity, Infinity/Math.sqrt(-0) ); + array[item++] = new TestCase( SECTION, "Math.sqrt(Infinity)", Number.POSITIVE_INFINITY, Math.sqrt(Number.POSITIVE_INFINITY)); + array[item++] = new TestCase( SECTION, "Math.sqrt(1)", 1, Math.sqrt(1)); + array[item++] = new TestCase( SECTION, "Math.sqrt(2)", Math.SQRT2, Math.sqrt(2)); + array[item++] = new TestCase( SECTION, "Math.sqrt(0.5)", Math.SQRT1_2, Math.sqrt(0.5)); + array[item++] = new TestCase( SECTION, "Math.sqrt(4)", 2, Math.sqrt(4)); + array[item++] = new TestCase( SECTION, "Math.sqrt(9)", 3, Math.sqrt(9)); + array[item++] = new TestCase( SECTION, "Math.sqrt(16)", 4, Math.sqrt(16)); + array[item++] = new TestCase( SECTION, "Math.sqrt(25)", 5, Math.sqrt(25)); + array[item++] = new TestCase( SECTION, "Math.sqrt(36)", 6, Math.sqrt(36)); + array[item++] = new TestCase( SECTION, "Math.sqrt(49)", 7, Math.sqrt(49)); + array[item++] = new TestCase( SECTION, "Math.sqrt(64)", 8, Math.sqrt(64)); + array[item++] = new TestCase( SECTION, "Math.sqrt(256)", 16, Math.sqrt(256)); + array[item++] = new TestCase( SECTION, "Math.sqrt(10000)", 100, Math.sqrt(10000)); + array[item++] = new TestCase( SECTION, "Math.sqrt(65536)", 256, Math.sqrt(65536)); + array[item++] = new TestCase( SECTION, "Math.sqrt(0.09)", 0.3, Math.sqrt(0.09)); + array[item++] = new TestCase( SECTION, "Math.sqrt(0.01)", 0.1, Math.sqrt(0.01)); + array[item++] = new TestCase( SECTION, "Math.sqrt(0.00000001)",0.0001, Math.sqrt(0.00000001)); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.18.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.18.js new file mode 100644 index 00000000000..f745dd79518 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.18.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.18.js + ECMA Section: 15.8.2.18 tan( x ) + Description: return an approximation to the tan of the + argument. argument is expressed in radians + special cases: + - if x is NaN result is NaN + - if x is 0 result is 0 + - if x is -0 result is -0 + - if x is Infinity or -Infinity result is NaN + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var SECTION = "15.8.2.18"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.tan(x)"; + var EXCLUDE = "true"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.tan.length", 1, Math.tan.length ); + + array[item++] = new TestCase( SECTION, "Math.tan()", Number.NaN, Math.tan() ); + array[item++] = new TestCase( SECTION, "Math.tan(void 0)", Number.NaN, Math.tan(void 0)); + array[item++] = new TestCase( SECTION, "Math.tan(null)", 0, Math.tan(null) ); + array[item++] = new TestCase( SECTION, "Math.tan(false)", 0, Math.tan(false) ); + + array[item++] = new TestCase( SECTION, "Math.tan(NaN)", Number.NaN, Math.tan(Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.tan(0)", 0, Math.tan(0)); + array[item++] = new TestCase( SECTION, "Math.tan(-0)", -0, Math.tan(-0)); + array[item++] = new TestCase( SECTION, "Math.tan(Infinity)", Number.NaN, Math.tan(Number.POSITIVE_INFINITY)); + array[item++] = new TestCase( SECTION, "Math.tan(-Infinity)", Number.NaN, Math.tan(Number.NEGATIVE_INFINITY)); + array[item++] = new TestCase( SECTION, "Math.tan(Math.PI/4)", 1, Math.tan(Math.PI/4)); + array[item++] = new TestCase( SECTION, "Math.tan(3*Math.PI/4)", -1, Math.tan(3*Math.PI/4)); + array[item++] = new TestCase( SECTION, "Math.tan(Math.PI)", -0, Math.tan(Math.PI)); + array[item++] = new TestCase( SECTION, "Math.tan(5*Math.PI/4)", 1, Math.tan(5*Math.PI/4)); + array[item++] = new TestCase( SECTION, "Math.tan(7*Math.PI/4)", -1, Math.tan(7*Math.PI/4)); + array[item++] = new TestCase( SECTION, "Infinity/Math.tan(-0)", -Infinity, Infinity/Math.tan(-0) ); + +/* + Arctan (x) ~ PI/2 - 1/x for large x. For x = 1.6x10^16, 1/x is about the last binary digit of double precision PI/2. + That is to say, perturbing PI/2 by this much is about the smallest rounding error possible. + + This suggests that the answer Christine is getting and a real Infinity are "adjacent" results from the tangent function. I + suspect that tan (PI/2 + one ulp) is a negative result about the same size as tan (PI/2) and that this pair are the closest + results to infinity that the algorithm can deliver. + + In any case, my call is that the answer we're seeing is "right". I suggest the test pass on any result this size or larger. + = C = +*/ + array[item++] = new TestCase( SECTION, "Math.tan(3*Math.PI/2) >= 5443000000000000", true, Math.tan(3*Math.PI/2) >= 5443000000000000 ); + array[item++] = new TestCase( SECTION, "Math.tan(Math.PI/2) >= 5443000000000000", true, Math.tan(Math.PI/2) >= 5443000000000000 ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.2.js new file mode 100644 index 00000000000..4a6f11e7737 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.2.js @@ -0,0 +1,86 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.2.js + ECMA Section: 15.8.2.2 acos( x ) + Description: return an approximation to the arc cosine of the + argument. the result is expressed in radians and + range is from +0 to +PI. special cases: + - if x is NaN, return NaN + - if x > 1, the result is NaN + - if x < -1, the result is NaN + - if x == 1, the result is +0 + Author: christine@netscape.com + Date: 7 july 1997 +*/ + var SECTION = "15.8.2.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.acos()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.acos.length", 1, Math.acos.length ); + + array[item++] = new TestCase( SECTION, "Math.acos(void 0)", Number.NaN, Math.acos(void 0) ); + array[item++] = new TestCase( SECTION, "Math.acos()", Number.NaN, Math.acos() ); + array[item++] = new TestCase( SECTION, "Math.acos(null)", Math.PI/2, Math.acos(null) ); + array[item++] = new TestCase( SECTION, "Math.acos(NaN)", Number.NaN, Math.acos(Number.NaN) ); + + array[item++] = new TestCase( SECTION, "Math.acos(a string)", Number.NaN, Math.acos("a string") ); + array[item++] = new TestCase( SECTION, "Math.acos('0')", Math.PI/2, Math.acos('0') ); + array[item++] = new TestCase( SECTION, "Math.acos('1')", 0, Math.acos('1') ); + array[item++] = new TestCase( SECTION, "Math.acos('-1')", Math.PI, Math.acos('-1') ); + + array[item++] = new TestCase( SECTION, "Math.acos(1.00000001)", Number.NaN, Math.acos(1.00000001) ); + array[item++] = new TestCase( SECTION, "Math.acos(11.00000001)", Number.NaN, Math.acos(-1.00000001) ); + array[item++] = new TestCase( SECTION, "Math.acos(1)", 0, Math.acos(1) ); + array[item++] = new TestCase( SECTION, "Math.acos(-1)", Math.PI, Math.acos(-1) ); + array[item++] = new TestCase( SECTION, "Math.acos(0)", Math.PI/2, Math.acos(0) ); + array[item++] = new TestCase( SECTION, "Math.acos(-0)", Math.PI/2, Math.acos(-0) ); + array[item++] = new TestCase( SECTION, "Math.acos(Math.SQRT1_2)", Math.PI/4, Math.acos(Math.SQRT1_2)); + array[item++] = new TestCase( SECTION, "Math.acos(-Math.SQRT1_2)", Math.PI/4*3, Math.acos(-Math.SQRT1_2)); + array[item++] = new TestCase( SECTION, "Math.acos(0.9999619230642)", Math.PI/360, Math.acos(0.9999619230642)); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.3.js new file mode 100644 index 00000000000..2a00e93bcea --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.3.js @@ -0,0 +1,90 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.3.js + ECMA Section: 15.8.2.3 asin( x ) + Description: return an approximation to the arc sine of the + argument. the result is expressed in radians and + range is from -PI/2 to +PI/2. special cases: + - if x is NaN, the result is NaN + - if x > 1, the result is NaN + - if x < -1, the result is NaN + - if x == +0, the result is +0 + - if x == -0, the result is -0 + Author: christine@netscape.com + Date: 7 july 1997 + +*/ + var SECTION = "15.8.2.3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.asin()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.asin()", Number.NaN, Math.asin() ); + array[item++] = new TestCase( SECTION, "Math.asin(void 0)", Number.NaN, Math.asin(void 0) ); + array[item++] = new TestCase( SECTION, "Math.asin(null)", 0, Math.asin(null) ); + array[item++] = new TestCase( SECTION, "Math.asin(NaN)", Number.NaN, Math.asin(Number.NaN) ); + + array[item++] = new TestCase( SECTION, "Math.asin('string')", Number.NaN, Math.asin("string") ); + array[item++] = new TestCase( SECTION, "Math.asin('0')", 0, Math.asin("0") ); + array[item++] = new TestCase( SECTION, "Math.asin('1')", Math.PI/2, Math.asin("1") ); + array[item++] = new TestCase( SECTION, "Math.asin('-1')", -Math.PI/2, Math.asin("-1") ); + array[item++] = new TestCase( SECTION, "Math.asin(Math.SQRT1_2+'')", Math.PI/4, Math.asin(Math.SQRT1_2+'') ); + array[item++] = new TestCase( SECTION, "Math.asin(-Math.SQRT1_2+'')", -Math.PI/4, Math.asin(-Math.SQRT1_2+'') ); + + array[item++] = new TestCase( SECTION, "Math.asin(1.000001)", Number.NaN, Math.asin(1.000001) ); + array[item++] = new TestCase( SECTION, "Math.asin(-1.000001)", Number.NaN, Math.asin(-1.000001) ); + array[item++] = new TestCase( SECTION, "Math.asin(0)", 0, Math.asin(0) ); + array[item++] = new TestCase( SECTION, "Math.asin(-0)", -0, Math.asin(-0) ); + + array[item++] = new TestCase( SECTION, "Infinity/Math.asin(-0)", -Infinity, Infinity/Math.asin(-0) ); + + array[item++] = new TestCase( SECTION, "Math.asin(1)", Math.PI/2, Math.asin(1) ); + array[item++] = new TestCase( SECTION, "Math.asin(-1)", -Math.PI/2, Math.asin(-1) ); + array[item++] = new TestCase( SECTION, "Math.asin(Math.SQRT1_2))", Math.PI/4, Math.asin(Math.SQRT1_2) ); + array[item++] = new TestCase( SECTION, "Math.asin(-Math.SQRT1_2))", -Math.PI/4, Math.asin(-Math.SQRT1_2)); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.4.js new file mode 100644 index 00000000000..37113317465 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.4.js @@ -0,0 +1,88 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + /** + File Name: 15.8.2.4.js + ECMA Section: 15.8.2.4 atan( x ) + Description: return an approximation to the arc tangent of the + argument. the result is expressed in radians and + range is from -PI/2 to +PI/2. special cases: + - if x is NaN, the result is NaN + - if x == +0, the result is +0 + - if x == -0, the result is -0 + - if x == +Infinity, the result is approximately +PI/2 + - if x == -Infinity, the result is approximately -PI/2 + Author: christine@netscape.com + Date: 7 july 1997 + +*/ + + var SECTION = "15.8.2.4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.atan()"; + var BUGNUMBER="77391"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.atan.length", 1, Math.atan.length ); + + array[item++] = new TestCase( SECTION, "Math.atan()", Number.NaN, Math.atan() ); + array[item++] = new TestCase( SECTION, "Math.atan(void 0)", Number.NaN, Math.atan(void 0) ); + array[item++] = new TestCase( SECTION, "Math.atan(null)", 0, Math.atan(null) ); + array[item++] = new TestCase( SECTION, "Math.atan(NaN)", Number.NaN, Math.atan(Number.NaN) ); + + array[item++] = new TestCase( SECTION, "Math.atan('a string')", Number.NaN, Math.atan("a string") ); + array[item++] = new TestCase( SECTION, "Math.atan('0')", 0, Math.atan('0') ); + array[item++] = new TestCase( SECTION, "Math.atan('1')", Math.PI/4, Math.atan('1') ); + array[item++] = new TestCase( SECTION, "Math.atan('-1')", -Math.PI/4, Math.atan('-1') ); + array[item++] = new TestCase( SECTION, "Math.atan('Infinity)", Math.PI/2, Math.atan('Infinity') ); + array[item++] = new TestCase( SECTION, "Math.atan('-Infinity)", -Math.PI/2, Math.atan('-Infinity') ); + + array[item++] = new TestCase( SECTION, "Math.atan(0)", 0, Math.atan(0) ); + array[item++] = new TestCase( SECTION, "Math.atan(-0)", -0, Math.atan(-0) ); + array[item++] = new TestCase( SECTION, "Infinity/Math.atan(-0)", -Infinity, Infinity/Math.atan(-0) ); + array[item++] = new TestCase( SECTION, "Math.atan(Infinity)", Math.PI/2, Math.atan(Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.atan(-Infinity)", -Math.PI/2, Math.atan(Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.atan(1)", Math.PI/4, Math.atan(1) ); + array[item++] = new TestCase( SECTION, "Math.atan(-1)", -Math.PI/4, Math.atan(-1) ); + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.5.js new file mode 100644 index 00000000000..d1eeeadcee7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.5.js @@ -0,0 +1,105 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.5.js + ECMA Section: 15.8.2.5 atan2( y, x ) + Description: + + Author: christine@netscape.com + Date: 7 july 1997 + +*/ + var SECTION = "15.8.2.5"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.atan2(x,y)"; + var BUGNUMBER="76111"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.atan2.length", 2, Math.atan2.length ); + + array[item++] = new TestCase( SECTION, "Math.atan2(NaN, 0)", Number.NaN, Math.atan2(Number.NaN,0) ); + array[item++] = new TestCase( SECTION, "Math.atan2(null, null)", 0, Math.atan2(null, null) ); + array[item++] = new TestCase( SECTION, "Math.atan2(void 0, void 0)", Number.NaN, Math.atan2(void 0, void 0) ); + array[item++] = new TestCase( SECTION, "Math.atan2()", Number.NaN, Math.atan2() ); + + array[item++] = new TestCase( SECTION, "Math.atan2(0, NaN)", Number.NaN, Math.atan2(0,Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.atan2(1, 0)", Math.PI/2, Math.atan2(1,0) ); + array[item++] = new TestCase( SECTION, "Math.atan2(1,-0)", Math.PI/2, Math.atan2(1,-0) ); + array[item++] = new TestCase( SECTION, "Math.atan2(0,0.001)", 0, Math.atan2(0,0.001) ); + array[item++] = new TestCase( SECTION, "Math.atan2(0,0)", 0, Math.atan2(0,0) ); + array[item++] = new TestCase( SECTION, "Math.atan2(0, -0)", Math.PI, Math.atan2(0,-0) ); + array[item++] = new TestCase( SECTION, "Math.atan2(0, -1)", Math.PI, Math.atan2(0, -1) ); + + array[item++] = new TestCase( SECTION, "Math.atan2(-0, 1)", -0, Math.atan2(-0, 1) ); + array[item++] = new TestCase( SECTION, "Infinity/Math.atan2(-0, 1)", -Infinity, Infinity/Math.atan2(-0,1) ); + + array[item++] = new TestCase( SECTION, "Math.atan2(-0, 0)", -0, Math.atan2(-0,0) ); + array[item++] = new TestCase( SECTION, "Math.atan2(-0, -0)", -Math.PI, Math.atan2(-0, -0) ); + array[item++] = new TestCase( SECTION, "Math.atan2(-0, -1)", -Math.PI, Math.atan2(-0, -1) ); + array[item++] = new TestCase( SECTION, "Math.atan2(-1, 0)", -Math.PI/2, Math.atan2(-1, 0) ); + array[item++] = new TestCase( SECTION, "Math.atan2(-1, -0)", -Math.PI/2, Math.atan2(-1, -0) ); + array[item++] = new TestCase( SECTION, "Math.atan2(1, Infinity)", 0, Math.atan2(1, Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.atan2(1,-Infinity)", Math.PI, Math.atan2(1, Number.NEGATIVE_INFINITY) ); + + array[item++] = new TestCase( SECTION, "Math.atan2(-1, Infinity)", -0, Math.atan2(-1,Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Infinity/Math.atan2(-1, Infinity)", -Infinity, Infinity/Math.atan2(-1,Infinity) ); + + array[item++] = new TestCase( SECTION, "Math.atan2(-1,-Infinity)", -Math.PI, Math.atan2(-1,Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.atan2(Infinity, 0)", Math.PI/2, Math.atan2(Number.POSITIVE_INFINITY, 0) ); + array[item++] = new TestCase( SECTION, "Math.atan2(Infinity, 1)", Math.PI/2, Math.atan2(Number.POSITIVE_INFINITY, 1) ); + array[item++] = new TestCase( SECTION, "Math.atan2(Infinity,-1)", Math.PI/2, Math.atan2(Number.POSITIVE_INFINITY,-1) ); + array[item++] = new TestCase( SECTION, "Math.atan2(Infinity,-0)", Math.PI/2, Math.atan2(Number.POSITIVE_INFINITY,-0) ); + array[item++] = new TestCase( SECTION, "Math.atan2(-Infinity, 0)", -Math.PI/2, Math.atan2(Number.NEGATIVE_INFINITY, 0) ); + array[item++] = new TestCase( SECTION, "Math.atan2(-Infinity,-0)", -Math.PI/2, Math.atan2(Number.NEGATIVE_INFINITY,-0) ); + array[item++] = new TestCase( SECTION, "Math.atan2(-Infinity, 1)", -Math.PI/2, Math.atan2(Number.NEGATIVE_INFINITY, 1) ); + array[item++] = new TestCase( SECTION, "Math.atan2(-Infinity, -1)", -Math.PI/2, Math.atan2(Number.NEGATIVE_INFINITY,-1) ); + array[item++] = new TestCase( SECTION, "Math.atan2(Infinity, Infinity)", Math.PI/4, Math.atan2(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.atan2(Infinity, -Infinity)", 3*Math.PI/4, Math.atan2(Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.atan2(-Infinity, Infinity)", -Math.PI/4, Math.atan2(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.atan2(-Infinity, -Infinity)", -3*Math.PI/4, Math.atan2(Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.atan2(-1, 1)", -Math.PI/4, Math.atan2( -1, 1) ); + + return array; +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.6.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.6.js new file mode 100644 index 00000000000..738bfe4dafd --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.6.js @@ -0,0 +1,108 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.6.js + ECMA Section: 15.8.2.6 Math.ceil(x) + Description: return the smallest number value that is not less than the + argument and is equal to a mathematical integer. if the + number is already an integer, return the number itself. + special cases: + - if x is NaN return NaN + - if x = +0 return +0 + - if x = 0 return -0 + - if x = Infinity return Infinity + - if x = -Infinity return -Infinity + - if ( -1 < x < 0 ) return -0 + also: + - the value of Math.ceil(x) == -Math.ceil(-x) + Author: christine@netscape.com + Date: 7 july 1997 +*/ + var SECTION = "15.8.2.6"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.ceil(x)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.ceil.length", 1, Math.ceil.length ); + + array[item++] = new TestCase( SECTION, "Math.ceil(NaN)", Number.NaN, Math.ceil(Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.ceil(null)", 0, Math.ceil(null) ); + array[item++] = new TestCase( SECTION, "Math.ceil()", Number.NaN, Math.ceil() ); + array[item++] = new TestCase( SECTION, "Math.ceil(void 0)", Number.NaN, Math.ceil(void 0) ); + + array[item++] = new TestCase( SECTION, "Math.ceil('0')", 0, Math.ceil('0') ); + array[item++] = new TestCase( SECTION, "Math.ceil('-0')", -0, Math.ceil('-0') ); + array[item++] = new TestCase( SECTION, "Infinity/Math.ceil('0')", Infinity, Infinity/Math.ceil('0')); + array[item++] = new TestCase( SECTION, "Infinity/Math.ceil('-0')", -Infinity, Infinity/Math.ceil('-0')); + + array[item++] = new TestCase( SECTION, "Math.ceil(0)", 0, Math.ceil(0) ); + array[item++] = new TestCase( SECTION, "Math.ceil(-0)", -0, Math.ceil(-0) ); + array[item++] = new TestCase( SECTION, "Infinity/Math.ceil(0)", Infinity, Infinity/Math.ceil(0)); + array[item++] = new TestCase( SECTION, "Infinity/Math.ceil(-0)", -Infinity, Infinity/Math.ceil(-0)); + + array[item++] = new TestCase( SECTION, "Math.ceil(Infinity)", Number.POSITIVE_INFINITY, Math.ceil(Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.ceil(-Infinity)", Number.NEGATIVE_INFINITY, Math.ceil(Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.ceil(-Number.MIN_VALUE)", -0, Math.ceil(-Number.MIN_VALUE) ); + array[item++] = new TestCase( SECTION, "Infinity/Math.ceil(-Number.MIN_VALUE)", -Infinity, Infinity/Math.ceil(-Number.MIN_VALUE) ); + array[item++] = new TestCase( SECTION, "Math.ceil(1)", 1, Math.ceil(1) ); + array[item++] = new TestCase( SECTION, "Math.ceil(-1)", -1, Math.ceil(-1) ); + array[item++] = new TestCase( SECTION, "Math.ceil(-0.9)", -0, Math.ceil(-0.9) ); + array[item++] = new TestCase( SECTION, "Infinity/Math.ceil(-0.9)", -Infinity, Infinity/Math.ceil(-0.9) ); + array[item++] = new TestCase( SECTION, "Math.ceil(0.9 )", 1, Math.ceil( 0.9) ); + array[item++] = new TestCase( SECTION, "Math.ceil(-1.1)", -1, Math.ceil( -1.1)); + array[item++] = new TestCase( SECTION, "Math.ceil( 1.1)", 2, Math.ceil( 1.1)); + + array[item++] = new TestCase( SECTION, "Math.ceil(Infinity)", -Math.floor(-Infinity), Math.ceil(Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.ceil(-Infinity)", -Math.floor(Infinity), Math.ceil(Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.ceil(-Number.MIN_VALUE)", -Math.floor(Number.MIN_VALUE), Math.ceil(-Number.MIN_VALUE) ); + array[item++] = new TestCase( SECTION, "Math.ceil(1)", -Math.floor(-1), Math.ceil(1) ); + array[item++] = new TestCase( SECTION, "Math.ceil(-1)", -Math.floor(1), Math.ceil(-1) ); + array[item++] = new TestCase( SECTION, "Math.ceil(-0.9)", -Math.floor(0.9), Math.ceil(-0.9) ); + array[item++] = new TestCase( SECTION, "Math.ceil(0.9 )", -Math.floor(-0.9), Math.ceil( 0.9) ); + array[item++] = new TestCase( SECTION, "Math.ceil(-1.1)", -Math.floor(1.1), Math.ceil( -1.1)); + array[item++] = new TestCase( SECTION, "Math.ceil( 1.1)", -Math.floor(-1.1), Math.ceil( 1.1)); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.7.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.7.js new file mode 100644 index 00000000000..6b7dcfe52f4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.7.js @@ -0,0 +1,111 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.7.js + ECMA Section: 15.8.2.7 cos( x ) + Description: return an approximation to the cosine of the + argument. argument is expressed in radians + Author: christine@netscape.com + Date: 7 july 1997 + +*/ + + var SECTION = "15.8.2.7"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.cos(x)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.cos.length", 1, Math.cos.length ); + + array[item++] = new TestCase( SECTION, "Math.cos()", Number.NaN, Math.cos() ); + array[item++] = new TestCase( SECTION, "Math.cos(void 0)", Number.NaN, Math.cos(void 0) ); + array[item++] = new TestCase( SECTION, "Math.cos(false)", 1, Math.cos(false) ); + array[item++] = new TestCase( SECTION, "Math.cos(null)", 1, Math.cos(null) ); + + array[item++] = new TestCase( SECTION, "Math.cos('0')", 1, Math.cos('0') ); + array[item++] = new TestCase( SECTION, "Math.cos('Infinity')", Number.NaN, Math.cos("Infinity") ); + array[item++] = new TestCase( SECTION, "Math.cos('3.14159265359')", -1, Math.cos('3.14159265359') ); + + array[item++] = new TestCase( SECTION, "Math.cos(NaN)", Number.NaN, Math.cos(Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.cos(0)", 1, Math.cos(0) ); + array[item++] = new TestCase( SECTION, "Math.cos(-0)", 1, Math.cos(-0) ); + array[item++] = new TestCase( SECTION, "Math.cos(Infinity)", Number.NaN, Math.cos(Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.cos(-Infinity)", Number.NaN, Math.cos(Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.cos(0.7853981633974)", 0.7071067811865, Math.cos(0.7853981633974) ); + array[item++] = new TestCase( SECTION, "Math.cos(1.570796326795)", 0, Math.cos(1.570796326795) ); + array[item++] = new TestCase( SECTION, "Math.cos(2.356194490192)", -0.7071067811865, Math.cos(2.356194490192) ); + array[item++] = new TestCase( SECTION, "Math.cos(3.14159265359)", -1, Math.cos(3.14159265359) ); + array[item++] = new TestCase( SECTION, "Math.cos(3.926990816987)", -0.7071067811865, Math.cos(3.926990816987) ); + array[item++] = new TestCase( SECTION, "Math.cos(4.712388980385)", 0, Math.cos(4.712388980385) ); + array[item++] = new TestCase( SECTION, "Math.cos(5.497787143782)", 0.7071067811865, Math.cos(5.497787143782) ); + array[item++] = new TestCase( SECTION, "Math.cos(Math.PI*2)", 1, Math.cos(Math.PI*2) ); + array[item++] = new TestCase( SECTION, "Math.cos(Math.PI/4)", Math.SQRT2/2, Math.cos(Math.PI/4) ); + array[item++] = new TestCase( SECTION, "Math.cos(Math.PI/2)", 0, Math.cos(Math.PI/2) ); + array[item++] = new TestCase( SECTION, "Math.cos(3*Math.PI/4)", -Math.SQRT2/2, Math.cos(3*Math.PI/4) ); + array[item++] = new TestCase( SECTION, "Math.cos(Math.PI)", -1, Math.cos(Math.PI) ); + array[item++] = new TestCase( SECTION, "Math.cos(5*Math.PI/4)", -Math.SQRT2/2, Math.cos(5*Math.PI/4) ); + array[item++] = new TestCase( SECTION, "Math.cos(3*Math.PI/2)", 0, Math.cos(3*Math.PI/2) ); + array[item++] = new TestCase( SECTION, "Math.cos(7*Math.PI/4)", Math.SQRT2/2, Math.cos(7*Math.PI/4) ); + array[item++] = new TestCase( SECTION, "Math.cos(Math.PI*2)", 1, Math.cos(2*Math.PI) ); + array[item++] = new TestCase( SECTION, "Math.cos(-0.7853981633974)", 0.7071067811865, Math.cos(-0.7853981633974) ); + array[item++] = new TestCase( SECTION, "Math.cos(-1.570796326795)", 0, Math.cos(-1.570796326795) ); + array[item++] = new TestCase( SECTION, "Math.cos(-2.3561944901920)", -.7071067811865, Math.cos(2.3561944901920) ); + array[item++] = new TestCase( SECTION, "Math.cos(-3.14159265359)", -1, Math.cos(3.14159265359) ); + array[item++] = new TestCase( SECTION, "Math.cos(-3.926990816987)", -0.7071067811865, Math.cos(3.926990816987) ); + array[item++] = new TestCase( SECTION, "Math.cos(-4.712388980385)", 0, Math.cos(4.712388980385) ); + array[item++] = new TestCase( SECTION, "Math.cos(-5.497787143782)", 0.7071067811865, Math.cos(5.497787143782) ); + array[item++] = new TestCase( SECTION, "Math.cos(-6.28318530718)", 1, Math.cos(6.28318530718) ); + array[item++] = new TestCase( SECTION, "Math.cos(-Math.PI/4)", Math.SQRT2/2, Math.cos(-Math.PI/4) ); + array[item++] = new TestCase( SECTION, "Math.cos(-Math.PI/2)", 0, Math.cos(-Math.PI/2) ); + array[item++] = new TestCase( SECTION, "Math.cos(-3*Math.PI/4)", -Math.SQRT2/2, Math.cos(-3*Math.PI/4) ); + array[item++] = new TestCase( SECTION, "Math.cos(-Math.PI)", -1, Math.cos(-Math.PI) ); + array[item++] = new TestCase( SECTION, "Math.cos(-5*Math.PI/4)", -Math.SQRT2/2, Math.cos(-5*Math.PI/4) ); + array[item++] = new TestCase( SECTION, "Math.cos(-3*Math.PI/2)", 0, Math.cos(-3*Math.PI/2) ); + array[item++] = new TestCase( SECTION, "Math.cos(-7*Math.PI/4)", Math.SQRT2/2, Math.cos(-7*Math.PI/4) ); + array[item++] = new TestCase( SECTION, "Math.cos(-Math.PI*2)", 1, Math.cos(-Math.PI*2) ); + + return ( array ); +} + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.8.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.8.js new file mode 100644 index 00000000000..c0a49240825 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.8.js @@ -0,0 +1,84 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.8.js + ECMA Section: 15.8.2.8 Math.exp(x) + Description: return an approximation to the exponential function of + the argument (e raised to the power of the argument) + special cases: + - if x is NaN return NaN + - if x is 0 return 1 + - if x is -0 return 1 + - if x is Infinity return Infinity + - if x is -Infinity return 0 + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + + var SECTION = "15.8.2.8"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.exp(x)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.exp.length", 1, Math.exp.length ); + + array[item++] = new TestCase( SECTION, "Math.exp()", Number.NaN, Math.exp() ); + array[item++] = new TestCase( SECTION, "Math.exp(null)", 1, Math.exp(null) ); + array[item++] = new TestCase( SECTION, "Math.exp(void 0)", Number.NaN, Math.exp(void 0) ); + array[item++] = new TestCase( SECTION, "Math.exp(1)", Math.E, Math.exp(1) ); + array[item++] = new TestCase( SECTION, "Math.exp(true)", Math.E, Math.exp(true) ); + array[item++] = new TestCase( SECTION, "Math.exp(false)", 1, Math.exp(false) ); + + array[item++] = new TestCase( SECTION, "Math.exp('1')", Math.E, Math.exp('1') ); + array[item++] = new TestCase( SECTION, "Math.exp('0')", 1, Math.exp('0') ); + + array[item++] = new TestCase( SECTION, "Math.exp(NaN)", Number.NaN, Math.exp(Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.exp(0)", 1, Math.exp(0) ); + array[item++] = new TestCase( SECTION, "Math.exp(-0)", 1, Math.exp(-0) ); + array[item++] = new TestCase( SECTION, "Math.exp(Infinity)", Number.POSITIVE_INFINITY, Math.exp(Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.exp(-Infinity)", 0, Math.exp(Number.NEGATIVE_INFINITY) ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.9.js b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.9.js new file mode 100644 index 00000000000..c1ea987edac --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Math/15.8.2.9.js @@ -0,0 +1,105 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.8.2.9.js + ECMA Section: 15.8.2.9 Math.floor(x) + Description: return the greatest number value that is not greater + than the argument and is equal to a mathematical integer. + if the number is already an integer, return the number + itself. special cases: + - if x is NaN return NaN + - if x = +0 return +0 + - if x = -0 return -0 + - if x = Infinity return Infinity + - if x = -Infinity return -Infinity + - if ( -1 < x < 0 ) return -0 + also: + - the value of Math.floor(x) == -Math.ceil(-x) + Author: christine@netscape.com + Date: 7 july 1997 +*/ + + var SECTION = "15.8.2.9"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Math.floor(x)"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Math.floor.length", 1, Math.floor.length ); + + array[item++] = new TestCase( SECTION, "Math.floor()", Number.NaN, Math.floor() ); + array[item++] = new TestCase( SECTION, "Math.floor(void 0)", Number.NaN, Math.floor(void 0) ); + array[item++] = new TestCase( SECTION, "Math.floor(null)", 0, Math.floor(null) ); + array[item++] = new TestCase( SECTION, "Math.floor(true)", 1, Math.floor(true) ); + array[item++] = new TestCase( SECTION, "Math.floor(false)", 0, Math.floor(false) ); + + array[item++] = new TestCase( SECTION, "Math.floor('1.1')", 1, Math.floor("1.1") ); + array[item++] = new TestCase( SECTION, "Math.floor('-1.1')", -2, Math.floor("-1.1") ); + array[item++] = new TestCase( SECTION, "Math.floor('0.1')", 0, Math.floor("0.1") ); + array[item++] = new TestCase( SECTION, "Math.floor('-0.1')", -1, Math.floor("-0.1") ); + + array[item++] = new TestCase( SECTION, "Math.floor(NaN)", Number.NaN, Math.floor(Number.NaN) ); + array[item++] = new TestCase( SECTION, "Math.floor(NaN)==-Math.ceil(-NaN)", false, Math.floor(Number.NaN) == -Math.ceil(-Number.NaN) ); + + array[item++] = new TestCase( SECTION, "Math.floor(0)", 0, Math.floor(0) ); + array[item++] = new TestCase( SECTION, "Math.floor(0)==-Math.ceil(-0)", true, Math.floor(0) == -Math.ceil(-0) ); + + array[item++] = new TestCase( SECTION, "Math.floor(-0)", -0, Math.floor(-0) ); + array[item++] = new TestCase( SECTION, "Infinity/Math.floor(-0)", -Infinity, Infinity/Math.floor(-0) ); + array[item++] = new TestCase( SECTION, "Math.floor(-0)==-Math.ceil(0)", true, Math.floor(-0)== -Math.ceil(0) ); + + array[item++] = new TestCase( SECTION, "Math.floor(Infinity)", Number.POSITIVE_INFINITY, Math.floor(Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.floor(Infinity)==-Math.ceil(-Infinity)", true, Math.floor(Number.POSITIVE_INFINITY) == -Math.ceil(Number.NEGATIVE_INFINITY) ); + + array[item++] = new TestCase( SECTION, "Math.floor(-Infinity)", Number.NEGATIVE_INFINITY, Math.floor(Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Math.floor(-Infinity)==-Math.ceil(Infinity)", true, Math.floor(Number.NEGATIVE_INFINITY) == -Math.ceil(Number.POSITIVE_INFINITY) ); + + array[item++] = new TestCase( SECTION, "Math.floor(0.0000001)", 0, Math.floor(0.0000001) ); + array[item++] = new TestCase( SECTION, "Math.floor(0.0000001)==-Math.ceil(0.0000001)", true, Math.floor(0.0000001)==-Math.ceil(-0.0000001) ); + + array[item++] = new TestCase( SECTION, "Math.floor(-0.0000001)", -1, Math.floor(-0.0000001) ); + array[item++] = new TestCase( SECTION, "Math.floor(0.0000001)==-Math.ceil(0.0000001)", true, Math.floor(-0.0000001)==-Math.ceil(0.0000001) ); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/NativeObjects/15-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/NativeObjects/15-1.js new file mode 100644 index 00000000000..cecdd90b228 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/NativeObjects/15-1.js @@ -0,0 +1,95 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.js + ECMA Section: 15 Native ECMAScript Objects + Description: Every built-in prototype object has the Object prototype + object, which is the value of the expression + Object.prototype (15.2.3.1) as the value of its internal + [[Prototype]] property, except the Object prototype + object itself. + + Every native object associated with a program-created + function also has the Object prototype object as the + value of its internal [[Prototype]] property. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Native ECMAScript Objects"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; +/* + array[item++] = new TestCase( SECTION, "Function.prototype.__proto__", Object.prototype, Function.prototype.__proto__ ); + array[item++] = new TestCase( SECTION, "Array.prototype.__proto__", Object.prototype, Array.prototype.__proto__ ); + array[item++] = new TestCase( SECTION, "String.prototype.__proto__", Object.prototype, String.prototype.__proto__ ); + array[item++] = new TestCase( SECTION, "Boolean.prototype.__proto__", Object.prototype, Boolean.prototype.__proto__ ); + array[item++] = new TestCase( SECTION, "Number.prototype.__proto__", Object.prototype, Number.prototype.__proto__ ); +// array[item++] = new TestCase( SECTION, "Math.prototype.__proto__", Object.prototype, Math.prototype.__proto__ ); + array[item++] = new TestCase( SECTION, "Date.prototype.__proto__", Object.prototype, Date.prototype.__proto__ ); + array[item++] = new TestCase( SECTION, "TestCase.prototype.__proto__", Object.prototype, TestCase.prototype.__proto__ ); + + array[item++] = new TestCase( SECTION, "MyObject.prototype.__proto__", Object.prototype, MyObject.prototype.__proto__ ); +*/ + array[item++] = new TestCase( SECTION, "Function.prototype.__proto__ == Object.prototype", true, Function.prototype.__proto__ == Object.prototype ); + array[item++] = new TestCase( SECTION, "Array.prototype.__proto__ == Object.prototype", true, Array.prototype.__proto__ == Object.prototype ); + array[item++] = new TestCase( SECTION, "String.prototype.__proto__ == Object.prototype", true, String.prototype.__proto__ == Object.prototype ); + array[item++] = new TestCase( SECTION, "Boolean.prototype.__proto__ == Object.prototype", true, Boolean.prototype.__proto__ == Object.prototype ); + array[item++] = new TestCase( SECTION, "Number.prototype.__proto__ == Object.prototype", true, Number.prototype.__proto__ == Object.prototype ); +// array[item++] = new TestCase( SECTION, "Math.prototype.__proto__ == Object.prototype", true, Math.prototype.__proto__ == Object.prototype ); + array[item++] = new TestCase( SECTION, "Date.prototype.__proto__ == Object.prototype", true, Date.prototype.__proto__ == Object.prototype ); + array[item++] = new TestCase( SECTION, "TestCase.prototype.__proto__ == Object.prototype", true, TestCase.prototype.__proto__ == Object.prototype ); + + array[item++] = new TestCase( SECTION, "MyObject.prototype.__proto__ == Object.prototype", true, MyObject.prototype.__proto__ == Object.prototype ); + + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + + stopTest(); + return ( testcases ); +} + +function MyObject( value ) { + this.value = value; + this.valueOf = new Function( "return this.value" ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/NativeObjects/15-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/NativeObjects/15-2.js new file mode 100644 index 00000000000..612e1b47e78 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/NativeObjects/15-2.js @@ -0,0 +1,78 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15-2.js + ECMA Section: 15 Native ECMAScript Objects + + Description: Every built-in function and every built-in constructor + has the Function prototype object, which is the value of + the expression Function.prototype as the value of its + internal [[Prototype]] property, except the Function + prototype object itself. + + That is, the __proto__ property of builtin functions and + constructors should be the Function.prototype object. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Native ECMAScript Objects"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Object.__proto__", Function.prototype, Object.__proto__ ); + array[item++] = new TestCase( SECTION, "Array.__proto__", Function.prototype, Array.__proto__ ); + array[item++] = new TestCase( SECTION, "String.__proto__", Function.prototype, String.__proto__ ); + array[item++] = new TestCase( SECTION, "Boolean.__proto__", Function.prototype, Boolean.__proto__ ); + array[item++] = new TestCase( SECTION, "Number.__proto__", Function.prototype, Number.__proto__ ); + array[item++] = new TestCase( SECTION, "Date.__proto__", Function.prototype, Date.__proto__ ); + array[item++] = new TestCase( SECTION, "TestCase.__proto__", Function.prototype, TestCase.__proto__ ); + + array[item++] = new TestCase( SECTION, "eval.__proto__", Function.prototype, eval.__proto__ ); + array[item++] = new TestCase( SECTION, "Math.pow.__proto__", Function.prototype, Math.pow.__proto__ ); + array[item++] = new TestCase( SECTION, "String.prototype.indexOf.__proto__", Function.prototype, String.prototype.indexOf.__proto__ ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.1.js new file mode 100644 index 00000000000..102912de585 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.1.js @@ -0,0 +1,90 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.1.js + ECMA Section: 15.7.1 The Number Constructor Called as a Function + 15.7.1.1 + 15.7.1.2 + + Description: When Number is called as a function rather than as a + constructor, it performs a type conversion. + 15.7.1.1 Return a number value (not a Number object) + computed by ToNumber( value ) + 15.7.1.2 Number() returns 0. + + need to add more test cases. see the testcases for + TypeConversion ToNumber. + + Author: christine@netscape.com + Date: 29 september 1997 +*/ + + var SECTION = "15.7.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Number Constructor Called as a Function"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase(SECTION, "Number()", 0, Number() ); + array[item++] = new TestCase(SECTION, "Number(void 0)", Number.NaN, Number(void 0) ); + array[item++] = new TestCase(SECTION, "Number(null)", 0, Number(null) ); + array[item++] = new TestCase(SECTION, "Number()", 0, Number() ); + array[item++] = new TestCase(SECTION, "Number(new Number())", 0, Number( new Number() ) ); + array[item++] = new TestCase(SECTION, "Number(0)", 0, Number(0) ); + array[item++] = new TestCase(SECTION, "Number(1)", 1, Number(1) ); + array[item++] = new TestCase(SECTION, "Number(-1)", -1, Number(-1) ); + array[item++] = new TestCase(SECTION, "Number(NaN)", Number.NaN, Number( Number.NaN ) ); + array[item++] = new TestCase(SECTION, "Number('string')", Number.NaN, Number( "string") ); + array[item++] = new TestCase(SECTION, "Number(new String())", 0, Number( new String() ) ); + array[item++] = new TestCase(SECTION, "Number('')", 0, Number( "" ) ); + array[item++] = new TestCase(SECTION, "Number(Infinity)", Number.POSITIVE_INFINITY, Number("Infinity") ); + + array[item++] = new TestCase(SECTION, "Number(new MyObject(100))", 100, Number(new MyObject(100)) ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.valueOf = new Function( "return this.value" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.2.js new file mode 100644 index 00000000000..6e3982bfb6b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.2.js @@ -0,0 +1,173 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.2.js + ECMA Section: 15.7.2 The Number Constructor + 15.7.2.1 + 15.7.2.2 + + Description: 15.7.2 When Number is called as part of a new + expression, it is a constructor: it initializes + the newly created object. + + 15.7.2.1 The [[Prototype]] property of the newly + constructed object is set to othe original Number + prototype object, the one that is the initial value + of Number.prototype(0). The [[Class]] property is + set to "Number". The [[Value]] property of the + newly constructed object is set to ToNumber(value) + + 15.7.2.2 new Number(). same as in 15.7.2.1, except + the [[Value]] property is set to +0. + + need to add more test cases. see the testcases for + TypeConversion ToNumber. + + Author: christine@netscape.com + Date: 29 september 1997 +*/ + + var SECTION = "15.7.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The Number Constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // To verify that the object's prototype is the Number.prototype, check to see if the object's + // constructor property is the same as Number.prototype.constructor. + + array[item++] = new TestCase(SECTION, "(new Number()).constructor", Number.prototype.constructor, (new Number()).constructor ); + + array[item++] = new TestCase(SECTION, "typeof (new Number())", "object", typeof (new Number()) ); + array[item++] = new TestCase(SECTION, "(new Number()).valueOf()", 0, (new Number()).valueOf() ); + array[item++] = new TestCase(SECTION, + "NUMB = new Number();NUMB.toString=Object.prototype.toString;NUMB.toString()", + "[object Number]", + eval("NUMB = new Number();NUMB.toString=Object.prototype.toString;NUMB.toString()") ); + + array[item++] = new TestCase(SECTION, "(new Number(0)).constructor", Number.prototype.constructor, (new Number(0)).constructor ); + array[item++] = new TestCase(SECTION, "typeof (new Number(0))", "object", typeof (new Number(0)) ); + array[item++] = new TestCase(SECTION, "(new Number(0)).valueOf()", 0, (new Number(0)).valueOf() ); + array[item++] = new TestCase(SECTION, + "NUMB = new Number(0);NUMB.toString=Object.prototype.toString;NUMB.toString()", + "[object Number]", + eval("NUMB = new Number(0);NUMB.toString=Object.prototype.toString;NUMB.toString()") ); + + array[item++] = new TestCase(SECTION, "(new Number(1)).constructor", Number.prototype.constructor, (new Number(1)).constructor ); + array[item++] = new TestCase(SECTION, "typeof (new Number(1))", "object", typeof (new Number(1)) ); + array[item++] = new TestCase(SECTION, "(new Number(1)).valueOf()", 1, (new Number(1)).valueOf() ); + array[item++] = new TestCase(SECTION, + "NUMB = new Number(1);NUMB.toString=Object.prototype.toString;NUMB.toString()", + "[object Number]", + eval("NUMB = new Number(1);NUMB.toString=Object.prototype.toString;NUMB.toString()") ); + + array[item++] = new TestCase(SECTION, "(new Number(-1)).constructor", Number.prototype.constructor, (new Number(-1)).constructor ); + array[item++] = new TestCase(SECTION, "typeof (new Number(-1))", "object", typeof (new Number(-1)) ); + array[item++] = new TestCase(SECTION, "(new Number(-1)).valueOf()", -1, (new Number(-1)).valueOf() ); + array[item++] = new TestCase(SECTION, + "NUMB = new Number(-1);NUMB.toString=Object.prototype.toString;NUMB.toString()", + "[object Number]", + eval("NUMB = new Number(-1);NUMB.toString=Object.prototype.toString;NUMB.toString()") ); + + array[item++] = new TestCase(SECTION, "(new Number(Number.NaN)).constructor", Number.prototype.constructor, (new Number(Number.NaN)).constructor ); + array[item++] = new TestCase(SECTION, "typeof (new Number(Number.NaN))", "object", typeof (new Number(Number.NaN)) ); + array[item++] = new TestCase(SECTION, "(new Number(Number.NaN)).valueOf()", Number.NaN, (new Number(Number.NaN)).valueOf() ); + array[item++] = new TestCase(SECTION, + "NUMB = new Number(Number.NaN);NUMB.toString=Object.prototype.toString;NUMB.toString()", + "[object Number]", + eval("NUMB = new Number(Number.NaN);NUMB.toString=Object.prototype.toString;NUMB.toString()") ); + + array[item++] = new TestCase(SECTION, "(new Number('string')).constructor", Number.prototype.constructor, (new Number('string')).constructor ); + array[item++] = new TestCase(SECTION, "typeof (new Number('string'))", "object", typeof (new Number('string')) ); + array[item++] = new TestCase(SECTION, "(new Number('string')).valueOf()", Number.NaN, (new Number('string')).valueOf() ); + array[item++] = new TestCase(SECTION, + "NUMB = new Number('string');NUMB.toString=Object.prototype.toString;NUMB.toString()", + "[object Number]", + eval("NUMB = new Number('string');NUMB.toString=Object.prototype.toString;NUMB.toString()") ); + + array[item++] = new TestCase(SECTION, "(new Number(new String())).constructor", Number.prototype.constructor, (new Number(new String())).constructor ); + array[item++] = new TestCase(SECTION, "typeof (new Number(new String()))", "object", typeof (new Number(new String())) ); + array[item++] = new TestCase(SECTION, "(new Number(new String())).valueOf()", 0, (new Number(new String())).valueOf() ); + array[item++] = new TestCase(SECTION, + "NUMB = new Number(new String());NUMB.toString=Object.prototype.toString;NUMB.toString()", + "[object Number]", + eval("NUMB = new Number(new String());NUMB.toString=Object.prototype.toString;NUMB.toString()") ); + + array[item++] = new TestCase(SECTION, "(new Number('')).constructor", Number.prototype.constructor, (new Number('')).constructor ); + array[item++] = new TestCase(SECTION, "typeof (new Number(''))", "object", typeof (new Number('')) ); + array[item++] = new TestCase(SECTION, "(new Number('')).valueOf()", 0, (new Number('')).valueOf() ); + array[item++] = new TestCase(SECTION, + "NUMB = new Number('');NUMB.toString=Object.prototype.toString;NUMB.toString()", + "[object Number]", + eval("NUMB = new Number('');NUMB.toString=Object.prototype.toString;NUMB.toString()") ); + + array[item++] = new TestCase(SECTION, "(new Number(Number.POSITIVE_INFINITY)).constructor", Number.prototype.constructor, (new Number(Number.POSITIVE_INFINITY)).constructor ); + array[item++] = new TestCase(SECTION, "typeof (new Number(Number.POSITIVE_INFINITY))", "object", typeof (new Number(Number.POSITIVE_INFINITY)) ); + array[item++] = new TestCase(SECTION, "(new Number(Number.POSITIVE_INFINITY)).valueOf()", Number.POSITIVE_INFINITY, (new Number(Number.POSITIVE_INFINITY)).valueOf() ); + array[item++] = new TestCase(SECTION, + "NUMB = new Number(Number.POSITIVE_INFINITY);NUMB.toString=Object.prototype.toString;NUMB.toString()", + "[object Number]", + eval("NUMB = new Number(Number.POSITIVE_INFINITY);NUMB.toString=Object.prototype.toString;NUMB.toString()") ); + + array[item++] = new TestCase(SECTION, "(new Number(Number.NEGATIVE_INFINITY)).constructor", Number.prototype.constructor, (new Number(Number.NEGATIVE_INFINITY)).constructor ); + array[item++] = new TestCase(SECTION, "typeof (new Number(Number.NEGATIVE_INFINITY))", "object", typeof (new Number(Number.NEGATIVE_INFINITY)) ); + array[item++] = new TestCase(SECTION, "(new Number(Number.NEGATIVE_INFINITY)).valueOf()", Number.NEGATIVE_INFINITY, (new Number(Number.NEGATIVE_INFINITY)).valueOf() ); + array[item++] = new TestCase(SECTION, + "NUMB = new Number(Number.NEGATIVE_INFINITY);NUMB.toString=Object.prototype.toString;NUMB.toString()", + "[object Number]", + eval("NUMB = new Number(Number.NEGATIVE_INFINITY);NUMB.toString=Object.prototype.toString;NUMB.toString()") ); + + + array[item++] = new TestCase(SECTION, "(new Number()).constructor", Number.prototype.constructor, (new Number()).constructor ); + array[item++] = new TestCase(SECTION, "typeof (new Number())", "object", typeof (new Number()) ); + array[item++] = new TestCase(SECTION, "(new Number()).valueOf()", 0, (new Number()).valueOf() ); + array[item++] = new TestCase(SECTION, + "NUMB = new Number();NUMB.toString=Object.prototype.toString;NUMB.toString()", + "[object Number]", + eval("NUMB = new Number();NUMB.toString=Object.prototype.toString;NUMB.toString()") ); + + return ( array ); +} + + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.1-1.js new file mode 100644 index 00000000000..71aea75bd12 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.1-1.js @@ -0,0 +1,68 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.1-2.js + ECMA Section: 15.7.3.1 Number.prototype + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontDelete attribute of Number.prototype + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + +var SECTION = "15.7.3.1-1"; +var VERSION = "ECMA_1"; + startTest(); +var TITLE = "Number.prototype"; + +writeHeaderToLog( SECTION +" "+ TITLE); + +var testcases = getTestCases(); +test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase(SECTION, "var NUM_PROT = Number.prototype; delete( Number.prototype ); NUM_PROT == Number.prototype", true, "var NUM_PROT = Number.prototype; delete( Number.prototype ); NUM_PROT == Number.prototype" ); + array[item++] = new TestCase(SECTION, "delete( Number.prototype )", false, "delete( Number.prototype )" ); + + return ( array ); +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "delete should not be allowed "; + } + stopTest(); + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.1-2.js new file mode 100644 index 00000000000..dbce0e1aea1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.1-2.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.1-2.js + ECMA Section: 15.7.3.1 Number.prototype + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the ReadOnly attribute of Number.prototype + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + + var SECTION = "15.7.3.1-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.prototype"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "var NUM_PROT = Number.prototype; Number.prototype = null; Number.prototype == NUM_PROT", + true, + eval("var NUM_PROT = Number.prototype; Number.prototype = null; Number.prototype == NUM_PROT") ); + + array[item++] = new TestCase( SECTION, + "Number.prototype=0; Number.prototype", + Number.prototype, + eval("Number.prototype=0; Number.prototype") ); + + return ( array ); +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "delete should not be allowed "; + } + stopTest(); + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.1-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.1-3.js new file mode 100644 index 00000000000..34bd2ff60fa --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.1-3.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.1-4.js + ECMA Section: 15.7.3.1 Number.prototype + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontEnum attribute of Number.prototype + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var VERSION = "ECMA_1"; + startTest(); + var SECTION = "15.7.3.1-3"; + var TITLE = "Number.prototype"; + + writeHeaderToLog( SECTION + " Number.prototype: DontEnum Attribute"); + + var testcases = getTestCases(); + + test( testcases ); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( + SECTION, + "var string = ''; for ( prop in Number ) { string += ( prop == 'prototype' ) ? prop: '' } string;", + "", + eval("var string = ''; for ( prop in Number ) { string += ( prop == 'prototype' ) ? prop : '' } string;") + ); + + return ( array ); +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += "property should not be enumerated "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.2-1.js new file mode 100644 index 00000000000..51d679a8aec --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.2-1.js @@ -0,0 +1,63 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.2-1.js + ECMA Section: 15.7.3.2 Number.MAX_VALUE + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the value of MAX_VALUE + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.7.3.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.MAX_VALUE"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test( testcases ); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Number.MAX_VALUE", 1.7976931348623157e308, Number.MAX_VALUE ); + + + return ( array ); +} +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.2-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.2-2.js new file mode 100644 index 00000000000..b5f57c9936b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.2-2.js @@ -0,0 +1,64 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.2-2.js + ECMA Section: 15.7.3.2 Number.MAX_VALUE + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontDelete attribute of Number.MAX_VALUE + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.7.3.2-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.MAX_VALUE: DontDelete Attribute"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test( testcases ); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "delete( Number.MAX_VALUE ); Number.MAX_VALUE", 1.7976931348623157e308, "delete( Number.MAX_VALUE );Number.MAX_VALUE" ); + array[item++] = new TestCase( SECTION, "delete( Number.MAX_VALUE )", false, "delete( Number.MAX_VALUE )" ); + + return ( array ); +} +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.2-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.2-3.js new file mode 100644 index 00000000000..c8040cded16 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.2-3.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.2-3.js + ECMA Section: 15.7.3.2 Number.MAX_VALUE + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the ReadOnly attribute of Number.MAX_VALUE + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.7.3.2-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.MAX_VALUE"; + + writeHeaderToLog( SECTION + " "+ TITLE ); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var MAX_VAL = 1.7976931348623157e308; + + array[item++] = new TestCase( SECTION, + "Number.MAX_VALUE=0; Number.MAX_VALUE", + MAX_VAL, + eval("Number.MAX_VALUE=0; Number.MAX_VALUE") ); + return ( array ); +} +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "delete should not be allowed "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.2-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.2-4.js new file mode 100644 index 00000000000..846a3c1e9b5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.2-4.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.2-4.js + ECMA Section: 15.7.3.2 Number.MAX_VALUE + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontEnum attribute of Number.MAX_VALUE + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.7.3.2-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.MAX_VALUE: DontEnum Attribute"; + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test( testcases ); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( + SECTION, + "var string = ''; for ( prop in Number ) { string += ( prop == 'MAX_VALUE' ) ? prop : '' } string;", + "", + eval("var string = ''; for ( prop in Number ) { string += ( prop == 'MAX_VALUE' ) ? prop : '' } string;") + ); + + return ( array ); +} +function test( testcases ) { + for ( tc = 0; tc < testcases.length; tc++ ) { + writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += "property should not be enumerated "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.3-1.js new file mode 100644 index 00000000000..f9125833ac3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.3-1.js @@ -0,0 +1,64 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.3-1.js + ECMA Section: 15.7.3.3 Number.MIN_VALUE + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the value of Number.MIN_VALUE + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + + var SECTION = "15.7.3.3-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.MIN_VALUE"; + + writeHeaderToLog( SECTION + " "+ TITLE ); + + var testcases = getTestCases(); + test( testcases ); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var MIN_VAL = 5e-324; + + array[item++] = new TestCase( SECTION, "Number.MIN_VALUE", MIN_VAL, Number.MIN_VALUE ); + return ( array ); +} +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "delete should not be allowed " + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.3-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.3-2.js new file mode 100644 index 00000000000..fdcfb0a0eff --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.3-2.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.3-2.js + ECMA Section: 15.7.3.3 Number.MIN_VALUE + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontDelete attribute of Number.MIN_VALUE + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + + var SECTION = "15.7.3.3-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.MIN_VALUE"; + + writeHeaderToLog( SECTION + " "+ TITLE ); + + var testcases = getTestCases(); + test( testcases ); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var MIN_VAL = 5e-324; + + array[item++] = new TestCase( SECTION, "delete( Number.MIN_VALUE )", false, "delete( Number.MIN_VALUE )" ); + array[item++] = new TestCase( SECTION, "delete( Number.MIN_VALUE ); Number.MIN_VALUE", MIN_VAL, "delete( Number.MIN_VALUE );Number.MIN_VALUE" ); + return ( array ); +} +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "delete should not be allowed " + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.3-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.3-3.js new file mode 100644 index 00000000000..f1c43800d2b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.3-3.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.3-3.js + ECMA Section: 15.7.3.3 Number.MIN_VALUE + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the ReadOnly attribute of Number.MIN_VALUE + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.7.3.3-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.MIN_VALUE: ReadOnly Attribute"; + + writeHeaderToLog( SECTION + " "+TITLE ); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( + SECTION, + "Number.MIN_VALUE=0; Number.MIN_VALUE", + Number.MIN_VALUE, + "Number.MIN_VALUE=0; Number.MIN_VALUE" ); + return ( array ); +} +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += "property should be readonly "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.3-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.3-4.js new file mode 100644 index 00000000000..7b3fa19ca0c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.3-4.js @@ -0,0 +1,69 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.3-4.js + ECMA Section: 15.7.3.3 Number.MIN_VALUE + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontEnum attribute of Number.MIN_VALUE + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + + var SECTION = "15.7.3.3-4"; + var VERSION = "ECMA_1"; + startTest(); + + writeHeaderToLog( SECTION + " Number.MIN_VALUE: DontEnum Attribute"); + + var testcases = getTestCases(); + test( testcases ); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( + SECTION, + "var string = ''; for ( prop in Number ) { string += ( prop == 'MIN_VALUE' ) ? prop : '' } string;", + "", + eval("var string = ''; for ( prop in Number ) { string += ( prop == 'MIN_VALUE' ) ? prop : '' } string;") + ); + + return ( array ); +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += "property should not be enumerated "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.4-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.4-1.js new file mode 100644 index 00000000000..2ff39f68fd5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.4-1.js @@ -0,0 +1,63 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.4-1.js + ECMA Section: 15.7.3.4 Number.NaN + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the value of Number.NaN + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + + var SECTION = "15.7.3.4-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.NaN"; + + writeHeaderToLog( SECTION + " "+ TITLE ); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase(SECTION, "NaN", NaN, Number.NaN ); + return ( array ); +} +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "delete should not be allowed " + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.4-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.4-2.js new file mode 100644 index 00000000000..96535f1e0c5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.4-2.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.4-2.js + ECMA Section: 15.7.3.4 Number.NaN + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontDelete attribute of Number.NaN + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + + var SECTION = "15.7.3.4-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.NaN"; + + writeHeaderToLog( SECTION + " "+ TITLE ); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase(SECTION, "delete( Number.NaN ); Number.NaN", NaN, "delete( Number.NaN );Number.NaN" ); + array[item++] = new TestCase( SECTION, "delete( Number.NaN )", false, "delete( Number.NaN )" ); + + return ( array ); +} +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "delete should not be allowed "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.4-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.4-3.js new file mode 100644 index 00000000000..3f13a2f0206 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.4-3.js @@ -0,0 +1,71 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.4-3.js + ECMA Section: 15.7.3.4 Number.NaN + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the ReadOnly attribute of Number.NaN + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.7.3.4-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.NaN"; + + writeHeaderToLog( SECTION + " "+ TITLE ); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( + SECTION, + "Number.NaN=0; Number.NaN", + Number.NaN, + "Number.NaN=0; Number.NaN" ); + + return ( array ); +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += "property should be readonly "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.4-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.4-4.js new file mode 100644 index 00000000000..33b16677998 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.4-4.js @@ -0,0 +1,71 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.4-4.js + ECMA Section: 15.7.3.4 Number.NaN + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontEnum attribute of Number.NaN + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.7.3.4-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.NaN"; + + writeHeaderToLog( SECTION + " " + TITLE); + + var testcases = getTestCases(); + test( testcases ); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( + SECTION, + "var string = ''; for ( prop in Number ) { string += ( prop == 'NaN' ) ? prop : '' } string;", + "", + eval("var string = ''; for ( prop in Number ) { string += ( prop == 'NaN' ) ? prop : '' } string;") + ); + + return ( array ); +} + +function test( testcases ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += "property should not be enumerated "; + passed = false; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.5-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.5-1.js new file mode 100644 index 00000000000..1ca04eb7655 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.5-1.js @@ -0,0 +1,61 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.5-1.js + ECMA Section: 15.7.3.5 Number.NEGATIVE_INFINITY + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the value of Number.NEGATIVE_INFINITY + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.7.3.5-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.NEGATIVE_INFINITY"; + + writeHeaderToLog( SECTION + " "+TITLE); + + var testcases = getTestCases(); + test( testcases ); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase(SECTION, "Number.NEGATIVE_INFINITY", -Infinity, Number.NEGATIVE_INFINITY ); + + return ( array ); +} +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value " + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.5-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.5-2.js new file mode 100644 index 00000000000..2291552e197 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.5-2.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.5-2.js + ECMA Section: 15.7.3.5 Number.NEGATIVE_INFINITY + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontDelete attribute of Number.NEGATIVE_INFINITY + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.7.3.5-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.NEGATIVE_INFINITY"; + + writeHeaderToLog( SECTION + " "+TITLE); + + var testcases = getTestCases(); + test( testcases ); + + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "delete( Number.NEGATIVE_INFINITY )", + false, + "delete( Number.NEGATIVE_INFINITY )" ); + + array[item++] = new TestCase( SECTION, + "delete( Number.NEGATIVE_INFINITY ); Number.NEGATIVE_INFINITY", + -Infinity, + "delete( Number.NEGATIVE_INFINITY );Number.NEGATIVE_INFINITY" ); + return ( array ); +} +function test( testcases ) { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "delete should not be allowed " + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.5-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.5-3.js new file mode 100644 index 00000000000..c14fcf808db --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.5-3.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.5-3.js + ECMA Section: 15.7.3.5 Number.NEGATIVE_INFINITY + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the ReadOnly attribute of Number.NEGATIVE_INFINITY + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.7.3.5-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.NEGATIVE_INFINITY"; + + writeHeaderToLog( SECTION + " "+TITLE); + + var testcases = getTestCases(); + test( testcases ); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( + SECTION, + "Number.NEGATIVE_INFINITY=0; Number.NEGATIVE_INFINITY", + -Infinity, + "Number.NEGATIVE_INFINITY=0; Number.NEGATIVE_INFINITY" ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += "property should be readonly "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.5-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.5-4.js new file mode 100644 index 00000000000..fd3fd4e1f71 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.5-4.js @@ -0,0 +1,68 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.5-4.js + ECMA Section: 15.7.3.5 Number.NEGATIVE_INFINITY + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontEnum attribute of Number.NEGATIVE_INFINITY + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.7.3.5-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.NEGATIVE_INFINITY"; + + writeHeaderToLog( SECTION + " "+TITLE); + + var testcases = getTestCases(); + test( testcases ); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( + SECTION, + "var string = ''; for ( prop in Number ) { string += ( prop == 'NEGATIVE_INFINITY' ) ? prop : '' } string;", + "", + eval("var string = ''; for ( prop in Number ) { string += ( prop == 'NEGATIVE_INFINITY' ) ? prop : '' } string;") + ); + return ( array ); +} + +function test( testcases ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += "property should not be enumerated "; + + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.6-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.6-1.js new file mode 100644 index 00000000000..a14b35e509c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.6-1.js @@ -0,0 +1,60 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.6-1.js + ECMA Section: 15.7.3.6 Number.POSITIVE_INFINITY + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the value of Number.POSITIVE_INFINITY + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.7.3.6-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.POSITIVE_INFINITY"; + + writeHeaderToLog( SECTION + " "+TITLE); + + var testcases = getTestCases(); + test( testcases ); +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY", Infinity, Number.POSITIVE_INFINITY ); + return ( array ); +} +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value " + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.6-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.6-2.js new file mode 100644 index 00000000000..573648b3dd6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.6-2.js @@ -0,0 +1,64 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.6-2.js + ECMA Section: 15.7.3.6 Number.POSITIVE_INFINITY + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontDelete attribute of Number.POSITIVE_INFINITY + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.7.3.6-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.POSITIVE_INFINITY"; + + writeHeaderToLog( SECTION + " "+TITLE); + + var testcases = getTestCases(); + test( testcases ); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase(SECTION, "delete( Number.POSITIVE_INFINITY )", false, "delete( Number.POSITIVE_INFINITY )" ); + array[item++] = new TestCase(SECTION, "delete( Number.POSITIVE_INFINITY ); Number.POSITIVE_INFINITY", Infinity, "delete( Number.POSITIVE_INFINITY );Number.POSITIVE_INFINITY" ); + return ( array ); +} + +function test( testcases ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "delete should not be allowed " + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.6-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.6-3.js new file mode 100644 index 00000000000..c4c59734fa7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.6-3.js @@ -0,0 +1,68 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.6-3.js + ECMA Section: 15.7.3.6 Number.POSITIVE_INFINITY + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the ReadOnly attribute of Number.POSITIVE_INFINITY + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + var SECTION = "15.7.3.6-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.POSITIVE_INFINITY"; + + writeHeaderToLog( SECTION + " "+TITLE); + + var testcases = getTestCases(); + test( testcases ); + + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( + SECTION, + "Number.POSITIVE_INFINITY=0; Number.POSITIVE_INFINITY", + Number.POSITIVE_INFINITY, + "Number.POSITIVE_INFINITY=0; Number.POSITIVE_INFINITY" ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += "property should be readonly "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.6-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.6-4.js new file mode 100644 index 00000000000..25b2b4f9ffe --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.6-4.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.6-4.js + ECMA Section: 15.7.3.6 Number.POSITIVE_INFINITY + Description: All value properties of the Number object should have + the attributes [DontEnum, DontDelete, ReadOnly] + + this test checks the DontEnum attribute of Number.POSITIVE_INFINITY + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.7.3.6-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.POSITIVE_INFINITY"; + + writeHeaderToLog( SECTION + " "+TITLE); + + var testcases = getTestCases(); + test( testcases ); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( + SECTION, + "var string = ''; for ( prop in Number ) { string += ( prop == 'POSITIVE_INFINITY' ) ? prop : '' } string;", + "", + eval("var string = ''; for ( prop in Number ) { string += ( prop == 'POSITIVE_INFINITY' ) ? prop : '' } string;") + ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += "property should not be enumerated "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.js new file mode 100644 index 00000000000..c832cfcbe11 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.3.js @@ -0,0 +1,68 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.3.js + 15.7.3 Properties of the Number Constructor + + Description: The value of the internal [[Prototype]] property + of the Number constructor is the Function prototype + object. The Number constructor also has the internal + [[Call]] and [[Construct]] properties, and the length + property. + + Other properties are in subsequent tests. + + Author: christine@netscape.com + Date: 29 september 1997 +*/ + + var SECTION = "15.7.3"; + var VERSION = "ECMA_2"; + startTest(); + var TITLE = "Properties of the Number Constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase(SECTION, "Number.__proto__", Function.prototype, Number.__proto__ ); + array[item++] = new TestCase(SECTION, "Number.length", 1, Number.length ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4-1.js new file mode 100644 index 00000000000..8d7c79d75f5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4-1.js @@ -0,0 +1,63 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.4-1.js + ECMA Section: 15.7.4.1 Properties of the Number Prototype Object + Description: + Author: christine@netscape.com + Date: 16 september 1997 +*/ + + + var SECTION = "15.7.4-1"; + var VERSION = "ECMA_1"; + startTest(); + writeHeaderToLog( SECTION + "Properties of the Number prototype object"); + + var testcases = getTestCases(); + + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase(SECTION, "Number.prototype.valueOf()", 0, Number.prototype.valueOf() ); + array[item++] = new TestCase(SECTION, "typeof(Number.prototype)", "object", typeof(Number.prototype) ); + array[item++] = new TestCase(SECTION, "Number.prototype.constructor == Number", true, Number.prototype.constructor == Number ); +// array[item++] = new TestCase(SECTION, "Number.prototype == Number.__proto__", true, Number.prototype == Number.__proto__ ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.1.js new file mode 100644 index 00000000000..789e71cc6cc --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.1.js @@ -0,0 +1,64 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.4.1.js + ECMA Section: 15.7.4.1.1 Number.prototype.constructor + + Number.prototype.constructor is the built-in Number constructor. + + Description: + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.7.4.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Number.prototype.constructor"; + + writeHeaderToLog( SECTION + " "+TITLE); + + var testcases = getTestCases(); + test( testcases ); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "Number.prototype.constructor", + Number, + Number.prototype.constructor ); + return ( array ); +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.2-1.js new file mode 100644 index 00000000000..f41b698823d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.2-1.js @@ -0,0 +1,80 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.4.2.js + ECMA Section: 15.7.4.2.1 Number.prototype.toString() + Description: + If the radix is the number 10 or not supplied, then this number value is + given as an argument to the ToString operator; the resulting string value + is returned. + + If the radix is supplied and is an integer from 2 to 36, but not 10, the + result is a string, the choice of which is implementation dependent. + + The toString function is not generic; it generates a runtime error if its + this value is not a Number object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.7.4.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Number.prototype.toString()"); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + +// the following two lines cause navigator to crash -- cmb 9/16/97 + array[item++] = new TestCase(SECTION, "Number.prototype.toString()", "0", "Number.prototype.toString()" ); + array[item++] = new TestCase(SECTION, "typeof(Number.prototype.toString())", "string", "typeof(Number.prototype.toString())" ); + + array[item++] = new TestCase(SECTION, "s = Number.prototype.toString; o = new Number(); o.toString = s; o.toString()", "0", "s = Number.prototype.toString; o = new Number(); o.toString = s; o.toString()" ); + array[item++] = new TestCase(SECTION, "s = Number.prototype.toString; o = new Number(1); o.toString = s; o.toString()", "1", "s = Number.prototype.toString; o = new Number(1); o.toString = s; o.toString()" ); + array[item++] = new TestCase(SECTION, "s = Number.prototype.toString; o = new Number(-1); o.toString = s; o.toString()", "-1", "s = Number.prototype.toString; o = new Number(-1); o.toString = s; o.toString()" ); + + array[item++] = new TestCase(SECTION, "var MYNUM = new Number(255); MYNUM.toString(10)", "255", "var MYNUM = new Number(255); MYNUM.toString(10)" ); + array[item++] = new TestCase(SECTION, "var MYNUM = new Number(Number.NaN); MYNUM.toString(10)", "NaN", "var MYNUM = new Number(Number.NaN); MYNUM.toString(10)" ); + array[item++] = new TestCase(SECTION, "var MYNUM = new Number(Infinity); MYNUM.toString(10)", "Infinity", "var MYNUM = new Number(Infinity); MYNUM.toString(10)" ); + array[item++] = new TestCase(SECTION, "var MYNUM = new Number(-Infinity); MYNUM.toString(10)", "-Infinity", "var MYNUM = new Number(-Infinity); MYNUM.toString(10)" ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual= eval(testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.2-2-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.2-2-n.js new file mode 100644 index 00000000000..2aa035a6486 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.2-2-n.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.4.2-2-n.js + ECMA Section: 15.7.4.2.1 Number.prototype.toString() + Description: + If the radix is the number 10 or not supplied, then this number value is + given as an argument to the ToString operator; the resulting string value + is returned. + + If the radix is supplied and is an integer from 2 to 36, but not 10, the + result is a string, the choice of which is implementation dependent. + + The toString function is not generic; it generates a runtime error if its + this value is not a Number object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.7.4.2-2-n"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Number.prototype.toString()"); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase(SECTION, "o = new Object(); o.toString = Number.prototype.toString; o.toString()", "error", "o = new Object(); o.toString = Number.prototype.toString; o.toString()" ); +// array[item++] = new TestCase(SECTION, "o = new String(); o.toString = Number.prototype.toString; o.toString()", "error", "o = new String(); o.toString = Number.prototype.toString; o.toString()" ); +// array[item++] = new TestCase(SECTION, "o = 3; o.toString = Number.prototype.toString; o.toString()", "error", "o = 3; o.toString = Number.prototype.toString; o.toString()" ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.2-3-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.2-3-n.js new file mode 100644 index 00000000000..8e73acba178 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.2-3-n.js @@ -0,0 +1,68 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.4.2-3-n.js + ECMA Section: 15.7.4.2.1 Number.prototype.toString() + Description: + If the radix is the number 10 or not supplied, then this number value is + given as an argument to the ToString operator; the resulting string value + is returned. + + If the radix is supplied and is an integer from 2 to 36, but not 10, the + result is a string, the choice of which is implementation dependent. + + The toString function is not generic; it generates a runtime error if its + this value is not a Number object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.7.4.2-3-n"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Number.prototype.toString()"); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase(SECTION, "o = new String(); o.toString = Number.prototype.toString; o.toString()", "error", "o = new String(); o.toString = Number.prototype.toString; o.toString()" ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.2-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.2-4.js new file mode 100644 index 00000000000..4896ba958fb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.2-4.js @@ -0,0 +1,68 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.4.2-4.js + ECMA Section: 15.7.4.2.1 Number.prototype.toString() + Description: + If the radix is the number 10 or not supplied, then this number value is + given as an argument to the ToString operator; the resulting string value + is returned. + + If the radix is supplied and is an integer from 2 to 36, but not 10, the + result is a string, the choice of which is implementation dependent. + + The toString function is not generic; it generates a runtime error if its + this value is not a Number object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.7.4.2-4"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Number.prototype.toString()"); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase(SECTION, "o = 3; o.toString = Number.prototype.toString; o.toString()", "3", "o = 3; o.toString = Number.prototype.toString; o.toString()" ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.3-1.js new file mode 100644 index 00000000000..341b347fb7c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.3-1.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.4.3-1.js + ECMA Section: 15.7.4.3.1 Number.prototype.valueOf() + Description: + Returns this number value. + + The valueOf function is not generic; it generates a runtime error if its + this value is not a Number object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.7.4.3-1"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Number.prototype.valueOf()"); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + +// the following two line causes navigator to crash -- cmb 9/16/97 + array[item++] = new TestCase("15.7.4.1", "Number.prototype.valueOf()", 0, "Number.prototype.valueOf()" ); + + array[item++] = new TestCase("15.7.4.1", "(new Number(1)).valueOf()", 1, "(new Number(1)).valueOf()" ); + array[item++] = new TestCase("15.7.4.1", "(new Number(-1)).valueOf()", -1, "(new Number(-1)).valueOf()" ); + array[item++] = new TestCase("15.7.4.1", "(new Number(0)).valueOf()", 0, "(new Number(0)).valueOf()" ); + array[item++] = new TestCase("15.7.4.1", "(new Number(Number.POSITIVE_INFINITY)).valueOf()", Number.POSITIVE_INFINITY, "(new Number(Number.POSITIVE_INFINITY)).valueOf()" ); + array[item++] = new TestCase("15.7.4.1", "(new Number(Number.NaN)).valueOf()", Number.NaN, "(new Number(Number.NaN)).valueOf()" ); + array[item++] = new TestCase("15.7.4.1", "(new Number()).valueOf()", 0, "(new Number()).valueOf()" ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.3-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.3-2.js new file mode 100644 index 00000000000..6b81da64df5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.3-2.js @@ -0,0 +1,63 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.4.3-2.js + ECMA Section: 15.7.4.3.1 Number.prototype.valueOf() + Description: + Returns this number value. + + The valueOf function is not generic; it generates a runtime error if its + this value is not a Number object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.7.4.3-2"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Number.prototype.valueOf()"); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase(SECTION, "v = Number.prototype.valueOf; num = 3; num.valueOf = v; num.valueOf()", 3, "v = Number.prototype.valueOf; num = 3; num.valueOf = v; num.valueOf()" ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.3-3-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.3-3-n.js new file mode 100644 index 00000000000..8905f25299b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.3-3-n.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.4.3-3.js + ECMA Section: 15.7.4.3.1 Number.prototype.valueOf() + Description: + Returns this number value. + + The valueOf function is not generic; it generates a runtime error if its + this value is not a Number object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "15.7.4.3-3-n"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Number.prototype.valueOf()"); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + +// array[item++] = new TestCase("15.7.4.1", "v = Number.prototype.valueOf; num = 3; num.valueOf = v; num.valueOf()", "error", "v = Number.prototype.valueOf; num = 3; num.valueOf = v; num.valueOf()" ); + array[item++] = new TestCase("15.7.4.1", "v = Number.prototype.valueOf; o = new String('Infinity'); o.valueOf = v; o.valueOf()", "error", "v = Number.prototype.valueOf; o = new String('Infinity'); o.valueOf = v; o.valueOf()" ); +// array[item++] = new TestCase("15.7.4.1", "v = Number.prototype.valueOf; o = new Object(); o.valueOf = v; o.valueOf()", "error", "v = Number.prototype.valueOf; o = new Object(); o.valueOf = v; o.valueOf()" ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.js new file mode 100644 index 00000000000..fd62ad55e7f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Number/15.7.4.js @@ -0,0 +1,86 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.7.4.js + ECMA Section: 15.7.4 + + Description: + + The Number prototype object is itself a Number object (its [[Class]] is + "Number") whose value is +0. + + The value of the internal [[Prototype]] property of the Number prototype + object is the Object prototype object (15.2.3.1). + + In following descriptions of functions that are properties of the Number + prototype object, the phrase "this Number object" refers to the object + that is the this value for the invocation of the function; it is an error + if this does not refer to an object for which the value of the internal + [[Class]] property is "Number". Also, the phrase "this number value" refers + to the number value represented by this Number object, that is, the value + of the internal [[Value]] property of this Number object. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "15.7.4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Properties of the Number Prototype Object"; + + writeHeaderToLog( SECTION + " "+TITLE); + + var testcases = getTestCases(); + test( testcases ); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, + "Number.prototype.toString=Object.prototype.toString;Number.prototype.toString()", + "[object Number]", + eval("Number.prototype.toString=Object.prototype.toString;Number.prototype.toString()") ); + array[item++] = new TestCase( SECTION, "typeof Number.prototype", "object", typeof Number.prototype ); + array[item++] = new TestCase( SECTION, "Number.prototype.valueOf()", 0, Number.prototype.valueOf() ); + + +// The __proto__ property cannot be used in ECMA_1 tests. +// array[item++] = new TestCase( SECTION, "Number.prototype.__proto__", Object.prototype, Number.prototype.__proto__ ); +// array[item++] = new TestCase( SECTION, "Number.prototype.__proto__ == Object.prototype", true, Number.prototype.__proto__ == Object.prototype ); + + + return ( array ); +} +function test( ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + + } + + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.1.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.1.1.js new file mode 100644 index 00000000000..cbc17832623 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.1.1.js @@ -0,0 +1,151 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.2.1.1.js + ECMA Section: 15.2.1.1 The Object Constructor Called as a Function: + Object(value) + Description: When Object is called as a function rather than as a + constructor, the following steps are taken: + + 1. If value is null or undefined, create and return a + new object with no properties other than internal + properties exactly as if the object constructor + had been called on that same value (15.2.2.1). + 2. Return ToObject (value), whose rules are: + + undefined generate a runtime error + null generate a runtime error + boolean create a new Boolean object whose default + value is the value of the boolean. + number Create a new Number object whose default + value is the value of the number. + string Create a new String object whose default + value is the value of the string. + object Return the input argument (no conversion). + + Author: christine@netscape.com + Date: 17 july 1997 +*/ + + var SECTION = "15.2.1.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Object( value )"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var NULL_OBJECT = Object(null); + + array[item++] = new TestCase( SECTION, "Object(null).valueOf()", NULL_OBJECT, (NULL_OBJECT).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(null)", "object", typeof (Object(null)) ); + array[item++] = new TestCase( SECTION, "Object(null).__proto__", Object.prototype, (Object(null)).__proto__ ); + + var UNDEFINED_OBJECT = Object( void 0 ); + + array[item++] = new TestCase( SECTION, "Object(void 0).valueOf()", UNDEFINED_OBJECT, (UNDEFINED_OBJECT).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(void 0)", "object", typeof (Object(void 0)) ); + array[item++] = new TestCase( SECTION, "Object(void 0).__proto__", Object.prototype, (Object(void 0)).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object(true).valueOf()", true, (Object(true)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(true)", "object", typeof Object(true) ); + array[item++] = new TestCase( SECTION, "var MYOB = Object(true); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Boolean]", eval("var MYOB = Object(true); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "Object(false).valueOf()", false, (Object(false)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(false)", "object", typeof Object(false) ); + array[item++] = new TestCase( SECTION, "var MYOB = Object(false); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Boolean]", eval("var MYOB = Object(false); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "Object(0).valueOf()", 0, (Object(0)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(0)", "object", typeof Object(0) ); + array[item++] = new TestCase( SECTION, "var MYOB = Object(0); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(0); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "Object(-0).valueOf()", -0, (Object(-0)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(-0)", "object", typeof Object(-0) ); + array[item++] = new TestCase( SECTION, "var MYOB = Object(-0); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(-0); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "Object(1).valueOf()", 1, (Object(1)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(1)", "object", typeof Object(1) ); + array[item++] = new TestCase( SECTION, "var MYOB = Object(1); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(1); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "Object(-1).valueOf()", -1, (Object(-1)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(-1)", "object", typeof Object(-1) ); + array[item++] = new TestCase( SECTION, "var MYOB = Object(-1); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(-1); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "Object(Number.MAX_VALUE).valueOf()", 1.7976931348623157e308, (Object(Number.MAX_VALUE)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(Number.MAX_VALUE)", "object", typeof Object(Number.MAX_VALUE) ); + array[item++] = new TestCase( SECTION, "var MYOB = Object(Number.MAX_VALUE); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(Number.MAX_VALUE); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "Object(Number.MIN_VALUE).valueOf()", 5e-324, (Object(Number.MIN_VALUE)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(Number.MIN_VALUE)", "object", typeof Object(Number.MIN_VALUE) ); + array[item++] = new TestCase( SECTION, "var MYOB = Object(Number.MIN_VALUE); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(Number.MIN_VALUE); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "Object(Number.POSITIVE_INFINITY).valueOf()", Number.POSITIVE_INFINITY, (Object(Number.POSITIVE_INFINITY)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(Number.POSITIVE_INFINITY)", "object", typeof Object(Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "var MYOB = Object(Number.POSITIVE_INFINITY); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(Number.POSITIVE_INFINITY); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "Object(Number.NEGATIVE_INFINITY).valueOf()", Number.NEGATIVE_INFINITY, (Object(Number.NEGATIVE_INFINITY)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(Number.NEGATIVE_INFINITY)", "object", typeof Object(Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "var MYOB = Object(Number.NEGATIVE_INFINITY); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(Number.NEGATIVE_INFINITY); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "Object(Number.NaN).valueOf()", Number.NaN, (Object(Number.NaN)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(Number.NaN)", "object", typeof Object(Number.NaN) ); + array[item++] = new TestCase( SECTION, "var MYOB = Object(Number.NaN); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(Number.NaN); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "Object('a string').valueOf()", "a string", (Object("a string")).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object('a string')", "object", typeof (Object("a string")) ); + array[item++] = new TestCase( SECTION, "var MYOB = Object('a string'); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object String]", eval("var MYOB = Object('a string'); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "Object('').valueOf()", "", (Object("")).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object('')", "object", typeof (Object("")) ); + array[item++] = new TestCase( SECTION, "var MYOB = Object(''); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object String]", eval("var MYOB = Object(''); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "Object('\\r\\t\\b\\n\\v\\f').valueOf()", "\r\t\b\n\v\f", (Object("\r\t\b\n\v\f")).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object('\\r\\t\\b\\n\\v\\f')", "object", typeof (Object("\\r\\t\\b\\n\\v\\f")) ); + array[item++] = new TestCase( SECTION, "var MYOB = Object('\\r\\t\\b\\n\\v\\f'); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object String]", eval("var MYOB = Object('\\r\\t\\b\\n\\v\\f'); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "Object( '\\\'\\\"\\' ).valueOf()", "\'\"\\", (Object("\'\"\\")).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object( '\\\'\\\"\\' )", "object", typeof Object("\'\"\\") ); +// array[item++] = new TestCase( SECTION, "var MYOB = Object( '\\\'\\\"\\' ); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object String]", eval("var MYOB = Object( '\\\'\\\"\\' ); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + return ( array ); +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += + ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.1.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.1.2.js new file mode 100644 index 00000000000..6a619b6c4a2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.1.2.js @@ -0,0 +1,85 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.2.1.2.js + ECMA Section: 15.2.1.2 The Object Constructor Called as a Function: + Object(value) + Description: When Object is called as a function rather than as a + constructor, the following steps are taken: + + 1. If value is null or undefined, create and return a + new object with no proerties other than internal + properties exactly as if the object constructor + had been called on that same value (15.2.2.1). + 2. Return ToObject (value), whose rules are: + + undefined generate a runtime error + null generate a runtime error + boolean create a new Boolean object whose default + value is the value of the boolean. + number Create a new Number object whose default + value is the value of the number. + string Create a new String object whose default + value is the value of the string. + object Return the input argument (no conversion). + + Author: christine@netscape.com + Date: 17 july 1997 +*/ + + var SECTION = "15.2.1.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Object()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var MYOB = Object(); + + array[item++] = new TestCase( SECTION, "var MYOB = Object(); MYOB.valueOf()", MYOB, MYOB.valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object()", "object", typeof (Object(null)) ); + array[item++] = new TestCase( SECTION, "var MYOB = Object(); MYOB.toString()", "[object Object]", eval("var MYOB = Object(); MYOB.toString()") ); + + return ( array ); +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += + ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.2.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.2.1.js new file mode 100644 index 00000000000..cf04ce46e77 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.2.1.js @@ -0,0 +1,139 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.2.2.1.js + ECMA Section: 15.2.2.1 The Object Constructor: new Object( value ) + + 1.If the type of the value is not Object, go to step 4. + 2.If the value is a native ECMAScript object, do not create a new object; simply return value. + 3.If the value is a host object, then actions are taken and a result is returned in an + implementation-dependent manner that may depend on the host object. + 4.If the type of the value is String, return ToObject(value). + 5.If the type of the value is Boolean, return ToObject(value). + 6.If the type of the value is Number, return ToObject(value). + 7.(The type of the value must be Null or Undefined.) Create a new native ECMAScript object. + The [[Prototype]] property of the newly constructed object is set to the Object prototype object. + The [[Class]] property of the newly constructed object is set to "Object". + The newly constructed object has no [[Value]] property. + Return the newly created native object. + + Description: This does not test cases where the object is a host object. + Author: christine@netscape.com + Date: 7 october 1997 +*/ + + var SECTION = "15.2.2.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "new Object( value )"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "typeof new Object(null)", "object", typeof new Object(null) ); + array[item++] = new TestCase( SECTION, "MYOB = new Object(null); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Object]", eval("MYOB = new Object(null); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "typeof new Object(void 0)", "object", typeof new Object(void 0) ); + array[item++] = new TestCase( SECTION, "MYOB = new Object(new Object(void 0)); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Object]", eval("MYOB = new Object(new Object(void 0)); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + + array[item++] = new TestCase( SECTION, "typeof new Object('string')", "object", typeof new Object('string') ); + array[item++] = new TestCase( SECTION, "MYOB = (new Object('string'); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object String]", eval("MYOB = new Object('string'); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + array[item++] = new TestCase( SECTION, "(new Object('string').valueOf()", "string", (new Object('string')).valueOf() ); + + array[item++] = new TestCase( SECTION, "typeof new Object('')", "object", typeof new Object('') ); + array[item++] = new TestCase( SECTION, "MYOB = (new Object(''); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object String]", eval("MYOB = new Object(''); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + array[item++] = new TestCase( SECTION, "(new Object('').valueOf()", "", (new Object('')).valueOf() ); + + array[item++] = new TestCase( SECTION, "typeof new Object(Number.NaN)", "object", typeof new Object(Number.NaN) ); + array[item++] = new TestCase( SECTION, "MYOB = (new Object(Number.NaN); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("MYOB = new Object(Number.NaN); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + array[item++] = new TestCase( SECTION, "(new Object(Number.NaN).valueOf()", Number.NaN, (new Object(Number.NaN)).valueOf() ); + + array[item++] = new TestCase( SECTION, "typeof new Object(0)", "object", typeof new Object(0) ); + array[item++] = new TestCase( SECTION, "MYOB = (new Object(0); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("MYOB = new Object(0); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + array[item++] = new TestCase( SECTION, "(new Object(0).valueOf()", 0, (new Object(0)).valueOf() ); + + array[item++] = new TestCase( SECTION, "typeof new Object(-0)", "object", typeof new Object(-0) ); + array[item++] = new TestCase( SECTION, "MYOB = (new Object(-0); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("MYOB = new Object(-0); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + array[item++] = new TestCase( SECTION, "(new Object(-0).valueOf()", -0, (new Object(-0)).valueOf() ); + + array[item++] = new TestCase( SECTION, "typeof new Object(1)", "object", typeof new Object(1) ); + array[item++] = new TestCase( SECTION, "MYOB = (new Object(1); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("MYOB = new Object(1); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + array[item++] = new TestCase( SECTION, "(new Object(1).valueOf()", 1, (new Object(1)).valueOf() ); + + array[item++] = new TestCase( SECTION, "typeof new Object(-1)", "object", typeof new Object(-1) ); + array[item++] = new TestCase( SECTION, "MYOB = (new Object(-1); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("MYOB = new Object(-1); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + array[item++] = new TestCase( SECTION, "(new Object(-1).valueOf()", -1, (new Object(-1)).valueOf() ); + + array[item++] = new TestCase( SECTION, "typeof new Object(true)", "object", typeof new Object(true) ); + array[item++] = new TestCase( SECTION, "MYOB = (new Object(true); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Boolean]", eval("MYOB = new Object(true); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + array[item++] = new TestCase( SECTION, "(new Object(true).valueOf()", true, (new Object(true)).valueOf() ); + + array[item++] = new TestCase( SECTION, "typeof new Object(false)", "object", typeof new Object(false) ); + array[item++] = new TestCase( SECTION, "MYOB = (new Object(false); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Boolean]", eval("MYOB = new Object(false); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + array[item++] = new TestCase( SECTION, "(new Object(false).valueOf()", false, (new Object(false)).valueOf() ); + + array[item++] = new TestCase( SECTION, "typeof new Object(Boolean())", "object", typeof new Object(Boolean()) ); + array[item++] = new TestCase( SECTION, "MYOB = (new Object(Boolean()); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Boolean]", eval("MYOB = new Object(Boolean()); MYOB.toString = Object.prototype.toString; MYOB.toString()") ); + array[item++] = new TestCase( SECTION, "(new Object(Boolean()).valueOf()", Boolean(), (new Object(Boolean())).valueOf() ); + + + var myglobal = this; + var myobject = new Object( "my new object" ); + var myarray = new Array(); + var myboolean = new Boolean(); + var mynumber = new Number(); + var mystring = new String(); + var myobject = new Object(); + var myfunction = new Function( "x", "return x"); + var mymath = Math; + + array[item++] = new TestCase( SECTION, "myglobal = new Object( this )", myglobal, new Object(this) ); + array[item++] = new TestCase( SECTION, "myobject = new Object('my new object'); new Object(myobject)", myobject, new Object(myobject) ); + array[item++] = new TestCase( SECTION, "myarray = new Array(); new Object(myarray)", myarray, new Object(myarray) ); + array[item++] = new TestCase( SECTION, "myboolean = new Boolean(); new Object(myboolean)", myboolean, new Object(myboolean) ); + array[item++] = new TestCase( SECTION, "mynumber = new Number(); new Object(mynumber)", mynumber, new Object(mynumber) ); + array[item++] = new TestCase( SECTION, "mystring = new String9); new Object(mystring)", mystring, new Object(mystring) ); + array[item++] = new TestCase( SECTION, "myobject = new Object(); new Object(mynobject)", myobject, new Object(myobject) ); + array[item++] = new TestCase( SECTION, "myfunction = new Function(); new Object(myfunction)", myfunction, new Object(myfunction) ); + array[item++] = new TestCase( SECTION, "mymath = Math; new Object(mymath)", mymath, new Object(mymath) ); + + return ( array ); +} +function test() { + for (tc = 0 ; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + + } + + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.2.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.2.2.js new file mode 100644 index 00000000000..eddedfa5bb2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.2.2.js @@ -0,0 +1,81 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.2.2.2.js + ECMA Section: 15.2.2.2 new Object() + Description: + + When the Object constructor is called with no argument, the following + step is taken: + + 1. Create a new native ECMAScript object. + The [[Prototype]] property of the newly constructed object is set to + the Object prototype object. + + The [[Class]] property of the newly constructed object is set + to "Object". + + The newly constructed object has no [[Value]] property. + + Return the newly created native object. + + Author: christine@netscape.com + Date: 7 october 1997 +*/ + var SECTION = "15.2.2.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "new Object()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "typeof new Object()", "object", typeof new Object() ); + array[item++] = new TestCase( SECTION, "Object.prototype.toString()", "[object Object]", Object.prototype.toString() ); + array[item++] = new TestCase( SECTION, "(new Object()).toString()", "[object Object]", (new Object()).toString() ); + + return ( array ); +} +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function MyObject( value ) { + this.value = value; + this.valueOf = new Function( "return this.value" ); + this.toString = new Function( "return this.value+''" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3-1.js new file mode 100644 index 00000000000..06f50ce94ba --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3-1.js @@ -0,0 +1,65 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.2.3-1.js + ECMA Section: 15.2.3 Properties of the Object Constructor + + Description: The value of the internal [[Prototype]] property of the + Object constructor is the Function prototype object. + + Besides the call and construct propreties and the length + property, the Object constructor has properties described + in 15.2.3.1. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.2.3"; + var VERSION = "ECMA_2"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Properties of the Object Constructor"); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Object.__proto__", Function.prototype, Object.__proto__ ); + array[item++] = new TestCase( SECTION, "Object.length", 1, Object.length ); + + return ( array ); +} +function test( array ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3.1-1.js new file mode 100644 index 00000000000..ee0539a212c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3.1-1.js @@ -0,0 +1,68 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.2.3.1-1.js + ECMA Section: 15.2.3.1 Object.prototype + + Description: The initial value of Object.prototype is the built-in + Object prototype object. + + This property shall have the attributes [ DontEnum, + DontDelete ReadOnly ] + + This tests the [DontEnum] property of Object.prototype + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.2.3.1-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Object.prototype"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "var str = '';for ( p in Object ) { str += p; }; str", + "", + eval( "var str = ''; for ( p in Object ) { str += p; }; str" ) + ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3.1-2.js new file mode 100644 index 00000000000..fc2c735b714 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3.1-2.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.2.3.1-2.js + ECMA Section: 15.2.3.1 Object.prototype + + Description: The initial value of Object.prototype is the built-in + Object prototype object. + + This property shall have the attributes [ DontEnum, + DontDelete ReadOnly ] + + This tests the [DontDelete] property of Object.prototype + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + + var SECTION = "15.2.3.1-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Object.prototype"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "delete( Object.prototype )", + false, + "delete( Object.prototype )" + ); + return ( array ); +} +function test( array ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3.1-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3.1-3.js new file mode 100644 index 00000000000..eb3a79deaf4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3.1-3.js @@ -0,0 +1,69 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.2.3.1-3.js + ECMA Section: 15.2.3.1 Object.prototype + + Description: The initial value of Object.prototype is the built-in + Object prototype object. + + This property shall have the attributes [ DontEnum, + DontDelete ReadOnly ] + + This tests the [ReadOnly] property of Object.prototype + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + + var SECTION = "15.2.3.1-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Object.prototype"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "Object.prototype = null; Object.prototype", + Object.prototype, + "Object.prototype = null; Object.prototype" + ); + return ( array ); +} +function test( array ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3.1-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3.1-4.js new file mode 100644 index 00000000000..8a39d7e5bdd --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3.1-4.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.2.3.1-4.js + ECMA Section: 15.2.3.1 Object.prototype + + Description: The initial value of Object.prototype is the built-in + Object prototype object. + + This property shall have the attributes [ DontEnum, + DontDelete ReadOnly ] + + This tests the [DontDelete] property of Object.prototype + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + + var SECTION = "15.2.3.1-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Object.prototype"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "delete( Object.prototype ); Object.prototype", + Object.prototype, + "delete(Object.prototype); Object.prototype" + ); + return ( array ); +} +function test( array ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval(testcases[tc].actual); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3.js new file mode 100644 index 00000000000..152add9dba3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.3.js @@ -0,0 +1,68 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.2.3.js + ECMA Section: 15.2.3 Properties of the Object Constructor + + Description: The value of the internal [[Prototype]] property of the + Object constructor is the Function prototype object. + + Besides the call and construct propreties and the length + property, the Object constructor has properties described + in 15.2.3.1. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + + var SECTION = "15.2.3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Properties of the Object Constructor"; + + writeHeaderToLog( SECTION + " " + TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + +// array[item++] = new TestCase( SECTION, "Object.__proto__", Function.prototype, Object.__proto__ ); + array[item++] = new TestCase( SECTION, "Object.length", 1, Object.length ); + + return ( array ); +} +function test( array ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.4.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.4.1.js new file mode 100644 index 00000000000..61f2898316f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.4.1.js @@ -0,0 +1,63 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.2.4.1.js + ECMA Section: 15.2.4 Object.prototype.constructor + + Description: The initial value of the Object.prototype.constructor + is the built-in Object constructor. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.2.4.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Object.prototype.constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "Object.prototype.constructor", + Object, + Object.prototype.constructor + ); + return ( array ); +} +function test( array ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.4.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.4.2.js new file mode 100644 index 00000000000..40eca1b17c4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.4.2.js @@ -0,0 +1,128 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.2.4.2.js + ECMA Section: 15.2.4.2 Object.prototype.toString() + + Description: When the toString method is called, the following + steps are taken: + 1. Get the [[Class]] property of this object + 2. Call ToString( Result(1) ) + 3. Compute a string value by concatenating the three + strings "[object " + Result(2) + "]" + 4. Return Result(3). + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.2.4.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Object.prototype.toString()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "(new Object()).toString()", "[object Object]", (new Object()).toString() ); + + array[item++] = new TestCase( SECTION, "myvar = this; myvar.toString = Object.prototype.toString; myvar.toString()", + GLOBAL, + eval("myvar = this; myvar.toString = Object.prototype.toString; myvar.toString()") ); + + array[item++] = new TestCase( SECTION, "myvar = MyObject; myvar.toString = Object.prototype.toString; myvar.toString()", + "[object Function]", + eval("myvar = MyObject; myvar.toString = Object.prototype.toString; myvar.toString()") ); + + array[item++] = new TestCase( SECTION, "myvar = new MyObject( true ); myvar.toString = Object.prototype.toString; myvar.toString()", + '[object Object]', + eval("myvar = new MyObject( true ); myvar.toString = Object.prototype.toString; myvar.toString()") ); + + array[item++] = new TestCase( SECTION, "myvar = new Number(0); myvar.toString = Object.prototype.toString; myvar.toString()", + "[object Number]", + eval("myvar = new Number(0); myvar.toString = Object.prototype.toString; myvar.toString()") ); + + array[item++] = new TestCase( SECTION, "myvar = new String(''); myvar.toString = Object.prototype.toString; myvar.toString()", + "[object String]", + eval("myvar = new String(''); myvar.toString = Object.prototype.toString; myvar.toString()") ); + + array[item++] = new TestCase( SECTION, "myvar = Math; myvar.toString = Object.prototype.toString; myvar.toString()", + "[object Math]", + eval("myvar = Math; myvar.toString = Object.prototype.toString; myvar.toString()") ); + + array[item++] = new TestCase( SECTION, "myvar = new Function(); myvar.toString = Object.prototype.toString; myvar.toString()", + "[object Function]", + eval("myvar = new Function(); myvar.toString = Object.prototype.toString; myvar.toString()") ); + + array[item++] = new TestCase( SECTION, "myvar = new Array(); myvar.toString = Object.prototype.toString; myvar.toString()", + "[object Array]", + eval("myvar = new Array(); myvar.toString = Object.prototype.toString; myvar.toString()") ); + + array[item++] = new TestCase( SECTION, "myvar = new Boolean(); myvar.toString = Object.prototype.toString; myvar.toString()", + "[object Boolean]", + eval("myvar = new Boolean(); myvar.toString = Object.prototype.toString; myvar.toString()") ); + + array[item++] = new TestCase( SECTION, "myvar = new Date(); myvar.toString = Object.prototype.toString; myvar.toString()", + "[object Date]", + eval("myvar = new Date(); myvar.toString = Object.prototype.toString; myvar.toString()") ); + + array[item++] = new TestCase( SECTION, "var MYVAR = new Object( this ); MYVAR.toString()", + GLOBAL, + eval("var MYVAR = new Object( this ); MYVAR.toString()") ); + + array[item++] = new TestCase( SECTION, "var MYVAR = new Object(); MYVAR.toString()", + "[object Object]", + eval("var MYVAR = new Object(); MYVAR.toString()") ); + + array[item++] = new TestCase( SECTION, "var MYVAR = new Object(void 0); MYVAR.toString()", + "[object Object]", + eval("var MYVAR = new Object(void 0); MYVAR.toString()") ); + + array[item++] = new TestCase( SECTION, "var MYVAR = new Object(null); MYVAR.toString()", + "[object Object]", + eval("var MYVAR = new Object(null); MYVAR.toString()") ); + + return ( array ); +} +function test( array ) { + for ( tc=0 ; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function MyObject( value ) { + this.value = new Function( "return this.value" ); + this.toString = new Function ( "return this.value+''"); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.4.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.4.3.js new file mode 100644 index 00000000000..1daf04a19d6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.4.3.js @@ -0,0 +1,115 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.2.4.3.js + ECMA Section: 15.2.4.3 Object.prototype.valueOf() + + Description: As a rule, the valueOf method for an object simply + returns the object; but if the object is a "wrapper" + for a host object, as may perhaps be created by the + Object constructor, then the contained host object + should be returned. + + This only covers native objects. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.2.4.3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Object.prototype.valueOf()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var myarray = new Array(); + myarray.valueOf = Object.prototype.valueOf; + var myboolean = new Boolean(); + myboolean.valueOf = Object.prototype.valueOf; + var myfunction = new Function(); + myfunction.valueOf = Object.prototype.valueOf; + var myobject = new Object(); + myobject.valueOf = Object.prototype.valueOf; + var mymath = Math; + mymath.valueOf = Object.prototype.valueOf; + var mydate = new Date(); + mydate.valueOf = Object.prototype.valueOf; + var mynumber = new Number(); + mynumber.valueOf = Object.prototype.valueOf; + var mystring = new String(); + mystring.valueOf = Object.prototype.valueOf; + + array[item++] = new TestCase( SECTION, "Object.prototype.valueOf.length", 0, Object.prototype.valueOf.length ); + + array[item++] = new TestCase( SECTION, + "myarray = new Array(); myarray.valueOf = Object.prototype.valueOf; myarray.valueOf()", + myarray, + myarray.valueOf() ); + array[item++] = new TestCase( SECTION, + "myboolean = new Boolean(); myboolean.valueOf = Object.prototype.valueOf; myboolean.valueOf()", + myboolean, + myboolean.valueOf() ); + array[item++] = new TestCase( SECTION, + "myfunction = new Function(); myfunction.valueOf = Object.prototype.valueOf; myfunction.valueOf()", + myfunction, + myfunction.valueOf() ); + array[item++] = new TestCase( SECTION, + "myobject = new Object(); myobject.valueOf = Object.prototype.valueOf; myobject.valueOf()", + myobject, + myobject.valueOf() ); + array[item++] = new TestCase( SECTION, + "mymath = Math; mymath.valueOf = Object.prototype.valueOf; mymath.valueOf()", + mymath, + mymath.valueOf() ); + array[item++] = new TestCase( SECTION, + "mynumber = new Number(); mynumber.valueOf = Object.prototype.valueOf; mynumber.valueOf()", + mynumber, + mynumber.valueOf() ); + array[item++] = new TestCase( SECTION, + "mystring = new String(); mystring.valueOf = Object.prototype.valueOf; mystring.valueOf()", + mystring, + mystring.valueOf() ); + array[item++] = new TestCase( SECTION, + "mydate = new Date(); mydate.valueOf = Object.prototype.valueOf; mydate.valueOf()", + mydate, + mydate.valueOf() ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.4.js b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.4.js new file mode 100644 index 00000000000..5a018c01345 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/ObjectObjects/15.2.4.js @@ -0,0 +1,60 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.2.4.js + ECMA Section: 15.2.4 Properties of the Object prototype object + + Description: The value of the internal [[Prototype]] property of + the Object prototype object is null + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + + var SECTION = "15.2.4"; + var VERSION = "ECMA_2"; + startTest(); + var TITLE = "Properties of the Object.prototype object"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + testcases[tc++] = new TestCase( SECTION, "Object.prototype.__proto__", + null, + Object.prototype.__proto__ + ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/SourceText/6-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/SourceText/6-1.js new file mode 100644 index 00000000000..759402bd722 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/SourceText/6-1.js @@ -0,0 +1,124 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 6-1.js + ECMA Section: Source Text + Description: + + ECMAScript source text is represented as a sequence of characters + representable using the Unicode version 2.0 character encoding. + + SourceCharacter :: + any Unicode character + + However, it is possible to represent every ECMAScript program using + only ASCII characters (which are equivalent to the first 128 Unicode + characters). Non-ASCII Unicode characters may appear only within comments + and string literals. In string literals, any Unicode character may also be + expressed as a Unicode escape sequence consisting of six ASCII characters, + namely \u plus four hexadecimal digits. Within a comment, such an escape + sequence is effectively ignored as part of the comment. Within a string + literal, the Unicode escape sequence contributes one character to the string + value of the literal. + + Note that ECMAScript differs from the Java programming language in the + behavior of Unicode escape sequences. In a Java program, if the Unicode escape + sequence \u000A, for example, occurs within a single-line comment, it is + interpreted as a line terminator (Unicode character 000A is line feed) and + therefore the next character is not part of the comment. Similarly, if the + Unicode escape sequence \u000A occurs within a string literal in a Java + program, it is likewise interpreted as a line terminator, which is not + allowed within a string literal-one must write \n instead of \u000A to + cause a line feed to be part of the string value of a string literal. In + an ECMAScript program, a Unicode escape sequence occurring within a comment + is never interpreted and therefore cannot contribute to termination of the + comment. Similarly, a Unicode escape sequence occurring within a string literal + in an ECMAScript program always contributes a character to the string value of + the literal and is never interpreted as a line terminator or as a quote mark + that might terminate the string literal. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "6-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Source Text"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc] = new TestCase( SECTION, + "// the following character should not be interpreted as a line terminator in a comment: \u000A", + 'PASSED', + "PASSED" ); + + // \u000A testcases[tc].actual = "FAILED!"; + + tc++; + + testcases[tc] = new TestCase( SECTION, + "// the following character should not be interpreted as a line terminator in a comment: \\n 'FAILED'", + 'PASSED', + 'PASSED' ); + + // the following character should noy be interpreted as a line terminator: \\n testcases[tc].actual = "FAILED" + + tc++; + + testcases[tc] = new TestCase( SECTION, + "// the following character should not be interpreted as a line terminator in a comment: \\u000A 'FAILED'", + 'PASSED', + 'PASSED' ) + + // the following character should not be interpreted as a line terminator: \u000A testcases[tc].actual = "FAILED" + + testcases[tc++] = new TestCase( SECTION, + "// the following character should not be interpreted as a line terminator in a comment: \n 'PASSED'", + 'PASSED', + 'PASSED' ) + // the following character should not be interpreted as a line terminator: \n testcases[tc].actual = 'FAILED' + + testcases[tc] = new TestCase( SECTION, + "// the following character should not be interpreted as a line terminator in a comment: u000D", + 'PASSED', + 'PASSED' ) + + // the following character should not be interpreted as a line terminator: \u000D testcases[tc].actual = "FAILED" + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/SourceText/6-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/SourceText/6-2.js new file mode 100644 index 00000000000..9e7c7f951f6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/SourceText/6-2.js @@ -0,0 +1,129 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 6-1.js + ECMA Section: Source Text + Description: + + ECMAScript source text is represented as a sequence of characters + representable using the Unicode version 2.0 character encoding. + + SourceCharacter :: + any Unicode character + + However, it is possible to represent every ECMAScript program using + only ASCII characters (which are equivalent to the first 128 Unicode + characters). Non-ASCII Unicode characters may appear only within comments + and string literals. In string literals, any Unicode character may also be + expressed as a Unicode escape sequence consisting of six ASCII characters, + namely \u plus four hexadecimal digits. Within a comment, such an escape + sequence is effectively ignored as part of the comment. Within a string + literal, the Unicode escape sequence contributes one character to the string + value of the literal. + + Note that ECMAScript differs from the Java programming language in the + behavior of Unicode escape sequences. In a Java program, if the Unicode escape + sequence \u000A, for example, occurs within a single-line comment, it is + interpreted as a line terminator (Unicode character 000A is line feed) and + therefore the next character is not part of the comment. Similarly, if the + Unicode escape sequence \u000A occurs within a string literal in a Java + program, it is likewise interpreted as a line terminator, which is not + allowed within a string literal-one must write \n instead of \u000A to + cause a line feed to be part of the string value of a string literal. In + an ECMAScript program, a Unicode escape sequence occurring within a comment + is never interpreted and therefore cannot contribute to termination of the + comment. Similarly, a Unicode escape sequence occurring within a string literal + in an ECMAScript program always contributes a character to the string value of + the literal and is never interpreted as a line terminator or as a quote mark + that might terminate the string literal. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "6-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Source Text"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + // encoded quotes should not end a quote + + testcases[tc++]= new TestCase( SECTION, + "var s = 'PAS\\u0022SED'; s", + "PAS\"SED", + eval("var s = 'PAS\\u0022SED'; s") ); + + testcases[tc++]= new TestCase( SECTION, + 'var s = "PAS\\u0022SED"; s', + "PAS\"SED", + eval('var s = "PAS\\u0022SED"; s') ); + + + testcases[tc++]= new TestCase( SECTION, + "var s = 'PAS\\u0027SED'; s", + "PAS\'SED", + eval("var s = 'PAS\\u0027SED'; s") ); + + + testcases[tc++]= new TestCase( SECTION, + 'var s = "PAS\\u0027SED"; s', + "PAS\'SED", + eval('var s = "PAS\\u0027SED"; s') ); + + testcases[tc] = new TestCase( SECTION, + 'var s="PAS\\u0027SED"; s', + "PAS\'SED", + "" ) + var s = "PAS\u0027SED"; + + testcases[tc].actual = s; + + tc++; + + testcases[tc]= new TestCase( SECTION, + 'var s = "PAS\\u0027SED"; s', + "PAS\"SED", + "" ); + var s = "PAS\u0022SED"; + + testcases[tc].actual = s; + + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.10-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.10-1.js new file mode 100644 index 00000000000..cf33b0a916a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.10-1.js @@ -0,0 +1,151 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.10-1.js + ECMA Section: 12.10 The with statement + Description: + WithStatement : + with ( Expression ) Statement + + The with statement adds a computed object to the front of the scope chain + of the current execution context, then executes a statement with this + augmented scope chain, then restores the scope chain. + + Semantics + + The production WithStatement : with ( Expression ) Statement is evaluated + as follows: + 1. Evaluate Expression. + 2. Call GetValue(Result(1)). + 3. Call ToObject(Result(2)). + 4. Add Result(3) to the front of the scope chain. + 5. Evaluate Statement using the augmented scope chain from step 4. + 6. Remove Result(3) from the front of the scope chain. + 7. Return Result(5). + + Discussion + Note that no matter how control leaves the embedded Statement, whether + normally or by some form of abrupt completion, the scope chain is always + restored to its former state. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "12.10-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The with statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // although the scope chain changes, the this value is immutable for a given + // execution context. + + array[item++] = new TestCase( SECTION, + "with( new Number() ) { this +'' }", + "[object global]", + eval("with( new Number() ) { this +'' }") ); + + // the object's functions and properties should override those of the + // global object. + + array[item++] = new TestCase( + SECTION, + "var MYOB = new WithObject(true); with (MYOB) { parseInt() }", + true, + eval("var MYOB = new WithObject(true); with (MYOB) { parseInt() }") ); + + array[item++] = new TestCase( + SECTION, + "var MYOB = new WithObject(false); with (MYOB) { NaN }", + false, + eval("var MYOB = new WithObject(false); with (MYOB) { NaN }") ); + + array[item++] = new TestCase( + SECTION, + "var MYOB = new WithObject(NaN); with (MYOB) { Infinity }", + Number.NaN, + eval("var MYOB = new WithObject(NaN); with (MYOB) { Infinity }") ); + + array[item++] = new TestCase( + SECTION, + "var MYOB = new WithObject(false); with (MYOB) { }; Infinity", + Number.POSITIVE_INFINITY, + eval("var MYOB = new WithObject(false); with (MYOB) { }; Infinity") ); + + + array[item++] = new TestCase( + SECTION, + "var MYOB = new WithObject(0); with (MYOB) { delete Infinity; Infinity }", + Number.POSITIVE_INFINITY, + eval("var MYOB = new WithObject(0); with (MYOB) { delete Infinity; Infinity }") ); + + // let us leave the with block via a break. + + array[item++] = new TestCase( + SECTION, + "var MYOB = new WithObject(0); while (true) { with (MYOB) { Infinity; break; } } Infinity", + Number.POSITIVE_INFINITY, + eval("var MYOB = new WithObject(0); while (true) { with (MYOB) { Infinity; break; } } Infinity") ); + + return ( array ); +} +function WithObject( value ) { + this.prop1 = 1; + this.prop2 = new Boolean(true); + this.prop3 = "a string"; + this.value = value; + + // now we will override global functions + + this.parseInt = new Function( "return this.value" ); + this.NaN = value; + this.Infinity = value; + this.unescape = new Function( "return this.value" ); + this.escape = new Function( "return this.value" ); + this.eval = new Function( "return this.value" ); + this.parseFloat = new Function( "return this.value" ); + this.isNaN = new Function( "return this.value" ); + this.isFinite = new Function( "return this.value" ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.10.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.10.js new file mode 100644 index 00000000000..08e8ebc7a3f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.10.js @@ -0,0 +1,64 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.10-1.js + ECMA Section: 12.10 The with statement + Description: + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "12.10-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The with statement"; + + var testcases = getTestCases(); + + writeHeaderToLog( SECTION +" "+ TITLE); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "var x; with (7) x = valueOf(); typeof x;", + "number", + eval("var x; with(7) x = valueOf(); typeof x;") ); + return ( array ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.2-1.js new file mode 100644 index 00000000000..44f64b802e7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.2-1.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.2-1.js + ECMA Section: The variable statement + Description: + + If the variable statement occurs inside a FunctionDeclaration, the + variables are defined with function-local scope in that function, as + described in section 10.1.3. Otherwise, they are defined with global + scope, that is, they are created as members of the global object, as + described in section 0. Variables are created when the execution scope + is entered. A Block does not define a new execution scope. Only Program and + FunctionDeclaration produce a new scope. Variables are initialized to the + undefined value when created. A variable with an Initializer is assigned + the value of its AssignmentExpression when the VariableStatement is executed, + not when the variable is created. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "12.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The variable statement"; + + writeHeaderToLog( SECTION +" "+ TITLE); + + var testcases = new Array(); + + testcases[tc] = new TestCase( "SECTION", + "var x = 3; function f() { var a = x; var x = 23; return a; }; f()", + void 0, + eval("var x = 3; function f() { var a = x; var x = 23; return a; }; f()") ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.5-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.5-1.js new file mode 100644 index 00000000000..b0fe400cae2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.5-1.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.5-1.js + ECMA Section: The if statement + Description: + + The production IfStatement : if ( Expression ) Statement else Statement + is evaluated as follows: + + 1.Evaluate Expression. + 2.Call GetValue(Result(1)). + 3.Call ToBoolean(Result(2)). + 4.If Result(3) is false, go to step 7. + 5.Evaluate the first Statement. + 6.Return Result(5). + 7.Evaluate the second Statement. + 8.Return Result(7). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + + var SECTION = "12.5-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The if statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + + var testcases = new Array(); + + testcases[tc++] = new TestCase( SECTION, + "var MYVAR; if ( true ) MYVAR='PASSED'; else MYVAR= 'FAILED';", + "PASSED", + eval("var MYVAR; if ( true ) MYVAR='PASSED'; else MYVAR= 'FAILED';") ); + + testcases[tc++] = new TestCase( SECTION, + "var MYVAR; if ( false ) MYVAR='FAILED'; else MYVAR= 'PASSED';", + "PASSED", + eval("var MYVAR; if ( false ) MYVAR='FAILED'; else MYVAR= 'PASSED';") ); + + testcases[tc++] = new TestCase( SECTION, + "var MYVAR; if ( new Boolean(true) ) MYVAR='PASSED'; else MYVAR= 'FAILED';", + "PASSED", + eval("var MYVAR; if ( new Boolean(true) ) MYVAR='PASSED'; else MYVAR= 'FAILED';") ); + + testcases[tc++] = new TestCase( SECTION, + "var MYVAR; if ( new Boolean(false) ) MYVAR='PASSED'; else MYVAR= 'FAILED';", + "PASSED", + eval("var MYVAR; if ( new Boolean(false) ) MYVAR='PASSED'; else MYVAR= 'FAILED';") ); + + testcases[tc++] = new TestCase( SECTION, + "var MYVAR; if ( 1 ) MYVAR='PASSED'; else MYVAR= 'FAILED';", + "PASSED", + eval("var MYVAR; if ( 1 ) MYVAR='PASSED'; else MYVAR= 'FAILED';") ); + + testcases[tc++] = new TestCase( SECTION, + "var MYVAR; if ( 0 ) MYVAR='FAILED'; else MYVAR= 'PASSED';", + "PASSED", + eval("var MYVAR; if ( 0 ) MYVAR='FAILED'; else MYVAR= 'PASSED';") ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.5-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.5-2.js new file mode 100644 index 00000000000..9b30bfdb228 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.5-2.js @@ -0,0 +1,96 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.5-2.js + ECMA Section: The if statement + Description: + + The production IfStatement : if ( Expression ) Statement else Statement + is evaluated as follows: + + 1.Evaluate Expression. + 2.Call GetValue(Result(1)). + 3.Call ToBoolean(Result(2)). + 4.If Result(3) is false, go to step 7. + 5.Evaluate the first Statement. + 6.Return Result(5). + 7.Evaluate the second Statement. + 8.Return Result(7). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "12.5-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The if statement" ; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( SECTION, + "var MYVAR; if ( true ) MYVAR='PASSED'; MYVAR", + "PASSED", + eval("var MYVAR; if ( true ) MYVAR='PASSED'; MYVAR") ); + + testcases[tc++] = new TestCase( SECTION, + "var MYVAR; if ( false ) MYVAR='FAILED'; MYVAR;", + "PASSED", + eval("var MYVAR=\"PASSED\"; if ( false ) MYVAR='FAILED'; MYVAR;") ); + + testcases[tc++] = new TestCase( SECTION, + "var MYVAR; if ( new Boolean(true) ) MYVAR='PASSED'; MYVAR", + "PASSED", + eval("var MYVAR; if ( new Boolean(true) ) MYVAR='PASSED'; MYVAR") ); + + testcases[tc++] = new TestCase( SECTION, + "var MYVAR; if ( new Boolean(false) ) MYVAR='PASSED'; MYVAR", + "PASSED", + eval("var MYVAR; if ( new Boolean(false) ) MYVAR='PASSED'; MYVAR") ); + + testcases[tc++] = new TestCase( SECTION, + "var MYVAR; if ( 1 ) MYVAR='PASSED'; MYVAR", + "PASSED", + eval("var MYVAR; if ( 1 ) MYVAR='PASSED'; MYVAR") ); + + testcases[tc++] = new TestCase( SECTION, + "var MYVAR; if ( 0 ) MYVAR='FAILED'; MYVAR;", + "PASSED", + eval("var MYVAR=\"PASSED\"; if ( 0 ) MYVAR='FAILED'; MYVAR;") ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.1-1.js new file mode 100644 index 00000000000..0b43603074c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.1-1.js @@ -0,0 +1,68 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.1-1.js + ECMA Section: The while statement + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "12.6.1-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The While statement"; + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( SECTION, + "var MYVAR = 0; while( MYVAR++ < 100) { if ( MYVAR < 100 ) break; } MYVAR ", + 1, + eval("var MYVAR = 0; while( MYVAR++ < 100) { if ( MYVAR < 100 ) break; } MYVAR ")); + + testcases[tc++] = new TestCase( SECTION, + "var MYVAR = 0; while( MYVAR++ < 100) { if ( MYVAR < 100 ) continue; else break; } MYVAR ", + 100, + eval("var MYVAR = 0; while( MYVAR++ < 100) { if ( MYVAR < 100 ) continue; else break; } MYVAR ")); + + testcases[tc++] = new TestCase( SECTION, + "function MYFUN( arg1 ) { while ( arg1++ < 100 ) { if ( arg1 < 100 ) return arg1; } }; MYFUN(1)", + 2, + eval("function MYFUN( arg1 ) { while ( arg1++ < 100 ) { if ( arg1 < 100 ) return arg1; } }; MYFUN(1)")); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-1.js new file mode 100644 index 00000000000..387cf14964f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-1.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.2-1.js + ECMA Section: 12.6.2 The for Statement + + 1. first expression is not present. + 2. second expression is not present + 3. third expression is not present + + + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "12.6.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + array[0] = new TestCase( "12.6.2-1", "for statement", 99, "" ); + return ( array ); +} + +function testprogram() { + myVar = 0; + + for ( ; ; ) { + if ( ++myVar == 99 ) + break; + } + + return myVar; +} +function test() { + testcases[0].actual = testprogram(); + + testcases[0].passed = writeTestCaseResult( + testcases[0].expect, + testcases[0].actual, + testcases[0].description +" = "+ testcases[0].actual ); + + testcases[0].reason += ( testcases[0].passed ) ? "" : "wrong value "; + + stopTest(); + + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-2.js new file mode 100644 index 00000000000..788a5d09aca --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-2.js @@ -0,0 +1,76 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.2-2.js + ECMA Section: 12.6.2 The for Statement + + 1. first expression is not present. + 2. second expression is not present + 3. third expression is present + + + Author: christine@netscape.com + Date: 15 september 1997 +*/ + var SECTION = "12.6.2-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + array[0] = new TestCase( SECTION, "for statement", 99, "" ); + return ( array ); +} + +function testprogram() { + myVar = 0; + + for ( ; ; myVar++ ) { + if ( myVar < 99 ) { + continue; + } else { + break; + } + } + + return myVar; +} +function test() { + testcases[0].actual = testprogram(); + + testcases[0].passed = writeTestCaseResult( + testcases[0].expect, + testcases[0].actual, + testcases[0].description +" = "+ testcases[0].actual ); + + testcases[0].reason += ( testcases[0].passed ) ? "" : "wrong value "; + + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-3.js new file mode 100644 index 00000000000..706f2248ac3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-3.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.2-3.js + ECMA Section: 12.6.2 The for Statement + + 1. first expression is not present. + 2. second expression is present + 3. third expression is present + + + Author: christine@netscape.com + Date: 15 september 1997 +*/ + var SECTION = "12.6.2-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + testcases[0] = new TestCase( SECTION, "for statement", 100, "" ); + + test(); + +function testprogram() { + myVar = 0; + + for ( ; myVar < 100 ; myVar++ ) { + continue; + } + + return myVar; +} +function test() { + testcases[0].actual = testprogram(); + + testcases[0].passed = writeTestCaseResult( + testcases[0].expect, + testcases[0].actual, + testcases[0].description +" = "+ testcases[0].actual ); + + testcases[0].reason += ( testcases[0].passed ) ? "" : "wrong value "; + stopTest(); + + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-4.js new file mode 100644 index 00000000000..887dea4afa7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-4.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.2-4.js + ECMA Section: 12.6.2 The for Statement + + 1. first expression is not present. + 2. second expression is present + 3. third expression is present + + + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "12.6.2-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[testcases.length] = new TestCase( SECTION, + "for statement", 100, testprogram() ); + + test(); + +function testprogram() { + myVar = 0; + + for ( ; myVar < 100 ; myVar++ ) { + } + + return myVar; +} +function test() { + testcases[0].passed = writeTestCaseResult( + testcases[0].expect, + testcases[0].actual, + testcases[0].description +" = "+ testcases[0].actual ); + + testcases[0].reason += ( testcases[0].passed ) ? "" : "wrong value "; + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-5.js new file mode 100644 index 00000000000..3404ecf8341 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-5.js @@ -0,0 +1,71 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.2-5.js + ECMA Section: 12.6.2 The for Statement + + 1. first expression is not present. + 2. second expression is present + 3. third expression is present + + + Author: christine@netscape.com + Date: 15 september 1997 +*/ + var SECTION = "12.6.2-5"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + array[0] = new TestCase( SECTION, "for statement", 99, "" ); + return ( array ); +} + +function testprogram() { + myVar = 0; + + for ( ; myVar < 100 ; myVar++ ) { + if (myVar == 99) + break; + } + + return myVar; +} +function test() { + testcases[0].actual = testprogram(); + testcases[0].passed = writeTestCaseResult( + testcases[0].expect, + testcases[0].actual, + testcases[0].description +" = "+ testcases[0].actual ); + + testcases[0].reason += ( testcases[0].passed ) ? "" : "wrong value "; + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-6.js new file mode 100644 index 00000000000..1ed50d88fc8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-6.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.2-6.js + ECMA Section: 12.6.2 The for Statement + + 1. first expression is present. + 2. second expression is not present + 3. third expression is present + + + Author: christine@netscape.com + Date: 15 september 1997 +*/ + var SECTION = "12.6.2-6"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + array[0] = new TestCase( "12.6.2-6", "for statement", 256, "" ); + return ( array ); +} + +function testprogram() { + var myVar; + + for ( myVar=2; ; myVar *= myVar ) { + + if (myVar > 100) + break; + continue; + } + + return myVar; +} +function test() { + testcases[0].actual = testprogram(); + + testcases[0].passed = writeTestCaseResult( + testcases[0].expect, + testcases[0].actual, + testcases[0].description +" = "+ testcases[0].actual ); + + testcases[0].reason += ( testcases[0].passed ) ? "" : "wrong value "; + + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-7.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-7.js new file mode 100644 index 00000000000..ec9f246e05d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-7.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.2-7.js + ECMA Section: 12.6.2 The for Statement + + 1. first expression is present. + 2. second expression is not present + 3. third expression is present + + + Author: christine@netscape.com + Date: 15 september 1997 +*/ + var SECTION = "12.6.2-7"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + array[0] = new TestCase( SECTION, "for statement", 256, "" ); + return ( array ); +} + +function testprogram() { + var myVar; + + for ( myVar=2; myVar < 100 ; myVar *= myVar ) { + + continue; + } + + return myVar; +} +function test() { + testcases[0].actual = testprogram(); + + testcases[0].passed = writeTestCaseResult( + testcases[0].expect, + testcases[0].actual, + testcases[0].description +" = "+ testcases[0].actual ); + + testcases[0].reason += ( testcases[0].passed ) ? "" : "wrong value "; + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-8.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-8.js new file mode 100644 index 00000000000..ecabc066058 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-8.js @@ -0,0 +1,69 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.2-8.js + ECMA Section: 12.6.2 The for Statement + + 1. first expression is present. + 2. second expression is present + 3. third expression is present + + + Author: christine@netscape.com + Date: 15 september 1997 +*/ + var SECTION = "12.6.2-8"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + array[0] = new TestCase( SECTION, "for statement", 256, "" ); + return ( array ); +} +function testprogram() { + var myVar; + + for ( myVar=2; myVar < 256; myVar *= myVar ) { + } + + return myVar; +} +function test() { + testcases[0].actual = testprogram(); + + testcases[0].passed = writeTestCaseResult( + testcases[0].expect, + testcases[0].actual, + testcases[0].description +" = "+ testcases[0].actual ); + + testcases[0].reason += ( testcases[0].passed ) ? "" : "wrong value "; + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-9-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-9-n.js new file mode 100644 index 00000000000..ef7c12eb120 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.2-9-n.js @@ -0,0 +1,65 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.2-9-n.js + ECMA Section: 12.6.2 The for Statement + + 1. first expression is not present. + 2. second expression is not present + 3. third expression is not present + + + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + + var SECTION = "12.6.2-9-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[testcases.length] = new TestCase( SECTION, + "for (i)", + "error", + "" ); + + for (i) { + } + + test(); + +function test() { + testcases[0].passed = writeTestCaseResult( + testcases[0].expect, + testcases[0].actual, + testcases[0].description +" = "+ testcases[0].actual ); + + testcases[0].reason += ( testcases[0].passed ) ? "" : "wrong value "; + + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-1.js new file mode 100644 index 00000000000..9b2aa2b9e07 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-1.js @@ -0,0 +1,71 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.3-1.js + ECMA Section: 12.6.3 The for...in Statement + Description: + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + + var SECTION = "12.6.3-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for..in statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "var x; Number.prototype.foo = 34; for ( j in 7 ) x = j; x", + "foo", + eval("var x; Number.prototype.foo = 34; for ( j in 7 ){x = j;} x") ); + + return ( array ); +} + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject(a, b, c, d, e) { + + +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-10.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-10.js new file mode 100644 index 00000000000..f2f042ba222 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-10.js @@ -0,0 +1,112 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.3-10.js + ECMA Section: 12.6.3 The for...in Statement + Description: + The production IterationStatement : for ( LeftHandSideExpression in Expression ) + Statement is evaluated as follows: + + 1. Evaluate the Expression. + 2. Call GetValue(Result(1)). + 3. Call ToObject(Result(2)). + 4. Let C be "normal completion". + 5. Get the name of the next property of Result(3) that doesn't have the + DontEnum attribute. If there is no such property, go to step 14. + 6. Evaluate the LeftHandSideExpression (it may be evaluated repeatedly). + 7. Call PutValue(Result(6), Result(5)). PutValue( V, W ): + 1. If Type(V) is not Reference, generate a runtime error. + 2. Call GetBase(V). + 3. If Result(2) is null, go to step 6. + 4. Call the [[Put]] method of Result(2), passing GetPropertyName(V) + for the property name and W for the value. + 5. Return. + 6. Call the [[Put]] method for the global object, passing + GetPropertyName(V) for the property name and W for the value. + 7. Return. + 8. Evaluate Statement. + 9. If Result(8) is a value completion, change C to be "normal completion + after value V" where V is the value carried by Result(8). + 10. If Result(8) is a break completion, go to step 14. + 11. If Result(8) is a continue completion, go to step 5. + 12. If Result(8) is a return completion, return Result(8). + 13. Go to step 5. + 14. Return C. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "12.6.3-10"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for..in statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + // for ( LeftHandSideExpression in Expression ) + // LeftHandSideExpression:NewExpression:MemberExpression + + var count = 0; + function f() { count++; return new Array("h","e","l","l","o"); } + + var result = ""; + for ( p in f() ) { result += f()[p] }; + + testcases[testcases.length] = new TestCase( SECTION, + "count = 0; result = \"\"; "+ + "function f() { count++; return new Array(\"h\",\"e\",\"l\",\"l\",\"o\"); }"+ + "for ( p in f() ) { result += f()[p] }; count", + 6, + count ); + + testcases[testcases.length] = new TestCase( SECTION, + "result", + "hello", + result ); + + // LeftHandSideExpression:NewExpression:MemberExpression [ Expression ] + // LeftHandSideExpression:NewExpression:MemberExpression . Identifier + // LeftHandSideExpression:NewExpression:new MemberExpression Arguments + // LeftHandSideExpression:NewExpression:PrimaryExpression:( Expression ) + // LeftHandSideExpression:CallExpression:MemberExpression Arguments + // LeftHandSideExpression:CallExpression Arguments + // LeftHandSideExpression:CallExpression [ Expression ] + // LeftHandSideExpression:CallExpression . Identifier + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-11.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-11.js new file mode 100644 index 00000000000..579845ac957 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-11.js @@ -0,0 +1,93 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.3-11.js + ECMA Section: 12.6.3 The for...in Statement + Description: + The production IterationStatement : for ( LeftHandSideExpression in Expression ) + Statement is evaluated as follows: + + 1. Evaluate the Expression. + 2. Call GetValue(Result(1)). + 3. Call ToObject(Result(2)). + 4. Let C be "normal completion". + 5. Get the name of the next property of Result(3) that doesn't have the + DontEnum attribute. If there is no such property, go to step 14. + 6. Evaluate the LeftHandSideExpression (it may be evaluated repeatedly). + 7. Call PutValue(Result(6), Result(5)). PutValue( V, W ): + 1. If Type(V) is not Reference, generate a runtime error. + 2. Call GetBase(V). + 3. If Result(2) is null, go to step 6. + 4. Call the [[Put]] method of Result(2), passing GetPropertyName(V) + for the property name and W for the value. + 5. Return. + 6. Call the [[Put]] method for the global object, passing + GetPropertyName(V) for the property name and W for the value. + 7. Return. + 8. Evaluate Statement. + 9. If Result(8) is a value completion, change C to be "normal completion + after value V" where V is the value carried by Result(8). + 10. If Result(8) is a break completion, go to step 14. + 11. If Result(8) is a continue completion, go to step 5. + 12. If Result(8) is a return completion, return Result(8). + 13. Go to step 5. + 14. Return C. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "12.6.3-11"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for..in statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + +// 5. Get the name of the next property of Result(3) that doesn't have the +// DontEnum attribute. If there is no such property, go to step 14. + + var result = ""; + + for ( p in Number ) { result += String(p) }; + + testcases[testcases.length] = new TestCase( SECTION, + "result = \"\"; for ( p in Number ) { result += String(p) };", + "", + result ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-12.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-12.js new file mode 100644 index 00000000000..b5c4b183920 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-12.js @@ -0,0 +1,100 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.3-12.js + ECMA Section: 12.6.3 The for...in Statement + Description: + + This is a regression test for http://bugzilla.mozilla.org/show_bug.cgi?id=9802. + + The production IterationStatement : for ( LeftHandSideExpression in Expression ) + Statement is evaluated as follows: + + 1. Evaluate the Expression. + 2. Call GetValue(Result(1)). + 3. Call ToObject(Result(2)). + 4. Let C be "normal completion". + 5. Get the name of the next property of Result(3) that doesn't have the + DontEnum attribute. If there is no such property, go to step 14. + 6. Evaluate the LeftHandSideExpression (it may be evaluated repeatedly). + 7. Call PutValue(Result(6), Result(5)). PutValue( V, W ): + 1. If Type(V) is not Reference, generate a runtime error. + 2. Call GetBase(V). + 3. If Result(2) is null, go to step 6. + 4. Call the [[Put]] method of Result(2), passing GetPropertyName(V) + for the property name and W for the value. + 5. Return. + 6. Call the [[Put]] method for the global object, passing + GetPropertyName(V) for the property name and W for the value. + 7. Return. + 8. Evaluate Statement. + 9. If Result(8) is a value completion, change C to be "normal completion + after value V" where V is the value carried by Result(8). + 10. If Result(8) is a break completion, go to step 14. + 11. If Result(8) is a continue completion, go to step 5. + 12. If Result(8) is a return completion, return Result(8). + 13. Go to step 5. + 14. Return C. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "12.6.3-12"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for..in statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var result = "PASSED"; + + for ( aVar in this ) { + if (aVar == "aVar") { + result = "FAILED" + } + }; + + testcases[testcases.length] = new TestCase( + SECTION, + "var result=''; for ( aVar in this ) { " + + "if (aVar == 'aVar') {return a failure}; result", + "PASSED", + result ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-19.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-19.js new file mode 100644 index 00000000000..4f386d814bd --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-19.js @@ -0,0 +1,114 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.3-1.js + ECMA Section: 12.6.3 The for...in Statement + Description: + The production IterationStatement : for ( LeftHandSideExpression in Expression ) + Statement is evaluated as follows: + + 1. Evaluate the Expression. + 2. Call GetValue(Result(1)). + 3. Call ToObject(Result(2)). + 4. Let C be "normal completion". + 5. Get the name of the next property of Result(3) that doesn't have the + DontEnum attribute. If there is no such property, go to step 14. + 6. Evaluate the LeftHandSideExpression (it may be evaluated repeatedly). + 7. Call PutValue(Result(6), Result(5)). PutValue( V, W ): + 1. If Type(V) is not Reference, generate a runtime error. + 2. Call GetBase(V). + 3. If Result(2) is null, go to step 6. + 4. Call the [[Put]] method of Result(2), passing GetPropertyName(V) + for the property name and W for the value. + 5. Return. + 6. Call the [[Put]] method for the global object, passing + GetPropertyName(V) for the property name and W for the value. + 7. Return. + 8. Evaluate Statement. + 9. If Result(8) is a value completion, change C to be "normal completion + after value V" where V is the value carried by Result(8). + 10. If Result(8) is a break completion, go to step 14. + 11. If Result(8) is a continue completion, go to step 5. + 12. If Result(8) is a return completion, return Result(8). + 13. Go to step 5. + 14. Return C. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "12.6.3-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for..in statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + // for ( LeftHandSideExpression in Expression ) + // LeftHandSideExpression:NewExpression:MemberExpression + + var count = 0; + function f() { count++; return new Array("h","e","l","l","o"); } + + var result = ""; + for ( p in f() ) { result += f()[p] }; + + testcases[testcases.length] = new TestCase( SECTION, + "count = 0; result = \"\"; "+ + "function f() { count++; return new Array(\"h\",\"e\",\"l\",\"l\",\"o\"); }"+ + "for ( p in f() ) { result += f()[p] }; count", + 6, + count ); + + testcases[testcases.length] = new TestCase( SECTION, + "result", + "hello", + result ); + + + + // LeftHandSideExpression:NewExpression:MemberExpression [ Expression ] + // LeftHandSideExpression:NewExpression:MemberExpression . Identifier + // LeftHandSideExpression:NewExpression:new MemberExpression Arguments + // LeftHandSideExpression:NewExpression:PrimaryExpression:( Expression ) + // LeftHandSideExpression:CallExpression:MemberExpression Arguments + // LeftHandSideExpression:CallExpression Arguments + // LeftHandSideExpression:CallExpression [ Expression ] + // LeftHandSideExpression:CallExpression . Identifier + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-2.js new file mode 100644 index 00000000000..f025a094ee1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-2.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.3-2.js + ECMA Section: 12.6.3 The for...in Statement + Description: Check the Boolean Object + + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + + var SECTION = "12.6.3-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for..in statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "Boolean.prototype.foo = 34; for ( j in Boolean ) Boolean[j]", + 34, + eval("Boolean.prototype.foo = 34; for ( j in Boolean ) Boolean[j] ") ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-3.js new file mode 100644 index 00000000000..32cce3459d9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-3.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.3-3.js + ECMA Section: for..in loops + Description: + + This verifies the fix to + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=112156 + for..in should take general lvalue for first argument + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "12.6.3-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for..in statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + + var o = {}; + + var result = ""; + + for ( o.a in [1,2,3] ) { result += String( [1,2,3][o.a] ); } + + testcases[testcases.length] = new TestCase( SECTION, + "for ( o.a in [1,2,3] ) { result += String( [1,2,3][o.a] ); } result", + "123", + result ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-4.js new file mode 100644 index 00000000000..d0876b651a5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-4.js @@ -0,0 +1,193 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.3-1.js + ECMA Section: 12.6.3 The for...in Statement + Description: + The production IterationStatement : for ( LeftHandSideExpression in Expression ) + Statement is evaluated as follows: + + 1. Evaluate the Expression. + 2. Call GetValue(Result(1)). + 3. Call ToObject(Result(2)). + 4. Let C be "normal completion". + 5. Get the name of the next property of Result(3) that doesn't have the + DontEnum attribute. If there is no such property, go to step 14. + 6. Evaluate the LeftHandSideExpression (it may be evaluated repeatedly). + 7. Call PutValue(Result(6), Result(5)). PutValue( V, W ): + 1. If Type(V) is not Reference, generate a runtime error. + 2. Call GetBase(V). + 3. If Result(2) is null, go to step 6. + 4. Call the [[Put]] method of Result(2), passing GetPropertyName(V) + for the property name and W for the value. + 5. Return. + 6. Call the [[Put]] method for the global object, passing + GetPropertyName(V) for the property name and W for the value. + 7. Return. + 8. Evaluate Statement. + 9. If Result(8) is a value completion, change C to be "normal completion + after value V" where V is the value carried by Result(8). + 10. If Result(8) is a break completion, go to step 14. + 11. If Result(8) is a continue completion, go to step 5. + 12. If Result(8) is a return completion, return Result(8). + 13. Go to step 5. + 14. Return C. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "12.6.3-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for..in statment"; + var BUGNUMBER="http://scopus.mcom.com/bugsplat/show_bug.cgi?id=344855"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + // for ( LeftHandSideExpression in Expression ) + // LeftHandSideExpression:NewExpression:MemberExpression + + var o = new MyObject(); + var result = 0; + + for ( MyObject in o ) { + result += o[MyObject]; + } + + testcases[testcases.length] = new TestCase( SECTION, + "for ( MyObject in o ) { result += o[MyObject] }", + 6, + result ); + + var result = 0; + + for ( value in o ) { + result += o[value]; + } + + testcases[testcases.length] = new TestCase( SECTION, + "for ( value in o ) { result += o[value]", + 6, + result ); + + var value = "value"; + var result = 0; + for ( value in o ) { + result += o[value]; + } + + testcases[testcases.length] = new TestCase( SECTION, + "value = \"value\"; for ( value in o ) { result += o[value]", + 6, + result ); + + var value = 0; + var result = 0; + for ( value in o ) { + result += o[value]; + } + + testcases[testcases.length] = new TestCase( SECTION, + "value = 0; for ( value in o ) { result += o[value]", + 6, + result ); + + // this causes a segv + + var ob = { 0:"hello" }; + var result = 0; + for ( ob[0] in o ) { + result += o[ob[0]]; + } + testcases[testcases.length] = new TestCase( SECTION, + "ob = { 0:\"hello\" }; for ( ob[0] in o ) { result += o[ob[0]]", + 6, + result ); + + var result = 0; + for ( ob["0"] in o ) { + result += o[ob["0"]]; + } + testcases[testcases.length] = new TestCase( SECTION, + "value = 0; for ( ob[\"0\"] in o ) { result += o[o[\"0\"]]", + 6, + result ); + + var result = 0; + var ob = { value:"hello" }; + for ( ob[value] in o ) { + result += o[ob[value]]; + } + testcases[testcases.length] = new TestCase( SECTION, + "ob = { 0:\"hello\" }; for ( ob[value] in o ) { result += o[ob[value]]", + 6, + result ); + + var result = 0; + for ( ob["value"] in o ) { + result += o[ob["value"]]; + } + testcases[testcases.length] = new TestCase( SECTION, + "value = 0; for ( ob[\"value\"] in o ) { result += o[ob[\"value\"]]", + 6, + result ); + + var result = 0; + for ( ob.value in o ) { + result += o[ob.value]; + } + testcases[testcases.length] = new TestCase( SECTION, + "value = 0; for ( ob.value in o ) { result += o[ob.value]", + 6, + result ); + + // LeftHandSideExpression:NewExpression:MemberExpression [ Expression ] + // LeftHandSideExpression:NewExpression:MemberExpression . Identifier + // LeftHandSideExpression:NewExpression:new MemberExpression Arguments + // LeftHandSideExpression:NewExpression:PrimaryExpression:( Expression ) + // LeftHandSideExpression:CallExpression:MemberExpression Arguments + // LeftHandSideExpression:CallExpression Arguments + // LeftHandSideExpression:CallExpression [ Expression ] + // LeftHandSideExpression:CallExpression . Identifier + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject() { + this.value = 2; + this[0] = 4; + return this; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-5-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-5-n.js new file mode 100644 index 00000000000..1fb4ce562e8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-5-n.js @@ -0,0 +1,102 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.3-1.js + ECMA Section: 12.6.3 The for...in Statement + Description: + The production IterationStatement : for ( LeftHandSideExpression in Expression ) + Statement is evaluated as follows: + + 1. Evaluate the Expression. + 2. Call GetValue(Result(1)). + 3. Call ToObject(Result(2)). + 4. Let C be "normal completion". + 5. Get the name of the next property of Result(3) that doesn't have the + DontEnum attribute. If there is no such property, go to step 14. + 6. Evaluate the LeftHandSideExpression ( it may be evaluated repeatedly). + 7. Call PutValue(Result(6), Result(5)). PutValue( V, W ): + 1. If Type(V) is not Reference, generate a runtime error. + 2. Call GetBase(V). + 3. If Result(2) is null, go to step 6. + 4. Call the [[Put]] method of Result(2), passing GetPropertyName(V) + for the property name and W for the value. + 5. Return. + 6. Call the [[Put]] method for the global object, passing + GetPropertyName(V) for the property name and W for the value. + 7. Return. + 8. Evaluate Statement. + 9. If Result(8) is a value completion, change C to be "normal completion + after value V" where V is the value carried by Result(8). + 10. If Result(8) is a break completion, go to step 14. + 11. If Result(8) is a continue completion, go to step 5. + 12. If Result(8) is a return completion, return Result(8). + 13. Go to step 5. + 14. Return C. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "12.6.3-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for..in statment"; + var error = err; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + // for ( LeftHandSideExpression in Expression ) + // LeftHandSideExpression:NewExpression:MemberExpression + + testcases[testcases.length] = new TestCase( SECTION, + "more than one member expression", + "error", + "" ); + + var o = new MyObject(); + var result = 0; + + for ( var i, p in this) { + result += this[p]; + } + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject() { + this.value = 2; + this[0] = 4; + return this; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-6-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-6-n.js new file mode 100644 index 00000000000..bd6bb1beaa6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-6-n.js @@ -0,0 +1,102 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.3-1.js + ECMA Section: 12.6.3 The for...in Statement + Description: + The production IterationStatement : for ( LeftHandSideExpression in Expression ) + Statement is evaluated as follows: + + 1. Evaluate the Expression. + 2. Call GetValue(Result(1)). + 3. Call ToObject(Result(2)). + 4. Let C be "normal completion". + 5. Get the name of the next property of Result(3) that doesn't have the + DontEnum attribute. If there is no such property, go to step 14. + 6. Evaluate the LeftHandSideExpression ( it may be evaluated repeatedly). + 7. Call PutValue(Result(6), Result(5)). PutValue( V, W ): + 1. If Type(V) is not Reference, generate a runtime error. + 2. Call GetBase(V). + 3. If Result(2) is null, go to step 6. + 4. Call the [[Put]] method of Result(2), passing GetPropertyName(V) + for the property name and W for the value. + 5. Return. + 6. Call the [[Put]] method for the global object, passing + GetPropertyName(V) for the property name and W for the value. + 7. Return. + 8. Evaluate Statement. + 9. If Result(8) is a value completion, change C to be "normal completion + after value V" where V is the value carried by Result(8). + 10. If Result(8) is a break completion, go to step 14. + 11. If Result(8) is a continue completion, go to step 5. + 12. If Result(8) is a return completion, return Result(8). + 13. Go to step 5. + 14. Return C. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "12.6.3-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for..in statment"; + var error = err; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + // for ( LeftHandSideExpression in Expression ) + // LeftHandSideExpression:NewExpression:MemberExpression + + testcases[testcases.length] = new TestCase( SECTION, + "bad left-hand side expression", + "error", + "" ); + + var o = new MyObject(); + var result = 0; + + for ( this in o) { + result += this[p]; + } + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject() { + this.value = 2; + this[0] = 4; + return this; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-7-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-7-n.js new file mode 100644 index 00000000000..5dfad134c6e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-7-n.js @@ -0,0 +1,102 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.3-1.js + ECMA Section: 12.6.3 The for...in Statement + Description: + The production IterationStatement : for ( LeftHandSideExpression in Expression ) + Statement is evaluated as follows: + + 1. Evaluate the Expression. + 2. Call GetValue(Result(1)). + 3. Call ToObject(Result(2)). + 4. Let C be "normal completion". + 5. Get the name of the next property of Result(3) that doesn't have the + DontEnum attribute. If there is no such property, go to step 14. + 6. Evaluate the LeftHandSideExpression ( it may be evaluated repeatedly). + 7. Call PutValue(Result(6), Result(5)). PutValue( V, W ): + 1. If Type(V) is not Reference, generate a runtime error. + 2. Call GetBase(V). + 3. If Result(2) is null, go to step 6. + 4. Call the [[Put]] method of Result(2), passing GetPropertyName(V) + for the property name and W for the value. + 5. Return. + 6. Call the [[Put]] method for the global object, passing + GetPropertyName(V) for the property name and W for the value. + 7. Return. + 8. Evaluate Statement. + 9. If Result(8) is a value completion, change C to be "normal completion + after value V" where V is the value carried by Result(8). + 10. If Result(8) is a break completion, go to step 14. + 11. If Result(8) is a continue completion, go to step 5. + 12. If Result(8) is a return completion, return Result(8). + 13. Go to step 5. + 14. Return C. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "12.6.3-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for..in statment"; + var error = err; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + // for ( LeftHandSideExpression in Expression ) + // LeftHandSideExpression:NewExpression:MemberExpression + + testcases[testcases.length] = new TestCase( SECTION, + "bad left-hand side expression", + "error", + "" ); + + var o = new MyObject(); + var result = 0; + + for ( "a" in o) { + result += this[p]; + } + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject() { + this.value = 2; + this[0] = 4; + return this; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-8-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-8-n.js new file mode 100644 index 00000000000..ac9348788a4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-8-n.js @@ -0,0 +1,102 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.3-8-n.js + ECMA Section: 12.6.3 The for...in Statement + Description: + The production IterationStatement : for ( LeftHandSideExpression in Expression ) + Statement is evaluated as follows: + + 1. Evaluate the Expression. + 2. Call GetValue(Result(1)). + 3. Call ToObject(Result(2)). + 4. Let C be "normal completion". + 5. Get the name of the next property of Result(3) that doesn't have the + DontEnum attribute. If there is no such property, go to step 14. + 6. Evaluate the LeftHandSideExpression ( it may be evaluated repeatedly). + 7. Call PutValue(Result(6), Result(5)). PutValue( V, W ): + 1. If Type(V) is not Reference, generate a runtime error. + 2. Call GetBase(V). + 3. If Result(2) is null, go to step 6. + 4. Call the [[Put]] method of Result(2), passing GetPropertyName(V) + for the property name and W for the value. + 5. Return. + 6. Call the [[Put]] method for the global object, passing + GetPropertyName(V) for the property name and W for the value. + 7. Return. + 8. Evaluate Statement. + 9. If Result(8) is a value completion, change C to be "normal completion + after value V" where V is the value carried by Result(8). + 10. If Result(8) is a break completion, go to step 14. + 11. If Result(8) is a continue completion, go to step 5. + 12. If Result(8) is a return completion, return Result(8). + 13. Go to step 5. + 14. Return C. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "12.6.3-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for..in statment"; + var error = err; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + // for ( LeftHandSideExpression in Expression ) + // LeftHandSideExpression:NewExpression:MemberExpression + + testcases[testcases.length] = new TestCase( SECTION, + "bad left-hand side expression", + "error", + "" ); + + var o = new MyObject(); + var result = 0; + + for ( 1 in o) { + result += this[p]; + } + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject() { + this.value = 2; + this[0] = 4; + return this; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-9-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-9-n.js new file mode 100644 index 00000000000..06000a4e41b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.6.3-9-n.js @@ -0,0 +1,102 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.6.3-9-n.js + ECMA Section: 12.6.3 The for...in Statement + Description: + The production IterationStatement : for ( LeftHandSideExpression in Expression ) + Statement is evaluated as follows: + + 1. Evaluate the Expression. + 2. Call GetValue(Result(1)). + 3. Call ToObject(Result(2)). + 4. Let C be "normal completion". + 5. Get the name of the next property of Result(3) that doesn't have the + DontEnum attribute. If there is no such property, go to step 14. + 6. Evaluate the LeftHandSideExpression ( it may be evaluated repeatedly). + 7. Call PutValue(Result(6), Result(5)). PutValue( V, W ): + 1. If Type(V) is not Reference, generate a runtime error. + 2. Call GetBase(V). + 3. If Result(2) is null, go to step 6. + 4. Call the [[Put]] method of Result(2), passing GetPropertyName(V) + for the property name and W for the value. + 5. Return. + 6. Call the [[Put]] method for the global object, passing + GetPropertyName(V) for the property name and W for the value. + 7. Return. + 8. Evaluate Statement. + 9. If Result(8) is a value completion, change C to be "normal completion + after value V" where V is the value carried by Result(8). + 10. If Result(8) is a break completion, go to step 14. + 11. If Result(8) is a continue completion, go to step 5. + 12. If Result(8) is a return completion, return Result(8). + 13. Go to step 5. + 14. Return C. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "12.6.3-9-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The for..in statment"; + var error = err; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + // for ( LeftHandSideExpression in Expression ) + // LeftHandSideExpression:NewExpression:MemberExpression + + testcases[testcases.length] = new TestCase( SECTION, + "object is not defined", + "error", + "" ); + + var o = new MyObject(); + var result = 0; + + for ( var o in foo) { + result += this[o]; + } + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject() { + this.value = 2; + this[0] = 4; + return this; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.7-1-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.7-1-n.js new file mode 100644 index 00000000000..b9b13e83683 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.7-1-n.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.7-1-n.js + ECMA Section: 12.7 The continue statement + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "12.7.1-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The continue statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "continue", + "error", + "continue" ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.8-1-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.8-1-n.js new file mode 100644 index 00000000000..9594a7319b4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.8-1-n.js @@ -0,0 +1,69 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.8-1-n.js + ECMA Section: 12.8 The break statement + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "12.8-1-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The break in statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "break", + "error", + "break" ); + + return ( array ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.9-1-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.9-1-n.js new file mode 100644 index 00000000000..c0383c2a91c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Statements/12.9-1-n.js @@ -0,0 +1,64 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 12.9-1-n.js + ECMA Section: 12.9 The return statement + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "12.9-1-n"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " The return statement"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + + testcases[tc].actual = eval( testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "return", + "error", + "return" ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.1.js new file mode 100644 index 00000000000..7971afed256 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.1.js @@ -0,0 +1,137 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.1.js + ECMA Section: 15.5.1 The String Constructor called as a Function + 15.5.1.1 String(value) + 15.5.1.2 String() + + Description: + When String is called as a function rather than as + a constructor, it performs a type conversion. + - String(value) returns a string value (not a String + object) computed by ToString(value) + - String() returns the empty string "" + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + + var SECTION = "15.5.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The String Constructor Called as a Function"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "String('string primitive')", "string primitive", String('string primitive') ); + array[item++] = new TestCase( SECTION, "String(void 0)", "undefined", String( void 0) ); + array[item++] = new TestCase( SECTION, "String(null)", "null", String( null ) ); + array[item++] = new TestCase( SECTION, "String(true)", "true", String( true) ); + array[item++] = new TestCase( SECTION, "String(false)", "false", String( false ) ); + array[item++] = new TestCase( SECTION, "String(Boolean(true))", "true", String(Boolean(true)) ); + array[item++] = new TestCase( SECTION, "String(Boolean(false))", "false", String(Boolean(false)) ); + array[item++] = new TestCase( SECTION, "String(Boolean())", "false", String(Boolean(false)) ); + array[item++] = new TestCase( SECTION, "String(new Array())", "", String( new Array()) ); + array[item++] = new TestCase( SECTION, "String(new Array(1,2,3))", "1,2,3", String( new Array(1,2,3)) ); + + + array[item++] = new TestCase( SECTION, "String( Number.NaN )", "NaN", String( Number.NaN ) ); + array[item++] = new TestCase( SECTION, "String( 0 )", "0", String( 0 ) ); + array[item++] = new TestCase( SECTION, "String( -0 )", "0", String( -0 ) ); + array[item++] = new TestCase( SECTION, "String( Number.POSITIVE_INFINITY )", "Infinity", String( Number.POSITIVE_INFINITY ) ); + array[item++] = new TestCase( SECTION, "String( Number.NEGATIVE_INFINITY )", "-Infinity", String( Number.NEGATIVE_INFINITY ) ); + array[item++] = new TestCase( SECTION, "String( -1 )", "-1", String( -1 ) ); + + // cases in step 6: integers 1e21 > x >= 1 or -1 >= x > -1e21 + + array[item++] = new TestCase( SECTION, "String( 1 )", "1", String( 1 ) ); + array[item++] = new TestCase( SECTION, "String( 10 )", "10", String( 10 ) ); + array[item++] = new TestCase( SECTION, "String( 100 )", "100", String( 100 ) ); + array[item++] = new TestCase( SECTION, "String( 1000 )", "1000", String( 1000 ) ); + array[item++] = new TestCase( SECTION, "String( 10000 )", "10000", String( 10000 ) ); + array[item++] = new TestCase( SECTION, "String( 10000000000 )", "10000000000", String( 10000000000 ) ); + array[item++] = new TestCase( SECTION, "String( 10000000000000000000 )", "10000000000000000000", String( 10000000000000000000 ) ); + array[item++] = new TestCase( SECTION, "String( 100000000000000000000 )","100000000000000000000",String( 100000000000000000000 ) ); + + array[item++] = new TestCase( SECTION, "String( 12345 )", "12345", String( 12345 ) ); + array[item++] = new TestCase( SECTION, "String( 1234567890 )", "1234567890", String( 1234567890 ) ); + + array[item++] = new TestCase( SECTION, "String( -1 )", "-1", String( -1 ) ); + array[item++] = new TestCase( SECTION, "String( -10 )", "-10", String( -10 ) ); + array[item++] = new TestCase( SECTION, "String( -100 )", "-100", String( -100 ) ); + array[item++] = new TestCase( SECTION, "String( -1000 )", "-1000", String( -1000 ) ); + array[item++] = new TestCase( SECTION, "String( -1000000000 )", "-1000000000", String( -1000000000 ) ); + array[item++] = new TestCase( SECTION, "String( -1000000000000000 )", "-1000000000000000", String( -1000000000000000 ) ); + array[item++] = new TestCase( SECTION, "String( -100000000000000000000 )", "-100000000000000000000", String( -100000000000000000000 ) ); + array[item++] = new TestCase( SECTION, "String( -1000000000000000000000 )", "-1e+21", String( -1000000000000000000000 ) ); + + array[item++] = new TestCase( SECTION, "String( -12345 )", "-12345", String( -12345 ) ); + array[item++] = new TestCase( SECTION, "String( -1234567890 )", "-1234567890", String( -1234567890 ) ); + + // cases in step 7: numbers with a fractional component, 1e21> x >1 or -1 > x > -1e21, + array[item++] = new TestCase( SECTION, "String( 1.0000001 )", "1.0000001", String( 1.0000001 ) ); + + + // cases in step 8: fractions between 1 > x > -1, exclusive of 0 and -0 + + // cases in step 9: numbers with 1 significant digit >= 1e+21 or <= 1e-6 + + array[item++] = new TestCase( SECTION, "String( 1000000000000000000000 )", "1e+21", String( 1000000000000000000000 ) ); + array[item++] = new TestCase( SECTION, "String( 10000000000000000000000 )", "1e+22", String( 10000000000000000000000 ) ); + + // cases in step 10: numbers with more than 1 significant digit >= 1e+21 or <= 1e-6 + array[item++] = new TestCase( SECTION, "String( 1.2345 )", "1.2345", String( 1.2345)); + array[item++] = new TestCase( SECTION, "String( 1.234567890 )", "1.23456789", String( 1.234567890 )); + + array[item++] = new TestCase( SECTION, "String( .12345 )", "0.12345", String(.12345 ) ); + array[item++] = new TestCase( SECTION, "String( .012345 )", "0.012345", String(.012345) ); + array[item++] = new TestCase( SECTION, "String( .0012345 )", "0.0012345", String(.0012345) ); + array[item++] = new TestCase( SECTION, "String( .00012345 )", "0.00012345", String(.00012345) ); + array[item++] = new TestCase( SECTION, "String( .000012345 )", "0.000012345", String(.000012345) ); + array[item++] = new TestCase( SECTION, "String( .0000012345 )", "0.0000012345", String(.0000012345) ); + array[item++] = new TestCase( SECTION, "String( .00000012345 )", "1.2345e-7", String(.00000012345)); + + array[item++] = new TestCase( "15.5.2", "String()", "", String() ); + + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.2.js new file mode 100644 index 00000000000..59daad081f7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.2.js @@ -0,0 +1,112 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.2.js + ECMA Section: 15.5.2 The String Constructor + 15.5.2.1 new String(value) + 15.5.2.2 new String() + + Description: When String is called as part of a new expression, it + is a constructor; it initializes the newly constructed + object. + + - The prototype property of the newly constructed + object is set to the original String prototype object, + the one that is the intial value of String.prototype + - The internal [[Class]] property of the object is "String" + - The value of the object is ToString(value). + - If no value is specified, its value is the empty string. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + + var SECTION = "15.5.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The String Constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "typeof new String('string primitive')", "object", typeof new String('string primitive') ); + array[item++] = new TestCase( SECTION, "var TESTSTRING = new String('string primitive'); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()", "[object String]", eval("var TESTSTRING = new String('string primitive'); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()") ); + array[item++] = new TestCase( SECTION, "(new String('string primitive')).valueOf()", 'string primitive', (new String('string primitive')).valueOf() ); + array[item++] = new TestCase( SECTION, "(new String('string primitive')).substring", String.prototype.substring, (new String('string primitive')).substring ); + + array[item++] = new TestCase( SECTION, "typeof new String(void 0)", "object", typeof new String(void 0) ); + array[item++] = new TestCase( SECTION, "var TESTSTRING = new String(void 0); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()", "[object String]", eval("var TESTSTRING = new String(void 0); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()") ); + array[item++] = new TestCase( SECTION, "(new String(void 0)).valueOf()", "undefined", (new String(void 0)).valueOf() ); + array[item++] = new TestCase( SECTION, "(new String(void 0)).toString", String.prototype.toString, (new String(void 0)).toString ); + + array[item++] = new TestCase( SECTION, "typeof new String(null)", "object", typeof new String(null) ); + array[item++] = new TestCase( SECTION, "var TESTSTRING = new String(null); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()", "[object String]", eval("var TESTSTRING = new String(null); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()") ); + array[item++] = new TestCase( SECTION, "(new String(null)).valueOf()", "null", (new String(null)).valueOf() ); + array[item++] = new TestCase( SECTION, "(new String(null)).valueOf", String.prototype.valueOf, (new String(null)).valueOf ); + + array[item++] = new TestCase( SECTION, "typeof new String(true)", "object", typeof new String(true) ); + array[item++] = new TestCase( SECTION, "var TESTSTRING = new String(true); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()", "[object String]", eval("var TESTSTRING = new String(true); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()") ); + array[item++] = new TestCase( SECTION, "(new String(true)).valueOf()", "true", (new String(true)).valueOf() ); + array[item++] = new TestCase( SECTION, "(new String(true)).charAt", String.prototype.charAt, (new String(true)).charAt ); + + array[item++] = new TestCase( SECTION, "typeof new String(false)", "object", typeof new String(false) ); + array[item++] = new TestCase( SECTION, "var TESTSTRING = new String(false); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()", "[object String]", eval("var TESTSTRING = new String(false); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()") ); + array[item++] = new TestCase( SECTION, "(new String(false)).valueOf()", "false", (new String(false)).valueOf() ); + array[item++] = new TestCase( SECTION, "(new String(false)).charCodeAt", String.prototype.charCodeAt, (new String(false)).charCodeAt ); + + array[item++] = new TestCase( SECTION, "typeof new String(new Boolean(true))", "object", typeof new String(new Boolean(true)) ); + array[item++] = new TestCase( SECTION, "var TESTSTRING = new String(new Boolean(true)); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()", "[object String]", eval("var TESTSTRING = new String(new Boolean(true)); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()") ); + array[item++] = new TestCase( SECTION, "(new String(new Boolean(true))).valueOf()", "true", (new String(new Boolean(true))).valueOf() ); + array[item++] = new TestCase( SECTION, "(new String(new Boolean(true))).indexOf", String.prototype.indexOf, (new String(new Boolean(true))).indexOf ); + + array[item++] = new TestCase( SECTION, "typeof new String()", "object", typeof new String() ); + array[item++] = new TestCase( SECTION, "var TESTSTRING = new String(); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()", "[object String]", eval("var TESTSTRING = new String(); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()") ); + array[item++] = new TestCase( SECTION, "(new String()).valueOf()", '', (new String()).valueOf() ); + array[item++] = new TestCase( SECTION, "(new String()).lastIndexOf", String.prototype.lastIndexOf, (new String()).lastIndexOf ); + + array[item++] = new TestCase( SECTION, "typeof new String('')", "object", typeof new String('') ); + array[item++] = new TestCase( SECTION, "var TESTSTRING = new String(''); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()", "[object String]", eval("var TESTSTRING = new String(''); TESTSTRING.toString=Object.prototype.toString;TESTSTRING.toString()") ); + array[item++] = new TestCase( SECTION, "(new String('')).valueOf()", '', (new String('')).valueOf() ); + array[item++] = new TestCase( SECTION, "(new String('')).split", String.prototype.split, (new String('')).split ); + + return ( array ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.1-1.js new file mode 100644 index 00000000000..af1553606c2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.1-1.js @@ -0,0 +1,73 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.3.1-1.js + ECMA Section: 15.5.3.1 Properties of the String Constructor + + Description: The initial value of String.prototype is the built-in + String prototype object. + + This property shall have the attributes [ DontEnum, + DontDelete, ReadOnly] + + This tests the DontEnum attribute. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + + var SECTION = "15.5.3.1-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Properties of the String Constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "String.prototype.length", 0, String.prototype.length ); + + array[item++] = new TestCase( SECTION, + "var str='';for ( p in String ) { if ( p == 'prototype' ) str += p; } str", + "", + eval("var str='';for ( p in String ) { if ( p == 'prototype' ) str += p; } str") ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.1-2.js new file mode 100644 index 00000000000..d4d7fa342e6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.1-2.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.3.1-2.js + ECMA Section: 15.5.3.1 Properties of the String Constructor + + Description: The initial value of String.prototype is the built-in + String prototype object. + + This property shall have the attributes [ DontEnum, + DontDelete, ReadOnly] + + This tests the ReadOnly attribute. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + + var SECTION = "15.5.3.1-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Properties of the String Constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "String.prototype=null;String.prototype", + String.prototype, + eval("String.prototype=null;String.prototype") ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.1-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.1-3.js new file mode 100644 index 00000000000..01da54af635 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.1-3.js @@ -0,0 +1,67 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.3.1-3.js + ECMA Section: 15.5.3.1 Properties of the String Constructor + + Description: The initial value of String.prototype is the built-in + String prototype object. + + This property shall have the attributes [ DontEnum, + DontDelete, ReadOnly] + + This tests the DontDelete attribute. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + + var SECTION = "15.5.3.1-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Properties of the String Constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "delete( String.prototype )", false, eval("delete ( String.prototype )") ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.1-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.1-4.js new file mode 100644 index 00000000000..fbaea312097 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.1-4.js @@ -0,0 +1,68 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.3.1-4.js + ECMA Section: 15.5.3.1 Properties of the String Constructor + + Description: The initial value of String.prototype is the built-in + String prototype object. + + This property shall have the attributes [ DontEnum, + DontDelete, ReadOnly] + + This tests the DontDelete attribute. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + + var SECTION = "15.5.3.1-4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Properties of the String Constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "delete( String.prototype );String.prototype", String.prototype, eval("delete ( String.prototype );String.prototype") ); + return ( array ); +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.2-1.js new file mode 100644 index 00000000000..f5fb16d0967 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.2-1.js @@ -0,0 +1,195 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.3.2-1.js + ECMA Section: 15.5.3.2 String.fromCharCode( char0, char1, ... ) + Description: Return a string value containing as many characters + as the number of arguments. Each argument specifies + one character of the resulting string, with the first + argument specifying the first character, and so on, + from left to right. An argument is converted to a + character by applying the operation ToUint16 and + regarding the resulting 16bit integeras the Unicode + encoding of a character. If no arguments are supplied, + the result is the empty string. + + This test covers Basic Latin (range U+0020 - U+007F) + + Author: christine@netscape.com + Date: 2 october 1997 +*/ + + var SECTION = "15.5.3.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.fromCharCode()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "typeof String.fromCharCode", "function", typeof String.fromCharCode ); + array[item++] = new TestCase( SECTION, "typeof String.prototype.fromCharCode", "undefined", typeof String.prototype.fromCharCode ); + array[item++] = new TestCase( SECTION, "var x = new String(); typeof x.fromCharCode", "undefined", eval("var x = new String(); typeof x.fromCharCode") ); + array[item++] = new TestCase( SECTION, "String.fromCharCode.length", 1, String.fromCharCode.length ); + + array[item++] = new TestCase( SECTION, "String.fromCharCode()", "", String.fromCharCode() ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0020)", " ", String.fromCharCode(0x0020) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0021)", "!", String.fromCharCode(0x0021) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0022)", "\"", String.fromCharCode(0x0022) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0023)", "#", String.fromCharCode(0x0023) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0024)", "$", String.fromCharCode(0x0024) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0025)", "%", String.fromCharCode(0x0025) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0026)", "&", String.fromCharCode(0x0026) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0027)", "\'", String.fromCharCode(0x0027) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0028)", "(", String.fromCharCode(0x0028) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0029)", ")", String.fromCharCode(0x0029) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x002A)", "*", String.fromCharCode(0x002A) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x002B)", "+", String.fromCharCode(0x002B) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x002C)", ",", String.fromCharCode(0x002C) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x002D)", "-", String.fromCharCode(0x002D) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x002E)", ".", String.fromCharCode(0x002E) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x002F)", "/", String.fromCharCode(0x002F) ); + + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0030)", "0", String.fromCharCode(0x0030) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0031)", "1", String.fromCharCode(0x0031) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0032)", "2", String.fromCharCode(0x0032) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0033)", "3", String.fromCharCode(0x0033) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0034)", "4", String.fromCharCode(0x0034) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0035)", "5", String.fromCharCode(0x0035) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0036)", "6", String.fromCharCode(0x0036) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0037)", "7", String.fromCharCode(0x0037) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0038)", "8", String.fromCharCode(0x0038) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0039)", "9", String.fromCharCode(0x0039) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x003A)", ":", String.fromCharCode(0x003A) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x003B)", ";", String.fromCharCode(0x003B) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x003C)", "<", String.fromCharCode(0x003C) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x003D)", "=", String.fromCharCode(0x003D) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x003E)", ">", String.fromCharCode(0x003E) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x003F)", "?", String.fromCharCode(0x003F) ); + + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0040)", "@", String.fromCharCode(0x0040) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0041)", "A", String.fromCharCode(0x0041) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0042)", "B", String.fromCharCode(0x0042) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0043)", "C", String.fromCharCode(0x0043) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0044)", "D", String.fromCharCode(0x0044) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0045)", "E", String.fromCharCode(0x0045) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0046)", "F", String.fromCharCode(0x0046) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0047)", "G", String.fromCharCode(0x0047) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0048)", "H", String.fromCharCode(0x0048) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0049)", "I", String.fromCharCode(0x0049) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x004A)", "J", String.fromCharCode(0x004A) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x004B)", "K", String.fromCharCode(0x004B) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x004C)", "L", String.fromCharCode(0x004C) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x004D)", "M", String.fromCharCode(0x004D) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x004E)", "N", String.fromCharCode(0x004E) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x004F)", "O", String.fromCharCode(0x004F) ); + + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0040)", "@", String.fromCharCode(0x0040) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0041)", "A", String.fromCharCode(0x0041) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0042)", "B", String.fromCharCode(0x0042) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0043)", "C", String.fromCharCode(0x0043) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0044)", "D", String.fromCharCode(0x0044) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0045)", "E", String.fromCharCode(0x0045) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0046)", "F", String.fromCharCode(0x0046) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0047)", "G", String.fromCharCode(0x0047) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0048)", "H", String.fromCharCode(0x0048) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0049)", "I", String.fromCharCode(0x0049) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x004A)", "J", String.fromCharCode(0x004A) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x004B)", "K", String.fromCharCode(0x004B) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x004C)", "L", String.fromCharCode(0x004C) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x004D)", "M", String.fromCharCode(0x004D) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x004E)", "N", String.fromCharCode(0x004E) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x004F)", "O", String.fromCharCode(0x004F) ); + + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0050)", "P", String.fromCharCode(0x0050) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0051)", "Q", String.fromCharCode(0x0051) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0052)", "R", String.fromCharCode(0x0052) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0053)", "S", String.fromCharCode(0x0053) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0054)", "T", String.fromCharCode(0x0054) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0055)", "U", String.fromCharCode(0x0055) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0056)", "V", String.fromCharCode(0x0056) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0057)", "W", String.fromCharCode(0x0057) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0058)", "X", String.fromCharCode(0x0058) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0059)", "Y", String.fromCharCode(0x0059) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x005A)", "Z", String.fromCharCode(0x005A) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x005B)", "[", String.fromCharCode(0x005B) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x005C)", "\\", String.fromCharCode(0x005C) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x005D)", "]", String.fromCharCode(0x005D) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x005E)", "^", String.fromCharCode(0x005E) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x005F)", "_", String.fromCharCode(0x005F) ); + + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0060)", "`", String.fromCharCode(0x0060) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0061)", "a", String.fromCharCode(0x0061) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0062)", "b", String.fromCharCode(0x0062) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0063)", "c", String.fromCharCode(0x0063) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0064)", "d", String.fromCharCode(0x0064) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0065)", "e", String.fromCharCode(0x0065) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0066)", "f", String.fromCharCode(0x0066) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0067)", "g", String.fromCharCode(0x0067) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0068)", "h", String.fromCharCode(0x0068) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0069)", "i", String.fromCharCode(0x0069) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x006A)", "j", String.fromCharCode(0x006A) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x006B)", "k", String.fromCharCode(0x006B) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x006C)", "l", String.fromCharCode(0x006C) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x006D)", "m", String.fromCharCode(0x006D) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x006E)", "n", String.fromCharCode(0x006E) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x006F)", "o", String.fromCharCode(0x006F) ); + + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0070)", "p", String.fromCharCode(0x0070) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0071)", "q", String.fromCharCode(0x0071) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0072)", "r", String.fromCharCode(0x0072) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0073)", "s", String.fromCharCode(0x0073) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0074)", "t", String.fromCharCode(0x0074) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0075)", "u", String.fromCharCode(0x0075) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0076)", "v", String.fromCharCode(0x0076) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0077)", "w", String.fromCharCode(0x0077) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0078)", "x", String.fromCharCode(0x0078) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0079)", "y", String.fromCharCode(0x0079) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x007A)", "z", String.fromCharCode(0x007A) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x007B)", "{", String.fromCharCode(0x007B) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x007C)", "|", String.fromCharCode(0x007C) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x007D)", "}", String.fromCharCode(0x007D) ); + array[item++] = new TestCase( SECTION, "String.fromCharCode(0x007E)", "~", String.fromCharCode(0x007E) ); +// array[item++] = new TestCase( SECTION, "String.fromCharCode(0x0020, 0x007F)", "", String.fromCharCode(0x0040, 0x007F) ); + + return array; +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.2-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.2-2.js new file mode 100644 index 00000000000..4ff369355e8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.2-2.js @@ -0,0 +1,80 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.3.2-2.js + ECMA Section: 15.5.3.2 String.fromCharCode( char0, char1, ... ) + Description: Return a string value containing as many characters + as the number of arguments. Each argument specifies + one character of the resulting string, with the first + argument specifying the first character, and so on, + from left to right. An argument is converted to a + character by applying the operation ToUint16 and + regarding the resulting 16bit integeras the Unicode + encoding of a character. If no arguments are supplied, + the result is the empty string. + + This tests String.fromCharCode with multiple arguments. + + Author: christine@netscape.com + Date: 2 october 1997 +*/ + + var SECTION = "15.5.3.2-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.fromCharCode()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "var MYSTRING = String.fromCharCode(eval(\"var args=''; for ( i = 0x0020; i < 0x007f; i++ ) { args += ( i == 0x007e ) ? i : i + ', '; } args;\")); MYSTRING", + " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~", + eval( "var MYSTRING = String.fromCharCode(" + eval("var args=''; for ( i = 0x0020; i < 0x007f; i++ ) { args += ( i == 0x007e ) ? i : i + ', '; } args;") +"); MYSTRING" )); + + array[item++] = new TestCase( SECTION, + "MYSTRING.length", + 0x007f - 0x0020, + MYSTRING.length ); + return array; +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.2-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.2-3.js new file mode 100644 index 00000000000..e6b515e7cc8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.2-3.js @@ -0,0 +1,122 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.3.2-1.js + ECMA Section: 15.5.3.2 String.fromCharCode( char0, char1, ... ) + Description: Return a string value containing as many characters + as the number of arguments. Each argument specifies + one character of the resulting string, with the first + argument specifying the first character, and so on, + from left to right. An argument is converted to a + character by applying the operation ToUint16 and + regarding the resulting 16bit integeras the Unicode + encoding of a character. If no arguments are supplied, + the result is the empty string. + + This test covers Basic Latin (range U+0020 - U+007F) + + Author: christine@netscape.com + Date: 2 october 1997 +*/ + + var SECTION = "15.5.3.2-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.fromCharCode()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + for ( CHARCODE = 0; CHARCODE < 256; CHARCODE++ ) { + array[item++] = new TestCase( SECTION, + "(String.fromCharCode(" + CHARCODE +")).charCodeAt(0)", + ToUint16(CHARCODE), + (String.fromCharCode(CHARCODE)).charCodeAt(0) + ); + } + for ( CHARCODE = 256; CHARCODE < 65536; CHARCODE+=333 ) { + array[item++] = new TestCase( SECTION, + "(String.fromCharCode(" + CHARCODE +")).charCodeAt(0)", + ToUint16(CHARCODE), + (String.fromCharCode(CHARCODE)).charCodeAt(0) + ); + } + for ( CHARCODE = 65535; CHARCODE < 65538; CHARCODE++ ) { + array[item++] = new TestCase( SECTION, + "(String.fromCharCode(" + CHARCODE +")).charCodeAt(0)", + ToUint16(CHARCODE), + (String.fromCharCode(CHARCODE)).charCodeAt(0) + ); + } + for ( CHARCODE = Math.pow(2,32)-1; CHARCODE < Math.pow(2,32)+1; CHARCODE++ ) { + array[item++] = new TestCase( SECTION, + "(String.fromCharCode(" + CHARCODE +")).charCodeAt(0)", + ToUint16(CHARCODE), + (String.fromCharCode(CHARCODE)).charCodeAt(0) + ); + } + for ( CHARCODE = 0; CHARCODE > -65536; CHARCODE-=3333 ) { + array[item++] = new TestCase( SECTION, + "(String.fromCharCode(" + CHARCODE +")).charCodeAt(0)", + ToUint16(CHARCODE), + (String.fromCharCode(CHARCODE)).charCodeAt(0) + ); + } + array[item++] = new TestCase( SECTION, "(String.fromCharCode(65535)).charCodeAt(0)", 65535, (String.fromCharCode(65535)).charCodeAt(0) ); + array[item++] = new TestCase( SECTION, "(String.fromCharCode(65536)).charCodeAt(0)", 0, (String.fromCharCode(65536)).charCodeAt(0) ); + array[item++] = new TestCase( SECTION, "(String.fromCharCode(65537)).charCodeAt(0)", 1, (String.fromCharCode(65537)).charCodeAt(0) ); + + return array; +} +function ToUint16( num ) { + num = Number( num ); + if ( isNaN( num ) || num == 0 || num == Number.POSITIVE_INFINITY || num == Number.NEGATIVE_INFINITY ) { + return 0; + } + + var sign = ( num < 0 ) ? -1 : 1; + + num = sign * Math.floor( Math.abs( num ) ); + num = num % Math.pow(2,16); + num = ( num > -65536 && num < 0) ? 65536 + num : num; + return num; +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.js new file mode 100644 index 00000000000..3a1012d913a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.3.js @@ -0,0 +1,74 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.3.1.js + ECMA Section: 15.5.3 Properties of the String Constructor + + Description: The value of the internal [[Prototype]] property of + the String constructor is the Function prototype + object. + + In addition to the internal [[Call]] and [[Construct]] + properties, the String constructor also has the length + property, as well as properties described in 15.5.3.1 + and 15.5.3.2. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + + var SECTION = "15.5.3"; + var VERSION = "ECMA_2"; + startTest(); + var passed = true; + writeHeaderToLog( SECTION + " Properties of the String Constructor" ); + + var testcases = getTestCases(); + var tc= 0; + +// all tests must call a function that returns an array of TestCase objects. + test( testcases ); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "String.prototype", Function.prototype, String.__proto__ ); + array[item++] = new TestCase( SECTION, "String.length", 1, String.length ); + return ( array ); +} +function test( array ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + + stopTest(); + + // all tests must return an array of TestCase objects + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.1.js new file mode 100644 index 00000000000..393f25a96eb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.1.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.1.js + ECMA Section: 15.5.4.1 String.prototype.constructor + + Description: + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.5.4.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.constructor"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "String.prototype.constructor == String", true, String.prototype.constructor == String ); + array[item++] = new TestCase( SECTION, "var STRING = new String.prototype.constructor('hi'); STRING.getClass = Object.prototype.toString; STRING.getClass()", + "[object String]", + eval("var STRING = new String.prototype.constructor('hi'); STRING.getClass = Object.prototype.toString; STRING.getClass()") ); + return ( array ); +} +function test( array ) { + for ( ; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + + stopTest(); + + // all tests must return an array of TestCase objects + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.10-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.10-1.js new file mode 100644 index 00000000000..454afefdce0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.10-1.js @@ -0,0 +1,218 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.10-1.js + ECMA Section: 15.5.4.10 String.prototype.substring( start, end ) + Description: + + 15.5.4.10 String.prototype.substring(start, end) + + Returns a substring of the result of converting this object to a string, + starting from character position start and running to character position + end of the string. The result is a string value, not a String object. + + If either argument is NaN or negative, it is replaced with zero; if either + argument is larger than the length of the string, it is replaced with the + length of the string. + + If start is larger than end, they are swapped. + + When the substring method is called with two arguments start and end, the + following steps are taken: + + 1. Call ToString, giving it the this value as its argument. + 2. Call ToInteger(start). + 3. Call ToInteger (end). + 4. Compute the number of characters in Result(1). + 5. Compute min(max(Result(2), 0), Result(4)). + 6. Compute min(max(Result(3), 0), Result(4)). + 7. Compute min(Result(5), Result(6)). + 8. Compute max(Result(5), Result(6)). + 9. Return a string whose length is the difference between Result(8) and + Result(7), containing characters from Result(1), namely the characters + with indices Result(7) through Result(8)1, in ascending order. + + Note that the substring function is intentionally generic; it does not require + that its this value be a String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.5.4.10-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.substring( start, end )"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "String.prototype.substring.length", 2, String.prototype.substring.length ); + array[item++] = new TestCase( SECTION, "delete String.prototype.substring.length", false, delete String.prototype.substring.length ); + array[item++] = new TestCase( SECTION, "delete String.prototype.substring.length; String.prototype.substring.length", 2, eval("delete String.prototype.substring.length; String.prototype.substring.length") ); + + // test cases for when substring is called with no arguments. + + // this is a string object + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); typeof s.substring()", + "string", + eval("var s = new String('this is a string object'); typeof s.substring()") ); + + array[item++] = new TestCase( SECTION, + "var s = new String(''); s.substring(1,0)", + "", + eval("var s = new String(''); s.substring(1,0)") ); + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.substring(true, false)", + "t", + eval("var s = new String('this is a string object'); s.substring(false, true)") ); + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.substring(NaN, Infinity)", + "this is a string object", + eval("var s = new String('this is a string object'); s.substring(NaN, Infinity)") ); + + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.substring(Infinity, NaN)", + "this is a string object", + eval("var s = new String('this is a string object'); s.substring(Infinity, NaN)") ); + + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.substring(Infinity, Infinity)", + "", + eval("var s = new String('this is a string object'); s.substring(Infinity, Infinity)") ); + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.substring(-0.01, 0)", + "", + eval("var s = new String('this is a string object'); s.substring(-0.01,0)") ); + + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.substring(s.length, s.length)", + "", + eval("var s = new String('this is a string object'); s.substring(s.length, s.length)") ); + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.substring(s.length+1, 0)", + "this is a string object", + eval("var s = new String('this is a string object'); s.substring(s.length+1, 0)") ); + + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.substring(-Infinity, -Infinity)", + "", + eval("var s = new String('this is a string object'); s.substring(-Infinity, -Infinity)") ); + + // this is not a String object, start is not an integer + + + array[item++] = new TestCase( SECTION, + "var s = new Array(1,2,3,4,5); s.substring = String.prototype.substring; s.substring(Infinity,-Infinity)", + "1,2,3,4,5", + eval("var s = new Array(1,2,3,4,5); s.substring = String.prototype.substring; s.substring(Infinity,-Infinity)") ); + + array[item++] = new TestCase( SECTION, + "var s = new Array(1,2,3,4,5); s.substring = String.prototype.substring; s.substring(true, false)", + "1", + eval("var s = new Array(1,2,3,4,5); s.substring = String.prototype.substring; s.substring(true, false)") ); + + array[item++] = new TestCase( SECTION, + "var s = new Array(1,2,3,4,5); s.substring = String.prototype.substring; s.substring('4', '5')", + "3", + eval("var s = new Array(1,2,3,4,5); s.substring = String.prototype.substring; s.substring('4', '5')") ); + + + // this is an object object + array[item++] = new TestCase( SECTION, + "var obj = new Object(); obj.substring = String.prototype.substring; obj.substring(8,0)", + "[object ", + eval("var obj = new Object(); obj.substring = String.prototype.substring; obj.substring(8,0)") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Object(); obj.substring = String.prototype.substring; obj.substring(8,obj.toString().length)", + "Object]", + eval("var obj = new Object(); obj.substring = String.prototype.substring; obj.substring(8, obj.toString().length)") ); + + // this is a function object + array[item++] = new TestCase( SECTION, + "var obj = new Function(); obj.substring = String.prototype.substring; obj.toString = Object.prototype.toString; obj.substring(8, Infinity)", + "Function]", + eval("var obj = new Function(); obj.substring = String.prototype.substring; obj.toString = Object.prototype.toString; obj.substring(8,Infinity)") ); + // this is a number object + array[item++] = new TestCase( SECTION, + "var obj = new Number(NaN); obj.substring = String.prototype.substring; obj.substring(Infinity, NaN)", + "NaN", + eval("var obj = new Number(NaN); obj.substring = String.prototype.substring; obj.substring(Infinity, NaN)") ); + + // this is the Math object + array[item++] = new TestCase( SECTION, + "var obj = Math; obj.substring = String.prototype.substring; obj.substring(Math.PI, -10)", + "[ob", + eval("var obj = Math; obj.substring = String.prototype.substring; obj.substring(Math.PI, -10)") ); + + // this is a Boolean object + + array[item++] = new TestCase( SECTION, + "var obj = new Boolean(); obj.substring = String.prototype.substring; obj.substring(new Array(), new Boolean(1))", + "f", + eval("var obj = new Boolean(); obj.substring = String.prototype.substring; obj.substring(new Array(), new Boolean(1))") ); + + // this is a user defined object + + array[item++] = new TestCase( SECTION, + "var obj = new MyObject( void 0 ); obj.substring(0, 100)", + "undefined", + eval( "var obj = new MyObject( void 0 ); obj.substring(0,100)") ); + + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.substring = String.prototype.substring; + this.toString = new Function ( "return this.value+''" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-1.js new file mode 100644 index 00000000000..b24a9ccbaac --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-1.js @@ -0,0 +1,514 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.11-1.js + ECMA Section: 15.5.4.11 String.prototype.toLowerCase() + Description: + + Returns a string equal in length to the length of the result of converting + this object to a string. The result is a string value, not a String object. + + Every character of the result is equal to the corresponding character of the + string, unless that character has a Unicode 2.0 uppercase equivalent, in which + case the uppercase equivalent is used instead. (The canonical Unicode 2.0 case + mapping shall be used, which does not depend on implementation or locale.) + + Note that the toLowerCase function is intentionally generic; it does not require + that its this value be a String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.5.4.11-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.toLowerCase()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "String.prototype.toLowerCase.length", 0, String.prototype.toLowerCase.length ); + array[item++] = new TestCase( SECTION, "delete String.prototype.toLowerCase.length", false, delete String.prototype.toLowerCase.length ); + array[item++] = new TestCase( SECTION, "delete String.prototype.toLowerCase.length; String.prototype.toLowerCase.length", 0, eval("delete String.prototype.toLowerCase.length; String.prototype.toLowerCase.length") ); + + // Basic Latin, Latin-1 Supplement, Latin Extended A + for ( var i = 0; i <= 0x017f; i++ ) { + var U = new Unicode(i); +/* + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toLowerCase()", + String.fromCharCode(U.lower), + eval("var s = new String( String.fromCharCode("+i+") ); s.toLowerCase()") ); +*/ + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toLowerCase().charCodeAt(0)", + U.lower, + eval("var s = new String( String.fromCharCode(i) ); s.toLowerCase().charCodeAt(0)") ); + + } + + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.substring = String.prototype.substring; + this.toString = new Function ( "return this.value+''" ); +} +function Unicode( c ) { + u = GetUnicodeValues( c ); + this.upper = u[0]; + this.lower = u[1] + return this; +} +function GetUnicodeValues( c ) { + u = new Array(); + + u[0] = c; + u[1] = c; + + // upper case Basic Latin + + if ( c >= 0x0041 && c <= 0x005A) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Basic Latin + if ( c >= 0x0061 && c <= 0x007a ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // upper case Latin-1 Supplement + if ( c == 0x00B5 ) { + u[0] = 0x039C; + u[1] = c; + return u; + } + if ( (c >= 0x00C0 && c <= 0x00D6) || (c >= 0x00D8 && c<=0x00DE) ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Latin-1 Supplement + if ( (c >= 0x00E0 && c <= 0x00F6) || (c >= 0x00F8 && c <= 0x00FE) ) { + u[0] = c - 32; + u[1] = c; + return u; + } + if ( c == 0x00FF ) { + u[0] = 0x0178; + u[1] = c; + return u; + } + // Latin Extended A + if ( (c >= 0x0100 && c < 0x0138) || (c > 0x0149 && c < 0x0178) ) { + // special case for capital I + if ( c == 0x0130 ) { + u[0] = c; + u[1] = 0x0069; + return u; + } + if ( c == 0x0131 ) { + u[0] = 0x0049; + u[1] = c; + return u; + } + + if ( c % 2 == 0 ) { + // if it's even, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's odd, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x0178 ) { + u[0] = c; + u[1] = 0x00FF; + return u; + } + + if ( (c >= 0x0139 && c < 0x0149) || (c > 0x0178 && c < 0x017F) ) { + if ( c % 2 == 1 ) { + // if it's odd, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's even, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x017F ) { + u[0] = 0x0053; + u[1] = c; + } + + // Latin Extended B + // need to improve this set + + if ( c >= 0x0200 && c <= 0x0217 ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c+1; + } else { + u[0] = c-1; + u[1] = c; + } + return u; + } + + // Latin Extended Additional + // Range: U+1E00 to U+1EFF + // http://www.unicode.org/Unicode.charts/glyphless/U1E00.html + + // Spacing Modifier Leters + // Range: U+02B0 to U+02FF + + // Combining Diacritical Marks + // Range: U+0300 to U+036F + + // skip Greek for now + // Greek + // Range: U+0370 to U+03FF + + // Cyrillic + // Range: U+0400 to U+04FF + + if ( c >= 0x0400 && c <= 0x040F) { + u[0] = c; + u[1] = c + 80; + return u; + } + + + if ( c >= 0x0410 && c <= 0x042F ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0x0430 && c<= 0x044F ) { + u[0] = c - 32; + u[1] = c; + return u; + + } + if ( c >= 0x0450 && c<= 0x045F ) { + u[0] = c -80; + u[1] = c; + return u; + } + + if ( c >= 0x0460 && c <= 0x047F ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c +1; + } else { + u[0] = c - 1; + u[1] = c; + } + return u; + } + + // Armenian + // Range: U+0530 to U+058F + if ( c >= 0x0531 && c <= 0x0556 ) { + u[0] = c; + u[1] = c + 48; + return u; + } + if ( c >= 0x0561 && c < 0x0587 ) { + u[0] = c - 48; + u[1] = c; + return u; + } + + // Hebrew + // Range: U+0590 to U+05FF + + + // Arabic + // Range: U+0600 to U+06FF + + // Devanagari + // Range: U+0900 to U+097F + + + // Bengali + // Range: U+0980 to U+09FF + + + // Gurmukhi + // Range: U+0A00 to U+0A7F + + + // Gujarati + // Range: U+0A80 to U+0AFF + + + // Oriya + // Range: U+0B00 to U+0B7F + // no capital / lower case + + + // Tamil + // Range: U+0B80 to U+0BFF + // no capital / lower case + + + // Telugu + // Range: U+0C00 to U+0C7F + // no capital / lower case + + + // Kannada + // Range: U+0C80 to U+0CFF + // no capital / lower case + + + // Malayalam + // Range: U+0D00 to U+0D7F + + // Thai + // Range: U+0E00 to U+0E7F + + + // Lao + // Range: U+0E80 to U+0EFF + + + // Tibetan + // Range: U+0F00 to U+0FBF + + // Georgian + // Range: U+10A0 to U+10F0 + + // Hangul Jamo + // Range: U+1100 to U+11FF + + // Greek Extended + // Range: U+1F00 to U+1FFF + // skip for now + + + // General Punctuation + // Range: U+2000 to U+206F + + // Superscripts and Subscripts + // Range: U+2070 to U+209F + + // Currency Symbols + // Range: U+20A0 to U+20CF + + + // Combining Diacritical Marks for Symbols + // Range: U+20D0 to U+20FF + // skip for now + + + // Number Forms + // Range: U+2150 to U+218F + // skip for now + + + // Arrows + // Range: U+2190 to U+21FF + + // Mathematical Operators + // Range: U+2200 to U+22FF + + // Miscellaneous Technical + // Range: U+2300 to U+23FF + + // Control Pictures + // Range: U+2400 to U+243F + + // Optical Character Recognition + // Range: U+2440 to U+245F + + // Enclosed Alphanumerics + // Range: U+2460 to U+24FF + + // Box Drawing + // Range: U+2500 to U+257F + + // Block Elements + // Range: U+2580 to U+259F + + // Geometric Shapes + // Range: U+25A0 to U+25FF + + // Miscellaneous Symbols + // Range: U+2600 to U+26FF + + // Dingbats + // Range: U+2700 to U+27BF + + // CJK Symbols and Punctuation + // Range: U+3000 to U+303F + + // Hiragana + // Range: U+3040 to U+309F + + // Katakana + // Range: U+30A0 to U+30FF + + // Bopomofo + // Range: U+3100 to U+312F + + // Hangul Compatibility Jamo + // Range: U+3130 to U+318F + + // Kanbun + // Range: U+3190 to U+319F + + + // Enclosed CJK Letters and Months + // Range: U+3200 to U+32FF + + // CJK Compatibility + // Range: U+3300 to U+33FF + + // Hangul Syllables + // Range: U+AC00 to U+D7A3 + + // High Surrogates + // Range: U+D800 to U+DB7F + + // Private Use High Surrogates + // Range: U+DB80 to U+DBFF + + // Low Surrogates + // Range: U+DC00 to U+DFFF + + // Private Use Area + // Range: U+E000 to U+F8FF + + // CJK Compatibility Ideographs + // Range: U+F900 to U+FAFF + + // Alphabetic Presentation Forms + // Range: U+FB00 to U+FB4F + + // Arabic Presentation Forms-A + // Range: U+FB50 to U+FDFF + + // Combining Half Marks + // Range: U+FE20 to U+FE2F + + // CJK Compatibility Forms + // Range: U+FE30 to U+FE4F + + // Small Form Variants + // Range: U+FE50 to U+FE6F + + // Arabic Presentation Forms-B + // Range: U+FE70 to U+FEFF + + // Halfwidth and Fullwidth Forms + // Range: U+FF00 to U+FFEF + + if ( c >= 0xFF21 && c <= 0xFF3A ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0xFF41 && c <= 0xFF5A ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // Specials + // Range: U+FFF0 to U+FFFF + + return u; +} + +function DecimalToHexString( n ) { + n = Number( n ); + var h = "0x"; + + for ( var i = 3; i >= 0; i-- ) { + if ( n >= Math.pow(16, i) ){ + var t = Math.floor( n / Math.pow(16, i)); + n -= t * Math.pow(16, i); + if ( t >= 10 ) { + if ( t == 10 ) { + h += "A"; + } + if ( t == 11 ) { + h += "B"; + } + if ( t == 12 ) { + h += "C"; + } + if ( t == 13 ) { + h += "D"; + } + if ( t == 14 ) { + h += "E"; + } + if ( t == 15 ) { + h += "F"; + } + } else { + h += String( t ); + } + } else { + h += "0"; + } + } + + return h; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-2.js new file mode 100644 index 00000000000..b224ffa83ee --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-2.js @@ -0,0 +1,647 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code, released + * March 31, 1998. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ +/** + File Name: 15.5.4.11-2.js + ECMA Section: 15.5.4.11 String.prototype.toLowerCase() + Description: + + Returns a string equal in length to the length of the result of converting + this object to a string. The result is a string value, not a String object. + + Every character of the result is equal to the corresponding character of the + string, unless that character has a Unicode 2.0 uppercase equivalent, in which + case the uppercase equivalent is used instead. (The canonical Unicode 2.0 case + mapping shall be used, which does not depend on implementation or locale.) + + Note that the toLowerCase function is intentionally generic; it does not require + that its this value be a String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ +/* + Safari Changes: This test differs from the mozilla tests in two significant + ways. + First, the lower case range for Georgian letters in this file is the + correct range according to the Unicode 5.0 standard, as opposed to the + Georgian caseless range that mozilla uses. + Secondly this test uses an array for expected results with two entries, + instead of a single expected result. This allows us to accept Unicode 4.0 or + Unicode 5.0 results as correct, as opposed to the mozilla test, which assumes + Unicode 5.0. This allows Safari to pass this test on OS' with different + Unicode standards implemented (e.g. Tiger and XP) +*/ + var SECTION = "15.5.4.11-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.toLowerCase()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // Georgian + // Range: U+10A0 to U+10FF + for ( var i = 0x10A0; i <= 0x10FF; i++ ) { + var U = new Array(new Unicode( i, 4 ), new Unicode( i, 5 ), new Unicode( i, 6.1)); + +/* + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toLowerCase()", + String.fromCharCode(U.lower), + eval("var s = new String( String.fromCharCode("+i+") ); s.toLowerCase()") ); +*/ + array[item++] = new TestCaseMultiExpected( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toLowerCase().charCodeAt(0)", + U, + eval("var s = new String( String.fromCharCode(i) ); s.toLowerCase().charCodeAt(0)") ); + } + + return array; +} + +/* + * TestCase constructor + * + */ + +function TestCaseMultiExpected( n, d, e, a ) { + this.name = n; + this.description = d; + this.expect = e; + this.actual = a; + this.passed = true; + this.reason = ""; + this.bugnumber = BUGNUMBER; + + this.passed = getTestCaseResultMultiExpected( this.expect, this.actual ); + if ( DEBUG ) { + writeLineToLog( "added " + this.description ); + } +} + +// Added so that either Unicode 4.0 or 5.0 results will be considered correct. +function writeTestCaseResultMultiExpected( expect, actual, string ) { + var passed = getTestCaseResultMultiExpected( expect, actual ); + writeFormattedResult( expect[1].lower, actual, string, passed ); + return passed; +} +/* + * Added so that either Unicode 4.0, 5.0 or 6.1 results will be considered correct. + * Compare expected result to the actual result and figure out whether + * the test case passed. + */ +function getTestCaseResultMultiExpected( expect, actual ) { + expectedU4 = expect[0].lower; + expectedU5 = expect[1].lower; + expectedU6_1 = expect[2].lower; + // because ( NaN == NaN ) always returns false, need to do + // a special compare to see if we got the right result. + if ( actual != actual ) { + if ( typeof actual == "object" ) { + actual = "NaN object"; + } else { + actual = "NaN number"; + } + } + + if ( expectedU4 != expectedU4 ) { + if ( typeof expectedU4 == "object" ) { + expectedU4 = "NaN object"; + } else { + expectedU4 = "NaN number"; + } + } + if ( expectedU5 != expectedU5 ) { + if ( typeof expectedU5 == "object" ) { + expectedU5 = "NaN object"; + } else { + expectedU5 = "NaN number"; + } + } + if ( expectedU6_1 != expectedU6_1 ) { + if ( typeof expectedU6_1 == "object" ) { + expectedU6_1 = "NaN object"; + } else { + expectedU6_1 = "NaN number"; + } + } + + var passed = ( expectedU4 == actual || expectedU5 == actual || expectedU6_1 == actual ) ? true : false; + + // if both objects are numbers + // need to replace w/ IEEE standard for rounding + if ( !passed && + typeof(actual) == "number" && + (typeof(expectedU4) == "number" || + typeof(expectedU5) == "number" || + typeof(expectedU6_1) == "number")) { + if (( Math.abs(actual-expectedU4) < 0.0000001 ) || ( Math.abs(actual-expectedU5) < 0.0000001 ) || ( Math.abs(actual-expectedU6_1) < 0.0000001 )) { + passed = true; + } + } + + // verify type is the same + if ( typeof(expectedU4) != typeof(actual) && typeof(expectedU5) != typeof(actual) && typeof(expectedU6_1) != typeof(actual) ) { + passed = false; + } + + return passed; +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResultMultiExpected( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function MyObject( value ) { + this.value = value; + this.substring = String.prototype.substring; + this.toString = new Function ( "return this.value+''" ); +} + +function Unicode( c, version ) { + u = GetUnicodeValues( c, version ); + this.upper = u[0]; + this.lower = u[1] + return this; +} + +function GetUnicodeValues( c, version ) { + u = new Array(); + + u[0] = c; + u[1] = c; + + // upper case Basic Latin + + if ( c >= 0x0041 && c <= 0x005A) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Basic Latin + if ( c >= 0x0061 && c <= 0x007a ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // upper case Latin-1 Supplement + if ( c == 0x00B5 ) { + u[0] = c; + u[1] = 0x039C; + return u; + } + if ( (c >= 0x00C0 && c <= 0x00D6) || (c >= 0x00D8 && c<=0x00DE) ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Latin-1 Supplement + if ( (c >= 0x00E0 && c <= 0x00F6) || (c >= 0x00F8 && c <= 0x00FE) ) { + u[0] = c - 32; + u[1] = c; + return u; + } + if ( c == 0x00FF ) { + u[0] = 0x0178; + u[1] = c; + return u; + } + // Latin Extended A + if ( (c >= 0x0100 && c < 0x0138) || (c > 0x0149 && c < 0x0178) ) { + // special case for capital I + if ( c == 0x0130 ) { + u[0] = c; + u[1] = 0x0069; + return u; + } + if ( c == 0x0131 ) { + u[0] = 0x0049; + u[1] = c; + return u; + } + + if ( c % 2 == 0 ) { + // if it's even, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's odd, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x0178 ) { + u[0] = c; + u[1] = 0x00FF; + return u; + } + + if ( (c >= 0x0139 && c < 0x0149) || (c > 0x0178 && c < 0x017F) ) { + if ( c % 2 == 1 ) { + // if it's odd, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's even, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x017F ) { + u[0] = 0x0053; + u[1] = c; + } + + // Latin Extended B + // need to improve this set + + if ( c >= 0x0200 && c <= 0x0217 ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c+1; + } else { + u[0] = c-1; + u[1] = c; + } + return u; + } + + // Latin Extended Additional + // Range: U+1E00 to U+1EFF + // http://www.unicode.org/Unicode.charts/glyphless/U1E00.html + + // Spacing Modifier Leters + // Range: U+02B0 to U+02FF + + // Combining Diacritical Marks + // Range: U+0300 to U+036F + + // skip Greek for now + // Greek + // Range: U+0370 to U+03FF + + // Cyrillic + // Range: U+0400 to U+04FF + + if ( c >= 0x0400 && c <= 0x040F) { + u[0] = c; + u[1] = c + 80; + return u; + } + + + if ( c >= 0x0410 && c <= 0x042F ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0x0430 && c<= 0x044F ) { + u[0] = c - 32; + u[1] = c; + return u; + + } + if ( c >= 0x0450 && c<= 0x045F ) { + u[0] = c -80; + u[1] = c; + return u; + } + + if ( c >= 0x0460 && c <= 0x047F ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c +1; + } else { + u[0] = c - 1; + u[1] = c; + } + return u; + } + + // Armenian + // Range: U+0530 to U+058F + if ( c >= 0x0531 && c <= 0x0556 ) { + u[0] = c; + u[1] = c + 48; + return u; + } + if ( c >= 0x0561 && c < 0x0587 ) { + u[0] = c - 48; + u[1] = c; + return u; + } + + // Hebrew + // Range: U+0590 to U+05FF + + + // Arabic + // Range: U+0600 to U+06FF + + // Devanagari + // Range: U+0900 to U+097F + + + // Bengali + // Range: U+0980 to U+09FF + + + // Gurmukhi + // Range: U+0A00 to U+0A7F + + + // Gujarati + // Range: U+0A80 to U+0AFF + + + // Oriya + // Range: U+0B00 to U+0B7F + // no capital / lower case + + + // Tamil + // Range: U+0B80 to U+0BFF + // no capital / lower case + + + // Telugu + // Range: U+0C00 to U+0C7F + // no capital / lower case + + + // Kannada + // Range: U+0C80 to U+0CFF + // no capital / lower case + + + // Malayalam + // Range: U+0D00 to U+0D7F + + // Thai + // Range: U+0E00 to U+0E7F + + + // Lao + // Range: U+0E80 to U+0EFF + + + // Tibetan + // Range: U+0F00 to U+0FBF + + // Georgian + // Range: U+10A0 to U+10F0 + if ( version >= 5 ) { + if ( version >= 6.1 && ( c == 0x10c7 || c == 0x10cd ) ) { + u[0] = c; + u[1] = c + 7264; //48; + return u; + } + if ( c >= 0x10A0 && c <= 0x10C5 ) { + u[0] = c; + u[1] = c + 7264; //48; + return u; + } + if ( c >= 0x2D00 && c <= 0x2D25 ) { + u[0] = c; + u[1] = c; + return u; + } + } + + // Hangul Jamo + // Range: U+1100 to U+11FF + + // Greek Extended + // Range: U+1F00 to U+1FFF + // skip for now + + + // General Punctuation + // Range: U+2000 to U+206F + + // Superscripts and Subscripts + // Range: U+2070 to U+209F + + // Currency Symbols + // Range: U+20A0 to U+20CF + + + // Combining Diacritical Marks for Symbols + // Range: U+20D0 to U+20FF + // skip for now + + + // Number Forms + // Range: U+2150 to U+218F + // skip for now + + + // Arrows + // Range: U+2190 to U+21FF + + // Mathematical Operators + // Range: U+2200 to U+22FF + + // Miscellaneous Technical + // Range: U+2300 to U+23FF + + // Control Pictures + // Range: U+2400 to U+243F + + // Optical Character Recognition + // Range: U+2440 to U+245F + + // Enclosed Alphanumerics + // Range: U+2460 to U+24FF + + // Box Drawing + // Range: U+2500 to U+257F + + // Block Elements + // Range: U+2580 to U+259F + + // Geometric Shapes + // Range: U+25A0 to U+25FF + + // Miscellaneous Symbols + // Range: U+2600 to U+26FF + + // Dingbats + // Range: U+2700 to U+27BF + + // CJK Symbols and Punctuation + // Range: U+3000 to U+303F + + // Hiragana + // Range: U+3040 to U+309F + + // Katakana + // Range: U+30A0 to U+30FF + + // Bopomofo + // Range: U+3100 to U+312F + + // Hangul Compatibility Jamo + // Range: U+3130 to U+318F + + // Kanbun + // Range: U+3190 to U+319F + + + // Enclosed CJK Letters and Months + // Range: U+3200 to U+32FF + + // CJK Compatibility + // Range: U+3300 to U+33FF + + // Hangul Syllables + // Range: U+AC00 to U+D7A3 + + // High Surrogates + // Range: U+D800 to U+DB7F + + // Private Use High Surrogates + // Range: U+DB80 to U+DBFF + + // Low Surrogates + // Range: U+DC00 to U+DFFF + + // Private Use Area + // Range: U+E000 to U+F8FF + + // CJK Compatibility Ideographs + // Range: U+F900 to U+FAFF + + // Alphabetic Presentation Forms + // Range: U+FB00 to U+FB4F + + // Arabic Presentation Forms-A + // Range: U+FB50 to U+FDFF + + // Combining Half Marks + // Range: U+FE20 to U+FE2F + + // CJK Compatibility Forms + // Range: U+FE30 to U+FE4F + + // Small Form Variants + // Range: U+FE50 to U+FE6F + + // Arabic Presentation Forms-B + // Range: U+FE70 to U+FEFF + + // Halfwidth and Fullwidth Forms + // Range: U+FF00 to U+FFEF + + if ( c >= 0xFF21 && c <= 0xFF3A ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0xFF41 && c <= 0xFF5A ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // Specials + // Range: U+FFF0 to U+FFFF + + return u; +} + +function DecimalToHexString( n ) { + n = Number( n ); + var h = "0x"; + + for ( var i = 3; i >= 0; i-- ) { + if ( n >= Math.pow(16, i) ){ + var t = Math.floor( n / Math.pow(16, i)); + n -= t * Math.pow(16, i); + if ( t >= 10 ) { + if ( t == 10 ) { + h += "A"; + } + if ( t == 11 ) { + h += "B"; + } + if ( t == 12 ) { + h += "C"; + } + if ( t == 13 ) { + h += "D"; + } + if ( t == 14 ) { + h += "E"; + } + if ( t == 15 ) { + h += "F"; + } + } else { + h += String( t ); + } + } else { + h += "0"; + } + } + + return h; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-3.js new file mode 100644 index 00000000000..b71818816b1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-3.js @@ -0,0 +1,509 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.11-2.js + ECMA Section: 15.5.4.11 String.prototype.toLowerCase() + Description: + + Returns a string equal in length to the length of the result of converting + this object to a string. The result is a string value, not a String object. + + Every character of the result is equal to the corresponding character of the + string, unless that character has a Unicode 2.0 uppercase equivalent, in which + case the uppercase equivalent is used instead. (The canonical Unicode 2.0 case + mapping shall be used, which does not depend on implementation or locale.) + + Note that the toLowerCase function is intentionally generic; it does not require + that its this value be a String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.5.4.11-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.toLowerCase()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + // Halfwidth and Fullwidth Forms + // Range: U+FF00 to U+FFEF + for ( var i = 0xFF00; i <= 0xFFEF; i++ ) { + var U = new Unicode(i); +/* + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toLowerCase()", + String.fromCharCode(U.lower), + eval("var s = new String( String.fromCharCode("+i+") ); s.toLowerCase()") ); +*/ + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toLowerCase().charCodeAt(0)", + U.lower, + eval("var s = new String( String.fromCharCode(i) ); s.toLowerCase().charCodeAt(0)") ); + } + + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.substring = String.prototype.substring; + this.toString = new Function ( "return this.value+''" ); +} +function Unicode( c ) { + u = GetUnicodeValues( c ); + this.upper = u[0]; + this.lower = u[1] + return this; +} +function GetUnicodeValues( c ) { + u = new Array(); + + u[0] = c; + u[1] = c; + + // upper case Basic Latin + + if ( c >= 0x0041 && c <= 0x005A) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Basic Latin + if ( c >= 0x0061 && c <= 0x007a ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // upper case Latin-1 Supplement + if ( c == 0x00B5 ) { + u[0] = c; + u[1] = 0x039C; + return u; + } + if ( (c >= 0x00C0 && c <= 0x00D6) || (c >= 0x00D8 && c<=0x00DE) ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Latin-1 Supplement + if ( (c >= 0x00E0 && c <= 0x00F6) || (c >= 0x00F8 && c <= 0x00FE) ) { + u[0] = c - 32; + u[1] = c; + return u; + } + if ( c == 0x00FF ) { + u[0] = 0x0178; + u[1] = c; + return u; + } + // Latin Extended A + if ( (c >= 0x0100 && c < 0x0138) || (c > 0x0149 && c < 0x0178) ) { + // special case for capital I + if ( c == 0x0130 ) { + u[0] = c; + u[1] = 0x0069; + return u; + } + if ( c == 0x0131 ) { + u[0] = 0x0049; + u[1] = c; + return u; + } + + if ( c % 2 == 0 ) { + // if it's even, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's odd, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x0178 ) { + u[0] = c; + u[1] = 0x00FF; + return u; + } + + if ( (c >= 0x0139 && c < 0x0149) || (c > 0x0178 && c < 0x017F) ) { + if ( c % 2 == 1 ) { + // if it's odd, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's even, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x017F ) { + u[0] = 0x0053; + u[1] = c; + } + + // Latin Extended B + // need to improve this set + + if ( c >= 0x0200 && c <= 0x0217 ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c+1; + } else { + u[0] = c-1; + u[1] = c; + } + return u; + } + + // Latin Extended Additional + // Range: U+1E00 to U+1EFF + // http://www.unicode.org/Unicode.charts/glyphless/U1E00.html + + // Spacing Modifier Leters + // Range: U+02B0 to U+02FF + + // Combining Diacritical Marks + // Range: U+0300 to U+036F + + // skip Greek for now + // Greek + // Range: U+0370 to U+03FF + + // Cyrillic + // Range: U+0400 to U+04FF + + if ( c >= 0x0400 && c <= 0x040F) { + u[0] = c; + u[1] = c + 80; + return u; + } + + + if ( c >= 0x0410 && c <= 0x042F ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0x0430 && c<= 0x044F ) { + u[0] = c - 32; + u[1] = c; + return u; + + } + if ( c >= 0x0450 && c<= 0x045F ) { + u[0] = c -80; + u[1] = c; + return u; + } + + if ( c >= 0x0460 && c <= 0x047F ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c +1; + } else { + u[0] = c - 1; + u[1] = c; + } + return u; + } + + // Armenian + // Range: U+0530 to U+058F + if ( c >= 0x0531 && c <= 0x0556 ) { + u[0] = c; + u[1] = c + 48; + return u; + } + if ( c >= 0x0561 && c < 0x0587 ) { + u[0] = c - 48; + u[1] = c; + return u; + } + + // Hebrew + // Range: U+0590 to U+05FF + + + // Arabic + // Range: U+0600 to U+06FF + + // Devanagari + // Range: U+0900 to U+097F + + + // Bengali + // Range: U+0980 to U+09FF + + + // Gurmukhi + // Range: U+0A00 to U+0A7F + + + // Gujarati + // Range: U+0A80 to U+0AFF + + + // Oriya + // Range: U+0B00 to U+0B7F + // no capital / lower case + + + // Tamil + // Range: U+0B80 to U+0BFF + // no capital / lower case + + + // Telugu + // Range: U+0C00 to U+0C7F + // no capital / lower case + + + // Kannada + // Range: U+0C80 to U+0CFF + // no capital / lower case + + + // Malayalam + // Range: U+0D00 to U+0D7F + + // Thai + // Range: U+0E00 to U+0E7F + + + // Lao + // Range: U+0E80 to U+0EFF + + + // Tibetan + // Range: U+0F00 to U+0FBF + + // Georgian + // Range: U+10A0 to U+10F0 + + // Hangul Jamo + // Range: U+1100 to U+11FF + + // Greek Extended + // Range: U+1F00 to U+1FFF + // skip for now + + + // General Punctuation + // Range: U+2000 to U+206F + + // Superscripts and Subscripts + // Range: U+2070 to U+209F + + // Currency Symbols + // Range: U+20A0 to U+20CF + + + // Combining Diacritical Marks for Symbols + // Range: U+20D0 to U+20FF + // skip for now + + + // Number Forms + // Range: U+2150 to U+218F + // skip for now + + + // Arrows + // Range: U+2190 to U+21FF + + // Mathematical Operators + // Range: U+2200 to U+22FF + + // Miscellaneous Technical + // Range: U+2300 to U+23FF + + // Control Pictures + // Range: U+2400 to U+243F + + // Optical Character Recognition + // Range: U+2440 to U+245F + + // Enclosed Alphanumerics + // Range: U+2460 to U+24FF + + // Box Drawing + // Range: U+2500 to U+257F + + // Block Elements + // Range: U+2580 to U+259F + + // Geometric Shapes + // Range: U+25A0 to U+25FF + + // Miscellaneous Symbols + // Range: U+2600 to U+26FF + + // Dingbats + // Range: U+2700 to U+27BF + + // CJK Symbols and Punctuation + // Range: U+3000 to U+303F + + // Hiragana + // Range: U+3040 to U+309F + + // Katakana + // Range: U+30A0 to U+30FF + + // Bopomofo + // Range: U+3100 to U+312F + + // Hangul Compatibility Jamo + // Range: U+3130 to U+318F + + // Kanbun + // Range: U+3190 to U+319F + + + // Enclosed CJK Letters and Months + // Range: U+3200 to U+32FF + + // CJK Compatibility + // Range: U+3300 to U+33FF + + // Hangul Syllables + // Range: U+AC00 to U+D7A3 + + // High Surrogates + // Range: U+D800 to U+DB7F + + // Private Use High Surrogates + // Range: U+DB80 to U+DBFF + + // Low Surrogates + // Range: U+DC00 to U+DFFF + + // Private Use Area + // Range: U+E000 to U+F8FF + + // CJK Compatibility Ideographs + // Range: U+F900 to U+FAFF + + // Alphabetic Presentation Forms + // Range: U+FB00 to U+FB4F + + // Arabic Presentation Forms-A + // Range: U+FB50 to U+FDFF + + // Combining Half Marks + // Range: U+FE20 to U+FE2F + + // CJK Compatibility Forms + // Range: U+FE30 to U+FE4F + + // Small Form Variants + // Range: U+FE50 to U+FE6F + + // Arabic Presentation Forms-B + // Range: U+FE70 to U+FEFF + + // Halfwidth and Fullwidth Forms + // Range: U+FF00 to U+FFEF + + if ( c >= 0xFF21 && c <= 0xFF3A ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0xFF41 && c <= 0xFF5A ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // Specials + // Range: U+FFF0 to U+FFFF + + return u; +} + +function DecimalToHexString( n ) { + n = Number( n ); + var h = "0x"; + + for ( var i = 3; i >= 0; i-- ) { + if ( n >= Math.pow(16, i) ){ + var t = Math.floor( n / Math.pow(16, i)); + n -= t * Math.pow(16, i); + if ( t >= 10 ) { + if ( t == 10 ) { + h += "A"; + } + if ( t == 11 ) { + h += "B"; + } + if ( t == 12 ) { + h += "C"; + } + if ( t == 13 ) { + h += "D"; + } + if ( t == 14 ) { + h += "E"; + } + if ( t == 15 ) { + h += "F"; + } + } else { + h += String( t ); + } + } else { + h += "0"; + } + } + + return h; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-4.js new file mode 100644 index 00000000000..5258dc24b2b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-4.js @@ -0,0 +1,508 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.11-2.js + ECMA Section: 15.5.4.11 String.prototype.toLowerCase() + Description: + + Returns a string equal in length to the length of the result of converting + this object to a string. The result is a string value, not a String object. + + Every character of the result is equal to the corresponding character of the + string, unless that character has a Unicode 2.0 uppercase equivalent, in which + case the uppercase equivalent is used instead. (The canonical Unicode 2.0 case + mapping shall be used, which does not depend on implementation or locale.) + + Note that the toLowerCase function is intentionally generic; it does not require + that its this value be a String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.5.4.11-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.toLowerCase()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // Hiragana (no upper / lower case) + // Range: U+3040 to U+309F + + for ( var i = 0x3040; i <= 0x309F; i++ ) { + var U = new Unicode( i ); +/* + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toLowerCase()", + String.fromCharCode(U.lower), + eval("var s = new String( String.fromCharCode("+i+") ); s.toLowerCase()") ); +*/ + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toLowerCase().charCodeAt(0)", + U.lower, + eval("var s = new String( String.fromCharCode(i) ); s.toLowerCase().charCodeAt(0)") ); + } + + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.substring = String.prototype.substring; + this.toString = new Function ( "return this.value+''" ); +} +function Unicode( c ) { + this.upper = c; + this.lower = c; + + // upper case Basic Latin + + if ( c >= 0x0041 && c <= 0x005A) { + this.upper = c; + this.lower = c + 32; + return this; + } + + // lower case Basic Latin + if ( c >= 0x0061 && c <= 0x007a ) { + this.upper = c - 32; + this.lower = c; + return this; + } + + // upper case Latin-1 Supplement + if ( (c >= 0x00C0 && c <= 0x00D6) || (c >= 0x00D8 && c<=0x00DE) ) { + this.upper = c; + this.lower = c + 32; + return this; + } + + // lower case Latin-1 Supplement + if ( (c >= 0x00E0 && c <= 0x00F6) || (c >= 0x00F8 && c <= 0x00FE) ) { + this.upper = c - 32; + this.lower = c; + return this; + } + if ( c == 0x00FF ) { + this.upper = 0x0178; + this.lower = c; + return this; + } + // Latin Extended A + if ( (c >= 0x0100 && c < 0x0138) || (c > 0x0149 && c < 0x0178) ) { + // special case for capital I + if ( c == 0x0130 ) { + this.upper = c; + this.lower = 0x0069; + return this; + } + if ( c == 0x0131 ) { + this.upper = 0x0049; + this.lower = c; + return this; + } + + if ( c % 2 == 0 ) { + // if it's even, it's a capital and the lower case is c +1 + this.upper = c; + this.lower = c+1; + } else { + // if it's odd, it's a lower case and upper case is c-1 + this.upper = c-1; + this.lower = c; + } + return this; + } + if ( c == 0x0178 ) { + this.upper = c; + this.lower = 0x00FF; + return this; + } + + if ( (c >= 0x0139 && c < 0x0149) || (c > 0x0178 && c < 0x017F) ) { + if ( c % 2 == 1 ) { + // if it's odd, it's a capital and the lower case is c +1 + this.upper = c; + this.lower = c+1; + } else { + // if it's even, it's a lower case and upper case is c-1 + this.upper = c-1; + this.lower = c; + } + return this; + } + if ( c == 0x017F ) { + this.upper = 0x0053; + this.lower = c; + } + + // Latin Extended B + // need to improve this set + + if ( c >= 0x0200 && c <= 0x0217 ) { + if ( c % 2 == 0 ) { + this.upper = c; + this.lower = c+1; + } else { + this.upper = c-1; + this.lower = c; + } + return this; + } + + // Latin Extended Additional + // Range: U+1E00 to U+1EFF + // http://www.unicode.org/Unicode.charts/glyphless/U1E00.html + + // Spacing Modifier Leters + // Range: U+02B0 to U+02FF + + // Combining Diacritical Marks + // Range: U+0300 to U+036F + + // skip Greek for now + // Greek + // Range: U+0370 to U+03FF + + // Cyrillic + // Range: U+0400 to U+04FF + + if ( (c >= 0x0401 && c <= 0x040C) || ( c>= 0x040E && c <= 0x040F ) ) { + this.upper = c; + this.lower = c + 80; + return this; + } + + + if ( c >= 0x0410 && c <= 0x042F ) { + this.upper = c; + this.lower = c + 32; + return this; + } + + if ( c >= 0x0430 && c<= 0x044F ) { + this.upper = c - 32; + this.lower = c; + return this; + + } + if ( (c >= 0x0451 && c <= 0x045C) || (c >=0x045E && c<= 0x045F) ) { + this.upper = c -80; + this.lower = c; + return this; + } + + if ( c >= 0x0460 && c <= 0x047F ) { + if ( c % 2 == 0 ) { + this.upper = c; + this.lower = c +1; + } else { + this.upper = c - 1; + this.lower = c; + } + return this; + } + + // Armenian + // Range: U+0530 to U+058F + if ( c >= 0x0531 && c <= 0x0556 ) { + this.upper = c; + this.lower = c + 48; + return this; + } + if ( c >= 0x0561 && c < 0x0587 ) { + this.upper = c - 48; + this.lower = c; + return this; + } + + // Hebrew + // Range: U+0590 to U+05FF + + + // Arabic + // Range: U+0600 to U+06FF + + // Devanagari + // Range: U+0900 to U+097F + + + // Bengali + // Range: U+0980 to U+09FF + + + // Gurmukhi + // Range: U+0A00 to U+0A7F + + + // Gujarati + // Range: U+0A80 to U+0AFF + + + // Oriya + // Range: U+0B00 to U+0B7F + // no capital / lower case + + + // Tamil + // Range: U+0B80 to U+0BFF + // no capital / lower case + + + // Telugu + // Range: U+0C00 to U+0C7F + // no capital / lower case + + + // Kannada + // Range: U+0C80 to U+0CFF + // no capital / lower case + + + // Malayalam + // Range: U+0D00 to U+0D7F + + // Thai + // Range: U+0E00 to U+0E7F + + + // Lao + // Range: U+0E80 to U+0EFF + + + // Tibetan + // Range: U+0F00 to U+0FBF + + // Georgian + // Range: U+10A0 to U+10F0 + if ( c >= 0x10A0 && c <= 0x10C5 ) { + this.upper = c; + this.lower = c + 48; + return this; + } + if ( c >= 0x10D0 && c <= 0x10F5 ) { + this.upper = c; + this.lower = c; + return this; + } + + // Hangul Jamo + // Range: U+1100 to U+11FF + + // Greek Extended + // Range: U+1F00 to U+1FFF + // skip for now + + + // General Punctuation + // Range: U+2000 to U+206F + + // Superscripts and Subscripts + // Range: U+2070 to U+209F + + // Currency Symbols + // Range: U+20A0 to U+20CF + + + // Combining Diacritical Marks for Symbols + // Range: U+20D0 to U+20FF + // skip for now + + + // Number Forms + // Range: U+2150 to U+218F + // skip for now + + + // Arrows + // Range: U+2190 to U+21FF + + // Mathematical Operators + // Range: U+2200 to U+22FF + + // Miscellaneous Technical + // Range: U+2300 to U+23FF + + // Control Pictures + // Range: U+2400 to U+243F + + // Optical Character Recognition + // Range: U+2440 to U+245F + + // Enclosed Alphanumerics + // Range: U+2460 to U+24FF + + // Box Drawing + // Range: U+2500 to U+257F + + // Block Elements + // Range: U+2580 to U+259F + + // Geometric Shapes + // Range: U+25A0 to U+25FF + + // Miscellaneous Symbols + // Range: U+2600 to U+26FF + + // Dingbats + // Range: U+2700 to U+27BF + + // CJK Symbols and Punctuation + // Range: U+3000 to U+303F + + // Hiragana + // Range: U+3040 to U+309F + + // Katakana + // Range: U+30A0 to U+30FF + + // Bopomofo + // Range: U+3100 to U+312F + + // Hangul Compatibility Jamo + // Range: U+3130 to U+318F + + // Kanbun + // Range: U+3190 to U+319F + + + // Enclosed CJK Letters and Months + // Range: U+3200 to U+32FF + + // CJK Compatibility + // Range: U+3300 to U+33FF + + // Hangul Syllables + // Range: U+AC00 to U+D7A3 + + // High Surrogates + // Range: U+D800 to U+DB7F + + // Private Use High Surrogates + // Range: U+DB80 to U+DBFF + + // Low Surrogates + // Range: U+DC00 to U+DFFF + + // Private Use Area + // Range: U+E000 to U+F8FF + + // CJK Compatibility Ideographs + // Range: U+F900 to U+FAFF + + // Alphabetic Presentation Forms + // Range: U+FB00 to U+FB4F + + // Arabic Presentation Forms-A + // Range: U+FB50 to U+FDFF + + // Combining Half Marks + // Range: U+FE20 to U+FE2F + + // CJK Compatibility Forms + // Range: U+FE30 to U+FE4F + + // Small Form Variants + // Range: U+FE50 to U+FE6F + + // Arabic Presentation Forms-B + // Range: U+FE70 to U+FEFF + + // Halfwidth and Fullwidth Forms + // Range: U+FF00 to U+FFEF + + if ( c >= 0xFF21 && c <= 0xFF3A ) { + this.upper = c; + this.lower = c + 32; + return this; + } + + if ( c >= 0xFF41 && c <= 0xFF5A ) { + this.upper = c - 32; + this.lower = c; + return this; + } + + // Specials + // Range: U+FFF0 to U+FFFF + + return this; +} + +function DecimalToHexString( n ) { + n = Number( n ); + var h = "0x"; + + for ( var i = 3; i >= 0; i-- ) { + if ( n >= Math.pow(16, i) ){ + var t = Math.floor( n / Math.pow(16, i)); + n -= t * Math.pow(16, i); + if ( t >= 10 ) { + if ( t == 10 ) { + h += "A"; + } + if ( t == 11 ) { + h += "B"; + } + if ( t == 12 ) { + h += "C"; + } + if ( t == 13 ) { + h += "D"; + } + if ( t == 14 ) { + h += "E"; + } + if ( t == 15 ) { + h += "F"; + } + } else { + h += String( t ); + } + } else { + h += "0"; + } + } + + return h; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-5.js new file mode 100644 index 00000000000..4d42091678d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-5.js @@ -0,0 +1,514 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.11-5.js + ECMA Section: 15.5.4.11 String.prototype.toLowerCase() + Description: + + Returns a string equal in length to the length of the result of converting + this object to a string. The result is a string value, not a String object. + + Every character of the result is equal to the corresponding character of the + string, unless that character has a Unicode 2.0 uppercase equivalent, in which + case the uppercase equivalent is used instead. (The canonical Unicode 2.0 case + mapping shall be used, which does not depend on implementation or locale.) + + Note that the toLowerCase function is intentionally generic; it does not require + that its this value be a String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.5.4.11-5"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.toLowerCase()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "String.prototype.toLowerCase.length", 0, String.prototype.toLowerCase.length ); + array[item++] = new TestCase( SECTION, "delete String.prototype.toLowerCase.length", false, delete String.prototype.toLowerCase.length ); + array[item++] = new TestCase( SECTION, "delete String.prototype.toLowerCase.length; String.prototype.toLowerCase.length", 0, eval("delete String.prototype.toLowerCase.length; String.prototype.toLowerCase.length") ); + + // Cyrillic (part) + // Range: U+0400 to U+04FF + for ( var i = 0x0400; i <= 0x047F; i++ ) { + var U = new Unicode( i ); +/* + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toLowerCase()", + String.fromCharCode(U.lower), + eval("var s = new String( String.fromCharCode("+i+") ); s.toLowerCase()") ); +*/ + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toLowerCase().charCodeAt(0)", + U.lower, + eval("var s = new String( String.fromCharCode(i) ); s.toLowerCase().charCodeAt(0)") ); + + } + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.substring = String.prototype.substring; + this.toString = new Function ( "return this.value+''" ); +} +function Unicode( c ) { + u = GetUnicodeValues( c ); + this.upper = u[0]; + this.lower = u[1] + return this; +} +function GetUnicodeValues( c ) { + u = new Array(); + + u[0] = c; + u[1] = c; + + // upper case Basic Latin + + if ( c >= 0x0041 && c <= 0x005A) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Basic Latin + if ( c >= 0x0061 && c <= 0x007a ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // upper case Latin-1 Supplement + if ( c == 0x00B5 ) { + u[0] = c; + u[1] = 0x039C; + return u; + } + if ( (c >= 0x00C0 && c <= 0x00D6) || (c >= 0x00D8 && c<=0x00DE) ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Latin-1 Supplement + if ( (c >= 0x00E0 && c <= 0x00F6) || (c >= 0x00F8 && c <= 0x00FE) ) { + u[0] = c - 32; + u[1] = c; + return u; + } + if ( c == 0x00FF ) { + u[0] = 0x0178; + u[1] = c; + return u; + } + // Latin Extended A + if ( (c >= 0x0100 && c < 0x0138) || (c > 0x0149 && c < 0x0178) ) { + // special case for capital I + if ( c == 0x0130 ) { + u[0] = c; + u[1] = 0x0069; + return u; + } + if ( c == 0x0131 ) { + u[0] = 0x0049; + u[1] = c; + return u; + } + + if ( c % 2 == 0 ) { + // if it's even, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's odd, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x0178 ) { + u[0] = c; + u[1] = 0x00FF; + return u; + } + + if ( (c >= 0x0139 && c < 0x0149) || (c > 0x0178 && c < 0x017F) ) { + if ( c % 2 == 1 ) { + // if it's odd, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's even, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x017F ) { + u[0] = 0x0053; + u[1] = c; + } + + // Latin Extended B + // need to improve this set + + if ( c >= 0x0200 && c <= 0x0217 ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c+1; + } else { + u[0] = c-1; + u[1] = c; + } + return u; + } + + // Latin Extended Additional + // Range: U+1E00 to U+1EFF + // http://www.unicode.org/Unicode.charts/glyphless/U1E00.html + + // Spacing Modifier Leters + // Range: U+02B0 to U+02FF + + // Combining Diacritical Marks + // Range: U+0300 to U+036F + + // skip Greek for now + // Greek + // Range: U+0370 to U+03FF + + // Cyrillic + // Range: U+0400 to U+04FF + + if ( c >= 0x0400 && c <= 0x040F) { + u[0] = c; + u[1] = c + 80; + return u; + } + + + if ( c >= 0x0410 && c <= 0x042F ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0x0430 && c<= 0x044F ) { + u[0] = c - 32; + u[1] = c; + return u; + + } + if ( c >= 0x0450 && c<= 0x045F ) { + u[0] = c -80; + u[1] = c; + return u; + } + + if ( c >= 0x0460 && c <= 0x047F ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c +1; + } else { + u[0] = c - 1; + u[1] = c; + } + return u; + } + + // Armenian + // Range: U+0530 to U+058F + if ( c >= 0x0531 && c <= 0x0556 ) { + u[0] = c; + u[1] = c + 48; + return u; + } + if ( c >= 0x0561 && c < 0x0587 ) { + u[0] = c - 48; + u[1] = c; + return u; + } + + // Hebrew + // Range: U+0590 to U+05FF + + + // Arabic + // Range: U+0600 to U+06FF + + // Devanagari + // Range: U+0900 to U+097F + + + // Bengali + // Range: U+0980 to U+09FF + + + // Gurmukhi + // Range: U+0A00 to U+0A7F + + + // Gujarati + // Range: U+0A80 to U+0AFF + + + // Oriya + // Range: U+0B00 to U+0B7F + // no capital / lower case + + + // Tamil + // Range: U+0B80 to U+0BFF + // no capital / lower case + + + // Telugu + // Range: U+0C00 to U+0C7F + // no capital / lower case + + + // Kannada + // Range: U+0C80 to U+0CFF + // no capital / lower case + + + // Malayalam + // Range: U+0D00 to U+0D7F + + // Thai + // Range: U+0E00 to U+0E7F + + + // Lao + // Range: U+0E80 to U+0EFF + + + // Tibetan + // Range: U+0F00 to U+0FBF + + // Georgian + // Range: U+10A0 to U+10F0 + + // Hangul Jamo + // Range: U+1100 to U+11FF + + // Greek Extended + // Range: U+1F00 to U+1FFF + // skip for now + + + // General Punctuation + // Range: U+2000 to U+206F + + // Superscripts and Subscripts + // Range: U+2070 to U+209F + + // Currency Symbols + // Range: U+20A0 to U+20CF + + + // Combining Diacritical Marks for Symbols + // Range: U+20D0 to U+20FF + // skip for now + + + // Number Forms + // Range: U+2150 to U+218F + // skip for now + + + // Arrows + // Range: U+2190 to U+21FF + + // Mathematical Operators + // Range: U+2200 to U+22FF + + // Miscellaneous Technical + // Range: U+2300 to U+23FF + + // Control Pictures + // Range: U+2400 to U+243F + + // Optical Character Recognition + // Range: U+2440 to U+245F + + // Enclosed Alphanumerics + // Range: U+2460 to U+24FF + + // Box Drawing + // Range: U+2500 to U+257F + + // Block Elements + // Range: U+2580 to U+259F + + // Geometric Shapes + // Range: U+25A0 to U+25FF + + // Miscellaneous Symbols + // Range: U+2600 to U+26FF + + // Dingbats + // Range: U+2700 to U+27BF + + // CJK Symbols and Punctuation + // Range: U+3000 to U+303F + + // Hiragana + // Range: U+3040 to U+309F + + // Katakana + // Range: U+30A0 to U+30FF + + // Bopomofo + // Range: U+3100 to U+312F + + // Hangul Compatibility Jamo + // Range: U+3130 to U+318F + + // Kanbun + // Range: U+3190 to U+319F + + + // Enclosed CJK Letters and Months + // Range: U+3200 to U+32FF + + // CJK Compatibility + // Range: U+3300 to U+33FF + + // Hangul Syllables + // Range: U+AC00 to U+D7A3 + + // High Surrogates + // Range: U+D800 to U+DB7F + + // Private Use High Surrogates + // Range: U+DB80 to U+DBFF + + // Low Surrogates + // Range: U+DC00 to U+DFFF + + // Private Use Area + // Range: U+E000 to U+F8FF + + // CJK Compatibility Ideographs + // Range: U+F900 to U+FAFF + + // Alphabetic Presentation Forms + // Range: U+FB00 to U+FB4F + + // Arabic Presentation Forms-A + // Range: U+FB50 to U+FDFF + + // Combining Half Marks + // Range: U+FE20 to U+FE2F + + // CJK Compatibility Forms + // Range: U+FE30 to U+FE4F + + // Small Form Variants + // Range: U+FE50 to U+FE6F + + // Arabic Presentation Forms-B + // Range: U+FE70 to U+FEFF + + // Halfwidth and Fullwidth Forms + // Range: U+FF00 to U+FFEF + + if ( c >= 0xFF21 && c <= 0xFF3A ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0xFF41 && c <= 0xFF5A ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // Specials + // Range: U+FFF0 to U+FFFF + + return u; +} + +function DecimalToHexString( n ) { + n = Number( n ); + var h = "0x"; + + for ( var i = 3; i >= 0; i-- ) { + if ( n >= Math.pow(16, i) ){ + var t = Math.floor( n / Math.pow(16, i)); + n -= t * Math.pow(16, i); + if ( t >= 10 ) { + if ( t == 10 ) { + h += "A"; + } + if ( t == 11 ) { + h += "B"; + } + if ( t == 12 ) { + h += "C"; + } + if ( t == 13 ) { + h += "D"; + } + if ( t == 14 ) { + h += "E"; + } + if ( t == 15 ) { + h += "F"; + } + } else { + h += String( t ); + } + } else { + h += "0"; + } + } + + return h; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-6.js new file mode 100644 index 00000000000..a3282f66bc9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-6.js @@ -0,0 +1,511 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.11-6.js + ECMA Section: 15.5.4.11 String.prototype.toLowerCase() + Description: + + Returns a string equal in length to the length of the result of converting + this object to a string. The result is a string value, not a String object. + + Every character of the result is equal to the corresponding character of the + string, unless that character has a Unicode 2.0 uppercase equivalent, in which + case the uppercase equivalent is used instead. (The canonical Unicode 2.0 case + mapping shall be used, which does not depend on implementation or locale.) + + Note that the toLowerCase function is intentionally generic; it does not require + that its this value be a String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.5.4.11-6"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.toLowerCase()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // Armenian + // Range: U+0530 to U+058F + for ( var i = 0x0530; i <= 0x058F; i++ ) { + + var U = new Unicode( i ); +/* + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toLowerCase()", + String.fromCharCode(U.lower), + eval("var s = new String( String.fromCharCode("+i+") ); s.toLowerCase()") ); +*/ + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toLowerCase().charCodeAt(0)", + U.lower, + eval("var s = new String( String.fromCharCode(i) ); s.toLowerCase().charCodeAt(0)") ); + + } + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.substring = String.prototype.substring; + this.toString = new Function ( "return this.value+''" ); +} +function Unicode( c ) { + u = GetUnicodeValues( c ); + this.upper = u[0]; + this.lower = u[1] + return this; +} +function GetUnicodeValues( c ) { + u = new Array(); + + u[0] = c; + u[1] = c; + + // upper case Basic Latin + + if ( c >= 0x0041 && c <= 0x005A) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Basic Latin + if ( c >= 0x0061 && c <= 0x007a ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // upper case Latin-1 Supplement + if ( c == 0x00B5 ) { + u[0] = c; + u[1] = 0x039C; + return u; + } + if ( (c >= 0x00C0 && c <= 0x00D6) || (c >= 0x00D8 && c<=0x00DE) ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Latin-1 Supplement + if ( (c >= 0x00E0 && c <= 0x00F6) || (c >= 0x00F8 && c <= 0x00FE) ) { + u[0] = c - 32; + u[1] = c; + return u; + } + if ( c == 0x00FF ) { + u[0] = 0x0178; + u[1] = c; + return u; + } + // Latin Extended A + if ( (c >= 0x0100 && c < 0x0138) || (c > 0x0149 && c < 0x0178) ) { + // special case for capital I + if ( c == 0x0130 ) { + u[0] = c; + u[1] = 0x0069; + return u; + } + if ( c == 0x0131 ) { + u[0] = 0x0049; + u[1] = c; + return u; + } + + if ( c % 2 == 0 ) { + // if it's even, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's odd, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x0178 ) { + u[0] = c; + u[1] = 0x00FF; + return u; + } + + if ( (c >= 0x0139 && c < 0x0149) || (c > 0x0178 && c < 0x017F) ) { + if ( c % 2 == 1 ) { + // if it's odd, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's even, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x017F ) { + u[0] = 0x0053; + u[1] = c; + } + + // Latin Extended B + // need to improve this set + + if ( c >= 0x0200 && c <= 0x0217 ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c+1; + } else { + u[0] = c-1; + u[1] = c; + } + return u; + } + + // Latin Extended Additional + // Range: U+1E00 to U+1EFF + // http://www.unicode.org/Unicode.charts/glyphless/U1E00.html + + // Spacing Modifier Leters + // Range: U+02B0 to U+02FF + + // Combining Diacritical Marks + // Range: U+0300 to U+036F + + // skip Greek for now + // Greek + // Range: U+0370 to U+03FF + + // Cyrillic + // Range: U+0400 to U+04FF + + if ( c >= 0x0400 && c <= 0x040F) { + u[0] = c; + u[1] = c + 80; + return u; + } + + + if ( c >= 0x0410 && c <= 0x042F ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0x0430 && c<= 0x044F ) { + u[0] = c - 32; + u[1] = c; + return u; + + } + if ( c >= 0x0450 && c<= 0x045F ) { + u[0] = c -80; + u[1] = c; + return u; + } + + if ( c >= 0x0460 && c <= 0x047F ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c +1; + } else { + u[0] = c - 1; + u[1] = c; + } + return u; + } + + // Armenian + // Range: U+0530 to U+058F + if ( c >= 0x0531 && c <= 0x0556 ) { + u[0] = c; + u[1] = c + 48; + return u; + } + if ( c >= 0x0561 && c < 0x0587 ) { + u[0] = c - 48; + u[1] = c; + return u; + } + + // Hebrew + // Range: U+0590 to U+05FF + + + // Arabic + // Range: U+0600 to U+06FF + + // Devanagari + // Range: U+0900 to U+097F + + + // Bengali + // Range: U+0980 to U+09FF + + + // Gurmukhi + // Range: U+0A00 to U+0A7F + + + // Gujarati + // Range: U+0A80 to U+0AFF + + + // Oriya + // Range: U+0B00 to U+0B7F + // no capital / lower case + + + // Tamil + // Range: U+0B80 to U+0BFF + // no capital / lower case + + + // Telugu + // Range: U+0C00 to U+0C7F + // no capital / lower case + + + // Kannada + // Range: U+0C80 to U+0CFF + // no capital / lower case + + + // Malayalam + // Range: U+0D00 to U+0D7F + + // Thai + // Range: U+0E00 to U+0E7F + + + // Lao + // Range: U+0E80 to U+0EFF + + + // Tibetan + // Range: U+0F00 to U+0FBF + + // Georgian + // Range: U+10A0 to U+10F0 + + // Hangul Jamo + // Range: U+1100 to U+11FF + + // Greek Extended + // Range: U+1F00 to U+1FFF + // skip for now + + + // General Punctuation + // Range: U+2000 to U+206F + + // Superscripts and Subscripts + // Range: U+2070 to U+209F + + // Currency Symbols + // Range: U+20A0 to U+20CF + + + // Combining Diacritical Marks for Symbols + // Range: U+20D0 to U+20FF + // skip for now + + + // Number Forms + // Range: U+2150 to U+218F + // skip for now + + + // Arrows + // Range: U+2190 to U+21FF + + // Mathematical Operators + // Range: U+2200 to U+22FF + + // Miscellaneous Technical + // Range: U+2300 to U+23FF + + // Control Pictures + // Range: U+2400 to U+243F + + // Optical Character Recognition + // Range: U+2440 to U+245F + + // Enclosed Alphanumerics + // Range: U+2460 to U+24FF + + // Box Drawing + // Range: U+2500 to U+257F + + // Block Elements + // Range: U+2580 to U+259F + + // Geometric Shapes + // Range: U+25A0 to U+25FF + + // Miscellaneous Symbols + // Range: U+2600 to U+26FF + + // Dingbats + // Range: U+2700 to U+27BF + + // CJK Symbols and Punctuation + // Range: U+3000 to U+303F + + // Hiragana + // Range: U+3040 to U+309F + + // Katakana + // Range: U+30A0 to U+30FF + + // Bopomofo + // Range: U+3100 to U+312F + + // Hangul Compatibility Jamo + // Range: U+3130 to U+318F + + // Kanbun + // Range: U+3190 to U+319F + + + // Enclosed CJK Letters and Months + // Range: U+3200 to U+32FF + + // CJK Compatibility + // Range: U+3300 to U+33FF + + // Hangul Syllables + // Range: U+AC00 to U+D7A3 + + // High Surrogates + // Range: U+D800 to U+DB7F + + // Private Use High Surrogates + // Range: U+DB80 to U+DBFF + + // Low Surrogates + // Range: U+DC00 to U+DFFF + + // Private Use Area + // Range: U+E000 to U+F8FF + + // CJK Compatibility Ideographs + // Range: U+F900 to U+FAFF + + // Alphabetic Presentation Forms + // Range: U+FB00 to U+FB4F + + // Arabic Presentation Forms-A + // Range: U+FB50 to U+FDFF + + // Combining Half Marks + // Range: U+FE20 to U+FE2F + + // CJK Compatibility Forms + // Range: U+FE30 to U+FE4F + + // Small Form Variants + // Range: U+FE50 to U+FE6F + + // Arabic Presentation Forms-B + // Range: U+FE70 to U+FEFF + + // Halfwidth and Fullwidth Forms + // Range: U+FF00 to U+FFEF + + if ( c >= 0xFF21 && c <= 0xFF3A ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0xFF41 && c <= 0xFF5A ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // Specials + // Range: U+FFF0 to U+FFFF + + return u; +} + +function DecimalToHexString( n ) { + n = Number( n ); + var h = "0x"; + + for ( var i = 3; i >= 0; i-- ) { + if ( n >= Math.pow(16, i) ){ + var t = Math.floor( n / Math.pow(16, i)); + n -= t * Math.pow(16, i); + if ( t >= 10 ) { + if ( t == 10 ) { + h += "A"; + } + if ( t == 11 ) { + h += "B"; + } + if ( t == 12 ) { + h += "C"; + } + if ( t == 13 ) { + h += "D"; + } + if ( t == 14 ) { + h += "E"; + } + if ( t == 15 ) { + h += "F"; + } + } else { + h += String( t ); + } + } else { + h += "0"; + } + } + + return h; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-1.js new file mode 100644 index 00000000000..fb8f0df197c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-1.js @@ -0,0 +1,527 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.12-1.js + ECMA Section: 15.5.4.12 String.prototype.toUpperCase() + Description: + + Returns a string equal in length to the length of the result of converting + this object to a string. The result is a string value, not a String object. + + Every character of the result is equal to the corresponding character of the + string, unless that character has a Unicode 2.0 uppercase equivalent, in which + case the uppercase equivalent is used instead. (The canonical Unicode 2.0 case + mapping shall be used, which does not depend on implementation or locale.) + + Note that the toUpperCase function is intentionally generic; it does not require + that its this value be a String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.5.4.12-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.toUpperCase()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "String.prototype.toUpperCase.length", 0, String.prototype.toUpperCase.length ); + array[item++] = new TestCase( SECTION, "delete String.prototype.toUpperCase.length", false, delete String.prototype.toUpperCase.length ); + array[item++] = new TestCase( SECTION, "delete String.prototype.toupperCase.length; String.prototype.toupperCase.length", 0, eval("delete String.prototype.toUpperCase.length; String.prototype.toUpperCase.length") ); + + // Basic Latin, Latin-1 Supplement, Latin Extended A + for ( var i = 0; i <= 0x017f; i++ ) { + var U = new Unicode( i ); + + // XXX DF fails in java + + if ( i == 0x00DF ) { + continue; + } + + + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toUpperCase().charCodeAt(0)", + U.upper, + eval("var s = new String( String.fromCharCode(i) ); s.toUpperCase().charCodeAt(0)") ); + } + + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.substring = String.prototype.substring; + this.toString = new Function ( "return this.value+''" ); +} +function Unicode( c ) { + u = GetUnicodeValues( c ); + this.upper = u[0]; + this.lower = u[1] + return this; +} +function GetUnicodeValues( c ) { + u = new Array(); + + u[0] = c; + u[1] = c; + + // upper case Basic Latin + + if ( c >= 0x0041 && c <= 0x005A) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Basic Latin + if ( c >= 0x0061 && c <= 0x007a ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // upper case Latin-1 Supplement + if ( c == 0x00B5 ) { + u[0] = 0x039C; + u[1] = c; + return u; + } + if ( (c >= 0x00C0 && c <= 0x00D6) || (c >= 0x00D8 && c<=0x00DE) ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Latin-1 Supplement + if ( (c >= 0x00E0 && c <= 0x00F6) || (c >= 0x00F8 && c <= 0x00FE) ) { + u[0] = c - 32; + u[1] = c; + return u; + } + if ( c == 0x00FF ) { + u[0] = 0x0178; + u[1] = c; + return u; + } + // Latin Extended A + if ( (c >= 0x0100 && c < 0x0138) || (c > 0x0149 && c < 0x0178) ) { + // special case for capital I + if ( c == 0x0130 ) { + u[0] = c; + u[1] = 0x0069; + return u; + } + if ( c == 0x0131 ) { + u[0] = 0x0049; + u[1] = c; + return u; + } + + if ( c % 2 == 0 ) { + // if it's even, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's odd, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x0178 ) { + u[0] = c; + u[1] = 0x00FF; + return u; + } + + // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE, uppercase takes two code points + if (c == 0x0149) { + u[0] = 0x02bc; + u[1] = c; + return u; + } + + if ( (c >= 0x0139 && c < 0x0149) || (c > 0x0178 && c < 0x017F) ) { + if ( c % 2 == 1 ) { + // if it's odd, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's even, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x017F ) { + u[0] = 0x0053; + u[1] = c; + } + + // Latin Extended B + // need to improve this set + + if ( c >= 0x0200 && c <= 0x0217 ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c+1; + } else { + u[0] = c-1; + u[1] = c; + } + return u; + } + + // Latin Extended Additional + // Range: U+1E00 to U+1EFF + // http://www.unicode.org/Unicode.charts/glyphless/U1E00.html + + // Spacing Modifier Leters + // Range: U+02B0 to U+02FF + + // Combining Diacritical Marks + // Range: U+0300 to U+036F + + // skip Greek for now + // Greek + // Range: U+0370 to U+03FF + + // Cyrillic + // Range: U+0400 to U+04FF + + if ( c >= 0x0400 && c <= 0x040F) { + u[0] = c; + u[1] = c + 80; + return u; + } + + + if ( c >= 0x0410 && c <= 0x042F ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0x0430 && c<= 0x044F ) { + u[0] = c - 32; + u[1] = c; + return u; + + } + if ( c >= 0x0450 && c<= 0x045F ) { + u[0] = c -80; + u[1] = c; + return u; + } + + if ( c >= 0x0460 && c <= 0x047F ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c +1; + } else { + u[0] = c - 1; + u[1] = c; + } + return u; + } + + // Armenian + // Range: U+0530 to U+058F + if ( c >= 0x0531 && c <= 0x0556 ) { + u[0] = c; + u[1] = c + 48; + return u; + } + if ( c >= 0x0561 && c < 0x0587 ) { + u[0] = c - 48; + u[1] = c; + return u; + } + if (c == 0x0587) { + u[0] = 0x0535; + u[1] = c; + return u; + } + + // Hebrew + // Range: U+0590 to U+05FF + + + // Arabic + // Range: U+0600 to U+06FF + + // Devanagari + // Range: U+0900 to U+097F + + + // Bengali + // Range: U+0980 to U+09FF + + + // Gurmukhi + // Range: U+0A00 to U+0A7F + + + // Gujarati + // Range: U+0A80 to U+0AFF + + + // Oriya + // Range: U+0B00 to U+0B7F + // no capital / lower case + + + // Tamil + // Range: U+0B80 to U+0BFF + // no capital / lower case + + + // Telugu + // Range: U+0C00 to U+0C7F + // no capital / lower case + + + // Kannada + // Range: U+0C80 to U+0CFF + // no capital / lower case + + + // Malayalam + // Range: U+0D00 to U+0D7F + + // Thai + // Range: U+0E00 to U+0E7F + + + // Lao + // Range: U+0E80 to U+0EFF + + + // Tibetan + // Range: U+0F00 to U+0FBF + + // Georgian + // Range: U+10A0 to U+10F0 + + // Hangul Jamo + // Range: U+1100 to U+11FF + + // Greek Extended + // Range: U+1F00 to U+1FFF + // skip for now + + + // General Punctuation + // Range: U+2000 to U+206F + + // Superscripts and Subscripts + // Range: U+2070 to U+209F + + // Currency Symbols + // Range: U+20A0 to U+20CF + + + // Combining Diacritical Marks for Symbols + // Range: U+20D0 to U+20FF + // skip for now + + + // Number Forms + // Range: U+2150 to U+218F + // skip for now + + + // Arrows + // Range: U+2190 to U+21FF + + // Mathematical Operators + // Range: U+2200 to U+22FF + + // Miscellaneous Technical + // Range: U+2300 to U+23FF + + // Control Pictures + // Range: U+2400 to U+243F + + // Optical Character Recognition + // Range: U+2440 to U+245F + + // Enclosed Alphanumerics + // Range: U+2460 to U+24FF + + // Box Drawing + // Range: U+2500 to U+257F + + // Block Elements + // Range: U+2580 to U+259F + + // Geometric Shapes + // Range: U+25A0 to U+25FF + + // Miscellaneous Symbols + // Range: U+2600 to U+26FF + + // Dingbats + // Range: U+2700 to U+27BF + + // CJK Symbols and Punctuation + // Range: U+3000 to U+303F + + // Hiragana + // Range: U+3040 to U+309F + + // Katakana + // Range: U+30A0 to U+30FF + + // Bopomofo + // Range: U+3100 to U+312F + + // Hangul Compatibility Jamo + // Range: U+3130 to U+318F + + // Kanbun + // Range: U+3190 to U+319F + + + // Enclosed CJK Letters and Months + // Range: U+3200 to U+32FF + + // CJK Compatibility + // Range: U+3300 to U+33FF + + // Hangul Syllables + // Range: U+AC00 to U+D7A3 + + // High Surrogates + // Range: U+D800 to U+DB7F + + // Private Use High Surrogates + // Range: U+DB80 to U+DBFF + + // Low Surrogates + // Range: U+DC00 to U+DFFF + + // Private Use Area + // Range: U+E000 to U+F8FF + + // CJK Compatibility Ideographs + // Range: U+F900 to U+FAFF + + // Alphabetic Presentation Forms + // Range: U+FB00 to U+FB4F + + // Arabic Presentation Forms-A + // Range: U+FB50 to U+FDFF + + // Combining Half Marks + // Range: U+FE20 to U+FE2F + + // CJK Compatibility Forms + // Range: U+FE30 to U+FE4F + + // Small Form Variants + // Range: U+FE50 to U+FE6F + + // Arabic Presentation Forms-B + // Range: U+FE70 to U+FEFF + + // Halfwidth and Fullwidth Forms + // Range: U+FF00 to U+FFEF + + if ( c >= 0xFF21 && c <= 0xFF3A ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0xFF41 && c <= 0xFF5A ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // Specials + // Range: U+FFF0 to U+FFFF + + return u; +} + +function DecimalToHexString( n ) { + n = Number( n ); + var h = "0x"; + + for ( var i = 3; i >= 0; i-- ) { + if ( n >= Math.pow(16, i) ){ + var t = Math.floor( n / Math.pow(16, i)); + n -= t * Math.pow(16, i); + if ( t >= 10 ) { + if ( t == 10 ) { + h += "A"; + } + if ( t == 11 ) { + h += "B"; + } + if ( t == 12 ) { + h += "C"; + } + if ( t == 13 ) { + h += "D"; + } + if ( t == 14 ) { + h += "E"; + } + if ( t == 15 ) { + h += "F"; + } + } else { + h += String( t ); + } + } else { + h += "0"; + } + } + + return h; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-2.js new file mode 100644 index 00000000000..2d8c6942b1f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-2.js @@ -0,0 +1,514 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.12-2.js + ECMA Section: 15.5.4.12 String.prototype.toUpperCase() + Description: + + Returns a string equal in length to the length of the result of converting + this object to a string. The result is a string value, not a String object. + + Every character of the result is equal to the corresponding character of the + string, unless that character has a Unicode 2.0 uppercase equivalent, in which + case the uppercase equivalent is used instead. (The canonical Unicode 2.0 case + mapping shall be used, which does not depend on implementation or locale.) + + Note that the toUpperCase function is intentionally generic; it does not require + that its this value be a String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.5.4.12-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.toUpperCase()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var TEST_STRING = ""; + var EXPECT_STRING = ""; + + // basic latin test + + for ( var i = 0; i < 0x007A; i++ ) { + var u = new Unicode(i); + TEST_STRING += String.fromCharCode(i); + EXPECT_STRING += String.fromCharCode( u.upper ); + } + + // don't print out the value of the strings since they contain control + // characters that break the driver + var isEqual = EXPECT_STRING == (new String( TEST_STRING )).toUpperCase(); + + array[item++] = new TestCase( SECTION, + "isEqual", + true, + isEqual); + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.substring = String.prototype.substring; + this.toString = new Function ( "return this.value+''" ); +} +function Unicode( c ) { + u = GetUnicodeValues( c ); + this.upper = u[0]; + this.lower = u[1] + return this; +} +function GetUnicodeValues( c ) { + u = new Array(); + + u[0] = c; + u[1] = c; + + // upper case Basic Latin + + if ( c >= 0x0041 && c <= 0x005A) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Basic Latin + if ( c >= 0x0061 && c <= 0x007a ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // upper case Latin-1 Supplement + if ( c == 0x00B5 ) { + u[0] = 0x039C; + u[1] = c; + return u; + } + if ( (c >= 0x00C0 && c <= 0x00D6) || (c >= 0x00D8 && c<=0x00DE) ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Latin-1 Supplement + if ( (c >= 0x00E0 && c <= 0x00F6) || (c >= 0x00F8 && c <= 0x00FE) ) { + u[0] = c - 32; + u[1] = c; + return u; + } + if ( c == 0x00FF ) { + u[0] = 0x0178; + u[1] = c; + return u; + } + // Latin Extended A + if ( (c >= 0x0100 && c < 0x0138) || (c > 0x0149 && c < 0x0178) ) { + // special case for capital I + if ( c == 0x0130 ) { + u[0] = c; + u[1] = 0x0069; + return u; + } + if ( c == 0x0131 ) { + u[0] = 0x0049; + u[1] = c; + return u; + } + + if ( c % 2 == 0 ) { + // if it's even, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's odd, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x0178 ) { + u[0] = c; + u[1] = 0x00FF; + return u; + } + + if ( (c >= 0x0139 && c < 0x0149) || (c > 0x0178 && c < 0x017F) ) { + if ( c % 2 == 1 ) { + // if it's odd, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's even, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x017F ) { + u[0] = 0x0053; + u[1] = c; + } + + // Latin Extended B + // need to improve this set + + if ( c >= 0x0200 && c <= 0x0217 ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c+1; + } else { + u[0] = c-1; + u[1] = c; + } + return u; + } + + // Latin Extended Additional + // Range: U+1E00 to U+1EFF + // http://www.unicode.org/Unicode.charts/glyphless/U1E00.html + + // Spacing Modifier Leters + // Range: U+02B0 to U+02FF + + // Combining Diacritical Marks + // Range: U+0300 to U+036F + + // skip Greek for now + // Greek + // Range: U+0370 to U+03FF + + // Cyrillic + // Range: U+0400 to U+04FF + + if ( c >= 0x0400 && c <= 0x040F) { + u[0] = c; + u[1] = c + 80; + return u; + } + + + if ( c >= 0x0410 && c <= 0x042F ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0x0430 && c<= 0x044F ) { + u[0] = c - 32; + u[1] = c; + return u; + + } + if ( c >= 0x0450 && c<= 0x045F ) { + u[0] = c -80; + u[1] = c; + return u; + } + + if ( c >= 0x0460 && c <= 0x047F ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c +1; + } else { + u[0] = c - 1; + u[1] = c; + } + return u; + } + + // Armenian + // Range: U+0530 to U+058F + if ( c >= 0x0531 && c <= 0x0556 ) { + u[0] = c; + u[1] = c + 48; + return u; + } + if ( c >= 0x0561 && c < 0x0587 ) { + u[0] = c - 48; + u[1] = c; + return u; + } + + // Hebrew + // Range: U+0590 to U+05FF + + + // Arabic + // Range: U+0600 to U+06FF + + // Devanagari + // Range: U+0900 to U+097F + + + // Bengali + // Range: U+0980 to U+09FF + + + // Gurmukhi + // Range: U+0A00 to U+0A7F + + + // Gujarati + // Range: U+0A80 to U+0AFF + + + // Oriya + // Range: U+0B00 to U+0B7F + // no capital / lower case + + + // Tamil + // Range: U+0B80 to U+0BFF + // no capital / lower case + + + // Telugu + // Range: U+0C00 to U+0C7F + // no capital / lower case + + + // Kannada + // Range: U+0C80 to U+0CFF + // no capital / lower case + + + // Malayalam + // Range: U+0D00 to U+0D7F + + // Thai + // Range: U+0E00 to U+0E7F + + + // Lao + // Range: U+0E80 to U+0EFF + + + // Tibetan + // Range: U+0F00 to U+0FBF + + // Georgian + // Range: U+10A0 to U+10F0 + + // Hangul Jamo + // Range: U+1100 to U+11FF + + // Greek Extended + // Range: U+1F00 to U+1FFF + // skip for now + + + // General Punctuation + // Range: U+2000 to U+206F + + // Superscripts and Subscripts + // Range: U+2070 to U+209F + + // Currency Symbols + // Range: U+20A0 to U+20CF + + + // Combining Diacritical Marks for Symbols + // Range: U+20D0 to U+20FF + // skip for now + + + // Number Forms + // Range: U+2150 to U+218F + // skip for now + + + // Arrows + // Range: U+2190 to U+21FF + + // Mathematical Operators + // Range: U+2200 to U+22FF + + // Miscellaneous Technical + // Range: U+2300 to U+23FF + + // Control Pictures + // Range: U+2400 to U+243F + + // Optical Character Recognition + // Range: U+2440 to U+245F + + // Enclosed Alphanumerics + // Range: U+2460 to U+24FF + + // Box Drawing + // Range: U+2500 to U+257F + + // Block Elements + // Range: U+2580 to U+259F + + // Geometric Shapes + // Range: U+25A0 to U+25FF + + // Miscellaneous Symbols + // Range: U+2600 to U+26FF + + // Dingbats + // Range: U+2700 to U+27BF + + // CJK Symbols and Punctuation + // Range: U+3000 to U+303F + + // Hiragana + // Range: U+3040 to U+309F + + // Katakana + // Range: U+30A0 to U+30FF + + // Bopomofo + // Range: U+3100 to U+312F + + // Hangul Compatibility Jamo + // Range: U+3130 to U+318F + + // Kanbun + // Range: U+3190 to U+319F + + + // Enclosed CJK Letters and Months + // Range: U+3200 to U+32FF + + // CJK Compatibility + // Range: U+3300 to U+33FF + + // Hangul Syllables + // Range: U+AC00 to U+D7A3 + + // High Surrogates + // Range: U+D800 to U+DB7F + + // Private Use High Surrogates + // Range: U+DB80 to U+DBFF + + // Low Surrogates + // Range: U+DC00 to U+DFFF + + // Private Use Area + // Range: U+E000 to U+F8FF + + // CJK Compatibility Ideographs + // Range: U+F900 to U+FAFF + + // Alphabetic Presentation Forms + // Range: U+FB00 to U+FB4F + + // Arabic Presentation Forms-A + // Range: U+FB50 to U+FDFF + + // Combining Half Marks + // Range: U+FE20 to U+FE2F + + // CJK Compatibility Forms + // Range: U+FE30 to U+FE4F + + // Small Form Variants + // Range: U+FE50 to U+FE6F + + // Arabic Presentation Forms-B + // Range: U+FE70 to U+FEFF + + // Halfwidth and Fullwidth Forms + // Range: U+FF00 to U+FFEF + + if ( c >= 0xFF21 && c <= 0xFF3A ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0xFF41 && c <= 0xFF5A ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // Specials + // Range: U+FFF0 to U+FFFF + + return u; +} + +function DecimalToHexString( n ) { + n = Number( n ); + var h = "0x"; + + for ( var i = 3; i >= 0; i-- ) { + if ( n >= Math.pow(16, i) ){ + var t = Math.floor( n / Math.pow(16, i)); + n -= t * Math.pow(16, i); + if ( t >= 10 ) { + if ( t == 10 ) { + h += "A"; + } + if ( t == 11 ) { + h += "B"; + } + if ( t == 12 ) { + h += "C"; + } + if ( t == 13 ) { + h += "D"; + } + if ( t == 14 ) { + h += "E"; + } + if ( t == 15 ) { + h += "F"; + } + } else { + h += String( t ); + } + } else { + h += "0"; + } + } + + return h; +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-3.js new file mode 100644 index 00000000000..1561db52c6f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-3.js @@ -0,0 +1,556 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.12-3.js + ECMA Section: 15.5.4.12 String.prototype.toUpperCase() + Description: + + Returns a string equal in length to the length of the result of converting + this object to a string. The result is a string value, not a String object. + + Every character of the result is equal to the corresponding character of the + string, unless that character has a Unicode 2.0 uppercase equivalent, in which + case the uppercase equivalent is used instead. (The canonical Unicode 2.0 case + mapping shall be used, which does not depend on implementation or locale.) + + Note that the toUpperCase function is intentionally generic; it does not require + that its this value be a String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.5.4.12-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.toUpperCase()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // Georgian + // Range: U+10A0 to U+10FF + for ( var i = 0x10A0; i <= 0x10FF; i++ ) { + var U = new Unicode( i ); +/* + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toUpperCase()", + String.fromCharCode(U.upper), + eval("var s = new String( String.fromCharCode("+i+") ); s.toUpperCase()") ); +*/ + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toUpperCase().charCodeAt(0)", + U.upper, + eval("var s = new String( String.fromCharCode(i) ); s.toUpperCase().charCodeAt(0)") ); + + } + + // Halfwidth and Fullwidth Forms + // Range: U+FF00 to U+FFEF + for ( var i = 0xFF00; i <= 0xFFEF; i++ ) { + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toUpperCase()", + eval( "var u = new Unicode( i ); String.fromCharCode(u.upper)" ), + eval("var s = new String( String.fromCharCode("+i+") ); s.toUpperCase()") ); + + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toUpperCase().charCodeAt(0)", + eval( "var u = new Unicode( i ); u.upper" ), + eval("var s = new String( String.fromCharCode("+i+") ); s.toUpperCase().charCodeAt(0)") ); + } + + // Hiragana (no upper / lower case) + // Range: U+3040 to U+309F + + for ( var i = 0x3040; i <= 0x309F; i++ ) { + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toUpperCase()", + eval( "var u = new Unicode( i ); String.fromCharCode(u.upper)" ), + eval("var s = new String( String.fromCharCode("+i+") ); s.toUpperCase()") ); + + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toUpperCase().charCodeAt(0)", + eval( "var u = new Unicode( i ); u.upper" ), + eval("var s = new String( String.fromCharCode("+i+") ); s.toUpperCase().charCodeAt(0)") ); + } + + +/* + var TEST_STRING = ""; + var EXPECT_STRING = ""; + + // basic latin test + + for ( var i = 0; i < 0x007A; i++ ) { + var u = new Unicode(i); + TEST_STRING += String.fromCharCode(i); + EXPECT_STRING += String.fromCharCode( u.upper ); + } +*/ + + + + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.substring = String.prototype.substring; + this.toString = new Function ( "return this.value+''" ); +} +function Unicode( c ) { + u = GetUnicodeValues( c ); + this.upper = u[0]; + this.lower = u[1] + return this; +} +function GetUnicodeValues( c ) { + u = new Array(); + + u[0] = c; + u[1] = c; + + // upper case Basic Latin + + if ( c >= 0x0041 && c <= 0x005A) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Basic Latin + if ( c >= 0x0061 && c <= 0x007a ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // upper case Latin-1 Supplement + if ( c == 0x00B5 ) { + u[0] = 0x039C; + u[1] = c; + return u; + } + if ( (c >= 0x00C0 && c <= 0x00D6) || (c >= 0x00D8 && c<=0x00DE) ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Latin-1 Supplement + if ( (c >= 0x00E0 && c <= 0x00F6) || (c >= 0x00F8 && c <= 0x00FE) ) { + u[0] = c - 32; + u[1] = c; + return u; + } + if ( c == 0x00FF ) { + u[0] = 0x0178; + u[1] = c; + return u; + } + // Latin Extended A + if ( (c >= 0x0100 && c < 0x0138) || (c > 0x0149 && c < 0x0178) ) { + // special case for capital I + if ( c == 0x0130 ) { + u[0] = c; + u[1] = 0x0069; + return u; + } + if ( c == 0x0131 ) { + u[0] = 0x0049; + u[1] = c; + return u; + } + + if ( c % 2 == 0 ) { + // if it's even, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's odd, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x0178 ) { + u[0] = c; + u[1] = 0x00FF; + return u; + } + + if ( (c >= 0x0139 && c < 0x0149) || (c > 0x0178 && c < 0x017F) ) { + if ( c % 2 == 1 ) { + // if it's odd, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's even, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x017F ) { + u[0] = 0x0053; + u[1] = c; + } + + // Latin Extended B + // need to improve this set + + if ( c >= 0x0200 && c <= 0x0217 ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c+1; + } else { + u[0] = c-1; + u[1] = c; + } + return u; + } + + // Latin Extended Additional + // Range: U+1E00 to U+1EFF + // http://www.unicode.org/Unicode.charts/glyphless/U1E00.html + + // Spacing Modifier Leters + // Range: U+02B0 to U+02FF + + // Combining Diacritical Marks + // Range: U+0300 to U+036F + + // skip Greek for now + // Greek + // Range: U+0370 to U+03FF + + // Cyrillic + // Range: U+0400 to U+04FF + + if ( c >= 0x0400 && c <= 0x040F) { + u[0] = c; + u[1] = c + 80; + return u; + } + + + if ( c >= 0x0410 && c <= 0x042F ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0x0430 && c<= 0x044F ) { + u[0] = c - 32; + u[1] = c; + return u; + + } + if ( c >= 0x0450 && c<= 0x045F ) { + u[0] = c -80; + u[1] = c; + return u; + } + + if ( c >= 0x0460 && c <= 0x047F ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c +1; + } else { + u[0] = c - 1; + u[1] = c; + } + return u; + } + + // Armenian + // Range: U+0530 to U+058F + if ( c >= 0x0531 && c <= 0x0556 ) { + u[0] = c; + u[1] = c + 48; + return u; + } + if ( c >= 0x0561 && c < 0x0587 ) { + u[0] = c - 48; + u[1] = c; + return u; + } + + // Hebrew + // Range: U+0590 to U+05FF + + + // Arabic + // Range: U+0600 to U+06FF + + // Devanagari + // Range: U+0900 to U+097F + + + // Bengali + // Range: U+0980 to U+09FF + + + // Gurmukhi + // Range: U+0A00 to U+0A7F + + + // Gujarati + // Range: U+0A80 to U+0AFF + + + // Oriya + // Range: U+0B00 to U+0B7F + // no capital / lower case + + + // Tamil + // Range: U+0B80 to U+0BFF + // no capital / lower case + + + // Telugu + // Range: U+0C00 to U+0C7F + // no capital / lower case + + + // Kannada + // Range: U+0C80 to U+0CFF + // no capital / lower case + + + // Malayalam + // Range: U+0D00 to U+0D7F + + // Thai + // Range: U+0E00 to U+0E7F + + + // Lao + // Range: U+0E80 to U+0EFF + + + // Tibetan + // Range: U+0F00 to U+0FBF + + // Georgian + // Range: U+10A0 to U+10F0 + + // Hangul Jamo + // Range: U+1100 to U+11FF + + // Greek Extended + // Range: U+1F00 to U+1FFF + // skip for now + + + // General Punctuation + // Range: U+2000 to U+206F + + // Superscripts and Subscripts + // Range: U+2070 to U+209F + + // Currency Symbols + // Range: U+20A0 to U+20CF + + + // Combining Diacritical Marks for Symbols + // Range: U+20D0 to U+20FF + // skip for now + + + // Number Forms + // Range: U+2150 to U+218F + // skip for now + + + // Arrows + // Range: U+2190 to U+21FF + + // Mathematical Operators + // Range: U+2200 to U+22FF + + // Miscellaneous Technical + // Range: U+2300 to U+23FF + + // Control Pictures + // Range: U+2400 to U+243F + + // Optical Character Recognition + // Range: U+2440 to U+245F + + // Enclosed Alphanumerics + // Range: U+2460 to U+24FF + + // Box Drawing + // Range: U+2500 to U+257F + + // Block Elements + // Range: U+2580 to U+259F + + // Geometric Shapes + // Range: U+25A0 to U+25FF + + // Miscellaneous Symbols + // Range: U+2600 to U+26FF + + // Dingbats + // Range: U+2700 to U+27BF + + // CJK Symbols and Punctuation + // Range: U+3000 to U+303F + + // Hiragana + // Range: U+3040 to U+309F + + // Katakana + // Range: U+30A0 to U+30FF + + // Bopomofo + // Range: U+3100 to U+312F + + // Hangul Compatibility Jamo + // Range: U+3130 to U+318F + + // Kanbun + // Range: U+3190 to U+319F + + + // Enclosed CJK Letters and Months + // Range: U+3200 to U+32FF + + // CJK Compatibility + // Range: U+3300 to U+33FF + + // Hangul Syllables + // Range: U+AC00 to U+D7A3 + + // High Surrogates + // Range: U+D800 to U+DB7F + + // Private Use High Surrogates + // Range: U+DB80 to U+DBFF + + // Low Surrogates + // Range: U+DC00 to U+DFFF + + // Private Use Area + // Range: U+E000 to U+F8FF + + // CJK Compatibility Ideographs + // Range: U+F900 to U+FAFF + + // Alphabetic Presentation Forms + // Range: U+FB00 to U+FB4F + + // Arabic Presentation Forms-A + // Range: U+FB50 to U+FDFF + + // Combining Half Marks + // Range: U+FE20 to U+FE2F + + // CJK Compatibility Forms + // Range: U+FE30 to U+FE4F + + // Small Form Variants + // Range: U+FE50 to U+FE6F + + // Arabic Presentation Forms-B + // Range: U+FE70 to U+FEFF + + // Halfwidth and Fullwidth Forms + // Range: U+FF00 to U+FFEF + + if ( c >= 0xFF21 && c <= 0xFF3A ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0xFF41 && c <= 0xFF5A ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // Specials + // Range: U+FFF0 to U+FFFF + + return u; +} + +function DecimalToHexString( n ) { + n = Number( n ); + var h = "0x"; + + for ( var i = 3; i >= 0; i-- ) { + if ( n >= Math.pow(16, i) ){ + var t = Math.floor( n / Math.pow(16, i)); + n -= t * Math.pow(16, i); + if ( t >= 10 ) { + if ( t == 10 ) { + h += "A"; + } + if ( t == 11 ) { + h += "B"; + } + if ( t == 12 ) { + h += "C"; + } + if ( t == 13 ) { + h += "D"; + } + if ( t == 14 ) { + h += "E"; + } + if ( t == 15 ) { + h += "F"; + } + } else { + h += String( t ); + } + } else { + h += "0"; + } + } + + return h; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-4.js new file mode 100644 index 00000000000..54e365eb9c6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-4.js @@ -0,0 +1,511 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.12-1.js + ECMA Section: 15.5.4.12 String.prototype.toUpperCase() + Description: + + Returns a string equal in length to the length of the result of converting + this object to a string. The result is a string value, not a String object. + + Every character of the result is equal to the corresponding character of the + string, unless that character has a Unicode 2.0 uppercase equivalent, in which + case the uppercase equivalent is used instead. (The canonical Unicode 2.0 case + mapping shall be used, which does not depend on implementation or locale.) + + Note that the toUpperCase function is intentionally generic; it does not require + that its this value be a String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.5.4.12-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.toUpperCase()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // Cyrillic (part) + // Range: U+0400 to U+04FF + for ( var i = 0x0400; i <= 0x047F; i++ ) { + var U =new Unicode( i ); +/* + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toUpperCase()", + U.upper, + eval("var s = new String( String.fromCharCode("+i+") ); s.toUpperCase()") ); +*/ + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toUpperCase().charCodeAt(0)", + U.upper, + eval("var s = new String( String.fromCharCode(i) ); s.toUpperCase().charCodeAt(0)") ); + + } + + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.substring = String.prototype.substring; + this.toString = new Function ( "return this.value+''" ); +} +function Unicode( c ) { + u = GetUnicodeValues( c ); + this.upper = u[0]; + this.lower = u[1] + return this; +} +function GetUnicodeValues( c ) { + u = new Array(); + + u[0] = c; + u[1] = c; + + // upper case Basic Latin + + if ( c >= 0x0041 && c <= 0x005A) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Basic Latin + if ( c >= 0x0061 && c <= 0x007a ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // upper case Latin-1 Supplement + if ( c == 0x00B5 ) { + u[0] = 0x039C; + u[1] = c; + return u; + } + if ( (c >= 0x00C0 && c <= 0x00D6) || (c >= 0x00D8 && c<=0x00DE) ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Latin-1 Supplement + if ( (c >= 0x00E0 && c <= 0x00F6) || (c >= 0x00F8 && c <= 0x00FE) ) { + u[0] = c - 32; + u[1] = c; + return u; + } + if ( c == 0x00FF ) { + u[0] = 0x0178; + u[1] = c; + return u; + } + // Latin Extended A + if ( (c >= 0x0100 && c < 0x0138) || (c > 0x0149 && c < 0x0178) ) { + // special case for capital I + if ( c == 0x0130 ) { + u[0] = c; + u[1] = 0x0069; + return u; + } + if ( c == 0x0131 ) { + u[0] = 0x0049; + u[1] = c; + return u; + } + + if ( c % 2 == 0 ) { + // if it's even, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's odd, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x0178 ) { + u[0] = c; + u[1] = 0x00FF; + return u; + } + + if ( (c >= 0x0139 && c < 0x0149) || (c > 0x0178 && c < 0x017F) ) { + if ( c % 2 == 1 ) { + // if it's odd, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's even, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x017F ) { + u[0] = 0x0053; + u[1] = c; + } + + // Latin Extended B + // need to improve this set + + if ( c >= 0x0200 && c <= 0x0217 ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c+1; + } else { + u[0] = c-1; + u[1] = c; + } + return u; + } + + // Latin Extended Additional + // Range: U+1E00 to U+1EFF + // http://www.unicode.org/Unicode.charts/glyphless/U1E00.html + + // Spacing Modifier Leters + // Range: U+02B0 to U+02FF + + // Combining Diacritical Marks + // Range: U+0300 to U+036F + + // skip Greek for now + // Greek + // Range: U+0370 to U+03FF + + // Cyrillic + // Range: U+0400 to U+04FF + + if ( c >= 0x0400 && c <= 0x040F) { + u[0] = c; + u[1] = c + 80; + return u; + } + + + if ( c >= 0x0410 && c <= 0x042F ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0x0430 && c<= 0x044F ) { + u[0] = c - 32; + u[1] = c; + return u; + + } + if ( c >= 0x0450 && c<= 0x045F ) { + u[0] = c -80; + u[1] = c; + return u; + } + + if ( c >= 0x0460 && c <= 0x047F ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c +1; + } else { + u[0] = c - 1; + u[1] = c; + } + return u; + } + + // Armenian + // Range: U+0530 to U+058F + if ( c >= 0x0531 && c <= 0x0556 ) { + u[0] = c; + u[1] = c + 48; + return u; + } + if ( c >= 0x0561 && c < 0x0587 ) { + u[0] = c - 48; + u[1] = c; + return u; + } + + // Hebrew + // Range: U+0590 to U+05FF + + + // Arabic + // Range: U+0600 to U+06FF + + // Devanagari + // Range: U+0900 to U+097F + + + // Bengali + // Range: U+0980 to U+09FF + + + // Gurmukhi + // Range: U+0A00 to U+0A7F + + + // Gujarati + // Range: U+0A80 to U+0AFF + + + // Oriya + // Range: U+0B00 to U+0B7F + // no capital / lower case + + + // Tamil + // Range: U+0B80 to U+0BFF + // no capital / lower case + + + // Telugu + // Range: U+0C00 to U+0C7F + // no capital / lower case + + + // Kannada + // Range: U+0C80 to U+0CFF + // no capital / lower case + + + // Malayalam + // Range: U+0D00 to U+0D7F + + // Thai + // Range: U+0E00 to U+0E7F + + + // Lao + // Range: U+0E80 to U+0EFF + + + // Tibetan + // Range: U+0F00 to U+0FBF + + // Georgian + // Range: U+10A0 to U+10F0 + + // Hangul Jamo + // Range: U+1100 to U+11FF + + // Greek Extended + // Range: U+1F00 to U+1FFF + // skip for now + + + // General Punctuation + // Range: U+2000 to U+206F + + // Superscripts and Subscripts + // Range: U+2070 to U+209F + + // Currency Symbols + // Range: U+20A0 to U+20CF + + + // Combining Diacritical Marks for Symbols + // Range: U+20D0 to U+20FF + // skip for now + + + // Number Forms + // Range: U+2150 to U+218F + // skip for now + + + // Arrows + // Range: U+2190 to U+21FF + + // Mathematical Operators + // Range: U+2200 to U+22FF + + // Miscellaneous Technical + // Range: U+2300 to U+23FF + + // Control Pictures + // Range: U+2400 to U+243F + + // Optical Character Recognition + // Range: U+2440 to U+245F + + // Enclosed Alphanumerics + // Range: U+2460 to U+24FF + + // Box Drawing + // Range: U+2500 to U+257F + + // Block Elements + // Range: U+2580 to U+259F + + // Geometric Shapes + // Range: U+25A0 to U+25FF + + // Miscellaneous Symbols + // Range: U+2600 to U+26FF + + // Dingbats + // Range: U+2700 to U+27BF + + // CJK Symbols and Punctuation + // Range: U+3000 to U+303F + + // Hiragana + // Range: U+3040 to U+309F + + // Katakana + // Range: U+30A0 to U+30FF + + // Bopomofo + // Range: U+3100 to U+312F + + // Hangul Compatibility Jamo + // Range: U+3130 to U+318F + + // Kanbun + // Range: U+3190 to U+319F + + + // Enclosed CJK Letters and Months + // Range: U+3200 to U+32FF + + // CJK Compatibility + // Range: U+3300 to U+33FF + + // Hangul Syllables + // Range: U+AC00 to U+D7A3 + + // High Surrogates + // Range: U+D800 to U+DB7F + + // Private Use High Surrogates + // Range: U+DB80 to U+DBFF + + // Low Surrogates + // Range: U+DC00 to U+DFFF + + // Private Use Area + // Range: U+E000 to U+F8FF + + // CJK Compatibility Ideographs + // Range: U+F900 to U+FAFF + + // Alphabetic Presentation Forms + // Range: U+FB00 to U+FB4F + + // Arabic Presentation Forms-A + // Range: U+FB50 to U+FDFF + + // Combining Half Marks + // Range: U+FE20 to U+FE2F + + // CJK Compatibility Forms + // Range: U+FE30 to U+FE4F + + // Small Form Variants + // Range: U+FE50 to U+FE6F + + // Arabic Presentation Forms-B + // Range: U+FE70 to U+FEFF + + // Halfwidth and Fullwidth Forms + // Range: U+FF00 to U+FFEF + + if ( c >= 0xFF21 && c <= 0xFF3A ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0xFF41 && c <= 0xFF5A ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // Specials + // Range: U+FFF0 to U+FFFF + + return u; +} + +function DecimalToHexString( n ) { + n = Number( n ); + var h = "0x"; + + for ( var i = 3; i >= 0; i-- ) { + if ( n >= Math.pow(16, i) ){ + var t = Math.floor( n / Math.pow(16, i)); + n -= t * Math.pow(16, i); + if ( t >= 10 ) { + if ( t == 10 ) { + h += "A"; + } + if ( t == 11 ) { + h += "B"; + } + if ( t == 12 ) { + h += "C"; + } + if ( t == 13 ) { + h += "D"; + } + if ( t == 14 ) { + h += "E"; + } + if ( t == 15 ) { + h += "F"; + } + } else { + h += String( t ); + } + } else { + h += "0"; + } + } + + return h; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-5.js new file mode 100644 index 00000000000..bbcfad48a3f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-5.js @@ -0,0 +1,523 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.12-1.js + ECMA Section: 15.5.4.12 String.prototype.toUpperCase() + Description: + + Returns a string equal in length to the length of the result of converting + this object to a string. The result is a string value, not a String object. + + Every character of the result is equal to the corresponding character of the + string, unless that character has a Unicode 2.0 uppercase equivalent, in which + case the uppercase equivalent is used instead. (The canonical Unicode 2.0 case + mapping shall be used, which does not depend on implementation or locale.) + + Note that the toUpperCase function is intentionally generic; it does not require + that its this value be a String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.5.4.12-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.toUpperCase()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // Armenian + // Range: U+0530 to U+058F + for ( var i = 0x0530; i <= 0x058F; i++ ) { + var U = new Unicode( i ); +/* + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toUpperCase()", + String.fromCharCode(U.upper), + eval("var s = new String( String.fromCharCode("+i+") ); s.toUpperCase()") ); +*/ + array[item++] = new TestCase( SECTION, + "var s = new String( String.fromCharCode("+i+") ); s.toUpperCase().charCodeAt(0)", + U.upper, + eval("var s = new String( String.fromCharCode(i) ); s.toUpperCase().charCodeAt(0)") ); + + } + + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.substring = String.prototype.substring; + this.toString = new Function ( "return this.value+''" ); +} +function Unicode( c ) { + u = GetUnicodeValues( c ); + this.upper = u[0]; + this.lower = u[1] + return this; +} +function GetUnicodeValues( c ) { + u = new Array(); + + u[0] = c; + u[1] = c; + + // upper case Basic Latin + + if ( c >= 0x0041 && c <= 0x005A) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Basic Latin + if ( c >= 0x0061 && c <= 0x007a ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // upper case Latin-1 Supplement + if ( c == 0x00B5 ) { + u[0] = 0x039C; + u[1] = c; + return u; + } + if ( (c >= 0x00C0 && c <= 0x00D6) || (c >= 0x00D8 && c<=0x00DE) ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + // lower case Latin-1 Supplement + if ( (c >= 0x00E0 && c <= 0x00F6) || (c >= 0x00F8 && c <= 0x00FE) ) { + u[0] = c - 32; + u[1] = c; + return u; + } + if ( c == 0x00FF ) { + u[0] = 0x0178; + u[1] = c; + return u; + } + // Latin Extended A + if ( (c >= 0x0100 && c < 0x0138) || (c > 0x0149 && c < 0x0178) ) { + // special case for capital I + if ( c == 0x0130 ) { + u[0] = c; + u[1] = 0x0069; + return u; + } + if ( c == 0x0131 ) { + u[0] = 0x0049; + u[1] = c; + return u; + } + + if ( c % 2 == 0 ) { + // if it's even, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's odd, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x0178 ) { + u[0] = c; + u[1] = 0x00FF; + return u; + } + + // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE, uppercase takes two code points + if (c == 0x0149) { + u[0] = 0x02bc; + u[1] = c; + return u; + } + + if ( (c >= 0x0139 && c < 0x0149) || (c > 0x0178 && c < 0x017F) ) { + if ( c % 2 == 1 ) { + // if it's odd, it's a capital and the lower case is c +1 + u[0] = c; + u[1] = c+1; + } else { + // if it's even, it's a lower case and upper case is c-1 + u[0] = c-1; + u[1] = c; + } + return u; + } + if ( c == 0x017F ) { + u[0] = 0x0053; + u[1] = c; + } + + // Latin Extended B + // need to improve this set + + if ( c >= 0x0200 && c <= 0x0217 ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c+1; + } else { + u[0] = c-1; + u[1] = c; + } + return u; + } + + // Latin Extended Additional + // Range: U+1E00 to U+1EFF + // http://www.unicode.org/Unicode.charts/glyphless/U1E00.html + + // Spacing Modifier Leters + // Range: U+02B0 to U+02FF + + // Combining Diacritical Marks + // Range: U+0300 to U+036F + + // skip Greek for now + // Greek + // Range: U+0370 to U+03FF + + // Cyrillic + // Range: U+0400 to U+04FF + + if ( c >= 0x0400 && c <= 0x040F) { + u[0] = c; + u[1] = c + 80; + return u; + } + + + if ( c >= 0x0410 && c <= 0x042F ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0x0430 && c<= 0x044F ) { + u[0] = c - 32; + u[1] = c; + return u; + + } + if ( c >= 0x0450 && c<= 0x045F ) { + u[0] = c -80; + u[1] = c; + return u; + } + + if ( c >= 0x0460 && c <= 0x047F ) { + if ( c % 2 == 0 ) { + u[0] = c; + u[1] = c +1; + } else { + u[0] = c - 1; + u[1] = c; + } + return u; + } + + // Armenian + // Range: U+0530 to U+058F + if ( c >= 0x0531 && c <= 0x0556 ) { + u[0] = c; + u[1] = c + 48; + return u; + } + if ( c >= 0x0561 && c < 0x0587 ) { + u[0] = c - 48; + u[1] = c; + return u; + } + if (c == 0x0587) { + u[0] = 0x0535; + u[1] = c; + return u; + } + + // Hebrew + // Range: U+0590 to U+05FF + + + // Arabic + // Range: U+0600 to U+06FF + + // Devanagari + // Range: U+0900 to U+097F + + + // Bengali + // Range: U+0980 to U+09FF + + + // Gurmukhi + // Range: U+0A00 to U+0A7F + + + // Gujarati + // Range: U+0A80 to U+0AFF + + + // Oriya + // Range: U+0B00 to U+0B7F + // no capital / lower case + + + // Tamil + // Range: U+0B80 to U+0BFF + // no capital / lower case + + + // Telugu + // Range: U+0C00 to U+0C7F + // no capital / lower case + + + // Kannada + // Range: U+0C80 to U+0CFF + // no capital / lower case + + + // Malayalam + // Range: U+0D00 to U+0D7F + + // Thai + // Range: U+0E00 to U+0E7F + + + // Lao + // Range: U+0E80 to U+0EFF + + + // Tibetan + // Range: U+0F00 to U+0FBF + + // Georgian + // Range: U+10A0 to U+10F0 + + // Hangul Jamo + // Range: U+1100 to U+11FF + + // Greek Extended + // Range: U+1F00 to U+1FFF + // skip for now + + + // General Punctuation + // Range: U+2000 to U+206F + + // Superscripts and Subscripts + // Range: U+2070 to U+209F + + // Currency Symbols + // Range: U+20A0 to U+20CF + + + // Combining Diacritical Marks for Symbols + // Range: U+20D0 to U+20FF + // skip for now + + + // Number Forms + // Range: U+2150 to U+218F + // skip for now + + + // Arrows + // Range: U+2190 to U+21FF + + // Mathematical Operators + // Range: U+2200 to U+22FF + + // Miscellaneous Technical + // Range: U+2300 to U+23FF + + // Control Pictures + // Range: U+2400 to U+243F + + // Optical Character Recognition + // Range: U+2440 to U+245F + + // Enclosed Alphanumerics + // Range: U+2460 to U+24FF + + // Box Drawing + // Range: U+2500 to U+257F + + // Block Elements + // Range: U+2580 to U+259F + + // Geometric Shapes + // Range: U+25A0 to U+25FF + + // Miscellaneous Symbols + // Range: U+2600 to U+26FF + + // Dingbats + // Range: U+2700 to U+27BF + + // CJK Symbols and Punctuation + // Range: U+3000 to U+303F + + // Hiragana + // Range: U+3040 to U+309F + + // Katakana + // Range: U+30A0 to U+30FF + + // Bopomofo + // Range: U+3100 to U+312F + + // Hangul Compatibility Jamo + // Range: U+3130 to U+318F + + // Kanbun + // Range: U+3190 to U+319F + + + // Enclosed CJK Letters and Months + // Range: U+3200 to U+32FF + + // CJK Compatibility + // Range: U+3300 to U+33FF + + // Hangul Syllables + // Range: U+AC00 to U+D7A3 + + // High Surrogates + // Range: U+D800 to U+DB7F + + // Private Use High Surrogates + // Range: U+DB80 to U+DBFF + + // Low Surrogates + // Range: U+DC00 to U+DFFF + + // Private Use Area + // Range: U+E000 to U+F8FF + + // CJK Compatibility Ideographs + // Range: U+F900 to U+FAFF + + // Alphabetic Presentation Forms + // Range: U+FB00 to U+FB4F + + // Arabic Presentation Forms-A + // Range: U+FB50 to U+FDFF + + // Combining Half Marks + // Range: U+FE20 to U+FE2F + + // CJK Compatibility Forms + // Range: U+FE30 to U+FE4F + + // Small Form Variants + // Range: U+FE50 to U+FE6F + + // Arabic Presentation Forms-B + // Range: U+FE70 to U+FEFF + + // Halfwidth and Fullwidth Forms + // Range: U+FF00 to U+FFEF + + if ( c >= 0xFF21 && c <= 0xFF3A ) { + u[0] = c; + u[1] = c + 32; + return u; + } + + if ( c >= 0xFF41 && c <= 0xFF5A ) { + u[0] = c - 32; + u[1] = c; + return u; + } + + // Specials + // Range: U+FFF0 to U+FFFF + + return u; +} + +function DecimalToHexString( n ) { + n = Number( n ); + var h = "0x"; + + for ( var i = 3; i >= 0; i-- ) { + if ( n >= Math.pow(16, i) ){ + var t = Math.floor( n / Math.pow(16, i)); + n -= t * Math.pow(16, i); + if ( t >= 10 ) { + if ( t == 10 ) { + h += "A"; + } + if ( t == 11 ) { + h += "B"; + } + if ( t == 12 ) { + h += "C"; + } + if ( t == 13 ) { + h += "D"; + } + if ( t == 14 ) { + h += "E"; + } + if ( t == 15 ) { + h += "F"; + } + } else { + h += String( t ); + } + } else { + h += "0"; + } + } + + return h; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.2-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.2-1.js new file mode 100644 index 00000000000..3569556d40d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.2-1.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.2-1.js + ECMA Section: 15.5.4.2 String.prototype.toString() + + Description: Returns this string value. Note that, for a String + object, the toString() method happens to return the same + thing as the valueOf() method. + + The toString function is not generic; it generates a + runtime error if its this value is not a String object. + Therefore it connot be transferred to the other kinds of + objects for use as a method. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + + var SECTION = "15.5.4.2-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.toString"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "String.prototype.toString()", "", String.prototype.toString() ); + array[item++] = new TestCase( SECTION, "(new String()).toString()", "", (new String()).toString() ); + array[item++] = new TestCase( SECTION, "(new String(\"\")).toString()", "", (new String("")).toString() ); + array[item++] = new TestCase( SECTION, "(new String( String() )).toString()","", (new String(String())).toString() ); + array[item++] = new TestCase( SECTION, "(new String( \"h e l l o\" )).toString()", "h e l l o", (new String("h e l l o")).toString() ); + array[item++] = new TestCase( SECTION, "(new String( 0 )).toString()", "0", (new String(0)).toString() ); + return ( array ); +} +function test( array ) { + for ( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.2-2-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.2-2-n.js new file mode 100644 index 00000000000..b444bae418a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.2-2-n.js @@ -0,0 +1,74 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.2-2-n.js + ECMA Section: 15.5.4.2 String.prototype.toString() + + Description: Returns this string value. Note that, for a String + object, the toString() method happens to return the same + thing as the valueOf() method. + + The toString function is not generic; it generates a + runtime error if its this value is not a String object. + Therefore it connot be transferred to the other kinds of + objects for use as a method. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + + var SECTION = "15.5.4.2-3-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.toString"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "var tostr=String.prototype.toString; astring=new Number(); astring.toString = tostr; astring.toString()", + "error", + "var tostr=String.prototype.toString; astring=new Number(); astring.toString = tostr; astring.toString()" ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.2-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.2-3.js new file mode 100644 index 00000000000..f1855e2c978 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.2-3.js @@ -0,0 +1,87 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.2-3.js + ECMA Section: 15.5.4.2 String.prototype.toString() + + Description: Returns this string value. Note that, for a String + object, the toString() method happens to return the same + thing as the valueOf() method. + + The toString function is not generic; it generates a + runtime error if its this value is not a String object. + Therefore it connot be transferred to the other kinds of + objects for use as a method. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + + + var SECTION = "15.5.4.2-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.toString"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + + testcases[tc].actual = eval( testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "var tostr=String.prototype.toString; astring=new String(); astring.toString = tostr; astring.toString()", + "", + "var tostr=String.prototype.toString; astring=new String(); astring.toString = tostr; astring.toString()" ); + array[item++] = new TestCase( SECTION, + "var tostr=String.prototype.toString; astring=new String(0); astring.toString = tostr; astring.toString()", + "0", + "var tostr=String.prototype.toString; astring=new String(0); astring.toString = tostr; astring.toString()" ); + array[item++] = new TestCase( SECTION, + "var tostr=String.prototype.toString; astring=new String('hello'); astring.toString = tostr; astring.toString()", + "hello", + "var tostr=String.prototype.toString; astring=new String('hello'); astring.toString = tostr; astring.toString()" ); + array[item++] = new TestCase( SECTION, + "var tostr=String.prototype.toString; astring=new String(''); astring.toString = tostr; astring.toString()", + "", + "var tostr=String.prototype.toString; astring=new String(''); astring.toString = tostr; astring.toString()" ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.2.js new file mode 100644 index 00000000000..8779e33cfde --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.2.js @@ -0,0 +1,92 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.2.js + ECMA Section: 15.5.4.2 String.prototype.toString + + Description: + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.5.4.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.tostring"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "String.prototype.toString.__proto__", Function.prototype, String.prototype.toString.__proto__ ); + array[item++] = new TestCase( SECTION, + "String.prototype.toString() == String.prototype.valueOf()", + true, + String.prototype.toString() == String.prototype.valueOf() ); + + array[item++] = new TestCase( SECTION, "String.prototype.toString()", "", String.prototype.toString() ); + array[item++] = new TestCase( SECTION, "String.prototype.toString.length", 0, String.prototype.toString.length ); + + + array[item++] = new TestCase( SECTION, + "TESTSTRING = new String();TESTSTRING.valueOf() == TESTSTRING.toString()", + true, + eval("TESTSTRING = new String();TESTSTRING.valueOf() == TESTSTRING.toString()") ); + array[item++] = new TestCase( SECTION, + "TESTSTRING = new String(true);TESTSTRING.valueOf() == TESTSTRING.toString()", + true, + eval("TESTSTRING = new String(true);TESTSTRING.valueOf() == TESTSTRING.toString()") ); + array[item++] = new TestCase( SECTION, + "TESTSTRING = new String(false);TESTSTRING.valueOf() == TESTSTRING.toString()", + true, + eval("TESTSTRING = new String(false);TESTSTRING.valueOf() == TESTSTRING.toString()") ); + array[item++] = new TestCase( SECTION, + "TESTSTRING = new String(Math.PI);TESTSTRING.valueOf() == TESTSTRING.toString()", + true, + eval("TESTSTRING = new String(Math.PI);TESTSTRING.valueOf() == TESTSTRING.toString()") ); + array[item++] = new TestCase( SECTION, + "TESTSTRING = new String();TESTSTRING.valueOf() == TESTSTRING.toString()", + true, + eval("TESTSTRING = new String();TESTSTRING.valueOf() == TESTSTRING.toString()") ); + + return ( array ); +} +function test( array ) { + for ( ; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + + stopTest(); + + // all tests must return an array of TestCase objects + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.3-1.js new file mode 100644 index 00000000000..d55c4375a82 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.3-1.js @@ -0,0 +1,70 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.3-1.js + ECMA Section: 15.5.4.3 String.prototype.valueOf() + + Description: Returns this string value. + + The valueOf function is not generic; it generates a + runtime error if its this value is not a String object. + Therefore it connot be transferred to the other kinds of + objects for use as a method. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + + var SECTION = "15.5.4.3-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.valueOf"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "String.prototype.valueOf.length", 0, String.prototype.valueOf.length ); + + array[item++] = new TestCase( SECTION, "String.prototype.valueOf()", "", String.prototype.valueOf() ); + array[item++] = new TestCase( SECTION, "(new String()).valueOf()", "", (new String()).valueOf() ); + array[item++] = new TestCase( SECTION, "(new String(\"\")).valueOf()", "", (new String("")).valueOf() ); + array[item++] = new TestCase( SECTION, "(new String( String() )).valueOf()","", (new String(String())).valueOf() ); + array[item++] = new TestCase( SECTION, "(new String( \"h e l l o\" )).valueOf()", "h e l l o", (new String("h e l l o")).valueOf() ); + array[item++] = new TestCase( SECTION, "(new String( 0 )).valueOf()", "0", (new String(0)).valueOf() ); + return ( array ); +} +function test( array ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.3-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.3-2.js new file mode 100644 index 00000000000..21d3407e2d4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.3-2.js @@ -0,0 +1,89 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.3-2.js + ECMA Section: 15.5.4.3 String.prototype.valueOf() + + Description: Returns this string value. + + The valueOf function is not generic; it generates a + runtime error if its this value is not a String object. + Therefore it connot be transferred to the other kinds of + objects for use as a method. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + + + var SECTION = "15.5.4.3-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.valueOf"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval(testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "var valof=String.prototype.valueOf; astring=new String(); astring.valueOf = valof; astring.valof()", + "", + "var valof=String.prototype.valueOf; astring=new String(); astring.valueOf = valof; astring.valueOf()" ); + array[item++] = new TestCase( SECTION, + "var valof=String.prototype.valueOf; astring=new String(0); astring.valueOf = valof; astring.valof()", + "0", + "var valof=String.prototype.valueOf; astring=new String(0); astring.valueOf = valof; astring.valueOf()" ); + array[item++] = new TestCase( SECTION, + "var valof=String.prototype.valueOf; astring=new String('hello'); astring.valueOf = valof; astring.valof()", + "hello", + "var valof=String.prototype.valueOf; astring=new String('hello'); astring.valueOf = valof; astring.valueOf()" ); + array[item++] = new TestCase( SECTION, + "var valof=String.prototype.valueOf; astring=new String(''); astring.valueOf = valof; astring.valof()", + "", + "var valof=String.prototype.valueOf; astring=new String(''); astring.valueOf = valof; astring.valueOf()" ); +/* + array[item++] = new TestCase( SECTION, + "var valof=String.prototype.valueOf; astring=new Number(); astring.valueOf = valof; astring.valof()", + "error", + "var valof=String.prototype.valueOf; astring=new Number(); astring.valueOf = valof; astring.valueOf()" ); +*/ + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.3-3-n.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.3-3-n.js new file mode 100644 index 00000000000..f7c420abdde --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.3-3-n.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.3-3-n.js + ECMA Section: 15.5.4.3 String.prototype.valueOf() + + Description: Returns this string value. + + The valueOf function is not generic; it generates a + runtime error if its this value is not a String object. + Therefore it connot be transferred to the other kinds of + objects for use as a method. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + + + var SECTION = "15.5.4.3-3-n"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.valueOf"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].actual = eval(testcases[tc].actual ); + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "var valof=String.prototype.valueOf; astring=new Number(); astring.valueOf = valof; astring.valof()", + "error", + "var valof=String.prototype.valueOf; astring=new Number(); astring.valueOf = valof; astring.valueOf()" ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.4-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.4-1.js new file mode 100644 index 00000000000..e0dc042a773 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.4-1.js @@ -0,0 +1,87 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.4-1.js + ECMA Section: 15.5.4.4 String.prototype.charAt(pos) + Description: Returns a string containing the character at position + pos in the string. If there is no character at that + string, the result is the empty string. The result is + a string value, not a String object. + + When the charAt method is called with one argument, + pos, the following steps are taken: + 1. Call ToString, with this value as its argument + 2. Call ToInteger pos + + In this test, this is a String, pos is an integer, and + all pos are in range. + + Author: christine@netscape.com + Date: 2 october 1997 +*/ + var SECTION = "15.5.4.4-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.charAt"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var TEST_STRING = new String( " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" ); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + for ( i = 0x0020; i < 0x007e; i++, item++) { + array[item] = new TestCase( SECTION, + "TEST_STRING.charAt("+item+")", + String.fromCharCode( i ), + TEST_STRING.charAt( item ) ); + } + for ( i = 0x0020; i < 0x007e; i++, item++) { + array[item] = new TestCase( SECTION, + "TEST_STRING.charAt("+item+") == TEST_STRING.substring( "+item +", "+ (item+1) + ")", + true, + TEST_STRING.charAt( item ) == TEST_STRING.substring( item, item+1 ) + ); + } + array[item++] = new TestCase( SECTION, "String.prototype.charAt.length", 1, String.prototype.charAt.length ); + + return array; +} +function test() { + writeLineToLog( "TEST_STRING = new String(\" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\")" ); + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value " + } + stopTest(); + + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.4-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.4-2.js new file mode 100644 index 00000000000..0ca8fb256c1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.4-2.js @@ -0,0 +1,141 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.4-1.js + ECMA Section: 15.5.4.4 String.prototype.charAt(pos) + Description: Returns a string containing the character at position + pos in the string. If there is no character at that + string, the result is the empty string. The result is + a string value, not a String object. + + When the charAt method is called with one argument, + pos, the following steps are taken: + 1. Call ToString, with this value as its argument + 2. Call ToInteger pos + 3. Compute the number of characters in Result(1) + 4. If Result(2) is less than 0 is or not less than + Result(3), return the empty string + 5. Return a string of length 1 containing one character + from result (1), the character at position Result(2). + + Note that the charAt function is intentionally generic; + it does not require that its this value be a String + object. Therefore it can be transferred to other kinds + of objects for use as a method. + + Author: christine@netscape.com + Date: 2 october 1997 +*/ + var SECTION = "15.5.4.4-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.charAt"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(0)", "t", eval("x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(0)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(1)", "r", eval("x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(1)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(2)", "u", eval("x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(2)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(3)", "e", eval("x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(3)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(4)", "", eval("x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(4)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(-1)", "", eval("x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(-1)") ); + + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(true)", "r", eval("x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(true)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(false)", "t", eval("x = new Boolean(true); x.charAt=String.prototype.charAt;x.charAt(false)") ); + + array[item++] = new TestCase( SECTION, "x = new String(); x.charAt(0)", "", eval("x=new String();x.charAt(0)") ); + array[item++] = new TestCase( SECTION, "x = new String(); x.charAt(1)", "", eval("x=new String();x.charAt(1)") ); + array[item++] = new TestCase( SECTION, "x = new String(); x.charAt(-1)", "", eval("x=new String();x.charAt(-1)") ); + + array[item++] = new TestCase( SECTION, "x = new String(); x.charAt(NaN)", "", eval("x=new String();x.charAt(Number.NaN)") ); + array[item++] = new TestCase( SECTION, "x = new String(); x.charAt(Number.POSITIVE_INFINITY)", "", eval("x=new String();x.charAt(Number.POSITIVE_INFINITY)") ); + array[item++] = new TestCase( SECTION, "x = new String(); x.charAt(Number.NEGATIVE_INFINITY)", "", eval("x=new String();x.charAt(Number.NEGATIVE_INFINITY)") ); + + array[item++] = new TestCase( SECTION, "var MYOB = new MyObject(1234567890); MYOB.charAt(0)", "1", eval("var MYOB = new MyObject(1234567890); MYOB.charAt(0)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyObject(1234567890); MYOB.charAt(1)", "2", eval("var MYOB = new MyObject(1234567890); MYOB.charAt(1)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyObject(1234567890); MYOB.charAt(2)", "3", eval("var MYOB = new MyObject(1234567890); MYOB.charAt(2)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyObject(1234567890); MYOB.charAt(3)", "4", eval("var MYOB = new MyObject(1234567890); MYOB.charAt(3)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyObject(1234567890); MYOB.charAt(4)", "5", eval("var MYOB = new MyObject(1234567890); MYOB.charAt(4)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyObject(1234567890); MYOB.charAt(5)", "6", eval("var MYOB = new MyObject(1234567890); MYOB.charAt(5)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyObject(1234567890); MYOB.charAt(6)", "7", eval("var MYOB = new MyObject(1234567890); MYOB.charAt(6)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyObject(1234567890); MYOB.charAt(7)", "8", eval("var MYOB = new MyObject(1234567890); MYOB.charAt(7)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyObject(1234567890); MYOB.charAt(8)", "9", eval("var MYOB = new MyObject(1234567890); MYOB.charAt(8)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyObject(1234567890); MYOB.charAt(9)", "0", eval("var MYOB = new MyObject(1234567890); MYOB.charAt(9)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyObject(1234567890); MYOB.charAt(10)", "", eval("var MYOB = new MyObject(1234567890); MYOB.charAt(10)") ); + + array[item++] = new TestCase( SECTION, "var MYOB = new MyObject(1234567890); MYOB.charAt(Math.PI)", "4", eval("var MYOB = new MyObject(1234567890); MYOB.charAt(Math.PI)") ); + + // MyOtherObject.toString will return "[object Object] + + array[item++] = new TestCase( SECTION, "var MYOB = new MyOtherObject(1234567890); MYOB.charAt(0)", "[", eval("var MYOB = new MyOtherObject(1234567890); MYOB.charAt(0)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyOtherObject(1234567890); MYOB.charAt(1)", "o", eval("var MYOB = new MyOtherObject(1234567890); MYOB.charAt(1)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyOtherObject(1234567890); MYOB.charAt(2)", "b", eval("var MYOB = new MyOtherObject(1234567890); MYOB.charAt(2)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyOtherObject(1234567890); MYOB.charAt(3)", "j", eval("var MYOB = new MyOtherObject(1234567890); MYOB.charAt(3)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyOtherObject(1234567890); MYOB.charAt(4)", "e", eval("var MYOB = new MyOtherObject(1234567890); MYOB.charAt(4)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyOtherObject(1234567890); MYOB.charAt(5)", "c", eval("var MYOB = new MyOtherObject(1234567890); MYOB.charAt(5)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyOtherObject(1234567890); MYOB.charAt(6)", "t", eval("var MYOB = new MyOtherObject(1234567890); MYOB.charAt(6)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyOtherObject(1234567890); MYOB.charAt(7)", " ", eval("var MYOB = new MyOtherObject(1234567890); MYOB.charAt(7)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyOtherObject(1234567890); MYOB.charAt(8)", "O", eval("var MYOB = new MyOtherObject(1234567890); MYOB.charAt(8)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyOtherObject(1234567890); MYOB.charAt(9)", "b", eval("var MYOB = new MyOtherObject(1234567890); MYOB.charAt(9)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyOtherObject(1234567890); MYOB.charAt(10)", "j", eval("var MYOB = new MyOtherObject(1234567890); MYOB.charAt(10)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyOtherObject(1234567890); MYOB.charAt(11)", "e", eval("var MYOB = new MyOtherObject(1234567890); MYOB.charAt(11)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyOtherObject(1234567890); MYOB.charAt(12)", "c", eval("var MYOB = new MyOtherObject(1234567890); MYOB.charAt(12)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyOtherObject(1234567890); MYOB.charAt(13)", "t", eval("var MYOB = new MyOtherObject(1234567890); MYOB.charAt(13)") ); + array[item++] = new TestCase( SECTION, "var MYOB = new MyOtherObject(1234567890); MYOB.charAt(14)", "]", eval("var MYOB = new MyOtherObject(1234567890); MYOB.charAt(14)") ); + + return (array ); +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) + ? "" + : "wrong value " + } + + stopTest(); + return ( testcases ); +} + +function MyObject( value ) { + this.value = value; + this.valueOf = new Function( "return this.value;" ); + this.toString = new Function( "return this.value +''" ); + this.charAt = String.prototype.charAt; +} +function MyOtherObject(value) { + this.value = value; + this.valueOf = new Function( "return this.value;" ); + this.charAt = String.prototype.charAt; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.4-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.4-3.js new file mode 100644 index 00000000000..7de67880fe0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.4-3.js @@ -0,0 +1,117 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.4-3.js + ECMA Section: 15.5.4.4 String.prototype.charAt(pos) + Description: Returns a string containing the character at position + pos in the string. If there is no character at that + string, the result is the empty string. The result is + a string value, not a String object. + + When the charAt method is called with one argument, + pos, the following steps are taken: + 1. Call ToString, with this value as its argument + 2. Call ToInteger pos + 3. Compute the number of characters in Result(1) + 4. If Result(2) is less than 0 is or not less than + Result(3), return the empty string + 5. Return a string of length 1 containing one character + from result (1), the character at position Result(2). + + Note that the charAt function is intentionally generic; + it does not require that its this value be a String + object. Therefore it can be transferred to other kinds + of objects for use as a method. + + This tests assiging charAt to a user-defined function. + + Author: christine@netscape.com + Date: 2 october 1997 +*/ + var SECTION = "15.5.4.4-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.charAt"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function MyObject (v) { + this.value = v; + this.toString = new Function( "return this.value +'';" ); + this.valueOf = new Function( "return this.value" ); + this.charAt = String.prototype.charAt; +} +function getTestCases() { + var array = new Array(); + var item = 0; + + var foo = new MyObject('hello'); + + + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello'); ", "h", foo.charAt(0) ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello'); ", "e", foo.charAt(1) ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello'); ", "l", foo.charAt(2) ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello'); ", "l", foo.charAt(3) ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello'); ", "o", foo.charAt(4) ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello'); ", "", foo.charAt(-1) ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello'); ", "", foo.charAt(5) ); + + var boo = new MyObject(true); + + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true); ", "t", boo.charAt(0) ); + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true); ", "r", boo.charAt(1) ); + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true); ", "u", boo.charAt(2) ); + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true); ", "e", boo.charAt(3) ); + + var noo = new MyObject( Math.PI ); + + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI); ", "3", noo.charAt(0) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI); ", ".", noo.charAt(1) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI); ", "1", noo.charAt(2) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI); ", "4", noo.charAt(3) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI); ", "1", noo.charAt(4) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI); ", "5", noo.charAt(5) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI); ", "9", noo.charAt(6) ); + + return array; +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) + ? "" + : "wrong value " + } + stopTest(); + + // all tests must return a boolean value + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.4-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.4-4.js new file mode 100644 index 00000000000..69ee2e54eb8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.4-4.js @@ -0,0 +1,159 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.4-4.js + ECMA Section: 15.5.4.4 String.prototype.charAt(pos) + Description: Returns a string containing the character at position + pos in the string. If there is no character at that + string, the result is the empty string. The result is + a string value, not a String object. + + When the charAt method is called with one argument, + pos, the following steps are taken: + 1. Call ToString, with this value as its argument + 2. Call ToInteger pos + 3. Compute the number of characters in Result(1) + 4. If Result(2) is less than 0 is or not less than + Result(3), return the empty string + 5. Return a string of length 1 containing one character + from result (1), the character at position Result(2). + + Note that the charAt function is intentionally generic; + it does not require that its this value be a String + object. Therefore it can be transferred to other kinds + of objects for use as a method. + + This tests assiging charAt to primitive types.. + + Author: christine@netscape.com + Date: 2 october 1997 +*/ + var SECTION = "15.5.4.4-4"; + var VERSION = "ECMA_2"; + startTest(); + var TITLE = "String.prototype.charAt"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; +/* + array[item++] = new TestCase( SECTION, "x = null; x.__proto.charAt = String.prototype.charAt; x.charAt(0)", "n", eval("x=null; x.__proto__.charAt = String.prototype.charAt; x.charAt(0)") ); + array[item++] = new TestCase( SECTION, "x = null; x.__proto.charAt = String.prototype.charAt; x.charAt(1)", "u", eval("x=null; x.__proto__.charAt = String.prototype.charAt; x.charAt(1)") ); + array[item++] = new TestCase( SECTION, "x = null; x.__proto.charAt = String.prototype.charAt; x.charAt(2)", "l", eval("x=null; x.__proto__.charAt = String.prototype.charAt; x.charAt(2)") ); + array[item++] = new TestCase( SECTION, "x = null; x.__proto.charAt = String.prototype.charAt; x.charAt(3)", "l", eval("x=null; x.__proto__.charAt = String.prototype.charAt; x.charAt(3)") ); + + array[item++] = new TestCase( SECTION, "x = undefined; x.__proto.charAt = String.prototype.charAt; x.charAt(0)", "u", eval("x=undefined; x.__proto__.charAt = String.prototype.charAt; x.charAt(0)") ); + array[item++] = new TestCase( SECTION, "x = undefined; x.__proto.charAt = String.prototype.charAt; x.charAt(1)", "n", eval("x=undefined; x.__proto__.charAt = String.prototype.charAt; x.charAt(1)") ); + array[item++] = new TestCase( SECTION, "x = undefined; x.__proto.charAt = String.prototype.charAt; x.charAt(2)", "d", eval("x=undefined; x.__proto__.charAt = String.prototype.charAt; x.charAt(2)") ); + array[item++] = new TestCase( SECTION, "x = undefined; x.__proto.charAt = String.prototype.charAt; x.charAt(3)", "e", eval("x=undefined; x.__proto__.charAt = String.prototype.charAt; x.charAt(3)") ); +*/ + array[item++] = new TestCase( SECTION, "x = false; x.__proto.charAt = String.prototype.charAt; x.charAt(0)", "f", eval("x=false; x.__proto__.charAt = String.prototype.charAt; x.charAt(0)") ); + array[item++] = new TestCase( SECTION, "x = false; x.__proto.charAt = String.prototype.charAt; x.charAt(1)", "a", eval("x=false; x.__proto__.charAt = String.prototype.charAt; x.charAt(1)") ); + array[item++] = new TestCase( SECTION, "x = false; x.__proto.charAt = String.prototype.charAt; x.charAt(2)", "l", eval("x=false; x.__proto__.charAt = String.prototype.charAt; x.charAt(2)") ); + array[item++] = new TestCase( SECTION, "x = false; x.__proto.charAt = String.prototype.charAt; x.charAt(3)", "s", eval("x=false; x.__proto__.charAt = String.prototype.charAt; x.charAt(3)") ); + array[item++] = new TestCase( SECTION, "x = false; x.__proto.charAt = String.prototype.charAt; x.charAt(4)", "e", eval("x=false; x.__proto__.charAt = String.prototype.charAt; x.charAt(4)") ); + + array[item++] = new TestCase( SECTION, "x = true; x.__proto.charAt = String.prototype.charAt; x.charAt(0)", "t", eval("x=true; x.__proto__.charAt = String.prototype.charAt; x.charAt(0)") ); + array[item++] = new TestCase( SECTION, "x = true; x.__proto.charAt = String.prototype.charAt; x.charAt(1)", "r", eval("x=true; x.__proto__.charAt = String.prototype.charAt; x.charAt(1)") ); + array[item++] = new TestCase( SECTION, "x = true; x.__proto.charAt = String.prototype.charAt; x.charAt(2)", "u", eval("x=true; x.__proto__.charAt = String.prototype.charAt; x.charAt(2)") ); + array[item++] = new TestCase( SECTION, "x = true; x.__proto.charAt = String.prototype.charAt; x.charAt(3)", "e", eval("x=true; x.__proto__.charAt = String.prototype.charAt; x.charAt(3)") ); + + array[item++] = new TestCase( SECTION, "x = NaN; x.__proto.charAt = String.prototype.charAt; x.charAt(0)", "N", eval("x=NaN; x.__proto__.charAt = String.prototype.charAt; x.charAt(0)") ); + array[item++] = new TestCase( SECTION, "x = NaN; x.__proto.charAt = String.prototype.charAt; x.charAt(1)", "a", eval("x=NaN; x.__proto__.charAt = String.prototype.charAt; x.charAt(1)") ); + array[item++] = new TestCase( SECTION, "x = NaN; x.__proto.charAt = String.prototype.charAt; x.charAt(2)", "N", eval("x=NaN; x.__proto__.charAt = String.prototype.charAt; x.charAt(2)") ); + + array[item++] = new TestCase( SECTION, "x = 123; x.__proto.charAt = String.prototype.charAt; x.charAt(0)", "1", eval("x=123; x.__proto__.charAt = String.prototype.charAt; x.charAt(0)") ); + array[item++] = new TestCase( SECTION, "x = 123; x.__proto.charAt = String.prototype.charAt; x.charAt(1)", "2", eval("x=123; x.__proto__.charAt = String.prototype.charAt; x.charAt(1)") ); + array[item++] = new TestCase( SECTION, "x = 123; x.__proto.charAt = String.prototype.charAt; x.charAt(2)", "3", eval("x=123; x.__proto__.charAt = String.prototype.charAt; x.charAt(2)") ); + + + array[item++] = new TestCase( SECTION, "x = new Array(1,2,3); x.charAt = String.prototype.charAt; x.charAt(0)", "1", eval("x=new Array(1,2,3); x.charAt = String.prototype.charAt; x.charAt(0)") ); + array[item++] = new TestCase( SECTION, "x = new Array(1,2,3); x.charAt = String.prototype.charAt; x.charAt(1)", ",", eval("x=new Array(1,2,3); x.charAt = String.prototype.charAt; x.charAt(1)") ); + array[item++] = new TestCase( SECTION, "x = new Array(1,2,3); x.charAt = String.prototype.charAt; x.charAt(2)", "2", eval("x=new Array(1,2,3); x.charAt = String.prototype.charAt; x.charAt(2)") ); + array[item++] = new TestCase( SECTION, "x = new Array(1,2,3); x.charAt = String.prototype.charAt; x.charAt(3)", ",", eval("x=new Array(1,2,3); x.charAt = String.prototype.charAt; x.charAt(3)") ); + array[item++] = new TestCase( SECTION, "x = new Array(1,2,3); x.charAt = String.prototype.charAt; x.charAt(4)", "3", eval("x=new Array(1,2,3); x.charAt = String.prototype.charAt; x.charAt(4)") ); + + array[item++] = new TestCase( SECTION, "x = new Array(); x.charAt = String.prototype.charAt; x.charAt(0)", "", eval("x = new Array(); x.charAt = String.prototype.charAt; x.charAt(0)") ); + + array[item++] = new TestCase( SECTION, "x = new Number(123); x.charAt = String.prototype.charAt; x.charAt(0)", "1", eval("x=new Number(123); x.charAt = String.prototype.charAt; x.charAt(0)") ); + array[item++] = new TestCase( SECTION, "x = new Number(123); x.charAt = String.prototype.charAt; x.charAt(1)", "2", eval("x=new Number(123); x.charAt = String.prototype.charAt; x.charAt(1)") ); + array[item++] = new TestCase( SECTION, "x = new Number(123); x.charAt = String.prototype.charAt; x.charAt(2)", "3", eval("x=new Number(123); x.charAt = String.prototype.charAt; x.charAt(2)") ); + + array[item++] = new TestCase( SECTION, "x = new Object(); x.charAt = String.prototype.charAt; x.charAt(0)", "[", eval("x=new Object(); x.charAt = String.prototype.charAt; x.charAt(0)") ); + array[item++] = new TestCase( SECTION, "x = new Object(); x.charAt = String.prototype.charAt; x.charAt(1)", "o", eval("x=new Object(); x.charAt = String.prototype.charAt; x.charAt(1)") ); + array[item++] = new TestCase( SECTION, "x = new Object(); x.charAt = String.prototype.charAt; x.charAt(2)", "b", eval("x=new Object(); x.charAt = String.prototype.charAt; x.charAt(2)") ); + array[item++] = new TestCase( SECTION, "x = new Object(); x.charAt = String.prototype.charAt; x.charAt(3)", "j", eval("x=new Object(); x.charAt = String.prototype.charAt; x.charAt(3)") ); + array[item++] = new TestCase( SECTION, "x = new Object(); x.charAt = String.prototype.charAt; x.charAt(4)", "e", eval("x=new Object(); x.charAt = String.prototype.charAt; x.charAt(4)") ); + array[item++] = new TestCase( SECTION, "x = new Object(); x.charAt = String.prototype.charAt; x.charAt(5)", "c", eval("x=new Object(); x.charAt = String.prototype.charAt; x.charAt(5)") ); + array[item++] = new TestCase( SECTION, "x = new Object(); x.charAt = String.prototype.charAt; x.charAt(6)", "t", eval("x=new Object(); x.charAt = String.prototype.charAt; x.charAt(6)") ); + array[item++] = new TestCase( SECTION, "x = new Object(); x.charAt = String.prototype.charAt; x.charAt(7)", " ", eval("x=new Object(); x.charAt = String.prototype.charAt; x.charAt(7)") ); + array[item++] = new TestCase( SECTION, "x = new Object(); x.charAt = String.prototype.charAt; x.charAt(8)", "O", eval("x=new Object(); x.charAt = String.prototype.charAt; x.charAt(8)") ); + array[item++] = new TestCase( SECTION, "x = new Object(); x.charAt = String.prototype.charAt; x.charAt(9)", "b", eval("x=new Object(); x.charAt = String.prototype.charAt; x.charAt(9)") ); + array[item++] = new TestCase( SECTION, "x = new Object(); x.charAt = String.prototype.charAt; x.charAt(10)", "j", eval("x=new Object(); x.charAt = String.prototype.charAt; x.charAt(10)") ); + array[item++] = new TestCase( SECTION, "x = new Object(); x.charAt = String.prototype.charAt; x.charAt(11)", "e", eval("x=new Object(); x.charAt = String.prototype.charAt; x.charAt(11)") ); + array[item++] = new TestCase( SECTION, "x = new Object(); x.charAt = String.prototype.charAt; x.charAt(12)", "c", eval("x=new Object(); x.charAt = String.prototype.charAt; x.charAt(12)") ); + array[item++] = new TestCase( SECTION, "x = new Object(); x.charAt = String.prototype.charAt; x.charAt(13)", "t", eval("x=new Object(); x.charAt = String.prototype.charAt; x.charAt(13)") ); + array[item++] = new TestCase( SECTION, "x = new Object(); x.charAt = String.prototype.charAt; x.charAt(14)", "]", eval("x=new Object(); x.charAt = String.prototype.charAt; x.charAt(14)") ); + + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(0)", "[", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(0)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(1)", "o", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(1)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(2)", "b", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(2)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(3)", "j", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(3)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(4)", "e", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(4)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(5)", "c", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(5)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(6)", "t", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(6)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(7)", " ", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(7)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(8)", "F", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(8)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(9)", "u", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(9)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(10)", "n", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(10)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(11)", "c", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(11)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(12)", "t", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(12)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(13)", "i", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(13)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(14)", "o", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(14)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(15)", "n", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(15)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(16)", "]", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(16)") ); + array[item++] = new TestCase( SECTION, "x = new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(17)", "", eval("x=new Function(); x.toString = Object.prototype.toString; x.charAt = String.prototype.charAt; x.charAt(17)") ); + + + return array; +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) + ? "" + : "wrong value " + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-1.js new file mode 100644 index 00000000000..62d42b487e5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-1.js @@ -0,0 +1,89 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.5.1.js + ECMA Section: 15.5.4.5 String.prototype.charCodeAt(pos) + Description: Returns a number (a nonnegative integer less than 2^16) + representing the Unicode encoding of the character at + position pos in this string. If there is no character + at that position, the number is NaN. + + When the charCodeAt method is called with one argument + pos, the following steps are taken: + 1. Call ToString, giving it the theis value as its + argument + 2. Call ToInteger(pos) + 3. Compute the number of characters in result(1). + 4. If Result(2) is less than 0 or is not less than + Result(3), return NaN. + 5. Return a value of Number type, of positive sign, whose + magnitude is the Unicode encoding of one character + from result 1, namely the characer at position Result + (2), where the first character in Result(1) is + considered to be at position 0. + + Note that the charCodeAt funciton is intentionally + generic; it does not require that its this value be a + String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 2 october 1997 +*/ + var SECTION = "15.5.4.5-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.charCodeAt"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var TEST_STRING = new String( " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" ); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + + for ( j = 0, i = 0x0020; i < 0x007e; i++, j++ ) { + array[j] = new TestCase( SECTION, "TEST_STRING.charCodeAt("+j+")", i, TEST_STRING.charCodeAt( j ) ); + } + + item = array.length; + + array[item++] = new TestCase( SECTION, 'TEST_STRING.charCodeAt('+i+')', NaN, TEST_STRING.charCodeAt( i ) ); + return array; +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value " + } + stopTest(); + + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-2.js new file mode 100644 index 00000000000..25706875eef --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-2.js @@ -0,0 +1,128 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.5.1.js + ECMA Section: 15.5.4.5 String.prototype.charCodeAt(pos) + Description: Returns a number (a nonnegative integer less than 2^16) + representing the Unicode encoding of the character at + position pos in this string. If there is no character + at that position, the number is NaN. + + When the charCodeAt method is called with one argument + pos, the following steps are taken: + 1. Call ToString, giving it the theis value as its + argument + 2. Call ToInteger(pos) + 3. Compute the number of characters in result(1). + 4. If Result(2) is less than 0 or is not less than + Result(3), return NaN. + 5. Return a value of Number type, of positive sign, whose + magnitude is the Unicode encoding of one character + from result 1, namely the characer at position Result + (2), where the first character in Result(1) is + considered to be at position 0. + + Note that the charCodeAt funciton is intentionally + generic; it does not require that its this value be a + String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 2 october 1997 +*/ + var SECTION = "15.5.4.5-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.charCodeAt"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var TEST_STRING = new String( " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" ); + + var testcases = getTestCases(); + + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var x; + + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(0)", 0x0074, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(0)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(1)", 0x0072, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(1)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(2)", 0x0075, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(2)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(3)", 0x0065, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(3)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(4)", Number.NaN, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(4)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(-1)", Number.NaN, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(-1)") ); + + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(true)", 0x0072, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(true)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(false)", 0x0074, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(false)") ); + + array[item++] = new TestCase( SECTION, "x = new String(); x.charCodeAt(0)", Number.NaN, eval("x=new String();x.charCodeAt(0)") ); + array[item++] = new TestCase( SECTION, "x = new String(); x.charCodeAt(1)", Number.NaN, eval("x=new String();x.charCodeAt(1)") ); + array[item++] = new TestCase( SECTION, "x = new String(); x.charCodeAt(-1)", Number.NaN, eval("x=new String();x.charCodeAt(-1)") ); + + array[item++] = new TestCase( SECTION, "x = new String(); x.charCodeAt(NaN)", Number.NaN, eval("x=new String();x.charCodeAt(Number.NaN)") ); + array[item++] = new TestCase( SECTION, "x = new String(); x.charCodeAt(Number.POSITIVE_INFINITY)", Number.NaN, eval("x=new String();x.charCodeAt(Number.POSITIVE_INFINITY)") ); + array[item++] = new TestCase( SECTION, "x = new String(); x.charCodeAt(Number.NEGATIVE_INFINITY)", Number.NaN, eval("x=new String();x.charCodeAt(Number.NEGATIVE_INFINITY)") ); + + array[item++] = new TestCase( SECTION, "x = new Array(1,2,3); x.charCodeAt = String.prototype.charCodeAt; x.charCodeAt(0)", 0x0031, eval("x = new Array(1,2,3); x.charCodeAt = String.prototype.charCodeAt; x.charCodeAt(0)") ); + array[item++] = new TestCase( SECTION, "x = new Array(1,2,3); x.charCodeAt = String.prototype.charCodeAt; x.charCodeAt(1)", 0x002C, eval("x = new Array(1,2,3); x.charCodeAt = String.prototype.charCodeAt; x.charCodeAt(1)") ); + array[item++] = new TestCase( SECTION, "x = new Array(1,2,3); x.charCodeAt = String.prototype.charCodeAt; x.charCodeAt(2)", 0x0032, eval("x = new Array(1,2,3); x.charCodeAt = String.prototype.charCodeAt; x.charCodeAt(2)") ); + array[item++] = new TestCase( SECTION, "x = new Array(1,2,3); x.charCodeAt = String.prototype.charCodeAt; x.charCodeAt(3)", 0x002C, eval("x = new Array(1,2,3); x.charCodeAt = String.prototype.charCodeAt; x.charCodeAt(3)") ); + array[item++] = new TestCase( SECTION, "x = new Array(1,2,3); x.charCodeAt = String.prototype.charCodeAt; x.charCodeAt(4)", 0x0033, eval("x = new Array(1,2,3); x.charCodeAt = String.prototype.charCodeAt; x.charCodeAt(4)") ); + array[item++] = new TestCase( SECTION, "x = new Array(1,2,3); x.charCodeAt = String.prototype.charCodeAt; x.charCodeAt(5)", NaN, eval("x = new Array(1,2,3); x.charCodeAt = String.prototype.charCodeAt; x.charCodeAt(5)") ); + + array[item++] = new TestCase( SECTION, "x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(0)", 0x005B, eval("x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(0)") ); + array[item++] = new TestCase( SECTION, "x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(1)", 0x006F, eval("x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(1)") ); + array[item++] = new TestCase( SECTION, "x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(2)", 0x0062, eval("x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(2)") ); + array[item++] = new TestCase( SECTION, "x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(3)", 0x006A, eval("x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(3)") ); + array[item++] = new TestCase( SECTION, "x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(4)", 0x0065, eval("x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(4)") ); + array[item++] = new TestCase( SECTION, "x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(5)", 0x0063, eval("x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(5)") ); + array[item++] = new TestCase( SECTION, "x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(6)", 0x0074, eval("x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(6)") ); + + array[item++] = new TestCase( SECTION, "x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(7)", 0x0020, eval("x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(7)") ); + + array[item++] = new TestCase( SECTION, "x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(8)", 0x004F, eval("x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(8)") ); + array[item++] = new TestCase( SECTION, "x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(9)", 0x0062, eval("x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(9)") ); + array[item++] = new TestCase( SECTION, "x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(10)", 0x006A, eval("x = new Function( 'this.charCodeAt = String.prototype.charCodeAt' ); f = new x(); f.charCodeAt(10)") ); + + return (array ); +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) + ? "" + : "wrong value " + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-3.js new file mode 100644 index 00000000000..20d380bda62 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-3.js @@ -0,0 +1,136 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.5-3.js + ECMA Section: 15.5.4.5 String.prototype.charCodeAt(pos) + Description: Returns a number (a nonnegative integer less than 2^16) + representing the Unicode encoding of the character at + position pos in this string. If there is no character + at that position, the number is NaN. + + When the charCodeAt method is called with one argument + pos, the following steps are taken: + 1. Call ToString, giving it the theis value as its + argument + 2. Call ToInteger(pos) + 3. Compute the number of characters in result(1). + 4. If Result(2) is less than 0 or is not less than + Result(3), return NaN. + 5. Return a value of Number type, of positive sign, whose + magnitude is the Unicode encoding of one character + from result 1, namely the characer at position Result + (2), where the first character in Result(1) is + considered to be at position 0. + + Note that the charCodeAt funciton is intentionally + generic; it does not require that its this value be a + String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 2 october 1997 +*/ + var SECTION = "15.5.4.5-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.charCodeAt"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var TEST_STRING = new String( " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" ); + + var testcases = getTestCases(); + test(); + +function MyObject (v) { + this.value = v; + this.toString = new Function ( "return this.value +\"\"" ); + this.charCodeAt = String.prototype.charCodeAt; +} + +function getTestCases() { + var array = new Array(); + var item = 0; + + var foo = new MyObject('hello'); + + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello');foo.charCodeAt(0)", 0x0068, foo.charCodeAt(0) ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello');foo.charCodeAt(1)", 0x0065, foo.charCodeAt(1) ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello');foo.charCodeAt(2)", 0x006c, foo.charCodeAt(2) ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello');foo.charCodeAt(3)", 0x006c, foo.charCodeAt(3) ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello');foo.charCodeAt(4)", 0x006f, foo.charCodeAt(4) ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello');foo.charCodeAt(-1)", Number.NaN, foo.charCodeAt(-1) ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello');foo.charCodeAt(5)", Number.NaN, foo.charCodeAt(5) ); + + var boo = new MyObject(true); + + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true);boo.charCodeAt(0)", 0x0074, boo.charCodeAt(0) ); + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true);boo.charCodeAt(1)", 0x0072, boo.charCodeAt(1) ); + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true);boo.charCodeAt(2)", 0x0075, boo.charCodeAt(2) ); + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true);boo.charCodeAt(3)", 0x0065, boo.charCodeAt(3) ); + + var noo = new MyObject( Math.PI ); + + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI);noo.charCodeAt(0)", 0x0033, noo.charCodeAt(0) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI);noo.charCodeAt(1)", 0x002E, noo.charCodeAt(1) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI);noo.charCodeAt(2)", 0x0031, noo.charCodeAt(2) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI);noo.charCodeAt(3)", 0x0034, noo.charCodeAt(3) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI);noo.charCodeAt(4)", 0x0031, noo.charCodeAt(4) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI);noo.charCodeAt(5)", 0x0035, noo.charCodeAt(5) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI);noo.charCodeAt(6)", 0x0039, noo.charCodeAt(6) ); + + var noo = new MyObject( null ); + + array[item++] = new TestCase( SECTION, "var noo = new MyObject(null);noo.charCodeAt(0)", 0x006E, noo.charCodeAt(0) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(null);noo.charCodeAt(1)", 0x0075, noo.charCodeAt(1) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(null);noo.charCodeAt(2)", 0x006C, noo.charCodeAt(2) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(null);noo.charCodeAt(3)", 0x006C, noo.charCodeAt(3) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(null);noo.charCodeAt(4)", NaN, noo.charCodeAt(4) ); + + var noo = new MyObject( void 0 ); + + array[item++] = new TestCase( SECTION, "var noo = new MyObject(void 0);noo.charCodeAt(0)", 0x0075, noo.charCodeAt(0) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(void 0);noo.charCodeAt(1)", 0x006E, noo.charCodeAt(1) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(void 0);noo.charCodeAt(2)", 0x0064, noo.charCodeAt(2) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(void 0);noo.charCodeAt(3)", 0x0065, noo.charCodeAt(3) ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(void 0);noo.charCodeAt(4)", 0x0066, noo.charCodeAt(4) ); + + return array; +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) + ? "" + : "wrong value "; + + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-4.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-4.js new file mode 100644 index 00000000000..cd99bc2c192 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-4.js @@ -0,0 +1,80 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.5-4.js + ECMA Section: 15.5.4.5 String.prototype.charCodeAt(pos) + + Description: Returns a nonnegative integer less than 2^16. + + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var VERSION = "0697"; + startTest(); + var SECTION = "15.5.4.5-4"; + + writeHeaderToLog( SECTION + " String.prototype.charCodeAt(pos)" ); + var tc= 0; + var testcases = getTestCases(); + +// all tests must call a function that returns an array of TestCase objects. + test(); + +function getTestCases() { + var array = new Array(); + var MAXCHARCODE = Math.pow(2,16); + var item=0, CHARCODE; + + for ( CHARCODE=0; CHARCODE <256; CHARCODE++ ) { + array[item++] = new TestCase( SECTION, + "(String.fromCharCode("+CHARCODE+")).charCodeAt(0)", + CHARCODE, + (String.fromCharCode(CHARCODE)).charCodeAt(0) ); + } + for ( CHARCODE=256; CHARCODE < 65536; CHARCODE+=999 ) { + array[item++] = new TestCase( SECTION, + "(String.fromCharCode("+CHARCODE+")).charCodeAt(0)", + CHARCODE, + (String.fromCharCode(CHARCODE)).charCodeAt(0) ); + } + + array[item++] = new TestCase( SECTION, "(String.fromCharCode(65535)).charCodeAt(0)", 65535, (String.fromCharCode(65535)).charCodeAt(0) ); + + return ( array ); +} +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + + } + + stopTest(); + + // all tests must return an array of TestCase objects + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-5.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-5.js new file mode 100644 index 00000000000..091f5e84342 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-5.js @@ -0,0 +1,111 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.5.1.js + ECMA Section: 15.5.4.5 String.prototype.charCodeAt(pos) + Description: Returns a number (a nonnegative integer less than 2^16) + representing the Unicode encoding of the character at + position pos in this string. If there is no character + at that position, the number is NaN. + + When the charCodeAt method is called with one argument + pos, the following steps are taken: + 1. Call ToString, giving it the theis value as its + argument + 2. Call ToInteger(pos) + 3. Compute the number of characters in result(1). + 4. If Result(2) is less than 0 or is not less than + Result(3), return NaN. + 5. Return a value of Number type, of positive sign, whose + magnitude is the Unicode encoding of one character + from result 1, namely the characer at position Result + (2), where the first character in Result(1) is + considered to be at position 0. + + Note that the charCodeAt funciton is intentionally + generic; it does not require that its this value be a + String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 2 october 1997 +*/ + var SECTION = "15.5.4.5-5"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.charCodeAt"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var TEST_STRING = ""; + + for ( var i = 0x0000; i < 255; i++ ) { + TEST_STRING += String.fromCharCode( i ); + } + + + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(0)", 0x0074, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(0)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(1)", 0x0072, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(1)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(2)", 0x0075, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(2)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(3)", 0x0065, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(3)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(4)", Number.NaN, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(4)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(-1)", Number.NaN, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(-1)") ); + + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(true)", 0x0072, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(true)") ); + array[item++] = new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(false)", 0x0074, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(false)") ); + + array[item++] = new TestCase( SECTION, "x = new String(); x.charCodeAt(0)", Number.NaN, eval("x=new String();x.charCodeAt(0)") ); + array[item++] = new TestCase( SECTION, "x = new String(); x.charCodeAt(1)", Number.NaN, eval("x=new String();x.charCodeAt(1)") ); + array[item++] = new TestCase( SECTION, "x = new String(); x.charCodeAt(-1)", Number.NaN, eval("x=new String();x.charCodeAt(-1)") ); + + array[item++] = new TestCase( SECTION, "x = new String(); x.charCodeAt(NaN)", Number.NaN, eval("x=new String();x.charCodeAt(Number.NaN)") ); + array[item++] = new TestCase( SECTION, "x = new String(); x.charCodeAt(Number.POSITIVE_INFINITY)", Number.NaN, eval("x=new String();x.charCodeAt(Number.POSITIVE_INFINITY)") ); + array[item++] = new TestCase( SECTION, "x = new String(); x.charCodeAt(Number.NEGATIVE_INFINITY)", Number.NaN, eval("x=new String();x.charCodeAt(Number.NEGATIVE_INFINITY)") ); + + for ( var j = 0; j < 255; j++ ) { + array[item++] = new TestCase( SECTION, "TEST_STRING.charCodeAt("+j+")", j, TEST_STRING.charCodeAt(j) ); + } + return (array ); +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) + ? "" + : "wrong value " + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-6.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-6.js new file mode 100644 index 00000000000..8b7ae1892fb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.5-6.js @@ -0,0 +1,97 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.5-6.js + ECMA Section: 15.5.4.5 String.prototype.charCodeAt(pos) + Description: Returns a number (a nonnegative integer less than 2^16) + representing the Unicode encoding of the character at + position pos in this string. If there is no character + at that position, the number is NaN. + + When the charCodeAt method is called with one argument + pos, the following steps are taken: + 1. Call ToString, giving it the theis value as its + argument + 2. Call ToInteger(pos) + 3. Compute the number of characters in result(1). + 4. If Result(2) is less than 0 or is not less than + Result(3), return NaN. + 5. Return a value of Number type, of positive sign, whose + magnitude is the Unicode encoding of one character + from result 1, namely the characer at position Result + (2), where the first character in Result(1) is + considered to be at position 0. + + Note that the charCodeAt funciton is intentionally + generic; it does not require that its this value be a + String object. Therefore it can be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 2 october 1997 +*/ + var SECTION = "15.5.4.5-6"; + var VERSION = "ECMA_2"; + startTest(); + var TITLE = "String.prototype.charCodeAt"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "var obj = true; obj.__proto__.charCodeAt = String.prototype.charCodeAt; var s = ''; for ( var i = 0; i < 4; i++ ) s+= String.fromCharCode( obj.charCodeAt(i) ); s", + "true", + eval("var obj = true; obj.__proto__.charCodeAt = String.prototype.charCodeAt; var s = ''; for ( var i = 0; i < 4; i++ ) s+= String.fromCharCode( obj.charCodeAt(i) ); s") ); + + array[item++] = new TestCase( SECTION, + "var obj = 1234; obj.__proto__.charCodeAt = String.prototype.charCodeAt; var s = ''; for ( var i = 0; i < 4; i++ ) s+= String.fromCharCode( obj.charCodeAt(i) ); s", + "1234", + eval("var obj = 1234; obj.__proto__.charCodeAt = String.prototype.charCodeAt; var s = ''; for ( var i = 0; i < 4; i++ ) s+= String.fromCharCode( obj.charCodeAt(i) ); s") ); + + array[item++] = new TestCase( SECTION, + "var obj = 'hello'; obj.__proto__.charCodeAt = String.prototype.charCodeAt; var s = ''; for ( var i = 0; i < 5; i++ ) s+= String.fromCharCode( obj.charCodeAt(i) ); s", + "hello", + eval("var obj = 'hello'; obj.__proto__.charCodeAt = String.prototype.charCodeAt; var s = ''; for ( var i = 0; i < 5; i++ ) s+= String.fromCharCode( obj.charCodeAt(i) ); s") ); + return (array ); +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) + ? "" + : "wrong value " + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.6-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.6-1.js new file mode 100644 index 00000000000..ab9d7250f5b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.6-1.js @@ -0,0 +1,158 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.6-1.js + ECMA Section: 15.5.4.6 String.prototype.indexOf( searchString, pos) + Description: If the given searchString appears as a substring of the + result of converting this object to a string, at one or + more positions that are at or to the right of the + specified position, then the index of the leftmost such + position is returned; otherwise -1 is returned. If + positionis undefined or not supplied, 0 is assumed, so + as to search all of the string. + + When the indexOf method is called with two arguments, + searchString and pos, the following steps are taken: + + 1. Call ToString, giving it the this value as its + argument. + 2. Call ToString(searchString). + 3. Call ToInteger(position). (If position is undefined + or not supplied, this step produces the value 0). + 4. Compute the number of characters in Result(1). + 5. Compute min(max(Result(3), 0), Result(4)). + 6. Compute the number of characters in the string that + is Result(2). + 7. Compute the smallest possible integer k not smaller + than Result(5) such that k+Result(6) is not greater + than Result(4), and for all nonnegative integers j + less than Result(6), the character at position k+j + of Result(1) is the same as the character at position + j of Result(2); but if there is no such integer k, + then compute the value -1. + 8. Return Result(7). + + Note that the indexOf function is intentionally generic; + it does not require that its this value be a String object. + Therefore it can be transferred to other kinds of objects + for use as a method. + + Author: christine@netscape.com + Date: 2 october 1997 +*/ + var SECTION = "15.5.4.6-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.protoype.indexOf"; + + var TEST_STRING = new String( " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" ); + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var j = 0; + + for ( k = 0, i = 0x0020; i < 0x007e; i++, j++, k++ ) { + array[j] = new TestCase( SECTION, + "String.indexOf(" +String.fromCharCode(i)+ ", 0)", + k, + TEST_STRING.indexOf( String.fromCharCode(i), 0 ) ); + } + + for ( k = 0, i = 0x0020; i < 0x007e; i++, j++, k++ ) { + array[j] = new TestCase( SECTION, + "String.indexOf("+String.fromCharCode(i)+ ", "+ k +")", + k, + TEST_STRING.indexOf( String.fromCharCode(i), k ) ); + } + + for ( k = 0, i = 0x0020; i < 0x007e; i++, j++, k++ ) { + array[j] = new TestCase( SECTION, + "String.indexOf("+String.fromCharCode(i)+ ", "+k+1+")", + -1, + TEST_STRING.indexOf( String.fromCharCode(i), k+1 ) ); + } + + for ( k = 0, i = 0x0020; i < 0x007d; i++, j++, k++ ) { + array[j] = new TestCase( SECTION, + "String.indexOf("+(String.fromCharCode(i) + + String.fromCharCode(i+1)+ + String.fromCharCode(i+2)) +", "+0+")", + k, + TEST_STRING.indexOf( (String.fromCharCode(i)+ + String.fromCharCode(i+1)+ + String.fromCharCode(i+2)), + 0 ) ); + } + + for ( k = 0, i = 0x0020; i < 0x007d; i++, j++, k++ ) { + array[j] = new TestCase( SECTION, + "String.indexOf("+(String.fromCharCode(i) + + String.fromCharCode(i+1)+ + String.fromCharCode(i+2)) +", "+ k +")", + k, + TEST_STRING.indexOf( (String.fromCharCode(i)+ + String.fromCharCode(i+1)+ + String.fromCharCode(i+2)), + k ) ); + } + for ( k = 0, i = 0x0020; i < 0x007d; i++, j++, k++ ) { + array[j] = new TestCase( SECTION, + "String.indexOf("+(String.fromCharCode(i) + + String.fromCharCode(i+1)+ + String.fromCharCode(i+2)) +", "+ k+1 +")", + -1, + TEST_STRING.indexOf( (String.fromCharCode(i)+ + String.fromCharCode(i+1)+ + String.fromCharCode(i+2)), + k+1 ) ); + } + + array[j++] = new TestCase( SECTION, "String.indexOf(" +TEST_STRING + ", 0 )", 0, TEST_STRING.indexOf( TEST_STRING, 0 ) ); + array[j++] = new TestCase( SECTION, "String.indexOf(" +TEST_STRING + ", 1 )", -1, TEST_STRING.indexOf( TEST_STRING, 1 )); + + return array; +} + +function test() { + writeLineToLog( "TEST_STRING = new String(\" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\")" ); + + for ( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value " + + } + stopTest(); + + return ( testcases ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.6-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.6-2.js new file mode 100644 index 00000000000..bd1be63ec93 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.6-2.js @@ -0,0 +1,260 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.6-1.js + ECMA Section: 15.5.4.6 String.prototype.indexOf( searchString, pos) + Description: If the given searchString appears as a substring of the + result of converting this object to a string, at one or + more positions that are at or to the right of the + specified position, then the index of the leftmost such + position is returned; otherwise -1 is returned. If + positionis undefined or not supplied, 0 is assumed, so + as to search all of the string. + + When the indexOf method is called with two arguments, + searchString and pos, the following steps are taken: + + 1. Call ToString, giving it the this value as its + argument. + 2. Call ToString(searchString). + 3. Call ToInteger(position). (If position is undefined + or not supplied, this step produces the value 0). + 4. Compute the number of characters in Result(1). + 5. Compute min(max(Result(3), 0), Result(4)). + 6. Compute the number of characters in the string that + is Result(2). + 7. Compute the smallest possible integer k not smaller + than Result(5) such that k+Result(6) is not greater + than Result(4), and for all nonnegative integers j + less than Result(6), the character at position k+j + of Result(1) is the same as the character at position + j of Result(2); but if there is no such integer k, + then compute the value -1. + 8. Return Result(7). + + Note that the indexOf function is intentionally generic; + it does not require that its this value be a String object. + Therefore it can be transferred to other kinds of objects + for use as a method. + + Author: christine@netscape.com, pschwartau@netscape.com + Date: 02 October 1997 + Modified: 14 July 2002 + Reason: See http://bugzilla.mozilla.org/show_bug.cgi?id=155289 + ECMA-262 Ed.3 Section 15.5.4.7 + The length property of the indexOf method is 1 +* +*/ + var SECTION = "15.5.4.6-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.protoype.indexOf"; + var BUGNUMBER="105721"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +// the following test regresses http://scopus/bugsplat/show_bug.cgi?id=105721 + +function f() { + return this; +} +function g() { + var h = f; + return h(); +} + +function MyObject (v) { + this.value = v; + this.toString = new Function ( "return this.value +\"\""); + this.indexOf = String.prototype.indexOf; +} + +function getTestCases() { + var array = new Array(); + var item = 0; + + // regress http://scopus/bugsplat/show_bug.cgi?id=105721 + + array[item++] = new TestCase( SECTION, "function f() { return this; }; function g() { var h = f; return h(); }; g().toString()", GLOBAL, g().toString() ); + + + array[item++] = new TestCase( SECTION, "String.prototype.indexOf.length", 1, String.prototype.indexOf.length ); + array[item++] = new TestCase( SECTION, "String.prototype.indexOf.length = null; String.prototype.indexOf.length", 1, eval("String.prototype.indexOf.length = null; String.prototype.indexOf.length") ); + array[item++] = new TestCase( SECTION, "delete String.prototype.indexOf.length", false, delete String.prototype.indexOf.length ); + array[item++] = new TestCase( SECTION, "delete String.prototype.indexOf.length; String.prototype.indexOf.length", 1, eval("delete String.prototype.indexOf.length; String.prototype.indexOf.length") ); + + array[item++] = new TestCase( SECTION, "var s = new String(); s.indexOf()", -1, eval("var s = new String(); s.indexOf()") ); + + // some Unicode tests. + + // generate a test string. + + var TEST_STRING = ""; + + for ( var u = 0x00A1; u <= 0x00FF; u++ ) { + TEST_STRING += String.fromCharCode( u ); + } + + for ( var u = 0x00A1, i = 0; u <= 0x00FF; u++, i++ ) { + array[item++] = new TestCase( SECTION, + "TEST_STRING.indexOf( " + String.fromCharCode(u) + " )", + i, + TEST_STRING.indexOf( String.fromCharCode(u) ) ); + } + for ( var u = 0x00A1, i = 0; u <= 0x00FF; u++, i++ ) { + array[item++] = new TestCase( SECTION, + "TEST_STRING.indexOf( " + String.fromCharCode(u) + ", void 0 )", + i, + TEST_STRING.indexOf( String.fromCharCode(u), void 0 ) ); + } + + + + var foo = new MyObject('hello'); + + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello');foo.indexOf('h')", 0, foo.indexOf("h") ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello');foo.indexOf('e')", 1, foo.indexOf("e") ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello');foo.indexOf('l')", 2, foo.indexOf("l") ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello');foo.indexOf('l')", 2, foo.indexOf("l") ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello');foo.indexOf('o')", 4, foo.indexOf("o") ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello');foo.indexOf('X')", -1, foo.indexOf("X") ); + array[item++] = new TestCase( SECTION, "var foo = new MyObject('hello');foo.indexOf(5) ", -1, foo.indexOf(5) ); + + var boo = new MyObject(true); + + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true);boo.indexOf('t')", 0, boo.indexOf("t") ); + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true);boo.indexOf('r')", 1, boo.indexOf("r") ); + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true);boo.indexOf('u')", 2, boo.indexOf("u") ); + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true);boo.indexOf('e')", 3, boo.indexOf("e") ); + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true);boo.indexOf('true')", 0, boo.indexOf("true") ); + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true);boo.indexOf('rue')", 1, boo.indexOf("rue") ); + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true);boo.indexOf('ue')", 2, boo.indexOf("ue") ); + array[item++] = new TestCase( SECTION, "var boo = new MyObject(true);boo.indexOf('oy')", -1, boo.indexOf("oy") ); + + + var noo = new MyObject( Math.PI ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI); noo.indexOf('3') ", 0, noo.indexOf('3') ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI); noo.indexOf('.') ", 1, noo.indexOf('.') ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI); noo.indexOf('1') ", 2, noo.indexOf('1') ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI); noo.indexOf('4') ", 3, noo.indexOf('4') ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI); noo.indexOf('1') ", 2, noo.indexOf('1') ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI); noo.indexOf('5') ", 5, noo.indexOf('5') ); + array[item++] = new TestCase( SECTION, "var noo = new MyObject(Math.PI); noo.indexOf('9') ", 6, noo.indexOf('9') ); + + array[item++] = new TestCase( SECTION, + "var arr = new Array('new','zoo','revue'); arr.indexOf = String.prototype.indexOf; arr.indexOf('new')", + 0, + eval("var arr = new Array('new','zoo','revue'); arr.indexOf = String.prototype.indexOf; arr.indexOf('new')") ); + + array[item++] = new TestCase( SECTION, + "var arr = new Array('new','zoo','revue'); arr.indexOf = String.prototype.indexOf; arr.indexOf(',zoo,')", + 3, + eval("var arr = new Array('new','zoo','revue'); arr.indexOf = String.prototype.indexOf; arr.indexOf(',zoo,')") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Object(); obj.indexOf = String.prototype.indexOf; obj.indexOf('[object Object]')", + 0, + eval("var obj = new Object(); obj.indexOf = String.prototype.indexOf; obj.indexOf('[object Object]')") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Object(); obj.indexOf = String.prototype.indexOf; obj.indexOf('bject')", + 2, + eval("var obj = new Object(); obj.indexOf = String.prototype.indexOf; obj.indexOf('bject')") ); + +// This correctly throws, due to ES5 15.5.4.7 step 1 +// array[item++] = new TestCase( SECTION, +// "var f = new Object( String.prototype.indexOf ); f('"+GLOBAL+"')", +// 0, +// eval("var f = new Object( String.prototype.indexOf ); f('"+GLOBAL+"')") ); + + array[item++] = new TestCase( SECTION, + "var f = new Function(); f.toString = Object.prototype.toString; f.indexOf = String.prototype.indexOf; f.indexOf('[object Function]')", + 0, + eval("var f = new Function(); f.toString = Object.prototype.toString; f.indexOf = String.prototype.indexOf; f.indexOf('[object Function]')") ); + + array[item++] = new TestCase( SECTION, + "var b = new Boolean(); b.indexOf = String.prototype.indexOf; b.indexOf('true')", + -1, + eval("var b = new Boolean(); b.indexOf = String.prototype.indexOf; b.indexOf('true')") ); + + array[item++] = new TestCase( SECTION, + "var b = new Boolean(); b.indexOf = String.prototype.indexOf; b.indexOf('false', 1)", + -1, + eval("var b = new Boolean(); b.indexOf = String.prototype.indexOf; b.indexOf('false', 1)") ); + + array[item++] = new TestCase( SECTION, + "var b = new Boolean(); b.indexOf = String.prototype.indexOf; b.indexOf('false', 0)", + 0, + eval("var b = new Boolean(); b.indexOf = String.prototype.indexOf; b.indexOf('false', 0)") ); + + array[item++] = new TestCase( SECTION, + "var n = new Number(1e21); n.indexOf = String.prototype.indexOf; n.indexOf('e')", + 1, + eval("var n = new Number(1e21); n.indexOf = String.prototype.indexOf; n.indexOf('e')") ); + + array[item++] = new TestCase( SECTION, + "var n = new Number(-Infinity); n.indexOf = String.prototype.indexOf; n.indexOf('-')", + 0, + eval("var n = new Number(-Infinity); n.indexOf = String.prototype.indexOf; n.indexOf('-')") ); + + array[item++] = new TestCase( SECTION, + "var n = new Number(0xFF); n.indexOf = String.prototype.indexOf; n.indexOf('5')", + 1, + eval("var n = new Number(0xFF); n.indexOf = String.prototype.indexOf; n.indexOf('5')") ); + + array[item++] = new TestCase( SECTION, + "var m = Math; m.indexOf = String.prototype.indexOf; m.indexOf( 'Math' )", + 8, + eval("var m = Math; m.indexOf = String.prototype.indexOf; m.indexOf( 'Math' )") ); + + // new Date(0) has '31' or '01' at index 8 depending on whether tester is (GMT-) or (GMT+), respectively + array[item++] = new TestCase( SECTION, + "var d = new Date(0); d.indexOf = String.prototype.indexOf; d.getTimezoneOffset()>0 ? d.indexOf('31') : d.indexOf('01')", + 8, + eval("var d = new Date(0); d.indexOf = String.prototype.indexOf; d.getTimezoneOffset()>0 ? d.indexOf('31') : d.indexOf('01')") ); + + + return array; +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) + ? "" + : "wrong value " + } + stopTest(); + + // all tests must return a boolean value + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.7-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.7-1.js new file mode 100644 index 00000000000..55d0313c7c8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.7-1.js @@ -0,0 +1,221 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.7-1.js + ECMA Section: 15.5.4.7 String.prototype.lastIndexOf( searchString, pos) + Description: + + If the given searchString appears as a substring of the result of + converting this object to a string, at one or more positions that are + at or to the left of the specified position, then the index of the + rightmost such position is returned; otherwise -1 is returned. If position + is undefined or not supplied, the length of this string value is assumed, + so as to search all of the string. + + When the lastIndexOf method is called with two arguments searchString and + position, the following steps are taken: + + 1.Call ToString, giving it the this value as its argument. + 2.Call ToString(searchString). + 3.Call ToNumber(position). (If position is undefined or not supplied, this step produces the value NaN). + 4.If Result(3) is NaN, use +; otherwise, call ToInteger(Result(3)). + 5.Compute the number of characters in Result(1). + 6.Compute min(max(Result(4), 0), Result(5)). + 7.Compute the number of characters in the string that is Result(2). + 8.Compute the largest possible integer k not larger than Result(6) such that k+Result(7) is not greater + than Result(5), and for all nonnegative integers j less than Result(7), the character at position k+j of + Result(1) is the same as the character at position j of Result(2); but if there is no such integer k, then + compute the value -1. + + 1.Return Result(8). + + Note that the lastIndexOf function is intentionally generic; it does not require that its this value be a + String object. Therefore it can be transferred to other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 2 october 1997 +*/ + var SECTION = "15.5.4.7-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.protoype.lastIndexOf"; + + var TEST_STRING = new String( " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" ); + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var j = 0; + + for ( k = 0, i = 0x0021; i < 0x007e; i++, j++, k++ ) { + array[j] = new TestCase( SECTION, + "String.lastIndexOf(" +String.fromCharCode(i)+ ", 0)", + -1, + TEST_STRING.lastIndexOf( String.fromCharCode(i), 0 ) ); + } + + for ( k = 0, i = 0x0020; i < 0x007e; i++, j++, k++ ) { + array[j] = new TestCase( SECTION, + "String.lastIndexOf("+String.fromCharCode(i)+ ", "+ k +")", + k, + TEST_STRING.lastIndexOf( String.fromCharCode(i), k ) ); + } + + for ( k = 0, i = 0x0020; i < 0x007e; i++, j++, k++ ) { + array[j] = new TestCase( SECTION, + "String.lastIndexOf("+String.fromCharCode(i)+ ", "+k+1+")", + k, + TEST_STRING.lastIndexOf( String.fromCharCode(i), k+1 ) ); + } + + for ( k = 9, i = 0x0021; i < 0x007d; i++, j++, k++ ) { + array[j] = new TestCase( SECTION, + + "String.lastIndexOf("+(String.fromCharCode(i) + + String.fromCharCode(i+1)+ + String.fromCharCode(i+2)) +", "+ 0 + ")", + LastIndexOf( TEST_STRING, String.fromCharCode(i) + + String.fromCharCode(i+1)+String.fromCharCode(i+2), 0), + TEST_STRING.lastIndexOf( (String.fromCharCode(i)+ + String.fromCharCode(i+1)+ + String.fromCharCode(i+2)), + 0 ) ); + } + + for ( k = 0, i = 0x0020; i < 0x007d; i++, j++, k++ ) { + array[j] = new TestCase( SECTION, + "String.lastIndexOf("+(String.fromCharCode(i) + + String.fromCharCode(i+1)+ + String.fromCharCode(i+2)) +", "+ k +")", + k, + TEST_STRING.lastIndexOf( (String.fromCharCode(i)+ + String.fromCharCode(i+1)+ + String.fromCharCode(i+2)), + k ) ); + } + for ( k = 0, i = 0x0020; i < 0x007d; i++, j++, k++ ) { + array[j] = new TestCase( SECTION, + "String.lastIndexOf("+(String.fromCharCode(i) + + String.fromCharCode(i+1)+ + String.fromCharCode(i+2)) +", "+ k+1 +")", + k, + TEST_STRING.lastIndexOf( (String.fromCharCode(i)+ + String.fromCharCode(i+1)+ + String.fromCharCode(i+2)), + k+1 ) ); + } + for ( k = 0, i = 0x0020; i < 0x007d; i++, j++, k++ ) { + array[j] = new TestCase( SECTION, + "String.lastIndexOf("+ + (String.fromCharCode(i) + + String.fromCharCode(i+1)+ + String.fromCharCode(i+2)) +", "+ (k-1) +")", + LastIndexOf( TEST_STRING, String.fromCharCode(i) + + String.fromCharCode(i+1)+String.fromCharCode(i+2), k-1), + TEST_STRING.lastIndexOf( (String.fromCharCode(i)+ + String.fromCharCode(i+1)+ + String.fromCharCode(i+2)), + k-1 ) ); + } + + array[j++] = new TestCase( SECTION, "String.lastIndexOf(" +TEST_STRING + ", 0 )", 0, TEST_STRING.lastIndexOf( TEST_STRING, 0 ) ); +// array[j++] = new TestCase( SECTION, "String.lastIndexOf(" +TEST_STRING + ", 1 )", 0, TEST_STRING.lastIndexOf( TEST_STRING, 1 )); + array[j++] = new TestCase( SECTION, "String.lastIndexOf(" +TEST_STRING + ")", 0, TEST_STRING.lastIndexOf( TEST_STRING )); + + return array; +} + +function test() { + writeLineToLog( "TEST_STRING = new String(\" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\")" ); + + for ( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value " + + } + stopTest(); + + return ( testcases ); +} + +function LastIndexOf( string, search, position ) { + string = String( string ); + search = String( search ); + + position = Number( position ) + + if ( isNaN( position ) ) { + position = Infinity; + } else { + position = ToInteger( position ); + } + + result5= string.length; + result6 = Math.min(Math.max(position, 0), result5); + result7 = search.length; + + if (result7 == 0) { + return Math.min(position, result5); + } + + result8 = -1; + + for ( k = 0; k <= result6; k++ ) { + if ( k+ result7 > result5 ) { + break; + } + for ( j = 0; j < result7; j++ ) { + if ( string.charAt(k+j) != search.charAt(j) ){ + break; + } else { + if ( j == result7 -1 ) { + result8 = k; + } + } + } + } + + return result8; +} +function ToInteger( n ) { + n = Number( n ); + if ( isNaN(n) ) { + return 0; + } + if ( Math.abs(n) == 0 || Math.abs(n) == Infinity ) { + return n; + } + + var sign = ( n < 0 ) ? -1 : 1; + + return ( sign * Math.floor(Math.abs(n)) ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.7-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.7-2.js new file mode 100644 index 00000000000..9972c7e44d4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.7-2.js @@ -0,0 +1,220 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.7-2.js + ECMA Section: 15.5.4.7 String.prototype.lastIndexOf( searchString, pos) + Description: + + If the given searchString appears as a substring of the result of + converting this object to a string, at one or more positions that are + at or to the left of the specified position, then the index of the + rightmost such position is returned; otherwise -1 is returned. If position + is undefined or not supplied, the length of this string value is assumed, + so as to search all of the string. + + When the lastIndexOf method is called with two arguments searchString and + position, the following steps are taken: + + 1.Call ToString, giving it the this value as its argument. + 2.Call ToString(searchString). + 3.Call ToNumber(position). (If position is undefined or not supplied, this step produces the value NaN). + 4.If Result(3) is NaN, use +; otherwise, call ToInteger(Result(3)). + 5.Compute the number of characters in Result(1). + 6.Compute min(max(Result(4), 0), Result(5)). + 7.Compute the number of characters in the string that is Result(2). + 8.Compute the largest possible integer k not larger than Result(6) such that k+Result(7) is not greater + than Result(5), and for all nonnegative integers j less than Result(7), the character at position k+j of + Result(1) is the same as the character at position j of Result(2); but if there is no such integer k, then + compute the value -1. + + 1.Return Result(8). + + Note that the lastIndexOf function is intentionally generic; it does not require that its this value be a + String object. Therefore it can be transferred to other kinds of objects for use as a method. + + Author: christine@netscape.com, pschwartau@netscape.com + Date: 02 October 1997 + Modified: 14 July 2002 + Reason: See http://bugzilla.mozilla.org/show_bug.cgi?id=155289 + ECMA-262 Ed.3 Section 15.5.4.8 + The length property of the lastIndexOf method is 1 +* +*/ + var SECTION = "15.5.4.7-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.protoype.lastIndexOf"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "String.prototype.lastIndexOf.length", 1, String.prototype.lastIndexOf.length ); + array[item++] = new TestCase( SECTION, "delete String.prototype.lastIndexOf.length", false, delete String.prototype.lastIndexOf.length ); + array[item++] = new TestCase( SECTION, "delete String.prototype.lastIndexOf.length; String.prototype.lastIndexOf.length", 1, eval("delete String.prototype.lastIndexOf.length; String.prototype.lastIndexOf.length" ) ); + + array[item++] = new TestCase( SECTION, "var s = new String(''); s.lastIndexOf('', 0)", LastIndexOf("","",0), eval("var s = new String(''); s.lastIndexOf('', 0)") ); + array[item++] = new TestCase( SECTION, "var s = new String(''); s.lastIndexOf('')", LastIndexOf("",""), eval("var s = new String(''); s.lastIndexOf('')") ); + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('', 0)", LastIndexOf("hello","",0), eval("var s = new String('hello'); s.lastIndexOf('',0)") ); + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('')", LastIndexOf("hello",""), eval("var s = new String('hello'); s.lastIndexOf('')") ); + + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll')", LastIndexOf("hello","ll"), eval("var s = new String('hello'); s.lastIndexOf('ll')") ); + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll', 0)", LastIndexOf("hello","ll",0), eval("var s = new String('hello'); s.lastIndexOf('ll', 0)") ); + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll', 1)", LastIndexOf("hello","ll",1), eval("var s = new String('hello'); s.lastIndexOf('ll', 1)") ); + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll', 2)", LastIndexOf("hello","ll",2), eval("var s = new String('hello'); s.lastIndexOf('ll', 2)") ); + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll', 3)", LastIndexOf("hello","ll",3), eval("var s = new String('hello'); s.lastIndexOf('ll', 3)") ); + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll', 4)", LastIndexOf("hello","ll",4), eval("var s = new String('hello'); s.lastIndexOf('ll', 4)") ); + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll', 5)", LastIndexOf("hello","ll",5), eval("var s = new String('hello'); s.lastIndexOf('ll', 5)") ); + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll', 6)", LastIndexOf("hello","ll",6), eval("var s = new String('hello'); s.lastIndexOf('ll', 6)") ); + + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll', 1.5)", LastIndexOf('hello','ll', 1.5), eval("var s = new String('hello'); s.lastIndexOf('ll', 1.5)") ); + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll', 2.5)", LastIndexOf('hello','ll', 2.5), eval("var s = new String('hello'); s.lastIndexOf('ll', 2.5)") ); + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll', -1)", LastIndexOf('hello','ll', -1), eval("var s = new String('hello'); s.lastIndexOf('ll', -1)") ); + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll', -1.5)",LastIndexOf('hello','ll', -1.5), eval("var s = new String('hello'); s.lastIndexOf('ll', -1.5)") ); + + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll', -Infinity)", LastIndexOf("hello","ll",-Infinity), eval("var s = new String('hello'); s.lastIndexOf('ll', -Infinity)") ); + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll', Infinity)", LastIndexOf("hello","ll",Infinity), eval("var s = new String('hello'); s.lastIndexOf('ll', Infinity)") ); + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll', NaN)", LastIndexOf("hello","ll",NaN), eval("var s = new String('hello'); s.lastIndexOf('ll', NaN)") ); + array[item++] = new TestCase( SECTION, "var s = new String('hello'); s.lastIndexOf('ll', -0)", LastIndexOf("hello","ll",-0), eval("var s = new String('hello'); s.lastIndexOf('ll', -0)") ); + for ( var i = 0; i < ( "[object Object]" ).length; i++ ) { + array[item++] = new TestCase( SECTION, + "var o = new Object(); o.lastIndexOf = String.prototype.lastIndexOf; o.lastIndexOf('b', "+ i + ")", + ( i < 2 ? -1 : ( i < 9 ? 2 : 9 )) , + eval("var o = new Object(); o.lastIndexOf = String.prototype.lastIndexOf; o.lastIndexOf('b', "+ i + ")") ); + } + for ( var i = 0; i < 5; i ++ ) { + array[item++] = new TestCase( SECTION, + "var b = new Boolean(); b.lastIndexOf = String.prototype.lastIndexOf; b.lastIndexOf('l', "+ i + ")", + ( i < 2 ? -1 : 2 ), + eval("var b = new Boolean(); b.lastIndexOf = String.prototype.lastIndexOf; b.lastIndexOf('l', "+ i + ")") ); + } + for ( var i = 0; i < 5; i ++ ) { + array[item++] = new TestCase( SECTION, + "var b = new Boolean(); b.toString = Object.prototype.toString; b.lastIndexOf = String.prototype.lastIndexOf; b.lastIndexOf('o', "+ i + ")", + ( i < 1 ? -1 : ( i < 9 ? 1 : ( i < 10 ? 9 : 10 ) ) ), + eval("var b = new Boolean(); b.toString = Object.prototype.toString; b.lastIndexOf = String.prototype.lastIndexOf; b.lastIndexOf('o', "+ i + ")") ); + } + for ( var i = 0; i < 9; i++ ) { + array[item++] = new TestCase( SECTION, + "var n = new Number(Infinity); n.lastIndexOf = String.prototype.lastIndexOf; n.lastIndexOf( 'i', " + i + " )", + ( i < 3 ? -1 : ( i < 5 ? 3 : 5 ) ), + eval("var n = new Number(Infinity); n.lastIndexOf = String.prototype.lastIndexOf; n.lastIndexOf( 'i', " + i + " )") ); + } + var a = new Array( "abc","def","ghi","jkl","mno","pqr","stu","vwx","yz" ); + + for ( var i = 0; i < (a.toString()).length; i++ ) { + array[item++] = new TestCase( SECTION, + "var a = new Array( 'abc','def','ghi','jkl','mno','pqr','stu','vwx','yz' ); a.lastIndexOf = String.prototype.lastIndexOf; a.lastIndexOf( ',mno,p', "+i+" )", + ( i < 15 ? -1 : 15 ), + eval("var a = new Array( 'abc','def','ghi','jkl','mno','pqr','stu','vwx','yz' ); a.lastIndexOf = String.prototype.lastIndexOf; a.lastIndexOf( ',mno,p', "+i+" )") ); + } + + for ( var i = 0; i < 15; i ++ ) { + array[item++] = new TestCase( SECTION, + "var m = Math; m.lastIndexOf = String.prototype.lastIndexOf; m.lastIndexOf('t', "+ i + ")", + ( i < 6 ? -1 : ( i < 10 ? 6 : 10 ) ), + eval("var m = Math; m.lastIndexOf = String.prototype.lastIndexOf; m.lastIndexOf('t', "+ i + ")") ); + } +/* + for ( var i = 0; i < 15; i++ ) { + array[item++] = new TestCase( SECTION, + "var d = new Date(); d.lastIndexOf = String.prototype.lastIndexOf; d.lastIndexOf( '0' )", + ) + } + +*/ + return array; +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value " + } + stopTest(); + + return ( testcases ); +} + +function LastIndexOf( string, search, position ) { + string = String( string ); + search = String( search ); + + position = Number( position ) + + if ( isNaN( position ) ) { + position = Infinity; + } else { + position = ToInteger( position ); + } + + result5= string.length; + result6 = Math.min(Math.max(position, 0), result5); + result7 = search.length; + + if (result7 == 0) { + return Math.min(position, result5); + } + + result8 = -1; + + for ( k = 0; k <= result6; k++ ) { + if ( k+ result7 > result5 ) { + break; + } + for ( j = 0; j < result7; j++ ) { + if ( string.charAt(k+j) != search.charAt(j) ){ + break; + } else { + if ( j == result7 -1 ) { + result8 = k; + } + } + } + } + + return result8; +} +function ToInteger( n ) { + n = Number( n ); + if ( isNaN(n) ) { + return 0; + } + if ( Math.abs(n) == 0 || Math.abs(n) == Infinity ) { + return n; + } + + var sign = ( n < 0 ) ? -1 : 1; + + return ( sign * Math.floor(Math.abs(n)) ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.7-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.7-3.js new file mode 100644 index 00000000000..aed400c236e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.7-3.js @@ -0,0 +1,166 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.7-3.js + ECMA Section: 15.5.4.7 String.prototype.lastIndexOf( searchString, pos) + Description: + + If the given searchString appears as a substring of the result of + converting this object to a string, at one or more positions that are + at or to the left of the specified position, then the index of the + rightmost such position is returned; otherwise -1 is returned. If position + is undefined or not supplied, the length of this string value is assumed, + so as to search all of the string. + + When the lastIndexOf method is called with two arguments searchString and + position, the following steps are taken: + + 1.Call ToString, giving it the this value as its argument. + 2.Call ToString(searchString). + 3.Call ToNumber(position). (If position is undefined or not supplied, this step produces the value NaN). + 4.If Result(3) is NaN, use +; otherwise, call ToInteger(Result(3)). + 5.Compute the number of characters in Result(1). + 6.Compute min(max(Result(4), 0), Result(5)). + 7.Compute the number of characters in the string that is Result(2). + 8.Compute the largest possible integer k not larger than Result(6) such that k+Result(7) is not greater + than Result(5), and for all nonnegative integers j less than Result(7), the character at position k+j of + Result(1) is the same as the character at position j of Result(2); but if there is no such integer k, then + compute the value -1. + + 1.Return Result(8). + + Note that the lastIndexOf function is intentionally generic; it does not require that its this value be a + String object. Therefore it can be transferred to other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 2 october 1997 +*/ + var SECTION = "15.5.4.7-3"; + var VERSION = "ECMA_2"; + startTest(); + var TITLE = "String.protoype.lastIndexOf"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "var b = true; b.__proto__.lastIndexOf = String.prototype.lastIndexOf; b.lastIndexOf('r', 0 )", + -1, + eval("var b = true; b.__proto__.lastIndexOf = String.prototype.lastIndexOf; b.lastIndexOf('r', 0 )") ); + + array[item++] = new TestCase( SECTION, + "var b = true; b.__proto__.lastIndexOf = String.prototype.lastIndexOf; b.lastIndexOf('r', 1 )", + 1, + eval("var b = true; b.__proto__.lastIndexOf = String.prototype.lastIndexOf; b.lastIndexOf('r', 1 )") ); + + array[item++] = new TestCase( SECTION, + "var b = true; b.__proto__.lastIndexOf = String.prototype.lastIndexOf; b.lastIndexOf('r', 2 )", + 1, + eval("var b = true; b.__proto__.lastIndexOf = String.prototype.lastIndexOf; b.lastIndexOf('r', 2 )") ); + + array[item++] = new TestCase( SECTION, + "var b = true; b.__proto__.lastIndexOf = String.prototype.lastIndexOf; b.lastIndexOf('r', 10 )", + 1, + eval("var b = true; b.__proto__.lastIndexOf = String.prototype.lastIndexOf; b.lastIndexOf('r', 10 )") ); + + array[item++] = new TestCase( SECTION, + "var b = true; b.__proto__.lastIndexOf = String.prototype.lastIndexOf; b.lastIndexOf('r' )", + 1, + eval("var b = true; b.__proto__.lastIndexOf = String.prototype.lastIndexOf; b.lastIndexOf('r' )") ); + + return array; +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value " + } + stopTest(); + + return ( testcases ); +} + +function LastIndexOf( string, search, position ) { + string = String( string ); + search = String( search ); + + position = Number( position ) + + if ( isNaN( position ) ) { + position = Infinity; + } else { + position = ToInteger( position ); + } + + result5= string.length; + result6 = Math.min(Math.max(position, 0), result5); + result7 = search.length; + + if (result7 == 0) { + return Math.min(position, result5); + } + + result8 = -1; + + for ( k = 0; k <= result6; k++ ) { + if ( k+ result7 > result5 ) { + break; + } + for ( j = 0; j < result7; j++ ) { + if ( string.charAt(k+j) != search.charAt(j) ){ + break; + } else { + if ( j == result7 -1 ) { + result8 = k; + } + } + } + } + + return result8; +} +function ToInteger( n ) { + n = Number( n ); + if ( isNaN(n) ) { + return 0; + } + if ( Math.abs(n) == 0 || Math.abs(n) == Infinity ) { + return n; + } + + var sign = ( n < 0 ) ? -1 : 1; + + return ( sign * Math.floor(Math.abs(n)) ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.8-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.8-1.js new file mode 100644 index 00000000000..1dddd418e53 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.8-1.js @@ -0,0 +1,234 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.8-1.js + ECMA Section: 15.5.4.8 String.prototype.split( separator ) + Description: + + Returns an Array object into which substrings of the result of converting + this object to a string have been stored. The substrings are determined by + searching from left to right for occurrences of the given separator; these + occurrences are not part of any substring in the returned array, but serve + to divide up this string value. The separator may be a string of any length. + + As a special case, if the separator is the empty string, the string is split + up into individual characters; the length of the result array equals the + length of the string, and each substring contains one character. + + If the separator is not supplied, then the result array contains just one + string, which is the string. + + Author: christine@netscape.com, pschwartau@netscape.com + Date: 12 November 1997 + Modified: 14 July 2002 + Reason: See http://bugzilla.mozilla.org/show_bug.cgi?id=155289 + ECMA-262 Ed.3 Section 15.5.4.14 + The length property of the split method is 2 +* +*/ + + var SECTION = "15.5.4.8-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.split"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "String.prototype.split.length", 2, String.prototype.split.length ); + array[item++] = new TestCase( SECTION, "delete String.prototype.split.length", false, delete String.prototype.split.length ); + array[item++] = new TestCase( SECTION, "delete String.prototype.split.length; String.prototype.split.length", 2, eval("delete String.prototype.split.length; String.prototype.split.length") ); + + // test cases for when split is called with no arguments. + + // this is a string object + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); typeof s.split()", + "object", + eval("var s = new String('this is a string object'); typeof s.split()") ); + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); Array.prototype.getClass = Object.prototype.toString; (s.split()).getClass()", + "[object Array]", + eval("var s = new String('this is a string object'); Array.prototype.getClass = Object.prototype.toString; (s.split()).getClass()") ); + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.split().length", + 1, + eval("var s = new String('this is a string object'); s.split().length") ); + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.split()[0]", + "this is a string object", + eval("var s = new String('this is a string object'); s.split()[0]") ); + + // this is an object object + array[item++] = new TestCase( SECTION, + "var obj = new Object(); obj.split = String.prototype.split; typeof obj.split()", + "object", + eval("var obj = new Object(); obj.split = String.prototype.split; typeof obj.split()") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Object(); obj.split = String.prototype.split; Array.prototype.getClass = Object.prototype.toString; obj.getClass()", + "[object Array]", + eval("var obj = new Object(); obj.split = String.prototype.split; Array.prototype.getClass = Object.prototype.toString; obj.split().getClass()") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Object(); obj.split = String.prototype.split; obj.split().length", + 1, + eval("var obj = new Object(); obj.split = String.prototype.split; obj.split().length") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Object(); obj.split = String.prototype.split; obj.split()[0]", + "[object Object]", + eval("var obj = new Object(); obj.split = String.prototype.split; obj.split()[0]") ); + + // this is a function object + array[item++] = new TestCase( SECTION, + "var obj = new Function(); obj.split = String.prototype.split; typeof obj.split()", + "object", + eval("var obj = new Function(); obj.split = String.prototype.split; typeof obj.split()") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Function(); obj.split = String.prototype.split; Array.prototype.getClass = Object.prototype.toString; obj.getClass()", + "[object Array]", + eval("var obj = new Function(); obj.split = String.prototype.split; Array.prototype.getClass = Object.prototype.toString; obj.split().getClass()") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Function(); obj.split = String.prototype.split; obj.split().length", + 1, + eval("var obj = new Function(); obj.split = String.prototype.split; obj.split().length") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Function(); obj.split = String.prototype.split; obj.toString = Object.prototype.toString; obj.split()[0]", + "[object Function]", + eval("var obj = new Function(); obj.split = String.prototype.split; obj.toString = Object.prototype.toString; obj.split()[0]") ); + + // this is a number object + array[item++] = new TestCase( SECTION, + "var obj = new Number(NaN); obj.split = String.prototype.split; typeof obj.split()", + "object", + eval("var obj = new Number(NaN); obj.split = String.prototype.split; typeof obj.split()") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Number(Infinity); obj.split = String.prototype.split; Array.prototype.getClass = Object.prototype.toString; obj.getClass()", + "[object Array]", + eval("var obj = new Number(Infinity); obj.split = String.prototype.split; Array.prototype.getClass = Object.prototype.toString; obj.split().getClass()") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Number(-1234567890); obj.split = String.prototype.split; obj.split().length", + 1, + eval("var obj = new Number(-1234567890); obj.split = String.prototype.split; obj.split().length") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Number(-1e21); obj.split = String.prototype.split; obj.split()[0]", + "-1e+21", + eval("var obj = new Number(-1e21); obj.split = String.prototype.split; obj.split()[0]") ); + + + // this is the Math object + array[item++] = new TestCase( SECTION, + "var obj = Math; obj.split = String.prototype.split; typeof obj.split()", + "object", + eval("var obj = Math; obj.split = String.prototype.split; typeof obj.split()") ); + + array[item++] = new TestCase( SECTION, + "var obj = Math; obj.split = String.prototype.split; Array.prototype.getClass = Object.prototype.toString; obj.getClass()", + "[object Array]", + eval("var obj = Math; obj.split = String.prototype.split; Array.prototype.getClass = Object.prototype.toString; obj.split().getClass()") ); + + array[item++] = new TestCase( SECTION, + "var obj = Math; obj.split = String.prototype.split; obj.split().length", + 1, + eval("var obj = Math; obj.split = String.prototype.split; obj.split().length") ); + + array[item++] = new TestCase( SECTION, + "var obj = Math; obj.split = String.prototype.split; obj.split()[0]", + "[object Math]", + eval("var obj = Math; obj.split = String.prototype.split; obj.split()[0]") ); + + // this is an array object + array[item++] = new TestCase( SECTION, + "var obj = new Array(1,2,3,4,5); obj.split = String.prototype.split; typeof obj.split()", + "object", + eval("var obj = new Array(1,2,3,4,5); obj.split = String.prototype.split; typeof obj.split()") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Array(1,2,3,4,5); obj.split = String.prototype.split; Array.prototype.getClass = Object.prototype.toString; obj.getClass()", + "[object Array]", + eval("var obj = new Array(1,2,3,4,5); obj.split = String.prototype.split; Array.prototype.getClass = Object.prototype.toString; obj.split().getClass()") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Array(1,2,3,4,5); obj.split = String.prototype.split; obj.split().length", + 1, + eval("var obj = new Array(1,2,3,4,5); obj.split = String.prototype.split; obj.split().length") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Array(1,2,3,4,5); obj.split = String.prototype.split; obj.split()[0]", + "1,2,3,4,5", + eval("var obj = new Array(1,2,3,4,5); obj.split = String.prototype.split; obj.split()[0]") ); + + // this is a Boolean object + + array[item++] = new TestCase( SECTION, + "var obj = new Boolean(); obj.split = String.prototype.split; typeof obj.split()", + "object", + eval("var obj = new Boolean(); obj.split = String.prototype.split; typeof obj.split()") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Boolean(); obj.split = String.prototype.split; Array.prototype.getClass = Object.prototype.toString; obj.getClass()", + "[object Array]", + eval("var obj = new Boolean(); obj.split = String.prototype.split; Array.prototype.getClass = Object.prototype.toString; obj.split().getClass()") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Boolean(); obj.split = String.prototype.split; obj.split().length", + 1, + eval("var obj = new Boolean(); obj.split = String.prototype.split; obj.split().length") ); + + array[item++] = new TestCase( SECTION, + "var obj = new Boolean(); obj.split = String.prototype.split; obj.split()[0]", + "false", + eval("var obj = new Boolean(); obj.split = String.prototype.split; obj.split()[0]") ); + + + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.8-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.8-2.js new file mode 100644 index 00000000000..59a730cd499 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.8-2.js @@ -0,0 +1,248 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.8-2.js + ECMA Section: 15.5.4.8 String.prototype.split( separator ) + Description: + + Returns an Array object into which substrings of the result of converting + this object to a string have been stored. The substrings are determined by + searching from left to right for occurrences of the given separator; these + occurrences are not part of any substring in the returned array, but serve + to divide up this string value. The separator may be a string of any length. + + As a special case, if the separator is the empty string, the string is split + up into individual characters; the length of the result array equals the + length of the string, and each substring contains one character. + + If the separator is not supplied, then the result array contains just one + string, which is the string. + + When the split method is called with one argument separator, the following steps are taken: + + 1. Call ToString, giving it the this value as its argument. + 2. Create a new Array object of length 0 and call it A. + 3. If separator is not supplied, call the [[Put]] method of A with 0 and + Result(1) as arguments, and then return A. + 4. Call ToString(separator). + 5. Compute the number of characters in Result(1). + 6. Compute the number of characters in the string that is Result(4). + 7. Let p be 0. + 8. If Result(6) is zero (the separator string is empty), go to step 17. + 9. Compute the smallest possible integer k not smaller than p such that + k+Result(6) is not greater than Result(5), and for all nonnegative + integers j less than Result(6), the character at position k+j of + Result(1) is the same as the character at position j of Result(2); + but if there is no such integer k, then go to step 14. + 10. Compute a string value equal to the substring of Result(1), consisting + of the characters at positions p through k1, inclusive. + 11. Call the [[Put]] method of A with A.length and Result(10) as arguments. + 12. Let p be k+Result(6). + 13. Go to step 9. + 14. Compute a string value equal to the substring of Result(1), consisting + of the characters from position p to the end of Result(1). + 15. Call the [[Put]] method of A with A.length and Result(14) as arguments. + 16. Return A. + 17. If p equals Result(5), return A. + 18. Compute a string value equal to the substring of Result(1), consisting of + the single character at position p. + 19. Call the [[Put]] method of A with A.length and Result(18) as arguments. + 20. Increase p by 1. + 21. Go to step 17. + +Note that the split function is intentionally generic; it does not require that its this value be a String +object. Therefore it can be transferred to other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.5.4.8-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.split"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + // case where separator is the empty string. + + var TEST_STRING = "this is a string object"; + + array[item++] = new TestCase( SECTION, + "var s = new String( "+ TEST_STRING +" ); s.split('').length", + TEST_STRING.length, + eval("var s = new String( TEST_STRING ); s.split('').length") ); + + for ( var i = 0; i < TEST_STRING.length; i++ ) { + + array[item++] = new TestCase( SECTION, + "var s = new String( "+TEST_STRING+" ); s.split('')["+i+"]", + TEST_STRING.charAt(i), + eval("var s = new String( TEST_STRING ); s.split('')["+i+"]") ); + } + + // Case where the value of the separator is undefined. + // Per ES5 15.5.4.14 step 10 this returns the input (unless limit is non-zero). + + var TEST_STRING = "thisundefinedisundefinedaundefinedstringundefinedobject"; + var EXPECT_STRING = new Array( "thisundefinedisundefinedaundefinedstringundefinedobject" ); + + array[item++] = new TestCase( SECTION, + "var s = new String( "+ TEST_STRING +" ); s.split(void 0).length", + EXPECT_STRING.length, + eval("var s = new String( TEST_STRING ); s.split(void 0).length") ); + + for ( var i = 0; i < EXPECT_STRING.length; i++ ) { + array[item++] = new TestCase( SECTION, + "var s = new String( "+TEST_STRING+" ); s.split(void 0)["+i+"]", + EXPECT_STRING[i], + eval("var s = new String( TEST_STRING ); s.split(void 0)["+i+"]") ); + } + + // case where the value of the separator is null. in this case the value of the separator is "null". + TEST_STRING = "thisnullisnullanullstringnullobject"; + var EXPECT_STRING = new Array( "this", "is", "a", "string", "object" ); + + array[item++] = new TestCase( SECTION, + "var s = new String( "+ TEST_STRING +" ); s.split(null).length", + EXPECT_STRING.length, + eval("var s = new String( TEST_STRING ); s.split(null).length") ); + + for ( var i = 0; i < EXPECT_STRING.length; i++ ) { + array[item++] = new TestCase( SECTION, + "var s = new String( "+TEST_STRING+" ); s.split(null)["+i+"]", + EXPECT_STRING[i], + eval("var s = new String( TEST_STRING ); s.split(null)["+i+"]") ); + } + + // case where the value of the separator is a boolean. + TEST_STRING = "thistrueistrueatruestringtrueobject"; + var EXPECT_STRING = new Array( "this", "is", "a", "string", "object" ); + + array[item++] = new TestCase( SECTION, + "var s = new String( "+ TEST_STRING +" ); s.split(true).length", + EXPECT_STRING.length, + eval("var s = new String( TEST_STRING ); s.split(true).length") ); + + for ( var i = 0; i < EXPECT_STRING.length; i++ ) { + array[item++] = new TestCase( SECTION, + "var s = new String( "+TEST_STRING+" ); s.split(true)["+i+"]", + EXPECT_STRING[i], + eval("var s = new String( TEST_STRING ); s.split(true)["+i+"]") ); + } + + // case where the value of the separator is a number + TEST_STRING = "this123is123a123string123object"; + var EXPECT_STRING = new Array( "this", "is", "a", "string", "object" ); + + array[item++] = new TestCase( SECTION, + "var s = new String( "+ TEST_STRING +" ); s.split(123).length", + EXPECT_STRING.length, + eval("var s = new String( TEST_STRING ); s.split(123).length") ); + + for ( var i = 0; i < EXPECT_STRING.length; i++ ) { + array[item++] = new TestCase( SECTION, + "var s = new String( "+TEST_STRING+" ); s.split(123)["+i+"]", + EXPECT_STRING[i], + eval("var s = new String( TEST_STRING ); s.split(123)["+i+"]") ); + } + + + // case where the value of the separator is a number + TEST_STRING = "this123is123a123string123object"; + var EXPECT_STRING = new Array( "this", "is", "a", "string", "object" ); + + array[item++] = new TestCase( SECTION, + "var s = new String( "+ TEST_STRING +" ); s.split(123).length", + EXPECT_STRING.length, + eval("var s = new String( TEST_STRING ); s.split(123).length") ); + + for ( var i = 0; i < EXPECT_STRING.length; i++ ) { + array[item++] = new TestCase( SECTION, + "var s = new String( "+TEST_STRING+" ); s.split(123)["+i+"]", + EXPECT_STRING[i], + eval("var s = new String( TEST_STRING ); s.split(123)["+i+"]") ); + } + + // case where the separator is not in the string + TEST_STRING = "this is a string"; + EXPECT_STRING = new Array( "this is a string" ); + + array[item++] = new TestCase( SECTION, + "var s = new String( " + TEST_STRING + " ); s.split(':').length", + 1, + eval("var s = new String( TEST_STRING ); s.split(':').length") ); + + array[item++] = new TestCase( SECTION, + "var s = new String( " + TEST_STRING + " ); s.split(':')[0]", + TEST_STRING, + eval("var s = new String( TEST_STRING ); s.split(':')[0]") ); + + // case where part but not all of separator is in the string. + TEST_STRING = "this is a string"; + EXPECT_STRING = new Array( "this is a string" ); + array[item++] = new TestCase( SECTION, + "var s = new String( " + TEST_STRING + " ); s.split('strings').length", + 1, + eval("var s = new String( TEST_STRING ); s.split('strings').length") ); + + array[item++] = new TestCase( SECTION, + "var s = new String( " + TEST_STRING + " ); s.split('strings')[0]", + TEST_STRING, + eval("var s = new String( TEST_STRING ); s.split('strings')[0]") ); + + // case where the separator is at the end of the string + TEST_STRING = "this is a string"; + EXPECT_STRING = new Array( "this is a " ); + array[item++] = new TestCase( SECTION, + "var s = new String( " + TEST_STRING + " ); s.split('string').length", + 2, + eval("var s = new String( TEST_STRING ); s.split('string').length") ); + + for ( var i = 0; i < EXPECT_STRING.length; i++ ) { + array[item++] = new TestCase( SECTION, + "var s = new String( "+TEST_STRING+" ); s.split('string')["+i+"]", + EXPECT_STRING[i], + eval("var s = new String( TEST_STRING ); s.split('string')["+i+"]") ); + } + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.8-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.8-3.js new file mode 100644 index 00000000000..d3861bb769e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.8-3.js @@ -0,0 +1,205 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.8-3.js + ECMA Section: 15.5.4.8 String.prototype.split( separator ) + Description: + + Returns an Array object into which substrings of the result of converting + this object to a string have been stored. The substrings are determined by + searching from left to right for occurrences of the given separator; these + occurrences are not part of any substring in the returned array, but serve + to divide up this string value. The separator may be a string of any length. + + As a special case, if the separator is the empty string, the string is split + up into individual characters; the length of the result array equals the + length of the string, and each substring contains one character. + + If the separator is not supplied, then the result array contains just one + string, which is the string. + + When the split method is called with one argument separator, the following steps are taken: + + 1. Call ToString, giving it the this value as its argument. + 2. Create a new Array object of length 0 and call it A. + 3. If separator is not supplied, call the [[Put]] method of A with 0 and + Result(1) as arguments, and then return A. + 4. Call ToString(separator). + 5. Compute the number of characters in Result(1). + 6. Compute the number of characters in the string that is Result(4). + 7. Let p be 0. + 8. If Result(6) is zero (the separator string is empty), go to step 17. + 9. Compute the smallest possible integer k not smaller than p such that + k+Result(6) is not greater than Result(5), and for all nonnegative + integers j less than Result(6), the character at position k+j of + Result(1) is the same as the character at position j of Result(2); + but if there is no such integer k, then go to step 14. + 10. Compute a string value equal to the substring of Result(1), consisting + of the characters at positions p through k1, inclusive. + 11. Call the [[Put]] method of A with A.length and Result(10) as arguments. + 12. Let p be k+Result(6). + 13. Go to step 9. + 14. Compute a string value equal to the substring of Result(1), consisting + of the characters from position p to the end of Result(1). + 15. Call the [[Put]] method of A with A.length and Result(14) as arguments. + 16. Return A. + 17. If p equals Result(5), return A. + 18. Compute a string value equal to the substring of Result(1), consisting of + the single character at position p. + 19. Call the [[Put]] method of A with A.length and Result(18) as arguments. + 20. Increase p by 1. + 21. Go to step 17. + +Note that the split function is intentionally generic; it does not require that its this value be a String +object. Therefore it can be transferred to other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.5.4.8-3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.split"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + var TEST_STRING = ""; + var EXPECT = new Array(); + + // this.toString is the empty string. + + array[item++] = new TestCase( SECTION, + "var s = new String(); s.split().length", + 1, + eval("var s = new String(); s.split().length") ); + + array[item++] = new TestCase( SECTION, + "var s = new String(); s.split()[0]", + "", + eval("var s = new String(); s.split()[0]") ); + + // this.toString() is the empty string, separator is specified. + + array[item++] = new TestCase( SECTION, + "var s = new String(); s.split('').length", + 0, + eval("var s = new String(); s.split('').length") ); + + array[item++] = new TestCase( SECTION, + "var s = new String(); s.split(' ').length", + 1, + eval("var s = new String(); s.split(' ').length") ); + + // this to string is " " + array[item++] = new TestCase( SECTION, + "var s = new String(' '); s.split().length", + 1, + eval("var s = new String(' '); s.split().length") ); + + array[item++] = new TestCase( SECTION, + "var s = new String(' '); s.split()[0]", + " ", + eval("var s = new String(' '); s.split()[0]") ); + + array[item++] = new TestCase( SECTION, + "var s = new String(' '); s.split('').length", + 1, + eval("var s = new String(' '); s.split('').length") ); + + array[item++] = new TestCase( SECTION, + "var s = new String(' '); s.split('')[0]", + " ", + eval("var s = new String(' '); s.split('')[0]") ); + + array[item++] = new TestCase( SECTION, + "var s = new String(' '); s.split(' ').length", + 2, + eval("var s = new String(' '); s.split(' ').length") ); + + array[item++] = new TestCase( SECTION, + "var s = new String(' '); s.split(' ')[0]", + "", + eval("var s = new String(' '); s.split(' ')[0]") ); + + array[item++] = new TestCase( SECTION, + "\"\".split(\"\").length", + 0, + ("".split("")).length ); + + array[item++] = new TestCase( SECTION, + "\"\".split(\"x\").length", + 1, + ("".split("x")).length ); + + array[item++] = new TestCase( SECTION, + "\"\".split(\"x\")[0]", + "", + ("".split("x"))[0] ); + + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function Split( string, separator ) { + string = String( string ); + + var A = new Array(); + + if ( arguments.length < 2 ) { + A[0] = string; + return A; + } + + separator = String( separator ); + + var str_len = String( string ).length; + var sep_len = String( separator ).length; + + var p = 0; + var k = 0; + + if ( sep_len == 0 ) { + for ( ; p < str_len; p++ ) { + A[A.length] = String( string.charAt(p) ); + } + } + return A; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.9-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.9-1.js new file mode 100644 index 00000000000..9ae08dc1bb0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.9-1.js @@ -0,0 +1,202 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.9-1.js + ECMA Section: 15.5.4.9 String.prototype.substring( start ) + Description: + + 15.5.4.9 String.prototype.substring(start) + + Returns a substring of the result of converting this object to a string, + starting from character position start and running to the end of the + string. The result is a string value, not a String object. + + If the argument is NaN or negative, it is replaced with zero; if the + argument is larger than the length of the string, it is replaced with the + length of the string. + + When the substring method is called with one argument start, the following + steps are taken: + + 1.Call ToString, giving it the this value as its argument. + 2.Call ToInteger(start). + 3.Compute the number of characters in Result(1). + 4.Compute min(max(Result(2), 0), Result(3)). + 5.Return a string whose length is the difference between Result(3) and Result(4), + containing characters from Result(1), namely the characters with indices Result(4) + through Result(3)1, in ascending order. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.5.4.9-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.prototype.substring( start )"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "String.prototype.substring.length", 2, String.prototype.substring.length ); + array[item++] = new TestCase( SECTION, "delete String.prototype.substring.length", false, delete String.prototype.substring.length ); + array[item++] = new TestCase( SECTION, "delete String.prototype.substring.length; String.prototype.substring.length", 2, eval("delete String.prototype.substring.length; String.prototype.substring.length") ); + + // test cases for when substring is called with no arguments. + + // this is a string object + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); typeof s.substring()", + "string", + eval("var s = new String('this is a string object'); typeof s.substring()") ); + + array[item++] = new TestCase( SECTION, + "var s = new String(''); s.substring()", + "", + eval("var s = new String(''); s.substring()") ); + + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.substring()", + "this is a string object", + eval("var s = new String('this is a string object'); s.substring()") ); + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.substring(NaN)", + "this is a string object", + eval("var s = new String('this is a string object'); s.substring(NaN)") ); + + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.substring(-0.01)", + "this is a string object", + eval("var s = new String('this is a string object'); s.substring(-0.01)") ); + + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.substring(s.length)", + "", + eval("var s = new String('this is a string object'); s.substring(s.length)") ); + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.substring(s.length+1)", + "", + eval("var s = new String('this is a string object'); s.substring(s.length+1)") ); + + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.substring(Infinity)", + "", + eval("var s = new String('this is a string object'); s.substring(Infinity)") ); + + array[item++] = new TestCase( SECTION, + "var s = new String('this is a string object'); s.substring(-Infinity)", + "this is a string object", + eval("var s = new String('this is a string object'); s.substring(-Infinity)") ); + + // this is not a String object, start is not an integer + + + array[item++] = new TestCase( SECTION, + "var s = new Array(1,2,3,4,5); s.substring = String.prototype.substring; s.substring()", + "1,2,3,4,5", + eval("var s = new Array(1,2,3,4,5); s.substring = String.prototype.substring; s.substring()") ); + + array[item++] = new TestCase( SECTION, + "var s = new Array(1,2,3,4,5); s.substring = String.prototype.substring; s.substring(true)", + ",2,3,4,5", + eval("var s = new Array(1,2,3,4,5); s.substring = String.prototype.substring; s.substring(true)") ); + + array[item++] = new TestCase( SECTION, + "var s = new Array(1,2,3,4,5); s.substring = String.prototype.substring; s.substring('4')", + "3,4,5", + eval("var s = new Array(1,2,3,4,5); s.substring = String.prototype.substring; s.substring('4')") ); + + array[item++] = new TestCase( SECTION, + "var s = new Array(); s.substring = String.prototype.substring; s.substring('4')", + "", + eval("var s = new Array(); s.substring = String.prototype.substring; s.substring('4')") ); + + // this is an object object + array[item++] = new TestCase( SECTION, + "var obj = new Object(); obj.substring = String.prototype.substring; obj.substring(8)", + "Object]", + eval("var obj = new Object(); obj.substring = String.prototype.substring; obj.substring(8)") ); + + // this is a function object + array[item++] = new TestCase( SECTION, + "var obj = new Function(); obj.substring = String.prototype.substring; obj.toString = Object.prototype.toString; obj.substring(8)", + "Function]", + eval("var obj = new Function(); obj.substring = String.prototype.substring; obj.toString = Object.prototype.toString; obj.substring(8)") ); + // this is a number object + array[item++] = new TestCase( SECTION, + "var obj = new Number(NaN); obj.substring = String.prototype.substring; obj.substring(false)", + "NaN", + eval("var obj = new Number(NaN); obj.substring = String.prototype.substring; obj.substring(false)") ); + + // this is the Math object + array[item++] = new TestCase( SECTION, + "var obj = Math; obj.substring = String.prototype.substring; obj.substring(Math.PI)", + "ject Math]", + eval("var obj = Math; obj.substring = String.prototype.substring; obj.substring(Math.PI)") ); + + // this is a Boolean object + + array[item++] = new TestCase( SECTION, + "var obj = new Boolean(); obj.substring = String.prototype.substring; obj.substring(new Array())", + "false", + eval("var obj = new Boolean(); obj.substring = String.prototype.substring; obj.substring(new Array())") ); + + // this is a user defined object + + array[item++] = new TestCase( SECTION, + "var obj = new MyObject( null ); obj.substring(0)", + "null", + eval( "var obj = new MyObject( null ); obj.substring(0)") ); + + return array; +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.substring = String.prototype.substring; + this.toString = new Function ( "return this.value+''" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.js new file mode 100644 index 00000000000..3456a0998dd --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.js @@ -0,0 +1,74 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.4.js + ECMA Section: 15.5.4 Properties of the String prototype object + + Description: + Author: christine@netscape.com + Date: 28 october 1997 + +*/ + var SECTION = "15.5.4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Properties of the String Prototype objecta"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "String.prototype.getClass = Object.prototype.toString; String.prototype.getClass()", + "[object String]", + eval("String.prototype.getClass = Object.prototype.toString; String.prototype.getClass()") ); + + array[item++] = new TestCase( SECTION, "typeof String.prototype", "object", typeof String.prototype ); + array[item++] = new TestCase( SECTION, "String.prototype.valueOf()", "", String.prototype.valueOf() ); + array[item++] = new TestCase( SECTION, "String.prototype +''", "", String.prototype + '' ); + array[item++] = new TestCase( SECTION, "String.prototype.length", 0, String.prototype.length ); +// array[item++] = new TestCase( SECTION, "String.prototype.__proto__", Object.prototype, String.prototype.__proto__ ); + + + return ( array ); +} +function test( array ) { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + + } + + stopTest(); + + // all tests must return an array of TestCase objects + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.5.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.5.1.js new file mode 100644 index 00000000000..5f0fe29be3f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.5.1.js @@ -0,0 +1,90 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.5.5.1 + ECMA Section: String.length + Description: + + The number of characters in the String value represented by this String + object. + + Once a String object is created, this property is unchanging. It has the + attributes { DontEnum, DontDelete, ReadOnly }. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "15.5.5.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "String.length"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, + "var s = new String(); s.length", + 0, + eval("var s = new String(); s.length") ); + + array[item++] = new TestCase( SECTION, + "var s = new String(); s.length = 10; s.length", + 0, + eval("var s = new String(); s.length = 10; s.length") ); + + array[item++] = new TestCase( SECTION, + "var s = new String(); var props = ''; for ( var p in s ) { props += p; }; props", + "", + eval("var s = new String(); var props = ''; for ( var p in s ) { props += p; }; props") ); + + array[item++] = new TestCase( SECTION, + "var s = new String(); delete s.length", + false, + eval("var s = new String(); delete s.length") ); + + array[item++] = new TestCase( SECTION, + "var s = new String('hello'); delete s.length; s.length", + 5, + eval("var s = new String('hello'); delete s.length; s.length") ); + return array; + +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.2.js b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.2.js new file mode 100644 index 00000000000..c0cb33141b3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.2.js @@ -0,0 +1,111 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 9.2.js + ECMA Section: 9.2 Type Conversion: ToBoolean + Description: rules for converting an argument to a boolean. + undefined false + Null false + Boolean input argument( no conversion ) + Number returns false for 0, -0, and NaN + otherwise return true + String return false if the string is empty + (length is 0) otherwise the result is + true + Object all return true + + Author: christine@netscape.com + Date: 14 july 1997 +*/ + var SECTION = "9.2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "ToBoolean"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + // special cases here + + testcases[tc++] = new TestCase( SECTION, "Boolean()", false, Boolean() ); + testcases[tc++] = new TestCase( SECTION, "Boolean(var x)", false, Boolean(eval("var x")) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(void 0)", false, Boolean(void 0) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(null)", false, Boolean(null) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(false)", false, Boolean(false) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(true)", true, Boolean(true) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(0)", false, Boolean(0) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(-0)", false, Boolean(-0) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(NaN)", false, Boolean(Number.NaN) ); + testcases[tc++] = new TestCase( SECTION, "Boolean('')", false, Boolean("") ); + + // normal test cases here + + testcases[tc++] = new TestCase( SECTION, "Boolean(Infinity)", true, Boolean(Number.POSITIVE_INFINITY) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(-Infinity)", true, Boolean(Number.NEGATIVE_INFINITY) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(Math.PI)", true, Boolean(Math.PI) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(1)", true, Boolean(1) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(-1)", true, Boolean(-1) ); + testcases[tc++] = new TestCase( SECTION, "Boolean([tab])", true, Boolean("\t") ); + testcases[tc++] = new TestCase( SECTION, "Boolean('0')", true, Boolean("0") ); + testcases[tc++] = new TestCase( SECTION, "Boolean('string')", true, Boolean("string") ); + + // ToBoolean (object) should always return true. + testcases[tc++] = new TestCase( SECTION, "Boolean(new String() )", true, Boolean(new String()) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(new String('') )", true, Boolean(new String("")) ); + + testcases[tc++] = new TestCase( SECTION, "Boolean(new Boolean(true))", true, Boolean(new Boolean(true)) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(new Boolean(false))", true, Boolean(new Boolean(false)) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(new Boolean() )", true, Boolean(new Boolean()) ); + + testcases[tc++] = new TestCase( SECTION, "Boolean(new Array())", true, Boolean(new Array()) ); + + testcases[tc++] = new TestCase( SECTION, "Boolean(new Number())", true, Boolean(new Number()) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(new Number(-0))", true, Boolean(new Number(-0)) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(new Number(0))", true, Boolean(new Number(0)) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(new Number(NaN))", true, Boolean(new Number(Number.NaN)) ); + + testcases[tc++] = new TestCase( SECTION, "Boolean(new Number(-1))", true, Boolean(new Number(-1)) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(new Number(Infinity))", true, Boolean(new Number(Number.POSITIVE_INFINITY)) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(new Number(-Infinity))",true, Boolean(new Number(Number.NEGATIVE_INFINITY)) ); + + testcases[tc++] = new TestCase( SECTION, "Boolean(new Object())", true, Boolean(new Object()) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(new Function())", true, Boolean(new Function()) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(new Date())", true, Boolean(new Date()) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(new Date(0))", true, Boolean(new Date(0)) ); + testcases[tc++] = new TestCase( SECTION, "Boolean(Math)", true, Boolean(Math) ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.3-1.js new file mode 100644 index 00000000000..39af3289b31 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.3-1.js @@ -0,0 +1,96 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 9.3-1.js + ECMA Section: 9.3 Type Conversion: ToNumber + Description: rules for converting an argument to a number. + see 9.3.1 for cases for converting strings to numbers. + special cases: + undefined NaN + Null NaN + Boolean 1 if true; +0 if false + Number the argument ( no conversion ) + String see test 9.3.1 + Object see test 9.3-1 + + + This tests ToNumber applied to the object type, except + if object is string. See 9.3-2 for + ToNumber( String object). + + Author: christine@netscape.com + Date: 10 july 1997 + +*/ + var SECTION = "9.3-1"; + var VERSION = "ECMA_1"; + startTest(); + var TYPE = "number"; + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " ToNumber"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].passed = writeTestCaseResult( + TYPE, + typeof(testcases[tc].actual), + "typeof( " + testcases[tc].description + + " ) = " + typeof(testcases[tc].actual) ) + ? testcases[tc].passed + : false; + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // object is Number + array[item++] = new TestCase( SECTION, "Number(new Number())", 0, Number(new Number()) ); + array[item++] = new TestCase( SECTION, "Number(new Number(Number.NaN))",Number.NaN, Number(new Number(Number.NaN)) ); + array[item++] = new TestCase( SECTION, "Number(new Number(0))", 0, Number(new Number(0)) ); + array[item++] = new TestCase( SECTION, "Number(new Number(null))", 0, Number(new Number(null)) ); +// array[item++] = new TestCase( SECTION, "Number(new Number(void 0))", Number.NaN, Number(new Number(void 0)) ); + array[item++] = new TestCase( SECTION, "Number(new Number(true))", 1, Number(new Number(true)) ); + array[item++] = new TestCase( SECTION, "Number(new Number(false))", 0, Number(new Number(false)) ); + + // object is boolean + + array[item++] = new TestCase( SECTION, "Number(new Boolean(true))", 1, Number(new Boolean(true)) ); + array[item++] = new TestCase( SECTION, "Number(new Boolean(false))", 0, Number(new Boolean(false)) ); + + // object is array + array[item++] = new TestCase( SECTION, "Number(new Array(2,4,8,16,32))", Number.NaN, Number(new Array(2,4,8,16,32)) ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.3.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.3.1-1.js new file mode 100644 index 00000000000..4cc8ce07e5e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.3.1-1.js @@ -0,0 +1,323 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 9.3.1-1.js + ECMA Section: 9.3 Type Conversion: ToNumber + Description: rules for converting an argument to a number. + see 9.3.1 for cases for converting strings to numbers. + special cases: + undefined NaN + Null NaN + Boolean 1 if true; +0 if false + Number the argument ( no conversion ) + String see test 9.3.1 + Object see test 9.3-1 + + + This tests ToNumber applied to the string type + + Author: christine@netscape.com + Date: 10 july 1997 + +*/ + var SECTION = "9.3.1-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "ToNumber applied to the String type"; + var BUGNUMBER="77391"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // StringNumericLiteral:::StrWhiteSpace:::StrWhiteSpaceChar StrWhiteSpace::: + // + // Name Unicode Value Escape Sequence + // 0X0009 \t + // 0X0020 + // 0X000C \f + // 0X000B + // 0X000D \r + // 0X000A \n + array[item++] = new TestCase( SECTION, "Number('')", 0, Number("") ); + array[item++] = new TestCase( SECTION, "Number(' ')", 0, Number(" ") ); + array[item++] = new TestCase( SECTION, "Number(\\t)", 0, Number("\t") ); + array[item++] = new TestCase( SECTION, "Number(\\n)", 0, Number("\n") ); + array[item++] = new TestCase( SECTION, "Number(\\r)", 0, Number("\r") ); + array[item++] = new TestCase( SECTION, "Number(\\f)", 0, Number("\f") ); + + array[item++] = new TestCase( SECTION, "Number(String.fromCharCode(0x0009)", 0, Number(String.fromCharCode(0x0009)) ); + array[item++] = new TestCase( SECTION, "Number(String.fromCharCode(0x0020)", 0, Number(String.fromCharCode(0x0020)) ); + array[item++] = new TestCase( SECTION, "Number(String.fromCharCode(0x000C)", 0, Number(String.fromCharCode(0x000C)) ); + array[item++] = new TestCase( SECTION, "Number(String.fromCharCode(0x000B)", 0, Number(String.fromCharCode(0x000B)) ); + array[item++] = new TestCase( SECTION, "Number(String.fromCharCode(0x000D)", 0, Number(String.fromCharCode(0x000D)) ); + array[item++] = new TestCase( SECTION, "Number(String.fromCharCode(0x000A)", 0, Number(String.fromCharCode(0x000A)) ); + + // a StringNumericLiteral may be preceeded or followed by whitespace and/or + // line terminators + + array[item++] = new TestCase( SECTION, "Number( ' ' + 999 )", 999, Number( ' '+999) ); + array[item++] = new TestCase( SECTION, "Number( '\\n' + 999 )", 999, Number( '\n' +999) ); + array[item++] = new TestCase( SECTION, "Number( '\\r' + 999 )", 999, Number( '\r' +999) ); + array[item++] = new TestCase( SECTION, "Number( '\\t' + 999 )", 999, Number( '\t' +999) ); + array[item++] = new TestCase( SECTION, "Number( '\\f' + 999 )", 999, Number( '\f' +999) ); + + array[item++] = new TestCase( SECTION, "Number( 999 + ' ' )", 999, Number( 999+' ') ); + array[item++] = new TestCase( SECTION, "Number( 999 + '\\n' )", 999, Number( 999+'\n' ) ); + array[item++] = new TestCase( SECTION, "Number( 999 + '\\r' )", 999, Number( 999+'\r' ) ); + array[item++] = new TestCase( SECTION, "Number( 999 + '\\t' )", 999, Number( 999+'\t' ) ); + array[item++] = new TestCase( SECTION, "Number( 999 + '\\f' )", 999, Number( 999+'\f' ) ); + + array[item++] = new TestCase( SECTION, "Number( '\\n' + 999 + '\\n' )", 999, Number( '\n' +999+'\n' ) ); + array[item++] = new TestCase( SECTION, "Number( '\\r' + 999 + '\\r' )", 999, Number( '\r' +999+'\r' ) ); + array[item++] = new TestCase( SECTION, "Number( '\\t' + 999 + '\\t' )", 999, Number( '\t' +999+'\t' ) ); + array[item++] = new TestCase( SECTION, "Number( '\\f' + 999 + '\\f' )", 999, Number( '\f' +999+'\f' ) ); + + array[item++] = new TestCase( SECTION, "Number( ' ' + '999' )", 999, Number( ' '+'999') ); + array[item++] = new TestCase( SECTION, "Number( '\\n' + '999' )", 999, Number( '\n' +'999') ); + array[item++] = new TestCase( SECTION, "Number( '\\r' + '999' )", 999, Number( '\r' +'999') ); + array[item++] = new TestCase( SECTION, "Number( '\\t' + '999' )", 999, Number( '\t' +'999') ); + array[item++] = new TestCase( SECTION, "Number( '\\f' + '999' )", 999, Number( '\f' +'999') ); + + array[item++] = new TestCase( SECTION, "Number( '999' + ' ' )", 999, Number( '999'+' ') ); + array[item++] = new TestCase( SECTION, "Number( '999' + '\\n' )", 999, Number( '999'+'\n' ) ); + array[item++] = new TestCase( SECTION, "Number( '999' + '\\r' )", 999, Number( '999'+'\r' ) ); + array[item++] = new TestCase( SECTION, "Number( '999' + '\\t' )", 999, Number( '999'+'\t' ) ); + array[item++] = new TestCase( SECTION, "Number( '999' + '\\f' )", 999, Number( '999'+'\f' ) ); + + array[item++] = new TestCase( SECTION, "Number( '\\n' + '999' + '\\n' )", 999, Number( '\n' +'999'+'\n' ) ); + array[item++] = new TestCase( SECTION, "Number( '\\r' + '999' + '\\r' )", 999, Number( '\r' +'999'+'\r' ) ); + array[item++] = new TestCase( SECTION, "Number( '\\t' + '999' + '\\t' )", 999, Number( '\t' +'999'+'\t' ) ); + array[item++] = new TestCase( SECTION, "Number( '\\f' + '999' + '\\f' )", 999, Number( '\f' +'999'+'\f' ) ); + + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x0009) + '99' )", 99, Number( String.fromCharCode(0x0009) + '99' ) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x0020) + '99' )", 99, Number( String.fromCharCode(0x0020) + '99' ) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000C) + '99' )", 99, Number( String.fromCharCode(0x000C) + '99' ) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000B) + '99' )", 99, Number( String.fromCharCode(0x000B) + '99' ) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000D) + '99' )", 99, Number( String.fromCharCode(0x000D) + '99' ) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000A) + '99' )", 99, Number( String.fromCharCode(0x000A) + '99' ) ); + + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x0009)", 99, Number( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x0009)) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x0020) + '99' + String.fromCharCode(0x0020)", 99, Number( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x0020)) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000C) + '99' + String.fromCharCode(0x000C)", 99, Number( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000C)) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000D) + '99' + String.fromCharCode(0x000D)", 99, Number( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000D)) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000B) + '99' + String.fromCharCode(0x000B)", 99, Number( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000B)) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000A) + '99' + String.fromCharCode(0x000A)", 99, Number( String.fromCharCode(0x0009) + '99' + String.fromCharCode(0x000A)) ); + + array[item++] = new TestCase( SECTION, "Number( '99' + String.fromCharCode(0x0009)", 99, Number( '99' + String.fromCharCode(0x0009)) ); + array[item++] = new TestCase( SECTION, "Number( '99' + String.fromCharCode(0x0020)", 99, Number( '99' + String.fromCharCode(0x0020)) ); + array[item++] = new TestCase( SECTION, "Number( '99' + String.fromCharCode(0x000C)", 99, Number( '99' + String.fromCharCode(0x000C)) ); + array[item++] = new TestCase( SECTION, "Number( '99' + String.fromCharCode(0x000D)", 99, Number( '99' + String.fromCharCode(0x000D)) ); + array[item++] = new TestCase( SECTION, "Number( '99' + String.fromCharCode(0x000B)", 99, Number( '99' + String.fromCharCode(0x000B)) ); + array[item++] = new TestCase( SECTION, "Number( '99' + String.fromCharCode(0x000A)", 99, Number( '99' + String.fromCharCode(0x000A)) ); + + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x0009) + 99 )", 99, Number( String.fromCharCode(0x0009) + 99 ) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x0020) + 99 )", 99, Number( String.fromCharCode(0x0020) + 99 ) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000C) + 99 )", 99, Number( String.fromCharCode(0x000C) + 99 ) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000B) + 99 )", 99, Number( String.fromCharCode(0x000B) + 99 ) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000D) + 99 )", 99, Number( String.fromCharCode(0x000D) + 99 ) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000A) + 99 )", 99, Number( String.fromCharCode(0x000A) + 99 ) ); + + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x0009)", 99, Number( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x0009)) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x0020) + 99 + String.fromCharCode(0x0020)", 99, Number( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x0020)) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000C) + 99 + String.fromCharCode(0x000C)", 99, Number( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000C)) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000D) + 99 + String.fromCharCode(0x000D)", 99, Number( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000D)) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000B) + 99 + String.fromCharCode(0x000B)", 99, Number( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000B)) ); + array[item++] = new TestCase( SECTION, "Number( String.fromCharCode(0x000A) + 99 + String.fromCharCode(0x000A)", 99, Number( String.fromCharCode(0x0009) + 99 + String.fromCharCode(0x000A)) ); + + array[item++] = new TestCase( SECTION, "Number( 99 + String.fromCharCode(0x0009)", 99, Number( 99 + String.fromCharCode(0x0009)) ); + array[item++] = new TestCase( SECTION, "Number( 99 + String.fromCharCode(0x0020)", 99, Number( 99 + String.fromCharCode(0x0020)) ); + array[item++] = new TestCase( SECTION, "Number( 99 + String.fromCharCode(0x000C)", 99, Number( 99 + String.fromCharCode(0x000C)) ); + array[item++] = new TestCase( SECTION, "Number( 99 + String.fromCharCode(0x000D)", 99, Number( 99 + String.fromCharCode(0x000D)) ); + array[item++] = new TestCase( SECTION, "Number( 99 + String.fromCharCode(0x000B)", 99, Number( 99 + String.fromCharCode(0x000B)) ); + array[item++] = new TestCase( SECTION, "Number( 99 + String.fromCharCode(0x000A)", 99, Number( 99 + String.fromCharCode(0x000A)) ); + + + // StrNumericLiteral:::StrDecimalLiteral:::Infinity + + array[item++] = new TestCase( SECTION, "Number('Infinity')", Math.pow(10,10000), Number("Infinity") ); + array[item++] = new TestCase( SECTION, "Number('-Infinity')", -Math.pow(10,10000), Number("-Infinity") ); + array[item++] = new TestCase( SECTION, "Number('+Infinity')", Math.pow(10,10000), Number("+Infinity") ); + + // StrNumericLiteral::: StrDecimalLiteral ::: DecimalDigits . DecimalDigits opt ExponentPart opt + + array[item++] = new TestCase( SECTION, "Number('0')", 0, Number("0") ); + array[item++] = new TestCase( SECTION, "Number('-0')", -0, Number("-0") ); + array[item++] = new TestCase( SECTION, "Number('+0')", 0, Number("+0") ); + + array[item++] = new TestCase( SECTION, "Number('1')", 1, Number("1") ); + array[item++] = new TestCase( SECTION, "Number('-1')", -1, Number("-1") ); + array[item++] = new TestCase( SECTION, "Number('+1')", 1, Number("+1") ); + + array[item++] = new TestCase( SECTION, "Number('2')", 2, Number("2") ); + array[item++] = new TestCase( SECTION, "Number('-2')", -2, Number("-2") ); + array[item++] = new TestCase( SECTION, "Number('+2')", 2, Number("+2") ); + + array[item++] = new TestCase( SECTION, "Number('3')", 3, Number("3") ); + array[item++] = new TestCase( SECTION, "Number('-3')", -3, Number("-3") ); + array[item++] = new TestCase( SECTION, "Number('+3')", 3, Number("+3") ); + + array[item++] = new TestCase( SECTION, "Number('4')", 4, Number("4") ); + array[item++] = new TestCase( SECTION, "Number('-4')", -4, Number("-4") ); + array[item++] = new TestCase( SECTION, "Number('+4')", 4, Number("+4") ); + + array[item++] = new TestCase( SECTION, "Number('5')", 5, Number("5") ); + array[item++] = new TestCase( SECTION, "Number('-5')", -5, Number("-5") ); + array[item++] = new TestCase( SECTION, "Number('+5')", 5, Number("+5") ); + + array[item++] = new TestCase( SECTION, "Number('6')", 6, Number("6") ); + array[item++] = new TestCase( SECTION, "Number('-6')", -6, Number("-6") ); + array[item++] = new TestCase( SECTION, "Number('+6')", 6, Number("+6") ); + + array[item++] = new TestCase( SECTION, "Number('7')", 7, Number("7") ); + array[item++] = new TestCase( SECTION, "Number('-7')", -7, Number("-7") ); + array[item++] = new TestCase( SECTION, "Number('+7')", 7, Number("+7") ); + + array[item++] = new TestCase( SECTION, "Number('8')", 8, Number("8") ); + array[item++] = new TestCase( SECTION, "Number('-8')", -8, Number("-8") ); + array[item++] = new TestCase( SECTION, "Number('+8')", 8, Number("+8") ); + + array[item++] = new TestCase( SECTION, "Number('9')", 9, Number("9") ); + array[item++] = new TestCase( SECTION, "Number('-9')", -9, Number("-9") ); + array[item++] = new TestCase( SECTION, "Number('+9')", 9, Number("+9") ); + + array[item++] = new TestCase( SECTION, "Number('3.14159')", 3.14159, Number("3.14159") ); + array[item++] = new TestCase( SECTION, "Number('-3.14159')", -3.14159, Number("-3.14159") ); + array[item++] = new TestCase( SECTION, "Number('+3.14159')", 3.14159, Number("+3.14159") ); + + array[item++] = new TestCase( SECTION, "Number('3.')", 3, Number("3.") ); + array[item++] = new TestCase( SECTION, "Number('-3.')", -3, Number("-3.") ); + array[item++] = new TestCase( SECTION, "Number('+3.')", 3, Number("+3.") ); + + array[item++] = new TestCase( SECTION, "Number('3.e1')", 30, Number("3.e1") ); + array[item++] = new TestCase( SECTION, "Number('-3.e1')", -30, Number("-3.e1") ); + array[item++] = new TestCase( SECTION, "Number('+3.e1')", 30, Number("+3.e1") ); + + array[item++] = new TestCase( SECTION, "Number('3.e+1')", 30, Number("3.e+1") ); + array[item++] = new TestCase( SECTION, "Number('-3.e+1')", -30, Number("-3.e+1") ); + array[item++] = new TestCase( SECTION, "Number('+3.e+1')", 30, Number("+3.e+1") ); + + array[item++] = new TestCase( SECTION, "Number('3.e-1')", .30, Number("3.e-1") ); + array[item++] = new TestCase( SECTION, "Number('-3.e-1')", -.30, Number("-3.e-1") ); + array[item++] = new TestCase( SECTION, "Number('+3.e-1')", .30, Number("+3.e-1") ); + + // StrDecimalLiteral::: .DecimalDigits ExponentPart opt + + array[item++] = new TestCase( SECTION, "Number('.00001')", 0.00001, Number(".00001") ); + array[item++] = new TestCase( SECTION, "Number('+.00001')", 0.00001, Number("+.00001") ); + array[item++] = new TestCase( SECTION, "Number('-0.0001')", -0.00001, Number("-.00001") ); + + array[item++] = new TestCase( SECTION, "Number('.01e2')", 1, Number(".01e2") ); + array[item++] = new TestCase( SECTION, "Number('+.01e2')", 1, Number("+.01e2") ); + array[item++] = new TestCase( SECTION, "Number('-.01e2')", -1, Number("-.01e2") ); + + array[item++] = new TestCase( SECTION, "Number('.01e+2')", 1, Number(".01e+2") ); + array[item++] = new TestCase( SECTION, "Number('+.01e+2')", 1, Number("+.01e+2") ); + array[item++] = new TestCase( SECTION, "Number('-.01e+2')", -1, Number("-.01e+2") ); + + array[item++] = new TestCase( SECTION, "Number('.01e-2')", 0.0001, Number(".01e-2") ); + array[item++] = new TestCase( SECTION, "Number('+.01e-2')", 0.0001, Number("+.01e-2") ); + array[item++] = new TestCase( SECTION, "Number('-.01e-2')", -0.0001, Number("-.01e-2") ); + + // StrDecimalLiteral::: DecimalDigits ExponentPart opt + + array[item++] = new TestCase( SECTION, "Number('1234e5')", 123400000, Number("1234e5") ); + array[item++] = new TestCase( SECTION, "Number('+1234e5')", 123400000, Number("+1234e5") ); + array[item++] = new TestCase( SECTION, "Number('-1234e5')", -123400000, Number("-1234e5") ); + + array[item++] = new TestCase( SECTION, "Number('1234e+5')", 123400000, Number("1234e+5") ); + array[item++] = new TestCase( SECTION, "Number('+1234e+5')", 123400000, Number("+1234e+5") ); + array[item++] = new TestCase( SECTION, "Number('-1234e+5')", -123400000, Number("-1234e+5") ); + + array[item++] = new TestCase( SECTION, "Number('1234e-5')", 0.01234, Number("1234e-5") ); + array[item++] = new TestCase( SECTION, "Number('+1234e-5')", 0.01234, Number("+1234e-5") ); + array[item++] = new TestCase( SECTION, "Number('-1234e-5')", -0.01234, Number("-1234e-5") ); + + // StrNumericLiteral::: HexIntegerLiteral + + array[item++] = new TestCase( SECTION, "Number('0x0')", 0, Number("0x0")); + array[item++] = new TestCase( SECTION, "Number('0x1')", 1, Number("0x1")); + array[item++] = new TestCase( SECTION, "Number('0x2')", 2, Number("0x2")); + array[item++] = new TestCase( SECTION, "Number('0x3')", 3, Number("0x3")); + array[item++] = new TestCase( SECTION, "Number('0x4')", 4, Number("0x4")); + array[item++] = new TestCase( SECTION, "Number('0x5')", 5, Number("0x5")); + array[item++] = new TestCase( SECTION, "Number('0x6')", 6, Number("0x6")); + array[item++] = new TestCase( SECTION, "Number('0x7')", 7, Number("0x7")); + array[item++] = new TestCase( SECTION, "Number('0x8')", 8, Number("0x8")); + array[item++] = new TestCase( SECTION, "Number('0x9')", 9, Number("0x9")); + array[item++] = new TestCase( SECTION, "Number('0xa')", 10, Number("0xa")); + array[item++] = new TestCase( SECTION, "Number('0xb')", 11, Number("0xb")); + array[item++] = new TestCase( SECTION, "Number('0xc')", 12, Number("0xc")); + array[item++] = new TestCase( SECTION, "Number('0xd')", 13, Number("0xd")); + array[item++] = new TestCase( SECTION, "Number('0xe')", 14, Number("0xe")); + array[item++] = new TestCase( SECTION, "Number('0xf')", 15, Number("0xf")); + array[item++] = new TestCase( SECTION, "Number('0xA')", 10, Number("0xA")); + array[item++] = new TestCase( SECTION, "Number('0xB')", 11, Number("0xB")); + array[item++] = new TestCase( SECTION, "Number('0xC')", 12, Number("0xC")); + array[item++] = new TestCase( SECTION, "Number('0xD')", 13, Number("0xD")); + array[item++] = new TestCase( SECTION, "Number('0xE')", 14, Number("0xE")); + array[item++] = new TestCase( SECTION, "Number('0xF')", 15, Number("0xF")); + + array[item++] = new TestCase( SECTION, "Number('0X0')", 0, Number("0X0")); + array[item++] = new TestCase( SECTION, "Number('0X1')", 1, Number("0X1")); + array[item++] = new TestCase( SECTION, "Number('0X2')", 2, Number("0X2")); + array[item++] = new TestCase( SECTION, "Number('0X3')", 3, Number("0X3")); + array[item++] = new TestCase( SECTION, "Number('0X4')", 4, Number("0X4")); + array[item++] = new TestCase( SECTION, "Number('0X5')", 5, Number("0X5")); + array[item++] = new TestCase( SECTION, "Number('0X6')", 6, Number("0X6")); + array[item++] = new TestCase( SECTION, "Number('0X7')", 7, Number("0X7")); + array[item++] = new TestCase( SECTION, "Number('0X8')", 8, Number("0X8")); + array[item++] = new TestCase( SECTION, "Number('0X9')", 9, Number("0X9")); + array[item++] = new TestCase( SECTION, "Number('0Xa')", 10, Number("0Xa")); + array[item++] = new TestCase( SECTION, "Number('0Xb')", 11, Number("0Xb")); + array[item++] = new TestCase( SECTION, "Number('0Xc')", 12, Number("0Xc")); + array[item++] = new TestCase( SECTION, "Number('0Xd')", 13, Number("0Xd")); + array[item++] = new TestCase( SECTION, "Number('0Xe')", 14, Number("0Xe")); + array[item++] = new TestCase( SECTION, "Number('0Xf')", 15, Number("0Xf")); + array[item++] = new TestCase( SECTION, "Number('0XA')", 10, Number("0XA")); + array[item++] = new TestCase( SECTION, "Number('0XB')", 11, Number("0XB")); + array[item++] = new TestCase( SECTION, "Number('0XC')", 12, Number("0XC")); + array[item++] = new TestCase( SECTION, "Number('0XD')", 13, Number("0XD")); + array[item++] = new TestCase( SECTION, "Number('0XE')", 14, Number("0XE")); + array[item++] = new TestCase( SECTION, "Number('0XF')", 15, Number("0XF")); + + return ( array ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.3.1-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.3.1-2.js new file mode 100644 index 00000000000..c675e57eb71 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.3.1-2.js @@ -0,0 +1,89 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 9.3.1-2.js + ECMA Section: 9.3 Type Conversion: ToNumber + Description: rules for converting an argument to a number. + see 9.3.1 for cases for converting strings to numbers. + special cases: + undefined NaN + Null NaN + Boolean 1 if true; +0 if false + Number the argument ( no conversion ) + String see test 9.3.1 + Object see test 9.3-1 + + This tests special cases of ToNumber(string) that are + not covered in 9.3.1-1.js. + + Author: christine@netscape.com + Date: 10 july 1997 + +*/ + var SECTION = "9.3.1-2"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "ToNumber applied to the String type"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // A StringNumericLiteral may not use octal notation + + array[item++] = new TestCase( SECTION, "Number(00)", 0, Number("00")); + array[item++] = new TestCase( SECTION, "Number(01)", 1, Number("01")); + array[item++] = new TestCase( SECTION, "Number(02)", 2, Number("02")); + array[item++] = new TestCase( SECTION, "Number(03)", 3, Number("03")); + array[item++] = new TestCase( SECTION, "Number(04)", 4, Number("04")); + array[item++] = new TestCase( SECTION, "Number(05)", 5, Number("05")); + array[item++] = new TestCase( SECTION, "Number(06)", 6, Number("06")); + array[item++] = new TestCase( SECTION, "Number(07)", 7, Number("07")); + array[item++] = new TestCase( SECTION, "Number(010)", 10, Number("010")); + array[item++] = new TestCase( SECTION, "Number(011)", 11, Number("011")); + + // A StringNumericLIteral may have any number of leading 0 digits + + array[item++] = new TestCase( SECTION, "Number(001)", 1, Number("001")); + array[item++] = new TestCase( SECTION, "Number(0001)", 1, Number("0001")); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.3.1-3.js b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.3.1-3.js new file mode 100644 index 00000000000..083226e5d75 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.3.1-3.js @@ -0,0 +1,726 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 9.3.1-3.js + ECMA Section: 9.3 Type Conversion: ToNumber + Description: rules for converting an argument to a number. + see 9.3.1 for cases for converting strings to numbers. + special cases: + undefined NaN + Null NaN + Boolean 1 if true; +0 if false + Number the argument ( no conversion ) + String see test 9.3.1 + Object see test 9.3-1 + + + Test cases provided by waldemar. + + + Author: christine@netscape.com + Date: 10 june 1998 + +*/ + +var SECTION = "9.3.1-3"; +var VERSION = "ECMA_1"; + startTest(); +var BUGNUMBER="129087"; + +var TITLE = "Number To String, String To Number"; + +writeHeaderToLog( SECTION + " "+ TITLE); + +var testcases = new Array(); + + +// test case from http://scopus.mcom.com/bugsplat/show_bug.cgi?id=312954 +var z = 0; + +testcases[tc++] = new TestCase( + SECTION, + "var z = 0; print(1/-z)", + -Infinity, + 1/-z ); + + + + + +// test cases from bug http://scopus.mcom.com/bugsplat/show_bug.cgi?id=122882 + + + +testcases[tc++] = new TestCase( SECTION, + '- -"0x80000000"', + 2147483648, + - -"0x80000000" ); + +testcases[tc++] = new TestCase( SECTION, + '- -"0x100000000"', + 4294967296, + - -"0x100000000" ); + +testcases[tc++] = new TestCase( SECTION, + '- "-0x123456789abcde8"', + NaN, + - "-0x123456789abcde8" ); + +// Convert some large numbers to string + + +testcases[tc++] = new TestCase( SECTION, + "1e2000 +''", + "Infinity", + 1e2000 +"" ); + +testcases[tc++] = new TestCase( SECTION, + "1e2000", + Infinity, + 1e2000 ); + +testcases[tc++] = new TestCase( SECTION, + "-1e2000 +''", + "-Infinity", + -1e2000 +"" ); + +testcases[tc++] = new TestCase( SECTION, + "-\"1e2000\"", + -Infinity, + -"1e2000" ); + +testcases[tc++] = new TestCase( SECTION, + "-\"-1e2000\" +''", + "Infinity", + -"-1e2000" +"" ); + +testcases[tc++] = new TestCase( SECTION, + "1e-2000", + 0, + 1e-2000 ); + +testcases[tc++] = new TestCase( SECTION, + "1/1e-2000", + Infinity, + 1/1e-2000 ); + +// convert some strings to large numbers + +testcases[tc++] = new TestCase( SECTION, + "1/-1e-2000", + -Infinity, + 1/-1e-2000 ); + +testcases[tc++] = new TestCase( SECTION, + "1/\"1e-2000\"", + Infinity, + 1/"1e-2000" ); + +testcases[tc++] = new TestCase( SECTION, + "1/\"-1e-2000\"", + -Infinity, + 1/"-1e-2000" ); + +testcases[tc++] = new TestCase( SECTION, + "parseFloat(\"1e2000\")", + Infinity, + parseFloat("1e2000") ); + +testcases[tc++] = new TestCase( SECTION, + "parseFloat(\"1e-2000\")", + 0, + parseFloat("1e-2000") ); + +testcases[tc++] = new TestCase( SECTION, + "1.7976931348623157E+308", + 1.7976931348623157e+308, + 1.7976931348623157E+308 ); + +testcases[tc++] = new TestCase( SECTION, + "1.7976931348623158e+308", + 1.7976931348623157e+308, + 1.7976931348623158e+308 ); + +testcases[tc++] = new TestCase( SECTION, + "1.7976931348623159e+308", + Infinity, + 1.7976931348623159e+308 ); + +s = +"17976931348623158079372897140530341507993413271003782693617377898044496829276475094664901797758720709633028641669288791094655554785194040263065748867150582068"; + +testcases[tc++] = new TestCase( SECTION, + "s = " + s +"; s +="+ +"\"190890200070838367627385484581771153176447573027006985557136695962284291481986083493647529271907416844436551070434271155969950809304288017790417449779\""+ + ++"; s", +"17976931348623158079372897140530341507993413271003782693617377898044496829276475094664901797758720709633028641669288791094655554785194040263065748867150582068190890200070838367627385484581771153176447573027006985557136695962284291481986083493647529271907416844436551070434271155969950809304288017790417449779", +s += +"190890200070838367627385484581771153176447573027006985557136695962284291481986083493647529271907416844436551070434271155969950809304288017790417449779" +); + +s1 = s+1; + +testcases[tc++] = new TestCase( SECTION, +"s1 = s+1; s1", +"179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791", +s1 ); + +/***** This answer is preferred but -Infinity is also acceptable here *****/ + +testcases[tc++] = new TestCase( SECTION, +"-s1 == Infinity || s1 == 1.7976931348623157e+308", +true, +-s1 == Infinity || s1 == 1.7976931348623157e+308 ); + +s2 = s + 2; + +testcases[tc++] = new TestCase( SECTION, +"s2 = s+2; s2", +"179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792", +s2 ); + +// ***** This answer is preferred but -1.7976931348623157e+308 is also acceptable here ***** +testcases[tc++] = new TestCase( SECTION, +"-s2 == -Infinity || -s2 == -1.7976931348623157e+308 ", +true, +-s2 == -Infinity || -s2 == -1.7976931348623157e+308 ); + +s3 = s+3; + +testcases[tc++] = new TestCase( SECTION, +"s3 = s+3; s3", +"179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497793", +s3 ); + +//***** This answer is preferred but -1.7976931348623157e+308 is also acceptable here ***** + +testcases[tc++] = new TestCase( SECTION, +"-s3 == -Infinity || -s3 == -1.7976931348623157e+308", +true, +-s3 == -Infinity || -s3 == -1.7976931348623157e+308 ); + + +//***** This answer is preferred but Infinity is also acceptable here ***** + +testcases[tc++] = new TestCase( SECTION, +"parseInt(s1,10) == 1.7976931348623157e+308 || parseInt(s1,10) == Infinity", +true, +parseInt(s1,10) == 1.7976931348623157e+308 || parseInt(s1,10) == Infinity ); + +//***** This answer is preferred but 1.7976931348623157e+308 is also acceptable here ***** +testcases[tc++] = new TestCase( SECTION, +"parseInt(s2,10) == Infinity || parseInt(s2,10) == 1.7976931348623157e+308", +true , +parseInt(s2,10) == Infinity || parseInt(s2,10) == 1.7976931348623157e+308 ); + +//***** This answer is preferred but Infinity is also acceptable here ***** + +testcases[tc++] = new TestCase( SECTION, +"parseInt(s1) == 1.7976931348623157e+308 || parseInt(s1) == Infinity", +true, +parseInt(s1) == 1.7976931348623157e+308 || parseInt(s1) == Infinity); + +//***** This answer is preferred but 1.7976931348623157e+308 is also acceptable here ***** +testcases[tc++] = new TestCase( SECTION, +"parseInt(s2) == Infinity || parseInt(s2) == 1.7976931348623157e+308", +true, +parseInt(s2) == Infinity || parseInt(s2) == 1.7976931348623157e+308 ); + +testcases[tc++] = new TestCase( SECTION, + "0x12345678", + 305419896, + 0x12345678 ); + +testcases[tc++] = new TestCase( SECTION, + "0x80000000", + 2147483648, + 0x80000000 ); + +testcases[tc++] = new TestCase( SECTION, + "0xffffffff", + 4294967295, + 0xffffffff ); + +testcases[tc++] = new TestCase( SECTION, + "0x100000000", + 4294967296, + 0x100000000 ); + +testcases[tc++] = new TestCase( SECTION, + "077777777777777777", + 2251799813685247, + 077777777777777777 ); + +testcases[tc++] = new TestCase( SECTION, + "077777777777777776", + 2251799813685246, + 077777777777777776 ); + +testcases[tc++] = new TestCase( SECTION, + "0x1fffffffffffff", + 9007199254740991, + 0x1fffffffffffff ); + +testcases[tc++] = new TestCase( SECTION, + "0x20000000000000", + 9007199254740992, + 0x20000000000000 ); + +testcases[tc++] = new TestCase( SECTION, + "0x20123456789abc", + 9027215253084860, + 0x20123456789abc ); + +testcases[tc++] = new TestCase( SECTION, + "0x20123456789abd", + 9027215253084860, + 0x20123456789abd ); + +testcases[tc++] = new TestCase( SECTION, + "0x20123456789abe", + 9027215253084862, + 0x20123456789abe ); + +testcases[tc++] = new TestCase( SECTION, + "0x20123456789abf", + 9027215253084864, + 0x20123456789abf ); + +/***** These test the round-to-nearest-or-even-if-equally-close rule *****/ + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000080", + 1152921504606847000, + 0x1000000000000080 ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000081", + 1152921504606847200, + 0x1000000000000081 ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000100", + 1152921504606847200, + 0x1000000000000100 ); +testcases[tc++] = new TestCase( SECTION, + "0x100000000000017f", + 1152921504606847200, + 0x100000000000017f ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000180", + 1152921504606847500, + 0x1000000000000180 ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000181", + 1152921504606847500, + 0x1000000000000181 ); + +testcases[tc++] = new TestCase( SECTION, + "0x10000000000001f0", + 1152921504606847500, + 0x10000000000001f0 ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000200", + 1152921504606847500, + 0x1000000000000200 ); + +testcases[tc++] = new TestCase( SECTION, + "0x100000000000027f", + 1152921504606847500, + 0x100000000000027f ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000280", + 1152921504606847500, + 0x1000000000000280 ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000281", + 1152921504606847700, + 0x1000000000000281 ); + +testcases[tc++] = new TestCase( SECTION, + "0x10000000000002ff", + 1152921504606847700, + 0x10000000000002ff ); + +testcases[tc++] = new TestCase( SECTION, + "0x1000000000000300", + 1152921504606847700, + 0x1000000000000300 ); + +testcases[tc++] = new TestCase( SECTION, + "0x10000000000000000", + 18446744073709552000, + 0x10000000000000000 ); + +testcases[tc++] = new TestCase( SECTION, +"parseInt(\"000000100000000100100011010001010110011110001001101010111100\",2)", +9027215253084860, +parseInt("000000100000000100100011010001010110011110001001101010111100",2) ); + +testcases[tc++] = new TestCase( SECTION, +"parseInt(\"000000100000000100100011010001010110011110001001101010111101\",2)", +9027215253084860, +parseInt("000000100000000100100011010001010110011110001001101010111101",2) ); + +testcases[tc++] = new TestCase( SECTION, +"parseInt(\"000000100000000100100011010001010110011110001001101010111111\",2)", +9027215253084864, +parseInt("000000100000000100100011010001010110011110001001101010111111",2) ); + +testcases[tc++] = new TestCase( SECTION, +"parseInt(\"0000001000000001001000110100010101100111100010011010101111010\",2)", +18054430506169720, +parseInt("0000001000000001001000110100010101100111100010011010101111010",2)); + +testcases[tc++] = new TestCase( SECTION, +"parseInt(\"0000001000000001001000110100010101100111100010011010101111011\",2)", +18054430506169724, +parseInt("0000001000000001001000110100010101100111100010011010101111011",2) ); + +testcases[tc++] = new TestCase( SECTION, +"parseInt(\"0000001000000001001000110100010101100111100010011010101111100\",2)", +18054430506169724, +parseInt("0000001000000001001000110100010101100111100010011010101111100",2)); + +testcases[tc++] = new TestCase( SECTION, +"parseInt(\"0000001000000001001000110100010101100111100010011010101111110\",2)", +18054430506169728, +parseInt("0000001000000001001000110100010101100111100010011010101111110",2)); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"yz\",35)", + 34, + parseInt("yz",35) ); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"yz\",36)", + 1259, + parseInt("yz",36) ); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"yz\",37)", + NaN, + parseInt("yz",37) ); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"+77\")", + 77, + parseInt("+77") ); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"-77\",9)", + -70, + parseInt("-77",9) ); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"\\u20001234\\u2000\")", + 1234, + parseInt("\u20001234\u2000") ); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"123456789012345678\")", + 123456789012345680, + parseInt("123456789012345678") ); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"9\",8)", + NaN, + parseInt("9",8) ); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"1e2\")", + 1, + parseInt("1e2") ); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"1.9999999999999999999\")", + 1, + parseInt("1.9999999999999999999") ); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"0x10\")", + 16, + parseInt("0x10") ); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"0x10\",10)", + 0, + parseInt("0x10",10) ); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"0022\")", + 22, + parseInt("0022") ); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"0022\",10)", + 22, + parseInt("0022",10) ); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"0x1000000000000080\")", + 1152921504606847000, + parseInt("0x1000000000000080") ); + +testcases[tc++] = new TestCase( SECTION, + "parseInt(\"0x1000000000000081\")", + 1152921504606847200, + parseInt("0x1000000000000081") ); + +s = +"0xFFFFFFFFFFFFF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + +testcases[tc++] = new TestCase( SECTION, "s = "+ +"\"0xFFFFFFFFFFFFF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\";"+ +"s", +"0xFFFFFFFFFFFFF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +s ); + + +testcases[tc++] = new TestCase( SECTION, "s +="+ +"\"0000000000000000000000000000000000000\"; s", +"0xFFFFFFFFFFFFF800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +s += "0000000000000000000000000000000000000" ); + +testcases[tc++] = new TestCase( SECTION, "-s", +-1.7976931348623157e+308, +-s ); + +s = +"0xFFFFFFFFFFFFF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + +testcases[tc++] = new TestCase( SECTION, "s ="+ +"\"0xFFFFFFFFFFFFF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\";"+ +"s", +"0xFFFFFFFFFFFFF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +s ); + +testcases[tc++] = new TestCase( SECTION, +"s += \"0000000000000000000000000000000000001\"", +"0xFFFFFFFFFFFFF800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001", +s += "0000000000000000000000000000000000001" ); + +testcases[tc++] = new TestCase( SECTION, +"-s", +-1.7976931348623157e+308, +-s ); + +s = +"0xFFFFFFFFFFFFFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + +testcases[tc++] = new TestCase( SECTION, +"s ="+ +"\"0xFFFFFFFFFFFFFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\";"+ +"s", +"0xFFFFFFFFFFFFFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +s ); + + +testcases[tc++] = new TestCase( SECTION, +"s += \"0000000000000000000000000000000000000\"", +"0xFFFFFFFFFFFFFC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +s += "0000000000000000000000000000000000000"); + + +testcases[tc++] = new TestCase( SECTION, +"-s", +-Infinity, +-s ); + +s = +"0xFFFFFFFFFFFFFB0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + +testcases[tc++] = new TestCase( SECTION, +"s = "+ +"\"0xFFFFFFFFFFFFFB0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\";s", +"0xFFFFFFFFFFFFFB0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +s); + +testcases[tc++] = new TestCase( SECTION, +"s += \"0000000000000000000000000000000000001\"", +"0xFFFFFFFFFFFFFB00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001", +s += "0000000000000000000000000000000000001" ); + +testcases[tc++] = new TestCase( SECTION, +"-s", +-1.7976931348623157e+308, +-s ); + +testcases[tc++] = new TestCase( SECTION, +"s += \"0\"", +"0xFFFFFFFFFFFFFB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010", +s += "0" ); + +testcases[tc++] = new TestCase( SECTION, +"-s", +-Infinity, +-s ); + +testcases[tc++] = new TestCase( SECTION, +"parseInt(s)", +Infinity, +parseInt(s) ); + +testcases[tc++] = new TestCase( SECTION, +"parseInt(s,32)", +0, +parseInt(s,32) ); + +testcases[tc++] = new TestCase( SECTION, +"parseInt(s,36)", +Infinity, +parseInt(s,36) ); + +testcases[tc++] = new TestCase( SECTION, + "-\"\"", + 0, + -"" ); + +testcases[tc++] = new TestCase( SECTION, + "-\" \"", + 0, + -" " ); + +testcases[tc++] = new TestCase( SECTION, + "-\"999\"", + -999, + -"999" ); + +testcases[tc++] = new TestCase( SECTION, + "-\" 999\"", + -999, + -" 999" ); + +testcases[tc++] = new TestCase( SECTION, + "-\"\\t999\"", + -999, + -"\t999" ); + +testcases[tc++] = new TestCase( SECTION, + "-\"013 \"", + -13, + -"013 " ); + +testcases[tc++] = new TestCase( SECTION, + "-\"999\\t\"", + -999, + -"999\t" ); + +testcases[tc++] = new TestCase( SECTION, + "-\"-Infinity\"", + Infinity, + -"-Infinity" ); + +testcases[tc++] = new TestCase( SECTION, + "-\"-infinity\"", + NaN, + -"-infinity" ); + + +testcases[tc++] = new TestCase( SECTION, + "-\"+Infinity\"", + -Infinity, + -"+Infinity" ); + +testcases[tc++] = new TestCase( SECTION, + "-\"+Infiniti\"", + NaN, + -"+Infiniti" ); + +testcases[tc++] = new TestCase( SECTION, + "- -\"0x80000000\"", + 2147483648, + - -"0x80000000" ); + +testcases[tc++] = new TestCase( SECTION, + "- -\"0x100000000\"", + 4294967296, + - -"0x100000000" ); + +testcases[tc++] = new TestCase( SECTION, + "- \"-0x123456789abcde8\"", + NaN, + - "-0x123456789abcde8" ); + +// the following two tests are not strictly ECMA 1.0 + +testcases[tc++] = new TestCase( SECTION, + "-\"\\u20001234\\u2001\"", + -1234, + -"\u20001234\u2001" ); + +testcases[tc++] = new TestCase( SECTION, + "-\"\\u20001234\\0\"", + NaN, + -"\u20001234\0" ); + +testcases[tc++] = new TestCase( SECTION, + "-\"0x10\"", + -16, + -"0x10" ); + +testcases[tc++] = new TestCase( SECTION, + "-\"+\"", + NaN, + -"+" ); + +testcases[tc++] = new TestCase( SECTION, + "-\"-\"", + NaN, + -"-" ); + +testcases[tc++] = new TestCase( SECTION, + "-\"-0-\"", + NaN, + -"-0-" ); + +testcases[tc++] = new TestCase( SECTION, + "-\"1e-\"", + NaN, + -"1e-" ); + +testcases[tc++] = new TestCase( SECTION, + "-\"1e-1\"", + -0.1, + -"1e-1" ); + +test(); + +function test(){ + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.3.js b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.3.js new file mode 100644 index 00000000000..464569240b5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.3.js @@ -0,0 +1,89 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 9.3.js + ECMA Section: 9.3 Type Conversion: ToNumber + Description: rules for converting an argument to a number. + see 9.3.1 for cases for converting strings to numbers. + special cases: + undefined NaN + Null NaN + Boolean 1 if true; +0 if false + Number the argument ( no conversion ) + String see test 9.3.1 + Object see test 9.3-1 + + For ToNumber applied to the String type, see test 9.3.1. + For ToNumber applied to the object type, see test 9.3-1. + + Author: christine@netscape.com + Date: 10 july 1997 + +*/ + var SECTION = "9.3"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "ToNumber"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // special cases here + + array[item++] = new TestCase( SECTION, "Number()", 0, Number() ); + array[item++] = new TestCase( SECTION, "Number(eval('var x'))", Number.NaN, Number(eval("var x")) ); + array[item++] = new TestCase( SECTION, "Number(void 0)", Number.NaN, Number(void 0) ); + array[item++] = new TestCase( SECTION, "Number(null)", 0, Number(null) ); + array[item++] = new TestCase( SECTION, "Number(true)", 1, Number(true) ); + array[item++] = new TestCase( SECTION, "Number(false)", 0, Number(false) ); + array[item++] = new TestCase( SECTION, "Number(0)", 0, Number(0) ); + array[item++] = new TestCase( SECTION, "Number(-0)", -0, Number(-0) ); + array[item++] = new TestCase( SECTION, "Number(1)", 1, Number(1) ); + array[item++] = new TestCase( SECTION, "Number(-1)", -1, Number(-1) ); + array[item++] = new TestCase( SECTION, "Number(Number.MAX_VALUE)", 1.7976931348623157e308, Number(Number.MAX_VALUE) ); + array[item++] = new TestCase( SECTION, "Number(Number.MIN_VALUE)", 5e-324, Number(Number.MIN_VALUE) ); + + array[item++] = new TestCase( SECTION, "Number(Number.NaN)", Number.NaN, Number(Number.NaN) ); + array[item++] = new TestCase( SECTION, "Number(Number.POSITIVE_INFINITY)", Number.POSITIVE_INFINITY, Number(Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "Number(Number.NEGATIVE_INFINITY)", Number.NEGATIVE_INFINITY, Number(Number.NEGATIVE_INFINITY) ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.4-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.4-1.js new file mode 100644 index 00000000000..4dd331d3f11 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.4-1.js @@ -0,0 +1,120 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 9.4-1.js + ECMA Section: 9.4 ToInteger + Description: 1. Call ToNumber on the input argument + 2. If Result(1) is NaN, return +0 + 3. If Result(1) is +0, -0, Infinity, or -Infinity, + return Result(1). + 4. Compute sign(Result(1)) * floor(abs(Result(1))). + 5. Return Result(4). + + To test ToInteger, this test uses new Date(value), + 15.9.3.7. The Date constructor sets the [[Value]] + property of the new object to TimeClip(value), which + uses the rules: + + TimeClip(time) + 1. If time is not finite, return NaN + 2. If abs(Result(1)) > 8.64e15, return NaN + 3. Return an implementation dependent choice of either + ToInteger(Result(2)) or ToInteger(Result(2)) + (+0) + (Adding a positive 0 converts -0 to +0). + + This tests ToInteger for values -8.64e15 > value > 8.64e15, + not including -0 and +0. + + For additional special cases (0, +0, Infinity, -Infinity, + and NaN, see 9.4-2.js). For value is String, see 9.4-3.js. + + Author: christine@netscape.com + Date: 10 july 1997 + +*/ + var SECTION = "9.4-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "ToInteger"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // some special cases + + array[item++] = new TestCase( SECTION, "td = new Date(Number.NaN); td.valueOf()", Number.NaN, eval("td = new Date(Number.NaN); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(Infinity); td.valueOf()", Number.NaN, eval("td = new Date(Number.POSITIVE_INFINITY); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(-Infinity); td.valueOf()", Number.NaN, eval("td = new Date(Number.NEGATIVE_INFINITY); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(-0); td.valueOf()", -0, eval("td = new Date(-0); td.valueOf()" ) ); + array[item++] = new TestCase( SECTION, "td = new Date(0); td.valueOf()", 0, eval("td = new Date(0); td.valueOf()") ); + + // value is not an integer + + array[item++] = new TestCase( SECTION, "td = new Date(3.14159); td.valueOf()", 3, eval("td = new Date(3.14159); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(Math.PI); td.valueOf()", 3, eval("td = new Date(Math.PI); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(-Math.PI);td.valueOf()", -3, eval("td = new Date(-Math.PI);td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(3.14159e2); td.valueOf()", 314, eval("td = new Date(3.14159e2); td.valueOf()") ); + + array[item++] = new TestCase( SECTION, "td = new Date(.692147e1); td.valueOf()", 6, eval("td = new Date(.692147e1);td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(-.692147e1);td.valueOf()", -6, eval("td = new Date(-.692147e1);td.valueOf()") ); + + // value is not a number + + array[item++] = new TestCase( SECTION, "td = new Date(true); td.valueOf()", 1, eval("td = new Date(true); td.valueOf()" ) ); + array[item++] = new TestCase( SECTION, "td = new Date(false); td.valueOf()", 0, eval("td = new Date(false); td.valueOf()") ); + + array[item++] = new TestCase( SECTION, "td = new Date(new Number(Math.PI)); td.valueOf()", 3, eval("td = new Date(new Number(Math.PI)); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(new Number(Math.PI)); td.valueOf()", 3, eval("td = new Date(new Number(Math.PI)); td.valueOf()") ); + + // edge cases + array[item++] = new TestCase( SECTION, "td = new Date(8.64e15); td.valueOf()", 8.64e15, eval("td = new Date(8.64e15); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(-8.64e15); td.valueOf()", -8.64e15, eval("td = new Date(-8.64e15); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(8.64e-15); td.valueOf()", 0, eval("td = new Date(8.64e-15); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(-8.64e-15); td.valueOf()", 0, eval("td = new Date(-8.64e-15); td.valueOf()") ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.4-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.4-2.js new file mode 100644 index 00000000000..4dd331d3f11 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.4-2.js @@ -0,0 +1,120 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 9.4-1.js + ECMA Section: 9.4 ToInteger + Description: 1. Call ToNumber on the input argument + 2. If Result(1) is NaN, return +0 + 3. If Result(1) is +0, -0, Infinity, or -Infinity, + return Result(1). + 4. Compute sign(Result(1)) * floor(abs(Result(1))). + 5. Return Result(4). + + To test ToInteger, this test uses new Date(value), + 15.9.3.7. The Date constructor sets the [[Value]] + property of the new object to TimeClip(value), which + uses the rules: + + TimeClip(time) + 1. If time is not finite, return NaN + 2. If abs(Result(1)) > 8.64e15, return NaN + 3. Return an implementation dependent choice of either + ToInteger(Result(2)) or ToInteger(Result(2)) + (+0) + (Adding a positive 0 converts -0 to +0). + + This tests ToInteger for values -8.64e15 > value > 8.64e15, + not including -0 and +0. + + For additional special cases (0, +0, Infinity, -Infinity, + and NaN, see 9.4-2.js). For value is String, see 9.4-3.js. + + Author: christine@netscape.com + Date: 10 july 1997 + +*/ + var SECTION = "9.4-1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "ToInteger"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = getTestCases(); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + // some special cases + + array[item++] = new TestCase( SECTION, "td = new Date(Number.NaN); td.valueOf()", Number.NaN, eval("td = new Date(Number.NaN); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(Infinity); td.valueOf()", Number.NaN, eval("td = new Date(Number.POSITIVE_INFINITY); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(-Infinity); td.valueOf()", Number.NaN, eval("td = new Date(Number.NEGATIVE_INFINITY); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(-0); td.valueOf()", -0, eval("td = new Date(-0); td.valueOf()" ) ); + array[item++] = new TestCase( SECTION, "td = new Date(0); td.valueOf()", 0, eval("td = new Date(0); td.valueOf()") ); + + // value is not an integer + + array[item++] = new TestCase( SECTION, "td = new Date(3.14159); td.valueOf()", 3, eval("td = new Date(3.14159); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(Math.PI); td.valueOf()", 3, eval("td = new Date(Math.PI); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(-Math.PI);td.valueOf()", -3, eval("td = new Date(-Math.PI);td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(3.14159e2); td.valueOf()", 314, eval("td = new Date(3.14159e2); td.valueOf()") ); + + array[item++] = new TestCase( SECTION, "td = new Date(.692147e1); td.valueOf()", 6, eval("td = new Date(.692147e1);td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(-.692147e1);td.valueOf()", -6, eval("td = new Date(-.692147e1);td.valueOf()") ); + + // value is not a number + + array[item++] = new TestCase( SECTION, "td = new Date(true); td.valueOf()", 1, eval("td = new Date(true); td.valueOf()" ) ); + array[item++] = new TestCase( SECTION, "td = new Date(false); td.valueOf()", 0, eval("td = new Date(false); td.valueOf()") ); + + array[item++] = new TestCase( SECTION, "td = new Date(new Number(Math.PI)); td.valueOf()", 3, eval("td = new Date(new Number(Math.PI)); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(new Number(Math.PI)); td.valueOf()", 3, eval("td = new Date(new Number(Math.PI)); td.valueOf()") ); + + // edge cases + array[item++] = new TestCase( SECTION, "td = new Date(8.64e15); td.valueOf()", 8.64e15, eval("td = new Date(8.64e15); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(-8.64e15); td.valueOf()", -8.64e15, eval("td = new Date(-8.64e15); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(8.64e-15); td.valueOf()", 0, eval("td = new Date(8.64e-15); td.valueOf()") ); + array[item++] = new TestCase( SECTION, "td = new Date(-8.64e-15); td.valueOf()", 0, eval("td = new Date(-8.64e-15); td.valueOf()") ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.5-2.js b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.5-2.js new file mode 100644 index 00000000000..598cce78ff4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.5-2.js @@ -0,0 +1,171 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 9.5-2.js + ECMA Section: 9.5 Type Conversion: ToInt32 + Description: rules for converting an argument to a signed 32 bit integer + + this test uses << 0 to convert the argument to a 32bit + integer. + + The operator ToInt32 converts its argument to one of 2^32 + integer values in the range -2^31 through 2^31 inclusive. + This operator functions as follows: + + 1 call ToNumber on argument + 2 if result is NaN, 0, -0, return 0 + 3 compute (sign (result(1)) * floor(abs(result 1))) + 4 compute result(3) modulo 2^32: + 5 if result(4) is greater than or equal to 2^31, return + result(5)-2^32. otherwise, return result(5) + + special cases: + -0 returns 0 + Infinity returns 0 + -Infinity returns 0 + ToInt32(ToUint32(x)) == ToInt32(x) for all values of x + Numbers greater than 2^31 (see step 5 above) + (note http://bugzilla.mozilla.org/show_bug.cgi?id=120083) + + Author: christine@netscape.com + Date: 17 july 1997 +*/ + var SECTION = "9.5-2"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " ToInt32"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function ToInt32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + + n = (sign * Math.floor( Math.abs(n) )) % Math.pow(2,32); + if ( sign == -1 ) { + n = ( n < -Math.pow(2,31) ) ? n + Math.pow(2,32) : n; + } else{ + n = ( n >= Math.pow(2,31) ) ? n - Math.pow(2,32) : n; + } + + return ( n ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "0 << 0", 0, 0 << 0 ); + array[item++] = new TestCase( SECTION, "-0 << 0", 0, -0 << 0 ); + array[item++] = new TestCase( SECTION, "Infinity << 0", 0, "Infinity" << 0 ); + array[item++] = new TestCase( SECTION, "-Infinity << 0", 0, "-Infinity" << 0 ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY << 0", 0, Number.POSITIVE_INFINITY << 0 ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY << 0", 0, Number.NEGATIVE_INFINITY << 0 ); + array[item++] = new TestCase( SECTION, "Number.NaN << 0", 0, Number.NaN << 0 ); + + array[item++] = new TestCase( SECTION, "Number.MIN_VALUE << 0", 0, Number.MIN_VALUE << 0 ); + array[item++] = new TestCase( SECTION, "-Number.MIN_VALUE << 0", 0, -Number.MIN_VALUE << 0 ); + array[item++] = new TestCase( SECTION, "0.1 << 0", 0, 0.1 << 0 ); + array[item++] = new TestCase( SECTION, "-0.1 << 0", 0, -0.1 << 0 ); + array[item++] = new TestCase( SECTION, "1 << 0", 1, 1 << 0 ); + array[item++] = new TestCase( SECTION, "1.1 << 0", 1, 1.1 << 0 ); + array[item++] = new TestCase( SECTION, "-1 << 0", ToInt32(-1), -1 << 0 ); + + + array[item++] = new TestCase( SECTION, "2147483647 << 0", ToInt32(2147483647), 2147483647 << 0 ); + array[item++] = new TestCase( SECTION, "2147483648 << 0", ToInt32(2147483648), 2147483648 << 0 ); + array[item++] = new TestCase( SECTION, "2147483649 << 0", ToInt32(2147483649), 2147483649 << 0 ); + + array[item++] = new TestCase( SECTION, "(Math.pow(2,31)-1) << 0", ToInt32(2147483647), (Math.pow(2,31)-1) << 0 ); + array[item++] = new TestCase( SECTION, "Math.pow(2,31) << 0", ToInt32(2147483648), Math.pow(2,31) << 0 ); + array[item++] = new TestCase( SECTION, "(Math.pow(2,31)+1) << 0", ToInt32(2147483649), (Math.pow(2,31)+1) << 0 ); + + array[item++] = new TestCase( SECTION, "(Math.pow(2,32)-1) << 0", ToInt32(4294967295), (Math.pow(2,32)-1) << 0 ); + array[item++] = new TestCase( SECTION, "(Math.pow(2,32)) << 0", ToInt32(4294967296), (Math.pow(2,32)) << 0 ); + array[item++] = new TestCase( SECTION, "(Math.pow(2,32)+1) << 0", ToInt32(4294967297), (Math.pow(2,32)+1) << 0 ); + + array[item++] = new TestCase( SECTION, "4294967295 << 0", ToInt32(4294967295), 4294967295 << 0 ); + array[item++] = new TestCase( SECTION, "4294967296 << 0", ToInt32(4294967296), 4294967296 << 0 ); + array[item++] = new TestCase( SECTION, "4294967297 << 0", ToInt32(4294967297), 4294967297 << 0 ); + + array[item++] = new TestCase( SECTION, "'2147483647' << 0", ToInt32(2147483647), '2147483647' << 0 ); + array[item++] = new TestCase( SECTION, "'2147483648' << 0", ToInt32(2147483648), '2147483648' << 0 ); + array[item++] = new TestCase( SECTION, "'2147483649' << 0", ToInt32(2147483649), '2147483649' << 0 ); + + array[item++] = new TestCase( SECTION, "'4294967295' << 0", ToInt32(4294967295), '4294967295' << 0 ); + array[item++] = new TestCase( SECTION, "'4294967296' << 0", ToInt32(4294967296), '4294967296' << 0 ); + array[item++] = new TestCase( SECTION, "'4294967297' << 0", ToInt32(4294967297), '4294967297' << 0 ); + + array[item++] = new TestCase( SECTION, "-2147483647 << 0", ToInt32(-2147483647), -2147483647 << 0 ); + array[item++] = new TestCase( SECTION, "-2147483648 << 0", ToInt32(-2147483648), -2147483648 << 0 ); + array[item++] = new TestCase( SECTION, "-2147483649 << 0", ToInt32(-2147483649), -2147483649 << 0 ); + + array[item++] = new TestCase( SECTION, "-4294967295 << 0", ToInt32(-4294967295), -4294967295 << 0 ); + array[item++] = new TestCase( SECTION, "-4294967296 << 0", ToInt32(-4294967296), -4294967296 << 0 ); + array[item++] = new TestCase( SECTION, "-4294967297 << 0", ToInt32(-4294967297), -4294967297 << 0 ); + + /* + * Numbers between 2^31 and 2^32 will have a negative ToInt32 per ECMA (see step 5 of introduction) + * (These are by stevechapel@earthlink.net; cf. http://bugzilla.mozilla.org/show_bug.cgi?id=120083) + */ + array[item++] = new TestCase( SECTION, "2147483648.25 << 0", ToInt32(2147483648.25), 2147483648.25 << 0 ); + array[item++] = new TestCase( SECTION, "2147483648.5 << 0", ToInt32(2147483648.5), 2147483648.5 << 0 ); + array[item++] = new TestCase( SECTION, "2147483648.75 << 0", ToInt32(2147483648.75), 2147483648.75 << 0 ); + array[item++] = new TestCase( SECTION, "4294967295.25 << 0", ToInt32(4294967295.25), 4294967295.25 << 0 ); + array[item++] = new TestCase( SECTION, "4294967295.5 << 0", ToInt32(4294967295.5), 4294967295.5 << 0 ); + array[item++] = new TestCase( SECTION, "4294967295.75 << 0", ToInt32(4294967295.75), 4294967295.75 << 0 ); + array[item++] = new TestCase( SECTION, "3000000000.25 << 0", ToInt32(3000000000.25), 3000000000.25 << 0 ); + array[item++] = new TestCase( SECTION, "3000000000.5 << 0", ToInt32(3000000000.5), 3000000000.5 << 0 ); + array[item++] = new TestCase( SECTION, "3000000000.75 << 0", ToInt32(3000000000.75), 3000000000.75 << 0 ); + + /* + * Numbers between - 2^31 and - 2^32 + */ + array[item++] = new TestCase( SECTION, "-2147483648.25 << 0", ToInt32(-2147483648.25), -2147483648.25 << 0 ); + array[item++] = new TestCase( SECTION, "-2147483648.5 << 0", ToInt32(-2147483648.5), -2147483648.5 << 0 ); + array[item++] = new TestCase( SECTION, "-2147483648.75 << 0", ToInt32(-2147483648.75), -2147483648.75 << 0 ); + array[item++] = new TestCase( SECTION, "-4294967295.25 << 0", ToInt32(-4294967295.25), -4294967295.25 << 0 ); + array[item++] = new TestCase( SECTION, "-4294967295.5 << 0", ToInt32(-4294967295.5), -4294967295.5 << 0 ); + array[item++] = new TestCase( SECTION, "-4294967295.75 << 0", ToInt32(-4294967295.75), -4294967295.75 << 0 ); + array[item++] = new TestCase( SECTION, "-3000000000.25 << 0", ToInt32(-3000000000.25), -3000000000.25 << 0 ); + array[item++] = new TestCase( SECTION, "-3000000000.5 << 0", ToInt32(-3000000000.5), -3000000000.5 << 0 ); + array[item++] = new TestCase( SECTION, "-3000000000.75 << 0", ToInt32(-3000000000.75), -3000000000.75 << 0 ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.6.js b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.6.js new file mode 100644 index 00000000000..c4c3bff7f07 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.6.js @@ -0,0 +1,139 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 9.6.js + ECMA Section: 9.6 Type Conversion: ToUint32 + Description: rules for converting an argument to an unsigned + 32 bit integer + + this test uses >>> 0 to convert the argument to + an unsigned 32bit integer. + + 1 call ToNumber on argument + 2 if result is NaN, 0, -0, Infinity, -Infinity + return 0 + 3 compute (sign (result(1)) * floor(abs(result 1))) + 4 compute result(3) modulo 2^32: + 5 return result(4) + + special cases: + -0 returns 0 + Infinity returns 0 + -Infinity returns 0 + 0 returns 0 + ToInt32(ToUint32(x)) == ToInt32(x) for all values of x + ** NEED TO DO THIS PART IN A SEPARATE TEST FILE ** + + + Author: christine@netscape.com + Date: 17 july 1997 +*/ + + var SECTION = "9.6"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Type Conversion: ToUint32"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function ToUint32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY) { + return 0; + } + n = sign * Math.floor( Math.abs(n) ) + + n = n % Math.pow(2,32); + + if ( n < 0 ){ + n += Math.pow(2,32); + } + + return ( n ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "0 >>> 0", 0, 0 >>> 0 ); +// array[item++] = new TestCase( SECTION, "+0 >>> 0", 0, +0 >>> 0); + array[item++] = new TestCase( SECTION, "-0 >>> 0", 0, -0 >>> 0 ); + array[item++] = new TestCase( SECTION, "'Infinity' >>> 0", 0, "Infinity" >>> 0 ); + array[item++] = new TestCase( SECTION, "'-Infinity' >>> 0", 0, "-Infinity" >>> 0); + array[item++] = new TestCase( SECTION, "'+Infinity' >>> 0", 0, "+Infinity" >>> 0 ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY >>> 0", 0, Number.POSITIVE_INFINITY >>> 0 ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY >>> 0", 0, Number.NEGATIVE_INFINITY >>> 0 ); + array[item++] = new TestCase( SECTION, "Number.NaN >>> 0", 0, Number.NaN >>> 0 ); + + array[item++] = new TestCase( SECTION, "Number.MIN_VALUE >>> 0", 0, Number.MIN_VALUE >>> 0 ); + array[item++] = new TestCase( SECTION, "-Number.MIN_VALUE >>> 0", 0, Number.MIN_VALUE >>> 0 ); + array[item++] = new TestCase( SECTION, "0.1 >>> 0", 0, 0.1 >>> 0 ); + array[item++] = new TestCase( SECTION, "-0.1 >>> 0", 0, -0.1 >>> 0 ); + array[item++] = new TestCase( SECTION, "1 >>> 0", 1, 1 >>> 0 ); + array[item++] = new TestCase( SECTION, "1.1 >>> 0", 1, 1.1 >>> 0 ); + + array[item++] = new TestCase( SECTION, "-1.1 >>> 0", ToUint32(-1.1), -1.1 >>> 0 ); + array[item++] = new TestCase( SECTION, "-1 >>> 0", ToUint32(-1), -1 >>> 0 ); + + array[item++] = new TestCase( SECTION, "2147483647 >>> 0", ToUint32(2147483647), 2147483647 >>> 0 ); + array[item++] = new TestCase( SECTION, "2147483648 >>> 0", ToUint32(2147483648), 2147483648 >>> 0 ); + array[item++] = new TestCase( SECTION, "2147483649 >>> 0", ToUint32(2147483649), 2147483649 >>> 0 ); + + array[item++] = new TestCase( SECTION, "4294967295 >>> 0", ToUint32(4294967295), 4294967295 >>> 0 ); + array[item++] = new TestCase( SECTION, "4294967296 >>> 0", ToUint32(4294967296), 4294967296 >>> 0 ); + array[item++] = new TestCase( SECTION, "4294967297 >>> 0", ToUint32(4294967297), 4294967297 >>> 0 ); + + array[item++] = new TestCase( SECTION, "-2147483647 >>> 0", ToUint32(-2147483647), -2147483647 >>> 0 ); + array[item++] = new TestCase( SECTION, "-2147483648 >>> 0", ToUint32(-2147483648), -2147483648 >>> 0 ); + array[item++] = new TestCase( SECTION, "-2147483649 >>> 0", ToUint32(-2147483649), -2147483649 >>> 0 ); + + array[item++] = new TestCase( SECTION, "-4294967295 >>> 0", ToUint32(-4294967295), -4294967295 >>> 0 ); + array[item++] = new TestCase( SECTION, "-4294967296 >>> 0", ToUint32(-4294967296), -4294967296 >>> 0 ); + array[item++] = new TestCase( SECTION, "-4294967297 >>> 0", ToUint32(-4294967297), -4294967297 >>> 0 ); + + array[item++] = new TestCase( SECTION, "'2147483647' >>> 0", ToUint32(2147483647), '2147483647' >>> 0 ); + array[item++] = new TestCase( SECTION, "'2147483648' >>> 0", ToUint32(2147483648), '2147483648' >>> 0 ); + array[item++] = new TestCase( SECTION, "'2147483649' >>> 0", ToUint32(2147483649), '2147483649' >>> 0 ); + + array[item++] = new TestCase( SECTION, "'4294967295' >>> 0", ToUint32(4294967295), '4294967295' >>> 0 ); + array[item++] = new TestCase( SECTION, "'4294967296' >>> 0", ToUint32(4294967296), '4294967296' >>> 0 ); + array[item++] = new TestCase( SECTION, "'4294967297' >>> 0", ToUint32(4294967297), '4294967297' >>> 0 ); + + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.7.js b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.7.js new file mode 100644 index 00000000000..60322d43d00 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.7.js @@ -0,0 +1,158 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 9.7.js + ECMA Section: 9.7 Type Conversion: ToInt16 + Description: rules for converting an argument to an unsigned + 16 bit integer in the range 0 to 2^16-1. + + this test uses String.prototype.fromCharCode() and + String.prototype.charCodeAt() to test ToInt16. + + special cases: + -0 returns 0 + Infinity returns 0 + -Infinity returns 0 + 0 returns 0 + + Author: christine@netscape.com + Date: 17 july 1997 +*/ + var SECTION = "9.7"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " Type Conversion: ToInt16"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function ToInt16( num ) { + num = Number( num ); + if ( isNaN( num ) || num == 0 || num == Number.POSITIVE_INFINITY || num == Number.NEGATIVE_INFINITY ) { + return 0; + } + + var sign = ( num < 0 ) ? -1 : 1; + + num = sign * Math.floor( Math.abs( num ) ); + + num = num % Math.pow(2,16); + + num = ( num > -65536 && num < 0) ? 65536 + num : num; + + return num; +} + +function getTestCases() { + var array = new Array(); + var item = 0; +/* + array[item++] = new TestCase( "9.7", "String.fromCharCode(0).charCodeAt(0)", 0, String.fromCharCode(0).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(-0).charCodeAt(0)", 0, String.fromCharCode(-0).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(1).charCodeAt(0)", 1, String.fromCharCode(1).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(64).charCodeAt(0)", 64, String.fromCharCode(64).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(126).charCodeAt(0)", 126, String.fromCharCode(126).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(127).charCodeAt(0)", 127, String.fromCharCode(127).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(128).charCodeAt(0)", 128, String.fromCharCode(128).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(130).charCodeAt(0)", 130, String.fromCharCode(130).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(255).charCodeAt(0)", 255, String.fromCharCode(255).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(256).charCodeAt(0)", 256, String.fromCharCode(256).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(Math.pow(2,16)-1).charCodeAt(0)", 65535, String.fromCharCode(Math.pow(2,16)-1).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(Math.pow(2,16)).charCodeAt(0)", 0, String.fromCharCode(Math.pow(2,16)).charCodeAt(0) ); +*/ + + + array[item++] = new TestCase( "9.7", "String.fromCharCode(0).charCodeAt(0)", ToInt16(0), String.fromCharCode(0).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(-0).charCodeAt(0)", ToInt16(0), String.fromCharCode(-0).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(1).charCodeAt(0)", ToInt16(1), String.fromCharCode(1).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(64).charCodeAt(0)", ToInt16(64), String.fromCharCode(64).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(126).charCodeAt(0)", ToInt16(126), String.fromCharCode(126).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(127).charCodeAt(0)", ToInt16(127), String.fromCharCode(127).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(128).charCodeAt(0)", ToInt16(128), String.fromCharCode(128).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(130).charCodeAt(0)", ToInt16(130), String.fromCharCode(130).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(255).charCodeAt(0)", ToInt16(255), String.fromCharCode(255).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(256).charCodeAt(0)", ToInt16(256), String.fromCharCode(256).charCodeAt(0) ); + + array[item++] = new TestCase( "9.7", "String.fromCharCode(Math.pow(2,16)-1).charCodeAt(0)", 65535, String.fromCharCode(Math.pow(2,16)-1).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(Math.pow(2,16)).charCodeAt(0)", 0, String.fromCharCode(Math.pow(2,16)).charCodeAt(0) ); + + array[item++] = new TestCase( "9.7", "String.fromCharCode(65535).charCodeAt(0)", ToInt16(65535), String.fromCharCode(65535).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(65536).charCodeAt(0)", ToInt16(65536), String.fromCharCode(65536).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(65537).charCodeAt(0)", ToInt16(65537), String.fromCharCode(65537).charCodeAt(0) ); + + array[item++] = new TestCase( "9.7", "String.fromCharCode(131071).charCodeAt(0)", ToInt16(131071), String.fromCharCode(131071).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(131072).charCodeAt(0)", ToInt16(131072), String.fromCharCode(131072).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(131073).charCodeAt(0)", ToInt16(131073), String.fromCharCode(131073).charCodeAt(0) ); + + array[item++] = new TestCase( "9.7", "String.fromCharCode('65535').charCodeAt(0)", 65535, String.fromCharCode("65535").charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode('65536').charCodeAt(0)", 0, String.fromCharCode("65536").charCodeAt(0) ); + + array[item++] = new TestCase( "9.7", "String.fromCharCode(-1).charCodeAt(0)", ToInt16(-1), String.fromCharCode(-1).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(-64).charCodeAt(0)", ToInt16(-64), String.fromCharCode(-64).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(-126).charCodeAt(0)", ToInt16(-126), String.fromCharCode(-126).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(-127).charCodeAt(0)", ToInt16(-127), String.fromCharCode(-127).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(-128).charCodeAt(0)", ToInt16(-128), String.fromCharCode(-128).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(-130).charCodeAt(0)", ToInt16(-130), String.fromCharCode(-130).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(-255).charCodeAt(0)", ToInt16(-255), String.fromCharCode(-255).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(-256).charCodeAt(0)", ToInt16(-256), String.fromCharCode(-256).charCodeAt(0) ); + + array[item++] = new TestCase( "9.7", "String.fromCharCode(-Math.pow(2,16)-1).charCodeAt(0)", 65535, String.fromCharCode(-Math.pow(2,16)-1).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(-Math.pow(2,16)).charCodeAt(0)", 0, String.fromCharCode(-Math.pow(2,16)).charCodeAt(0) ); + + array[item++] = new TestCase( "9.7", "String.fromCharCode(-65535).charCodeAt(0)", ToInt16(-65535), String.fromCharCode(-65535).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(-65536).charCodeAt(0)", ToInt16(-65536), String.fromCharCode(-65536).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(-65537).charCodeAt(0)", ToInt16(-65537), String.fromCharCode(-65537).charCodeAt(0) ); + + array[item++] = new TestCase( "9.7", "String.fromCharCode(-131071).charCodeAt(0)", ToInt16(-131071), String.fromCharCode(-131071).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(-131072).charCodeAt(0)", ToInt16(-131072), String.fromCharCode(-131072).charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode(-131073).charCodeAt(0)", ToInt16(-131073), String.fromCharCode(-131073).charCodeAt(0) ); + + array[item++] = new TestCase( "9.7", "String.fromCharCode('-65535').charCodeAt(0)", ToInt16(-65535), String.fromCharCode("-65535").charCodeAt(0) ); + array[item++] = new TestCase( "9.7", "String.fromCharCode('-65536').charCodeAt(0)", ToInt16(-65536), String.fromCharCode("-65536").charCodeAt(0) ); + + +// array[item++] = new TestCase( "9.7", "String.fromCharCode(2147483648).charCodeAt(0)", ToInt16(2147483648), String.fromCharCode(2147483648).charCodeAt(0) ); + + + +// the following test cases cause a runtime error. see: http://scopus.mcom.com/bugsplat/show_bug.cgi?id=78878 + +// array[item++] = new TestCase( "9.7", "String.fromCharCode(Infinity).charCodeAt(0)", 0, String.fromCharCode("Infinity").charCodeAt(0) ); +// array[item++] = new TestCase( "9.7", "String.fromCharCode(-Infinity).charCodeAt(0)", 0, String.fromCharCode("-Infinity").charCodeAt(0) ); +// array[item++] = new TestCase( "9.7", "String.fromCharCode(NaN).charCodeAt(0)", 0, String.fromCharCode(Number.NaN).charCodeAt(0) ); +// array[item++] = new TestCase( "9.7", "String.fromCharCode(Number.POSITIVE_INFINITY).charCodeAt(0)", 0, String.fromCharCode(Number.POSITIVE_INFINITY).charCodeAt(0) ); +// array[item++] = new TestCase( "9.7", "String.fromCharCode(Number.NEGATIVE_INFINITY).charCodeAt(0)", 0, String.fromCharCode(Number.NEGATIVE_INFINITY).charCodeAt(0) ); + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.8.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.8.1.js new file mode 100644 index 00000000000..38cbb0a86d3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.8.1.js @@ -0,0 +1,166 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 9.8.1.js + ECMA Section: 9.8.1 ToString Applied to the Number Type + Description: The operator ToString convers a number m to string + as follows: + + 1. if m is NaN, return the string "NaN" + 2. if m is +0 or -0, return the string "0" + 3. if m is less than zero, return the string + concatenation of the string "-" and ToString(-m). + 4. If m is Infinity, return the string "Infinity". + 5. Otherwise, let n, k, and s be integers such that + k >= 1, 10k1 <= s < 10k, the number value for s10nk + is m, and k is as small as possible. Note that k is + the number of digits in the decimal representation + of s, that s is not divisible by 10, and that the + least significant digit of s is not necessarily + uniquely determined by these criteria. + 6. If k <= n <= 21, return the string consisting of the + k digits of the decimal representation of s (in order, + with no leading zeroes), followed by n-k occurences + of the character '0'. + 7. If 0 < n <= 21, return the string consisting of the + most significant n digits of the decimal + representation of s, followed by a decimal point + '.', followed by the remaining kn digits of the + decimal representation of s. + 8. If 6 < n <= 0, return the string consisting of the + character '0', followed by a decimal point '.', + followed by n occurences of the character '0', + followed by the k digits of the decimal + representation of s. + 9. Otherwise, if k = 1, return the string consisting + of the single digit of s, followed by lowercase + character 'e', followed by a plus sign '+' or minus + sign '' according to whether n1 is positive or + negative, followed by the decimal representation + of the integer abs(n1) (with no leading zeros). + 10. Return the string consisting of the most significant + digit of the decimal representation of s, followed + by a decimal point '.', followed by the remaining k1 + digits of the decimal representation of s, followed + by the lowercase character 'e', followed by a plus + sign '+' or minus sign '' according to whether n1 is + positive or negative, followed by the decimal + representation of the integer abs(n1) (with no + leading zeros). + + Note that if x is any number value other than 0, then + ToNumber(ToString(x)) is exactly the same number value as x. + + As noted, the least significant digit of s is not always + uniquely determined by the requirements listed in step 5. + The following specification for step 5 was considered, but + not adopted: + + Author: christine@netscape.com + Date: 10 july 1997 +*/ + + var SECTION = "9.8.1"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " ToString applied to the Number type"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Number.NaN", "NaN", Number.NaN + "" ); + array[item++] = new TestCase( SECTION, "0", "0", 0 + "" ); + array[item++] = new TestCase( SECTION, "-0", "0", -0 + "" ); + array[item++] = new TestCase( SECTION, "Number.POSITIVE_INFINITY", "Infinity", Number.POSITIVE_INFINITY + "" ); + array[item++] = new TestCase( SECTION, "Number.NEGATIVE_INFINITY", "-Infinity", Number.NEGATIVE_INFINITY + "" ); + array[item++] = new TestCase( SECTION, "-1", "-1", -1 + "" ); + + // cases in step 6: integers 1e21 > x >= 1 or -1 >= x > -1e21 + + array[item++] = new TestCase( SECTION, "1", "1", 1 + "" ); + array[item++] = new TestCase( SECTION, "10", "10", 10 + "" ); + array[item++] = new TestCase( SECTION, "100", "100", 100 + "" ); + array[item++] = new TestCase( SECTION, "1000", "1000", 1000 + "" ); + array[item++] = new TestCase( SECTION, "10000", "10000", 10000 + "" ); + array[item++] = new TestCase( SECTION, "10000000000", "10000000000", 10000000000 + "" ); + array[item++] = new TestCase( SECTION, "10000000000000000000", "10000000000000000000", 10000000000000000000 + "" ); + array[item++] = new TestCase( SECTION, "100000000000000000000","100000000000000000000",100000000000000000000 + "" ); + + array[item++] = new TestCase( SECTION, "12345", "12345", 12345 + "" ); + array[item++] = new TestCase( SECTION, "1234567890", "1234567890", 1234567890 + "" ); + + array[item++] = new TestCase( SECTION, "-1", "-1", -1 + "" ); + array[item++] = new TestCase( SECTION, "-10", "-10", -10 + "" ); + array[item++] = new TestCase( SECTION, "-100", "-100", -100 + "" ); + array[item++] = new TestCase( SECTION, "-1000", "-1000", -1000 + "" ); + array[item++] = new TestCase( SECTION, "-1000000000", "-1000000000", -1000000000 + "" ); + array[item++] = new TestCase( SECTION, "-1000000000000000", "-1000000000000000", -1000000000000000 + "" ); + array[item++] = new TestCase( SECTION, "-100000000000000000000", "-100000000000000000000", -100000000000000000000 + "" ); + array[item++] = new TestCase( SECTION, "-1000000000000000000000", "-1e+21", -1000000000000000000000 + "" ); + + array[item++] = new TestCase( SECTION, "-12345", "-12345", -12345 + "" ); + array[item++] = new TestCase( SECTION, "-1234567890", "-1234567890", -1234567890 + "" ); + + // cases in step 7: numbers with a fractional component, 1e21> x >1 or -1 > x > -1e21, + array[item++] = new TestCase( SECTION, "1.0000001", "1.0000001", 1.0000001 + "" ); + + // cases in step 8: fractions between 1 > x > -1, exclusive of 0 and -0 + + // cases in step 9: numbers with 1 significant digit >= 1e+21 or <= 1e-6 + + array[item++] = new TestCase( SECTION, "1000000000000000000000", "1e+21", 1000000000000000000000 + "" ); + array[item++] = new TestCase( SECTION, "10000000000000000000000", "1e+22", 10000000000000000000000 + "" ); + + // cases in step 10: numbers with more than 1 significant digit >= 1e+21 or <= 1e-6 + + array[item++] = new TestCase( SECTION, "1.2345", "1.2345", String( 1.2345)); + array[item++] = new TestCase( SECTION, "1.234567890", "1.23456789", String( 1.234567890 )); + + + array[item++] = new TestCase( SECTION, ".12345", "0.12345", String(.12345 ) ); + array[item++] = new TestCase( SECTION, ".012345", "0.012345", String(.012345) ); + array[item++] = new TestCase( SECTION, ".0012345", "0.0012345", String(.0012345) ); + array[item++] = new TestCase( SECTION, ".00012345", "0.00012345", String(.00012345) ); + array[item++] = new TestCase( SECTION, ".000012345", "0.000012345", String(.000012345) ); + array[item++] = new TestCase( SECTION, ".0000012345", "0.0000012345", String(.0000012345) ); + array[item++] = new TestCase( SECTION, ".00000012345", "1.2345e-7", String(.00000012345)); + + array[item++] = new TestCase( SECTION, "-1e21", "-1e+21", String(-1e21) ); + return ( array ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.9-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.9-1.js new file mode 100644 index 00000000000..0df39f35582 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/TypeConversion/9.9-1.js @@ -0,0 +1,143 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 9.9-1.js + ECMA Section: 9.9 Type Conversion: ToObject + Description: + + undefined generate a runtime error + null generate a runtime error + boolean create a new Boolean object whose default + value is the value of the boolean. + number Create a new Number object whose default + value is the value of the number. + string Create a new String object whose default + value is the value of the string. + object Return the input argument (no conversion). + Author: christine@netscape.com + Date: 17 july 1997 +*/ + + var VERSION = "ECMA_1"; + startTest(); + var SECTION = "9.9-1"; + + writeHeaderToLog( SECTION + " Type Conversion: ToObject" ); + var tc= 0; + var testcases = getTestCases(); + +// all tests must call a function that returns an array of TestCase objects. + test(); + +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "Object(true).valueOf()", true, (Object(true)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(true)", "object", typeof Object(true) ); + array[item++] = new TestCase( SECTION, "(Object(true)).__proto__", Boolean.prototype, (Object(true)).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object(false).valueOf()", false, (Object(false)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(false)", "object", typeof Object(false) ); + array[item++] = new TestCase( SECTION, "(Object(true)).__proto__", Boolean.prototype, (Object(true)).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object(0).valueOf()", 0, (Object(0)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(0)", "object", typeof Object(0) ); + array[item++] = new TestCase( SECTION, "(Object(0)).__proto__", Number.prototype, (Object(0)).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object(-0).valueOf()", -0, (Object(-0)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(-0)", "object", typeof Object(-0) ); + array[item++] = new TestCase( SECTION, "(Object(-0)).__proto__", Number.prototype, (Object(-0)).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object(1).valueOf()", 1, (Object(1)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(1)", "object", typeof Object(1) ); + array[item++] = new TestCase( SECTION, "(Object(1)).__proto__", Number.prototype, (Object(1)).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object(-1).valueOf()", -1, (Object(-1)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(-1)", "object", typeof Object(-1) ); + array[item++] = new TestCase( SECTION, "(Object(-1)).__proto__", Number.prototype, (Object(-1)).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object(Number.MAX_VALUE).valueOf()", 1.7976931348623157e308, (Object(Number.MAX_VALUE)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(Number.MAX_VALUE)", "object", typeof Object(Number.MAX_VALUE) ); + array[item++] = new TestCase( SECTION, "(Object(Number.MAX_VALUE)).__proto__", Number.prototype, (Object(Number.MAX_VALUE)).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object(Number.MIN_VALUE).valueOf()", 5e-324, (Object(Number.MIN_VALUE)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(Number.MIN_VALUE)", "object", typeof Object(Number.MIN_VALUE) ); + array[item++] = new TestCase( SECTION, "(Object(Number.MIN_VALUE)).__proto__", Number.prototype, (Object(Number.MIN_VALUE)).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object(Number.POSITIVE_INFINITY).valueOf()", Number.POSITIVE_INFINITY, (Object(Number.POSITIVE_INFINITY)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(Number.POSITIVE_INFINITY)", "object", typeof Object(Number.POSITIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "(Object(Number.POSITIVE_INFINITY)).__proto__", Number.prototype, (Object(Number.POSITIVE_INFINITY)).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object(Number.NEGATIVE_INFINITY).valueOf()", Number.NEGATIVE_INFINITY, (Object(Number.NEGATIVE_INFINITY)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(Number.NEGATIVE_INFINITY)", "object", typeof Object(Number.NEGATIVE_INFINITY) ); + array[item++] = new TestCase( SECTION, "(Object(Number.NEGATIVE_INFINITY)).__proto__", Number.prototype, (Object(Number.NEGATIVE_INFINITY)).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object(Number.NaN).valueOf()", Number.NaN, (Object(Number.NaN)).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object(Number.NaN)", "object", typeof Object(Number.NaN) ); + array[item++] = new TestCase( SECTION, "(Object(Number.NaN)).__proto__", Number.prototype, (Object(Number.NaN)).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object('a string').valueOf()", "a string", (Object("a string")).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object('a string')", "object", typeof (Object("a string")) ); + array[item++] = new TestCase( SECTION, "(Object('a string')).__proto__", String.prototype, (Object("a string")).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object('').valueOf()", "", (Object("")).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object('')", "object", typeof (Object("")) ); + array[item++] = new TestCase( SECTION, "(Object('')).__proto__", String.prototype, (Object("")).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object('\\r\\t\\b\\n\\v\\f').valueOf()", "\r\t\b\n\v\f", (Object("\r\t\b\n\v\f")).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object('\\r\\t\\b\\n\\v\\f')", "object", typeof (Object("\\r\\t\\b\\n\\v\\f")) ); + array[item++] = new TestCase( SECTION, "(Object('\\r\\t\\b\\n\\v\\f')).__proto__", String.prototype, (Object("\\r\\t\\b\\n\\v\\f")).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object( '\\\'\\\"\\' ).valueOf()", "\'\"\\", (Object("\'\"\\")).valueOf() ); + array[item++] = new TestCase( SECTION, "typeof Object( '\\\'\\\"\\' )", "object", typeof Object("\'\"\\") ); + array[item++] = new TestCase( SECTION, "Object( '\\\'\\\"\\' ).__proto__", String.prototype, (Object("\'\"\\")).__proto__ ); + + array[item++] = new TestCase( SECTION, "Object( new MyObject(true) ).valueOf()", true, eval("Object( new MyObject(true) ).valueOf()") ); + array[item++] = new TestCase( SECTION, "typeof Object( new MyObject(true) )", "object", eval("typeof Object( new MyObject(true) )") ); + array[item++] = new TestCase( SECTION, "(Object( new MyObject(true) )).toString()", "[object Object]", eval("(Object( new MyObject(true) )).toString()") ); + + return ( array ); +} + +function test() { + for ( tc = 0; tc < testcases.length; tc++ ) { + + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += + ( testcases[tc].passed ) ? "" : "wrong value "; + + } + stopTest(); + + // all tests must return an array of TestCase objects + return ( testcases ); +} +function MyObject( value ) { + this.value = value; + this.valueOf = new Function ( "return this.value" ); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Types/8.1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Types/8.1.js new file mode 100644 index 00000000000..efc47923a8b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Types/8.1.js @@ -0,0 +1,71 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 8.1.js + ECMA Section: The undefined type + Description: + + The Undefined type has exactly one value, called undefined. Any variable + that has not been assigned a value is of type Undefined. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "8.1"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The undefined type"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( SECTION, + "var x; typeof x", + "undefined", + eval("var x; typeof x") ); + + testcases[tc++] = new TestCase( SECTION, + "var x; typeof x == 'undefined", + true, + eval("var x; typeof x == 'undefined'") ); + + testcases[tc++] = new TestCase( SECTION, + "var x; x == void 0", + true, + eval("var x; x == void 0") ); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Types/8.4.js b/Source/JavaScriptCore/tests/mozilla/ecma/Types/8.4.js new file mode 100644 index 00000000000..c18f744e405 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Types/8.4.js @@ -0,0 +1,125 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 8.4.js + ECMA Section: The String type + Description: + + The String type is the set of all finite ordered sequences of zero or more + Unicode characters. Each character is regarded as occupying a position + within the sequence. These positions are identified by nonnegative + integers. The leftmost character (if any) is at position 0, the next + character (if any) at position 1, and so on. The length of a string is the + number of distinct positions within it. The empty string has length zero + and therefore contains no characters. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "8.4"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "The String type"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( SECTION, + "var s = ''; s.length", + 0, + eval("var s = ''; s.length") ); + + testcases[tc++] = new TestCase( SECTION, + "var s = ''; s.charAt(0)", + "", + eval("var s = ''; s.charAt(0)") ); + + + for ( var i = 0x0041, TEST_STRING = "", EXPECT_STRING = ""; i < 0x007B; i++ ) { + TEST_STRING += ("\\u"+ DecimalToHexString( i ) ); + EXPECT_STRING += String.fromCharCode(i); + } + + testcases[tc++] = new TestCase( SECTION, + "var s = '" + TEST_STRING+ "'; s", + EXPECT_STRING, + eval("var s = '" + TEST_STRING+ "'; s") ); + + testcases[tc++] = new TestCase( SECTION, + "var s = '" + TEST_STRING+ "'; s.length", + 0x007B-0x0041, + eval("var s = '" + TEST_STRING+ "'; s.length") ); + + test(); +function DecimalToHexString( n ) { + n = Number( n ); + var h = ""; + + for ( var i = 3; i >= 0; i-- ) { + if ( n >= Math.pow(16, i) ){ + var t = Math.floor( n / Math.pow(16, i)); + n -= t * Math.pow(16, i); + if ( t >= 10 ) { + if ( t == 10 ) { + h += "A"; + } + if ( t == 11 ) { + h += "B"; + } + if ( t == 12 ) { + h += "C"; + } + if ( t == 13 ) { + h += "D"; + } + if ( t == 14 ) { + h += "E"; + } + if ( t == 15 ) { + h += "F"; + } + } else { + h += String( t ); + } + } else { + h += "0"; + } + } + + return h; +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/Types/8.6.2.1-1.js b/Source/JavaScriptCore/tests/mozilla/ecma/Types/8.6.2.1-1.js new file mode 100644 index 00000000000..05b94006362 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/Types/8.6.2.1-1.js @@ -0,0 +1,105 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 8.6.2.1-1.js + ECMA Section: 8.6.2.1 Get (Value) + Description: + + When the [[Get]] method of O is called with property name P, the following + steps are taken: + + 1. If O doesn't have a property with name P, go to step 4. + 2. Get the value of the property. + 3. Return Result(2). + 4. If the [[Prototype]] of O is null, return undefined. + 5. Call the [[Get]] method of [[Prototype]] with property name P. + 6. Return Result(5). + + This tests [[Get]] (Value). + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "8.6.2.1-1"; + var VERSION = "ECMA_1"; + startTest(); + var testcases = getTestCases(); + + writeHeaderToLog( SECTION + " [[Get]] (Value)"); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCases() { + var array = new Array(); + var item = 0; + + array[item++] = new TestCase( SECTION, "var OBJ = new MyValuelessObject(true); OBJ.valueOf()", true, eval("var OBJ = new MyValuelessObject(true); OBJ.valueOf()") ); +// array[item++] = new TestCase( SECTION, "var OBJ = new MyProtoValuelessObject(true); OBJ + ''", "undefined", eval("var OBJ = new MyProtoValuelessObject(); OBJ + ''") ); + array[item++] = new TestCase( SECTION, "var OBJ = new MyProtolessObject(true); OBJ.valueOf()", true, eval("var OBJ = new MyProtolessObject(true); OBJ.valueOf()") ); + array[item++] = new TestCase( SECTION, "var OBJ = new MyObject(true); OBJ.valueOf()", true, eval("var OBJ = new MyObject(true); OBJ.valueOf()") ); + + array[item++] = new TestCase( SECTION, "var OBJ = new MyValuelessObject(Number.POSITIVE_INFINITY); OBJ.valueOf()", Number.POSITIVE_INFINITY, eval("var OBJ = new MyValuelessObject(Number.POSITIVE_INFINITY); OBJ.valueOf()") ); +// array[item++] = new TestCase( SECTION, "var OBJ = new MyProtoValuelessObject(Number.POSITIVE_INFINITY); OBJ + ''", "undefined", eval("var OBJ = new MyProtoValuelessObject(); OBJ + ''") ); + array[item++] = new TestCase( SECTION, "var OBJ = new MyProtolessObject(Number.POSITIVE_INFINITY); OBJ.valueOf()", Number.POSITIVE_INFINITY, eval("var OBJ = new MyProtolessObject(Number.POSITIVE_INFINITY); OBJ.valueOf()") ); + array[item++] = new TestCase( SECTION, "var OBJ = new MyObject(Number.POSITIVE_INFINITY); OBJ.valueOf()", Number.POSITIVE_INFINITY, eval("var OBJ = new MyObject(Number.POSITIVE_INFINITY); OBJ.valueOf()") ); + + array[item++] = new TestCase( SECTION, "var OBJ = new MyValuelessObject('string'); OBJ.valueOf()", 'string', eval("var OBJ = new MyValuelessObject('string'); OBJ.valueOf()") ); +// array[item++] = new TestCase( SECTION, "var OBJ = new MyProtoValuelessObject('string'); OJ + ''", "undefined", eval("var OBJ = new MyProtoValuelessObject(); OBJ + ''") ); + array[item++] = new TestCase( SECTION, "var OBJ = new MyProtolessObject('string'); OBJ.valueOf()", 'string', eval("var OBJ = new MyProtolessObject('string'); OBJ.valueOf()") ); + array[item++] = new TestCase( SECTION, "var OBJ = new MyObject('string'); OBJ.valueOf()", 'string', eval("var OBJ = new MyObject('string'); OBJ.valueOf()") ); + + return ( array ); +} +function MyProtoValuelessObject(value) { + this.valueOf = new Function ( "" ); + this.__proto__ = null; +} + +function MyProtolessObject( value ) { + this.valueOf = new Function( "return this.value" ); + this.__proto__ = null; + this.value = value; +} +function MyValuelessObject(value) { + this.__proto__ = new MyPrototypeObject(value); +} +function MyPrototypeObject(value) { + this.valueOf = new Function( "return this.value;" ); + this.toString = new Function( "return (this.value + '');" ); + this.value = value; +} +function MyObject( value ) { + this.valueOf = new Function( "return this.value" ); + this.value = value; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/browser.js b/Source/JavaScriptCore/tests/mozilla/ecma/browser.js new file mode 100644 index 00000000000..5bbdf7c6b99 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/browser.js @@ -0,0 +1,80 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): +*/ + +/* + * JavaScript test library shared functions file for running the tests + * in the browser. Overrides the shell's print function with document.write + * and make everything HTML pretty. + * + * To run the tests in the browser, use the mkhtml.pl script to generate + * html pages that include the shell.js, browser.js (this file), and the + * test js file in script tags. + * + * The source of the page that is generated should look something like this: + * + * + * + */ + +onerror = err; + +function startTest() { + if ( BUGNUMBER ) { + writeLineToLog ("BUGNUMBER: " + BUGNUMBER ); + } + + testcases = new Array(); + tc = 0; +} + +function writeLineToLog( string ) { + document.write( string + "
\n"); +} +function writeHeaderToLog( string ) { + document.write( "

" + string + "

" ); +} +function stopTest() { + var gc; + if ( gc != undefined ) { + gc(); + } + document.write( "
" ); +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = ""+ string ; + s += "" ; + s += ( passed ) ? "  " + PASSED + : " " + FAILED + expect + ""; + writeLineToLog( s + "" ); + return passed; +} +function err( msg, page, line ) { + writeLineToLog( "Test failed with the message: " + msg ); + + testcases[tc].actual = "error"; + testcases[tc].reason = msg; + writeTestCaseResult( testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual + + ": " + testcases[tc].reason ); + stopTest(); + return true; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/jsref.js b/Source/JavaScriptCore/tests/mozilla/ecma/jsref.js new file mode 100644 index 00000000000..51b5a832d66 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/jsref.js @@ -0,0 +1,669 @@ +var completed = false; +var testcases; +var tc = 0; + +SECTION = ""; +VERSION = ""; +BUGNUMBER = ""; +TITLE = ""; + +/* + * constant strings + */ +var GLOBAL = "[object global]"; +var PASSED = " PASSED!" +var FAILED = " FAILED! expected: "; +var DEBUG = false; + +TZ_DIFF = -8; + +var TT = ""; +var TT_ = ""; +var BR = ""; +var NBSP = " "; +var CR = "\n"; +var FONT = ""; +var FONT_ = ""; +var FONT_RED = ""; +var FONT_GREEN = ""; +var B = ""; +var B_ = "" +var H2 = ""; +var H2_ = ""; +var HR = ""; +var DEBUG = false; + +var PASSED = " PASSED!" +var FAILED = " FAILED! expected: "; + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +/* wrapper for test cas constructor that doesn't require the SECTION + * argument. + */ + +function AddTestCase( description, expect, actual ) { + testcases[tc++] = new TestCase( SECTION, description, expect, actual ); +} + +function TestCase( n, d, e, a ) { + this.name = n; + this.description = d; + this.expect = e; + this.actual = a; + this.passed = true; + this.reason = ""; + this.bugnumber = BUGNUMBER; + + this.passed = getTestCaseResult( this.expect, this.actual ); + if ( DEBUG ) { + writeLineToLog( "added " + this.description ); + } +} + +/* + * Set up test environment. + * + */ +function startTest() { + if ( version ) { + // JavaScript 1.3 is supposed to be compliant ecma version 1.0 + if ( VERSION == "ECMA_1" ) { + version ( "130" ); + } + if ( VERSION == "JS_1.3" ) { + version ( "130" ); + } + if ( VERSION == "JS_1.2" ) { + version ( "120" ); + } + if ( VERSION == "JS_1.1" ) { + version ( "110" ); + } + // for ecma version 2.0, we will leave the javascript version to + // the default ( for now ). + } + + // print out bugnumber + + if ( BUGNUMBER ) { + writeLineToLog ("BUGNUMBER: " + BUGNUMBER ); + } + + testcases = new Array(); + tc = 0; +} + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + + +function getTestCaseResult( expect, actual ) { + // because ( NaN == NaN ) always returns false, need to do + // a special compare to see if we got the right result. + if ( actual != actual ) { + if ( typeof actual == "object" ) { + actual = "NaN object"; + } else { + actual = "NaN number"; + } + } + if ( expect != expect ) { + if ( typeof expect == "object" ) { + expect = "NaN object"; + } else { + expect = "NaN number"; + } + } + + var passed = ( expect == actual ) ? true : false; + + // if both objects are numbers + // need to replace w/ IEEE standard for rounding + if ( !passed + && typeof(actual) == "number" + && typeof(expect) == "number" + ) { + if ( Math.abs(actual-expect) < 0.0000001 ) { + passed = true; + } + } + + // verify type is the same + if ( typeof(expect) != typeof(actual) ) { + passed = false; + } + + return passed; +} +function writeTestCaseResult( expect, actual, string ) { + var passed = getTestCaseResult( expect, actual ); + writeFormattedResult( expect, actual, string, passed ); + return passed; +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = TT + string ; + + for ( k = 0; + k < (60 - string.length >= 0 ? 60 - string.length : 5) ; + k++ ) { + } + + s += B ; + s += ( passed ) ? FONT_GREEN + NBSP + PASSED : FONT_RED + NBSP + FAILED + expect + TT_ ; + + writeLineToLog( s + FONT_ + B_ + TT_ ); + + return passed; +} + +function writeLineToLog( string ) { + print( string + BR + CR ); +} +function writeHeaderToLog( string ) { + print( H2 + string + H2_ ); +} +function stopTest() +{ + var sizeTag = "<#TEST CASES SIZE>"; + var doneTag = "<#TEST CASES DONE>"; + var beginTag = "<#TEST CASE "; + var endTag = ">"; + + print(sizeTag); + print(testcases.length); + for (tc = 0; tc < testcases.length; tc++) + { + print(beginTag + 'PASSED' + endTag); + print(testcases[tc].passed); + print(beginTag + 'NAME' + endTag); + print(testcases[tc].name); + print(beginTag + 'EXPECTED' + endTag); + print(testcases[tc].expect); + print(beginTag + 'ACTUAL' + endTag); + print(testcases[tc].actual); + print(beginTag + 'DESCRIPTION' + endTag); + print(testcases[tc].description); + print(beginTag + 'REASON' + endTag); + print(( testcases[tc].passed ) ? "" : "wrong value "); + print(beginTag + 'BUGNUMBER' + endTag); + print( BUGNUMBER ); + } + print(doneTag); + print( HR ); + gc(); +} +function getFailedCases() { + for ( var i = 0; i < testcases.length; i++ ) { + if ( ! testcases[i].passed ) { + print( testcases[i].description +" = " +testcases[i].actual +" expected: "+ testcases[i].expect ); + } + } +} +function err( msg, page, line ) { + testcases[tc].actual = "error"; + testcases[tc].reason = msg; + writeTestCaseResult( testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual + + ": " + testcases[tc].reason ); + stopTest(); + return true; +} + +/** + * Type Conversion functions used by Type Conversion + * + */ + + + + /* + * Date functions used by tests in Date suite + * + */ +var msPerDay = 86400000; +var HoursPerDay = 24; +var MinutesPerHour = 60; +var SecondsPerMinute = 60; +var msPerSecond = 1000; +var msPerMinute = 60000; // msPerSecond * SecondsPerMinute +var msPerHour = 3600000; // msPerMinute * MinutesPerHour + +var TIME_1970 = 0; +var TIME_2000 = 946684800000; +var TIME_1900 = -2208988800000; + +function Day( t ) { + return ( Math.floor(t/msPerDay ) ); +} +function DaysInYear( y ) { + if ( y % 4 != 0 ) { + return 365; + } + if ( (y % 4 == 0) && (y % 100 != 0) ) { + return 366; + } + if ( (y % 100 == 0) && (y % 400 != 0) ) { + return 365; + } + if ( (y % 400 == 0) ){ + return 366; + } else { + return "ERROR: DaysInYear(" + y + ") case not covered"; + } +} +function TimeInYear( y ) { + return ( DaysInYear(y) * msPerDay ); +} +function DayNumber( t ) { + return ( Math.floor( t / msPerDay ) ); +} +function TimeWithinDay( t ) { + if ( t < 0 ) { + return ( (t % msPerDay) + msPerDay ); + } else { + return ( t % msPerDay ); + } +} +function YearNumber( t ) { +} +function TimeFromYear( y ) { + return ( msPerDay * DayFromYear(y) ); +} +function DayFromYear( y ) { + return ( 365*(y-1970) + + Math.floor((y-1969)/4) - + Math.floor((y-1901)/100) + + Math.floor((y-1601)/400) ); +} +function InLeapYear( t ) { + if ( DaysInYear(YearFromTime(t)) == 365 ) { + return 0; + } + if ( DaysInYear(YearFromTime(t)) == 366 ) { + return 1; + } else { + return "ERROR: InLeapYear("+t+") case not covered"; + } +} +function YearFromTime( t ) { + t = Number( t ); + var sign = ( t < 0 ) ? -1 : 1; + var year = ( sign < 0 ) ? 1969 : 1970; + for ( var timeToTimeZero = t; ; ) { + // subtract the current year's time from the time that's left. + timeToTimeZero -= sign * TimeInYear(year) + + // if there's less than the current year's worth of time left, then break. + if ( sign < 0 ) { + if ( sign * timeToTimeZero <= 0 ) { + break; + } else { + year += sign; + } + } else { + if ( sign * timeToTimeZero < 0 ) { + break; + } else { + year += sign; + } + } + } + return ( year ); +} +function MonthFromTime( t ) { + // i know i could use switch but i'd rather not until it's part of ECMA + var day = DayWithinYear( t ); + var leap = InLeapYear(t); + + if ( (0 <= day) && (day < 31) ) { + return 0; + } + if ( (31 <= day) && (day < (59+leap)) ) { + return 1; + } + if ( ((59+leap) <= day) && (day < (90+leap)) ) { + return 2; + } + if ( ((90+leap) <= day) && (day < (120+leap)) ) { + return 3; + } + if ( ((120+leap) <= day) && (day < (151+leap)) ) { + return 4; + } + if ( ((151+leap) <= day) && (day < (181+leap)) ) { + return 5; + } + if ( ((181+leap) <= day) && (day < (212+leap)) ) { + return 6; + } + if ( ((212+leap) <= day) && (day < (243+leap)) ) { + return 7; + } + if ( ((243+leap) <= day) && (day < (273+leap)) ) { + return 8; + } + if ( ((273+leap) <= day) && (day < (304+leap)) ) { + return 9; + } + if ( ((304+leap) <= day) && (day < (334+leap)) ) { + return 10; + } + if ( ((334+leap) <= day) && (day < (365+leap)) ) { + return 11; + } else { + return "ERROR: MonthFromTime("+t+") not known"; + } +} +function DayWithinYear( t ) { + return( Day(t) - DayFromYear(YearFromTime(t))); +} +function DateFromTime( t ) { + var day = DayWithinYear(t); + var month = MonthFromTime(t); + + if ( month == 0 ) { + return ( day + 1 ); + } + if ( month == 1 ) { + return ( day - 30 ); + } + if ( month == 2 ) { + return ( day - 58 - InLeapYear(t) ); + } + if ( month == 3 ) { + return ( day - 89 - InLeapYear(t)); + } + if ( month == 4 ) { + return ( day - 119 - InLeapYear(t)); + } + if ( month == 5 ) { + return ( day - 150- InLeapYear(t)); + } + if ( month == 6 ) { + return ( day - 180- InLeapYear(t)); + } + if ( month == 7 ) { + return ( day - 211- InLeapYear(t)); + } + if ( month == 8 ) { + return ( day - 242- InLeapYear(t)); + } + if ( month == 9 ) { + return ( day - 272- InLeapYear(t)); + } + if ( month == 10 ) { + return ( day - 303- InLeapYear(t)); + } + if ( month == 11 ) { + return ( day - 333- InLeapYear(t)); + } + + return ("ERROR: DateFromTime("+t+") not known" ); +} +function WeekDay( t ) { + var weekday = (Day(t)+4) % 7; + return( weekday < 0 ? 7 + weekday : weekday ); +} + +// missing daylight savins time adjustment + +function HourFromTime( t ) { + var h = Math.floor( t / msPerHour ) % HoursPerDay; + return ( (h<0) ? HoursPerDay + h : h ); +} +function MinFromTime( t ) { + var min = Math.floor( t / msPerMinute ) % MinutesPerHour; + return( ( min < 0 ) ? MinutesPerHour + min : min ); +} +function SecFromTime( t ) { + var sec = Math.floor( t / msPerSecond ) % SecondsPerMinute; + return ( (sec < 0 ) ? SecondsPerMinute + sec : sec ); +} +function msFromTime( t ) { + var ms = t % msPerSecond; + return ( (ms < 0 ) ? msPerSecond + ms : ms ); +} +function LocalTZA() { + return ( TZ_DIFF * msPerHour ); +} +function UTC( t ) { + return ( t - LocalTZA() - DaylightSavingTA(t - LocalTZA()) ); +} +function DaylightSavingTA( t ) { + t = t - LocalTZA(); + + var dst_start = GetSecondSundayInMarch(t) + 2*msPerHour; + var dst_end = GetFirstSundayInNovember(t)+ 2*msPerHour; + + if ( t >= dst_start && t < dst_end ) { + return msPerHour; + } else { + return 0; + } + + // Daylight Savings Time starts on the first Sunday in April at 2:00AM in + // PST. Other time zones will need to override this function. + + print( new Date( UTC(dst_start + LocalTZA())) ); + + return UTC(dst_start + LocalTZA()); +} +function GetFirstSundayInApril( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + var april = TimeFromYear(year) + TimeInMonth(0, leap) + TimeInMonth(1,leap) + + TimeInMonth(2,leap); + + for ( var first_sunday = april; WeekDay(first_sunday) > 0; + first_sunday += msPerDay ) + { + ; + } + + return first_sunday; +} +function GetLastSundayInOctober( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + for ( var oct = TimeFromYear(year), m = 0; m < 9; m++ ) { + oct += TimeInMonth(m, leap); + } + for ( var last_sunday = oct + 30*msPerDay; WeekDay(last_sunday) > 0; + last_sunday -= msPerDay ) + { + ; + } + return last_sunday; +} + +// Added these two functions because DST rules changed for the US. +function GetSecondSundayInMarch( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + var march = TimeFromYear(year) + TimeInMonth(0, leap) + TimeInMonth(1,leap); + + var sundayCount = 0; + var flag = true; + for ( var second_sunday = march; flag; second_sunday += msPerDay ) + { + if (WeekDay(second_sunday) == 0) { + if(++sundayCount == 2) + flag = false; + } + } + + return second_sunday; +} +function GetFirstSundayInNovember( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + for ( var nov = TimeFromYear(year), m = 0; m < 10; m++ ) { + nov += TimeInMonth(m, leap); + } + for ( var first_sunday = nov; WeekDay(first_sunday) > 0; + first_sunday += msPerDay ) + { + ; + } + return first_sunday; +} +function LocalTime( t ) { + return ( t + LocalTZA() + DaylightSavingTA(t) ); +} +function MakeTime( hour, min, sec, ms ) { + if ( isNaN( hour ) || isNaN( min ) || isNaN( sec ) || isNaN( ms ) ) { + return Number.NaN; + } + + hour = ToInteger(hour); + min = ToInteger( min); + sec = ToInteger( sec); + ms = ToInteger( ms ); + + return( (hour*msPerHour) + (min*msPerMinute) + + (sec*msPerSecond) + ms ); +} +function MakeDay( year, month, date ) { + if ( isNaN(year) || isNaN(month) || isNaN(date) ) { + return Number.NaN; + } + year = ToInteger(year); + month = ToInteger(month); + date = ToInteger(date ); + + var sign = ( year < 1970 ) ? -1 : 1; + var t = ( year < 1970 ) ? 1 : 0; + var y = ( year < 1970 ) ? 1969 : 1970; + + var result5 = year + Math.floor( month/12 ); + var result6 = month % 12; + + if ( year < 1970 ) { + for ( y = 1969; y >= year; y += sign ) { + t += sign * TimeInYear(y); + } + } else { + for ( y = 1970 ; y < year; y += sign ) { + t += sign * TimeInYear(y); + } + } + + var leap = InLeapYear( t ); + + for ( var m = 0; m < month; m++ ) { + t += TimeInMonth( m, leap ); + } + + if ( YearFromTime(t) != result5 ) { + return Number.NaN; + } + if ( MonthFromTime(t) != result6 ) { + return Number.NaN; + } + if ( DateFromTime(t) != 1 ) { + return Number.NaN; + } + + return ( (Day(t)) + date - 1 ); +} +function TimeInMonth( month, leap ) { + // september april june november + // jan 0 feb 1 mar 2 apr 3 may 4 june 5 jul 6 + // aug 7 sep 8 oct 9 nov 10 dec 11 + + if ( month == 3 || month == 5 || month == 8 || month == 10 ) { + return ( 30*msPerDay ); + } + + // all the rest + if ( month == 0 || month == 2 || month == 4 || month == 6 || + month == 7 || month == 9 || month == 11 ) { + return ( 31*msPerDay ); + } + + // save february + return ( (leap == 0) ? 28*msPerDay : 29*msPerDay ); +} +function MakeDate( day, time ) { + if ( day == Number.POSITIVE_INFINITY || + day == Number.NEGATIVE_INFINITY || + day == Number.NaN ) { + return Number.NaN; + } + if ( time == Number.POSITIVE_INFINITY || + time == Number.POSITIVE_INFINITY || + day == Number.NaN) { + return Number.NaN; + } + return ( day * msPerDay ) + time; +} +function TimeClip( t ) { + if ( isNaN( t ) ) { + return ( Number.NaN ); + } + if ( Math.abs( t ) > 8.64e15 ) { + return ( Number.NaN ); + } + + return ( ToInteger( t ) ); +} +function ToInteger( t ) { + t = Number( t ); + + if ( isNaN( t ) ){ + return ( Number.NaN ); + } + if ( t == 0 || t == -0 || + t == Number.POSITIVE_INFINITY || t == Number.NEGATIVE_INFINITY ) { + return 0; + } + + var sign = ( t < 0 ) ? -1 : 1; + + return ( sign * Math.floor( Math.abs( t ) ) ); +} +function Enumerate ( o ) { + var properties = new Array(); + for ( p in o ) { + properties[ properties.length ] = new Array( p, o[p] ); + } + return properties; +} +function AddTestCase( description, expect, actual ) { + testcases[tc++] = new TestCase( SECTION, description, expect, actual ); +} + +function getFailedCases() { + for ( var i = 0; i < testcases.length; i++ ) { + if ( ! testcases[i].passed ) { + print( testcases[i].description +" = " +testcases[i].actual +" expected: "+ testcases[i].expect ); + } + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma/shell.js b/Source/JavaScriptCore/tests/mozilla/ecma/shell.js new file mode 100644 index 00000000000..1c82aedf8b1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma/shell.js @@ -0,0 +1,712 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/* + * JavaScript shared functions file for running the tests in either + * stand-alone JavaScript engine. To run a test, first load this file, + * then load the test script. + */ + +var completed = false; +var testcases; +var tc = 0; + +SECTION = ""; +VERSION = ""; +BUGNUMBER = ""; + +/* + * constant strings + */ +var GLOBAL = "[object global]"; +var PASSED = " PASSED!" +var FAILED = " FAILED! expected: "; + +var DEBUG = false; + + + +/* wrapper for test cas constructor that doesn't require the SECTION + * argument. + */ + +function AddTestCase( description, expect, actual ) { + testcases[tc++] = new TestCase( SECTION, description, expect, actual ); +} + +/* + * TestCase constructor + * + */ + +function TestCase( n, d, e, a ) { + this.name = n; + this.description = d; + this.expect = e; + this.actual = a; + this.passed = true; + this.reason = ""; + this.bugnumber = BUGNUMBER; + + this.passed = getTestCaseResult( this.expect, this.actual ); + if ( DEBUG ) { + writeLineToLog( "added " + this.description ); + } +} + +/* + * Set up test environment. + * + */ +function startTest() { + if ( version ) { + // JavaScript 1.3 is supposed to be compliant ecma version 1.0 + if ( VERSION == "ECMA_1" ) { + version ( "130" ); + } + if ( VERSION == "JS_1.3" ) { + version ( "130" ); + } + if ( VERSION == "JS_1.2" ) { + version ( "120" ); + } + if ( VERSION == "JS_1.1" ) { + version ( "110" ); + } + // for ecma version 2.0, we will leave the javascript version to + // the default ( for now ). + } + + // print out bugnumber + + if ( BUGNUMBER ) { + writeLineToLog ("BUGNUMBER: " + BUGNUMBER ); + } + + testcases = new Array(); + tc = 0; +} + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +/* + * Compare expected result to the actual result and figure out whether + * the test case passed. + */ +function getTestCaseResult( expect, actual ) { + // because ( NaN == NaN ) always returns false, need to do + // a special compare to see if we got the right result. + if ( actual != actual ) { + if ( typeof actual == "object" ) { + actual = "NaN object"; + } else { + actual = "NaN number"; + } + } + if ( expect != expect ) { + if ( typeof expect == "object" ) { + expect = "NaN object"; + } else { + expect = "NaN number"; + } + } + + var passed = ( expect == actual ) ? true : false; + + // if both objects are numbers + // need to replace w/ IEEE standard for rounding + if ( !passed + && typeof(actual) == "number" + && typeof(expect) == "number" + ) { + if ( Math.abs(actual-expect) < 0.0000001 ) { + passed = true; + } + } + + // verify type is the same + if ( typeof(expect) != typeof(actual) ) { + passed = false; + } + + return passed; +} + +/* + * Begin printing functions. These functions use the shell's + * print function. When running tests in the browser, these + * functions, override these functions with functions that use + * document.write. + */ + +function writeTestCaseResult( expect, actual, string ) { + var passed = getTestCaseResult( expect, actual ); + writeFormattedResult( expect, actual, string, passed ); + return passed; +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = string ; + s += ( passed ) ? PASSED : FAILED + expect; + writeLineToLog( s); + return passed; +} +function writeLineToLog( string ) { + print( string ); +} +function writeHeaderToLog( string ) { + print( string ); +} +/* end of print functions */ + + +/* + * When running in the shell, run the garbage collector after the + * test has completed. + */ + +function stopTest() { + var gc; + if ( gc != undefined ) { + gc(); + } +} + +/* + * Convenience function for displaying failed test cases. Useful + * when running tests manually. + * + */ +function getFailedCases() { + for ( var i = 0; i < testcases.length; i++ ) { + if ( ! testcases[i].passed ) { + print( testcases[i].description +" = " +testcases[i].actual +" expected: "+ testcases[i].expect ); + } + } +} + /* + * Date functions used by tests in Date suite + * + */ +var msPerDay = 86400000; +var HoursPerDay = 24; +var MinutesPerHour = 60; +var SecondsPerMinute = 60; +var msPerSecond = 1000; +var msPerMinute = 60000; // msPerSecond * SecondsPerMinute +var msPerHour = 3600000; // msPerMinute * MinutesPerHour +var TZ_DIFF = getTimeZoneDiff(); // offset of tester's timezone from UTC +var TZ_PST = -8; // offset of Pacific Standard Time from UTC +var PST_DIFF = TZ_DIFF - TZ_PST; // offset of tester's timezone from PST +var TIME_1970 = 0; +var TIME_2000 = 946684800000; +var TIME_1900 = -2208988800000; +var TIME_YEAR_0 = -62167219200000; + + +/* + * Originally, the test suite used a hard-coded value TZ_DIFF = -8. + * But that was only valid for testers in the Pacific Standard Time Zone! + * We calculate the proper number dynamically for any tester. We just + * have to be careful not to use a date subject to Daylight Savings Time... +*/ +function getTimeZoneDiff() +{ + return -((new Date(2000, 1, 1)).getTimezoneOffset())/60; +} + + +/* + * Date test "ResultArrays" are hard-coded for Pacific Standard Time. + * We must adjust them for the tester's own timezone - + */ +function adjustResultArray(ResultArray, msMode) +{ + // If the tester's system clock is in PST, no need to continue - + if (!PST_DIFF) {return;} + + /* The date testcases instantiate Date objects in two different ways: + * + * millisecond mode: e.g. dt = new Date(10000000); + * year-month-day mode: dt = new Date(2000, 5, 1, ...); + * + * In the first case, the date is measured from Time 0 in Greenwich (i.e. UTC). + * In the second case, it is measured with reference to the tester's local timezone. + * + * In the first case we must correct those values expected for local measurements, + * like dt.getHours() etc. No correction is necessary for dt.getUTCHours() etc. + * + * In the second case, it is exactly the other way around - + */ + if (msMode) + { + // The hard-coded UTC milliseconds from Time 0 derives from a UTC date. + // Shift to the right by the offset between UTC and the tester. + var t = ResultArray[TIME] + TZ_DIFF*msPerHour; + + // Use our date arithmetic functions to determine the local hour, day, etc. + ResultArray[HOURS] = HourFromTime(t); + ResultArray[DAY] = WeekDay(t); + ResultArray[DATE] = DateFromTime(t); + ResultArray[MONTH] = MonthFromTime(t); + ResultArray[YEAR] = YearFromTime(t); + } + else + { + // The hard-coded UTC milliseconds from Time 0 derives from a PST date. + // Shift to the left by the offset between PST and the tester. + var t = ResultArray[TIME] - PST_DIFF*msPerHour; + + // Use our date arithmetic functions to determine the UTC hour, day, etc. + ResultArray[TIME] = t; + ResultArray[UTC_HOURS] = HourFromTime(t); + ResultArray[UTC_DAY] = WeekDay(t); + ResultArray[UTC_DATE] = DateFromTime(t); + ResultArray[UTC_MONTH] = MonthFromTime(t); + ResultArray[UTC_YEAR] = YearFromTime(t); + } +} + + +function Day( t ) { + return ( Math.floor(t/msPerDay ) ); +} +function DaysInYear( y ) { + if ( y % 4 != 0 ) { + return 365; + } + if ( (y % 4 == 0) && (y % 100 != 0) ) { + return 366; + } + if ( (y % 100 == 0) && (y % 400 != 0) ) { + return 365; + } + if ( (y % 400 == 0) ){ + return 366; + } else { + return "ERROR: DaysInYear(" + y + ") case not covered"; + } +} +function TimeInYear( y ) { + return ( DaysInYear(y) * msPerDay ); +} +function DayNumber( t ) { + return ( Math.floor( t / msPerDay ) ); +} +function TimeWithinDay( t ) { + if ( t < 0 ) { + return ( (t % msPerDay) + msPerDay ); + } else { + return ( t % msPerDay ); + } +} +function YearNumber( t ) { +} +function TimeFromYear( y ) { + return ( msPerDay * DayFromYear(y) ); +} +function DayFromYear( y ) { + return ( 365*(y-1970) + + Math.floor((y-1969)/4) - + Math.floor((y-1901)/100) + + Math.floor((y-1601)/400) ); +} +function InLeapYear( t ) { + if ( DaysInYear(YearFromTime(t)) == 365 ) { + return 0; + } + if ( DaysInYear(YearFromTime(t)) == 366 ) { + return 1; + } else { + return "ERROR: InLeapYear("+ t + ") case not covered"; + } +} +function YearFromTime( t ) { + t = Number( t ); + var sign = ( t < 0 ) ? -1 : 1; + var year = ( sign < 0 ) ? 1969 : 1970; + for ( var timeToTimeZero = t; ; ) { + // subtract the current year's time from the time that's left. + timeToTimeZero -= sign * TimeInYear(year) + + // if there's less than the current year's worth of time left, then break. + if ( sign < 0 ) { + if ( sign * timeToTimeZero <= 0 ) { + break; + } else { + year += sign; + } + } else { + if ( sign * timeToTimeZero < 0 ) { + break; + } else { + year += sign; + } + } + } + return ( year ); +} +function MonthFromTime( t ) { + // i know i could use switch but i'd rather not until it's part of ECMA + var day = DayWithinYear( t ); + var leap = InLeapYear(t); + + if ( (0 <= day) && (day < 31) ) { + return 0; + } + if ( (31 <= day) && (day < (59+leap)) ) { + return 1; + } + if ( ((59+leap) <= day) && (day < (90+leap)) ) { + return 2; + } + if ( ((90+leap) <= day) && (day < (120+leap)) ) { + return 3; + } + if ( ((120+leap) <= day) && (day < (151+leap)) ) { + return 4; + } + if ( ((151+leap) <= day) && (day < (181+leap)) ) { + return 5; + } + if ( ((181+leap) <= day) && (day < (212+leap)) ) { + return 6; + } + if ( ((212+leap) <= day) && (day < (243+leap)) ) { + return 7; + } + if ( ((243+leap) <= day) && (day < (273+leap)) ) { + return 8; + } + if ( ((273+leap) <= day) && (day < (304+leap)) ) { + return 9; + } + if ( ((304+leap) <= day) && (day < (334+leap)) ) { + return 10; + } + if ( ((334+leap) <= day) && (day < (365+leap)) ) { + return 11; + } else { + return "ERROR: MonthFromTime("+t+") not known"; + } +} +function DayWithinYear( t ) { + return( Day(t) - DayFromYear(YearFromTime(t))); +} +function DateFromTime( t ) { + var day = DayWithinYear(t); + var month = MonthFromTime(t); + + if ( month == 0 ) { + return ( day + 1 ); + } + if ( month == 1 ) { + return ( day - 30 ); + } + if ( month == 2 ) { + return ( day - 58 - InLeapYear(t) ); + } + if ( month == 3 ) { + return ( day - 89 - InLeapYear(t)); + } + if ( month == 4 ) { + return ( day - 119 - InLeapYear(t)); + } + if ( month == 5 ) { + return ( day - 150- InLeapYear(t)); + } + if ( month == 6 ) { + return ( day - 180- InLeapYear(t)); + } + if ( month == 7 ) { + return ( day - 211- InLeapYear(t)); + } + if ( month == 8 ) { + return ( day - 242- InLeapYear(t)); + } + if ( month == 9 ) { + return ( day - 272- InLeapYear(t)); + } + if ( month == 10 ) { + return ( day - 303- InLeapYear(t)); + } + if ( month == 11 ) { + return ( day - 333- InLeapYear(t)); + } + + return ("ERROR: DateFromTime("+t+") not known" ); +} +function WeekDay( t ) { + var weekday = (Day(t)+4) % 7; + return( weekday < 0 ? 7 + weekday : weekday ); +} + +// missing daylight savins time adjustment + +function HourFromTime( t ) { + var h = Math.floor( t / msPerHour ) % HoursPerDay; + return ( (h<0) ? HoursPerDay + h : h ); +} +function MinFromTime( t ) { + var min = Math.floor( t / msPerMinute ) % MinutesPerHour; + return( ( min < 0 ) ? MinutesPerHour + min : min ); +} +function SecFromTime( t ) { + var sec = Math.floor( t / msPerSecond ) % SecondsPerMinute; + return ( (sec < 0 ) ? SecondsPerMinute + sec : sec ); +} +function msFromTime( t ) { + var ms = t % msPerSecond; + return ( (ms < 0 ) ? msPerSecond + ms : ms ); +} +function LocalTZA() { + return ( TZ_DIFF * msPerHour ); +} +function UTC( t ) { + return ( t - LocalTZA() - DaylightSavingTA(t - LocalTZA()) ); +} + +function DaylightSavingTA( t ) { + t = t - LocalTZA(); + + var dst_start = GetSecondSundayInMarch(t) + 2*msPerHour; + var dst_end = GetFirstSundayInNovember(t)+ 2*msPerHour; + + if ( t >= dst_start && t < dst_end ) { + return msPerHour; + } else { + return 0; + } + + // Daylight Savings Time starts on the first Sunday in April at 2:00AM in + // PST. Other time zones will need to override this function. + + print( new Date( UTC(dst_start + LocalTZA())) ); + + return UTC(dst_start + LocalTZA()); +} + +function GetFirstSundayInApril( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + var april = TimeFromYear(year) + TimeInMonth(0, leap) + TimeInMonth(1,leap) + + TimeInMonth(2,leap); + + for ( var first_sunday = april; WeekDay(first_sunday) > 0; + first_sunday += msPerDay ) + { + ; + } + + return first_sunday; +} +function GetLastSundayInOctober( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + for ( var oct = TimeFromYear(year), m = 0; m < 9; m++ ) { + oct += TimeInMonth(m, leap); + } + for ( var last_sunday = oct + 30*msPerDay; WeekDay(last_sunday) > 0; + last_sunday -= msPerDay ) + { + ; + } + return last_sunday; +} + +// Added these two functions because DST rules changed for the US. +function GetSecondSundayInMarch( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + var march = TimeFromYear(year) + TimeInMonth(0, leap) + TimeInMonth(1,leap); + + var sundayCount = 0; + var flag = true; + for ( var second_sunday = march; flag; second_sunday += msPerDay ) + { + if (WeekDay(second_sunday) == 0) { + if(++sundayCount == 2) + flag = false; + } + } + + return second_sunday; +} +function GetFirstSundayInNovember( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + for ( var nov = TimeFromYear(year), m = 0; m < 10; m++ ) { + nov += TimeInMonth(m, leap); + } + for ( var first_sunday = nov; WeekDay(first_sunday) > 0; + first_sunday += msPerDay ) + { + ; + } + return first_sunday; +} +function LocalTime( t ) { + return ( t + LocalTZA() + DaylightSavingTA(t) ); +} +function MakeTime( hour, min, sec, ms ) { + if ( isNaN( hour ) || isNaN( min ) || isNaN( sec ) || isNaN( ms ) ) { + return Number.NaN; + } + + hour = ToInteger(hour); + min = ToInteger( min); + sec = ToInteger( sec); + ms = ToInteger( ms ); + + return( (hour*msPerHour) + (min*msPerMinute) + + (sec*msPerSecond) + ms ); +} +function MakeDay( year, month, date ) { + if ( isNaN(year) || isNaN(month) || isNaN(date) ) { + return Number.NaN; + } + year = ToInteger(year); + month = ToInteger(month); + date = ToInteger(date ); + + var sign = ( year < 1970 ) ? -1 : 1; + var t = ( year < 1970 ) ? 1 : 0; + var y = ( year < 1970 ) ? 1969 : 1970; + + var result5 = year + Math.floor( month/12 ); + var result6 = month % 12; + + if ( year < 1970 ) { + for ( y = 1969; y >= year; y += sign ) { + t += sign * TimeInYear(y); + } + } else { + for ( y = 1970 ; y < year; y += sign ) { + t += sign * TimeInYear(y); + } + } + + var leap = InLeapYear( t ); + + for ( var m = 0; m < month; m++ ) { + t += TimeInMonth( m, leap ); + } + + if ( YearFromTime(t) != result5 ) { + return Number.NaN; + } + if ( MonthFromTime(t) != result6 ) { + return Number.NaN; + } + if ( DateFromTime(t) != 1 ) { + return Number.NaN; + } + + return ( (Day(t)) + date - 1 ); +} +function TimeInMonth( month, leap ) { + // september april june november + // jan 0 feb 1 mar 2 apr 3 may 4 june 5 jul 6 + // aug 7 sep 8 oct 9 nov 10 dec 11 + + if ( month == 3 || month == 5 || month == 8 || month == 10 ) { + return ( 30*msPerDay ); + } + + // all the rest + if ( month == 0 || month == 2 || month == 4 || month == 6 || + month == 7 || month == 9 || month == 11 ) { + return ( 31*msPerDay ); + } + + // save february + return ( (leap == 0) ? 28*msPerDay : 29*msPerDay ); +} +function MakeDate( day, time ) { + if ( day == Number.POSITIVE_INFINITY || + day == Number.NEGATIVE_INFINITY || + day == Number.NaN ) { + return Number.NaN; + } + if ( time == Number.POSITIVE_INFINITY || + time == Number.POSITIVE_INFINITY || + day == Number.NaN) { + return Number.NaN; + } + return ( day * msPerDay ) + time; +} +function TimeClip( t ) { + if ( isNaN( t ) ) { + return ( Number.NaN ); + } + if ( Math.abs( t ) > 8.64e15 ) { + return ( Number.NaN ); + } + + return ( ToInteger( t ) ); +} +function ToInteger( t ) { + t = Number( t ); + + if ( isNaN( t ) ){ + return ( Number.NaN ); + } + if ( t == 0 || t == -0 || + t == Number.POSITIVE_INFINITY || t == Number.NEGATIVE_INFINITY ) { + return 0; + } + + var sign = ( t < 0 ) ? -1 : 1; + + return ( sign * Math.floor( Math.abs( t ) ) ); +} +function Enumerate ( o ) { + var p; + for ( p in o ) { + print( p +": " + o[p] ); + } +} + +/* these functions are useful for running tests manually in Rhino */ + +function GetContext() { + return Packages.com.netscape.javascript.Context.getCurrentContext(); +} +function OptLevel( i ) { + i = Number(i); + var cx = GetContext(); + cx.setOptimizationLevel(i); +} +/* end of Rhino functions */ diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/boolean-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/boolean-001.js new file mode 100644 index 00000000000..1645ad456c4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/boolean-001.js @@ -0,0 +1,43 @@ +/** + File Name: boolean-001.js + Description: Corresponds to ecma/Boolean/15.6.4.2-4-n.js + + The toString function is not generic; it generates + a runtime error if its this value is not a Boolean + object. Therefore it cannot be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: june 27, 1997 +*/ + var SECTION = "boolean-001.js"; + var VERSION = "JS1_4"; + var TITLE = "Boolean.prototype.toString()"; + startTest(); + writeHeaderToLog( SECTION +" "+ TITLE ); + + var tc = 0; + var testcases = new Array(); + + var exception = "No exception thrown"; + var result = "Failed"; + + var TO_STRING = Boolean.prototype.toString; + + try { + var s = new String("Not a Boolean"); + s.toString = TO_STRING; + s.toString(); + } catch ( e ) { + result = "Passed!"; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "Assigning Boolean.prototype.toString to a String object "+ + "(threw " +exception +")", + "Passed!", + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/boolean-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/boolean-002.js new file mode 100644 index 00000000000..be31b99dea4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/boolean-002.js @@ -0,0 +1,47 @@ +/** + File Name: boolean-001.js + Description: Corresponds to ecma/Boolean/15.6.4.3-4-n.js + + 15.6.4.3 Boolean.prototype.valueOf() + Returns this boolean value. + + The valueOf function is not generic; it generates + a runtime error if its this value is not a Boolean + object. Therefore it cannot be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 09 september 1998 +*/ + var SECTION = "boolean-002.js"; + var VERSION = "JS1_4"; + var TITLE = "Boolean.prototype.valueOf()"; + startTest(); + writeHeaderToLog( SECTION +" "+ TITLE ); + + var tc = 0; + var testcases = new Array(); + + var exception = "No exception thrown"; + var result = "Failed"; + + var VALUE_OF = Boolean.prototype.valueOf; + + try { + var s = new String("Not a Boolean"); + s.valueOf = VALUE_0F; + s.valueOf(); + } catch ( e ) { + result = "Passed!"; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "Assigning Boolean.prototype.valueOf to a String object "+ + "(threw " +exception +")", + "Passed!", + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/date-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/date-001.js new file mode 100644 index 00000000000..60ef3a4af91 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/date-001.js @@ -0,0 +1,57 @@ +/** + File Name: date-001.js + Corresponds To: 15.9.5.2-2.js + ECMA Section: 15.9.5.2 Date.prototype.toString + Description: + This function returns a string value. The contents of the string are + implementation dependent, but are intended to represent the Date in a + convenient, human-readable form in the current time zone. + + The toString function is not generic; it generates a runtime error if its + this value is not a Date object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + + This verifies that calling toString on an object that is not a string + generates a runtime error. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "date-001"; + var VERSION = "JS1_4"; + var TITLE = "Date.prototype.toString"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var OBJ = new MyObject( new Date(0) ); + result = OBJ.toString(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "OBJECT = new MyObject( new Date(0)) ; result = OBJ.toString()" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyObject( value ) { + this.value = value; + this.valueOf = new Function( "return this.value" ); + this.toString = Date.prototype.toString; + return this; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/date-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/date-002.js new file mode 100644 index 00000000000..6fd5a648997 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/date-002.js @@ -0,0 +1,51 @@ +/** + File Name: date-002.js + Corresponds To: 15.9.5.23-3-n.js + ECMA Section: 15.9.5.23 + Description: Date.prototype.setTime + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "date-002"; + var VERSION = "JS1_4"; + var TITLE = "Date.prototype.setTime()"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var MYDATE = new MyDate(); + result = MYDATE.setTime(0); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "MYDATE = new MyDate(); MYDATE.setTime(0)" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyDate(value) { + this.value = value; + this.setTime = Date.prototype.setTime; + return this; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/date-003.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/date-003.js new file mode 100644 index 00000000000..b675fdd87aa --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/date-003.js @@ -0,0 +1,53 @@ +/** + File Name: date-003.js + Corresponds To 15.9.5.3-1.js + ECMA Section: 15.9.5.3-1 Date.prototype.valueOf + Description: + + The valueOf function returns a number, which is this time value. + + The valueOf function is not generic; it generates a runtime error if + its this value is not a Date object. Therefore it cannot be transferred + to other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "date-003"; + var VERSION = "JS1_4"; + var TITLE = "Date.prototype.valueOf"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var OBJ = new MyObject( new Date(0) ); + result = OBJ.valueOf(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "OBJ = new MyObject( new Date(0)); OBJ.valueOf()" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyObject( value ) { + this.value = value; + this.valueOf = Date.prototype.valueOf; +// The following line causes an infinte loop +// this.toString = new Function( "return this+\"\";"); + return this; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/date-004.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/date-004.js new file mode 100644 index 00000000000..fc2e4199be0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/date-004.js @@ -0,0 +1,47 @@ +/** + File Name: date-004.js + Corresponds To: 15.9.5.4-2-n.js + ECMA Section: 15.9.5.4-1 Date.prototype.getTime + Description: + + 1. If the this value is not an object whose [[Class]] property is "Date", + generate a runtime error. + 2. Return this time value. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "date-004"; + var VERSION = "JS1_4"; + var TITLE = "Date.prototype.getTime"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var MYDATE = new MyDate(); + result = MYDATE.getTime(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "MYDATE = new MyDate(); MYDATE.getTime()" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyDate( value ) { + this.value = value; + this.getTime = Date.prototype.getTime; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-001.js new file mode 100644 index 00000000000..eeeaa86e80f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-001.js @@ -0,0 +1,42 @@ +/** + * File Name: exception-001 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * Call error. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-001"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: CallError"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + Call_1(); + + test(); + + function Call_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + Math(); + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "Math() [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-002.js new file mode 100644 index 00000000000..680fcbf3d14 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-002.js @@ -0,0 +1,42 @@ +/** + * File Name: exception-002 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * Construct error. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-002"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: ConstructError"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + Construct_1(); + + test(); + + function Construct_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + result = new Math(); + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "new Math() [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-003.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-003.js new file mode 100644 index 00000000000..d073fbc14f6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-003.js @@ -0,0 +1,46 @@ +/** + * File Name: exception-003 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * Target error. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-003"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: TargetError"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + Target_1(); + + test(); + + function Target_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + string = new String("hi"); + string.toString = Boolean.prototype.toString; + string.toString(); + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "string = new String(\"hi\");"+ + "string.toString = Boolean.prototype.toString" + + "string.toString() [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-004.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-004.js new file mode 100644 index 00000000000..1fde9595f43 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-004.js @@ -0,0 +1,42 @@ +/** + * File Name: exception-004 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * ToObject error. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-004"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: ToObjectError"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + ToObject_1(); + + test(); + + function ToObject_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + result = foo["bar"]; + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "foo[\"bar\"] [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-005.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-005.js new file mode 100644 index 00000000000..2fbb9846148 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-005.js @@ -0,0 +1,42 @@ +/** + * File Name: exception-005 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * ToObject error. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-005"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: ToObjectError"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + ToObject_1(); + + test(); + + function ToObject_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + result = foo["bar"]; + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "foo[\"bar\"] [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-006.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-006.js new file mode 100644 index 00000000000..583e976ba65 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-006.js @@ -0,0 +1,53 @@ +/** + * File Name: exception-006 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * ToPrimitive error. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-006"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: TypeError"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + ToPrimitive_1(); + + test(); + + + /** + * Getting the [[DefaultValue]] of any instances of MyObject + * should result in a runtime error in ToPrimitive. + */ + + function MyObject() { + this.toString = void 0; + this.valueOf = void 0; + } + + function ToPrimitive_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + result = new MyObject() + new MyObject(); + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "new MyObject() + new MyObject() [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-007.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-007.js new file mode 100644 index 00000000000..e26a40ecae5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-007.js @@ -0,0 +1,54 @@ +/** + * File Name: exception-007 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * DefaultValue error. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-007"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: TypeError"; + var BUGNUMBER="318250"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + DefaultValue_1(); + + test(); + + + /** + * Getting the [[DefaultValue]] of any instances of MyObject + * should result in a runtime error in ToPrimitive. + */ + + function MyObject() { + this.toString = void 0; + this.valueOf = new Object(); + } + + function DefaultValue_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + result = new MyObject() + new MyObject(); + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "new MyObject() + new MyObject() [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-008.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-008.js new file mode 100644 index 00000000000..797f12566b2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-008.js @@ -0,0 +1,41 @@ +/** + * File Name: exception-008 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * SyntaxError. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-008"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: SyntaxError"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + Syntax_1(); + + test(); + + function Syntax_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + result = eval("continue;"); + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "eval(\"continue\") [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-009.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-009.js new file mode 100644 index 00000000000..b153532e55b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-009.js @@ -0,0 +1,50 @@ +/** + * File Name: exception-009 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * Regression test for nested try blocks. + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=312964 + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-009"; + var VERSION = "JS1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: SyntaxError"; + var BUGNUMBER= "312964"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + try { + expect = "passed: no exception thrown"; + result = expect; + Nested_1(); + } catch ( e ) { + result = "failed: threw " + e; + } finally { + testcases[tc++] = new TestCase( + SECTION, + "nested try", + expect, + result ); + } + + + test(); + + function Nested_1() { + try { + try { + } catch (a) { + } finally { + } + } catch (b) { + } finally { + } + } diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-010-n.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-010-n.js new file mode 100644 index 00000000000..3b4ec829985 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-010-n.js @@ -0,0 +1,36 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * Rob Ginda rginda@netscape.com + */ + +test(); + +function test() +{ + print ("Null throw test."); + print ("BUGNUMBER: 21799"); + + throw null; + + print ("FAILED!: Should have exited with uncaught exception."); + +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-011-n.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-011-n.js new file mode 100644 index 00000000000..90884201f14 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/exception-011-n.js @@ -0,0 +1,35 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * Rob Ginda rginda@netscape.com + */ + +test(); + +function test() +{ + print ("Undefined throw test."); + + throw (void 0); + + print ("FAILED!: Should have exited with uncaught exception."); + +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-001.js new file mode 100644 index 00000000000..b1baf6f15d7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-001.js @@ -0,0 +1,47 @@ +/** + File Name: expression-001.js + Corresponds to: ecma/Expressions/11.12-2-n.js + ECMA Section: 11.12 + Description: + + The grammar for a ConditionalExpression in ECMAScript is a little bit + different from that in C and Java, which each allow the second + subexpression to be an Expression but restrict the third expression to + be a ConditionalExpression. The motivation for this difference in + ECMAScript is to allow an assignment expression to be governed by either + arm of a conditional and to eliminate the confusing and fairly useless + case of a comma expression as the center expression. + + Author: christine@netscape.com + Date: 09 september 1998 +*/ + var SECTION = "expression-001"; + var VERSION = "JS1_4"; + var TITLE = "Conditional operator ( ? : )" + startTest(); + writeHeaderToLog( SECTION + " " + TITLE ); + + var tc = 0; + var testcases = new Array(); + + // the following expression should be an error in JS. + + var result = "Failed" + var exception = "No exception was thrown"; + + try { + eval("var MY_VAR = true ? \"EXPR1\", \"EXPR2\" : \"EXPR3\""); + } catch ( e ) { + result = "Passed"; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "comma expression in a conditional statement "+ + "(threw "+ exception +")", + "Passed", + result ); + + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-002.js new file mode 100644 index 00000000000..1a73ebec01d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-002.js @@ -0,0 +1,57 @@ +/** + File Name: expressions-002.js + Corresponds to: ecma/Expressions/11.2.1-3-n.js + ECMA Section: 11.2.1 Property Accessors + Description: + + Try to access properties of an object whose value is undefined. + + Author: christine@netscape.com + Date: 09 september 1998 +*/ + var SECTION = "expressions-002.js"; + var VERSION = "JS1_4"; + var TITLE = "Property Accessors"; + writeHeaderToLog( SECTION + " "+TITLE ); + + startTest(); + + var tc = 0; + var testcases = new Array(); + + // go through all Native Function objects, methods, and properties and get their typeof. + + var PROPERTY = new Array(); + var p = 0; + + // try to access properties of primitive types + + OBJECT = new Property( "undefined", void 0, "undefined", NaN ); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = OBJECT.value.valueOf(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + + testcases[tc++] = new TestCase( + SECTION, + "Get the value of an object whose value is undefined "+ + "(threw " + exception +")", + expect, + result ); + + test(); + +function Property( object, value, string, number ) { + this.object = object; + this.string = String(value); + this.number = Number(value); + this.valueOf = value; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-003.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-003.js new file mode 100644 index 00000000000..30b536912ac --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-003.js @@ -0,0 +1,52 @@ +/** + File Name: expressions-003.js + Corresponds to: ecma/Expressions/11.2.1-3-n.js + ECMA Section: 11.2.1 Property Accessors + Description: + + Try to access properties of an object whose value is undefined. + + Author: christine@netscape.com + Date: 09 september 1998 +*/ + var SECTION = "expressions-003.js"; + var VERSION = "JS1_4"; + var TITLE = "Property Accessors"; + writeHeaderToLog( SECTION + " "+TITLE ); + + startTest(); + + var tc = 0; + var testcases = new Array(); + + // try to access properties of primitive types + + OBJECT = new Property( "undefined", void 0, "undefined", NaN ); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = OBJECT.value.toString(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + + testcases[tc++] = new TestCase( + SECTION, + "Get the toString value of an object whose value is undefined "+ + "(threw " + exception +")", + expect, + result ); + + test(); + +function Property( object, value, string, number ) { + this.object = object; + this.string = String(value); + this.number = Number(value); + this.value = value; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-004.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-004.js new file mode 100644 index 00000000000..0ce3864b11c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-004.js @@ -0,0 +1,46 @@ +/** + File Name: expression-004.js + Corresponds To: 11.2.1-4-n.js + ECMA Section: 11.2.1 Property Accessors + Description: + + Author: christine@netscape.com + Date: 09 september 1998 +*/ + var SECTION = "expression-004"; + var VERSION = "JS1_4"; + var TITLE = "Property Accessors"; + writeHeaderToLog( SECTION + " "+TITLE ); + startTest(); + + var tc = 0; + var testcases = new Array(); + + var OBJECT = new Property( "null", null, "null", 0 ); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = OBJECT.value.toString(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "Get the toString value of an object whose value is null "+ + "(threw " + exception +")", + expect, + result ); + + test(); + +function Property( object, value, string, number ) { + this.object = object; + this.string = String(value); + this.number = Number(value); + this.value = value; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-005.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-005.js new file mode 100644 index 00000000000..df6914493bc --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-005.js @@ -0,0 +1,38 @@ +/** + File Name: expression-005.js + Corresponds To: 11.2.2-10-n.js + ECMA Section: 11.2.2. The new operator + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "expression-005"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var expect = "Passed"; + var exception = "No exception thrown"; + + try { + result = new Math(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "result= new Math() (threw " + exception + ")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-006.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-006.js new file mode 100644 index 00000000000..1bf0798a160 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-006.js @@ -0,0 +1,43 @@ +/** + File Name: expression-006.js + Corresponds to: 11.2.2-1-n.js + ECMA Section: 11.2.2. The new operator + Description: + + http://scopus/bugsplat/show_bug.cgi?id=327765 + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-006.js"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + var BUGNUMBER="327765"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var OBJECT = new Object(); + result = new OBJECT(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "OBJECT = new Object; result = new OBJECT()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-007.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-007.js new file mode 100644 index 00000000000..988109b652b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-007.js @@ -0,0 +1,41 @@ +/** + File Name: expression-007.js + Corresponds To: 11.2.2-2-n.js + ECMA Section: 11.2.2. The new operator + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-007"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + UNDEFINED = void 0; + result = new UNDEFINED(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "UNDEFINED = void 0; result = new UNDEFINED()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-008.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-008.js new file mode 100644 index 00000000000..caa891254c7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-008.js @@ -0,0 +1,38 @@ +/** + File Name: expression-008 + Corresponds To: 11.2.2-3-n.js + ECMA Section: 11.2.2. The new operator + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-008"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var NULL = null; + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = new NULL(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "NULL = null; result = new NULL()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-009.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-009.js new file mode 100644 index 00000000000..2aa63b6a6d5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-009.js @@ -0,0 +1,39 @@ +/** + File Name: expression-009 + Corresponds to: ecma/Expressions/11.2.2-4-n.js + ECMA Section: 11.2.2. The new operator + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-009"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var STRING = ""; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = new STRING(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "STRING = ''; result = new STRING()" + + " (threw " + exception +")", + expect, + result ); + + test(); \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-010.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-010.js new file mode 100644 index 00000000000..bb21aba2626 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-010.js @@ -0,0 +1,40 @@ +/** + File Name: expression-010.js + Corresponds To: 11.2.2-5-n.js + ECMA Section: 11.2.2. The new operator + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-010"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var NUMBER = 0; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = new NUMBER(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "NUMBER=0, result = new NUMBER()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-011.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-011.js new file mode 100644 index 00000000000..71c601a3b46 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-011.js @@ -0,0 +1,40 @@ +/** + File Name: expression-011.js + Corresponds To: ecma/Expressions/11.2.2-6-n.js + ECMA Section: 11.2.2. The new operator + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-011"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var BOOLEAN = true; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var OBJECT = new BOOLEAN(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "BOOLEAN = true; result = new BOOLEAN()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-012.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-012.js new file mode 100644 index 00000000000..31eb0996bbd --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-012.js @@ -0,0 +1,41 @@ +/** + File Name: expression-012.js + Corresponds To: ecma/Expressions/11.2.2-6-n.js + ECMA Section: 11.2.2. The new operator + Description: + http://scopus/bugsplat/show_bug.cgi?id=327765 + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-012"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + var BUGNUMBER= "327765"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var STRING = new String("hi"); + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = new STRING(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "STRING = new String(\"hi\"); result = new STRING()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-013.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-013.js new file mode 100644 index 00000000000..cc75a7747c5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-013.js @@ -0,0 +1,41 @@ +/** + File Name: expression-013.js + Corresponds To: ecma/Expressions/11.2.2-8-n.js + ECMA Section: 11.2.2. The new operator + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-013"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + var BUGNUMBER= "327765"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var NUMBER = new Number(1); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = new NUMBER(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "NUMBER = new Number(1); result = new NUMBER()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-014.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-014.js new file mode 100644 index 00000000000..4a09cd140a4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-014.js @@ -0,0 +1,43 @@ +/** + File Name: expression-014.js + Corresponds To: ecma/Expressions/11.2.2-9-n.js + ECMA Section: 11.2.2. The new operator + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-014.js"; + var VERSION = "ECMA_1"; + var TITLE = "The new operator"; + var BUGNUMBER= "327765"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var BOOLEAN = new Boolean(); + + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = new BOOLEAN(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "BOOLEAN = new Boolean(); result = new BOOLEAN()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-015.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-015.js new file mode 100644 index 00000000000..09577fc1b0a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-015.js @@ -0,0 +1,37 @@ +/** + File Name: expression-015.js + Corresponds To: ecma/Expressions/11.2.3-2-n.js + ECMA Section: 11.2.3. Function Calls + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-015"; + var VERSION = "JS1_4"; + var TITLE = "Function Calls"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("result = 3.valueOf();"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "3.valueOf()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-016.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-016.js new file mode 100644 index 00000000000..4a551106a7e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-016.js @@ -0,0 +1,37 @@ +/** + File Name: expression-016.js + Corresponds To: ecma/Expressions/11.2.3-3-n.js + ECMA Section: 11.2.3. Function Calls + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-016"; + var VERSION = "JS1_4"; + var TITLE = "Function Calls"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = (void 0).valueOf(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "(void 0).valueOf()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-017.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-017.js new file mode 100644 index 00000000000..949cf3f5734 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-017.js @@ -0,0 +1,37 @@ +/** + File Name: expression-07.js + Corresponds To: ecma/Expressions/11.2.3-4-n.js + ECMA Section: 11.2.3. Function Calls + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-017"; + var VERSION = "JS1_4"; + var TITLE = "Function Calls"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = nullvalueOf(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "null.valueOf()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-019.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-019.js new file mode 100644 index 00000000000..0ef02cb609e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/expression-019.js @@ -0,0 +1,41 @@ +/** + File Name: expression-019.js + Corresponds To: 11.2.2-7-n.js + ECMA Section: 11.2.2. The new operator + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-019"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + var BUGNUMBER= "327765"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var STRING = new String("hi"); + result = new STRING(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var STRING = new String(\"hi\"); result = new STRING();" + + " (threw " + exception + ")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/function-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/function-001.js new file mode 100644 index 00000000000..3cbd19e6e16 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/function-001.js @@ -0,0 +1,64 @@ +/** + * File Name: boolean-001.js + * Description: + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=99232 + * + * eval("function f(){}function g(){}") at top level is an error for JS1.2 + * and above (missing ; between named function expressions), but declares f + * and g as functions below 1.2. + * + * Fails to produce error regardless of version: + * js> version(100) + * 120 + * js> eval("function f(){}function g(){}") + * js> version(120); + * 100 + * js> eval("function f(){}function g(){}") + * js> + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "function-001.js"; + var VERSION = "JS_12"; + var TITLE = "functions not separated by semicolons are errors in version 120 and higher"; + var BUGNUMBER="10278"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "fail"; + var exception = "no exception thrown"; + + try { + eval("function f(){}function g(){}"); + } catch ( e ) { + result = "pass" + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "eval(\"function f(){}function g(){}\") (threw "+exception, + "pass", + result ); + + test(); + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/global-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/global-001.js new file mode 100644 index 00000000000..3b1bd98f0df --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/global-001.js @@ -0,0 +1,43 @@ +/** + File Name: global-001 + Corresponds To: ecma/GlobalObject/15.1-1-n.js + ECMA Section: The global object + Description: + + The global object does not have a [[Construct]] property; it is not + possible to use the global object as a constructor with the new operator. + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "global-001"; + var VERSION = "ECMA_1"; + var TITLE = "The Global Object"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = new this(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "result = new this()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/global-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/global-002.js new file mode 100644 index 00000000000..2453c295b19 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/global-002.js @@ -0,0 +1,43 @@ +/** + File Name: global-002 + Corresponds To: ecma/GlobalObject/15.1-2-n.js + ECMA Section: The global object + Description: + + The global object does not have a [[Construct]] property; it is not + possible to use the global object as a constructor with the new operator. + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "global-002"; + var VERSION = "JS1_4"; + var TITLE = "The Global Object"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = this(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "result = this()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-001.js new file mode 100644 index 00000000000..528a57347f9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-001.js @@ -0,0 +1,49 @@ +/** + File Name: lexical-001.js + CorrespondsTo: ecma/LexicalConventions/7.2.js + ECMA Section: 7.2 Line Terminators + Description: - readability + - separate tokens + - may occur between any two tokens + - cannot occur within any token, not even a string + - affect the process of automatic semicolon insertion. + + white space characters are: + unicode name formal name string representation + \u000A line feed \n + \u000D carriage return \r + + this test uses onerror to capture line numbers. because + we use on error, we can only have one test case per file. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "lexical-001"; + var VERSION = "JS1_4"; + var TITLE = "Line Terminators"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = eval("\r\n\expect"); + } catch ( e ) { + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "OBJECT = new Object; result = new OBJECT()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-002.js new file mode 100644 index 00000000000..b1521c2a44d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-002.js @@ -0,0 +1,49 @@ +/** + File Name: lexical-002.js + Corresponds To: ecma/LexicalConventions/7.2-3-n.js + ECMA Section: 7.2 Line Terminators + Description: - readability + - separate tokens + - may occur between any two tokens + - cannot occur within any token, not even a string + - affect the process of automatic semicolon insertion. + + white space characters are: + unicode name formal name string representation + \u000A line feed \n + \u000D carriage return \r + + this test uses onerror to capture line numbers. because + we use on error, we can only have one test case per file. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "lexical-002"; + var VERSION = "JS1_4"; + var TITLE = "Line Terminators"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = eval("\r\n\expect"); + } catch ( e ) { + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "result=eval(\"\r\nexpect\")" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-003.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-003.js new file mode 100644 index 00000000000..a622d12bf81 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-003.js @@ -0,0 +1,41 @@ +/** + File Name: lexical-003.js + Corresponds To: 7.3-13-n.js + ECMA Section: 7.3 Comments + Description: + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-003.js"; + var VERSION = "JS1_4"; + var TITLE = "Comments"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("/*\n/* nested comment */\n*/\n"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "/*/*nested comment*/ */" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-004.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-004.js new file mode 100644 index 00000000000..64758385b2c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-004.js @@ -0,0 +1,49 @@ +/** + File Name: lexical-004.js + Corresponds To: ecma/LexicalExpressions/7.4.1-1-n.js + ECMA Section: 7.4.1 + + Description: + + Reserved words cannot be used as identifiers. + + ReservedWord :: + Keyword + FutureReservedWord + NullLiteral + BooleanLiteral + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-004"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var null = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var null = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-005.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-005.js new file mode 100644 index 00000000000..a9cdd6b12e6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-005.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-005.js + Corresponds To: 7.4.1-2.js + ECMA Section: 7.4.1 + + Description: + + Reserved words cannot be used as identifiers. + + ReservedWord :: + Keyword + FutureReservedWord + NullLiteral + BooleanLiteral + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-005"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("true = false;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "true = false" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-006.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-006.js new file mode 100644 index 00000000000..89c45f3b475 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-006.js @@ -0,0 +1,55 @@ +/** + File Name: lexical-006.js + Corresponds To: 7.4.2-1.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-006"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("break = new Object();"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "break = new Object()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-007.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-007.js new file mode 100644 index 00000000000..d34afe4bee6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-007.js @@ -0,0 +1,48 @@ +/** + File Name: lexical-005.js + Corresponds To: 7.4.1-3-n.js + ECMA Section: 7.4.1 + + Description: + + Reserved words cannot be used as identifiers. + + ReservedWord :: + Keyword + FutureReservedWord + NullLiteral + BooleanLiteral + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-005"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("false = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "false = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-008.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-008.js new file mode 100644 index 00000000000..f819eaee1a6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-008.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-008.js + Corresponds To: 7.4.3-1-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-008.js"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("case = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "case = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-009.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-009.js new file mode 100644 index 00000000000..39fc71ab3c0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-009.js @@ -0,0 +1,49 @@ +/** + File Name: lexical-009 + Corresponds To: 7.4.3-2-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-009"; + var VERSION = "ECMA_1"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("debugger = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "debugger = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-010.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-010.js new file mode 100644 index 00000000000..9e9f6648dbb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-010.js @@ -0,0 +1,48 @@ +/** + File Name: lexical-010.js + Corresponds To: 7.4.3-3-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-010"; + var VERSION = "ECMA_1"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("export = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "export = true" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-011.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-011.js new file mode 100644 index 00000000000..1c054f2ad8a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-011.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-011.js + Corresponds To: 7.4.3-4-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-011"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("super = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "super = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-012.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-012.js new file mode 100644 index 00000000000..e4579fd95c6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-012.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-012.js + Corresponds To: 7.4.3-5-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-012"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("catch = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "catch = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-013.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-013.js new file mode 100644 index 00000000000..699d06a9f9c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-013.js @@ -0,0 +1,49 @@ +/** + File Name: lexical-013.js + Corresponds To: 7.4.3-6-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-013"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("default = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "default = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-014.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-014.js new file mode 100644 index 00000000000..41b12ff9d7c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-014.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-014.js + Corresponds To: 7.4.3-7-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-014.js"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("extends = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "extends = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-015.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-015.js new file mode 100644 index 00000000000..7cbcc049f6a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-015.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-015.js + Corresponds To: 7.4.3-8-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-015"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("switch = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "switch = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-016.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-016.js new file mode 100644 index 00000000000..812655038c2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-016.js @@ -0,0 +1,48 @@ +/** + File Name: lexical-016 + Corresponds To: 7.4.3-9-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-016"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("class = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "class = true" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-017.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-017.js new file mode 100644 index 00000000000..96849b76994 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-017.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-017.js + Corresponds To: 7.4.3-10-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-017"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("do = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "do = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-018.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-018.js new file mode 100644 index 00000000000..5d46c5f289e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-018.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-018 + Corresponds To: 7.4.3-11-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-018"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("finally = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "finally = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-019.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-019.js new file mode 100644 index 00000000000..9f01fc0adf3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-019.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-019.js + Corresponds To: 7.4.3-12-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-019"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("throw = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "throw = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-020.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-020.js new file mode 100644 index 00000000000..362a3d572e5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-020.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-020.js + Corresponds To 7.4.3-13-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-020"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("const = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "const = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-021.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-021.js new file mode 100644 index 00000000000..9fb3edee3e3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-021.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-021.js + Corresponds To: 7.4.3-14-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-021.js"; + var VERSION = "ECMA_1"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("enum = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "enum = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-022.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-022.js new file mode 100644 index 00000000000..54f256a60dd --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-022.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-022 + Corresponds To 7.4.3-15-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-022.js"; + var VERSION = "ECMA_1"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("import = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "import = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-023.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-023.js new file mode 100644 index 00000000000..0715a3d3923 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-023.js @@ -0,0 +1,49 @@ +/** + File Name: lexical-023.js + Corresponds To: 7.4.3-16-n.js + ECMA Section: 7.4.3 + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-023.js"; + var VERSION = "ECMA_1"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("try = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "try = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-024.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-024.js new file mode 100644 index 00000000000..d7317914e13 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-024.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-024 + Corresponds To: 7.4.2-1-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-024"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var break;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var break" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-025.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-025.js new file mode 100644 index 00000000000..16a44d60e27 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-025.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-025.js + Corresponds To 7.4.2-2-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-025"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var for;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var for" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-026.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-026.js new file mode 100644 index 00000000000..73aea73f0d5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-026.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-026.js + Corresponds To: 7.4.2-3-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-026"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var new;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var new" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-027.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-027.js new file mode 100644 index 00000000000..b8f8593055d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-027.js @@ -0,0 +1,58 @@ +/** + File Name: lexical-027.js + Corresponds To: 7.4.2-4-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + var + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-027"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var var;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var var" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-028.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-028.js new file mode 100644 index 00000000000..a985527def1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-028.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-028.js + Corresponds To: 7.4.2-5-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-028"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var continue=true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var continue=true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-029.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-029.js new file mode 100644 index 00000000000..0b38cbeb5e7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-029.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-029.js + Corresponds To: 7.4.2-6.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-029"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var function = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var function = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-030.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-030.js new file mode 100644 index 00000000000..bc854724f2f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-030.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-030.js + Corresponds To: 7.4.2-7-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-030"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var return = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var return = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-031.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-031.js new file mode 100644 index 00000000000..d2251ba854d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-031.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-031.js + Corresponds To: 7.4.2-8-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-031"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var return;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var return" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-032.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-032.js new file mode 100644 index 00000000000..5ac71cbddcf --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-032.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-032.js + Corresponds To: 7.4.2-9-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-032"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("delete = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "delete = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-033.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-033.js new file mode 100644 index 00000000000..2a357fe0f5b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-033.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-033.js + Corresponds To: 7.4.2-10.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-033"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("if = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "if = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-034.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-034.js new file mode 100644 index 00000000000..d6c03a24364 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-034.js @@ -0,0 +1,55 @@ +/** + File Name: 7.4.2-11-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-034"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("this = true"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "this = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-035.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-035.js new file mode 100644 index 00000000000..f5fca592fbf --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-035.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-035.js + Correpsonds To: 7.4.2-12-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-035"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var while"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var while" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-036.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-036.js new file mode 100644 index 00000000000..3512c9b721a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-036.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-036.js + Corresponds To: 7.4.2-13-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-036"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("else = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "else = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-037.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-037.js new file mode 100644 index 00000000000..641c9de4776 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-037.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-037.js + Corresponds To: 7.4.2-14-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-028"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var in;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var in" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-038.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-038.js new file mode 100644 index 00000000000..f44b6b3cf67 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-038.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-038.js + Corresponds To: 7.4.2-15-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-038"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("typeof = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "typeof = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-039.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-039.js new file mode 100644 index 00000000000..e40b21b9a1f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-039.js @@ -0,0 +1,43 @@ +/** + File Name: lexical-039 + Corresponds To: 7.5-2-n.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "lexical-039"; + var VERSION = "JS1_4"; + var TITLE = "Identifiers"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var 0abc;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var 0abc" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-040.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-040.js new file mode 100644 index 00000000000..fb306c1d0ff --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-040.js @@ -0,0 +1,43 @@ +/** + File Name: lexical-040.js + Corresponds To: 7.5-2.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "lexical-040"; + var VERSION = "JS1_4"; + var TITLE = "Identifiers"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var 1abc;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var 1abc" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-041.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-041.js new file mode 100644 index 00000000000..da830f8e220 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-041.js @@ -0,0 +1,45 @@ +/** + File Name: lexical-041.js + Corresponds To: 7.5-8-n.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "lexical-041"; + var VERSION = "ECMA_1"; + var TITLE = "Identifiers"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var @abc;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var @abc" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-042.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-042.js new file mode 100644 index 00000000000..88ee50951cf --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-042.js @@ -0,0 +1,46 @@ +/** + File Name: lexical-042.js + Corresponds To: 7.5-9-n.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "lexical-042"; + var VERSION = "JS1_4"; + var TITLE = "Identifiers"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var 123;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var 123" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-047.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-047.js new file mode 100644 index 00000000000..b5e35489b8a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-047.js @@ -0,0 +1,47 @@ +/** + File Name: lexical-047.js + Corresponds To: 7.8.1-7-n.js + ECMA Section: 7.8.1 + Description: + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "lexical-047"; + var VERSION = "JS1_4"; + var TITLE = "for loops"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var counter = 0; + eval("for ( counter = 0\n" + + "counter <= 1\n" + + "counter++ )\n" + + "{\n" + + "result += \": got to inner loop\";\n" + + "}\n"); + + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "line breaks within a for expression" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-048.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-048.js new file mode 100644 index 00000000000..39a0600ad85 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-048.js @@ -0,0 +1,41 @@ + /** + File Name: lexical-048.js + Corresponds To: 7.8.1-1.js + ECMA Section: 7.8.1 Rules of Automatic Semicolon Insertion + Description: + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "lexical-048"; + var VERSION = "JS1_4"; + var TITLE = "The Rules of Automatic Semicolon Insertion"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var counter = 0; + eval( "for ( counter = 0;\ncounter <= 1\ncounter++ ) {\nresult += \": got inside for loop\")"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "line breaks within a for expression" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-049.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-049.js new file mode 100644 index 00000000000..e03cfec0e40 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-049.js @@ -0,0 +1,46 @@ + /** + File Name: lexical-049 + Corresponds To: 7.8.1-1.js + ECMA Section: 7.8.1 Rules of Automatic Semicolon Insertioin + Description: + Author: christine@netscape.com + Date: 15 september 1997 +*/ + var SECTION = "lexical-049"; + var VERSION = "JS1_4"; + var TITLE = "The Rules of Automatic Semicolon Insertion"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var counter = 0; + eval("for ( counter = 0\n" + + "counter <= 1;\n" + + "counter++ )\n" + + "{\n" + + "result += \": got inside for loop\";\n" + + "}\n"); + + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "line breaks within a for expression" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-050.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-050.js new file mode 100644 index 00000000000..bc871a7e2dd --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-050.js @@ -0,0 +1,42 @@ +/** + File Name: lexical-050.js + Corresponds to: 7.8.2-1-n.js + ECMA Section: 7.8.2 Examples of Automatic Semicolon Insertion + Description: compare some specific examples of the automatic + insertion rules in the EMCA specification. + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "lexical-050"; + var VERSION = "JS1_4"; + var TITLE = "Examples of Automatic Semicolon Insertion"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("{ 1 2 } 3"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "{ 1 2 } 3" + + " (threw " + exception +")", + expect, + result ); + + test(); + + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-051.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-051.js new file mode 100644 index 00000000000..68e6b44258a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-051.js @@ -0,0 +1,42 @@ +/** + File Name: lexical-051.js + Corresponds to: 7.8.2-3-n.js + ECMA Section: 7.8.2 Examples of Automatic Semicolon Insertion + Description: compare some specific examples of the automatic + insertion rules in the EMCA specification. + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "lexical-051"; + var VERSION = "JS1_4"; + var TITLE = "Examples of Automatic Semicolon Insertion"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("for (a; b\n) result += \": got to inner loop\";") + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "for (a; b\n)" + + " (threw " + exception +")", + expect, + result ); + + test(); + + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-052.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-052.js new file mode 100644 index 00000000000..49aa7c761df --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-052.js @@ -0,0 +1,44 @@ +/** + File Name: lexical-052.js + Corresponds to: 7.8.2-4-n.js + ECMA Section: 7.8.2 Examples of Automatic Semicolon Insertion + Description: compare some specific examples of the automatic + insertion rules in the EMCA specification. + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "lexical-052"; + var VERSION = "JS1_4"; + var TITLE = "Examples of Automatic Semicolon Insertion"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + MyFunction(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "calling return indirectly" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyFunction() { + var s = "return"; + eval(s); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-053.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-053.js new file mode 100644 index 00000000000..6e3ae99bd67 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-053.js @@ -0,0 +1,42 @@ +/** + File Name: lexical-053.js + Corresponds to: 7.8.2-7-n.js + ECMA Section: 7.8.2 Examples of Automatic Semicolon Insertion + Description: compare some specific examples of the automatic + insertion rules in the EMCA specification. + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "lexical-053"; + var VERSION = "JS1_4"; + var TITLE = "Examples of Automatic Semicolon Insertion"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + a = true + b = false + + eval('if (a > b)\nelse result += ": got to else statement"'); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "calling return indirectly" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-054.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-054.js new file mode 100644 index 00000000000..c4b9e9f654b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/lexical-054.js @@ -0,0 +1,43 @@ +/** + File Name: lexical-054.js + Corresponds to: 7.8.2-7-n.js + ECMA Section: 7.8.2 Examples of Automatic Semicolon Insertion + Description: compare some specific examples of the automatic + insertion rules in the EMCA specification. + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "lexical-054"; + var VERSION = "JS1_4"; + var TITLE = "Examples of Automatic Semicolon Insertion"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + a=0; + b=1; + c=2; + d=3; + eval("if (a > b)\nelse c = d"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "if (a > b)\nelse c = d" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/number-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/number-001.js new file mode 100644 index 00000000000..1f456037d3d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/number-001.js @@ -0,0 +1,52 @@ +/** + File Name: number-001 + Corresponds To: 15.7.4.2-2-n.js + ECMA Section: 15.7.4.2.2 Number.prototype.toString() + Description: + If the radix is the number 10 or not supplied, then this number value is + given as an argument to the ToString operator; the resulting string value + is returned. + + If the radix is supplied and is an integer from 2 to 36, but not 10, the + result is a string, the choice of which is implementation dependent. + + The toString function is not generic; it generates a runtime error if its + this value is not a Number object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "number-001"; + var VERSION = "JS1_4"; + var TITLE = "Exceptions for Number.toString()"; + + startTest(); + writeHeaderToLog( SECTION + " Number.prototype.toString()"); + + var testcases = new Array(); + var tc = 0; + + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + + try { + object= new Object(); + object.toString = Number.prototype.toString; + result = object.toString(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "object = new Object(); object.toString = Number.prototype.toString; object.toString()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/number-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/number-002.js new file mode 100644 index 00000000000..5e84ebf20e3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/number-002.js @@ -0,0 +1,45 @@ +/** + File Name: number-002.js + Corresponds To: ecma/Number/15.7.4.3-2-n.js + ECMA Section: 15.7.4.3.1 Number.prototype.valueOf() + Description: + Returns this number value. + + The valueOf function is not generic; it generates a runtime error if its + this value is not a Number object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "number-002"; + var VERSION = "JS1_4"; + var TITLE = "Exceptions for Number.valueOf()"; + + startTest(); + writeHeaderToLog( SECTION + " Number.prototype.valueOf()"); + + var testcases = new Array(); + var tc = 0; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + object= new Object(); + object.toString = Number.prototype.valueOf; + result = object.toString(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "object = new Object(); object.valueOf = Number.prototype.valueOf; object.valueOf()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/number-003.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/number-003.js new file mode 100644 index 00000000000..947d3d23243 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/number-003.js @@ -0,0 +1,47 @@ +/** + File Name: number-003.js + Corresponds To: 15.7.4.3-3.js + ECMA Section: 15.7.4.3.1 Number.prototype.valueOf() + Description: + Returns this number value. + + The valueOf function is not generic; it generates a runtime error if its + this value is not a Number object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "number-003"; + var VERSION = "JS1_4"; + var TITLE = "Exceptions for Number.valueOf()"; + + var tc = 0; + var testcases = new Array(); + + startTest(); + writeHeaderToLog( SECTION + " Number.prototype.valueOf()"); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + VALUE_OF = Number.prototype.valueOf; + OBJECT = new String("Infinity"); + OBJECT.valueOf = VALUE_OF; + result = OBJECT.valueOf(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "Assigning Number.prototype.valueOf as the valueOf of a String object " + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-001.js new file mode 100644 index 00000000000..928a04d747d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-001.js @@ -0,0 +1,44 @@ +/** + File Name: statement-001.js + Corresponds To: 12.6.2-9-n.js + ECMA Section: 12.6.2 The for Statement + + 1. first expression is not present. + 2. second expression is not present + 3. third expression is not present + + + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "statement-001.js"; +// var SECTION = "12.6.2-9-n"; + var VERSION = "ECMA_1"; + var TITLE = "The for statment"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + var tc = 0; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("for (i) {\n}"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "for(i) {}" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-002.js new file mode 100644 index 00000000000..83c642c12d7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-002.js @@ -0,0 +1,66 @@ +/** + File Name: statement-002.js + Corresponds To: 12.6.3-1.js + ECMA Section: 12.6.3 The for...in Statement + Description: + The production IterationStatement : for ( LeftHandSideExpression in Expression ) + Statement is evaluated as follows: + + 1. Evaluate the Expression. + 2. Call GetValue(Result(1)). + 3. Call ToObject(Result(2)). + 4. Let C be "normal completion". + 5. Get the name of the next property of Result(3) that doesn't have the + DontEnum attribute. If there is no such property, go to step 14. + 6. Evaluate the LeftHandSideExpression ( it may be evaluated repeatedly). + 7. Call PutValue(Result(6), Result(5)). PutValue( V, W ): + 1. If Type(V) is not Reference, generate a runtime error. + 2. Call GetBase(V). + 3. If Result(2) is null, go to step 6. + 4. Call the [[Put]] method of Result(2), passing GetPropertyName(V) + for the property name and W for the value. + 5. Return. + 6. Call the [[Put]] method for the global object, passing + GetPropertyName(V) for the property name and W for the value. + 7. Return. + 8. Evaluate Statement. + 9. If Result(8) is a value completion, change C to be "normal completion + after value V" where V is the value carried by Result(8). + 10. If Result(8) is a break completion, go to step 14. + 11. If Result(8) is a continue completion, go to step 5. + 12. If Result(8) is a return completion, return Result(8). + 13. Go to step 5. + 14. Return C. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "statement-002"; + var VERSION = "JS1_4"; + var TITLE = "The for..in statment"; + + var testcases = new Array(); + var tc = 0; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval(" for ( var i, p in this) { result += this[p]; }"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "more than one member expression" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-003.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-003.js new file mode 100644 index 00000000000..c7ffc7f9ba1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-003.js @@ -0,0 +1,77 @@ +/** + File Name: statement-003 + Corresponds To: 12.6.3-7-n.js + ECMA Section: 12.6.3 The for...in Statement + Description: + The production IterationStatement : for ( LeftHandSideExpression in Expression ) + Statement is evaluated as follows: + + 1. Evaluate the Expression. + 2. Call GetValue(Result(1)). + 3. Call ToObject(Result(2)). + 4. Let C be "normal completion". + 5. Get the name of the next property of Result(3) that doesn't have the + DontEnum attribute. If there is no such property, go to step 14. + 6. Evaluate the LeftHandSideExpression ( it may be evaluated repeatedly). + 7. Call PutValue(Result(6), Result(5)). PutValue( V, W ): + 1. If Type(V) is not Reference, generate a runtime error. + 2. Call GetBase(V). + 3. If Result(2) is null, go to step 6. + 4. Call the [[Put]] method of Result(2), passing GetPropertyName(V) + for the property name and W for the value. + 5. Return. + 6. Call the [[Put]] method for the global object, passing + GetPropertyName(V) for the property name and W for the value. + 7. Return. + 8. Evaluate Statement. + 9. If Result(8) is a value completion, change C to be "normal completion + after value V" where V is the value carried by Result(8). + 10. If Result(8) is a break completion, go to step 14. + 11. If Result(8) is a continue completion, go to step 5. + 12. If Result(8) is a return completion, return Result(8). + 13. Go to step 5. + 14. Return C. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "statement-003"; + var VERSION = "JS1_4"; + var TITLE = "The for..in statment"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + var tc = 0; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var o = new MyObject(); + var result = 0; + + eval("for ( this in o) {\n" + + "result += this[p];\n" + + "}\n"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "bad left-hand side expression" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyObject() { + this.value = 2; + this[0] = 4; + return this; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-004.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-004.js new file mode 100644 index 00000000000..9eee4e605e9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-004.js @@ -0,0 +1,49 @@ +/** + File Name: statement-004.js + Corresponds To: 12.6.3-1.js + ECMA Section: 12.6.3 The for...in Statement + Description: + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "statement-004"; + var VERSION = "JS1_4"; + var TITLE = "The for..in statment"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + var tc = 0; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var o = new MyObject(); + + eval("for ( \"a\" in o) {\n" + + "result += this[p];\n" + + "}"); + + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "bad left-hand side expression" + + " (threw " + exception +")", + expect, + result ); + + test(); + + +function MyObject() { + this.value = 2; + this[0] = 4; + return this; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-005.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-005.js new file mode 100644 index 00000000000..50933b03b7e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-005.js @@ -0,0 +1,48 @@ +/** + File Name: statement-005.js + Corresponds To: 12.6.3-8-n.js + ECMA Section: 12.6.3 The for...in Statement + Description: + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "statement-005"; + var VERSION = "JS1_4"; + var TITLE = "The for..in statment"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + var tc = 0; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var o = new MyObject(); + result = 0; + + eval("for (1 in o) {\n" + + "result += this[p];" + + "}\n"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "bad left-hand side expression" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyObject() { + this.value = 2; + this[0] = 4; + return this; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-006.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-006.js new file mode 100644 index 00000000000..1fe03259eac --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-006.js @@ -0,0 +1,48 @@ +/** + File Name: statement-006.js + Corresponds To: 12.6.3-9-n.js + ECMA Section: 12.6.3 The for...in Statement + Description: + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "statement-006"; + var VERSION = "JS1_4"; + var TITLE = "The for..in statment"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var o = new MyObject(); + var result = 0; + for ( var o in foo) { + result += this[o]; + } + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "object is not defined" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyObject() { + this.value = 2; + this[0] = 4; + return this; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-007.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-007.js new file mode 100644 index 00000000000..506578b4d90 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-007.js @@ -0,0 +1,39 @@ +/** + File Name: statement-007.js + Corresponds To: 12.7-1-n.js + ECMA Section: 12.7 The continue statement + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "statement-007"; + var VERSION = "JS1_4"; + var TITLE = "The continue statment"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("continue;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "continue outside of an iteration statement" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-008.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-008.js new file mode 100644 index 00000000000..e293964c129 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-008.js @@ -0,0 +1,39 @@ +/** + File Name: statement-008.js + Corresponds To: 12.8-1-n.js + ECMA Section: 12.8 The break statement + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "statement-008"; + var VERSION = "JS1_4"; + var TITLE = "The break in statment"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("break;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "break outside of an iteration statement" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-009.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-009.js new file mode 100644 index 00000000000..136d3f1f866 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/statement-009.js @@ -0,0 +1,38 @@ +/** + File Name: 12.9-1-n.js + ECMA Section: 12.9 The return statement + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "12.9-1-n"; + var VERSION = "ECMA_1"; + var TITLE = "The return statment"; + + startTest(); + writeHeaderToLog( SECTION + " The return statement"); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("return;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "return outside of a function" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/string-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/string-001.js new file mode 100644 index 00000000000..9ba39afb1a3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/string-001.js @@ -0,0 +1,50 @@ +/** + File Name: string-001.js + Corresponds To: 15.5.4.2-2-n.js + ECMA Section: 15.5.4.2 String.prototype.toString() + + Description: Returns this string value. Note that, for a String + object, the toString() method happens to return the same + thing as the valueOf() method. + + The toString function is not generic; it generates a + runtime error if its this value is not a String object. + Therefore it connot be transferred to the other kinds of + objects for use as a method. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + var SECTION = "string-001"; + var VERSION = "JS1_4"; + var TITLE = "String.prototype.toString"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + OBJECT = new Object(); + OBJECT.toString = String.prototype.toString(); + result = OBJECT.toString(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "OBJECT = new Object; "+ + " OBJECT.toString = String.prototype.toString; OBJECT.toString()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/string-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/string-002.js new file mode 100644 index 00000000000..857271efe07 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Exceptions/string-002.js @@ -0,0 +1,49 @@ +/** + File Name: string-002.js + Corresponds To: 15.5.4.3-3-n.js + ECMA Section: 15.5.4.3 String.prototype.valueOf() + + Description: Returns this string value. + + The valueOf function is not generic; it generates a + runtime error if its this value is not a String object. + Therefore it connot be transferred to the other kinds of + objects for use as a method. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + var SECTION = "string-002"; + var VERSION = "JS1_4"; + var TITLE = "String.prototype.valueOf"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var OBJECT =new Object(); + OBJECT.valueOf = String.prototype.valueOf; + result = OBJECT.valueOf(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "OBJECT = new Object; OBJECT.valueOf = String.prototype.valueOf;"+ + "result = OBJECT.valueOf();" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/StrictEquality-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/StrictEquality-001.js new file mode 100644 index 00000000000..c3ac50735cf --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/StrictEquality-001.js @@ -0,0 +1,70 @@ +/** + * File Name: StrictEquality-001.js + * ECMA Section: 11.9.6.js + * Description: + * + * Author: christine@netscape.com + * Date: 4 september 1998 + */ + var SECTION = "StrictEquality-001 - 11.9.6"; + var VERSION = "ECMA_2"; + var TITLE = "The strict equality operator ( === )"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + + // 1. If Type(x) is different from Type(y) return false + + StrictEquality( true, new Boolean(true), false ); + StrictEquality( new Boolean(), false, false ); + StrictEquality( "", new String(), false ); + StrictEquality( new String("hi"), "hi", false ); + + // 2. If Type(x) is not Number go to step 9. + + // 3. If x is NaN, return false + StrictEquality( NaN, NaN, false ); + StrictEquality( NaN, 0, false ); + + // 4. If y is NaN, return false. + StrictEquality( 0, NaN, false ); + + // 5. if x is the same number value as y, return true + + // 6. If x is +0 and y is -0, return true + + // 7. If x is -0 and y is +0, return true + + // 8. Return false. + + + // 9. If Type(x) is String, then return true if x and y are exactly + // the same sequence of characters ( same length and same characters + // in corresponding positions.) Otherwise return false. + + // 10. If Type(x) is Boolean, return true if x and y are both true or + // both false. otherwise return false. + + + // Return true if x and y refer to the same object. Otherwise return + // false. + + // Return false. + + + test(); + +function StrictEquality( x, y, expect ) { + result = ( x === y ); + + testcases[tc++] = new TestCase( + SECTION, + x +" === " + y, + expect, + result ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-001.js new file mode 100644 index 00000000000..2e7412ad8c4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-001.js @@ -0,0 +1,117 @@ +/** + * File Name: instanceof-001.js + * ECMA Section: 11.8.6 + * Description: + * + * RelationalExpression instanceof Identifier + * + * Author: christine@netscape.com + * Date: 2 September 1998 + */ + var SECTION = "instanceof-001"; + var VERSION = "ECMA_2"; + var TITLE = "instanceof" + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + function InstanceOf( object_1, object_2, expect ) { + result = object_1 instanceof object_2; + + testcases[tc++] = new TestCase( + SECTION, + "(" + object_1 + ") instanceof " + object_2, + expect, + result ); + } + + function Gen3(value) { + this.value = value; + this.generation = 3; + this.toString = new Function ( "return \"(Gen\"+this.generation+\" instance)\"" ); + } + Gen3.name = 3; + Gen3.__proto__.toString = new Function( "return \"(\"+this.name+\" object)\""); + + function Gen2(value) { + this.value = value; + this.generation = 2; + } + Gen2.name = 2; + Gen2.prototype = new Gen3(); + + function Gen1(value) { + this.value = value; + this.generation = 1; + } + Gen1.name = 1; + Gen1.prototype = new Gen2(); + + function Gen0(value) { + this.value = value; + this.generation = 0; + } + Gen0.name = 0; + Gen0.prototype = new Gen1(); + + + function GenA(value) { + this.value = value; + this.generation = "A"; + this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" ); + + } + GenA.prototype = new Gen0(); + GenA.name = "A"; + + function GenB(value) { + this.value = value; + this.generation = "B"; + this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" ); + } + GenB.name = "B" + GenB.prototype = void 0; + + // RelationalExpression is not an object. + + InstanceOf( true, Boolean, false ); + InstanceOf( new Boolean(false), Boolean, true ); + + // Identifier is not a function + +// InstanceOf( true, true, false ); +// InstanceOf( new Boolean(true), false, false ); + + // Identifier is a function, prototype of Identifier is not an object + +// InstanceOf( new GenB(), GenB, false ); + + // __proto__ of RelationalExpression is null. should return false + genA = new GenA(); + genA.__proto__ = null; + + InstanceOf( genA, GenA, false ); + + // RelationalExpression.__proto__ == (but not ===) Identifier.prototype + + InstanceOf( new Gen2(), Gen0, false ); + InstanceOf( new Gen2(), Gen1, false ); + InstanceOf( new Gen2(), Gen2, true ); + InstanceOf( new Gen2(), Gen3, true ); + + // RelationalExpression.__proto__.__proto__ === Identifier.prototype + InstanceOf( new Gen0(), Gen0, true ); + InstanceOf( new Gen0(), Gen1, true ); + InstanceOf( new Gen0(), Gen2, true ); + InstanceOf( new Gen0(), Gen3, true ); + + InstanceOf( new Gen0(), Object, true ); + InstanceOf( new Gen0(), Function, false ); + + InstanceOf( Gen0, Function, true ); + InstanceOf( Gen0, Object, true ); + + test(); \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-002.js new file mode 100644 index 00000000000..68697d06b04 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-002.js @@ -0,0 +1,124 @@ +/** + File Name: instanceof-002.js + Section: + Description: Determining Instance Relationships + + This test is the same as js1_3/inherit/proto-002, except that it uses + the builtin instanceof operator rather than a user-defined function + called InstanceOf. + + This tests Object Hierarchy and Inheritance, as described in the document + Object Hierarchy and Inheritance in JavaScript, last modified on 12/18/97 + 15:19:34 on http://devedge.netscape.com/. Current URL: + http://devedge.netscape.com/docs/manuals/communicator/jsobj/contents.htm + + This tests the syntax ObjectName.prototype = new PrototypeObject using the + Employee example in the document referenced above. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ +// onerror = err; + + var SECTION = "instanceof-002"; + var VERSION = "ECMA_2"; + var TITLE = "Determining Instance Relationships"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + +function InstanceOf( object, constructor ) { + while ( object != null ) { + if ( object == constructor.prototype ) { + return true; + } + object = object.__proto__; + } + return false; +} + +function Employee ( name, dept ) { + this.name = name || ""; + this.dept = dept || "general"; +} + +function Manager () { + this.reports = []; +} +Manager.prototype = new Employee(); + +function WorkerBee ( name, dept, projs ) { + this.base = Employee; + this.base( name, dept) + this.projects = projs || new Array(); +} +WorkerBee.prototype = new Employee(); + +function SalesPerson () { + this.dept = "sales"; + this.quota = 100; +} +SalesPerson.prototype = new WorkerBee(); + +function Engineer ( name, projs, machine ) { + this.base = WorkerBee; + this.base( name, "engineering", projs ) + this.machine = machine || ""; +} +Engineer.prototype = new WorkerBee(); + +var pat = new Engineer() + + testcases[tc++] = new TestCase( SECTION, + "pat.__proto__ == Engineer.prototype", + true, + pat.__proto__ == Engineer.prototype ); + + testcases[tc++] = new TestCase( SECTION, + "pat.__proto__.__proto__ == WorkerBee.prototype", + true, + pat.__proto__.__proto__ == WorkerBee.prototype ); + + testcases[tc++] = new TestCase( SECTION, + "pat.__proto__.__proto__.__proto__ == Employee.prototype", + true, + pat.__proto__.__proto__.__proto__ == Employee.prototype ); + + testcases[tc++] = new TestCase( SECTION, + "pat.__proto__.__proto__.__proto__.__proto__ == Object.prototype", + true, + pat.__proto__.__proto__.__proto__.__proto__ == Object.prototype ); + + testcases[tc++] = new TestCase( SECTION, + "pat.__proto__.__proto__.__proto__.__proto__.__proto__ == null", + true, + pat.__proto__.__proto__.__proto__.__proto__.__proto__ == null ); + + testcases[tc++] = new TestCase( SECTION, + "pat instanceof Engineer", + true, + pat instanceof Engineer ); + + testcases[tc++] = new TestCase( SECTION, + "pat instanceof WorkerBee )", + true, + pat instanceof WorkerBee ); + + testcases[tc++] = new TestCase( SECTION, + "pat instanceof Employee )", + true, + pat instanceof Employee ); + + testcases[tc++] = new TestCase( SECTION, + "pat instanceof Object )", + true, + pat instanceof Object ); + + testcases[tc++] = new TestCase( SECTION, + "pat instanceof SalesPerson )", + false, + pat instanceof SalesPerson ); + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-003-n.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-003-n.js new file mode 100644 index 00000000000..f48108ee418 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-003-n.js @@ -0,0 +1,93 @@ +/** + * File Name: instanceof-001.js + * ECMA Section: 11.8.6 + * Description: + * + * RelationalExpression instanceof Identifier + * + * Author: christine@netscape.com + * Date: 2 September 1998 + */ + var SECTION = "instanceof-001"; + var VERSION = "ECMA_2"; + var TITLE = "instanceof" + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + function InstanceOf( object_1, object_2, expect ) { + result = object_1 instanceof object_2; + + testcases[tc++] = new TestCase( + SECTION, + "(" + object_1 + ") instanceof " + object_2, + expect, + result ); + } + + function Gen3(value) { + this.value = value; + this.generation = 3; + this.toString = new Function ( "return \"(Gen\"+this.generation+\" instance)\"" ); + } + Gen3.name = 3; + Gen3.__proto__.toString = new Function( "return \"(\"+this.name+\" object)\""); + + function Gen2(value) { + this.value = value; + this.generation = 2; + } + Gen2.name = 2; + Gen2.prototype = new Gen3(); + + function Gen1(value) { + this.value = value; + this.generation = 1; + } + Gen1.name = 1; + Gen1.prototype = new Gen2(); + + function Gen0(value) { + this.value = value; + this.generation = 0; + } + Gen0.name = 0; + Gen0.prototype = new Gen1(); + + + function GenA(value) { + this.value = value; + this.generation = "A"; + this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" ); + + } + GenA.prototype = new Gen0(); + GenA.name = "A"; + + function GenB(value) { + this.value = value; + this.generation = "B"; + this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" ); + } + GenB.name = "B" + GenB.prototype = void 0; + + // RelationalExpression is not an object. + + InstanceOf( true, Boolean, false ); +// InstanceOf( new Boolean(false), Boolean, true ); + + // Identifier is not a function + + InstanceOf( true, true, false ); +// InstanceOf( new Boolean(true), false, false ); + + // Identifier is a function, prototype of Identifier is not an object + +// InstanceOf( new GenB(), GenB, false ); + + + test(); \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-004-n.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-004-n.js new file mode 100644 index 00000000000..664a5536a6c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-004-n.js @@ -0,0 +1,92 @@ +/** + * File Name: instanceof-001.js + * ECMA Section: 11.8.6 + * Description: + * + * RelationalExpression instanceof Identifier + * + * Author: christine@netscape.com + * Date: 2 September 1998 + */ + var SECTION = "instanceof-001"; + var VERSION = "ECMA_2"; + var TITLE = "instanceof" + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + function InstanceOf( object_1, object_2, expect ) { + result = object_1 instanceof object_2; + + testcases[tc++] = new TestCase( + SECTION, + "(" + object_1 + ") instanceof " + object_2, + expect, + result ); + } + + function Gen3(value) { + this.value = value; + this.generation = 3; + this.toString = new Function ( "return \"(Gen\"+this.generation+\" instance)\"" ); + } + Gen3.name = 3; + Gen3.__proto__.toString = new Function( "return \"(\"+this.name+\" object)\""); + + function Gen2(value) { + this.value = value; + this.generation = 2; + } + Gen2.name = 2; + Gen2.prototype = new Gen3(); + + function Gen1(value) { + this.value = value; + this.generation = 1; + } + Gen1.name = 1; + Gen1.prototype = new Gen2(); + + function Gen0(value) { + this.value = value; + this.generation = 0; + } + Gen0.name = 0; + Gen0.prototype = new Gen1(); + + + function GenA(value) { + this.value = value; + this.generation = "A"; + this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" ); + + } + GenA.prototype = new Gen0(); + GenA.name = "A"; + + function GenB(value) { + this.value = value; + this.generation = "B"; + this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" ); + } + GenB.name = "B" + GenB.prototype = void 0; + + // RelationalExpression is not an object. + + InstanceOf( true, Boolean, false ); + InstanceOf( new Boolean(false), Boolean, true ); + + // Identifier is not a function + + InstanceOf( new Boolean(true), false, false ); + + // Identifier is a function, prototype of Identifier is not an object + +// InstanceOf( new GenB(), GenB, false ); + + + test(); \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-005-n.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-005-n.js new file mode 100644 index 00000000000..c3a621d9b78 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-005-n.js @@ -0,0 +1,84 @@ +/** + * File Name: instanceof-001.js + * ECMA Section: 11.8.6 + * Description: + * + * RelationalExpression instanceof Identifier + * + * Author: christine@netscape.com + * Date: 2 September 1998 + */ + var SECTION = "instanceof-001"; + var VERSION = "ECMA_2"; + var TITLE = "instanceof" + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + function InstanceOf( object_1, object_2, expect ) { + result = object_1 instanceof object_2; + + testcases[tc++] = new TestCase( + SECTION, + "(" + object_1 + ") instanceof " + object_2, + expect, + result ); + } + + function Gen3(value) { + this.value = value; + this.generation = 3; + this.toString = new Function ( "return \"(Gen\"+this.generation+\" instance)\"" ); + } + Gen3.name = 3; + Gen3.__proto__.toString = new Function( "return \"(\"+this.name+\" object)\""); + + function Gen2(value) { + this.value = value; + this.generation = 2; + } + Gen2.name = 2; + Gen2.prototype = new Gen3(); + + function Gen1(value) { + this.value = value; + this.generation = 1; + } + Gen1.name = 1; + Gen1.prototype = new Gen2(); + + function Gen0(value) { + this.value = value; + this.generation = 0; + } + Gen0.name = 0; + Gen0.prototype = new Gen1(); + + + function GenA(value) { + this.value = value; + this.generation = "A"; + this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" ); + + } + GenA.prototype = new Gen0(); + GenA.name = "A"; + + function GenB(value) { + this.value = value; + this.generation = "B"; + this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" ); + } + GenB.name = "B" + GenB.prototype = void 0; + + + // Identifier is a function, prototype of Identifier is not an object + + InstanceOf( new GenB(), GenB, false ); + + + test(); \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-006.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-006.js new file mode 100644 index 00000000000..f1be0b4be97 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Expressions/instanceof-006.js @@ -0,0 +1,83 @@ +/** + * File Name: instanceof-001.js + * ECMA Section: 11.8.6 + * Description: + * + * RelationalExpression instanceof Identifier + * + * Author: christine@netscape.com + * Date: 2 September 1998 + */ + var SECTION = "instanceof-001"; + var VERSION = "ECMA_2"; + var TITLE = "instanceof" + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + function InstanceOf( object_1, object_2, expect ) { + result = object_1 instanceof object_2; + + testcases[tc++] = new TestCase( + SECTION, + "(" + object_1 + ") instanceof " + object_2, + expect, + result ); + } + + function Gen3(value) { + this.value = value; + this.generation = 3; + this.toString = new Function ( "return \"(Gen\"+this.generation+\" instance)\"" ); + } + Gen3.name = 3; + Gen3.__proto__.toString = new Function( "return \"(\"+this.name+\" object)\""); + + function Gen2(value) { + this.value = value; + this.generation = 2; + } + Gen2.name = 2; + Gen2.prototype = new Gen3(); + + function Gen1(value) { + this.value = value; + this.generation = 1; + } + Gen1.name = 1; + Gen1.prototype = new Gen2(); + + function Gen0(value) { + this.value = value; + this.generation = 0; + } + Gen0.name = 0; + Gen0.prototype = new Gen1(); + + + function GenA(value) { + this.value = value; + this.generation = "A"; + this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" ); + + } + GenA.prototype = new Gen0(); + GenA.name = "A"; + + function GenB(value) { + this.value = value; + this.generation = "B"; + this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" ); + } + GenB.name = "B" + GenB.prototype = void 0; + + // RelationalExpression is not an object. + +// InstanceOf( true, Boolean, false ); + InstanceOf( new Boolean(false), Boolean, true ); + + test(); \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/FunctionObjects/apply-001-n.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/FunctionObjects/apply-001-n.js new file mode 100644 index 00000000000..2a2bf4062b5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/FunctionObjects/apply-001-n.js @@ -0,0 +1,39 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * Rob Ginda rginda@netscape.com + */ + +print ("STATUS: f.apply crash test."); + +print ("BUGNUMBER: 21836"); + +function f () +{ +} + +test (); + +function test () +{ + f.apply(2,2); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/FunctionObjects/call-1.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/FunctionObjects/call-1.js new file mode 100644 index 00000000000..9ea9074752f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/FunctionObjects/call-1.js @@ -0,0 +1,40 @@ +/** + File Name: call-1.js + Section: Function.prototype.call + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "call-1"; + var VERSION = "ECMA_2"; + var TITLE = "Function.prototype.call"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + + testcases[tc++] = new TestCase( SECTION, + "ToString.call( this, this )", + GLOBAL, + ToString.call( this, this ) ); + + testcases[tc++] = new TestCase( SECTION, + "ToString.call( Boolean, Boolean.prototype )", + "false", + ToString.call( Boolean, Boolean.prototype ) ); + + testcases[tc++] = new TestCase( SECTION, + "ToString.call( Boolean, Boolean.prototype.valueOf() )", + "false", + ToString.call( Boolean, Boolean.prototype.valueOf() ) ); + + test(); + +function ToString( obj ) { + return obj +""; +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/LexicalConventions/keywords-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/LexicalConventions/keywords-001.js new file mode 100644 index 00000000000..19e930de006 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/LexicalConventions/keywords-001.js @@ -0,0 +1,31 @@ +/** + * File Name: + * ECMA Section: + * Description: + * + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = ""; + var VERSION = "ECMA_2"; + var TITLE = "Keywords"; + + startTest(); + + var result = "failed"; + + try { + eval("super;"); + } + catch (x) { + if (x instanceof SyntaxError) + result = x.name; + } + + AddTestCase( + "using the expression \"super\" shouldn't cause js to crash", + "SyntaxError", + result ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/LexicalConventions/regexp-literals-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/LexicalConventions/regexp-literals-001.js new file mode 100644 index 00000000000..6af945bc7c3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/LexicalConventions/regexp-literals-001.js @@ -0,0 +1,38 @@ +/** + * File Name: LexicalConventions/regexp-literals-001.js + * ECMA Section: 7.8.5 + * Description: + * + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "LexicalConventions/regexp-literals-001.js"; + var VERSION = "ECMA_2"; + var TITLE = "Regular Expression Literals"; + + startTest(); + + // Regular Expression Literals may not be empty; // should be regarded + // as a comment, not a RegExp literal. + + s = //; + + "passed"; + + AddTestCase( + "// should be a comment, not a regular expression literal", + "passed", + String(s)); + + AddTestCase( + "// typeof object should be type of object declared on following line", + "passed", + (typeof s) == "string" ? "passed" : "failed" ); + + AddTestCase( + "// should not return an object of the type RegExp", + "passed", + (typeof s == "object") ? "failed" : "passed" ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/LexicalConventions/regexp-literals-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/LexicalConventions/regexp-literals-002.js new file mode 100644 index 00000000000..c67184b166e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/LexicalConventions/regexp-literals-002.js @@ -0,0 +1,22 @@ +/** + * File Name: LexicalConventions/regexp-literals-002.js + * ECMA Section: 7.8.5 + * Description: Based on ECMA 2 Draft 8 October 1999 + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + var SECTION = "LexicalConventions/regexp-literals-002.js"; + var VERSION = "ECMA_2"; + var TITLE = "Regular Expression Literals"; + + startTest(); + + // A regular expression literal represents an object of type RegExp. + + AddTestCase( + "// A regular expression literal represents an object of type RegExp.", + "true", + (/x*/ instanceof RegExp).toString() ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/constructor-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/constructor-001.js new file mode 100644 index 00000000000..ceaa39d3ddc --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/constructor-001.js @@ -0,0 +1,66 @@ +/** + * File Name: RegExp/constructor-001.js + * ECMA Section: 15.7.3.3 + * Description: Based on ECMA 2 Draft 7 February 1999 + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + var SECTION = "RegExp/constructor-001"; + var VERSION = "ECMA_2"; + var TITLE = "new RegExp()"; + + startTest(); + + /* + * for each test case, verify: + * - verify that [[Class]] property is RegExp + * - prototype property should be set to RegExp.prototype + * - source is set to the empty string + * - global property is set to false + * - ignoreCase property is set to false + * - multiline property is set to false + * - lastIndex property is set to 0 + */ + + RegExp.prototype.getClassProperty = Object.prototype.toString; + var re = new RegExp(); + + AddTestCase( + "new RegExp().__proto__", + RegExp.prototype, + re.__proto__ + ); + + AddTestCase( + "RegExp.prototype.getClassProperty = Object.prototype.toString; " + + "(new RegExp()).getClassProperty()", + "[object RegExp]", + re.getClassProperty() ); + + AddTestCase( + "(new RegExp()).source", + "(?:)", + re.source ); + + AddTestCase( + "(new RegExp()).global", + false, + re.global ); + + AddTestCase( + "(new RegExp()).ignoreCase", + false, + re.ignoreCase ); + + AddTestCase( + "(new RegExp()).multiline", + false, + re.multiline ); + + AddTestCase( + "(new RegExp()).lastIndex", + 0, + re.lastIndex ); + + test() diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/exec-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/exec-001.js new file mode 100644 index 00000000000..69edc1103e4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/exec-001.js @@ -0,0 +1,34 @@ +/** + * File Name: RegExp/exec-001.js + * ECMA Section: 15.7.5.3 + * Description: Based on ECMA 2 Draft 7 February 1999 + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + var SECTION = "RegExp/exec-001"; + var VERSION = "ECMA_2"; + var TITLE = "RegExp.prototype.exec(string)"; + + startTest(); + + /* + * for each test case, verify: + * - type of object returned + * - length of the returned array + * - value of lastIndex + * - value of index + * - value of input + * - value of the array indices + */ + + // test cases without subpatterns + // test cases with subpatterns + // global property is true + // global property is false + // test cases in which the exec returns null + + testcases[0] = { expect:"PASSED", actual:"PASSED", description:"NO TESTS EXIST" }; + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/exec-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/exec-002.js new file mode 100644 index 00000000000..c811b616551 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/exec-002.js @@ -0,0 +1,182 @@ +/** + * File Name: RegExp/exec-002.js + * ECMA Section: 15.7.5.3 + * Description: Based on ECMA 2 Draft 7 February 1999 + * + * Test cases provided by rogerl@netscape.com + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + var SECTION = "RegExp/exec-002"; + var VERSION = "ECMA_2"; + var TITLE = "RegExp.prototype.exec(string)"; + + startTest(); + + /* + * for each test case, verify: + * - type of object returned + * - length of the returned array + * - value of lastIndex + * - value of index + * - value of input + * - value of the array indices + */ + + AddRegExpCases( + /(a|d|q|)x/i, + "bcaDxqy", + 3, + ["Dx", "D"] ); + + AddRegExpCases( + /(a|(e|q))(x|y)/, + "bcaddxqy", + 6, + ["qy","q","q","y"] ); + + + AddRegExpCases( + /a+b+d/, + "aabbeeaabbs", + 0, + null ); + + AddRegExpCases( + /a*b/, + "aaadaabaaa", + 4, + ["aab"] ); + + AddRegExpCases( + /a*b/, + "dddb", + 3, + ["b"] ); + + AddRegExpCases( + /a*b/, + "xxx", + 0, + null ); + + AddRegExpCases( + /x\d\dy/, + "abcx45ysss235", + 3, + ["x45y"] ); + + AddRegExpCases( + /[^abc]def[abc]+/, + "abxdefbb", + 2, + ["xdefbb"] ); + + AddRegExpCases( + /(a*)baa/, + "ccdaaabaxaabaa", + 9, + ["aabaa", "aa"] ); + + AddRegExpCases( + /(a*)baa/, + "aabaa", + 0, + ["aabaa", "aa"] ); + + AddRegExpCases( + /q(a|b)*q/, + "xxqababqyy", + 2, + ["qababq", "b"] ); + + AddRegExpCases( + /(a(.|[^d])c)*/, + "adcaxc", + 0, + ["adcaxc", "axc", "x"] ); + + AddRegExpCases( + /(a*)b\1/, + "abaaaxaabaayy", + 0, + ["aba", "a"] ); + + AddRegExpCases( + /(a*)b\1/, + "abaaaxaabaayy", + 0, + ["aba", "a"] ); + + AddRegExpCases( + /(a*)b\1/, + "cccdaaabaxaabaayy", + 6, + ["aba", "a"] ); + + AddRegExpCases( + /(a*)b\1/, + "cccdaaabqxaabaayy", + 7, + ["b", ""] ); + + AddRegExpCases( + /"(.|[^"\\\\])*"/, + 'xx\"makudonarudo\"yy', + 2, + ["\"makudonarudo\"", "o"] ); + + AddRegExpCases( + /"(.|[^"\\\\])*"/, + "xx\"ma\"yy", + 2, + ["\"ma\"", "a"] ); + + test(); + +function AddRegExpCases( + regexp, pattern, index, matches_array ) { + + // prevent a runtime error + + if ( regexp.exec(pattern) == null || matches_array == null ) { + AddTestCase( + regexp + ".exec(" + pattern +")", + matches_array, + regexp.exec(pattern) ); + + return; + } + AddTestCase( + regexp + ".exec(" + pattern +").length", + matches_array.length, + regexp.exec(pattern).length ); + + AddTestCase( + regexp + ".exec(" + pattern +").index", + index, + regexp.exec(pattern).index ); + + AddTestCase( + regexp + ".exec(" + pattern +").input", + pattern, + regexp.exec(pattern).input ); + + AddTestCase( + regexp + ".exec(" + pattern +").toString()", + matches_array.toString(), + regexp.exec(pattern).toString() ); +/* + var limit = matches_array.length > regexp.exec(pattern).length + ? matches_array.length + : regexp.exec(pattern).length; + + for ( var matches = 0; matches < limit; matches++ ) { + AddTestCase( + regexp + ".exec(" + pattern +")[" + matches +"]", + matches_array[matches], + regexp.exec(pattern)[matches] ); + } +*/ +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/function-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/function-001.js new file mode 100644 index 00000000000..96c3ccfdc7c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/function-001.js @@ -0,0 +1,66 @@ +/** + * File Name: RegExp/function-001.js + * ECMA Section: 15.7.2.1 + * Description: Based on ECMA 2 Draft 7 February 1999 + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + var SECTION = "RegExp/function-001"; + var VERSION = "ECMA_2"; + var TITLE = "RegExp( pattern, flags )"; + + startTest(); + + /* + * for each test case, verify: + * - verify that [[Class]] property is RegExp + * - prototype property should be set to RegExp.prototype + * - source is set to the empty string + * - global property is set to false + * - ignoreCase property is set to false + * - multiline property is set to false + * - lastIndex property is set to 0 + */ + + RegExp.prototype.getClassProperty = Object.prototype.toString; + var re = new RegExp(); + + AddTestCase( + "new RegExp().__proto__", + RegExp.prototype, + re.__proto__ + ); + + AddTestCase( + "RegExp.prototype.getClassProperty = Object.prototype.toString; " + + "(new RegExp()).getClassProperty()", + "[object RegExp]", + re.getClassProperty() ); + + AddTestCase( + "(new RegExp()).source", + "(?:)", + re.source ); + + AddTestCase( + "(new RegExp()).global", + false, + re.global ); + + AddTestCase( + "(new RegExp()).ignoreCase", + false, + re.ignoreCase ); + + AddTestCase( + "(new RegExp()).multiline", + false, + re.multiline ); + + AddTestCase( + "(new RegExp()).lastIndex", + 0, + re.lastIndex ); + + test() diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/hex-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/hex-001.js new file mode 100644 index 00000000000..4a04e944d5d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/hex-001.js @@ -0,0 +1,64 @@ +/** + * File Name: RegExp/hex-001.js + * ECMA Section: 15.7.3.1 + * Description: Based on ECMA 2 Draft 7 February 1999 + * Positive test cases for constructing a RegExp object + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + var SECTION = "RegExp/hex-001"; + var VERSION = "ECMA_2"; + var TITLE = "RegExp patterns that contain HexicdecimalEscapeSequences"; + + startTest(); + + // These examples come from 15.7.1, HexidecimalEscapeSequence + + AddRegExpCases( new RegExp("\x41"), "new RegExp('\\x41')", "A", "A", 1, 0, ["A"] ); + AddRegExpCases( new RegExp("\x412"),"new RegExp('\\x412')", "A2", "A2", 1, 0, ["A2"] ); +// Invalid hex escapes are syntax error; these are covered in the sputnik test suite. +// AddRegExpCases( new RegExp("\x1g"), "new RegExp('\\x1g')", "x1g","x1g", 1, 0, ["x1g"] ); + + AddRegExpCases( new RegExp("A"), "new RegExp('A')", "\x41", "\\x41", 1, 0, ["A"] ); + AddRegExpCases( new RegExp("A"), "new RegExp('A')", "\x412", "\\x412", 1, 0, ["A"] ); + AddRegExpCases( new RegExp("^x"), "new RegExp('^x')", "x412", "x412", 1, 0, ["x"]); + AddRegExpCases( new RegExp("A"), "new RegExp('A')", "A2", "A2", 1, 0, ["A"] ); + + test(); + +function AddRegExpCases( + regexp, str_regexp, pattern, str_pattern, length, index, matches_array ) { + + // prevent a runtime error + + if ( regexp.exec(pattern) == null || matches_array == null ) { + AddTestCase( + str_regexp + ".exec(" + pattern +")", + matches_array, + regexp.exec(pattern) ); + + return; + } + + AddTestCase( + str_regexp + ".exec(" + str_pattern +").length", + length, + regexp.exec(pattern).length ); + + AddTestCase( + str_regexp + ".exec(" + str_pattern +").index", + index, + regexp.exec(pattern).index ); + + AddTestCase( + str_regexp + ".exec(" + str_pattern +").input", + pattern, + regexp.exec(pattern).input ); + + for ( var matches = 0; matches < matches_array.length; matches++ ) { + AddTestCase( + str_regexp + ".exec(" + str_pattern +")[" + matches +"]", + matches_array[matches], + regexp.exec(pattern)[matches] ); + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/multiline-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/multiline-001.js new file mode 100644 index 00000000000..51a601cf105 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/multiline-001.js @@ -0,0 +1,62 @@ +/** + * File Name: RegExp/multiline-001.js + * ECMA Section: + * Description: Based on ECMA 2 Draft 7 February 1999 + * + * Date: 19 February 1999 + */ + + var SECTION = "RegExp/multiline-001"; + var VERSION = "ECMA_2"; + var TITLE = "RegExp: multiline flag"; + var BUGNUMBER="343901"; + + startTest(); + + var woodpeckers = "ivory-billed\ndowny\nhairy\nacorn\nyellow-bellied sapsucker\n" + + "northern flicker\npileated\n"; + + AddRegExpCases( /.*[y]$/m, woodpeckers, woodpeckers.indexOf("downy"), ["downy"] ); + + AddRegExpCases( /.*[d]$/m, woodpeckers, woodpeckers.indexOf("ivory-billed"), ["ivory-billed"] ); + + test(); + + +function AddRegExpCases + ( regexp, pattern, index, matches_array ) { + + // prevent a runtime error + + if ( regexp.exec(pattern) == null || matches_array == null ) { + AddTestCase( + regexp + ".exec(" + pattern +")", + matches_array, + regexp.exec(pattern) ); + + return; + } + + AddTestCase( + regexp.toString() + ".exec(" + pattern +").length", + matches_array.length, + regexp.exec(pattern).length ); + + AddTestCase( + regexp.toString() + ".exec(" + pattern +").index", + index, + regexp.exec(pattern).index ); + + AddTestCase( + regexp + ".exec(" + pattern +").input", + pattern, + regexp.exec(pattern).input ); + + + for ( var matches = 0; matches < matches_array.length; matches++ ) { + AddTestCase( + regexp + ".exec(" + pattern +")[" + matches +"]", + matches_array[matches], + regexp.exec(pattern)[matches] ); + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/octal-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/octal-001.js new file mode 100644 index 00000000000..d9d0571639d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/octal-001.js @@ -0,0 +1,72 @@ +/** + * File Name: RegExp/octal-001.js + * ECMA Section: 15.7.1 + * Description: Based on ECMA 2 Draft 7 February 1999 + * Simple test cases for matching OctalEscapeSequences. + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + var SECTION = "RegExp/octal-001.js"; + var VERSION = "ECMA_2"; + var TITLE = "RegExp patterns that contain OctalEscapeSequences"; + var BUGNUMBER="http://scopus/bugsplat/show_bug.cgi?id=346196"; + + startTest(); + + +// backreference + AddRegExpCases( + /(.)\1/, + "/(.)\\1/", + "HI!!", + "HI!", + 2, + ["!!", "!"] ); + + test(); + +function AddRegExpCases( + regexp, str_regexp, pattern, str_pattern, index, matches_array ) { + + // prevent a runtime error + + if ( regexp.exec(pattern) == null || matches_array == null ) { + AddTestCase( + regexp + ".exec(" + str_pattern +")", + matches_array, + regexp.exec(pattern) ); + + return; + } + AddTestCase( + str_regexp + ".exec(" + str_pattern +").length", + matches_array.length, + regexp.exec(pattern).length ); + + AddTestCase( + str_regexp + ".exec(" + str_pattern +").index", + index, + regexp.exec(pattern).index ); + + AddTestCase( + str_regexp + ".exec(" + str_pattern +").input", + pattern, + regexp.exec(pattern).input ); + + AddTestCase( + str_regexp + ".exec(" + str_pattern +").toString()", + matches_array.toString(), + regexp.exec(pattern).toString() ); +/* + var limit = matches_array.length > regexp.exec(pattern).length + ? matches_array.length + : regexp.exec(pattern).length; + + for ( var matches = 0; matches < limit; matches++ ) { + AddTestCase( + str_regexp + ".exec(" + str_pattern +")[" + matches +"]", + matches_array[matches], + regexp.exec(pattern)[matches] ); + } +*/ +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/octal-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/octal-002.js new file mode 100644 index 00000000000..69c810066e7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/octal-002.js @@ -0,0 +1,87 @@ +/** + * File Name: RegExp/octal-002.js + * ECMA Section: 15.7.1 + * Description: Based on ECMA 2 Draft 7 February 1999 + * Simple test cases for matching OctalEscapeSequences. + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + var SECTION = "RegExp/octal-002.js"; + var VERSION = "ECMA_2"; + var TITLE = "RegExp patterns that contain OctalEscapeSequences"; + var BUGNUMBER="http://scopus/bugsplat/show_bug.cgi?id=346189"; + + startTest(); + +// backreference + AddRegExpCases( + /(.)(.)(.)(.)(.)(.)(.)(.)\8/, + "/(.)(.)(.)(.)(.)(.)(.)(.)\\8", + "aabbccaaabbbccc", + "aabbccaaabbbccc", + 0, + ["aabbccaaa", "a", "a", "b", "b", "c", "c", "a", "a"] ); + + AddRegExpCases( + /(.)(.)(.)(.)(.)(.)(.)(.)(.)\9/, + "/(.)(.)(.)(.)(.)(.)(.)(.)\\9", + "aabbccaabbcc", + "aabbccaabbcc", + 0, + ["aabbccaabb", "a", "a", "b", "b", "c", "c", "a", "a", "b"] ); + + AddRegExpCases( + /(.)(.)(.)(.)(.)(.)(.)(.)(.)\8/, + "/(.)(.)(.)(.)(.)(.)(.)(.)(.)\\8", + "aabbccaababcc", + "aabbccaababcc", + 0, + ["aabbccaaba", "a", "a", "b", "b", "c", "c", "a", "a", "b"] ); + + test(); + +function AddRegExpCases( + regexp, str_regexp, pattern, str_pattern, index, matches_array ) { + + // prevent a runtime error + + if ( regexp.exec(pattern) == null || matches_array == null ) { + AddTestCase( + regexp + ".exec(" + str_pattern +")", + matches_array, + regexp.exec(pattern) ); + + return; + } + AddTestCase( + str_regexp + ".exec(" + str_pattern +").length", + matches_array.length, + regexp.exec(pattern).length ); + + AddTestCase( + str_regexp + ".exec(" + str_pattern +").index", + index, + regexp.exec(pattern).index ); + + AddTestCase( + str_regexp + ".exec(" + str_pattern +").input", + pattern, + regexp.exec(pattern).input ); + + AddTestCase( + str_regexp + ".exec(" + str_pattern +").toString()", + matches_array.toString(), + regexp.exec(pattern).toString() ); +/* + var limit = matches_array.length > regexp.exec(pattern).length + ? matches_array.length + : regexp.exec(pattern).length; + + for ( var matches = 0; matches < limit; matches++ ) { + AddTestCase( + str_regexp + ".exec(" + str_pattern +")[" + matches +"]", + matches_array[matches], + regexp.exec(pattern)[matches] ); + } +*/ +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/octal-003.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/octal-003.js new file mode 100644 index 00000000000..ac6de01e88d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/octal-003.js @@ -0,0 +1,81 @@ +/** + * File Name: RegExp/octal-003.js + * ECMA Section: 15.7.1 + * Description: Based on ECMA 2 Draft 7 February 1999 + * Simple test cases for matching OctalEscapeSequences. + * Author: christine@netscape.com + * Date: 19 February 1999 + * + * Revised: 02 August 2002 + * Author: pschwartau@netscape.com + * + * WHY: the original test expected the regexp /.\011/ + * to match 'a' + String.fromCharCode(0) + '11' + * + * This is incorrect: the string is a 4-character string consisting of + * the characters <'a'>, , <'1'>, <'1'>. By contrast, the \011 in the + * regexp should be parsed as a single token: it is the octal escape sequence + * for the horizontal tab character '\t' === '\u0009' === '\x09' === '\011'. + * + * So the regexp consists of 2 characters: , <'\t'>. + * There is no match between the regexp and the string. + * + * See the testcase ecma_3/RegExp/octal-002.js for an elaboration. + * + */ + var SECTION = "RegExp/octal-003.js"; + var VERSION = "ECMA_2"; + var TITLE = "RegExp patterns that contain OctalEscapeSequences"; + var BUGNUMBER="http://scopus/bugsplat/show_bug.cgi?id=346132"; + + startTest(); + + AddRegExpCases( /.\011/, "/\\011/", "a" + String.fromCharCode(0) + "11", "a\\011", 0, null ); + + test(); + +function AddRegExpCases( + regexp, str_regexp, pattern, str_pattern, index, matches_array ) { + + // prevent a runtime error + + if ( regexp.exec(pattern) == null || matches_array == null ) { + AddTestCase( + regexp + ".exec(" + str_pattern +")", + matches_array, + regexp.exec(pattern) ); + + return; + } + AddTestCase( + str_regexp + ".exec(" + str_pattern +").length", + matches_array.length, + regexp.exec(pattern).length ); + + AddTestCase( + str_regexp + ".exec(" + str_pattern +").index", + index, + regexp.exec(pattern).index ); + + AddTestCase( + str_regexp + ".exec(" + str_pattern +").input", + escape(pattern), + escape(regexp.exec(pattern).input) ); + + AddTestCase( + str_regexp + ".exec(" + str_pattern +").toString()", + matches_array.toString(), + escape(regexp.exec(pattern).toString()) ); + + var limit = matches_array.length > regexp.exec(pattern).length + ? matches_array.length + : regexp.exec(pattern).length; + + for ( var matches = 0; matches < limit; matches++ ) { + AddTestCase( + str_regexp + ".exec(" + str_pattern +")[" + matches +"]", + matches_array[matches], + escape(regexp.exec(pattern)[matches]) ); + } + +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/properties-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/properties-001.js new file mode 100644 index 00000000000..122b9417167 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/properties-001.js @@ -0,0 +1,85 @@ +/** + * File Name: RegExp/properties-001.js + * ECMA Section: 15.7.6.js + * Description: Based on ECMA 2 Draft 7 February 1999 + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + var SECTION = "RegExp/properties-001.js"; + var VERSION = "ECMA_2"; + var TITLE = "Properties of RegExp Instances"; + var BUGNUMBER ="http://scopus/bugsplat/show_bug.cgi?id=346000"; + + startTest(); + + AddRegExpCases( new RegExp, "", false, false, false, 0 ); + AddRegExpCases( /.*/, ".*", false, false, false, 0 ); + AddRegExpCases( /[\d]{5}/g, "[\\d]{5}", true, false, false, 0 ); + AddRegExpCases( /[\S]?$/i, "[\\S]?$", false, true, false, 0 ); + AddRegExpCases( /^([a-z]*)[^\w\s\f\n\r]+/m, "^([a-z]*)[^\\w\\s\\f\\n\\r]+", false, false, true, 0 ); + AddRegExpCases( /[\D]{1,5}[\ -][\d]/gi, "[\\D]{1,5}[\\ -][\\d]", true, true, false, 0 ); + AddRegExpCases( /[a-zA-Z0-9]*/gm, "[a-zA-Z0-9]*", true, false, true, 0 ); + AddRegExpCases( /x|y|z/gim, "x|y|z", true, true, true, 0 ); + + AddRegExpCases( /\u0051/im, "\\u0051", false, true, true, 0 ); + AddRegExpCases( /\x45/gm, "\\x45", true, false, true, 0 ); + AddRegExpCases( /\097/gi, "\\097", true, true, false, 0 ); + + test(); + +function AddRegExpCases( re, s, g, i, m, l ) { + + AddTestCase( re + ".test == RegExp.prototype.test", + true, + re.test == RegExp.prototype.test ); + + AddTestCase( re + ".toString == RegExp.prototype.toString", + true, + re.toString == RegExp.prototype.toString ); + + AddTestCase( re + ".contructor == RegExp.prototype.constructor", + true, + re.constructor == RegExp.prototype.constructor ); + + AddTestCase( re + ".compile == RegExp.prototype.compile", + true, + re.compile == RegExp.prototype.compile ); + + AddTestCase( re + ".exec == RegExp.prototype.exec", + true, + re.exec == RegExp.prototype.exec ); + + // properties + +/* + * http://bugzilla.mozilla.org/show_bug.cgi?id=225550 changed + * the behavior of toString() and toSource() on empty regexps. + * So branch if |s| is the empty string - + */ + var S = s? s : '(?:)'; + + AddTestCase( re + ".source", + S, + re.source ); + + AddTestCase( re + ".toString()", + "/" + S +"/" + (g?"g":"") + (i?"i":"") +(m?"m":""), + re.toString() ); + + AddTestCase( re + ".global", + g, + re.global ); + + AddTestCase( re + ".ignoreCase", + i, + re.ignoreCase ); + + AddTestCase( re + ".multiline", + m, + re.multiline); + + AddTestCase( re + ".lastIndex", + l, + re.lastIndex ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/properties-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/properties-002.js new file mode 100644 index 00000000000..2496d5fe3e2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/properties-002.js @@ -0,0 +1,125 @@ +/** + * File Name: RegExp/properties-002.js + * ECMA Section: 15.7.6.js + * Description: Based on ECMA 2 Draft 7 February 1999 + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + //----------------------------------------------------------------------------- +var SECTION = "RegExp/properties-002.js"; +var VERSION = "ECMA_2"; +var TITLE = "Properties of RegExp Instances"; +var BUGNUMBER ="http://scopus/bugsplat/show_bug.cgi?id=346032"; +// ALSO SEE http://bugzilla.mozilla.org/show_bug.cgi?id=124339 + + +startTest(); + +re_1 = /\cA?/g; +re_1.lastIndex = Math.pow(2,31); +AddRegExpCases( re_1, "\\cA?", true, false, false, Math.pow(2,31) ); + +re_2 = /\w*/i; +re_2.lastIndex = Math.pow(2,32) -1; +AddRegExpCases( re_2, "\\w*", false, true, false, Math.pow(2,32)-1 ); + +re_3 = /\*{0,80}/m; +re_3.lastIndex = Math.pow(2,31) -1; +AddRegExpCases( re_3, "\\*{0,80}", false, false, true, Math.pow(2,31) -1 ); + +re_4 = /^./gim; +re_4.lastIndex = Math.pow(2,30) -1; +AddRegExpCases( re_4, "^.", true, true, true, Math.pow(2,30) -1 ); + +re_5 = /\B/; +re_5.lastIndex = Math.pow(2,30); +AddRegExpCases( re_5, "\\B", false, false, false, Math.pow(2,30) ); + +/* + * Brendan: "need to test cases Math.pow(2,32) and greater to see + * whether they round-trip." Reason: thanks to the work done in + * http://bugzilla.mozilla.org/show_bug.cgi?id=124339, lastIndex + * is now stored as a double instead of a uint32 (unsigned integer). + * + * Note 2^32 -1 is the upper bound for uint32's, but doubles can go + * all the way up to Number.MAX_VALUE. So that's why we need cases + * between those two numbers. + * + */ +re_6 = /\B/; +re_6.lastIndex = Math.pow(2,32); +AddRegExpCases( re_6, "\\B", false, false, false, Math.pow(2,32) ); + +re_7 = /\B/; +re_7.lastIndex = Math.pow(2,32) + 1; +AddRegExpCases( re_7, "\\B", false, false, false, Math.pow(2,32) + 1 ); + +re_8 = /\B/; +re_8.lastIndex = Math.pow(2,32) * 2; +AddRegExpCases( re_8, "\\B", false, false, false, Math.pow(2,32) * 2 ); + +re_9 = /\B/; +re_9.lastIndex = Math.pow(2,40); +AddRegExpCases( re_9, "\\B", false, false, false, Math.pow(2,40) ); + +re_10 = /\B/; +re_10.lastIndex = Number.MAX_VALUE; +AddRegExpCases( re_10, "\\B", false, false, false, Number.MAX_VALUE ); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function AddRegExpCases( re, s, g, i, m, l ){ + + AddTestCase( re + ".test == RegExp.prototype.test", + true, + re.test == RegExp.prototype.test ); + + AddTestCase( re + ".toString == RegExp.prototype.toString", + true, + re.toString == RegExp.prototype.toString ); + + AddTestCase( re + ".contructor == RegExp.prototype.constructor", + true, + re.constructor == RegExp.prototype.constructor ); + + AddTestCase( re + ".compile == RegExp.prototype.compile", + true, + re.compile == RegExp.prototype.compile ); + + AddTestCase( re + ".exec == RegExp.prototype.exec", + true, + re.exec == RegExp.prototype.exec ); + + // properties + + AddTestCase( re + ".source", + s, + re.source ); + + AddTestCase( re + ".toString()", + "/" + s +"/" + (g?"g":"") + (i?"i":"") +(m?"m":""), + re.toString() ); + + AddTestCase( re + ".global", + g, + re.global ); + + AddTestCase( re + ".ignoreCase", + i, + re.ignoreCase ); + + AddTestCase( re + ".multiline", + m, + re.multiline); + + AddTestCase( re + ".lastIndex", + l, + re.lastIndex ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/regexp-enumerate-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/regexp-enumerate-001.js new file mode 100644 index 00000000000..9752fa1cdef --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/regexp-enumerate-001.js @@ -0,0 +1,98 @@ +/** + File Name: regexp-enumerate-001.js + ECMA V2 Section: + Description: Regression Test. + + If instance Native Object have properties that are enumerable, + JavaScript enumerated through the properties twice. This only + happened if objects had been instantiated, but their properties + had not been enumerated. ie, the object inherited properties + from its prototype that are enumerated. + + In the core JavaScript, this is only a problem with RegExp + objects, since the inherited properties of most core JavaScript + objects are not enumerated. + + Author: christine@netscape.com, pschwartau@netscape.com + Date: 12 November 1997 + Modified: 14 July 2002 + Reason: See http://bugzilla.mozilla.org/show_bug.cgi?id=155291 + ECMA-262 Ed.3 Sections 15.10.7.1 through 15.10.7.5 + RegExp properties should be DontEnum +* +*/ +// onerror = err; + + var SECTION = "regexp-enumerate-001"; + var VERSION = "ECMA_2"; + var TITLE = "Regression Test for Enumerating Properties"; + + var BUGNUMBER="339403"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + /* + * This test expects RegExp instances to have four enumerated properties: + * source, global, ignoreCase, and lastIndex + * + * 99.01.25: now they also have a multiLine instance property. + * + */ + + + var r = new RegExp(); + + var e = new Array(); + + var t = new TestRegExp(); + + for ( p in r ) { e[e.length] = { property:p, value:r[p] }; t.addProperty( p, r[p]) }; + + testcases[testcases.length] = new TestCase( SECTION, + "r = new RegExp(); e = new Array(); "+ + "for ( p in r ) { e[e.length] = { property:p, value:r[p] }; e.length", + 0, + e.length ); + + test(); + +function TestRegExp() { + this.addProperty = addProperty; +} +function addProperty(name, value) { + var pass = false; + + if ( eval("this."+name) != void 0 ) { + pass = true; + } else { + eval( "this."+ name+" = "+ false ); + } + + testcases[testcases.length] = new TestCase( SECTION, + "Property: " + name +" already enumerated?", + false, + pass ); + + if ( testcases[ testcases.length-1].passed == false ) { + testcases[testcases.length-1].reason = "property already enumerated"; + + } + +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/regress-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/regress-001.js new file mode 100644 index 00000000000..afd45fe0339 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/regress-001.js @@ -0,0 +1,39 @@ +/** + * File Name: RegExp/regress-001.js + * ECMA Section: N/A + * Description: Regression test case: + * JS regexp anchoring on empty match bug + * http://bugzilla.mozilla.org/show_bug.cgi?id=2157 + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + var SECTION = "RegExp/hex-001.js"; + var VERSION = "ECMA_2"; + var TITLE = "JS regexp anchoring on empty match bug"; + var BUGNUMBER = "http://bugzilla.mozilla.org/show_bug.cgi?id=2157"; + + startTest(); + + AddRegExpCases( /a||b/(''), + "//a||b/('')", + 1, + [''] ); + + test(); + +function AddRegExpCases( regexp, str_regexp, length, matches_array ) { + + AddTestCase( + "( " + str_regexp + " ).length", + regexp.length, + regexp.length ); + + + for ( var matches = 0; matches < matches_array.length; matches++ ) { + AddTestCase( + "( " + str_regexp + " )[" + matches +"]", + matches_array[matches], + regexp[matches] ); + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/unicode-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/unicode-001.js new file mode 100644 index 00000000000..17d05824568 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/RegExp/unicode-001.js @@ -0,0 +1,53 @@ +/** + * File Name: RegExp/unicode-001.js + * ECMA Section: 15.7.3.1 + * Description: Based on ECMA 2 Draft 7 February 1999 + * Positive test cases for constructing a RegExp object + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + var SECTION = "RegExp/unicode-001.js"; + var VERSION = "ECMA_2"; + var TITLE = "new RegExp( pattern, flags )"; + + startTest(); + + // These examples come from 15.7.1, UnicodeEscapeSequence + + AddRegExpCases( /\u0041/, "/\\u0041/", "A", "A", 1, 0, ["A"] ); + AddRegExpCases( /\u00412/, "/\\u00412/", "A2", "A2", 1, 0, ["A2"] ); + AddRegExpCases( /\u00412/, "/\\u00412/", "A2", "A2", 1, 0, ["A2"] ); + AddRegExpCases( /\u001g/, "/\\u001g/", "u001g", "u001g", 1, 0, ["u001g"] ); + + AddRegExpCases( /A/, "/A/", "\u0041", "\\u0041", 1, 0, ["A"] ); + AddRegExpCases( /A/, "/A/", "\u00412", "\\u00412", 1, 0, ["A"] ); + AddRegExpCases( /A2/, "/A2/", "\u00412", "\\u00412", 1, 0, ["A2"]); + AddRegExpCases( /A/, "/A/", "A2", "A2", 1, 0, ["A"] ); + + test(); + +function AddRegExpCases( + regexp, str_regexp, pattern, str_pattern, length, index, matches_array ) { + + AddTestCase( + str_regexp + " .exec(" + str_pattern +").length", + length, + regexp.exec(pattern).length ); + + AddTestCase( + str_regexp + " .exec(" + str_pattern +").index", + index, + regexp.exec(pattern).index ); + + AddTestCase( + str_regexp + " .exec(" + str_pattern +").input", + pattern, + regexp.exec(pattern).input ); + + for ( var matches = 0; matches < matches_array.length; matches++ ) { + AddTestCase( + str_regexp + " .exec(" + str_pattern +")[" + matches +"]", + matches_array[matches], + regexp.exec(pattern)[matches] ); + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-001.js new file mode 100644 index 00000000000..ffd53009b2c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-001.js @@ -0,0 +1,41 @@ +/** + * File Name: dowhile-001 + * ECMA Section: + * Description: do...while statements + * + * + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "dowhile-002"; + var VERSION = "ECMA_2"; + var TITLE = "do...while with a labeled continue statement"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + LabeledContinue( 0, 1 ); + LabeledContinue( 1, 1 ); + LabeledContinue( -1, 1 ); + LabeledContinue( 5, 5 ); + + test(); + +function LabeledContinue( limit, expect ) { + i = 0; + woohoo: + do { + i++; + continue woohoo; + } while ( i < limit ); + + testcases[tc++] = new TestCase( + SECTION, + "do while ( " + i +" < " + limit +" )", + expect, + i ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-002.js new file mode 100644 index 00000000000..e921b49f005 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-002.js @@ -0,0 +1,68 @@ +/** + * File Name: dowhile-002 + * ECMA Section: + * Description: do...while statements + * + * Verify that code after a labeled break is not executed. Verify that + * a labeled break breaks you out of the whole labeled block, and not + * just the current iteration statement. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "dowhile-002"; + var VERSION = "ECMA_2"; + var TITLE = "do...while with a labeled continue statement"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + LabeledContinue( 0, 1 ); + LabeledContinue( 1, 1 ); + LabeledContinue( -1, 1 ); + LabeledContinue( 5, 5 ); + + test(); + +// The labeled statment contains statements after the labeled break. +// Verify that the statements after the break are not executed. + +function LabeledContinue( limit, expect ) { + i = 0; + result1 = "pass"; + result2 = "pass"; + + woohoo: { + do { + i++; + if ( ! (i < limit) ) { + break woohoo; + result1 = "fail: evaluated statement after a labeled break"; + } + } while ( true ); + + result2 = "failed: broke out of loop, but not out of labeled block"; + } + + testcases[tc++] = new TestCase( + SECTION, + "do while ( " + i +" < " + limit +" )", + expect, + i ); + + testcases[tc++] = new TestCase( + SECTION, + "breaking out of a do... while loop", + "pass", + result1 ); + + + testcases[tc++] = new TestCase( + SECTION, + "breaking out of a labeled do...while loop", + "pass", + result2 ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-003.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-003.js new file mode 100644 index 00000000000..a1ca517d911 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-003.js @@ -0,0 +1,60 @@ +/** + * File Name: dowhile-003 + * ECMA Section: + * Description: do...while statements + * + * Test do while, when the while expression is a JavaScript Number object. + * + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "dowhile-003"; + var VERSION = "ECMA_2"; + var TITLE = "do...while with a labeled continue statement"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + DoWhile( new DoWhileObject( 1, 1, 0 )); + DoWhile( new DoWhileObject( 1000, 1000, 0 )); + DoWhile( new DoWhileObject( 1001, 1001, 0 )); + DoWhile( new DoWhileObject( 1002, 1001, 1 )); + DoWhile( new DoWhileObject( -1, 1001, -1002 )); + + test(); + +function DoWhileObject( value, iterations, endvalue ) { + this.value = value; + this.iterations = iterations; + this.endvalue = endvalue; +} + +function DoWhile( object ) { + var i = 0; + + do { + object.value = --object.value; + i++; + if ( i > 1000 ) + break; + } while( object.value ); + + testcases[tc++] = new TestCase( + SECTION, + "loop iterations", + object.iterations, + i + ); + + testcases[tc++] = new TestCase( + SECTION, + "object.value", + object.endvalue, + Number( object.value ) + ); + +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-004.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-004.js new file mode 100644 index 00000000000..3c96fc48ccb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-004.js @@ -0,0 +1,64 @@ +/** + * File Name: dowhile-004 + * ECMA Section: + * Description: do...while statements + * + * Test a labeled do...while. Break out of the loop with no label + * should break out of the loop, but not out of the label. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "dowhile-004"; + var VERSION = "ECMA_2"; + var TITLE = "do...while with a labeled continue statement"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + DoWhile( 0, 1 ); + DoWhile( 1, 1 ); + DoWhile( -1, 1 ); + DoWhile( 5, 5 ); + + test(); + +function DoWhile( limit, expect ) { + i = 0; + result1 = "pass"; + result2 = "failed: broke out of labeled statement unexpectedly"; + + foo: { + do { + i++; + if ( ! (i < limit) ) { + break; + result1 = "fail: evaluated statement after a labeled break"; + } + } while ( true ); + + result2 = "pass"; + } + + testcases[tc++] = new TestCase( + SECTION, + "do while ( " + i +" < " + limit +" )", + expect, + i ); + + testcases[tc++] = new TestCase( + SECTION, + "breaking out of a do... while loop", + "pass", + result1 ); + + + testcases[tc++] = new TestCase( + SECTION, + "breaking out of a labeled do...while loop", + "pass", + result2 ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-005.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-005.js new file mode 100644 index 00000000000..ce56cb9942a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-005.js @@ -0,0 +1,70 @@ +/** + * File Name: dowhile-005 + * ECMA Section: + * Description: do...while statements + * + * Test a labeled do...while. Break out of the loop with no label + * should break out of the loop, but not out of the label. + * + * Currently causes an infinite loop in the monkey. Uncomment the + * print statement below and it works OK. + * + * Author: christine@netscape.com + * Date: 26 August 1998 + */ + var SECTION = "dowhile-005"; + var VERSION = "ECMA_2"; + var TITLE = "do...while with a labeled continue statement"; + var BUGNUMBER = "316293"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + NestedLabel(); + + + test(); + + function NestedLabel() { + i = 0; + result1 = "pass"; + result2 = "fail: did not hit code after inner loop"; + result3 = "pass"; + + outer: { + do { + inner: { +// print( i ); + break inner; + result1 = "fail: did break out of inner label"; + } + result2 = "pass"; + break outer; + print (i); + } while ( i++ < 100 ); + + } + + result3 = "fail: did not break out of outer label"; + + testcases[tc++] = new TestCase( + SECTION, + "number of loop iterations", + 0, + i ); + + testcases[tc++] = new TestCase( + SECTION, + "break out of inner loop", + "pass", + result1 ); + + testcases[tc++] = new TestCase( + SECTION, + "break out of outer loop", + "pass", + result2 ); + } \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-006.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-006.js new file mode 100644 index 00000000000..67dce64f3a6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-006.js @@ -0,0 +1,86 @@ +/** + * File Name: dowhile-006 + * ECMA Section: + * Description: do...while statements + * + * A general do...while test. + * + * Author: christine@netscape.com + * Date: 26 August 1998 + */ + var SECTION = "dowhile-006"; + var VERSION = "ECMA_2"; + var TITLE = "do...while"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + DoWhile( new DoWhileObject( false, false, 10 ) ); + DoWhile( new DoWhileObject( true, false, 2 ) ); + DoWhile( new DoWhileObject( false, true, 3 ) ); + DoWhile( new DoWhileObject( true, true, 4 ) ); + + test(); + +function looping( object ) { + object.iterations--; + + if ( object.iterations <= 0 ) { + return false; + } else { + return true; + } +} +function DoWhileObject( breakOut, breakIn, iterations, loops ) { + this.iterations = iterations; + this.loops = loops; + this.breakOut = breakOut; + this.breakIn = breakIn; + this.looping = looping; +} +function DoWhile( object ) { + var result1 = false; + var result2 = false; + + outie: { + innie: { + do { + if ( object.breakOut ) + break outie; + + if ( object.breakIn ) + break innie; + + } while ( looping(object) ); + + // statements should be executed if: + // do...while exits normally + // do...while exits abruptly with no label + + result1 = true; + + } + + // statements should be executed if: + // do...while breaks out with label "innie" + // do...while exits normally + // do...while does not break out with "outie" + + result2 = true; + } + + testcases[tc++] = new TestCase( + SECTION, + "hit code after loop in inner loop", + ( object.breakIn || object.breakOut ) ? false : true , + result1 ); + + testcases[tc++] = new TestCase( + SECTION, + "hit code after loop in outer loop", + ( object.breakOut ) ? false : true, + result2 ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-007.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-007.js new file mode 100644 index 00000000000..849e70e1247 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/dowhile-007.js @@ -0,0 +1,94 @@ +/** + * File Name: dowhile-007 + * ECMA Section: + * Description: do...while statements + * + * A general do...while test. + * + * Author: christine@netscape.com + * Date: 26 August 1998 + */ + var SECTION = "dowhile-007"; + var VERSION = "ECMA_2"; + var TITLE = "do...while"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + DoWhile( new DoWhileObject( false, false, false, false )); + DoWhile( new DoWhileObject( true, false, false, false )); + DoWhile( new DoWhileObject( true, true, false, false )); + DoWhile( new DoWhileObject( true, true, true, false )); + DoWhile( new DoWhileObject( true, true, true, true )); + DoWhile( new DoWhileObject( false, false, false, true )); + DoWhile( new DoWhileObject( false, false, true, true )); + DoWhile( new DoWhileObject( false, true, true, true )); + DoWhile( new DoWhileObject( false, false, true, false )); + + test(); + +function DoWhileObject( out1, out2, out3, in1 ) { + this.breakOutOne = out1; + this.breakOutTwo = out2; + this.breakOutThree = out3; + this.breakIn = in1; +} +function DoWhile( object ) { + result1 = false; + result2 = false; + result3 = false; + result4 = false; + + outie: + do { + if ( object.breakOutOne ) { + break outie; + } + result1 = true; + + innie: + do { + if ( object.breakOutTwo ) { + break outie; + } + result2 = true; + + if ( object.breakIn ) { + break innie; + } + result3 = true; + + } while ( false ); + if ( object.breakOutThree ) { + break outie; + } + result4 = true; + } while ( false ); + + testcases[tc++] = new TestCase( + SECTION, + "break one: ", + (object.breakOutOne) ? false : true, + result1 ); + + testcases[tc++] = new TestCase( + SECTION, + "break two: ", + (object.breakOutOne||object.breakOutTwo) ? false : true, + result2 ); + + testcases[tc++] = new TestCase( + SECTION, + "break three: ", + (object.breakOutOne||object.breakOutTwo||object.breakIn) ? false : true, + result3 ); + + testcases[tc++] = new TestCase( + SECTION, + "break four: ", + (object.breakOutOne||object.breakOutTwo||object.breakOutThree) ? false: true, + result4 ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/forin-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/forin-001.js new file mode 100644 index 00000000000..63119af6e38 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/forin-001.js @@ -0,0 +1,294 @@ +/** + * File Name: forin-001.js + * ECMA Section: + * Description: The forin-001 statement + * + * Verify that the property name is assigned to the property on the left + * hand side of the for...in expression. + * + * Author: christine@netscape.com + * Date: 28 August 1998 + */ + var SECTION = "forin-001"; + var VERSION = "ECMA_2"; + var TITLE = "The for...in statement"; + var BUGNUMBER="330890"; + var BUGNUMBER="http://scopus.mcom.com/bugsplat/show_bug.cgi?id=344855"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + ForIn_1( { length:4, company:"netscape", year:2000, 0:"zero" } ); + ForIn_2( { length:4, company:"netscape", year:2000, 0:"zero" } ); + ForIn_3( { length:4, company:"netscape", year:2000, 0:"zero" } ); + +// ForIn_6({ length:4, company:"netscape", year:2000, 0:"zero" }); +// ForIn_7({ length:4, company:"netscape", year:2000, 0:"zero" }); + ForIn_8({ length:4, company:"netscape", year:2000, 0:"zero" }); + + test(); + + /** + * Verify that the left side argument is evaluated with every iteration. + * Verify that the name of each property of the object is assigned to a + * a property. + * + */ + function ForIn_1( object ) { + PropertyArray = new Array(); + ValueArray = new Array(); + + for ( PropertyArray[PropertyArray.length] in object ) { + ValueArray[ValueArray.length] = + object[PropertyArray[PropertyArray.length-1]]; + } + + for ( var i = 0; i < PropertyArray.length; i++ ) { + testcases[tc++] = new TestCase( + SECTION, + "object[" + PropertyArray[i] +"]", + object[PropertyArray[i]], + ValueArray[i] + ); + } + + testcases[tc++] = new TestCase( + SECTION, + "object.length", + PropertyArray.length, + object.length ); + } + + /** + * Similar to ForIn_1, except it should increment the counter variable + * every time the left hand expression is evaluated. + */ + function ForIn_2( object ) { + PropertyArray = new Array(); + ValueArray = new Array(); + var i = 0; + + for ( PropertyArray[i++] in object ) { + ValueArray[ValueArray.length] = + object[PropertyArray[PropertyArray.length-1]]; + } + + for ( i = 0; i < PropertyArray.length; i++ ) { + testcases[tc++] = new TestCase( + SECTION, + "object[" + PropertyArray[i] +"]", + object[PropertyArray[i]], + ValueArray[i] + ); + } + + testcases[tc++] = new TestCase( + SECTION, + "object.length", + PropertyArray.length, + object.length ); + } + + /** + * Break out of a for...in loop + * + * + */ + function ForIn_3( object ) { + var checkBreak = "pass"; + var properties = new Array(); + var values = new Array(); + + for ( properties[properties.length] in object ) { + values[values.length] = object[properties[properties.length-1]]; + break; + checkBreak = "fail"; + } + + testcases[tc++] = new TestCase( + SECTION, + "check break out of for...in", + "pass", + checkBreak ); + + testcases[tc++] = new TestCase( + SECTION, + "properties.length", + 1, + properties.length ); + + testcases[tc++] = new TestCase( + SECTION, + "object["+properties[0]+"]", + values[0], + object[properties[0]] ); + } + + /** + * Break out of a labeled for...in loop. + */ + function ForIn_4( object ) { + var result1 = 0; + var result2 = 0; + var result3 = 0; + var result4 = 0; + var i = 0; + var property = new Array(); + + butterbean: { + result1++; + + for ( property[i++] in object ) { + result2++; + break; + result4++; + } + result3++; + } + + testcases[tc++] = new TestCase( + SECTION, + "verify labeled statement is only executed once", + true, + result1 == 1 ); + + testcases[tc++] = new TestCase( + SECTION, + "verify statements in for loop are evaluated", + true, + result2 == i ); + + testcases[tc++] = new TestCase( + SECTION, + "verify break out of labeled for...in loop", + true, + result4 == 0 ); + + testcases[tc++] = new TestCase( + SECTION, + "verify break out of labeled block", + true, + result3 == 0 ); + } + + /** + * Labeled break out of a labeled for...in loop. + */ + function ForIn_5 (object) { + var result1 = 0; + var result2 = 0; + var result3 = 0; + var result4 = 0; + var i = 0; + var property = new Array(); + + bigredbird: { + result1++; + for ( property[i++] in object ) { + result2++; + break bigredbird; + result4++; + } + result3++; + } + + testcases[tc++] = new TestCase( + SECTION, + "verify labeled statement is only executed once", + true, + result1 == 1 ); + + testcases[tc++] = new TestCase( + SECTION, + "verify statements in for loop are evaluated", + true, + result2 == i ); + + testcases[tc++] = new TestCase( + SECTION, + "verify break out of labeled for...in loop", + true, + result4 == 0 ); + + testcases[tc++] = new TestCase( + SECTION, + "verify break out of labeled block", + true, + result3 == 0 ); + } + + /** + * Labeled continue from a labeled for...in loop + */ + function ForIn_7( object ) { + var result1 = 0; + var result2 = 0; + var result3 = 0; + var result4 = 0; + var i = 0; + var property = new Array(); + + bigredbird: + for ( property[i++] in object ) { + result2++; + continue bigredbird; + result4++; + } + + testcases[tc++] = new TestCase( + SECTION, + "verify statements in for loop are evaluated", + true, + result2 == i ); + + testcases[tc++] = new TestCase( + SECTION, + "verify break out of labeled for...in loop", + true, + result4 == 0 ); + + testcases[tc++] = new TestCase( + SECTION, + "verify break out of labeled block", + true, + result3 == 1 ); + } + + + /** + * continue in a for...in loop + * + */ + function ForIn_8( object ) { + var checkBreak = "pass"; + var properties = new Array(); + var values = new Array(); + + for ( properties[properties.length] in object ) { + values[values.length] = object[properties[properties.length-1]]; + break; + checkBreak = "fail"; + } + + testcases[tc++] = new TestCase( + SECTION, + "check break out of for...in", + "pass", + checkBreak ); + + testcases[tc++] = new TestCase( + SECTION, + "properties.length", + 1, + properties.length ); + + testcases[tc++] = new TestCase( + SECTION, + "object["+properties[0]+"]", + values[0], + object[properties[0]] ); + } + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/forin-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/forin-002.js new file mode 100644 index 00000000000..1f527a9ae1d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/forin-002.js @@ -0,0 +1,73 @@ +/** + * File Name: forin-002.js + * ECMA Section: + * Description: The forin-001 statement + * + * Verify that the property name is assigned to the property on the left + * hand side of the for...in expression. + * + * Author: christine@netscape.com + * Date: 28 August 1998 + */ + var SECTION = "forin-002"; + var VERSION = "ECMA_2"; + var TITLE = "The for...in statement"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + function MyObject( value ) { + this.value = value; + this.valueOf = new Function ( "return this.value" ); + this.toString = new Function ( "return this.value + \"\"" ); + this.toNumber = new Function ( "return this.value + 0" ); + this.toBoolean = new Function ( "return Boolean( this.value )" ); + } + + ForIn_1(this); + ForIn_2(this); + + ForIn_1(new MyObject(true)); + ForIn_2(new MyObject(new Boolean(true))); + + ForIn_2(3); + + test(); + + /** + * For ... In in a With Block + * + */ + function ForIn_1( object) { + with ( object ) { + for ( property in object ) { + testcases[tc++] = new TestCase( + SECTION, + "with loop in a for...in loop. ("+object+")["+property +"] == "+ + "eval ( " + property +" )", + true, + object[property] == eval(property) ); + } + } + } + + /** + * With block in a For...In loop + * + */ + function ForIn_2(object) { + for ( property in object ) { + with ( object ) { + testcases[tc++] = new TestCase( + SECTION, + "with loop in a for...in loop. ("+object+")["+property +"] == "+ + "eval ( " + property +" )", + true, + object[property] == eval(property) ); + } + } + } + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/if-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/if-001.js new file mode 100644 index 00000000000..0da212d39fa --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/if-001.js @@ -0,0 +1,39 @@ +/** + * File Name: if-001.js + * ECMA Section: + * Description: The if statement + * + * Verify that assignment in the if expression is evaluated correctly. + * Verifies the fix for bug http://scopus/bugsplat/show_bug.cgi?id=148822. + * + * Author: christine@netscape.com + * Date: 28 August 1998 + */ + var SECTION = "for-001"; + var VERSION = "ECMA_2"; + var TITLE = "The if statement"; + var BUGNUMBER="148822"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var a = 0; + var b = 0; + var result = "passed"; + + if ( a = b ) { + result = "failed: a = b should return 0"; + } + + testcases[tc++] = new TestCase( + SECTION, + "if ( a = b ), where a and b are both equal to 0", + "passed", + result ); + + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/label-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/label-001.js new file mode 100644 index 00000000000..83b51ce665f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/label-001.js @@ -0,0 +1,39 @@ +/** + * File Name: label-001.js + * ECMA Section: + * Description: Labeled statements + * + * Labeled break and continue within a for loop. + * + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "label-003"; + var VERSION = "ECMA_2"; + var TITLE = "Labeled statements"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + LabelTest(0, 0); + LabelTest(1, 1) + LabelTest(-1, 1000); + LabelTest(false, 0); + LabelTest(true, 1); + + test(); + + function LabelTest( limit, expect) { + woo: for ( var result = 0; result < 1000; result++ ) { if (result == limit) { break woo; } else { continue woo; } }; + + testcases[tc++] = new TestCase( + SECTION, + "break out of a labeled for loop: "+ limit, + expect, + result ); + } + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/label-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/label-002.js new file mode 100644 index 00000000000..64b01a8c152 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/label-002.js @@ -0,0 +1,53 @@ +/** + * File Name: label-002.js + * ECMA Section: + * Description: Labeled statements + * + * Labeled break and continue within a for-in loop. + * + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "label-002"; + var VERSION = "ECMA_2"; + var TITLE = "Labeled statements"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + LabelTest( { p1:"hi,", p2:" norris" }, "hi, norris", " norrishi," ); + LabelTest( { 0:"zero", 1:"one" }, "zeroone", "onezero" ); + + LabelTest2( { p1:"hi,", p2:" norris" }, "hi,", " norris" ); + LabelTest2( { 0:"zero", 1:"one" }, "zero", "one" ); + + test(); + + function LabelTest( object, expect1, expect2 ) { + result = ""; + + yoohoo: { for ( property in object ) { result += object[property]; }; break yoohoo }; + + testcases[tc++] = new TestCase( + SECTION, + "yoohoo: for ( property in object ) { result += object[property]; } break yoohoo }", + true, + result == expect1 || result == expect2 ); + } + + function LabelTest2( object, expect1, expect2 ) { + result = ""; + + yoohoo: { for ( property in object ) { result += object[property]; break yoohoo } }; ; + + testcases[tc++] = new TestCase( + SECTION, + "yoohoo: for ( property in object ) { result += object[property]; break yoohoo }}", + true, + result == expect1 || result == expect2 ); + } + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/switch-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/switch-001.js new file mode 100644 index 00000000000..6336518a78a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/switch-001.js @@ -0,0 +1,64 @@ +/** + * File Name: switch-001.js + * ECMA Section: + * Description: The switch Statement + * + * A simple switch test with no abrupt completions. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + * + */ + var SECTION = "switch-001"; + var VERSION = "ECMA_2"; + var TITLE = "The switch statement"; + + var BUGNUMBER="315767"; + + + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + SwitchTest( 0, 126 ); + SwitchTest( 1, 124 ); + SwitchTest( 2, 120 ); + SwitchTest( 3, 112 ); + SwitchTest( 4, 64 ); + SwitchTest( 5, 96 ); + SwitchTest( true, 96 ); + SwitchTest( false, 96 ); + SwitchTest( null, 96 ); + SwitchTest( void 0, 96 ); + SwitchTest( "0", 96 ); + + test(); + + function SwitchTest( input, expect ) { + var result = 0; + + switch ( input ) { + case 0: + result += 2; + case 1: + result += 4; + case 2: + result += 8; + case 3: + result += 16; + default: + result += 32; + case 4: + result +=64; + } + + testcases[tc++] = new TestCase( + SECTION, + "switch with no breaks, case expressions are numbers. input is "+ + input, + expect, + result ); + } diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/switch-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/switch-002.js new file mode 100644 index 00000000000..20746a804a8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/switch-002.js @@ -0,0 +1,60 @@ +/** + * File Name: switch-002.js + * ECMA Section: + * Description: The switch Statement + * + * A simple switch test with no abrupt completions. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + * + */ + var SECTION = "switch-002"; + var VERSION = "ECMA_2"; + var TITLE = "The switch statement"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + SwitchTest( 0, 6 ); + SwitchTest( 1, 4 ); + SwitchTest( 2, 56 ); + SwitchTest( 3, 48 ); + SwitchTest( 4, 64 ); + SwitchTest( true, 32 ); + SwitchTest( false, 32 ); + SwitchTest( null, 32 ); + SwitchTest( void 0, 32 ); + SwitchTest( "0", 32 ); + + test(); + + function SwitchTest( input, expect ) { + var result = 0; + + switch ( input ) { + case 0: + result += 2; + case 1: + result += 4; + break; + case 2: + result += 8; + case 3: + result += 16; + default: + result += 32; + break; + case 4: + result += 64; + } + + testcases[tc++] = new TestCase( + SECTION, + "switch with no breaks: input is " + input, + expect, + result ); + } diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/switch-003.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/switch-003.js new file mode 100644 index 00000000000..6a1389c81ad --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/switch-003.js @@ -0,0 +1,54 @@ +/** + * File Name: switch-003.js + * ECMA Section: + * Description: The switch Statement + * + * Attempt to verify that case statements are evaluated in source order + * + * Author: christine@netscape.com + * Date: 11 August 1998 + * + */ + var SECTION = "switch-003"; + var VERSION = "ECMA_2"; + var TITLE = "The switch statement"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + SwitchTest( "a", "abc" ); + SwitchTest( "b", "bc" ); + SwitchTest( "c", "c" ); + SwitchTest( "d", "*abc" ); + SwitchTest( "v", "*abc" ); + SwitchTest( "w", "w*abc" ); + SwitchTest( "x", "xw*abc" ); + SwitchTest( "y", "yxw*abc" ); + SwitchTest( "z", "zyxw*abc" ); +// SwitchTest( new java.lang.String("z"), "*abc" ); + + test(); + + function SwitchTest( input, expect ) { + var result = ""; + + switch ( input ) { + case "z": result += "z"; + case "y": result += "y"; + case "x": result += "x"; + case "w": result += "w"; + default: result += "*"; + case "a": result += "a"; + case "b": result += "b"; + case "c": result += "c"; + } + + testcases[tc++] = new TestCase( + SECTION, + "switch with no breaks: input is " + input, + expect, + result ); + } \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/switch-004.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/switch-004.js new file mode 100644 index 00000000000..23da926d330 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/switch-004.js @@ -0,0 +1,91 @@ +/** + * File Name: switch-003.js + * ECMA Section: + * Description: The switch Statement + * + * This uses variables and objects as case expressions in switch statements. + * This verifies a bunch of bugs: + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=315988 + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=315975 + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=315954 + * + * Author: christine@netscape.com + * Date: 11 August 1998 + * + */ + var SECTION = "switch-003"; + var VERSION = "ECMA_2"; + var TITLE = "The switch statement"; + var BUGNUMBER= "315988"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + ONE = new Number(1); + ZERO = new Number(0); + var A = new String("A"); + var B = new String("B"); + TRUE = new Boolean( true ); + FALSE = new Boolean( false ); + UNDEFINED = void 0; + NULL = null; + + SwitchTest( ZERO, "ZERO" ); + SwitchTest( NULL, "NULL" ); + SwitchTest( UNDEFINED, "UNDEFINED" ); + SwitchTest( FALSE, "FALSE" ); + SwitchTest( false, "false" ); + SwitchTest( 0, "0" ); + + SwitchTest ( TRUE, "TRUE" ); + SwitchTest( 1, "1" ); + SwitchTest( ONE, "ONE" ); + SwitchTest( true, "true" ); + + SwitchTest( "a", "a" ); + SwitchTest( A, "A" ); + SwitchTest( "b", "b" ); + SwitchTest( B, "B" ); + + SwitchTest( new Boolean( true ), "default" ); + SwitchTest( new Boolean(false ), "default" ); + SwitchTest( new String( "A" ), "default" ); + SwitchTest( new Number( 0 ), "default" ); + + test(); + + function SwitchTest( input, expect ) { + var result = ""; + + switch ( input ) { + default: result += "default"; break; + case "a": result += "a"; break; + case "b": result += "b"; break; + case A: result += "A"; break; + case B: result += "B"; break; + case new Boolean(true): result += "new TRUE"; break; + case new Boolean(false): result += "new FALSE"; break; + case NULL: result += "NULL"; break; + case UNDEFINED: result += "UNDEFINED"; break; + case true: result += "true"; break; + case false: result += "false"; break; + case TRUE: result += "TRUE"; break; + case FALSE: result += "FALSE"; break; + case 0: result += "0"; break; + case 1: result += "1"; break; + case new Number(0) : result += "new ZERO"; break; + case new Number(1) : result += "new ONE"; break; + case ONE: result += "ONE"; break; + case ZERO: result += "ZERO"; break; + } + + testcases[tc++] = new TestCase( + SECTION, + "switch with no breaks: input is " + input, + expect, + result ); + } diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-001.js new file mode 100644 index 00000000000..bcd0eac2c82 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-001.js @@ -0,0 +1,82 @@ +/** + * File Name: try-001.js + * ECMA Section: + * Description: The try statement + * + * This test contains try, catch, and finally blocks. An exception is + * sometimes thrown by a function called from within the try block. + * + * This test doesn't actually make any LiveConnect calls. + * + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = ""; + var VERSION = "ECMA_2"; + var TITLE = "The try statement"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var INVALID_JAVA_INTEGER_VALUE = "Invalid value for java.lang.Integer constructor"; + + TryNewJavaInteger( "3.14159", INVALID_JAVA_INTEGER_VALUE ); + TryNewJavaInteger( NaN, INVALID_JAVA_INTEGER_VALUE ); + TryNewJavaInteger( 0, 0 ); + TryNewJavaInteger( -1, -1 ); + TryNewJavaInteger( 1, 1 ); + TryNewJavaInteger( Infinity, Infinity ); + + test(); + + /** + * Check to see if the input is valid for java.lang.Integer. If it is + * not valid, throw INVALID_JAVA_INTEGER_VALUE. If input is valid, + * return Number( v ) + * + */ + + function newJavaInteger( v ) { + value = Number( v ); + if ( Math.floor(value) != value || isNaN(value) ) { + throw ( INVALID_JAVA_INTEGER_VALUE ); + } else { + return value; + } + } + + /** + * Call newJavaInteger( value ) from within a try block. Catch any + * exception, and store it in result. Verify that we got the right + * return value from newJavaInteger in cases in which we do not expect + * exceptions, and that we got the exception in cases where an exception + * was expected. + */ + function TryNewJavaInteger( value, expect ) { + var finalTest = false; + + try { + result = newJavaInteger( value ); + } catch ( e ) { + result = String( e ); + } finally { + finalTest = true; + } + testcases[tc++] = new TestCase( + SECTION, + "newJavaValue( " + value +" )", + expect, + result); + + testcases[tc++] = new TestCase( + SECTION, + "newJavaValue( " + value +" ) hit finally block", + true, + finalTest); + + } + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-003.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-003.js new file mode 100644 index 00000000000..de1e2139e3a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-003.js @@ -0,0 +1,79 @@ +/** + * File Name: try-003.js + * ECMA Section: + * Description: The try statement + * + * This test has a try with no catch, and a finally. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "try-003"; + var VERSION = "ECMA_2"; + var TITLE = "The try statement"; + var BUGNUMBER="http://scopus.mcom.com/bugsplat/show_bug.cgi?id=313585"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + // Tests start here. + + TrySomething( "x = \"hi\"", false ); + TrySomething( "throw \"boo\"", true ); + TrySomething( "throw 3", true ); + + test(); + + /** + * This function contains a try block with no catch block, + * but it does have a finally block. Try to evaluate expressions + * that do and do not throw exceptions. + */ + + function TrySomething( expression, throwing ) { + innerFinally = "FAIL: DID NOT HIT INNER FINALLY BLOCK"; + if (throwing) { + outerCatch = "FAILED: NO EXCEPTION CAUGHT"; + } else { + outerCatch = "PASS"; + } + outerFinally = "FAIL: DID NOT HIT OUTER FINALLY BLOCK"; + + try { + try { + eval( expression ); + } finally { + innerFinally = "PASS"; + } + } catch ( e ) { + if (throwing) { + outerCatch = "PASS"; + } else { + outerCatch = "FAIL: HIT OUTER CATCH BLOCK"; + } + } finally { + outerFinally = "PASS"; + } + + + testcases[tc++] = new TestCase( + SECTION, + "eval( " + expression +" )", + "PASS", + innerFinally ); + testcases[tc++] = new TestCase( + SECTION, + "eval( " + expression +" )", + "PASS", + outerCatch ); + testcases[tc++] = new TestCase( + SECTION, + "eval( " + expression +" )", + "PASS", + outerFinally ); + + + } diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-004.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-004.js new file mode 100644 index 00000000000..b36dc4415c9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-004.js @@ -0,0 +1,51 @@ +/** + * File Name: try-004.js + * ECMA Section: + * Description: The try statement + * + * This test has a try with one catch block but no finally. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "try-004"; + var VERSION = "ECMA_2"; + var TITLE = "The try statement"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + TryToCatch( "Math.PI", Math.PI ); + TryToCatch( "Thrower(5)", "Caught 5" ); + TryToCatch( "Thrower(\"some random exception\")", "Caught some random exception" ); + + test(); + + function Thrower( v ) { + throw "Caught " + v; + } + + /** + * Evaluate a string. Catch any exceptions thrown. If no exception is + * expected, verify the result of the evaluation. If an exception is + * expected, verify that we got the right exception. + */ + + function TryToCatch( value, expect ) { + try { + result = eval( value ); + } catch ( e ) { + result = e; + } + + testcases[tc++] = new TestCase( + SECTION, + "eval( " + value +" )", + expect, + result ); + } + + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-005.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-005.js new file mode 100644 index 00000000000..94b5beb2fe6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-005.js @@ -0,0 +1,54 @@ +/** + * File Name: try-005.js + * ECMA Section: + * Description: The try statement + * + * This test has a try with one catch block but no finally. Same + * as try-004, but the eval statement is called from a function, not + * directly from within the try block. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "try-005"; + var VERSION = "ECMA_2"; + var TITLE = "The try statement"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + TryToCatch( "Math.PI", Math.PI ); + TryToCatch( "Thrower(5)", "Caught 5" ); + TryToCatch( "Thrower(\"some random exception\")", "Caught some random exception" ); + + test(); + + function Thrower( v ) { + throw "Caught " + v; + } + function Eval( v ) { + return eval( v ); + } + + /** + * Evaluate a string. Catch any exceptions thrown. If no exception is + * expected, verify the result of the evaluation. If an exception is + * expected, verify that we got the right exception. + */ + + function TryToCatch( value, expect ) { + try { + result = Eval( value ); + } catch ( e ) { + result = e; + } + + testcases[tc++] = new TestCase( + SECTION, + "eval( " + value +" )", + expect, + result ); + } diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-006.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-006.js new file mode 100644 index 00000000000..924f24d5dcc --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-006.js @@ -0,0 +1,84 @@ +/** + * File Name: try-006.js + * ECMA Section: + * Description: The try statement + * + * Throw an exception from within a With block in a try block. Verify + * that any expected exceptions are caught. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "try-006"; + var VERSION = "ECMA_2"; + var TITLE = "The try statement"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + /** + * This is the "check" function for test objects that will + * throw an exception. + */ + function throwException() { + throw EXCEPTION_STRING +": " + this.valueOf(); + } + var EXCEPTION_STRING = "Exception thrown:"; + + /** + * This is the "check" function for test objects that do not + * throw an exception + */ + function noException() { + return this.valueOf(); + } + + /** + * Add test cases here + */ + TryWith( new TryObject( "hello", throwException, true )); + TryWith( new TryObject( "hola", noException, false )); + + /** + * Run the test. + */ + + test(); + + /** + * This is the object that will be the "this" in a with block. + */ + function TryObject( value, fun, exception ) { + this.value = value; + this.exception = exception; + + this.valueOf = new Function ( "return this.value" ); + this.check = fun; + } + + /** + * This function has the try block that has a with block within it. + * Test cases are added in this function. Within the with block, the + * object's "check" function is called. If the test object's exception + * property is true, we expect the result to be the exception value. + * If exception is false, then we expect the result to be the value of + * the object. + */ + function TryWith( object ) { + try { + with ( object ) { + result = check(); + } + } catch ( e ) { + result = e; + } + + testcases[tc++] = new TestCase( + SECTION, + "TryWith( " + object.value +" )", + (object.exception ? EXCEPTION_STRING +": " + object.valueOf() : object.valueOf()), + result ); + } diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-007.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-007.js new file mode 100644 index 00000000000..14a960abc21 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-007.js @@ -0,0 +1,89 @@ +/** + * File Name: try-007.js + * ECMA Section: + * Description: The try statement + * + * This test has a for-in statement within a try block. + * + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "try-007"; + var VERSION = "ECMA_2"; + var TITLE = "The try statement: for-in"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + /** + * This is the "check" function for test objects that will + * throw an exception. + */ + function throwException() { + throw EXCEPTION_STRING +": " + this.valueOf(); + } + var EXCEPTION_STRING = "Exception thrown:"; + + /** + * This is the "check" function for test objects that do not + * throw an exception + */ + function noException() { + return this.valueOf(); + } + + /** + * Add test cases here + */ + TryForIn( new TryObject( "hello", throwException, true )); + TryForIn( new TryObject( "hola", noException, false )); + + /** + * Run the test. + */ + + test(); + +/** + * This is the object that will be the "this" in a with block. + * The check function is either throwExeption() or noException(). + * See above. + * + */ +function TryObject( value, fun, exception ) { + this.value = value; + this.exception = exception; + + this.check = fun; + this.valueOf = function () { return this.value; } +} + +/** + * This function has a for-in statement within a try block. Test cases + * are added after the try-catch-finally statement. Within the for-in + * block, call a function that can throw an exception. Verify that any + * exceptions are properly caught. + */ + + function TryForIn( object ) { + try { + for ( p in object ) { + if ( typeof object[p] == "function" ) { + result = object[p](); + } + } + } catch ( e ) { + result = e; + } + + testcases[tc++] = new TestCase( + SECTION, + "TryForIn( " + object+ " )", + (object.exception ? EXCEPTION_STRING +": " + object.value : object.value), + result ); + + } diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-008.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-008.js new file mode 100644 index 00000000000..78092b69d71 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-008.js @@ -0,0 +1,56 @@ +/** + * File Name: try-008.js + * ECMA Section: + * Description: The try statement + * + * This test has a try block in a constructor. + * + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "try-008"; + var VERSION = "ECMA_2"; + var TITLE = "The try statement: try in a constructor"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + function Integer( value, exception ) { + try { + this.value = checkValue( value ); + } catch ( e ) { + this.value = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "Integer( " + value +" )", + (exception ? INVALID_INTEGER_VALUE +": " + value : this.value), + this.value ); + } + + var INVALID_INTEGER_VALUE = "Invalid value for java.lang.Integer constructor"; + + function checkValue( value ) { + if ( Math.floor(value) != value || isNaN(value) ) { + throw ( INVALID_INTEGER_VALUE +": " + value ); + } else { + return value; + } + } + + // add test cases + + new Integer( 3, false ); + new Integer( NaN, true ); + new Integer( 0, false ); + new Integer( Infinity, false ); + new Integer( -2.12, true ); + new Integer( Math.LN2, true ); + + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-009.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-009.js new file mode 100644 index 00000000000..778e64784fa --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-009.js @@ -0,0 +1,63 @@ +/** + * File Name: try-009.js + * ECMA Section: + * Description: The try statement + * + * This test has a try block within a while block. Verify that an exception + * breaks out of the while. I don't really know why this is an interesting + * test case but Mike Shaver had two of these so what the hey. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "try-009"; + var VERSION = "ECMA_2"; + var TITLE = "The try statement: try in a while block"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var EXCEPTION_STRING = "Exception thrown: "; + var NO_EXCEPTION_STRING = "No exception thrown: "; + + + TryInWhile( new TryObject( "hello", ThrowException, true ) ); + TryInWhile( new TryObject( "aloha", NoException, false )); + + test(); + + function TryObject( value, throwFunction, result ) { + this.value = value; + this.thrower = throwFunction; + this.result = result; + } + function ThrowException() { + throw EXCEPTION_STRING + this.value; + } + function NoException() { + return NO_EXCEPTION_STRING + this.value; + } + function TryInWhile( object ) { + result = null; + while ( true ) { + try { + object.thrower(); + result = NO_EXCEPTION_STRING + object.value; + break; + } catch ( e ) { + result = e; + break; + } + } + + testcases[tc++] = new TestCase( + SECTION, + "( "+ object +".thrower() )", + (object.result + ? EXCEPTION_STRING + object.value : + NO_EXCEPTION_STRING + object.value), + result ); + } diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-010.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-010.js new file mode 100644 index 00000000000..eeb7f88c6b6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-010.js @@ -0,0 +1,70 @@ +/** + * File Name: try-010.js + * ECMA Section: + * Description: The try statement + * + * This has a try block nested in the try block. Verify that the + * exception is caught by the right try block, and all finally blocks + * are executed. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "try-010"; + var VERSION = "ECMA_2"; + var TITLE = "The try statement: try in a tryblock"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var EXCEPTION_STRING = "Exception thrown: "; + var NO_EXCEPTION_STRING = "No exception thrown: "; + + + NestedTry( new TryObject( "No Exceptions Thrown", NoException, NoException, 43 ) ); + NestedTry( new TryObject( "Throw Exception in Outer Try", ThrowException, NoException, 48 )); + NestedTry( new TryObject( "Throw Exception in Inner Try", NoException, ThrowException, 45 )); + NestedTry( new TryObject( "Throw Exception in Both Trys", ThrowException, ThrowException, 48 )); + + test(); + + function TryObject( description, tryOne, tryTwo, result ) { + this.description = description; + this.tryOne = tryOne; + this.tryTwo = tryTwo; + this.result = result; + } + function ThrowException() { + throw EXCEPTION_STRING + this.value; + } + function NoException() { + return NO_EXCEPTION_STRING + this.value; + } + function NestedTry( object ) { + result = 0; + try { + object.tryOne(); + result += 1; + try { + object.tryTwo(); + result += 2; + } catch ( e ) { + result +=4; + } finally { + result += 8; + } + } catch ( e ) { + result += 16; + } finally { + result += 32; + } + + testcases[tc++] = new TestCase( + SECTION, + object.description, + object.result, + result ); + } diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-012.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-012.js new file mode 100644 index 00000000000..f8c8e0014f8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/try-012.js @@ -0,0 +1,92 @@ +/** + * File Name: try-012.js + * ECMA Section: + * Description: The try statement + * + * This test has a try with no catch, and a finally. This is like try-003, + * but throws from a finally block, not the try block. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "try-012"; + var VERSION = "ECMA_2"; + var TITLE = "The try statement"; + var BUGNUMBER="336872"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + // Tests start here. + + TrySomething( "x = \"hi\"", true ); + TrySomething( "throw \"boo\"", true ); + TrySomething( "throw 3", true ); + + test(); + + /** + * This function contains a try block with no catch block, + * but it does have a finally block. Try to evaluate expressions + * that do and do not throw exceptions. + * + * The productioni TryStatement Block Finally is evaluated as follows: + * 1. Evaluate Block + * 2. Evaluate Finally + * 3. If Result(2).type is normal return result 1 (in the test case, result 1 has + * the completion type throw) + * 4. return result 2 (does not get hit in this case) + * + */ + + function TrySomething( expression, throwing ) { + innerFinally = "FAIL: DID NOT HIT INNER FINALLY BLOCK"; + if (throwing) { + outerCatch = "FAILED: NO EXCEPTION CAUGHT"; + } else { + outerCatch = "PASS"; + } + outerFinally = "FAIL: DID NOT HIT OUTER FINALLY BLOCK"; + + + // If the inner finally does not throw an exception, the result + // of the try block should be returned. (Type of inner return + // value should be throw if finally executes correctly + + try { + try { + throw 0; + } finally { + innerFinally = "PASS"; + eval( expression ); + } + } catch ( e ) { + if (throwing) { + outerCatch = "PASS"; + } else { + outerCatch = "FAIL: HIT OUTER CATCH BLOCK"; + } + } finally { + outerFinally = "PASS"; + } + + + testcases[tc++] = new TestCase( + SECTION, + "eval( " + expression +" ): evaluated inner finally block", + "PASS", + innerFinally ); + testcases[tc++] = new TestCase( + SECTION, + "eval( " + expression +" ): evaluated outer catch block ", + "PASS", + outerCatch ); + testcases[tc++] = new TestCase( + SECTION, + "eval( " + expression +" ): evaluated outer finally block", + "PASS", + outerFinally ); + } diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/while-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/while-001.js new file mode 100644 index 00000000000..f9c0d64cbaa --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/while-001.js @@ -0,0 +1,39 @@ +/** + * File Name: while-001 + * ECMA Section: + * Description: while statement + * + * Verify that the while statement is not executed if the while expression is + * false + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "while-001"; + var VERSION = "ECMA_2"; + var TITLE = "while statement"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + DoWhile(); + test(); + + function DoWhile() { + result = "pass"; + + while (false) { + result = "fail"; + break; + } + + testcases[tc++] = new TestCase( + SECTION, + "while statement: don't evaluate statement is expression is false", + "pass", + result ); + + } \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/while-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/while-002.js new file mode 100644 index 00000000000..3fda04bc493 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/while-002.js @@ -0,0 +1,83 @@ +/** + * File Name: while-002 + * ECMA Section: + * Description: while statement + * + * Verify that the while statement is not executed if the while expression is + * false + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "while-002"; + var VERSION = "ECMA_2"; + var TITLE = "while statement"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + DoWhile( new DoWhileObject( + "while expression is null", + null, + "result = \"fail: should not have evaluated statements in while block;break" + ) ); + + DoWhile( new DoWhileObject( + "while expression is undefined", + void 0, + "result = \"fail: should not have evaluated statements in while block; break" + )); + + DoWhile( new DoWhileObject( + "while expression is 0", + 0, + "result = \"fail: should not have evaluated statements in while block; break;" + )); + + DoWhile( new DoWhileObject( + "while expression is eval(\"\")", + eval(""), + "result = \"fail: should not have evaluated statements in while block; break" + )); + + DoWhile( new DoWhileObject( + "while expression is NaN", + NaN, + "result = \"fail: should not have evaluated statements in while block; break" + )); + + test(); + + function DoWhileObject( d, e, s ) { + this.description = d; + this.whileExpression = e; + this.statements = s; + } + + function DoWhile( object ) { + result = "pass"; + + while ( expression = object.whileExpression ) { + eval( object.statements ); + } + + // verify that the while expression was evaluated + + testcases[tc++] = new TestCase( + SECTION, + "verify that while expression was evaluated (should be "+ + object.whileExpression +")", + "pass", + (object.whileExpression == expression || + ( isNaN(object.whileExpression) && isNaN(expression) ) + ) ? "pass" : "fail" ); + + testcases[tc++] = new TestCase( + SECTION, + object.description, + "pass", + result ); + } \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/while-003.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/while-003.js new file mode 100644 index 00000000000..0164f054e6c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/while-003.js @@ -0,0 +1,84 @@ +/** + * File Name: while-003 + * ECMA Section: + * Description: while statement + * + * The while expression evaluates to true, Statement returns abrupt completion. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "while-003"; + var VERSION = "ECMA_2"; + var TITLE = "while statement"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + DoWhile( new DoWhileObject( + "while expression is true", + true, + "result = \"pass\";" )); + + DoWhile( new DoWhileObject( + "while expression is 1", + 1, + "result = \"pass\";" )); + + DoWhile( new DoWhileObject( + "while expression is new Boolean(false)", + new Boolean(false), + "result = \"pass\";" )); + + DoWhile( new DoWhileObject( + "while expression is new Object()", + new Object(), + "result = \"pass\";" )); + + DoWhile( new DoWhileObject( + "while expression is \"hi\"", + "hi", + "result = \"pass\";" )); +/* + DoWhile( new DoWhileObject( + "while expression has a continue in it", + "true", + "if ( i == void 0 ) i = 0; result=\"pass\"; if ( ++i == 1 ) {continue;} else {break;} result=\"fail\";" + )); +*/ + test(); + + function DoWhileObject( d, e, s ) { + this.description = d; + this.whileExpression = e; + this.statements = s; + } + + function DoWhile( object ) { + result = "fail: statements in while block were not evaluated"; + + while ( expression = object.whileExpression ) { + eval( object.statements ); + break; + } + + // verify that the while expression was evaluated + + testcases[tc++] = new TestCase( + SECTION, + "verify that while expression was evaluated (should be "+ + object.whileExpression +")", + "pass", + (object.whileExpression == expression || + ( isNaN(object.whileExpression) && isNaN(expression) ) + ) ? "pass" : "fail" ); + + testcases[tc++] = new TestCase( + SECTION, + object.description, + "pass", + result ); + } \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/while-004.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/while-004.js new file mode 100644 index 00000000000..48faeb0cda9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/Statements/while-004.js @@ -0,0 +1,214 @@ +/** + * File Name: while-004 + * ECMA Section: + * Description: while statement + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "while-004"; + var VERSION = "ECMA_2"; + var TITLE = "while statement"; + var BUGNUMBER="316725"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + DoWhile_1(); + DoWhile_2(); + DoWhile_3(); + DoWhile_4(); + DoWhile_5(); + + test(); + + /** + * Break out of a while by calling return. + * + * Tests: 12.6.2 step 6. + */ + function dowhile() { + result = "pass"; + + while (true) { + return result; + result = "fail: hit code after return statement"; + break; + } + } + + function DoWhile_1() { + description = "return statement in a while block"; + + result = dowhile(); + + testcases[tc++] = new TestCase( + SECTION, + "DoWhile_1" + description, + "pass", + result ); + } + + /** + * While with a labeled continue statement. Verify that statements + * after the continue statement are not evaluated. + * + * Tests: 12.6.2 step 8. + * + */ + function DoWhile_2() { + var description = "while with a labeled continue statement"; + var result1 = "pass"; + var result2 = "fail: did not execute code after loop, but inside label"; + var i = 0; + var j = 0; + + theloop: + while( i++ < 10 ) { + j++; + continue theloop; + result1 = "failed: hit code after continue statement"; + } + result2 = "pass"; + + testcases[tc++] = new TestCase( + SECTION, + "DoWhile_2: " +description + " - code inside the loop, before the continue should be executed ("+j+")", + true, + j == 10 ); + + testcases[tc++] = new TestCase( + SECTION, + "DoWhile_2: " +description +" - code after labeled continue should not be executed", + "pass", + result1 ); + + testcases[tc++] = new TestCase( + SECTION, + "DoWhile_2: " +description +" - code after loop but inside label should be executed", + "pass", + result2 ); + } + + /** + * While with a labeled break. + * + */ + function DoWhile_3() { + var description = "while with a labeled break statement"; + var result1 = "pass"; + var result2 = "pass"; + var result3 = "fail: did not get to code after label"; + + woohoo: { + while( true ) { + break woohoo; + result1 = "fail: got to code after a break"; + } + result2 = "fail: got to code outside of loop but inside label"; + } + + result3 = "pass"; + + testcases[tc++] = new TestCase( + SECTION, + "DoWhile_3: " +description +" - verify break out of loop", + "pass", + result1 ); + + + testcases[tc++] = new TestCase( + SECTION, + "DoWhile_3: " +description +" - verify break out of label", + "pass", + result2 ); + + testcases[tc++] = new TestCase( + SECTION, + "DoWhile_3: " +description + " - verify correct exit from label", + "pass", + result3 ); + } + + + /** + * Labled while with an unlabeled break + * + */ + function DoWhile_4() { + var description = "labeled while with an unlabeled break"; + var result1 = "pass"; + var result2 = "pass"; + var result3 = "fail: did not evaluate statement after label"; + + woohooboy: { + while( true ) { + break woohooboy; + result1 = "fail: got to code after the break"; + } + result2 = "fail: broke out of while, but not out of label"; + } + result3 = "pass"; + + testcases[tc++] = new TestCase( + SECTION, + "DoWhile_4: " +description +" - verify break out of while loop", + "pass", + result1 ); + + testcases[tc++] = new TestCase( + SECTION, + "DoWhile_4: " +description + " - verify break out of label", + "pass", + result2 ); + + testcases[tc++] = new TestCase( + SECTION, + "DoWhile_4: " +description +" - verify that statements after label are evaluated", + "pass", + result3 ); + } + + /** + * in this case, should behave the same way as + * + * + */ + function DoWhile_5() { + var description = "while with a labeled continue statement"; + var result1 = "pass"; + var result2 = "fail: did not execute code after loop, but inside label"; + var i = 0; + var j = 0; + + theloop: { + j++; + while( i++ < 10 ) { + continue; + result1 = "failed: hit code after continue statement"; + } + result2 = "pass"; + } + + testcases[tc++] = new TestCase( + SECTION, + "DoWhile_5: " +description + " - continue should not execute statements above the loop", + true, + ( j == 1 ) ); + + testcases[tc++] = new TestCase( + SECTION, + "DoWhile_5: " +description +" - code after labeled continue should not be executed", + "pass", + result1 ); + + testcases[tc++] = new TestCase( + SECTION, + "DoWhile_5: " +description +" - code after loop but inside label should be executed", + "pass", + result2 ); + } + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/String/match-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/match-001.js new file mode 100644 index 00000000000..738264eea63 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/match-001.js @@ -0,0 +1,100 @@ +/** + * File Name: String/match-001.js + * ECMA Section: 15.6.4.9 + * Description: Based on ECMA 2 Draft 7 February 1999 + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + +/* + * String.match( regexp ) + * + * If regexp is not an object of type RegExp, it is replaced with result + * of the expression new RegExp(regexp). Let string denote the result of + * converting the this value to a string. If regexp.global is false, + * return the result obtained by invoking RegExp.prototype.exec (see + * section 15.7.5.3) on regexp with string as parameter. + * + * Otherwise, set the regexp.lastIndex property to 0 and invoke + * RegExp.prototype.exec repeatedly until there is no match. If there is a + * match with an empty string (in other words, if the value of + * regexp.lastIndex is left unchanged) increment regexp.lastIndex by 1. + * The value returned is an array with the properties 0 through n-1 + * corresponding to the first element of the result of each matching + * invocation of RegExp.prototype.exec. + * + * Note that the match function is intentionally generic; it does not + * require that its this value be a string object. Therefore, it can be + * transferred to other kinds of objects for use as a method. + */ + + var SECTION = "String/match-001.js"; + var VERSION = "ECMA_2"; + var TITLE = "String.prototype.match( regexp )"; + + startTest(); + + // the regexp argument is not a RegExp object + // this is not a string object + + // cases in which the regexp global property is false + + AddRegExpCases( 3, "3", "1234567890", 1, 2, ["3"] ); + + // cases in which the regexp object global property is true + + AddGlobalRegExpCases( /34/g, "/34/g", "343443444", 3, ["34", "34", "34"] ); + AddGlobalRegExpCases( /\d{1}/g, "/d{1}/g", "123456abcde7890", 10, + ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] ); + + AddGlobalRegExpCases( /\d{2}/g, "/d{2}/g", "123456abcde7890", 5, + ["12", "34", "56", "78", "90"] ); + + AddGlobalRegExpCases( /\D{2}/g, "/d{2}/g", "123456abcde7890", 2, + ["ab", "cd"] ); + + test(); + + +function AddRegExpCases( + regexp, str_regexp, string, length, index, matches_array ) { + + AddTestCase( + "( " + string + " ).match(" + str_regexp +").length", + length, + string.match(regexp).length ); + + AddTestCase( + "( " + string + " ).match(" + str_regexp +").index", + index, + string.match(regexp).index ); + + AddTestCase( + "( " + string + " ).match(" + str_regexp +").input", + string, + string.match(regexp).input ); + + for ( var matches = 0; matches < matches_array.length; matches++ ) { + AddTestCase( + "( " + string + " ).match(" + str_regexp +")[" + matches +"]", + matches_array[matches], + string.match(regexp)[matches] ); + } +} + +function AddGlobalRegExpCases( + regexp, str_regexp, string, length, matches_array ) { + + AddTestCase( + "( " + string + " ).match(" + str_regexp +").length", + length, + string.match(regexp).length ); + + for ( var matches = 0; matches < matches_array.length; matches++ ) { + AddTestCase( + "( " + string + " ).match(" + str_regexp +")[" + matches +"]", + matches_array[matches], + string.match(regexp)[matches] ); + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/String/match-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/match-002.js new file mode 100644 index 00000000000..83ac2fa4bde --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/match-002.js @@ -0,0 +1,168 @@ +/** + * File Name: String/match-002.js + * ECMA Section: 15.6.4.9 + * Description: Based on ECMA 2 Draft 7 February 1999 + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + +/* + * String.match( regexp ) + * + * If regexp is not an object of type RegExp, it is replaced with result + * of the expression new RegExp(regexp). Let string denote the result of + * converting the this value to a string. If regexp.global is false, + * return the result obtained by invoking RegExp.prototype.exec (see + * section 15.7.5.3) on regexp with string as parameter. + * + * Otherwise, set the regexp.lastIndex property to 0 and invoke + * RegExp.prototype.exec repeatedly until there is no match. If there is a + * match with an empty string (in other words, if the value of + * regexp.lastIndex is left unchanged) increment regexp.lastIndex by 1. + * The value returned is an array with the properties 0 through n-1 + * corresponding to the first element of the result of each matching + * invocation of RegExp.prototype.exec. + * + * Note that the match function is intentionally generic; it does not + * require that its this value be a string object. Therefore, it can be + * transferred to other kinds of objects for use as a method. + * + * This file tests cases in which regexp.global is false. Therefore, + * results should behave as regexp.exec with string passed as a parameter. + * + */ + + var SECTION = "String/match-002.js"; + var VERSION = "ECMA_2"; + var TITLE = "String.prototype.match( regexp )"; + + startTest(); + + // the regexp argument is not a RegExp object + // this is not a string object + + AddRegExpCases( /([\d]{5})([-\ ]?[\d]{4})?$/, + "/([\d]{5})([-\ ]?[\d]{4})?$/", + "Boston, Mass. 02134", + 14, + ["02134", "02134", undefined]); + + AddGlobalRegExpCases( /([\d]{5})([-\ ]?[\d]{4})?$/g, + "/([\d]{5})([-\ ]?[\d]{4})?$/g", + "Boston, Mass. 02134", + ["02134"]); + + // set the value of lastIndex + re = /([\d]{5})([-\ ]?[\d]{4})?$/; + re.lastIndex = 0; + + s = "Boston, MA 02134"; + + AddRegExpCases( re, + "re = /([\d]{5})([-\ ]?[\d]{4})?$/; re.lastIndex =0", + s, + s.lastIndexOf("0"), + ["02134", "02134", undefined]); + + + re.lastIndex = s.length; + + AddRegExpCases( re, + "re = /([\d]{5})([-\ ]?[\d]{4})?$/; re.lastIndex = " + + s.length, + s, + s.lastIndexOf("0"), + ["02134", "02134", undefined] ); + + re.lastIndex = s.lastIndexOf("0"); + + AddRegExpCases( re, + "re = /([\d]{5})([-\ ]?[\d]{4})?$/; re.lastIndex = " + + s.lastIndexOf("0"), + s, + s.lastIndexOf("0"), + ["02134", "02134", undefined]); + + re.lastIndex = s.lastIndexOf("0") + 1; + + AddRegExpCases( re, + "re = /([\d]{5})([-\ ]?[\d]{4})?$/; re.lastIndex = " + + s.lastIndexOf("0") +1, + s, + s.lastIndexOf("0"), + ["02134", "02134", undefined]); + + test(); + +function AddRegExpCases( + regexp, str_regexp, string, index, matches_array ) { + + // prevent a runtime error + + if ( regexp.exec(string) == null || matches_array == null ) { + AddTestCase( + string + ".match(" + regexp +")", + matches_array, + string.match(regexp) ); + + return; + } + + AddTestCase( + "( " + string + " ).match(" + str_regexp +").length", + matches_array.length, + string.match(regexp).length ); + + AddTestCase( + "( " + string + " ).match(" + str_regexp +").index", + index, + string.match(regexp).index ); + + AddTestCase( + "( " + string + " ).match(" + str_regexp +").input", + string, + string.match(regexp).input ); + + var limit = matches_array.length > string.match(regexp).length ? + matches_array.length : + string.match(regexp).length; + + for ( var matches = 0; matches < limit; matches++ ) { + AddTestCase( + "( " + string + " ).match(" + str_regexp +")[" + matches +"]", + matches_array[matches], + string.match(regexp)[matches] ); + } +} + +function AddGlobalRegExpCases( + regexp, str_regexp, string, matches_array ) { + + // prevent a runtime error + + if ( regexp.exec(string) == null || matches_array == null ) { + AddTestCase( + regexp + ".exec(" + string +")", + matches_array, + regexp.exec(string) ); + + return; + } + + AddTestCase( + "( " + string + " ).match(" + str_regexp +").length", + matches_array.length, + string.match(regexp).length ); + + var limit = matches_array.length > string.match(regexp).length ? + matches_array.length : + string.match(regexp).length; + + for ( var matches = 0; matches < limit; matches++ ) { + AddTestCase( + "( " + string + " ).match(" + str_regexp +")[" + matches +"]", + matches_array[matches], + string.match(regexp)[matches] ); + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/String/match-003.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/match-003.js new file mode 100644 index 00000000000..f63e9e28c5b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/match-003.js @@ -0,0 +1,126 @@ +/** + * File Name: String/match-003.js + * ECMA Section: 15.6.4.9 + * Description: Based on ECMA 2 Draft 7 February 1999 + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + +/* + * String.match( regexp ) + * + * If regexp is not an object of type RegExp, it is replaced with result + * of the expression new RegExp(regexp). Let string denote the result of + * converting the this value to a string. If regexp.global is false, + * return the result obtained by invoking RegExp.prototype.exec (see + * section 15.7.5.3) on regexp with string as parameter. + * + * Otherwise, set the regexp.lastIndex property to 0 and invoke + * RegExp.prototype.exec repeatedly until there is no match. If there is a + * match with an empty string (in other words, if the value of + * regexp.lastIndex is left unchanged) increment regexp.lastIndex by 1. + * The value returned is an array with the properties 0 through n-1 + * corresponding to the first element of the result of each matching + * invocation of RegExp.prototype.exec. + * + * Note that the match function is intentionally generic; it does not + * require that its this value be a string object. Therefore, it can be + * transferred to other kinds of objects for use as a method. + */ + + var SECTION = "String/match-003.js"; + var VERSION = "ECMA_2"; + var TITLE = "String.prototype.match( regexp )"; + + startTest(); + + // the regexp argument is not a RegExp object + // this is not a string object + + +// [if regexp.global is true] set the regexp.lastIndex property to 0 and +// invoke RegExp.prototype.exec repeatedly until there is no match. If +// there is a match with an empty string (in other words, if the value of +// regexp.lastIndex is left unchanged) increment regexp.lastIndex by 1. +// The value returned is an array with the properties 0 through n-1 +// corresponding to the first element of the result of each matching invocation +// of RegExp.prototype.exec. + + + // set the value of lastIndex + re = /([\d]{5})([-\ ]?[\d]{4})?$/g; + + + s = "Boston, MA 02134"; + + AddGlobalRegExpCases( re, + "re = " + re, + s, + ["02134" ]); + + re.lastIndex = 0; + + AddGlobalRegExpCases( + re, + "re = " + re + "; re.lastIndex = 0 ", + s, + ["02134"]); + + + re.lastIndex = s.length; + + AddGlobalRegExpCases( + re, + "re = " + re + "; re.lastIndex = " + s.length, + s, + ["02134"] ); + + re.lastIndex = s.lastIndexOf("0"); + + AddGlobalRegExpCases( + re, + "re = "+ re +"; re.lastIndex = " + s.lastIndexOf("0"), + s, + ["02134"]); + + re.lastIndex = s.lastIndexOf("0") + 1; + + AddGlobalRegExpCases( + re, + "re = " +re+ "; re.lastIndex = " + (s.lastIndexOf("0") +1), + s, + ["02134"]); + + test(); + +function AddGlobalRegExpCases( + regexp, str_regexp, string, matches_array ) { + + // prevent a runtime error + + if ( string.match(regexp) == null || matches_array == null ) { + AddTestCase( + string + ".match(" + str_regexp +")", + matches_array, + string.match(regexp) ); + + return; + } + + AddTestCase( + "( " + string + " ).match(" + str_regexp +").length", + matches_array.length, + string.match(regexp).length ); + + var limit = matches_array.length > string.match(regexp).length ? + matches_array.length : + string.match(regexp).length; + + for ( var matches = 0; matches < limit; matches++ ) { + AddTestCase( + "( " + string + " ).match(" + str_regexp +")[" + matches +"]", + matches_array[matches], + string.match(regexp)[matches] ); + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/String/match-004.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/match-004.js new file mode 100644 index 00000000000..c35d9889fb4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/match-004.js @@ -0,0 +1,167 @@ +/** + * File Name: String/match-004.js + * ECMA Section: 15.6.4.9 + * Description: Based on ECMA 2 Draft 7 February 1999 + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + +/* + * String.match( regexp ) + * + * If regexp is not an object of type RegExp, it is replaced with result + * of the expression new RegExp(regexp). Let string denote the result of + * converting the this value to a string. If regexp.global is false, + * return the result obtained by invoking RegExp.prototype.exec (see + * section 15.7.5.3) on regexp with string as parameter. + * + * Otherwise, set the regexp.lastIndex property to 0 and invoke + * RegExp.prototype.exec repeatedly until there is no match. If there is a + * match with an empty string (in other words, if the value of + * regexp.lastIndex is left unchanged) increment regexp.lastIndex by 1. + * The value returned is an array with the properties 0 through n-1 + * corresponding to the first element of the result of each matching + * invocation of RegExp.prototype.exec. + * + * Note that the match function is intentionally generic; it does not + * require that its this value be a string object. Therefore, it can be + * transferred to other kinds of objects for use as a method. + * + * + * The match function should be intentionally generic, and not require + * this to be a string. + * + */ + + var SECTION = "String/match-004.js"; + var VERSION = "ECMA_2"; + var TITLE = "String.prototype.match( regexp )"; + + var BUGNUMBER="http://scopus/bugsplat/show_bug.cgi?id=345818"; + + startTest(); + + // set the value of lastIndex + re = /0./; + s = 10203040506070809000; + + Number.prototype.match = String.prototype.match; + + AddRegExpCases( re, + "re = " + re , + s, + String(s), + 1, + ["02"]); + + + re.lastIndex = 0; + AddRegExpCases( re, + "re = " + re +" [lastIndex is " + re.lastIndex+"]", + s, + String(s), + 1, + ["02"]); +/* + + re.lastIndex = s.length; + + AddRegExpCases( re, + "re = /([\d]{5})([-\ ]?[\d]{4})?$/; re.lastIndex = " + + s.length, + s, + s.lastIndexOf("0"), + null ); + + re.lastIndex = s.lastIndexOf("0"); + + AddRegExpCases( re, + "re = /([\d]{5})([-\ ]?[\d]{4})?$/; re.lastIndex = " + + s.lastIndexOf("0"), + s, + s.lastIndexOf("0"), + ["02134"]); + + re.lastIndex = s.lastIndexOf("0") + 1; + + AddRegExpCases( re, + "re = /([\d]{5})([-\ ]?[\d]{4})?$/; re.lastIndex = " + + s.lastIndexOf("0") +1, + s, + 0, + null); +*/ + test(); + +function AddRegExpCases( + regexp, str_regexp, string, str_string, index, matches_array ) { + + // prevent a runtime error + + if ( regexp.exec(string) == null || matches_array == null ) { + AddTestCase( + string + ".match(" + regexp +")", + matches_array, + string.match(regexp) ); + + return; + } + + AddTestCase( + "( " + string + " ).match(" + str_regexp +").length", + matches_array.length, + string.match(regexp).length ); + + AddTestCase( + "( " + string + " ).match(" + str_regexp +").index", + index, + string.match(regexp).index ); + + AddTestCase( + "( " + string + " ).match(" + str_regexp +").input", + str_string, + string.match(regexp).input ); + + var limit = matches_array.length > string.match(regexp).length ? + matches_array.length : + string.match(regexp).length; + + for ( var matches = 0; matches < limit; matches++ ) { + AddTestCase( + "( " + string + " ).match(" + str_regexp +")[" + matches +"]", + matches_array[matches], + string.match(regexp)[matches] ); + } +} + +function AddGlobalRegExpCases( + regexp, str_regexp, string, matches_array ) { + + // prevent a runtime error + + if ( regexp.exec(string) == null || matches_array == null ) { + AddTestCase( + regexp + ".exec(" + string +")", + matches_array, + regexp.exec(string) ); + + return; + } + + AddTestCase( + "( " + string + " ).match(" + str_regexp +").length", + matches_array.length, + string.match(regexp).length ); + + var limit = matches_array.length > string.match(regexp).length ? + matches_array.length : + string.match(regexp).length; + + for ( var matches = 0; matches < limit; matches++ ) { + AddTestCase( + "( " + string + " ).match(" + str_regexp +")[" + matches +"]", + matches_array[matches], + string.match(regexp)[matches] ); + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/String/replace-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/replace-001.js new file mode 100644 index 00000000000..5ff8dc098c7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/replace-001.js @@ -0,0 +1,60 @@ +/** + * File Name: String/replace-001.js + * ECMA Section: 15.6.4.10 + * Description: Based on ECMA 2 Draft 7 February 1999 + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + + var SECTION = "String/replace-001.js"; + var VERSION = "ECMA_2"; + var TITLE = "String.prototype.replace( regexp, replaceValue )"; + + startTest(); + + /* + * If regexp is not an object of type RegExp, it is replaced with the + * result of the expression new RegExp(regexp). Let string denote the + * result of converting the this value to a string. String is searched + * for the first occurrence of the regular expression pattern regexp if + * regexp.global is false, or all occurrences if regexp.global is true. + * + * The match is performed as in String.prototype.match, including the + * update of regexp.lastIndex. Let m be the number of matched + * parenthesized subexpressions as specified in section 15.7.5.3. + * + * If replaceValue is a function, then for each matched substring, call + * the function with the following m + 3 arguments. Argument 1 is the + * substring that matched. The next m arguments are all of the matched + * subexpressions. Argument m + 2 is the length of the left context, and + * argument m + 3 is string. + * + * The result is a string value derived from the original input by + * replacing each matched substring with the corresponding return value + * of the function call, converted to a string if need be. + * + * Otherwise, let newstring denote the result of converting replaceValue + * to a string. The result is a string value derived from the original + * input string by replacing each matched substring with a string derived + * from newstring by replacing characters in newstring by replacement text + * as specified in the following table: + * + * $& The matched substring. + * $ The portion of string that precedes the matched substring. + * $ The portion of string that follows the matched substring. + * $+ The substring matched by the last parenthesized subexpressions in + * the regular expression. + * $n The corresponding matched parenthesized subexpression n, where n + * is a single digit 0-9. If there are fewer than n subexpressions, $n + * is left unchanged. + * + * Note that the replace function is intentionally generic; it does not + * require that its this value be a string object. Therefore, it can be + * transferred to other kinds of objects for use as a method. + */ + + + testcases[0] = { expect:"PASSED", actual:"PASSED", description:"NO TESTS EXIST" }; + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/String/split-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/split-001.js new file mode 100644 index 00000000000..b2d7c9c6bdd --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/split-001.js @@ -0,0 +1,106 @@ +/** + * File Name: String/split-001.js + * ECMA Section: 15.6.4.9 + * Description: Based on ECMA 2 Draft 7 February 1999 + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + +/* + * Since regular expressions have been part of JavaScript since 1.2, there + * are already tests for regular expressions in the js1_2/regexp folder. + * + * These new tests try to supplement the existing tests, and verify that + * our implementation of RegExp conforms to the ECMA specification, but + * does not try to be as exhaustive as in previous tests. + * + * The [,limit] argument to String.split is new, and not covered in any + * existing tests. + * + * String.split cases are covered in ecma/String/15.5.4.8-*.js. + * String.split where separator is a RegExp are in + * js1_2/regexp/string_split.js + * + */ + + var SECTION = "ecma_2/String/split-001.js"; + var VERSION = "ECMA_2"; + var TITLE = "String.prototype.split( regexp, [,limit] )"; + + startTest(); + + // the separator is not supplied + // separator is undefined + // separator is an empty string + + AddSplitCases( "splitme", "", "''", ["s", "p", "l", "i", "t", "m", "e"] ); + AddSplitCases( "splitme", new RegExp(), "new RegExp()", ["s", "p", "l", "i", "t", "m", "e"] ); + + // separartor is a regexp + // separator regexp value global setting is set + // string is an empty string + // if separator is an empty string, split each by character + + // this is not a String object + + // limit is not a number + // limit is undefined + // limit is larger than 2^32-1 + // limit is a negative number + + test(); + +function AddSplitCases( string, separator, str_sep, split_array ) { + + // verify that the result of split is an object of type Array + AddTestCase( + "( " + string + " ).split(" + str_sep +").constructor == Array", + true, + string.split(separator).constructor == Array ); + + // check the number of items in the array + AddTestCase( + "( " + string + " ).split(" + str_sep +").length", + split_array.length, + string.split(separator).length ); + + // check the value of each array item + var limit = (split_array.length > string.split(separator).length ) + ? split_array.length : string.split(separator).length; + + for ( var matches = 0; matches < split_array.length; matches++ ) { + AddTestCase( + "( " + string + " ).split(" + str_sep +")[" + matches +"]", + split_array[matches], + string.split( separator )[matches] ); + } +} + +function AddLimitedSplitCases( + string, separator, str_sep, limit, str_limit, split_array ) { + + // verify that the result of split is an object of type Array + + AddTestCase( + "( " + string + " ).split(" + str_sep +", " + str_limit + + " ).constructor == Array", + true, + string.split(separator, limit).constructor == Array ); + + // check the length of the array + + AddTestCase( + "( " + string + " ).split(" + str_sep +", " + str_limit + " ).length", + length, + string.split(separator).length ); + + // check the value of each array item + + for ( var matches = 0; matches < split_array.length; matches++ ) { + AddTestCase( + "( " + string + " ).split(" + str_sep +", " + str_limit + " )[" + matches +"]", + split_array[matches], + string.split( separator )[matches] ); + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/String/split-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/split-002.js new file mode 100644 index 00000000000..1007a3143cc --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/split-002.js @@ -0,0 +1,264 @@ +/** + * File Name: String/split-002.js + * ECMA Section: 15.6.4.9 + * Description: Based on ECMA 2 Draft 7 February 1999 + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + +/* + * Since regular expressions have been part of JavaScript since 1.2, there + * are already tests for regular expressions in the js1_2/regexp folder. + * + * These new tests try to supplement the existing tests, and verify that + * our implementation of RegExp conforms to the ECMA specification, but + * does not try to be as exhaustive as in previous tests. + * + * The [,limit] argument to String.split is new, and not covered in any + * existing tests. + * + * String.split cases are covered in ecma/String/15.5.4.8-*.js. + * String.split where separator is a RegExp are in + * js1_2/regexp/string_split.js + * + */ + + var SECTION = "ecma_2/String/split-002.js"; + var VERSION = "ECMA_2"; + var TITLE = "String.prototype.split( regexp, [,limit] )"; + + startTest(); + + // the separator is not supplied + // separator is undefined + // separator is an empty string + +// AddSplitCases( "splitme", "", "''", ["s", "p", "l", "i", "t", "m", "e"] ); +// AddSplitCases( "splitme", new RegExp(), "new RegExp()", ["s", "p", "l", "i", "t", "m", "e"] ); + + // separator is an empty regexp + // separator is not supplied + + CompareSplit( "hello", "ll" ); + + CompareSplit( "hello", "l" ); + CompareSplit( "hello", "x" ); + CompareSplit( "hello", "h" ); + CompareSplit( "hello", "o" ); + CompareSplit( "hello", "hello" ); + CompareSplit( "hello", undefined ); + + CompareSplit( "hello", ""); + CompareSplit( "hello", "hellothere" ); + + CompareSplit( new String("hello" ) ); + + + Number.prototype.split = String.prototype.split; + + CompareSplit( new Number(100111122133144155), 1 ); + CompareSplitWithLimit(new Number(100111122133144155), 1, 1 ); + + CompareSplitWithLimit(new Number(100111122133144155), 1, 2 ); + CompareSplitWithLimit(new Number(100111122133144155), 1, 0 ); + CompareSplitWithLimit(new Number(100111122133144155), 1, 100 ); + CompareSplitWithLimit(new Number(100111122133144155), 1, void 0 ); + CompareSplitWithLimit(new Number(100111122133144155), 1, Math.pow(2,32)-1 ); + CompareSplitWithLimit(new Number(100111122133144155), 1, "boo" ); + CompareSplitWithLimit(new Number(100111122133144155), 1, -(Math.pow(2,32)-1) ); + CompareSplitWithLimit( "hello", "l", NaN ); + CompareSplitWithLimit( "hello", "l", 0 ); + CompareSplitWithLimit( "hello", "l", 1 ); + CompareSplitWithLimit( "hello", "l", 2 ); + CompareSplitWithLimit( "hello", "l", 3 ); + CompareSplitWithLimit( "hello", "l", 4 ); + + +/* + CompareSplitWithLimit( "hello", "ll", 0 ); + CompareSplitWithLimit( "hello", "ll", 1 ); + CompareSplitWithLimit( "hello", "ll", 2 ); + CompareSplit( "", " " ); + CompareSplit( "" ); +*/ + + // separartor is a regexp + // separator regexp value global setting is set + // string is an empty string + // if separator is an empty string, split each by character + + // this is not a String object + + // limit is not a number + // limit is undefined + // limit is larger than 2^32-1 + // limit is a negative number + + test(); + +function CompareSplit( string, separator ) { + split_1 = string.split( separator ); + split_2 = string_split( string, separator ); + + AddTestCase( + "( " + string +".split(" + separator + ") ).length" , + split_2.length, + split_1.length ); + + var limit = split_1.length > split_2.length ? + split_1.length : split_2.length; + + for ( var split_item = 0; split_item < limit; split_item++ ) { + AddTestCase( + string + ".split(" + separator + ")["+split_item+"]", + split_2[split_item], + split_1[split_item] ); + } +} + +function CompareSplitWithLimit( string, separator, splitlimit ) { + split_1 = string.split( separator, splitlimit ); + split_2 = string_split( string, separator, splitlimit ); + + AddTestCase( + "( " + string +".split(" + separator + ", " + splitlimit+") ).length" , + split_2.length, + split_1.length ); + + var limit = split_1.length > split_2.length ? + split_1.length : split_2.length; + + for ( var split_item = 0; split_item < limit; split_item++ ) { + AddTestCase( + string + ".split(" + separator + ", " + splitlimit+")["+split_item+"]", + split_2[split_item], + split_1[split_item] ); + } +} + +function string_split ( __this, separator, limit ) { + var S = String(__this ); // 1 + + var A = new Array(); // 2 + + if ( limit == undefined ) { // 3 + lim = Math.pow(2, 31 ) -1; + } else { + lim = ToUint32( limit ); + } + + var s = S.length; // 4 + var p = 0; // 5 + + if ( separator == undefined ) { // 8 + A[0] = S; + return A; + } + + if ( separator.constructor == RegExp ) // 6 + R = separator; + else + R = separator.toString(); + + if (lim == 0) return A; // 7 + + if ( separator == undefined ) { // 8 + A[0] = S; + return A; + } + + if (s == 0) { // 9 + z = SplitMatch(R, S, 0); + if (z != false) return A; + A[0] = S; + return A; + } + + var q = p; // 10 +loop: + while (true ) { + + if ( q == s ) break; // 11 + + z = SplitMatch(R, S, q); // 12 + +//print("Returned ", z); + + if (z != false) { // 13 + e = z.endIndex; // 14 + cap = z.captures; // 14 + if (e != p) { // 15 +//print("S = ", S, ", p = ", p, ", q = ", q); + T = S.slice(p, q); // 16 +//print("T = ", T); + A[A.length] = T; // 17 + if (A.length == lim) return A; // 18 + p = e; // 19 + i = 0; // 20 + while (true) { // 25 + if (i == cap.length) { // 21 + q = p; // 10 + continue loop; + } + i = i + 1; // 22 + A[A.length] = cap[i] // 23 + if (A.length == lim) return A; // 24 + } + } + } + + q = q + 1; // 26 + } + + T = S.slice(p, q); + A[A.length] = T; + return A; +} + +function SplitMatch(R, S, q) +{ + if (R.constructor == RegExp) { // 1 + var reResult = R.match(S, q); // 8 + if (reResult == undefined) + return false; + else { + a = new Array(reResult.length - 1); + for (var i = 1; i < reResult.length; i++) + a[a.length] = reResult[i]; + return { endIndex : reResult.index + reResult[0].length, captures : cap }; + } + } + else { + var r = R.length; // 2 + s = S.length; // 3 + if ((q + r) > s) return false; // 4 + for (var i = 0; i < r; i++) { +//print("S.charAt(", q + i, ") = ", S.charAt(q + i), ", R.charAt(", i, ") = ", R.charAt(i)); + if (S.charAt(q + i) != R.charAt(i)) // 5 + return false; + } + cap = new Array(); // 6 + return { endIndex : q + r, captures : cap }; // 7 + } +} + +function ToUint32( n ) { + n = Number( n ); + var sign = ( n < 0 ) ? -1 : 1; + + if ( Math.abs( n ) == 0 + || Math.abs( n ) == Number.POSITIVE_INFINITY + || n != n) { + return 0; + } + n = sign * Math.floor( Math.abs(n) ) + + n = n % Math.pow(2,32); + + if ( n < 0 ){ + n += Math.pow(2,32); + } + + return ( n ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/String/split-003.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/split-003.js new file mode 100644 index 00000000000..e2f2b924bc4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/String/split-003.js @@ -0,0 +1,117 @@ +/** + * File Name: String/split-003.js + * ECMA Section: 15.6.4.9 + * Description: Based on ECMA 2 Draft 7 February 1999 + * + * Author: christine@netscape.com + * Date: 19 February 1999 + */ + +/* + * Since regular expressions have been part of JavaScript since 1.2, there + * are already tests for regular expressions in the js1_2/regexp folder. + * + * These new tests try to supplement the existing tests, and verify that + * our implementation of RegExp conforms to the ECMA specification, but + * does not try to be as exhaustive as in previous tests. + * + * The [,limit] argument to String.split is new, and not covered in any + * existing tests. + * + * String.split cases are covered in ecma/String/15.5.4.8-*.js. + * String.split where separator is a RegExp are in + * js1_2/regexp/string_split.js + * + */ + + var SECTION = "ecma_2/String/split-003.js"; + var VERSION = "ECMA_2"; + var TITLE = "String.prototype.split( regexp, [,limit] )"; + + startTest(); + + // separartor is a regexp + // separator regexp value global setting is set + // string is an empty string + // if separator is an empty string, split each by character + + + AddSplitCases( "hello", new RegExp, "new RegExp", ["h","e","l","l","o"] ); + + AddSplitCases( "hello", /l/, "/l/", ["he","","o"] ); + AddLimitedSplitCases( "hello", /l/, "/l/", 0, [] ); + AddLimitedSplitCases( "hello", /l/, "/l/", 1, ["he"] ); + AddLimitedSplitCases( "hello", /l/, "/l/", 2, ["he",""] ); + AddLimitedSplitCases( "hello", /l/, "/l/", 3, ["he","","o"] ); + AddLimitedSplitCases( "hello", /l/, "/l/", 4, ["he","","o"] ); + AddLimitedSplitCases( "hello", /l/, "/l/", void 0, ["he","","o"] ); + AddLimitedSplitCases( "hello", /l/, "/l/", "hi", [] ); + AddLimitedSplitCases( "hello", /l/, "/l/", undefined, ["he","","o"] ); + + AddSplitCases( "hello", new RegExp, "new RegExp", ["h","e","l","l","o"] ); + AddLimitedSplitCases( "hello", new RegExp, "new RegExp", 0, [] ); + AddLimitedSplitCases( "hello", new RegExp, "new RegExp", 1, ["h"] ); + AddLimitedSplitCases( "hello", new RegExp, "new RegExp", 2, ["h","e"] ); + AddLimitedSplitCases( "hello", new RegExp, "new RegExp", 3, ["h","e","l"] ); + AddLimitedSplitCases( "hello", new RegExp, "new RegExp", 4, ["h","e","l","l"] ); + AddLimitedSplitCases( "hello", new RegExp, "new RegExp", void 0, ["h","e","l","l","o"] ); + AddLimitedSplitCases( "hello", new RegExp, "new RegExp", "hi", [] ); + AddLimitedSplitCases( "hello", new RegExp, "new RegExp", undefined, ["h","e","l","l","o"] ); + + test(); + +function AddSplitCases( string, separator, str_sep, split_array ) { + // verify that the result of split is an object of type Array + AddTestCase( + "( " + string + " ).split(" + str_sep +").constructor == Array", + true, + string.split(separator).constructor == Array ); + + // check the number of items in the array + AddTestCase( + "( " + string + " ).split(" + str_sep +").length", + split_array.length, + string.split(separator).length ); + + // check the value of each array item + var limit = (split_array.length > string.split(separator).length ) + ? split_array.length : string.split(separator).length; + + for ( var matches = 0; matches < split_array.length; matches++ ) { + AddTestCase( + "( " + string + " ).split(" + str_sep +")[" + matches +"]", + split_array[matches], + string.split( separator )[matches] ); + } +} + +function AddLimitedSplitCases( + string, separator, str_sep, limit, split_array ) { + + // verify that the result of split is an object of type Array + + AddTestCase( + "( " + string + " ).split(" + str_sep +", " + limit + + " ).constructor == Array", + true, + string.split(separator, limit).constructor == Array ); + + // check the length of the array + + AddTestCase( + "( " + string + " ).split(" + str_sep +", " + limit + " ).length", + split_array.length, + string.split(separator, limit).length ); + + // check the value of each array item + + var slimit = (split_array.length > string.split(separator).length ) + ? split_array.length : string.split(separator, limit).length; + + for ( var matches = 0; matches < slimit; matches++ ) { + AddTestCase( + "( " + string + " ).split(" + str_sep +", " + limit + " )[" + matches +"]", + split_array[matches], + string.split( separator, limit )[matches] ); + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/browser.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/browser.js new file mode 100644 index 00000000000..ccc1bb4361f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/browser.js @@ -0,0 +1,83 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): +*/ + +/* + * JavaScript test library shared functions file for running the tests + * in the browser. Overrides the shell's print function with document.write + * and make everything HTML pretty. + * + * To run the tests in the browser, use the mkhtml.pl script to generate + * html pages that include the shell.js, browser.js (this file), and the + * test js file in script tags. + * + * The source of the page that is generated should look something like this: + * + * + * + */ + +onerror = err; + +var GLOBAL = "[object Window]"; + +function startTest() { + writeHeaderToLog( SECTION + " "+ TITLE); + if ( BUGNUMBER ) { + writeLineToLog ("BUGNUMBER: " + BUGNUMBER ); + } + + testcases = new Array(); + tc = 0; +} + +function writeLineToLog( string ) { + document.write( string + "
\n"); +} +function writeHeaderToLog( string ) { + document.write( "

" + string + "

" ); +} +function stopTest() { + var gc; + if ( gc != undefined ) { + gc(); + } + document.write( "
" ); +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = ""+ string ; + s += "" ; + s += ( passed ) ? "  " + PASSED + : " " + FAILED + expect + ""; + writeLineToLog( s + "" ); + return passed; +} +function err( msg, page, line ) { + writeLineToLog( "Test failed on line " + line + " with the message: " + msg ); + + testcases[tc].actual = "error"; + testcases[tc].reason = msg; + writeTestCaseResult( testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual + + ": " + testcases[tc].reason ); + stopTest(); + return true; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/instanceof/instanceof-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/instanceof/instanceof-001.js new file mode 100644 index 00000000000..897c2e31293 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/instanceof/instanceof-001.js @@ -0,0 +1,31 @@ +/** + File Name: instanceof-1.js + ECMA Section: + Description: instanceof operator + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = ""; + var VERSION = "ECMA_2"; + var TITLE = "instanceof operator"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var b = new Boolean(); + + testcases[tc++] = new TestCase( SECTION, + "var b = new Boolean(); b instanceof Boolean", + true, + b instanceof Boolean ); + + testcases[tc++] = new TestCase( SECTION, + "b instanceof Object", + true, + b instanceof Object ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/instanceof/instanceof-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/instanceof/instanceof-002.js new file mode 100644 index 00000000000..d07292dd4fc --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/instanceof/instanceof-002.js @@ -0,0 +1,61 @@ +/** + File Name: + ECMA Section: + Description: Call Objects + + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = ""; + var VERSION = "ECMA_2"; + var TITLE = "The Call Constructor"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var b = new Boolean(); + + testcases[tc++] = new TestCase( SECTION, + "var b = new Boolean(); b instanceof Boolean", + true, + b instanceof Boolean ); + + testcases[tc++] = new TestCase( SECTION, + "b instanceof Object", + true, + b instanceof Object ); + + testcases[tc++] = new TestCase( SECTION, + "b instanceof Array", + false, + b instanceof Array ); + + testcases[tc++] = new TestCase( SECTION, + "true instanceof Boolean", + false, + true instanceof Boolean ); + + testcases[tc++] = new TestCase( SECTION, + "Boolean instanceof Object", + true, + Boolean instanceof Object ); + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/instanceof/instanceof-003.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/instanceof/instanceof-003.js new file mode 100644 index 00000000000..c8f84badc81 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/instanceof/instanceof-003.js @@ -0,0 +1,57 @@ +/** + File Name: instanceof-003.js + ECMA Section: + Description: http://bugzilla.mozilla.org/show_bug.cgi?id=7635 + +js> function Foo() {} +js> theproto = {}; +[object Object] +js> Foo.prototype = theproto +[object Object] +js> theproto instanceof Foo +true + +I think this should be 'false' + + + Author: christine@netscape.com + Date: 12 november 1997 + + +The test case described above is correct, however the second test case in this file is not, +'o instanceof o' should thow an exception. According to ECMA-262: + + 8.6.2 Internal Properties and Methods: + "... only Function objects implement [[HasInstance]]" + 11.8.6 The instanceof operator: + "6.If Result(4) does not have a [[HasInstance]] method, throw a TypeError exception." + +{} does not implement [[HasInstance]] (since it is not a function), so passing it as the +constructor to be tested to instanceof should result in a TypeError being thrown. + +*/ + var SECTION = "instanceof-003"; + var VERSION = "ECMA_2"; + var TITLE = "instanceof operator"; + var BUGNUMBER ="http://bugzilla.mozilla.org/show_bug.cgi?id=7635"; + + startTest(); + + function Foo() {}; + theproto = {}; + Foo.prototype = theproto; + + AddTestCase( + "function Foo() = {}; theproto = {}; Foo.prototype = theproto; " + + "theproto instanceof Foo", + false, + theproto instanceof Foo ); + + + AddTestCase( + "o = {}; o instanceof o", + "EXCEPTION", + (function(){ try { var o = {}; o instanceof o; return "no exception"; } catch (e) { return "EXCEPTION"; } } )() ); + + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/instanceof/regress-7635.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/instanceof/regress-7635.js new file mode 100644 index 00000000000..cab6ed90d28 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/instanceof/regress-7635.js @@ -0,0 +1,70 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): +*/ + +/** + * File Name: regress-7635.js + * Reference: http://bugzilla.mozilla.org/show_bug.cgi?id=7635 + * Description: instanceof tweaks + * Author: + */ + +var SECTION = "instanceof"; // provide a document reference (ie, ECMA section) +var VERSION = "ECMA_2"; // Version of JavaScript or ECMA +var TITLE = "Regression test for Bugzilla #7635"; // Provide ECMA section title or a description +var BUGNUMBER = "http://bugzilla.mozilla.org/show_bug.cgi?id=7635"; // Provide URL to bugsplat or bugzilla report + +startTest(); // leave this alone + +/* + * Calls to AddTestCase here. AddTestCase is a function that is defined + * in shell.js and takes three arguments: + * - a string representation of what is being tested + * - the expected result + * - the actual result + * + * For example, a test might look like this: + * + * var zip = /[\d]{5}$/; + * + * AddTestCase( + * "zip = /[\d]{5}$/; \"PO Box 12345 Boston, MA 02134\".match(zip)", // description of the test + * "02134", // expected result + * "PO Box 12345 Boston, MA 02134".match(zip) ); // actual result + * + */ + +function Foo() {} +theproto = {}; +Foo.prototype = theproto +theproto instanceof Foo + + +AddTestCase( "function Foo() {}; theproto = {}; Foo.prototype = theproto; theproto instanceof Foo", + false, + theproto instanceof Foo ); + +var f = new Function(); + +AddTestCase( "var f = new Function(); f instanceof f", false, f instanceof f ); + + +test(); // leave this alone. this executes the test cases and + // displays results. diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/jsref.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/jsref.js new file mode 100644 index 00000000000..7dc729d07ee --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/jsref.js @@ -0,0 +1,629 @@ +var completed = false; +var testcases; +var tc = 0; + +SECTION = ""; +VERSION = ""; +BUGNUMBER = ""; +EXCLUDE = ""; +BUGNUMBER = ""; + + +TZ_DIFF = -8; + +var TT = ""; +var TT_ = ""; +var BR = ""; +var NBSP = " "; +var CR = "\n"; +var FONT = ""; +var FONT_ = ""; +var FONT_RED = ""; +var FONT_GREEN = ""; +var B = ""; +var B_ = "" +var H2 = ""; +var H2_ = ""; +var HR = ""; +var DEBUG = false; + + +var PASSED = " PASSED!" +var FAILED = " FAILED! expected: "; +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function TestCase( n, d, e, a ) { + this.name = n; + this.description = d; + this.expect = e; + this.actual = a; + this.passed = true; + this.reason = ""; + this.bugnumber = BUGNUMBER; + + this.passed = getTestCaseResult( this.expect, this.actual ); + if ( DEBUG ) { + writeLineToLog( "added " + this.description ); + } +} +function startTest() { + // JavaScript 1.3 is supposed to be compliant ecma version 1.0 + if ( VERSION == "ECMA_1" ) { + version ( "130" ); + } + if ( VERSION == "JS_13" ) { + version ( "130" ); + } + if ( VERSION == "JS_12" ) { + version ( "120" ); + } + if ( VERSION == "JS_11" ) { + version ( "110" ); + } + // for ecma version 2.0, we will leave the javascript version to + // the default ( for now ). + writeHeaderToLog( SECTION + " "+ TITLE); + testcases = new Array(); + tc = 0; + +} +function getTestCaseResult( expect, actual ) { + // because ( NaN == NaN ) always returns false, need to do + // a special compare to see if we got the right result. + if ( actual != actual ) { + if ( typeof actual == "object" ) { + actual = "NaN object"; + } else { + actual = "NaN number"; + } + } + if ( expect != expect ) { + if ( typeof expect == "object" ) { + expect = "NaN object"; + } else { + expect = "NaN number"; + } + } + + var passed = ( expect == actual ) ? true : false; + + // if both objects are numbers + // need to replace w/ IEEE standard for rounding + if ( !passed + && typeof(actual) == "number" + && typeof(expect) == "number" + ) { + if ( Math.abs(actual-expect) < 0.0000001 ) { + passed = true; + } + } + + // verify type is the same + if ( typeof(expect) != typeof(actual) ) { + passed = false; + } + + return passed; +} +function writeTestCaseResult( expect, actual, string ) { + var passed = getTestCaseResult( expect, actual ); + writeFormattedResult( expect, actual, string, passed ); + return passed; +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = TT + string ; + + for ( k = 0; + k < (60 - string.length >= 0 ? 60 - string.length : 5) ; + k++ ) { + } + + s += B ; + s += ( passed ) ? FONT_GREEN + NBSP + PASSED : FONT_RED + NBSP + FAILED + expect + TT_ ; + + writeLineToLog( s + FONT_ + B_ + TT_ ); + + return passed; +} + +function writeLineToLog( string ) { + print( string + BR + CR ); +} +function writeHeaderToLog( string ) { + print( H2 + string + H2_ ); +} +function stopTest() +{ + var sizeTag = "<#TEST CASES SIZE>"; + var doneTag = "<#TEST CASES DONE>"; + var beginTag = "<#TEST CASE "; + var endTag = ">"; + + print(sizeTag); + print(testcases.length); + for (tc = 0; tc < testcases.length; tc++) + { + print(beginTag + 'PASSED' + endTag); + print(testcases[tc].passed); + print(beginTag + 'NAME' + endTag); + print(testcases[tc].name); + print(beginTag + 'EXPECTED' + endTag); + print(testcases[tc].expect); + print(beginTag + 'ACTUAL' + endTag); + print(testcases[tc].actual); + print(beginTag + 'DESCRIPTION' + endTag); + print(testcases[tc].description); + print(beginTag + 'REASON' + endTag); + print(( testcases[tc].passed ) ? "" : "wrong value "); + print(beginTag + 'BUGNUMBER' + endTag); + print( BUGNUMBER ); + } + print(doneTag); + print( HR ); + gc(); +} +function getFailedCases() { + for ( var i = 0; i < testcases.length; i++ ) { + if ( ! testcases[i].passed ) { + print( testcases[i].description +" = " +testcases[i].actual +" expected: "+ testcases[i].expect ); + } + } +} +function err( msg, page, line ) { + testcases[tc].actual = "error"; + testcases[tc].reason = msg; + writeTestCaseResult( testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual + + ": " + testcases[tc].reason ); + stopTest(); + return true; +} + +/** + * Type Conversion functions used by Type Conversion + * + */ + + + + /* + * Date functions used by tests in Date suite + * + */ +var msPerDay = 86400000; +var HoursPerDay = 24; +var MinutesPerHour = 60; +var SecondsPerMinute = 60; +var msPerSecond = 1000; +var msPerMinute = 60000; // msPerSecond * SecondsPerMinute +var msPerHour = 3600000; // msPerMinute * MinutesPerHour + +var TIME_1970 = 0; +var TIME_2000 = 946684800000; +var TIME_1900 = -2208988800000; + +function Day( t ) { + return ( Math.floor(t/msPerDay ) ); +} +function DaysInYear( y ) { + if ( y % 4 != 0 ) { + return 365; + } + if ( (y % 4 == 0) && (y % 100 != 0) ) { + return 366; + } + if ( (y % 100 == 0) && (y % 400 != 0) ) { + return 365; + } + if ( (y % 400 == 0) ){ + return 366; + } else { + return "ERROR: DaysInYear(" + y + ") case not covered"; + } +} +function TimeInYear( y ) { + return ( DaysInYear(y) * msPerDay ); +} +function DayNumber( t ) { + return ( Math.floor( t / msPerDay ) ); +} +function TimeWithinDay( t ) { + if ( t < 0 ) { + return ( (t % msPerDay) + msPerDay ); + } else { + return ( t % msPerDay ); + } +} +function YearNumber( t ) { +} +function TimeFromYear( y ) { + return ( msPerDay * DayFromYear(y) ); +} +function DayFromYear( y ) { + return ( 365*(y-1970) + + Math.floor((y-1969)/4) - + Math.floor((y-1901)/100) + + Math.floor((y-1601)/400) ); +} +function InLeapYear( t ) { + if ( DaysInYear(YearFromTime(t)) == 365 ) { + return 0; + } + if ( DaysInYear(YearFromTime(t)) == 366 ) { + return 1; + } else { + return "ERROR: InLeapYear("+t+") case not covered"; + } +} +function YearFromTime( t ) { + t = Number( t ); + var sign = ( t < 0 ) ? -1 : 1; + var year = ( sign < 0 ) ? 1969 : 1970; + for ( var timeToTimeZero = t; ; ) { + // subtract the current year's time from the time that's left. + timeToTimeZero -= sign * TimeInYear(year) + + // if there's less than the current year's worth of time left, then break. + if ( sign < 0 ) { + if ( sign * timeToTimeZero <= 0 ) { + break; + } else { + year += sign; + } + } else { + if ( sign * timeToTimeZero < 0 ) { + break; + } else { + year += sign; + } + } + } + return ( year ); +} +function MonthFromTime( t ) { + // i know i could use switch but i'd rather not until it's part of ECMA + var day = DayWithinYear( t ); + var leap = InLeapYear(t); + + if ( (0 <= day) && (day < 31) ) { + return 0; + } + if ( (31 <= day) && (day < (59+leap)) ) { + return 1; + } + if ( ((59+leap) <= day) && (day < (90+leap)) ) { + return 2; + } + if ( ((90+leap) <= day) && (day < (120+leap)) ) { + return 3; + } + if ( ((120+leap) <= day) && (day < (151+leap)) ) { + return 4; + } + if ( ((151+leap) <= day) && (day < (181+leap)) ) { + return 5; + } + if ( ((181+leap) <= day) && (day < (212+leap)) ) { + return 6; + } + if ( ((212+leap) <= day) && (day < (243+leap)) ) { + return 7; + } + if ( ((243+leap) <= day) && (day < (273+leap)) ) { + return 8; + } + if ( ((273+leap) <= day) && (day < (304+leap)) ) { + return 9; + } + if ( ((304+leap) <= day) && (day < (334+leap)) ) { + return 10; + } + if ( ((334+leap) <= day) && (day < (365+leap)) ) { + return 11; + } else { + return "ERROR: MonthFromTime("+t+") not known"; + } +} +function DayWithinYear( t ) { + return( Day(t) - DayFromYear(YearFromTime(t))); +} +function DateFromTime( t ) { + var day = DayWithinYear(t); + var month = MonthFromTime(t); + + if ( month == 0 ) { + return ( day + 1 ); + } + if ( month == 1 ) { + return ( day - 30 ); + } + if ( month == 2 ) { + return ( day - 58 - InLeapYear(t) ); + } + if ( month == 3 ) { + return ( day - 89 - InLeapYear(t)); + } + if ( month == 4 ) { + return ( day - 119 - InLeapYear(t)); + } + if ( month == 5 ) { + return ( day - 150- InLeapYear(t)); + } + if ( month == 6 ) { + return ( day - 180- InLeapYear(t)); + } + if ( month == 7 ) { + return ( day - 211- InLeapYear(t)); + } + if ( month == 8 ) { + return ( day - 242- InLeapYear(t)); + } + if ( month == 9 ) { + return ( day - 272- InLeapYear(t)); + } + if ( month == 10 ) { + return ( day - 303- InLeapYear(t)); + } + if ( month == 11 ) { + return ( day - 333- InLeapYear(t)); + } + + return ("ERROR: DateFromTime("+t+") not known" ); +} +function WeekDay( t ) { + var weekday = (Day(t)+4) % 7; + return( weekday < 0 ? 7 + weekday : weekday ); +} + +// missing daylight savins time adjustment + +function HourFromTime( t ) { + var h = Math.floor( t / msPerHour ) % HoursPerDay; + return ( (h<0) ? HoursPerDay + h : h ); +} +function MinFromTime( t ) { + var min = Math.floor( t / msPerMinute ) % MinutesPerHour; + return( ( min < 0 ) ? MinutesPerHour + min : min ); +} +function SecFromTime( t ) { + var sec = Math.floor( t / msPerSecond ) % SecondsPerMinute; + return ( (sec < 0 ) ? SecondsPerMinute + sec : sec ); +} +function msFromTime( t ) { + var ms = t % msPerSecond; + return ( (ms < 0 ) ? msPerSecond + ms : ms ); +} +function LocalTZA() { + return ( TZ_DIFF * msPerHour ); +} +function UTC( t ) { + return ( t - LocalTZA() - DaylightSavingTA(t - LocalTZA()) ); +} +function DaylightSavingTA( t ) { + t = t - LocalTZA(); + + var dst_start = GetSecondSundayInMarch(t) + 2*msPerHour; + var dst_end = GetFirstSundayInNovember(t)+ 2*msPerHour; + + if ( t >= dst_start && t < dst_end ) { + return msPerHour; + } else { + return 0; + } + + // Daylight Savings Time starts on the first Sunday in April at 2:00AM in + // PST. Other time zones will need to override this function. + + print( new Date( UTC(dst_start + LocalTZA())) ); + + return UTC(dst_start + LocalTZA()); +} + +function GetFirstSundayInApril( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + var april = TimeFromYear(year) + TimeInMonth(0, leap) + TimeInMonth(1,leap) + + TimeInMonth(2,leap); + + for ( var first_sunday = april; WeekDay(first_sunday) > 0; + first_sunday += msPerDay ) + { + ; + } + + return first_sunday; +} +function GetLastSundayInOctober( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + for ( var oct = TimeFromYear(year), m = 0; m < 9; m++ ) { + oct += TimeInMonth(m, leap); + } + for ( var last_sunday = oct + 30*msPerDay; WeekDay(last_sunday) > 0; + last_sunday -= msPerDay ) + { + ; + } + return last_sunday; +} + +// Added these two functions because DST rules changed for the US. +function GetSecondSundayInMarch( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + var march = TimeFromYear(year) + TimeInMonth(0, leap) + TimeInMonth(1,leap); + + var sundayCount = 0; + var flag = true; + for ( var second_sunday = march; flag; second_sunday += msPerDay ) + { + if (WeekDay(second_sunday) == 0) { + if(++sundayCount == 2) + flag = false; + } + } + + return second_sunday; +} +function GetFirstSundayInNovember( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + for ( var nov = TimeFromYear(year), m = 0; m < 10; m++ ) { + nov += TimeInMonth(m, leap); + } + for ( var first_sunday = nov; WeekDay(first_sunday) > 0; + first_sunday += msPerDay ) + { + ; + } + return first_sunday; +} +function LocalTime( t ) { + return ( t + LocalTZA() + DaylightSavingTA(t) ); +} +function MakeTime( hour, min, sec, ms ) { + if ( isNaN( hour ) || isNaN( min ) || isNaN( sec ) || isNaN( ms ) ) { + return Number.NaN; + } + + hour = ToInteger(hour); + min = ToInteger( min); + sec = ToInteger( sec); + ms = ToInteger( ms ); + + return( (hour*msPerHour) + (min*msPerMinute) + + (sec*msPerSecond) + ms ); +} +function MakeDay( year, month, date ) { + if ( isNaN(year) || isNaN(month) || isNaN(date) ) { + return Number.NaN; + } + year = ToInteger(year); + month = ToInteger(month); + date = ToInteger(date ); + + var sign = ( year < 1970 ) ? -1 : 1; + var t = ( year < 1970 ) ? 1 : 0; + var y = ( year < 1970 ) ? 1969 : 1970; + + var result5 = year + Math.floor( month/12 ); + var result6 = month % 12; + + if ( year < 1970 ) { + for ( y = 1969; y >= year; y += sign ) { + t += sign * TimeInYear(y); + } + } else { + for ( y = 1970 ; y < year; y += sign ) { + t += sign * TimeInYear(y); + } + } + + var leap = InLeapYear( t ); + + for ( var m = 0; m < month; m++ ) { + t += TimeInMonth( m, leap ); + } + + if ( YearFromTime(t) != result5 ) { + return Number.NaN; + } + if ( MonthFromTime(t) != result6 ) { + return Number.NaN; + } + if ( DateFromTime(t) != 1 ) { + return Number.NaN; + } + + return ( (Day(t)) + date - 1 ); +} +function TimeInMonth( month, leap ) { + // september april june november + // jan 0 feb 1 mar 2 apr 3 may 4 june 5 jul 6 + // aug 7 sep 8 oct 9 nov 10 dec 11 + + if ( month == 3 || month == 5 || month == 8 || month == 10 ) { + return ( 30*msPerDay ); + } + + // all the rest + if ( month == 0 || month == 2 || month == 4 || month == 6 || + month == 7 || month == 9 || month == 11 ) { + return ( 31*msPerDay ); + } + + // save february + return ( (leap == 0) ? 28*msPerDay : 29*msPerDay ); +} +function MakeDate( day, time ) { + if ( day == Number.POSITIVE_INFINITY || + day == Number.NEGATIVE_INFINITY || + day == Number.NaN ) { + return Number.NaN; + } + if ( time == Number.POSITIVE_INFINITY || + time == Number.POSITIVE_INFINITY || + day == Number.NaN) { + return Number.NaN; + } + return ( day * msPerDay ) + time; +} +function TimeClip( t ) { + if ( isNaN( t ) ) { + return ( Number.NaN ); + } + if ( Math.abs( t ) > 8.64e15 ) { + return ( Number.NaN ); + } + + return ( ToInteger( t ) ); +} +function ToInteger( t ) { + t = Number( t ); + + if ( isNaN( t ) ){ + return ( Number.NaN ); + } + if ( t == 0 || t == -0 || + t == Number.POSITIVE_INFINITY || t == Number.NEGATIVE_INFINITY ) { + return 0; + } + + var sign = ( t < 0 ) ? -1 : 1; + + return ( sign * Math.floor( Math.abs( t ) ) ); +} +function Enumerate ( o ) { + var properties = new Array(); + for ( p in o ) { + properties[ properties.length ] = new Array( p, o[p] ); + } + return properties; +} +function AddTestCase( description, expect, actual ) { + testcases[tc++] = new TestCase( SECTION, description, expect, actual ); +} +function getFailedCases() { + for ( var i = 0; i < testcases.length; i++ ) { + if ( ! testcases[i].passed ) { + print( testcases[i].description +" = " +testcases[i].actual +" expected: "+ testcases[i].expect ); + } + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/shell.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/shell.js new file mode 100644 index 00000000000..eb700699ef0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/shell.js @@ -0,0 +1,216 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): +*/ + + +/* + * JavaScript shared functions file for running the tests in either + * stand-alone JavaScript engine. To run a test, first load this file, + * then load the test script. + */ + +var completed = false; +var testcases; +var tc = 0; + +SECTION = ""; +VERSION = ""; +BUGNUMBER=""; + +var TZ_DIFF = getTimeZoneDiff(); + +var DEBUG = false; + +var GLOBAL = "[object global]"; +var PASSED = " PASSED!" +var FAILED = " FAILED! expected: "; + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function TestCase( n, d, e, a ) { + this.name = n; + this.description = d; + this.expect = e; + this.actual = a; + this.passed = true; + this.reason = ""; + this.bugnumber = BUGNUMBER; + + this.passed = getTestCaseResult( this.expect, this.actual ); + if ( DEBUG ) { + writeLineToLog( "added " + this.description ); + } +} +function startTest() { + if ( version ) { + // JavaScript 1.3 is supposed to be compliant ecma version 1.0 + if ( VERSION == "ECMA_1" ) { + version ( 130 ); + } + if ( VERSION == "JS_13" ) { + version ( 130 ); + } + if ( VERSION == "JS_12" ) { + version ( 120 ); + } + if ( VERSION == "JS_11" ) { + version ( 110 ); + } + } + + + // for ecma version 2.0, we will leave the javascript version to + // the default ( for now ). + + writeHeaderToLog( SECTION + " "+ TITLE); + if ( BUGNUMBER ) { + writeLineToLog ("BUGNUMBER: " + BUGNUMBER ); + } + + testcases = new Array(); + tc = 0; +} + +function getTestCaseResult( expect, actual ) { + // because ( NaN == NaN ) always returns false, need to do + // a special compare to see if we got the right result. + if ( actual != actual ) { + if ( typeof actual == "object" ) { + actual = "NaN object"; + } else { + actual = "NaN number"; + } + } + if ( expect != expect ) { + if ( typeof expect == "object" ) { + expect = "NaN object"; + } else { + expect = "NaN number"; + } + } + + var passed = ( expect == actual ) ? true : false; + + // if both objects are numbers + // need to replace w/ IEEE standard for rounding + if ( !passed + && typeof(actual) == "number" + && typeof(expect) == "number" + ) { + if ( Math.abs(actual-expect) < 0.0000001 ) { + passed = true; + } + } + + // verify type is the same + if ( typeof(expect) != typeof(actual) ) { + passed = false; + } + + return passed; +} + +function writeTestCaseResult( expect, actual, string ) { + var passed = getTestCaseResult( expect, actual ); + writeFormattedResult( expect, actual, string, passed ); + return passed; +} + +function writeFormattedResult( expect, actual, string, passed ) { + var s = string ; + s += ( passed ) ? PASSED : FAILED + expect; + writeLineToLog( s); + return passed; +} + +function writeLineToLog( string ) { + print( string ); +} +function writeHeaderToLog( string ) { + print( string ); +} +function stopTest() { + var gc; + if ( gc != undefined ) { + gc(); + } +} +function getFailedCases() { + for ( var i = 0; i < testcases.length; i++ ) { + if ( ! testcases[i].passed ) { + print( testcases[i].description +" = " +testcases[i].actual +" expected: "+ testcases[i].expect ); + } + } +} +function err( msg, page, line ) { + writeLineToLog( page + " failed with error: " + msg + " on line " + line ); + testcases[tc].actual = "error"; + testcases[tc].reason = msg; + writeTestCaseResult( testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual + + ": " + testcases[tc].reason ); + stopTest(); + return true; +} + +function Enumerate ( o ) { + var properties = new Array(); + for ( p in o ) { + properties[ properties.length ] = new Array( p, o[p] ); + } + return properties; +} + +function getFailedCases() { + for ( var i = 0; i < testcases.length; i++ ) { + if ( ! testcases[i].passed ) { + writeLineToLog( testcases[i].description +" = " +testcases[i].actual + + " expected: "+ testcases[i].expect ); + } + } +} +function AddTestCase( description, expect, actual ) { + testcases[tc++] = new TestCase( SECTION, description, expect, actual ); +} + + +/* + * Originally, the test suite used a hard-coded value TZ_DIFF = -8. + * But that was only valid for testers in the Pacific Standard Time Zone! + * We calculate the proper number dynamically for any tester. We just + * have to be careful to use a date not subject to Daylight Savings Time... +*/ +function getTimeZoneDiff() +{ + return -((new Date(2000, 1, 1)).getTimezoneOffset())/60; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_2/template.js b/Source/JavaScriptCore/tests/mozilla/ecma_2/template.js new file mode 100644 index 00000000000..a30cb773ddb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_2/template.js @@ -0,0 +1,39 @@ +/* + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + */ + +/** + * File Name: template.js + * Reference: ** replace with bugzilla URL or document reference ** + * Description: ** replace with description of test ** + * Author: ** replace with your e-mail address ** + */ + + var SECTION = ""; // if ECMA test, provide section number + var VERSION = "ECMA_2"; // Version of JavaScript or ECMA + var TITLE = ""; // Provide ECMA section title or description + var BUGNUMBER = ""; // Provide URL to bugsplat or bugzilla report + + startTest(); // leave this alone + + + /* Calls to AddTestCase here */ + + test(); // leave this alone diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Array/15.4.4.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Array/15.4.4.3-1.js new file mode 100644 index 00000000000..7b5fdbd1197 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Array/15.4.4.3-1.js @@ -0,0 +1,66 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. +* All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* Date: 12 Mar 2001 +* +* +* SUMMARY: Testing Array.prototype.toLocaleString() +* See http://bugzilla.mozilla.org/show_bug.cgi?id=56883 +* See http://bugzilla.mozilla.org/show_bug.cgi?id=58031 +* +* By ECMA3 15.4.4.3, myArray.toLocaleString() means that toLocaleString() +* should be applied to each element of the array, and the results should be +* concatenated with an implementation-specific delimiter. For example: +* +* myArray[0].toLocaleString() + ',' + myArray[1].toLocaleString() + etc. +* +* In this testcase toLocaleString is a user-defined property of each array element; +* therefore it is the function that should be invoked. This function increments a +* global variable. Therefore the end value of this variable should be myArray.length. +*/ +//------------------------------------------------------------------------------------------------- +var bug = 56883; +var summary = 'Testing Array.prototype.toLocaleString() -'; +var actual = ''; +var expect = ''; +var n = 0; +var obj = {toLocaleString: function() {n++}}; +var myArray = [obj, obj, obj]; + + +myArray.toLocaleString(); +actual = n; +expect = 3; // (see explanation above) + + +//------------------------------------------------------------------------------------------------- +test(); +//------------------------------------------------------------------------------------------------- + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + reportCompare(expect, actual, summary); + + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Array/15.4.4.4-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Array/15.4.4.4-001.js new file mode 100644 index 00000000000..6d99159db7b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Array/15.4.4.4-001.js @@ -0,0 +1,148 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): george@vanous.com, igor@icesoft.no, pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 19 September 2002 +* SUMMARY: Testing Array.prototype.concat() +* See http://bugzilla.mozilla.org/show_bug.cgi?id=169795 +* +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 169795; +var summary = 'Testing Array.prototype.concat()'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; +var x; + + +status = inSection(1); +x = "Hello"; +actual = [].concat(x).toString(); +expect = x.toString(); +addThis(); + +status = inSection(2); +x = 999; +actual = [].concat(x).toString(); +expect = x.toString(); +addThis(); + +status = inSection(3); +x = /Hello/g; +actual = [].concat(x).toString(); +expect = x.toString(); +addThis(); + +status = inSection(4); +x = new Error("Hello"); +actual = [].concat(x).toString(); +expect = x.toString(); +addThis(); + +status = inSection(5); +x = function() {return "Hello";}; +actual = [].concat(x).toString(); +expect = x.toString(); +addThis(); + +status = inSection(6); +x = [function() {return "Hello";}]; +actual = [].concat(x).toString(); +expect = x.toString(); +addThis(); + +status = inSection(7); +x = [1,2,3].concat([4,5,6]); +actual = [].concat(x).toString(); +expect = x.toString(); +addThis(); + +status = inSection(8); +x = eval('this'); +actual = [].concat(x).toString(); +expect = x.toString(); +addThis(); + +/* + * The next two sections are by igor@icesoft.no; see + * http://bugzilla.mozilla.org/show_bug.cgi?id=169795#c3 + */ +status = inSection(9); +x={length:0}; +actual = [].concat(x).toString(); +expect = x.toString(); +addThis(); + +status = inSection(10); +x={length:2, 0:0, 1:1}; +actual = [].concat(x).toString(); +expect = x.toString(); +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc('test'); + printBugNumber(bug); + printStatus(summary); + + for (var i=0; i +* See http://bugzilla.mozilla.org/show_bug.cgi?id=101488 +* +* Without the "new" keyword, assigning arr.length = Number(n) worked. +* But with it, Rhino was giving an error "Inappropriate array length" +* and SpiderMonkey was exiting without giving any error or return value - +* +* Comments on the Rhino code by igor@icesoft.no: +* +* jsSet_length requires that the new length value should be an instance +* of Number. But according to Ecma 15.4.5.1, item 12-13, an error should +* be thrown only if ToUint32(length_value) != ToNumber(length_value) +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 101488; +var summary = 'Try assigning arr.length = new Number(n)'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; +var arr = []; + + +status = inSection(1); +arr = Array(); +tryThis('arr.length = new Number(1);'); +actual = arr.length; +expect = 1; +addThis(); + +status = inSection(2); +arr = Array(5); +tryThis('arr.length = new Number(1);'); +actual = arr.length; +expect = 1; +addThis(); + +status = inSection(3); +arr = Array(); +tryThis('arr.length = new Number(17);'); +actual = arr.length; +expect = 17; +addThis(); + +status = inSection(4); +arr = Array(5); +tryThis('arr.length = new Number(17);'); +actual = arr.length; +expect = 17; +addThis(); + + +/* + * Also try the above with the "new" keyword before Array(). + * Array() and new Array() should be equivalent, by ECMA 15.4.1.1 + */ +status = inSection(5); +arr = new Array(); +tryThis('arr.length = new Number(1);'); +actual = arr.length; +expect = 1; +addThis(); + +status = inSection(6); +arr = new Array(5); +tryThis('arr.length = new Number(1);'); +actual = arr.length; +expect = 1; +addThis(); + +arr = new Array(); +tryThis('arr.length = new Number(17);'); +actual = arr.length; +expect = 17; +addThis(); + +status = inSection(7); +arr = new Array(5); +tryThis('arr.length = new Number(17);'); +actual = arr.length; +expect = 17; +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function tryThis(s) +{ + try + { + eval(s); + } + catch(e) + { + // keep going + } +} + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i=0; i= dst_start && t < dst_end ) {return msPerHour;} + else {return 0;} + + // Daylight Savings Time starts on the first Sunday in April at 2:00AM in PST. + // Other time zones will need to override this function. + +print( new Date( UTC(dst_start + LocalTZA())) ); +return UTC(dst_start + LocalTZA()); +} + +function GetFirstSundayInApril( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + var april = TimeFromYear(year) + TimeInMonth(0, leap) + TimeInMonth(1,leap) + + TimeInMonth(2,leap); + + for ( var first_sunday = april; WeekDay(first_sunday) > 0; + first_sunday += msPerDay ) + { + ; + } + + return first_sunday; +} +function GetLastSundayInOctober( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + for ( var oct = TimeFromYear(year), m = 0; m < 9; m++ ) { + oct += TimeInMonth(m, leap); + } + for ( var last_sunday = oct + 30*msPerDay; WeekDay(last_sunday) > 0; + last_sunday -= msPerDay ) + { + ; + } + return last_sunday; +} + +// Added these two functions because DST rules changed for the US. +function GetSecondSundayInMarch( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + var march = TimeFromYear(year) + TimeInMonth(0, leap) + TimeInMonth(1,leap); + + var sundayCount = 0; + var flag = true; + for ( var second_sunday = march; flag; second_sunday += msPerDay ) + { + if (WeekDay(second_sunday) == 0) { + if(++sundayCount == 2) + flag = false; + } + } + + return second_sunday; +} +function GetFirstSundayInNovember( t ) { + var year = YearFromTime(t); + var leap = InLeapYear(t); + + for ( var nov = TimeFromYear(year), m = 0; m < 10; m++ ) { + nov += TimeInMonth(m, leap); + } + for ( var first_sunday = nov; WeekDay(first_sunday) > 0; + first_sunday += msPerDay ) + { + ; + } + return first_sunday; +} + + +function LocalTime( t ) +{ + return ( t + LocalTZA() + DaylightSavingTA(t) ); +} + + +function MakeTime( hour, min, sec, ms ) +{ + if ( isNaN(hour) || isNaN(min) || isNaN(sec) || isNaN(ms) ){return Number.NaN;} + + hour = ToInteger(hour); + min = ToInteger( min); + sec = ToInteger( sec); + ms = ToInteger( ms ); + + return( (hour*msPerHour) + (min*msPerMinute) + (sec*msPerSecond) + ms ); +} + + +function MakeDay( year, month, date ) +{ + if ( isNaN(year) || isNaN(month) || isNaN(date)) {return Number.NaN;} + + year = ToInteger(year); + month = ToInteger(month); + date = ToInteger(date ); + + var sign = ( year < 1970 ) ? -1 : 1; + var t = ( year < 1970 ) ? 1 : 0; + var y = ( year < 1970 ) ? 1969 : 1970; + + var result5 = year + Math.floor( month/12 ); + var result6= month%12; + + if ( year < 1970 ) + { + for ( y = 1969; y >= year; y += sign ) + { + t += sign * TimeInYear(y); + } + } + else + { + for ( y = 1970 ; y < year; y += sign ) + { + t += sign * TimeInYear(y); + } + } + + var leap = InLeapYear( t ); + + for ( var m = 0; m < month; m++) + { + t += TimeInMonth( m, leap ); + } + + if ( YearFromTime(t) != result5 ) {return Number.NaN;} + if ( MonthFromTime(t) != result6 ) {return Number.NaN;} + if ( DateFromTime(t) != 1 ){return Number.NaN;} + + return ( (Day(t)) + date - 1 ); +} + + +function TimeInMonth( month, leap ) +{ + // Jan 0 Feb 1 Mar 2 Apr 3 May 4 June 5 Jul 6 Aug 7 Sep 8 Oct 9 Nov 10 Dec11 + + // April June September November + if ( month == 3 || month == 5 || month == 8 || month == 10 ) {return ( 30*msPerDay );} + + // all the rest + if ( month == 0 || month == 2 || month == 4 || month == 6 || + month == 7 || month == 9 || month == 11 ) {return ( 31*msPerDay );} + + // save February + return ( (leap == 0) ? 28*msPerDay : 29*msPerDay ); +} + + +function MakeDate( day, time ) +{ + if (day == Number.POSITIVE_INFINITY || + day == Number.NEGATIVE_INFINITY || + day == Number.NaN ) + { + return Number.NaN; + } + + if ( time == Number.POSITIVE_INFINITY || + time == Number.POSITIVE_INFINITY || + day == Number.NaN) + { + return Number.NaN; + } + + return ( day * msPerDay ) + time; +} + + +function TimeClip( t ) +{ + if ( isNaN( t )) {return ( Number.NaN);} + if ( Math.abs( t ) > 8.64e15 ) {return ( Number.NaN);} + + return ( ToInteger( t ) ); +} + + +function ToInteger( t ) +{ + t = Number( t ); + + if ( isNaN( t )) {return ( Number.NaN);} + + if ( t == 0 || t == -0 || + t == Number.POSITIVE_INFINITY || + t == Number.NEGATIVE_INFINITY) + { + return 0; + } + + var sign = ( t < 0 ) ? -1 : 1; + + return ( sign * Math.floor( Math.abs( t ) ) ); +} + + +function Enumerate( o ) +{ + var p; + for ( p in o ) {print( p + ": " + o[p] );} +} + + +/* these functions are useful for running tests manually in Rhino */ + +function GetContext() +{ + return Packages.com.netscape.javascript.Context.getCurrentContext(); +} + + +function OptLevel( i ) +{ + i = Number(i); + var cx = GetContext(); + cx.setOptimizationLevel(i); +} + +/* end of Rhino functions */ + diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/15.11.1.1.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/15.11.1.1.js new file mode 100644 index 00000000000..3aab1371087 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/15.11.1.1.js @@ -0,0 +1,132 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): joerg.schaible@gmx.de +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 27 Nov 2002 +* SUMMARY: Ensuring normal function call of Error (ECMA-262 Ed.3 15.11.1.1). +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = ''; +var summary = 'Ensuring normal function call of Error (ECMA-262 Ed.3 15.11.1.1)'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; +var EMPTY_STRING = ''; +var EXPECTED_FORMAT = 0; + + +function otherScope(msg) +{ + return Error(msg); +} + + +status = inSection(1); +var err1 = Error('msg1'); +actual = examineThis(err1, 'msg1'); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(2); +var err2 = otherScope('msg2'); +actual = examineThis(err2, 'msg2'); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(3); +var err3 = otherScope(); +actual = examineThis(err3, EMPTY_STRING); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(4); +var err4 = eval("Error('msg4')"); +actual = examineThis(err4, 'msg4'); +expect = EXPECTED_FORMAT; +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +/* + * Searches err.toString() for err.name + ':' + err.message, + * with possible whitespace on each side of the colon sign. + * + * We allow for no colon in case err.message was not provided by the user. + * In such a case, SpiderMonkey and Rhino currently set err.message = '', + * as allowed for by ECMA 15.11.4.3. This makes |pattern| work in this case. + * + * If this is ever changed to a non-empty string, e.g. 'undefined', + * you may have to modify |pattern| to take that into account - + * + */ +function examineThis(err, msg) +{ + var pattern = err.name + '\\s*:?\\s*' + msg; + return err.toString().search(RegExp(pattern)); +} + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i = 0; i < UBound; i++) + { + reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]); + } + + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/15.11.4.4-1.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/15.11.4.4-1.js new file mode 100644 index 00000000000..ca05e7e1ca1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/15.11.4.4-1.js @@ -0,0 +1,169 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2001 +* the Initial Developer. All Rights Reserved. +* +* Contributors: d-russo@ti.com, pschwartau@netscape.com, joerg.schaible@gmx.de +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 22 Jan 2002 +* SUMMARY: Testing Error.prototype.toString() +* +* Revised: 25 Nov 2002 +* See http://bugzilla.mozilla.org/show_bug.cgi?id=181909 +* +* Note that ECMA-262 3rd Edition Final, Section 15.11.4.4 states that +* Error.prototype.toString() returns an implementation-dependent string. +* Therefore any testcase on this property is somewhat arbitrary. +* +* However, d-russo@ti.com pointed out that Rhino was returning this: +* +* js> err = new Error() +* undefined: undefined +* +* js> err = new Error("msg") +* undefined: msg +* +* +* We expect Rhino to return what SpiderMonkey currently does: +* +* js> err = new Error() +* Error +* +* js> err = new Error("msg") +* Error: msg +* +* +* i.e. we expect err.toString() === err.name if err.message is not defined; +* otherwise, we expect err.toString() === err.name + ': ' + err.message. +* +* See also ECMA 15.11.4.2, 15.11.4.3 +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = '(none)'; +var summary = 'Testing Error.prototype.toString()'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; +var EMPTY_STRING = ''; +var EXPECTED_FORMAT = 0; + + +status = inSection(1); +var err1 = new Error('msg1'); +actual = examineThis(err1, 'msg1'); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(2); +var err2 = new Error(err1); +actual = examineThis(err2, err1); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(3); +var err3 = new Error(); +actual = examineThis(err3, EMPTY_STRING); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(4); +var err4 = new Error(EMPTY_STRING); +actual = examineThis(err4, EMPTY_STRING); +expect = EXPECTED_FORMAT; +addThis(); + +// now generate a run-time error - +status = inSection(5); +try +{ + eval('1=2'); +} +catch(err5) +{ + actual = examineThis(err5, '.*'); +} +expect = EXPECTED_FORMAT; +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +/* + * Searches err.toString() for err.name + ':' + err.message, + * with possible whitespace on each side of the colon sign. + * + * We allow for no colon in case err.message was not provided by the user. + * In such a case, SpiderMonkey and Rhino currently set err.message = '', + * as allowed for by ECMA 15.11.4.3. This makes |pattern| work in this case. + * + * If this is ever changed to a non-empty string, e.g. 'undefined', + * you may have to modify |pattern| to take that into account - + * + */ +function examineThis(err, msg) +{ + var pattern = err.name + '\\s*:?\\s*' + msg; + return err.toString().search(RegExp(pattern)); +} + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i = 0; i < UBound; i++) + { + reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]); + } + + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/15.11.7.6-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/15.11.7.6-001.js new file mode 100644 index 00000000000..a8097f55a13 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/15.11.7.6-001.js @@ -0,0 +1,125 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2003 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): igor@fastmail.fm, pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 14 April 2003 +* SUMMARY: Prototype of predefined error objects should be DontEnum +* See http://bugzilla.mozilla.org/show_bug.cgi?id=201989 +* +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 201989; +var summary = 'Prototype of predefined error objects should be DontEnum'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; + + +/* + * Tests that |F.prototype| is not enumerable in |F| + */ +function testDontEnum(F) +{ + var proto = F.prototype; + + for (var prop in F) + { + if (F[prop] === proto) + return false; + } + return true; +} + + +var list = [ + "Error", + "ConversionError", + "EvalError", + "RangeError", + "ReferenceError", + "SyntaxError", + "TypeError", + "URIError" +]; + + +for (i in list) +{ + var F = this[list[i]]; + + // Test for |F|; e.g. Rhino defines |ConversionError| while SM does not. + if (F) + { + status = 'Testing DontEnum attribute of |' + list[i] + '.prototype|'; + actual = testDontEnum(F); + expect = true; + addThis(); + } +} + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc('test'); + printBugNumber(bug); + printStatus(summary); + + for (var i=0; i -1); + expect = true; + addThis(); +} + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = isReferenceError(actual); + expectedvalues[UBound] = isReferenceError(expect); + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i = 0; i < UBound; i++) + { + reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]); + } + + exitFunc ('test'); +} + + +// converts a Boolean result into a textual result - +function isReferenceError(bResult) +{ + return bResult? ERR_REF_YES : ERR_REF_NO; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/regress-181654.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/regress-181654.js new file mode 100644 index 00000000000..d65efff8199 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/regress-181654.js @@ -0,0 +1,150 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): joerg.schaible@gmx.de +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 23 Nov 2002 +* SUMMARY: Calling toString for an object derived from the Error class +* results in an TypeError (Rhino only) +* See http://bugzilla.mozilla.org/show_bug.cgi?id=181654 +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = '181654'; +var summary = 'Calling toString for an object derived from the Error class should be possible.'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; +var EMPTY_STRING = ''; +var EXPECTED_FORMAT = 0; + + +// derive MyError from Error +function MyError( msg ) +{ + this.message = msg; +} +MyError.prototype = new Error(); +MyError.prototype.name = "MyError"; + + +status = inSection(1); +var err1 = new MyError('msg1'); +actual = examineThis(err1, 'msg1'); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(2); +var err2 = new MyError(err1); +actual = examineThis(err2, err1); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(3); +var err3 = new MyError(); +actual = examineThis(err3, EMPTY_STRING); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(4); +var err4 = new MyError(EMPTY_STRING); +actual = examineThis(err4, EMPTY_STRING); +expect = EXPECTED_FORMAT; +addThis(); + +// now generate an error - +status = inSection(5); +try +{ + throw new MyError("thrown"); +} +catch(err5) +{ + actual = examineThis(err5, "thrown"); +} +expect = EXPECTED_FORMAT; +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +/* + * Searches err.toString() for err.name + ':' + err.message, + * with possible whitespace on each side of the colon sign. + * + * We allow for no colon in case err.message was not provided by the user. + * In such a case, SpiderMonkey and Rhino currently set err.message = '', + * as allowed for by ECMA 15.11.4.3. This makes |pattern| work in this case. + * + * If this is ever changed to a non-empty string, e.g. 'undefined', + * you may have to modify |pattern| to take that into account - + * + */ +function examineThis(err, msg) +{ + var pattern = err.name + '\\s*:?\\s*' + msg; + return err.toString().search(RegExp(pattern)); +} + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i = 0; i < UBound; i++) + { + reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]); + } + + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/regress-181914.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/regress-181914.js new file mode 100644 index 00000000000..adf0b467183 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/regress-181914.js @@ -0,0 +1,189 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): joerg.schaible@gmx.de, pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 25 Nov 2002 +* SUMMARY: Calling a user-defined superconstructor +* See http://bugzilla.mozilla.org/show_bug.cgi?id=181914, esp. Comment 10. +* +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = '181914'; +var summary = 'Calling a user-defined superconstructor'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; +var EMPTY_STRING = ''; +var EXPECTED_FORMAT = 0; + + +// make a user-defined version of the Error constructor +function _Error(msg) +{ + this.message = msg; +} +_Error.prototype = new Error(); +_Error.prototype.name = '_Error'; + + +// derive MyApplyError from _Error +function MyApplyError(msg) +{ + if(this instanceof MyApplyError) + _Error.apply(this, arguments); + else + return new MyApplyError(msg); +} +MyApplyError.prototype = new _Error(); +MyApplyError.prototype.name = "MyApplyError"; + + +// derive MyCallError from _Error +function MyCallError(msg) +{ + if(this instanceof MyCallError) + _Error.call(this, msg); + else + return new MyCallError(msg); +} +MyCallError.prototype = new _Error(); +MyCallError.prototype.name = "MyCallError"; + + +function otherScope(msg) +{ + return MyApplyError(msg); +} + + +status = inSection(1); +var err1 = new MyApplyError('msg1'); +actual = examineThis(err1, 'msg1'); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(2); +var err2 = new MyCallError('msg2'); +actual = examineThis(err2, 'msg2'); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(3); +var err3 = MyApplyError('msg3'); +actual = examineThis(err3, 'msg3'); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(4); +var err4 = MyCallError('msg4'); +actual = examineThis(err4, 'msg4'); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(5); +var err5 = otherScope('msg5'); +actual = examineThis(err5, 'msg5'); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(6); +var err6 = otherScope(); +actual = examineThis(err6, EMPTY_STRING); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(7); +var err7 = eval("MyApplyError('msg7')"); +actual = examineThis(err7, 'msg7'); +expect = EXPECTED_FORMAT; +addThis(); + +status = inSection(8); +var err8; +try +{ + throw MyApplyError('msg8'); +} +catch(e) +{ + if(e instanceof Error) + err8 = e; +} +actual = examineThis(err8, 'msg8'); +expect = EXPECTED_FORMAT; +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +// Searches |err.toString()| for |err.name + ':' + err.message| +function examineThis(err, msg) +{ + var pattern = err.name + '\\s*:?\\s*' + msg; + return err.toString().search(RegExp(pattern)); +} + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i = 0; i < UBound; i++) + { + reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]); + } + + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/regress-58946.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/regress-58946.js new file mode 100644 index 00000000000..e2fc7984028 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/regress-58946.js @@ -0,0 +1,56 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* +* +*This test arose from Bugzilla bug 58946. +*The bug was filed when we got the following error (see code below): +* +* "ReferenceError: e is not defined" +* +*There was no error if we replaced "return e" in the code below with "print(e)". +*There should be no error with "return e", either - +*/ +//------------------------------------------------------------------------------------------------- +var bug = '58946'; +var stat = 'Testing a return statement inside a catch statement inside a function'; + + +test(); + + +function test() { + enterFunc ("test"); + printBugNumber (bug); + printStatus (stat); + + + try + { + throw 'PASS'; + } + + catch(e) + { + return e; + } + + + exitFunc ("test"); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/regress-95101.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/regress-95101.js new file mode 100644 index 00000000000..59b5209788b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Exceptions/regress-95101.js @@ -0,0 +1,97 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. +* All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* Date: 13 August 2001 +* +* SUMMARY: Invoking an undefined function should produce a ReferenceError +* See http://bugzilla.mozilla.org/show_bug.cgi?id=95101 +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 95101; +var summary = 'Invoking an undefined function should produce a ReferenceError'; +var msgERR_REF_YES = 'ReferenceError'; +var msgERR_REF_NO = 'did NOT generate a ReferenceError'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; + + +try +{ + xxxyyyzzz(); +} +catch (e) +{ + status = 'Section 1 of test'; + actual = e instanceof ReferenceError; + expect = true; + addThis(); + + + /* + * This test is more literal, and may one day be invalid. + * Searching for literal string "ReferenceError" in e.toString() + */ + status = 'Section 2 of test'; + var match = e.toString().search(/ReferenceError/); + actual = (match > -1); + expect = true; + addThis(); +} + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = isReferenceError(actual); + expectedvalues[UBound] = isReferenceError(expect); + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i = 0; i < UBound; i++) + { + reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]); + } + + exitFunc ('test'); +} + + +// converts a Boolean result into a textual result - +function isReferenceError(bResult) +{ + return bResult? msgERR_REF_YES : msgERR_REF_NO; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/ExecutionContexts/10.1.3-1.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/ExecutionContexts/10.1.3-1.js new file mode 100644 index 00000000000..a29d2a4d716 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/ExecutionContexts/10.1.3-1.js @@ -0,0 +1,196 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 11 Feb 2002 +* SUMMARY: Testing functions having duplicate formal parameter names +* +* Note: given function f(x,x,x,x) {return x;}; f(1,2,3,4) should return 4. +* See ECMA-262 3rd Edition Final Section 10.1.3: Variable Instantiation +* +* Also see http://bugzilla.mozilla.org/show_bug.cgi?id=124900 +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 124900; +var summary = 'Testing functions having duplicate formal parameter names'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; + + +function f1(x,x) +{ + return x; +} +status = inSection(1); +actual = f1(1,2); +expect = 2; +addThis(); + + +function f2(x,x,x) +{ + return x*x*x; +} +status = inSection(2); +actual = f2(1,2,3); +expect = 27; +addThis(); + + +function f3(x,x,x,x) +{ + return 'a' + x + 'b' + x + 'c' + x ; +} +status = inSection(3); +actual = f3(1,2,3,4); +expect = 'a4b4c4'; +addThis(); + + +/* + * If the value of the last duplicate parameter is not provided by + * the function caller, the value of this parameter is undefined + */ +function f4(x,a,b,x,z) +{ + return x; +} +status = inSection(4); +actual = f4(1,2); +expect = undefined; +addThis(); + + +/* + * f.toString() should preserve any duplicate formal parameter names that exist + */ +function f5(x,x,x,x) +{ +} +status = inSection(5); +actual = f5.toString().match(/\((.*)\)/)[1]; +actual = actual.replace(/\s/g, ''); // for definiteness, remove any white space +expect = 'x,x,x,x'; +addThis(); + + +function f6(x,x,x,x) +{ + var ret = []; + + for (var i=0; i function f\u02B1 () {} +* +* js> f\u02B1.toSource(); +* function f() {} +* +* js> f\u02B1.toSource().toSource(); +* (new String("function f\xB1() {}")) +* +* +* See how the high-byte information (the 02) has been lost? +* The same thing was happening with the toString() method: +* +* js> f\u02B1.toString(); +* +* function f() { +* } +* +* js> f\u02B1.toString().toSource(); +* (new String("\nfunction f\xB1() {\n}\n")) +* +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 58274; +var summary = 'Testing functions with double-byte names'; +var ERR = 'UNEXPECTED ERROR! \n'; +var ERR_MALFORMED_NAME = ERR + 'Could not find function name in: \n\n'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; +var sEval; +var sName; + + +sEval = "function f\u02B2() {return 42;}"; +eval(sEval); +sName = getFunctionName(f\u02B2); + +// Test function call - +status = inSection(1); +actual = f\u02B2(); +expect = 42; +addThis(); + +// Test both characters of function name - +status = inSection(2); +actual = sName[0]; +expect = sEval[9]; +addThis(); + +status = inSection(3); +actual = sName[1]; +expect = sEval[10]; +addThis(); + + + +sEval = "function f\u02B2\u0AAA () {return 84;}"; +eval(sEval); +sName = getFunctionName(f\u02B2\u0AAA); + +// Test function call - +status = inSection(4); +actual = f\u02B2\u0AAA(); +expect = 84; +addThis(); + +// Test all three characters of function name - +status = inSection(5); +actual = sName[0]; +expect = sEval[9]; +addThis(); + +status = inSection(6); +actual = sName[1]; +expect = sEval[10]; +addThis(); + +status = inSection(7); +actual = sName[2]; +expect = sEval[11]; +addThis(); + + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +/* + * Goal: test that f.toString() contains the proper function name. + * + * Note, however, f.toString() is implementation-independent. For example, + * it may begin with '\nfunction' instead of 'function'. Therefore we use + * a regexp to make sure we extract the name properly. + * + * Here we assume that f has been defined by means of a function statement, + * and not a function expression (where it wouldn't have to have a name). + * + * Rhino uses a Unicode representation for f.toString(); whereas + * SpiderMonkey uses an ASCII representation, putting escape sequences + * for non-ASCII characters. For example, if a function is called f\u02B1, + * then in Rhino the toString() method will present a 2-character Unicode + * string for its name, whereas SpiderMonkey will present a 7-character + * ASCII string for its name: the string literal 'f\u02B1'. + * + * So we force the lexer to condense the string before using it. + * This will give uniform results in Rhino and SpiderMonkey. + */ +function getFunctionName(f) +{ + var s = condenseStr(f.toString()); + var re = /\s*function\s+(\S+)\s*\(/; + var arr = s.match(re); + + if (!(arr && arr[1])) + return ERR_MALFORMED_NAME + s; + return arr[1]; +} + + +/* + * This function is the opposite of functions like escape(), which take + * Unicode characters and return escape sequences for them. Here, we force + * the lexer to turn escape sequences back into single characters. + * + * Note we can't simply do |eval(str)|, since in practice |str| will be an + * identifier somewhere in the program (e.g. a function name); thus |eval(str)| + * would return the object that the identifier represents: not what we want. + * + * So we surround |str| lexicographically with quotes to force the lexer to + * evaluate it as a string. Have to strip out any linefeeds first, however - + */ +function condenseStr(str) +{ + /* + * You won't be able to do the next step if |str| has + * any carriage returns or linefeeds in it. For example: + * + * js> eval("'" + '\nHello' + "'"); + * 1: SyntaxError: unterminated string literal: + * 1: ' + * 1: ^ + * + * So replace them with the empty string - + */ + str = str.replace(/[\r\n]/g, '') + return eval("'" + str + "'"); +} + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc('test'); + printBugNumber(bug); + printStatus(summary); + + for (var i=0; i length then set lastIndex to 0 and return null. +* 7. Call [[Match]], giving it the arguments S and i. +* If [[Match]] returned failure, go to step 8; +* otherwise let r be its State result and go to step 10. +* 8. Let i = i+1. +* 9. Go to step 6. +* 10. Let e be r's endIndex value. +* 11. If the global property is true, set lastIndex to e. +* +* etc. +* +* +* So when the global flag is set, |lastIndex| is incremented every time +* there is a match; not from i to i+1, but from i to "endIndex" e: +* +* e = (index of last input character matched so far by the pattern) + 1 +* +* Thus in the example below, the first endIndex e occurs after the +* first match 'a b'. The next match will begin AFTER this, and so +* will NOT be 'b c', but rather 'c d'. Similarly, 'd e' won't be matched. +*/ +//----------------------------------------------------------------------------- +var i = 0; +var bug = '(none)'; +var summary = 'Testing regexps with the global flag set'; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); + + +status = inSection(1); +string = 'a b c d e'; +pattern = /\w\s\w/g; +actualmatch = string.match(pattern); +expectedmatch = ['a b','c d']; // see above explanation - +addThis(); + + +status = inSection(2); +string = '12345678'; +pattern = /\d\d\d/g; +actualmatch = string.match(pattern); +expectedmatch = ['123','456']; +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/15.10.6.2-2.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/15.10.6.2-2.js new file mode 100644 index 00000000000..cce4c2ce627 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/15.10.6.2-2.js @@ -0,0 +1,362 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 18 Feb 2002 +* SUMMARY: Testing re.exec(str) when re.lastIndex is < 0 or > str.length +* +* Case 1: If re has the global flag set, then re(str) should be null +* Case 2: If re doesn't have this set, then re(str) should be unaffected +* +* See http://bugzilla.mozilla.org/show_bug.cgi?id=76717 +* +* +* From the ECMA-262 Final spec: +* +* 15.10.6.2 RegExp.prototype.exec(string) +* Performs a regular expression match of string against the regular +* expression and returns an Array object containing the results of +* the match, or null if the string did not match. +* +* The string ToString(string) is searched for an occurrence of the +* regular expression pattern as follows: +* +* 1. Let S be the value of ToString(string). +* 2. Let length be the length of S. +* 3. Let lastIndex be the value of the lastIndex property. +* 4. Let i be the value of ToInteger(lastIndex). +* 5. If the global property is false, let i = 0. +* 6. If i < 0 or i > length then set lastIndex to 0 and return null. +* 7. Call [[Match]], giving it the arguments S and i. +* If [[Match]] returned failure, go to step 8; +* otherwise let r be its State result and go to step 10. +* 8. Let i = i+1. +* 9. Go to step 6. +* 10. Let e be r's endIndex value. +* 11. If the global property is true, set lastIndex to e. +* +* etc. +* +* +* So: +* +* A. If the global flag is not set, |lastIndex| is set to 0 +* before the match is attempted; thus the match is unaffected. +* +* B. If the global flag IS set and re.lastIndex is >= 0 and <= str.length, +* |lastIndex| is incremented every time there is a match; not from +* i to i+1, but from i to "endIndex" e: +* +* e = (index of last input character matched so far by the pattern) + 1 +* +* The match is then attempted from this position in the string (Step 7). +* +* C. When the global flag IS set and re.lastIndex is < 0 or > str.length, +* |lastIndex| is set to 0 and the match returns null. +* +* +* Note the |lastIndex| property is writeable, and may be set arbitrarily +* by the programmer - and we will do that below. +* +*/ +//----------------------------------------------------------------------------- +var i = 0; +var bug = 76717; +var summary = 'Testing re.exec(str) when re.lastIndex is < 0 or > str.length'; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); + + +/****************************************************************************** + * + * Case 1 : when the global flag is set - + * + *****************************************************************************/ +pattern = /abc/gi; +string = 'AbcaBcabC'; + + status = inSection(1); + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc'); + addThis(); + + status = inSection(2); + actualmatch = pattern.exec(string); + expectedmatch = Array('aBc'); + addThis(); + + status = inSection(3); + actualmatch = pattern.exec(string); + expectedmatch = Array('abC'); + addThis(); + + /* + * At this point |lastIndex| is > string.length, so the match should be null - + */ + status = inSection(4); + actualmatch = pattern.exec(string); + expectedmatch = null; + addThis(); + + /* + * Now let's set |lastIndex| to -1, so the match should again be null - + */ + status = inSection(5); + pattern.lastIndex = -1; + actualmatch = pattern.exec(string); + expectedmatch = null; + addThis(); + + /* + * Now try some edge-case values. Thanks to the work done in + * http://bugzilla.mozilla.org/show_bug.cgi?id=124339, |lastIndex| + * is now stored as a double instead of a uint32 (unsigned integer). + * + * Note 2^32 -1 is the upper bound for uint32's, but doubles can go + * all the way up to Number.MAX_VALUE. So that's why we need cases + * between those two numbers. + */ + status = inSection(6); + pattern.lastIndex = Math.pow(2,32); + actualmatch = pattern.exec(string); + expectedmatch = null; + addThis(); + + status = inSection(7); + pattern.lastIndex = -Math.pow(2,32); + actualmatch = pattern.exec(string); + expectedmatch = null; + addThis(); + + status = inSection(8); + pattern.lastIndex = Math.pow(2,32) + 1; + actualmatch = pattern.exec(string); + expectedmatch = null; + addThis(); + + status = inSection(9); + pattern.lastIndex = -(Math.pow(2,32) + 1); + actualmatch = pattern.exec(string); + expectedmatch = null; + addThis(); + + status = inSection(10); + pattern.lastIndex = Math.pow(2,32) * 2; + actualmatch = pattern.exec(string); + expectedmatch = null; + addThis(); + + status = inSection(11); + pattern.lastIndex = -Math.pow(2,32) * 2; + actualmatch = pattern.exec(string); + expectedmatch = null; + addThis(); + + status = inSection(12); + pattern.lastIndex = Math.pow(2,40); + actualmatch = pattern.exec(string); + expectedmatch = null; + addThis(); + + status = inSection(13); + pattern.lastIndex = -Math.pow(2,40); + actualmatch = pattern.exec(string); + expectedmatch = null; + addThis(); + + status = inSection(14); + pattern.lastIndex = Number.MAX_VALUE; + actualmatch = pattern.exec(string); + expectedmatch = null; + addThis(); + + status = inSection(15); + pattern.lastIndex = -Number.MAX_VALUE; + actualmatch = pattern.exec(string); + expectedmatch = null; + addThis(); + + + +/****************************************************************************** + * + * Case 2: repeat all the above cases WITHOUT the global flag set. + * According to EMCA. |lastIndex| should get set to 0 before the match. + * + * Therefore re.exec(str) should be unaffected; thus our expected values + * below are now DIFFERENT when |lastIndex| is < 0 or > str.length + * + *****************************************************************************/ + +pattern = /abc/i; +string = 'AbcaBcabC'; + + status = inSection(16); + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc'); + addThis(); + + status = inSection(17); + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc'); // NOT Array('aBc') as before - + addThis(); + + status = inSection(18); + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc'); // NOT Array('abC') as before - + addThis(); + + /* + * At this point above, |lastIndex| WAS > string.length, but not here - + */ + status = inSection(19); + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc') // NOT null as before - + addThis(); + + /* + * Now let's set |lastIndex| to -1 + */ + status = inSection(20); + pattern.lastIndex = -1; + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc') // NOT null as before - + addThis(); + + /* + * Now try some edge-case values. Thanks to the work done in + * http://bugzilla.mozilla.org/show_bug.cgi?id=124339, |lastIndex| + * is now stored as a double instead of a uint32 (unsigned integer). + * + * Note 2^32 -1 is the upper bound for uint32's, but doubles can go + * all the way up to Number.MAX_VALUE. So that's why we need cases + * between those two numbers. + */ + status = inSection(21); + pattern.lastIndex = Math.pow(2,32); + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc') // NOT null as before - + addThis(); + + status = inSection(22); + pattern.lastIndex = -Math.pow(2,32); + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc') // NOT null as before - + addThis(); + + status = inSection(23); + pattern.lastIndex = Math.pow(2,32) + 1; + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc') // NOT null as before - + addThis(); + + status = inSection(24); + pattern.lastIndex = -(Math.pow(2,32) + 1); + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc') // NOT null as before - + addThis(); + + status = inSection(25); + pattern.lastIndex = Math.pow(2,32) * 2; + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc') // NOT null as before - + addThis(); + + status = inSection(26); + pattern.lastIndex = -Math.pow(2,32) * 2; + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc') // NOT null as before - + addThis(); + + status = inSection(27); + pattern.lastIndex = Math.pow(2,40); + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc') // NOT null as before -; + addThis(); + + status = inSection(28); + pattern.lastIndex = -Math.pow(2,40); + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc') // NOT null as before - + addThis(); + + status = inSection(29); + pattern.lastIndex = Number.MAX_VALUE; + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc') // NOT null as before - + addThis(); + + status = inSection(30); + pattern.lastIndex = -Number.MAX_VALUE; + actualmatch = pattern.exec(string); + expectedmatch = Array('Abc') // NOT null as before - + addThis(); + + + + +//------------------------------------------------------------------------------------------------- +test(); +//------------------------------------------------------------------------------------------------- + + + +function addThis() +{ + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/octal-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/octal-001.js new file mode 100644 index 00000000000..34b3e34655c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/octal-001.js @@ -0,0 +1,131 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 18 July 2002 +* SUMMARY: Testing octal sequences in regexps +* See http://bugzilla.mozilla.org/show_bug.cgi?id=141078 +* +*/ +//----------------------------------------------------------------------------- +var i = 0; +var bug = 141078; +var summary = 'Testing octal sequences in regexps'; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); + + +status = inSection(1); +pattern = /\240/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +/* + * In the following sections, we test the octal escape sequence '\052'. + * This is character code 42, representing the asterisk character '*'. + * The Unicode escape for it would be '\u002A', the hex escape '\x2A'. + */ +status = inSection(2); +pattern = /ab\052c/; +string = 'ab*c'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab*c'); +addThis(); + +status = inSection(3); +pattern = /ab\052*c/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(4); +pattern = /ab(\052)+c/; +string = 'ab****c'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab****c', '*'); +addThis(); + +status = inSection(5); +pattern = /ab((\052)+)c/; +string = 'ab****c'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab****c', '****', '*'); +addThis(); + +status = inSection(6); +pattern = /(?:\052)c/; +string = 'ab****c'; +actualmatch = string.match(pattern); +expectedmatch = Array('*c'); +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function test() +{ + enterFunc('test'); + printBugNumber(bug); + printStatus(summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/octal-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/octal-002.js new file mode 100644 index 00000000000..6d75e48a5b2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/octal-002.js @@ -0,0 +1,213 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 31 July 2002 +* SUMMARY: Testing regexps containing octal escape sequences +* This is an elaboration of mozilla/js/tests/ecma_2/RegExp/octal-003.js +* +* See http://bugzilla.mozilla.org/show_bug.cgi?id=141078 +* for a reference on octal escape sequences in regexps. +* +* NOTE: +* We will use the identities '\011' === '\u0009' === '\x09' === '\t' +* +* The first is an octal escape sequence (\(0-3)OO; O an octal digit). +* See ECMA-262 Edition 2, Section 7.7.4 "String Literals". These were +* dropped in Edition 3 but we support them for backward compatibility. +* +* The second is a Unicode escape sequence (\uHHHH; H a hex digit). +* Since octal 11 = hex 9, the two escapes define the same character. +* +* The third is a hex escape sequence (\xHH; H a hex digit). +* Since hex 09 = hex 0009, this defines the same character. +* +* The fourth is the familiar escape sequence for a horizontal tab, +* defined in the ECMA spec as having Unicode value \u0009. +*/ +//----------------------------------------------------------------------------- +var i = 0; +var bug = 141078; +var summary = 'Testing regexps containing octal escape sequences'; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); + + +/* + * Test a string containing the null character '\0' followed by the string '11' + * + * 'a' + String.fromCharCode(0) + '11'; + * + * Note we can't simply write 'a\011', because '\011' would be interpreted + * as the octal escape sequence for the tab character (see above). + * + * We should get no match from the regexp /.\011/, because it should be + * looking for the octal escape sequence \011, i.e. the tab character - + * + */ +status = inSection(1); +pattern = /.\011/; +string = 'a' + String.fromCharCode(0) + '11'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + + +/* + * Try same thing with 'xx' in place of '11'. + * + * Should get a match now, because the octal escape sequence in the regexp + * has been reduced from \011 to \0, and '\0' is present in the string - + */ +status = inSection(2); +pattern = /.\0xx/; +string = 'a' + String.fromCharCode(0) + 'xx'; +actualmatch = string.match(pattern); +expectedmatch = Array(string); +addThis(); + + +/* + * Same thing; don't use |String.fromCharCode(0)| this time. + * There is no ambiguity in '\0xx': it is the null character + * followed by two x's, no other interpretation is possible. + */ +status = inSection(3); +pattern = /.\0xx/; +string = 'a\0xx'; +actualmatch = string.match(pattern); +expectedmatch = Array(string); +addThis(); + + +/* + * This one should produce a match. The two-character string + * 'a' + '\011' is duplicated in the pattern and test string: + */ +status = inSection(4); +pattern = /.\011/; +string = 'a\011'; +actualmatch = string.match(pattern); +expectedmatch = Array(string); +addThis(); + + +/* + * Same as above, only now, for the second character of the string, + * use the Unicode escape '\u0009' instead of the octal escape '\011' + */ +status = inSection(5); +pattern = /.\011/; +string = 'a\u0009'; +actualmatch = string.match(pattern); +expectedmatch = Array(string); +addThis(); + + +/* + * Same as above, only now for the second character of the string, + * use the hex escape '\x09' instead of the octal escape '\011' + */ +status = inSection(6); +pattern = /.\011/; +string = 'a\x09'; +actualmatch = string.match(pattern); +expectedmatch = Array(string); +addThis(); + + +/* + * Same as above, only now for the second character of the string, + * use the escape '\t' instead of the octal escape '\011' + */ +status = inSection(7); +pattern = /.\011/; +string = 'a\t'; +actualmatch = string.match(pattern); +expectedmatch = Array(string); +addThis(); + + +/* + * Return to the string from Section 1. + * + * Unlike Section 1, use the RegExp() function to create the + * regexp pattern: null character followed by the string '11'. + * + * Since this is exactly what the string is, we should get a match - + */ +status = inSection(8); +string = 'a' + String.fromCharCode(0) + '11'; +pattern = RegExp(string); +actualmatch = string.match(pattern); +expectedmatch = Array(string); +addThis(); + + + + +//------------------------------------------------------------------------------------------------- +test(); +//------------------------------------------------------------------------------------------------- + + + +function addThis() +{ + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/perlstress-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/perlstress-001.js new file mode 100644 index 00000000000..fd544c2281d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/perlstress-001.js @@ -0,0 +1,3225 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com, rogerl@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 2002-07-07 +* SUMMARY: Testing JS RegExp engine against Perl 5 RegExp engine. +* Adjust cnLBOUND, cnUBOUND below to restrict which sections are tested. +* +* This test was created by running various patterns and strings through the +* Perl 5 RegExp engine. We saved the results below to test the JS engine. +* +* NOTE: ECMA/JS and Perl do differ on certain points. We have either commented +* out such sections altogether, or modified them to fit what we expect from JS. +* +* EXAMPLES: +* +* - In JS, regexp captures (/(a) etc./) must hold |undefined| if not used. +* See http://bugzilla.mozilla.org/show_bug.cgi?id=123437. +* By contrast, in Perl, unmatched captures hold the empty string. +* We have modified such sections accordingly. Example: + + pattern = /^([^a-z])|(\^)$/; + string = '.'; + actualmatch = string.match(pattern); + //expectedmatch = Array('.', '.', ''); <<<--- Perl + expectedmatch = Array('.', '.', undefined); <<<--- JS + addThis(); + + +* - In JS, you can't refer to a capture before it's encountered & completed +* +* - Perl supports ] & ^] inside a [], ECMA does not +* +* - ECMA does support (?: (?= and (?! operators, but doesn't support (?< etc. +* +* - ECMA doesn't support (?imsx or (?-imsx +* +* - ECMA doesn't support (?(condition) +* +* - Perl has \Z has end-of-line, ECMA doesn't +* +* - In ECMA, ^ matches only the empty string before the first character +* +* - In ECMA, $ matches only the empty string at end of input (unless multiline) +* +* - ECMA spec says that each atom in a range must be a single character +* +* - ECMA doesn't support \A +* +* - ECMA doesn't have rules for [: +* +*/ +//----------------------------------------------------------------------------- +var i = 0; +var bug = 85721; +var summary = 'Testing regular expression edge cases'; +var cnSingleSpace = ' '; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); +var cnLBOUND = 1; +var cnUBOUND = 1000; + + +status = inSection(1); +pattern = /abc/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(2); +pattern = /abc/; +string = 'xabcy'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(3); +pattern = /abc/; +string = 'ababc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(4); +pattern = /ab*c/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(5); +pattern = /ab*bc/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(6); +pattern = /ab*bc/; +string = 'abbc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abbc'); +addThis(); + +status = inSection(7); +pattern = /ab*bc/; +string = 'abbbbc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abbbbc'); +addThis(); + +status = inSection(8); +pattern = /.{1}/; +string = 'abbbbc'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); + +status = inSection(9); +pattern = /.{3,4}/; +string = 'abbbbc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abbb'); +addThis(); + +status = inSection(10); +pattern = /ab{0,}bc/; +string = 'abbbbc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abbbbc'); +addThis(); + +status = inSection(11); +pattern = /ab+bc/; +string = 'abbc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abbc'); +addThis(); + +status = inSection(12); +pattern = /ab+bc/; +string = 'abbbbc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abbbbc'); +addThis(); + +status = inSection(13); +pattern = /ab{1,}bc/; +string = 'abbbbc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abbbbc'); +addThis(); + +status = inSection(14); +pattern = /ab{1,3}bc/; +string = 'abbbbc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abbbbc'); +addThis(); + +status = inSection(15); +pattern = /ab{3,4}bc/; +string = 'abbbbc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abbbbc'); +addThis(); + +status = inSection(16); +pattern = /ab?bc/; +string = 'abbc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abbc'); +addThis(); + +status = inSection(17); +pattern = /ab?bc/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(18); +pattern = /ab{0,1}bc/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(19); +pattern = /ab?c/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(20); +pattern = /ab{0,1}c/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(21); +pattern = /^abc$/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(22); +pattern = /^abc/; +string = 'abcc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(23); +pattern = /abc$/; +string = 'aabc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(24); +pattern = /^/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +status = inSection(25); +pattern = /$/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +status = inSection(26); +pattern = /a.c/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(27); +pattern = /a.c/; +string = 'axc'; +actualmatch = string.match(pattern); +expectedmatch = Array('axc'); +addThis(); + +status = inSection(28); +pattern = /a.*c/; +string = 'axyzc'; +actualmatch = string.match(pattern); +expectedmatch = Array('axyzc'); +addThis(); + +status = inSection(29); +pattern = /a[bc]d/; +string = 'abd'; +actualmatch = string.match(pattern); +expectedmatch = Array('abd'); +addThis(); + +status = inSection(30); +pattern = /a[b-d]e/; +string = 'ace'; +actualmatch = string.match(pattern); +expectedmatch = Array('ace'); +addThis(); + +status = inSection(31); +pattern = /a[b-d]/; +string = 'aac'; +actualmatch = string.match(pattern); +expectedmatch = Array('ac'); +addThis(); + +status = inSection(32); +pattern = /a[-b]/; +string = 'a-'; +actualmatch = string.match(pattern); +expectedmatch = Array('a-'); +addThis(); + +status = inSection(33); +pattern = /a[b-]/; +string = 'a-'; +actualmatch = string.match(pattern); +expectedmatch = Array('a-'); +addThis(); + +status = inSection(34); +pattern = /a]/; +string = 'a]'; +actualmatch = string.match(pattern); +expectedmatch = Array('a]'); +addThis(); + +/* Perl supports ] & ^] inside a [], ECMA does not +pattern = /a[]]b/; +status = inSection(35); +string = 'a]b'; +actualmatch = string.match(pattern); +expectedmatch = Array('a]b'); +addThis(); +*/ + +status = inSection(36); +pattern = /a[^bc]d/; +string = 'aed'; +actualmatch = string.match(pattern); +expectedmatch = Array('aed'); +addThis(); + +status = inSection(37); +pattern = /a[^-b]c/; +string = 'adc'; +actualmatch = string.match(pattern); +expectedmatch = Array('adc'); +addThis(); + +/* Perl supports ] & ^] inside a [], ECMA does not +status = inSection(38); +pattern = /a[^]b]c/; +string = 'adc'; +actualmatch = string.match(pattern); +expectedmatch = Array('adc'); +addThis(); +*/ + +status = inSection(39); +pattern = /\ba\b/; +string = 'a-'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); + +status = inSection(40); +pattern = /\ba\b/; +string = '-a'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); + +status = inSection(41); +pattern = /\ba\b/; +string = '-a-'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); + +status = inSection(42); +pattern = /\By\b/; +string = 'xy'; +actualmatch = string.match(pattern); +expectedmatch = Array('y'); +addThis(); + +status = inSection(43); +pattern = /\by\B/; +string = 'yz'; +actualmatch = string.match(pattern); +expectedmatch = Array('y'); +addThis(); + +status = inSection(44); +pattern = /\By\B/; +string = 'xyz'; +actualmatch = string.match(pattern); +expectedmatch = Array('y'); +addThis(); + +status = inSection(45); +pattern = /\w/; +string = 'a'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); + +status = inSection(46); +pattern = /\W/; +string = '-'; +actualmatch = string.match(pattern); +expectedmatch = Array('-'); +addThis(); + +status = inSection(47); +pattern = /a\Sb/; +string = 'a-b'; +actualmatch = string.match(pattern); +expectedmatch = Array('a-b'); +addThis(); + +status = inSection(48); +pattern = /\d/; +string = '1'; +actualmatch = string.match(pattern); +expectedmatch = Array('1'); +addThis(); + +status = inSection(49); +pattern = /\D/; +string = '-'; +actualmatch = string.match(pattern); +expectedmatch = Array('-'); +addThis(); + +status = inSection(50); +pattern = /[\w]/; +string = 'a'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); + +status = inSection(51); +pattern = /[\W]/; +string = '-'; +actualmatch = string.match(pattern); +expectedmatch = Array('-'); +addThis(); + +status = inSection(52); +pattern = /a[\S]b/; +string = 'a-b'; +actualmatch = string.match(pattern); +expectedmatch = Array('a-b'); +addThis(); + +status = inSection(53); +pattern = /[\d]/; +string = '1'; +actualmatch = string.match(pattern); +expectedmatch = Array('1'); +addThis(); + +status = inSection(54); +pattern = /[\D]/; +string = '-'; +actualmatch = string.match(pattern); +expectedmatch = Array('-'); +addThis(); + +status = inSection(55); +pattern = /ab|cd/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab'); +addThis(); + +status = inSection(56); +pattern = /ab|cd/; +string = 'abcd'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab'); +addThis(); + +status = inSection(57); +pattern = /()ef/; +string = 'def'; +actualmatch = string.match(pattern); +expectedmatch = Array('ef', ''); +addThis(); + +status = inSection(58); +pattern = /a\(b/; +string = 'a(b'; +actualmatch = string.match(pattern); +expectedmatch = Array('a(b'); +addThis(); + +status = inSection(59); +pattern = /a\(*b/; +string = 'ab'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab'); +addThis(); + +status = inSection(60); +pattern = /a\(*b/; +string = 'a((b'; +actualmatch = string.match(pattern); +expectedmatch = Array('a((b'); +addThis(); + +status = inSection(61); +pattern = /a\\b/; +string = 'a\\b'; +actualmatch = string.match(pattern); +expectedmatch = Array('a\\b'); +addThis(); + +status = inSection(62); +pattern = /((a))/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('a', 'a', 'a'); +addThis(); + +status = inSection(63); +pattern = /(a)b(c)/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc', 'a', 'c'); +addThis(); + +status = inSection(64); +pattern = /a+b+c/; +string = 'aabbabc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(65); +pattern = /a{1,}b{1,}c/; +string = 'aabbabc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(66); +pattern = /a.+?c/; +string = 'abcabc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); + +status = inSection(67); +pattern = /(a+|b)*/; +string = 'ab'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab', 'b'); +addThis(); + +status = inSection(68); +pattern = /(a+|b){0,}/; +string = 'ab'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab', 'b'); +addThis(); + +status = inSection(69); +pattern = /(a+|b)+/; +string = 'ab'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab', 'b'); +addThis(); + +status = inSection(70); +pattern = /(a+|b){1,}/; +string = 'ab'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab', 'b'); +addThis(); + +status = inSection(71); +pattern = /(a+|b)?/; +string = 'ab'; +actualmatch = string.match(pattern); +expectedmatch = Array('a', 'a'); +addThis(); + +status = inSection(72); +pattern = /(a+|b){0,1}/; +string = 'ab'; +actualmatch = string.match(pattern); +expectedmatch = Array('a', 'a'); +addThis(); + +status = inSection(73); +pattern = /[^ab]*/; +string = 'cde'; +actualmatch = string.match(pattern); +expectedmatch = Array('cde'); +addThis(); + +status = inSection(74); +pattern = /([abc])*d/; +string = 'abbbcd'; +actualmatch = string.match(pattern); +expectedmatch = Array('abbbcd', 'c'); +addThis(); + +status = inSection(75); +pattern = /([abc])*bcd/; +string = 'abcd'; +actualmatch = string.match(pattern); +expectedmatch = Array('abcd', 'a'); +addThis(); + +status = inSection(76); +pattern = /a|b|c|d|e/; +string = 'e'; +actualmatch = string.match(pattern); +expectedmatch = Array('e'); +addThis(); + +status = inSection(77); +pattern = /(a|b|c|d|e)f/; +string = 'ef'; +actualmatch = string.match(pattern); +expectedmatch = Array('ef', 'e'); +addThis(); + +status = inSection(78); +pattern = /abcd*efg/; +string = 'abcdefg'; +actualmatch = string.match(pattern); +expectedmatch = Array('abcdefg'); +addThis(); + +status = inSection(79); +pattern = /ab*/; +string = 'xabyabbbz'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab'); +addThis(); + +status = inSection(80); +pattern = /ab*/; +string = 'xayabbbz'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); + +status = inSection(81); +pattern = /(ab|cd)e/; +string = 'abcde'; +actualmatch = string.match(pattern); +expectedmatch = Array('cde', 'cd'); +addThis(); + +status = inSection(82); +pattern = /[abhgefdc]ij/; +string = 'hij'; +actualmatch = string.match(pattern); +expectedmatch = Array('hij'); +addThis(); + +status = inSection(83); +pattern = /(abc|)ef/; +string = 'abcdef'; +actualmatch = string.match(pattern); +expectedmatch = Array('ef', ''); +addThis(); + +status = inSection(84); +pattern = /(a|b)c*d/; +string = 'abcd'; +actualmatch = string.match(pattern); +expectedmatch = Array('bcd', 'b'); +addThis(); + +status = inSection(85); +pattern = /(ab|ab*)bc/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc', 'a'); +addThis(); + +status = inSection(86); +pattern = /a([bc]*)c*/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc', 'bc'); +addThis(); + +status = inSection(87); +pattern = /a([bc]*)(c*d)/; +string = 'abcd'; +actualmatch = string.match(pattern); +expectedmatch = Array('abcd', 'bc', 'd'); +addThis(); + +status = inSection(88); +pattern = /a([bc]+)(c*d)/; +string = 'abcd'; +actualmatch = string.match(pattern); +expectedmatch = Array('abcd', 'bc', 'd'); +addThis(); + +status = inSection(89); +pattern = /a([bc]*)(c+d)/; +string = 'abcd'; +actualmatch = string.match(pattern); +expectedmatch = Array('abcd', 'b', 'cd'); +addThis(); + +status = inSection(90); +pattern = /a[bcd]*dcdcde/; +string = 'adcdcde'; +actualmatch = string.match(pattern); +expectedmatch = Array('adcdcde'); +addThis(); + +status = inSection(91); +pattern = /(ab|a)b*c/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc', 'ab'); +addThis(); + +status = inSection(92); +pattern = /((a)(b)c)(d)/; +string = 'abcd'; +actualmatch = string.match(pattern); +expectedmatch = Array('abcd', 'abc', 'a', 'b', 'd'); +addThis(); + +status = inSection(93); +pattern = /[a-zA-Z_][a-zA-Z0-9_]*/; +string = 'alpha'; +actualmatch = string.match(pattern); +expectedmatch = Array('alpha'); +addThis(); + +status = inSection(94); +pattern = /^a(bc+|b[eh])g|.h$/; +string = 'abh'; +actualmatch = string.match(pattern); +expectedmatch = Array('bh', undefined); +addThis(); + +status = inSection(95); +pattern = /(bc+d$|ef*g.|h?i(j|k))/; +string = 'effgz'; +actualmatch = string.match(pattern); +expectedmatch = Array('effgz', 'effgz', undefined); +addThis(); + +status = inSection(96); +pattern = /(bc+d$|ef*g.|h?i(j|k))/; +string = 'ij'; +actualmatch = string.match(pattern); +expectedmatch = Array('ij', 'ij', 'j'); +addThis(); + +status = inSection(97); +pattern = /(bc+d$|ef*g.|h?i(j|k))/; +string = 'reffgz'; +actualmatch = string.match(pattern); +expectedmatch = Array('effgz', 'effgz', undefined); +addThis(); + +status = inSection(98); +pattern = /((((((((((a))))))))))/; +string = 'a'; +actualmatch = string.match(pattern); +expectedmatch = Array('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'); +addThis(); + +status = inSection(99); +pattern = /((((((((((a))))))))))\10/; +string = 'aa'; +actualmatch = string.match(pattern); +expectedmatch = Array('aa', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'); +addThis(); + +status = inSection(100); +pattern = /((((((((((a))))))))))/; +string = 'a!'; +actualmatch = string.match(pattern); +expectedmatch = Array('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'); +addThis(); + +status = inSection(101); +pattern = /(((((((((a)))))))))/; +string = 'a'; +actualmatch = string.match(pattern); +expectedmatch = Array('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'); +addThis(); + +status = inSection(102); +pattern = /(.*)c(.*)/; +string = 'abcde'; +actualmatch = string.match(pattern); +expectedmatch = Array('abcde', 'ab', 'de'); +addThis(); + +status = inSection(103); +pattern = /abcd/; +string = 'abcd'; +actualmatch = string.match(pattern); +expectedmatch = Array('abcd'); +addThis(); + +status = inSection(104); +pattern = /a(bc)d/; +string = 'abcd'; +actualmatch = string.match(pattern); +expectedmatch = Array('abcd', 'bc'); +addThis(); + +status = inSection(105); +pattern = /a[-]?c/; +string = 'ac'; +actualmatch = string.match(pattern); +expectedmatch = Array('ac'); +addThis(); + +status = inSection(106); +pattern = /(abc)\1/; +string = 'abcabc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abcabc', 'abc'); +addThis(); + +status = inSection(107); +pattern = /([a-c]*)\1/; +string = 'abcabc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abcabc', 'abc'); +addThis(); + +status = inSection(108); +pattern = /(a)|\1/; +string = 'a'; +actualmatch = string.match(pattern); +expectedmatch = Array('a', 'a'); +addThis(); + +status = inSection(109); +pattern = /(([a-c])b*?\2)*/; +string = 'ababbbcbc'; +actualmatch = string.match(pattern); +expectedmatch = Array('ababb', 'bb', 'b'); +addThis(); + +status = inSection(110); +pattern = /(([a-c])b*?\2){3}/; +string = 'ababbbcbc'; +actualmatch = string.match(pattern); +expectedmatch = Array('ababbbcbc', 'cbc', 'c'); +addThis(); + +/* Can't refer to a capture before it's encountered & completed +status = inSection(111); +pattern = /((\3|b)\2(a)x)+/; +string = 'aaaxabaxbaaxbbax'; +actualmatch = string.match(pattern); +expectedmatch = Array('bbax', 'bbax', 'b', 'a'); +addThis(); + +status = inSection(112); +pattern = /((\3|b)\2(a)){2,}/; +string = 'bbaababbabaaaaabbaaaabba'; +actualmatch = string.match(pattern); +expectedmatch = Array('bbaaaabba', 'bba', 'b', 'a'); +addThis(); +*/ + +status = inSection(113); +pattern = /abc/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(114); +pattern = /abc/i; +string = 'XABCY'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(115); +pattern = /abc/i; +string = 'ABABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(116); +pattern = /ab*c/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(117); +pattern = /ab*bc/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(118); +pattern = /ab*bc/i; +string = 'ABBC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABBC'); +addThis(); + +status = inSection(119); +pattern = /ab*?bc/i; +string = 'ABBBBC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABBBBC'); +addThis(); + +status = inSection(120); +pattern = /ab{0,}?bc/i; +string = 'ABBBBC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABBBBC'); +addThis(); + +status = inSection(121); +pattern = /ab+?bc/i; +string = 'ABBC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABBC'); +addThis(); + +status = inSection(122); +pattern = /ab+bc/i; +string = 'ABBBBC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABBBBC'); +addThis(); + +status = inSection(123); +pattern = /ab{1,}?bc/i; +string = 'ABBBBC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABBBBC'); +addThis(); + +status = inSection(124); +pattern = /ab{1,3}?bc/i; +string = 'ABBBBC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABBBBC'); +addThis(); + +status = inSection(125); +pattern = /ab{3,4}?bc/i; +string = 'ABBBBC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABBBBC'); +addThis(); + +status = inSection(126); +pattern = /ab??bc/i; +string = 'ABBC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABBC'); +addThis(); + +status = inSection(127); +pattern = /ab??bc/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(128); +pattern = /ab{0,1}?bc/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(129); +pattern = /ab??c/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(130); +pattern = /ab{0,1}?c/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(131); +pattern = /^abc$/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(132); +pattern = /^abc/i; +string = 'ABCC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(133); +pattern = /abc$/i; +string = 'AABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(134); +pattern = /^/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +status = inSection(135); +pattern = /$/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +status = inSection(136); +pattern = /a.c/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(137); +pattern = /a.c/i; +string = 'AXC'; +actualmatch = string.match(pattern); +expectedmatch = Array('AXC'); +addThis(); + +status = inSection(138); +pattern = /a.*?c/i; +string = 'AXYZC'; +actualmatch = string.match(pattern); +expectedmatch = Array('AXYZC'); +addThis(); + +status = inSection(139); +pattern = /a[bc]d/i; +string = 'ABD'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABD'); +addThis(); + +status = inSection(140); +pattern = /a[b-d]e/i; +string = 'ACE'; +actualmatch = string.match(pattern); +expectedmatch = Array('ACE'); +addThis(); + +status = inSection(141); +pattern = /a[b-d]/i; +string = 'AAC'; +actualmatch = string.match(pattern); +expectedmatch = Array('AC'); +addThis(); + +status = inSection(142); +pattern = /a[-b]/i; +string = 'A-'; +actualmatch = string.match(pattern); +expectedmatch = Array('A-'); +addThis(); + +status = inSection(143); +pattern = /a[b-]/i; +string = 'A-'; +actualmatch = string.match(pattern); +expectedmatch = Array('A-'); +addThis(); + +status = inSection(144); +pattern = /a]/i; +string = 'A]'; +actualmatch = string.match(pattern); +expectedmatch = Array('A]'); +addThis(); + +/* Perl supports ] & ^] inside a [], ECMA does not +status = inSection(145); +pattern = /a[]]b/i; +string = 'A]B'; +actualmatch = string.match(pattern); +expectedmatch = Array('A]B'); +addThis(); +*/ + +status = inSection(146); +pattern = /a[^bc]d/i; +string = 'AED'; +actualmatch = string.match(pattern); +expectedmatch = Array('AED'); +addThis(); + +status = inSection(147); +pattern = /a[^-b]c/i; +string = 'ADC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ADC'); +addThis(); + +/* Perl supports ] & ^] inside a [], ECMA does not +status = inSection(148); +pattern = /a[^]b]c/i; +string = 'ADC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ADC'); +addThis(); +*/ + +status = inSection(149); +pattern = /ab|cd/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('AB'); +addThis(); + +status = inSection(150); +pattern = /ab|cd/i; +string = 'ABCD'; +actualmatch = string.match(pattern); +expectedmatch = Array('AB'); +addThis(); + +status = inSection(151); +pattern = /()ef/i; +string = 'DEF'; +actualmatch = string.match(pattern); +expectedmatch = Array('EF', ''); +addThis(); + +status = inSection(152); +pattern = /a\(b/i; +string = 'A(B'; +actualmatch = string.match(pattern); +expectedmatch = Array('A(B'); +addThis(); + +status = inSection(153); +pattern = /a\(*b/i; +string = 'AB'; +actualmatch = string.match(pattern); +expectedmatch = Array('AB'); +addThis(); + +status = inSection(154); +pattern = /a\(*b/i; +string = 'A((B'; +actualmatch = string.match(pattern); +expectedmatch = Array('A((B'); +addThis(); + +status = inSection(155); +pattern = /a\\b/i; +string = 'A\\B'; +actualmatch = string.match(pattern); +expectedmatch = Array('A\\B'); +addThis(); + +status = inSection(156); +pattern = /((a))/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('A', 'A', 'A'); +addThis(); + +status = inSection(157); +pattern = /(a)b(c)/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC', 'A', 'C'); +addThis(); + +status = inSection(158); +pattern = /a+b+c/i; +string = 'AABBABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(159); +pattern = /a{1,}b{1,}c/i; +string = 'AABBABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(160); +pattern = /a.+?c/i; +string = 'ABCABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(161); +pattern = /a.*?c/i; +string = 'ABCABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(162); +pattern = /a.{0,5}?c/i; +string = 'ABCABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC'); +addThis(); + +status = inSection(163); +pattern = /(a+|b)*/i; +string = 'AB'; +actualmatch = string.match(pattern); +expectedmatch = Array('AB', 'B'); +addThis(); + +status = inSection(164); +pattern = /(a+|b){0,}/i; +string = 'AB'; +actualmatch = string.match(pattern); +expectedmatch = Array('AB', 'B'); +addThis(); + +status = inSection(165); +pattern = /(a+|b)+/i; +string = 'AB'; +actualmatch = string.match(pattern); +expectedmatch = Array('AB', 'B'); +addThis(); + +status = inSection(166); +pattern = /(a+|b){1,}/i; +string = 'AB'; +actualmatch = string.match(pattern); +expectedmatch = Array('AB', 'B'); +addThis(); + +status = inSection(167); +pattern = /(a+|b)?/i; +string = 'AB'; +actualmatch = string.match(pattern); +expectedmatch = Array('A', 'A'); +addThis(); + +status = inSection(168); +pattern = /(a+|b){0,1}/i; +string = 'AB'; +actualmatch = string.match(pattern); +expectedmatch = Array('A', 'A'); +addThis(); + +status = inSection(169); +pattern = /(a+|b){0,1}?/i; +string = 'AB'; +actualmatch = string.match(pattern); +expectedmatch = Array('', undefined); +addThis(); + +status = inSection(170); +pattern = /[^ab]*/i; +string = 'CDE'; +actualmatch = string.match(pattern); +expectedmatch = Array('CDE'); +addThis(); + +status = inSection(171); +pattern = /([abc])*d/i; +string = 'ABBBCD'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABBBCD', 'C'); +addThis(); + +status = inSection(172); +pattern = /([abc])*bcd/i; +string = 'ABCD'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABCD', 'A'); +addThis(); + +status = inSection(173); +pattern = /a|b|c|d|e/i; +string = 'E'; +actualmatch = string.match(pattern); +expectedmatch = Array('E'); +addThis(); + +status = inSection(174); +pattern = /(a|b|c|d|e)f/i; +string = 'EF'; +actualmatch = string.match(pattern); +expectedmatch = Array('EF', 'E'); +addThis(); + +status = inSection(175); +pattern = /abcd*efg/i; +string = 'ABCDEFG'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABCDEFG'); +addThis(); + +status = inSection(176); +pattern = /ab*/i; +string = 'XABYABBBZ'; +actualmatch = string.match(pattern); +expectedmatch = Array('AB'); +addThis(); + +status = inSection(177); +pattern = /ab*/i; +string = 'XAYABBBZ'; +actualmatch = string.match(pattern); +expectedmatch = Array('A'); +addThis(); + +status = inSection(178); +pattern = /(ab|cd)e/i; +string = 'ABCDE'; +actualmatch = string.match(pattern); +expectedmatch = Array('CDE', 'CD'); +addThis(); + +status = inSection(179); +pattern = /[abhgefdc]ij/i; +string = 'HIJ'; +actualmatch = string.match(pattern); +expectedmatch = Array('HIJ'); +addThis(); + +status = inSection(180); +pattern = /(abc|)ef/i; +string = 'ABCDEF'; +actualmatch = string.match(pattern); +expectedmatch = Array('EF', ''); +addThis(); + +status = inSection(181); +pattern = /(a|b)c*d/i; +string = 'ABCD'; +actualmatch = string.match(pattern); +expectedmatch = Array('BCD', 'B'); +addThis(); + +status = inSection(182); +pattern = /(ab|ab*)bc/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC', 'A'); +addThis(); + +status = inSection(183); +pattern = /a([bc]*)c*/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC', 'BC'); +addThis(); + +status = inSection(184); +pattern = /a([bc]*)(c*d)/i; +string = 'ABCD'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABCD', 'BC', 'D'); +addThis(); + +status = inSection(185); +pattern = /a([bc]+)(c*d)/i; +string = 'ABCD'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABCD', 'BC', 'D'); +addThis(); + +status = inSection(186); +pattern = /a([bc]*)(c+d)/i; +string = 'ABCD'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABCD', 'B', 'CD'); +addThis(); + +status = inSection(187); +pattern = /a[bcd]*dcdcde/i; +string = 'ADCDCDE'; +actualmatch = string.match(pattern); +expectedmatch = Array('ADCDCDE'); +addThis(); + +status = inSection(188); +pattern = /(ab|a)b*c/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABC', 'AB'); +addThis(); + +status = inSection(189); +pattern = /((a)(b)c)(d)/i; +string = 'ABCD'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABCD', 'ABC', 'A', 'B', 'D'); +addThis(); + +status = inSection(190); +pattern = /[a-zA-Z_][a-zA-Z0-9_]*/i; +string = 'ALPHA'; +actualmatch = string.match(pattern); +expectedmatch = Array('ALPHA'); +addThis(); + +status = inSection(191); +pattern = /^a(bc+|b[eh])g|.h$/i; +string = 'ABH'; +actualmatch = string.match(pattern); +expectedmatch = Array('BH', undefined); +addThis(); + +status = inSection(192); +pattern = /(bc+d$|ef*g.|h?i(j|k))/i; +string = 'EFFGZ'; +actualmatch = string.match(pattern); +expectedmatch = Array('EFFGZ', 'EFFGZ', undefined); +addThis(); + +status = inSection(193); +pattern = /(bc+d$|ef*g.|h?i(j|k))/i; +string = 'IJ'; +actualmatch = string.match(pattern); +expectedmatch = Array('IJ', 'IJ', 'J'); +addThis(); + +status = inSection(194); +pattern = /(bc+d$|ef*g.|h?i(j|k))/i; +string = 'REFFGZ'; +actualmatch = string.match(pattern); +expectedmatch = Array('EFFGZ', 'EFFGZ', undefined); +addThis(); + +status = inSection(195); +pattern = /((((((((((a))))))))))/i; +string = 'A'; +actualmatch = string.match(pattern); +expectedmatch = Array('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'); +addThis(); + +status = inSection(196); +pattern = /((((((((((a))))))))))\10/i; +string = 'AA'; +actualmatch = string.match(pattern); +expectedmatch = Array('AA', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'); +addThis(); + +status = inSection(197); +pattern = /((((((((((a))))))))))/i; +string = 'A!'; +actualmatch = string.match(pattern); +expectedmatch = Array('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'); +addThis(); + +status = inSection(198); +pattern = /(((((((((a)))))))))/i; +string = 'A'; +actualmatch = string.match(pattern); +expectedmatch = Array('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'); +addThis(); + +status = inSection(199); +pattern = /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i; +string = 'A'; +actualmatch = string.match(pattern); +expectedmatch = Array('A', 'A'); +addThis(); + +status = inSection(200); +pattern = /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i; +string = 'C'; +actualmatch = string.match(pattern); +expectedmatch = Array('C', 'C'); +addThis(); + +status = inSection(201); +pattern = /(.*)c(.*)/i; +string = 'ABCDE'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABCDE', 'AB', 'DE'); +addThis(); + +status = inSection(202); +pattern = /abcd/i; +string = 'ABCD'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABCD'); +addThis(); + +status = inSection(203); +pattern = /a(bc)d/i; +string = 'ABCD'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABCD', 'BC'); +addThis(); + +status = inSection(204); +pattern = /a[-]?c/i; +string = 'AC'; +actualmatch = string.match(pattern); +expectedmatch = Array('AC'); +addThis(); + +status = inSection(205); +pattern = /(abc)\1/i; +string = 'ABCABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABCABC', 'ABC'); +addThis(); + +status = inSection(206); +pattern = /([a-c]*)\1/i; +string = 'ABCABC'; +actualmatch = string.match(pattern); +expectedmatch = Array('ABCABC', 'ABC'); +addThis(); + +status = inSection(207); +pattern = /a(?!b)./; +string = 'abad'; +actualmatch = string.match(pattern); +expectedmatch = Array('ad'); +addThis(); + +status = inSection(208); +pattern = /a(?=d)./; +string = 'abad'; +actualmatch = string.match(pattern); +expectedmatch = Array('ad'); +addThis(); + +status = inSection(209); +pattern = /a(?=c|d)./; +string = 'abad'; +actualmatch = string.match(pattern); +expectedmatch = Array('ad'); +addThis(); + +status = inSection(210); +pattern = /a(?:b|c|d)(.)/; +string = 'ace'; +actualmatch = string.match(pattern); +expectedmatch = Array('ace', 'e'); +addThis(); + +status = inSection(211); +pattern = /a(?:b|c|d)*(.)/; +string = 'ace'; +actualmatch = string.match(pattern); +expectedmatch = Array('ace', 'e'); +addThis(); + +status = inSection(212); +pattern = /a(?:b|c|d)+?(.)/; +string = 'ace'; +actualmatch = string.match(pattern); +expectedmatch = Array('ace', 'e'); +addThis(); + +status = inSection(213); +pattern = /a(?:b|c|d)+?(.)/; +string = 'acdbcdbe'; +actualmatch = string.match(pattern); +expectedmatch = Array('acd', 'd'); +addThis(); + +status = inSection(214); +pattern = /a(?:b|c|d)+(.)/; +string = 'acdbcdbe'; +actualmatch = string.match(pattern); +expectedmatch = Array('acdbcdbe', 'e'); +addThis(); + +status = inSection(215); +pattern = /a(?:b|c|d){2}(.)/; +string = 'acdbcdbe'; +actualmatch = string.match(pattern); +expectedmatch = Array('acdb', 'b'); +addThis(); + +status = inSection(216); +pattern = /a(?:b|c|d){4,5}(.)/; +string = 'acdbcdbe'; +actualmatch = string.match(pattern); +expectedmatch = Array('acdbcdb', 'b'); +addThis(); + +status = inSection(217); +pattern = /a(?:b|c|d){4,5}?(.)/; +string = 'acdbcdbe'; +actualmatch = string.match(pattern); +expectedmatch = Array('acdbcd', 'd'); +addThis(); + +// MODIFIED - ECMA has different rules for paren contents +status = inSection(218); +pattern = /((foo)|(bar))*/; +string = 'foobar'; +actualmatch = string.match(pattern); +//expectedmatch = Array('foobar', 'bar', 'foo', 'bar'); +expectedmatch = Array('foobar', 'bar', undefined, 'bar'); +addThis(); + +status = inSection(219); +pattern = /a(?:b|c|d){6,7}(.)/; +string = 'acdbcdbe'; +actualmatch = string.match(pattern); +expectedmatch = Array('acdbcdbe', 'e'); +addThis(); + +status = inSection(220); +pattern = /a(?:b|c|d){6,7}?(.)/; +string = 'acdbcdbe'; +actualmatch = string.match(pattern); +expectedmatch = Array('acdbcdbe', 'e'); +addThis(); + +status = inSection(221); +pattern = /a(?:b|c|d){5,6}(.)/; +string = 'acdbcdbe'; +actualmatch = string.match(pattern); +expectedmatch = Array('acdbcdbe', 'e'); +addThis(); + +status = inSection(222); +pattern = /a(?:b|c|d){5,6}?(.)/; +string = 'acdbcdbe'; +actualmatch = string.match(pattern); +expectedmatch = Array('acdbcdb', 'b'); +addThis(); + +status = inSection(223); +pattern = /a(?:b|c|d){5,7}(.)/; +string = 'acdbcdbe'; +actualmatch = string.match(pattern); +expectedmatch = Array('acdbcdbe', 'e'); +addThis(); + +status = inSection(224); +pattern = /a(?:b|c|d){5,7}?(.)/; +string = 'acdbcdbe'; +actualmatch = string.match(pattern); +expectedmatch = Array('acdbcdb', 'b'); +addThis(); + +status = inSection(225); +pattern = /a(?:b|(c|e){1,2}?|d)+?(.)/; +string = 'ace'; +actualmatch = string.match(pattern); +expectedmatch = Array('ace', 'c', 'e'); +addThis(); + +status = inSection(226); +pattern = /^(.+)?B/; +string = 'AB'; +actualmatch = string.match(pattern); +expectedmatch = Array('AB', 'A'); +addThis(); + +/* MODIFIED - ECMA has different rules for paren contents */ +status = inSection(227); +pattern = /^([^a-z])|(\^)$/; +string = '.'; +actualmatch = string.match(pattern); +//expectedmatch = Array('.', '.', ''); +expectedmatch = Array('.', '.', undefined); +addThis(); + +status = inSection(228); +pattern = /^[<>]&/; +string = '<&OUT'; +actualmatch = string.match(pattern); +expectedmatch = Array('<&'); +addThis(); + +/* Can't refer to a capture before it's encountered & completed +status = inSection(229); +pattern = /^(a\1?){4}$/; +string = 'aaaaaaaaaa'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaaaaaaaaa', 'aaaa'); +addThis(); + +status = inSection(230); +pattern = /^(a(?(1)\1)){4}$/; +string = 'aaaaaaaaaa'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaaaaaaaaa', 'aaaa'); +addThis(); +*/ + +status = inSection(231); +pattern = /((a{4})+)/; +string = 'aaaaaaaaa'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaaaaaaa', 'aaaaaaaa', 'aaaa'); +addThis(); + +status = inSection(232); +pattern = /(((aa){2})+)/; +string = 'aaaaaaaaaa'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaaaaaaa', 'aaaaaaaa', 'aaaa', 'aa'); +addThis(); + +status = inSection(233); +pattern = /(((a{2}){2})+)/; +string = 'aaaaaaaaaa'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaaaaaaa', 'aaaaaaaa', 'aaaa', 'aa'); +addThis(); + +status = inSection(234); +pattern = /(?:(f)(o)(o)|(b)(a)(r))*/; +string = 'foobar'; +actualmatch = string.match(pattern); +//expectedmatch = Array('foobar', 'f', 'o', 'o', 'b', 'a', 'r'); +expectedmatch = Array('foobar', undefined, undefined, undefined, 'b', 'a', 'r'); +addThis(); + +/* ECMA supports (?: (?= and (?! but doesn't support (?< etc. +status = inSection(235); +pattern = /(?<=a)b/; +string = 'ab'; +actualmatch = string.match(pattern); +expectedmatch = Array('b'); +addThis(); + +status = inSection(236); +pattern = /(? +status = inSection(311); +pattern = /(?>a+)b/; +string = 'aaab'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaab'); +addThis(); +*/ + +status = inSection(312); +pattern = /([[:]+)/; +string = 'a:[b]:'; +actualmatch = string.match(pattern); +expectedmatch = Array(':[', ':['); +addThis(); + +status = inSection(313); +pattern = /([[=]+)/; +string = 'a=[b]='; +actualmatch = string.match(pattern); +expectedmatch = Array('=[', '=['); +addThis(); + +status = inSection(314); +pattern = /([[.]+)/; +string = 'a.[b].'; +actualmatch = string.match(pattern); +expectedmatch = Array('.[', '.['); +addThis(); + +/* ECMA doesn't have rules for [: +status = inSection(315); +pattern = /[a[:]b[:c]/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc'); +addThis(); +*/ + +/* ECMA doesn't support (?> +status = inSection(316); +pattern = /((?>a+)b)/; +string = 'aaab'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaab', 'aaab'); +addThis(); + +status = inSection(317); +pattern = /(?>(a+))b/; +string = 'aaab'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaab', 'aaa'); +addThis(); + +status = inSection(318); +pattern = /((?>[^()]+)|\([^()]*\))+/; +string = '((abc(ade)ufh()()x'; +actualmatch = string.match(pattern); +expectedmatch = Array('abc(ade)ufh()()x', 'x'); +addThis(); +*/ + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(319); +pattern = /\Z/; +string = 'a\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +status = inSection(320); +pattern = /\z/; +string = 'a\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); +*/ + +status = inSection(321); +pattern = /$/; +string = 'a\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(322); +pattern = /\Z/; +string = 'b\na\n'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +status = inSection(323); +pattern = /\z/; +string = 'b\na\n'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); +*/ + +status = inSection(324); +pattern = /$/; +string = 'b\na\n'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(325); +pattern = /\Z/; +string = 'b\na'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +status = inSection(326); +pattern = /\z/; +string = 'b\na'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); +*/ + +status = inSection(327); +pattern = /$/; +string = 'b\na'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(328); +pattern = /\Z/m; +string = 'a\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +status = inSection(329); +pattern = /\z/m; +string = 'a\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); +*/ + +status = inSection(330); +pattern = /$/m; +string = 'a\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(331); +pattern = /\Z/m; +string = 'b\na\n'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +status = inSection(332); +pattern = /\z/m; +string = 'b\na\n'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); +*/ + +status = inSection(333); +pattern = /$/m; +string = 'b\na\n'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(334); +pattern = /\Z/m; +string = 'b\na'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +status = inSection(335); +pattern = /\z/m; +string = 'b\na'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); +*/ + +status = inSection(336); +pattern = /$/m; +string = 'b\na'; +actualmatch = string.match(pattern); +expectedmatch = Array(''); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(337); +pattern = /a\Z/; +string = 'b\na\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); +*/ + +/* $ only matches end of input unless multiline +status = inSection(338); +pattern = /a$/; +string = 'b\na\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); +*/ + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(339); +pattern = /a\Z/; +string = 'b\na'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); + +status = inSection(340); +pattern = /a\z/; +string = 'b\na'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); +*/ + +status = inSection(341); +pattern = /a$/; +string = 'b\na'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); + +status = inSection(342); +pattern = /a$/m; +string = 'a\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(343); +pattern = /a\Z/m; +string = 'b\na\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); +*/ + +status = inSection(344); +pattern = /a$/m; +string = 'b\na\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(345); +pattern = /a\Z/m; +string = 'b\na'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); + +status = inSection(346); +pattern = /a\z/m; +string = 'b\na'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); +*/ + +status = inSection(347); +pattern = /a$/m; +string = 'b\na'; +actualmatch = string.match(pattern); +expectedmatch = Array('a'); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(348); +pattern = /aa\Z/; +string = 'b\naa\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('aa'); +addThis(); +*/ + +/* $ only matches end of input unless multiline +status = inSection(349); +pattern = /aa$/; +string = 'b\naa\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('aa'); +addThis(); +*/ + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(350); +pattern = /aa\Z/; +string = 'b\naa'; +actualmatch = string.match(pattern); +expectedmatch = Array('aa'); +addThis(); + +status = inSection(351); +pattern = /aa\z/; +string = 'b\naa'; +actualmatch = string.match(pattern); +expectedmatch = Array('aa'); +addThis(); +*/ + +status = inSection(352); +pattern = /aa$/; +string = 'b\naa'; +actualmatch = string.match(pattern); +expectedmatch = Array('aa'); +addThis(); + +status = inSection(353); +pattern = /aa$/m; +string = 'aa\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('aa'); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(354); +pattern = /aa\Z/m; +string = 'b\naa\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('aa'); +addThis(); +*/ + +status = inSection(355); +pattern = /aa$/m; +string = 'b\naa\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('aa'); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(356); +pattern = /aa\Z/m; +string = 'b\naa'; +actualmatch = string.match(pattern); +expectedmatch = Array('aa'); +addThis(); + +status = inSection(357); +pattern = /aa\z/m; +string = 'b\naa'; +actualmatch = string.match(pattern); +expectedmatch = Array('aa'); +addThis(); +*/ + +status = inSection(358); +pattern = /aa$/m; +string = 'b\naa'; +actualmatch = string.match(pattern); +expectedmatch = Array('aa'); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(359); +pattern = /ab\Z/; +string = 'b\nab\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab'); +addThis(); +*/ + +/* $ only matches end of input unless multiline +status = inSection(360); +pattern = /ab$/; +string = 'b\nab\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab'); +addThis(); +*/ + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(361); +pattern = /ab\Z/; +string = 'b\nab'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab'); +addThis(); + +status = inSection(362); +pattern = /ab\z/; +string = 'b\nab'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab'); +addThis(); +*/ + +status = inSection(363); +pattern = /ab$/; +string = 'b\nab'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab'); +addThis(); + +status = inSection(364); +pattern = /ab$/m; +string = 'ab\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab'); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(365); +pattern = /ab\Z/m; +string = 'b\nab\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab'); +addThis(); +*/ + +status = inSection(366); +pattern = /ab$/m; +string = 'b\nab\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab'); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(367); +pattern = /ab\Z/m; +string = 'b\nab'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab'); +addThis(); + +status = inSection(368); +pattern = /ab\z/m; +string = 'b\nab'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab'); +addThis(); +*/ + +status = inSection(369); +pattern = /ab$/m; +string = 'b\nab'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab'); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(370); +pattern = /abb\Z/; +string = 'b\nabb\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('abb'); +addThis(); +*/ + +/* $ only matches end of input unless multiline +status = inSection(371); +pattern = /abb$/; +string = 'b\nabb\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('abb'); +addThis(); +*/ + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(372); +pattern = /abb\Z/; +string = 'b\nabb'; +actualmatch = string.match(pattern); +expectedmatch = Array('abb'); +addThis(); + +status = inSection(373); +pattern = /abb\z/; +string = 'b\nabb'; +actualmatch = string.match(pattern); +expectedmatch = Array('abb'); +addThis(); +*/ + +status = inSection(374); +pattern = /abb$/; +string = 'b\nabb'; +actualmatch = string.match(pattern); +expectedmatch = Array('abb'); +addThis(); + +status = inSection(375); +pattern = /abb$/m; +string = 'abb\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('abb'); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(376); +pattern = /abb\Z/m; +string = 'b\nabb\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('abb'); +addThis(); +*/ + +status = inSection(377); +pattern = /abb$/m; +string = 'b\nabb\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('abb'); +addThis(); + +/* Perl has \Z has end-of-line, ECMA doesn't +status = inSection(378); +pattern = /abb\Z/m; +string = 'b\nabb'; +actualmatch = string.match(pattern); +expectedmatch = Array('abb'); +addThis(); + +status = inSection(379); +pattern = /abb\z/m; +string = 'b\nabb'; +actualmatch = string.match(pattern); +expectedmatch = Array('abb'); +addThis(); +*/ + +status = inSection(380); +pattern = /abb$/m; +string = 'b\nabb'; +actualmatch = string.match(pattern); +expectedmatch = Array('abb'); +addThis(); + +status = inSection(381); +pattern = /(^|x)(c)/; +string = 'ca'; +actualmatch = string.match(pattern); +expectedmatch = Array('c', '', 'c'); +addThis(); + +status = inSection(382); +pattern = /foo.bart/; +string = 'foo.bart'; +actualmatch = string.match(pattern); +expectedmatch = Array('foo.bart'); +addThis(); + +status = inSection(383); +pattern = /^d[x][x][x]/m; +string = 'abcd\ndxxx'; +actualmatch = string.match(pattern); +expectedmatch = Array('dxxx'); +addThis(); + +status = inSection(384); +pattern = /tt+$/; +string = 'xxxtt'; +actualmatch = string.match(pattern); +expectedmatch = Array('tt'); +addThis(); + +/* ECMA spec says that each atom in a range must be a single character +status = inSection(385); +pattern = /([a-\d]+)/; +string = 'za-9z'; +actualmatch = string.match(pattern); +expectedmatch = Array('9', '9'); +addThis(); + +status = inSection(386); +pattern = /([\d-z]+)/; +string = 'a0-za'; +actualmatch = string.match(pattern); +expectedmatch = Array('0-z', '0-z'); +addThis(); +*/ + +/* ECMA doesn't support [: +status = inSection(387); +pattern = /([a-[:digit:]]+)/; +string = 'za-9z'; +actualmatch = string.match(pattern); +expectedmatch = Array('a-9', 'a-9'); +addThis(); + +status = inSection(388); +pattern = /([[:digit:]-z]+)/; +string = '=0-z='; +actualmatch = string.match(pattern); +expectedmatch = Array('0-z', '0-z'); +addThis(); + +status = inSection(389); +pattern = /([[:digit:]-[:alpha:]]+)/; +string = '=0-z='; +actualmatch = string.match(pattern); +expectedmatch = Array('0-z', '0-z'); +addThis(); +*/ + +status = inSection(390); +pattern = /(\d+\.\d+)/; +string = '3.1415926'; +actualmatch = string.match(pattern); +expectedmatch = Array('3.1415926', '3.1415926'); +addThis(); + +status = inSection(391); +pattern = /\.c(pp|xx|c)?$/i; +string = 'IO.c'; +actualmatch = string.match(pattern); +expectedmatch = Array('.c', undefined); +addThis(); + +status = inSection(392); +pattern = /(\.c(pp|xx|c)?$)/i; +string = 'IO.c'; +actualmatch = string.match(pattern); +expectedmatch = Array('.c', '.c', undefined); +addThis(); + +status = inSection(393); +pattern = /(^|a)b/; +string = 'ab'; +actualmatch = string.match(pattern); +expectedmatch = Array('ab', 'a'); +addThis(); + +status = inSection(394); +pattern = /^([ab]*?)(b)?(c)$/; +string = 'abac'; +actualmatch = string.match(pattern); +expectedmatch = Array('abac', 'aba', undefined, 'c'); +addThis(); + +status = inSection(395); +pattern = /^(?:.,){2}c/i; +string = 'a,b,c'; +actualmatch = string.match(pattern); +expectedmatch = Array('a,b,c'); +addThis(); + +status = inSection(396); +pattern = /^(.,){2}c/i; +string = 'a,b,c'; +actualmatch = string.match(pattern); +expectedmatch = Array('a,b,c', 'b,'); +addThis(); + +status = inSection(397); +pattern = /^(?:[^,]*,){2}c/; +string = 'a,b,c'; +actualmatch = string.match(pattern); +expectedmatch = Array('a,b,c'); +addThis(); + +status = inSection(398); +pattern = /^([^,]*,){2}c/; +string = 'a,b,c'; +actualmatch = string.match(pattern); +expectedmatch = Array('a,b,c', 'b,'); +addThis(); + +status = inSection(399); +pattern = /^([^,]*,){3}d/; +string = 'aaa,b,c,d'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaa,b,c,d', 'c,'); +addThis(); + +status = inSection(400); +pattern = /^([^,]*,){3,}d/; +string = 'aaa,b,c,d'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaa,b,c,d', 'c,'); +addThis(); + +status = inSection(401); +pattern = /^([^,]*,){0,3}d/; +string = 'aaa,b,c,d'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaa,b,c,d', 'c,'); +addThis(); + +status = inSection(402); +pattern = /^([^,]{1,3},){3}d/i; +string = 'aaa,b,c,d'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaa,b,c,d', 'c,'); +addThis(); + +status = inSection(403); +pattern = /^([^,]{1,3},){3,}d/; +string = 'aaa,b,c,d'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaa,b,c,d', 'c,'); +addThis(); + +status = inSection(404); +pattern = /^([^,]{1,3},){0,3}d/; +string = 'aaa,b,c,d'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaa,b,c,d', 'c,'); +addThis(); + +status = inSection(405); +pattern = /^([^,]{1,},){3}d/; +string = 'aaa,b,c,d'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaa,b,c,d', 'c,'); +addThis(); + +status = inSection(406); +pattern = /^([^,]{1,},){3,}d/; +string = 'aaa,b,c,d'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaa,b,c,d', 'c,'); +addThis(); + +status = inSection(407); +pattern = /^([^,]{1,},){0,3}d/; +string = 'aaa,b,c,d'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaa,b,c,d', 'c,'); +addThis(); + +status = inSection(408); +pattern = /^([^,]{0,3},){3}d/i; +string = 'aaa,b,c,d'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaa,b,c,d', 'c,'); +addThis(); + +status = inSection(409); +pattern = /^([^,]{0,3},){3,}d/; +string = 'aaa,b,c,d'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaa,b,c,d', 'c,'); +addThis(); + +status = inSection(410); +pattern = /^([^,]{0,3},){0,3}d/; +string = 'aaa,b,c,d'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaa,b,c,d', 'c,'); +addThis(); + +/* ECMA doesn't support \A +status = inSection(411); +pattern = /(?!\A)x/m; +string = 'a\nxb\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('\n'); +addThis(); +*/ + +status = inSection(412); +pattern = /^(a(b)?)+$/; +string = 'aba'; +actualmatch = string.match(pattern); +expectedmatch = Array('aba', 'a', undefined); +addThis(); + +status = inSection(413); +pattern = /^(aa(bb)?)+$/; +string = 'aabbaa'; +actualmatch = string.match(pattern); +expectedmatch = Array('aabbaa', 'aa', undefined); +addThis(); + +status = inSection(414); +pattern = /^.{9}abc.*\n/m; +string = '123\nabcabcabcabc\n'; +actualmatch = string.match(pattern); +expectedmatch = Array('abcabcabcabc\n'); +addThis(); + +status = inSection(415); +pattern = /^(a)?a$/; +string = 'a'; +actualmatch = string.match(pattern); +expectedmatch = Array('a', undefined); +addThis(); + +status = inSection(416); +pattern = /^(a\1?)(a\1?)(a\2?)(a\3?)$/; +string = 'aaaaaa'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaaaaa', 'a', 'aa', 'a', 'aa'); +addThis(); + +/* Can't refer to a capture before it's encountered & completed +status = inSection(417); +pattern = /^(a\1?){4}$/; +string = 'aaaaaa'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaaaaa', 'aaa'); +addThis(); +*/ + +status = inSection(418); +pattern = /^(0+)?(?:x(1))?/; +string = 'x1'; +actualmatch = string.match(pattern); +expectedmatch = Array('x1', undefined, '1'); +addThis(); + +status = inSection(419); +pattern = /^([0-9a-fA-F]+)(?:x([0-9a-fA-F]+)?)(?:x([0-9a-fA-F]+))?/; +string = '012cxx0190'; +actualmatch = string.match(pattern); +expectedmatch = Array('012cxx0190', '012c', undefined, '0190'); +addThis(); + +status = inSection(420); +pattern = /^(b+?|a){1,2}c/; +string = 'bbbac'; +actualmatch = string.match(pattern); +expectedmatch = Array('bbbac', 'a'); +addThis(); + +status = inSection(421); +pattern = /^(b+?|a){1,2}c/; +string = 'bbbbac'; +actualmatch = string.match(pattern); +expectedmatch = Array('bbbbac', 'a'); +addThis(); + +status = inSection(422); +pattern = /((?:aaaa|bbbb)cccc)?/; +string = 'aaaacccc'; +actualmatch = string.match(pattern); +expectedmatch = Array('aaaacccc', 'aaaacccc'); +addThis(); + +status = inSection(423); +pattern = /((?:aaaa|bbbb)cccc)?/; +string = 'bbbbcccc'; +actualmatch = string.match(pattern); +expectedmatch = Array('bbbbcccc', 'bbbbcccc'); +addThis(); + + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + if(omitCurrentSection()) + return; + + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function omitCurrentSection() +{ + try + { + // current section number is in global status variable + var n = status.match(/(\d+)/)[1]; + return ((n < cnLBOUND) || (n > cnUBOUND)); + } + catch(e) + { + return false; + } +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/perlstress-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/perlstress-002.js new file mode 100644 index 00000000000..44cfbb51754 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/perlstress-002.js @@ -0,0 +1,1837 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com, rogerl@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 2002-07-07 +* SUMMARY: Testing JS RegExp engine against Perl 5 RegExp engine. +* Adjust cnLBOUND, cnUBOUND below to restrict which sections are tested. +* +* This test was created by running various patterns and strings through the +* Perl 5 RegExp engine. We saved the results below to test the JS engine. +* +* Each of the examples below is a negative test; that is, each produces a +* null match in Perl. Thus we set |expectedmatch| = |null| in each section. +* +* NOTE: ECMA/JS and Perl do differ on certain points. We have either commented +* out such sections altogether, or modified them to fit what we expect from JS. +* +* EXAMPLES: +* +* - ECMA does support (?: (?= and (?! operators, but doesn't support (?< etc. +* +* - ECMA doesn't support (?(condition) +* +*/ +//----------------------------------------------------------------------------- +var i = 0; +var bug = 85721; +var summary = 'Testing regular expression edge cases'; +var cnSingleSpace = ' '; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); +var cnLBOUND = 0; +var cnUBOUND = 1000; + + +status = inSection(1); +pattern = /abc/; +string = 'xbc'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(2); +pattern = /abc/; +string = 'axc'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(3); +pattern = /abc/; +string = 'abx'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(4); +pattern = /ab+bc/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(5); +pattern = /ab+bc/; +string = 'abq'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(6); +pattern = /ab{1,}bc/; +string = 'abq'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(7); +pattern = /ab{4,5}bc/; +string = 'abbbbc'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(8); +pattern = /ab?bc/; +string = 'abbbbc'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(9); +pattern = /^abc$/; +string = 'abcc'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(10); +pattern = /^abc$/; +string = 'aabc'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(11); +pattern = /abc$/; +string = 'aabcd'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(12); +pattern = /a.*c/; +string = 'axyzd'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(13); +pattern = /a[bc]d/; +string = 'abc'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(14); +pattern = /a[b-d]e/; +string = 'abd'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(15); +pattern = /a[^bc]d/; +string = 'abd'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(16); +pattern = /a[^-b]c/; +string = 'a-c'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(17); +pattern = /a[^]b]c/; +string = 'a]c'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(18); +pattern = /\by\b/; +string = 'xy'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(19); +pattern = /\by\b/; +string = 'yz'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(20); +pattern = /\by\b/; +string = 'xyz'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(21); +pattern = /\Ba\B/; +string = 'a-'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(22); +pattern = /\Ba\B/; +string = '-a'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(23); +pattern = /\Ba\B/; +string = '-a-'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(24); +pattern = /\w/; +string = '-'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(25); +pattern = /\W/; +string = 'a'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(26); +pattern = /a\sb/; +string = 'a-b'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(27); +pattern = /\d/; +string = '-'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(28); +pattern = /\D/; +string = '1'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(29); +pattern = /[\w]/; +string = '-'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(30); +pattern = /[\W]/; +string = 'a'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(31); +pattern = /a[\s]b/; +string = 'a-b'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(32); +pattern = /[\d]/; +string = '-'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(33); +pattern = /[\D]/; +string = '1'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(34); +pattern = /$b/; +string = 'b'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(35); +pattern = /^(ab|cd)e/; +string = 'abcde'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(36); +pattern = /a[bcd]+dcdcde/; +string = 'adcdcde'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(37); +pattern = /(bc+d$|ef*g.|h?i(j|k))/; +string = 'effg'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(38); +pattern = /(bc+d$|ef*g.|h?i(j|k))/; +string = 'bcdd'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(39); +pattern = /[k]/; +string = 'ab'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +// MODIFIED - ECMA has different rules for paren contents. +status = inSection(40); +pattern = /(a)|\1/; +string = 'x'; +actualmatch = string.match(pattern); +//expectedmatch = null; +expectedmatch = Array("", undefined); +addThis(); + +// MODIFIED - ECMA has different rules for paren contents. +status = inSection(41); +pattern = /((\3|b)\2(a)x)+/; +string = 'aaxabxbaxbbx'; +actualmatch = string.match(pattern); +//expectedmatch = null; +expectedmatch = Array("ax", "ax", "", "a"); +addThis(); + +status = inSection(42); +pattern = /abc/i; +string = 'XBC'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(43); +pattern = /abc/i; +string = 'AXC'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(44); +pattern = /abc/i; +string = 'ABX'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(45); +pattern = /ab+bc/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(46); +pattern = /ab+bc/i; +string = 'ABQ'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(47); +pattern = /ab{1,}bc/i; +string = 'ABQ'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(48); +pattern = /ab{4,5}?bc/i; +string = 'ABBBBC'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(49); +pattern = /ab??bc/i; +string = 'ABBBBC'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(50); +pattern = /^abc$/i; +string = 'ABCC'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(51); +pattern = /^abc$/i; +string = 'AABC'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(52); +pattern = /a.*c/i; +string = 'AXYZD'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(53); +pattern = /a[bc]d/i; +string = 'ABC'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(54); +pattern = /a[b-d]e/i; +string = 'ABD'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(55); +pattern = /a[^bc]d/i; +string = 'ABD'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(56); +pattern = /a[^-b]c/i; +string = 'A-C'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(57); +pattern = /a[^]b]c/i; +string = 'A]C'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(58); +pattern = /$b/i; +string = 'B'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(59); +pattern = /^(ab|cd)e/i; +string = 'ABCDE'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(60); +pattern = /a[bcd]+dcdcde/i; +string = 'ADCDCDE'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(61); +pattern = /(bc+d$|ef*g.|h?i(j|k))/i; +string = 'EFFG'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(62); +pattern = /(bc+d$|ef*g.|h?i(j|k))/i; +string = 'BCDD'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(63); +pattern = /[k]/i; +string = 'AB'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(64); +pattern = /^(a\1?){4}$/; +string = 'aaaaaaaaa'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(65); +pattern = /^(a\1?){4}$/; +string = 'aaaaaaaaaaa'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +/* ECMA doesn't support (?( +status = inSection(66); +pattern = /^(a(?(1)\1)){4}$/; +string = 'aaaaaaaaa'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(67); +pattern = /^(a(?(1)\1)){4}$/; +string = 'aaaaaaaaaaa'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); +*/ + +/* ECMA doesn't support (?< +status = inSection(68); +pattern = /(?<=a)b/; +string = 'cb'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(69); +pattern = /(?<=a)b/; +string = 'b'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(70); +pattern = /(?a+)ab/; +string = 'aaab'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(106); +pattern = /a\Z/; +string = 'a\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(107); +pattern = /a\z/; +string = 'a\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(108); +pattern = /a$/; +string = 'a\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(109); +pattern = /a\z/; +string = 'b\na\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(110); +pattern = /a\z/m; +string = 'a\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(111); +pattern = /a\z/m; +string = 'b\na\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(112); +pattern = /aa\Z/; +string = 'aa\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(113); +pattern = /aa\z/; +string = 'aa\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(114); +pattern = /aa$/; +string = 'aa\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(115); +pattern = /aa\z/; +string = 'b\naa\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(116); +pattern = /aa\z/m; +string = 'aa\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(117); +pattern = /aa\z/m; +string = 'b\naa\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(118); +pattern = /aa\Z/; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(119); +pattern = /aa\z/; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(120); +pattern = /aa$/; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(121); +pattern = /aa\Z/; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(122); +pattern = /aa\z/; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(123); +pattern = /aa$/; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(124); +pattern = /aa\Z/; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(125); +pattern = /aa\z/; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(126); +pattern = /aa$/; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(127); +pattern = /aa\Z/m; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(128); +pattern = /aa\z/m; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(129); +pattern = /aa$/m; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(130); +pattern = /aa\Z/m; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(131); +pattern = /aa\z/m; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(132); +pattern = /aa$/m; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(133); +pattern = /aa\Z/m; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(134); +pattern = /aa\z/m; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(135); +pattern = /aa$/m; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(136); +pattern = /aa\Z/; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(137); +pattern = /aa\z/; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(138); +pattern = /aa$/; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(139); +pattern = /aa\Z/; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(140); +pattern = /aa\z/; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(141); +pattern = /aa$/; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(142); +pattern = /aa\Z/; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(143); +pattern = /aa\z/; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(144); +pattern = /aa$/; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(145); +pattern = /aa\Z/m; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(146); +pattern = /aa\z/m; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(147); +pattern = /aa$/m; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(148); +pattern = /aa\Z/m; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(149); +pattern = /aa\z/m; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(150); +pattern = /aa$/m; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(151); +pattern = /aa\Z/m; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(152); +pattern = /aa\z/m; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(153); +pattern = /aa$/m; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(154); +pattern = /ab\Z/; +string = 'ab\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(155); +pattern = /ab\z/; +string = 'ab\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(156); +pattern = /ab$/; +string = 'ab\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(157); +pattern = /ab\z/; +string = 'b\nab\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(158); +pattern = /ab\z/m; +string = 'ab\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(159); +pattern = /ab\z/m; +string = 'b\nab\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(160); +pattern = /ab\Z/; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(161); +pattern = /ab\z/; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(162); +pattern = /ab$/; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(163); +pattern = /ab\Z/; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(164); +pattern = /ab\z/; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(165); +pattern = /ab$/; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(166); +pattern = /ab\Z/; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(167); +pattern = /ab\z/; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(168); +pattern = /ab$/; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(169); +pattern = /ab\Z/m; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(170); +pattern = /ab\z/m; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(171); +pattern = /ab$/m; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(172); +pattern = /ab\Z/m; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(173); +pattern = /ab\z/m; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(174); +pattern = /ab$/m; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(175); +pattern = /ab\Z/m; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(176); +pattern = /ab\z/m; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(177); +pattern = /ab$/m; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(178); +pattern = /ab\Z/; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(179); +pattern = /ab\z/; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(180); +pattern = /ab$/; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(181); +pattern = /ab\Z/; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(182); +pattern = /ab\z/; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(183); +pattern = /ab$/; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(184); +pattern = /ab\Z/; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(185); +pattern = /ab\z/; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(186); +pattern = /ab$/; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(187); +pattern = /ab\Z/m; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(188); +pattern = /ab\z/m; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(189); +pattern = /ab$/m; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(190); +pattern = /ab\Z/m; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(191); +pattern = /ab\z/m; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(192); +pattern = /ab$/m; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(193); +pattern = /ab\Z/m; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(194); +pattern = /ab\z/m; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(195); +pattern = /ab$/m; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(196); +pattern = /abb\Z/; +string = 'abb\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(197); +pattern = /abb\z/; +string = 'abb\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(198); +pattern = /abb$/; +string = 'abb\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(199); +pattern = /abb\z/; +string = 'b\nabb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(200); +pattern = /abb\z/m; +string = 'abb\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(201); +pattern = /abb\z/m; +string = 'b\nabb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(202); +pattern = /abb\Z/; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(203); +pattern = /abb\z/; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(204); +pattern = /abb$/; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(205); +pattern = /abb\Z/; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(206); +pattern = /abb\z/; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(207); +pattern = /abb$/; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(208); +pattern = /abb\Z/; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(209); +pattern = /abb\z/; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(210); +pattern = /abb$/; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(211); +pattern = /abb\Z/m; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(212); +pattern = /abb\z/m; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(213); +pattern = /abb$/m; +string = 'ac\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(214); +pattern = /abb\Z/m; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(215); +pattern = /abb\z/m; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(216); +pattern = /abb$/m; +string = 'b\nac\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(217); +pattern = /abb\Z/m; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(218); +pattern = /abb\z/m; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(219); +pattern = /abb$/m; +string = 'b\nac'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(220); +pattern = /abb\Z/; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(221); +pattern = /abb\z/; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(222); +pattern = /abb$/; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(223); +pattern = /abb\Z/; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(224); +pattern = /abb\z/; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(225); +pattern = /abb$/; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(226); +pattern = /abb\Z/; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(227); +pattern = /abb\z/; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(228); +pattern = /abb$/; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(229); +pattern = /abb\Z/m; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(230); +pattern = /abb\z/m; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(231); +pattern = /abb$/m; +string = 'ca\nb\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(232); +pattern = /abb\Z/m; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(233); +pattern = /abb\z/m; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(234); +pattern = /abb$/m; +string = 'b\nca\n'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(235); +pattern = /abb\Z/m; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(236); +pattern = /abb\z/m; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(237); +pattern = /abb$/m; +string = 'b\nca'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(238); +pattern = /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/; +string = 'x'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(239); +pattern = /\GX.*X/; +string = 'aaaXbX'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(240); +pattern = /\.c(pp|xx|c)?$/i; +string = 'Changes'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(241); +pattern = /^([a-z]:)/; +string = 'C:/'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +status = inSection(242); +pattern = /(\w)?(abc)\1b/; +string = 'abcab'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); + +/* ECMA doesn't support (?( +status = inSection(243); +pattern = /^(a)?(?(1)a|b)+$/; +string = 'a'; +actualmatch = string.match(pattern); +expectedmatch = null; +addThis(); +*/ + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + if(omitCurrentSection()) + return; + + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function omitCurrentSection() +{ + try + { + // current section number is in global status variable + var n = status.match(/(\d+)/)[1]; + return ((n < cnLBOUND) || (n > cnUBOUND)); + } + catch(e) + { + return false; + } +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-100199.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-100199.js new file mode 100644 index 00000000000..8380499e5ac --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-100199.js @@ -0,0 +1,286 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" +* basis, WITHOUT WARRANTY OF ANY KIND, either expressed +* or implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. +* All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* Date: 17 September 2001 +* +* SUMMARY: Regression test for Bugzilla bug 100199 +* See http://bugzilla.mozilla.org/show_bug.cgi?id=100199 +* +* The empty character class [] is a valid RegExp construct: the condition +* that a given character belong to a set containing no characters. As such, +* it can never be met and is always FALSE. Similarly, [^] is a condition +* that matches any given character and is always TRUE. +* +* Neither one of these conditions should cause syntax errors in a RegExp. +*/ +//----------------------------------------------------------------------------- +var i = 0; +var bug = 100199; +var summary = '[], [^] are valid RegExp conditions. Should not cause errors -'; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); + + +pattern = /[]/; + string = 'abc'; + status = inSection(1); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = ''; + status = inSection(2); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = '['; + status = inSection(3); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = '/'; + status = inSection(4); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = '['; + status = inSection(5); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = ']'; + status = inSection(6); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = '[]'; + status = inSection(7); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = '[ ]'; + status = inSection(8); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = ']['; + status = inSection(9); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + +pattern = /a[]/; + string = 'abc'; + status = inSection(10); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = ''; + status = inSection(11); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = 'a['; + status = inSection(12); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = 'a[]'; + status = inSection(13); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = '['; + status = inSection(14); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = ']'; + status = inSection(15); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = '[]'; + status = inSection(16); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = '[ ]'; + status = inSection(17); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + string = ']['; + status = inSection(18); + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + +pattern = /[^]/; + string = 'abc'; + status = inSection(19); + actualmatch = string.match(pattern); + expectedmatch = Array('a'); + addThis(); + + string = ''; + status = inSection(20); + actualmatch = string.match(pattern); + expectedmatch = null; //there are no characters to test against the condition + addThis(); + + string = '\/'; + status = inSection(21); + actualmatch = string.match(pattern); + expectedmatch = Array('/'); + addThis(); + + string = '\['; + status = inSection(22); + actualmatch = string.match(pattern); + expectedmatch = Array('['); + addThis(); + + string = '['; + status = inSection(23); + actualmatch = string.match(pattern); + expectedmatch = Array('['); + addThis(); + + string = ']'; + status = inSection(24); + actualmatch = string.match(pattern); + expectedmatch = Array(']'); + addThis(); + + string = '[]'; + status = inSection(25); + actualmatch = string.match(pattern); + expectedmatch = Array('['); + addThis(); + + string = '[ ]'; + status = inSection(26); + actualmatch = string.match(pattern); + expectedmatch = Array('['); + addThis(); + + string = ']['; + status = inSection(27); + actualmatch = string.match(pattern); + expectedmatch = Array(']'); + addThis(); + + +pattern = /a[^]/; + string = 'abc'; + status = inSection(28); + actualmatch = string.match(pattern); + expectedmatch = Array('ab'); + addThis(); + + string = ''; + status = inSection(29); + actualmatch = string.match(pattern); + expectedmatch = null; //there are no characters to test against the condition + addThis(); + + string = 'a['; + status = inSection(30); + actualmatch = string.match(pattern); + expectedmatch = Array('a['); + addThis(); + + string = 'a]'; + status = inSection(31); + actualmatch = string.match(pattern); + expectedmatch = Array('a]'); + addThis(); + + string = 'a[]'; + status = inSection(32); + actualmatch = string.match(pattern); + expectedmatch = Array('a['); + addThis(); + + string = 'a[ ]'; + status = inSection(33); + actualmatch = string.match(pattern); + expectedmatch = Array('a['); + addThis(); + + string = 'a]['; + status = inSection(34); + actualmatch = string.match(pattern); + expectedmatch = Array('a]'); + addThis(); + + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-103087.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-103087.js new file mode 100644 index 00000000000..8cfc6622631 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-103087.js @@ -0,0 +1,155 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" +* basis, WITHOUT WARRANTY OF ANY KIND, either expressed +* or implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. +* All Rights Reserved. +* +* Contributor(s): bedney@technicalpursuit.com, pschwartau@netscape.com +* Date: 04 October 2001 +* +* SUMMARY: Arose from Bugzilla bug 103087: +* "The RegExp MarkupSPE in demo crashes Mozilla" +* +* See http://bugzilla.mozilla.org/show_bug.cgi?id=103087 +* The SpiderMonkey shell crashed on some of these regexps. +* +* The reported crash was on i=24 below ('MarkupSPE' regexp) +* I crashed on that, and also on i=43 ('XML_SPE' regexp) +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 103087; +var summary = "Testing that we don't crash on any of these regexps -"; +var re = ''; +var lm = ''; +var lc = ''; +var rc = ''; + + +// the regexps are built in pieces - +var NameStrt = "[A-Za-z_:]|[^\\x00-\\x7F]"; +var NameChar = "[A-Za-z0-9_:.-]|[^\\x00-\\x7F]"; +var Name = "(" + NameStrt + ")(" + NameChar + ")*"; +var TextSE = "[^<]+"; +var UntilHyphen = "[^-]*-"; +var Until2Hyphens = UntilHyphen + "([^-]" + UntilHyphen + ")*-"; +var CommentCE = Until2Hyphens + ">?"; +var UntilRSBs = "[^]]*]([^]]+])*]+"; +var CDATA_CE = UntilRSBs + "([^]>]" + UntilRSBs + ")*>"; +var S = "[ \\n\\t\\r]+"; +var QuoteSE = '"[^"]' + "*" + '"' + "|'[^']*'"; +var DT_IdentSE = S + Name + "(" + S + "(" + Name + "|" + QuoteSE + "))*"; +var MarkupDeclCE = "([^]\"'><]+|" + QuoteSE + ")*>"; +var S1 = "[\\n\\r\\t ]"; +var UntilQMs = "[^?]*\\?+"; +var PI_Tail = "\\?>|" + S1 + UntilQMs + "([^>?]" + UntilQMs + ")*>"; +var DT_ItemSE = "<(!(--" + Until2Hyphens + ">|[^-]" + MarkupDeclCE + ")|\\?" + Name + "(" + PI_Tail + "))|%" + Name + ";|" + S; +var DocTypeCE = DT_IdentSE + "(" + S + ")?(\\[(" + DT_ItemSE + ")*](" + S + ")?)?>?"; +var DeclCE = "--(" + CommentCE + ")?|\\[CDATA\\[(" + CDATA_CE + ")?|DOCTYPE(" + DocTypeCE + ")?"; +var PI_CE = Name + "(" + PI_Tail + ")?"; +var EndTagCE = Name + "(" + S + ")?>?"; +var AttValSE = '"[^<"]' + "*" + '"' + "|'[^<']*'"; +var ElemTagCE = Name + "(" + S + Name + "(" + S + ")?=(" + S + ")?(" + AttValSE + "))*(" + S + ")?/?>?"; +var MarkupSPE = "<(!(" + DeclCE + ")?|\\?(" + PI_CE + ")?|/(" + EndTagCE + ")?|(" + ElemTagCE + ")?)"; +var XML_SPE = TextSE + "|" + MarkupSPE; +var CommentRE = "'; +s += ''; +s += ''; +s += ''; +s += ''; +s += ' '; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += 'Click here to skip to main content.'; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ''; +s += ''; +s += '
'; +s += '
CNN.com'; +s += ' '; +s += ''; +s += ' '; +s += ''; +s += ''; +s += ''; +s += ''; +s += '
'; +s += '
'; +s += ''; +s += ''; +s += ' '; +s += ''; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
SEARCH
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
  The Web  CNN.com   
enhanced by Google
'; +s += '
'; +s += ''; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ''; +s += ' '; +s += ' '; +s += ''; +s += '
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
'; +s += '
SERVICES
 
 
 
SEARCH
'; +s += ''; +s += '
'; +s += ' '; +s += ' '; +s += ' '; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
WebCNN.com
enhanced by Google
'; +s += ''; +s += ''; +s += ''; +s += '
'; +s += ''; +s += '
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
Updated: 05:53 p.m. EDT (2153 GMT) June 12, 2003
'; +s += '
'; +s += ''; +s += ''; +s += ' '; +s += ' Oscar-winner Peck dies'; +s += ''; +s += '
'; +s += '

Oscar-winner Peck dies

'; +s += '

'; +s += 'Actor Gregory Peck, who won an Oscar for his portrayal of upstanding lawyer Atticus Finch in 1962s "To Kill a Mockingbird," has died at age 87. Peck was best known for roles of dignified statesmen and people who followed a strong code of ethics. But he also could play against type. All told, Peck was nominated for five Academy Awards.'; +s += '

'; +s += '

'; +s += ' FULL STORY'; +s += '

'; +s += ''; +s += ''; +s += ''; +s += '• Video: premium content A leading mans leading man
'; +s += ''; +s += ''; +s += ''; +s += ' '; +s += '• Interactive: Gregory Peck through the years
'; +s += ''; +s += ' '; +s += '• Gregory Peck filmographyexternal link
'; +s += ''; +s += ' '; +s += '• Pecks Finch chararcter AFIs top heroexternal link
'; +s += '
'; +s += ''; +s += ''; +s += '
'; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += '
'; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
MORE TOP STORIES Hot Stories
'; +s += '
'; +s += ''; +s += ' '; +s += ''; +s += ''; +s += ' '; +s += ''; +s += ''; +s += ' '; +s += ''; +s += ''; +s += ' '; +s += ''; +s += ''; +s += ' '; +s += ''; +s += ''; +s += ' '; +s += ''; +s += ''; +s += ' '; +s += ''; +s += '
'; +s += ''; +s += ''; +s += '
'; +s += ''; +s += ''; +s += ''; +s += ' '; +s += '
'; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ''; +s += ' '; +s += ' '; +s += '
'; +s += ' CNNRADIO'; +s += '
Listen to latest updates'; +s += '
'; +s += ''; +s += '
'; +s += ' '; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
VIDEOMORE VIDEO
'; +s += ' Soldier broke dozens of hearts over e-mail
'; +s += ' premium content PLAY VIDEO
'; +s += '
'; +s += ' '; +s += '
'; +s += ' '; +s += '
'; +s += ''; +s += ''; +s += '
'; +s += ''; +s += ''; +s += ''; +s += '
'; +s += '
'; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
ON THE SCENEmore reports
'; +s += ''; +s += ''; +s += ' '; +s += ' '; +s += ''; +s += ''; +s += ' '; +s += '
Jeffrey Toobin: "It takes guts" for Peterson defense to subpoena judge over wiretap issue.'; +s += 'Full Storyimage
'; +s += '
'; +s += '
'; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
BUSINESS'; +s += '  at CNN/Money  Business News
'; +s += ''; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
STOCK/FUND QUOTES:
enter symbol
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
sponsored by:Click Here
'; +s += '
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ''; +s += ' '; +s += '
MARKETS: '; +s += ''; +s += '4:30pm ET, 6/12
DJIA+13.309196.50+ 0.14%
NAS+ 7.601653.62+ 0.46%
S&P+ 1.03998.51+ 0.10%
'; +s += '
'; +s += ''; +s += '
'; +s += ''; +s += ''; +s += '
'; +s += ''; +s += ''; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
'; +s += '
'; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
MORE REAL TVMore Entertainment
'; +s += '
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
'; +s += ' '; +s += ' Go ahead, follow me
'; +s += 'New reality series and the movie debut of "Idol" finalists'; +s += '
Go ahead, follow me
'; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ' '; +s += '
'; +s += ''; +s += '
'; +s += '
'; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
GIFT IDEASBusiness News
'; +s += '
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
'; +s += ''; +s += ''; +s += 'CNN/Money: Fathers Day
'; +s += 'Smaller is better --from digital cameras to iPod'; +s += '
Fathers Day
'; +s += '
'; +s += '
'; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '

U.S. News:
'; +s += ''; +s += ' '; +s += '• Miami police link 4 rapes to serial rapist
'; +s += ''; +s += ' '; +s += '• Woman mistaken for fugitive jailed
'; +s += ''; +s += ' '; +s += '• Pregnant woman impaled on mic stand
'; +s += '
World News:
'; +s += ''; +s += ' '; +s += '• NATO reshapes for new era
'; +s += ''; +s += ' '; +s += '• U.N. reviews Bunia peace force
'; +s += ''; +s += ''; +s += ''; +s += '• TIME.com: Saddams curtain trailexternal link
'; +s += '
Sci-Tech News:
'; +s += ''; +s += ' '; +s += '• Another reason to throw out your VCR
'; +s += ''; +s += ' '; +s += '• Flat screen TV prices dropping
'; +s += '
Entertainment News:
'; +s += ''; +s += ' '; +s += '• CNN hires Soledad OBrien for "AM"
'; +s += ''; +s += ' '; +s += '• Dating show star let go by law firm
'; +s += '
Politics News:
'; +s += ''; +s += ' '; +s += '• Schwarzenegger on California politics
'; +s += ''; +s += ' '; +s += '• House approves extension on child tax credit
'; +s += '
Law News:
'; +s += ''; +s += ' '; +s += '• Court bars cash advances to plaintiffs
'; +s += ''; +s += ' '; +s += '• Lawsuit against Jackson settled
'; +s += '
Health News:
'; +s += ''; +s += ' '; +s += '• Monkeypox spreading person-to-person?
'; +s += ''; +s += ' '; +s += '• A full body X-ray in 13 seconds
'; +s += '
Space News:
'; +s += ''; +s += ' '; +s += '• Hydrogen fuel may disturb ozone layer
'; +s += ''; +s += ' '; +s += '• New threat found for shuttle launches
'; +s += '
Travel News:
'; +s += ''; +s += ' '; +s += '• Walking America from coast to coast
'; +s += ''; +s += ' '; +s += '• Airline execs not seeing sunny skies yet
'; +s += '
Education News:
'; +s += ''; +s += ' '; +s += '• Arab students seek prom balance
'; +s += ''; +s += ' '; +s += '• Public schools turn to upscale fundraising
'; +s += '
Sports News:
Business News:
'; +s += '• Here come the "Duppies"
'; +s += '• Oracle beats estimates
'; +s += '
'; +s += '
'; +s += '
'; +s += ' '; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
WATCH CNN TV
On CNN TV
'; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += '
American Morning, 7 a.m. ETAmerican Morning (7 a.m. ET): Tomorrow, singer Carnie Wilson talks about her new book, "Im Still Hungry."'; +s += '
'; +s += ''; +s += ''; +s += ''; +s += '
'; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += '
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
ANALYSIS
U.S. News
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
'; +s += 'Fight It, Martha'; +s += ''; +s += ''; +s += 'NYTimes: Fight It, Martha
'; +s += 'William Safire: I hope Martha Stewart beats this bum rap'; +s += ''; +s += ''; +s += ''; +s += ''; +s += '
'; +s += '
'; +s += '
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
OFFBEAT
more offbeat
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
'; +s += 'Waiting list'; +s += ' '; +s += ' Waiting list
'; +s += 'Chinas "smart sperm" bank needs donors'; +s += '
'; +s += '
'; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
'; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ''; +s += '
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
 WEATHER
Get your hometown weather on the home page! Enter city name or U.S. Zip Code:
Or select location from a list
'; +s += ''; +s += ''; +s += ''; +s += '
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
Quick Vote'; +s += ''; +s += 'Click Here'; +s += '
'; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += '
Should an international peacekeeping force be sent to the Mideast?
Yes'; +s += '
No'; +s += '
'; +s += ''; +s += '
VIEW RESULTS
'; +s += ''; +s += '
'; +s += ''; +s += '
'; +s += '
'; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ''; +s += '
From our Partners'; +s += '  External site icon
'; +s += 'Time:
  Subscribe to TIME  

'; +s += 'CNNsi.com:
'; +s += '• Marty Burns: Nets pull out all stops
'; +s += '• Michael Farber: Sens look good for "04
'; +s += '• Tim Layden: NFL or bust for Neuheisel
'; +s += '
'; +s += '
  Subscribe to Sports Illustrated  
'; +s += '

'; +s += 'New York Times:
  Get 50% OFF the NY Times  
'; +s += '
'; +s += ''; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
'; +s += ''; +s += ''; +s += '
'; +s += ''; +s += '
'; +s += ''; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ''; +s += ' '; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
International Edition
CNN TVCNN InternationalHeadline NewsTranscriptsPreferencesAbout CNN.com
'; +s += ''; +s += '
'; +s += ''; +s += ''; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
'; +s += '© 2003 Cable News Network LP, LLLP.
'; +s += 'An AOL Time Warner Company. All Rights Reserved.
'; +s += 'Terms under which this service is provided to you.
'; +s += 'Read our privacy guidelines. Contact us.'; +s += '
'; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += ' '; +s += '
external link
All external sites will open in a new browser.
'; +s += ' CNN.com does not endorse external sites.
'; +s += ''; +s += '
 Premium content icon Denotes premium content.
'; +s += ''; +s += '
'; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ' '; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; +s += ''; + +return s; +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-209919.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-209919.js new file mode 100644 index 00000000000..e1bb76cac25 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-209919.js @@ -0,0 +1,169 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2003 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): sagdjb@softwareag.com, pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 19 June 2003 +* SUMMARY: Testing regexp submatches with quantifiers +* +* See http://bugzilla.mozilla.org/show_bug.cgi?id=209919 +* +*/ +//----------------------------------------------------------------------------- +var i = 0; +var bug = 209919; +var summary = 'Testing regexp submatches with quantifiers'; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); + + +/* + * Waldemar: "ECMA-262 15.10.2.5, third algorithm, step 2.1 states that + * once the minimum repeat count (which is 0 for *, 1 for +, etc.) has + * been satisfied, an atom being repeated must not match the empty string." + * + * In this example, the minimum repeat count is 0, so the last thing the + * capturing parens is permitted to contain is the 'a'. It may NOT go on + * to capture the '' at the $ position of 'a', even though '' satifies + * the condition b* + * + */ +status = inSection(1); +string = 'a'; +pattern = /(a|b*)*/; +actualmatch = string.match(pattern); +expectedmatch = Array(string, 'a'); +addThis(); + + +/* + * In this example, the minimum repeat count is 5, so the capturing parens + * captures the 'a', then goes on to capture the '' at the $ position of 'a' + * 4 times before it has to stop. Therefore the last thing it contains is ''. + */ +status = inSection(2); +string = 'a'; +pattern = /(a|b*){5,}/; +actualmatch = string.match(pattern); +expectedmatch = Array(string, ''); +addThis(); + + +/* + * Reduction of the above examples to contain only the condition b* + * inside the capturing parens. This can be even harder to grasp! + * + * The global match is the '' at the ^ position of 'a', but the parens + * is NOT permitted to capture it since the minimum repeat count is 0! + */ +status = inSection(3); +string = 'a'; +pattern = /(b*)*/; +actualmatch = string.match(pattern); +expectedmatch = Array('', undefined); +addThis(); + + +/* + * Here we have used the + quantifier (repeat count 1) outside the parens. + * Therefore the parens must capture at least once before stopping, so it + * does capture the '' this time - + */ +status = inSection(4); +string = 'a'; +pattern = /(b*)+/; +actualmatch = string.match(pattern); +expectedmatch = Array('', ''); +addThis(); + + +/* + * More complex examples - + */ +pattern = /^\-?(\d{1,}|\.{0,})*(\,\d{1,})?$/; + + status = inSection(5); + string = '100.00'; + actualmatch = string.match(pattern); + expectedmatch = Array(string, '00', undefined); + addThis(); + + status = inSection(6); + string = '100,00'; + actualmatch = string.match(pattern); + expectedmatch = Array(string, '100', ',00'); + addThis(); + + status = inSection(7); + string = '1.000,00'; + actualmatch = string.match(pattern); + expectedmatch = Array(string, '000', ',00'); + addThis(); + + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-216591.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-216591.js new file mode 100644 index 00000000000..cc86d739522 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-216591.js @@ -0,0 +1,112 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2003 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): okin7@yahoo.fr, pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 19 August 2003 +* SUMMARY: Regexp conformance test +* +* See http://bugzilla.mozilla.org/show_bug.cgi?id=216591 +* +*/ +//----------------------------------------------------------------------------- +var i = 0; +var bug = 216591; +var summary = 'Regexp conformance test'; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); + + +status = inSection(1); +string = 'a {result.data.DATA} b'; +pattern = /\{(([a-z0-9\-_]+?\.)+?)([a-z0-9\-_]+?)\}/i; +actualmatch = string.match(pattern); +expectedmatch = Array('{result.data.DATA}', 'result.data.', 'data.', 'DATA'); +addThis(); + +/* + * Add a global flag to the regexp. In Perl 5, this gives the same results as above. Compare: + * + * [ ] perl -e '"a {result.data.DATA} b" =~ /\{(([a-z0-9\-_]+?\.)+?)([a-z0-9\-_]+?)\}/i; print("$&, $1, $2, $3");' + * {result.data.DATA}, result.data., data., DATA + * + * [ ] perl -e '"a {result.data.DATA} b" =~ /\{(([a-z0-9\-_]+?\.)+?)([a-z0-9\-_]+?)\}/gi; print("$&, $1, $2, $3");' + * {result.data.DATA}, result.data., data., DATA + * + * + * But in JavaScript, there will no longer be any sub-captures: + */ +status = inSection(2); +string = 'a {result.data.DATA} b'; +pattern = /\{(([a-z0-9\-_]+?\.)+?)([a-z0-9\-_]+?)\}/gi; +actualmatch = string.match(pattern); +expectedmatch = Array('{result.data.DATA}'); +addThis(); + + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-220367-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-220367-001.js new file mode 100644 index 00000000000..e6a767ec69d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-220367-001.js @@ -0,0 +1,99 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2003 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): igor@fastmail.fm, pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 26 September 2003 +* SUMMARY: Regexp conformance test +* +* See http://bugzilla.mozilla.org/show_bug.cgi?id=220367 +* +*/ +//----------------------------------------------------------------------------- +var i = 0; +var bug = 220367; +var summary = 'Regexp conformance test'; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); + + +status = inSection(1); +string = 'a'; +pattern = /(a)|(b)/; +actualmatch = string.match(pattern); +expectedmatch = Array(string, 'a', undefined); +addThis(); + +status = inSection(2); +string = 'b'; +pattern = /(a)|(b)/; +actualmatch = string.match(pattern); +expectedmatch = Array(string, undefined, 'b'); +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-220367-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-220367-002.js new file mode 100644 index 00000000000..62eec23b7e0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-220367-002.js @@ -0,0 +1,107 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2003 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): igor@fastmail.fm, pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 26 September 2003 +* SUMMARY: Regexp conformance test +* +* See http://bugzilla.mozilla.org/show_bug.cgi?id=220367 +* +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 220367; +var summary = 'Regexp conformance test'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; + +var re = /(a)|(b)/; + +re.test('a'); + status = inSection(1); + actual = RegExp.$1; + expect = 'a'; + addThis(); + + status = inSection(2); + actual = RegExp.$2; + expect = ''; + addThis(); + +re.test('b'); + status = inSection(3); + actual = RegExp.$1; + expect = ''; + addThis(); + + status = inSection(4); + actual = RegExp.$2; + expect = 'b'; + addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc('test'); + printBugNumber(bug); + printStatus(summary); + + for (var i=0; i][^<>]*[^\/])>|<([^\/<>])>/; +string = '

Some
test

'; +actualmatch = string.match(pattern); +expectedmatch = Array('

', undefined, 'p'); +addThis(); + + +//------------------------------------------------------------------------------------------------- +test(); +//------------------------------------------------------------------------------------------------- + + +function addThis() +{ + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-57572.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-57572.js new file mode 100644 index 00000000000..de9834a06fa --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-57572.js @@ -0,0 +1,129 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" +* basis, WITHOUT WARRANTY OF ANY KIND, either expressed +* or implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. +* All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* Date: 28 December 2000 +* +* SUMMARY: Testing regular expressions containing the ? character. +* Arose from Bugzilla bug 57572: "RegExp with ? matches incorrectly" +* +* See http://bugzilla.mozilla.org/show_bug.cgi?id=57572 +* +*/ +//----------------------------------------------------------------------------- +var i = 0; +var bug = 57572; +var summary = 'Testing regular expressions containing "?"'; +var cnEmptyString = ''; var cnSingleSpace = ' '; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); + + +status = inSection(1); +pattern = /(\S+)?(.*)/; +string = 'Test this'; +actualmatch = string.match(pattern); +expectedmatch = Array(string, 'Test', ' this'); //single space in front of 'this' +addThis(); + +status = inSection(2); +pattern = /(\S+)? ?(.*)/; //single space between the ? characters +string= 'Test this'; +actualmatch = string.match(pattern); +expectedmatch = Array(string, 'Test', 'this'); //NO space in front of 'this' +addThis(); + +status = inSection(3); +pattern = /(\S+)?(.*)/; +string = 'Stupid phrase, with six - (short) words'; +actualmatch = string.match(pattern); +expectedmatch = Array(string, 'Stupid', ' phrase, with six - (short) words'); //single space in front of 'phrase' +addThis(); + +status = inSection(4); +pattern = /(\S+)? ?(.*)/; //single space between the ? characters +string = 'Stupid phrase, with six - (short) words'; +actualmatch = string.match(pattern); +expectedmatch = Array(string, 'Stupid', 'phrase, with six - (short) words'); //NO space in front of 'phrase' +addThis(); + + +// let's add an extra back-reference this time - three instead of two - +status = inSection(5); +pattern = /(\S+)?( ?)(.*)/; //single space before second ? character +string = 'Stupid phrase, with six - (short) words'; +actualmatch = string.match(pattern); +expectedmatch = Array(string, 'Stupid', cnSingleSpace, 'phrase, with six - (short) words'); +addThis(); + +status = inSection(6); +pattern = /^(\S+)?( ?)(B+)$/; //single space before second ? character +string = 'AAABBB'; +actualmatch = string.match(pattern); +expectedmatch = Array(string, 'AAABB', cnEmptyString, 'B'); +addThis(); + +status = inSection(7); +pattern = /(\S+)?(!?)(.*)/; +string = 'WOW !!! !!!'; +actualmatch = string.match(pattern); +expectedmatch = Array(string, 'WOW', cnEmptyString, ' !!! !!!'); +addThis(); + +status = inSection(8); +pattern = /(.+)?(!?)(!+)/; +string = 'WOW !!! !!!'; +actualmatch = string.match(pattern); +expectedmatch = Array(string, 'WOW !!! !!', cnEmptyString, '!'); +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-57631.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-57631.js new file mode 100644 index 00000000000..1917ed4183e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-57631.js @@ -0,0 +1,128 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* Date: 26 November 2000 +* +* +* SUMMARY: This test arose from Bugzilla bug 57631: +* "RegExp with invalid pattern or invalid flag causes segfault" +* +* Either error should throw an exception of type SyntaxError, +* and we check to see that it does... +*/ +//------------------------------------------------------------------------------------------------- +var bug = '57631'; +var summary = 'Testing new RegExp(pattern,flag) with illegal pattern or flag'; +var statprefix = 'Testing for error creating illegal RegExp object on pattern '; +var statsuffix = 'and flag '; +var cnSUCCESS = 'SyntaxError'; +var cnFAILURE = 'not a SyntaxError'; +var singlequote = "'"; +var i = -1; var j = -1; var s = ''; var f = ''; +var obj = {}; +var status = ''; var actual = ''; var expect = ''; var msg = ''; +var legalpatterns = new Array(); var illegalpatterns = new Array(); +var legalflags = new Array(); var illegalflags = new Array(); + + +// valid regular expressions to try - +legalpatterns[0] = ''; +legalpatterns[1] = 'abc'; +legalpatterns[2] = '(.*)(3-1)\s\w'; +legalpatterns[3] = '(.*)(...)\\s\\w'; +legalpatterns[4] = '[^A-Za-z0-9_]'; +legalpatterns[5] = '[^\f\n\r\t\v](123.5)([4 - 8]$)'; + +// invalid regular expressions to try - +illegalpatterns[0] = '()'; +illegalpatterns[1] = '(a'; +illegalpatterns[2] = '( ]'; +illegalpatterns[3] = '\d{s}'; + +// valid flags to try - +legalflags[0] = 'i'; +legalflags[1] = 'g'; +legalflags[2] = 'm'; +legalflags[3] = undefined; + +// invalid flags to try - +illegalflags[0] = 'a'; +illegalflags[1] = 123; +illegalflags[2] = new RegExp(); + + + +//------------------------------------------------------------------------------------------------- +test(); +//------------------------------------------------------------------------------------------------- + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + testIllegalRegExps(legalpatterns, illegalflags); + testIllegalRegExps(illegalpatterns, legalflags); + testIllegalRegExps(illegalpatterns, illegalflags); + + exitFunc ('test'); +} + + +// This function will only be called where all the patterns are illegal, or all the flags +function testIllegalRegExps(patterns, flags) +{ + for (i in patterns) + { + s = patterns[i]; + + for (j in flags) + { + f = flags[j]; + status = getStatus(s, f); + + try + { + // This should cause an exception if either s or f is illegal - + eval('obj = new RegExp(s, f);'); + } + catch(e) + { + // We expect to get a SyntaxError - test for this: + actual = (e instanceof SyntaxError)? cnSUCCESS : cnFAILURE; + expect = cnSUCCESS; + reportCompare(expect, actual, status); + } + } + } +} + + +function getStatus(regexp, flag) +{ + return (statprefix + quote(regexp) + statsuffix + quote(flag)); +} + + +function quote(text) +{ + return (singlequote + text + singlequote); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-67773.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-67773.js new file mode 100644 index 00000000000..e3990507384 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-67773.js @@ -0,0 +1,190 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" +* basis, WITHOUT WARRANTY OF ANY KIND, either expressed +* or implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. +* All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* Date: 06 February 2001 +* +* SUMMARY: Arose from Bugzilla bug 67773: +* "Regular subexpressions followed by + failing to run to completion" +* +* See http://bugzilla.mozilla.org/show_bug.cgi?id=67773 +* See http://bugzilla.mozilla.org/show_bug.cgi?id=69989 +*/ +//------------------------------------------------------------------------------------------------- +var i = 0; +var bug = 67773; +var summary = 'Testing regular subexpressions followed by ? or +\n'; +var cnSingleSpace = ' '; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); + + +pattern = /^(\S+)?( ?)(B+)$/; //single space before second ? character + status = inSection(1); + string = 'AAABBB AAABBB '; //single space at middle and at end - + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + status = inSection(2); + string = 'AAABBB BBB'; //single space in the middle + actualmatch = string.match(pattern); + expectedmatch = Array(string, 'AAABBB', cnSingleSpace, 'BBB'); + addThis(); + + status = inSection(3); + string = 'AAABBB AAABBB'; //single space in the middle + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + +pattern = /^(A+B)+$/; + status = inSection(4); + string = 'AABAAB'; + actualmatch = string.match(pattern); + expectedmatch = Array(string, 'AAB'); + addThis(); + + status = inSection(5); + string = 'ABAABAAAAAAB'; + actualmatch = string.match(pattern); + expectedmatch = Array(string, 'AAAAAAB'); + addThis(); + + status = inSection(6); + string = 'ABAABAABAB'; + actualmatch = string.match(pattern); + expectedmatch = Array(string, 'AB'); + addThis(); + + status = inSection(7); + string = 'ABAABAABABB'; + actualmatch = string.match(pattern); + expectedmatch = null; // because string doesn't match at end + addThis(); + + +pattern = /^(A+1)+$/; + status = inSection(8); + string = 'AA1AA1'; + actualmatch = string.match(pattern); + expectedmatch = Array(string, 'AA1'); + addThis(); + + +pattern = /^(\w+\-)+$/; + status = inSection(9); + string = ''; + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + status = inSection(10); + string = 'bla-'; + actualmatch = string.match(pattern); + expectedmatch = Array(string, string); + addThis(); + + status = inSection(11); + string = 'bla-bla'; // hyphen missing at end - + actualmatch = string.match(pattern); + expectedmatch = null; //because string doesn't match at end + addThis(); + + status = inSection(12); + string = 'bla-bla-'; + actualmatch = string.match(pattern); + expectedmatch = Array(string, 'bla-'); + addThis(); + + +pattern = /^(\S+)+(A+)$/; + status = inSection(13); + string = 'asdldflkjAAA'; + actualmatch = string.match(pattern); + expectedmatch = Array(string, 'asdldflkjAA', 'A'); + addThis(); + + status = inSection(14); + string = 'asdldflkj AAA'; // space in middle + actualmatch = string.match(pattern); + expectedmatch = null; //because of the space + addThis(); + + +pattern = /^(\S+)+(\d+)$/; + status = inSection(15); + string = 'asdldflkj122211'; + actualmatch = string.match(pattern); + expectedmatch = Array(string, 'asdldflkj12221', '1'); + addThis(); + + status = inSection(16); + string = 'asdldflkj1111111aaa1'; + actualmatch = string.match(pattern); + expectedmatch = Array(string, 'asdldflkj1111111aaa', '1'); + addThis(); + + +/* + * This one comes from Stephen Ostermiller. + * See http://bugzilla.mozilla.org/show_bug.cgi?id=69989 + */ +pattern = /^[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)+$/; + status = inSection(17); + string = 'some.host.tld'; + actualmatch = string.match(pattern); + expectedmatch = Array(string, '.tld', '.'); + addThis(); + + + +//------------------------------------------------------------------------------------------------- +test(); +//------------------------------------------------------------------------------------------------- + + + +function addThis() +{ + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-72964.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-72964.js new file mode 100644 index 00000000000..596531313b5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-72964.js @@ -0,0 +1,100 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" +* basis, WITHOUT WARRANTY OF ANY KIND, either expressed +* or implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. +* All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* Date: 2001-07-17 +* +* SUMMARY: Regression test for Bugzilla bug 72964: +* "String method for pattern matching failed for Chinese Simplified (GB2312)" +* +* See http://bugzilla.mozilla.org/show_bug.cgi?id=72964 +*/ +//----------------------------------------------------------------------------- +var i = 0; +var bug = 72964; +var summary = 'Testing regular expressions containing non-Latin1 characters'; +var cnSingleSpace = ' '; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); + + +pattern = /[\S]+/; + // 4 low Unicode chars = Latin1; whole string should match + status = inSection(1); + string = '\u00BF\u00CD\u00BB\u00A7'; + actualmatch = string.match(pattern); + expectedmatch = Array(string); + addThis(); + + // Now put a space in the middle; first half of string should match + status = inSection(2); + string = '\u00BF\u00CD \u00BB\u00A7'; + actualmatch = string.match(pattern); + expectedmatch = Array('\u00BF\u00CD'); + addThis(); + + + // 4 high Unicode chars = non-Latin1; whole string should match + status = inSection(3); + string = '\u4e00\uac00\u4e03\u4e00'; + actualmatch = string.match(pattern); + expectedmatch = Array(string); + addThis(); + + // Now put a space in the middle; first half of string should match + status = inSection(4); + string = '\u4e00\uac00 \u4e03\u4e00'; + actualmatch = string.match(pattern); + expectedmatch = Array('\u4e00\uac00'); + addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-76683.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-76683.js new file mode 100644 index 00000000000..59b95b973a0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-76683.js @@ -0,0 +1,93 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" +* basis, WITHOUT WARRANTY OF ANY KIND, either expressed +* or implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. +* All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* Date: 01 May 2001 +* +* SUMMARY: Regression test for Bugzilla bug 76683 on Rhino: +* "RegExp regression (NullPointerException)" +* +* See http://bugzilla.mozilla.org/show_bug.cgi?id=76683 +*/ +//------------------------------------------------------------------------------------------------- +var i = 0; +var bug = 76683; +var summary = 'Regression test for Bugzilla bug 76683'; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); + + +/* + * Rhino (2001-04-19) crashed on the 3rd regular expression below. + * It didn't matter what the string was. No problem in SpiderMonkey - + */ +string = 'abc'; + status = inSection(1); + pattern = /()|(<([\$\w:\.\-]+)((([ ][^\/>]*)?\/>)|(([ ][^>]*)?>)))/; + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + status = inSection(2); + pattern = /()|(<(tagPattern)((([ ][^\/>]*)?\/>)|(([ ][^>]*)?>)))/; + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + // This was the one causing a Rhino crash - + status = inSection(3); + pattern = /()|(<(tagPattern)((([ ][^\/>]*)?\/>)|(([ ][^>]*)?>)))|(<\/tagPattern[^>]*>)/; + actualmatch = string.match(pattern); + expectedmatch = null; + addThis(); + + + +//------------------------------------------------------------------------------------------------- +test(); +//------------------------------------------------------------------------------------------------- + + + +function addThis() +{ + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-78156.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-78156.js new file mode 100644 index 00000000000..08947cecfce --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-78156.js @@ -0,0 +1,102 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" +* basis, WITHOUT WARRANTY OF ANY KIND, either expressed +* or implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. +* All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* Date: 06 February 2001 +* +* SUMMARY: Arose from Bugzilla bug 78156: +* "m flag of regular expression does not work with $" +* +* See http://bugzilla.mozilla.org/show_bug.cgi?id=78156 +* +* The m flag means a regular expression should search strings +* across multiple lines, i.e. across '\n', '\r'. +*/ +//------------------------------------------------------------------------------------------------- +var i = 0; +var bug = 78156; +var summary = 'Testing regular expressions with ^, $, and the m flag -'; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); + +/* + * All patterns have an m flag; all strings are multiline. + * Looking for digit characters at beginning/end of lines. + */ + +string = 'aaa\n789\r\nccc\r\n345'; + status = inSection(1); + pattern = /^\d/gm; + actualmatch = string.match(pattern); + expectedmatch = ['7','3']; + addThis(); + + status = inSection(2); + pattern = /\d$/gm; + actualmatch = string.match(pattern); + expectedmatch = ['9','5']; + addThis(); + +string = 'aaa\n789\r\nccc\r\nddd'; + status = inSection(3); + pattern = /^\d/gm; + actualmatch = string.match(pattern); + expectedmatch = ['7']; + addThis(); + + status = inSection(4); + pattern = /\d$/gm; + actualmatch = string.match(pattern); + expectedmatch = ['9']; + addThis(); + + + +//------------------------------------------------------------------------------------------------- +test(); +//------------------------------------------------------------------------------------------------- + + + +function addThis() +{ + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-85721.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-85721.js new file mode 100644 index 00000000000..41f5bc07a67 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-85721.js @@ -0,0 +1,271 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): rogerl@netscape.com, pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 14 Feb 2002 +* SUMMARY: Performance: Regexp performance degraded from 4.7 +* See http://bugzilla.mozilla.org/show_bug.cgi?id=85721 +* +* Adjust this testcase if necessary. The FAST constant defines +* an upper bound in milliseconds for any execution to take. +* +*/ +//----------------------------------------------------------------------------- +var bug = 85721; +var summary = 'Performance: execution of regular expression'; +var FAST = 100; // execution should be 100 ms or less to pass the test +var MSG_FAST = 'Execution took less than ' + FAST + ' ms'; +var MSG_SLOW = 'Execution took '; +var MSG_MS = ' ms'; +var str = ''; +var re = ''; +var status = ''; +var actual = ''; +var expect= ''; + +printBugNumber (bug); +printStatus (summary); + + +function elapsedTime(startTime) +{ + return new Date() - startTime; +} + + +function isThisFast(ms) +{ + if (ms <= FAST) + return MSG_FAST; + return MSG_SLOW + ms + MSG_MS; +} + + + +/* + * The first regexp. We'll test for performance (Section 1) and accuracy (Section 2). + */ +str=' www.m.com drive.class\nfoo goo '; +re = /\s*\s*([^\r\n]*?)\s*<\/sql:url>\s*\s*([^\r\n]*?)\s*<\/sql:driver>\s*(\s*\s*([^\r\n]*?)\s*<\/sql:userId>\s*)?\s*(\s*\s*([^\r\n]*?)\s*<\/sql:password>\s*)?\s*<\/sql:connection>/; +expect = Array(" www.m.com drive.class\nfoo goo ","conn1","www.m.com","drive.class","foo ","foo","goo ","goo"); + +/* + * Check performance - + */ +status = inSection(1); +var start = new Date(); +var result = re.exec(str); +actual = elapsedTime(start); +reportCompare(isThisFast(FAST), isThisFast(actual), status); + +/* + * Check accuracy - + */ +status = inSection(2); +testRegExp([status], [re], [str], [result], [expect]); + + + +/* + * The second regexp (HUGE!). We'll test for performance (Section 3) and accuracy (Section 4). + * It comes from the O'Reilly book "Mastering Regular Expressions" by Jeffrey Friedl, Appendix B + */ + +//# Some things for avoiding backslashitis later on. +$esc = '\\\\'; +$Period = '\.'; +$space = '\040'; $tab = '\t'; +$OpenBR = '\\['; $CloseBR = '\\]'; +$OpenParen = '\\('; $CloseParen = '\\)'; +$NonASCII = '\x80-\xff'; $ctrl = '\000-\037'; +$CRlist = '\n\015'; //# note: this should really be only \015. +// Items 19, 20, 21 +$qtext = '[^' + $esc + $NonASCII + $CRlist + '\"]'; // # for within "..." +$dtext = '[^' + $esc + $NonASCII + $CRlist + $OpenBR + $CloseBR + ']'; // # for within [...] +$quoted_pair = $esc + '[^' + $NonASCII + ']'; // # an escaped character + +//############################################################################## +//# Items 22 and 23, comment. +//# Impossible to do properly with a regex, I make do by allowing at most one level of nesting. +$ctext = '[^' + $esc + $NonASCII + $CRlist + '()]'; + +//# $Cnested matches one non-nested comment. +//# It is unrolled, with normal of $ctext, special of $quoted_pair. +$Cnested = + $OpenParen + // # ( + $ctext + '*' + // # normal* + '(?:' + $quoted_pair + $ctext + '*)*' + // # (special normal*)* + $CloseParen; // # ) + + +//# $comment allows one level of nested parentheses +//# It is unrolled, with normal of $ctext, special of ($quoted_pair|$Cnested) +$comment = + $OpenParen + // # ( + $ctext + '*' + // # normal* + '(?:' + // # ( + '(?:' + $quoted_pair + '|' + $Cnested + ')' + // # special + $ctext + '*' + // # normal* + ')*' + // # )* + $CloseParen; // # ) + + +//############################################################################## +//# $X is optional whitespace/comments. +$X = + '[' + $space + $tab + ']*' + // # Nab whitespace. + '(?:' + $comment + '[' + $space + $tab + ']*)*'; // # If comment found, allow more spaces. + + +//# Item 10: atom +$atom_char = '[^(' + $space + '<>\@,;:\".' + $esc + $OpenBR + $CloseBR + $ctrl + $NonASCII + ']'; +$atom = + $atom_char + '+' + // # some number of atom characters... + '(?!' + $atom_char + ')'; // # ..not followed by something that could be part of an atom + +// # Item 11: doublequoted string, unrolled. +$quoted_str = + '\"' + // # " + $qtext + '*' + // # normal + '(?:' + $quoted_pair + $qtext + '*)*' + // # ( special normal* )* + '\"'; // # " + +//# Item 7: word is an atom or quoted string +$word = + '(?:' + + $atom + // # Atom + '|' + // # or + $quoted_str + // # Quoted string + ')' + +//# Item 12: domain-ref is just an atom +$domain_ref = $atom; + +//# Item 13: domain-literal is like a quoted string, but [...] instead of "..." +$domain_lit = + $OpenBR + // # [ + '(?:' + $dtext + '|' + $quoted_pair + ')*' + // # stuff + $CloseBR; // # ] + +// # Item 9: sub-domain is a domain-ref or domain-literal +$sub_domain = + '(?:' + + $domain_ref + + '|' + + $domain_lit + + ')' + + $X; // # optional trailing comments + +// # Item 6: domain is a list of subdomains separated by dots. +$domain = + $sub_domain + + '(?:' + + $Period + $X + $sub_domain + + ')*'; + +//# Item 8: a route. A bunch of "@ $domain" separated by commas, followed by a colon. +$route = + '\@' + $X + $domain + + '(?:,' + $X + '\@' + $X + $domain + ')*' + // # additional domains + ':' + + $X; // # optional trailing comments + +//# Item 6: local-part is a bunch of $word separated by periods +$local_part = + $word + $X + '(?:' + + $Period + $X + $word + $X + // # additional words + ')*'; + +// # Item 2: addr-spec is local@domain +$addr_spec = + $local_part + '\@' + $X + $domain; + +//# Item 4: route-addr is +$route_addr = + '<' + $X + // # < + '(?:' + $route + ')?' + // # optional route + $addr_spec + // # address spec + '>'; // # > + +//# Item 3: phrase........ +$phrase_ctrl = '\000-\010\012-\037'; // # like ctrl, but without tab + +//# Like atom-char, but without listing space, and uses phrase_ctrl. +//# Since the class is negated, this matches the same as atom-char plus space and tab +$phrase_char = + '[^()<>\@,;:\".' + $esc + $OpenBR + $CloseBR + $NonASCII + $phrase_ctrl + ']'; + +// # We've worked it so that $word, $comment, and $quoted_str to not consume trailing $X +// # because we take care of it manually. +$phrase = + $word + // # leading word + $phrase_char + '*' + // # "normal" atoms and/or spaces + '(?:' + + '(?:' + $comment + '|' + $quoted_str + ')' + // # "special" comment or quoted string + $phrase_char + '*' + // # more "normal" + ')*'; + +// ## Item #1: mailbox is an addr_spec or a phrase/route_addr +$mailbox = + $X + // # optional leading comment + '(?:' + + $phrase + $route_addr + // # name and address + '|' + // # or + $addr_spec + // # address + ')'; + + +//########################################################################### + + +re = new RegExp($mailbox, "g"); +str = 'Jeffy<"That Tall Guy"@ora.com (this address is no longer active)>'; +expect = Array('Jeffy<"That Tall Guy"@ora.com (this address is no longer active)>'); + +/* + * Check performance - + */ +status = inSection(3); +var start = new Date(); +var result = re.exec(str); +actual = elapsedTime(start); +reportCompare(isThisFast(FAST), isThisFast(actual), status); + +/* + * Check accuracy - + */ +status = inSection(4); +testRegExp([status], [re], [str], [result], [expect]); diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-87231.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-87231.js new file mode 100644 index 00000000000..7fde4ff2f64 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-87231.js @@ -0,0 +1,124 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" +* basis, WITHOUT WARRANTY OF ANY KIND, either expressed +* or implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. +* All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* Date: 22 June 2001 +* +* SUMMARY: Regression test for Bugzilla bug 87231: +* "Regular expression /(A)?(A.*)/ picks 'A' twice" +* +* See http://bugzilla.mozilla.org/show_bug.cgi?id=87231 +* Key case: +* +* pattern = /^(A)?(A.*)$/; +* string = 'A'; +* expectedmatch = Array('A', '', 'A'); +* +* +* We expect the 1st subexpression (A)? NOT to consume the single 'A'. +* Recall that "?" means "match 0 or 1 times". Here, it should NOT do +* greedy matching: it should match 0 times instead of 1. This allows +* the 2nd subexpression to make the only match it can: the single 'A'. +* Such "altruism" is the only way there can be a successful global match... +*/ +//------------------------------------------------------------------------------------------------- +var i = 0; +var bug = 87231; +var cnEmptyString = ''; +var summary = 'Testing regular expression /(A)?(A.*)/'; +var status = ''; +var statusmessages = new Array(); +var pattern = ''; +var patterns = new Array(); +var string = ''; +var strings = new Array(); +var actualmatch = ''; +var actualmatches = new Array(); +var expectedmatch = ''; +var expectedmatches = new Array(); + + +pattern = /^(A)?(A.*)$/; + status = inSection(1); + string = 'AAA'; + actualmatch = string.match(pattern); + expectedmatch = Array('AAA', 'A', 'AA'); + addThis(); + + status = inSection(2); + string = 'AA'; + actualmatch = string.match(pattern); + expectedmatch = Array('AA', 'A', 'A'); + addThis(); + + status = inSection(3); + string = 'A'; + actualmatch = string.match(pattern); + expectedmatch = Array('A', undefined, 'A'); // 'altruistic' case: see above + addThis(); + + +pattern = /(A)?(A.*)/; +var strL = 'zxcasd;fl\\\ ^'; +var strR = 'aaAAaaaf;lrlrzs'; + + status = inSection(4); + string = strL + 'AAA' + strR; + actualmatch = string.match(pattern); + expectedmatch = Array('AAA' + strR, 'A', 'AA' + strR); + addThis(); + + status = inSection(5); + string = strL + 'AA' + strR; + actualmatch = string.match(pattern); + expectedmatch = Array('AA' + strR, 'A', 'A' + strR); + addThis(); + + status = inSection(6); + string = strL + 'A' + strR; + actualmatch = string.match(pattern); + expectedmatch = Array('A' + strR, undefined, 'A' + strR); // 'altruistic' case: see above + addThis(); + + + +//------------------------------------------------------------------------------------------------- +test(); +//------------------------------------------------------------------------------------------------- + + + +function addThis() +{ + statusmessages[i] = status; + patterns[i] = pattern; + strings[i] = string; + actualmatches[i] = actualmatch; + expectedmatches[i] = expectedmatch; + i++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-98306.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-98306.js new file mode 100644 index 00000000000..e812ebf3097 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/RegExp/regress-98306.js @@ -0,0 +1,77 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" +* basis, WITHOUT WARRANTY OF ANY KIND, either expressed +* or implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. +* All Rights Reserved. +* +* Contributor(s): jrgm@netscape.com, pschwartau@netscape.com +* Date: 04 September 2001 +* +* SUMMARY: Regression test for Bugzilla bug 98306 +* "JS parser crashes in ParseAtom for script using Regexp()" +* +* See http://bugzilla.mozilla.org/show_bug.cgi?id=98306 +*/ +//----------------------------------------------------------------------------- +var bug = 98306; +var summary = "Testing that we don't crash on this code -"; +var cnUBOUND = 10; +var re; +var s; + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + s = '"Hello".match(/[/]/)'; + tryThis(s); + + s = 're = /[/'; + tryThis(s); + + s = 're = /[/]/'; + tryThis(s); + + s = 're = /[//]/'; + tryThis(s); + + exitFunc ('test'); +} + + +// Try to provoke a crash - +function tryThis(sCode) +{ + // sometimes more than one attempt is necessary - + for (var i=0; i 'aaZaa' + expect = strJim.replace(new RegExp(strA), strB); // expect 'aa$aaZ' + reportCompare(expect, actual, status); + + + * + * Note: 'Zabc' is the result we expect for 'abc'.replace('', 'Z'). + * + * The string '' is supposed to be equivalent to new RegExp('') = //. + * The regexp // means we should match the "empty string" conceived of + * at the beginning boundary of the word, before the first character. + * + status = 'Section F of test'; + strA = cnEmptyString; + actual = str.replace(strA, strB); + expect = 'Zabc'; + reportCompare(expect, actual, status); + + status = 'Section G of test'; + strA = cnEmptyString; + actual = str.replace(strA, strB); + expect = str.replace(new RegExp(strA), strB); + reportCompare(expect, actual, status); + +************************* END OF INCORRECT CASES ****************************/ + + +////////////////////////// OK, LET'S START OVER ////////////////////////////// + + status = 'Section 1 of test'; + actual = 'abc'.replace('a', 'Z'); + expect = 'Zbc'; + reportCompare(expect, actual, status); + + status = 'Section 2 of test'; + actual = 'abc'.replace('b', 'Z'); + expect = 'aZc'; + reportCompare(expect, actual, status); + + status = 'Section 3 of test'; + actual = 'abc'.replace(undefined, 'Z'); + expect = 'abc'; // String(undefined) == 'undefined'; no replacement possible + reportCompare(expect, actual, status); + + status = 'Section 4 of test'; + actual = 'abc'.replace(null, 'Z'); + expect = 'abc'; // String(null) == 'null'; no replacement possible + reportCompare(expect, actual, status); + + status = 'Section 5 of test'; + actual = 'abc'.replace(true, 'Z'); + expect = 'abc'; // String(true) == 'true'; no replacement possible + reportCompare(expect, actual, status); + + status = 'Section 6 of test'; + actual = 'abc'.replace(false, 'Z'); + expect = 'abc'; // String(false) == 'false'; no replacement possible + reportCompare(expect, actual, status); + + status = 'Section 7 of test'; + actual = 'aa$aa'.replace('$', 'Z'); + expect = 'aaZaa'; // NOT 'aa$aaZ' as in ECMA Final Draft; see above + reportCompare(expect, actual, status); + + status = 'Section 8 of test'; + actual = 'abc'.replace('.*', 'Z'); + expect = 'abc'; // not 'Z' as in EMCA Final Draft + reportCompare(expect, actual, status); + + status = 'Section 9 of test'; + actual = 'abc'.replace('', 'Z'); + expect = 'Zabc'; // Still expect 'Zabc' for this + reportCompare(expect, actual, status); + + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-001-n.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-001-n.js new file mode 100644 index 00000000000..6527c1623af --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-001-n.js @@ -0,0 +1,44 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * Rob Ginda rginda@netscape.com + */ + +test(); + +function test() +{ + enterFunc ("test"); + + printStatus ("Unicode Characters 1C-1F negative test."); + printBugNumber (23612); + + reportCompare ("error", eval ("'no'\u001C+' error'"), + "Unicode whitespace test (1C.)"); + reportCompare ("error", eval ("'no'\u001D+' error'"), + "Unicode whitespace test (1D.)"); + reportCompare ("error", eval ("'no'\u001E+' error'"), + "Unicode whitespace test (1E.)"); + reportCompare ("error", eval ("'no'\u001F+' error'"), + "Unicode whitespace test (1F.)"); + + exitFunc ("test"); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-001.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-001.js new file mode 100644 index 00000000000..470e8bc7611 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-001.js @@ -0,0 +1,38 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * Rob Ginda rginda@netscape.com + */ + +test(); + +function test() +{ + enterFunc ("test"); + + printStatus ("Unicode format-control character (Category Cf) test."); + printBugNumber (23610); + + reportCompare ("no error", eval('"no\u200E error"'), + "Unicode format-control character test (Category Cf.)"); + + exitFunc ("test"); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-002-n.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-002-n.js new file mode 100644 index 00000000000..9c54a267cad --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-002-n.js @@ -0,0 +1,38 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * Rob Ginda rginda@netscape.com + */ + +test(); + +function test() +{ + enterFunc ("test"); + + printStatus ("Non-character escapes in identifiers negative test."); + printBugNumber (23607); + + reportCompare ("error", eval("\u0020 = 5"), + "Non-character escapes in identifiers negative test."); + + exitFunc ("test"); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-002.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-002.js new file mode 100644 index 00000000000..3b05d83806e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-002.js @@ -0,0 +1,42 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * Rob Ginda rginda@netscape.com + */ + +test(); + +function test() +{ + enterFunc ("test"); + + printStatus ("Unicode non-breaking space character test."); + printBugNumber (23613); + + reportCompare ("no error", eval("'no'\u00A0+ ' error'"), + "Unicode non-breaking space character test."); + + var str = "\u00A0foo"; + reportCompare (0, str.search(/^\sfoo$/), + "Unicode non-breaking space character regexp test."); + + exitFunc ("test"); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-003.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-003.js new file mode 100644 index 00000000000..7004cf4bce5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-003.js @@ -0,0 +1,53 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * Rob Ginda rginda@netscape.com + */ + +test(); + +function test() +{ + enterFunc ("test"); + + var \u0041 = 5; + var A\u03B2 = 15; + var c\u0061se = 25; + + printStatus ("Escapes in identifiers test."); + printBugNumber (23608); + printBugNumber (23607); + + reportCompare (5, eval("\u0041"), + "Escaped ASCII Identifier test."); + reportCompare (6, eval("++\u0041"), + "Escaped ASCII Identifier test"); + reportCompare (15, eval("A\u03B2"), + "Escaped non-ASCII Identifier test"); + reportCompare (16, eval("++A\u03B2"), + "Escaped non-ASCII Identifier test"); + reportCompare (25, eval("c\\u00" + "61se"), + "Escaped keyword Identifier test"); + reportCompare (26, eval("++c\\u00" + "61se"), + "Escaped keyword Identifier test"); + + exitFunc ("test"); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-004.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-004.js new file mode 100644 index 00000000000..2518124c5e3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-004.js @@ -0,0 +1,47 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * Rob Ginda rginda@netscape.com + */ + +test(); + +function test() +{ + enterFunc ("test"); + + printStatus ("Unicode Characters 1C-1F with regexps test."); + printBugNumber (23612); + + var ary = ["\u001Cfoo", "\u001Dfoo", "\u001Efoo", "\u001Ffoo"]; + + for (var i in ary) + { + reportCompare (0, ary[Number(i)].search(/^\Sfoo$/), + "Unicode characters 1C-1F in regexps, ary[" + + i + "] did not match \\S test (it should not.)"); + reportCompare (-1, ary[Number(i)].search(/^\sfoo$/), + "Unicode characters 1C-1F in regexps, ary[" + + i + "] matched \\s test (it should not.)"); + } + + exitFunc ("test"); +} diff --git a/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-005.js b/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-005.js new file mode 100644 index 00000000000..5b1be03f51c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/ecma_3/Unicode/uc-005.js @@ -0,0 +1,271 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): rogerl@netscape.com, pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 15 July 2002 +* SUMMARY: Testing identifiers with double-byte names +* See http://bugzilla.mozilla.org/show_bug.cgi?id=58274 +* +* Here is a sample of the problem: +* +* js> function f\u02B1 () {} +* +* js> f\u02B1.toSource(); +* function f() {} +* +* js> f\u02B1.toSource().toSource(); +* (new String("function f\xB1() {}")) +* +* +* See how the high-byte information (the 02) has been lost? +* The same thing was happening with the toString() method: +* +* js> f\u02B1.toString(); +* +* function f() { +* } +* +* js> f\u02B1.toString().toSource(); +* (new String("\nfunction f\xB1() {\n}\n")) +* +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 58274; +var summary = 'Testing identifiers with double-byte names'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; + + +/* + * Define a function that uses double-byte identifiers in + * "every possible way" + * + * Then recover each double-byte identifier via f.toString(). + * To make this easier, put a 'Z' token before every one. + * + * Our eval string will be: + * + * sEval = "function Z\u02b1(Z\u02b2, b) { + * try { Z\u02b3 : var Z\u02b4 = Z\u02b1; } + * catch (Z\u02b5) { for (var Z\u02b6 in Z\u02b5) + * {for (1; 1<0; Z\u02b7++) {new Array()[Z\u02b6] = 1;} };} }"; + * + * It will be helpful to build this string in stages: + */ +var s0 = 'function Z'; +var s1 = '\u02b1(Z'; +var s2 = '\u02b2, b) {try { Z'; +var s3 = '\u02b3 : var Z'; +var s4 = '\u02b4 = Z'; +var s5 = '\u02b1; } catch (Z' +var s6 = '\u02b5) { for (var Z'; +var s7 = '\u02b6 in Z'; +var s8 = '\u02b5){for (1; 1<0; Z'; +var s9 = '\u02b7++) {new Array()[Z'; +var s10 = '\u02b6] = 1;} };} }'; + + +/* + * Concatenate these and eval() to create the function Z\u02b1 + */ +var sEval = s0 + s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10; +eval(sEval); + + +/* + * Recover all the double-byte identifiers via Z\u02b1.toString(). + * We'll recover the 1st one as arrID[1], the 2nd one as arrID[2], + * and so on ... + */ +var arrID = getIdentifiers(Z\u02b1); + + +/* + * Now check that we got back what we put in - + */ +status = inSection(1); +actual = arrID[1]; +expect = s1.charAt(0); +addThis(); + +status = inSection(2); +actual = arrID[2]; +expect = s2.charAt(0); +addThis(); + +status = inSection(3); +actual = arrID[3]; +expect = s3.charAt(0); +addThis(); + +status = inSection(4); +actual = arrID[4]; +expect = s4.charAt(0); +addThis(); + +status = inSection(5); +actual = arrID[5]; +expect = s5.charAt(0); +addThis(); + +status = inSection(6); +actual = arrID[6]; +expect = s6.charAt(0); +addThis(); + +status = inSection(7); +actual = arrID[7]; +expect = s7.charAt(0); +addThis(); + +status = inSection(8); +actual = arrID[8]; +expect = s8.charAt(0); +addThis(); + +status = inSection(9); +actual = arrID[9]; +expect = s9.charAt(0); +addThis(); + +status = inSection(10); +actual = arrID[10]; +expect = s10.charAt(0); +addThis(); + + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +/* + * Goal: recover the double-byte identifiers from f.toString() + * by getting the very next character after each 'Z' token. + * + * The return value will be an array |arr| indexed such that + * |arr[1]| is the 1st identifier, |arr[2]| the 2nd, and so on. + * + * Note, however, f.toString() is implementation-independent. + * For example, it may begin with '\nfunction' instead of 'function'. + * + * Rhino uses a Unicode representation for f.toString(); whereas + * SpiderMonkey uses an ASCII representation, putting escape sequences + * for non-ASCII characters. For example, if a function is called f\u02B1, + * then in Rhino the toString() method will present a 2-character Unicode + * string for its name, whereas SpiderMonkey will present a 7-character + * ASCII string for its name: the string literal 'f\u02B1'. + * + * So we force the lexer to condense the string before we use it. + * This will give uniform results in Rhino and SpiderMonkey. + */ +function getIdentifiers(f) +{ + var str = condenseStr(f.toString()); + var arr = str.split('Z'); + + /* + * The identifiers are the 1st char of each split substring + * EXCEPT the first one, which is just ('\n' +) 'function '. + * + * Thus note the 1st identifier will be stored in |arr[1]|, + * the 2nd one in |arr[2]|, etc., making the indexing easy - + */ + for (i in arr) + arr[i] = arr[i].charAt(0); + return arr; +} + + +/* + * This function is the opposite of a functions like escape(), which take + * Unicode characters and return escape sequences for them. Here, we force + * the lexer to turn escape sequences back into single characters. + * + * Note we can't simply do |eval(str)|, since in practice |str| will be an + * identifier somewhere in the program (e.g. a function name); thus |eval(str)| + * would return the object that the identifier represents: not what we want. + * + * So we surround |str| lexicographically with quotes to force the lexer to + * evaluate it as a string. Have to strip out any linefeeds first, however - + */ +function condenseStr(str) +{ + /* + * You won't be able to do the next step if |str| has + * any carriage returns or linefeeds in it. For example: + * + * js> eval("'" + '\nHello' + "'"); + * 1: SyntaxError: unterminated string literal: + * 1: ' + * 1: ^ + * + * So replace them with the empty string - + */ + str = str.replace(/[\r\n]/g, '') + return eval("'" + str + "'") +} + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc('test'); + printBugNumber(bug); + printStatus(summary); + + for (var i=0; i +Test results, squirrelfish + + + +

Test results, squirrelfish


+

+Test List: All tests
+Skip List: ecma/Date/15.9.2.1.js, ecma/Date/15.9.2.2-1.js, ecma/Date/15.9.2.2-2.js, ecma/Date/15.9.2.2-3.js, ecma/Date/15.9.2.2-4.js, ecma/Date/15.9.2.2-5.js, ecma/Date/15.9.2.2-6.js, ecma_3/Date/15.9.5.7.js, ecma/Date/15.9.5.14.js, ecma/Date/15.9.5.31-1.js, ecma/Date/15.9.5.34-1.js
+1124 test(s) selected, 1116 test(s) completed, 44 failures reported (3.94% failed)
+Engine command line: "/Volumes/Data/Saxony/OpenSource/WebKitBuild/Debug/jsc"
+OS type: Darwin Bearclaw-Kaliber.local 12.0.0 Darwin Kernel Version 12.0.0: Fri Jun 22 20:01:10 PDT 2012; root:xnu-2050.7.7~1/RELEASE_X86_64 x86_64
+Testcase execution time: 54 seconds.
+Tests completed on Fri Sep 21 18:29:47 2012.

+[ Failure Details | Retest List | Test Selection Page ]
+


+ +

Failure Details


+
Testcase ecma_2/Exceptions/function-001.js failed Bug Number 10278
+ [ Next Failure | Top of Page ]
+
+Failure messages were:
+eval("function f(){}function g(){}") (threw no exception thrown = fail FAILED! expected: pass
+

+
Testcase ecma_2/RegExp/regress-001.js failed Bug Number http://bugzilla.mozilla.org/show_bug.cgi?id=2157
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+RegExp/hex-001.js JS regexp anchoring on empty match bug
+BUGNUMBER: http://bugzilla.mozilla.org/show_bug.cgi?id=2157
+Exception: TypeError: '/a||b/' is not a function (evaluating '/a||b/('')')
+global code@./ecma_2/RegExp/regress-001.js:18
+

+
Testcase ecma_3/FunExpr/fe-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+STATUS: Function Expression Statements basic test.
+Failure messages were:
+FAILED!: [reported from test()] Both functions were defined.
+FAILED!: [reported from test()] Expected value '1', Actual value '0'
+FAILED!: [reported from test()]
+

+
Testcase ecma_3/Statements/regress-194364.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: SyntaxError: Unexpected token '('
+eval@[native code]
+global code@./ecma_3/Statements/regress-194364.js:56
+

+
Testcase ecma_3/Unicode/uc-001.js failed Bug Number 23610
+ [ Previous Failure | Next Failure | Top of Page ]
+STATUS: Unicode format-control character (Category Cf) test.
+Failure messages were:
+FAILED!: [reported from test()] Unicode format-control character test (Category Cf.)
+FAILED!: [reported from test()] Expected value 'no error', Actual value 'no鈥 error'
+FAILED!: [reported from test()]
+

+
Testcase js1_2/Objects/toString-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+JS1_2 Object.toString()
+Exception: TypeError: '/^\{(.*)\}$/' is not a function (evaluating '/^\{(.*)\}$/(s)')
+checkObjectToString@./js1_2/Objects/toString-001.js:103
+global code@./js1_2/Objects/toString-001.js:64
+

+
Testcase js1_2/function/Function_object.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+
+Failure messages were:
+f.arity = undefined FAILED! expected: 3
+} FAILED! expected:
+

+
Testcase js1_2/function/function-001-n.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 3, got 0
+Testcase terminated with signal 0
+Complete testcase output was:
+function-001.js functions not separated by semicolons are errors in version 120 and higher
+eval("function f(){}function g(){}") = undefined PASSED!
+

+
Testcase js1_2/function/regexparg-1.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+JS_1.2 The variable statment
+Exception: TypeError: '/abc/' is not a function (evaluating 'x("hi")')
+global code@./js1_2/function/regexparg-1.js:80
+

+
Testcase js1_2/operator/equality.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+
+Failure messages were:
+(new String('x') == 'x') = true FAILED! expected: false
+('x' == new String('x')) = true FAILED! expected: false
+

+
Testcase js1_2/regexp/RegExp_lastIndex.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+
+Failure messages were:
+re=/x./g; re.lastIndex=4; re.exec('xyabcdxa') = xa FAILED! expected: ["xa"]
+re.exec('xyabcdef') = xy FAILED! expected: ["xy"]
+

+
Testcase js1_2/regexp/regress-6359.js failed Bug Number http://bugzilla.mozilla.org/show_bug.cgi?id=6359
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+BUGNUMBER: http://bugzilla.mozilla.org/show_bug.cgi?id=6359
+Exception: TypeError: '/(a*)b\1+/' is not a function (evaluating '/(a*)b\1+/("baaac")')
+global code@./js1_2/regexp/regress-6359.js:56
+

+
Testcase js1_2/regexp/regress-9141.js failed Bug Number http://bugzilla.mozilla.org/show_bug.cgi?id=9141
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+BUGNUMBER: http://bugzilla.mozilla.org/show_bug.cgi?id=9141
+Exception: TypeError: '/(?:xx|x)*/' is not a function (evaluating '/(?:xx|x)*/(s)')
+global code@./js1_2/regexp/regress-9141.js:73
+

+
Testcase js1_2/regexp/simple_form.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Executing script: simple_form.js
+As described in Netscape doc "Whats new in JavaScript 1.2" RegExp: simple form
+Exception: TypeError: '/[0-9]{3}/' is not a function (evaluating '/[0-9]{3}/('23 2 34 678 9 09')')
+global code@./js1_2/regexp/simple_form.js:43
+

+
Testcase js1_2/regexp/string_split.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+
+Failure messages were:
+'abc'.split(/[a-z]/) = ,,, FAILED! expected: ,,
+'abc'.split(/[a-z]/) = ,,, FAILED! expected: ,,
+'abc'.split(new RegExp('[a-z]')) = ,,, FAILED! expected: ,,
+'abc'.split(new RegExp('[a-z]')) = ,,, FAILED! expected: ,,
+

+
Testcase js1_2/version120/boolean-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+
+Failure messages were:
+new Boolean(false) = true FAILED! expected: false
+

+
Testcase js1_2/version120/regress-99663.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+STATUS: Regression test for Bugzilla bug 99663
+Failure messages were:
+Section 1 of test - got Error: Can't find variable: it FAILED! expected: a "read-only" error
+Section 2 of test - got Error: Can't find variable: it FAILED! expected: a "read-only" error
+Section 3 of test - got Error: Can't find variable: it FAILED! expected: a "read-only" error
+

+
Testcase js1_3/Script/function-001-n.js failed Bug Number 10278
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 3, got 0
+Testcase terminated with signal 0
+Complete testcase output was:
+BUGNUMBER: 10278
+function-001.js functions not separated by semicolons are errors in version 120 and higher
+eval("function f(){}function g(){}") = undefined PASSED!
+

+
Testcase js1_3/Script/script-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+script-001 NativeScript
+Exception: ReferenceError: Can't find variable: Script
+global code@./js1_3/Script/script-001.js:133
+

+
Testcase js1_3/regress/function-001-n.js failed Bug Number 10278
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 3, got 0
+Testcase terminated with signal 0
+Complete testcase output was:
+BUGNUMBER: 10278
+function-001.js functions not separated by semicolons are errors in version 120 and higher
+eval("function f(){}function g(){}") = undefined PASSED!
+

+
Testcase js1_5/Exceptions/catchguard-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: SyntaxError: Expected token ')'
+

+
Testcase js1_5/Exceptions/catchguard-002.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: SyntaxError: Expected token ')'
+

+
Testcase js1_5/Exceptions/catchguard-003.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: SyntaxError: Expected token ')'
+

+
Testcase js1_5/Exceptions/errstack-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: TypeError: 'undefined' is not an object (evaluating 'stackFrames[4].substring')
+global code@./js1_5/Exceptions/errstack-001.js:122
+

+
Testcase js1_5/Exceptions/regress-50447.js failed Bug Number 50447
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+BUGNUMBER: 50447
+STATUS: Test (non-ECMA) Error object properties fileName, lineNumber
+Exception: TypeError: 'undefined' is not an object (evaluating 'e.fileName.search')
+testRealError@./js1_5/Exceptions/regress-50447.js:65
+test@./js1_5/Exceptions/regress-50447.js:44
+global code@./js1_5/Exceptions/regress-50447.js:34
+

+
Testcase js1_5/GetSet/getset-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: SyntaxError: Expected an identifier but found 'getter' instead
+

+
Testcase js1_5/GetSet/getset-002.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: SyntaxError: Expected an identifier but found 'getter' instead
+

+
Testcase js1_5/GetSet/getset-003.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: SyntaxError: Expected an identifier but found 'setter' instead
+

+
Testcase js1_5/Object/regress-90596-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: TypeError: 'undefined' is not a function (evaluating 'obj.toSource()')
+global code@./js1_5/Object/regress-90596-001.js:48
+

+
Testcase js1_5/Object/regress-90596-002.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: ReferenceError: Can't find variable: uneval
+global code@./js1_5/Object/regress-90596-002.js:48
+

+
Testcase js1_5/Object/regress-96284-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: TypeError: 'undefined' is not a function (evaluating 'obj1.toSource()')
+global code@./js1_5/Object/regress-96284-001.js:49
+

+
Testcase js1_5/Object/regress-96284-002.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: ReferenceError: Can't find variable: uneval
+global code@./js1_5/Object/regress-96284-002.js:49
+

+
Testcase js1_5/Regress/regress-44009.js failed Bug Number 44009
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+BUGNUMBER: 44009
+STATUS: Testing that we don't crash on obj.toSource()
+Exception: TypeError: 'undefined' is not a function (evaluating 'obj.toSource()')
+testThis@./js1_5/Regress/regress-44009.js:60
+test@./js1_5/Regress/regress-44009.js:48
+global code@./js1_5/Regress/regress-44009.js:35
+

+
Testcase js1_5/Regress/regress-103602.js failed Bug Number 103602
+ [ Previous Failure | Next Failure | Top of Page ]
+STATUS: Reassignment to a const is NOT an error per ECMA
+Failure messages were:
+FAILED!: [reported from test()] Section 1 of test -
+FAILED!: [reported from test()] Expected value '', Actual value 'Redeclaration of a const FAILED to cause an error'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Section 3 of test -
+FAILED!: [reported from test()] Expected value '1', Actual value '2'
+FAILED!: [reported from test()]
+

+
Testcase js1_5/Regress/regress-104077.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: SyntaxError: Expected token ')'
+

+
Testcase js1_5/Regress/regress-127557.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: ReferenceError: Can't find variable: clone
+global code@./js1_5/Regress/regress-127557.js:75
+

+
Testcase js1_5/Regress/regress-172699.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: URIError: URI error
+decodeURI@[native code]
+global code@./js1_5/Regress/regress-172699.js:61
+

+
Testcase js1_5/Regress/regress-179524.js failed Bug Number 179524
+ [ Previous Failure | Next Failure | Top of Page ]
+STATUS: Don't crash on extraneous arguments to str.match(), etc.
+Failure messages were:
+FAILED!: [reported from test()] Section 14 of test -
+FAILED!: [reported from test()] Expected value 'A', Actual value 'a'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Section 15 of test -
+FAILED!: [reported from test()] Expected value 'A,a', Actual value 'a'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Section 17 of test -
+FAILED!: [reported from test()] Expected value 'A', Actual value 'a'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Section 18 of test -
+FAILED!: [reported from test()] Expected value 'A,a', Actual value 'a'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Section 20 of test -
+FAILED!: [reported from test()] Expected value 'SHOULD HAVE FALLEN INTO CATCH-BLOCK!', Actual value 'a'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Section 22 of test -
+FAILED!: [reported from test()] Expected value '0', Actual value '4'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Section 23 of test -
+FAILED!: [reported from test()] Expected value '0', Actual value '4'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Section 25 of test -
+FAILED!: [reported from test()] Expected value '0', Actual value '4'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Section 26 of test -
+FAILED!: [reported from test()] Expected value '0', Actual value '4'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Section 28 of test -
+FAILED!: [reported from test()] Type mismatch, expected type string, actual type number
+FAILED!: [reported from test()] Expected value 'SHOULD HAVE FALLEN INTO CATCH-BLOCK!', Actual value '4'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Section 30 of test -
+FAILED!: [reported from test()] Expected value 'ZBC abc', Actual value 'ABC Zbc'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Section 31 of test -
+FAILED!: [reported from test()] Expected value 'ZBC Zbc', Actual value 'ABC Zbc'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Section 33 of test -
+FAILED!: [reported from test()] Expected value 'ZBC abc', Actual value 'ABC Zbc'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Section 34 of test -
+FAILED!: [reported from test()] Expected value 'ZBC Zbc', Actual value 'ABC Zbc'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Section 36 of test -
+FAILED!: [reported from test()] Expected value 'SHOULD HAVE FALLEN INTO CATCH-BLOCK!', Actual value 'ABC Zbc'
+FAILED!: [reported from test()]
+

+
Testcase js1_5/Scope/regress-220584.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: ReferenceError: Can't find variable: Script
+global code@./js1_5/Scope/regress-220584.js:56
+

+
Testcase js1_5/Scope/scope-001.js failed Bug Number 53268
+ [ Previous Failure | Next Failure | Top of Page ]
+STATUS: Testing scope after changing obj.__proto__
+Failure messages were:
+FAILED!: [reported from test()] Step 1: setting obj.__proto__ = global object
+FAILED!: [reported from test()] Expected value '5', Actual value '1'
+FAILED!: [reported from test()]
+FAILED!: [reported from test()] Step 2: setting obj.__proto__ = null
+FAILED!: [reported from test()] Type mismatch, expected type undefined, actual type number
+FAILED!: [reported from test()] Expected value 'undefined', Actual value '1'
+FAILED!: [reported from test()]
+

+
Testcase js1_6/Regress/regress-301574.js failed Bug Number 301574
+ [ Previous Failure | Next Failure | Top of Page ]
+STATUS: E4X should be enabled even when e4x=1 not specified
+Failure messages were:
+FAILED!: E4X should be enabled even when e4x=1 not specified: XML()
+FAILED!: Expected value 'No error', Actual value 'error: ReferenceError: Can't find variable: XML'
+FAILED!:
+FAILED!: E4X should be enabled even when e4x=1 not specified: XMLList()
+FAILED!: Expected value 'No error', Actual value 'error: ReferenceError: Can't find variable: XML'
+FAILED!:
+

+
Testcase js1_6/Regress/regress-309242.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: SyntaxError: Unexpected token '<'
+

+
Testcase js1_6/Regress/regress-314887.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+Exception: SyntaxError: Unexpected token '<'
+

+
Testcase js1_6/String/regress-306591.js failed Bug Number 306591
+ [ Previous Failure | Next Failure | Top of Page ]
+Expected exit code 0, got 3
+Testcase terminated with signal 0
+Complete testcase output was:
+BUGNUMBER: 306591
+STATUS: String static methods
+STATUS: See https://bugzilla.mozilla.org/show_bug.cgi?id=304828
+Exception: TypeError: 'undefined' is not a function (evaluating 'String.split(new String('abc'), '')')
+global code@./js1_6/String/regress-306591.js:48
+

+
+[ Top of Page | Top of Failures ]
+
+
+
+

Retest List


+# Retest List, squirrelfish, generated Fri Sep 21 18:29:47 2012. +# Original test base was: All tests. +# 1116 of 1124 test(s) were completed, 44 failures reported. +ecma_2/Exceptions/function-001.js +ecma_2/RegExp/regress-001.js +ecma_3/FunExpr/fe-001.js +ecma_3/Statements/regress-194364.js +ecma_3/Unicode/uc-001.js +js1_2/Objects/toString-001.js +js1_2/function/Function_object.js +js1_2/function/function-001-n.js +js1_2/function/regexparg-1.js +js1_2/operator/equality.js +js1_2/regexp/RegExp_lastIndex.js +js1_2/regexp/regress-6359.js +js1_2/regexp/regress-9141.js +js1_2/regexp/simple_form.js +js1_2/regexp/string_split.js +js1_2/version120/boolean-001.js +js1_2/version120/regress-99663.js +js1_3/Script/function-001-n.js +js1_3/Script/script-001.js +js1_3/regress/function-001-n.js +js1_5/Exceptions/catchguard-001.js +js1_5/Exceptions/catchguard-002.js +js1_5/Exceptions/catchguard-003.js +js1_5/Exceptions/errstack-001.js +js1_5/Exceptions/regress-50447.js +js1_5/GetSet/getset-001.js +js1_5/GetSet/getset-002.js +js1_5/GetSet/getset-003.js +js1_5/Object/regress-90596-001.js +js1_5/Object/regress-90596-002.js +js1_5/Object/regress-96284-001.js +js1_5/Object/regress-96284-002.js +js1_5/Regress/regress-44009.js +js1_5/Regress/regress-103602.js +js1_5/Regress/regress-104077.js +js1_5/Regress/regress-127557.js +js1_5/Regress/regress-172699.js +js1_5/Regress/regress-179524.js +js1_5/Scope/regress-220584.js +js1_5/Scope/scope-001.js +js1_6/Regress/regress-301574.js +js1_6/Regress/regress-309242.js +js1_6/Regress/regress-314887.js +js1_6/String/regress-306591.js \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/importList.html b/Source/JavaScriptCore/tests/mozilla/importList.html new file mode 100644 index 00000000000..f9f167fc1fe --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/importList.html @@ -0,0 +1,69 @@ + + + + Import Test List + + + + + +
+
+ +  Clear all selections berofe import.
+ + +
+ +
+
+ + +Last modified: Wed Nov 17 14:18:42 PST 1999 + + + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_1/browser.js b/Source/JavaScriptCore/tests/mozilla/js1_1/browser.js new file mode 100644 index 00000000000..5bbdf7c6b99 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_1/browser.js @@ -0,0 +1,80 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): +*/ + +/* + * JavaScript test library shared functions file for running the tests + * in the browser. Overrides the shell's print function with document.write + * and make everything HTML pretty. + * + * To run the tests in the browser, use the mkhtml.pl script to generate + * html pages that include the shell.js, browser.js (this file), and the + * test js file in script tags. + * + * The source of the page that is generated should look something like this: + * + * + * + */ + +onerror = err; + +function startTest() { + if ( BUGNUMBER ) { + writeLineToLog ("BUGNUMBER: " + BUGNUMBER ); + } + + testcases = new Array(); + tc = 0; +} + +function writeLineToLog( string ) { + document.write( string + "
\n"); +} +function writeHeaderToLog( string ) { + document.write( "

" + string + "

" ); +} +function stopTest() { + var gc; + if ( gc != undefined ) { + gc(); + } + document.write( "
" ); +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = ""+ string ; + s += "" ; + s += ( passed ) ? "  " + PASSED + : " " + FAILED + expect + ""; + writeLineToLog( s + "" ); + return passed; +} +function err( msg, page, line ) { + writeLineToLog( "Test failed with the message: " + msg ); + + testcases[tc].actual = "error"; + testcases[tc].reason = msg; + writeTestCaseResult( testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual + + ": " + testcases[tc].reason ); + stopTest(); + return true; +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_1/jsref.js b/Source/JavaScriptCore/tests/mozilla/js1_1/jsref.js new file mode 100644 index 00000000000..05fcdc89fac --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_1/jsref.js @@ -0,0 +1,170 @@ +var completed = false; +var testcases; + +var BUGNUMBER=""; +var EXCLUDE = ""; + +var TT = ""; +var TT_ = ""; +var BR = ""; +var NBSP = " "; +var CR = "\n"; +var FONT = ""; +var FONT_ = ""; +var FONT_RED = ""; +var FONT_GREEN = ""; +var B = ""; +var B_ = "" +var H2 = ""; +var H2_ = ""; +var HR = ""; + +var PASSED = " PASSED!" +var FAILED = " FAILED! expected: "; + +version( 110 ); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function TestCase( n, d, e, a ) { + this.name = n; + this.description = d; + this.expect = e; + this.actual = a; + this.passed = true; + this.reason = ""; + this.bugnumber = BUGNUMBER; + + this.passed = getTestCaseResult( this.expect, this.actual ); +} +function startTest() { +/* + // JavaScript 1.3 is supposed to be compliant ecma version 1.0 + if ( VERSION == "ECMA_1" ) { + version ( "130" ); + } + if ( VERSION == "JS_1.3" ) { + version ( "130" ); + } + if ( VERSION == "JS_1.2" ) { + version ( "120" ); + } + if ( VERSION == "JS_1.1" ) { + version ( "110" ); + } + // for ecma version 2.0, we will leave the javascript version to + // the default ( for now ). +*/ +} +function getTestCaseResult( expect, actual ) { + // because ( NaN == NaN ) always returns false, need to do + // a special compare to see if we got the right result. + if ( actual != actual ) { + if ( typeof actual == "object" ) { + actual = "NaN object"; + } else { + actual = "NaN number"; + } + } + if ( expect != expect ) { + if ( typeof expect == "object" ) { + expect = "NaN object"; + } else { + expect = "NaN number"; + } + } + + var passed = ( expect == actual ) ? true : false; + + // if both objects are numbers, give a little leeway for rounding. + if ( !passed + && typeof(actual) == "number" + && typeof(expect) == "number" + ) { + if ( Math.abs(actual-expect) < 0.0000001 ) { + passed = true; + } + } + + // verify type is the same + if ( typeof(expect) != typeof(actual) ) { + passed = false; + } + + return passed; +} +function writeTestCaseResult( expect, actual, string ) { + var passed = getTestCaseResult( expect, actual ); + writeFormattedResult( expect, actual, string, passed ); + return passed; +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = TT + string ; + + for ( k = 0; + k < (60 - string.length >= 0 ? 60 - string.length : 5) ; + k++ ) { +// s += NBSP; + } + + s += B ; + s += ( passed ) ? FONT_GREEN + NBSP + PASSED : FONT_RED + NBSP + FAILED + expect + TT_ ; + + writeLineToLog( s + FONT_ + B_ + TT_ ); + + return passed; +} + +function writeLineToLog( string ) { + print( string + BR + CR ); +} +function writeHeaderToLog( string ) { + print( H2 + string + H2_ ); +} +function stopTest() { + var sizeTag = "<#TEST CASES SIZE>"; + var doneTag = "<#TEST CASES DONE>"; + var beginTag = "<#TEST CASE "; + var endTag = ">"; + + print(sizeTag); + print(testcases.length); + for (tc = 0; tc < testcases.length; tc++) + { + print(beginTag + 'PASSED' + endTag); + print(testcases[tc].passed); + print(beginTag + 'NAME' + endTag); + print(testcases[tc].name); + print(beginTag + 'EXPECTED' + endTag); + print(testcases[tc].expect); + print(beginTag + 'ACTUAL' + endTag); + print(testcases[tc].actual); + print(beginTag + 'DESCRIPTION' + endTag); + print(testcases[tc].description); + print(beginTag + 'REASON' + endTag); + print(( testcases[tc].passed ) ? "" : "wrong value "); + print(beginTag + 'BUGNUMBER' + endTag); + print( BUGNUMBER ); + } + print(doneTag); + gc(); +} +function getFailedCases() { + for ( var i = 0; i < testcases.length; i++ ) { + if ( ! testcases[i].passed ) { + print( testcases[i].description +" = " +testcases[i].actual +" expected: "+ testcases[i].expect ); + } + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_1/regress/function-001.js b/Source/JavaScriptCore/tests/mozilla/js1_1/regress/function-001.js new file mode 100644 index 00000000000..2a08b312545 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_1/regress/function-001.js @@ -0,0 +1,76 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + * File Name: boolean-001.js + * Description: + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=99232 + * + * eval("function f(){}function g(){}") at top level is an error for JS1.2 + and above (missing ; between named function expressions), but declares f + and g as functions below 1.2. + * + * Fails to produce error regardless of version: + * js> version(100) +120 +js> eval("function f(){}function g(){}") +js> version(120); +100 +js> eval("function f(){}function g(){}") +js> + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "boolean-001.js"; + var VERSION = "JS1_1"; + var TITLE = "functions not separated by semicolons are not errors in version 110 "; + var BUGNUMBER="99232"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + result = "passed"; + + testcases[tc++] = new TestCase( + SECTION, + "eval(\"function f(){}function g(){}\")", + void 0, + eval("function f(){}function g(){}") ); + + test(); + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_1/shell.js b/Source/JavaScriptCore/tests/mozilla/js1_1/shell.js new file mode 100644 index 00000000000..191e8e77864 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_1/shell.js @@ -0,0 +1,143 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): +*/ + +var completed = false; +var testcases; +var tc = 0; + +SECTION = ""; +VERSION = ""; +BUGNUMBER = ""; + +var GLOBAL = "[object global]"; +var PASSED = " PASSED!" +var FAILED = " FAILED! expected: "; + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +/* wrapper for test cas constructor that doesn't require the SECTION + * argument. + */ + +function AddTestCase( description, expect, actual ) { + testcases[tc++] = new TestCase( SECTION, description, expect, actual ); +} + +function TestCase( n, d, e, a ) { + this.name = n; + this.description = d; + this.expect = e; + this.actual = a; + this.passed = true; + this.reason = ""; + + this.passed = getTestCaseResult( this.expect, this.actual ); +} +function startTest() { + version(110); + + if ( BUGNUMBER ) { + writeLineToLog ("BUGNUMBER: " + BUGNUMBER ); + } + + testcases = new Array(); + tc = 0; +} +function getTestCaseResult( expect, actual ) { + // because ( NaN == NaN ) always returns false, need to do + // a special compare to see if we got the right result. + if ( actual != actual ) { + if ( typeof actual == "object" ) { + actual = "NaN object"; + } else { + actual = "NaN number"; + } + } + if ( expect != expect ) { + if ( typeof expect == "object" ) { + expect = "NaN object"; + } else { + expect = "NaN number"; + } + } + + var passed = ( expect == actual ) ? true : false; + + // if both objects are numbers, give a little leeway for rounding. + if ( !passed + && typeof(actual) == "number" + && typeof(expect) == "number" + ) { + if ( Math.abs(actual-expect) < 0.0000001 ) { + passed = true; + } + } + + // verify type is the same + if ( typeof(expect) != typeof(actual) ) { + passed = false; + } + + return passed; +} +/* + * Begin printing functions. These functions use the shell's + * print function. When running tests in the browser, these + * functions, override these functions with functions that use + * document.write. + */ + +function writeTestCaseResult( expect, actual, string ) { + var passed = getTestCaseResult( expect, actual ); + writeFormattedResult( expect, actual, string, passed ); + return passed; +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = string ; + s += ( passed ) ? PASSED : FAILED + expect; + writeLineToLog( s); + return passed; +} +function writeLineToLog( string ) { + print( string ); +} +function writeHeaderToLog( string ) { + print( string ); +} +/* end of print functions */ + +function stopTest() { + var gc; + if ( gc != undefined ) { + gc(); + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/Array/array_split_1.js b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/array_split_1.js new file mode 100644 index 00000000000..40761119fee --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/array_split_1.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: array_split_1.js + ECMA Section: Array.split() + Description: + + These are tests from free perl suite. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "Free Perl"; + var VERSION = "JS1_2"; + var TITLE = "Array.split()"; + + startTest(); + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + + testcases[tc++] = new TestCase( SECTION, + "('a,b,c'.split(',')).length", + 3, + ('a,b,c'.split(',')).length ); + + testcases[tc++] = new TestCase( SECTION, + "('a,b'.split(',')).length", + 2, + ('a,b'.split(',')).length ); + + testcases[tc++] = new TestCase( SECTION, + "('a'.split(',')).length", + 1, + ('a'.split(',')).length ); + +/* + * Mozilla deviates from ECMA by never splitting an empty string by any separator + * string into a non-empty array (an array of length 1 that contains the empty string). + * But Internet Explorer does not do this, so we won't do it in JavaScriptCore either. + */ + testcases[tc++] = new TestCase( SECTION, + "(''.split(',')).length", + 1, + (''.split(',')).length ); + + + + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/Array/general1.js b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/general1.js new file mode 100644 index 00000000000..7762ec4c697 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/general1.js @@ -0,0 +1,62 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: general1.js + Description: 'This tests out some of the functionality on methods on the Array objects' + + Author: Nick Lerissa + Date: Fri Feb 13 09:58:28 PST 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'String:push,unshift,shift'; + + writeHeaderToLog('Executing script: general1.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + var array1 = []; + + array1.push(123); //array1 = [123] + array1.push("dog"); //array1 = [123,dog] + array1.push(-99); //array1 = [123,dog,-99] + array1.push("cat"); //array1 = [123,dog,-99,cat] + testcases[count++] = new TestCase( SECTION, "array1.pop()", array1.pop(),'cat'); + //array1 = [123,dog,-99] + array1.push("mouse"); //array1 = [123,dog,-99,mouse] + testcases[count++] = new TestCase( SECTION, "array1.shift()", array1.shift(),123); + //array1 = [dog,-99,mouse] + array1.unshift(96); //array1 = [96,dog,-99,mouse] + testcases[count++] = new TestCase( SECTION, "state of array", String([96,"dog",-99,"mouse"]), String(array1)); + testcases[count++] = new TestCase( SECTION, "array1.length", array1.length,4); + array1.shift(); //array1 = [dog,-99,mouse] + array1.shift(); //array1 = [-99,mouse] + array1.shift(); //array1 = [mouse] + testcases[count++] = new TestCase( SECTION, "array1.shift()", array1.shift(),"mouse"); + testcases[count++] = new TestCase( SECTION, "array1.shift()", "undefined", String(array1.shift())); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/Array/general2.js b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/general2.js new file mode 100644 index 00000000000..afa45290de7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/general2.js @@ -0,0 +1,78 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: general2.js + Description: 'This tests out some of the functionality on methods on the Array objects' + + Author: Nick Lerissa + Date: Fri Feb 13 09:58:28 PST 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'String:push,splice,concat,unshift,sort'; + + writeHeaderToLog('Executing script: general2.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + array1 = new Array(); + array2 = []; + size = 10; + + // this for loop populates array1 and array2 as follows: + // array1 = [0,1,2,3,4,....,size - 2,size - 1] + // array2 = [size - 1, size - 2,...,4,3,2,1,0] + for (var i = 0; i < size; i++) + { + array1.push(i); + array2.push(size - 1 - i); + } + + // the following for loop reverses the order of array1 so + // that it should be similarly ordered to array2 + for (i = array1.length; i > 0; i--) + { + array3 = array1.slice(1,i); + array1.splice(1,i-1); + array1 = array3.concat(array1); + } + + // the following for loop reverses the order of array1 + // and array2 + for (i = 0; i < size; i++) + { + array1.push(array1.shift()); + array2.unshift(array2.pop()); + } + + testcases[count++] = new TestCase( SECTION, "Array.push,pop,shift,unshift,slice,splice", true,String(array1) == String(array2)); + array1.sort(); + array2.sort(); + testcases[count++] = new TestCase( SECTION, "Array.sort", true,String(array1) == String(array2)); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/Array/slice.js b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/slice.js new file mode 100644 index 00000000000..7b9c55d487f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/slice.js @@ -0,0 +1,123 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: slice.js + Description: 'This tests out some of the functionality on methods on the Array objects' + + Author: Nick Lerissa + Date: Fri Feb 13 09:58:28 PST 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'String:slice'; + + writeHeaderToLog('Executing script: slice.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + function mySlice(a, from, to) + { + var from2 = from; + var to2 = to; + var returnArray = []; + var i; + + if (from2 < 0) from2 = a.length + from; + if (to2 < 0) to2 = a.length + to; + + if ((to2 > from2)&&(to2 > 0)&&(from2 < a.length)) + { + if (from2 < 0) from2 = 0; + if (to2 > a.length) to2 = a.length; + + for (i = from2; i < to2; ++i) returnArray.push(a[i]); + } + return returnArray; + } + + // This function tests the slice command on an Array + // passed in. The arguments passed into slice range in + // value from -5 to the length of the array + 4. Every + // combination of the two arguments is tested. The expected + // result of the slice(...) method is calculated and + // compared to the actual result from the slice(...) method. + // If the Arrays are not similar false is returned. + function exhaustiveSliceTest(testname, a) + { + var x = 0; + var y = 0; + var errorMessage; + var reason = ""; + var passed = true; + + for (x = -(2 + a.length); x <= (2 + a.length); x++) + for (y = (2 + a.length); y >= -(2 + a.length); y--) + { + var b = a.slice(x,y); + var c = mySlice(a,x,y); + + if (String(b) != String(c)) + { + errorMessage = + "ERROR: 'TEST FAILED' ERROR: 'TEST FAILED' ERROR: 'TEST FAILED'\n" + + " test: " + "a.slice(" + x + "," + y + ")\n" + + " a: " + String(a) + "\n" + + " actual result: " + String(b) + "\n" + + " expected result: " + String(c) + "\n"; + writeHeaderToLog(errorMessage); + reason = reason + errorMessage; + passed = false; + } + } + var testCase = new TestCase(SECTION, testname, true, passed); + if (passed == false) + testCase.reason = reason; + return testCase; + } + + var a = ['a','test string',456,9.34,new String("string object"),[],['h','i','j','k']]; + var b = [1,2,3,4,5,6,7,8,9,0]; + + testcases[count++] = exhaustiveSliceTest("exhaustive slice test 1", a); + testcases[count++] = exhaustiveSliceTest("exhaustive slice test 2", b); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/Array/splice1.js b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/splice1.js new file mode 100644 index 00000000000..b2164f427ac --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/splice1.js @@ -0,0 +1,152 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: splice1.js + Description: 'Tests Array.splice(x,y) w/no var args' + + Author: Nick Lerissa + Date: Fri Feb 13 09:58:28 PST 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'String:splice 1'; + var BUGNUMBER="123795"; + + writeHeaderToLog('Executing script: splice1.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + function mySplice(testArray, splicedArray, first, len, elements) + { + var removedArray = []; + var adjustedFirst = first; + var adjustedLen = len; + + if (adjustedFirst < 0) adjustedFirst = testArray.length + first; + if (adjustedFirst < 0) adjustedFirst = 0; + + if (adjustedLen < 0) adjustedLen = 0; + + for (i = 0; (i < adjustedFirst)&&(i < testArray.length); ++i) + splicedArray.push(testArray[i]); + + if (adjustedFirst < testArray.length) + for (i = adjustedFirst; (i < adjustedFirst + adjustedLen) && + (i < testArray.length); ++i) + { + removedArray.push(testArray[i]); + } + + for (i = 0; i < elements.length; i++) splicedArray.push(elements[i]); + + for (i = adjustedFirst + adjustedLen; i < testArray.length; i++) + splicedArray.push(testArray[i]); + + return removedArray; + } + + function exhaustiveSpliceTest(testname, testArray) + { + var errorMessage; + var passed = true; + var reason = ""; + + for (var first = -(testArray.length+2); first <= 2 + testArray.length; first++) + { + var actualSpliced = []; + var expectedSpliced = []; + var actualRemoved = []; + var expectedRemoved = []; + + for (var len = 0; len < testArray.length + 2; len++) + { + actualSpliced = []; + expectedSpliced = []; + + for (var i = 0; i < testArray.length; ++i) + actualSpliced.push(testArray[i]); + + actualRemoved = actualSpliced.splice(first,len); + expectedRemoved = mySplice(testArray,expectedSpliced,first,len,[]); + + var adjustedFirst = first; + if (adjustedFirst < 0) adjustedFirst = testArray.length + first; + if (adjustedFirst < 0) adjustedFirst = 0; + + if ( (String(actualSpliced) != String(expectedSpliced)) + ||(String(actualRemoved) != String(expectedRemoved))) + { + if ( (String(actualSpliced) == String(expectedSpliced)) + &&(String(actualRemoved) != String(expectedRemoved)) ) + { + if ( (expectedRemoved.length == 1) + &&(String(actualRemoved) == String(expectedRemoved[0]))) continue; + if ( expectedRemoved.length == 0 && actualRemoved == void 0) continue; + } + + errorMessage = + "ERROR: 'TEST FAILED'\n" + + " test: " + "a.splice(" + first + "," + len + ",-97,new String('test arg'),[],9.8)\n" + + " a: " + String(testArray) + "\n" + + " actual spliced: " + String(actualSpliced) + "\n" + + " expected spliced: " + String(expectedSpliced) + "\n" + + " actual removed: " + String(actualRemoved) + "\n" + + " expected removed: " + String(expectedRemoved) + "\n"; + writeHeaderToLog(errorMessage); + reason = reason + errorMessage; + passed = false; + } + } + } + var testcase = new TestCase( SECTION, testname, true, passed); + if (!passed) + testcase.reason = reason; + return testcase; + } + + var a = ['a','test string',456,9.34,new String("string object"),[],['h','i','j','k']]; + var b = [1,2,3,4,5,6,7,8,9,0]; + + testcases[count++] = exhaustiveSpliceTest("exhaustive splice w/no optional args 1",a); + testcases[count++] = exhaustiveSpliceTest("exhaustive splice w/no optional args 1",b); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/Array/splice2.js b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/splice2.js new file mode 100644 index 00000000000..30861a5bb61 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/splice2.js @@ -0,0 +1,150 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: splice2.js + Description: 'Tests Array.splice(x,y) w/4 var args' + + Author: Nick Lerissa + Date: Fri Feb 13 09:58:28 PST 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'String:splice 2'; + var BUGNUMBER="123795"; + + writeHeaderToLog('Executing script: splice2.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + function mySplice(testArray, splicedArray, first, len, elements) + { + var removedArray = []; + var adjustedFirst = first; + var adjustedLen = len; + + if (adjustedFirst < 0) adjustedFirst = testArray.length + first; + if (adjustedFirst < 0) adjustedFirst = 0; + + if (adjustedLen < 0) adjustedLen = 0; + + for (i = 0; (i < adjustedFirst)&&(i < testArray.length); ++i) + splicedArray.push(testArray[i]); + + if (adjustedFirst < testArray.length) + for (i = adjustedFirst; (i < adjustedFirst + adjustedLen) && (i < testArray.length); ++i) + removedArray.push(testArray[i]); + + for (i = 0; i < elements.length; i++) splicedArray.push(elements[i]); + + for (i = adjustedFirst + adjustedLen; i < testArray.length; i++) + splicedArray.push(testArray[i]); + + return removedArray; + } + + function exhaustiveSpliceTestWithArgs(testname, testArray) + { + var passed = true; + var errorMessage; + var reason = ""; + for (var first = -(testArray.length+2); first <= 2 + testArray.length; first++) + { + var actualSpliced = []; + var expectedSpliced = []; + var actualRemoved = []; + var expectedRemoved = []; + + for (var len = 0; len < testArray.length + 2; len++) + { + actualSpliced = []; + expectedSpliced = []; + + for (var i = 0; i < testArray.length; ++i) + actualSpliced.push(testArray[i]); + + actualRemoved = actualSpliced.splice(first,len,-97,new String("test arg"),[],9.8); + expectedRemoved = mySplice(testArray,expectedSpliced,first,len,[-97,new String("test arg"),[],9.8]); + + var adjustedFirst = first; + if (adjustedFirst < 0) adjustedFirst = testArray.length + first; + if (adjustedFirst < 0) adjustedFirst = 0; + + + if ( (String(actualSpliced) != String(expectedSpliced)) + ||(String(actualRemoved) != String(expectedRemoved))) + { + if ( (String(actualSpliced) == String(expectedSpliced)) + &&(String(actualRemoved) != String(expectedRemoved)) ) + { + + if ( (expectedRemoved.length == 1) + &&(String(actualRemoved) == String(expectedRemoved[0]))) continue; + if ( expectedRemoved.length == 0 && actualRemoved == void 0 ) continue; + } + + errorMessage = + "ERROR: 'TEST FAILED' ERROR: 'TEST FAILED' ERROR: 'TEST FAILED'\n" + + " test: " + "a.splice(" + first + "," + len + ",-97,new String('test arg'),[],9.8)\n" + + " a: " + String(testArray) + "\n" + + " actual spliced: " + String(actualSpliced) + "\n" + + " expected spliced: " + String(expectedSpliced) + "\n" + + " actual removed: " + String(actualRemoved) + "\n" + + " expected removed: " + String(expectedRemoved); + reason = reason + errorMessage; + writeHeaderToLog(errorMessage); + passed = false; + } + } + } + var testcase = new TestCase(SECTION, testname, true, passed); + if (!passed) testcase.reason = reason; + return testcase; + } + + + var a = ['a','test string',456,9.34,new String("string object"),[],['h','i','j','k']]; + var b = [1,2,3,4,5,6,7,8,9,0]; + + testcases[count++] = exhaustiveSpliceTestWithArgs("exhaustive splice w/2 optional args 1",a); + testcases[count++] = exhaustiveSpliceTestWithArgs("exhaustive splice w/2 optional args 2",b); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/Array/tostring_1.js b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/tostring_1.js new file mode 100644 index 00000000000..b74228e4c87 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/tostring_1.js @@ -0,0 +1,138 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: tostring_1.js + ECMA Section: Array.toString() + Description: + + This checks the ToString value of Array objects under JavaScript 1.2. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "JS1_2"; + var VERSION = "JS1_2"; + startTest(); + var TITLE = "Array.toString()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var a = new Array(); + + var VERSION = 0; + + /* This test assumes that if version() exists, it can set the JavaScript + * interpreter to an arbitrary version. To prevent unhandled exceptions in + * other tests, jsc implements version() as a stub function, but + * JavaScriptCore doesn't support setting the JavaScript engine's version. + + * Commenting out the following lines forces the test to expect JavaScript + * 1.5 results. + + * If JavaScriptCore changes to support versioning, this test should split + * into a 1.2 test in js1_2/ and a 1.5 test in js1_5/. + */ + + /* + if ( typeof version == "function" ) { + version(120); + VERSION = "120"; + } else { + function version() { return 0; }; + } + */ + + testcases[tc++] = new TestCase ( SECTION, + "var a = new Array(); a.toString()", + ( VERSION == "120" ? "[]" : "" ), + a.toString() ); + + a[0] = void 0; + + testcases[tc++] = new TestCase ( SECTION, + "a[0] = void 0; a.toString()", + ( VERSION == "120" ? "[, ]" : "" ), + a.toString() ); + + + testcases[tc++] = new TestCase( SECTION, + "a.length", + 1, + a.length ); + + a[1] = void 0; + + testcases[tc++] = new TestCase( SECTION, + "a[1] = void 0; a.toString()", + ( VERSION == "120" ? "[, , ]" : "," ), + a.toString() ); + + a[1] = "hi"; + + testcases[tc++] = new TestCase( SECTION, + "a[1] = \"hi\"; a.toString()", + ( VERSION == "120" ? "[, \"hi\"]" : ",hi" ), + a.toString() ); + + a[2] = void 0; + + testcases[tc++] = new TestCase( SECTION, + "a[2] = void 0; a.toString()", + ( VERSION == "120" ?"[, \"hi\", , ]":",hi,"), + a.toString() ); + + var b = new Array(1000); + var bstring = ""; + for ( blen=0; blen<999; blen++) { + bstring += ","; + } + + + testcases[tc++] = new TestCase ( SECTION, + "var b = new Array(1000); b.toString()", + ( VERSION == "120" ? "[1000]" : bstring ), + b.toString() ); + + + testcases[tc++] = new TestCase( SECTION, + "b.length", + ( VERSION == "120" ? 1 : 1000 ), + b.length ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/Array/tostring_2.js b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/tostring_2.js new file mode 100644 index 00000000000..5ed7425bbfb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/Array/tostring_2.js @@ -0,0 +1,96 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: tostring_2.js + Reference: http://scopus.mcom.com/bugsplat/show_bug.cgi?id=114564 + Description: toString in version 120 + + + Author: christine@netscape.com + Date: 15 June 1998 +*/ + + var SECTION = "Array/tostring_2.js"; + var VERSION = "JS_12"; + startTest(); + var TITLE = "Array.toString"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var a = []; + + var VERSION = 0; + + /* This test assumes that if version() exists, it can set the JavaScript + * interpreter to an arbitrary version. To prevent unhandled exceptions in + * other tests, jsc implements version() as a stub function, but + * JavaScriptCore doesn't support setting the JavaScript engine's version. + + * Commenting out the following lines forces the test to expect JavaScript + * 1.5 results. + + * If JavaScriptCore changes to support versioning, this test should split + * into a 1.2 test in js1_2/ and a 1.5 test in js1_5/. + */ + + /* + if ( typeof version == "function" ) { + writeLineToLog("version 120"); + version(120); + VERSION = "120"; + } else { + function version() { return 0; }; + } + */ + + testcases[tc++] = new TestCase ( SECTION, + "a.toString()", + ( VERSION == "120" ? "[]" : "" ), + a.toString() ); + + testcases[tc++] = new TestCase ( SECTION, + "String( a )", + ( VERSION == "120" ? "[]" : "" ), + String( a ) ); + + testcases[tc++] = new TestCase ( SECTION, + "a +''", + ( VERSION == "120" ? "[]" : "" ), + a+"" ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/Objects/toString-001.js b/Source/JavaScriptCore/tests/mozilla/js1_2/Objects/toString-001.js new file mode 100644 index 00000000000..33976bdb91c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/Objects/toString-001.js @@ -0,0 +1,117 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: toString_1.js + ECMA Section: Object.toString() + Description: + + This checks the ToString value of Object objects under JavaScript 1.2. + + In JavaScript 1.2, Object.toString() + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "JS1_2"; + var VERSION = "JS1_2"; + startTest(); + var TITLE = "Object.toString()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var o = new Object(); + + testcases[testcases.length] = new TestCase( SECTION, + "var o = new Object(); o.toString()", + "{}", + o.toString() ); + + o = {}; + + testcases[testcases.length] = new TestCase( SECTION, + "o = {}; o.toString()", + "{}", + o.toString() ); + + o = { name:"object", length:0, value:"hello" } + + testcases[testcases.length] = new TestCase( SECTION, + "o = { name:\"object\", length:0, value:\"hello\" }; o.toString()", + true, + checkObjectToString(o.toString(), ['name:"object"', 'length:0', + 'value:"hello"'])); + + o = { name:"object", length:0, value:"hello", + toString:new Function( "return this.value+''" ) } + + testcases[testcases.length] = new TestCase( SECTION, + "o = { name:\"object\", length:0, value:\"hello\", "+ + "toString:new Function( \"return this.value+''\" ) }; o.toString()", + "hello", + o.toString() ); + + + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +/** + * checkObjectToString + * + * In JS1.2, Object.prototype.toString returns a representation of the + * object's properties as a string. However, the order of the properties + * in the resulting string is not specified. This function compares the + * resulting string with an array of strings to make sure that the + * resulting string is some permutation of the strings in the array. + */ +function checkObjectToString(s, a) { + var m = /^\{(.*)\}$/(s); + if (!m) + return false; // should begin and end with curly brackets + var a2 = m[1].split(", "); + if (a.length != a2.length) + return false; // should be same length + a.sort(); + a2.sort(); + for (var i=0; i < a.length; i++) { + if (a[i] != a2[i]) + return false; // should have identical elements + } + return true; +} + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/String/charCodeAt.js b/Source/JavaScriptCore/tests/mozilla/js1_2/String/charCodeAt.js new file mode 100644 index 00000000000..ec4a7a22861 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/String/charCodeAt.js @@ -0,0 +1,71 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: charCodeAt.js + Description: 'This tests new String object method: charCodeAt' + + Author: Nick Lerissa + Date: Fri Feb 13 09:58:28 PST 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'String:charCodeAt'; + + writeHeaderToLog('Executing script: charCodeAt.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + var aString = new String("tEs5"); + + testcases[count++] = new TestCase( SECTION, "aString.charCodeAt(-2)", NaN, aString.charCodeAt(-2)); + testcases[count++] = new TestCase( SECTION, "aString.charCodeAt(-1)", NaN, aString.charCodeAt(-1)); + testcases[count++] = new TestCase( SECTION, "aString.charCodeAt( 0)", 116, aString.charCodeAt( 0)); + testcases[count++] = new TestCase( SECTION, "aString.charCodeAt( 1)", 69, aString.charCodeAt( 1)); + testcases[count++] = new TestCase( SECTION, "aString.charCodeAt( 2)", 115, aString.charCodeAt( 2)); + testcases[count++] = new TestCase( SECTION, "aString.charCodeAt( 3)", 53, aString.charCodeAt( 3)); + testcases[count++] = new TestCase( SECTION, "aString.charCodeAt( 4)", NaN, aString.charCodeAt( 4)); + testcases[count++] = new TestCase( SECTION, "aString.charCodeAt( 5)", NaN, aString.charCodeAt( 5)); + testcases[count++] = new TestCase( SECTION, "aString.charCodeAt( Infinity)", NaN, aString.charCodeAt( Infinity)); + testcases[count++] = new TestCase( SECTION, "aString.charCodeAt(-Infinity)", NaN, aString.charCodeAt(-Infinity)); + //testcases[count++] = new TestCase( SECTION, "aString.charCodeAt( )", 116, aString.charCodeAt( )); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/String/concat.js b/Source/JavaScriptCore/tests/mozilla/js1_2/String/concat.js new file mode 100644 index 00000000000..725abb7f948 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/String/concat.js @@ -0,0 +1,96 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: concat.js + Description: 'This tests the new String object method: concat' + + Author: NickLerissa + Date: Fri Feb 13 09:58:28 PST 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'String:concat'; + + writeHeaderToLog('Executing script: concat.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + var aString = new String("test string"); + var bString = new String(" another "); + + testcases[count++] = new TestCase( SECTION, "aString.concat(' more')", "test string more", aString.concat(' more').toString()); + testcases[count++] = new TestCase( SECTION, "aString.concat(bString)", "test string another ", aString.concat(bString).toString()); + testcases[count++] = new TestCase( SECTION, "aString ", "test string", aString.toString()); + testcases[count++] = new TestCase( SECTION, "bString ", " another ", bString.toString()); + testcases[count++] = new TestCase( SECTION, "aString.concat(345) ", "test string345", aString.concat(345).toString()); + testcases[count++] = new TestCase( SECTION, "aString.concat(true) ", "test stringtrue", aString.concat(true).toString()); + testcases[count++] = new TestCase( SECTION, "aString.concat(null) ", "test stringnull", aString.concat(null).toString()); + /* + http://bugs.webkit.org/show_bug.cgi?id=11545#c3 + According to ECMA 15.5.4.6, the argument of concat should send to ToString and + convert into a string value (not String object). So these arguments will be + convert into '' and '1,2,3' under ECMA-262v3, not the js1.2 expected '[]' and + '[1,2,3]' + */ + //testcases[count++] = new TestCase( SECTION, "aString.concat([]) ", "test string[]", aString.concat([]).toString()); + //testcases[count++] = new TestCase( SECTION, "aString.concat([1,2,3])", "test string[1, 2, 3]", aString.concat([1,2,3]).toString()); + + testcases[count++] = new TestCase( SECTION, "'abcde'.concat(' more')", "abcde more", 'abcde'.concat(' more').toString()); + testcases[count++] = new TestCase( SECTION, "'abcde'.concat(bString)", "abcde another ", 'abcde'.concat(bString).toString()); + testcases[count++] = new TestCase( SECTION, "'abcde' ", "abcde", 'abcde'); + testcases[count++] = new TestCase( SECTION, "'abcde'.concat(345) ", "abcde345", 'abcde'.concat(345).toString()); + testcases[count++] = new TestCase( SECTION, "'abcde'.concat(true) ", "abcdetrue", 'abcde'.concat(true).toString()); + testcases[count++] = new TestCase( SECTION, "'abcde'.concat(null) ", "abcdenull", 'abcde'.concat(null).toString()); + /* + http://bugs.webkit.org/show_bug.cgi?id=11545#c3 + According to ECMA 15.5.4.6, the argument of concat should send to ToString and + convert into a string value (not String object). So these arguments will be + convert into '' and '1,2,3' under ECMA-262v3, not the js1.2 expected '[]' and + '[1,2,3]' + */ + //testcases[count++] = new TestCase( SECTION, "'abcde'.concat([]) ", "abcde[]", 'abcde'.concat([]).toString()); + //testcases[count++] = new TestCase( SECTION, "'abcde'.concat([1,2,3])", "abcde[1, 2, 3]", 'abcde'.concat([1,2,3]).toString()); + + //what should this do: + testcases[count++] = new TestCase( SECTION, "'abcde'.concat() ", "abcde", 'abcde'.concat().toString()); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/String/match.js b/Source/JavaScriptCore/tests/mozilla/js1_2/String/match.js new file mode 100644 index 00000000000..6c4efb4cfa0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/String/match.js @@ -0,0 +1,62 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: match.js + Description: 'This tests the new String object method: match' + + Author: NickLerissa + Date: Fri Feb 13 09:58:28 PST 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'String:match'; + + writeHeaderToLog('Executing script: match.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + var aString = new String("this is a test string"); + + testcases[count++] = new TestCase( SECTION, "aString.match(/is.*test/) ", String(["is is a test"]), String(aString.match(/is.*test/))); + testcases[count++] = new TestCase( SECTION, "aString.match(/s.*s/) ", String(["s is a test s"]), String(aString.match(/s.*s/))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/String/slice.js b/Source/JavaScriptCore/tests/mozilla/js1_2/String/slice.js new file mode 100644 index 00000000000..f0e901ec061 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/String/slice.js @@ -0,0 +1,123 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: slice.js + Description: 'This tests the String object method: slice' + + Author: Nick Lerissa + Date: Fri Feb 13 09:58:28 PST 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'String.slice'; + + writeHeaderToLog('Executing script: slice.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + function myStringSlice(a, from, to) + { + var from2 = from; + var to2 = to; + var returnString = new String(""); + var i; + + if (from2 < 0) from2 = a.length + from; + if (to2 < 0) to2 = a.length + to; + + if ((to2 > from2)&&(to2 > 0)&&(from2 < a.length)) + { + if (from2 < 0) from2 = 0; + if (to2 > a.length) to2 = a.length; + + for (i = from2; i < to2; ++i) returnString += a.charAt(i); + } + return returnString; + } + + // This function tests the slice command on a String + // passed in. The arguments passed into slice range in + // value from -5 to the length of the array + 4. Every + // combination of the two arguments is tested. The expected + // result of the slice(...) method is calculated and + // compared to the actual result from the slice(...) method. + // If the Strings are not similar false is returned. + function exhaustiveStringSliceTest(testname, a) + { + var x = 0; + var y = 0; + var errorMessage; + var reason = ""; + var passed = true; + + for (x = -(2 + a.length); x <= (2 + a.length); x++) + for (y = (2 + a.length); y >= -(2 + a.length); y--) + { + var b = a.slice(x,y); + var c = myStringSlice(a,x,y); + + if (String(b) != String(c)) + { + errorMessage = + "ERROR: 'TEST FAILED' ERROR: 'TEST FAILED' ERROR: 'TEST FAILED'\n" + + " test: " + "a.slice(" + x + "," + y + ")\n" + + " a: " + String(a) + "\n" + + " actual result: " + String(b) + "\n" + + " expected result: " + String(c) + "\n"; + writeHeaderToLog(errorMessage); + reason = reason + errorMessage; + passed = false; + } + } + var testCase = new TestCase(SECTION, testname, true, passed); + if (passed == false) + testCase.reason = reason; + return testCase; + } + + var a = new String("abcdefghijklmnopqrstuvwxyz1234567890"); + var b = new String("this is a test string"); + + testcases[count++] = exhaustiveStringSliceTest("exhaustive String.slice test 1", a); + testcases[count++] = exhaustiveStringSliceTest("exhaustive String.slice test 2", b); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/browser.js b/Source/JavaScriptCore/tests/mozilla/js1_2/browser.js new file mode 100644 index 00000000000..8b298a097e0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/browser.js @@ -0,0 +1,83 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/* + * JavaScript test library shared functions file for running the tests + * in the browser. Overrides the shell's print function with document.write + * and make everything HTML pretty. + * + * To run the tests in the browser, use the mkhtml.pl script to generate + * html pages that include the shell.js, browser.js (this file), and the + * test js file in script tags. + * + * The source of the page that is generated should look something like this: + * + * + * + */ + +onerror = err; + +var GLOBAL = "[object Window]"; + +function startTest() { + writeHeaderToLog( SECTION + " "+ TITLE); + if ( BUGNUMBER ) { + writeLineToLog ("BUGNUMBER: " + BUGNUMBER ); + } + + testcases = new Array(); + tc = 0; +} + +function writeLineToLog( string ) { + document.write( string + "
\n"); +} +function writeHeaderToLog( string ) { + document.write( "

" + string + "

" ); +} +function stopTest() { + var gc; + if ( gc != undefined ) { + gc(); + } + document.write( "
" ); +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = ""+ string ; + s += "" ; + s += ( passed ) ? "  " + PASSED + : " " + FAILED + expect + ""; + writeLineToLog( s + "" ); + return passed; +} +function err ( msg, page, line ) { + writeLineToLog( "Test " + page + " failed on line " + line +" with the message: " + msg ); + + testcases[tc].actual = "error"; + testcases[tc].reason = msg; + writeTestCaseResult( testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual + + ": " + testcases[tc].reason ); + stopTest(); + return true; +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/function/Function_object.js b/Source/JavaScriptCore/tests/mozilla/js1_2/function/Function_object.js new file mode 100644 index 00000000000..1dec16a5d3a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/function/Function_object.js @@ -0,0 +1,85 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: Function_object.js + Description: 'Testing Function objects' + + Author: Nick Lerissa + Date: April 17, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'functions: Function_object'; + + writeHeaderToLog('Executing script: Function_object.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + function a_test_function(a,b,c) + { + return a + b + c; + } + + f = a_test_function; + + + testcases[count++] = new TestCase( SECTION, "f.name", + 'a_test_function', f.name); + + testcases[count++] = new TestCase( SECTION, "f.length", + 3, f.length); + + testcases[count++] = new TestCase( SECTION, "f.arity", + 3, f.arity); + + testcases[count++] = new TestCase( SECTION, "f(2,3,4)", + 9, f(2,3,4)); + + var fnName = version() == 120 ? '' : 'anonymous'; + + testcases[count++] = new TestCase( SECTION, "(new Function()).name", + fnName, (new Function()).name); + + testcases[count++] = new TestCase( SECTION, "(new Function()).toString()", + '\nfunction ' + fnName + '() {\n}\n', (new Function()).toString()); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/function/Number.js b/Source/JavaScriptCore/tests/mozilla/js1_2/function/Number.js new file mode 100644 index 00000000000..9586f78fe5c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/function/Number.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: Number.js + Description: 'This tests the function Number(Object)' + + Author: Nick Lerissa + Date: Fri Feb 13 09:58:28 PST 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'functions: Number'; + var BUGNUMBER="123435"; + + writeHeaderToLog('Executing script: Number.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + date = new Date(2200); + + testcases[count++] = new TestCase( SECTION, "Number(new Date(2200)) ", + 2200, (Number(date))); + testcases[count++] = new TestCase( SECTION, "Number(true) ", + 1, (Number(true))); + testcases[count++] = new TestCase( SECTION, "Number(false) ", + 0, (Number(false))); + testcases[count++] = new TestCase( SECTION, "Number('124') ", + 124, (Number('124'))); + testcases[count++] = new TestCase( SECTION, "Number('1.23') ", + 1.23, (Number('1.23'))); + testcases[count++] = new TestCase( SECTION, "Number({p:1}) ", + NaN, (Number({p:1}))); + testcases[count++] = new TestCase( SECTION, "Number(null) ", + 0, (Number(null))); + testcases[count++] = new TestCase( SECTION, "Number(-45) ", + -45, (Number(-45))); + + // http://scopus.mcom.com/bugsplat/show_bug.cgi?id=123435 + // under js1.2, Number([1,2,3]) should return 3. + + /* + http://bugs.webkit.org/show_bug.cgi?id=11545#c4 + According to ECMA 9.3, when input type was Object, should call + ToPrimitive(input arg, hint Number) first, and than ToNumber() later. However, + ToPrimitive() will use [[DefaultValue]](hint) rule when input Type was Object + (ECMA 8.6.2.6). So the input [1,2,3] will applied [[DefaultValue]](hint) rule + with hint Number, and it looks like this: + + toString(valuOf([1,2,3])) => toString(1,2,3) => '1,2,3' + + Than ToNumber('1,2,3') results NaN based on ECMA 9.3.1: If the grammar cannot + interpret the string as an expansion of StringNumericLiteral, then the result + of ToNumber is NaN. + */ + + //testcases[count++] = new TestCase( SECTION, "Number([1,2,3]) ", + // 3, (Number([1,2,3]))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/function/String.js b/Source/JavaScriptCore/tests/mozilla/js1_2/function/String.js new file mode 100644 index 00000000000..724c392f6f9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/function/String.js @@ -0,0 +1,99 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: String.js + Description: 'This tests the function String(Object)' + + Author: Nick Lerissa + Date: Fri Feb 13 09:58:28 PST 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'functions: String'; + + writeHeaderToLog('Executing script: String.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + testcases[count++] = new TestCase( SECTION, "String(true) ", + 'true', (String(true))); + testcases[count++] = new TestCase( SECTION, "String(false) ", + 'false', (String(false))); + testcases[count++] = new TestCase( SECTION, "String(-124) ", + '-124', (String(-124))); + testcases[count++] = new TestCase( SECTION, "String(1.23) ", + '1.23', (String(1.23))); + /* + http://bugs.webkit.org/show_bug.cgi?id=11545#c5 + According to ECMA 9.8, when input type of String object argument was Object, we + should applied ToPrimitive(input arg, hint String) first, and later ToString(). + And just like previous one, ToPrimitive() will use [[DefaultValue]](hint) + with hint String to convert the input (toString() below uses the rule in ECMA 15.2.4.2): + + valueOf(toString({p:1}) => valueOf('[object Object]') => '[object Object]' + + And ToString() called after ToPrimitive(), so the correct result would be: + + [object Object] + */ + //testcases[count++] = new TestCase( SECTION, "String({p:1}) ", + // '{p:1}', (String({p:1}))); + testcases[count++] = new TestCase( SECTION, "String(null) ", + 'null', (String(null))); + /* + http://bugs.webkit.org/show_bug.cgi?id=11545#c5 + According to ECMA 9.8, when input type of String object argument was Object, we + should applied ToPrimitive(input arg, hint String) first, and later ToString(). + And just like previous one, ToPrimitive() will use [[DefaultValue]](hint) + with hint String to convert the input (toString() below uses the rule in ECMA 15.2.4.2): + + valueOf(toString([1,2,3])) => valueOf('1,2,3') => '1,2,3' + + And ToString() called after ToPrimitive(), so the correct result would be: + + 1,2,3 + */ + //testcases[count++] = new TestCase( SECTION, "String([1,2,3]) ", + // '[1, 2, 3]', (String([1,2,3]))); + + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/function/definition-1.js b/Source/JavaScriptCore/tests/mozilla/js1_2/function/definition-1.js new file mode 100644 index 00000000000..6daea713f18 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/function/definition-1.js @@ -0,0 +1,73 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: definition-1.js + Reference: http://scopus.mcom.com/bugsplat/show_bug.cgi?id=111284 + Description: Regression test for declaring functions. + + Author: christine@netscape.com + Date: 15 June 1998 +*/ + + var SECTION = "function/definition-1.js"; + var VERSION = "JS_12"; + startTest(); + var TITLE = "Regression test for 111284"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + f1 = function() { return "passed!" } + + function f2() { f3 = function() { return "passed!" }; return f3(); } + + testcases[tc++] = new TestCase( SECTION, + 'f1 = function() { return "passed!" }; f1()', + "passed!", + f1() ); + + testcases[tc++] = new TestCase( SECTION, + 'function f2() { f3 = function { return "passed!" }; return f3() }; f2()', + "passed!", + f2() ); + + testcases[tc++] = new TestCase( SECTION, + 'f3()', + "passed!", + f3() ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/function/function-001-n.js b/Source/JavaScriptCore/tests/mozilla/js1_2/function/function-001-n.js new file mode 100644 index 00000000000..99e0442292b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/function/function-001-n.js @@ -0,0 +1,74 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + * File Name: boolean-001.js + * Description: + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=99232 + * + * eval("function f(){}function g(){}") at top level is an error for JS1.2 + * and above (missing ; between named function expressions), but declares f + * and g as functions below 1.2. + * + * Fails to produce error regardless of version: + * js> version(100) + * 120 + * js> eval("function f(){}function g(){}") + * js> version(120); + * 100 + * js> eval("function f(){}function g(){}") + * js> + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "function-001.js"; + var VERSION = "JS1_1"; + startTest(); + var TITLE = "functions not separated by semicolons are errors in version 120 and higher"; + var BUGNUMBER="99232"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( + SECTION, + "eval(\"function f(){}function g(){}\")", + undefined, + eval("function f(){}function g(){}") ); + + test(); + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/function/length.js b/Source/JavaScriptCore/tests/mozilla/js1_2/function/length.js new file mode 100644 index 00000000000..aae30d5c9b7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/function/length.js @@ -0,0 +1,93 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: 15.3.5.1.js + ECMA Section: Function.length + Description: + + The value of the length property is usually an integer that indicates the + "typical" number of arguments expected by the function. However, the + language permits the function to be invoked with some other number of + arguments. The behavior of a function when invoked on a number of arguments + other than the number specified by its length property depends on the function. + + This checks the pre-ecma behavior Function.length. + + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=104204 + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "function/length.js"; + var VERSION = "ECMA_1"; + startTest(); + var TITLE = "Function.length"; + var BUGNUMBER="104204"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var f = new Function( "a","b", "c", "return f.length"); + + if ( version() <= 120 ) { + + testcases[tc++] = new TestCase( SECTION, + 'var f = new Function( "a","b", "c", "return f.length"); f()', + 0, + f() ); + + testcases[tc++] = new TestCase( SECTION, + 'var f = new Function( "a","b", "c", "return f.length"); f(1,2,3,4,5)', + 5, + f(1,2,3,4,5) ); + } else { + + testcases[tc++] = new TestCase( SECTION, + 'var f = new Function( "a","b", "c", "return f.length"); f()', + 3, + f() ); + + testcases[tc++] = new TestCase( SECTION, + 'var f = new Function( "a","b", "c", "return f.length"); f(1,2,3,4,5)', + 3, + f(1,2,3,4,5) ); + + + } + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/function/nesting-1.js b/Source/JavaScriptCore/tests/mozilla/js1_2/function/nesting-1.js new file mode 100644 index 00000000000..391f926d2fb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/function/nesting-1.js @@ -0,0 +1,61 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: nesting-1.js + Reference: http://scopus.mcom.com/bugsplat/show_bug.cgi?id=122040 + Description: Regression test for a nested function + + Author: christine@netscape.com + Date: 15 June 1998 +*/ + + var SECTION = "function/nesting-1.js"; + var VERSION = "JS_12"; + startTest(); + var TITLE = "Regression test for 122040"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + function f(a) {function g(b) {return a+b;}; return g;}; f(7) + + testcases[tc++] = new TestCase( SECTION, + 'function f(a) {function g(b) {return a+b;}; return g;}; typeof f(7)', + "function", + typeof f(7) ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/function/nesting.js b/Source/JavaScriptCore/tests/mozilla/js1_2/function/nesting.js new file mode 100644 index 00000000000..b626da59d19 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/function/nesting.js @@ -0,0 +1,83 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: nesting.js + Description: 'This tests the nesting of functions' + + Author: Nick Lerissa + Date: Fri Feb 13 09:58:28 PST 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'functions: nesting'; + + writeHeaderToLog('Executing script: nesting.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + function outer_func(x) + { + var y = "outer"; + + testcases[count++] = new TestCase( SECTION, "outer:x ", + 1111, x); + testcases[count++] = new TestCase( SECTION, "outer:y ", + 'outer', y); + function inner_func(x) + { + var y = "inner"; + testcases[count++] = new TestCase( SECTION, "inner:x ", + 2222, x); + testcases[count++] = new TestCase( SECTION, "inner:y ", + 'inner', y); + }; + + inner_func(2222); + testcases[count++] = new TestCase( SECTION, "outer:x ", + 1111, x); + testcases[count++] = new TestCase( SECTION, "outer:y ", + 'outer', y); + } + + outer_func(1111); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/function/regexparg-1.js b/Source/JavaScriptCore/tests/mozilla/js1_2/function/regexparg-1.js new file mode 100644 index 00000000000..b01825c44c8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/function/regexparg-1.js @@ -0,0 +1,98 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: regexparg-1.js + Description: + + Regression test for + http://scopus/bugsplat/show_bug.cgi?id=122787 + Passing a regular expression as the first constructor argument fails + + Author: christine@netscape.com + Date: 15 June 1998 +*/ + + var SECTION = "JS_1.2"; + var VERSION = "JS_1.2"; + startTest(); + var TITLE = "The variable statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + function f(x) {return x;} + + x = f(/abc/); + + testcases[tc++] = new TestCase( SECTION, + "function f(x) {return x;}; f()", + void 0, + f() ); + + testcases[tc++] = new TestCase( SECTION, + "f(\"hi\")", + "hi", + f("hi") ); + + testcases[tc++] = new TestCase( SECTION, + "new f(/abc/) +''", + "/abc/", + new f(/abc/) +"" ); + + testcases[tc++] = new TestCase( SECTION, + "f(/abc/)+'')", + "/abc/", + f(/abc/) +''); + + testcases[tc++] = new TestCase( SECTION, + "typeof f(/abc/)", + "function", + typeof f(/abc/) ); + + testcases[tc++] = new TestCase( SECTION, + "typeof new f(/abc/)", + "function", + typeof new f(/abc/) ); + + testcases[tc++] = new TestCase( SECTION, + "x = new f(/abc/); x(\"hi\")", + null, + x("hi") ); + + + // js> x() + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/function/regexparg-2-n.js b/Source/JavaScriptCore/tests/mozilla/js1_2/function/regexparg-2-n.js new file mode 100644 index 00000000000..e8bf95195d2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/function/regexparg-2-n.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: regexparg-1.js + Description: + + Regression test for + http://scopus/bugsplat/show_bug.cgi?id=122787 + Passing a regular expression as the first constructor argument fails + + Author: christine@netscape.com + Date: 15 June 1998 +*/ + + var SECTION = "JS_1.2"; + var VERSION = "JS_1.2"; + startTest(); + var TITLE = "The variable statment"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + function f(x) {return x;} + + x = f(/abc/); + + testcases[tc++] = new TestCase( SECTION, + "function f(x) {return x;}; x = f(/abc/); x()", + "error", + x() ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/function/tostring-1.js b/Source/JavaScriptCore/tests/mozilla/js1_2/function/tostring-1.js new file mode 100644 index 00000000000..cf83f48c1af --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/function/tostring-1.js @@ -0,0 +1,152 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: tostring-1.js + Section: Function.toString + Description: + + Since the behavior of Function.toString() is implementation-dependent, + toString tests for function are not in the ECMA suite. + + Currently, an attempt to parse the toString output for some functions + and verify that the result is something reasonable. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + +// These test cases should not be testing for a particular +// whitespace formatting (this is implementation defined). +// Strip out whitespace, or in the case of whitespace +// abutting a word character reduce to a single space. +function simplify(str) +{ + return str.replace(/\s+/g, " ").replace(/ (\W)/g, "$1").replace(/(\W) /g, "$1").trim(); +} + + var SECTION = "tostring-1"; + var VERSION = "JS1_2"; + startTest(); + var TITLE = "Function.toString()"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var tab = " "; + + t1 = new TestFunction( "stub", "value", tab + "return value;" ); + + t2 = new TestFunction( "ToString", "object", tab+"return object + \"\";" ); + + t3 = new TestFunction( "Add", "a, b, c, d, e", tab +"var s = a + b + c + d + e;\n" + + tab + "return s;" ); + + t4 = new TestFunction( "noop", "value" ); + + t5 = new TestFunction( "anonymous", "", tab+"return \"hello!\";" ); + + var f = new Function( "return \"hello!\""); + + testcases[tc++] = new TestCase( SECTION, + "stub.toString()", + simplify(t1.valueOf()), + simplify(stub.toString()) ); + + testcases[tc++] = new TestCase( SECTION, + "ToString.toString()", + simplify(t2.valueOf()), + simplify(ToString.toString()) ); + + testcases[tc++] = new TestCase( SECTION, + "Add.toString()", + simplify(t3.valueOf()), + simplify(Add.toString()) ); + + testcases[tc++] = new TestCase( SECTION, + "noop.toString()", + simplify(t4.toString()), + simplify(noop.toString()) ); + + testcases[tc++] = new TestCase( SECTION, + "f.toString()", + simplify(t5.toString()), + simplify(f.toString()) ); + test(); + +function noop( value ) { +} +function Add( a, b, c, d, e ) { + var s = a + b + c + d + e; + return s; +} +function stub( value ) { + return value; +} +function ToString( object ) { + return object + ""; +} + +function ToBoolean( value ) { + if ( value == 0 || value == NaN || value == false ) { + return false; + } else { + return true; + } +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function TestFunction( name, args, body ) { + if ( name == "anonymous" && version() == 120 ) { + name = ""; + } + + this.name = name; + this.arguments = args.toString(); + this.body = body; + + /* the format of Function.toString() in JavaScript 1.2 is: + /n + function name ( arguments ) { + body + } + */ + this.value = "\nfunction " + (name ? name : "" )+ + "("+args+") {\n"+ (( body ) ? body +"\n" : "") + "}\n"; + + this.toString = new Function( "return this.value" ); + this.valueOf = new Function( "return this.value" ); + return this; +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/function/tostring-2.js b/Source/JavaScriptCore/tests/mozilla/js1_2/function/tostring-2.js new file mode 100644 index 00000000000..8858d194e91 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/function/tostring-2.js @@ -0,0 +1,198 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: tostring-1.js + Section: Function.toString + Description: + + Since the behavior of Function.toString() is implementation-dependent, + toString tests for function are not in the ECMA suite. + + Currently, an attempt to parse the toString output for some functions + and verify that the result is something reasonable. + + This verifies + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=99212 + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + +// These test cases should not be testing for a particular +// whitespace formatting (this is implementation defined). +// Strip out whitespace, or in the case of whitespace +// abutting a word character reduce to a single space. +function simplify(str) +{ + return str.replace(/\s+/g, " ").replace(/ (\W)/g, "$1").replace(/(\W) /g, "$1").trim(); +} + + var SECTION = "tostring-2"; + var VERSION = "JS1_2"; + startTest(); + var TITLE = "Function.toString()"; + var BUGNUMBER="123444"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var tab = " "; + + +var equals = new TestFunction( "Equals", "a, b", tab+ "return a == b;" ); +function Equals (a, b) { + return a == b; +} + +var reallyequals = new TestFunction( "ReallyEquals", "a, b", + ( version() <= 120 ) ? tab +"return a == b;" : tab +"return a === b;" ); +function ReallyEquals( a, b ) { + return a === b; +} + +var doesntequal = new TestFunction( "DoesntEqual", "a, b", tab + "return a != b;" ); +function DoesntEqual( a, b ) { + return a != b; +} + +var reallydoesntequal = new TestFunction( "ReallyDoesntEqual", "a, b", + ( version() <= 120 ) ? tab +"return a != b;" : tab +"return a !== b;" ); +function ReallyDoesntEqual( a, b ) { + return a !== b; +} + +// Modified to match expected results; JSC won't automatically insert redundant braces into the result. +var testor = new TestFunction( "TestOr", "a", tab+"if (a == null || a == void 0) {\n"+ + tab +tab+"return 0;\n"+tab+"} else {\n"+tab+tab+"return a;\n"+tab+"}" ); +function TestOr( a ) { + if ( a == null || a == void 0 ) { + return 0; + } else { + return a; + } +} + +// Modified to match expected results; JSC won't automatically insert redundant braces into the result. +var testand = new TestFunction( "TestAnd", "a", tab+"if (a != null && a != void 0) {\n"+ + tab+tab+"return a;\n" + tab+ "} else {\n"+tab+tab+"return 0;\n"+tab+"}" ); +function TestAnd( a ) { + if ( a != null && a != void 0 ) { + return a; + } else { + return 0; + } +} + +var or = new TestFunction( "Or", "a, b", tab + "return a | b;" ); +function Or( a, b ) { + return a | b; +} + +var and = new TestFunction( "And", "a, b", tab + "return a & b;" ); +function And( a, b ) { + return a & b; +} + +var xor = new TestFunction( "XOr", "a, b", tab + "return a ^ b;" ); +function XOr( a, b ) { + return a ^ b; +} + + testcases[testcases.length] = new TestCase( SECTION, + "Equals.toString()", + simplify(equals.valueOf()), + simplify(Equals.toString()) ); + + testcases[testcases.length] = new TestCase( SECTION, + "ReallyEquals.toString()", + simplify(reallyequals.valueOf()), + simplify(ReallyEquals.toString()) ); + + testcases[testcases.length] = new TestCase( SECTION, + "DoesntEqual.toString()", + simplify(doesntequal.valueOf()), + simplify(DoesntEqual.toString()) ); + + testcases[testcases.length] = new TestCase( SECTION, + "ReallyDoesntEqual.toString()", + simplify(reallydoesntequal.valueOf()), + simplify(ReallyDoesntEqual.toString()) ); + + testcases[testcases.length] = new TestCase( SECTION, + "TestOr.toString()", + simplify(testor.valueOf()), + simplify(TestOr.toString()) ); + + testcases[testcases.length] = new TestCase( SECTION, + "TestAnd.toString()", + simplify(testand.valueOf()), + simplify(TestAnd.toString()) ); + + testcases[testcases.length] = new TestCase( SECTION, + "Or.toString()", + simplify(or.valueOf()), + simplify(Or.toString()) ); + + testcases[testcases.length] = new TestCase( SECTION, + "And.toString()", + simplify(and.valueOf()), + simplify(And.toString()) ); + + testcases[testcases.length] = new TestCase( SECTION, + "XOr.toString()", + simplify(xor.valueOf()), + simplify(XOr.toString()) ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function TestFunction( name, args, body ) { + this.name = name; + this.arguments = args.toString(); + this.body = body; + + /* the format of Function.toString() in JavaScript 1.2 is: + /n + function name ( arguments ) { + body + } + */ + this.value = "\nfunction " + (name ? name : "anonymous" )+ + "("+args+") {\n"+ (( body ) ? body +"\n" : "") + "}\n"; + + this.toString = new Function( "return this.value" ); + this.valueOf = new Function( "return this.value" ); + return this; +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/jsref.js b/Source/JavaScriptCore/tests/mozilla/js1_2/jsref.js new file mode 100644 index 00000000000..3ecb4c16769 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/jsref.js @@ -0,0 +1,215 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +var completed = false; +var testcases; +var tc = 0; + +SECTION = ""; +VERSION = ""; +BUGNUMBER = ""; +EXCLUDE = ""; + +/* + * constant strings + */ +var GLOBAL = "[object global]"; +var PASSED = " PASSED!" +var FAILED = " FAILED! expected: "; + +var DEBUG = false; + +version("120"); +/* + * change this for date tests if you're not in PST + */ + +TZ_DIFF = -8; +/* wrapper for test cas constructor that doesn't require the SECTION + * argument. + */ + +function AddTestCase( description, expect, actual ) { + testcases[tc++] = new TestCase( SECTION, description, expect, actual ); +} +function TestCase( n, d, e, a ) { + this.name = n; + this.description = d; + this.expect = e; + this.actual = a; + this.passed = true; + this.reason = ""; + this.bugnumber = BUGNUMBER; + + this.passed = getTestCaseResult( this.expect, this.actual ); +} +function startTest() { + version(120); + + // for ecma version 2.0, we will leave the javascript version to + // the default ( for now ). + // print out bugnumber + + if ( BUGNUMBER ) { + writeLineToLog ("BUGNUMBER: " + BUGNUMBER ); + } + + testcases = new Array(); + tc = 0; + +} +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function getTestCaseResult( expect, actual ) { + // because ( NaN == NaN ) always returns false, need to do + // a special compare to see if we got the right result. + if ( actual != actual ) { + if ( typeof actual == "object" ) { + actual = "NaN object"; + } else { + actual = "NaN number"; + } + } + if ( expect != expect ) { + if ( typeof expect == "object" ) { + expect = "NaN object"; + } else { + expect = "NaN number"; + } + } + + var passed = ( expect == actual ) ? true : false; + + // if both objects are numbers, give a little leeway for rounding. + if ( !passed + && typeof(actual) == "number" + && typeof(expect) == "number" + ) { + if ( Math.abs(actual-expect) < 0.0000001 ) { + passed = true; + } + } + + // verify type is the same + if ( typeof(expect) != typeof(actual) ) { + passed = false; + } + + return passed; +} +/* + * Begin printing functions. These functions use the shell's + * print function. When running tests in the browser, these + * functions, override these functions with functions that use + * document.write. + */ + +function writeTestCaseResult( expect, actual, string ) { + var passed = getTestCaseResult( expect, actual ); + writeFormattedResult( expect, actual, string, passed ); + return passed; +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = string ; + s += ( passed ) ? PASSED : FAILED + expect; + writeLineToLog( s); + return passed; +} +function writeLineToLog( string ) { + print( string ); +} +function writeHeaderToLog( string ) { + print( string ); +} +/* end of print functions */ + + +function stopTest() { + var sizeTag = "<#TEST CASES SIZE>"; + var doneTag = "<#TEST CASES DONE>"; + var beginTag = "<#TEST CASE "; + var endTag = ">"; + + print(sizeTag); + print(testcases.length); + for (tc = 0; tc < testcases.length; tc++) + { + print(beginTag + 'PASSED' + endTag); + print(testcases[tc].passed); + print(beginTag + 'NAME' + endTag); + print(testcases[tc].name); + print(beginTag + 'EXPECTED' + endTag); + print(testcases[tc].expect); + print(beginTag + 'ACTUAL' + endTag); + print(testcases[tc].actual); + print(beginTag + 'DESCRIPTION' + endTag); + print(testcases[tc].description); + print(beginTag + 'REASON' + endTag); + print(( testcases[tc].passed ) ? "" : "wrong value "); + print(beginTag + 'BUGNUMBER' + endTag); + print( BUGNUMBER ); + } + print(doneTag); + gc(); +} + +function getFailedCases() { + for ( var i = 0; i < testcases.length; i++ ) { + if ( ! testcases[i].passed ) { + print( testcases[i].description +" = " +testcases[i].actual +" expected: "+ testcases[i].expect ); + } + } +} +function err( msg, page, line ) { + testcases[tc].actual = "error"; + testcases[tc].reason = msg; + writeTestCaseResult( testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual + + ": " + testcases[tc].reason ); + stopTest(); + return true; +} +function Enumerate ( o ) { + var p; + for ( p in o ) { + print( p +": " + o[p] ); + } +} +function GetContext() { + return Packages.com.netscape.javascript.Context.getCurrentContext(); +} +function OptLevel( i ) { + i = Number(i); + var cx = GetContext(); + cx.setOptimizationLevel(i); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/operator/equality.js b/Source/JavaScriptCore/tests/mozilla/js1_2/operator/equality.js new file mode 100644 index 00000000000..855b5a87848 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/operator/equality.js @@ -0,0 +1,72 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: equality.js + Description: 'This tests the operator ==' + + Author: Nick Lerissa + Date: Fri Feb 13 09:58:28 PST 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'operator "=="'; + + writeHeaderToLog('Executing script: equality.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + // the following two tests are incorrect + //testcases[count++] = new TestCase( SECTION, "(new String('') == new String('')) ", + // true, (new String('') == new String(''))); + + //testcases[count++] = new TestCase( SECTION, "(new Boolean(true) == new Boolean(true)) ", + // true, (new Boolean(true) == new Boolean(true))); + + testcases[count++] = new TestCase( SECTION, "(new String('x') == 'x') ", + false, (new String('x') == 'x')); + + testcases[count++] = new TestCase( SECTION, "('x' == new String('x')) ", + false, ('x' == new String('x'))); + + + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/operator/strictEquality.js b/Source/JavaScriptCore/tests/mozilla/js1_2/operator/strictEquality.js new file mode 100644 index 00000000000..0f8acea2ad3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/operator/strictEquality.js @@ -0,0 +1,92 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: strictEquality.js + Description: 'This tests the operator ===' + + Author: Nick Lerissa + Date: Fri Feb 13 09:58:28 PST 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'operator "==="'; + + writeHeaderToLog('Executing script: strictEquality.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + testcases[count++] = new TestCase( SECTION, "('8' === 8) ", + false, ('8' === 8)); + + testcases[count++] = new TestCase( SECTION, "(8 === 8) ", + true, (8 === 8)); + + testcases[count++] = new TestCase( SECTION, "(8 === true) ", + false, (8 === true)); + + testcases[count++] = new TestCase( SECTION, "(new String('') === new String('')) ", + false, (new String('') === new String(''))); + + testcases[count++] = new TestCase( SECTION, "(new Boolean(true) === new Boolean(true))", + false, (new Boolean(true) === new Boolean(true))); + + var anObject = { one:1 , two:2 }; + + testcases[count++] = new TestCase( SECTION, "(anObject === anObject) ", + true, (anObject === anObject)); + + testcases[count++] = new TestCase( SECTION, "(anObject === { one:1 , two:2 }) ", + false, (anObject === { one:1 , two:2 })); + + testcases[count++] = new TestCase( SECTION, "({ one:1 , two:2 } === anObject) ", + false, ({ one:1 , two:2 } === anObject)); + + testcases[count++] = new TestCase( SECTION, "(null === null) ", + true, (null === null)); + + testcases[count++] = new TestCase( SECTION, "(null === 0) ", + false, (null === 0)); + + testcases[count++] = new TestCase( SECTION, "(true === !false) ", + true, (true === !false)); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_dollar_number.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_dollar_number.js new file mode 100644 index 00000000000..58f9264904c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_dollar_number.js @@ -0,0 +1,108 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: RegExp_dollar_number.js + Description: 'Tests RegExps $1, ..., $9 properties' + + Author: Nick Lerissa + Date: March 12, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: $1, ..., $9'; + var BUGNUMBER="123802"; + + writeHeaderToLog('Executing script: RegExp_dollar_number.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abcdefghi'.match(/(a(b(c(d(e)f)g)h)i)/); RegExp.$1 + 'abcdefghi'.match(/(a(b(c(d(e)f)g)h)i)/); + testcases[count++] = new TestCase ( SECTION, "'abcdefghi'.match(/(a(b(c(d(e)f)g)h)i)/); RegExp.$1", + 'abcdefghi', RegExp.$1); + + // 'abcdefghi'.match(/(a(b(c(d(e)f)g)h)i)/); RegExp.$2 + testcases[count++] = new TestCase ( SECTION, "'abcdefghi'.match(/(a(b(c(d(e)f)g)h)i)/); RegExp.$2", + 'bcdefgh', RegExp.$2); + + // 'abcdefghi'.match(/(a(b(c(d(e)f)g)h)i)/); RegExp.$3 + testcases[count++] = new TestCase ( SECTION, "'abcdefghi'.match(/(a(b(c(d(e)f)g)h)i)/); RegExp.$3", + 'cdefg', RegExp.$3); + + // 'abcdefghi'.match(/(a(b(c(d(e)f)g)h)i)/); RegExp.$4 + testcases[count++] = new TestCase ( SECTION, "'abcdefghi'.match(/(a(b(c(d(e)f)g)h)i)/); RegExp.$4", + 'def', RegExp.$4); + + // 'abcdefghi'.match(/(a(b(c(d(e)f)g)h)i)/); RegExp.$5 + testcases[count++] = new TestCase ( SECTION, "'abcdefghi'.match(/(a(b(c(d(e)f)g)h)i)/); RegExp.$5", + 'e', RegExp.$5); + + // 'abcdefghi'.match(/(a(b(c(d(e)f)g)h)i)/); RegExp.$6 + testcases[count++] = new TestCase ( SECTION, "'abcdefghi'.match(/(a(b(c(d(e)f)g)h)i)/); RegExp.$6", + '', RegExp.$6); + + var a_to_z = 'abcdefghijklmnopqrstuvwxyz'; + var regexp1 = /(a)b(c)d(e)f(g)h(i)j(k)l(m)n(o)p(q)r(s)t(u)v(w)x(y)z/ + // 'abcdefghijklmnopqrstuvwxyz'.match(/(a)b(c)d(e)f(g)h(i)j(k)l(m)n(o)p(q)r(s)t(u)v(w)x(y)z/); RegExp.$1 + a_to_z.match(regexp1); + + testcases[count++] = new TestCase ( SECTION, "'" + a_to_z + "'.match((a)b(c)....(y)z); RegExp.$1", + 'a', RegExp.$1); + testcases[count++] = new TestCase ( SECTION, "'" + a_to_z + "'.match((a)b(c)....(y)z); RegExp.$2", + 'c', RegExp.$2); + testcases[count++] = new TestCase ( SECTION, "'" + a_to_z + "'.match((a)b(c)....(y)z); RegExp.$3", + 'e', RegExp.$3); + testcases[count++] = new TestCase ( SECTION, "'" + a_to_z + "'.match((a)b(c)....(y)z); RegExp.$4", + 'g', RegExp.$4); + testcases[count++] = new TestCase ( SECTION, "'" + a_to_z + "'.match((a)b(c)....(y)z); RegExp.$5", + 'i', RegExp.$5); + testcases[count++] = new TestCase ( SECTION, "'" + a_to_z + "'.match((a)b(c)....(y)z); RegExp.$6", + 'k', RegExp.$6); + testcases[count++] = new TestCase ( SECTION, "'" + a_to_z + "'.match((a)b(c)....(y)z); RegExp.$7", + 'm', RegExp.$7); + testcases[count++] = new TestCase ( SECTION, "'" + a_to_z + "'.match((a)b(c)....(y)z); RegExp.$8", + 'o', RegExp.$8); + testcases[count++] = new TestCase ( SECTION, "'" + a_to_z + "'.match((a)b(c)....(y)z); RegExp.$9", + 'q', RegExp.$9); +/* + testcases[count++] = new TestCase ( SECTION, "'" + a_to_z + "'.match((a)b(c)....(y)z); RegExp.$10", + 's', RegExp.$10); +*/ + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_input.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_input.js new file mode 100644 index 00000000000..26db14cf6d0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_input.js @@ -0,0 +1,102 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: RegExp_input.js + Description: 'Tests RegExps input property' + + Author: Nick Lerissa + Date: March 13, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: input'; + + writeHeaderToLog('Executing script: RegExp_input.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + RegExp.input = "abcd12357efg"; + + // RegExp.input = "abcd12357efg"; RegExp.input + RegExp.input = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp.input = 'abcd12357efg'; RegExp.input", + "abcd12357efg", RegExp.input); + + // RegExp.input = "abcd12357efg"; /\d+/.exec('2345') + RegExp.input = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp.input = 'abcd12357efg'; /\\d+/.exec('2345')", + String(["2345"]), String(/\d+/.exec('2345'))); + + // RegExp.input = "abcd12357efg"; /\d+/.exec(RegExp.input) + RegExp.input = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp.input = 'abcd12357efg'; /\\d+/.exec(RegExp.input)", + String(["12357"]), String(/\d+/.exec(RegExp.input))); + + // RegExp.input = "abcd12357efg"; /[h-z]+/.exec(RegExp.input) + RegExp.input = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp.input = 'abcd12357efg'; /[h-z]+/.exec(RegExp.input)", + null, /[h-z]+/.exec(RegExp.input)); + + // RegExp.input = "abcd12357efg"; /\d+/.test('2345') + RegExp.input = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp.input = 'abcd12357efg'; /\\d+/.test('2345')", + true, /\d+/.test('2345')); + + // RegExp.input = "abcd12357efg"; /\d+/.test(RegExp.input) + RegExp.input = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp.input = 'abcd12357efg'; /\\d+/.test(RegExp.input)", + true, /\d+/.test(RegExp.input)); + + // RegExp.input = "abcd12357efg"; (new RegExp('d+')).test(RegExp.input) + RegExp.input = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp.input = 'abcd12357efg'; (new RegExp('d+')).test(RegExp.input)", + true, (new RegExp('d+')).test(RegExp.input)); + + // RegExp.input = "abcd12357efg"; /[h-z]+/.test(RegExp.input) + RegExp.input = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp.input = 'abcd12357efg'; /[h-z]+/.test(RegExp.input)", + false, /[h-z]+/.test(RegExp.input)); + + // RegExp.input = "abcd12357efg"; (new RegExp('[h-z]+')).test(RegExp.input) + RegExp.input = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp.input = 'abcd12357efg'; (new RegExp('[h-z]+')).test(RegExp.input)", + false, (new RegExp('[h-z]+')).test(RegExp.input)); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_input_as_array.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_input_as_array.js new file mode 100644 index 00000000000..9afdb14edf4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_input_as_array.js @@ -0,0 +1,102 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: RegExp_input_as_array.js + Description: 'Tests RegExps $_ property (same tests as RegExp_input.js but using $_)' + + Author: Nick Lerissa + Date: March 13, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: input'; + + writeHeaderToLog('Executing script: RegExp_input.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + RegExp['$_'] = "abcd12357efg"; + + // RegExp['$_'] = "abcd12357efg"; RegExp['$_'] + RegExp['$_'] = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp['$_'] = 'abcd12357efg'; RegExp['$_']", + "abcd12357efg", RegExp['$_']); + + // RegExp['$_'] = "abcd12357efg"; /\d+/.exec('2345') + RegExp['$_'] = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp['$_'] = 'abcd12357efg'; /\\d+/.exec('2345')", + String(["2345"]), String(/\d+/.exec('2345'))); + + // RegExp['$_'] = "abcd12357efg"; /\d+/.exec(RegExp.input) + RegExp['$_'] = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp['$_'] = 'abcd12357efg'; /\\d+/.exec(RegExp.input)", + String(["12357"]), String(/\d+/.exec(RegExp.input))); + + // RegExp['$_'] = "abcd12357efg"; /[h-z]+/.exec(RegExp.input) + RegExp['$_'] = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp['$_'] = 'abcd12357efg'; /[h-z]+/.exec(RegExp.input)", + null, /[h-z]+/.exec(RegExp.input)); + + // RegExp['$_'] = "abcd12357efg"; /\d+/.test('2345') + RegExp['$_'] = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp['$_'] = 'abcd12357efg'; /\\d+/.test('2345')", + true, /\d+/.test('2345')); + + // RegExp['$_'] = "abcd12357efg"; /\d+/.test(RegExp.input) + RegExp['$_'] = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp['$_'] = 'abcd12357efg'; /\\d+/.test(RegExp.input)", + true, /\d+/.test(RegExp.input)); + + // RegExp['$_'] = "abcd12357efg"; /[h-z]+/.test(RegExp.input) + RegExp['$_'] = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp['$_'] = 'abcd12357efg'; /[h-z]+/.test(RegExp.input)", + false, /[h-z]+/.test(RegExp.input)); + + // RegExp['$_'] = "abcd12357efg"; (new RegExp('\d+')).test(RegExp.input) + RegExp['$_'] = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp['$_'] = 'abcd12357efg'; (new RegExp('\d+')).test(RegExp.input)", + true, (new RegExp('\d+')).test(RegExp.input)); + + // RegExp['$_'] = "abcd12357efg"; (new RegExp('[h-z]+')).test(RegExp.input) + RegExp['$_'] = "abcd12357efg"; + testcases[count++] = new TestCase ( SECTION, "RegExp['$_'] = 'abcd12357efg'; (new RegExp('[h-z]+')).test(RegExp.input)", + false, (new RegExp('[h-z]+')).test(RegExp.input)); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_lastIndex.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_lastIndex.js new file mode 100644 index 00000000000..b48836f2226 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_lastIndex.js @@ -0,0 +1,83 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: RegExp_lastIndex.js + Description: 'Tests RegExps lastIndex property' + + Author: Nick Lerissa + Date: March 17, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: lastIndex'; + var BUGNUMBER="123802"; + + writeHeaderToLog('Executing script: RegExp_lastIndex.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // re=/x./g; re.lastIndex=4; re.exec('xyabcdxa'); + re=/x./g; + re.lastIndex=4; + testcases[count++] = new TestCase ( SECTION, "re=/x./g; re.lastIndex=4; re.exec('xyabcdxa')", + '["xa"]', String(re.exec('xyabcdxa'))); + + // re.lastIndex + testcases[count++] = new TestCase ( SECTION, "re.lastIndex", + 8, re.lastIndex); + + // re.exec('xyabcdef'); + testcases[count++] = new TestCase ( SECTION, "re.exec('xyabcdef')", + null, re.exec('xyabcdef')); + + // re.lastIndex + testcases[count++] = new TestCase ( SECTION, "re.lastIndex", + 0, re.lastIndex); + + // re.exec('xyabcdef'); + testcases[count++] = new TestCase ( SECTION, "re.exec('xyabcdef')", + '["xy"]', String(re.exec('xyabcdef'))); + + // re.lastIndex=30; re.exec('123xaxbxc456'); + re.lastIndex=30; + testcases[count++] = new TestCase ( SECTION, "re.lastIndex=30; re.exec('123xaxbxc456')", + null, re.exec('123xaxbxc456')); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_lastMatch.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_lastMatch.js new file mode 100644 index 00000000000..2b0c72d5d08 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_lastMatch.js @@ -0,0 +1,85 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: RegExp_lastMatch.js + Description: 'Tests RegExps lastMatch property' + + Author: Nick Lerissa + Date: March 12, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: lastMatch'; + + writeHeaderToLog('Executing script: RegExp_lastMatch.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'foo'.match(/foo/); RegExp.lastMatch + 'foo'.match(/foo/); + testcases[count++] = new TestCase ( SECTION, "'foo'.match(/foo/); RegExp.lastMatch", + 'foo', RegExp.lastMatch); + + // 'foo'.match(new RegExp('foo')); RegExp.lastMatch + 'foo'.match(new RegExp('foo')); + testcases[count++] = new TestCase ( SECTION, "'foo'.match(new RegExp('foo')); RegExp.lastMatch", + 'foo', RegExp.lastMatch); + + // 'xxx'.match(/bar/); RegExp.lastMatch + 'xxx'.match(/bar/); + testcases[count++] = new TestCase ( SECTION, "'xxx'.match(/bar/); RegExp.lastMatch", + 'foo', RegExp.lastMatch); + + // 'xxx'.match(/$/); RegExp.lastMatch + 'xxx'.match(/$/); + testcases[count++] = new TestCase ( SECTION, "'xxx'.match(/$/); RegExp.lastMatch", + '', RegExp.lastMatch); + + // 'abcdefg'.match(/^..(cd)[a-z]+/); RegExp.lastMatch + 'abcdefg'.match(/^..(cd)[a-z]+/); + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(/^..(cd)[a-z]+/); RegExp.lastMatch", + 'abcdefg', RegExp.lastMatch); + + // 'abcdefgabcdefg'.match(/(a(b(c(d)e)f)g)\1/); RegExp.lastMatch + 'abcdefgabcdefg'.match(/(a(b(c(d)e)f)g)\1/); + testcases[count++] = new TestCase ( SECTION, "'abcdefgabcdefg'.match(/(a(b(c(d)e)f)g)\\1/); RegExp.lastMatch", + 'abcdefgabcdefg', RegExp.lastMatch); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_lastMatch_as_array.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_lastMatch_as_array.js new file mode 100644 index 00000000000..b59b2c20a28 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_lastMatch_as_array.js @@ -0,0 +1,85 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: RegExp_lastMatch_as_array.js + Description: 'Tests RegExps $& property (same tests as RegExp_lastMatch.js but using $&)' + + Author: Nick Lerissa + Date: March 13, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: $&'; + + writeHeaderToLog('Executing script: RegExp_lastMatch_as_array.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'foo'.match(/foo/); RegExp['$&'] + 'foo'.match(/foo/); + testcases[count++] = new TestCase ( SECTION, "'foo'.match(/foo/); RegExp['$&']", + 'foo', RegExp['$&']); + + // 'foo'.match(new RegExp('foo')); RegExp['$&'] + 'foo'.match(new RegExp('foo')); + testcases[count++] = new TestCase ( SECTION, "'foo'.match(new RegExp('foo')); RegExp['$&']", + 'foo', RegExp['$&']); + + // 'xxx'.match(/bar/); RegExp['$&'] + 'xxx'.match(/bar/); + testcases[count++] = new TestCase ( SECTION, "'xxx'.match(/bar/); RegExp['$&']", + 'foo', RegExp['$&']); + + // 'xxx'.match(/$/); RegExp['$&'] + 'xxx'.match(/$/); + testcases[count++] = new TestCase ( SECTION, "'xxx'.match(/$/); RegExp['$&']", + '', RegExp['$&']); + + // 'abcdefg'.match(/^..(cd)[a-z]+/); RegExp['$&'] + 'abcdefg'.match(/^..(cd)[a-z]+/); + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(/^..(cd)[a-z]+/); RegExp['$&']", + 'abcdefg', RegExp['$&']); + + // 'abcdefgabcdefg'.match(/(a(b(c(d)e)f)g)\1/); RegExp['$&'] + 'abcdefgabcdefg'.match(/(a(b(c(d)e)f)g)\1/); + testcases[count++] = new TestCase ( SECTION, "'abcdefgabcdefg'.match(/(a(b(c(d)e)f)g)\\1/); RegExp['$&']", + 'abcdefgabcdefg', RegExp['$&']); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_lastParen.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_lastParen.js new file mode 100644 index 00000000000..1dd0791b234 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_lastParen.js @@ -0,0 +1,100 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: RegExp_lastParen.js + Description: 'Tests RegExps lastParen property' + + Author: Nick Lerissa + Date: March 12, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: lastParen'; + + writeHeaderToLog('Executing script: RegExp_lastParen.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abcd'.match(/(abc)d/); RegExp.lastParen + 'abcd'.match(/(abc)d/); + testcases[count++] = new TestCase ( SECTION, "'abcd'.match(/(abc)d/); RegExp.lastParen", + 'abc', RegExp.lastParen); + + // 'abcd'.match(new RegExp('(abc)d')); RegExp.lastParen + 'abcd'.match(new RegExp('(abc)d')); + testcases[count++] = new TestCase ( SECTION, "'abcd'.match(new RegExp('(abc)d')); RegExp.lastParen", + 'abc', RegExp.lastParen); + + // 'abcd'.match(/(bcd)e/); RegExp.lastParen + 'abcd'.match(/(bcd)e/); + testcases[count++] = new TestCase ( SECTION, "'abcd'.match(/(bcd)e/); RegExp.lastParen", + 'abc', RegExp.lastParen); + + // 'abcdefg'.match(/(a(b(c(d)e)f)g)/); RegExp.lastParen + 'abcdefg'.match(/(a(b(c(d)e)f)g)/); + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(/(a(b(c(d)e)f)g)/); RegExp.lastParen", + 'd', RegExp.lastParen); + + // 'abcdefg'.match(/(a(b)c)(d(e)f)/); RegExp.lastParen + 'abcdefg'.match(/(a(b)c)(d(e)f)/); + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(/(a(b)c)(d(e)f)/); RegExp.lastParen", + 'e', RegExp.lastParen); + + // 'abcdefg'.match(/(^)abc/); RegExp.lastParen + 'abcdefg'.match(/(^)abc/); + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(/(^)abc/); RegExp.lastParen", + '', RegExp.lastParen); + + // 'abcdefg'.match(/(^a)bc/); RegExp.lastParen + 'abcdefg'.match(/(^a)bc/); + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(/(^a)bc/); RegExp.lastParen", + 'a', RegExp.lastParen); + + // 'abcdefg'.match(new RegExp('(^a)bc')); RegExp.lastParen + 'abcdefg'.match(new RegExp('(^a)bc')); + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(new RegExp('(^a)bc')); RegExp.lastParen", + 'a', RegExp.lastParen); + + // 'abcdefg'.match(/bc/); RegExp.lastParen + 'abcdefg'.match(/bc/); + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(/bc/); RegExp.lastParen", + '', RegExp.lastParen); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_lastParen_as_array.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_lastParen_as_array.js new file mode 100644 index 00000000000..d8dcd528c00 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_lastParen_as_array.js @@ -0,0 +1,100 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: RegExp_lastParen_as_array.js + Description: 'Tests RegExps $+ property (same tests as RegExp_lastParen.js but using $+)' + + Author: Nick Lerissa + Date: March 13, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: $+'; + + writeHeaderToLog('Executing script: RegExp_lastParen_as_array.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abcd'.match(/(abc)d/); RegExp['$+'] + 'abcd'.match(/(abc)d/); + testcases[count++] = new TestCase ( SECTION, "'abcd'.match(/(abc)d/); RegExp['$+']", + 'abc', RegExp['$+']); + + // 'abcd'.match(/(bcd)e/); RegExp['$+'] + 'abcd'.match(/(bcd)e/); + testcases[count++] = new TestCase ( SECTION, "'abcd'.match(/(bcd)e/); RegExp['$+']", + 'abc', RegExp['$+']); + + // 'abcdefg'.match(/(a(b(c(d)e)f)g)/); RegExp['$+'] + 'abcdefg'.match(/(a(b(c(d)e)f)g)/); + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(/(a(b(c(d)e)f)g)/); RegExp['$+']", + 'd', RegExp['$+']); + + // 'abcdefg'.match(new RegExp('(a(b(c(d)e)f)g)')); RegExp['$+'] + 'abcdefg'.match(new RegExp('(a(b(c(d)e)f)g)')); + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(new RegExp('(a(b(c(d)e)f)g)')); RegExp['$+']", + 'd', RegExp['$+']); + + // 'abcdefg'.match(/(a(b)c)(d(e)f)/); RegExp['$+'] + 'abcdefg'.match(/(a(b)c)(d(e)f)/); + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(/(a(b)c)(d(e)f)/); RegExp['$+']", + 'e', RegExp['$+']); + + // 'abcdefg'.match(/(^)abc/); RegExp['$+'] + 'abcdefg'.match(/(^)abc/); + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(/(^)abc/); RegExp['$+']", + '', RegExp['$+']); + + // 'abcdefg'.match(/(^a)bc/); RegExp['$+'] + 'abcdefg'.match(/(^a)bc/); + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(/(^a)bc/); RegExp['$+']", + 'a', RegExp['$+']); + + // 'abcdefg'.match(new RegExp('(^a)bc')); RegExp['$+'] + 'abcdefg'.match(new RegExp('(^a)bc')); + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(new RegExp('(^a)bc')); RegExp['$+']", + 'a', RegExp['$+']); + + // 'abcdefg'.match(/bc/); RegExp['$+'] + 'abcdefg'.match(/bc/); + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(/bc/); RegExp['$+']", + '', RegExp['$+']); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_leftContext.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_leftContext.js new file mode 100644 index 00000000000..025915aa6de --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_leftContext.js @@ -0,0 +1,90 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: RegExp_leftContext.js + Description: 'Tests RegExps leftContext property' + + Author: Nick Lerissa + Date: March 12, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: leftContext'; + + writeHeaderToLog('Executing script: RegExp_leftContext.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abc123xyz'.match(/123/); RegExp.leftContext + 'abc123xyz'.match(/123/); + testcases[count++] = new TestCase ( SECTION, "'abc123xyz'.match(/123/); RegExp.leftContext", + 'abc', RegExp.leftContext); + + // 'abc123xyz'.match(/456/); RegExp.leftContext + 'abc123xyz'.match(/456/); + testcases[count++] = new TestCase ( SECTION, "'abc123xyz'.match(/456/); RegExp.leftContext", + 'abc', RegExp.leftContext); + + // 'abc123xyz'.match(/abc123xyz/); RegExp.leftContext + 'abc123xyz'.match(/abc123xyz/); + testcases[count++] = new TestCase ( SECTION, "'abc123xyz'.match(/abc123xyz/); RegExp.leftContext", + '', RegExp.leftContext); + + // 'xxxx'.match(/$/); RegExp.leftContext + 'xxxx'.match(/$/); + testcases[count++] = new TestCase ( SECTION, "'xxxx'.match(/$/); RegExp.leftContext", + 'xxxx', RegExp.leftContext); + + // 'test'.match(/^/); RegExp.leftContext + 'test'.match(/^/); + testcases[count++] = new TestCase ( SECTION, "'test'.match(/^/); RegExp.leftContext", + '', RegExp.leftContext); + + // 'xxxx'.match(new RegExp('$')); RegExp.leftContext + 'xxxx'.match(new RegExp('$')); + testcases[count++] = new TestCase ( SECTION, "'xxxx'.match(new RegExp('$')); RegExp.leftContext", + 'xxxx', RegExp.leftContext); + + // 'test'.match(new RegExp('^')); RegExp.leftContext + 'test'.match(new RegExp('^')); + testcases[count++] = new TestCase ( SECTION, "'test'.match(new RegExp('^')); RegExp.leftContext", + '', RegExp.leftContext); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_leftContext_as_array.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_leftContext_as_array.js new file mode 100644 index 00000000000..5a86b4f6aa4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_leftContext_as_array.js @@ -0,0 +1,90 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: RegExp_leftContext_as_array.js + Description: 'Tests RegExps leftContext property (same tests as RegExp_leftContext.js but using $`)' + + Author: Nick Lerissa + Date: March 12, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: $`'; + + writeHeaderToLog('Executing script: RegExp_leftContext_as_array.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abc123xyz'.match(/123/); RegExp['$`'] + 'abc123xyz'.match(/123/); + testcases[count++] = new TestCase ( SECTION, "'abc123xyz'.match(/123/); RegExp['$`']", + 'abc', RegExp['$`']); + + // 'abc123xyz'.match(/456/); RegExp['$`'] + 'abc123xyz'.match(/456/); + testcases[count++] = new TestCase ( SECTION, "'abc123xyz'.match(/456/); RegExp['$`']", + 'abc', RegExp['$`']); + + // 'abc123xyz'.match(/abc123xyz/); RegExp['$`'] + 'abc123xyz'.match(/abc123xyz/); + testcases[count++] = new TestCase ( SECTION, "'abc123xyz'.match(/abc123xyz/); RegExp['$`']", + '', RegExp['$`']); + + // 'xxxx'.match(/$/); RegExp['$`'] + 'xxxx'.match(/$/); + testcases[count++] = new TestCase ( SECTION, "'xxxx'.match(/$/); RegExp['$`']", + 'xxxx', RegExp['$`']); + + // 'test'.match(/^/); RegExp['$`'] + 'test'.match(/^/); + testcases[count++] = new TestCase ( SECTION, "'test'.match(/^/); RegExp['$`']", + '', RegExp['$`']); + + // 'xxxx'.match(new RegExp('$')); RegExp['$`'] + 'xxxx'.match(new RegExp('$')); + testcases[count++] = new TestCase ( SECTION, "'xxxx'.match(new RegExp('$')); RegExp['$`']", + 'xxxx', RegExp['$`']); + + // 'test'.match(new RegExp('^')); RegExp['$`'] + 'test'.match(new RegExp('^')); + testcases[count++] = new TestCase ( SECTION, "'test'.match(new RegExp('^')); RegExp['$`']", + '', RegExp['$`']); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_multiline.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_multiline.js new file mode 100644 index 00000000000..de22876c1a5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_multiline.js @@ -0,0 +1,129 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: RegExp_multiline.js + Description: 'Tests RegExps multiline property' + + Author: Nick Lerissa + Date: March 12, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: multiline'; + + writeHeaderToLog('Executing script: RegExp_multiline.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // First we do a series of tests with RegExp.multiline set to false (default value) + // Following this we do the same tests with RegExp.multiline set true(**). + // RegExp.multiline + testcases[count++] = new TestCase ( SECTION, "RegExp.multiline", + false, RegExp.multiline); + + // (multiline == false) '123\n456'.match(/^4../) + testcases[count++] = new TestCase ( SECTION, "(multiline == false) '123\\n456'.match(/^4../)", + null, '123\n456'.match(/^4../)); + + // (multiline == false) 'a11\na22\na23\na24'.match(/^a../g) + testcases[count++] = new TestCase ( SECTION, "(multiline == false) 'a11\\na22\\na23\\na24'.match(/^a../g)", + String(['a11']), String('a11\na22\na23\na24'.match(/^a../g))); + + // (multiline == false) 'a11\na22'.match(/^.+^./) + testcases[count++] = new TestCase ( SECTION, "(multiline == false) 'a11\na22'.match(/^.+^./)", + null, 'a11\na22'.match(/^.+^./)); + + // (multiline == false) '123\n456'.match(/.3$/) + testcases[count++] = new TestCase ( SECTION, "(multiline == false) '123\\n456'.match(/.3$/)", + null, '123\n456'.match(/.3$/)); + + // (multiline == false) 'a11\na22\na23\na24'.match(/a..$/g) + testcases[count++] = new TestCase ( SECTION, "(multiline == false) 'a11\\na22\\na23\\na24'.match(/a..$/g)", + String(['a24']), String('a11\na22\na23\na24'.match(/a..$/g))); + + // (multiline == false) 'abc\ndef'.match(/c$...$/) + testcases[count++] = new TestCase ( SECTION, "(multiline == false) 'abc\ndef'.match(/c$...$/)", + null, 'abc\ndef'.match(/c$...$/)); + + // (multiline == false) 'a11\na22\na23\na24'.match(new RegExp('a..$','g')) + testcases[count++] = new TestCase ( SECTION, "(multiline == false) 'a11\\na22\\na23\\na24'.match(new RegExp('a..$','g'))", + String(['a24']), String('a11\na22\na23\na24'.match(new RegExp('a..$','g')))); + + // (multiline == false) 'abc\ndef'.match(new RegExp('c$...$')) + testcases[count++] = new TestCase ( SECTION, "(multiline == false) 'abc\ndef'.match(new RegExp('c$...$'))", + null, 'abc\ndef'.match(new RegExp('c$...$'))); + + // **Now we do the tests with RegExp.multiline set to true + // RegExp.multiline = true; RegExp.multiline + RegExp.multiline = true; + testcases[count++] = new TestCase ( SECTION, "RegExp.multiline = true; RegExp.multiline", + true, RegExp.multiline); + + // (multiline == true) '123\n456'.match(/^4../) + testcases[count++] = new TestCase ( SECTION, "(multiline == true) '123\\n456'.match(/^4../m)", + String(['456']), String('123\n456'.match(/^4../m))); + + // (multiline == true) 'a11\na22\na23\na24'.match(/^a../g) + testcases[count++] = new TestCase ( SECTION, "(multiline == true) 'a11\\na22\\na23\\na24'.match(/^a../gm)", + String(['a11','a22','a23','a24']), String('a11\na22\na23\na24'.match(/^a../gm))); + + // (multiline == true) 'a11\na22'.match(/^.+^./) + //testcases[count++] = new TestCase ( SECTION, "(multiline == true) 'a11\na22'.match(/^.+^./)", + // String(['a11\na']), String('a11\na22'.match(/^.+^./))); + + // (multiline == true) '123\n456'.match(/.3$/) + testcases[count++] = new TestCase ( SECTION, "(multiline == true) '123\\n456'.match(/.3$/m)", + String(['23']), String('123\n456'.match(/.3$/m))); + + // (multiline == true) 'a11\na22\na23\na24'.match(/a..$/g) + testcases[count++] = new TestCase ( SECTION, "(multiline == true) 'a11\\na22\\na23\\na24'.match(/a..$/gm)", + String(['a11','a22','a23','a24']), String('a11\na22\na23\na24'.match(/a..$/gm))); + + // (multiline == true) 'a11\na22\na23\na24'.match(new RegExp('a..$','g')) + testcases[count++] = new TestCase ( SECTION, "(multiline == true) 'a11\\na22\\na23\\na24'.match(new RegExp('a..$','gm'))", + String(['a11','a22','a23','a24']), String('a11\na22\na23\na24'.match(new RegExp('a..$','gm')))); + + // (multiline == true) 'abc\ndef'.match(/c$....$/) + //testcases[count++] = new TestCase ( SECTION, "(multiline == true) 'abc\ndef'.match(/c$.+$/)", + // 'c\ndef', String('abc\ndef'.match(/c$.+$/))); + + RegExp.multiline = false; + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_multiline_as_array.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_multiline_as_array.js new file mode 100644 index 00000000000..01734f5e7bd --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_multiline_as_array.js @@ -0,0 +1,129 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: RegExp_multiline_as_array.js + Description: 'Tests RegExps $* property (same tests as RegExp_multiline.js but using $*)' + + Author: Nick Lerissa + Date: March 13, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: $*'; + + writeHeaderToLog('Executing script: RegExp_multiline_as_array.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // First we do a series of tests with RegExp['$*'] set to false (default value) + // Following this we do the same tests with RegExp['$*'] set true(**). + // RegExp['$*'] + testcases[count++] = new TestCase ( SECTION, "RegExp['$*']", + false, RegExp['$*']); + + // (['$*'] == false) '123\n456'.match(/^4../) + testcases[count++] = new TestCase ( SECTION, "(['$*'] == false) '123\\n456'.match(/^4../)", + null, '123\n456'.match(/^4../)); + + // (['$*'] == false) 'a11\na22\na23\na24'.match(/^a../g) + testcases[count++] = new TestCase ( SECTION, "(['$*'] == false) 'a11\\na22\\na23\\na24'.match(/^a../g)", + String(['a11']), String('a11\na22\na23\na24'.match(/^a../g))); + + // (['$*'] == false) 'a11\na22'.match(/^.+^./) + testcases[count++] = new TestCase ( SECTION, "(['$*'] == false) 'a11\na22'.match(/^.+^./)", + null, 'a11\na22'.match(/^.+^./)); + + // (['$*'] == false) '123\n456'.match(/.3$/) + testcases[count++] = new TestCase ( SECTION, "(['$*'] == false) '123\\n456'.match(/.3$/)", + null, '123\n456'.match(/.3$/)); + + // (['$*'] == false) 'a11\na22\na23\na24'.match(/a..$/g) + testcases[count++] = new TestCase ( SECTION, "(['$*'] == false) 'a11\\na22\\na23\\na24'.match(/a..$/g)", + String(['a24']), String('a11\na22\na23\na24'.match(/a..$/g))); + + // (['$*'] == false) 'abc\ndef'.match(/c$...$/) + testcases[count++] = new TestCase ( SECTION, "(['$*'] == false) 'abc\ndef'.match(/c$...$/)", + null, 'abc\ndef'.match(/c$...$/)); + + // (['$*'] == false) 'a11\na22\na23\na24'.match(new RegExp('a..$','g')) + testcases[count++] = new TestCase ( SECTION, "(['$*'] == false) 'a11\\na22\\na23\\na24'.match(new RegExp('a..$','g'))", + String(['a24']), String('a11\na22\na23\na24'.match(new RegExp('a..$','g')))); + + // (['$*'] == false) 'abc\ndef'.match(new RegExp('c$...$')) + testcases[count++] = new TestCase ( SECTION, "(['$*'] == false) 'abc\ndef'.match(new RegExp('c$...$'))", + null, 'abc\ndef'.match(new RegExp('c$...$'))); + + // **Now we do the tests with RegExp['$*'] set to true + // RegExp['$*'] = true; RegExp['$*'] + RegExp['$*'] = true; + testcases[count++] = new TestCase ( SECTION, "RegExp['$*'] = true; RegExp['$*']", + true, RegExp['$*']); + + // (['$*'] == true) '123\n456'.match(/^4../) + testcases[count++] = new TestCase ( SECTION, "(['$*'] == true) '123\\n456'.match(/^4../m)", + String(['456']), String('123\n456'.match(/^4../m))); + + // (['$*'] == true) 'a11\na22\na23\na24'.match(/^a../g) + testcases[count++] = new TestCase ( SECTION, "(['$*'] == true) 'a11\\na22\\na23\\na24'.match(/^a../gm)", + String(['a11','a22','a23','a24']), String('a11\na22\na23\na24'.match(/^a../gm))); + + // (['$*'] == true) 'a11\na22'.match(/^.+^./) + //testcases[count++] = new TestCase ( SECTION, "(['$*'] == true) 'a11\na22'.match(/^.+^./)", + // String(['a11\na']), String('a11\na22'.match(/^.+^./))); + + // (['$*'] == true) '123\n456'.match(/.3$/) + testcases[count++] = new TestCase ( SECTION, "(['$*'] == true) '123\\n456'.match(/.3$/m)", + String(['23']), String('123\n456'.match(/.3$/m))); + + // (['$*'] == true) 'a11\na22\na23\na24'.match(/a..$/g) + testcases[count++] = new TestCase ( SECTION, "(['$*'] == true) 'a11\\na22\\na23\\na24'.match(/a..$/gm)", + String(['a11','a22','a23','a24']), String('a11\na22\na23\na24'.match(/a..$/gm))); + + // (['$*'] == true) 'a11\na22\na23\na24'.match(new RegExp('a..$','g')) + testcases[count++] = new TestCase ( SECTION, "(['$*'] == true) 'a11\\na22\\na23\\na24'.match(new RegExp('a..$','gm'))", + String(['a11','a22','a23','a24']), String('a11\na22\na23\na24'.match(new RegExp('a..$','gm')))); + + // (['$*'] == true) 'abc\ndef'.match(/c$....$/) + //testcases[count++] = new TestCase ( SECTION, "(['$*'] == true) 'abc\ndef'.match(/c$.+$/)", + // 'c\ndef', String('abc\ndef'.match(/c$.+$/))); + + RegExp['$*'] = false; + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_object.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_object.js new file mode 100644 index 00000000000..6bf23530787 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_object.js @@ -0,0 +1,88 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: RegExp_object.js + Description: 'Tests regular expressions creating RexExp Objects' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: object'; + + writeHeaderToLog('Executing script: RegExp_object.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + var SSN_pattern = new RegExp("\\d{3}-\\d{2}-\\d{4}"); + + // testing SSN pattern + testcases[count++] = new TestCase ( SECTION, "'Test SSN is 123-34-4567'.match(SSN_pattern))", + String(["123-34-4567"]), String('Test SSN is 123-34-4567'.match(SSN_pattern))); + + // testing SSN pattern + testcases[count++] = new TestCase ( SECTION, "'Test SSN is 123-34-4567'.match(SSN_pattern))", + String(["123-34-4567"]), String('Test SSN is 123-34-4567'.match(SSN_pattern))); + + var PHONE_pattern = new RegExp("\\(?(\\d{3})\\)?-?(\\d{3})-(\\d{4})"); + // testing PHONE pattern + testcases[count++] = new TestCase ( SECTION, "'Our phone number is (408)345-2345.'.match(PHONE_pattern))", + String(["(408)345-2345","408","345","2345"]), String('Our phone number is (408)345-2345.'.match(PHONE_pattern))); + + // testing PHONE pattern + testcases[count++] = new TestCase ( SECTION, "'The phone number is 408-345-2345!'.match(PHONE_pattern))", + String(["408-345-2345","408","345","2345"]), String('The phone number is 408-345-2345!'.match(PHONE_pattern))); + + // testing PHONE pattern + testcases[count++] = new TestCase ( SECTION, "String(PHONE_pattern.toString())", + "/\\(?(\\d{3})\\)?-?(\\d{3})-(\\d{4})/", String(PHONE_pattern.toString())); + + // testing conversion to String + testcases[count++] = new TestCase ( SECTION, "PHONE_pattern + ' is the string'", + "/\\(?(\\d{3})\\)?-?(\\d{3})-(\\d{4})/ is the string",PHONE_pattern + ' is the string'); + + // testing conversion to int + testcases[count++] = new TestCase ( SECTION, "SSN_pattern - 8", + NaN,SSN_pattern - 8); + + var testPattern = new RegExp("(\\d+)45(\\d+)90"); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_rightContext.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_rightContext.js new file mode 100644 index 00000000000..ede5e21eaf9 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_rightContext.js @@ -0,0 +1,90 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: RegExp_rightContext.js + Description: 'Tests RegExps rightContext property' + + Author: Nick Lerissa + Date: March 12, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: rightContext'; + + writeHeaderToLog('Executing script: RegExp_rightContext.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abc123xyz'.match(/123/); RegExp.rightContext + 'abc123xyz'.match(/123/); + testcases[count++] = new TestCase ( SECTION, "'abc123xyz'.match(/123/); RegExp.rightContext", + 'xyz', RegExp.rightContext); + + // 'abc123xyz'.match(/456/); RegExp.rightContext + 'abc123xyz'.match(/456/); + testcases[count++] = new TestCase ( SECTION, "'abc123xyz'.match(/456/); RegExp.rightContext", + 'xyz', RegExp.rightContext); + + // 'abc123xyz'.match(/abc123xyz/); RegExp.rightContext + 'abc123xyz'.match(/abc123xyz/); + testcases[count++] = new TestCase ( SECTION, "'abc123xyz'.match(/abc123xyz/); RegExp.rightContext", + '', RegExp.rightContext); + + // 'xxxx'.match(/$/); RegExp.rightContext + 'xxxx'.match(/$/); + testcases[count++] = new TestCase ( SECTION, "'xxxx'.match(/$/); RegExp.rightContext", + '', RegExp.rightContext); + + // 'test'.match(/^/); RegExp.rightContext + 'test'.match(/^/); + testcases[count++] = new TestCase ( SECTION, "'test'.match(/^/); RegExp.rightContext", + 'test', RegExp.rightContext); + + // 'xxxx'.match(new RegExp('$')); RegExp.rightContext + 'xxxx'.match(new RegExp('$')); + testcases[count++] = new TestCase ( SECTION, "'xxxx'.match(new RegExp('$')); RegExp.rightContext", + '', RegExp.rightContext); + + // 'test'.match(new RegExp('^')); RegExp.rightContext + 'test'.match(new RegExp('^')); + testcases[count++] = new TestCase ( SECTION, "'test'.match(new RegExp('^')); RegExp.rightContext", + 'test', RegExp.rightContext); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_rightContext_as_array.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_rightContext_as_array.js new file mode 100644 index 00000000000..e18277496f8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/RegExp_rightContext_as_array.js @@ -0,0 +1,90 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: RegExp_rightContext_as_array.js + Description: 'Tests RegExps $\' property (same tests as RegExp_rightContext.js but using $\)' + + Author: Nick Lerissa + Date: March 12, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: $\''; + + writeHeaderToLog('Executing script: RegExp_rightContext.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abc123xyz'.match(/123/); RegExp['$\''] + 'abc123xyz'.match(/123/); + testcases[count++] = new TestCase ( SECTION, "'abc123xyz'.match(/123/); RegExp['$\'']", + 'xyz', RegExp['$\'']); + + // 'abc123xyz'.match(/456/); RegExp['$\''] + 'abc123xyz'.match(/456/); + testcases[count++] = new TestCase ( SECTION, "'abc123xyz'.match(/456/); RegExp['$\'']", + 'xyz', RegExp['$\'']); + + // 'abc123xyz'.match(/abc123xyz/); RegExp['$\''] + 'abc123xyz'.match(/abc123xyz/); + testcases[count++] = new TestCase ( SECTION, "'abc123xyz'.match(/abc123xyz/); RegExp['$\'']", + '', RegExp['$\'']); + + // 'xxxx'.match(/$/); RegExp['$\''] + 'xxxx'.match(/$/); + testcases[count++] = new TestCase ( SECTION, "'xxxx'.match(/$/); RegExp['$\'']", + '', RegExp['$\'']); + + // 'test'.match(/^/); RegExp['$\''] + 'test'.match(/^/); + testcases[count++] = new TestCase ( SECTION, "'test'.match(/^/); RegExp['$\'']", + 'test', RegExp['$\'']); + + // 'xxxx'.match(new RegExp('$')); RegExp['$\''] + 'xxxx'.match(new RegExp('$')); + testcases[count++] = new TestCase ( SECTION, "'xxxx'.match(new RegExp('$')); RegExp['$\'']", + '', RegExp['$\'']); + + // 'test'.match(new RegExp('^')); RegExp['$\''] + 'test'.match(new RegExp('^')); + testcases[count++] = new TestCase ( SECTION, "'test'.match(new RegExp('^')); RegExp['$\'']", + 'test', RegExp['$\'']); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/alphanumeric.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/alphanumeric.js new file mode 100644 index 00000000000..36f5280f3e6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/alphanumeric.js @@ -0,0 +1,129 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: alphanumeric.js + Description: 'Tests regular expressions with \w and \W special characters' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: \\w and \\W'; + + writeHeaderToLog('Executing script: alphanumeric.js'); + writeHeaderToLog( SECTION + " " + TITLE); + + var count = 0; + var testcases = new Array(); + + var non_alphanumeric = "~`!@#$%^&*()-+={[}]|\\:;'<,>./?\f\n\r\t\v " + '"'; + var alphanumeric = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; + + // be sure all alphanumerics are matched by \w + testcases[count++] = new TestCase ( SECTION, + "'" + alphanumeric + "'.match(new RegExp('\\w+'))", + String([alphanumeric]), String(alphanumeric.match(new RegExp('\\w+')))); + + // be sure all non-alphanumerics are matched by \W + testcases[count++] = new TestCase ( SECTION, + "'" + non_alphanumeric + "'.match(new RegExp('\\W+'))", + String([non_alphanumeric]), String(non_alphanumeric.match(new RegExp('\\W+')))); + + // be sure all non-alphanumerics are not matched by \w + testcases[count++] = new TestCase ( SECTION, + "'" + non_alphanumeric + "'.match(new RegExp('\\w'))", + null, non_alphanumeric.match(new RegExp('\\w'))); + + // be sure all alphanumerics are not matched by \W + testcases[count++] = new TestCase ( SECTION, + "'" + alphanumeric + "'.match(new RegExp('\\W'))", + null, alphanumeric.match(new RegExp('\\W'))); + + var s = non_alphanumeric + alphanumeric; + + // be sure all alphanumerics are matched by \w + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\w+'))", + String([alphanumeric]), String(s.match(new RegExp('\\w+')))); + + s = alphanumeric + non_alphanumeric; + + // be sure all non-alphanumerics are matched by \W + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\W+'))", + String([non_alphanumeric]), String(s.match(new RegExp('\\W+')))); + + // be sure all alphanumerics are matched by \w (using literals) + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(/\w+/)", + String([alphanumeric]), String(s.match(/\w+/))); + + s = alphanumeric + non_alphanumeric; + + // be sure all non-alphanumerics are matched by \W (using literals) + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(/\W+/)", + String([non_alphanumeric]), String(s.match(/\W+/))); + + s = 'abcd*&^%$$'; + // be sure the following test behaves consistently + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(/(\w+)...(\W+)/)", + String([s , 'abcd' , '%$$']), String(s.match(/(\w+)...(\W+)/))); + + var i; + + // be sure all alphanumeric characters match individually + for (i = 0; i < alphanumeric.length; ++i) + { + s = '#$' + alphanumeric[i] + '%^'; + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\w'))", + String([alphanumeric[i]]), String(s.match(new RegExp('\\w')))); + } + // be sure all non_alphanumeric characters match individually + for (i = 0; i < non_alphanumeric.length; ++i) + { + s = 'sd' + non_alphanumeric[i] + String((i+10) * (i+10) - 2 * (i+10)); + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\W'))", + String([non_alphanumeric[i]]), String(s.match(new RegExp('\\W')))); + } + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/asterisk.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/asterisk.js new file mode 100644 index 00000000000..dfa83431266 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/asterisk.js @@ -0,0 +1,105 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: asterisk.js + Description: 'Tests regular expressions containing *' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: *'; + + writeHeaderToLog('Executing script: aterisk.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abcddddefg'.match(new RegExp('d*')) + testcases[count++] = new TestCase ( SECTION, "'abcddddefg'.match(new RegExp('d*'))", + String([""]), String('abcddddefg'.match(new RegExp('d*')))); + + // 'abcddddefg'.match(new RegExp('cd*')) + testcases[count++] = new TestCase ( SECTION, "'abcddddefg'.match(new RegExp('cd*'))", + String(["cdddd"]), String('abcddddefg'.match(new RegExp('cd*')))); + + // 'abcdefg'.match(new RegExp('cx*d')) + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(new RegExp('cx*d'))", + String(["cd"]), String('abcdefg'.match(new RegExp('cx*d')))); + + // 'xxxxxxx'.match(new RegExp('(x*)(x+)')) + testcases[count++] = new TestCase ( SECTION, "'xxxxxxx'.match(new RegExp('(x*)(x+)'))", + String(["xxxxxxx","xxxxxx","x"]), String('xxxxxxx'.match(new RegExp('(x*)(x+)')))); + + // '1234567890'.match(new RegExp('(\\d*)(\\d+)')) + testcases[count++] = new TestCase ( SECTION, "'1234567890'.match(new RegExp('(\\d*)(\\d+)'))", + String(["1234567890","123456789","0"]), + String('1234567890'.match(new RegExp('(\\d*)(\\d+)')))); + + // '1234567890'.match(new RegExp('(\\d*)\\d(\\d+)')) + testcases[count++] = new TestCase ( SECTION, "'1234567890'.match(new RegExp('(\\d*)\\d(\\d+)'))", + String(["1234567890","12345678","0"]), + String('1234567890'.match(new RegExp('(\\d*)\\d(\\d+)')))); + + // 'xxxxxxx'.match(new RegExp('(x+)(x*)')) + testcases[count++] = new TestCase ( SECTION, "'xxxxxxx'.match(new RegExp('(x+)(x*)'))", + String(["xxxxxxx","xxxxxxx",""]), String('xxxxxxx'.match(new RegExp('(x+)(x*)')))); + + // 'xxxxxxyyyyyy'.match(new RegExp('x*y+$')) + testcases[count++] = new TestCase ( SECTION, "'xxxxxxyyyyyy'.match(new RegExp('x*y+$'))", + String(["xxxxxxyyyyyy"]), String('xxxxxxyyyyyy'.match(new RegExp('x*y+$')))); + + // 'abcdef'.match(/[\d]*[\s]*bc./) + testcases[count++] = new TestCase ( SECTION, "'abcdef'.match(/[\\d]*[\\s]*bc./)", + String(["bcd"]), String('abcdef'.match(/[\d]*[\s]*bc./))); + + // 'abcdef'.match(/bc..[\d]*[\s]*/) + testcases[count++] = new TestCase ( SECTION, "'abcdef'.match(/bc..[\\d]*[\\s]*/)", + String(["bcde"]), String('abcdef'.match(/bc..[\d]*[\s]*/))); + + // 'a1b2c3'.match(/.*/) + testcases[count++] = new TestCase ( SECTION, "'a1b2c3'.match(/.*/)", + String(["a1b2c3"]), String('a1b2c3'.match(/.*/))); + + // 'a0.b2.c3'.match(/[xyz]*1/) + testcases[count++] = new TestCase ( SECTION, "'a0.b2.c3'.match(/[xyz]*1/)", + null, 'a0.b2.c3'.match(/[xyz]*1/)); + +function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/backslash.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/backslash.js new file mode 100644 index 00000000000..61c5d61c63a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/backslash.js @@ -0,0 +1,79 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: backslash.js + Description: 'Tests regular expressions containing \' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: \\'; + + writeHeaderToLog('Executing script: backslash.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abcde'.match(new RegExp('\e')) + testcases[count++] = new TestCase ( SECTION, "'abcde'.match(new RegExp('\e'))", + String(["e"]), String('abcde'.match(new RegExp('\e')))); + + // 'ab\\cde'.match(new RegExp('\\\\')) + testcases[count++] = new TestCase ( SECTION, "'ab\\cde'.match(new RegExp('\\\\'))", + String(["\\"]), String('ab\\cde'.match(new RegExp('\\\\')))); + + // 'ab\\cde'.match(/\\/) (using literal) + testcases[count++] = new TestCase ( SECTION, "'ab\\cde'.match(/\\\\/)", + String(["\\"]), String('ab\\cde'.match(/\\/))); + + // 'before ^$*+?.()|{}[] after'.match(new RegExp('\^\$\*\+\?\.\(\)\|\{\}\[\]')) + testcases[count++] = new TestCase ( SECTION, + "'before ^$*+?.()|{}[] after'.match(new RegExp('\\^\\$\\*\\+\\?\\.\\(\\)\\|\\{\\}\\[\\]'))", + String(["^$*+?.()|{}[]"]), + String('before ^$*+?.()|{}[] after'.match(new RegExp('\\^\\$\\*\\+\\?\\.\\(\\)\\|\\{\\}\\[\\]')))); + + // 'before ^$*+?.()|{}[] after'.match(/\^\$\*\+\?\.\(\)\|\{\}\[\]/) (using literal) + testcases[count++] = new TestCase ( SECTION, + "'before ^$*+?.()|{}[] after'.match(/\\^\\$\\*\\+\\?\\.\\(\\)\\|\\{\\}\\[\\]/)", + String(["^$*+?.()|{}[]"]), + String('before ^$*+?.()|{}[] after'.match(/\^\$\*\+\?\.\(\)\|\{\}\[\]/))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/backspace.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/backspace.js new file mode 100644 index 00000000000..bd3c064852b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/backspace.js @@ -0,0 +1,79 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: backspace.js + Description: 'Tests regular expressions containing [\b]' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: [\b]'; + + writeHeaderToLog('Executing script: backspace.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abc\bdef'.match(new RegExp('.[\b].')) + testcases[count++] = new TestCase ( SECTION, "'abc\bdef'.match(new RegExp('.[\\b].'))", + String(["c\bd"]), String('abc\bdef'.match(new RegExp('.[\\b].')))); + + // 'abc\\bdef'.match(new RegExp('.[\b].')) + testcases[count++] = new TestCase ( SECTION, "'abc\\bdef'.match(new RegExp('.[\\b].'))", + null, 'abc\\bdef'.match(new RegExp('.[\\b].'))); + + // 'abc\b\b\bdef'.match(new RegExp('c[\b]{3}d')) + testcases[count++] = new TestCase ( SECTION, "'abc\b\b\bdef'.match(new RegExp('c[\\b]{3}d'))", + String(["c\b\b\bd"]), String('abc\b\b\bdef'.match(new RegExp('c[\\b]{3}d')))); + + // 'abc\bdef'.match(new RegExp('[^\\[\b\\]]+')) + testcases[count++] = new TestCase ( SECTION, "'abc\bdef'.match(new RegExp('[^\\[\\b\\]]+'))", + String(["abc"]), String('abc\bdef'.match(new RegExp('[^\\[\\b\\]]+')))); + + // 'abcdef'.match(new RegExp('[^\\[\b\\]]+')) + testcases[count++] = new TestCase ( SECTION, "'abcdef'.match(new RegExp('[^\\[\\b\\]]+'))", + String(["abcdef"]), String('abcdef'.match(new RegExp('[^\\[\\b\\]]+')))); + + // 'abcdef'.match(/[^\[\b\]]+/) + testcases[count++] = new TestCase ( SECTION, "'abcdef'.match(/[^\\[\\b\\]]+/)", + String(["abcdef"]), String('abcdef'.match(/[^\[\b\]]+/))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/beginLine.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/beginLine.js new file mode 100644 index 00000000000..686092a69c6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/beginLine.js @@ -0,0 +1,80 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: beginLine.js + Description: 'Tests regular expressions containing ^' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: ^'; + + writeHeaderToLog('Executing script: beginLine.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abcde'.match(new RegExp('^ab')) + testcases[count++] = new TestCase ( SECTION, "'abcde'.match(new RegExp('^ab'))", + String(["ab"]), String('abcde'.match(new RegExp('^ab')))); + + // 'ab\ncde'.match(new RegExp('^..^e')) + testcases[count++] = new TestCase ( SECTION, "'ab\ncde'.match(new RegExp('^..^e'))", + null, 'ab\ncde'.match(new RegExp('^..^e'))); + + // 'yyyyy'.match(new RegExp('^xxx')) + testcases[count++] = new TestCase ( SECTION, "'yyyyy'.match(new RegExp('^xxx'))", + null, 'yyyyy'.match(new RegExp('^xxx'))); + + // '^^^x'.match(new RegExp('^\\^+')) + testcases[count++] = new TestCase ( SECTION, "'^^^x'.match(new RegExp('^\\^+'))", + String(['^^^']), String('^^^x'.match(new RegExp('^\\^+')))); + + // '^^^x'.match(/^\^+/) + testcases[count++] = new TestCase ( SECTION, "'^^^x'.match(/^\\^+/)", + String(['^^^']), String('^^^x'.match(/^\^+/))); + + RegExp.multiline = true; + // 'abc\n123xyz'.match(new RegExp('^\d+')) + testcases[count++] = new TestCase ( SECTION, "'abc\n123xyz'.match(new RegExp('^\\d+','m'))", + String(['123']), String('abc\n123xyz'.match(new RegExp('^\\d+','m')))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/character_class.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/character_class.js new file mode 100644 index 00000000000..da0b59e773a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/character_class.js @@ -0,0 +1,107 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: character_class.js + Description: 'Tests regular expressions containing []' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: []'; + + writeHeaderToLog('Executing script: character_class.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abcde'.match(new RegExp('ab[ercst]de')) + testcases[count++] = new TestCase ( SECTION, "'abcde'.match(new RegExp('ab[ercst]de'))", + String(["abcde"]), String('abcde'.match(new RegExp('ab[ercst]de')))); + + // 'abcde'.match(new RegExp('ab[erst]de')) + testcases[count++] = new TestCase ( SECTION, "'abcde'.match(new RegExp('ab[erst]de'))", + null, 'abcde'.match(new RegExp('ab[erst]de'))); + + // 'abcdefghijkl'.match(new RegExp('[d-h]+')) + testcases[count++] = new TestCase ( SECTION, "'abcdefghijkl'.match(new RegExp('[d-h]+'))", + String(["defgh"]), String('abcdefghijkl'.match(new RegExp('[d-h]+')))); + + // 'abc6defghijkl'.match(new RegExp('[1234567].{2}')) + testcases[count++] = new TestCase ( SECTION, "'abc6defghijkl'.match(new RegExp('[1234567].{2}'))", + String(["6de"]), String('abc6defghijkl'.match(new RegExp('[1234567].{2}')))); + + // '\n\n\abc324234\n'.match(new RegExp('[a-c\d]+')) + testcases[count++] = new TestCase ( SECTION, "'\n\n\abc324234\n'.match(new RegExp('[a-c\\d]+'))", + String(["abc324234"]), String('\n\n\abc324234\n'.match(new RegExp('[a-c\\d]+')))); + + // 'abc'.match(new RegExp('ab[.]?c')) + testcases[count++] = new TestCase ( SECTION, "'abc'.match(new RegExp('ab[.]?c'))", + String(["abc"]), String('abc'.match(new RegExp('ab[.]?c')))); + + // 'abc'.match(new RegExp('a[b]c')) + testcases[count++] = new TestCase ( SECTION, "'abc'.match(new RegExp('a[b]c'))", + String(["abc"]), String('abc'.match(new RegExp('a[b]c')))); + + // 'a1b b2c c3d def f4g'.match(new RegExp('[a-z][^1-9][a-z]')) + testcases[count++] = new TestCase ( SECTION, "'a1b b2c c3d def f4g'.match(new RegExp('[a-z][^1-9][a-z]'))", + String(["def"]), String('a1b b2c c3d def f4g'.match(new RegExp('[a-z][^1-9][a-z]')))); + + // '123*&$abc'.match(new RegExp('[*&$]{3}')) + testcases[count++] = new TestCase ( SECTION, "'123*&$abc'.match(new RegExp('[*&$]{3}'))", + String(["*&$"]), String('123*&$abc'.match(new RegExp('[*&$]{3}')))); + + // 'abc'.match(new RegExp('a[^1-9]c')) + testcases[count++] = new TestCase ( SECTION, "'abc'.match(new RegExp('a[^1-9]c'))", + String(["abc"]), String('abc'.match(new RegExp('a[^1-9]c')))); + + // 'abc'.match(new RegExp('a[^b]c')) + testcases[count++] = new TestCase ( SECTION, "'abc'.match(new RegExp('a[^b]c'))", + null, 'abc'.match(new RegExp('a[^b]c'))); + + // 'abc#$%def%&*@ghi)(*&'.match(new RegExp('[^a-z]{4}')) + testcases[count++] = new TestCase ( SECTION, "'abc#$%def%&*@ghi)(*&'.match(new RegExp('[^a-z]{4}'))", + String(["%&*@"]), String('abc#$%def%&*@ghi)(*&'.match(new RegExp('[^a-z]{4}')))); + + // 'abc#$%def%&*@ghi)(*&'.match(/[^a-z]{4}/) + testcases[count++] = new TestCase ( SECTION, "'abc#$%def%&*@ghi)(*&'.match(/[^a-z]{4}/)", + String(["%&*@"]), String('abc#$%def%&*@ghi)(*&'.match(/[^a-z]{4}/))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/compile.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/compile.js new file mode 100644 index 00000000000..973fff2d48a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/compile.js @@ -0,0 +1,94 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: compile.js + Description: 'Tests regular expressions method compile' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: compile'; + + writeHeaderToLog('Executing script: compile.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + var regularExpression = new RegExp(); + + regularExpression.compile("[0-9]{3}x[0-9]{4}","i"); + + testcases[count++] = new TestCase ( SECTION, + "(compile '[0-9]{3}x[0-9]{4}','i')", + String(["456X7890"]), String('234X456X7890'.match(regularExpression))); + + testcases[count++] = new TestCase ( SECTION, + "source of (compile '[0-9]{3}x[0-9]{4}','i')", + "[0-9]{3}x[0-9]{4}", regularExpression.source); + + testcases[count++] = new TestCase ( SECTION, + "global of (compile '[0-9]{3}x[0-9]{4}','i')", + false, regularExpression.global); + + testcases[count++] = new TestCase ( SECTION, + "ignoreCase of (compile '[0-9]{3}x[0-9]{4}','i')", + true, regularExpression.ignoreCase); + + regularExpression.compile("[0-9]{3}X[0-9]{3}","g"); + + testcases[count++] = new TestCase ( SECTION, + "(compile '[0-9]{3}X[0-9]{3}','g')", + String(["234X456"]), String('234X456X7890'.match(regularExpression))); + + testcases[count++] = new TestCase ( SECTION, + "source of (compile '[0-9]{3}X[0-9]{3}','g')", + "[0-9]{3}X[0-9]{3}", regularExpression.source); + + testcases[count++] = new TestCase ( SECTION, + "global of (compile '[0-9]{3}X[0-9]{3}','g')", + true, regularExpression.global); + + testcases[count++] = new TestCase ( SECTION, + "ignoreCase of (compile '[0-9]{3}X[0-9]{3}','g')", + false, regularExpression.ignoreCase); + + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/control_characters.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/control_characters.js new file mode 100644 index 00000000000..fb54a7f021a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/control_characters.js @@ -0,0 +1,71 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: control_characters.js + Description: 'Tests regular expressions containing .' + + Author: Nick Lerissa + Date: April 8, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: .'; + var BUGNUMBER="123802"; + + writeHeaderToLog('Executing script: control_characters.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // '郞 :i⒇'.match(new RegExp('.+')) + testcases[count++] = new TestCase ( SECTION, "'郞 :i⒇'.match(new RegExp('.+'))", + String(['郞 :i⒇']), String('郞 :i⒇'.match(new RegExp('.+')))); + + // string1.match(new RegExp(string1)) + var string1 = '郞 :i⒇'; + testcases[count++] = new TestCase ( SECTION, "string1 = " + string1 + " string1.match(string1)", + String([string1]), String(string1.match(string1))); + + string1 = ""; + for (var i = 0; i < 32; i++) + string1 += String.fromCharCode(i); + testcases[count++] = new TestCase ( SECTION, "string1 = " + string1 + " string1.match(string1)", + String([string1]), String(string1.match(string1))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/digit.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/digit.js new file mode 100644 index 00000000000..d4768231e75 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/digit.js @@ -0,0 +1,119 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: digit.js + Description: 'Tests regular expressions containing \d' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: \\d'; + + writeHeaderToLog('Executing script: digit.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + var non_digits = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\f\n\r\t\v~`!@#$%^&*()-+={[}]|\\:;'<,>./? " + '"'; + + var digits = "1234567890"; + + // be sure all digits are matched by \d + testcases[count++] = new TestCase ( SECTION, + "'" + digits + "'.match(new RegExp('\\d+'))", + String([digits]), String(digits.match(new RegExp('\\d+')))); + + // be sure all non-digits are matched by \D + testcases[count++] = new TestCase ( SECTION, + "'" + non_digits + "'.match(new RegExp('\\D+'))", + String([non_digits]), String(non_digits.match(new RegExp('\\D+')))); + + // be sure all non-digits are not matched by \d + testcases[count++] = new TestCase ( SECTION, + "'" + non_digits + "'.match(new RegExp('\\d'))", + null, non_digits.match(new RegExp('\\d'))); + + // be sure all digits are not matched by \D + testcases[count++] = new TestCase ( SECTION, + "'" + digits + "'.match(new RegExp('\\D'))", + null, digits.match(new RegExp('\\D'))); + + var s = non_digits + digits; + + // be sure all digits are matched by \d + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\d+'))", + String([digits]), String(s.match(new RegExp('\\d+')))); + + var s = digits + non_digits; + + // be sure all non-digits are matched by \D + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\D+'))", + String([non_digits]), String(s.match(new RegExp('\\D+')))); + + var i; + + // be sure all digits match individually + for (i = 0; i < digits.length; ++i) + { + s = 'ab' + digits[i] + 'cd'; + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\d'))", + String([digits[i]]), String(s.match(new RegExp('\\d')))); + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(/\\d/)", + String([digits[i]]), String(s.match(/\d/))); + } + // be sure all non_digits match individually + for (i = 0; i < non_digits.length; ++i) + { + s = '12' + non_digits[i] + '34'; + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\D'))", + String([non_digits[i]]), String(s.match(new RegExp('\\D')))); + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(/\\D/)", + String([non_digits[i]]), String(s.match(/\D/))); + } + + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/dot.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/dot.js new file mode 100644 index 00000000000..1e9bbab9f75 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/dot.js @@ -0,0 +1,95 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: dot.js + Description: 'Tests regular expressions containing .' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: .'; + + writeHeaderToLog('Executing script: dot.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abcde'.match(new RegExp('ab.de')) + testcases[count++] = new TestCase ( SECTION, "'abcde'.match(new RegExp('ab.de'))", + String(["abcde"]), String('abcde'.match(new RegExp('ab.de')))); + + // 'line 1\nline 2'.match(new RegExp('.+')) + testcases[count++] = new TestCase ( SECTION, "'line 1\nline 2'.match(new RegExp('.+'))", + String(["line 1"]), String('line 1\nline 2'.match(new RegExp('.+')))); + + // 'this is a test'.match(new RegExp('.*a.*')) + testcases[count++] = new TestCase ( SECTION, "'this is a test'.match(new RegExp('.*a.*'))", + String(["this is a test"]), String('this is a test'.match(new RegExp('.*a.*')))); + + // 'this is a *&^%$# test'.match(new RegExp('.+')) + testcases[count++] = new TestCase ( SECTION, "'this is a *&^%$# test'.match(new RegExp('.+'))", + String(["this is a *&^%$# test"]), String('this is a *&^%$# test'.match(new RegExp('.+')))); + + // '....'.match(new RegExp('.+')) + testcases[count++] = new TestCase ( SECTION, "'....'.match(new RegExp('.+'))", + String(["...."]), String('....'.match(new RegExp('.+')))); + + // 'abcdefghijklmnopqrstuvwxyz'.match(new RegExp('.+')) + testcases[count++] = new TestCase ( SECTION, "'abcdefghijklmnopqrstuvwxyz'.match(new RegExp('.+'))", + String(["abcdefghijklmnopqrstuvwxyz"]), String('abcdefghijklmnopqrstuvwxyz'.match(new RegExp('.+')))); + + // 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.match(new RegExp('.+')) + testcases[count++] = new TestCase ( SECTION, "'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.match(new RegExp('.+'))", + String(["ABCDEFGHIJKLMNOPQRSTUVWXYZ"]), String('ABCDEFGHIJKLMNOPQRSTUVWXYZ'.match(new RegExp('.+')))); + + // '`1234567890-=~!@#$%^&*()_+'.match(new RegExp('.+')) + testcases[count++] = new TestCase ( SECTION, "'`1234567890-=~!@#$%^&*()_+'.match(new RegExp('.+'))", + String(["`1234567890-=~!@#$%^&*()_+"]), String('`1234567890-=~!@#$%^&*()_+'.match(new RegExp('.+')))); + + // '|\\[{]};:"\',<>.?/'.match(new RegExp('.+')) + testcases[count++] = new TestCase ( SECTION, "'|\\[{]};:\"\',<>.?/'.match(new RegExp('.+'))", + String(["|\\[{]};:\"\',<>.?/"]), String('|\\[{]};:\"\',<>.?/'.match(new RegExp('.+')))); + + // '|\\[{]};:"\',<>.?/'.match(/.+/) + testcases[count++] = new TestCase ( SECTION, "'|\\[{]};:\"\',<>.?/'.match(/.+/)", + String(["|\\[{]};:\"\',<>.?/"]), String('|\\[{]};:\"\',<>.?/'.match(/.+/))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/endLine.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/endLine.js new file mode 100644 index 00000000000..e6d588cf91e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/endLine.js @@ -0,0 +1,80 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: endLine.js + Description: 'Tests regular expressions containing $' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: $'; + + writeHeaderToLog('Executing script: endLine.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abcde'.match(new RegExp('de$')) + testcases[count++] = new TestCase ( SECTION, "'abcde'.match(new RegExp('de$'))", + String(["de"]), String('abcde'.match(new RegExp('de$')))); + + // 'ab\ncde'.match(new RegExp('..$e$')) + testcases[count++] = new TestCase ( SECTION, "'ab\ncde'.match(new RegExp('..$e$'))", + null, 'ab\ncde'.match(new RegExp('..$e$'))); + + // 'yyyyy'.match(new RegExp('xxx$')) + testcases[count++] = new TestCase ( SECTION, "'yyyyy'.match(new RegExp('xxx$'))", + null, 'yyyyy'.match(new RegExp('xxx$'))); + + // 'a$$$'.match(new RegExp('\\$+$')) + testcases[count++] = new TestCase ( SECTION, "'a$$$'.match(new RegExp('\\$+$'))", + String(['$$$']), String('a$$$'.match(new RegExp('\\$+$')))); + + // 'a$$$'.match(/\$+$/) + testcases[count++] = new TestCase ( SECTION, "'a$$$'.match(/\\$+$/)", + String(['$$$']), String('a$$$'.match(/\$+$/))); + + RegExp.multiline = true; + // 'abc\n123xyz890\nxyz'.match(new RegExp('\d+$')) + testcases[count++] = new TestCase ( SECTION, "'abc\n123xyz890\nxyz'.match(new RegExp('\\d+$','m'))", + String(['890']), String('abc\n123xyz890\nxyz'.match(new RegExp('\\d+$','m')))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/everything.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/everything.js new file mode 100644 index 00000000000..1cb6acb2e2b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/everything.js @@ -0,0 +1,80 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: everything.js + Description: 'Tests regular expressions' + + Author: Nick Lerissa + Date: March 24, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp'; + + writeHeaderToLog('Executing script: everything.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'Sally and Fred are sure to come.'.match(/^[a-z\s]*/i) + testcases[count++] = new TestCase ( SECTION, "'Sally and Fred are sure to come'.match(/^[a-z\\s]*/i)", + String(["Sally and Fred are sure to come"]), String('Sally and Fred are sure to come'.match(/^[a-z\s]*/i))); + + // 'test123W+xyz'.match(new RegExp('^[a-z]*[0-9]+[A-Z]?.(123|xyz)$')) + testcases[count++] = new TestCase ( SECTION, "'test123W+xyz'.match(new RegExp('^[a-z]*[0-9]+[A-Z]?.(123|xyz)$'))", + String(["test123W+xyz","xyz"]), String('test123W+xyz'.match(new RegExp('^[a-z]*[0-9]+[A-Z]?.(123|xyz)$')))); + + // 'number one 12365 number two 9898'.match(/(\d+)\D+(\d+)/) + testcases[count++] = new TestCase ( SECTION, "'number one 12365 number two 9898'.match(/(\d+)\D+(\d+)/)", + String(["12365 number two 9898","12365","9898"]), String('number one 12365 number two 9898'.match(/(\d+)\D+(\d+)/))); + + var simpleSentence = /(\s?[^\!\?\.]+[\!\?\.])+/; + // 'See Spot run.'.match(simpleSentence) + testcases[count++] = new TestCase ( SECTION, "'See Spot run.'.match(simpleSentence)", + String(["See Spot run.","See Spot run."]), String('See Spot run.'.match(simpleSentence))); + + // 'I like it. What's up? I said NO!'.match(simpleSentence) + testcases[count++] = new TestCase ( SECTION, "'I like it. What's up? I said NO!'.match(simpleSentence)", + String(["I like it. What's up? I said NO!",' I said NO!']), String('I like it. What\'s up? I said NO!'.match(simpleSentence))); + + // 'the quick brown fox jumped over the lazy dogs'.match(/((\w+)\s*)+/) + testcases[count++] = new TestCase ( SECTION, "'the quick brown fox jumped over the lazy dogs'.match(/((\\w+)\\s*)+/)", + String(['the quick brown fox jumped over the lazy dogs','dogs','dogs']),String('the quick brown fox jumped over the lazy dogs'.match(/((\w+)\s*)+/))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/exec.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/exec.js new file mode 100644 index 00000000000..f1a9d8b09b2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/exec.js @@ -0,0 +1,77 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: exec.js + Description: 'Tests regular expressions exec compile' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: exec'; + + writeHeaderToLog('Executing script: exec.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + testcases[count++] = new TestCase ( SECTION, + "/[0-9]{3}/.exec('23 2 34 678 9 09')", + String(["678"]), String(/[0-9]{3}/.exec('23 2 34 678 9 09'))); + + testcases[count++] = new TestCase ( SECTION, + "/3.{4}8/.exec('23 2 34 678 9 09')", + String(["34 678"]), String(/3.{4}8/.exec('23 2 34 678 9 09'))); + + var re = new RegExp('3.{4}8'); + testcases[count++] = new TestCase ( SECTION, + "re.exec('23 2 34 678 9 09')", + String(["34 678"]), String(re.exec('23 2 34 678 9 09'))); + + testcases[count++] = new TestCase ( SECTION, + "(/3.{4}8/.exec('23 2 34 678 9 09').length", + 1, (/3.{4}8/.exec('23 2 34 678 9 09')).length); + + re = new RegExp('3.{4}8'); + testcases[count++] = new TestCase ( SECTION, + "(re.exec('23 2 34 678 9 09').length", + 1, (re.exec('23 2 34 678 9 09')).length); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/flags.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/flags.js new file mode 100644 index 00000000000..5c25c8fd6a1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/flags.js @@ -0,0 +1,84 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: regexp.js + Description: 'Tests regular expressions using flags "i" and "g"' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'regular expression flags with flags "i" and "g"'; + + writeHeaderToLog('Executing script: flags.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // testing optional flag 'i' + testcases[count++] = new TestCase ( SECTION, "'aBCdEfGHijKLmno'.match(/fghijk/i)", + String(["fGHijK"]), String('aBCdEfGHijKLmno'.match(/fghijk/i))); + + testcases[count++] = new TestCase ( SECTION, "'aBCdEfGHijKLmno'.match(new RegExp('fghijk','i'))", + String(["fGHijK"]), String('aBCdEfGHijKLmno'.match(new RegExp("fghijk","i")))); + + // testing optional flag 'g' + testcases[count++] = new TestCase ( SECTION, "'xa xb xc xd xe xf'.match(/x./g)", + String(["xa","xb","xc","xd","xe","xf"]), String('xa xb xc xd xe xf'.match(/x./g))); + + testcases[count++] = new TestCase ( SECTION, "'xa xb xc xd xe xf'.match(new RegExp('x.','g'))", + String(["xa","xb","xc","xd","xe","xf"]), String('xa xb xc xd xe xf'.match(new RegExp('x.','g')))); + + // testing optional flags 'g' and 'i' + testcases[count++] = new TestCase ( SECTION, "'xa Xb xc xd Xe xf'.match(/x./gi)", + String(["xa","Xb","xc","xd","Xe","xf"]), String('xa Xb xc xd Xe xf'.match(/x./gi))); + + testcases[count++] = new TestCase ( SECTION, "'xa Xb xc xd Xe xf'.match(new RegExp('x.','gi'))", + String(["xa","Xb","xc","xd","Xe","xf"]), String('xa Xb xc xd Xe xf'.match(new RegExp('x.','gi')))); + + testcases[count++] = new TestCase ( SECTION, "'xa Xb xc xd Xe xf'.match(/x./ig)", + String(["xa","Xb","xc","xd","Xe","xf"]), String('xa Xb xc xd Xe xf'.match(/x./ig))); + + testcases[count++] = new TestCase ( SECTION, "'xa Xb xc xd Xe xf'.match(new RegExp('x.','ig'))", + String(["xa","Xb","xc","xd","Xe","xf"]), String('xa Xb xc xd Xe xf'.match(new RegExp('x.','ig')))); + + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/global.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/global.js new file mode 100644 index 00000000000..ce43520c460 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/global.js @@ -0,0 +1,95 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: global.js + Description: 'Tests RegExp attribute global' + + Author: Nick Lerissa + Date: March 13, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: global'; + + writeHeaderToLog('Executing script: global.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // /xyz/g.global + testcases[count++] = new TestCase ( SECTION, "/xyz/g.global", + true, /xyz/g.global); + + // /xyz/.global + testcases[count++] = new TestCase ( SECTION, "/xyz/.global", + false, /xyz/.global); + + // '123 456 789'.match(/\d+/g) + testcases[count++] = new TestCase ( SECTION, "'123 456 789'.match(/\\d+/g)", + String(["123","456","789"]), String('123 456 789'.match(/\d+/g))); + + // '123 456 789'.match(/(\d+)/g) + testcases[count++] = new TestCase ( SECTION, "'123 456 789'.match(/(\\d+)/g)", + String(["123","456","789"]), String('123 456 789'.match(/(\d+)/g))); + + // '123 456 789'.match(/\d+/) + testcases[count++] = new TestCase ( SECTION, "'123 456 789'.match(/\\d+/)", + String(["123"]), String('123 456 789'.match(/\d+/))); + + // (new RegExp('[a-z]','g')).global + testcases[count++] = new TestCase ( SECTION, "(new RegExp('[a-z]','g')).global", + true, (new RegExp('[a-z]','g')).global); + + // (new RegExp('[a-z]','i')).global + testcases[count++] = new TestCase ( SECTION, "(new RegExp('[a-z]','i')).global", + false, (new RegExp('[a-z]','i')).global); + + // '123 456 789'.match(new RegExp('\\d+','g')) + testcases[count++] = new TestCase ( SECTION, "'123 456 789'.match(new RegExp('\\\\d+','g'))", + String(["123","456","789"]), String('123 456 789'.match(new RegExp('\\d+','g')))); + + // '123 456 789'.match(new RegExp('(\\d+)','g')) + testcases[count++] = new TestCase ( SECTION, "'123 456 789'.match(new RegExp('(\\\\d+)','g'))", + String(["123","456","789"]), String('123 456 789'.match(new RegExp('(\\d+)','g')))); + + // '123 456 789'.match(new RegExp('\\d+','i')) + testcases[count++] = new TestCase ( SECTION, "'123 456 789'.match(new RegExp('\\\\d+','i'))", + String(["123"]), String('123 456 789'.match(new RegExp('\\d+','i')))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/hexadecimal.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/hexadecimal.js new file mode 100644 index 00000000000..14e555869ab --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/hexadecimal.js @@ -0,0 +1,108 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: hexadecimal.js + Description: 'Tests regular expressions containing \ ' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: \\x# (hex) '; + + writeHeaderToLog('Executing script: hexadecimal.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + var testPattern = '\\x41\\x42\\x43\\x44\\x45\\x46\\x47\\x48\\x49\\x4A\\x4B\\x4C\\x4D\\x4E\\x4F\\x50\\x51\\x52\\x53\\x54\\x55\\x56\\x57\\x58\\x59\\x5A'; + + var testString = "12345ABCDEFGHIJKLMNOPQRSTUVWXYZ67890"; + + testcases[count++] = new TestCase ( SECTION, + "'" + testString + "'.match(new RegExp('" + testPattern + "'))", + String(["ABCDEFGHIJKLMNOPQRSTUVWXYZ"]), String(testString.match(new RegExp(testPattern)))); + + testPattern = '\\x61\\x62\\x63\\x64\\x65\\x66\\x67\\x68\\x69\\x6A\\x6B\\x6C\\x6D\\x6E\\x6F\\x70\\x71\\x72\\x73\\x74\\x75\\x76\\x77\\x78\\x79\\x7A'; + + testString = "12345AabcdefghijklmnopqrstuvwxyzZ67890"; + + testcases[count++] = new TestCase ( SECTION, + "'" + testString + "'.match(new RegExp('" + testPattern + "'))", + String(["abcdefghijklmnopqrstuvwxyz"]), String(testString.match(new RegExp(testPattern)))); + + testPattern = '\\x20\\x21\\x22\\x23\\x24\\x25\\x26\\x27\\x28\\x29\\x2A\\x2B\\x2C\\x2D\\x2E\\x2F\\x30\\x31\\x32\\x33'; + + testString = "abc !\"#$%&'()*+,-./0123ZBC"; + + testcases[count++] = new TestCase ( SECTION, + "'" + testString + "'.match(new RegExp('" + testPattern + "'))", + String([" !\"#$%&'()*+,-./0123"]), String(testString.match(new RegExp(testPattern)))); + + testPattern = '\\x34\\x35\\x36\\x37\\x38\\x39\\x3A\\x3B\\x3C\\x3D\\x3E\\x3F\\x40'; + + testString = "123456789:;<=>?@ABC"; + + testcases[count++] = new TestCase ( SECTION, + "'" + testString + "'.match(new RegExp('" + testPattern + "'))", + String(["456789:;<=>?@"]), String(testString.match(new RegExp(testPattern)))); + + testPattern = '\\x7B\\x7C\\x7D\\x7E'; + + testString = "1234{|}~ABC"; + + testcases[count++] = new TestCase ( SECTION, + "'" + testString + "'.match(new RegExp('" + testPattern + "'))", + String(["{|}~"]), String(testString.match(new RegExp(testPattern)))); + + testcases[count++] = new TestCase ( SECTION, + "'canthisbeFOUND'.match(new RegExp('[A-\\x5A]+'))", + String(["FOUND"]), String('canthisbeFOUND'.match(new RegExp('[A-\\x5A]+')))); + + testcases[count++] = new TestCase ( SECTION, + "'canthisbeFOUND'.match(new RegExp('[\\x61-\\x7A]+'))", + String(["canthisbe"]), String('canthisbeFOUND'.match(new RegExp('[\\x61-\\x7A]+')))); + + testcases[count++] = new TestCase ( SECTION, + "'canthisbeFOUND'.match(/[\\x61-\\x7A]+/)", + String(["canthisbe"]), String('canthisbeFOUND'.match(/[\x61-\x7A]+/))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/ignoreCase.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/ignoreCase.js new file mode 100644 index 00000000000..fec4d2cf485 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/ignoreCase.js @@ -0,0 +1,111 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: ignoreCase.js + Description: 'Tests RegExp attribute ignoreCase' + + Author: Nick Lerissa + Date: March 13, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: ignoreCase'; + + writeHeaderToLog('Executing script: ignoreCase.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // /xyz/i.ignoreCase + testcases[count++] = new TestCase ( SECTION, "/xyz/i.ignoreCase", + true, /xyz/i.ignoreCase); + + // /xyz/.ignoreCase + testcases[count++] = new TestCase ( SECTION, "/xyz/.ignoreCase", + false, /xyz/.ignoreCase); + + // 'ABC def ghi'.match(/[a-z]+/ig) + testcases[count++] = new TestCase ( SECTION, "'ABC def ghi'.match(/[a-z]+/ig)", + String(["ABC","def","ghi"]), String('ABC def ghi'.match(/[a-z]+/ig))); + + // 'ABC def ghi'.match(/[a-z]+/i) + testcases[count++] = new TestCase ( SECTION, "'ABC def ghi'.match(/[a-z]+/i)", + String(["ABC"]), String('ABC def ghi'.match(/[a-z]+/i))); + + // 'ABC def ghi'.match(/([a-z]+)/ig) + testcases[count++] = new TestCase ( SECTION, "'ABC def ghi'.match(/([a-z]+)/ig)", + String(["ABC","def","ghi"]), String('ABC def ghi'.match(/([a-z]+)/ig))); + + // 'ABC def ghi'.match(/([a-z]+)/i) + testcases[count++] = new TestCase ( SECTION, "'ABC def ghi'.match(/([a-z]+)/i)", + String(["ABC","ABC"]), String('ABC def ghi'.match(/([a-z]+)/i))); + + // 'ABC def ghi'.match(/[a-z]+/) + testcases[count++] = new TestCase ( SECTION, "'ABC def ghi'.match(/[a-z]+/)", + String(["def"]), String('ABC def ghi'.match(/[a-z]+/))); + + // (new RegExp('xyz','i')).ignoreCase + testcases[count++] = new TestCase ( SECTION, "(new RegExp('xyz','i')).ignoreCase", + true, (new RegExp('xyz','i')).ignoreCase); + + // (new RegExp('xyz')).ignoreCase + testcases[count++] = new TestCase ( SECTION, "(new RegExp('xyz')).ignoreCase", + false, (new RegExp('xyz')).ignoreCase); + + // 'ABC def ghi'.match(new RegExp('[a-z]+','ig')) + testcases[count++] = new TestCase ( SECTION, "'ABC def ghi'.match(new RegExp('[a-z]+','ig'))", + String(["ABC","def","ghi"]), String('ABC def ghi'.match(new RegExp('[a-z]+','ig')))); + + // 'ABC def ghi'.match(new RegExp('[a-z]+','i')) + testcases[count++] = new TestCase ( SECTION, "'ABC def ghi'.match(new RegExp('[a-z]+','i'))", + String(["ABC"]), String('ABC def ghi'.match(new RegExp('[a-z]+','i')))); + + // 'ABC def ghi'.match(new RegExp('([a-z]+)','ig')) + testcases[count++] = new TestCase ( SECTION, "'ABC def ghi'.match(new RegExp('([a-z]+)','ig'))", + String(["ABC","def","ghi"]), String('ABC def ghi'.match(new RegExp('([a-z]+)','ig')))); + + // 'ABC def ghi'.match(new RegExp('([a-z]+)','i')) + testcases[count++] = new TestCase ( SECTION, "'ABC def ghi'.match(new RegExp('([a-z]+)','i'))", + String(["ABC","ABC"]), String('ABC def ghi'.match(new RegExp('([a-z]+)','i')))); + + // 'ABC def ghi'.match(new RegExp('[a-z]+')) + testcases[count++] = new TestCase ( SECTION, "'ABC def ghi'.match(new RegExp('[a-z]+'))", + String(["def"]), String('ABC def ghi'.match(new RegExp('[a-z]+')))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/interval.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/interval.js new file mode 100644 index 00000000000..7e80777e15c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/interval.js @@ -0,0 +1,115 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: interval.js + Description: 'Tests regular expressions containing {}' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: {}'; + + writeHeaderToLog('Executing script: interval.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'aaabbbbcccddeeeefffff'.match(new RegExp('b{2}c')) + testcases[count++] = new TestCase ( SECTION, "'aaabbbbcccddeeeefffff'.match(new RegExp('b{2}c'))", + String(["bbc"]), String('aaabbbbcccddeeeefffff'.match(new RegExp('b{2}c')))); + + // 'aaabbbbcccddeeeefffff'.match(new RegExp('b{8}')) + testcases[count++] = new TestCase ( SECTION, "'aaabbbbcccddeeeefffff'.match(new RegExp('b{8}'))", + null, 'aaabbbbcccddeeeefffff'.match(new RegExp('b{8}'))); + + // 'aaabbbbcccddeeeefffff'.match(new RegExp('b{2,}c')) + testcases[count++] = new TestCase ( SECTION, "'aaabbbbcccddeeeefffff'.match(new RegExp('b{2,}c'))", + String(["bbbbc"]), String('aaabbbbcccddeeeefffff'.match(new RegExp('b{2,}c')))); + + // 'aaabbbbcccddeeeefffff'.match(new RegExp('b{8,}c')) + testcases[count++] = new TestCase ( SECTION, "'aaabbbbcccddeeeefffff'.match(new RegExp('b{8,}c'))", + null, 'aaabbbbcccddeeeefffff'.match(new RegExp('b{8,}c'))); + + // 'aaabbbbcccddeeeefffff'.match(new RegExp('b{2,3}c')) + testcases[count++] = new TestCase ( SECTION, "'aaabbbbcccddeeeefffff'.match(new RegExp('b{2,3}c'))", + String(["bbbc"]), String('aaabbbbcccddeeeefffff'.match(new RegExp('b{2,3}c')))); + + // 'aaabbbbcccddeeeefffff'.match(new RegExp('b{42,93}c')) + testcases[count++] = new TestCase ( SECTION, "'aaabbbbcccddeeeefffff'.match(new RegExp('b{42,93}c'))", + null, 'aaabbbbcccddeeeefffff'.match(new RegExp('b{42,93}c'))); + + // 'aaabbbbcccddeeeefffff'.match(new RegExp('b{0,93}c')) + testcases[count++] = new TestCase ( SECTION, "'aaabbbbcccddeeeefffff'.match(new RegExp('b{0,93}c'))", + String(["bbbbc"]), String('aaabbbbcccddeeeefffff'.match(new RegExp('b{0,93}c')))); + + // 'aaabbbbcccddeeeefffff'.match(new RegExp('bx{0,93}c')) + testcases[count++] = new TestCase ( SECTION, "'aaabbbbcccddeeeefffff'.match(new RegExp('bx{0,93}c'))", + String(["bc"]), String('aaabbbbcccddeeeefffff'.match(new RegExp('bx{0,93}c')))); + + // 'weirwerdf'.match(new RegExp('.{0,93}')) + testcases[count++] = new TestCase ( SECTION, "'weirwerdf'.match(new RegExp('.{0,93}'))", + String(["weirwerdf"]), String('weirwerdf'.match(new RegExp('.{0,93}')))); + + // 'wqe456646dsff'.match(new RegExp('\d{1,}')) + testcases[count++] = new TestCase ( SECTION, "'wqe456646dsff'.match(new RegExp('\\d{1,}'))", + String(["456646"]), String('wqe456646dsff'.match(new RegExp('\\d{1,}')))); + + // '123123'.match(new RegExp('(123){1,}')) + testcases[count++] = new TestCase ( SECTION, "'123123'.match(new RegExp('(123){1,}'))", + String(["123123","123"]), String('123123'.match(new RegExp('(123){1,}')))); + + // '123123x123'.match(new RegExp('(123){1,}x\1')) + testcases[count++] = new TestCase ( SECTION, "'123123x123'.match(new RegExp('(123){1,}x\\1'))", + String(["123123x123","123"]), String('123123x123'.match(new RegExp('(123){1,}x\\1')))); + + // '123123x123'.match(/(123){1,}x\1/) + testcases[count++] = new TestCase ( SECTION, "'123123x123'.match(/(123){1,}x\\1/)", + String(["123123x123","123"]), String('123123x123'.match(/(123){1,}x\1/))); + + // 'xxxxxxx'.match(new RegExp('x{1,2}x{1,}')) + testcases[count++] = new TestCase ( SECTION, "'xxxxxxx'.match(new RegExp('x{1,2}x{1,}'))", + String(["xxxxxxx"]), String('xxxxxxx'.match(new RegExp('x{1,2}x{1,}')))); + + // 'xxxxxxx'.match(/x{1,2}x{1,}/) + testcases[count++] = new TestCase ( SECTION, "'xxxxxxx'.match(/x{1,2}x{1,}/)", + String(["xxxxxxx"]), String('xxxxxxx'.match(/x{1,2}x{1,}/))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/octal.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/octal.js new file mode 100644 index 00000000000..2fe6588f76f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/octal.js @@ -0,0 +1,108 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: octal.js + Description: 'Tests regular expressions containing \ ' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: \# (octal) '; + + writeHeaderToLog('Executing script: octal.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + var testPattern = '\\101\\102\\103\\104\\105\\106\\107\\110\\111\\112\\113\\114\\115\\116\\117\\120\\121\\122\\123\\124\\125\\126\\127\\130\\131\\132'; + + var testString = "12345ABCDEFGHIJKLMNOPQRSTUVWXYZ67890"; + + testcases[count++] = new TestCase ( SECTION, + "'" + testString + "'.match(new RegExp('" + testPattern + "'))", + String(["ABCDEFGHIJKLMNOPQRSTUVWXYZ"]), String(testString.match(new RegExp(testPattern)))); + + testPattern = '\\141\\142\\143\\144\\145\\146\\147\\150\\151\\152\\153\\154\\155\\156\\157\\160\\161\\162\\163\\164\\165\\166\\167\\170\\171\\172'; + + testString = "12345AabcdefghijklmnopqrstuvwxyzZ67890"; + + testcases[count++] = new TestCase ( SECTION, + "'" + testString + "'.match(new RegExp('" + testPattern + "'))", + String(["abcdefghijklmnopqrstuvwxyz"]), String(testString.match(new RegExp(testPattern)))); + + testPattern = '\\40\\41\\42\\43\\44\\45\\46\\47\\50\\51\\52\\53\\54\\55\\56\\57\\60\\61\\62\\63'; + + testString = "abc !\"#$%&'()*+,-./0123ZBC"; + + testcases[count++] = new TestCase ( SECTION, + "'" + testString + "'.match(new RegExp('" + testPattern + "'))", + String([" !\"#$%&'()*+,-./0123"]), String(testString.match(new RegExp(testPattern)))); + + testPattern = '\\64\\65\\66\\67\\70\\71\\72\\73\\74\\75\\76\\77\\100'; + + testString = "123456789:;<=>?@ABC"; + + testcases[count++] = new TestCase ( SECTION, + "'" + testString + "'.match(new RegExp('" + testPattern + "'))", + String(["456789:;<=>?@"]), String(testString.match(new RegExp(testPattern)))); + + testPattern = '\\173\\174\\175\\176'; + + testString = "1234{|}~ABC"; + + testcases[count++] = new TestCase ( SECTION, + "'" + testString + "'.match(new RegExp('" + testPattern + "'))", + String(["{|}~"]), String(testString.match(new RegExp(testPattern)))); + + testcases[count++] = new TestCase ( SECTION, + "'canthisbeFOUND'.match(new RegExp('[A-\\132]+'))", + String(["FOUND"]), String('canthisbeFOUND'.match(new RegExp('[A-\\132]+')))); + + testcases[count++] = new TestCase ( SECTION, + "'canthisbeFOUND'.match(new RegExp('[\\141-\\172]+'))", + String(["canthisbe"]), String('canthisbeFOUND'.match(new RegExp('[\\141-\\172]+')))); + + testcases[count++] = new TestCase ( SECTION, + "'canthisbeFOUND'.match(/[\\141-\\172]+/)", + String(["canthisbe"]), String('canthisbeFOUND'.match(/[\141-\172]+/))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/parentheses.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/parentheses.js new file mode 100644 index 00000000000..6fe19488136 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/parentheses.js @@ -0,0 +1,107 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: parentheses.js + Description: 'Tests regular expressions containing ()' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: ()'; + + writeHeaderToLog('Executing script: parentheses.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abc'.match(new RegExp('(abc)')) + testcases[count++] = new TestCase ( SECTION, "'abc'.match(new RegExp('(abc)'))", + String(["abc","abc"]), String('abc'.match(new RegExp('(abc)')))); + + // 'abcdefg'.match(new RegExp('a(bc)d(ef)g')) + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(new RegExp('a(bc)d(ef)g'))", + String(["abcdefg","bc","ef"]), String('abcdefg'.match(new RegExp('a(bc)d(ef)g')))); + + // 'abcdefg'.match(new RegExp('(.{3})(.{4})')) + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(new RegExp('(.{3})(.{4})'))", + String(["abcdefg","abc","defg"]), String('abcdefg'.match(new RegExp('(.{3})(.{4})')))); + + // 'aabcdaabcd'.match(new RegExp('(aa)bcd\1')) + testcases[count++] = new TestCase ( SECTION, "'aabcdaabcd'.match(new RegExp('(aa)bcd\\1'))", + String(["aabcdaa","aa"]), String('aabcdaabcd'.match(new RegExp('(aa)bcd\\1')))); + + // 'aabcdaabcd'.match(new RegExp('(aa).+\1')) + testcases[count++] = new TestCase ( SECTION, "'aabcdaabcd'.match(new RegExp('(aa).+\\1'))", + String(["aabcdaa","aa"]), String('aabcdaabcd'.match(new RegExp('(aa).+\\1')))); + + // 'aabcdaabcd'.match(new RegExp('(.{2}).+\1')) + testcases[count++] = new TestCase ( SECTION, "'aabcdaabcd'.match(new RegExp('(.{2}).+\\1'))", + String(["aabcdaa","aa"]), String('aabcdaabcd'.match(new RegExp('(.{2}).+\\1')))); + + // '123456123456'.match(new RegExp('(\d{3})(\d{3})\1\2')) + testcases[count++] = new TestCase ( SECTION, "'123456123456'.match(new RegExp('(\\d{3})(\\d{3})\\1\\2'))", + String(["123456123456","123","456"]), String('123456123456'.match(new RegExp('(\\d{3})(\\d{3})\\1\\2')))); + + // 'abcdefg'.match(new RegExp('a(..(..)..)')) + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(new RegExp('a(..(..)..)'))", + String(["abcdefg","bcdefg","de"]), String('abcdefg'.match(new RegExp('a(..(..)..)')))); + + // 'abcdefg'.match(/a(..(..)..)/) + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(/a(..(..)..)/)", + String(["abcdefg","bcdefg","de"]), String('abcdefg'.match(/a(..(..)..)/))); + + // 'xabcdefg'.match(new RegExp('(a(b(c)))(d(e(f)))')) + testcases[count++] = new TestCase ( SECTION, "'xabcdefg'.match(new RegExp('(a(b(c)))(d(e(f)))'))", + String(["abcdef","abc","bc","c","def","ef","f"]), String('xabcdefg'.match(new RegExp('(a(b(c)))(d(e(f)))')))); + + // 'xabcdefbcefg'.match(new RegExp('(a(b(c)))(d(e(f)))\2\5')) + testcases[count++] = new TestCase ( SECTION, "'xabcdefbcefg'.match(new RegExp('(a(b(c)))(d(e(f)))\\2\\5'))", + String(["abcdefbcef","abc","bc","c","def","ef","f"]), String('xabcdefbcefg'.match(new RegExp('(a(b(c)))(d(e(f)))\\2\\5')))); + + // 'abcd'.match(new RegExp('a(.?)b\1c\1d\1')) + testcases[count++] = new TestCase ( SECTION, "'abcd'.match(new RegExp('a(.?)b\\1c\\1d\\1'))", + String(["abcd",""]), String('abcd'.match(new RegExp('a(.?)b\\1c\\1d\\1')))); + + // 'abcd'.match(/a(.?)b\1c\1d\1/) + testcases[count++] = new TestCase ( SECTION, "'abcd'.match(/a(.?)b\\1c\\1d\\1/)", + String(["abcd",""]), String('abcd'.match(/a(.?)b\1c\1d\1/))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/plus.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/plus.js new file mode 100644 index 00000000000..f3e44ea4e2f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/plus.js @@ -0,0 +1,87 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: plus.js + Description: 'Tests regular expressions containing +' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: +'; + + writeHeaderToLog('Executing script: plus.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abcdddddefg'.match(new RegExp('d+')) + testcases[count++] = new TestCase ( SECTION, "'abcdddddefg'.match(new RegExp('d+'))", + String(["ddddd"]), String('abcdddddefg'.match(new RegExp('d+')))); + + // 'abcdefg'.match(new RegExp('o+')) + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(new RegExp('o+'))", + null, 'abcdefg'.match(new RegExp('o+'))); + + // 'abcdefg'.match(new RegExp('d+')) + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.match(new RegExp('d+'))", + String(['d']), String('abcdefg'.match(new RegExp('d+')))); + + // 'abbbbbbbc'.match(new RegExp('(b+)(b+)(b+)')) + testcases[count++] = new TestCase ( SECTION, "'abbbbbbbc'.match(new RegExp('(b+)(b+)(b+)'))", + String(["bbbbbbb","bbbbb","b","b"]), String('abbbbbbbc'.match(new RegExp('(b+)(b+)(b+)')))); + + // 'abbbbbbbc'.match(new RegExp('(b+)(b*)')) + testcases[count++] = new TestCase ( SECTION, "'abbbbbbbc'.match(new RegExp('(b+)(b*)'))", + String(["bbbbbbb","bbbbbbb",""]), String('abbbbbbbc'.match(new RegExp('(b+)(b*)')))); + + // 'abbbbbbbc'.match(new RegExp('b*b+')) + testcases[count++] = new TestCase ( SECTION, "'abbbbbbbc'.match(new RegExp('b*b+'))", + String(['bbbbbbb']), String('abbbbbbbc'.match(new RegExp('b*b+')))); + + // 'abbbbbbbc'.match(/(b+)(b*)/) + testcases[count++] = new TestCase ( SECTION, "'abbbbbbbc'.match(/(b+)(b*)/)", + String(["bbbbbbb","bbbbbbb",""]), String('abbbbbbbc'.match(/(b+)(b*)/))); + + // 'abbbbbbbc'.match(new RegExp('b*b+')) + testcases[count++] = new TestCase ( SECTION, "'abbbbbbbc'.match(/b*b+/)", + String(['bbbbbbb']), String('abbbbbbbc'.match(/b*b+/))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/question_mark.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/question_mark.js new file mode 100644 index 00000000000..f17cd0b0327 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/question_mark.js @@ -0,0 +1,99 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: question_mark.js + Description: 'Tests regular expressions containing ?' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: ?'; + + writeHeaderToLog('Executing script: question_mark.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abcdef'.match(new RegExp('cd?e')) + testcases[count++] = new TestCase ( SECTION, "'abcdef'.match(new RegExp('cd?e'))", + String(["cde"]), String('abcdef'.match(new RegExp('cd?e')))); + + // 'abcdef'.match(new RegExp('cdx?e')) + testcases[count++] = new TestCase ( SECTION, "'abcdef'.match(new RegExp('cdx?e'))", + String(["cde"]), String('abcdef'.match(new RegExp('cdx?e')))); + + // 'pqrstuvw'.match(new RegExp('o?pqrst')) + testcases[count++] = new TestCase ( SECTION, "'pqrstuvw'.match(new RegExp('o?pqrst'))", + String(["pqrst"]), String('pqrstuvw'.match(new RegExp('o?pqrst')))); + + // 'abcd'.match(new RegExp('x?y?z?')) + testcases[count++] = new TestCase ( SECTION, "'abcd'.match(new RegExp('x?y?z?'))", + String([""]), String('abcd'.match(new RegExp('x?y?z?')))); + + // 'abcd'.match(new RegExp('x?ay?bz?c')) + testcases[count++] = new TestCase ( SECTION, "'abcd'.match(new RegExp('x?ay?bz?c'))", + String(["abc"]), String('abcd'.match(new RegExp('x?ay?bz?c')))); + + // 'abcd'.match(/x?ay?bz?c/) + testcases[count++] = new TestCase ( SECTION, "'abcd'.match(/x?ay?bz?c/)", + String(["abc"]), String('abcd'.match(/x?ay?bz?c/))); + + // 'abbbbc'.match(new RegExp('b?b?b?b')) + testcases[count++] = new TestCase ( SECTION, "'abbbbc'.match(new RegExp('b?b?b?b'))", + String(["bbbb"]), String('abbbbc'.match(new RegExp('b?b?b?b')))); + + // '123az789'.match(new RegExp('ab?c?d?x?y?z')) + testcases[count++] = new TestCase ( SECTION, "'123az789'.match(new RegExp('ab?c?d?x?y?z'))", + String(["az"]), String('123az789'.match(new RegExp('ab?c?d?x?y?z')))); + + // '123az789'.match(/ab?c?d?x?y?z/) + testcases[count++] = new TestCase ( SECTION, "'123az789'.match(/ab?c?d?x?y?z/)", + String(["az"]), String('123az789'.match(/ab?c?d?x?y?z/))); + + // '?????'.match(new RegExp('\\??\\??\\??\\??\\??')) + testcases[count++] = new TestCase ( SECTION, "'?????'.match(new RegExp('\\??\\??\\??\\??\\??'))", + String(["?????"]), String('?????'.match(new RegExp('\\??\\??\\??\\??\\??')))); + + // 'test'.match(new RegExp('.?.?.?.?.?.?.?')) + testcases[count++] = new TestCase ( SECTION, "'test'.match(new RegExp('.?.?.?.?.?.?.?'))", + String(["test"]), String('test'.match(new RegExp('.?.?.?.?.?.?.?')))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/regress-6359.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/regress-6359.js new file mode 100644 index 00000000000..20ac50ff9d3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/regress-6359.js @@ -0,0 +1,68 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): +*/ + +/** + * File Name: regress-6359.js + * Reference: ** replace with bugzilla URL or document reference ** + * Description: ** replace with description of test ** + * Author: ** replace with your e-mail address ** + */ + + var SECTION = "js1_2"; // provide a document reference (ie, ECMA section) + var VERSION = "ECMA_2"; // Version of JavaScript or ECMA + var TITLE = "Regression test for bugzilla # 6359"; // Provide ECMA section title or a description + var BUGNUMBER = "http://bugzilla.mozilla.org/show_bug.cgi?id=6359"; // Provide URL to bugsplat or bugzilla report + + startTest(); // leave this alone + + /* + * Calls to AddTestCase here. AddTestCase is a function that is defined + * in shell.js and takes three arguments: + * - a string representation of what is being tested + * - the expected result + * - the actual result + * + * For example, a test might look like this: + * + * var zip = /[\d]{5}$/; + * + * AddTestCase( + * "zip = /[\d]{5}$/; \"PO Box 12345 Boston, MA 02134\".match(zip)", // description of the test + * "02134", // expected result + * "PO Box 12345 Boston, MA 02134".match(zip) ); // actual result + * + */ + + AddTestCase( '/(a*)b\1+/("baaac").length', + 2, + /(a*)b\1+/("baaac").length ); + + AddTestCase( '/(a*)b\1+/("baaac")[0]', + "b", + /(a*)b\1+/("baaac")[0]); + + AddTestCase( '/(a*)b\1+/("baaac")[1]', + "", + /(a*)b\1+/("baaac")[1]); + + + test(); // leave this alone. this executes the test cases and + // displays results. diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/regress-9141.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/regress-9141.js new file mode 100644 index 00000000000..3601bcfdf4e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/regress-9141.js @@ -0,0 +1,86 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): +*/ + +/** + * File Name: regress-9141.js + * Reference: "http://bugzilla.mozilla.org/show_bug.cgi?id=9141"; + * Description: + * From waldemar@netscape.com: + * + * The following page crashes the system: + * + * + * + * + * + * + * + * + */ + + var SECTION = "js1_2"; // provide a document reference (ie, ECMA section) + var VERSION = "ECMA_2"; // Version of JavaScript or ECMA + var TITLE = "Regression test for bugzilla # 9141"; // Provide ECMA section title or a description + var BUGNUMBER = "http://bugzilla.mozilla.org/show_bug.cgi?id=9141"; // Provide URL to bugsplat or bugzilla report + + startTest(); // leave this alone + + /* + * Calls to AddTestCase here. AddTestCase is a function that is defined + * in shell.js and takes three arguments: + * - a string representation of what is being tested + * - the expected result + * - the actual result + * + * For example, a test might look like this: + * + * var zip = /[\d]{5}$/; + * + * AddTestCase( + * "zip = /[\d]{5}$/; \"PO Box 12345 Boston, MA 02134\".match(zip)", // description of the test + * "02134", // expected result + * "PO Box 12345 Boston, MA 02134".match(zip) ); // actual result + * + */ + + var s = "x"; + for (var i = 0; i != 13; i++) s += s; + var a = /(?:xx|x)*/(s); + var b = /(xx|x)*/(s); + + AddTestCase( "var s = 'x'; for (var i = 0; i != 13; i++) s += s; " + + "a = /(?:xx|x)*/(s); a.length", + 1, + a.length ); + + AddTestCase( "var b = /(xx|x)*/(s); b.length", + 2, + b.length ); + + test(); // leave this alone. this executes the test cases and + // displays results. diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/simple_form.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/simple_form.js new file mode 100644 index 00000000000..e369c3e92af --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/simple_form.js @@ -0,0 +1,90 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: simple_form.js + Description: 'Tests regular expressions using simple form: re(...)' + + Author: Nick Lerissa + Date: March 19, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: simple form'; + + writeHeaderToLog('Executing script: simple_form.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + testcases[count++] = new TestCase ( SECTION, + "/[0-9]{3}/('23 2 34 678 9 09')", + String(["678"]), String(/[0-9]{3}/('23 2 34 678 9 09'))); + + testcases[count++] = new TestCase ( SECTION, + "/3.{4}8/('23 2 34 678 9 09')", + String(["34 678"]), String(/3.{4}8/('23 2 34 678 9 09'))); + + testcases[count++] = new TestCase ( SECTION, + "(/3.{4}8/('23 2 34 678 9 09').length", + 1, (/3.{4}8/('23 2 34 678 9 09')).length); + + var re = /[0-9]{3}/; + testcases[count++] = new TestCase ( SECTION, + "re('23 2 34 678 9 09')", + String(["678"]), String(re('23 2 34 678 9 09'))); + + re = /3.{4}8/; + testcases[count++] = new TestCase ( SECTION, + "re('23 2 34 678 9 09')", + String(["34 678"]), String(re('23 2 34 678 9 09'))); + + testcases[count++] = new TestCase ( SECTION, + "/3.{4}8/('23 2 34 678 9 09')", + String(["34 678"]), String(/3.{4}8/('23 2 34 678 9 09'))); + + re =/3.{4}8/; + testcases[count++] = new TestCase ( SECTION, + "(re('23 2 34 678 9 09').length", + 1, (re('23 2 34 678 9 09')).length); + + testcases[count++] = new TestCase ( SECTION, + "(/3.{4}8/('23 2 34 678 9 09').length", + 1, (/3.{4}8/('23 2 34 678 9 09')).length); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/source.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/source.js new file mode 100644 index 00000000000..589d2b94c83 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/source.js @@ -0,0 +1,87 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: source.js + Description: 'Tests RegExp attribute source' + + Author: Nick Lerissa + Date: March 13, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: source'; + + writeHeaderToLog('Executing script: source.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // /xyz/g.source + testcases[count++] = new TestCase ( SECTION, "/xyz/g.source", + "xyz", /xyz/g.source); + + // /xyz/.source + testcases[count++] = new TestCase ( SECTION, "/xyz/.source", + "xyz", /xyz/.source); + + // /abc\\def/.source + testcases[count++] = new TestCase ( SECTION, "/abc\\\\def/.source", + "abc\\\\def", /abc\\def/.source); + + // /abc[\b]def/.source + testcases[count++] = new TestCase ( SECTION, "/abc[\\b]def/.source", + "abc[\\b]def", /abc[\b]def/.source); + + // (new RegExp('xyz')).source + testcases[count++] = new TestCase ( SECTION, "(new RegExp('xyz')).source", + "xyz", (new RegExp('xyz')).source); + + // (new RegExp('xyz','g')).source + testcases[count++] = new TestCase ( SECTION, "(new RegExp('xyz','g')).source", + "xyz", (new RegExp('xyz','g')).source); + + // (new RegExp('abc\\\\def')).source + testcases[count++] = new TestCase ( SECTION, "(new RegExp('abc\\\\\\\\def')).source", + "abc\\\\def", (new RegExp('abc\\\\def')).source); + + // (new RegExp('abc[\\b]def')).source + testcases[count++] = new TestCase ( SECTION, "(new RegExp('abc[\\\\b]def')).source", + "abc[\\b]def", (new RegExp('abc[\\b]def')).source); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/special_characters.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/special_characters.js new file mode 100644 index 00000000000..8675980bf7e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/special_characters.js @@ -0,0 +1,157 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: special_characters.js + Description: 'Tests regular expressions containing special characters' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: special_charaters'; + + writeHeaderToLog('Executing script: special_characters.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // testing backslash '\' + testcases[count++] = new TestCase ( SECTION, "'^abcdefghi'.match(/\^abc/)", String(["^abc"]), String('^abcdefghi'.match(/\^abc/))); + + // testing beginning of line '^' + testcases[count++] = new TestCase ( SECTION, "'abcdefghi'.match(/^abc/)", String(["abc"]), String('abcdefghi'.match(/^abc/))); + + // testing end of line '$' + testcases[count++] = new TestCase ( SECTION, "'abcdefghi'.match(/fghi$/)", String(["ghi"]), String('abcdefghi'.match(/ghi$/))); + + // testing repeat '*' + testcases[count++] = new TestCase ( SECTION, "'eeeefghi'.match(/e*/)", String(["eeee"]), String('eeeefghi'.match(/e*/))); + + // testing repeat 1 or more times '+' + testcases[count++] = new TestCase ( SECTION, "'abcdeeeefghi'.match(/e+/)", String(["eeee"]), String('abcdeeeefghi'.match(/e+/))); + + // testing repeat 0 or 1 time '?' + testcases[count++] = new TestCase ( SECTION, "'abcdefghi'.match(/abc?de/)", String(["abcde"]), String('abcdefghi'.match(/abc?de/))); + + // testing any character '.' + testcases[count++] = new TestCase ( SECTION, "'abcdefghi'.match(/c.e/)", String(["cde"]), String('abcdefghi'.match(/c.e/))); + + // testing remembering () + testcases[count++] = new TestCase ( SECTION, "'abcewirjskjdabciewjsdf'.match(/(abc).+\\1'/)", + String(["abcewirjskjdabc","abc"]), String('abcewirjskjdabciewjsdf'.match(/(abc).+\1/))); + + // testing or match '|' + testcases[count++] = new TestCase ( SECTION, "'abcdefghi'.match(/xyz|def/)", String(["def"]), String('abcdefghi'.match(/xyz|def/))); + + // testing repeat n {n} + testcases[count++] = new TestCase ( SECTION, "'abcdeeeefghi'.match(/e{3}/)", String(["eee"]), String('abcdeeeefghi'.match(/e{3}/))); + + // testing min repeat n {n,} + testcases[count++] = new TestCase ( SECTION, "'abcdeeeefghi'.match(/e{3,}/)", String(["eeee"]), String('abcdeeeefghi'.match(/e{3,}/))); + + // testing min/max repeat {min, max} + testcases[count++] = new TestCase ( SECTION, "'abcdeeeefghi'.match(/e{2,8}/)", String(["eeee"]), String('abcdeeeefghi'.match(/e{2,8}/))); + + // testing any in set [abc...] + testcases[count++] = new TestCase ( SECTION, "'abcdefghi'.match(/cd[xey]fgh/)", String(["cdefgh"]), String('abcdefghi'.match(/cd[xey]fgh/))); + + // testing any in set [a-z] + testcases[count++] = new TestCase ( SECTION, "'netscape inc'.match(/t[r-v]ca/)", String(["tsca"]), String('netscape inc'.match(/t[r-v]ca/))); + + // testing any not in set [^abc...] + testcases[count++] = new TestCase ( SECTION, "'abcdefghi'.match(/cd[^xy]fgh/)", String(["cdefgh"]), String('abcdefghi'.match(/cd[^xy]fgh/))); + + // testing any not in set [^a-z] + testcases[count++] = new TestCase ( SECTION, "'netscape inc'.match(/t[^a-c]ca/)", String(["tsca"]), String('netscape inc'.match(/t[^a-c]ca/))); + + // testing backspace [\b] + testcases[count++] = new TestCase ( SECTION, "'this is b\ba test'.match(/is b[\b]a test/)", + String(["is b\ba test"]), String('this is b\ba test'.match(/is b[\b]a test/))); + + // testing word boundary \b + testcases[count++] = new TestCase ( SECTION, "'today is now - day is not now'.match(/\bday.*now/)", + String(["day is not now"]), String('today is now - day is not now'.match(/\bday.*now/))); + + // control characters??? + + // testing any digit \d + testcases[count++] = new TestCase ( SECTION, "'a dog - 1 dog'.match(/\d dog/)", String(["1 dog"]), String('a dog - 1 dog'.match(/\d dog/))); + + // testing any non digit \d + testcases[count++] = new TestCase ( SECTION, "'a dog - 1 dog'.match(/\D dog/)", String(["a dog"]), String('a dog - 1 dog'.match(/\D dog/))); + + // testing form feed '\f' + testcases[count++] = new TestCase ( SECTION, "'a b a\fb'.match(/a\fb/)", String(["a\fb"]), String('a b a\fb'.match(/a\fb/))); + + // testing line feed '\n' + testcases[count++] = new TestCase ( SECTION, "'a b a\nb'.match(/a\nb/)", String(["a\nb"]), String('a b a\nb'.match(/a\nb/))); + + // testing carriage return '\r' + testcases[count++] = new TestCase ( SECTION, "'a b a\rb'.match(/a\rb/)", String(["a\rb"]), String('a b a\rb'.match(/a\rb/))); + + // testing whitespace '\s' + testcases[count++] = new TestCase ( SECTION, "'xa\f\n\r\t\vbz'.match(/a\s+b/)", String(["a\f\n\r\t\vb"]), String('xa\f\n\r\t\vbz'.match(/a\s+b/))); + + // testing non whitespace '\S' + testcases[count++] = new TestCase ( SECTION, "'a\tb a b a-b'.match(/a\Sb/)", String(["a-b"]), String('a\tb a b a-b'.match(/a\Sb/))); + + // testing tab '\t' + testcases[count++] = new TestCase ( SECTION, "'a\t\tb a b'.match(/a\t{2}/)", String(["a\t\t"]), String('a\t\tb a b'.match(/a\t{2}/))); + + // testing vertical tab '\v' + testcases[count++] = new TestCase ( SECTION, "'a\v\vb a b'.match(/a\v{2}/)", String(["a\v\v"]), String('a\v\vb a b'.match(/a\v{2}/))); + + // testing alphnumeric characters '\w' + testcases[count++] = new TestCase ( SECTION, "'%AZaz09_$'.match(/\w+/)", String(["AZaz09_"]), String('%AZaz09_$'.match(/\w+/))); + + // testing non alphnumeric characters '\W' + testcases[count++] = new TestCase ( SECTION, "'azx$%#@*4534'.match(/\W+/)", String(["$%#@*"]), String('azx$%#@*4534'.match(/\W+/))); + + // testing back references '\' + testcases[count++] = new TestCase ( SECTION, "'test'.match(/(t)es\\1/)", String(["test","t"]), String('test'.match(/(t)es\1/))); + + // testing hex excaping with '\' + testcases[count++] = new TestCase ( SECTION, "'abcdef'.match(/\x63\x64/)", String(["cd"]), String('abcdef'.match(/\x63\x64/))); + + // testing oct excaping with '\' + testcases[count++] = new TestCase ( SECTION, "'abcdef'.match(/\\143\\144/)", String(["cd"]), String('abcdef'.match(/\143\144/))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/string_replace.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/string_replace.js new file mode 100644 index 00000000000..b95ddf3edc6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/string_replace.js @@ -0,0 +1,80 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: string_replace.js + Description: 'Tests the replace method on Strings using regular expressions' + + Author: Nick Lerissa + Date: March 11, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'String: replace'; + + writeHeaderToLog('Executing script: string_replace.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'adddb'.replace(/ddd/,"XX") + testcases[count++] = new TestCase ( SECTION, "'adddb'.replace(/ddd/,'XX')", + "aXXb", 'adddb'.replace(/ddd/,'XX')); + + // 'adddb'.replace(/eee/,"XX") + testcases[count++] = new TestCase ( SECTION, "'adddb'.replace(/eee/,'XX')", + 'adddb', 'adddb'.replace(/eee/,'XX')); + + // '34 56 78b 12'.replace(new RegExp('[0-9]+b'),'**') + testcases[count++] = new TestCase ( SECTION, "'34 56 78b 12'.replace(new RegExp('[0-9]+b'),'**')", + "34 56 ** 12", '34 56 78b 12'.replace(new RegExp('[0-9]+b'),'**')); + + // '34 56 78b 12'.replace(new RegExp('[0-9]+c'),'XX') + testcases[count++] = new TestCase ( SECTION, "'34 56 78b 12'.replace(new RegExp('[0-9]+c'),'XX')", + "34 56 78b 12", '34 56 78b 12'.replace(new RegExp('[0-9]+c'),'XX')); + + // 'original'.replace(new RegExp(),'XX') + testcases[count++] = new TestCase ( SECTION, "'original'.replace(new RegExp(),'XX')", + "XXoriginal", 'original'.replace(new RegExp(),'XX')); + + // 'qwe ert x\t\n 345654AB'.replace(new RegExp('x\s*\d+(..)$'),'****') + testcases[count++] = new TestCase ( SECTION, "'qwe ert x\t\n 345654AB'.replace(new RegExp('x\\s*\\d+(..)$'),'****')", + "qwe ert ****", 'qwe ert x\t\n 345654AB'.replace(new RegExp('x\\s*\\d+(..)$'),'****')); + + +function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/string_search.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/string_search.js new file mode 100644 index 00000000000..8d229c62bf6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/string_search.js @@ -0,0 +1,87 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: string_search.js + Description: 'Tests the search method on Strings using regular expressions' + + Author: Nick Lerissa + Date: March 12, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'String: search'; + + writeHeaderToLog('Executing script: string_search.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abcdefg'.search(/d/) + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.search(/d/)", + 3, 'abcdefg'.search(/d/)); + + // 'abcdefg'.search(/x/) + testcases[count++] = new TestCase ( SECTION, "'abcdefg'.search(/x/)", + -1, 'abcdefg'.search(/x/)); + + // 'abcdefg123456hijklmn'.search(/\d+/) + testcases[count++] = new TestCase ( SECTION, "'abcdefg123456hijklmn'.search(/\d+/)", + 7, 'abcdefg123456hijklmn'.search(/\d+/)); + + // 'abcdefg123456hijklmn'.search(new RegExp()) + testcases[count++] = new TestCase ( SECTION, "'abcdefg123456hijklmn'.search(new RegExp())", + 0, 'abcdefg123456hijklmn'.search(new RegExp())); + + // 'abc'.search(new RegExp('$')) + testcases[count++] = new TestCase ( SECTION, "'abc'.search(new RegExp('$'))", + 3, 'abc'.search(new RegExp('$'))); + + // 'abc'.search(new RegExp('^')) + testcases[count++] = new TestCase ( SECTION, "'abc'.search(new RegExp('^'))", + 0, 'abc'.search(new RegExp('^'))); + + // 'abc1'.search(/.\d/) + testcases[count++] = new TestCase ( SECTION, "'abc1'.search(/.\d/)", + 2, 'abc1'.search(/.\d/)); + + // 'abc1'.search(/\d{2}/) + testcases[count++] = new TestCase ( SECTION, "'abc1'.search(/\d{2}/)", + -1, 'abc1'.search(/\d{2}/)); + +function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/string_split.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/string_split.js new file mode 100644 index 00000000000..f8249986f87 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/string_split.js @@ -0,0 +1,91 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: string_split.js + Description: 'Tests the split method on Strings using regular expressions' + + Author: Nick Lerissa + Date: March 11, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'String: split'; + + writeHeaderToLog('Executing script: string_split.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'a b c de f'.split(/\s/) + testcases[count++] = new TestCase ( SECTION, "'a b c de f'.split(/\s/)", + String(["a","b","c","de","f"]), String('a b c de f'.split(/\s/))); + + // 'a b c de f'.split(/\s/,3) + testcases[count++] = new TestCase ( SECTION, "'a b c de f'.split(/\s/,3)", + String(["a","b","c"]), String('a b c de f'.split(/\s/,3))); + + // 'a b c de f'.split(/X/) + testcases[count++] = new TestCase ( SECTION, "'a b c de f'.split(/X/)", + String(["a b c de f"]), String('a b c de f'.split(/X/))); + + // 'dfe23iu 34 =+65--'.split(/\d+/) + testcases[count++] = new TestCase ( SECTION, "'dfe23iu 34 =+65--'.split(/\d+/)", + String(["dfe","iu "," =+","--"]), String('dfe23iu 34 =+65--'.split(/\d+/))); + + // 'dfe23iu 34 =+65--'.split(new RegExp('\d+')) + testcases[count++] = new TestCase ( SECTION, "'dfe23iu 34 =+65--'.split(new RegExp('\\d+'))", + String(["dfe","iu "," =+","--"]), String('dfe23iu 34 =+65--'.split(new RegExp('\\d+')))); + + // 'abc'.split(/[a-z]/) + testcases[count++] = new TestCase ( SECTION, "'abc'.split(/[a-z]/)", + String(["","",""]), String('abc'.split(/[a-z]/))); + + // 'abc'.split(/[a-z]/) + testcases[count++] = new TestCase ( SECTION, "'abc'.split(/[a-z]/)", + String(["","",""]), String('abc'.split(/[a-z]/))); + + // 'abc'.split(new RegExp('[a-z]')) + testcases[count++] = new TestCase ( SECTION, "'abc'.split(new RegExp('[a-z]'))", + String(["","",""]), String('abc'.split(new RegExp('[a-z]')))); + + // 'abc'.split(new RegExp('[a-z]')) + testcases[count++] = new TestCase ( SECTION, "'abc'.split(new RegExp('[a-z]'))", + String(["","",""]), String('abc'.split(new RegExp('[a-z]')))); + +function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/test.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/test.js new file mode 100644 index 00000000000..2325af104e2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/test.js @@ -0,0 +1,87 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: test.js + Description: 'Tests regular expressions method compile' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: test'; + + writeHeaderToLog('Executing script: test.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + testcases[count++] = new TestCase ( SECTION, + "/[0-9]{3}/.test('23 2 34 678 9 09')", + true, /[0-9]{3}/.test('23 2 34 678 9 09')); + + testcases[count++] = new TestCase ( SECTION, + "/[0-9]{3}/.test('23 2 34 78 9 09')", + false, /[0-9]{3}/.test('23 2 34 78 9 09')); + + testcases[count++] = new TestCase ( SECTION, + "/\w+ \w+ \w+/.test('do a test')", + true, /\w+ \w+ \w+/.test("do a test")); + + testcases[count++] = new TestCase ( SECTION, + "/\w+ \w+ \w+/.test('a test')", + false, /\w+ \w+ \w+/.test("a test")); + + testcases[count++] = new TestCase ( SECTION, + "(new RegExp('[0-9]{3}')).test('23 2 34 678 9 09')", + true, (new RegExp('[0-9]{3}')).test('23 2 34 678 9 09')); + + testcases[count++] = new TestCase ( SECTION, + "(new RegExp('[0-9]{3}')).test('23 2 34 78 9 09')", + false, (new RegExp('[0-9]{3}')).test('23 2 34 78 9 09')); + + testcases[count++] = new TestCase ( SECTION, + "(new RegExp('\\\\w+ \\\\w+ \\\\w+')).test('do a test')", + true, (new RegExp('\\w+ \\w+ \\w+')).test("do a test")); + + testcases[count++] = new TestCase ( SECTION, + "(new RegExp('\\\\w+ \\\\w+ \\\\w+')).test('a test')", + false, (new RegExp('\\w+ \\w+ \\w+')).test("a test")); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/toString.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/toString.js new file mode 100644 index 00000000000..b08b7728115 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/toString.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: toString.js + Description: 'Tests RegExp method toString' + + Author: Nick Lerissa + Date: March 13, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: toString'; + + writeHeaderToLog('Executing script: toString.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // var re = new RegExp(); re.toString() + var re = new RegExp(); + testcases[count++] = new TestCase ( SECTION, "var re = new RegExp(); re.toString()", + '/(?:)/', re.toString()); + + // re = /.+/; re.toString(); + re = /.+/; + testcases[count++] = new TestCase ( SECTION, "re = /.+/; re.toString()", + '/.+/', re.toString()); + + // re = /test/gi; re.toString() + re = /test/gi; + testcases[count++] = new TestCase ( SECTION, "re = /test/gi; re.toString()", + '/test/gi', re.toString()); + + // re = /test2/ig; re.toString() + re = /test2/ig; + testcases[count++] = new TestCase ( SECTION, "re = /test2/ig; re.toString()", + '/test2/gi', re.toString()); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/vertical_bar.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/vertical_bar.js new file mode 100644 index 00000000000..39b428ad75f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/vertical_bar.js @@ -0,0 +1,95 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: vertical_bar.js + Description: 'Tests regular expressions containing |' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: |'; + + writeHeaderToLog('Executing script: vertical_bar.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'abc'.match(new RegExp('xyz|abc')) + testcases[count++] = new TestCase ( SECTION, "'abc'.match(new RegExp('xyz|abc'))", + String(["abc"]), String('abc'.match(new RegExp('xyz|abc')))); + + // 'this is a test'.match(new RegExp('quiz|exam|test|homework')) + testcases[count++] = new TestCase ( SECTION, "'this is a test'.match(new RegExp('quiz|exam|test|homework'))", + String(["test"]), String('this is a test'.match(new RegExp('quiz|exam|test|homework')))); + + // 'abc'.match(new RegExp('xyz|...')) + testcases[count++] = new TestCase ( SECTION, "'abc'.match(new RegExp('xyz|...'))", + String(["abc"]), String('abc'.match(new RegExp('xyz|...')))); + + // 'abc'.match(new RegExp('(.)..|abc')) + testcases[count++] = new TestCase ( SECTION, "'abc'.match(new RegExp('(.)..|abc'))", + String(["abc","a"]), String('abc'.match(new RegExp('(.)..|abc')))); + + // 'color: grey'.match(new RegExp('.+: gr(a|e)y')) + testcases[count++] = new TestCase ( SECTION, "'color: grey'.match(new RegExp('.+: gr(a|e)y'))", + String(["color: grey","e"]), String('color: grey'.match(new RegExp('.+: gr(a|e)y')))); + + // 'no match'.match(new RegExp('red|white|blue')) + testcases[count++] = new TestCase ( SECTION, "'no match'.match(new RegExp('red|white|blue'))", + null, 'no match'.match(new RegExp('red|white|blue'))); + + // 'Hi Bob'.match(new RegExp('(Rob)|(Bob)|(Robert)|(Bobby)')) + testcases[count++] = new TestCase ( SECTION, "'Hi Bob'.match(new RegExp('(Rob)|(Bob)|(Robert)|(Bobby)'))", + String(["Bob",undefined,"Bob", undefined, undefined]), String('Hi Bob'.match(new RegExp('(Rob)|(Bob)|(Robert)|(Bobby)')))); + + // 'abcdef'.match(new RegExp('abc|bcd|cde|def')) + testcases[count++] = new TestCase ( SECTION, "'abcdef'.match(new RegExp('abc|bcd|cde|def'))", + String(["abc"]), String('abcdef'.match(new RegExp('abc|bcd|cde|def')))); + + // 'Hi Bob'.match(/(Rob)|(Bob)|(Robert)|(Bobby)/) + testcases[count++] = new TestCase ( SECTION, "'Hi Bob'.match(/(Rob)|(Bob)|(Robert)|(Bobby)/)", + String(["Bob",undefined,"Bob", undefined, undefined]), String('Hi Bob'.match(/(Rob)|(Bob)|(Robert)|(Bobby)/))); + + // 'abcdef'.match(/abc|bcd|cde|def/) + testcases[count++] = new TestCase ( SECTION, "'abcdef'.match(/abc|bcd|cde|def/)", + String(["abc"]), String('abcdef'.match(/abc|bcd|cde|def/))); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/whitespace.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/whitespace.js new file mode 100644 index 00000000000..40c78c3c37f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/whitespace.js @@ -0,0 +1,122 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: whitespace.js + Description: 'Tests regular expressions containing \f\n\r\t\v\s\S\ ' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: \\f\\n\\r\\t\\v\\s\\S '; + + writeHeaderToLog('Executing script: whitespace.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + var non_whitespace = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#$%^&*()-+={[}]|\\:;'<,>./?1234567890" + '"'; + var whitespace = "\f\n\r\t\v "; + + // be sure all whitespace is matched by \s + testcases[count++] = new TestCase ( SECTION, + "'" + whitespace + "'.match(new RegExp('\\s+'))", + String([whitespace]), String(whitespace.match(new RegExp('\\s+')))); + + // be sure all non-whitespace is matched by \S + testcases[count++] = new TestCase ( SECTION, + "'" + non_whitespace + "'.match(new RegExp('\\S+'))", + String([non_whitespace]), String(non_whitespace.match(new RegExp('\\S+')))); + + // be sure all non-whitespace is not matched by \s + testcases[count++] = new TestCase ( SECTION, + "'" + non_whitespace + "'.match(new RegExp('\\s'))", + null, non_whitespace.match(new RegExp('\\s'))); + + // be sure all whitespace is not matched by \S + testcases[count++] = new TestCase ( SECTION, + "'" + whitespace + "'.match(new RegExp('\\S'))", + null, whitespace.match(new RegExp('\\S'))); + + var s = non_whitespace + whitespace; + + // be sure all digits are matched by \s + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\s+'))", + String([whitespace]), String(s.match(new RegExp('\\s+')))); + + s = whitespace + non_whitespace; + + // be sure all non-whitespace are matched by \S + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\S+'))", + String([non_whitespace]), String(s.match(new RegExp('\\S+')))); + + // '1233345find me345'.match(new RegExp('[a-z\\s][a-z\\s]+')) + testcases[count++] = new TestCase ( SECTION, "'1233345find me345'.match(new RegExp('[a-z\\s][a-z\\s]+'))", + String(["find me"]), String('1233345find me345'.match(new RegExp('[a-z\\s][a-z\\s]+')))); + + var i; + + // be sure all whitespace characters match individually + for (i = 0; i < whitespace.length; ++i) + { + s = 'ab' + whitespace[i] + 'cd'; + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\\\s'))", + String([whitespace[i]]), String(s.match(new RegExp('\\s')))); + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(/\s/)", + String([whitespace[i]]), String(s.match(/\s/))); + } + // be sure all non_whitespace characters match individually + for (i = 0; i < non_whitespace.length; ++i) + { + s = ' ' + non_whitespace[i] + ' '; + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\\\S'))", + String([non_whitespace[i]]), String(s.match(new RegExp('\\S')))); + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(/\S/)", + String([non_whitespace[i]]), String(s.match(/\S/))); + } + + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/word_boundary.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/word_boundary.js new file mode 100644 index 00000000000..581499c255a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regexp/word_boundary.js @@ -0,0 +1,119 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: word_boundary.js + Description: 'Tests regular expressions containing \b and \B' + + Author: Nick Lerissa + Date: March 10, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'RegExp: \\b and \\B'; + + writeHeaderToLog('Executing script: word_boundary.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // 'cowboy boyish boy'.match(new RegExp('\bboy\b')) + testcases[count++] = new TestCase ( SECTION, "'cowboy boyish boy'.match(new RegExp('\\bboy\\b'))", + String(["boy"]), String('cowboy boyish boy'.match(new RegExp('\\bboy\\b')))); + + var boundary_characters = "\f\n\r\t\v~`!@#$%^&*()-+={[}]|\\:;'<,>./? " + '"'; + var non_boundary_characters = '1234567890_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + var s = ''; + var i; + + // testing whether all boundary characters are matched when they should be + for (i = 0; i < boundary_characters.length; ++i) + { + s = '123ab' + boundary_characters.charAt(i) + '123c' + boundary_characters.charAt(i); + + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\b123[a-z]\\b'))", + String(["123c"]), String(s.match(new RegExp('\\b123[a-z]\\b')))); + } + + // testing whether all non-boundary characters are matched when they should be + for (i = 0; i < non_boundary_characters.length; ++i) + { + s = '123ab' + non_boundary_characters.charAt(i) + '123c' + non_boundary_characters.charAt(i); + + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\B123[a-z]\\B'))", + String(["123c"]), String(s.match(new RegExp('\\B123[a-z]\\B')))); + } + + s = ''; + + // testing whether all boundary characters are not matched when they should not be + for (i = 0; i < boundary_characters.length; ++i) + { + s += boundary_characters[i] + "a" + i + "b"; + } + s += "xa1111bx"; + + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\Ba\\d+b\\B'))", + String(["a1111b"]), String(s.match(new RegExp('\\Ba\\d+b\\B')))); + + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(/\\Ba\\d+b\\B/)", + String(["a1111b"]), String(s.match(/\Ba\d+b\B/))); + + s = ''; + + // testing whether all non-boundary characters are not matched when they should not be + for (i = 0; i < non_boundary_characters.length; ++i) + { + s += non_boundary_characters[i] + "a" + i + "b"; + } + s += "(a1111b)"; + + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(new RegExp('\\ba\\d+b\\b'))", + String(["a1111b"]), String(s.match(new RegExp('\\ba\\d+b\\b')))); + + testcases[count++] = new TestCase ( SECTION, + "'" + s + "'.match(/\\ba\\d+b\\b/)", + String(["a1111b"]), String(s.match(/\ba\d+b\b/))); + + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regress/regress-144834.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regress/regress-144834.js new file mode 100644 index 00000000000..cfbfc1b1b78 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regress/regress-144834.js @@ -0,0 +1,76 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): bzbarsky@mit.edu, pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 05 July 2002 +* SUMMARY: Testing local var having same name as switch label inside function +* +* The code below crashed while compiling in JS1.1 or JS1.2 +* See http://bugzilla.mozilla.org/show_bug.cgi?id=144834 +* +*/ +//----------------------------------------------------------------------------- +var bug = 144834; +var summary = 'Local var having same name as switch label inside function'; + +print(bug); +print(summary); + + +function RedrawSched() +{ + var MinBound; + + switch (i) + { + case MinBound : + } +} + + +/* + * Also try eval scope - + */ +var s = ''; +s += 'function RedrawSched()'; +s += '{'; +s += ' var MinBound;'; +s += ''; +s += ' switch (i)'; +s += ' {'; +s += ' case MinBound :'; +s += ' }'; +s += '}'; +eval(s); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/regress/regress-7703.js b/Source/JavaScriptCore/tests/mozilla/js1_2/regress/regress-7703.js new file mode 100644 index 00000000000..7808d9b55cc --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/regress/regress-7703.js @@ -0,0 +1,83 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): +*/ + +/** + * File Name: regress-7703.js + * Reference: "http://bugzilla.mozilla.org/show_bug.cgi?id=7703"; + * Description: See the text of the bugnumber above + */ + + var SECTION = "js1_2"; // provide a document reference (ie, ECMA section) + var VERSION = "JS1_2"; // Version of JavaScript or ECMA + var TITLE = "Regression test for bugzilla # 7703"; // Provide ECMA section title or a description + var BUGNUMBER = "http://bugzilla.mozilla.org/show_bug.cgi?id=7703"; // Provide URL to bugsplat or bugzilla report + + startTest(); // leave this alone + + /* + * Calls to AddTestCase here. AddTestCase is a function that is defined + * in shell.js and takes three arguments: + * - a string representation of what is being tested + * - the expected result + * - the actual result + * + * For example, a test might look like this: + * + * var zip = /[\d]{5}$/; + * + * AddTestCase( + * "zip = /[\d]{5}$/; \"PO Box 12345 Boston, MA 02134\".match(zip)", // description of the test + * "02134", // expected result + * "PO Box 12345 Boston, MA 02134".match(zip) ); // actual result + * + */ + + types = []; + function inspect(object) { + for (prop in object) { + var x = object[prop]; + types[types.length] = (typeof x); + } + } + + var o = {a: 1, b: 2}; + inspect(o); + + AddTestCase( "inspect(o),length", 2, types.length ); + AddTestCase( "inspect(o)[0]", "number", types[0] ); + AddTestCase( "inspect(o)[1]", "number", types[1] ); + + types_2 = []; + + function inspect_again(object) { + for (prop in object) { + types_2[types_2.length] = (typeof object[prop]); + } + } + + inspect_again(o); + AddTestCase( "inspect_again(o),length", 2, types.length ); + AddTestCase( "inspect_again(o)[0]", "number", types[0] ); + AddTestCase( "inspect_again(o)[1]", "number", types[1] ); + + + test(); // leave this alone. this executes the test cases and + // displays results. diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/shell.js b/Source/JavaScriptCore/tests/mozilla/js1_2/shell.js new file mode 100644 index 00000000000..ba57d618fe4 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/shell.js @@ -0,0 +1,147 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +var completed = false; +var testcases; + +var SECTION = ""; +var VERSION = ""; +var BUGNUMBER = ""; + +var GLOBAL = "[object global]"; +var PASSED = " PASSED!" +var FAILED = " FAILED! expected: "; + +startTest(); + + version(120); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +/* wrapper for test cas constructor that doesn't require the SECTION + * argument. + */ + +function AddTestCase( description, expect, actual ) { + testcases[tc++] = new TestCase( SECTION, description, expect, actual ); +} + + +function TestCase( n, d, e, a ) { + this.name = n; + this.description = d; + this.expect = e; + this.actual = a; + this.passed = true; + this.reason = ""; + + this.passed = getTestCaseResult( this.expect, this.actual ); +} +function startTest() { + version(120); + + if ( BUGNUMBER ) { + writeLineToLog ("BUGNUMBER: " + BUGNUMBER ); + } + + testcases = new Array(); + tc = 0; +} +function getTestCaseResult( expect, actual ) { + // because ( NaN == NaN ) always returns false, need to do + // a special compare to see if we got the right result. + if ( actual != actual ) { + if ( typeof actual == "object" ) { + actual = "NaN object"; + } else { + actual = "NaN number"; + } + } + if ( expect != expect ) { + if ( typeof expect == "object" ) { + expect = "NaN object"; + } else { + expect = "NaN number"; + } + } + + var passed = ( expect == actual ) ? true : false; + + // if both objects are numbers, give a little leeway for rounding. + if ( !passed + && typeof(actual) == "number" + && typeof(expect) == "number" + ) { + if ( Math.abs(actual-expect) < 0.0000001 ) { + passed = true; + } + } + + // verify type is the same + if ( typeof(expect) != typeof(actual) ) { + passed = false; + } + + return passed; +} +/* + * Begin printing functions. These functions use the shell's + * print function. When running tests in the browser, these + * functions, override these functions with functions that use + * document.write. + */ + +function writeTestCaseResult( expect, actual, string ) { + var passed = getTestCaseResult( expect, actual ); + writeFormattedResult( expect, actual, string, passed ); + return passed; +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = string ; + s += ( passed ) ? PASSED : FAILED + expect; + writeLineToLog( s); + return passed; +} +function writeLineToLog( string ) { + print( string ); +} +function writeHeaderToLog( string ) { + print( string ); +} +/* end of print functions */ + +function stopTest() { + var gc; + if ( gc != undefined ) { + gc(); + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/statements/break.js b/Source/JavaScriptCore/tests/mozilla/js1_2/statements/break.js new file mode 100644 index 00000000000..ffe177d5818 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/statements/break.js @@ -0,0 +1,162 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: break.js + Description: 'Tests the break statement' + + Author: Nick Lerissa + Date: March 18, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'statements: break'; + + writeHeaderToLog("Executing script: break.js"); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + var i,j; + + for (i = 0; i < 1000; i++) + { + if (i == 100) break; + } + + // 'breaking out of "for" loop' + testcases[count++] = new TestCase ( SECTION, 'breaking out of "for" loop', + 100, i); + + j = 2000; + + out1: + for (i = 0; i < 1000; i++) + { + if (i == 100) + { + out2: + for (j = 0; j < 1000; j++) + { + if (j == 500) break out1; + } + j = 2001; + } + j = 2002; + } + + // 'breaking out of a "for" loop with a "label"' + testcases[count++] = new TestCase ( SECTION, 'breaking out of a "for" loop with a "label"', + 500, j); + + i = 0; + + while (i < 1000) + { + if (i == 100) break; + i++; + } + + // 'breaking out of a "while" loop' + testcases[count++] = new TestCase ( SECTION, 'breaking out of a "while" loop', + 100, i ); + + + j = 2000; + i = 0; + + out3: + while (i < 1000) + { + if (i == 100) + { + j = 0; + out4: + while (j < 1000) + { + if (j == 500) break out3; + j++; + } + j = 2001; + } + j = 2002; + i++; + } + + // 'breaking out of a "while" loop with a "label"' + testcases[count++] = new TestCase ( SECTION, 'breaking out of a "while" loop with a "label"', + 500, j); + + i = 0; + + do + { + if (i == 100) break; + i++; + } while (i < 1000); + + // 'breaking out of a "do" loop' + testcases[count++] = new TestCase ( SECTION, 'breaking out of a "do" loop', + 100, i ); + + j = 2000; + i = 0; + + out5: + do + { + if (i == 100) + { + j = 0; + out6: + do + { + if (j == 500) break out5; + j++; + }while (j < 1000); + j = 2001; + } + j = 2002; + i++; + }while (i < 1000); + + // 'breaking out of a "do" loop with a "label"' + testcases[count++] = new TestCase ( SECTION, 'breaking out of a "do" loop with a "label"', + 500, j); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/statements/continue.js b/Source/JavaScriptCore/tests/mozilla/js1_2/statements/continue.js new file mode 100644 index 00000000000..e27b9dfd7a2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/statements/continue.js @@ -0,0 +1,175 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: continue.js + Description: 'Tests the continue statement' + + Author: Nick Lerissa + Date: March 18, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'statements: continue'; + + writeHeaderToLog("Executing script: continue.js"); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + var i,j; + + j = 0; + for (i = 0; i < 200; i++) + { + if (i == 100) + continue; + j++; + } + + // '"continue" in a "for" loop' + testcases[count++] = new TestCase ( SECTION, '"continue" in "for" loop', + 199, j); + + + j = 0; + out1: + for (i = 0; i < 1000; i++) + { + if (i == 100) + { + out2: + for (var k = 0; k < 1000; k++) + { + if (k == 500) continue out1; + } + j = 3000; + } + j++; + } + + // '"continue" in a "for" loop with a "label"' + testcases[count++] = new TestCase ( SECTION, '"continue" in "for" loop with a "label"', + 999, j); + + i = 0; + j = 1; + + while (i != j) + { + i++; + if (i == 100) continue; + j++; + } + + // '"continue" in a "while" loop' + testcases[count++] = new TestCase ( SECTION, '"continue" in a "while" loop', + 100, j ); + + j = 0; + i = 0; + out3: + while (i < 1000) + { + if (i == 100) + { + var k = 0; + out4: + while (k < 1000) + { + if (k == 500) + { + i++; + continue out3; + } + k++; + } + j = 3000; + } + j++; + i++; + } + + // '"continue" in a "while" loop with a "label"' + testcases[count++] = new TestCase ( SECTION, '"continue" in a "while" loop with a "label"', + 999, j); + + i = 0; + j = 1; + + do + { + i++; + if (i == 100) continue; + j++; + } while (i != j); + + + // '"continue" in a "do" loop' + testcases[count++] = new TestCase ( SECTION, '"continue" in a "do" loop', + 100, j ); + + j = 0; + i = 0; + out5: + do + { + if (i == 100) + { + var k = 0; + out6: + do + { + if (k == 500) + { + i++; + continue out5; + } + k++; + }while (k < 1000); + j = 3000; + } + j++; + i++; + }while (i < 1000); + + // '"continue" in a "do" loop with a "label"' + testcases[count++] = new TestCase ( SECTION, '"continue" in a "do" loop with a "label"', + 999, j); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/statements/do_while.js b/Source/JavaScriptCore/tests/mozilla/js1_2/statements/do_while.js new file mode 100644 index 00000000000..d54ac78688d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/statements/do_while.js @@ -0,0 +1,68 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: do_while.js + Description: 'This tests the new do_while loop' + + Author: Nick Lerissa + Date: Fri Feb 13 09:58:28 PST 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'statements: do_while'; + + writeHeaderToLog('Executing script: do_while.js'); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + + var done = false; + var x = 0; + do + { + if (x++ == 3) done = true; + } while (!done); + + testcases[count++] = new TestCase( SECTION, "do_while ", + 4, x); + + //load('d:/javascript/tests/output/statements/do_while.js') + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/statements/switch.js b/Source/JavaScriptCore/tests/mozilla/js1_2/statements/switch.js new file mode 100644 index 00000000000..f6678c5baa5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/statements/switch.js @@ -0,0 +1,127 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: switch.js + Description: 'Tests the switch statement' + + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=323696 + + Author: Nick Lerissa + Date: March 19, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'statements: switch'; + var BUGNUMBER="323696"; + + writeHeaderToLog("Executing script: switch.js"); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + var var1 = "match string"; + var match1 = false; + var match2 = false; + var match3 = false; + + switch (var1) + { + case "match string": + match1 = true; + case "bad string 1": + match2 = true; + break; + case "bad string 2": + match3 = true; + } + + testcases[count++] = new TestCase ( SECTION, 'switch statement', + true, match1); + + testcases[count++] = new TestCase ( SECTION, 'switch statement', + true, match2); + + testcases[count++] = new TestCase ( SECTION, 'switch statement', + false, match3); + + var var2 = 3; + + var match1 = false; + var match2 = false; + var match3 = false; + var match4 = false; + var match5 = false; + + switch (var2) + { + case 1: +/* switch (var1) + { + case "foo": + match1 = true; + break; + case 3: + match2 = true; + break; + }*/ + match3 = true; + break; + case 2: + match4 = true; + break; + case 3: + match5 = true; + break; + } + testcases[count++] = new TestCase ( SECTION, 'switch statement', + false, match1); + + testcases[count++] = new TestCase ( SECTION, 'switch statement', + false, match2); + + testcases[count++] = new TestCase ( SECTION, 'switch statement', + false, match3); + + testcases[count++] = new TestCase ( SECTION, 'switch statement', + false, match4); + + testcases[count++] = new TestCase ( SECTION, 'switch statement', + true, match5); + + function test() + { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/statements/switch2.js b/Source/JavaScriptCore/tests/mozilla/js1_2/statements/switch2.js new file mode 100644 index 00000000000..5d35f8cf4e0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/statements/switch2.js @@ -0,0 +1,188 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + Filename: switch2.js + Description: 'Tests the switch statement' + + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=323696 + + Author: Norris Boyd + Date: July 31, 1998 +*/ + + var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; + var VERSION = 'no version'; + startTest(); + var TITLE = 'statements: switch'; + var BUGNUMBER="323626"; + + writeHeaderToLog("Executing script: switch2.js"); + writeHeaderToLog( SECTION + " "+ TITLE); + + var count = 0; + var testcases = new Array(); + + // test defaults not at the end; regression test for a bug that + // nearly made it into 4.06 + function f0(i) { + switch(i) { + default: + case "a": + case "b": + return "ab*" + case "c": + return "c"; + case "d": + return "d"; + } + return ""; + } + testcases[count++] = new TestCase(SECTION, 'switch statement', + f0("a"), "ab*"); + + testcases[count++] = new TestCase(SECTION, 'switch statement', + f0("b"), "ab*"); + + testcases[count++] = new TestCase(SECTION, 'switch statement', + f0("*"), "ab*"); + + testcases[count++] = new TestCase(SECTION, 'switch statement', + f0("c"), "c"); + + testcases[count++] = new TestCase(SECTION, 'switch statement', + f0("d"), "d"); + + function f1(i) { + switch(i) { + case "a": + case "b": + default: + return "ab*" + case "c": + return "c"; + case "d": + return "d"; + } + return ""; + } + + testcases[count++] = new TestCase(SECTION, 'switch statement', + f1("a"), "ab*"); + + testcases[count++] = new TestCase(SECTION, 'switch statement', + f1("b"), "ab*"); + + testcases[count++] = new TestCase(SECTION, 'switch statement', + f1("*"), "ab*"); + + testcases[count++] = new TestCase(SECTION, 'switch statement', + f1("c"), "c"); + + testcases[count++] = new TestCase(SECTION, 'switch statement', + f1("d"), "d"); + + // Switch on integer; will use TABLESWITCH opcode in C engine + function f2(i) { + switch (i) { + case 0: + case 1: + return 1; + case 2: + return 2; + } + // with no default, control will fall through + return 3; + } + + testcases[count++] = new TestCase(SECTION, 'switch statement', + f2(0), 1); + + testcases[count++] = new TestCase(SECTION, 'switch statement', + f2(1), 1); + + testcases[count++] = new TestCase(SECTION, 'switch statement', + f2(2), 2); + + testcases[count++] = new TestCase(SECTION, 'switch statement', + f2(3), 3); + + // empty switch: make sure expression is evaluated + var se = 0; + switch (se = 1) { + } + testcases[count++] = new TestCase(SECTION, 'switch statement', + se, 1); + + // only default + se = 0; + switch (se) { + default: + se = 1; + } + testcases[count++] = new TestCase(SECTION, 'switch statement', + se, 1); + + // in loop, break should only break out of switch + se = 0; + for (var i=0; i < 2; i++) { + switch (i) { + case 0: + case 1: + break; + } + se = 1; + } + testcases[count++] = new TestCase(SECTION, 'switch statement', + se, 1); + + // test "fall through" + se = 0; + i = 0; + switch (i) { + case 0: + se++; + /* fall through */ + case 1: + se++; + break; + } + testcases[count++] = new TestCase(SECTION, 'switch statement', + se, 2); + + test(); + + // Needed: tests for evaluation time of case expressions. + // This issue was under debate at ECMA, so postponing for now. + + function test() { + writeLineToLog("hi"); + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); + } diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/version120/boolean-001.js b/Source/JavaScriptCore/tests/mozilla/js1_2/version120/boolean-001.js new file mode 100644 index 00000000000..55fafe40584 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/version120/boolean-001.js @@ -0,0 +1,73 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + * File Name: boolean-001.js + * Description: + * + * In JavaScript 1.2, new Boolean(false) evaluates to false. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "boolean-001.js"; + var VERSION = "JS1_2"; + startTest(); + var TITLE = "new Boolean(false) should evaluate to false"; + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + BooleanTest( "new Boolean(true)", new Boolean(true), true ); + BooleanTest( "new Boolean(false)", new Boolean(false), false ); + BooleanTest( "true", true, true ); + BooleanTest( "false", false, false ); + + test(); + +function BooleanTest( string, object, expect ) { + if ( object ) { + result = true; + } else { + result = false; + } + + testcases[tc++] = new TestCase( + SECTION, + string, + expect, + result ); +} + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_2/version120/regress-99663.js b/Source/JavaScriptCore/tests/mozilla/js1_2/version120/regress-99663.js new file mode 100644 index 00000000000..75131ee2390 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_2/version120/regress-99663.js @@ -0,0 +1,172 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. +* All Rights Reserved. +* +* Contributor(s): brendan@mozilla.org, pschwartau@netscape.com +* Date: 09 October 2001 +* +* SUMMARY: Regression test for Bugzilla bug 99663 +* See http://bugzilla.mozilla.org/show_bug.cgi?id=99663 +* +******************************************************************************* +******************************************************************************* +* ESSENTIAL!: this test should contain, or be loaded after, a call to +* +* version(120); +* +* Only JS version 1.2 or less has the behavior we're expecting here - +* +* Brendan: "The JS_SetVersion stickiness is necessary for tests such as +* this one to work properly. I think the existing js/tests have been lucky +* in dodging the buggy way that JS_SetVersion's effect can be undone by +* function return." +* +* Note: it is the function statements for f1(), etc. that MUST be compiled +* in JS version 1.2 or less for the test to pass - +* +******************************************************************************* +******************************************************************************* +* +* +* NOTE: the test uses the |it| object of SpiderMonkey; don't run it in Rhino - +* +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 99663; +var summary = 'Regression test for Bugzilla bug 99663'; +/* + * This testcase expects error messages containing + * the phrase 'read-only' or something similar - + */ +var READONLY = /read\s*-?\s*only/; +var READONLY_TRUE = 'a "read-only" error'; +var READONLY_FALSE = 'Error: '; +var FAILURE = 'NO ERROR WAS GENERATED!'; +var status = ''; +var actual = ''; +var expect= ''; +var statusitems = []; +var expectedvalues = []; +var actualvalues = []; + + +/* + * These MUST be compiled in JS1.2 or less for the test to work - see above + */ +function f1() +{ + with (it) + { + for (rdonly in this); + } +} + + +function f2() +{ + for (it.rdonly in this); +} + + +function f3(s) +{ + for (it[s] in this); +} + + + +/* + * Begin testing by capturing actual vs. expected values. + * Initialize to FAILURE; this will get reset if all goes well - + */ +actual = FAILURE; +try +{ + f1(); +} +catch(e) +{ + actual = readOnly(e.message); +} +expect= READONLY_TRUE; +status = 'Section 1 of test - got ' + actual; +addThis(); + + +actual = FAILURE; +try +{ + f2(); +} +catch(e) +{ + actual = readOnly(e.message); +} +expect= READONLY_TRUE; +status = 'Section 2 of test - got ' + actual; +addThis(); + + +actual = FAILURE; +try +{ + f3('rdonly'); +} +catch(e) +{ + actual = readOnly(e.message); +} +expect= READONLY_TRUE; +status = 'Section 3 of test - got ' + actual; +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function readOnly(msg) +{ + if (msg.match(READONLY)) + return READONLY_TRUE; + return READONLY_FALSE + msg; +} + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + writeLineToLog ('Bug Number ' + bug); + writeLineToLog ('STATUS: ' + summary); + + for (var i=0; i version(100) + * 120 + * js> eval("function f(){}function g(){}") + * js> version(120); + * 100 + * js> eval("function f(){}function g(){}") + * js> + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "function-001.js"; + var VERSION = "JS_1.3"; + var TITLE = "functions not separated by semicolons are errors in version 120 and higher"; + var BUGNUMBER="10278"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( + SECTION, + "eval(\"function f(){}function g(){}\")", + undefined, + eval("function f(){}function g(){}") ); + + test(); + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/Script/function-002.js b/Source/JavaScriptCore/tests/mozilla/js1_3/Script/function-002.js new file mode 100644 index 00000000000..d3d1d8522f7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/Script/function-002.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: function-002.js + Section: + Description: + + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=249579 + + function definitions in conditional statements should be allowed. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "function-002"; + var VERSION = "JS1_3"; + var TITLE = "Regression test for 249579"; + var BUGNUMBER="249579"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( + SECTION, + "0?function(){}:0", + 0, + 0?function(){}:0 ); + + + bar = true; + foo = bar ? function () { return true; } : function() { return false; }; + + testcases[tc++] = new TestCase( + SECTION, + "bar = true; foo = bar ? function () { return true; } : function() { return false; }; foo()", + true, + foo() ); + + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/Script/in-001.js b/Source/JavaScriptCore/tests/mozilla/js1_3/Script/in-001.js new file mode 100644 index 00000000000..d9d76fe8b17 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/Script/in-001.js @@ -0,0 +1,52 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: in-001.js + Section: + Description: + + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=196109 + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "in-001"; + var VERSION = "JS1_3"; + var TITLE = "Regression test for 196109"; + var BUGNUMBER="196109"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + o = {}; + o.foo = 'sil'; + + testcases[tc++] = new TestCase( + SECTION, + "\"foo\" in o", + true, + "foo" in o ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/Script/new-001.js b/Source/JavaScriptCore/tests/mozilla/js1_3/Script/new-001.js new file mode 100644 index 00000000000..2868ecabde2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/Script/new-001.js @@ -0,0 +1,120 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: new-001.js + Section: + Description: + + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=76103 + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "new-001"; + var VERSION = "JS1_3"; + var TITLE = "new-001"; + var BUGNUMBER="31567"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + function Test_One (x) { + this.v = x+1; + return x*2 + } + + function Test_Two( x, y ) { + this.v = x; + return y; + } + + testcases[tc++] = new TestCase( + SECTION, + "Test_One(18)", + 36, + Test_One(18) ); + + testcases[tc++] = new TestCase( + SECTION, + "new Test_One(18)", + "[object Object]", + new Test_One(18) +"" ); + + testcases[tc++] = new TestCase( + SECTION, + "new Test_One(18).v", + 19, + new Test_One(18).v ); + + testcases[tc++] = new TestCase( + SECTION, + "Test_Two(2,7)", + 7, + Test_Two(2,7) ); + + testcases[tc++] = new TestCase( + SECTION, + "new Test_Two(2,7)", + "[object Object]", + new Test_Two(2,7) +"" ); + + testcases[tc++] = new TestCase( + SECTION, + "new Test_Two(2,7).v", + 2, + new Test_Two(2,7).v ); + + testcases[tc++] = new TestCase( + SECTION, + "new (Function)(\"x\", \"return x+3\")(5,6)", + 8, + new (Function)("x","return x+3")(5,6) ); + + testcases[tc++] = new TestCase( + SECTION, + "new new Test_Two(String, 2).v(0123)", + "83", + new new Test_Two(String, 2).v(0123) +""); + + testcases[tc++] = new TestCase( + SECTION, + "new new Test_Two(String, 2).v(0123).length", + 2, + new new Test_Two(String, 2).v(0123).length ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/Script/script-001.js b/Source/JavaScriptCore/tests/mozilla/js1_3/Script/script-001.js new file mode 100644 index 00000000000..5e7ec89b92d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/Script/script-001.js @@ -0,0 +1,159 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: script-001.js + Section: + Description: new NativeScript object + + +js> parseInt(123,"hi") +123 +js> parseInt(123, "blah") +123 +js> s +js: s is not defined +js> s = new Script + +undefined; + + +js> s = new Script() + +undefined; + + +js> s.getJSClass +js> s.getJSClass = Object.prototype.toString +function toString() { + [native code] +} + +js> s.getJSClass() +[object Script] +js> s.compile( "return 3+4" ) +js: JavaScript exception: javax.javascript.EvaluatorException: " s.compile( "3+4" ) + +3 + 4; + + +js> typeof s +function +js> s() +Jit failure! +invalid opcode: 1 +Jit Pass1 Failure! +javax/javascript/gen/c13 initScript (Ljavax/javascript/Scriptable;)V +An internal JIT error has occurred. Please report this with .class +jit-bugs@itools.symantec.com + +7 +js> s.compile("3+4") + +3 + 4; + + +js> s() +Jit failure! +invalid opcode: 1 +Jit Pass1 Failure! +javax/javascript/gen/c17 initScript (Ljavax/javascript/Scriptable;)V +An internal JIT error has occurred. Please report this with .class +jit-bugs@itools.symantec.com + +7 +js> quit() + +C:\src\ns_priv\js\tests\ecma>shell + +C:\src\ns_priv\js\tests\ecma>java -classpath c:\cafe\java\JavaScope; +:\src\ns_priv\js\tests javax.javascript.examples.Shell +Symantec Java! JustInTime Compiler Version 210.054 for JDK 1.1.2 +Copyright (C) 1996-97 Symantec Corporation + +js> s = new Script("3+4") + +3 + 4; + + +js> s() +7 +js> s2 = new Script(); + +undefined; + + +js> s.compile( "3+4") + +3 + 4; + + +js> s() +Jit failure! +invalid opcode: 1 +Jit Pass1 Failure! +javax/javascript/gen/c7 initScript (Ljavax/javascript/Scriptable;)V +An internal JIT error has occurred. Please report this with .class +jit-bugs@itools.symantec.com + +7 +js> quit() + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "script-001"; + var VERSION = "JS1_3"; + var TITLE = "NativeScript"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var s = new Script(); + s.getJSClass = Object.prototype.toString; + + testcases[tc++] = new TestCase( SECTION, + "var s = new Script(); typeof s", + "function", + typeof s ); + + testcases[tc++] = new TestCase( SECTION, + "s.getJSClass()", + "[object Script]", + s.getJSClass() ); + + test(); +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/Script/switch-001.js b/Source/JavaScriptCore/tests/mozilla/js1_3/Script/switch-001.js new file mode 100644 index 00000000000..b3f71d77ade --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/Script/switch-001.js @@ -0,0 +1,80 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: switch-001.js + Section: + Description: + + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=315767 + + Verify that switches do not use strict equality in + versions of JavaScript < 1.4 + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "switch-001"; + var VERSION = "JS1_3"; + var TITLE = "switch-001"; + var BUGNUMBER="315767"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + result = "fail: did not enter switch"; + + switch (true) { + case 1: + result = "fail: for backwards compatibility, version 130 use strict equality"; + break; + case true: + result = "pass"; + break; + default: + result = "fail: evaluated default statement"; + } + + testcases[tc++] = new TestCase( + SECTION, + "switch / case should use strict equality in version of JS < 1.4", + "pass", + result ); + + + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_1.js b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_1.js new file mode 100644 index 00000000000..1d9915eab5e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_1.js @@ -0,0 +1,166 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: proto_1.js + Section: + Description: new PrototypeObject + + This tests Object Hierarchy and Inheritance, as described in the document + Object Hierarchy and Inheritance in JavaScript, last modified on 12/18/97 + 15:19:34 on http://devedge.netscape.com/. Current URL: + http://devedge.netscape.com/docs/manuals/communicator/jsobj/contents.htm + + This tests the syntax ObjectName.prototype = new PrototypeObject using the + Employee example in the document referenced above. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "proto_1"; + var VERSION = "JS1_3"; + var TITLE = "new PrototypeObject"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + +function Employee () { + this.name = ""; + this.dept = "general"; +} +function Manager () { + this.reports = []; +} +Manager.prototype = new Employee(); + +function WorkerBee () { + this.projects = new Array(); +} +WorkerBee.prototype = new Employee(); + +function SalesPerson () { + this.dept = "sales"; + this.quota = 100; +} +SalesPerson.prototype = new WorkerBee(); + +function Engineer () { + this.dept = "engineering"; + this.machine = ""; +} +Engineer.prototype = new WorkerBee(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + var jim = new Employee(); + + testcases[tc++] = new TestCase( SECTION, + "jim = new Employee(); jim.name", + "", + jim.name ); + + + testcases[tc++] = new TestCase( SECTION, + "jim = new Employee(); jim.dept", + "general", + jim.dept ); + + var sally = new Manager(); + + testcases[tc++] = new TestCase( SECTION, + "sally = new Manager(); sally.name", + "", + sally.name ); + testcases[tc++] = new TestCase( SECTION, + "sally = new Manager(); sally.dept", + "general", + sally.dept ); + + testcases[tc++] = new TestCase( SECTION, + "sally = new Manager(); sally.reports.length", + 0, + sally.reports.length ); + + testcases[tc++] = new TestCase( SECTION, + "sally = new Manager(); typeof sally.reports", + "object", + typeof sally.reports ); + + var fred = new SalesPerson(); + + testcases[tc++] = new TestCase( SECTION, + "fred = new SalesPerson(); fred.name", + "", + fred.name ); + + testcases[tc++] = new TestCase( SECTION, + "fred = new SalesPerson(); fred.dept", + "sales", + fred.dept ); + + testcases[tc++] = new TestCase( SECTION, + "fred = new SalesPerson(); fred.quota", + 100, + fred.quota ); + + testcases[tc++] = new TestCase( SECTION, + "fred = new SalesPerson(); fred.projects.length", + 0, + fred.projects.length ); + + var jane = new Engineer(); + + testcases[tc++] = new TestCase( SECTION, + "jane = new Engineer(); jane.name", + "", + jane.name ); + + testcases[tc++] = new TestCase( SECTION, + "jane = new Engineer(); jane.dept", + "engineering", + jane.dept ); + + testcases[tc++] = new TestCase( SECTION, + "jane = new Engineer(); jane.projects.length", + 0, + jane.projects.length ); + + testcases[tc++] = new TestCase( SECTION, + "jane = new Engineer(); jane.machine", + "", + jane.machine ); + + + test(); \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_10.js b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_10.js new file mode 100644 index 00000000000..e6d1b9aded1 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_10.js @@ -0,0 +1,152 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: proto_10.js + Section: + Description: Determining Instance Relationships + + This tests Object Hierarchy and Inheritance, as described in the document + Object Hierarchy and Inheritance in JavaScript, last modified on 12/18/97 + 15:19:34 on http://devedge.netscape.com/. Current URL: + http://devedge.netscape.com/docs/manuals/communicator/jsobj/contents.htm + + This tests the syntax ObjectName.prototype = new PrototypeObject using the + Employee example in the document referenced above. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "proto_10"; + var VERSION = "JS1_3"; + var TITLE = "Determining Instance Relationships"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + +function InstanceOf( object, constructor ) { + while ( object != null ) { + if ( object == constructor.prototype ) { + return true; + } + object = object.__proto__; + } + return false; +} +function Employee ( name, dept ) { + this.name = name || ""; + this.dept = dept || "general"; +} + +function Manager () { + this.reports = []; +} +Manager.prototype = new Employee(); + +function WorkerBee ( name, dept, projs ) { + this.base = Employee; + this.base( name, dept) + this.projects = projs || new Array(); +} +WorkerBee.prototype = new Employee(); + +function SalesPerson () { + this.dept = "sales"; + this.quota = 100; +} +SalesPerson.prototype = new WorkerBee(); + +function Engineer ( name, projs, machine ) { + this.base = WorkerBee; + this.base( name, "engineering", projs ) + this.machine = machine || ""; +} +Engineer.prototype = new WorkerBee(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + var pat = new Engineer() + + testcases[tc++] = new TestCase( SECTION, + "pat.__proto__ == Engineer.prototype", + true, + pat.__proto__ == Engineer.prototype ); + + testcases[tc++] = new TestCase( SECTION, + "pat.__proto__.__proto__ == WorkerBee.prototype", + true, + pat.__proto__.__proto__ == WorkerBee.prototype ); + + testcases[tc++] = new TestCase( SECTION, + "pat.__proto__.__proto__.__proto__ == Employee.prototype", + true, + pat.__proto__.__proto__.__proto__ == Employee.prototype ); + + testcases[tc++] = new TestCase( SECTION, + "pat.__proto__.__proto__.__proto__.__proto__ == Object.prototype", + true, + pat.__proto__.__proto__.__proto__.__proto__ == Object.prototype ); + + testcases[tc++] = new TestCase( SECTION, + "pat.__proto__.__proto__.__proto__.__proto__.__proto__ == null", + true, + pat.__proto__.__proto__.__proto__.__proto__.__proto__ == null ); + + + testcases[tc++] = new TestCase( SECTION, + "InstanceOf( pat, Engineer )", + true, + InstanceOf( pat, Engineer ) ); + + testcases[tc++] = new TestCase( SECTION, + "InstanceOf( pat, WorkerBee )", + true, + InstanceOf( pat, WorkerBee ) ); + + testcases[tc++] = new TestCase( SECTION, + "InstanceOf( pat, Employee )", + true, + InstanceOf( pat, Employee ) ); + + testcases[tc++] = new TestCase( SECTION, + "InstanceOf( pat, Object )", + true, + InstanceOf( pat, Object ) ); + + testcases[tc++] = new TestCase( SECTION, + "InstanceOf( pat, SalesPerson )", + false, + InstanceOf ( pat, SalesPerson ) ); + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_11.js b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_11.js new file mode 100644 index 00000000000..4e92b9beb16 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_11.js @@ -0,0 +1,115 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: proto_11.js + Section: + Description: Global Information in Constructors + + This tests Object Hierarchy and Inheritance, as described in the document + Object Hierarchy and Inheritance in JavaScript, last modified on 12/18/97 + 15:19:34 on http://devedge.netscape.com/. Current URL: + http://devedge.netscape.com/docs/manuals/communicator/jsobj/contents.htm + + This tests the syntax ObjectName.prototype = new PrototypeObject using the + Employee example in the document referenced above. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "proto_11"; + var VERSION = "JS1_3"; + var TITLE = "Global Information in Constructors"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + var idCounter = 1; + + +function Employee ( name, dept ) { + this.name = name || ""; + this.dept = dept || "general"; + this.id = idCounter++; +} +function Manager () { + this.reports = []; +} +Manager.prototype = new Employee(); + +function WorkerBee ( name, dept, projs ) { + this.base = Employee; + this.base( name, dept) + this.projects = projs || new Array(); +} +WorkerBee.prototype = new Employee(); + +function SalesPerson () { + this.dept = "sales"; + this.quota = 100; +} +SalesPerson.prototype = new WorkerBee(); + +function Engineer ( name, projs, machine ) { + this.base = WorkerBee; + this.base( name, "engineering", projs ) + this.machine = machine || ""; +} +Engineer.prototype = new WorkerBee(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + var pat = new Employee( "Toonces, Pat", "Tech Pubs" ) + var terry = new Employee( "O'Sherry Terry", "Marketing" ); + + var les = new Engineer( "Morris, Les", new Array("JavaScript"), "indy" ); + + testcases[tc++] = new TestCase( SECTION, + "pat.id", + 5, + pat.id ); + + testcases[tc++] = new TestCase( SECTION, + "terry.id", + 6, + terry.id ); + + testcases[tc++] = new TestCase( SECTION, + "les.id", + 7, + les.id ); + + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_12.js b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_12.js new file mode 100644 index 00000000000..93081a0145a --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_12.js @@ -0,0 +1,142 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: proto_12.js + Section: + Description: new PrototypeObject + + This tests Object Hierarchy and Inheritance, as described in the document + Object Hierarchy and Inheritance in JavaScript, last modified on 12/18/97 + 15:19:34 on http://devedge.netscape.com/. Current URL: + http://devedge.netscape.com/docs/manuals/communicator/jsobj/contents.htm + + No Multiple Inheritance + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "proto_12"; + var VERSION = "JS1_3"; + var TITLE = "No Multiple Inheritance"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + +function Employee ( name, dept ) { + this.name = name || ""; + this.dept = dept || "general"; + this.id = idCounter++; +} +function Manager () { + this.reports = []; +} +Manager.prototype = new Employee(); + +function WorkerBee ( name, dept, projs ) { + this.base = Employee; + this.base( name, dept) + this.projects = projs || new Array(); +} +WorkerBee.prototype = new Employee(); + +function SalesPerson () { + this.dept = "sales"; + this.quota = 100; +} +SalesPerson.prototype = new WorkerBee(); + +function Hobbyist( hobby ) { + this.hobby = hobby || "yodeling"; +} + +function Engineer ( name, projs, machine, hobby ) { + this.base1 = WorkerBee; + this.base1( name, "engineering", projs ) + + this.base2 = Hobbyist; + this.base2( hobby ); + + this.projects = projs || new Array(); + this.machine = machine || ""; +} +Engineer.prototype = new WorkerBee(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + var idCounter = 1; + + var les = new Engineer( "Morris, Les", new Array("JavaScript"), "indy" ); + + Hobbyist.prototype.equipment = [ "horn", "mountain", "goat" ]; + + testcases[tc++] = new TestCase( SECTION, + "les.name", + "Morris, Les", + les.name ); + + testcases[tc++] = new TestCase( SECTION, + "les.dept", + "engineering", + les.dept ); + + Array.prototype.getClass = Object.prototype.toString; + + testcases[tc++] = new TestCase( SECTION, + "les.projects.getClass()", + "[object Array]", + les.projects.getClass() ); + + testcases[tc++] = new TestCase( SECTION, + "les.projects[0]", + "JavaScript", + les.projects[0] ); + + testcases[tc++] = new TestCase( SECTION, + "les.machine", + "indy", + les.machine ); + + testcases[tc++] = new TestCase( SECTION, + "les.hobby", + "yodeling", + les.hobby ); + + testcases[tc++] = new TestCase( SECTION, + "les.equpment", + void 0, + les.equipment ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_2.js b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_2.js new file mode 100644 index 00000000000..1300ed30994 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_2.js @@ -0,0 +1,122 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: proto_2.js + Section: + Description: new PrototypeObject + + This tests Object Hierarchy and Inheritance, as described in the document + Object Hierarchy and Inheritance in JavaScript, last modified on 12/18/97 + 15:19:34 on http://devedge.netscape.com/. Current URL: + http://devedge.netscape.com/docs/manuals/communicator/jsobj/contents.htm + + This tests the syntax ObjectName.prototype = new PrototypeObject using the + Employee example in the document referenced above. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "proto_2"; + var VERSION = "JS1_3"; + var TITLE = "new PrototypeObject"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + +function Employee () { + this.name = ""; + this.dept = "general"; +} +function Manager () { + this.reports = []; +} +Manager.prototype = new Employee(); + +function WorkerBee () { + this.projects = new Array(); +} + +WorkerBee.prototype = new Employee; + +function SalesPerson () { + this.dept = "sales"; + this.quota = 100; +} +SalesPerson.prototype = new WorkerBee; + +function Engineer () { + this.dept = "engineering"; + this.machine = ""; +} +Engineer.prototype = new WorkerBee; + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + + var employee = new Employee(); + var manager = new Manager(); + var workerbee = new WorkerBee(); + var salesperson = new SalesPerson(); + var engineer = new Engineer(); + + testcases[tc++] = new TestCase( SECTION, + "employee.__proto__ == Employee.prototype", + true, + employee.__proto__ == Employee.prototype ); + + testcases[tc++] = new TestCase( SECTION, + "manager.__proto__ == Manager.prototype", + true, + manager.__proto__ == Manager.prototype ); + + testcases[tc++] = new TestCase( SECTION, + "workerbee.__proto__ == WorkerBee.prototype", + true, + workerbee.__proto__ == WorkerBee.prototype ); + + testcases[tc++] = new TestCase( SECTION, + "salesperson.__proto__ == SalesPerson.prototype", + true, + salesperson.__proto__ == SalesPerson.prototype ); + + testcases[tc++] = new TestCase( SECTION, + "engineer.__proto__ == Engineer.prototype", + true, + engineer.__proto__ == Engineer.prototype ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_3.js b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_3.js new file mode 100644 index 00000000000..61fa03395dc --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_3.js @@ -0,0 +1,103 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: proto_3.js + Section: + Description: Adding properties to an instance + + This tests Object Hierarchy and Inheritance, as described in the document + Object Hierarchy and Inheritance in JavaScript, last modified on 12/18/97 + 15:19:34 on http://devedge.netscape.com/. Current URL: + http://devedge.netscape.com/docs/manuals/communicator/jsobj/contents.htm + + This tests the syntax ObjectName.prototype = new PrototypeObject using the + Employee example in the document referenced above. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "proto_3"; + var VERSION = "JS1_3"; + var TITLE = "Adding properties to an Instance"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + +function Employee () { + this.name = ""; + this.dept = "general"; +} +function Manager () { + this.reports = []; +} +Manager.prototype = new Employee(); + +function WorkerBee () { + this.projects = new Array(); +} + +WorkerBee.prototype = new Employee(); + +function SalesPerson () { + this.dept = "sales"; + this.quota = 100; +} +SalesPerson.prototype = new WorkerBee(); + +function Engineer () { + this.dept = "engineering"; + this.machine = ""; +} +Engineer.prototype = new WorkerBee(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + var jim = new Employee(); + var pat = new Employee(); + + jim.bonus = 300; + + testcases[tc++] = new TestCase( SECTION, + "jim = new Employee(); jim.bonus = 300; jim.bonus", + 300, + jim.bonus ); + + + testcases[tc++] = new TestCase( SECTION, + "pat = new Employee(); pat.bonus", + void 0, + pat.bonus ); + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_4.js b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_4.js new file mode 100644 index 00000000000..2006f761483 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_4.js @@ -0,0 +1,156 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: proto_4.js + Section: + Description: new PrototypeObject + + This tests Object Hierarchy and Inheritance, as described in the document + Object Hierarchy and Inheritance in JavaScript, last modified on 12/18/97 + 15:19:34 on http://devedge.netscape.com/. Current URL: + http://devedge.netscape.com/docs/manuals/communicator/jsobj/contents.htm + + This tests the syntax ObjectName.prototype = new PrototypeObject using the + Employee example in the document referenced above. + + If you add a property to an object in the prototype chain, instances of + objects that derive from that prototype should inherit that property, even + if they were instatiated after the property was added to the prototype object. + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "proto_3"; + var VERSION = "JS1_3"; + var TITLE = "Adding properties to the prototype"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + +function Employee () { + this.name = ""; + this.dept = "general"; +} +function Manager () { + this.reports = []; +} +Manager.prototype = new Employee(); + +function WorkerBee () { + this.projects = new Array(); +} + +WorkerBee.prototype = new Employee(); + +function SalesPerson () { + this.dept = "sales"; + this.quota = 100; +} +SalesPerson.prototype = new WorkerBee(); + +function Engineer () { + this.dept = "engineering"; + this.machine = ""; +} +Engineer.prototype = new WorkerBee(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + + var jim = new Employee(); + var terry = new Engineer(); + var sean = new SalesPerson(); + var wally = new Manager(); + + Employee.prototype.specialty = "none"; + + var pat = new Employee(); + var leslie = new Engineer(); + var bubbles = new SalesPerson(); + var furry = new Manager(); + + Engineer.prototype.specialty = "code"; + + var chris = new Engineer(); + + + testcases[tc++] = new TestCase( SECTION, + "jim = new Employee(); jim.specialty", + "none", + jim.specialty ); + + testcases[tc++] = new TestCase( SECTION, + "terry = new Engineer(); terry.specialty", + "code", + terry.specialty ); + + testcases[tc++] = new TestCase( SECTION, + "sean = new SalesPerson(); sean.specialty", + "none", + sean.specialty ); + + testcases[tc++] = new TestCase( SECTION, + "wally = new Manager(); wally.specialty", + "none", + wally.specialty ); + + testcases[tc++] = new TestCase( SECTION, + "furry = new Manager(); furry.specialty", + "none", + furry.specialty ); + + testcases[tc++] = new TestCase( SECTION, + "pat = new Employee(); pat.specialty", + "none", + pat.specialty ); + + testcases[tc++] = new TestCase( SECTION, + "leslie = new Engineer(); leslie.specialty", + "code", + leslie.specialty ); + + testcases[tc++] = new TestCase( SECTION, + "bubbles = new SalesPerson(); bubbles.specialty", + "none", + bubbles.specialty ); + + + testcases[tc++] = new TestCase( SECTION, + "chris = new Employee(); chris.specialty", + "code", + chris.specialty ); + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_5.js b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_5.js new file mode 100644 index 00000000000..4c84d331d4f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_5.js @@ -0,0 +1,146 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: proto_5.js + Section: + Description: Logical OR || in Constructors + + This tests Object Hierarchy and Inheritance, as described in the document + Object Hierarchy and Inheritance in JavaScript, last modified on 12/18/97 + 15:19:34 on http://devedge.netscape.com/. Current URL: + http://devedge.netscape.com/docs/manuals/communicator/jsobj/contents.htm + + This tests the syntax ObjectName.prototype = new PrototypeObject using the + Employee example in the document referenced above. + + This tests the logical OR opererator || syntax in constructors. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "proto_5"; + var VERSION = "JS1_3"; + var TITLE = "Logical OR || in Constructors"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + +function Employee ( name, dept ) { + this.name = name || ""; + this.dept = dept || "general"; +} +function Manager () { + this.reports = []; +} +Manager.prototype = new Employee(); + +function WorkerBee ( projs ) { + this.projects = projs || new Array(); +} +WorkerBee.prototype = new Employee(); + +function SalesPerson () { + this.dept = "sales"; + this.quota = 100; +} +SalesPerson.prototype = new WorkerBee(); + +function Engineer ( machine ) { + this.dept = "engineering"; + this.machine = machine || ""; +} +Engineer.prototype = new WorkerBee(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + + + var pat = new Engineer( "indy" ); + + var les = new Engineer(); + + testcases[tc++] = new TestCase( SECTION, + "var pat = new Engineer(\"indy\"); pat.name", + "", + pat.name ); + + testcases[tc++] = new TestCase( SECTION, + "pat.dept", + "engineering", + pat.dept ); + + testcases[tc++] = new TestCase( SECTION, + "pat.projects.length", + 0, + pat.projects.length ); + + testcases[tc++] = new TestCase( SECTION, + "pat.machine", + "indy", + pat.machine ); + + testcases[tc++] = new TestCase( SECTION, + "pat.__proto__ == Engineer.prototype", + true, + pat.__proto__ == Engineer.prototype ); + + testcases[tc++] = new TestCase( SECTION, + "var les = new Engineer(); les.name", + "", + les.name ); + + testcases[tc++] = new TestCase( SECTION, + "les.dept", + "engineering", + les.dept ); + + testcases[tc++] = new TestCase( SECTION, + "les.projects.length", + 0, + les.projects.length ); + + testcases[tc++] = new TestCase( SECTION, + "les.machine", + "", + les.machine ); + + testcases[tc++] = new TestCase( SECTION, + "les.__proto__ == Engineer.prototype", + true, + les.__proto__ == Engineer.prototype ); + + + test(); \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_6.js b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_6.js new file mode 100644 index 00000000000..15d4bdd1eac --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_6.js @@ -0,0 +1,171 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: proto_6.js + Section: + Description: Logical OR || in constructors + + This tests Object Hierarchy and Inheritance, as described in the document + Object Hierarchy and Inheritance in JavaScript, last modified on 12/18/97 + 15:19:34 on http://devedge.netscape.com/. Current URL: + http://devedge.netscape.com/docs/manuals/communicator/jsobj/contents.htm + + This tests the syntax ObjectName.prototype = new PrototypeObject using the + Employee example in the document referenced above. + + This tests the logical OR opererator || syntax in constructors. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "proto_6"; + var VERSION = "JS1_3"; + var TITLE = "Logical OR || in constructors"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + +function Employee ( name, dept ) { + this.name = name || ""; + this.dept = dept || "general"; +} +function Manager () { + this.reports = []; +} +Manager.prototype = new Employee(); + +function WorkerBee ( name, dept, projs ) { + this.base = Employee; + this.base( name, dept) + this.projects = projs || new Array(); +} + +WorkerBee.prototype = new Employee(); + +function SalesPerson () { + this.dept = "sales"; + this.quota = 100; +} +SalesPerson.prototype = new WorkerBee(); + +function Engineer ( name, projs, machine ) { + this.base = WorkerBee; + this.base( name, "engineering", projs ) + this.machine = machine || ""; +} +Engineer.prototype = new WorkerBee(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + + var pat = new Engineer( "Toonces, Pat", + ["SpiderMonkey", "Rhino"], + "indy" ); + + var les = new WorkerBee( "Morris, Les", + "Training", + ["Hippo"] ) + + var terry = new Employee( "Boomberi, Terry", + "Marketing" ); + + // Pat, the Engineer + + testcases[tc++] = new TestCase( SECTION, + "pat.name", + "Toonces, Pat", + pat.name ); + + testcases[tc++] = new TestCase( SECTION, + "pat.dept", + "engineering", + pat.dept ); + + testcases[tc++] = new TestCase( SECTION, + "pat.projects.length", + 2, + pat.projects.length ); + + testcases[tc++] = new TestCase( SECTION, + "pat.projects[0]", + "SpiderMonkey", + pat.projects[0] ); + + testcases[tc++] = new TestCase( SECTION, + "pat.projects[1]", + "Rhino", + pat.projects[1] ); + + testcases[tc++] = new TestCase( SECTION, + "pat.machine", + "indy", + pat.machine ); + + + // Les, the WorkerBee + + testcases[tc++] = new TestCase( SECTION, + "les.name", + "Morris, Les", + les.name ); + + testcases[tc++] = new TestCase( SECTION, + "les.dept", + "Training", + les.dept ); + + testcases[tc++] = new TestCase( SECTION, + "les.projects.length", + 1, + les.projects.length ); + + testcases[tc++] = new TestCase( SECTION, + "les.projects[0]", + "Hippo", + les.projects[0] ); + + // Terry, the Employee + testcases[tc++] = new TestCase( SECTION, + "terry.name", + "Boomberi, Terry", + terry.name ); + + testcases[tc++] = new TestCase( SECTION, + "terry.dept", + "Marketing", + terry.dept ); + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_7.js b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_7.js new file mode 100644 index 00000000000..207fa171e68 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_7.js @@ -0,0 +1,125 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: proto_7.js + Section: + Description: Adding Properties to the Prototype Object + + This tests Object Hierarchy and Inheritance, as described in the document + Object Hierarchy and Inheritance in JavaScript, last modified on 12/18/97 + 15:19:34 on http://devedge.netscape.com/. Current URL: + http://devedge.netscape.com/docs/manuals/communicator/jsobj/contents.htm + + This tests the syntax ObjectName.prototype = new PrototypeObject using the + Employee example in the document referenced above. + + This tests + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "proto_6"; + var VERSION = "JS1_3"; + var TITLE = "Adding properties to the Prototype Object"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + +function Employee ( name, dept ) { + this.name = name || ""; + this.dept = dept || "general"; +} +function WorkerBee ( name, dept, projs ) { + this.base = Employee; + this.base( name, dept) + this.projects = projs || new Array(); +} +WorkerBee.prototype = new Employee(); + +function Engineer ( name, projs, machine ) { + this.base = WorkerBee; + this.base( name, "engineering", projs ) + this.machine = machine || ""; +} +// Engineer.prototype = new WorkerBee(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + var pat = new Engineer( "Toonces, Pat", + ["SpiderMonkey", "Rhino"], + "indy" ); + + Employee.prototype.specialty = "none"; + + + // Pat, the Engineer + + testcases[tc++] = new TestCase( SECTION, + "pat.name", + "Toonces, Pat", + pat.name ); + + testcases[tc++] = new TestCase( SECTION, + "pat.dept", + "engineering", + pat.dept ); + + testcases[tc++] = new TestCase( SECTION, + "pat.projects.length", + 2, + pat.projects.length ); + + testcases[tc++] = new TestCase( SECTION, + "pat.projects[0]", + "SpiderMonkey", + pat.projects[0] ); + + testcases[tc++] = new TestCase( SECTION, + "pat.projects[1]", + "Rhino", + pat.projects[1] ); + + testcases[tc++] = new TestCase( SECTION, + "pat.machine", + "indy", + pat.machine ); + + testcases[tc++] = new TestCase( SECTION, + "pat.specialty", + void 0, + pat.specialty ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_8.js b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_8.js new file mode 100644 index 00000000000..fa92d7080b6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_8.js @@ -0,0 +1,123 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: proto_8.js + Section: + Description: Adding Properties to the Prototype Object + + This tests Object Hierarchy and Inheritance, as described in the document + Object Hierarchy and Inheritance in JavaScript, last modified on 12/18/97 + 15:19:34 on http://devedge.netscape.com/. Current URL: + http://devedge.netscape.com/docs/manuals/communicator/jsobj/contents.htm + + This tests the syntax ObjectName.prototype = new PrototypeObject using the + Employee example in the document referenced above. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "proto_8"; + var VERSION = "JS1_3"; + var TITLE = "Adding Properties to the Prototype Object"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + +function Employee ( name, dept ) { + this.name = name || ""; + this.dept = dept || "general"; +} +function WorkerBee ( name, dept, projs ) { + this.base = Employee; + this.base( name, dept) + this.projects = projs || new Array(); +} +WorkerBee.prototype = new Employee(); + +function Engineer ( name, projs, machine ) { + this.base = WorkerBee; + this.base( name, "engineering", projs ) + this.machine = machine || ""; +} +Engineer.prototype = new WorkerBee(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + var pat = new Engineer( "Toonces, Pat", + ["SpiderMonkey", "Rhino"], + "indy" ); + + Employee.prototype.specialty = "none"; + + + // Pat, the Engineer + + testcases[tc++] = new TestCase( SECTION, + "pat.name", + "Toonces, Pat", + pat.name ); + + testcases[tc++] = new TestCase( SECTION, + "pat.dept", + "engineering", + pat.dept ); + + testcases[tc++] = new TestCase( SECTION, + "pat.projects.length", + 2, + pat.projects.length ); + + testcases[tc++] = new TestCase( SECTION, + "pat.projects[0]", + "SpiderMonkey", + pat.projects[0] ); + + testcases[tc++] = new TestCase( SECTION, + "pat.projects[1]", + "Rhino", + pat.projects[1] ); + + testcases[tc++] = new TestCase( SECTION, + "pat.machine", + "indy", + pat.machine ); + + testcases[tc++] = new TestCase( SECTION, + "pat.specialty", + "none", + pat.specialty ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_9.js b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_9.js new file mode 100644 index 00000000000..93989ca2eac --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/inherit/proto_9.js @@ -0,0 +1,101 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: proto_9.js + Section: + Description: Local versus Inherited Values + + This tests Object Hierarchy and Inheritance, as described in the document + Object Hierarchy and Inheritance in JavaScript, last modified on 12/18/97 + 15:19:34 on http://devedge.netscape.com/. Current URL: + http://devedge.netscape.com/docs/manuals/communicator/jsobj/contents.htm + + This tests the syntax ObjectName.prototype = new PrototypeObject using the + Employee example in the document referenced above. + + This tests + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "proto_9"; + var VERSION = "JS1_3"; + var TITLE = "Local versus Inherited Values"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + +function Employee ( name, dept ) { + this.name = name || ""; + this.dept = dept || "general"; +} +function WorkerBee ( name, dept, projs ) { + this.projects = new Array(); +} +WorkerBee.prototype = new Employee(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + var pat = new WorkerBee() + + Employee.prototype.specialty = "none"; + Employee.prototype.name = "Unknown"; + + Array.prototype.getClass = Object.prototype.toString; + + // Pat, the WorkerBee + + testcases[tc++] = new TestCase( SECTION, + "pat.name", + "", + pat.name ); + + testcases[tc++] = new TestCase( SECTION, + "pat.dept", + "general", + pat.dept ); + + testcases[tc++] = new TestCase( SECTION, + "pat.projects.getClass", + "[object Array]", + pat.projects.getClass() ); + + testcases[tc++] = new TestCase( SECTION, + "pat.projects.length", + 0, + pat.projects.length ); + + test(); \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/jsref.js b/Source/JavaScriptCore/tests/mozilla/js1_3/jsref.js new file mode 100644 index 00000000000..dd611a7bbdb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/jsref.js @@ -0,0 +1,198 @@ +var completed = false; +var testcases; + +SECTION = ""; +VERSION = ""; + +BUGNUMBER =""; +var EXCLUDE = ""; + +TZ_DIFF = -8; + +var TT = ""; +var TT_ = ""; +var BR = ""; +var NBSP = " "; +var CR = "\n"; +var FONT = ""; +var FONT_ = ""; +var FONT_RED = ""; +var FONT_GREEN = ""; +var B = ""; +var B_ = "" +var H2 = ""; +var H2_ = ""; +var HR = ""; +var DEBUG = false; + +version(130); + +var PASSED = " PASSED!" +var FAILED = " FAILED! expected: "; + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +function TestCase( n, d, e, a ) { + this.name = n; + this.description = d; + this.expect = e; + this.actual = a; + this.passed = true; + this.reason = ""; + + this.bugnumber = BUGNUMBER; + + this.passed = getTestCaseResult( this.expect, this.actual ); + if ( DEBUG ) { + writeLineToLog( "added " + this.description ); + } +} +function startTest() { + // JavaScript 1.3 is supposed to be compliant ecma version 1.0 + if ( VERSION == "ECMA_1" ) { + version ( "130" ); + } + if ( VERSION == "JS_1.3" ) { + version ( "130" ); + } + if ( VERSION == "JS_1.2" ) { + version ( "120" ); + } + if ( VERSION == "JS_1.1" ) { + version ( "110" ); + } + // for ecma version 2.0, we will leave the javascript version to + // the default ( for now ). +} +function getTestCaseResult( expect, actual ) { + // because ( NaN == NaN ) always returns false, need to do + // a special compare to see if we got the right result. + if ( actual != actual ) { + if ( typeof actual == "object" ) { + actual = "NaN object"; + } else { + actual = "NaN number"; + } + } + if ( expect != expect ) { + if ( typeof expect == "object" ) { + expect = "NaN object"; + } else { + expect = "NaN number"; + } + } + + var passed = ( expect == actual ) ? true : false; + + // if both objects are numbers + // need to replace w/ IEEE standard for rounding + if ( !passed + && typeof(actual) == "number" + && typeof(expect) == "number" + ) { + if ( Math.abs(actual-expect) < 0.0000001 ) { + passed = true; + } + } + + // verify type is the same + if ( typeof(expect) != typeof(actual) ) { + passed = false; + } + + return passed; +} +function writeTestCaseResult( expect, actual, string ) { + var passed = getTestCaseResult( expect, actual ); + writeFormattedResult( expect, actual, string, passed ); + return passed; +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = TT + string ; + + for ( k = 0; + k < (60 - string.length >= 0 ? 60 - string.length : 5) ; + k++ ) { + } + + s += B ; + s += ( passed ) ? FONT_GREEN + NBSP + PASSED : FONT_RED + NBSP + FAILED + expect + TT_ ; + + writeLineToLog( s + FONT_ + B_ + TT_ ); + + return passed; +} + +function writeLineToLog( string ) { + print( string + BR + CR ); +} +function writeHeaderToLog( string ) { + print( H2 + string + H2_ ); +} +function stopTest() +{ + var sizeTag = "<#TEST CASES SIZE>"; + var doneTag = "<#TEST CASES DONE>"; + var beginTag = "<#TEST CASE "; + var endTag = ">"; + + print(sizeTag); + print(testcases.length); + for (tc = 0; tc < testcases.length; tc++) + { + print(beginTag + 'PASSED' + endTag); + print(testcases[tc].passed); + print(beginTag + 'NAME' + endTag); + print(testcases[tc].name); + print(beginTag + 'EXPECTED' + endTag); + print(testcases[tc].expect); + print(beginTag + 'ACTUAL' + endTag); + print(testcases[tc].actual); + print(beginTag + 'DESCRIPTION' + endTag); + print(testcases[tc].description); + print(beginTag + 'REASON' + endTag); + print(( testcases[tc].passed ) ? "" : "wrong value "); + print(beginTag + 'BUGNUMBER' + endTag); + print( BUGNUMBER ); + } + print(doneTag); + + print( HR ); + gc(); +} +function getFailedCases() { + for ( var i = 0; i < testcases.length; i++ ) { + if ( ! testcases[i].passed ) { + print( testcases[i].description +" = " +testcases[i].actual +" expected: "+ testcases[i].expect ); + } + } +} +function err( msg, page, line ) { + testcases[tc].actual = "error"; + testcases[tc].reason = msg; + writeTestCaseResult( testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual + + ": " + testcases[tc].reason ); + stopTest(); + return true; +} + +function Enumerate ( o ) { + var p; + for ( p in o ) { + writeLineToLog( p +": " + o[p] ); + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/regress/delete-001.js b/Source/JavaScriptCore/tests/mozilla/js1_3/regress/delete-001.js new file mode 100644 index 00000000000..e2f4332e81e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/regress/delete-001.js @@ -0,0 +1,79 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: delete-001.js + Section: regress + Description: + + Regression test for + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=108736 + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "JS1_2"; + var VERSION = "JS1_2"; + var TITLE = "The variable statment"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + // delete all properties of the global object + // per ecma, this does not affect variables in the global object declared + // with var or functions + + for ( p in this ) { + delete p; + } + + var result =""; + + for ( p in this ) { + result += String( p ); + } + + // not too picky here... just want to make sure we didn't crash or something + + testcases[testcases.length] = new TestCase( SECTION, + "delete all properties of the global object", + "PASSED", + result == "" ? "FAILED" : "PASSED" ); + + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/regress/function-001-n.js b/Source/JavaScriptCore/tests/mozilla/js1_3/regress/function-001-n.js new file mode 100644 index 00000000000..7d42ce217f3 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/regress/function-001-n.js @@ -0,0 +1,74 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + * File Name: boolean-001.js + * Description: + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=99232 + * + * eval("function f(){}function g(){}") at top level is an error for JS1.2 + * and above (missing ; between named function expressions), but declares f + * and g as functions below 1.2. + * + * Fails to produce error regardless of version: + * js> version(100) + * 120 + * js> eval("function f(){}function g(){}") + * js> version(120); + * 100 + * js> eval("function f(){}function g(){}") + * js> + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "function-001.js"; + var VERSION = "JS_1.3"; + var TITLE = "functions not separated by semicolons are errors in version 120 and higher"; + var BUGNUMBER="10278"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( + SECTION, + "eval(\"function f(){}function g(){}\")", + undefined, + eval("function f(){}function g(){}") ); + + test(); + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/regress/function-002.js b/Source/JavaScriptCore/tests/mozilla/js1_3/regress/function-002.js new file mode 100644 index 00000000000..d3d1d8522f7 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/regress/function-002.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: function-002.js + Section: + Description: + + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=249579 + + function definitions in conditional statements should be allowed. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "function-002"; + var VERSION = "JS1_3"; + var TITLE = "Regression test for 249579"; + var BUGNUMBER="249579"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( + SECTION, + "0?function(){}:0", + 0, + 0?function(){}:0 ); + + + bar = true; + foo = bar ? function () { return true; } : function() { return false; }; + + testcases[tc++] = new TestCase( + SECTION, + "bar = true; foo = bar ? function () { return true; } : function() { return false; }; foo()", + true, + foo() ); + + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/regress/in-001.js b/Source/JavaScriptCore/tests/mozilla/js1_3/regress/in-001.js new file mode 100644 index 00000000000..f524870840c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/regress/in-001.js @@ -0,0 +1,66 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: in-001.js + Section: + Description: + + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=196109 + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "in-001"; + var VERSION = "JS1_3"; + var TITLE = "Regression test for 196109"; + var BUGNUMBER="196109"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + o = {}; + o.foo = 'sil'; + + testcases[tc++] = new TestCase( + SECTION, + "\"foo\" in o", + true, + "foo" in o ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/regress/new-001.js b/Source/JavaScriptCore/tests/mozilla/js1_3/regress/new-001.js new file mode 100644 index 00000000000..2868ecabde2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/regress/new-001.js @@ -0,0 +1,120 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: new-001.js + Section: + Description: + + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=76103 + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "new-001"; + var VERSION = "JS1_3"; + var TITLE = "new-001"; + var BUGNUMBER="31567"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + function Test_One (x) { + this.v = x+1; + return x*2 + } + + function Test_Two( x, y ) { + this.v = x; + return y; + } + + testcases[tc++] = new TestCase( + SECTION, + "Test_One(18)", + 36, + Test_One(18) ); + + testcases[tc++] = new TestCase( + SECTION, + "new Test_One(18)", + "[object Object]", + new Test_One(18) +"" ); + + testcases[tc++] = new TestCase( + SECTION, + "new Test_One(18).v", + 19, + new Test_One(18).v ); + + testcases[tc++] = new TestCase( + SECTION, + "Test_Two(2,7)", + 7, + Test_Two(2,7) ); + + testcases[tc++] = new TestCase( + SECTION, + "new Test_Two(2,7)", + "[object Object]", + new Test_Two(2,7) +"" ); + + testcases[tc++] = new TestCase( + SECTION, + "new Test_Two(2,7).v", + 2, + new Test_Two(2,7).v ); + + testcases[tc++] = new TestCase( + SECTION, + "new (Function)(\"x\", \"return x+3\")(5,6)", + 8, + new (Function)("x","return x+3")(5,6) ); + + testcases[tc++] = new TestCase( + SECTION, + "new new Test_Two(String, 2).v(0123)", + "83", + new new Test_Two(String, 2).v(0123) +""); + + testcases[tc++] = new TestCase( + SECTION, + "new new Test_Two(String, 2).v(0123).length", + 2, + new new Test_Two(String, 2).v(0123).length ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/regress/switch-001.js b/Source/JavaScriptCore/tests/mozilla/js1_3/regress/switch-001.js new file mode 100644 index 00000000000..47d8a44f98b --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/regress/switch-001.js @@ -0,0 +1,80 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + File Name: switch-001.js + Section: + Description: + + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=315767 + + Verify that switches do not use strict equality in + versions of JavaScript < 1.4. It's now been decided that + we won't put in version switches, so all switches will + be ECMA. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "switch-001"; + var VERSION = "JS1_3"; + var TITLE = "switch-001"; + var BUGNUMBER="315767"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + result = "fail: did not enter switch"; + + switch (true) { + case 1: + result = "fail: version 130 should force strict equality"; + break; + case true: + result = "pass"; + break; + default: + result = "fail: evaluated default statement"; + } + + testcases[tc++] = new TestCase( + SECTION, + "switch / case should use strict equality in version of JS < 1.4", + "pass", + result ); + + test(); + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/shell.js b/Source/JavaScriptCore/tests/mozilla/js1_3/shell.js new file mode 100644 index 00000000000..dc0ec4ef35e --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/shell.js @@ -0,0 +1,163 @@ +var completed = false; +var testcases; +var tc = 0; + +SECTION = ""; +VERSION = ""; +BUGNUMBER = ""; +DEBUG = false; + +var GLOBAL = "[object global]"; +var PASSED = " PASSED!" +var FAILED = " FAILED! expected: "; + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} + +/* wrapper for test cas constructor that doesn't require the SECTION + * argument. + */ + +function AddTestCase( description, expect, actual ) { + testcases[tc++] = new TestCase( SECTION, description, expect, actual ); +} + +function TestCase( n, d, e, a ) { + this.name = n; + this.description = d; + this.expect = e; + this.actual = a; + this.passed = true; + this.reason = ""; + this.bugnumber = BUGNUMBER; + + this.passed = getTestCaseResult( this.expect, this.actual ); + if ( DEBUG ) { + writeLineToLog( "added " + this.description ); + } +} +function startTest() { + // JavaScript 1.3 is supposed to be compliant ecma version 1.0 + if ( VERSION == "ECMA_1" ) { + version ( 130 ); + } + if ( VERSION == "JS_1.3" ) { + version ( 130 ); + } + if ( VERSION == "JS_1.2" ) { + version ( 120 ); + } + if ( VERSION == "JS_1.1" ) { + version ( 110 ); + } + // for ecma version 2.0, we will leave the javascript version to + // the default ( for now ). + + if ( BUGNUMBER ) { + writeLineToLog ("BUGNUMBER: " + BUGNUMBER ); + } + + testcases = new Array(); + tc = 0; +} +function getTestCaseResult( expect, actual ) { + // because ( NaN == NaN ) always returns false, need to do + // a special compare to see if we got the right result. + if ( actual != actual ) { + if ( typeof actual == "object" ) { + actual = "NaN object"; + } else { + actual = "NaN number"; + } + } + if ( expect != expect ) { + if ( typeof expect == "object" ) { + expect = "NaN object"; + } else { + expect = "NaN number"; + } + } + + var passed = ( expect == actual ) ? true : false; + + // if both objects are numbers + // need to replace w/ IEEE standard for rounding + if ( !passed + && typeof(actual) == "number" + && typeof(expect) == "number" + ) { + if ( Math.abs(actual-expect) < 0.0000001 ) { + passed = true; + } + } + + // verify type is the same + if ( typeof(expect) != typeof(actual) ) { + passed = false; + } + + return passed; +} +function writeTestCaseResult( expect, actual, string ) { + var passed = getTestCaseResult( expect, actual ); + writeFormattedResult( expect, actual, string, passed ); + return passed; +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = TT + string ; + + for ( k = 0; + k < (60 - string.length >= 0 ? 60 - string.length : 5) ; + k++ ) { + } + + s += B ; + s += ( passed ) ? FONT_GREEN + NBSP + PASSED : FONT_RED + NBSP + FAILED + expect + TT_ ; + + writeLineToLog( s + FONT_ + B_ + TT_ ); + + return passed; +} +/* + * Begin printing functions. These functions use the shell's + * print function. When running tests in the browser, these + * functions, override these functions with functions that use + * document.write. + */ + +function writeTestCaseResult( expect, actual, string ) { + var passed = getTestCaseResult( expect, actual ); + writeFormattedResult( expect, actual, string, passed ); + return passed; +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = string ; + s += ( passed ) ? PASSED : FAILED + expect; + writeLineToLog( s); + return passed; +} +function writeLineToLog( string ) { + print( string ); +} +function writeHeaderToLog( string ) { + print( string ); +} +/* end of print functions */ + +function stopTest() { + var gc; + if ( gc != undefined ) { + gc(); + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_3/template.js b/Source/JavaScriptCore/tests/mozilla/js1_3/template.js new file mode 100644 index 00000000000..19588324e2f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_3/template.js @@ -0,0 +1,44 @@ +/** + File Name: switch_1.js + Section: + Description: + + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=315767 + + Verify that switches do not use strict equality in + versions of JavaScript < 1.4 + + Author: christine@netscape.com + Date: 12 november 1997 +*/ +// onerror = err; + + var SECTION = "script_1; + var VERSION = "JS1_3"; + var TITLE = "NativeScript"; + var BUGNUMBER="31567"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + + testcases[tc++] = new TestCase( SECTION, + + + test(); +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_4/Eval/eval-001.js b/Source/JavaScriptCore/tests/mozilla/js1_4/Eval/eval-001.js new file mode 100644 index 00000000000..38f9d048483 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_4/Eval/eval-001.js @@ -0,0 +1,75 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + * File Name: eval-001.js + * Original Description: (SEE REVISED DESCRIPTION FURTHER BELOW) + * + * The global eval function may not be accessed indirectly and then called. + * This feature will continue to work in JavaScript 1.3 but will result in an + * error in JavaScript 1.4. This restriction is also in place for the With and + * Closure constructors. + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=324451 + * + * Author: christine@netscape.com + * Date: 11 August 1998 + * + * + * REVISION: 05 February 2001 + * Author: pschwartau@netscape.com + * + * Indirect eval IS NOT ILLEGAL per ECMA3!!! See + * + * http://bugzilla.mozilla.org/show_bug.cgi?id=38512 + * + * ------- Additional Comments From Brendan Eich 2001-01-30 17:12 ------- + * ECMA-262 Edition 3 doesn't require implementations to throw EvalError, + * see the short, section-less Chapter 16. It does say an implementation that + * doesn't throw EvalError must allow assignment to eval and indirect calls + * of the evalnative method. + * + */ + var SECTION = "eval-001.js"; + var VERSION = "JS1_4"; + var TITLE = "Calling eval indirectly should NOT fail in version 140"; + var BUGNUMBER="38512"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + + var MY_EVAL = eval; + var RESULT = ""; + var EXPECT = "abcdefg"; + + MY_EVAL( "RESULT = EXPECT" ); + + testcases[tc++] = new TestCase( + SECTION, + "Call eval indirectly", + EXPECT, + RESULT ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_4/Eval/eval-002.js b/Source/JavaScriptCore/tests/mozilla/js1_4/Eval/eval-002.js new file mode 100644 index 00000000000..159a9bdf0be --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_4/Eval/eval-002.js @@ -0,0 +1,80 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + * File Name: eval-002.js + * Description: (SEE REVISED DESCRIPTION FURTHER BELOW) + * + * The global eval function may not be accessed indirectly and then called. + * This feature will continue to work in JavaScript 1.3 but will result in an + * error in JavaScript 1.4. This restriction is also in place for the With and + * Closure constructors. + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=324451 + * + * Author: christine@netscape.com + * Date: 11 August 1998 + * + * + * REVISION: 05 February 2001 + * Author: pschwartau@netscape.com + * + * Indirect eval IS NOT ILLEGAL per ECMA3!!! See + * + * http://bugzilla.mozilla.org/show_bug.cgi?id=38512 + * + * ------- Additional Comments From Brendan Eich 2001-01-30 17:12 ------- + * ECMA-262 Edition 3 doesn't require implementations to throw EvalError, + * see the short, section-less Chapter 16. It does say an implementation that + * doesn't throw EvalError must allow assignment to eval and indirect calls + * of the evalnative method. + * + */ + var SECTION = "eval-002.js"; + var VERSION = "JS1_4"; + var TITLE = "Calling eval indirectly should NOT fail in version 140"; + var BUGNUMBER="38512"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var MY_EVAL = eval; + var RESULT = ""; + var EXPECT = 1 + "testString" + + EvalTest(); + + test(); + + +function EvalTest() +{ + MY_EVAL( "RESULT = EXPECT" ); + + testcases[tc++] = new TestCase( + SECTION, + "Call eval indirectly", + EXPECT, + RESULT ); +} + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_4/Eval/eval-003.js b/Source/JavaScriptCore/tests/mozilla/js1_4/Eval/eval-003.js new file mode 100644 index 00000000000..5c9f1ea394f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_4/Eval/eval-003.js @@ -0,0 +1,85 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + * File Name: eval-003.js + * Description: (SEE REVISED DESCRIPTION FURTHER BELOW) + * + * The global eval function may not be accessed indirectly and then called. + * This feature will continue to work in JavaScript 1.3 but will result in an + * error in JavaScript 1.4. This restriction is also in place for the With and + * Closure constructors. + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=324451 + * + * Author: christine@netscape.com + * Date: 11 August 1998 + * + * + * REVISION: 05 February 2001 + * Author: pschwartau@netscape.com + * + * Indirect eval IS NOT ILLEGAL per ECMA3!!! See + * + * http://bugzilla.mozilla.org/show_bug.cgi?id=38512 + * + * ------- Additional Comments From Brendan Eich 2001-01-30 17:12 ------- + * ECMA-262 Edition 3 doesn't require implementations to throw EvalError, + * see the short, section-less Chapter 16. It does say an implementation that + * doesn't throw EvalError must allow assignment to eval and indirect calls + * of the evalnative method. + * + */ + var SECTION = "eval-003.js"; + var VERSION = "JS1_4"; + var TITLE = "Calling eval indirectly should NOT fail in version 140"; + var BUGNUMBER="38512"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var MY_EVAL = eval; + var RESULT = ""; + var EXPECT= ""; + var h = function f(x,y){var g = function(z){return Math.exp(z);}; return g(x+y);}; + + + new EvalTest(); + + test(); + +function EvalTest() +{ + with( this ) + { + MY_EVAL( "RESULT = h(-1, 1)" ); + EXPECT = 1; //The base e to the power (-1 + 1), i.e. the power 0, equals 1 .... + + testcases[tc++] = new TestCase( + SECTION, + "Call eval indirectly", + EXPECT, + RESULT ); + } +} + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_4/Functions/function-001.js b/Source/JavaScriptCore/tests/mozilla/js1_4/Functions/function-001.js new file mode 100644 index 00000000000..fd2ceb0c3da --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_4/Functions/function-001.js @@ -0,0 +1,106 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + * File Name: function-001.js + * Description: + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=324455 + * + * Earlier versions of JavaScript supported access to the arguments property + * of the function object. This property held the arguments to the function. + * function f() { + * return f.arguments[0]; // deprecated + * } + * var x = f(3); // x will be 3 + * + * This feature is not a part of the final ECMA standard. Instead, scripts + * should simply use just "arguments": + * + * function f() { + * return arguments[0]; // okay + * } + * + * var x = f(3); // x will be 3 + * + * Again, this feature was motivated by performance concerns. Access to the + * arguments property is not threadsafe, which is of particular concern in + * server environments. Also, the compiler can generate better code for + * functions because it can tell when the arguments are being accessed only by + * name and avoid setting up the arguments object. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "function-001.js"; + var VERSION = "JS1_4"; + var TITLE = "Accessing the arguments property of a function object"; + var BUGNUMBER="324455"; + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( + SECTION, + "return function.arguments", + "P", + TestFunction_2("P", "A","S","S")[0] +""); + + + testcases[tc++] = new TestCase( + SECTION, + "return arguments", + "P", + TestFunction_1( "P", "A", "S", "S" )[0] +""); + + testcases[tc++] = new TestCase( + SECTION, + "return arguments when function contains an arguments property", + "PASS", + TestFunction_3( "P", "A", "S", "S" ) +""); + + testcases[tc++] = new TestCase( + SECTION, + "return function.arguments when function contains an arguments property", + "PASS", + TestFunction_4( "P", "A", "S", "S" ) +""); + + test(); + + function TestFunction_1( a, b, c, d, e ) { + return arguments; + } + + function TestFunction_2( a, b, c, d, e ) { + return TestFunction_2.arguments; + } + + function TestFunction_3( a, b, c, d, e ) { + var arguments = "PASS"; + return arguments; + } + + function TestFunction_4( a, b, c, d, e ) { + var arguments = "FAIL"; + return Array.prototype.join.call(TestFunction_4.arguments, ""); + } + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/date-001-n.js b/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/date-001-n.js new file mode 100644 index 00000000000..d6f9f59b698 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/date-001-n.js @@ -0,0 +1,55 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + * File Name: date-001-n.js + * Description: + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=299903 + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "date-001-n.js"; + var VERSION = "JS1_4"; + var TITLE = "Regression test case for 299903"; + var BUGNUMBER="299903"; + + startTest(); + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + function MyDate() { + this.foo = "bar"; + } + MyDate.prototype = new Date(); + + testcases[tc++] = new TestCase( + SECTION, + "function MyDate() { this.foo = \"bar\"; }; "+ + "MyDate.prototype = new Date(); " + + "new MyDate().toString()", + "error", + new MyDate().toString() ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/function-001.js b/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/function-001.js new file mode 100644 index 00000000000..4fed009526c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/function-001.js @@ -0,0 +1,79 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + * File Name: function-001.js + * Description: + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=325843 + * js> function f(a){var a,b;} + * + * causes an an assert on a null 'sprop' in the 'Variables' function in + * jsparse.c This will crash non-debug build. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "function-001.js"; + var VERSION = "JS1_4"; + var TITLE = "Regression test case for 325843"; + var BUGNUMBER="3258435"; + startTest(); + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + eval("function f1 (a){ var a,b; }"); + + function f2( a ) { var a, b; }; + + testcases[tc++] = new TestCase( + SECTION, + "eval(\"function f1 (a){ var a,b; }\"); "+ + "function f2( a ) { var a, b; }; typeof f1", + "function", + typeof f1 ); + + // force a function decompilation + + testcases[tc++] = new TestCase( + SECTION, + "typeof f1.toString()", + "string", + typeof f1.toString() ); + + testcases[tc++] = new TestCase( + SECTION, + "typeof f2", + "function", + typeof f2 ); + + // force a function decompilation + + testcases[tc++] = new TestCase( + SECTION, + "typeof f2.toString()", + "string", + typeof f2.toString() ); + + test(); + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/function-002.js b/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/function-002.js new file mode 100644 index 00000000000..0476869cd17 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/function-002.js @@ -0,0 +1,123 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + * File Name: function-002.js + * Description: + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=330462 + * js> function f(a){var a,b;} + * + * causes an an assert on a null 'sprop' in the 'Variables' function in + * jsparse.c This will crash non-debug build. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + * REVISED: 04 February 2001 + * (changed the comma expressions from trivial to non-trivial) + * Author: pschwartau@netscape.com + * + * Brendan: "The test seemed to require something that ECMA does not + * guarantee, and that JS1.4 didn't either. For example, given + * + * dec2 = "function f2(){1,2}"; + * + * the engine is free to decompile a function object compiled from this source, + * via Function.prototype.toString(), into some other string that compiles to + * an equivalent function. The engine now eliminates the useless comma expression + * 1,2, giving function f2(){}. This should be legal by the testsuite's lights." + * + */ + var SECTION = "function-002.js"; + var VERSION = "JS1_4"; + var TITLE = "Regression test case for 325843"; + var BUGNUMBER="330462"; + + startTest(); + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + dec1 = "function f1(x,y){++x, --y}"; + dec2 = "function f2(){var y; f1(1,2); y=new Date(); print(y.toString())}"; + + eval(dec1); + eval(dec2); + + testcases[tc++] = new TestCase( + SECTION, + "typeof f1", + "function", + typeof f1 ); + + + // force a function decompilation + testcases[tc++] = new TestCase( + SECTION, + "f1.toString() == dec1", + true, + StripSpaces(f1.toString()) == StripSpaces(dec1)); + + testcases[tc++] = new TestCase( + SECTION, + "typeof f2", + "function", + typeof f2 ); + + // force a function decompilation + + testcases[tc++] = new TestCase( + SECTION, + "f2.toString() == dec2", + true, + StripSpaces(f2.toString()) == StripSpaces(dec2)); + + test(); + + function StripSpaces( s ) { + var strippedString = ""; + for ( var currentChar = 0; currentChar < s.length; currentChar++ ) { + if (!IsWhiteSpace(s.charAt(currentChar))) { + strippedString += s.charAt(currentChar); + } + } + return strippedString; + } + + function IsWhiteSpace( string ) { + var cc = string.charCodeAt(0); + + switch (cc) { + case (0x0009): + case (0x000B): + case (0x000C): + case (0x0020): + case (0x000A): + case (0x000D): + case ( 59 ): // let's strip out semicolons, too + return true; + break; + default: + return false; + } + } + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/function-003.js b/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/function-003.js new file mode 100644 index 00000000000..1cf1ea35c2d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/function-003.js @@ -0,0 +1,77 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + * File Name: function-003.js + * Description: + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=104766 + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "toString-001.js"; + var VERSION = "JS1_4"; + var TITLE = "Regression test case for 104766"; + var BUGNUMBER="310514"; + + startTest(); + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + testcases[tc++] = new TestCase( + SECTION, + "StripSpaces(Array.prototype.concat.toString()).substring(0,17)", + "functionconcat(){", + StripSpaces(Array.prototype.concat.toString()).substring(0,17)); + + test(); + + function StripSpaces( s ) { + for ( var currentChar = 0, strippedString=""; + currentChar < s.length; currentChar++ ) + { + if (!IsWhiteSpace(s.charAt(currentChar))) { + strippedString += s.charAt(currentChar); + } + } + return strippedString; + } + + function IsWhiteSpace( string ) { + var cc = string.charCodeAt(0); + switch (cc) { + case (0x0009): + case (0x000B): + case (0x000C): + case (0x0020): + case (0x000A): + case (0x000D): + case ( 59 ): // let's strip out semicolons, too + return true; + break; + default: + return false; + } + } + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/function-004-n.js b/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/function-004-n.js new file mode 100644 index 00000000000..5b94505f3ad --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/function-004-n.js @@ -0,0 +1,51 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + * File Name: function-004.js + * Description: + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=310502 + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "funtion-004-n.js"; + var VERSION = "JS1_4"; + var TITLE = "Regression test case for 310502"; + var BUGNUMBER="310502"; + + startTest(); + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + var o = {}; + o.call = Function.prototype.call; + + testcases[tc++] = new TestCase( + SECTION, + "var o = {}; o.call = Function.prototype.call; o.call()", + "error", + o.call() ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/regress-7224.js b/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/regress-7224.js new file mode 100644 index 00000000000..b63ecaafed0 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/regress-7224.js @@ -0,0 +1,72 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): +*/ + +/** + * File Name: regress-7224.js + * Reference: js1_2 + * Description: Remove support for the arg + * Author: ** replace with your e-mail address ** + */ + + var SECTION = "regress"; // provide a document reference (ie, ECMA section) + var VERSION = "JS1_4"; // Version of JavaScript or ECMA + var TITLE = "Regression test for bugzilla #7224"; // Provide ECMA section title or a description + var BUGNUMBER = "http://bugzilla.mozilla.org/show_bug.cgi?id=7224"; // Provide URL to bugsplat or bugzilla report + + startTest(); // leave this alone + + /* + * Calls to AddTestCase here. AddTestCase is a function that is defined + * in shell.js and takes three arguments: + * - a string representation of what is being tested + * - the expected result + * - the actual result + * + * For example, a test might look like this: + * + * var zip = /[\d]{5}$/; + * + * AddTestCase( + * "zip = /[\d]{5}$/; \"PO Box 12345 Boston, MA 02134\".match(zip)", // description of the test + * "02134", // expected result + * "PO Box 12345 Boston, MA 02134".match(zip) ); // actual result + * + */ + + var f = new Function( "return arguments.caller" ); + var o = {}; + + o.foo = f; + o.foo("a", "b", "c") + + + AddTestCase( + "var f = new Function( 'return arguments.caller' ); f()", + undefined, + f() ); + + AddTestCase( + "var o = {}; o.foo = f; o.foo('a')", + undefined, + o.foo('a') ); + + test(); // leave this alone. this executes the test cases and + // displays results. diff --git a/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/toString-001-n.js b/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/toString-001-n.js new file mode 100644 index 00000000000..c0753732a15 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_4/Regress/toString-001-n.js @@ -0,0 +1,53 @@ +/* The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ +/** + * File Name: toString-001-n.js + * Description: + * + * Function.prototype.toString is not generic. + * + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "toString-001.js"; + var VERSION = "JS1_4"; + var TITLE = "Regression test case for 310514"; + var BUGNUMBER="310514"; + + startTest(); + + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + + + var o = {}; + o.toString = Function.prototype.toString; + + + testcases[tc++] = new TestCase( + SECTION, + "var o = {}; o.toString = Function.prototype.toString; o.toString();", + "error", + o.toString() ); + + test(); diff --git a/Source/JavaScriptCore/tests/mozilla/js1_4/browser.js b/Source/JavaScriptCore/tests/mozilla/js1_4/browser.js new file mode 100644 index 00000000000..5bbdf7c6b99 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_4/browser.js @@ -0,0 +1,80 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): +*/ + +/* + * JavaScript test library shared functions file for running the tests + * in the browser. Overrides the shell's print function with document.write + * and make everything HTML pretty. + * + * To run the tests in the browser, use the mkhtml.pl script to generate + * html pages that include the shell.js, browser.js (this file), and the + * test js file in script tags. + * + * The source of the page that is generated should look something like this: + * + * + * + */ + +onerror = err; + +function startTest() { + if ( BUGNUMBER ) { + writeLineToLog ("BUGNUMBER: " + BUGNUMBER ); + } + + testcases = new Array(); + tc = 0; +} + +function writeLineToLog( string ) { + document.write( string + "
\n"); +} +function writeHeaderToLog( string ) { + document.write( "

" + string + "

" ); +} +function stopTest() { + var gc; + if ( gc != undefined ) { + gc(); + } + document.write( "
" ); +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = ""+ string ; + s += "" ; + s += ( passed ) ? "  " + PASSED + : " " + FAILED + expect + ""; + writeLineToLog( s + "" ); + return passed; +} +function err( msg, page, line ) { + writeLineToLog( "Test failed with the message: " + msg ); + + testcases[tc].actual = "error"; + testcases[tc].reason = msg; + writeTestCaseResult( testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ testcases[tc].actual + + ": " + testcases[tc].reason ); + stopTest(); + return true; +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_4/jsref.js b/Source/JavaScriptCore/tests/mozilla/js1_4/jsref.js new file mode 100644 index 00000000000..982d14ad74c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_4/jsref.js @@ -0,0 +1,169 @@ +var completed = false; +var testcases; + +var BUGNUMBER=""; +var EXCLUDE = ""; + +var TT = ""; +var TT_ = ""; +var BR = ""; +var NBSP = " "; +var CR = "\n"; +var FONT = ""; +var FONT_ = ""; +var FONT_RED = ""; +var FONT_GREEN = ""; +var B = ""; +var B_ = "" +var H2 = ""; +var H2_ = ""; +var HR = ""; + +var PASSED = " PASSED!" +var FAILED = " FAILED! expected: "; + +version( 140 ); +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +function TestCase( n, d, e, a ) { + this.name = n; + this.description = d; + this.expect = e; + this.actual = a; + this.passed = true; + this.reason = ""; + this.bugnumber = BUGNUMBER; + + this.passed = getTestCaseResult( this.expect, this.actual ); +} +function startTest() { +/* + // JavaScript 1.3 is supposed to be compliant ecma version 1.0 + if ( VERSION == "ECMA_1" ) { + version ( "130" ); + } + if ( VERSION == "JS_1.3" ) { + version ( "130" ); + } + if ( VERSION == "JS_1.2" ) { + version ( "120" ); + } + if ( VERSION == "JS_1.1" ) { + version ( "110" ); + } + // for ecma version 2.0, we will leave the javascript version to + // the default ( for now ). +*/ +} +function getTestCaseResult( expect, actual ) { + // because ( NaN == NaN ) always returns false, need to do + // a special compare to see if we got the right result. + if ( actual != actual ) { + if ( typeof actual == "object" ) { + actual = "NaN object"; + } else { + actual = "NaN number"; + } + } + if ( expect != expect ) { + if ( typeof expect == "object" ) { + expect = "NaN object"; + } else { + expect = "NaN number"; + } + } + + var passed = ( expect == actual ) ? true : false; + + // if both objects are numbers, give a little leeway for rounding. + if ( !passed + && typeof(actual) == "number" + && typeof(expect) == "number" + ) { + if ( Math.abs(actual-expect) < 0.0000001 ) { + passed = true; + } + } + + // verify type is the same + if ( typeof(expect) != typeof(actual) ) { + passed = false; + } + + return passed; +} +function writeTestCaseResult( expect, actual, string ) { + var passed = getTestCaseResult( expect, actual ); + writeFormattedResult( expect, actual, string, passed ); + return passed; +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = TT + string ; + + for ( k = 0; + k < (60 - string.length >= 0 ? 60 - string.length : 5) ; + k++ ) { +// s += NBSP; + } + + s += B ; + s += ( passed ) ? FONT_GREEN + NBSP + PASSED : FONT_RED + NBSP + FAILED + expect + TT_ ; + + writeLineToLog( s + FONT_ + B_ + TT_ ); + + return passed; +} + +function writeLineToLog( string ) { + print( string + BR + CR ); +} +function writeHeaderToLog( string ) { + print( H2 + string + H2_ ); +} +function stopTest() { + var sizeTag = "<#TEST CASES SIZE>"; + var doneTag = "<#TEST CASES DONE>"; + var beginTag = "<#TEST CASE "; + var endTag = ">"; + + print(sizeTag); + print(testcases.length); + for (tc = 0; tc < testcases.length; tc++) + { + print(beginTag + 'PASSED' + endTag); + print(testcases[tc].passed); + print(beginTag + 'NAME' + endTag); + print(testcases[tc].name); + print(beginTag + 'EXPECTED' + endTag); + print(testcases[tc].expect); + print(beginTag + 'ACTUAL' + endTag); + print(testcases[tc].actual); + print(beginTag + 'DESCRIPTION' + endTag); + print(testcases[tc].description); + print(beginTag + 'REASON' + endTag); + print(( testcases[tc].passed ) ? "" : "wrong value "); + print(beginTag + 'BUGNUMBER' + endTag); + print( BUGNUMBER ); + + } + print(doneTag); + gc(); +} +function getFailedCases() { + for ( var i = 0; i < testcases.length; i++ ) { + if ( ! testcases[i].passed ) { + print( testcases[i].description +" = " +testcases[i].actual +" expected: "+ testcases[i].expect ); + } + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_4/shell.js b/Source/JavaScriptCore/tests/mozilla/js1_4/shell.js new file mode 100644 index 00000000000..3afdc787c64 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_4/shell.js @@ -0,0 +1,138 @@ +var completed = false; +var testcases; +var tc = 0; + +SECTION = ""; +VERSION = ""; +BUGNUMBER = ""; + +var GLOBAL = "[object global]"; +var PASSED = " PASSED!" +var FAILED = " FAILED! expected: "; + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} +/* wrapper for test cas constructor that doesn't require the SECTION + * argument. + */ + +function AddTestCase( description, expect, actual ) { + testcases[tc++] = new TestCase( SECTION, description, expect, actual ); +} + +function TestCase( n, d, e, a ) { + this.name = n; + this.description = d; + this.expect = e; + this.actual = a; + this.passed = true; + this.reason = ""; + + this.passed = getTestCaseResult( this.expect, this.actual ); +} +function startTest() { +/* + // JavaScript 1.3 is supposed to be compliant ecma version 1.0 + if ( VERSION == "ECMA_1" ) { + version ( 130 ); + } + if ( VERSION == "JS_1.3" ) { + version ( 130 ); + } + if ( VERSION == "JS_1.2" ) { + version ( 120 ); + } + if ( VERSION == "JS_1.1" ) { + version ( 110 ); + } + // for ecma version 2.0, we will leave the javascript version to + // the default ( for now ). +*/ + + if ( BUGNUMBER ) { + writeLineToLog ("BUGNUMBER: " + BUGNUMBER ); + } + + testcases = new Array(); + tc = 0; +} +function getTestCaseResult( expect, actual ) { + // because ( NaN == NaN ) always returns false, need to do + // a special compare to see if we got the right result. + if ( actual != actual ) { + if ( typeof actual == "object" ) { + actual = "NaN object"; + } else { + actual = "NaN number"; + } + } + if ( expect != expect ) { + if ( typeof expect == "object" ) { + expect = "NaN object"; + } else { + expect = "NaN number"; + } + } + + var passed = ( expect == actual ) ? true : false; + + // if both objects are numbers, give a little leeway for rounding. + if ( !passed + && typeof(actual) == "number" + && typeof(expect) == "number" + ) { + if ( Math.abs(actual-expect) < 0.0000001 ) { + passed = true; + } + } + + // verify type is the same + if ( typeof(expect) != typeof(actual) ) { + passed = false; + } + + return passed; +} +/* + * Begin printing functions. These functions use the shell's + * print function. When running tests in the browser, these + * functions, override these functions with functions that use + * document.write. + */ + +function writeTestCaseResult( expect, actual, string ) { + var passed = getTestCaseResult( expect, actual ); + writeFormattedResult( expect, actual, string, passed ); + return passed; +} +function writeFormattedResult( expect, actual, string, passed ) { + var s = string ; + s += ( passed ) ? PASSED : FAILED + expect; + writeLineToLog( s); + return passed; +} +function writeLineToLog( string ) { + print( string ); +} +function writeHeaderToLog( string ) { + print( string ); +} +/* end of print functions */ + +function stopTest() { + var gc; + if ( gc != undefined ) { + gc(); + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/Array/array-001.js b/Source/JavaScriptCore/tests/mozilla/js1_5/Array/array-001.js new file mode 100644 index 00000000000..fbb644047d8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/Array/array-001.js @@ -0,0 +1,101 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. +* All Rights Reserved. +* +* Contributor(s): igor@icesoft.no, pschwartau@netscape.com +* Date: 24 September 2001 +* +* SUMMARY: Truncating arrays that have decimal property names. +* From correspondence with Igor Bukanov : +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = '(none)'; +var summary = 'Truncating arrays that have decimal property names'; +var BIG_INDEX = 4294967290; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; + + +var arr = Array(BIG_INDEX); +arr[BIG_INDEX - 1] = 'a'; +arr[BIG_INDEX - 10000] = 'b'; +arr[BIG_INDEX - 0.5] = 'c'; // not an array index - but a valid property name +// Truncate the array - +arr.length = BIG_INDEX - 5000; + + +// Enumerate its properties with for..in +var s = ''; +for (var i in arr) +{ + s += arr[i]; +} + + +/* + * We expect s == 'cb' or 'bc' (EcmaScript does not fix the order). + * Note 'c' is included: for..in includes ALL enumerable properties, + * not just array-index properties. The bug was: Rhino gave s == ''. + */ +status = inSection(1); +actual = sortThis(s); +expect = 'bc'; +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function sortThis(str) +{ + var chars = str.split(''); + chars = chars.sort(); + return chars.join(''); +} + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i=0; i var arr = new Array(0xFFFFFFFF) +* js> arr.length +* 4294967295 +* +* js> var arr = new Array(0x100000000) +* RangeError: invalid array length +* +* +* We'll try the largest possible array first, then a couple others. +* We're just testing that we don't crash on Array.sort(). +* +* Try to be good about memory by nulling each array variable after it is +* used. This will tell the garbage collector the memory is no longer needed. +* +* As of 2002-08-13, the JS shell runs out of memory no matter what we do, +* when trying to sort such large arrays. +* +* We only want to test that we don't CRASH on the sort. So it will be OK +* if we get the JS "out of memory" error. Note this terminates the test +* with exit code 3. Therefore we put +* +* |expectExitCode(3);| +* +* The only problem will arise if the JS shell ever DOES have enough memory +* to do the sort. Then this test will terminate with the normal exit code 0 +* and fail. +* +* Right now, I can't see any other way to do this, because "out of memory" +* is not a catchable error: it cannot be trapped with try...catch. +* +* +* FURTHER HEADACHE: Rhino can't seem to handle the largest array: it hangs. +* So we skip this case in Rhino. Here is correspondence with Igor Bukanov. +* He explains that Rhino isn't actually hanging; it's doing the huge sort: +* +* Philip Schwartau wrote: +* +* > Hi, +* > +* > I'm getting a graceful OOM message on trying to sort certain large +* > arrays. But if the array is too big, Rhino simply hangs. Note that ECMA +* > allows array lengths to be anything less than Math.pow(2,32), so the +* > arrays I'm sorting are legal. +* > +* > Note below, I'm getting an instantaneous OOM error on arr.sort() for LEN +* > = Math.pow(2, 30). So shouldn't I also get one for every LEN between +* > that and Math.pow(2, 32)? For some reason, I start to hang with 100% CPU +* > as LEN hits, say, Math.pow(2, 31) and higher. SpiderMonkey gives OOM +* > messages for all of these. Should I file a bug on this? +* +* Igor Bukanov wrote: +* +* This is due to different sorting algorithm Rhino uses when sorting +* arrays with length > Integer.MAX_VALUE. If length can fit Java int, +* Rhino first copies internal spare array to a temporary buffer, and then +* sorts it, otherwise it sorts array directly. In case of very spare +* arrays, that Array(big_number) generates, it is rather inefficient and +* generates OutOfMemory if length fits int. It may be worth in your case +* to optimize sorting to take into account array spareness, but then it +* would be a good idea to file a bug about ineficient sorting of spare +* arrays both in case of Rhino and SpiderMonkey as SM always uses a +* temporary buffer. +* +*/ +//----------------------------------------------------------------------------- +var bug = 157652; +var summary = "Testing that Array.sort() doesn't crash on very large arrays"; + +printBugNumber(bug); +printStatus(summary); + +// JSC doesn't run out of memory, so we don't expect an abnormal exit code +//expectExitCode(3); +var IN_RHINO = inRhino(); + +if (!IN_RHINO) +{ + var a1=Array(0xFFFFFFFF); + a1.sort(); + a1 = null; +} + +var a2 = Array(0x40000000); +a2.sort(); +a2=null; + +var a3=Array(0x10000000/4); +a3.sort(); +a3=null; diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/Array/regress-178722.js b/Source/JavaScriptCore/tests/mozilla/js1_5/Array/regress-178722.js new file mode 100644 index 00000000000..994b3810084 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/Array/regress-178722.js @@ -0,0 +1,175 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 06 November 2002 +* SUMMARY: arr.sort() should not output |undefined| when |arr| is empty +* See http://bugzilla.mozilla.org/show_bug.cgi?id=178722 +* +* ECMA-262 Ed.3: 15.4.4.11 Array.prototype.sort (comparefn) +* +* 1. Call the [[Get]] method of this object with argument "length". +* 2. Call ToUint32(Result(1)). +* 3. Perform an implementation-dependent sequence of calls to the [[Get]], +* [[Put]], and [[Delete]] methods of this object, etc. etc. +* 4. Return this object. +* +* +* Note that sort() is done in-place on |arr|. In other words, sort() is a +* "destructive" method rather than a "functional" method. The return value +* of |arr.sort()| and |arr| are the same object. +* +* If |arr| is an empty array, the return value of |arr.sort()| should be +* an empty array, not the value |undefined| as was occurring in bug 178722. +* +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 178722; +var summary = 'arr.sort() should not output |undefined| when |arr| is empty'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; +var arr; + + +// create empty array or pseudo-array objects in various ways +var arr1 = Array(); +var arr2 = new Array(); +var arr3 = []; +var arr4 = [1]; +arr4.pop(); +function f () {return arguments}; +var arr5 = f(); +arr5.__proto__ = Array.prototype; + + +status = inSection(1); +arr = arr1.sort(); +actual = arr instanceof Array && arr.length === 0 && arr === arr1; +expect = true; +addThis(); + +status = inSection(2); +arr = arr2.sort(); +actual = arr instanceof Array && arr.length === 0 && arr === arr2; +expect = true; +addThis(); + +status = inSection(3); +arr = arr3.sort(); +actual = arr instanceof Array && arr.length === 0 && arr === arr3; +expect = true; +addThis(); + +status = inSection(4); +arr = arr4.sort(); +actual = arr instanceof Array && arr.length === 0 && arr === arr4; +expect = true; +addThis(); + +status = inSection(5); +arr = arr5.sort(); +actual = arr instanceof Array && arr.length === 0 && arr === arr5; +expect = true; +addThis(); + + +// now do the same thing, with non-default sorting: +function g() {return 1;} + +status = inSection('1a'); +arr = arr1.sort(g); +actual = arr instanceof Array && arr.length === 0 && arr === arr1; +expect = true; +addThis(); + +status = inSection('2a'); +arr = arr2.sort(g); +actual = arr instanceof Array && arr.length === 0 && arr === arr2; +expect = true; +addThis(); + +status = inSection('3a'); +arr = arr3.sort(g); +actual = arr instanceof Array && arr.length === 0 && arr === arr3; +expect = true; +addThis(); + +status = inSection('4a'); +arr = arr4.sort(g); +actual = arr instanceof Array && arr.length === 0 && arr === arr4; +expect = true; +addThis(); + +status = inSection('5a'); +arr = arr5.sort(g); +actual = arr instanceof Array && arr.length === 0 && arr === arr5; +expect = true; +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc('test'); + printBugNumber(bug); + printStatus(summary); + + for (var i=0; i0. The bug was filed because we were getting +* i===0; i.e. |i| did not retain the value it had at the location of the error. +* +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 121658; +var msg = '"Too much recursion" errors should be safely caught by try...catch'; +var TEST_PASSED = 'i retained the value it had at location of error'; +var TEST_FAILED = 'i did NOT retain this value'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; +var i; + + +function f() +{ + ++i; + + // try...catch should catch the "too much recursion" error to ensue + try + { + f(); + } + catch(e) + { + } +} + +i=0; +f(); +status = inSection(1); +actual = (i>0); +expect = true; +addThis(); + + + +// Now try in function scope - +function g() +{ + f(); +} + +i=0; +g(); +status = inSection(2); +actual = (i>0); +expect = true; +addThis(); + + + +// Now try in eval scope - +var sEval = 'function h(){++i; try{h();} catch(e){}}; i=0; h();'; +eval(sEval); +status = inSection(3); +actual = (i>0); +expect = true; +addThis(); + + + +// Try in eval scope and mix functions up - +sEval = 'function a(){++i; try{h();} catch(e){}}; i=0; a();'; +eval(sEval); +status = inSection(4); +actual = (i>0); +expect = true; +addThis(); + + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = formatThis(actual); + expectedvalues[UBound] = formatThis(expect); + UBound++; +} + + +function formatThis(bool) +{ + return bool? TEST_PASSED : TEST_FAILED; +} + + +function test() +{ + enterFunc('test'); + printBugNumber(bug); + printStatus(msg); + + for (var i=0; i", t._y, "y prototype check"); + + reportCompare ("got ", t.y, "y getter, before set"); + + t.y = "new y"; + reportCompare ("got new y", t.y, "y getter, after set"); + + t.y = 2; + reportCompare (2, t.y, "y getter, after numeric set"); + + var d = new Date(); + t.y = d; + reportCompare (d, t.y, "y getter, after date set"); + +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/GetSet/getset-002.js b/Source/JavaScriptCore/tests/mozilla/js1_5/GetSet/getset-002.js new file mode 100644 index 00000000000..07d32ed12b8 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/GetSet/getset-002.js @@ -0,0 +1,68 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * Rob Ginda rginda@netscape.com + */ + +var t = { + _y: "", + + y getter: function get_y () + { + var rv; + if (typeof this._y == "string") + rv = "got " + this._y; + else + rv = this._y; + + return rv; + }, + + y setter: function set_y (newVal) + { + this._y = newVal; + } +} + + +test(t); + +function test(t) +{ + enterFunc ("test"); + + printStatus ("Basic Getter/ Setter test (object literal notation)"); + + reportCompare ("", t._y, "y prototype check"); + + reportCompare ("got ", t.y, "y getter, before set"); + + t.y = "new y"; + reportCompare ("got new y", t.y, "y getter, after set"); + + t.y = 2; + reportCompare (2, t.y, "y getter, after numeric set"); + + var d = new Date(); + t.y = d; + reportCompare (d, t.y, "y getter, after date set"); + +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/GetSet/getset-003.js b/Source/JavaScriptCore/tests/mozilla/js1_5/GetSet/getset-003.js new file mode 100644 index 00000000000..952d3d778c6 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/GetSet/getset-003.js @@ -0,0 +1,190 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" +* basis, WITHOUT WARRANTY OF ANY KIND, either expressed +* or implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* Date: 14 April 2001 +* +* SUMMARY: Testing obj.prop getter/setter +* Note: this is a non-ECMA extension to the language. +*/ +//------------------------------------------------------------------------------------------------- +var UBound = 0; +var bug = '(none)'; +var summary = 'Testing obj.prop getter/setter'; +var statprefix = 'Status: '; +var status = ''; +var statusitems = [ ]; +var actual = ''; +var actualvalues = [ ]; +var expect= ''; +var expectedvalues = [ ]; +var cnDEFAULT = 'default name'; +var cnFRED = 'Fred'; +var obj = {}; +var obj2 = {}; +var s = ''; + + +// SECTION1: define getter/setter directly on an object (not its prototype) +obj = new Object(); +obj.nameSETS = 0; +obj.nameGETS = 0; +obj.name setter = function(newValue) {this._name=newValue; this.nameSETS++;} +obj.name getter = function() {this.nameGETS++; return this._name;} + +status = 'In SECTION1 of test after 0 sets, 0 gets'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [0,0]; +addThis(); + +s = obj.name; +status = 'In SECTION1 of test after 0 sets, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [0,1]; +addThis(); + +obj.name = cnFRED; +status = 'In SECTION1 of test after 1 set, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [1,1]; +addThis(); + +obj.name = obj.name; +status = 'In SECTION1 of test after 2 sets, 2 gets'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [2,2]; +addThis(); + + +// SECTION2: define getter/setter in Object.prototype +Object.prototype.nameSETS = 0; +Object.prototype.nameGETS = 0; +Object.prototype.name setter = function(newValue) {this._name=newValue; this.nameSETS++;} +Object.prototype.name getter = function() {this.nameGETS++; return this._name;} + +obj = new Object(); +status = 'In SECTION2 of test after 0 sets, 0 gets'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [0,0]; +addThis(); + +s = obj.name; +status = 'In SECTION2 of test after 0 sets, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [0,1]; +addThis(); + +obj.name = cnFRED; +status = 'In SECTION2 of test after 1 set, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [1,1]; +addThis(); + +obj.name = obj.name; +status = 'In SECTION2 of test after 2 sets, 2 gets'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [2,2]; +addThis(); + + +// SECTION 3: define getter/setter in prototype of user-defined constructor +function TestObject() +{ +} +TestObject.prototype.nameSETS = 0; +TestObject.prototype.nameGETS = 0; +TestObject.prototype.name setter = function(newValue) {this._name=newValue; this.nameSETS++;} +TestObject.prototype.name getter = function() {this.nameGETS++; return this._name;} +TestObject.prototype.name = cnDEFAULT; + +obj = new TestObject(); +status = 'In SECTION3 of test after 1 set, 0 gets'; // (we set a default value in the prototype) +actual = [obj.nameSETS,obj.nameGETS]; +expect = [1,0]; +addThis(); + +s = obj.name; +status = 'In SECTION3 of test after 1 set, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [1,1]; +addThis(); + +obj.name = cnFRED; +status = 'In SECTION3 of test after 2 sets, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [2,1]; +addThis(); + +obj.name = obj.name; +status = 'In SECTION3 of test after 3 sets, 2 gets'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [3,2]; +addThis(); + +obj2 = new TestObject(); +status = 'obj2 = new TestObject() after 1 set, 0 gets'; +actual = [obj2.nameSETS,obj2.nameGETS]; +expect = [1,0]; // we set a default value in the prototype - +addThis(); + +// Use both obj and obj2 - +obj2.name = obj.name + obj2.name; + status = 'obj2 = new TestObject() after 2 sets, 1 get'; + actual = [obj2.nameSETS,obj2.nameGETS]; + expect = [2,1]; + addThis(); + + status = 'In SECTION3 of test after 3 sets, 3 gets'; + actual = [obj.nameSETS,obj.nameGETS]; + expect = [3,3]; // we left off at [3,2] above - + addThis(); + + +//--------------------------------------------------------------------------------- +test(); +//--------------------------------------------------------------------------------- + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual.toString(); + expectedvalues[UBound] = expect.toString(); + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i = 0; i < UBound; i++) + { + reportCompare(expectedvalues[i], actualvalues[i], getStatus(i)); + } + + exitFunc ('test'); +} + + +function getStatus(i) +{ + return statprefix + statusitems[i]; +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/GetSet/getset-004.js b/Source/JavaScriptCore/tests/mozilla/js1_5/GetSet/getset-004.js new file mode 100644 index 00000000000..4445e80f772 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/GetSet/getset-004.js @@ -0,0 +1,190 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" +* basis, WITHOUT WARRANTY OF ANY KIND, either expressed +* or implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* Date: 14 April 2001 +* +* SUMMARY: Testing obj.__defineSetter__(), obj.__defineGetter__() +* Note: this is a non-ECMA language extension +*/ +//------------------------------------------------------------------------------------------------- +var UBound = 0; +var bug = '(none)'; +var summary = 'Testing obj.__defineSetter__(), obj.__defineGetter__()'; +var statprefix = 'Status: '; +var status = ''; +var statusitems = [ ]; +var actual = ''; +var actualvalues = [ ]; +var expect= ''; +var expectedvalues = [ ]; +var cnDEFAULT = 'default name'; +var cnFRED = 'Fred'; +var obj = {}; +var obj2 = {}; +var s = ''; + + +// SECTION1: define getter/setter directly on an object (not its prototype) +obj = new Object(); +obj.nameSETS = 0; +obj.nameGETS = 0; +obj.__defineSetter__('name', function(newValue) {this._name=newValue; this.nameSETS++;}); +obj.__defineGetter__('name', function() {this.nameGETS++; return this._name;}); + +status = 'In SECTION1 of test after 0 sets, 0 gets'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [0,0]; +addThis(); + +s = obj.name; +status = 'In SECTION1 of test after 0 sets, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [0,1]; +addThis(); + +obj.name = cnFRED; +status = 'In SECTION1 of test after 1 set, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [1,1]; +addThis(); + +obj.name = obj.name; +status = 'In SECTION1 of test after 2 sets, 2 gets'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [2,2]; +addThis(); + + +// SECTION2: define getter/setter in Object.prototype +Object.prototype.nameSETS = 0; +Object.prototype.nameGETS = 0; +Object.prototype.__defineSetter__('name', function(newValue) {this._name=newValue; this.nameSETS++;}); +Object.prototype.__defineGetter__('name', function() {this.nameGETS++; return this._name;}); + +obj = new Object(); +status = 'In SECTION2 of test after 0 sets, 0 gets'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [0,0]; +addThis(); + +s = obj.name; +status = 'In SECTION2 of test after 0 sets, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [0,1]; +addThis(); + +obj.name = cnFRED; +status = 'In SECTION2 of test after 1 set, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [1,1]; +addThis(); + +obj.name = obj.name; +status = 'In SECTION2 of test after 2 sets, 2 gets'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [2,2]; +addThis(); + + +// SECTION 3: define getter/setter in prototype of user-defined constructor +function TestObject() +{ +} +TestObject.prototype.nameSETS = 0; +TestObject.prototype.nameGETS = 0; +TestObject.prototype.__defineSetter__('name', function(newValue) {this._name=newValue; this.nameSETS++;}); +TestObject.prototype.__defineGetter__('name', function() {this.nameGETS++; return this._name;}); +TestObject.prototype.name = cnDEFAULT; + +obj = new TestObject(); +status = 'In SECTION3 of test after 1 set, 0 gets'; // (we set a default value in the prototype) +actual = [obj.nameSETS,obj.nameGETS]; +expect = [1,0]; +addThis(); + +s = obj.name; +status = 'In SECTION3 of test after 1 set, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [1,1]; +addThis(); + +obj.name = cnFRED; +status = 'In SECTION3 of test after 2 sets, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [2,1]; +addThis(); + +obj.name = obj.name; +status = 'In SECTION3 of test after 3 sets, 2 gets'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [3,2]; +addThis(); + +obj2 = new TestObject(); +status = 'obj2 = new TestObject() after 1 set, 0 gets'; +actual = [obj2.nameSETS,obj2.nameGETS]; +expect = [1,0]; // we set a default value in the prototype - +addThis(); + +// Use both obj and obj2 - +obj2.name = obj.name + obj2.name; + status = 'obj2 = new TestObject() after 2 sets, 1 get'; + actual = [obj2.nameSETS,obj2.nameGETS]; + expect = [2,1]; + addThis(); + + status = 'In SECTION3 of test after 3 sets, 3 gets'; + actual = [obj.nameSETS,obj.nameGETS]; + expect = [3,3]; // we left off at [3,2] above - + addThis(); + + +//--------------------------------------------------------------------------------- +test(); +//--------------------------------------------------------------------------------- + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual.toString(); + expectedvalues[UBound] = expect.toString(); + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i = 0; i < UBound; i++) + { + reportCompare(expectedvalues[i], actualvalues[i], getStatus(i)); + } + + exitFunc ('test'); +} + + +function getStatus(i) +{ + return statprefix + statusitems[i]; +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/GetSet/getset-005.js b/Source/JavaScriptCore/tests/mozilla/js1_5/GetSet/getset-005.js new file mode 100644 index 00000000000..c0e61f9ff75 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/GetSet/getset-005.js @@ -0,0 +1,199 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" +* basis, WITHOUT WARRANTY OF ANY KIND, either expressed +* or implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* Date: 14 April 2001 +* +* SUMMARY: Testing obj.__defineSetter__(), obj.__defineGetter__() +* Note: this is a non-ECMA language extension +* +* This test is the same as getset-004.js, except that here we +* store the getter/setter functions in global variables. +*/ +//------------------------------------------------------------------------------------------------- +var UBound = 0; +var bug = '(none)'; +var summary = 'Testing obj.__defineSetter__(), obj.__defineGetter__()'; +var statprefix = 'Status: '; +var status = ''; +var statusitems = [ ]; +var actual = ''; +var actualvalues = [ ]; +var expect= ''; +var expectedvalues = [ ]; +var cnName = 'name'; +var cnDEFAULT = 'default name'; +var cnFRED = 'Fred'; +var obj = {}; +var obj2 = {}; +var s = ''; + + +// The getter/setter functions we'll use in all three sections below - +var cnNameSetter = function(newValue) {this._name=newValue; this.nameSETS++;}; +var cnNameGetter = function() {this.nameGETS++; return this._name;}; + + +// SECTION1: define getter/setter directly on an object (not its prototype) +obj = new Object(); +obj.nameSETS = 0; +obj.nameGETS = 0; +obj.__defineSetter__(cnName, cnNameSetter); +obj.__defineGetter__(cnName, cnNameGetter); + +status = 'In SECTION1 of test after 0 sets, 0 gets'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [0,0]; +addThis(); + +s = obj.name; +status = 'In SECTION1 of test after 0 sets, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [0,1]; +addThis(); + +obj.name = cnFRED; +status = 'In SECTION1 of test after 1 set, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [1,1]; +addThis(); + +obj.name = obj.name; +status = 'In SECTION1 of test after 2 sets, 2 gets'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [2,2]; +addThis(); + + +// SECTION2: define getter/setter in Object.prototype +Object.prototype.nameSETS = 0; +Object.prototype.nameGETS = 0; +Object.prototype.__defineSetter__(cnName, cnNameSetter); +Object.prototype.__defineGetter__(cnName, cnNameGetter); + +obj = new Object(); +status = 'In SECTION2 of test after 0 sets, 0 gets'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [0,0]; +addThis(); + +s = obj.name; +status = 'In SECTION2 of test after 0 sets, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [0,1]; +addThis(); + +obj.name = cnFRED; +status = 'In SECTION2 of test after 1 set, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [1,1]; +addThis(); + +obj.name = obj.name; +status = 'In SECTION2 of test after 2 sets, 2 gets'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [2,2]; +addThis(); + + +// SECTION 3: define getter/setter in prototype of user-defined constructor +function TestObject() +{ +} +TestObject.prototype.nameSETS = 0; +TestObject.prototype.nameGETS = 0; +TestObject.prototype.__defineSetter__(cnName, cnNameSetter); +TestObject.prototype.__defineGetter__(cnName, cnNameGetter); +TestObject.prototype.name = cnDEFAULT; + +obj = new TestObject(); +status = 'In SECTION3 of test after 1 set, 0 gets'; // (we set a default value in the prototype) +actual = [obj.nameSETS,obj.nameGETS]; +expect = [1,0]; +addThis(); + +s = obj.name; +status = 'In SECTION3 of test after 1 set, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [1,1]; +addThis(); + +obj.name = cnFRED; +status = 'In SECTION3 of test after 2 sets, 1 get'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [2,1]; +addThis(); + +obj.name = obj.name; +status = 'In SECTION3 of test after 3 sets, 2 gets'; +actual = [obj.nameSETS,obj.nameGETS]; +expect = [3,2]; +addThis(); + +obj2 = new TestObject(); +status = 'obj2 = new TestObject() after 1 set, 0 gets'; +actual = [obj2.nameSETS,obj2.nameGETS]; +expect = [1,0]; // we set a default value in the prototype - +addThis(); + +// Use both obj and obj2 - +obj2.name = obj.name + obj2.name; + status = 'obj2 = new TestObject() after 2 sets, 1 get'; + actual = [obj2.nameSETS,obj2.nameGETS]; + expect = [2,1]; + addThis(); + + status = 'In SECTION3 of test after 3 sets, 3 gets'; + actual = [obj.nameSETS,obj.nameGETS]; + expect = [3,3]; // we left off at [3,2] above - + addThis(); + + +//--------------------------------------------------------------------------------- +test(); +//--------------------------------------------------------------------------------- + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual.toString(); + expectedvalues[UBound] = expect.toString(); + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i = 0; i < UBound; i++) + { + reportCompare(expectedvalues[i], actualvalues[i], getStatus(i)); + } + + exitFunc ('test'); +} + + +function getStatus(i) +{ + return statprefix + statusitems[i]; +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/GetSet/getset-006.js b/Source/JavaScriptCore/tests/mozilla/js1_5/GetSet/getset-006.js new file mode 100644 index 00000000000..8d35bc9cf40 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/GetSet/getset-006.js @@ -0,0 +1,173 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" +* basis, WITHOUT WARRANTY OF ANY KIND, either expressed +* or implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* Date: 14 April 2001 +* +* SUMMARY: Testing obj.__lookupGetter__(), obj.__lookupSetter__() +* See http://bugzilla.mozilla.org/show_bug.cgi?id=71992 +* +* Brendan: "I see no need to provide more than the minimum: +* o.__lookupGetter__('p') returns the getter function for o.p, +* or undefined if o.p has no getter. Users can wrap and layer." +*/ +//------------------------------------------------------------------------------------------------- +var UBound = 0; +var bug = 71992; +var summary = 'Testing obj.__lookupGetter__(), obj.__lookupSetter__()'; +var statprefix = 'Status: '; +var status = ''; +var statusitems = [ ]; +var actual = ''; +var actualvalues = [ ]; +var expect= ''; +var expectedvalues = [ ]; +var cnName = 'name'; +var cnColor = 'color'; +var cnNonExistingProp = 'ASDF_#_$%'; +var cnDEFAULT = 'default name'; +var cnFRED = 'Fred'; +var cnRED = 'red'; +var obj = {}; +var obj2 = {}; +var s; + + +// The only setter and getter functions we'll use in the three sections below - +var cnNameSetter = function(newValue) {this._name=newValue; this.nameSETS++;}; +var cnNameGetter = function() {this.nameGETS++; return this._name;}; + + + +// SECTION1: define getter/setter directly on an object (not its prototype) +obj = new Object(); +obj.nameSETS = 0; +obj.nameGETS = 0; +obj.__defineSetter__(cnName, cnNameSetter); +obj.__defineGetter__(cnName, cnNameGetter); +obj.name = cnFRED; +obj.color = cnRED; + +status ='In SECTION1 of test; looking up extant getter/setter'; +actual = [obj.__lookupSetter__(cnName), obj.__lookupGetter__(cnName)]; +expect = [cnNameSetter, cnNameGetter]; +addThis(); + +status = 'In SECTION1 of test; looking up nonexistent getter/setter'; +actual = [obj.__lookupSetter__(cnColor), obj.__lookupGetter__(cnColor)]; +expect = [undefined, undefined]; +addThis(); + +status = 'In SECTION1 of test; looking up getter/setter on nonexistent property'; +actual = [obj.__lookupSetter__(cnNonExistingProp), obj.__lookupGetter__(cnNonExistingProp)]; +expect = [undefined, undefined]; +addThis(); + + + +// SECTION2: define getter/setter in Object.prototype +Object.prototype.nameSETS = 0; +Object.prototype.nameGETS = 0; +Object.prototype.__defineSetter__(cnName, cnNameSetter); +Object.prototype.__defineGetter__(cnName, cnNameGetter); + +obj = new Object(); +obj.name = cnFRED; +obj.color = cnRED; + +status = 'In SECTION2 of test looking up extant getter/setter'; +actual = [obj.__lookupSetter__(cnName), obj.__lookupGetter__(cnName)]; +expect = [cnNameSetter, cnNameGetter]; +addThis(); + +status = 'In SECTION2 of test; looking up nonexistent getter/setter'; +actual = [obj.__lookupSetter__(cnColor), obj.__lookupGetter__(cnColor)]; +expect = [undefined, undefined]; +addThis(); + +status = 'In SECTION2 of test; looking up getter/setter on nonexistent property'; +actual = [obj.__lookupSetter__(cnNonExistingProp), obj.__lookupGetter__(cnNonExistingProp)]; +expect = [undefined, undefined]; +addThis(); + + + +// SECTION 3: define getter/setter in prototype of user-defined constructor +function TestObject() +{ +} +TestObject.prototype.nameSETS = 0; +TestObject.prototype.nameGETS = 0; +TestObject.prototype.__defineSetter__(cnName, cnNameSetter); +TestObject.prototype.__defineGetter__(cnName, cnNameGetter); +TestObject.prototype.name = cnDEFAULT; + +obj = new TestObject(); +obj.name = cnFRED; +obj.color = cnRED; + +status = 'In SECTION3 of test looking up extant getter/setter'; +actual = [obj.__lookupSetter__(cnName), obj.__lookupGetter__(cnName)]; +expect = [cnNameSetter, cnNameGetter]; +addThis(); + +status = 'In SECTION3 of test; looking up non-existent getter/setter'; +actual = [obj.__lookupSetter__(cnColor), obj.__lookupGetter__(cnColor)]; +expect = [undefined, undefined]; +addThis(); + +status = 'In SECTION3 of test; looking up getter/setter on nonexistent property'; +actual = [obj.__lookupSetter__(cnNonExistingProp), obj.__lookupGetter__(cnNonExistingProp)]; +expect = [undefined, undefined]; +addThis(); + + + +//--------------------------------------------------------------------------------- +test(); +//--------------------------------------------------------------------------------- + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual.toString(); + expectedvalues[UBound] = expect.toString(); + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i = 0; i < UBound; i++) + { + reportCompare(expectedvalues[i], actualvalues[i], getStatus(i)); + } + + exitFunc ('test'); +} + + +function getStatus(i) +{ + return statprefix + statusitems[i]; +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/LexicalConventions/lexical-001.js b/Source/JavaScriptCore/tests/mozilla/js1_5/LexicalConventions/lexical-001.js new file mode 100644 index 00000000000..42e947d588d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/LexicalConventions/lexical-001.js @@ -0,0 +1,161 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* 26 November 2000 +* +* +*SUMMARY: Testing numeric literals that begin with 0. +*This test arose from Bugzilla bug 49233. +*The best explanation is from jsscan.c: +* +* "We permit 08 and 09 as decimal numbers, which makes +* our behaviour a superset of the ECMA numeric grammar. +* We might not always be so permissive, so we warn about it." +* +*Thus an expression 010 will evaluate, as always, as an octal (to 8). +*However, 018 will evaluate as a decimal, to 18. Even though the +*user began the expression as an octal, he later used a non-octal +*digit. We forgive this and assume he intended a decimal. If the +*JavaScript "strict" option is set though, we will give a warning. +*/ +//------------------------------------------------------------------------------------------------- +var bug = '49233'; +var summary = 'Testing numeric literals that begin with 0'; +var statprefix = 'Testing '; +var quote = "'"; +var status = new Array(); +var actual = new Array(); +var expect = new Array(); + + +status[0]=showStatus('01') +actual[0]=01 +expect[0]=1 + +status[1]=showStatus('07') +actual[1]=07 +expect[1]=7 + +status[2]=showStatus('08') +actual[2]=08 +expect[2]=8 + +status[3]=showStatus('09') +actual[3]=09 +expect[3]=9 + +status[4]=showStatus('010') +actual[4]=010 +expect[4]=8 + +status[5]=showStatus('017') +actual[5]=017 +expect[5]=15 + +status[6]=showStatus('018') +actual[6]=018 +expect[6]=18 + +status[7]=showStatus('019') +actual[7]=019 +expect[7]=19 + +status[8]=showStatus('079') +actual[8]=079 +expect[8]=79 + +status[9]=showStatus('0079') +actual[9]=0079 +expect[9]=79 + +status[10]=showStatus('099') +actual[10]=099 +expect[10]=99 + +status[11]=showStatus('0099') +actual[11]=0099 +expect[11]=99 + +status[12]=showStatus('000000000077') +actual[12]=000000000077 +expect[12]=63 + +status[13]=showStatus('000000000078') +actual[13]=000000000078 +expect[13]=78 + +status[14]=showStatus('0000000000770000') +actual[14]=0000000000770000 +expect[14]=258048 + +status[15]=showStatus('0000000000780000') +actual[15]=0000000000780000 +expect[15]=780000 + +status[16]=showStatus('0765432198') +actual[16]=0765432198 +expect[16]=765432198 + +status[17]=showStatus('00076543219800') +actual[17]=00076543219800 +expect[17]=76543219800 + +status[18]=showStatus('0000001001007') +actual[18]=0000001001007 +expect[18]=262663 + +status[19]=showStatus('0000001001009') +actual[19]=0000001001009 +expect[19]=1001009 + +status[20]=showStatus('070') +actual[20]=070 +expect[20]=56 + +status[21]=showStatus('080') +actual[21]=080 +expect[21]=80 + + + +//------------------------------------------------------------------------------------------------- +test(); +//------------------------------------------------------------------------------------------------- + + +function showStatus(msg) +{ + return (statprefix + quote + msg + quote); +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + + for (i=0; i !=status.length; i++) + { + reportCompare (expect[i], actual[i], status[i]); + } + + exitFunc ('test'); +} \ No newline at end of file diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/LexicalConventions/regress-177314.js b/Source/JavaScriptCore/tests/mozilla/js1_5/LexicalConventions/regress-177314.js new file mode 100644 index 00000000000..b085dfb8e55 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/LexicalConventions/regress-177314.js @@ -0,0 +1,105 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 30 Oct 2002 +* SUMMARY: '\400' should lex as a 2-digit octal escape + '0' +* See http://bugzilla.mozilla.org/show_bug.cgi?id=177314 +* +* Bug was that Rhino interpreted '\400' as a 3-digit octal escape. As such +* it is invalid, since octal escapes may only run from '\0' to '\377'. But +* the lexer should interpret this as '\40' + '0' instead, and throw no error. +* +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 177314; +var summary = "'\\" + "400' should lex as a 2-digit octal escape + '0'"; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; + + +// the last valid octal escape is '\377', which should equal hex escape '\xFF' +status = inSection(1); +actual = '\377'; +expect = '\xFF'; +addThis(); + +// now exercise the lexer by going one higher in the last digit +status = inSection(2); +actual = '\378'; +expect = '\37' + '8'; +addThis(); + +// trickier: 400 is a valid octal number, but '\400' isn't a valid octal escape +status = inSection(3); +actual = '\400'; +expect = '\40' + '0'; +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc('test'); + printBugNumber(bug); + printStatus(summary); + + for (var i=0; i 5) + return sum; + sum += 1; + } + catch (e) + { + sum += 1; + print(e); + } + } + } + } + finally + { + try + { + sum +=1; + print("In finally block of addValues_3() function: sum = " + sum); + } + catch (e if e == 42) + { + sum +=1; + print('In finally catch block of addValues_3() function: sum = ' + sum + ', e = ' + e); + } + finally + { + sum +=1; + print("In finally finally block of addValues_3() function: sum = " + sum); + return sum; + } + } + } +} + +status = inSection(9); +obj = new Object(); +obj.arg1 = 1; +obj.arg2 = 2; +obj.arg3 = new Object(); +obj.arg3.a = 10; +obj.arg3.b = 20; +actual = addValues_3(obj); +expect = 8; +captureThis(); + + + + +function addValues_4(obj) +{ + var sum = 0; + + with (obj) + { + try + { + sum = arg1 + arg2; + with (arg3) + { + while (sum < 10) + { + try + { + if (sum > 5) + return sum; + sum += 1; + } + catch (e) + { + sum += 1; + print(e); + } + } + } + } + finally + { + try + { + sum += 1; + print("In finally block of addValues_4() function: sum = " + sum); + } + catch (e if e == 42) + { + sum += 1; + print("In 1st finally catch block of addValues_4() function: sum = " + sum + ", e = " + e); + } + catch (e if e == 43) + { + sum += 1; + print("In 2nd finally catch block of addValues_4() function: sum = " + sum + ", e = " + e); + } + finally + { + sum += 1; + print("In finally finally block of addValues_4() function: sum = " + sum); + return sum; + } + } + } +} + +status = inSection(10); +obj = new Object(); +obj.arg1 = 1; +obj.arg2 = 2; +obj.arg3 = new Object(); +obj.arg3.a = 10; +obj.arg3.b = 20; +actual = addValues_4(obj); +expect = 8; +captureThis(); + + + + +function addValues_5(obj) +{ + var sum = 0; + + with (obj) + { + try + { + sum = arg1 + arg2; + with (arg3) + { + while (sum < 10) + { + try + { + if (sum > 5) + return sum; + sum += 1; + } + catch (e) + { + sum += 1; + print(e); + } + } + } + } + finally + { + try + { + sum += 1; + print("In finally block of addValues_5() function: sum = " + sum); + } + catch (e) + { + sum += 1; + print("In finally catch block of addValues_5() function: sum = " + sum + ", e = " + e); + } + finally + { + sum += 1; + print("In finally finally block of addValues_5() function: sum = " + sum); + return sum; + } + } + } +} + +status = inSection(11); +obj = new Object(); +obj.arg1 = 1; +obj.arg2 = 2; +obj.arg3 = new Object(); +obj.arg3.a = 10; +obj.arg3.b = 20; +actual = addValues_5(obj); +expect = 8; +captureThis(); + + + + +function testObj(obj) +{ + var x = 42; + + try + { + with (obj) + { + if (obj.p) + throw obj.p; + x = obj.q; + } + } + finally + { + print("in finally block of testObj() function"); + return 999; + } +} + +status = inSection(12); +obj = {p:43}; +actual = testObj(obj); +expect = 999; +captureThis(); + + + +/* + * Next two cases are from http://bugzilla.mozilla.org/show_bug.cgi?id=120571 + */ +function a120571() +{ + while(0) + { + try + { + } + catch(e) + { + continue; + } + } +} + +// this caused a crash! Test to see that it doesn't now. +print(a120571); + +// Now test that we have a non-null value for a120571.toString() +status = inSection(13); +try +{ + actual = a120571.toString().match(/continue/)[0]; +} +catch(e) +{ + actual = 'FAILED! Did not find "continue" in function body'; +} +expect = 'continue'; +captureThis(); + + + + +function b() +{ + for(;;) + { + try + { + } + catch(e) + { + continue; + } + } +} + +// this caused a crash!!! Test to see that it doesn't now. +print(b); + +// Now test that we have a non-null value for b.toString() +status = inSection(14); +try +{ + actual = b.toString().match(/continue/)[0]; +} +catch(e) +{ + actual = 'FAILED! Did not find "continue" in function body'; +} +expect = 'continue'; +captureThis(); + + + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function captureThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i=0; i (c) 1998-2000 +// This is version 2.2.6, dated 2000-03-30 + +// The script is freely distributable +// It may be used (and modified) as you wish, but retain this message +// For more information about the menu visit its home page +// http://www.treemenu.com/ + +/****************************************************************************** +* Define the MenuItem object. * +******************************************************************************/ + +function MTMenuItem(text, url, target,nsearchID, icon) { + this.text = text; + this.url = url ? url : ""; + this.target = target ? target : ""; + this.icon = icon ? icon : ""; + this.nsearchID = nsearchID; + + this.number = MTMSubNumber++; + this.parent = null; + this.submenu = null; + this.expanded = false; + this.selected = false; + this.childSelected = false; + + this.MTMakeSubmenu = MTMakeSubmenu; + +} + +function MTMakeSubmenu(menu) { + this.submenu = menu; + for (var i = 0; i < menu.items.length; i++) + { + menu.items[i].parent = this; + } +} + + + +function getChildrenChecked(item, selected) +{ + if (item.submenu != null) + { + for (var x = 0; x < item.submenu.items.length; x++) + { + item.submenu.items[x].selected = selected; + item.submenu.items[x].childSelected = false; + MarkChildren(item.submenu.items[x],selected); + } + } +} + +/****************************************************************************** +* Define the Menu object. * +******************************************************************************/ + +function MTMenu() { + this.items = new Array(); + this.MTMAddItem = MTMAddItem; +} + +function MTMAddItem(item) { + this.items[this.items.length] = item; +} + +/****************************************************************************** +* Define the icon list, addIcon function and MTMIcon item. * +******************************************************************************/ + +function IconList() { + this.items = new Array(); + this.addIcon = addIcon; +} + +function addIcon(item) { + this.items[this.items.length] = item; +} + +function MTMIcon(iconfile, match, type) { + this.file = iconfile; + this.match = match; + this.type = type; +} + +/****************************************************************************** +* Global variables. Not to be altered unless you know what you're doing. * +* User-configurable options are at the end of this document. * +******************************************************************************/ + +var MTMLoaded = false; +var MTMLevel; +var MTMBar = new Array(); +var MTMIndices = new Array(); +var MTMBrowser = null; +var MTMNN3 = false; +var MTMNN4 = false; +var MTMIE4 = false; +var MTMUseStyle = true; + +/* + * (For a standalone JS shell test, we will simply set these as follows:) + */ +MTMBrowser = true; +MTMNN4 = true; + + +var MTMClickedItem = false; +var MTMExpansion = false; + +var MTMSubNumber = 1; +var MTMTrackedItem = false; +var MTMTrack = false; + +var MTMPreHREF = ""; +if(MTMIE4 || MTMNN3) { + MTMPreHREF += ""; // document.location.href.substring(0, document.location.href.lastIndexOf("/") +1); +} + +var MTMFirstRun = true; +var MTMCurrentTime = 0; // for checking timeout. +var MTMUpdating = false; +var MTMWinSize, MTMyval; +var MTMOutputString = ""; + +/****************************************************************************** +* Code that picks up frame names of frames in the parent frameset. * +******************************************************************************/ + + +/****************************************************************************** +* Dummy function for sub-menus without URLs * +* Thanks to Michel Plungjan for the advice. :) * +******************************************************************************/ + +function myVoid() { ; } + +/****************************************************************************** +* Functions to draw the menu. * +******************************************************************************/ + +function MTMSubAction(SubItem, ReturnValue) { + + SubItem.expanded = (SubItem.expanded) ? false : true; + if(SubItem.expanded) { + MTMExpansion = true; + } + + MTMClickedItem = SubItem.number; + + if(MTMTrackedItem && MTMTrackedItem != SubItem.number) { + MTMTrackedItem = false; + } + + if(!ReturnValue) { + setTimeout("MTMDisplayMenu()", 10); + } + + return ReturnValue; +} + + +function MarkChildren(item, selected) +{ + if (item.submenu != null) + { + for (var x = 0; x < item.submenu.items.length; x++) + { + item.submenu.items[x].selected = selected; + item.submenu.items[x].childSelected = false; + MarkChildren(item.submenu.items[x],selected); + } + } + +} + +function isAllChildrenSelected(item) +{ + if (item.submenu != null) + { + for (var x = 0; x < item.submenu.items.length; x++) + { + if (!item.submenu.items[x].selected) + { + return false; + } + } + } + return true; +} + +function isSomeChildrenSelected(item) +{ + var retValue = false; + + if (item.submenu != null) + { + for (var x = 0; x < item.submenu.items.length; x++) + { + if (item.submenu.items[x].selected || item.submenu.items[x].childSelected) + { + retValue = true; + } + } + } + + return retValue; +} + +function ToggleSelected(item, ReturnValue) { + + item.selected = (item.selected) ? false : true; + item.childSelected = false; + + var currentNode = item; + + while (currentNode.parent) + { + currentNode.parent.selected = isAllChildrenSelected(currentNode.parent); + currentNode.parent.childSelected = isSomeChildrenSelected(currentNode.parent); + currentNode = currentNode.parent; + } + + MarkChildren(item,item.selected); + + if(!ReturnValue) { + setTimeout("MTMDisplayMenu()", 10); + } + + return ReturnValue; +} + + +function MTMStartMenu() { + MTMLoaded = true; + if(MTMFirstRun) { + MTMCurrentTime++; + if(MTMCurrentTime == MTMTimeOut) { // call MTMDisplayMenu + setTimeout("MTMDisplayMenu()",10); + } else { + setTimeout("MTMStartMenu()",100); + } + } +} + +function MTMDisplayMenu() { + if(MTMBrowser && !MTMUpdating) { + MTMUpdating = true; + MTMFirstRun = false; + + if(MTMTrack) { MTMTrackedItem = MTMTrackExpand(menu); } + + if(MTMExpansion && MTMSubsAutoClose) { MTMCloseSubs(menu); } + + MTMLevel = 0; + MTMDoc = parent.frames[MTMenuFrame].document + MTMDoc.open("text/html", "replace"); + MTMOutputString = ''; + if(MTMLinkedSS) { + MTMOutputString += ''; + } else if(MTMUseStyle) { + MTMOutputString += ''; + } + + MTMOutputString += ''; + + MTMOutputString += ''; + MTMOutputString += ''); + + MTMListItems(menu); + MTMDoc.writeln('
'; //REMOVED ROOT ICON '; + if(MTMUseStyle) { + MTMOutputString += ''; //REMOVED ROOT CAPTION  ' + MTMenuText + ''; + } else { + MTMOutputString += ''; //REMOVED ROOT CAPTION ' + MTMenuText + ''; + } + MTMDoc.writeln(MTMOutputString + '
'); + + MTMDoc.writeln(''); + MTMDoc.close(); + + if((MTMClickedItem || MTMTrackedItem) && (MTMNN4 || MTMIE4) && !MTMFirstRun) { + MTMItemName = "sub" + (MTMClickedItem ? MTMClickedItem : MTMTrackedItem); + if(document.layers && parent.frames[MTMenuFrame].scrollbars) { + MTMyval = parent.frames[MTMenuFrame].document.anchors[MTMItemName].y; + MTMWinSize = parent.frames[MTMenuFrame].innerHeight; + } else { + MTMyval = MTMGetPos(parent.frames[MTMenuFrame].document.all[MTMItemName]); + MTMWinSize = parent.frames[MTMenuFrame].document.body.offsetHeight; + } + if(MTMyval > (MTMWinSize - 60)) { + parent.frames[MTMenuFrame].scrollBy(0, parseInt(MTMyval - (MTMWinSize * 1/3))); + } + } + + MTMClickedItem = false; + MTMExpansion = false; + MTMTrack = false; + } +MTMUpdating = false; +} + +function MTMListItems(menu) { + var i, isLast; + for (i = 0; i < menu.items.length; i++) { + MTMIndices[MTMLevel] = i; + isLast = (i == menu.items.length -1); + MTMDisplayItem(menu.items[i], isLast); + + if (menu.items[i].submenu && menu.items[i].expanded) { + MTMBar[MTMLevel] = (isLast) ? false : true; + MTMLevel++; + MTMListItems(menu.items[i].submenu); + MTMLevel--; + } else { + MTMBar[MTMLevel] = false; + } + } + +} + +function MTMDisplayItem(item, last) { + var i, img, more; + + var MTMfrm = "parent.frames['code']"; + var MTMref = '.menu.items[' + MTMIndices[0] + ']'; + + if(item.submenu) { + var MTMouseOverText; + + var MTMClickCmd; + var MTMDblClickCmd = false; + + + if(MTMLevel > 0) { + for(i = 1; i <= MTMLevel; i++) { + MTMref += ".submenu.items[" + MTMIndices[i] + "]"; + } + } + + if(!MTMEmulateWE && !item.expanded && (item.url != "")) { + MTMClickCmd = "return " + MTMfrm + ".MTMSubAction(" + MTMfrm + MTMref + ",true);"; + } else { + MTMClickCmd = "return " + MTMfrm + ".MTMSubAction(" + MTMfrm + MTMref + ",false);"; + } + + if(item.url == "") { + MTMouseOverText = (item.text.indexOf("'") != -1) ? MTMEscapeQuotes(item.text) : item.text; + } else { + MTMouseOverText = "Expand/Collapse"; + } + } + + MTMOutputString = ''; + if(MTMLevel > 0) { + for (i = 0; i < MTMLevel; i++) { + MTMOutputString += (MTMBar[i]) ? MTMakeImage("menu_bar.gif") : MTMakeImage("menu_pixel.gif"); + } + } + + more = false; + if(item.submenu) { + if(MTMSubsGetPlus || MTMEmulateWE) { + more = true; + } else { + for (i = 0; i < item.submenu.items.length; i++) { + if (item.submenu.items[i].submenu) { + more = true; + } + } + } + } + if(!more) { + img = (last) ? "menu_corner.gif" : "menu_tee.gif"; + } else { + if(item.expanded) { + img = (last) ? "menu_corner_minus.gif" : "menu_tee_minus.gif"; + } else { + img = (last) ? "menu_corner_plus.gif" : "menu_tee_plus.gif"; + } + if(item.url == "" || item.expanded || MTMEmulateWE) { + MTMOutputString += MTMakeVoid(item, MTMClickCmd, MTMouseOverText); + } else { + MTMOutputString += MTMakeLink(item, true) + ' onclick="' + MTMClickCmd + '">'; + } + } + MTMOutputString += MTMakeImage(img); +///////////////////////////////////////// + +var MTMCheckRef = '.menu.items[' + MTMIndices[0] + ']'; +if(MTMLevel > 0) { + for(i = 1; i <= MTMLevel; i++) { + MTMCheckRef += ".submenu.items[" + MTMIndices[i] + "]"; + } + } + +MTMOutputString += MTMakeVoid(item, "return " + MTMfrm + ".ToggleSelected(" + MTMfrm + MTMCheckRef + ",false);", "Checked Status") ; +var checkedImage = item.selected ? "checked.gif" : "uchecked.gif"; +if (!item.selected) +{ + checkedImage = item.childSelected ? "gchecked.gif" : "uchecked.gif"; +} +MTMOutputString += MTMakeImage(checkedImage); +MTMOutputString += ''; +///////////////////////////////////////////////// + + + if(item.submenu) { + if(MTMEmulateWE && item.url != "") + { + MTMOutputString += '' + MTMakeLink(item, false) + '>'; + } + + img = (item.expanded) ? "menu_folder_open.gif" : "menu_folder_closed.gif"; + + if(!more) { + if(item.url == "" || item.expanded) { + MTMOutputString += MTMakeVoid(item, MTMClickCmd, MTMouseOverText); + } else { + MTMOutputString += MTMakeLink(item, true) + ' onclick="' + MTMClickCmd + '">'; + } + } + MTMOutputString += MTMakeImage(img); + + } else { + MTMOutputString += MTMakeLink(item, true) + '>'; + img = (item.icon != "") ? item.icon : MTMFetchIcon(item.url); + MTMOutputString += MTMakeImage(img); + } + + if(item.submenu && (item.url != "") && (item.expanded && !MTMEmulateWE)) { + MTMOutputString += '' + MTMakeLink(item, false) + '>'; + } + + if(MTMNN3 && !MTMLinkedSS) { + var stringColor; + if(item.submenu && (item.url == "") && (item.number == MTMClickedItem)) { + stringColor = (item.expanded) ? MTMSubExpandColor : MTMSubClosedColor; + } else if(MTMTrackedItem && MTMTrackedItem == item.number) { + stringColor = MTMTrackColor; + } else { + stringColor = MTMLinkColor; + } + MTMOutputString += ''; + } + MTMOutputString += ' ' + item.text + ((MTMNN3 && !MTMLinkedSS) ? '' : '') + '' ; + MTMDoc.writeln(MTMOutputString + ''); +} + +function MTMEscapeQuotes(myString) { + var newString = ""; + var cur_pos = myString.indexOf("'"); + var prev_pos = 0; + while (cur_pos != -1) { + if(cur_pos == 0) { + newString += "\\"; + } else if(myString.charAt(cur_pos-1) != "\\") { + newString += myString.substring(prev_pos, cur_pos) + "\\"; + } else if(myString.charAt(cur_pos-1) == "\\") { + newString += myString.substring(prev_pos, cur_pos); + } + prev_pos = cur_pos++; + cur_pos = myString.indexOf("'", cur_pos); + } + return(newString + myString.substring(prev_pos, myString.length)); +} + +function MTMTrackExpand(thisMenu) { + var i, targetPath; + var foundNumber = false; + for(i = 0; i < thisMenu.items.length; i++) { + if(thisMenu.items[i].url != "" && MTMTrackTarget(thisMenu.items[i].target)) { + targetPath = parent.frames[thisMenu.items[i].target].location.protocol + '//' + parent.frames[thisMenu.items[i].target].location.host + parent.frames[thisMenu.items[i].target].location.pathname; + + if(targetPath.lastIndexOf(thisMenu.items[i].url) != -1 && (targetPath.lastIndexOf(thisMenu.items[i].url) + thisMenu.items[i].url.length) == targetPath.length) { + return(thisMenu.items[i].number); + } + } + if(thisMenu.items[i].submenu) { + foundNumber = MTMTrackExpand(thisMenu.items[i].submenu); + if(foundNumber) { + if(!thisMenu.items[i].expanded) { + thisMenu.items[i].expanded = true; + if(!MTMClickedItem) { MTMClickedItem = thisMenu.items[i].number; } + MTMExpansion = true; + } + return(foundNumber); + } + } + } +return(foundNumber); +} + +function MTMCloseSubs(thisMenu) { + var i, j; + var foundMatch = false; + for(i = 0; i < thisMenu.items.length; i++) { + if(thisMenu.items[i].submenu && thisMenu.items[i].expanded) { + if(thisMenu.items[i].number == MTMClickedItem) { + foundMatch = true; + for(j = 0; j < thisMenu.items[i].submenu.items.length; j++) { + if(thisMenu.items[i].submenu.items[j].expanded) { + thisMenu.items[i].submenu.items[j].expanded = false; + } + } + } else { + if(foundMatch) { + thisMenu.items[i].expanded = false; + } else { + foundMatch = MTMCloseSubs(thisMenu.items[i].submenu); + if(!foundMatch) { + thisMenu.items[i].expanded = false; + } + } + } + } + } +return(foundMatch); +} + +function MTMFetchIcon(testString) { + var i; + for(i = 0; i < MTMIconList.items.length; i++) { + if((MTMIconList.items[i].type == 'any') && (testString.indexOf(MTMIconList.items[i].match) != -1)) { + return(MTMIconList.items[i].file); + } else if((MTMIconList.items[i].type == 'pre') && (testString.indexOf(MTMIconList.items[i].match) == 0)) { + return(MTMIconList.items[i].file); + } else if((MTMIconList.items[i].type == 'post') && (testString.indexOf(MTMIconList.items[i].match) != -1)) { + if((testString.lastIndexOf(MTMIconList.items[i].match) + MTMIconList.items[i].match.length) == testString.length) { + return(MTMIconList.items[i].file); + } + } + } +return("menu_link_default.gif"); +} + +function MTMGetPos(myObj) { + return(myObj.offsetTop + ((myObj.offsetParent) ? MTMGetPos(myObj.offsetParent) : 0)); +} + +function MTMCheckURL(myURL) { + var tempString = ""; + if((myURL.indexOf("http://") == 0) || (myURL.indexOf("https://") == 0) || (myURL.indexOf("mailto:") == 0) || (myURL.indexOf("ftp://") == 0) || (myURL.indexOf("telnet:") == 0) || (myURL.indexOf("news:") == 0) || (myURL.indexOf("gopher:") == 0) || (myURL.indexOf("nntp:") == 0) || (myURL.indexOf("javascript:") == 0)) { + tempString += myURL; + } else { + tempString += MTMPreHREF + myURL; + } +return(tempString); +} + +function MTMakeVoid(thisItem, thisCmd, thisText) { + var tempString = ""; + tempString += ''); +} + +function MTMakeLink(thisItem, addName) { + var tempString = ''); +} + +function MTMakeBackImage(thisImage) { + var tempString = 'transparent url("' + ((MTMPreHREF == "") ? "" : MTMPreHREF); + tempString += MTMenuImageDirectory + thisImage + '")' + return(tempString); +} + +function MTMakeA(thisType, thisText, thisColor) { + var tempString = ""; + tempString += 'a' + ((thisType == "pseudo") ? ':' : '.'); + return(tempString + thisText + '{color:' + thisColor + ';background:' + MTMakeBackground() + ';}'); +} + +function MTMakeBackground() { + return((MTMBackground == "") ? MTMBGColor : 'transparent'); +} + +function MTMTrackTarget(thisTarget) { + if(thisTarget.charAt(0) == "_") { + return false; + } else { + for(i = 0; i < MTMFrameNames.length; i++) { + if(thisTarget == MTMFrameNames[i]) { + return true; + } + } + } + return false; +} + + + + +/****************************************************************************** +* User-configurable options. * +******************************************************************************/ + +// Menu table width, either a pixel-value (number) or a percentage value. +var MTMTableWidth = "100%"; + +// Name of the frame where the menu is to appear. +var MTMenuFrame = "tocmain"; + +// variable for determining whether a sub-menu always gets a plus-sign +// regardless of whether it holds another sub-menu or not +var MTMSubsGetPlus = true; + + +// variable that defines whether the menu emulates the behaviour of +// Windows Explorer +var MTMEmulateWE = true; + +// Directory of menu images/icons +var MTMenuImageDirectory = "/ndk/doc/docui2k/menu-images/"; + +// Variables for controlling colors in the menu document. +// Regular BODY atttributes as in HTML documents. +var MTMBGColor = "#cc0000"; +var MTMBackground = ""; +var MTMTextColor = "white"; + +// color for all menu items +var MTMLinkColor = "#ffffcc"; + +// Hover color, when the mouse is over a menu link +var MTMAhoverColor = "#FF9933"; + +// Foreground color for the tracking & clicked submenu item +var MTMTrackColor ="#FF9933"; +var MTMSubExpandColor = "#ffffcc"; +var MTMSubClosedColor = "#ffffcc"; + +// All options regarding the root text and it's icon +var MTMRootIcon = "menu_new_root.gif"; +var MTMenuText = "Site contents:"; +var MTMRootColor = "white"; +var MTMRootFont = "Verdana"; +var MTMRootCSSize = "84%"; +var MTMRootFontSize = "-1"; + +// Font for menu items. +var MTMenuFont = "Verdana"; +var MTMenuCSSize = "74%"; +var MTMenuFontSize = "-1"; + +// Variables for style sheet usage +// 'true' means use a linked style sheet. +var MTMLinkedSS = false; +var MTMSSHREF = "style/menu.css"; + +// Whether you want an open sub-menu to close automagically +// when another sub-menu is opened. 'true' means auto-close +var MTMSubsAutoClose = false; + +// This variable controls how long it will take for the menu +// to appear if the tracking code in the content frame has +// failed to display the menu. Number if in tenths of a second +// (1/10) so 10 means "wait 1 second". +var MTMTimeOut = 25; + +/****************************************************************************** +* User-configurable list of icons. * +******************************************************************************/ + +var MTMIconList = null; +MTMIconList = new IconList(); +// examples: +//MTMIconList.addIcon(new MTMIcon("menu_link_external.gif", "http://", "pre")); +//MTMIconList.addIcon(new MTMIcon("menu_link_pdf.gif", ".pdf", "post")); + +/****************************************************************************** +* User-configurable menu. * +******************************************************************************/ + + +// navigation link is an object used to store the extracted information from +// the search request. The stored information will be used to build the +// navigation tree. + function navigationLink(title,URL,level,elementIndex,levelIndex,parentIndex,author) + { + var returnArray = new Array(); + returnArray.title = title; + returnArray.URL = URL; + returnArray.level = level; + returnArray.hasChild = false; + returnArray.elementIndex = elementIndex; + returnArray.parentIndex = parentIndex; + returnArray.levelIndex = levelIndex; + returnArray.author = author; + + return returnArray; + } + +// Variables used for tracking state as the search iterates through the list +// of documents returned. +var index = 0; +var currentLevel = 0; +var levelParents = new Array(); +var levelIndexes = new Array(); +var navigationTree = new Array(); +var treeNodes = new Array(); +var levelIndex = 0; +top.printList = ""; +top.printCount = 0; + +// asign the menu handle to the created tree +var menu = null; + + +function getNextChecked(item) +{ + // case that root of tree is selected + if ( item.parent == null && item.selected) + { + for (var i = 0 ; i < top.authors.length; i++) + { + var re = /\s$/; + + if (top.titles[i].replace(re,"") == item.text.replace(re,"")) + { + top.printList += (top.authors[i].length + 3) + "_" + top.authors[i].replace(/\s/g,"+") + "+en"; + top.printCount ++; + } + } + } + else if (item.submenu != null) + { + for (var x = 0; x < item.submenu.items.length; x++) + { + if (item.submenu.items[x].selected) + { + var name = item.submenu.items[x].text; + for (var i = 0 ; i < top.authors.length; i++) + { + var re = /\s$/; + if (top.titles[i].replace(re,"") == name.replace(re,"")) + { + top.printList += (top.authors[i].length + 3) + "_" + top.authors[i].replace(/\s/g,"+") + "+en"; + top.printCount ++; + } + } + + } + else + { + getNextChecked(item.submenu.items[x]); + } + } + } + +} + +// Get a URL to pass checked topics to the Print Servlet + + + +function getPrintUrl(menu) +{ + top.printList = ""; + top.printCount = 0; + + getNextChecked(menu.items[0]); + top.printList = top.printCount + "_" + top.printList; + + return top.printList; +} + +function setLevels() +{ + + // Tracking the parent of the next node. + levelParents[currentLevel + 1] = index; + + // levelIndex is the child index under a branch + if (levelIndexes[currentLevel] == null) + { + levelIndexes[currentLevel] = 0; + } + else + { + levelIndexes[currentLevel] = levelIndexes[currentLevel] + 1; + levelIndexes[currentLevel + 1] = -1; + } +} + +function buildTree() +{ + +// Determine which nodes have children and assign the correct property +for (var i = 0; i < navigationTree.length-1; i++) +{ + // see if the current node has chilren + var thisLevel = navigationTree[i]["level"]; + var nextLevel = navigationTree[i+1]["level"]; + + if (nextLevel > thisLevel) + { + navigationTree[i]["hasChild"] = true; + } + else + { + navigationTree[i]["hasChild"] = false; + } +} + + +// create tree object nodes. +for( var j = 0; j < navigationTree.length; j++) +{ + treeNodes[j] = null; + treeNodes[j] = new MTMenu(); +} + + +// add all items to nodes - +// NOTE, index to add to is the parent index + 1 for node tree offset of root=0 +for( var j3 = 0; j3 < navigationTree.length; j3++) +{ + if (navigationTree[j3]["parentIndex"] == null) + { + var nsearchID = navigationTree[j3]["author"]; + treeNodes[0].MTMAddItem(new MTMenuItem(navigationTree[j3]["title"], navigationTree[j3]["URL"].replace(/http...developer.novell.com.ndk/gi,"/ndk") , "content_frame", nsearchID)); + } + else + { + var nsearchID = navigationTree[j3]["author"]; + treeNodes[navigationTree[j3]["parentIndex"] + 1 ].MTMAddItem(new MTMenuItem(navigationTree[j3]["title"], navigationTree[j3]["URL"].replace(/http...developer.novell.com.ndk/gi,"/ndk"), "content_frame",nsearchID)); + } +} + +// create submenu structure +// NOTE: add 1 to parent nodes for root = 0 offset. +for( var j4 = 0; j4 < navigationTree.length; j4++) +{ + if (navigationTree[j4]["hasChild"]) + { + var pindex = null; + if (navigationTree[j4]["parentIndex"] == null) + { + + pindex = 0; + } + else + { + pindex = navigationTree[j4]["parentIndex"]+1; + } + + var lindex = navigationTree[j4]["levelIndex"]; + // document.write('treeNodes[' + pindex +'].items['+ lindex +'].MTMakeSubmenu(treeNodes['+(j4+1)+']);
'); + + treeNodes[pindex].items[lindex].MTMakeSubmenu(treeNodes[j4+1]); + } +} + + menu = treeNodes[0]; + +//expand the second item to display the sub contents on first display +if (menu.items[0] != null ) +{ + menu.items[0].expanded = true; + +} + + + +} + + + +currentLevel++; + +setLevels(); +var navElement = navigationLink("NDS Libraries for C ","http://developer.novell.com/ndk/doc/ndslib/treetitl.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("NDS Backup Services ","http://developer.novell.com/ndk/doc/ndslib/dsbk_enu/data/hevgtl7k.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Functions ","http://developer.novell.com/ndk/doc/ndslib/dsbk_enu/data/h7qwv271.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("NDSBackupServerData ","http://developer.novell.com/ndk/doc/ndslib/dsbk_enu/data/sdk5.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSFreeNameList ","http://developer.novell.com/ndk/doc/ndslib/dsbk_enu/data/sdk12.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSGetReplicaPartitionNames ","http://developer.novell.com/ndk/doc/ndslib/dsbk_enu/data/sdk19.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSIsOnlyServerInTree ","http://developer.novell.com/ndk/doc/ndslib/dsbk_enu/data/sdk26.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSSYSVolumeRecovery ","http://developer.novell.com/ndk/doc/ndslib/dsbk_enu/data/sdk33.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSVerifyServerInfo ","http://developer.novell.com/ndk/doc/ndslib/dsbk_enu/data/sdk40.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Structures ","http://developer.novell.com/ndk/doc/ndslib/dsbk_enu/data/hqp7vveq.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("NAMEID_TYPE ","http://developer.novell.com/ndk/doc/ndslib/dsbk_enu/data/sdk48.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Values ","http://developer.novell.com/ndk/doc/ndslib/dsbk_enu/data/hmmmal7s.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("NDS Reason Flags ","http://developer.novell.com/ndk/doc/ndslib/dsbk_enu/data/h3r99io5.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDS Server Flags ","http://developer.novell.com/ndk/doc/ndslib/dsbk_enu/data/hnlckbki.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Revision History ","http://developer.novell.com/ndk/doc/ndslib/dsbk_enu/data/a5i29ah.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("NDS Event Services ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/hmwiqbwd.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Concepts ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/hj3udfo7.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("NDS Event Introduction ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/hmgeu8a1.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDS Event Functions ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/hxwcemsz.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDS Event Priorities ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/hux0tdup.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDS Event Data Filtering ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/ha7nqbpy.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDS Event Types ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/h741eryw.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Global Network Monitoring ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/h9alatk4.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Tasks ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/huypg52u.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Monitoring NDS Events ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/hhkihe7f.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Registering for NDS Events ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/h0xmzt1h.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Unregistering for NDS Events ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/hk3fvwed.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Functions ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/h7qwv271.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("NWDSEConvertEntryName ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk28.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSEGetLocalAttrID ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk33.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSEGetLocalAttrName ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk39.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSEGetLocalClassID ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk45.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSEGetLocalClassName ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk51.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSEGetLocalEntryID ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk57.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSEGetLocalEntryName ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk63.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSERegisterForEvent ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk69.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSERegisterForEventWithResult ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk75.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSEUnRegisterForEvent ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk81.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Structures ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/hqp7vveq.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("DSEACL ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk88.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEBackLink ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk92.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEBinderyObjectInfo ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk96.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEBitString ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk100.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEChangeConnState ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk104.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSECIList ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk108.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEDebugInfo ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk112.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEEmailAddress ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk116.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEEntryInfo ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk120.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEEntryInfo2 ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk124.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEEventData ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk128.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEFaxNumber ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk132.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEHold ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk135.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEModuleState ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk139.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSENetAddress ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk143.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEOctetList ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk147.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEPath ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk151.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEReplicaPointer ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk155.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSESEVInfo ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk159.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSETimeStamp ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk163.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSETraceInfo ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk167.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSETypedName ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk172.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEVALData ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk176.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSEValueInfo ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/sdk179.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Values ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/hmmmal7s.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Event Priorities ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/hlerfllh.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Event Types ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/hiz5y84y.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Revision History ","http://developer.novell.com/ndk/doc/ndslib/dsev_enu/data/a6hw6zr.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("NDS Technical Overview ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/h6tvg4z7.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("NDS as the Internet Directory ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/h273w870.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Requirements for Networks and the Internet ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/a2lh37b.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDS Compliance to X.500 Standard ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/h0jj42d7.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDS Compliance with LDAP v3 ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/a2b6k5w.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Directory Access Protocols ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/a2b6k5x.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Programming Interfaces for NDS ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/h2qzzkq8.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDS Architecture ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/h6mny7fl.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("NDS Objects ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hp4dslw5.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("NDS Names ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/h0yh1byj.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Types of Information Stored in NDS ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hci52ynf.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Retrieval of Information from NDS ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hwwz5mda.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Tree Walking ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/h2xhaphc.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDS Object Management ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/h3mq2rf0.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("NDS Security ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hl8x1zxc.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Authentication ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hp901s8a.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Access Control Lists ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hr8sqtoi.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Inheritance ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hh9881ul.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NetWare File System ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/h64btfhk.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Partitions and Replicas ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hmq60r6h.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Partitioning ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hqx5hvrp.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Replication ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hj5l8npv.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Distributed Reference Management ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hzap47de.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Partition Operations ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hgbpk7x9.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Synchronization ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hsiplgn4.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Background Processes ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hz2kcp2e.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Bindery Services ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hwug6ytv.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("NDS Bindery Context ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/h8dwby8o.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Bindery Context Path ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/h6y3yva6.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Bindery Context Eclipsing ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hwcqk80m.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDS Bindery Objects ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hq4w9le6.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("NDS Return Values ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hbjry4gt.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("NDS Return Values from the Operating System ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/h5h16q77.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDS Client Return Values ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/he2lvhfy.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDS Agent Return Values ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hcvwzt90.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Directory Services Trace Utilities ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hujirj2n.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Using the DSTrace NLM ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hmg1e5gn.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Using Basic SET DSTrace Commands ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hdn0smja.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Starting Background Processes with SET DSTrace ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/h5pjd8fv.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Tuning Background Processes ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hhv9cqpk.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Enabling DSTrace Messages with SET DSTrace ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/hcah5j8v.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Revision History ","http://developer.novell.com/ndk/doc/ndslib/dsov_enu/data/a5i29ah.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("NDS Core Services ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h2y7hdit.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Programming Concepts ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h2x9gqr9.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Context Handles ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/huynzi7a.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Buffer Management ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h9xiygoj.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Read Requests for Object Information ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h7d6try4.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Search Requests ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h11es6ae.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Developing in a Loosely Consistent Environment ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hsaqomj7.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Add Object Requests ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hqjws9hi.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDS Security and Applications ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h3xwyggn.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Authentication of Client Applications ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h0m1k6ck.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Multiple Tree Support ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hu5a8flo.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Effective Rights Function ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/he06edkq.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Partition Functions ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/ha7fzu9h.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Replica Functions ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hpmsr4w7.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Read Requests for Schema Information ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h0a2o4v9.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Schema Extension Requests ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hrgy5k6e.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Tasks ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/huypg52u.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Context Handle Tasks ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hw34ixeu.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Buffer Tasks ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hb1nkqk4.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Authentication and Connection Tasks ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/huzx6sda.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Object Tasks ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hddp9m9i.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Partition and Replica Tasks ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hpx2o69b.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Schema Tasks ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hp85l75p.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Functions ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h7qwv271.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("NWDSAbbreviateName ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk135.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSAbortPartitionOperation ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk144.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSAddFilterToken ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk153.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSAddObject ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk162.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSAddPartition (obsolete---moved from .h file 11/99) ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk171.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSAddReplica ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk180.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSAddSecurityEquiv ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk189.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSAllocBuf ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk198.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSAllocFilter ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk207.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSAuditGetObjectID ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk216.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSAuthenticate ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk225.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSAuthenticateConn ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk234.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSAuthenticateConnEx ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/a3fvxoz.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSBackupObject ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk243.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSBeginClassItem ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk252.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSCanDSAuthenticate ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk261.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSCanonicalizeName ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk270.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSChangeObjectPassword ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk279.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSChangeReplicaType ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk288.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSCIStringsMatch ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk297.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSCloseIteration ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk305.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSCompare ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk314.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSComputeAttrValSize ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk360.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSCreateContext (obsolete---moved from .h file 6/99) ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk369.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSCreateContextHandle ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk371.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSDefineAttr ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk382.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSDefineClass ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk391.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSDelFilterToken ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk402.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSDuplicateContext (obsolete 03/99) ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk412.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSDuplicateContextHandle ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk423.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSExtSyncList ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk434.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSExtSyncRead ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk443.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSExtSyncSearch ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk455.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSFreeBuf ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk465.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSFreeContext ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk474.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSFreeFilter ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk491.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGenerateObjectKeyPair ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk501.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetAttrCount ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk511.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetAttrDef ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk521.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetAttrName ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk530.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetAttrVal ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk540.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetAttrValFlags ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk550.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetAttrValModTime ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk558.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetBinderyContext ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk566.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetClassDef ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk603.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetClassDefCount ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk691.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetClassItem ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk769.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetClassItemCount ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk838.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetContext ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk919.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetCountByClassAndName ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk972.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetCurrentUser ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk1031.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetDefNameContext ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk1041.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetDSIInfo ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk1117.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetDSVerInfo ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk1209.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetEffectiveRights ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk1274.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetMonitoredConnRef ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk1346.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetNDSInfo ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk1425.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetObjectCount ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk1528.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetObjectHostServerAddress ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk1604.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetObjectName ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk1640.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetObjectNameAndInfo ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk1700.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetPartitionExtInfo ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk1781.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetPartitionExtInfoPtr ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk1830.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetPartitionInfo ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk1938.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetPartitionRoot ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2001.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetServerAddresses (obsolete 3/98) ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2021.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetServerAddresses2 ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2030.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetServerDN ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2039.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetServerName ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2047.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetSyntaxCount ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2056.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetSyntaxDef ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2065.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSGetSyntaxID ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2074.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSInitBuf ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2082.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSInspectEntry ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2091.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSJoinPartitions ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2099.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSList ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2108.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSListAttrsEffectiveRights ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2117.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSListByClassAndName ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2126.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSListContainableClasses ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2135.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSListContainers ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2144.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSListPartitions ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2153.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSListPartitionsExtInfo ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2162.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSLogin ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2171.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSLoginAsServer ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2180.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSLogout ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2187.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSMapIDToName ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2196.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSMapNameToID ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2205.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSModifyClassDef ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2214.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSModifyDN ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2223.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSModifyObject ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2232.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSModifyRDN ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2241.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSMoveObject ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2250.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSMutateObject ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/a37nkf6.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSOpenConnToNDSServer ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2259.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSOpenMonitoredConn ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2268.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSOpenStream ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2277.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSPartitionReceiveAllUpdates ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2285.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSPartitionSendAllUpdates ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2294.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSPutAttrName ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2303.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSPutAttrNameAndVal ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2312.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSPutAttrVal ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2321.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSPutChange ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2330.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSPutChangeAndVal ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2339.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSPutClassItem ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2348.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSPutClassName ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2357.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSPutFilter ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2364.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSPutSyntaxName ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2373.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSRead ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2380.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSReadAttrDef ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2389.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSReadClassDef ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2398.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSReadNDSInfo ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2407.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSReadObjectDSIInfo ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2416.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSReadObjectInfo ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2425.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSReadReferences ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2434.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSReadSyntaxDef ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2443.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSReadSyntaxes ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2451.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSReloadDS ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2459.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSRemoveAllTypes ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2467.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSRemoveAttrDef ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2475.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSRemoveClassDef ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2484.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSRemoveObject ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2493.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSRemovePartition ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2501.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSRemoveReplica ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2510.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSRemSecurityEquiv ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2519.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSRepairTimeStamps ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2528.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSReplaceAttrNameAbbrev ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2536.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSResolveName ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2544.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSRestoreObject ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2553.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSReturnBlockOfAvailableTrees ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2562.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSScanConnsForTrees ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2573.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSScanForAvailableTrees ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2582.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSSearch ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2591.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSSetContext ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2600.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSSetCurrentUser ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2609.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSSetDefNameContext ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2615.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSSetMonitoredConnection ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2624.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSSplitPartition ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2633.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSSyncPartition ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2642.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSSyncReplicaToServer ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2651.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSSyncSchema ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2660.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSUnlockConnection ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2669.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSVerifyObjectPassword ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2678.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSWhoAmI ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2687.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWGetDefaultNameContext ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2695.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWGetFileServerUTCTime ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2704.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWGetNumConnections ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2712.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWGetNWNetVersion ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2720.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWGetPreferredConnName ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2727.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWIsDSAuthenticated ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2736.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWIsDSServer ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2743.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWNetInit ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2750.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWNetTerm ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2759.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWSetDefaultNameContext ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2767.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWSetPreferredDSTree ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2776.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Structures ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hqp7vveq.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Asn1ID_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2785.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Attr_Info_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2790.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Back_Link_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2795.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Bit_String_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2800.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Buf_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2805.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("CI_List_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2810.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Class_Info_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2815.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("EMail_Address_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2820.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Fax_Number_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2826.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Filter_Cursor_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2831.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Filter_Node_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2836.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Hold_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2841.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSOSVersion_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2846.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSStatsInfo_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2850.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Net_Address_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2855.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDS_TimeStamp_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2860.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Object_ACL_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2865.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Object_Info_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2870.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Octet_List_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2875.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Octet_String_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2880.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Path_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2885.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Replica_Pointer_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2890.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Syntax_Info_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2895.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("TimeStamp_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2900.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Typed_Name_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2906.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Unknown_Attr_T ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/sdk2911.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Values ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hmmmal7s.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Attribute Constraint Flags ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hudjk3k4.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Attribute Value Flags ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h6anqw6h.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Buffer Operation Types and Related Functions ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h8bn0lfm.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Class Flags ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hpj620k3.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Change Types for Modifying Objects ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hc4p686b.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Context Keys and Flags ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h1btx3en.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Default Context Key Values ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hlkcqs3t.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DCK_FLAGS Bit Values ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/he1wcp92.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DCK_NAME_FORM Values ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hmd7uuiw.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DCK_CONFIDENCE Bit Values ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h7hy5yg3.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DCK_DSI_FLAGS Values ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/huh0ri39.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSI_ENTRY_FLAGS Values ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hqwiyl1u.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Filter Tokens ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h487zxy3.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Information Types for Attribute Definitions ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hdqx1cns.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Information Types for Class Definitions ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hcq403ms.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Information Types for Search and Read ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/ha682lf8.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Name Space Types ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hs6qj0yl.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDS Access Control Rights ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h12s89uj.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDS Ping Flags ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hf0fdqhd.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DSP Replica Information Flags ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hw42a7qg.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Network Address Types ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hniuyp90.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Scope Flags ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h6wfyyfk.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Replica Types ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/he290q86.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Replica States ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/h9br9yt1.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Syntax Matching Flags ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hd8fn0rm.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Syntax IDs ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hn1dsa7y.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("NDS Example Code ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/hb05g04v.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Context Handle ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/a2sofgc.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Object and Attribute ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/a2snp6e.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Browsing and Searching ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/a2snu78.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Batch Modification of Objects and Attributes ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/a2snzot.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Schema ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/a2snqyd.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Revision History ","http://developer.novell.com/ndk/doc/ndslib/nds__enu/data/a5i29ah.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("NDS Schema Reference ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/h4q1mn1i.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Schema Concepts ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/h282spjh.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Schema Structure ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hpmkggmh.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Schema Components ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hvt5bdoi.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Object Classes ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hbna398k.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Naming Attributes ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/h9vf1k0r.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Containment Classes ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hh1izaro.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Super Classes ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hmdjysrx.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Object Class Flags ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/h6rvyaky.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Mandatory and Optional Attributes ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/h2vnta8j.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Default ACL Templates ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hr9sm1l0.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Auxiliary Classes ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hlh5m1af.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Attribute Type Definitions ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hotadinr.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Attribute Syntax Definitions ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/h2m59phc.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Schema Extensions ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/he5mef3b.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Base Object Class Definitions ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hmv2qd15.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("AFP Server ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk75.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Alias ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk83.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("applicationEntity ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk91.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("applicationProcess ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk99.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Audit:File Object ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk107.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Bindery Object ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk115.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Bindery Queue ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk123.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("certificationAuthority ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk131.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("CommExec ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk139.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Computer ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk147.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Country ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk155.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("cRLDistributionPoint ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk163.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("dcObject ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk171.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Device ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk179.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Directory Map ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk187.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("domain ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk195.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("dSA ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk203.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("External Entity ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk219.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Group ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk227.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Group ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a38rj6z.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Server ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk243.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("List ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk251.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Locality ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk259.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("MASV:Security Policy ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk267.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Message Routing Group ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk275.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Messaging Server ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk283.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NCP Server ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk291.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("ndsLoginProperties ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk347.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Certificate Authority ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk355.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Key Material ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk363.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:SD Key Access Partition ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a2okvd6.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:SD Key List ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a2okvdx.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Trusted Root ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a2okvbk.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Trusted Root Object ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a2okvcf.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:groupOfCertificates ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk421.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:mailGroup1 ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk445.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:mailRecipient ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk466.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:NetscapeMailServer5 ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk474.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:NetscapeServer5 ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk482.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:nginfo3 ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk510.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:nsLicenseUser ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk518.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Organization ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk530.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Organizational Person ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk541.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Organizational Role ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk550.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Organizational Unit ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk561.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Partition ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk570.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Person ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk578.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("pkiCA ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk586.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("pkiUser ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk594.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Print Server ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk602.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Printer ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk610.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Profile ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk618.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Queue ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk626.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Resource ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk634.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SAS:Security ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk642.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SAS:Service ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk650.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Server ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk658.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("strongAuthenticationUser ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk698.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Template ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk706.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Top ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk714.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Tree Root ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk722.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Unknown ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk730.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("User ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk738.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("userSecurityInformation ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk746.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Volume ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk754.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("WANMAN:LAN Area ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk762.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Novell Object Class Extensions ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3fh4x1.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Entrust:CRLDistributionPoint ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk211.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("inetOrgPerson ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk235.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Broker ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk299.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Manager ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk307.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Printer ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk315.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Catalog ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk323.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Master Catalog ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk331.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Slave Catalog ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk339.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NetSvc ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk379.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:License Certificate ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk386.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:License Server ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk394.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Product Container ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk412.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:groupOfUniqueNames5 ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk432.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:mailGroup5 ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk454.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:Nginfo ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk491.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:Nginfo2 ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk502.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("residentialPerson ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3omhcl.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP Scope Unit ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk666.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP Directory Agent ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk674.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP Service ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk682.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SMS SMDR Class ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk690.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Graphical View of Object Class Inheritance ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hzah4ydk.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Alias and Bindery Object Classes ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hw8hr9jx.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Tree Root, domain, and Unknown ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hu1mitlx.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Computer, Country, Device, and Printer ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hnf7uif9.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("List and Locality ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/h48ynbap.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Organizational Role and Partition ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hrfg9w4e.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("ndsLoginProperties, Organization, and Organizational Unit ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hzvb48kg.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("ndsLoginProperties, Person, Organizational Person, and User ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hknzjmiv.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Directory Map, Profile, Queues, Resource, and Volume ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/h8jovuwl.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Servers (AFP, Messaging, NCP, Print) and CommExec ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/ha47y85g.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("External Entity, Group, and Message Routing Group ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hds3w6ie.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Base Attribute Definitions ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/hf9qbbni.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Aliased Object Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk782.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Account Balance ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk788.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("ACL ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk794.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Allow Unlimited Credit ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk800.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("associatedName ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a7bbra4.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("attributeCertificate ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk806.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Audit:A Encryption Key ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk812.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Audit:B Encryption Key ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk818.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Audit:Contents ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk824.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Audit:Current Encryption Key ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk830.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Audit:File Link ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk836.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Audit:Link List ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk842.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Audit:Path ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk848.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Audit:Policy ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk854.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Audit:Type ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk860.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("authorityRevocationList ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk866.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Authority Revocation ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk872.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("AuxClass Object Class Backup ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk878.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Auxiliary Class Flag ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk884.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Back Link ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk890.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Bindery Object Restriction ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk896.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Bindery Property ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk902.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Bindery Restriction Level ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk908.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Bindery Type ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk914.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("businessCategory ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk920.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink(" ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk932.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("cACertificate ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk938.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("CA Private Key ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk944.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("CA Public Key ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk950.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Cartridge ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk956.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("certificateRevocationList ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk962.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Certificate Revocation ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk968.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Certificate Validity Interval ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk974.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("crossCertificatePair ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk926.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink(" ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk986.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Convergence ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk998.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Cross Certificate Pair ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1004.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("dc ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1034.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Default Queue ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1040.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("deltaRevocationList ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1052.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("departmentNumber ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3on5am.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Description ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1058.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("destinationIndicator ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1064.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Detect Intruder ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1070.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Device ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1076.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("dmdName ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1082.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("dn ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1088.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("dnQualifier ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1094.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("DS Revision ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1100.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("EMail Address ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1106.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("employeeType ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3on9iy.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("enhancedSearchGuide ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1120.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Equivalent To Me ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1138.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("External Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1144.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("External Synchronizer ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1150.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Facsimile Telephone Number ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1156.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Full Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1162.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Generational Qualifier ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1168.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("generationQualifier ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1174.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink(" ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1180.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Given Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1186.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink(" ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1192.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("GUID ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1198.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("High Convergence Sync Interval ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1216.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Higher Privileges ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1222.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Home Directory ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1228.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Home Directory Rights ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1234.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("homePhone ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3onbgn.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("homePostalAddress ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3ondem.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("houseIdentifier ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1258.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Host Device ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1240.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Host Resource Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1246.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Host Server ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1252.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Inherited ACL ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1264.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Initials ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1270.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("internationaliSDNNumber ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1276.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Internet EMail Address ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1282.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Intruder Attempt Reset Interval ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1288.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Intruder Lockout Reset Interval ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1294.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("knowledgeInformation ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1312.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink(" ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1318.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Language ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1324.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Last Login Time ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1330.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Last Referenced Time ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1336.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP ACL v11 ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1342.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Allow Clear Text Password ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1348.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Anonymous Identity ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1354.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Attribute Map v11 ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1360.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Backup Log Filename ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1366.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Class Map v11 ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1378.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Enable SSL ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1384.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Enable TCP ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1390.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Enable UDP ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1396.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Group ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1402.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Host Server ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1408.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Log Filename ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1414.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Log Level ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1420.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Log Size Limit ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1426.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Referral ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1432.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Screen Level ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1438.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Search Size Limit ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1444.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Search Time Limit ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1450.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Server ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1456.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Server Bind Limit ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1462.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Server Idle Timeout ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1468.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Server List ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1474.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP SSL Port ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1480.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Suffix ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1486.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP TCP Port ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1492.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP UDP Port ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1498.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP:bindCatalog ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1516.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP:bindCatalogUsage ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1522.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP:keyMaterialName ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1546.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP:otherReferralUsage ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1552.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP:searchCatalog ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1558.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP:searchCatalogUsage ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1564.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP:searchReferralUsage ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1570.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Locked By Intruder ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1576.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Lockout After Detection ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1582.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Login Allowed Time Map ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1588.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Login Disabled ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1594.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Login Expiration Time ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1600.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Login Grace Limit ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1606.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Login Grace Remaining ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1612.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Login Intruder Address ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1618.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Login Intruder Attempts ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1624.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Login Intruder Limit ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1630.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Login Intruder Reset Time ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1636.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Login Maximum Simultaneous ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1642.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Login Script ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1648.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Login Time ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1654.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Low Convergence Reset Time ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1660.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Low Convergence Sync Interval ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1666.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Mailbox ID ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1672.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Mailbox Location ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1678.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("manager ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3onljj.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("masvAuthorizedRange ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1684.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("masvDefaultRange ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1690.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("masvDomainPolicy ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1696.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("masvLabel ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1702.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("masvProposedLabel ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1708.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Member ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1726.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Members Of Template ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1732.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Memory ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1738.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Message Routing Group ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1744.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Message Server ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1750.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Messaging Database Location ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1756.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Messaging Server ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1762.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink(" ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1768.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Minimum Account Balance ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1786.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("mobile ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3oojmc.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Certificate Chain ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4104.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Given Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4110.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Key File ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4116.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Key Material DN ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4122.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Keystore ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a2oknqe.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Not After ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a2oknpk.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Not Before ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a2oknpe.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Parent CA ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4128.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Parent CA DN ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4134.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Private Key ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4140.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Public Key ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4146.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Public Key Certificate ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4152.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:SD Key Cert ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a2oknq2.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:SD Key ID ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a2oknq8.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:SD Key Server DN ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a2oknpq.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:SD Key Struct ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a2oknpw.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Subject Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4158.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Tree CA DN ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4164.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:Trusted Root Certificate ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a2oknp8.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSPKI:userCertificateInfo ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a2oknp2.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Network Address ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4170.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Network Address Restriction ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4176.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("New Object's DS Rights ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4182.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("New Object's FS Rights ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4188.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("New Object's Self Rights ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4194.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NNS Domain ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4338.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Notify ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4374.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:administratorContactInfo ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4392.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:adminURL ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4398.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:AmailAccessDomain ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4404.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:AmailAlternateAddress ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4410.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:AmailAutoReplyMode ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4416.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:AmailAutoReplyText ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4422.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:AmailDeliveryOption ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4428.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:AmailForwardingAddress ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4434.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:AmailHost ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4440.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:AmailMessageStore ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4446.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:AmailProgramDeliveryInfo ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4452.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:AmailQuota ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4458.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:AnsLicenseEndTime ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4464.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:AnsLicensedFor ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4470.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:AnsLicenseStartTime ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4476.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:employeeNumber ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4482.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:installationTimeStamp ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4488.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:mailRoutingAddress ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a2ixy4e.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:memberCertificateDesc ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4554.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:mgrpRFC822mailmember ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4560.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:ngcomponentCIS ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4572.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:nsaclrole ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4578.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:nscreator ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4584.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:nsflags ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4590.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:nsnewsACL ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4614.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:nsprettyname ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4620.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:serverHostName ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4626.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:serverProductName ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4632.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:serverRoot ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4638.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:serverVersionNumber ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4644.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:subtreeACI ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4650.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink(" ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4656.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Obituary ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4662.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Obituary Notify ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4668.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Object Class ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4674.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Operator ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4680.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Other GUID ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4686.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink(" ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4692.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Owner ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4698.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Page Description Language ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4704.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("pager ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3oojmj.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Partition Control ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4716.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Partition Creation Time ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4722.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Partition Status ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4728.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Password Allow Change ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4734.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Password Expiration Interval ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4740.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Password Expiration Time ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4746.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Password Management ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4752.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Password Minimum Length ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4758.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Password Required ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4764.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Password Unique Required ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4770.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Passwords Used ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4776.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Path ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4782.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Permanent Config Parms ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4788.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Physical Delivery Office Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4794.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Postal Address ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4800.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Postal Code ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4806.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Postal Office Box ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4812.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Postmaster ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4818.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("preferredDeliveryMethod ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4824.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("presentationAddress ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4830.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Print Job Configuration ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4848.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Print Server ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4854.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Printer ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4860.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Printer Configuration ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4872.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Printer Control ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4878.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Private Key ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4914.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Profile ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4920.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Profile Membership ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4926.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("protocolInformation ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4932.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Public Key ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4944.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Purge Vector ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4950.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Queue ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4956.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Queue Directory ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4962.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Received Up To ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4968.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Reference ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4974.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("registeredAddress ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4980.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Replica ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5010.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Replica Up To ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5016.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Resource ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5028.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Revision ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5064.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Role Occupant ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5070.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("roomNumber ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5076.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Run Setup Script ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5082.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink(" ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5088.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink(" ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5094.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SAP Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5100.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SAS:Security DN ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5106.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SAS:Service DN ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5112.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("searchGuide ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5118.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("searchSizeLimit ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5124.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("searchTimeLimit ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5130.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Security Equals ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5136.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Security Flags ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5142.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("See Also ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5148.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Serial Number ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5154.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Server ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5160.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Server Holds ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5166.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Set Password After Create ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5172.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Setup Script ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5178.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Status ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5286.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("supportedAlgorithms ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5298.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("supportedApplicationContext ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5304.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Supported Connections ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5310.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Supported Gateway ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5316.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Supported Services ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5322.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Supported Typefaces ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5328.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Surname ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5334.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Synchronization Tolerance ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5358.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Synchronized Up To ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5364.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink(" ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5370.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Telephone Number ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5376.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("telexNumber ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5382.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("telexTerminalIdentifier ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5388.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Timezone ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5394.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Title ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5400.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Transitive Vector ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5406.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Trustees Of New Object ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5412.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Type Creator Map ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5418.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink(" ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5424.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("uniqueID ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5430.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Unknown ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5436.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Unknown Auxiliary Class ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5442.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Unknown Base Class ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5448.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Used By ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5454.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("User ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5460.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("userCertificate ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5466.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("userPassword ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a6m1fnz.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Uses ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5472.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Version ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5478.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Volume ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5484.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Volume Space Restrictions ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5490.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("WANMAN:Cost ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5496.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("WANMAN:Default Cost ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5502.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("WANMAN:LAN Area Membership ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5508.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("WANMAN:WAN Policy ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5514.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("x121Address ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5520.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("x500UniqueIdentifier ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5526.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Novell Attribute Extensions ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3fh5xp.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("audio ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3omwno.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("carLicense ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3on4e7.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Client Install Candidate ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk980.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Color Supported ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk992.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Database Dir Path ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1010.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Database Volume Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1016.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Datapool Location ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1022.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Datapool Locations ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1028.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Delivery Methods Installed ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1046.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("displayName ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3oorbo.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Employee ID ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1114.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Entrust:AttributeCertificate ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1126.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Entrust:User ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1132.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("GW API Gateway Directory Path ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1204.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("GW API Gateway Directory Volume ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1210.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("IPP URI ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1300.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("IPP URI Security Scheme ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1306.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("jpegPhoto ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3onfdu.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("labeledUri ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3onkke.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP Class Map ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1372.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("ldapPhoto ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3op8zp.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAPUserCertificate ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1504.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP:ARL ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1510.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP:caCertificate ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1528.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP:CRL ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1534.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("LDAP:crossCertificatePair ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1540.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("MASV:Authorized Range ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a9j2co5.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("MASV:Default Range ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a9j2cob.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("MASV:Domain Policy ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a9j2coh.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("MASV:Label ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a9j2con.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("MASV:Proposed Label ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a9j2cot.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Maximum Speed ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1714.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Maximum Speed Units ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1720.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("MHS Send Directory Path ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1774.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("MHS Send Directory Volume ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1780.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Accountant Role ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1792.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Control Flags ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1798.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Database Saved Timestamp ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1804.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Database Saved Data Image ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1810.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Database Saved Index Image ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1816.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Default Printer ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1822.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Default Public Printer ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1828.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Job Configuration ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1834.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Manager Status ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1840.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Operator Role ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1846.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Printer Install List ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1852.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Printer Install Timestamp ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1858.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Printer Queue List ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1864.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Printer Siblings ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1870.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Public Printer Install List ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1876.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS Replace All Client Printers ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1882.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS SMTP Server ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1888.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDPS User Role ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1894.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Actual All Attributes ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1900.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Actual Attribute Count ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1906.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Actual Attributes ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1912.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Actual Base Object ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1918.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Actual Catalog Size ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1924.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Actual End Time ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1930.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Actual Filter ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1936.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Actual Object Count ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1942.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Actual Return Code ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1948.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Actual Scope ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1954.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Actual Search Aliases ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1960.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Actual Start Time ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1966.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Actual Value Count ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1972.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:All Attributes ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1978.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:AttrDefTbl ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1984.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Attributes ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1990.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Auto Dredge ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk1996.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Base Object ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk2002.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:CatalogDB ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk2008.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Catalog List ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk2014.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Dredge Interval ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4008.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Filter ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4014.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:IndexDefTbl ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4020.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Indexes ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4026.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Label ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4032.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Log ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4038.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Master Catalog ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4044.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Max Log Size ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4050.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Max Retries ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4056.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Max Threads ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4062.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Retry Interval ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4068.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Scope ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4074.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Search Aliases ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4080.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Slave Catalog List ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4086.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Start Time ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4092.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NDSCat:Synch Interval ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4098.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Common Certificate ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4200.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Current Installed ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4206.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Current Peak Installed ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4212.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Current Peak Used ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4218.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Current Used ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4224.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Hourly Data Size ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4230.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:License Database ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4236.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:License ID ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4242.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:License Service Provider ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4248.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:LSP Revision ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4254.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Owner ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4260.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Peak Installed Data ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4266.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Peak Used Data ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4272.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Product ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4278.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Publisher ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4284.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Revision ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4290.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Search Type ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4296.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Summary Update Time ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4302.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Summary Version ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4308.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Transaction Database ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4314.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Transaction Log Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4320.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Transaction Log Size ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4326.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NLS:Version ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4332.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Notification Consumers ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4344.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Notification Profile ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4350.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Notification Service Enabled ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4356.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Notification Srvc Net Addr ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4362.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Notification Srvc Net Address ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4368.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NRD:Registry Data ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4380.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NRD:Registry Index ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4386.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:mailAccessDomain ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4494.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:mailAlternateAddress ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4500.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:mailAutoReplyMode ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4506.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:mailAutoReplyText ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4512.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:mailDeliveryOption ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4518.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:mailForwardingAddress ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4524.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:mailHost ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4530.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:mailMessageStore ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4536.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:mailProgramDeliveryInfo ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4542.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:mailQuota ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4548.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:ngComponent ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4566.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:nsLicenseEndTime ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4596.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:nsLicensedFor ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4602.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NSCP:nsLicenseStartTime ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4608.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Page Description Languages ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4710.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("preferredLanguage ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3oon3t.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Primary Notification Service ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4836.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Primary Resource Service ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4842.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Printer Agent Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4866.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Printer Manufacturer ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4884.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Printer Mechanism Types ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4890.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Printer Model ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4896.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Printer Status ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4902.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Printer to PA ID Mappings ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4908.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("PSM Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4938.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Registry Advertising Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4986.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Registry Service Enabled ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4992.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Registry Srvc Net Addr ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk4998.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Registry Srvc Net Address ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5004.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Resolution ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5022.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Resource Mgmt Srvc Net Addr ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5034.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Resource Mgmt Srvc Net Address ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5040.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Resource Mgmt Service Enabled ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5046.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Resource Mgr Database Path ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5052.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Resource Mgr Database Volume ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5058.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("secretary ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3oon40.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Sides Supported ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5184.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP Attribute ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5190.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP Cache Limit ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5196.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP DA Back Link ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5202.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP Directory Agent DN ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5208.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP Language ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5214.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP Lifetime ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5220.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP Scope Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5226.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP Scope Unit DN ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5232.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP Start Purge Hour ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5238.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP Status ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5244.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP SU Back Link ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5250.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP SU Type ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5256.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP Type ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5262.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SLP URL ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5268.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SMS Protocol Address ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5274.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SMS Registered Service ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5280.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SU ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5292.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SvcInfo ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5340.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SvcType ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5346.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("SvcTypeID ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5352.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("userSMIMECertificate ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a3oorbh.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("LDAP Operational Attributes ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a7lnqjy.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("createTimeStamp ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a6fur3q.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("creatorsName ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a6fur3f.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("entryFlags ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a6fuxcp.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("federationBoundary ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a6fzxsm.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("localEntryID ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a6fzcam.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("modifiersName ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a6fur3j.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("modifyTimeStamp ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a6fur3x.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("structuralObjectClass ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a6fuxcb.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("subordinateCount ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a6fuxci.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("subschemaSubentry ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a6fuxc4.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Attribute Syntax Definitions ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/h55cqjqs.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Back Link ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5533.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Boolean ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5540.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Case Exact String ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5547.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Case Ignore List ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5554.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Case Ignore String ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5561.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Class Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5568.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Counter ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5575.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Distinguished Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5582.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("EMail Address ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5589.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Facsimile Telephone Number ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5596.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Hold ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5603.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Integer ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5610.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Interval ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5617.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Net Address ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5624.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Numeric String ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5631.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Object ACL ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5638.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Octet List ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5645.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Octet String ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5652.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Path ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5659.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Postal Address ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5666.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Printable String ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5673.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Replica Pointer ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5680.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Stream ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5687.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Telephone Number ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5694.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Time ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5701.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Timestamp ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5708.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Typed Name ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5715.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Unknown ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5722.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Index of Classes ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx1.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("A through B ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx2.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("C through D ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx3.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("E through K ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx4.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("L through M ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx5.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("N ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx6.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("O ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx7.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("P through R ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx8.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("S ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx9.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("T through Z ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx10.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Index of Attributes ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx11.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("A ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx12.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("B ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx13.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("C ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx14.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("D ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx15.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("E ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx16.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("F through G ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx17.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("H ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx18.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("I through K ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx19.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("L ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx20.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("M ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx21.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("N ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx22.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("O ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx23.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("P ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx24.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Q ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx25.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("R ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx26.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("S ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx27.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("T ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx28.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("U ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx29.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("V through Z ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx30.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Index of ASN.1 IDs ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx31.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("0 ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx32.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("1 ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx33.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("2 through 2.4 ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx34.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("2.5 through 2.9 ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx35.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Index of LDAP Names ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx36.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("A through B ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx37.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("C ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx38.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("D ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx39.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("E through F ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx40.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("G ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx41.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("H ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx42.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("I through K ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx43.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("L ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx44.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("M ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx45.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("N ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx46.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("O ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx47.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("P ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx48.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Q through R ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx49.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("S ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx50.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("T ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx51.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("U through Z ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/schidx52.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Revision History ","http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/a5i29ah.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("NDS Iterator Services ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hnv8aaj7.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Concepts ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hj3udfo7.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Iterator Objects ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hwiuqovp.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Creation of an Iterator Object ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hrb7xece.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Iterator Indexes ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hqngpqag.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Positions of an Iterator Object ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/h25zhm0d.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Current Position Movement with Retrieval Functions ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hn9jdbnd.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Retrieval of Data ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hy7j1t07.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Tasks ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/huypg52u.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Creating a Search Iterator Object ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hcyx2utx.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Retrieving and Unpacking Object and Attribute Name Data ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/h9evr0ru.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Retrieving and Unpacking Object, Attribute, and Value Data ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/htq89y7t.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Functions ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/h7qwv271.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("NWDSItrAtEOF ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk29.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSItrAtFirst ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk36.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSItrClone ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk43.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSItrCount ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk50.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSItrCreateList ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk57.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSItrCreateSearch ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk64.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSItrDestroy ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk71.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSItrGetCurrent ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk77.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSItrGetInfo ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk84.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSItrGetNext ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk91.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSItrGetPosition ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk98.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSItrGetPrev ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk105.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSItrSetPosition ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk112.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSItrSetPositionFromIterator ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk119.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSItrSkip ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk126.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("NWDSItrTypeDown ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/sdk133.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("NDS Iterator Example Code ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hw9m9u6o.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +currentLevel++; + +setLevels(); +var navElement = navigationLink("Cloning an Iterator Object: Example ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hur66hmi.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Counting with NDS Iterators: Example ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hgllfzfg.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Creating and Using a List Iterator: Example ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hfnbz1tw.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Creating a Search Iterator and Displaying the Results: Example ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hhe6xegc.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Getting Iterator Information: Example ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hfg59w8k.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Getting and Setting the Iterator's Position: Example ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hh03dp06.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Listing in Reverse Order: Example ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hsj5zfs1.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Positioning the Iterator with Typedown: Example ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/hqvieqdk.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +setLevels(); +var navElement = navigationLink("Skipping Objects in the List: Example ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/ho81tg5d.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +setLevels(); +var navElement = navigationLink("Revision History ","http://developer.novell.com/ndk/doc/ndslib/skds_enu/data/a5i29ah.html",currentLevel,index,levelIndexes[currentLevel],levelParents[currentLevel],""); +navigationTree[index] = navElement; +index++; + +if (currentLevel > 1) currentLevel-- + +if (currentLevel > 1) currentLevel-- + + diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-114491.js b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-114491.js new file mode 100644 index 00000000000..b4470ee588d --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-114491.js @@ -0,0 +1,101 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2001 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): rokicki@instantis.com, pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 10 December 2001 +* SUMMARY: Regression test for bug 114491 +* See http://bugzilla.mozilla.org/show_bug.cgi?id=114491 +* +* Rhino crashed on this code. It should produce a syntax error, not a crash. +* Using the () operator after a function STATEMENT is incorrect syntax. +* Rhino correctly caught the error when there was no |if (true)|. +* With the |if (true)|, however, Rhino crashed - +* +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 114491; +var summary = 'Regression test for bug 114491'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; + + +status = inSection(1); +actual = 'Program execution did NOT fall into catch-block'; +expect = 'Program execution fell into into catch-block'; +try +{ + var sEval = 'if (true) function f(){}()'; + eval(sEval); +} +catch(e) +{ + actual = expect; +} +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i = 0; i < UBound; i++) + { + reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]); + } + + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-114493.js b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-114493.js new file mode 100644 index 00000000000..41e94b460b2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-114493.js @@ -0,0 +1,109 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2001 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): rokicki@instantis.com, pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 10 December 2001 +* SUMMARY: Regression test for bug 114493 +* See http://bugzilla.mozilla.org/show_bug.cgi?id=114493 +* +* Rhino crashed on this code. It should produce a syntax error, not a crash. +* Note that "3"[5] === undefined, and Rhino correctly gave an error if you +* tried to use the call operator on |undefined|: +* +* js> undefined(); +* js: TypeError: undefined is not a function. +* +* However, Rhino CRASHED if you tried to do "3"[5](). +* +* Rhino would NOT crash if you tried "3"[0]() or "3"[5]. Only array indices +* that were out of bounds, followed by the call operator, would crash. +* +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 114493; +var summary = 'Regression test for bug 114493'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; +var sEval = ''; + + +status = inSection(1); +actual = 'Program execution did NOT fall into catch-block'; +expect = 'Program execution fell into into catch-block'; +try +{ + sEval = '"3"[5]()'; + eval(sEval); +} +catch(e) +{ + actual = expect; +} +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i = 0; i < UBound; i++) + { + reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]); + } + + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-118849.js b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-118849.js new file mode 100644 index 00000000000..3d7b89a2a51 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-118849.js @@ -0,0 +1,181 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2001 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 08 Jan 2002 +* SUMMARY: Just testing that we don't crash on this code +* See http://bugzilla.mozilla.org/show_bug.cgi?id=118849 +* +* http://developer.netscape.com:80/docs/manuals/js/core/jsref/function.htm +* The Function constructor: +* Function ([arg1[, arg2[, ... argN]],] functionBody) +* +* Parameters +* arg1, arg2, ... argN +* (Optional) Names to be used by the function as formal argument names. +* Each must be a string that corresponds to a valid JavaScript identifier. +* +* functionBody +* A string containing JS statements comprising the function definition. +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 118849; +var summary = 'Should not crash if we provide Function() with bad arguments' +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; +var cnFAIL_1 = 'LEGAL call to Function() caused an ERROR!!!'; +var cnFAIL_2 = 'ILLEGAL call to Function() FAILED to cause an error'; +var cnSTRING = 'ASDF'; +var cnNUMBER = 123; + + +/***********************************************************/ +/**** THESE ARE LEGITMATE CALLS AND SHOULD ALL SUCCEED ***/ +/***********************************************************/ +status = inSection(1); +actual = cnFAIL_1; // initialize to failure +try +{ + Function(cnSTRING); + Function(cnNUMBER); // cnNUMBER is a valid functionBody + Function(cnSTRING,cnSTRING); + Function(cnSTRING,cnNUMBER); + Function(cnSTRING,cnSTRING,cnNUMBER); + + new Function(cnSTRING); + new Function(cnNUMBER); + new Function(cnSTRING,cnSTRING); + new Function(cnSTRING,cnNUMBER); + new Function(cnSTRING,cnSTRING,cnNUMBER); + + actual = expect; +} +catch(e) +{ +} +addThis(); + + + +/**********************************************************/ +/*** EACH CASE THAT FOLLOWS SHOULD TRIGGER AN ERROR ***/ +/*** (BUT NOT A CRASH) ***/ +/*** NOTE WE NOW USE cnFAIL_2 INSTEAD OF cnFAIL_1 ***/ +/**********************************************************/ +status = inSection(2); +actual = cnFAIL_2; +try +{ + Function(cnNUMBER,cnNUMBER); // cnNUMBER is an invalid JS identifier name +} +catch(e) +{ + actual = expect; +} +addThis(); + + +status = inSection(3); +actual = cnFAIL_2; +try +{ + Function(cnNUMBER,cnSTRING,cnSTRING); +} +catch(e) +{ + actual = expect; +} +addThis(); + + +status = inSection(4); +actual = cnFAIL_2; +try +{ + new Function(cnNUMBER,cnNUMBER); +} +catch(e) +{ + actual = expect; +} +addThis(); + + +status = inSection(5); +actual = cnFAIL_2; +try +{ + new Function(cnNUMBER,cnSTRING,cnSTRING); +} +catch(e) +{ + actual = expect; +} +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + for (var i = 0; i < UBound; i++) + { + reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]); + } + + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-127557.js b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-127557.js new file mode 100644 index 00000000000..80b4e291acb --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-127557.js @@ -0,0 +1,113 @@ +/* ***** BEGIN LICENSE BLOCK ***** +* Version: NPL 1.1/GPL 2.0/LGPL 2.1 +* +* The contents of this file are subject to the Netscape Public License +* Version 1.1 (the "License"); you may not use this file except in +* compliance with the License. You may obtain a copy of the License at +* http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is JavaScript Engine testing utilities. +* +* The Initial Developer of the Original Code is Netscape Communications Corp. +* Portions created by the Initial Developer are Copyright (C) 2002 +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): brendan@mozilla.org +* +* Alternatively, the contents of this file may be used under the terms of +* either the GNU General Public License Version 2 or later (the "GPL"), or +* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +* in which case the provisions of the GPL or the LGPL are applicable instead +* of those above. If you wish to allow use of your version of this file only +* under the terms of either the GPL or the LGPL, and not to allow others to +* use your version of this file under the terms of the NPL, indicate your +* decision by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL or the LGPL. If you do not delete +* the provisions above, a recipient may use your version of this file under +* the terms of any one of the NPL, the GPL or the LGPL. +* +* ***** END LICENSE BLOCK ***** +* +* +* Date: 06 Mar 2002 +* SUMMARY: Testing cloned function objects +* See http://bugzilla.mozilla.org/show_bug.cgi?id=127557 +* +* Before this bug was fixed, this testcase would error when run: +* +* ReferenceError: h_peer is not defined +* +* The line |g.prototype = new Object| below is essential: this is +* what was confusing the engine in its attempt to look up h_peer +*/ +//----------------------------------------------------------------------------- +var UBound = 0; +var bug = 127557; +var summary = 'Testing cloned function objects'; +var cnCOMMA = ','; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; + + +function f(x,y) +{ + function h() + { + return h_peer(); + } + function h_peer() + { + return (x + cnCOMMA + y); + } + return h; +} + +status = inSection(1); +var g = clone(f); +g.prototype = new Object; +var h = g(5,6); +actual = h(); +expect = '5,6'; +addThis(); + + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc('test'); + printBugNumber(bug); + printStatus(summary); + + for (var i=0; i>> 1); + return buildEval_r(beginLine, middle) + buildEval_r(middle, endLine); +} + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc('test'); + printBugNumber(bug); + printStatus(summary); + + for (var i=0; i12||day>31||month<=0||day<=0||(isNaN(month)==true)||(isNaN(day)==true)||(isNaN(year)==true)){ +alert(pbc0409); +formfield.focus(); +return false; +} + +if(((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day>31)||(year%4==0&&month==2&&day>29)||(year%4!=0&&month==2&&day>28)||((month==4||month==6||month==9||month==11)&&day>30)){ +alert(pbc0409); +formfield.focus(); +return false; +} +return true; +} + +function vkdt(formfield){ +date=formfield.value; +year=date.substring(0,4); +hy1=date.charAt(4); +month=date.substring(5,7); +hy2=date.charAt(7); +day=date.substring(8,10); +today=new Date(); +tdy=today.getDate(); +tmn=today.getMonth()+1; +if(today.getYear()<2000)tyr=today.getYear()+1900; +else tyr=today.getYear(); +if(date.match(/^\s*$/)){ +alert(pbc0425); +formfield.focus(); +return false; +} +if(hy1!="/"||hy2!="/"){ +alert(pbc0409); +formfield.focus(); +return false; +} + +if(month>12||day>31||month<=0||day<=0||(isNaN(month)==true)||(isNaN(day)==true)||(isNaN(year)==true)){ +alert(pbc0409); +formfield.focus(); +return false; +} + +if(((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day>31)||(year%4==0&&month==2&&day>29)||(year%4!=0&&month==2&&day>28)||((month==4||month==6||month==9||month==11)&&day>30)){ +alert(pbc0409); +formfield.focus(); +return false; +} +return true; +} + +function ddif(month1,day1,year1,month2,day2,year2){ +start = new Date(); +start.setYear(year1); +start.setMonth(month1-1); +start.setDate(day1); +start.setMinutes(0); +start.setHours(0); +start.setSeconds(0); +end = new Date(); +end.setYear(year2); +end.setMonth(month2-1); +end.setDate(day2); +end.setMinutes(0); +end.setHours(0); +end.setSeconds(0); +current =(end.getTime() - start.getTime()); +days = Math.floor(current /(1000 * 60 * 60 * 24)); +return(days); +} + +function vsub(form,status,ism,action){ +if(!vol()){ return false; } +if(status<9||status==12){ +band=form.BAND.options[form.BAND.selectedIndex].value; +if(band=="00"){ +alert(pbc0425); +form.BAND.focus(); +return false; +} +} + +if((status>=0&&status<5)||(status==7)||(status>=5&&status<9&&ism=="YES")||(status==12&&ism=="YES")){ +if(!vnull(form.PT)) { return false; } +adt1=form.STD; +adt2=form.END; +stdt=adt1.value; +etdt=adt2.value; +syr=stdt.substring(0,4); +start_hy1=stdt.charAt(4); +smon=stdt.substring(5,7); +start_hy2=stdt.charAt(7); +sdy=stdt.substring(8,10); +eyr=etdt.substring(0,4); +end_hy1=etdt.charAt(4); +emon=etdt.substring(5,7); +end_hy2=etdt.charAt(7); +edy=etdt.substring(8,10); +today=new Date(); +date=today.getDate(); +month=today.getMonth()+1; +if(today.getYear()<2000)year=today.getYear()+1900; else year=today.getYear(); +nextYear=year+1; +if(!vnull(form.STD)){ return false; } +if(!vnull(form.END)){ return false; } +if(start_hy1!="/"||start_hy2!="/"){ +alert(pbc0409); +form.STD.focus(); +return false; +} +if(end_hy1!="/"||end_hy2!="/"){ +alert(pbc0409); +form.END.focus(); +return false; +} +if(smon>12||sdy>31||smon<=0||sdy<=0||(isNaN(smon)==true)||(isNaN(sdy)==true)||(isNaN(syr)==true)){ +alert(pbc0409); +form.STD.focus(); +return false; +} +if(emon>12||edy>31||emon<=0||edy<=0||(isNaN(emon)==true)||(isNaN(edy)==true)||(isNaN(eyr)==true)){ +alert(pbc0409); +form.END.focus(); +return false; +} +if(((smon==1||smon==3||smon==5||smon==7||smon==8||smon==10||smon==12)&&sdy>31)||(syr%4==0&&smon==2&&sdy>29)||(syr%4!=0&&smon==2&&sdy>28)||((smon==4||smon==6||smon==9||smon==11)&&sdy>30)){ +alert(pbc0409); +form.STD.focus(); +return false; +} +if(((emon==1||emon==3||emon==5||emon==7||emon==8||emon==10||emon==12)&&edy>31)||(eyr%4==0&&emon==2&&edy>29)||(eyr%4!=0&&emon==2&&edy>28)||((emon==4||emon==6||emon==9||emon==11)&&edy>30)){ +alert(pbc0409); +form.END.focus(); +return false; +} +if ((eyr==nextYear)&&(syr==year)) { +if ((emon>1)||(edy >31)) { +alert(pbc0401); +form.END.focus(); +return false; +} +} else { + +if ((syr!=eyr)){ +alert(pbc0406); +form.STD.focus(); +return false; +} +if(smon>emon||(smon==emon&&sdy>=edy)){ +alert(pbc0402); +form.STD.focus(); +return false; +} +if((eyr!=year)&&(eyr!=year-1)){ +alert(pbc0405); +form.END.focus(); +return false; +} +} +if(ism=='YES'&&(status==5||status==6||status==12)){ +if(ddif(month,date,year,emon,edy,eyr)>31){ +alert(pbc0421); +form.END.focus(); +return false; +} +} +if((status>2&&status<5)||(status==7)||((status>=5&&status<9||status==12)&&ism=="YES")){ +if(status!=5){ +if(!vdt(form.IRD1)){ +return false; +} +if(!vdt(form.IRD2)){ +return false; +} +if(!vdt(form.IRD3)){ +return false; +} +ird1=form.IRD1.value; +ird2=form.IRD2.value; +ird3=form.IRD3.value; +if(((ird1==ird2)&&(!ird1.match(/^\s*$/)))||((ird1==ird3)&&(!ird1.match(/^\s*$/)))){ +alert(pbc0417); +form.IRD1.focus(); +return false; +} +else if((ird2==ird3)&&(!ird2.match(/^\s*$/))){ +alert(pbc0417); +form.IRD2.focus(); +return false; +} +if(!vdt(form.FRD1)){ return false;} +} +if(status==5){ +if(!vdt(form.IRD1)){return false;} +if(!vdt(form.IRD2)){return false;} +if(!vdt(form.IRD3)){return false;} +ird1=form.IRD1.value; +ird2=form.IRD2.value; +ird3=form.IRD3.value; +if(((ird1==ird2)&&(!ird1.match(/^\s*$/)))||((ird1==ird3)&&(!ird1.match(/^\s*$/)))){ +alert(pbc0417); +form.IRD1.focus(); +return false; +} +else if((ird2==ird3)&&(!ird2.match(/^\s*$/))){ +alert(pbc0417); +form.IRD2.focus(); +return false; +} +if(!vkdt(form.FRD1)){ +return false; +} +} +} +} +if((status>=0&&status<2)||(status==3)||(status==7)||(status>=2&&status<9&&ism=="YES")||(status==12&&ism=="YES")){ +if(!vnull(form.WO)){ +return false; +} +if(!vnull(form.EO)){ +return false; +} +if(!vnull(form.TO)){ +return false; +} +} +if((status==2||status==4)||(status>=5&&status<9&&ism=="YES")||(status==12&&ism=="YES")){ +if(!vnull(form.WR)){return false;} +if(!vnull(form.ER)){return false;} +if(!vnull(form.TR)){return false;} +} +if((status==5||status==6||status==12)&&ism=="YES"){ +if(!vkdt(form.FRD1)){return false;} +frdt=form.FRD1.value; +fryr=frdt.substring(0,4); +frmn=frdt.substring(5,7); +frdy=frdt.substring(8,10); +if(fryr90){ +if(!confirm(pbc0439+" "+pbc0442)){ +form.SID.focus(); +return false; +}}} else { +// MK/06-20-01 = If Rating Not equals to 4 blank out the sustained improve Date +form.SID.value=""; +} +if(!vnull(form.OAT)){ return false; } +if(form.MSRQ.checked==true){ +if(form.NEW_SIGN_MGR_ID.value.match(/^\s*$/)){ +alert(pbc0418); +form.NEW_SIGN_MGR_ID.focus(); +return false; +} +if(vnid(form.NEW_SIGN_MGR_ID)==false){ return false; } +} else { +if(!form.NEW_SIGN_MGR_ID.value.match(/^\s*$/)){ +alert(pbc0422); +form.NEW_SIGN_MGR_ID.focus(); +return false; +} +if ( (form.TOC.value=="YES") && (form.RSRQ.checked==true) ) { +alert(pbc0429); +form.NEW_SEC_LINE_REV_ID.focus(); +return false; +} +} +if(form.RSRQ.checked==true){ +if(form.NEW_SEC_LINE_REV_ID.value.match(/^\s*$/)){ +alert(pbc0418); +form.NEW_SEC_LINE_REV_ID.focus(); +return false; +} +if(vnid(form.NEW_SEC_LINE_REV_ID)==false){ return false; } +} else { +if(!form.NEW_SEC_LINE_REV_ID.value.match(/^\s*$/)) { +alert(pbc0423); +form.NEW_SEC_LINE_REV_ID.focus(); +return false; +} +if ( (form.TOC.value=="YES") && (form.MSRQ.checked==true) ) { +alert(pbc0431); +form.NEW_SEC_LINE_REV_ID.focus(); +return false; +}}} +if(status!=9){ +/**for returned objectives **/ +if(status==3){ +if(conf(pbc0466) == false) return false; +} + +if(ism=='NO'){ +if(status==0||status==1||status==3||status==7){ +if(conf(pbc0456) == false) return false; +} + +if(status==2||status==4||status==8){ +if(conf(pbc0457) == false) return false; +} +} else if(ism=='YES'){ +if(status==0||status==1||status==3||status==7){ +if(conf(pbc0458) == false)return false; +} +if(status==2||status==4||status==8){ +if(conf(pbc0459) == false)return false; +} +if(status==5||status==6){ +if(form.ESRQ.checked==false){ +if(conf(pbc0460) == false)return false; +} else { +if(conf(pbc0461) == false)return false; +}}}} +if(status==9){ +if(ism=='NO'){ +if(conf(pbc0462) == false)return false; +} else if(ism=='YES'){ +if(conf(pbc0463) == false)return false; +} else if(ism=='REVIEWER'){ +if(conf(pbc0464) == false)return false; +}} +sact(action); +if(status>=9&&status<=11){ snul(); } +form.submit(); +return true; +} + +function vsav(form,status,ism,action) { +if(!vol()){ return false; } +adt1=form.STD; +adt2=form.END; +stdt=adt1.value; +etdt=adt2.value; +syr=stdt.substring(0,4); +start_hy1=stdt.charAt(4); +smon=stdt.substring(5,7); +start_hy2=stdt.charAt(7); +sdy=stdt.substring(8,10); +eyr=etdt.substring(0,4); +end_hy1=etdt.charAt(4); +emon=etdt.substring(5,7); +end_hy2=etdt.charAt(7); +edy=etdt.substring(8,10); +today=new Date(); +date=today.getDate(); +month=today.getMonth()+1; +if(today.getYear()<2000) year=today.getYear()+1900; else year=today.getYear(); +nextYear=year+1; +if(!vnull(form.STD)) return false; +if(!vnull(form.END)) return false; +if(start_hy1!="/"||start_hy2!="/"){ +alert(pbc0409); +form.STD.focus(); +return false; +} +if(end_hy1!="/"||end_hy2!="/"){ +alert(pbc0409); +form.END.focus(); +return false; +} +if(smon>12||sdy>31||smon<=0||sdy<=0||(isNaN(smon)==true)||(isNaN(sdy)==true)||(isNaN(syr)==true)){ +alert(pbc0409); +form.STD.focus(); +return false; +} +if(emon>12||edy>31||emon<=0||edy<=0||(isNaN(emon)==true)||(isNaN(edy)==true)||(isNaN(eyr)==true)){ +alert(pbc0409); +form.END.focus(); +return false; +} +if(((smon==1||smon==3||smon==5||smon==7||smon==8||smon==10||smon==12)&&sdy>31)||(syr%4==0&&smon==2&&sdy>29)||(syr%4!=0&&smon==2&&sdy>28)||((smon==4||smon==6||smon==9||smon==11)&&sdy>30)){ +alert(pbc0409); +form.STD.focus(); +return false; +} +if(((emon==1||emon==3||emon==5||emon==7||emon==8||emon==10||emon==12)&&edy>31)||(eyr%4==0&&emon==2&&edy>29)||(eyr%4!=0&&emon==2&&edy>28)||((emon==4||emon==6||emon==9||emon==11)&&edy>30)){ +alert(pbc0409); +form.END.focus(); +return false; +} +if ((eyr==nextYear)&&(syr==year)) { +if ((emon>1)||(edy >31)) { +alert(pbc0401); +form.END.focus(); +return false; +} +} else { +if ((syryear)) { +alert(pbc0407); +form.STD.focus(); +return false; +} +if((eyr!=year)&&(eyr!=year-1)){ +alert(pbc0405); +form.END.focus(); +return false; +} +if(smon>emon||(smon==emon&&sdy>=edy)){ +alert(pbc0403); +form.STD.focus(); +return false; +} +} +if((status>2&&status<5)||(status>=5&&status<9&&ism=="YES")||(status==12&&ism=="YES")){ +if(!vdt(form.IRD1)){return false;} +if(!vdt(form.IRD2)){return false;} +if(!vdt(form.IRD3)){ return false; } +ird1=form.IRD1.value; +ird2=form.IRD2.value; +ird3=form.IRD3.value; +if(((ird1==ird2)&&(!ird1.match(/^\s*$/)))||((ird1==ird3)&&(!ird1.match(/^\s*$/)))){ +alert(pbc0417); +form.IRD1.focus(); +return false; +} +else if((ird2==ird3)&&(!ird2.match(/^\s*$/))){ +alert(pbc0417); +form.IRD2.focus(); +return false; +} +if(!vdt(form.FRD1)){return false;} +if(ism=="YES"){ +if(!vdt(form.FRD1)){return false;} +} +} +if((status==5||status==6)&&ism=="YES"){ +rating=""; +for(i=0;i=9&&status<=11){ +snul(); +} +form.submit(); +return true; +} +function cft(formfield){ +nid=formfield.value; +if(nid.match(/^\s*$/)){ +alert(pbc0419); +formfield.focus(); +return false; +} +nl=nid.split('/').length; +if(nl!=2&&nl!=3){ +alert(pbc0420); +formfield.focus(); +return false; +} +return true; +} +function dcf(form,pbcId,cnum,sequence,status,atyp,ver){ +if(!vol()){} +dflg=confirm("\n\n<====================== " + pbc0468 + " ======================>\n\n" + pbc0469 + "\n\n<==================================================================>"); +if(dflg==true) { +form.ATYP.value=atyp; +form.PID.value=pbcId; +form.CNUM.value=cnum; +form.SEQ.value=sequence; +form.ST.value=status; +form.VER.value=ver; +form.submit(); +} + +} + + + +function lop(){ +//if(confirm(pbc0447+" "+pbc0451)){ +sck("timer",""); +sck("PBC_AUTH4",""); +sck("IBM004",""); +this.close(); +//} + +} + +function csrlop(){ + top.location="logoff.jsp"; +} +function lof(){ +csr=gck("IBM004"); +if(csr==null){ top.location="logoff.jsp"; } +else if(csr.charAt(0)==3){ window.location="csrlogoff.jsp"; } +else{ top.location="logoff.jsp"; } +} + +function goToHome(){ + top.location="pbcmain.jsp"; + } + +function docsr(){ +sck("IBM004","1^NONE^1"); +window.location="pbcmain.jsp" +} + +function ccd(){ +if(confirm(pbc0434)){ +if(navigator.appName!="Netscape"){ +if(!window.navigator.onLine){ +window.close(); +} +else { +window.location='pbcmain.jsp'; +} +} +else { +window.location='pbcmain.jsp'; +} +} +} + +function crt(form,action){ +if(!vol()){return false;} +band=form.BAND.options[form.BAND.selectedIndex].value; +if(band=="00"){ +alert(pbc0425); +form.BAND.focus(); +return false; +} +if(!confirm(pbc0450)){return false;} +sact(action); +form.submit(); +return true; +} +function cusat(form,action){ +if(!vol()){return false;} +sact(action); +form.action="unsatreq.jsp"; +form.submit(); +return true; +} +function cfrt(form,ism,action){ +if(!vol()){return false;} +sact(action); +if(ism=="NO"){ +if(confirm(pbc0449+" "+pbc0432)){ +snul(); +form.submit(); +return true; +} +} +if(ism=="REVIEWER"){ +if(confirm(pbc0449+" "+pbc0448)){ +snul(); +form.submit(); +return true; +} +} +if(ism=="YES"){ +if(confirm(pbc0440)){ +snul(); +form.submit(); +return true; +} +} +} + +function cces(form){ +if(form.ESRQ.checked==true){ +if(!confirm(pbc0435+" "+pbc0443))form.ESRQ.checked=false; +else {form.ESRQ.checked=true;} +} +} + +function ccms(form){ +if(form.MSRQ.checked==true){ +if(!confirm(pbc0441+" "+pbc0438+" "+pbc0444+" "+pbc0445))form.MSRQ.checked=false; +else { +form.MSRQ.checked=true; +} +} +} + +function ccrs(form){ +if(form.RSRQ.checked==true){ +if(!confirm(pbc0441+" "+pbc0438+" "+pbc0444+" "+pbc0446))form.RSRQ.checked=false; +else { +form.RSRQ.checked=true; +} +} +} + +function seo(){ +alert(pbc0412+" "+pbc0413+" "+pbc0414); +} +function cows(form,action){ +if(!vol()){ +return false; +} +if(confirm(pbc0437)){ +sact(action); +form.submit(); +return true; +} +} + +function srdb(rdb,value) { +for(i=0; i 0) { +for(i=0;i < lbx.options.length;i++) { +if(lbx.options[i].value == value) { +lbx.options[i].selected = true; +return true; +} +} +} +return true; +} + +function ourl(URL,WIN_NAME){ +if(!vol()){ return; } +var emp_win; +if(document.layers) { +child_screenX=window.screenX+50; +child_width=window.innerWidth-75; +child_height=window.innerHeight-75; +emp_win=window.open(URL,WIN_NAME,"screenX="+ child_screenX +",screenY=75,height="+ child_height +",width="+ child_width +",resizable,status,scrollbars"); +} else{ +child_width = screen.width-160; +child_height = screen.height-200; +emp_win=window.open(URL,WIN_NAME,"height="+ child_height +",width="+ child_width +",resizable=yes,status=no,scrollbars=yes"); +//emp_win.moveTo(110,0); +} +//if (URL.indexOf("pbcsitehelp")==-1) { alert("Opened new window."); } +emp_win.focus(); +} + +function dnh(form){ +form.NHS[0].checked=false; +form.NHS[1].checked=false; +form.NHB[0].checked=false; +form.NHB[1].checked=false; +} + +function cnh(form){ +isnh=""; +for(i=0; i"); +var txtValue3 = txtValue2.replace((/</g),"<"); +return txtValue3; +} + +function encodeText(txtValue) { +if (txtValue.match(/^\s*$/)) return txtValue; +var txtValue0 = txtValue.replace((/\r\n/g),'&lf;'); +var txtValue1 = txtValue0.replace((/"/g),'"'); +var txtValue2 = txtValue1.replace((/>/g),'>'); +var txtValue3 = txtValue2.replace((/ as a single-line comment indicator. +* Whitespace may occur before the --> on the same line. +* +* See http://bugzilla.mozilla.org/show_bug.cgi?id=31255 +* and http://bugzilla.mozilla.org/show_bug.cgi?id=179366 (Rhino version) +* +* Note: are the HTML multi-line comment opener, closer. +* JS already accepted as a single-line comment indicator'; +var status = ''; +var statusitems = []; +var actual = ''; +var actualvalues = []; +var expect= ''; +var expectedvalues = []; + + + HTML comment end is JS comments until end-of-line + --> but only if it follows a possible whitespace after line start + --> so in the following --> should not be treated as comments +if (x-->0) + x = 2; + +status = inSection(2); +actual = (x == 2); +expect = true; +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc('test'); + printBugNumber(bug); + printStatus(summary); + + for (var i=0; i 0) check ('a string 1'); break; + case 2: if (n[2]++ > 0) check ('a string 2'); break; + case 3: if (n[3]++ > 0) check ('a string 3'); break; + case 4: if (n[4]++ > 0) check ('a string 4'); break; + case 5: if (n[5]++ > 0) check ('a string 5'); break; + case 6: if (n[6]++ > 0) check ('a string 6'); break; + case 7: if (n[7]++ > 0) check ('a string 7'); break; + case 8: if (n[8]++ > 0) check ('a string 8'); break; + case 9: if (n[9]++ > 0) check ('a string 9'); break; + case 10: if (n[10]++ > 0) check ('a string 10'); break; + case 11: if (n[11]++ > 0) check ('a string 11'); break; + case 12: if (n[12]++ > 0) check ('a string 12'); break; + case 13: if (n[13]++ > 0) check ('a string 13'); break; + case 14: if (n[14]++ > 0) check ('a string 14'); break; + case 15: if (n[15]++ > 0) check ('a string 15'); break; + case 16: if (n[16]++ > 0) check ('a string 16'); break; + case 17: if (n[17]++ > 0) check ('a string 17'); break; + case 18: if (n[18]++ > 0) check ('a string 18'); break; + case 19: if (n[19]++ > 0) check ('a string 19'); break; + case 20: if (n[20]++ > 0) check ('a string 20'); break; + case 21: if (n[21]++ > 0) check ('a string 21'); break; + case 22: if (n[22]++ > 0) check ('a string 22'); break; + case 23: if (n[23]++ > 0) check ('a string 23'); break; + case 24: if (n[24]++ > 0) check ('a string 24'); break; + case 25: if (n[25]++ > 0) check ('a string 25'); break; + case 26: if (n[26]++ > 0) check ('a string 26'); break; + case 27: if (n[27]++ > 0) check ('a string 27'); break; + case 28: if (n[28]++ > 0) check ('a string 28'); break; + case 29: if (n[29]++ > 0) check ('a string 29'); break; + case 30: if (n[30]++ > 0) check ('a string 30'); break; + case 31: if (n[31]++ > 0) check ('a string 31'); break; + case 32: if (n[32]++ > 0) check ('a string 32'); break; + case 33: if (n[33]++ > 0) check ('a string 33'); break; + case 34: if (n[34]++ > 0) check ('a string 34'); break; + case 35: if (n[35]++ > 0) check ('a string 35'); break; + case 36: if (n[36]++ > 0) check ('a string 36'); break; + case 37: if (n[37]++ > 0) check ('a string 37'); break; + case 38: if (n[38]++ > 0) check ('a string 38'); break; + case 39: if (n[39]++ > 0) check ('a string 39'); break; + case 40: if (n[40]++ > 0) check ('a string 40'); break; + case 41: if (n[41]++ > 0) check ('a string 41'); break; + case 42: if (n[42]++ > 0) check ('a string 42'); break; + case 43: if (n[43]++ > 0) check ('a string 43'); break; + case 44: if (n[44]++ > 0) check ('a string 44'); break; + case 45: if (n[45]++ > 0) check ('a string 45'); break; + case 46: if (n[46]++ > 0) check ('a string 46'); break; + case 47: if (n[47]++ > 0) check ('a string 47'); break; + case 48: if (n[48]++ > 0) check ('a string 48'); break; + case 49: if (n[49]++ > 0) check ('a string 49'); break; + case 50: if (n[50]++ > 0) check ('a string 50'); break; + case 51: if (n[51]++ > 0) check ('a string 51'); break; + case 52: if (n[52]++ > 0) check ('a string 52'); break; + case 53: if (n[53]++ > 0) check ('a string 53'); break; + case 54: if (n[54]++ > 0) check ('a string 54'); break; + case 55: if (n[55]++ > 0) check ('a string 55'); break; + case 56: if (n[56]++ > 0) check ('a string 56'); break; + case 57: if (n[57]++ > 0) check ('a string 57'); break; + case 58: if (n[58]++ > 0) check ('a string 58'); break; + case 59: if (n[59]++ > 0) check ('a string 59'); break; + case 60: if (n[60]++ > 0) check ('a string 60'); break; + case 61: if (n[61]++ > 0) check ('a string 61'); break; + case 62: if (n[62]++ > 0) check ('a string 62'); break; + case 63: if (n[63]++ > 0) check ('a string 63'); break; + case 64: if (n[64]++ > 0) check ('a string 64'); break; + case 65: if (n[65]++ > 0) check ('a string 65'); break; + case 66: if (n[66]++ > 0) check ('a string 66'); break; + case 67: if (n[67]++ > 0) check ('a string 67'); break; + case 68: if (n[68]++ > 0) check ('a string 68'); break; + case 69: if (n[69]++ > 0) check ('a string 69'); break; + case 70: if (n[70]++ > 0) check ('a string 70'); break; + case 71: if (n[71]++ > 0) check ('a string 71'); break; + case 72: if (n[72]++ > 0) check ('a string 72'); break; + case 73: if (n[73]++ > 0) check ('a string 73'); break; + case 74: if (n[74]++ > 0) check ('a string 74'); break; + case 75: if (n[75]++ > 0) check ('a string 75'); break; + case 76: if (n[76]++ > 0) check ('a string 76'); break; + case 77: if (n[77]++ > 0) check ('a string 77'); break; + case 78: if (n[78]++ > 0) check ('a string 78'); break; + case 79: if (n[79]++ > 0) check ('a string 79'); break; + case 80: if (n[80]++ > 0) check ('a string 80'); break; + case 81: if (n[81]++ > 0) check ('a string 81'); break; + case 82: if (n[82]++ > 0) check ('a string 82'); break; + case 83: if (n[83]++ > 0) check ('a string 83'); break; + case 84: if (n[84]++ > 0) check ('a string 84'); break; + case 85: if (n[85]++ > 0) check ('a string 85'); break; + case 86: if (n[86]++ > 0) check ('a string 86'); break; + case 87: if (n[87]++ > 0) check ('a string 87'); break; + case 88: if (n[88]++ > 0) check ('a string 88'); break; + case 89: if (n[89]++ > 0) check ('a string 89'); break; + case 90: if (n[90]++ > 0) check ('a string 90'); break; + case 91: if (n[91]++ > 0) check ('a string 91'); break; + case 92: if (n[92]++ > 0) check ('a string 92'); break; + case 93: if (n[93]++ > 0) check ('a string 93'); break; + case 94: if (n[94]++ > 0) check ('a string 94'); break; + case 95: if (n[95]++ > 0) check ('a string 95'); break; + case 96: if (n[96]++ > 0) check ('a string 96'); break; + case 97: if (n[97]++ > 0) check ('a string 97'); break; + case 98: if (n[98]++ > 0) check ('a string 98'); break; + case 99: if (n[99]++ > 0) check ('a string 99'); break; + case 100: if (n[100]++ > 0) check ('a string 100'); break; + case 101: if (n[101]++ > 0) check ('a string 101'); break; + case 102: if (n[102]++ > 0) check ('a string 102'); break; + case 103: if (n[103]++ > 0) check ('a string 103'); break; + case 104: if (n[104]++ > 0) check ('a string 104'); break; + case 105: if (n[105]++ > 0) check ('a string 105'); break; + case 106: if (n[106]++ > 0) check ('a string 106'); break; + case 107: if (n[107]++ > 0) check ('a string 107'); break; + case 108: if (n[108]++ > 0) check ('a string 108'); break; + case 109: if (n[109]++ > 0) check ('a string 109'); break; + case 110: if (n[110]++ > 0) check ('a string 110'); break; + case 111: if (n[111]++ > 0) check ('a string 111'); break; + case 112: if (n[112]++ > 0) check ('a string 112'); break; + case 113: if (n[113]++ > 0) check ('a string 113'); break; + case 114: if (n[114]++ > 0) check ('a string 114'); break; + case 115: if (n[115]++ > 0) check ('a string 115'); break; + case 116: if (n[116]++ > 0) check ('a string 116'); break; + case 117: if (n[117]++ > 0) check ('a string 117'); break; + case 118: if (n[118]++ > 0) check ('a string 118'); break; + case 119: if (n[119]++ > 0) check ('a string 119'); break; + case 120: if (n[120]++ > 0) check ('a string 120'); break; + case 121: if (n[121]++ > 0) check ('a string 121'); break; + case 122: if (n[122]++ > 0) check ('a string 122'); break; + case 123: if (n[123]++ > 0) check ('a string 123'); break; + case 124: if (n[124]++ > 0) check ('a string 124'); break; + case 125: if (n[125]++ > 0) check ('a string 125'); break; + case 126: if (n[126]++ > 0) check ('a string 126'); break; + case 127: if (n[127]++ > 0) check ('a string 127'); break; + case 128: if (n[128]++ > 0) check ('a string 128'); break; + case 129: if (n[129]++ > 0) check ('a string 129'); break; + case 130: if (n[130]++ > 0) check ('a string 130'); break; + case 131: if (n[131]++ > 0) check ('a string 131'); break; + case 132: if (n[132]++ > 0) check ('a string 132'); break; + case 133: if (n[133]++ > 0) check ('a string 133'); break; + case 134: if (n[134]++ > 0) check ('a string 134'); break; + case 135: if (n[135]++ > 0) check ('a string 135'); break; + case 136: if (n[136]++ > 0) check ('a string 136'); break; + case 137: if (n[137]++ > 0) check ('a string 137'); break; + case 138: if (n[138]++ > 0) check ('a string 138'); break; + case 139: if (n[139]++ > 0) check ('a string 139'); break; + case 140: if (n[140]++ > 0) check ('a string 140'); break; + case 141: if (n[141]++ > 0) check ('a string 141'); break; + case 142: if (n[142]++ > 0) check ('a string 142'); break; + case 143: if (n[143]++ > 0) check ('a string 143'); break; + case 144: if (n[144]++ > 0) check ('a string 144'); break; + case 145: if (n[145]++ > 0) check ('a string 145'); break; + case 146: if (n[146]++ > 0) check ('a string 146'); break; + case 147: if (n[147]++ > 0) check ('a string 147'); break; + case 148: if (n[148]++ > 0) check ('a string 148'); break; + case 149: if (n[149]++ > 0) check ('a string 149'); break; + case 150: if (n[150]++ > 0) check ('a string 150'); break; + case 151: if (n[151]++ > 0) check ('a string 151'); break; + case 152: if (n[152]++ > 0) check ('a string 152'); break; + case 153: if (n[153]++ > 0) check ('a string 153'); break; + case 154: if (n[154]++ > 0) check ('a string 154'); break; + case 155: if (n[155]++ > 0) check ('a string 155'); break; + case 156: if (n[156]++ > 0) check ('a string 156'); break; + case 157: if (n[157]++ > 0) check ('a string 157'); break; + case 158: if (n[158]++ > 0) check ('a string 158'); break; + case 159: if (n[159]++ > 0) check ('a string 159'); break; + case 160: if (n[160]++ > 0) check ('a string 160'); break; + case 161: if (n[161]++ > 0) check ('a string 161'); break; + case 162: if (n[162]++ > 0) check ('a string 162'); break; + case 163: if (n[163]++ > 0) check ('a string 163'); break; + case 164: if (n[164]++ > 0) check ('a string 164'); break; + case 165: if (n[165]++ > 0) check ('a string 165'); break; + case 166: if (n[166]++ > 0) check ('a string 166'); break; + case 167: if (n[167]++ > 0) check ('a string 167'); break; + case 168: if (n[168]++ > 0) check ('a string 168'); break; + case 169: if (n[169]++ > 0) check ('a string 169'); break; + case 170: if (n[170]++ > 0) check ('a string 170'); break; + case 171: if (n[171]++ > 0) check ('a string 171'); break; + case 172: if (n[172]++ > 0) check ('a string 172'); break; + case 173: if (n[173]++ > 0) check ('a string 173'); break; + case 174: if (n[174]++ > 0) check ('a string 174'); break; + case 175: if (n[175]++ > 0) check ('a string 175'); break; + case 176: if (n[176]++ > 0) check ('a string 176'); break; + case 177: if (n[177]++ > 0) check ('a string 177'); break; + case 178: if (n[178]++ > 0) check ('a string 178'); break; + case 179: if (n[179]++ > 0) check ('a string 179'); break; + case 180: if (n[180]++ > 0) check ('a string 180'); break; + case 181: if (n[181]++ > 0) check ('a string 181'); break; + case 182: if (n[182]++ > 0) check ('a string 182'); break; + case 183: if (n[183]++ > 0) check ('a string 183'); break; + case 184: if (n[184]++ > 0) check ('a string 184'); break; + case 185: if (n[185]++ > 0) check ('a string 185'); break; + case 186: if (n[186]++ > 0) check ('a string 186'); break; + case 187: if (n[187]++ > 0) check ('a string 187'); break; + case 188: if (n[188]++ > 0) check ('a string 188'); break; + case 189: if (n[189]++ > 0) check ('a string 189'); break; + case 190: if (n[190]++ > 0) check ('a string 190'); break; + case 191: if (n[191]++ > 0) check ('a string 191'); break; + case 192: if (n[192]++ > 0) check ('a string 192'); break; + case 193: if (n[193]++ > 0) check ('a string 193'); break; + case 194: if (n[194]++ > 0) check ('a string 194'); break; + case 195: if (n[195]++ > 0) check ('a string 195'); break; + case 196: if (n[196]++ > 0) check ('a string 196'); break; + case 197: if (n[197]++ > 0) check ('a string 197'); break; + case 198: if (n[198]++ > 0) check ('a string 198'); break; + case 199: if (n[199]++ > 0) check ('a string 199'); break; + case 200: if (n[200]++ > 0) check ('a string 200'); break; + case 201: if (n[201]++ > 0) check ('a string 201'); break; + case 202: if (n[202]++ > 0) check ('a string 202'); break; + case 203: if (n[203]++ > 0) check ('a string 203'); break; + case 204: if (n[204]++ > 0) check ('a string 204'); break; + case 205: if (n[205]++ > 0) check ('a string 205'); break; + case 206: if (n[206]++ > 0) check ('a string 206'); break; + case 207: if (n[207]++ > 0) check ('a string 207'); break; + case 208: if (n[208]++ > 0) check ('a string 208'); break; + case 209: if (n[209]++ > 0) check ('a string 209'); break; + case 210: if (n[210]++ > 0) check ('a string 210'); break; + case 211: if (n[211]++ > 0) check ('a string 211'); break; + case 212: if (n[212]++ > 0) check ('a string 212'); break; + case 213: if (n[213]++ > 0) check ('a string 213'); break; + case 214: if (n[214]++ > 0) check ('a string 214'); break; + case 215: if (n[215]++ > 0) check ('a string 215'); break; + case 216: if (n[216]++ > 0) check ('a string 216'); break; + case 217: if (n[217]++ > 0) check ('a string 217'); break; + case 218: if (n[218]++ > 0) check ('a string 218'); break; + case 219: if (n[219]++ > 0) check ('a string 219'); break; + case 220: if (n[220]++ > 0) check ('a string 220'); break; + case 221: if (n[221]++ > 0) check ('a string 221'); break; + case 222: if (n[222]++ > 0) check ('a string 222'); break; + case 223: if (n[223]++ > 0) check ('a string 223'); break; + case 224: if (n[224]++ > 0) check ('a string 224'); break; + case 225: if (n[225]++ > 0) check ('a string 225'); break; + case 226: if (n[226]++ > 0) check ('a string 226'); break; + case 227: if (n[227]++ > 0) check ('a string 227'); break; + case 228: if (n[228]++ > 0) check ('a string 228'); break; + case 229: if (n[229]++ > 0) check ('a string 229'); break; + case 230: if (n[230]++ > 0) check ('a string 230'); break; + case 231: if (n[231]++ > 0) check ('a string 231'); break; + case 232: if (n[232]++ > 0) check ('a string 232'); break; + case 233: if (n[233]++ > 0) check ('a string 233'); break; + case 234: if (n[234]++ > 0) check ('a string 234'); break; + case 235: if (n[235]++ > 0) check ('a string 235'); break; + case 236: if (n[236]++ > 0) check ('a string 236'); break; + case 237: if (n[237]++ > 0) check ('a string 237'); break; + case 238: if (n[238]++ > 0) check ('a string 238'); break; + case 239: if (n[239]++ > 0) check ('a string 239'); break; + case 240: if (n[240]++ > 0) check ('a string 240'); break; + case 241: if (n[241]++ > 0) check ('a string 241'); break; + case 242: if (n[242]++ > 0) check ('a string 242'); break; + case 243: if (n[243]++ > 0) check ('a string 243'); break; + case 244: if (n[244]++ > 0) check ('a string 244'); break; + case 245: if (n[245]++ > 0) check ('a string 245'); break; + case 246: if (n[246]++ > 0) check ('a string 246'); break; + case 247: if (n[247]++ > 0) check ('a string 247'); break; + case 248: if (n[248]++ > 0) check ('a string 248'); break; + case 249: if (n[249]++ > 0) check ('a string 249'); break; + case 250: if (n[250]++ > 0) check ('a string 250'); break; + case 251: if (n[251]++ > 0) check ('a string 251'); break; + case 252: if (n[252]++ > 0) check ('a string 252'); break; + case 253: if (n[253]++ > 0) check ('a string 253'); break; + case 254: if (n[254]++ > 0) check ('a string 254'); break; + case 255: if (n[255]++ > 0) check ('a string 255'); break; + case 256: if (n[256]++ > 0) check ('a string 256'); break; + case 257: if (n[257]++ > 0) check ('a string 257'); break; + case 258: if (n[258]++ > 0) check ('a string 258'); break; + case 259: if (n[259]++ > 0) check ('a string 259'); break; + case 260: if (n[260]++ > 0) check ('a string 260'); break; + case 261: if (n[261]++ > 0) check ('a string 261'); break; + case 262: if (n[262]++ > 0) check ('a string 262'); break; + case 263: if (n[263]++ > 0) check ('a string 263'); break; + case 264: if (n[264]++ > 0) check ('a string 264'); break; + case 265: if (n[265]++ > 0) check ('a string 265'); break; + case 266: if (n[266]++ > 0) check ('a string 266'); break; + case 267: if (n[267]++ > 0) check ('a string 267'); break; + case 268: if (n[268]++ > 0) check ('a string 268'); break; + case 269: if (n[269]++ > 0) check ('a string 269'); break; + case 270: if (n[270]++ > 0) check ('a string 270'); break; + case 271: if (n[271]++ > 0) check ('a string 271'); break; + case 272: if (n[272]++ > 0) check ('a string 272'); break; + case 273: if (n[273]++ > 0) check ('a string 273'); break; + case 274: if (n[274]++ > 0) check ('a string 274'); break; + case 275: if (n[275]++ > 0) check ('a string 275'); break; + case 276: if (n[276]++ > 0) check ('a string 276'); break; + case 277: if (n[277]++ > 0) check ('a string 277'); break; + case 278: if (n[278]++ > 0) check ('a string 278'); break; + case 279: if (n[279]++ > 0) check ('a string 279'); break; + case 280: if (n[280]++ > 0) check ('a string 280'); break; + case 281: if (n[281]++ > 0) check ('a string 281'); break; + case 282: if (n[282]++ > 0) check ('a string 282'); break; + case 283: if (n[283]++ > 0) check ('a string 283'); break; + case 284: if (n[284]++ > 0) check ('a string 284'); break; + case 285: if (n[285]++ > 0) check ('a string 285'); break; + case 286: if (n[286]++ > 0) check ('a string 286'); break; + case 287: if (n[287]++ > 0) check ('a string 287'); break; + case 288: if (n[288]++ > 0) check ('a string 288'); break; + case 289: if (n[289]++ > 0) check ('a string 289'); break; + case 290: if (n[290]++ > 0) check ('a string 290'); break; + case 291: if (n[291]++ > 0) check ('a string 291'); break; + case 292: if (n[292]++ > 0) check ('a string 292'); break; + case 293: if (n[293]++ > 0) check ('a string 293'); break; + case 294: if (n[294]++ > 0) check ('a string 294'); break; + case 295: if (n[295]++ > 0) check ('a string 295'); break; + case 296: if (n[296]++ > 0) check ('a string 296'); break; + case 297: if (n[297]++ > 0) check ('a string 297'); break; + case 298: if (n[298]++ > 0) check ('a string 298'); break; + case 299: if (n[299]++ > 0) check ('a string 299'); break; + case 300: if (n[300]++ > 0) check ('a string 300'); break; + case 301: if (n[301]++ > 0) check ('a string 301'); break; + case 302: if (n[302]++ > 0) check ('a string 302'); break; + case 303: if (n[303]++ > 0) check ('a string 303'); break; + case 304: if (n[304]++ > 0) check ('a string 304'); break; + case 305: if (n[305]++ > 0) check ('a string 305'); break; + case 306: if (n[306]++ > 0) check ('a string 306'); break; + case 307: if (n[307]++ > 0) check ('a string 307'); break; + case 308: if (n[308]++ > 0) check ('a string 308'); break; + case 309: if (n[309]++ > 0) check ('a string 309'); break; + case 310: if (n[310]++ > 0) check ('a string 310'); break; + case 311: if (n[311]++ > 0) check ('a string 311'); break; + case 312: if (n[312]++ > 0) check ('a string 312'); break; + case 313: if (n[313]++ > 0) check ('a string 313'); break; + case 314: if (n[314]++ > 0) check ('a string 314'); break; + case 315: if (n[315]++ > 0) check ('a string 315'); break; + case 316: if (n[316]++ > 0) check ('a string 316'); break; + case 317: if (n[317]++ > 0) check ('a string 317'); break; + case 318: if (n[318]++ > 0) check ('a string 318'); break; + case 319: if (n[319]++ > 0) check ('a string 319'); break; + case 320: if (n[320]++ > 0) check ('a string 320'); break; + case 321: if (n[321]++ > 0) check ('a string 321'); break; + case 322: if (n[322]++ > 0) check ('a string 322'); break; + case 323: if (n[323]++ > 0) check ('a string 323'); break; + case 324: if (n[324]++ > 0) check ('a string 324'); break; + case 325: if (n[325]++ > 0) check ('a string 325'); break; + case 326: if (n[326]++ > 0) check ('a string 326'); break; + case 327: if (n[327]++ > 0) check ('a string 327'); break; + case 328: if (n[328]++ > 0) check ('a string 328'); break; + case 329: if (n[329]++ > 0) check ('a string 329'); break; + case 330: if (n[330]++ > 0) check ('a string 330'); break; + case 331: if (n[331]++ > 0) check ('a string 331'); break; + case 332: if (n[332]++ > 0) check ('a string 332'); break; + case 333: if (n[333]++ > 0) check ('a string 333'); break; + case 334: if (n[334]++ > 0) check ('a string 334'); break; + case 335: if (n[335]++ > 0) check ('a string 335'); break; + case 336: if (n[336]++ > 0) check ('a string 336'); break; + case 337: if (n[337]++ > 0) check ('a string 337'); break; + case 338: if (n[338]++ > 0) check ('a string 338'); break; + case 339: if (n[339]++ > 0) check ('a string 339'); break; + case 340: if (n[340]++ > 0) check ('a string 340'); break; + case 341: if (n[341]++ > 0) check ('a string 341'); break; + case 342: if (n[342]++ > 0) check ('a string 342'); break; + case 343: if (n[343]++ > 0) check ('a string 343'); break; + case 344: if (n[344]++ > 0) check ('a string 344'); break; + case 345: if (n[345]++ > 0) check ('a string 345'); break; + case 346: if (n[346]++ > 0) check ('a string 346'); break; + case 347: if (n[347]++ > 0) check ('a string 347'); break; + case 348: if (n[348]++ > 0) check ('a string 348'); break; + case 349: if (n[349]++ > 0) check ('a string 349'); break; + case 350: if (n[350]++ > 0) check ('a string 350'); break; + case 351: if (n[351]++ > 0) check ('a string 351'); break; + case 352: if (n[352]++ > 0) check ('a string 352'); break; + case 353: if (n[353]++ > 0) check ('a string 353'); break; + case 354: if (n[354]++ > 0) check ('a string 354'); break; + case 355: if (n[355]++ > 0) check ('a string 355'); break; + case 356: if (n[356]++ > 0) check ('a string 356'); break; + case 357: if (n[357]++ > 0) check ('a string 357'); break; + case 358: if (n[358]++ > 0) check ('a string 358'); break; + case 359: if (n[359]++ > 0) check ('a string 359'); break; + case 360: if (n[360]++ > 0) check ('a string 360'); break; + case 361: if (n[361]++ > 0) check ('a string 361'); break; + case 362: if (n[362]++ > 0) check ('a string 362'); break; + case 363: if (n[363]++ > 0) check ('a string 363'); break; + case 364: if (n[364]++ > 0) check ('a string 364'); break; + case 365: if (n[365]++ > 0) check ('a string 365'); break; + case 366: if (n[366]++ > 0) check ('a string 366'); break; + case 367: if (n[367]++ > 0) check ('a string 367'); break; + case 368: if (n[368]++ > 0) check ('a string 368'); break; + case 369: if (n[369]++ > 0) check ('a string 369'); break; + case 370: if (n[370]++ > 0) check ('a string 370'); break; + case 371: if (n[371]++ > 0) check ('a string 371'); break; + case 372: if (n[372]++ > 0) check ('a string 372'); break; + case 373: if (n[373]++ > 0) check ('a string 373'); break; + case 374: if (n[374]++ > 0) check ('a string 374'); break; + case 375: if (n[375]++ > 0) check ('a string 375'); break; + case 376: if (n[376]++ > 0) check ('a string 376'); break; + case 377: if (n[377]++ > 0) check ('a string 377'); break; + case 378: if (n[378]++ > 0) check ('a string 378'); break; + case 379: if (n[379]++ > 0) check ('a string 379'); break; + case 380: if (n[380]++ > 0) check ('a string 380'); break; + case 381: if (n[381]++ > 0) check ('a string 381'); break; + case 382: if (n[382]++ > 0) check ('a string 382'); break; + case 383: if (n[383]++ > 0) check ('a string 383'); break; + case 384: if (n[384]++ > 0) check ('a string 384'); break; + case 385: if (n[385]++ > 0) check ('a string 385'); break; + case 386: if (n[386]++ > 0) check ('a string 386'); break; + case 387: if (n[387]++ > 0) check ('a string 387'); break; + case 388: if (n[388]++ > 0) check ('a string 388'); break; + case 389: if (n[389]++ > 0) check ('a string 389'); break; + case 390: if (n[390]++ > 0) check ('a string 390'); break; + case 391: if (n[391]++ > 0) check ('a string 391'); break; + case 392: if (n[392]++ > 0) check ('a string 392'); break; + case 393: if (n[393]++ > 0) check ('a string 393'); break; + case 394: if (n[394]++ > 0) check ('a string 394'); break; + case 395: if (n[395]++ > 0) check ('a string 395'); break; + case 396: if (n[396]++ > 0) check ('a string 396'); break; + case 397: if (n[397]++ > 0) check ('a string 397'); break; + case 398: if (n[398]++ > 0) check ('a string 398'); break; + case 399: if (n[399]++ > 0) check ('a string 399'); break; + case 400: if (n[400]++ > 0) check ('a string 400'); break; + case 401: if (n[401]++ > 0) check ('a string 401'); break; + case 402: if (n[402]++ > 0) check ('a string 402'); break; + case 403: if (n[403]++ > 0) check ('a string 403'); break; + case 404: if (n[404]++ > 0) check ('a string 404'); break; + case 405: if (n[405]++ > 0) check ('a string 405'); break; + case 406: if (n[406]++ > 0) check ('a string 406'); break; + case 407: if (n[407]++ > 0) check ('a string 407'); break; + case 408: if (n[408]++ > 0) check ('a string 408'); break; + case 409: if (n[409]++ > 0) check ('a string 409'); break; + case 410: if (n[410]++ > 0) check ('a string 410'); break; + case 411: if (n[411]++ > 0) check ('a string 411'); break; + case 412: if (n[412]++ > 0) check ('a string 412'); break; + case 413: if (n[413]++ > 0) check ('a string 413'); break; + case 414: if (n[414]++ > 0) check ('a string 414'); break; + case 415: if (n[415]++ > 0) check ('a string 415'); break; + case 416: if (n[416]++ > 0) check ('a string 416'); break; + case 417: if (n[417]++ > 0) check ('a string 417'); break; + case 418: if (n[418]++ > 0) check ('a string 418'); break; + case 419: if (n[419]++ > 0) check ('a string 419'); break; + case 420: if (n[420]++ > 0) check ('a string 420'); break; + case 421: if (n[421]++ > 0) check ('a string 421'); break; + case 422: if (n[422]++ > 0) check ('a string 422'); break; + case 423: if (n[423]++ > 0) check ('a string 423'); break; + case 424: if (n[424]++ > 0) check ('a string 424'); break; + case 425: if (n[425]++ > 0) check ('a string 425'); break; + case 426: if (n[426]++ > 0) check ('a string 426'); break; + case 427: if (n[427]++ > 0) check ('a string 427'); break; + case 428: if (n[428]++ > 0) check ('a string 428'); break; + case 429: if (n[429]++ > 0) check ('a string 429'); break; + case 430: if (n[430]++ > 0) check ('a string 430'); break; + case 431: if (n[431]++ > 0) check ('a string 431'); break; + case 432: if (n[432]++ > 0) check ('a string 432'); break; + case 433: if (n[433]++ > 0) check ('a string 433'); break; + case 434: if (n[434]++ > 0) check ('a string 434'); break; + case 435: if (n[435]++ > 0) check ('a string 435'); break; + case 436: if (n[436]++ > 0) check ('a string 436'); break; + case 437: if (n[437]++ > 0) check ('a string 437'); break; + case 438: if (n[438]++ > 0) check ('a string 438'); break; + case 439: if (n[439]++ > 0) check ('a string 439'); break; + case 440: if (n[440]++ > 0) check ('a string 440'); break; + case 441: if (n[441]++ > 0) check ('a string 441'); break; + case 442: if (n[442]++ > 0) check ('a string 442'); break; + case 443: if (n[443]++ > 0) check ('a string 443'); break; + case 444: if (n[444]++ > 0) check ('a string 444'); break; + case 445: if (n[445]++ > 0) check ('a string 445'); break; + case 446: if (n[446]++ > 0) check ('a string 446'); break; + case 447: if (n[447]++ > 0) check ('a string 447'); break; + case 448: if (n[448]++ > 0) check ('a string 448'); break; + case 449: if (n[449]++ > 0) check ('a string 449'); break; + case 450: if (n[450]++ > 0) check ('a string 450'); break; + case 451: if (n[451]++ > 0) check ('a string 451'); break; + case 452: if (n[452]++ > 0) check ('a string 452'); break; + case 453: if (n[453]++ > 0) check ('a string 453'); break; + case 454: if (n[454]++ > 0) check ('a string 454'); break; + case 455: if (n[455]++ > 0) check ('a string 455'); break; + case 456: if (n[456]++ > 0) check ('a string 456'); break; + case 457: if (n[457]++ > 0) check ('a string 457'); break; + case 458: if (n[458]++ > 0) check ('a string 458'); break; + case 459: if (n[459]++ > 0) check ('a string 459'); break; + case 460: if (n[460]++ > 0) check ('a string 460'); break; + case 461: if (n[461]++ > 0) check ('a string 461'); break; + case 462: if (n[462]++ > 0) check ('a string 462'); break; + case 463: if (n[463]++ > 0) check ('a string 463'); break; + case 464: if (n[464]++ > 0) check ('a string 464'); break; + case 465: if (n[465]++ > 0) check ('a string 465'); break; + case 466: if (n[466]++ > 0) check ('a string 466'); break; + case 467: if (n[467]++ > 0) check ('a string 467'); break; + case 468: if (n[468]++ > 0) check ('a string 468'); break; + case 469: if (n[469]++ > 0) check ('a string 469'); break; + case 470: if (n[470]++ > 0) check ('a string 470'); break; + case 471: if (n[471]++ > 0) check ('a string 471'); break; + case 472: if (n[472]++ > 0) check ('a string 472'); break; + case 473: if (n[473]++ > 0) check ('a string 473'); break; + case 474: if (n[474]++ > 0) check ('a string 474'); break; + case 475: if (n[475]++ > 0) check ('a string 475'); break; + case 476: if (n[476]++ > 0) check ('a string 476'); break; + case 477: if (n[477]++ > 0) check ('a string 477'); break; + case 478: if (n[478]++ > 0) check ('a string 478'); break; + case 479: if (n[479]++ > 0) check ('a string 479'); break; + case 480: if (n[480]++ > 0) check ('a string 480'); break; + case 481: if (n[481]++ > 0) check ('a string 481'); break; + case 482: if (n[482]++ > 0) check ('a string 482'); break; + case 483: if (n[483]++ > 0) check ('a string 483'); break; + case 484: if (n[484]++ > 0) check ('a string 484'); break; + case 485: if (n[485]++ > 0) check ('a string 485'); break; + case 486: if (n[486]++ > 0) check ('a string 486'); break; + case 487: if (n[487]++ > 0) check ('a string 487'); break; + case 488: if (n[488]++ > 0) check ('a string 488'); break; + case 489: if (n[489]++ > 0) check ('a string 489'); break; + case 490: if (n[490]++ > 0) check ('a string 490'); break; + case 491: if (n[491]++ > 0) check ('a string 491'); break; + case 492: if (n[492]++ > 0) check ('a string 492'); break; + case 493: if (n[493]++ > 0) check ('a string 493'); break; + case 494: if (n[494]++ > 0) check ('a string 494'); break; + case 495: if (n[495]++ > 0) check ('a string 495'); break; + case 496: if (n[496]++ > 0) check ('a string 496'); break; + case 497: if (n[497]++ > 0) check ('a string 497'); break; + case 498: if (n[498]++ > 0) check ('a string 498'); break; + case 499: if (n[499]++ > 0) check ('a string 499'); break; + case 500: if (n[500]++ > 0) check ('a string 500'); break; + case 501: if (n[501]++ > 0) check ('a string 501'); break; + case 502: if (n[502]++ > 0) check ('a string 502'); break; + case 503: if (n[503]++ > 0) check ('a string 503'); break; + case 504: if (n[504]++ > 0) check ('a string 504'); break; + case 505: if (n[505]++ > 0) check ('a string 505'); break; + case 506: if (n[506]++ > 0) check ('a string 506'); break; + case 507: if (n[507]++ > 0) check ('a string 507'); break; + case 508: if (n[508]++ > 0) check ('a string 508'); break; + case 509: if (n[509]++ > 0) check ('a string 509'); break; + case 510: if (n[510]++ > 0) check ('a string 510'); break; + case 511: if (n[511]++ > 0) check ('a string 511'); break; + case 512: if (n[512]++ > 0) check ('a string 512'); break; + case 513: if (n[513]++ > 0) check ('a string 513'); break; + case 514: if (n[514]++ > 0) check ('a string 514'); break; + case 515: if (n[515]++ > 0) check ('a string 515'); break; + case 516: if (n[516]++ > 0) check ('a string 516'); break; + case 517: if (n[517]++ > 0) check ('a string 517'); break; + case 518: if (n[518]++ > 0) check ('a string 518'); break; + case 519: if (n[519]++ > 0) check ('a string 519'); break; + case 520: if (n[520]++ > 0) check ('a string 520'); break; + case 521: if (n[521]++ > 0) check ('a string 521'); break; + case 522: if (n[522]++ > 0) check ('a string 522'); break; + case 523: if (n[523]++ > 0) check ('a string 523'); break; + case 524: if (n[524]++ > 0) check ('a string 524'); break; + case 525: if (n[525]++ > 0) check ('a string 525'); break; + case 526: if (n[526]++ > 0) check ('a string 526'); break; + case 527: if (n[527]++ > 0) check ('a string 527'); break; + case 528: if (n[528]++ > 0) check ('a string 528'); break; + case 529: if (n[529]++ > 0) check ('a string 529'); break; + case 530: if (n[530]++ > 0) check ('a string 530'); break; + case 531: if (n[531]++ > 0) check ('a string 531'); break; + case 532: if (n[532]++ > 0) check ('a string 532'); break; + case 533: if (n[533]++ > 0) check ('a string 533'); break; + case 534: if (n[534]++ > 0) check ('a string 534'); break; + case 535: if (n[535]++ > 0) check ('a string 535'); break; + case 536: if (n[536]++ > 0) check ('a string 536'); break; + case 537: if (n[537]++ > 0) check ('a string 537'); break; + case 538: if (n[538]++ > 0) check ('a string 538'); break; + case 539: if (n[539]++ > 0) check ('a string 539'); break; + case 540: if (n[540]++ > 0) check ('a string 540'); break; + case 541: if (n[541]++ > 0) check ('a string 541'); break; + case 542: if (n[542]++ > 0) check ('a string 542'); break; + case 543: if (n[543]++ > 0) check ('a string 543'); break; + case 544: if (n[544]++ > 0) check ('a string 544'); break; + case 545: if (n[545]++ > 0) check ('a string 545'); break; + case 546: if (n[546]++ > 0) check ('a string 546'); break; + case 547: if (n[547]++ > 0) check ('a string 547'); break; + case 548: if (n[548]++ > 0) check ('a string 548'); break; + case 549: if (n[549]++ > 0) check ('a string 549'); break; + case 550: if (n[550]++ > 0) check ('a string 550'); break; + case 551: if (n[551]++ > 0) check ('a string 551'); break; + case 552: if (n[552]++ > 0) check ('a string 552'); break; + case 553: if (n[553]++ > 0) check ('a string 553'); break; + case 554: if (n[554]++ > 0) check ('a string 554'); break; + case 555: if (n[555]++ > 0) check ('a string 555'); break; + case 556: if (n[556]++ > 0) check ('a string 556'); break; + case 557: if (n[557]++ > 0) check ('a string 557'); break; + case 558: if (n[558]++ > 0) check ('a string 558'); break; + case 559: if (n[559]++ > 0) check ('a string 559'); break; + case 560: if (n[560]++ > 0) check ('a string 560'); break; + case 561: if (n[561]++ > 0) check ('a string 561'); break; + case 562: if (n[562]++ > 0) check ('a string 562'); break; + case 563: if (n[563]++ > 0) check ('a string 563'); break; + case 564: if (n[564]++ > 0) check ('a string 564'); break; + case 565: if (n[565]++ > 0) check ('a string 565'); break; + case 566: if (n[566]++ > 0) check ('a string 566'); break; + case 567: if (n[567]++ > 0) check ('a string 567'); break; + case 568: if (n[568]++ > 0) check ('a string 568'); break; + case 569: if (n[569]++ > 0) check ('a string 569'); break; + case 570: if (n[570]++ > 0) check ('a string 570'); break; + case 571: if (n[571]++ > 0) check ('a string 571'); break; + case 572: if (n[572]++ > 0) check ('a string 572'); break; + case 573: if (n[573]++ > 0) check ('a string 573'); break; + case 574: if (n[574]++ > 0) check ('a string 574'); break; + case 575: if (n[575]++ > 0) check ('a string 575'); break; + case 576: if (n[576]++ > 0) check ('a string 576'); break; + case 577: if (n[577]++ > 0) check ('a string 577'); break; + case 578: if (n[578]++ > 0) check ('a string 578'); break; + case 579: if (n[579]++ > 0) check ('a string 579'); break; + case 580: if (n[580]++ > 0) check ('a string 580'); break; + case 581: if (n[581]++ > 0) check ('a string 581'); break; + case 582: if (n[582]++ > 0) check ('a string 582'); break; + case 583: if (n[583]++ > 0) check ('a string 583'); break; + case 584: if (n[584]++ > 0) check ('a string 584'); break; + case 585: if (n[585]++ > 0) check ('a string 585'); break; + case 586: if (n[586]++ > 0) check ('a string 586'); break; + case 587: if (n[587]++ > 0) check ('a string 587'); break; + case 588: if (n[588]++ > 0) check ('a string 588'); break; + case 589: if (n[589]++ > 0) check ('a string 589'); break; + case 590: if (n[590]++ > 0) check ('a string 590'); break; + case 591: if (n[591]++ > 0) check ('a string 591'); break; + case 592: if (n[592]++ > 0) check ('a string 592'); break; + case 593: if (n[593]++ > 0) check ('a string 593'); break; + case 594: if (n[594]++ > 0) check ('a string 594'); break; + case 595: if (n[595]++ > 0) check ('a string 595'); break; + case 596: if (n[596]++ > 0) check ('a string 596'); break; + case 597: if (n[597]++ > 0) check ('a string 597'); break; + case 598: if (n[598]++ > 0) check ('a string 598'); break; + case 599: if (n[599]++ > 0) check ('a string 599'); break; + case 600: if (n[600]++ > 0) check ('a string 600'); break; + case 601: if (n[601]++ > 0) check ('a string 601'); break; + case 602: if (n[602]++ > 0) check ('a string 602'); break; + case 603: if (n[603]++ > 0) check ('a string 603'); break; + case 604: if (n[604]++ > 0) check ('a string 604'); break; + case 605: if (n[605]++ > 0) check ('a string 605'); break; + case 606: if (n[606]++ > 0) check ('a string 606'); break; + case 607: if (n[607]++ > 0) check ('a string 607'); break; + case 608: if (n[608]++ > 0) check ('a string 608'); break; + case 609: if (n[609]++ > 0) check ('a string 609'); break; + case 610: if (n[610]++ > 0) check ('a string 610'); break; + case 611: if (n[611]++ > 0) check ('a string 611'); break; + case 612: if (n[612]++ > 0) check ('a string 612'); break; + case 613: if (n[613]++ > 0) check ('a string 613'); break; + case 614: if (n[614]++ > 0) check ('a string 614'); break; + case 615: if (n[615]++ > 0) check ('a string 615'); break; + case 616: if (n[616]++ > 0) check ('a string 616'); break; + case 617: if (n[617]++ > 0) check ('a string 617'); break; + case 618: if (n[618]++ > 0) check ('a string 618'); break; + case 619: if (n[619]++ > 0) check ('a string 619'); break; + case 620: if (n[620]++ > 0) check ('a string 620'); break; + case 621: if (n[621]++ > 0) check ('a string 621'); break; + case 622: if (n[622]++ > 0) check ('a string 622'); break; + case 623: if (n[623]++ > 0) check ('a string 623'); break; + case 624: if (n[624]++ > 0) check ('a string 624'); break; + case 625: if (n[625]++ > 0) check ('a string 625'); break; + case 626: if (n[626]++ > 0) check ('a string 626'); break; + case 627: if (n[627]++ > 0) check ('a string 627'); break; + case 628: if (n[628]++ > 0) check ('a string 628'); break; + case 629: if (n[629]++ > 0) check ('a string 629'); break; + case 630: if (n[630]++ > 0) check ('a string 630'); break; + case 631: if (n[631]++ > 0) check ('a string 631'); break; + case 632: if (n[632]++ > 0) check ('a string 632'); break; + case 633: if (n[633]++ > 0) check ('a string 633'); break; + case 634: if (n[634]++ > 0) check ('a string 634'); break; + case 635: if (n[635]++ > 0) check ('a string 635'); break; + case 636: if (n[636]++ > 0) check ('a string 636'); break; + case 637: if (n[637]++ > 0) check ('a string 637'); break; + case 638: if (n[638]++ > 0) check ('a string 638'); break; + case 639: if (n[639]++ > 0) check ('a string 639'); break; + case 640: if (n[640]++ > 0) check ('a string 640'); break; + case 641: if (n[641]++ > 0) check ('a string 641'); break; + case 642: if (n[642]++ > 0) check ('a string 642'); break; + case 643: if (n[643]++ > 0) check ('a string 643'); break; + case 644: if (n[644]++ > 0) check ('a string 644'); break; + case 645: if (n[645]++ > 0) check ('a string 645'); break; + case 646: if (n[646]++ > 0) check ('a string 646'); break; + case 647: if (n[647]++ > 0) check ('a string 647'); break; + case 648: if (n[648]++ > 0) check ('a string 648'); break; + case 649: if (n[649]++ > 0) check ('a string 649'); break; + case 650: if (n[650]++ > 0) check ('a string 650'); break; + case 651: if (n[651]++ > 0) check ('a string 651'); break; + case 652: if (n[652]++ > 0) check ('a string 652'); break; + case 653: if (n[653]++ > 0) check ('a string 653'); break; + case 654: if (n[654]++ > 0) check ('a string 654'); break; + case 655: if (n[655]++ > 0) check ('a string 655'); break; + case 656: if (n[656]++ > 0) check ('a string 656'); break; + case 657: if (n[657]++ > 0) check ('a string 657'); break; + case 658: if (n[658]++ > 0) check ('a string 658'); break; + case 659: if (n[659]++ > 0) check ('a string 659'); break; + case 660: if (n[660]++ > 0) check ('a string 660'); break; + case 661: if (n[661]++ > 0) check ('a string 661'); break; + case 662: if (n[662]++ > 0) check ('a string 662'); break; + case 663: if (n[663]++ > 0) check ('a string 663'); break; + case 664: if (n[664]++ > 0) check ('a string 664'); break; + case 665: if (n[665]++ > 0) check ('a string 665'); break; + case 666: if (n[666]++ > 0) check ('a string 666'); break; + case 667: if (n[667]++ > 0) check ('a string 667'); break; + case 668: if (n[668]++ > 0) check ('a string 668'); break; + case 669: if (n[669]++ > 0) check ('a string 669'); break; + case 670: if (n[670]++ > 0) check ('a string 670'); break; + case 671: if (n[671]++ > 0) check ('a string 671'); break; + case 672: if (n[672]++ > 0) check ('a string 672'); break; + case 673: if (n[673]++ > 0) check ('a string 673'); break; + case 674: if (n[674]++ > 0) check ('a string 674'); break; + case 675: if (n[675]++ > 0) check ('a string 675'); break; + case 676: if (n[676]++ > 0) check ('a string 676'); break; + case 677: if (n[677]++ > 0) check ('a string 677'); break; + case 678: if (n[678]++ > 0) check ('a string 678'); break; + case 679: if (n[679]++ > 0) check ('a string 679'); break; + case 680: if (n[680]++ > 0) check ('a string 680'); break; + case 681: if (n[681]++ > 0) check ('a string 681'); break; + case 682: if (n[682]++ > 0) check ('a string 682'); break; + case 683: if (n[683]++ > 0) check ('a string 683'); break; + case 684: if (n[684]++ > 0) check ('a string 684'); break; + case 685: if (n[685]++ > 0) check ('a string 685'); break; + case 686: if (n[686]++ > 0) check ('a string 686'); break; + case 687: if (n[687]++ > 0) check ('a string 687'); break; + case 688: if (n[688]++ > 0) check ('a string 688'); break; + case 689: if (n[689]++ > 0) check ('a string 689'); break; + case 690: if (n[690]++ > 0) check ('a string 690'); break; + case 691: if (n[691]++ > 0) check ('a string 691'); break; + case 692: if (n[692]++ > 0) check ('a string 692'); break; + case 693: if (n[693]++ > 0) check ('a string 693'); break; + case 694: if (n[694]++ > 0) check ('a string 694'); break; + case 695: if (n[695]++ > 0) check ('a string 695'); break; + case 696: if (n[696]++ > 0) check ('a string 696'); break; + case 697: if (n[697]++ > 0) check ('a string 697'); break; + case 698: if (n[698]++ > 0) check ('a string 698'); break; + case 699: if (n[699]++ > 0) check ('a string 699'); break; + case 700: if (n[700]++ > 0) check ('a string 700'); break; + case 701: if (n[701]++ > 0) check ('a string 701'); break; + case 702: if (n[702]++ > 0) check ('a string 702'); break; + case 703: if (n[703]++ > 0) check ('a string 703'); break; + case 704: if (n[704]++ > 0) check ('a string 704'); break; + case 705: if (n[705]++ > 0) check ('a string 705'); break; + case 706: if (n[706]++ > 0) check ('a string 706'); break; + case 707: if (n[707]++ > 0) check ('a string 707'); break; + case 708: if (n[708]++ > 0) check ('a string 708'); break; + case 709: if (n[709]++ > 0) check ('a string 709'); break; + case 710: if (n[710]++ > 0) check ('a string 710'); break; + case 711: if (n[711]++ > 0) check ('a string 711'); break; + case 712: if (n[712]++ > 0) check ('a string 712'); break; + case 713: if (n[713]++ > 0) check ('a string 713'); break; + case 714: if (n[714]++ > 0) check ('a string 714'); break; + case 715: if (n[715]++ > 0) check ('a string 715'); break; + case 716: if (n[716]++ > 0) check ('a string 716'); break; + case 717: if (n[717]++ > 0) check ('a string 717'); break; + case 718: if (n[718]++ > 0) check ('a string 718'); break; + case 719: if (n[719]++ > 0) check ('a string 719'); break; + case 720: if (n[720]++ > 0) check ('a string 720'); break; + case 721: if (n[721]++ > 0) check ('a string 721'); break; + case 722: if (n[722]++ > 0) check ('a string 722'); break; + case 723: if (n[723]++ > 0) check ('a string 723'); break; + case 724: if (n[724]++ > 0) check ('a string 724'); break; + case 725: if (n[725]++ > 0) check ('a string 725'); break; + case 726: if (n[726]++ > 0) check ('a string 726'); break; + case 727: if (n[727]++ > 0) check ('a string 727'); break; + case 728: if (n[728]++ > 0) check ('a string 728'); break; + case 729: if (n[729]++ > 0) check ('a string 729'); break; + case 730: if (n[730]++ > 0) check ('a string 730'); break; + case 731: if (n[731]++ > 0) check ('a string 731'); break; + case 732: if (n[732]++ > 0) check ('a string 732'); break; + case 733: if (n[733]++ > 0) check ('a string 733'); break; + case 734: if (n[734]++ > 0) check ('a string 734'); break; + case 735: if (n[735]++ > 0) check ('a string 735'); break; + case 736: if (n[736]++ > 0) check ('a string 736'); break; + case 737: if (n[737]++ > 0) check ('a string 737'); break; + case 738: if (n[738]++ > 0) check ('a string 738'); break; + case 739: if (n[739]++ > 0) check ('a string 739'); break; + case 740: if (n[740]++ > 0) check ('a string 740'); break; + case 741: if (n[741]++ > 0) check ('a string 741'); break; + case 742: if (n[742]++ > 0) check ('a string 742'); break; + case 743: if (n[743]++ > 0) check ('a string 743'); break; + case 744: if (n[744]++ > 0) check ('a string 744'); break; + case 745: if (n[745]++ > 0) check ('a string 745'); break; + case 746: if (n[746]++ > 0) check ('a string 746'); break; + case 747: if (n[747]++ > 0) check ('a string 747'); break; + case 748: if (n[748]++ > 0) check ('a string 748'); break; + case 749: if (n[749]++ > 0) check ('a string 749'); break; + case 750: if (n[750]++ > 0) check ('a string 750'); break; + case 751: if (n[751]++ > 0) check ('a string 751'); break; + case 752: if (n[752]++ > 0) check ('a string 752'); break; + case 753: if (n[753]++ > 0) check ('a string 753'); break; + case 754: if (n[754]++ > 0) check ('a string 754'); break; + case 755: if (n[755]++ > 0) check ('a string 755'); break; + case 756: if (n[756]++ > 0) check ('a string 756'); break; + case 757: if (n[757]++ > 0) check ('a string 757'); break; + case 758: if (n[758]++ > 0) check ('a string 758'); break; + case 759: if (n[759]++ > 0) check ('a string 759'); break; + case 760: if (n[760]++ > 0) check ('a string 760'); break; + case 761: if (n[761]++ > 0) check ('a string 761'); break; + case 762: if (n[762]++ > 0) check ('a string 762'); break; + case 763: if (n[763]++ > 0) check ('a string 763'); break; + case 764: if (n[764]++ > 0) check ('a string 764'); break; + case 765: if (n[765]++ > 0) check ('a string 765'); break; + case 766: if (n[766]++ > 0) check ('a string 766'); break; + case 767: if (n[767]++ > 0) check ('a string 767'); break; + case 768: if (n[768]++ > 0) check ('a string 768'); break; + case 769: if (n[769]++ > 0) check ('a string 769'); break; + case 770: if (n[770]++ > 0) check ('a string 770'); break; + case 771: if (n[771]++ > 0) check ('a string 771'); break; + case 772: if (n[772]++ > 0) check ('a string 772'); break; + case 773: if (n[773]++ > 0) check ('a string 773'); break; + case 774: if (n[774]++ > 0) check ('a string 774'); break; + case 775: if (n[775]++ > 0) check ('a string 775'); break; + case 776: if (n[776]++ > 0) check ('a string 776'); break; + case 777: if (n[777]++ > 0) check ('a string 777'); break; + case 778: if (n[778]++ > 0) check ('a string 778'); break; + case 779: if (n[779]++ > 0) check ('a string 779'); break; + case 780: if (n[780]++ > 0) check ('a string 780'); break; + case 781: if (n[781]++ > 0) check ('a string 781'); break; + case 782: if (n[782]++ > 0) check ('a string 782'); break; + case 783: if (n[783]++ > 0) check ('a string 783'); break; + case 784: if (n[784]++ > 0) check ('a string 784'); break; + case 785: if (n[785]++ > 0) check ('a string 785'); break; + case 786: if (n[786]++ > 0) check ('a string 786'); break; + case 787: if (n[787]++ > 0) check ('a string 787'); break; + case 788: if (n[788]++ > 0) check ('a string 788'); break; + case 789: if (n[789]++ > 0) check ('a string 789'); break; + case 790: if (n[790]++ > 0) check ('a string 790'); break; + case 791: if (n[791]++ > 0) check ('a string 791'); break; + case 792: if (n[792]++ > 0) check ('a string 792'); break; + case 793: if (n[793]++ > 0) check ('a string 793'); break; + case 794: if (n[794]++ > 0) check ('a string 794'); break; + case 795: if (n[795]++ > 0) check ('a string 795'); break; + case 796: if (n[796]++ > 0) check ('a string 796'); break; + case 797: if (n[797]++ > 0) check ('a string 797'); break; + case 798: if (n[798]++ > 0) check ('a string 798'); break; + case 799: if (n[799]++ > 0) check ('a string 799'); break; + case 800: if (n[800]++ > 0) check ('a string 800'); break; + case 801: if (n[801]++ > 0) check ('a string 801'); break; + case 802: if (n[802]++ > 0) check ('a string 802'); break; + case 803: if (n[803]++ > 0) check ('a string 803'); break; + case 804: if (n[804]++ > 0) check ('a string 804'); break; + case 805: if (n[805]++ > 0) check ('a string 805'); break; + case 806: if (n[806]++ > 0) check ('a string 806'); break; + case 807: if (n[807]++ > 0) check ('a string 807'); break; + case 808: if (n[808]++ > 0) check ('a string 808'); break; + case 809: if (n[809]++ > 0) check ('a string 809'); break; + case 810: if (n[810]++ > 0) check ('a string 810'); break; + case 811: if (n[811]++ > 0) check ('a string 811'); break; + case 812: if (n[812]++ > 0) check ('a string 812'); break; + case 813: if (n[813]++ > 0) check ('a string 813'); break; + case 814: if (n[814]++ > 0) check ('a string 814'); break; + case 815: if (n[815]++ > 0) check ('a string 815'); break; + case 816: if (n[816]++ > 0) check ('a string 816'); break; + case 817: if (n[817]++ > 0) check ('a string 817'); break; + case 818: if (n[818]++ > 0) check ('a string 818'); break; + case 819: if (n[819]++ > 0) check ('a string 819'); break; + case 820: if (n[820]++ > 0) check ('a string 820'); break; + case 821: if (n[821]++ > 0) check ('a string 821'); break; + case 822: if (n[822]++ > 0) check ('a string 822'); break; + case 823: if (n[823]++ > 0) check ('a string 823'); break; + case 824: if (n[824]++ > 0) check ('a string 824'); break; + case 825: if (n[825]++ > 0) check ('a string 825'); break; + case 826: if (n[826]++ > 0) check ('a string 826'); break; + case 827: if (n[827]++ > 0) check ('a string 827'); break; + case 828: if (n[828]++ > 0) check ('a string 828'); break; + case 829: if (n[829]++ > 0) check ('a string 829'); break; + case 830: if (n[830]++ > 0) check ('a string 830'); break; + case 831: if (n[831]++ > 0) check ('a string 831'); break; + case 832: if (n[832]++ > 0) check ('a string 832'); break; + case 833: if (n[833]++ > 0) check ('a string 833'); break; + case 834: if (n[834]++ > 0) check ('a string 834'); break; + case 835: if (n[835]++ > 0) check ('a string 835'); break; + case 836: if (n[836]++ > 0) check ('a string 836'); break; + case 837: if (n[837]++ > 0) check ('a string 837'); break; + case 838: if (n[838]++ > 0) check ('a string 838'); break; + case 839: if (n[839]++ > 0) check ('a string 839'); break; + case 840: if (n[840]++ > 0) check ('a string 840'); break; + case 841: if (n[841]++ > 0) check ('a string 841'); break; + case 842: if (n[842]++ > 0) check ('a string 842'); break; + case 843: if (n[843]++ > 0) check ('a string 843'); break; + case 844: if (n[844]++ > 0) check ('a string 844'); break; + case 845: if (n[845]++ > 0) check ('a string 845'); break; + case 846: if (n[846]++ > 0) check ('a string 846'); break; + case 847: if (n[847]++ > 0) check ('a string 847'); break; + case 848: if (n[848]++ > 0) check ('a string 848'); break; + case 849: if (n[849]++ > 0) check ('a string 849'); break; + case 850: if (n[850]++ > 0) check ('a string 850'); break; + case 851: if (n[851]++ > 0) check ('a string 851'); break; + case 852: if (n[852]++ > 0) check ('a string 852'); break; + case 853: if (n[853]++ > 0) check ('a string 853'); break; + case 854: if (n[854]++ > 0) check ('a string 854'); break; + case 855: if (n[855]++ > 0) check ('a string 855'); break; + case 856: if (n[856]++ > 0) check ('a string 856'); break; + case 857: if (n[857]++ > 0) check ('a string 857'); break; + case 858: if (n[858]++ > 0) check ('a string 858'); break; + case 859: if (n[859]++ > 0) check ('a string 859'); break; + case 860: if (n[860]++ > 0) check ('a string 860'); break; + case 861: if (n[861]++ > 0) check ('a string 861'); break; + case 862: if (n[862]++ > 0) check ('a string 862'); break; + case 863: if (n[863]++ > 0) check ('a string 863'); break; + case 864: if (n[864]++ > 0) check ('a string 864'); break; + case 865: if (n[865]++ > 0) check ('a string 865'); break; + case 866: if (n[866]++ > 0) check ('a string 866'); break; + case 867: if (n[867]++ > 0) check ('a string 867'); break; + case 868: if (n[868]++ > 0) check ('a string 868'); break; + case 869: if (n[869]++ > 0) check ('a string 869'); break; + case 870: if (n[870]++ > 0) check ('a string 870'); break; + case 871: if (n[871]++ > 0) check ('a string 871'); break; + case 872: if (n[872]++ > 0) check ('a string 872'); break; + case 873: if (n[873]++ > 0) check ('a string 873'); break; + case 874: if (n[874]++ > 0) check ('a string 874'); break; + case 875: if (n[875]++ > 0) check ('a string 875'); break; + case 876: if (n[876]++ > 0) check ('a string 876'); break; + case 877: if (n[877]++ > 0) check ('a string 877'); break; + case 878: if (n[878]++ > 0) check ('a string 878'); break; + case 879: if (n[879]++ > 0) check ('a string 879'); break; + case 880: if (n[880]++ > 0) check ('a string 880'); break; + case 881: if (n[881]++ > 0) check ('a string 881'); break; + case 882: if (n[882]++ > 0) check ('a string 882'); break; + case 883: if (n[883]++ > 0) check ('a string 883'); break; + case 884: if (n[884]++ > 0) check ('a string 884'); break; + case 885: if (n[885]++ > 0) check ('a string 885'); break; + case 886: if (n[886]++ > 0) check ('a string 886'); break; + case 887: if (n[887]++ > 0) check ('a string 887'); break; + case 888: if (n[888]++ > 0) check ('a string 888'); break; + case 889: if (n[889]++ > 0) check ('a string 889'); break; + case 890: if (n[890]++ > 0) check ('a string 890'); break; + case 891: if (n[891]++ > 0) check ('a string 891'); break; + case 892: if (n[892]++ > 0) check ('a string 892'); break; + case 893: if (n[893]++ > 0) check ('a string 893'); break; + case 894: if (n[894]++ > 0) check ('a string 894'); break; + case 895: if (n[895]++ > 0) check ('a string 895'); break; + case 896: if (n[896]++ > 0) check ('a string 896'); break; + case 897: if (n[897]++ > 0) check ('a string 897'); break; + case 898: if (n[898]++ > 0) check ('a string 898'); break; + case 899: if (n[899]++ > 0) check ('a string 899'); break; + case 900: if (n[900]++ > 0) check ('a string 900'); break; + case 901: if (n[901]++ > 0) check ('a string 901'); break; + case 902: if (n[902]++ > 0) check ('a string 902'); break; + case 903: if (n[903]++ > 0) check ('a string 903'); break; + case 904: if (n[904]++ > 0) check ('a string 904'); break; + case 905: if (n[905]++ > 0) check ('a string 905'); break; + case 906: if (n[906]++ > 0) check ('a string 906'); break; + case 907: if (n[907]++ > 0) check ('a string 907'); break; + case 908: if (n[908]++ > 0) check ('a string 908'); break; + case 909: if (n[909]++ > 0) check ('a string 909'); break; + case 910: if (n[910]++ > 0) check ('a string 910'); break; + case 911: if (n[911]++ > 0) check ('a string 911'); break; + case 912: if (n[912]++ > 0) check ('a string 912'); break; + case 913: if (n[913]++ > 0) check ('a string 913'); break; + case 914: if (n[914]++ > 0) check ('a string 914'); break; + case 915: if (n[915]++ > 0) check ('a string 915'); break; + case 916: if (n[916]++ > 0) check ('a string 916'); break; + case 917: if (n[917]++ > 0) check ('a string 917'); break; + case 918: if (n[918]++ > 0) check ('a string 918'); break; + case 919: if (n[919]++ > 0) check ('a string 919'); break; + case 920: if (n[920]++ > 0) check ('a string 920'); break; + case 921: if (n[921]++ > 0) check ('a string 921'); break; + case 922: if (n[922]++ > 0) check ('a string 922'); break; + case 923: if (n[923]++ > 0) check ('a string 923'); break; + case 924: if (n[924]++ > 0) check ('a string 924'); break; + case 925: if (n[925]++ > 0) check ('a string 925'); break; + case 926: if (n[926]++ > 0) check ('a string 926'); break; + case 927: if (n[927]++ > 0) check ('a string 927'); break; + case 928: if (n[928]++ > 0) check ('a string 928'); break; + case 929: if (n[929]++ > 0) check ('a string 929'); break; + case 930: if (n[930]++ > 0) check ('a string 930'); break; + case 931: if (n[931]++ > 0) check ('a string 931'); break; + case 932: if (n[932]++ > 0) check ('a string 932'); break; + case 933: if (n[933]++ > 0) check ('a string 933'); break; + case 934: if (n[934]++ > 0) check ('a string 934'); break; + case 935: if (n[935]++ > 0) check ('a string 935'); break; + case 936: if (n[936]++ > 0) check ('a string 936'); break; + case 937: if (n[937]++ > 0) check ('a string 937'); break; + case 938: if (n[938]++ > 0) check ('a string 938'); break; + case 939: if (n[939]++ > 0) check ('a string 939'); break; + case 940: if (n[940]++ > 0) check ('a string 940'); break; + case 941: if (n[941]++ > 0) check ('a string 941'); break; + case 942: if (n[942]++ > 0) check ('a string 942'); break; + case 943: if (n[943]++ > 0) check ('a string 943'); break; + case 944: if (n[944]++ > 0) check ('a string 944'); break; + case 945: if (n[945]++ > 0) check ('a string 945'); break; + case 946: if (n[946]++ > 0) check ('a string 946'); break; + case 947: if (n[947]++ > 0) check ('a string 947'); break; + case 948: if (n[948]++ > 0) check ('a string 948'); break; + case 949: if (n[949]++ > 0) check ('a string 949'); break; + case 950: if (n[950]++ > 0) check ('a string 950'); break; + case 951: if (n[951]++ > 0) check ('a string 951'); break; + case 952: if (n[952]++ > 0) check ('a string 952'); break; + case 953: if (n[953]++ > 0) check ('a string 953'); break; + case 954: if (n[954]++ > 0) check ('a string 954'); break; + case 955: if (n[955]++ > 0) check ('a string 955'); break; + case 956: if (n[956]++ > 0) check ('a string 956'); break; + case 957: if (n[957]++ > 0) check ('a string 957'); break; + case 958: if (n[958]++ > 0) check ('a string 958'); break; + case 959: if (n[959]++ > 0) check ('a string 959'); break; + case 960: if (n[960]++ > 0) check ('a string 960'); break; + case 961: if (n[961]++ > 0) check ('a string 961'); break; + case 962: if (n[962]++ > 0) check ('a string 962'); break; + case 963: if (n[963]++ > 0) check ('a string 963'); break; + case 964: if (n[964]++ > 0) check ('a string 964'); break; + case 965: if (n[965]++ > 0) check ('a string 965'); break; + case 966: if (n[966]++ > 0) check ('a string 966'); break; + case 967: if (n[967]++ > 0) check ('a string 967'); break; + case 968: if (n[968]++ > 0) check ('a string 968'); break; + case 969: if (n[969]++ > 0) check ('a string 969'); break; + case 970: if (n[970]++ > 0) check ('a string 970'); break; + case 971: if (n[971]++ > 0) check ('a string 971'); break; + case 972: if (n[972]++ > 0) check ('a string 972'); break; + case 973: if (n[973]++ > 0) check ('a string 973'); break; + case 974: if (n[974]++ > 0) check ('a string 974'); break; + case 975: if (n[975]++ > 0) check ('a string 975'); break; + case 976: if (n[976]++ > 0) check ('a string 976'); break; + case 977: if (n[977]++ > 0) check ('a string 977'); break; + case 978: if (n[978]++ > 0) check ('a string 978'); break; + case 979: if (n[979]++ > 0) check ('a string 979'); break; + case 980: if (n[980]++ > 0) check ('a string 980'); break; + case 981: if (n[981]++ > 0) check ('a string 981'); break; + case 982: if (n[982]++ > 0) check ('a string 982'); break; + case 983: if (n[983]++ > 0) check ('a string 983'); break; + case 984: if (n[984]++ > 0) check ('a string 984'); break; + case 985: if (n[985]++ > 0) check ('a string 985'); break; + case 986: if (n[986]++ > 0) check ('a string 986'); break; + case 987: if (n[987]++ > 0) check ('a string 987'); break; + case 988: if (n[988]++ > 0) check ('a string 988'); break; + case 989: if (n[989]++ > 0) check ('a string 989'); break; + case 990: if (n[990]++ > 0) check ('a string 990'); break; + case 991: if (n[991]++ > 0) check ('a string 991'); break; + case 992: if (n[992]++ > 0) check ('a string 992'); break; + case 993: if (n[993]++ > 0) check ('a string 993'); break; + case 994: if (n[994]++ > 0) check ('a string 994'); break; + case 995: if (n[995]++ > 0) check ('a string 995'); break; + case 996: if (n[996]++ > 0) check ('a string 996'); break; + case 997: if (n[997]++ > 0) check ('a string 997'); break; + case 998: if (n[998]++ > 0) check ('a string 998'); break; + case 999: if (n[999]++ > 0) check ('a string 999'); break; + case 1000: if (n[1000]++ > 0) check ('a string 1000'); break; + case 1001: if (n[1001]++ > 0) check ('a string 1001'); break; + case 1002: if (n[1002]++ > 0) check ('a string 1002'); break; + case 1003: if (n[1003]++ > 0) check ('a string 1003'); break; + case 1004: if (n[1004]++ > 0) check ('a string 1004'); break; + case 1005: if (n[1005]++ > 0) check ('a string 1005'); break; + case 1006: if (n[1006]++ > 0) check ('a string 1006'); break; + case 1007: if (n[1007]++ > 0) check ('a string 1007'); break; + case 1008: if (n[1008]++ > 0) check ('a string 1008'); break; + case 1009: if (n[1009]++ > 0) check ('a string 1009'); break; + case 1010: if (n[1010]++ > 0) check ('a string 1010'); break; + case 1011: if (n[1011]++ > 0) check ('a string 1011'); break; + case 1012: if (n[1012]++ > 0) check ('a string 1012'); break; + case 1013: if (n[1013]++ > 0) check ('a string 1013'); break; + case 1014: if (n[1014]++ > 0) check ('a string 1014'); break; + case 1015: if (n[1015]++ > 0) check ('a string 1015'); break; + case 1016: if (n[1016]++ > 0) check ('a string 1016'); break; + case 1017: if (n[1017]++ > 0) check ('a string 1017'); break; + case 1018: if (n[1018]++ > 0) check ('a string 1018'); break; + case 1019: if (n[1019]++ > 0) check ('a string 1019'); break; + case 1020: if (n[1020]++ > 0) check ('a string 1020'); break; + case 1021: if (n[1021]++ > 0) check ('a string 1021'); break; + case 1022: if (n[1022]++ > 0) check ('a string 1022'); break; + case 1023: if (n[1023]++ > 0) check ('a string 1023'); break; + case 1024: if (n[1024]++ > 0) check ('a string 1024'); break; + case 1025: if (n[1025]++ > 0) check ('a string 1025'); break; + case 1026: if (n[1026]++ > 0) check ('a string 1026'); break; + case 1027: if (n[1027]++ > 0) check ('a string 1027'); break; + case 1028: if (n[1028]++ > 0) check ('a string 1028'); break; + case 1029: if (n[1029]++ > 0) check ('a string 1029'); break; + case 1030: if (n[1030]++ > 0) check ('a string 1030'); break; + case 1031: if (n[1031]++ > 0) check ('a string 1031'); break; + case 1032: if (n[1032]++ > 0) check ('a string 1032'); break; + case 1033: if (n[1033]++ > 0) check ('a string 1033'); break; + case 1034: if (n[1034]++ > 0) check ('a string 1034'); break; + case 1035: if (n[1035]++ > 0) check ('a string 1035'); break; + case 1036: if (n[1036]++ > 0) check ('a string 1036'); break; + case 1037: if (n[1037]++ > 0) check ('a string 1037'); break; + case 1038: if (n[1038]++ > 0) check ('a string 1038'); break; + case 1039: if (n[1039]++ > 0) check ('a string 1039'); break; + case 1040: if (n[1040]++ > 0) check ('a string 1040'); break; + case 1041: if (n[1041]++ > 0) check ('a string 1041'); break; + case 1042: if (n[1042]++ > 0) check ('a string 1042'); break; + case 1043: if (n[1043]++ > 0) check ('a string 1043'); break; + case 1044: if (n[1044]++ > 0) check ('a string 1044'); break; + case 1045: if (n[1045]++ > 0) check ('a string 1045'); break; + case 1046: if (n[1046]++ > 0) check ('a string 1046'); break; + case 1047: if (n[1047]++ > 0) check ('a string 1047'); break; + case 1048: if (n[1048]++ > 0) check ('a string 1048'); break; + case 1049: if (n[1049]++ > 0) check ('a string 1049'); break; + case 1050: if (n[1050]++ > 0) check ('a string 1050'); break; + case 1051: if (n[1051]++ > 0) check ('a string 1051'); break; + case 1052: if (n[1052]++ > 0) check ('a string 1052'); break; + case 1053: if (n[1053]++ > 0) check ('a string 1053'); break; + case 1054: if (n[1054]++ > 0) check ('a string 1054'); break; + case 1055: if (n[1055]++ > 0) check ('a string 1055'); break; + case 1056: if (n[1056]++ > 0) check ('a string 1056'); break; + case 1057: if (n[1057]++ > 0) check ('a string 1057'); break; + case 1058: if (n[1058]++ > 0) check ('a string 1058'); break; + case 1059: if (n[1059]++ > 0) check ('a string 1059'); break; + case 1060: if (n[1060]++ > 0) check ('a string 1060'); break; + case 1061: if (n[1061]++ > 0) check ('a string 1061'); break; + case 1062: if (n[1062]++ > 0) check ('a string 1062'); break; + case 1063: if (n[1063]++ > 0) check ('a string 1063'); break; + case 1064: if (n[1064]++ > 0) check ('a string 1064'); break; + case 1065: if (n[1065]++ > 0) check ('a string 1065'); break; + case 1066: if (n[1066]++ > 0) check ('a string 1066'); break; + case 1067: if (n[1067]++ > 0) check ('a string 1067'); break; + case 1068: if (n[1068]++ > 0) check ('a string 1068'); break; + case 1069: if (n[1069]++ > 0) check ('a string 1069'); break; + case 1070: if (n[1070]++ > 0) check ('a string 1070'); break; + case 1071: if (n[1071]++ > 0) check ('a string 1071'); break; + case 1072: if (n[1072]++ > 0) check ('a string 1072'); break; + case 1073: if (n[1073]++ > 0) check ('a string 1073'); break; + case 1074: if (n[1074]++ > 0) check ('a string 1074'); break; + case 1075: if (n[1075]++ > 0) check ('a string 1075'); break; + case 1076: if (n[1076]++ > 0) check ('a string 1076'); break; + case 1077: if (n[1077]++ > 0) check ('a string 1077'); break; + case 1078: if (n[1078]++ > 0) check ('a string 1078'); break; + case 1079: if (n[1079]++ > 0) check ('a string 1079'); break; + case 1080: if (n[1080]++ > 0) check ('a string 1080'); break; + case 1081: if (n[1081]++ > 0) check ('a string 1081'); break; + case 1082: if (n[1082]++ > 0) check ('a string 1082'); break; + case 1083: if (n[1083]++ > 0) check ('a string 1083'); break; + case 1084: if (n[1084]++ > 0) check ('a string 1084'); break; + case 1085: if (n[1085]++ > 0) check ('a string 1085'); break; + case 1086: if (n[1086]++ > 0) check ('a string 1086'); break; + case 1087: if (n[1087]++ > 0) check ('a string 1087'); break; + case 1088: if (n[1088]++ > 0) check ('a string 1088'); break; + case 1089: if (n[1089]++ > 0) check ('a string 1089'); break; + case 1090: if (n[1090]++ > 0) check ('a string 1090'); break; + case 1091: if (n[1091]++ > 0) check ('a string 1091'); break; + case 1092: if (n[1092]++ > 0) check ('a string 1092'); break; + case 1093: if (n[1093]++ > 0) check ('a string 1093'); break; + case 1094: if (n[1094]++ > 0) check ('a string 1094'); break; + case 1095: if (n[1095]++ > 0) check ('a string 1095'); break; + case 1096: if (n[1096]++ > 0) check ('a string 1096'); break; + case 1097: if (n[1097]++ > 0) check ('a string 1097'); break; + case 1098: if (n[1098]++ > 0) check ('a string 1098'); break; + case 1099: if (n[1099]++ > 0) check ('a string 1099'); break; + case 1100: if (n[1100]++ > 0) check ('a string 1100'); break; + case 1101: if (n[1101]++ > 0) check ('a string 1101'); break; + case 1102: if (n[1102]++ > 0) check ('a string 1102'); break; + case 1103: if (n[1103]++ > 0) check ('a string 1103'); break; + case 1104: if (n[1104]++ > 0) check ('a string 1104'); break; + case 1105: if (n[1105]++ > 0) check ('a string 1105'); break; + case 1106: if (n[1106]++ > 0) check ('a string 1106'); break; + case 1107: if (n[1107]++ > 0) check ('a string 1107'); break; + case 1108: if (n[1108]++ > 0) check ('a string 1108'); break; + case 1109: if (n[1109]++ > 0) check ('a string 1109'); break; + case 1110: if (n[1110]++ > 0) check ('a string 1110'); break; + case 1111: if (n[1111]++ > 0) check ('a string 1111'); break; + case 1112: if (n[1112]++ > 0) check ('a string 1112'); break; + case 1113: if (n[1113]++ > 0) check ('a string 1113'); break; + case 1114: if (n[1114]++ > 0) check ('a string 1114'); break; + case 1115: if (n[1115]++ > 0) check ('a string 1115'); break; + case 1116: if (n[1116]++ > 0) check ('a string 1116'); break; + case 1117: if (n[1117]++ > 0) check ('a string 1117'); break; + case 1118: if (n[1118]++ > 0) check ('a string 1118'); break; + case 1119: if (n[1119]++ > 0) check ('a string 1119'); break; + case 1120: if (n[1120]++ > 0) check ('a string 1120'); break; + case 1121: if (n[1121]++ > 0) check ('a string 1121'); break; + case 1122: if (n[1122]++ > 0) check ('a string 1122'); break; + case 1123: if (n[1123]++ > 0) check ('a string 1123'); break; + case 1124: if (n[1124]++ > 0) check ('a string 1124'); break; + case 1125: if (n[1125]++ > 0) check ('a string 1125'); break; + case 1126: if (n[1126]++ > 0) check ('a string 1126'); break; + case 1127: if (n[1127]++ > 0) check ('a string 1127'); break; + case 1128: if (n[1128]++ > 0) check ('a string 1128'); break; + case 1129: if (n[1129]++ > 0) check ('a string 1129'); break; + case 1130: if (n[1130]++ > 0) check ('a string 1130'); break; + case 1131: if (n[1131]++ > 0) check ('a string 1131'); break; + case 1132: if (n[1132]++ > 0) check ('a string 1132'); break; + case 1133: if (n[1133]++ > 0) check ('a string 1133'); break; + case 1134: if (n[1134]++ > 0) check ('a string 1134'); break; + case 1135: if (n[1135]++ > 0) check ('a string 1135'); break; + case 1136: if (n[1136]++ > 0) check ('a string 1136'); break; + case 1137: if (n[1137]++ > 0) check ('a string 1137'); break; + case 1138: if (n[1138]++ > 0) check ('a string 1138'); break; + case 1139: if (n[1139]++ > 0) check ('a string 1139'); break; + case 1140: if (n[1140]++ > 0) check ('a string 1140'); break; + case 1141: if (n[1141]++ > 0) check ('a string 1141'); break; + case 1142: if (n[1142]++ > 0) check ('a string 1142'); break; + case 1143: if (n[1143]++ > 0) check ('a string 1143'); break; + case 1144: if (n[1144]++ > 0) check ('a string 1144'); break; + case 1145: if (n[1145]++ > 0) check ('a string 1145'); break; + case 1146: if (n[1146]++ > 0) check ('a string 1146'); break; + case 1147: if (n[1147]++ > 0) check ('a string 1147'); break; + case 1148: if (n[1148]++ > 0) check ('a string 1148'); break; + case 1149: if (n[1149]++ > 0) check ('a string 1149'); break; + case 1150: if (n[1150]++ > 0) check ('a string 1150'); break; + case 1151: if (n[1151]++ > 0) check ('a string 1151'); break; + case 1152: if (n[1152]++ > 0) check ('a string 1152'); break; + case 1153: if (n[1153]++ > 0) check ('a string 1153'); break; + case 1154: if (n[1154]++ > 0) check ('a string 1154'); break; + case 1155: if (n[1155]++ > 0) check ('a string 1155'); break; + case 1156: if (n[1156]++ > 0) check ('a string 1156'); break; + case 1157: if (n[1157]++ > 0) check ('a string 1157'); break; + case 1158: if (n[1158]++ > 0) check ('a string 1158'); break; + case 1159: if (n[1159]++ > 0) check ('a string 1159'); break; + case 1160: if (n[1160]++ > 0) check ('a string 1160'); break; + case 1161: if (n[1161]++ > 0) check ('a string 1161'); break; + case 1162: if (n[1162]++ > 0) check ('a string 1162'); break; + case 1163: if (n[1163]++ > 0) check ('a string 1163'); break; + case 1164: if (n[1164]++ > 0) check ('a string 1164'); break; + case 1165: if (n[1165]++ > 0) check ('a string 1165'); break; + case 1166: if (n[1166]++ > 0) check ('a string 1166'); break; + case 1167: if (n[1167]++ > 0) check ('a string 1167'); break; + case 1168: if (n[1168]++ > 0) check ('a string 1168'); break; + case 1169: if (n[1169]++ > 0) check ('a string 1169'); break; + case 1170: if (n[1170]++ > 0) check ('a string 1170'); break; + case 1171: if (n[1171]++ > 0) check ('a string 1171'); break; + case 1172: if (n[1172]++ > 0) check ('a string 1172'); break; + case 1173: if (n[1173]++ > 0) check ('a string 1173'); break; + case 1174: if (n[1174]++ > 0) check ('a string 1174'); break; + case 1175: if (n[1175]++ > 0) check ('a string 1175'); break; + case 1176: if (n[1176]++ > 0) check ('a string 1176'); break; + case 1177: if (n[1177]++ > 0) check ('a string 1177'); break; + case 1178: if (n[1178]++ > 0) check ('a string 1178'); break; + case 1179: if (n[1179]++ > 0) check ('a string 1179'); break; + case 1180: if (n[1180]++ > 0) check ('a string 1180'); break; + case 1181: if (n[1181]++ > 0) check ('a string 1181'); break; + case 1182: if (n[1182]++ > 0) check ('a string 1182'); break; + case 1183: if (n[1183]++ > 0) check ('a string 1183'); break; + case 1184: if (n[1184]++ > 0) check ('a string 1184'); break; + case 1185: if (n[1185]++ > 0) check ('a string 1185'); break; + case 1186: if (n[1186]++ > 0) check ('a string 1186'); break; + case 1187: if (n[1187]++ > 0) check ('a string 1187'); break; + case 1188: if (n[1188]++ > 0) check ('a string 1188'); break; + case 1189: if (n[1189]++ > 0) check ('a string 1189'); break; + case 1190: if (n[1190]++ > 0) check ('a string 1190'); break; + case 1191: if (n[1191]++ > 0) check ('a string 1191'); break; + case 1192: if (n[1192]++ > 0) check ('a string 1192'); break; + case 1193: if (n[1193]++ > 0) check ('a string 1193'); break; + case 1194: if (n[1194]++ > 0) check ('a string 1194'); break; + case 1195: if (n[1195]++ > 0) check ('a string 1195'); break; + case 1196: if (n[1196]++ > 0) check ('a string 1196'); break; + case 1197: if (n[1197]++ > 0) check ('a string 1197'); break; + case 1198: if (n[1198]++ > 0) check ('a string 1198'); break; + case 1199: if (n[1199]++ > 0) check ('a string 1199'); break; + case 1200: if (n[1200]++ > 0) check ('a string 1200'); break; + case 1201: if (n[1201]++ > 0) check ('a string 1201'); break; + case 1202: if (n[1202]++ > 0) check ('a string 1202'); break; + case 1203: if (n[1203]++ > 0) check ('a string 1203'); break; + case 1204: if (n[1204]++ > 0) check ('a string 1204'); break; + case 1205: if (n[1205]++ > 0) check ('a string 1205'); break; + case 1206: if (n[1206]++ > 0) check ('a string 1206'); break; + case 1207: if (n[1207]++ > 0) check ('a string 1207'); break; + case 1208: if (n[1208]++ > 0) check ('a string 1208'); break; + case 1209: if (n[1209]++ > 0) check ('a string 1209'); break; + case 1210: if (n[1210]++ > 0) check ('a string 1210'); break; + case 1211: if (n[1211]++ > 0) check ('a string 1211'); break; + case 1212: if (n[1212]++ > 0) check ('a string 1212'); break; + case 1213: if (n[1213]++ > 0) check ('a string 1213'); break; + case 1214: if (n[1214]++ > 0) check ('a string 1214'); break; + case 1215: if (n[1215]++ > 0) check ('a string 1215'); break; + case 1216: if (n[1216]++ > 0) check ('a string 1216'); break; + case 1217: if (n[1217]++ > 0) check ('a string 1217'); break; + case 1218: if (n[1218]++ > 0) check ('a string 1218'); break; + case 1219: if (n[1219]++ > 0) check ('a string 1219'); break; + case 1220: if (n[1220]++ > 0) check ('a string 1220'); break; + case 1221: if (n[1221]++ > 0) check ('a string 1221'); break; + case 1222: if (n[1222]++ > 0) check ('a string 1222'); break; + case 1223: if (n[1223]++ > 0) check ('a string 1223'); break; + case 1224: if (n[1224]++ > 0) check ('a string 1224'); break; + case 1225: if (n[1225]++ > 0) check ('a string 1225'); break; + case 1226: if (n[1226]++ > 0) check ('a string 1226'); break; + case 1227: if (n[1227]++ > 0) check ('a string 1227'); break; + case 1228: if (n[1228]++ > 0) check ('a string 1228'); break; + case 1229: if (n[1229]++ > 0) check ('a string 1229'); break; + case 1230: if (n[1230]++ > 0) check ('a string 1230'); break; + case 1231: if (n[1231]++ > 0) check ('a string 1231'); break; + case 1232: if (n[1232]++ > 0) check ('a string 1232'); break; + case 1233: if (n[1233]++ > 0) check ('a string 1233'); break; + case 1234: if (n[1234]++ > 0) check ('a string 1234'); break; + case 1235: if (n[1235]++ > 0) check ('a string 1235'); break; + case 1236: if (n[1236]++ > 0) check ('a string 1236'); break; + case 1237: if (n[1237]++ > 0) check ('a string 1237'); break; + case 1238: if (n[1238]++ > 0) check ('a string 1238'); break; + case 1239: if (n[1239]++ > 0) check ('a string 1239'); break; + case 1240: if (n[1240]++ > 0) check ('a string 1240'); break; + case 1241: if (n[1241]++ > 0) check ('a string 1241'); break; + case 1242: if (n[1242]++ > 0) check ('a string 1242'); break; + case 1243: if (n[1243]++ > 0) check ('a string 1243'); break; + case 1244: if (n[1244]++ > 0) check ('a string 1244'); break; + case 1245: if (n[1245]++ > 0) check ('a string 1245'); break; + case 1246: if (n[1246]++ > 0) check ('a string 1246'); break; + case 1247: if (n[1247]++ > 0) check ('a string 1247'); break; + case 1248: if (n[1248]++ > 0) check ('a string 1248'); break; + case 1249: if (n[1249]++ > 0) check ('a string 1249'); break; + case 1250: if (n[1250]++ > 0) check ('a string 1250'); break; + case 1251: if (n[1251]++ > 0) check ('a string 1251'); break; + case 1252: if (n[1252]++ > 0) check ('a string 1252'); break; + case 1253: if (n[1253]++ > 0) check ('a string 1253'); break; + case 1254: if (n[1254]++ > 0) check ('a string 1254'); break; + case 1255: if (n[1255]++ > 0) check ('a string 1255'); break; + case 1256: if (n[1256]++ > 0) check ('a string 1256'); break; + case 1257: if (n[1257]++ > 0) check ('a string 1257'); break; + case 1258: if (n[1258]++ > 0) check ('a string 1258'); break; + case 1259: if (n[1259]++ > 0) check ('a string 1259'); break; + case 1260: if (n[1260]++ > 0) check ('a string 1260'); break; + case 1261: if (n[1261]++ > 0) check ('a string 1261'); break; + case 1262: if (n[1262]++ > 0) check ('a string 1262'); break; + case 1263: if (n[1263]++ > 0) check ('a string 1263'); break; + case 1264: if (n[1264]++ > 0) check ('a string 1264'); break; + case 1265: if (n[1265]++ > 0) check ('a string 1265'); break; + case 1266: if (n[1266]++ > 0) check ('a string 1266'); break; + case 1267: if (n[1267]++ > 0) check ('a string 1267'); break; + case 1268: if (n[1268]++ > 0) check ('a string 1268'); break; + case 1269: if (n[1269]++ > 0) check ('a string 1269'); break; + case 1270: if (n[1270]++ > 0) check ('a string 1270'); break; + case 1271: if (n[1271]++ > 0) check ('a string 1271'); break; + case 1272: if (n[1272]++ > 0) check ('a string 1272'); break; + case 1273: if (n[1273]++ > 0) check ('a string 1273'); break; + case 1274: if (n[1274]++ > 0) check ('a string 1274'); break; + case 1275: if (n[1275]++ > 0) check ('a string 1275'); break; + case 1276: if (n[1276]++ > 0) check ('a string 1276'); break; + case 1277: if (n[1277]++ > 0) check ('a string 1277'); break; + case 1278: if (n[1278]++ > 0) check ('a string 1278'); break; + case 1279: if (n[1279]++ > 0) check ('a string 1279'); break; + case 1280: if (n[1280]++ > 0) check ('a string 1280'); break; + case 1281: if (n[1281]++ > 0) check ('a string 1281'); break; + case 1282: if (n[1282]++ > 0) check ('a string 1282'); break; + case 1283: if (n[1283]++ > 0) check ('a string 1283'); break; + case 1284: if (n[1284]++ > 0) check ('a string 1284'); break; + case 1285: if (n[1285]++ > 0) check ('a string 1285'); break; + case 1286: if (n[1286]++ > 0) check ('a string 1286'); break; + case 1287: if (n[1287]++ > 0) check ('a string 1287'); break; + case 1288: if (n[1288]++ > 0) check ('a string 1288'); break; + case 1289: if (n[1289]++ > 0) check ('a string 1289'); break; + case 1290: if (n[1290]++ > 0) check ('a string 1290'); break; + case 1291: if (n[1291]++ > 0) check ('a string 1291'); break; + case 1292: if (n[1292]++ > 0) check ('a string 1292'); break; + case 1293: if (n[1293]++ > 0) check ('a string 1293'); break; + case 1294: if (n[1294]++ > 0) check ('a string 1294'); break; + case 1295: if (n[1295]++ > 0) check ('a string 1295'); break; + case 1296: if (n[1296]++ > 0) check ('a string 1296'); break; + case 1297: if (n[1297]++ > 0) check ('a string 1297'); break; + case 1298: if (n[1298]++ > 0) check ('a string 1298'); break; + case 1299: if (n[1299]++ > 0) check ('a string 1299'); break; + case 1300: if (n[1300]++ > 0) check ('a string 1300'); break; + case 1301: if (n[1301]++ > 0) check ('a string 1301'); break; + case 1302: if (n[1302]++ > 0) check ('a string 1302'); break; + case 1303: if (n[1303]++ > 0) check ('a string 1303'); break; + case 1304: if (n[1304]++ > 0) check ('a string 1304'); break; + case 1305: if (n[1305]++ > 0) check ('a string 1305'); break; + case 1306: if (n[1306]++ > 0) check ('a string 1306'); break; + case 1307: if (n[1307]++ > 0) check ('a string 1307'); break; + case 1308: if (n[1308]++ > 0) check ('a string 1308'); break; + case 1309: if (n[1309]++ > 0) check ('a string 1309'); break; + case 1310: if (n[1310]++ > 0) check ('a string 1310'); break; + case 1311: if (n[1311]++ > 0) check ('a string 1311'); break; + case 1312: if (n[1312]++ > 0) check ('a string 1312'); break; + case 1313: if (n[1313]++ > 0) check ('a string 1313'); break; + case 1314: if (n[1314]++ > 0) check ('a string 1314'); break; + case 1315: if (n[1315]++ > 0) check ('a string 1315'); break; + case 1316: if (n[1316]++ > 0) check ('a string 1316'); break; + case 1317: if (n[1317]++ > 0) check ('a string 1317'); break; + case 1318: if (n[1318]++ > 0) check ('a string 1318'); break; + case 1319: if (n[1319]++ > 0) check ('a string 1319'); break; + case 1320: if (n[1320]++ > 0) check ('a string 1320'); break; + case 1321: if (n[1321]++ > 0) check ('a string 1321'); break; + case 1322: if (n[1322]++ > 0) check ('a string 1322'); break; + case 1323: if (n[1323]++ > 0) check ('a string 1323'); break; + case 1324: if (n[1324]++ > 0) check ('a string 1324'); break; + case 1325: if (n[1325]++ > 0) check ('a string 1325'); break; + case 1326: if (n[1326]++ > 0) check ('a string 1326'); break; + case 1327: if (n[1327]++ > 0) check ('a string 1327'); break; + case 1328: if (n[1328]++ > 0) check ('a string 1328'); break; + case 1329: if (n[1329]++ > 0) check ('a string 1329'); break; + case 1330: if (n[1330]++ > 0) check ('a string 1330'); break; + case 1331: if (n[1331]++ > 0) check ('a string 1331'); break; + case 1332: if (n[1332]++ > 0) check ('a string 1332'); break; + case 1333: if (n[1333]++ > 0) check ('a string 1333'); break; + case 1334: if (n[1334]++ > 0) check ('a string 1334'); break; + case 1335: if (n[1335]++ > 0) check ('a string 1335'); break; + case 1336: if (n[1336]++ > 0) check ('a string 1336'); break; + case 1337: if (n[1337]++ > 0) check ('a string 1337'); break; + case 1338: if (n[1338]++ > 0) check ('a string 1338'); break; + case 1339: if (n[1339]++ > 0) check ('a string 1339'); break; + case 1340: if (n[1340]++ > 0) check ('a string 1340'); break; + case 1341: if (n[1341]++ > 0) check ('a string 1341'); break; + case 1342: if (n[1342]++ > 0) check ('a string 1342'); break; + case 1343: if (n[1343]++ > 0) check ('a string 1343'); break; + case 1344: if (n[1344]++ > 0) check ('a string 1344'); break; + case 1345: if (n[1345]++ > 0) check ('a string 1345'); break; + case 1346: if (n[1346]++ > 0) check ('a string 1346'); break; + case 1347: if (n[1347]++ > 0) check ('a string 1347'); break; + case 1348: if (n[1348]++ > 0) check ('a string 1348'); break; + case 1349: if (n[1349]++ > 0) check ('a string 1349'); break; + case 1350: if (n[1350]++ > 0) check ('a string 1350'); break; + case 1351: if (n[1351]++ > 0) check ('a string 1351'); break; + case 1352: if (n[1352]++ > 0) check ('a string 1352'); break; + case 1353: if (n[1353]++ > 0) check ('a string 1353'); break; + case 1354: if (n[1354]++ > 0) check ('a string 1354'); break; + case 1355: if (n[1355]++ > 0) check ('a string 1355'); break; + case 1356: if (n[1356]++ > 0) check ('a string 1356'); break; + case 1357: if (n[1357]++ > 0) check ('a string 1357'); break; + case 1358: if (n[1358]++ > 0) check ('a string 1358'); break; + case 1359: if (n[1359]++ > 0) check ('a string 1359'); break; + case 1360: if (n[1360]++ > 0) check ('a string 1360'); break; + case 1361: if (n[1361]++ > 0) check ('a string 1361'); break; + case 1362: if (n[1362]++ > 0) check ('a string 1362'); break; + case 1363: if (n[1363]++ > 0) check ('a string 1363'); break; + case 1364: if (n[1364]++ > 0) check ('a string 1364'); break; + case 1365: if (n[1365]++ > 0) check ('a string 1365'); break; + case 1366: if (n[1366]++ > 0) check ('a string 1366'); break; + case 1367: if (n[1367]++ > 0) check ('a string 1367'); break; + case 1368: if (n[1368]++ > 0) check ('a string 1368'); break; + case 1369: if (n[1369]++ > 0) check ('a string 1369'); break; + case 1370: if (n[1370]++ > 0) check ('a string 1370'); break; + case 1371: if (n[1371]++ > 0) check ('a string 1371'); break; + case 1372: if (n[1372]++ > 0) check ('a string 1372'); break; + case 1373: if (n[1373]++ > 0) check ('a string 1373'); break; + case 1374: if (n[1374]++ > 0) check ('a string 1374'); break; + case 1375: if (n[1375]++ > 0) check ('a string 1375'); break; + case 1376: if (n[1376]++ > 0) check ('a string 1376'); break; + case 1377: if (n[1377]++ > 0) check ('a string 1377'); break; + case 1378: if (n[1378]++ > 0) check ('a string 1378'); break; + case 1379: if (n[1379]++ > 0) check ('a string 1379'); break; + case 1380: if (n[1380]++ > 0) check ('a string 1380'); break; + case 1381: if (n[1381]++ > 0) check ('a string 1381'); break; + case 1382: if (n[1382]++ > 0) check ('a string 1382'); break; + case 1383: if (n[1383]++ > 0) check ('a string 1383'); break; + case 1384: if (n[1384]++ > 0) check ('a string 1384'); break; + case 1385: if (n[1385]++ > 0) check ('a string 1385'); break; + case 1386: if (n[1386]++ > 0) check ('a string 1386'); break; + case 1387: if (n[1387]++ > 0) check ('a string 1387'); break; + case 1388: if (n[1388]++ > 0) check ('a string 1388'); break; + case 1389: if (n[1389]++ > 0) check ('a string 1389'); break; + case 1390: if (n[1390]++ > 0) check ('a string 1390'); break; + case 1391: if (n[1391]++ > 0) check ('a string 1391'); break; + case 1392: if (n[1392]++ > 0) check ('a string 1392'); break; + case 1393: if (n[1393]++ > 0) check ('a string 1393'); break; + case 1394: if (n[1394]++ > 0) check ('a string 1394'); break; + case 1395: if (n[1395]++ > 0) check ('a string 1395'); break; + case 1396: if (n[1396]++ > 0) check ('a string 1396'); break; + case 1397: if (n[1397]++ > 0) check ('a string 1397'); break; + case 1398: if (n[1398]++ > 0) check ('a string 1398'); break; + case 1399: if (n[1399]++ > 0) check ('a string 1399'); break; + case 1400: if (n[1400]++ > 0) check ('a string 1400'); break; + case 1401: if (n[1401]++ > 0) check ('a string 1401'); break; + case 1402: if (n[1402]++ > 0) check ('a string 1402'); break; + case 1403: if (n[1403]++ > 0) check ('a string 1403'); break; + case 1404: if (n[1404]++ > 0) check ('a string 1404'); break; + case 1405: if (n[1405]++ > 0) check ('a string 1405'); break; + case 1406: if (n[1406]++ > 0) check ('a string 1406'); break; + case 1407: if (n[1407]++ > 0) check ('a string 1407'); break; + case 1408: if (n[1408]++ > 0) check ('a string 1408'); break; + case 1409: if (n[1409]++ > 0) check ('a string 1409'); break; + case 1410: if (n[1410]++ > 0) check ('a string 1410'); break; + case 1411: if (n[1411]++ > 0) check ('a string 1411'); break; + case 1412: if (n[1412]++ > 0) check ('a string 1412'); break; + case 1413: if (n[1413]++ > 0) check ('a string 1413'); break; + case 1414: if (n[1414]++ > 0) check ('a string 1414'); break; + case 1415: if (n[1415]++ > 0) check ('a string 1415'); break; + case 1416: if (n[1416]++ > 0) check ('a string 1416'); break; + case 1417: if (n[1417]++ > 0) check ('a string 1417'); break; + case 1418: if (n[1418]++ > 0) check ('a string 1418'); break; + case 1419: if (n[1419]++ > 0) check ('a string 1419'); break; + case 1420: if (n[1420]++ > 0) check ('a string 1420'); break; + case 1421: if (n[1421]++ > 0) check ('a string 1421'); break; + case 1422: if (n[1422]++ > 0) check ('a string 1422'); break; + case 1423: if (n[1423]++ > 0) check ('a string 1423'); break; + case 1424: if (n[1424]++ > 0) check ('a string 1424'); break; + case 1425: if (n[1425]++ > 0) check ('a string 1425'); break; + case 1426: if (n[1426]++ > 0) check ('a string 1426'); break; + case 1427: if (n[1427]++ > 0) check ('a string 1427'); break; + case 1428: if (n[1428]++ > 0) check ('a string 1428'); break; + case 1429: if (n[1429]++ > 0) check ('a string 1429'); break; + case 1430: if (n[1430]++ > 0) check ('a string 1430'); break; + case 1431: if (n[1431]++ > 0) check ('a string 1431'); break; + case 1432: if (n[1432]++ > 0) check ('a string 1432'); break; + case 1433: if (n[1433]++ > 0) check ('a string 1433'); break; + case 1434: if (n[1434]++ > 0) check ('a string 1434'); break; + case 1435: if (n[1435]++ > 0) check ('a string 1435'); break; + case 1436: if (n[1436]++ > 0) check ('a string 1436'); break; + case 1437: if (n[1437]++ > 0) check ('a string 1437'); break; + case 1438: if (n[1438]++ > 0) check ('a string 1438'); break; + case 1439: if (n[1439]++ > 0) check ('a string 1439'); break; + case 1440: if (n[1440]++ > 0) check ('a string 1440'); break; + case 1441: if (n[1441]++ > 0) check ('a string 1441'); break; + case 1442: if (n[1442]++ > 0) check ('a string 1442'); break; + case 1443: if (n[1443]++ > 0) check ('a string 1443'); break; + case 1444: if (n[1444]++ > 0) check ('a string 1444'); break; + case 1445: if (n[1445]++ > 0) check ('a string 1445'); break; + case 1446: if (n[1446]++ > 0) check ('a string 1446'); break; + case 1447: if (n[1447]++ > 0) check ('a string 1447'); break; + case 1448: if (n[1448]++ > 0) check ('a string 1448'); break; + case 1449: if (n[1449]++ > 0) check ('a string 1449'); break; + case 1450: if (n[1450]++ > 0) check ('a string 1450'); break; + case 1451: if (n[1451]++ > 0) check ('a string 1451'); break; + case 1452: if (n[1452]++ > 0) check ('a string 1452'); break; + case 1453: if (n[1453]++ > 0) check ('a string 1453'); break; + case 1454: if (n[1454]++ > 0) check ('a string 1454'); break; + case 1455: if (n[1455]++ > 0) check ('a string 1455'); break; + case 1456: if (n[1456]++ > 0) check ('a string 1456'); break; + case 1457: if (n[1457]++ > 0) check ('a string 1457'); break; + case 1458: if (n[1458]++ > 0) check ('a string 1458'); break; + case 1459: if (n[1459]++ > 0) check ('a string 1459'); break; + case 1460: if (n[1460]++ > 0) check ('a string 1460'); break; + case 1461: if (n[1461]++ > 0) check ('a string 1461'); break; + case 1462: if (n[1462]++ > 0) check ('a string 1462'); break; + case 1463: if (n[1463]++ > 0) check ('a string 1463'); break; + case 1464: if (n[1464]++ > 0) check ('a string 1464'); break; + case 1465: if (n[1465]++ > 0) check ('a string 1465'); break; + case 1466: if (n[1466]++ > 0) check ('a string 1466'); break; + case 1467: if (n[1467]++ > 0) check ('a string 1467'); break; + case 1468: if (n[1468]++ > 0) check ('a string 1468'); break; + case 1469: if (n[1469]++ > 0) check ('a string 1469'); break; + case 1470: if (n[1470]++ > 0) check ('a string 1470'); break; + case 1471: if (n[1471]++ > 0) check ('a string 1471'); break; + case 1472: if (n[1472]++ > 0) check ('a string 1472'); break; + case 1473: if (n[1473]++ > 0) check ('a string 1473'); break; + case 1474: if (n[1474]++ > 0) check ('a string 1474'); break; + case 1475: if (n[1475]++ > 0) check ('a string 1475'); break; + case 1476: if (n[1476]++ > 0) check ('a string 1476'); break; + case 1477: if (n[1477]++ > 0) check ('a string 1477'); break; + case 1478: if (n[1478]++ > 0) check ('a string 1478'); break; + case 1479: if (n[1479]++ > 0) check ('a string 1479'); break; + case 1480: if (n[1480]++ > 0) check ('a string 1480'); break; + case 1481: if (n[1481]++ > 0) check ('a string 1481'); break; + case 1482: if (n[1482]++ > 0) check ('a string 1482'); break; + case 1483: if (n[1483]++ > 0) check ('a string 1483'); break; + case 1484: if (n[1484]++ > 0) check ('a string 1484'); break; + case 1485: if (n[1485]++ > 0) check ('a string 1485'); break; + case 1486: if (n[1486]++ > 0) check ('a string 1486'); break; + case 1487: if (n[1487]++ > 0) check ('a string 1487'); break; + case 1488: if (n[1488]++ > 0) check ('a string 1488'); break; + case 1489: if (n[1489]++ > 0) check ('a string 1489'); break; + case 1490: if (n[1490]++ > 0) check ('a string 1490'); break; + case 1491: if (n[1491]++ > 0) check ('a string 1491'); break; + case 1492: if (n[1492]++ > 0) check ('a string 1492'); break; + case 1493: if (n[1493]++ > 0) check ('a string 1493'); break; + case 1494: if (n[1494]++ > 0) check ('a string 1494'); break; + case 1495: if (n[1495]++ > 0) check ('a string 1495'); break; + case 1496: if (n[1496]++ > 0) check ('a string 1496'); break; + case 1497: if (n[1497]++ > 0) check ('a string 1497'); break; + case 1498: if (n[1498]++ > 0) check ('a string 1498'); break; + case 1499: if (n[1499]++ > 0) check ('a string 1499'); break; + case 1500: if (n[1500]++ > 0) check ('a string 1500'); break; + case 1501: if (n[1501]++ > 0) check ('a string 1501'); break; + case 1502: if (n[1502]++ > 0) check ('a string 1502'); break; + case 1503: if (n[1503]++ > 0) check ('a string 1503'); break; + case 1504: if (n[1504]++ > 0) check ('a string 1504'); break; + case 1505: if (n[1505]++ > 0) check ('a string 1505'); break; + case 1506: if (n[1506]++ > 0) check ('a string 1506'); break; + case 1507: if (n[1507]++ > 0) check ('a string 1507'); break; + case 1508: if (n[1508]++ > 0) check ('a string 1508'); break; + case 1509: if (n[1509]++ > 0) check ('a string 1509'); break; + case 1510: if (n[1510]++ > 0) check ('a string 1510'); break; + case 1511: if (n[1511]++ > 0) check ('a string 1511'); break; + case 1512: if (n[1512]++ > 0) check ('a string 1512'); break; + case 1513: if (n[1513]++ > 0) check ('a string 1513'); break; + case 1514: if (n[1514]++ > 0) check ('a string 1514'); break; + case 1515: if (n[1515]++ > 0) check ('a string 1515'); break; + case 1516: if (n[1516]++ > 0) check ('a string 1516'); break; + case 1517: if (n[1517]++ > 0) check ('a string 1517'); break; + case 1518: if (n[1518]++ > 0) check ('a string 1518'); break; + case 1519: if (n[1519]++ > 0) check ('a string 1519'); break; + case 1520: if (n[1520]++ > 0) check ('a string 1520'); break; + case 1521: if (n[1521]++ > 0) check ('a string 1521'); break; + case 1522: if (n[1522]++ > 0) check ('a string 1522'); break; + case 1523: if (n[1523]++ > 0) check ('a string 1523'); break; + case 1524: if (n[1524]++ > 0) check ('a string 1524'); break; + case 1525: if (n[1525]++ > 0) check ('a string 1525'); break; + case 1526: if (n[1526]++ > 0) check ('a string 1526'); break; + case 1527: if (n[1527]++ > 0) check ('a string 1527'); break; + case 1528: if (n[1528]++ > 0) check ('a string 1528'); break; + case 1529: if (n[1529]++ > 0) check ('a string 1529'); break; + case 1530: if (n[1530]++ > 0) check ('a string 1530'); break; + case 1531: if (n[1531]++ > 0) check ('a string 1531'); break; + case 1532: if (n[1532]++ > 0) check ('a string 1532'); break; + case 1533: if (n[1533]++ > 0) check ('a string 1533'); break; + case 1534: if (n[1534]++ > 0) check ('a string 1534'); break; + case 1535: if (n[1535]++ > 0) check ('a string 1535'); break; + case 1536: if (n[1536]++ > 0) check ('a string 1536'); break; + case 1537: if (n[1537]++ > 0) check ('a string 1537'); break; + case 1538: if (n[1538]++ > 0) check ('a string 1538'); break; + case 1539: if (n[1539]++ > 0) check ('a string 1539'); break; + case 1540: if (n[1540]++ > 0) check ('a string 1540'); break; + case 1541: if (n[1541]++ > 0) check ('a string 1541'); break; + case 1542: if (n[1542]++ > 0) check ('a string 1542'); break; + case 1543: if (n[1543]++ > 0) check ('a string 1543'); break; + case 1544: if (n[1544]++ > 0) check ('a string 1544'); break; + case 1545: if (n[1545]++ > 0) check ('a string 1545'); break; + case 1546: if (n[1546]++ > 0) check ('a string 1546'); break; + case 1547: if (n[1547]++ > 0) check ('a string 1547'); break; + case 1548: if (n[1548]++ > 0) check ('a string 1548'); break; + case 1549: if (n[1549]++ > 0) check ('a string 1549'); break; + case 1550: if (n[1550]++ > 0) check ('a string 1550'); break; + case 1551: if (n[1551]++ > 0) check ('a string 1551'); break; + case 1552: if (n[1552]++ > 0) check ('a string 1552'); break; + case 1553: if (n[1553]++ > 0) check ('a string 1553'); break; + case 1554: if (n[1554]++ > 0) check ('a string 1554'); break; + case 1555: if (n[1555]++ > 0) check ('a string 1555'); break; + case 1556: if (n[1556]++ > 0) check ('a string 1556'); break; + case 1557: if (n[1557]++ > 0) check ('a string 1557'); break; + case 1558: if (n[1558]++ > 0) check ('a string 1558'); break; + case 1559: if (n[1559]++ > 0) check ('a string 1559'); break; + case 1560: if (n[1560]++ > 0) check ('a string 1560'); break; + case 1561: if (n[1561]++ > 0) check ('a string 1561'); break; + case 1562: if (n[1562]++ > 0) check ('a string 1562'); break; + case 1563: if (n[1563]++ > 0) check ('a string 1563'); break; + case 1564: if (n[1564]++ > 0) check ('a string 1564'); break; + case 1565: if (n[1565]++ > 0) check ('a string 1565'); break; + case 1566: if (n[1566]++ > 0) check ('a string 1566'); break; + case 1567: if (n[1567]++ > 0) check ('a string 1567'); break; + case 1568: if (n[1568]++ > 0) check ('a string 1568'); break; + case 1569: if (n[1569]++ > 0) check ('a string 1569'); break; + case 1570: if (n[1570]++ > 0) check ('a string 1570'); break; + case 1571: if (n[1571]++ > 0) check ('a string 1571'); break; + case 1572: if (n[1572]++ > 0) check ('a string 1572'); break; + case 1573: if (n[1573]++ > 0) check ('a string 1573'); break; + case 1574: if (n[1574]++ > 0) check ('a string 1574'); break; + case 1575: if (n[1575]++ > 0) check ('a string 1575'); break; + case 1576: if (n[1576]++ > 0) check ('a string 1576'); break; + case 1577: if (n[1577]++ > 0) check ('a string 1577'); break; + case 1578: if (n[1578]++ > 0) check ('a string 1578'); break; + case 1579: if (n[1579]++ > 0) check ('a string 1579'); break; + case 1580: if (n[1580]++ > 0) check ('a string 1580'); break; + case 1581: if (n[1581]++ > 0) check ('a string 1581'); break; + case 1582: if (n[1582]++ > 0) check ('a string 1582'); break; + case 1583: if (n[1583]++ > 0) check ('a string 1583'); break; + case 1584: if (n[1584]++ > 0) check ('a string 1584'); break; + case 1585: if (n[1585]++ > 0) check ('a string 1585'); break; + case 1586: if (n[1586]++ > 0) check ('a string 1586'); break; + case 1587: if (n[1587]++ > 0) check ('a string 1587'); break; + case 1588: if (n[1588]++ > 0) check ('a string 1588'); break; + case 1589: if (n[1589]++ > 0) check ('a string 1589'); break; + case 1590: if (n[1590]++ > 0) check ('a string 1590'); break; + case 1591: if (n[1591]++ > 0) check ('a string 1591'); break; + case 1592: if (n[1592]++ > 0) check ('a string 1592'); break; + case 1593: if (n[1593]++ > 0) check ('a string 1593'); break; + case 1594: if (n[1594]++ > 0) check ('a string 1594'); break; + case 1595: if (n[1595]++ > 0) check ('a string 1595'); break; + case 1596: if (n[1596]++ > 0) check ('a string 1596'); break; + case 1597: if (n[1597]++ > 0) check ('a string 1597'); break; + case 1598: if (n[1598]++ > 0) check ('a string 1598'); break; + case 1599: if (n[1599]++ > 0) check ('a string 1599'); break; + case 1600: if (n[1600]++ > 0) check ('a string 1600'); break; + case 1601: if (n[1601]++ > 0) check ('a string 1601'); break; + case 1602: if (n[1602]++ > 0) check ('a string 1602'); break; + case 1603: if (n[1603]++ > 0) check ('a string 1603'); break; + case 1604: if (n[1604]++ > 0) check ('a string 1604'); break; + case 1605: if (n[1605]++ > 0) check ('a string 1605'); break; + case 1606: if (n[1606]++ > 0) check ('a string 1606'); break; + case 1607: if (n[1607]++ > 0) check ('a string 1607'); break; + case 1608: if (n[1608]++ > 0) check ('a string 1608'); break; + case 1609: if (n[1609]++ > 0) check ('a string 1609'); break; + case 1610: if (n[1610]++ > 0) check ('a string 1610'); break; + case 1611: if (n[1611]++ > 0) check ('a string 1611'); break; + case 1612: if (n[1612]++ > 0) check ('a string 1612'); break; + case 1613: if (n[1613]++ > 0) check ('a string 1613'); break; + case 1614: if (n[1614]++ > 0) check ('a string 1614'); break; + case 1615: if (n[1615]++ > 0) check ('a string 1615'); break; + case 1616: if (n[1616]++ > 0) check ('a string 1616'); break; + case 1617: if (n[1617]++ > 0) check ('a string 1617'); break; + case 1618: if (n[1618]++ > 0) check ('a string 1618'); break; + case 1619: if (n[1619]++ > 0) check ('a string 1619'); break; + case 1620: if (n[1620]++ > 0) check ('a string 1620'); break; + case 1621: if (n[1621]++ > 0) check ('a string 1621'); break; + case 1622: if (n[1622]++ > 0) check ('a string 1622'); break; + case 1623: if (n[1623]++ > 0) check ('a string 1623'); break; + case 1624: if (n[1624]++ > 0) check ('a string 1624'); break; + case 1625: if (n[1625]++ > 0) check ('a string 1625'); break; + case 1626: if (n[1626]++ > 0) check ('a string 1626'); break; + case 1627: if (n[1627]++ > 0) check ('a string 1627'); break; + case 1628: if (n[1628]++ > 0) check ('a string 1628'); break; + case 1629: if (n[1629]++ > 0) check ('a string 1629'); break; + case 1630: if (n[1630]++ > 0) check ('a string 1630'); break; + case 1631: if (n[1631]++ > 0) check ('a string 1631'); break; + case 1632: if (n[1632]++ > 0) check ('a string 1632'); break; + case 1633: if (n[1633]++ > 0) check ('a string 1633'); break; + case 1634: if (n[1634]++ > 0) check ('a string 1634'); break; + case 1635: if (n[1635]++ > 0) check ('a string 1635'); break; + case 1636: if (n[1636]++ > 0) check ('a string 1636'); break; + case 1637: if (n[1637]++ > 0) check ('a string 1637'); break; + case 1638: if (n[1638]++ > 0) check ('a string 1638'); break; + case 1639: if (n[1639]++ > 0) check ('a string 1639'); break; + case 1640: if (n[1640]++ > 0) check ('a string 1640'); break; + case 1641: if (n[1641]++ > 0) check ('a string 1641'); break; + case 1642: if (n[1642]++ > 0) check ('a string 1642'); break; + case 1643: if (n[1643]++ > 0) check ('a string 1643'); break; + case 1644: if (n[1644]++ > 0) check ('a string 1644'); break; + case 1645: if (n[1645]++ > 0) check ('a string 1645'); break; + case 1646: if (n[1646]++ > 0) check ('a string 1646'); break; + case 1647: if (n[1647]++ > 0) check ('a string 1647'); break; + case 1648: if (n[1648]++ > 0) check ('a string 1648'); break; + case 1649: if (n[1649]++ > 0) check ('a string 1649'); break; + case 1650: if (n[1650]++ > 0) check ('a string 1650'); break; + case 1651: if (n[1651]++ > 0) check ('a string 1651'); break; + case 1652: if (n[1652]++ > 0) check ('a string 1652'); break; + case 1653: if (n[1653]++ > 0) check ('a string 1653'); break; + case 1654: if (n[1654]++ > 0) check ('a string 1654'); break; + case 1655: if (n[1655]++ > 0) check ('a string 1655'); break; + case 1656: if (n[1656]++ > 0) check ('a string 1656'); break; + case 1657: if (n[1657]++ > 0) check ('a string 1657'); break; + case 1658: if (n[1658]++ > 0) check ('a string 1658'); break; + case 1659: if (n[1659]++ > 0) check ('a string 1659'); break; + case 1660: if (n[1660]++ > 0) check ('a string 1660'); break; + case 1661: if (n[1661]++ > 0) check ('a string 1661'); break; + case 1662: if (n[1662]++ > 0) check ('a string 1662'); break; + case 1663: if (n[1663]++ > 0) check ('a string 1663'); break; + case 1664: if (n[1664]++ > 0) check ('a string 1664'); break; + case 1665: if (n[1665]++ > 0) check ('a string 1665'); break; + case 1666: if (n[1666]++ > 0) check ('a string 1666'); break; + case 1667: if (n[1667]++ > 0) check ('a string 1667'); break; + case 1668: if (n[1668]++ > 0) check ('a string 1668'); break; + case 1669: if (n[1669]++ > 0) check ('a string 1669'); break; + case 1670: if (n[1670]++ > 0) check ('a string 1670'); break; + case 1671: if (n[1671]++ > 0) check ('a string 1671'); break; + case 1672: if (n[1672]++ > 0) check ('a string 1672'); break; + case 1673: if (n[1673]++ > 0) check ('a string 1673'); break; + case 1674: if (n[1674]++ > 0) check ('a string 1674'); break; + case 1675: if (n[1675]++ > 0) check ('a string 1675'); break; + case 1676: if (n[1676]++ > 0) check ('a string 1676'); break; + case 1677: if (n[1677]++ > 0) check ('a string 1677'); break; + case 1678: if (n[1678]++ > 0) check ('a string 1678'); break; + case 1679: if (n[1679]++ > 0) check ('a string 1679'); break; + case 1680: if (n[1680]++ > 0) check ('a string 1680'); break; + case 1681: if (n[1681]++ > 0) check ('a string 1681'); break; + case 1682: if (n[1682]++ > 0) check ('a string 1682'); break; + case 1683: if (n[1683]++ > 0) check ('a string 1683'); break; + case 1684: if (n[1684]++ > 0) check ('a string 1684'); break; + case 1685: if (n[1685]++ > 0) check ('a string 1685'); break; + case 1686: if (n[1686]++ > 0) check ('a string 1686'); break; + case 1687: if (n[1687]++ > 0) check ('a string 1687'); break; + case 1688: if (n[1688]++ > 0) check ('a string 1688'); break; + case 1689: if (n[1689]++ > 0) check ('a string 1689'); break; + case 1690: if (n[1690]++ > 0) check ('a string 1690'); break; + case 1691: if (n[1691]++ > 0) check ('a string 1691'); break; + case 1692: if (n[1692]++ > 0) check ('a string 1692'); break; + case 1693: if (n[1693]++ > 0) check ('a string 1693'); break; + case 1694: if (n[1694]++ > 0) check ('a string 1694'); break; + case 1695: if (n[1695]++ > 0) check ('a string 1695'); break; + case 1696: if (n[1696]++ > 0) check ('a string 1696'); break; + case 1697: if (n[1697]++ > 0) check ('a string 1697'); break; + case 1698: if (n[1698]++ > 0) check ('a string 1698'); break; + case 1699: if (n[1699]++ > 0) check ('a string 1699'); break; + case 1700: if (n[1700]++ > 0) check ('a string 1700'); break; + case 1701: if (n[1701]++ > 0) check ('a string 1701'); break; + case 1702: if (n[1702]++ > 0) check ('a string 1702'); break; + case 1703: if (n[1703]++ > 0) check ('a string 1703'); break; + case 1704: if (n[1704]++ > 0) check ('a string 1704'); break; + case 1705: if (n[1705]++ > 0) check ('a string 1705'); break; + case 1706: if (n[1706]++ > 0) check ('a string 1706'); break; + case 1707: if (n[1707]++ > 0) check ('a string 1707'); break; + case 1708: if (n[1708]++ > 0) check ('a string 1708'); break; + case 1709: if (n[1709]++ > 0) check ('a string 1709'); break; + case 1710: if (n[1710]++ > 0) check ('a string 1710'); break; + case 1711: if (n[1711]++ > 0) check ('a string 1711'); break; + case 1712: if (n[1712]++ > 0) check ('a string 1712'); break; + case 1713: if (n[1713]++ > 0) check ('a string 1713'); break; + case 1714: if (n[1714]++ > 0) check ('a string 1714'); break; + case 1715: if (n[1715]++ > 0) check ('a string 1715'); break; + case 1716: if (n[1716]++ > 0) check ('a string 1716'); break; + case 1717: if (n[1717]++ > 0) check ('a string 1717'); break; + case 1718: if (n[1718]++ > 0) check ('a string 1718'); break; + case 1719: if (n[1719]++ > 0) check ('a string 1719'); break; + case 1720: if (n[1720]++ > 0) check ('a string 1720'); break; + case 1721: if (n[1721]++ > 0) check ('a string 1721'); break; + case 1722: if (n[1722]++ > 0) check ('a string 1722'); break; + case 1723: if (n[1723]++ > 0) check ('a string 1723'); break; + case 1724: if (n[1724]++ > 0) check ('a string 1724'); break; + case 1725: if (n[1725]++ > 0) check ('a string 1725'); break; + case 1726: if (n[1726]++ > 0) check ('a string 1726'); break; + case 1727: if (n[1727]++ > 0) check ('a string 1727'); break; + case 1728: if (n[1728]++ > 0) check ('a string 1728'); break; + case 1729: if (n[1729]++ > 0) check ('a string 1729'); break; + case 1730: if (n[1730]++ > 0) check ('a string 1730'); break; + case 1731: if (n[1731]++ > 0) check ('a string 1731'); break; + case 1732: if (n[1732]++ > 0) check ('a string 1732'); break; + case 1733: if (n[1733]++ > 0) check ('a string 1733'); break; + case 1734: if (n[1734]++ > 0) check ('a string 1734'); break; + case 1735: if (n[1735]++ > 0) check ('a string 1735'); break; + case 1736: if (n[1736]++ > 0) check ('a string 1736'); break; + case 1737: if (n[1737]++ > 0) check ('a string 1737'); break; + case 1738: if (n[1738]++ > 0) check ('a string 1738'); break; + case 1739: if (n[1739]++ > 0) check ('a string 1739'); break; + case 1740: if (n[1740]++ > 0) check ('a string 1740'); break; + case 1741: if (n[1741]++ > 0) check ('a string 1741'); break; + case 1742: if (n[1742]++ > 0) check ('a string 1742'); break; + case 1743: if (n[1743]++ > 0) check ('a string 1743'); break; + case 1744: if (n[1744]++ > 0) check ('a string 1744'); break; + case 1745: if (n[1745]++ > 0) check ('a string 1745'); break; + case 1746: if (n[1746]++ > 0) check ('a string 1746'); break; + case 1747: if (n[1747]++ > 0) check ('a string 1747'); break; + case 1748: if (n[1748]++ > 0) check ('a string 1748'); break; + case 1749: if (n[1749]++ > 0) check ('a string 1749'); break; + case 1750: if (n[1750]++ > 0) check ('a string 1750'); break; + case 1751: if (n[1751]++ > 0) check ('a string 1751'); break; + case 1752: if (n[1752]++ > 0) check ('a string 1752'); break; + case 1753: if (n[1753]++ > 0) check ('a string 1753'); break; + case 1754: if (n[1754]++ > 0) check ('a string 1754'); break; + case 1755: if (n[1755]++ > 0) check ('a string 1755'); break; + case 1756: if (n[1756]++ > 0) check ('a string 1756'); break; + case 1757: if (n[1757]++ > 0) check ('a string 1757'); break; + case 1758: if (n[1758]++ > 0) check ('a string 1758'); break; + case 1759: if (n[1759]++ > 0) check ('a string 1759'); break; + case 1760: if (n[1760]++ > 0) check ('a string 1760'); break; + case 1761: if (n[1761]++ > 0) check ('a string 1761'); break; + case 1762: if (n[1762]++ > 0) check ('a string 1762'); break; + case 1763: if (n[1763]++ > 0) check ('a string 1763'); break; + case 1764: if (n[1764]++ > 0) check ('a string 1764'); break; + case 1765: if (n[1765]++ > 0) check ('a string 1765'); break; + case 1766: if (n[1766]++ > 0) check ('a string 1766'); break; + case 1767: if (n[1767]++ > 0) check ('a string 1767'); break; + case 1768: if (n[1768]++ > 0) check ('a string 1768'); break; + case 1769: if (n[1769]++ > 0) check ('a string 1769'); break; + case 1770: if (n[1770]++ > 0) check ('a string 1770'); break; + case 1771: if (n[1771]++ > 0) check ('a string 1771'); break; + case 1772: if (n[1772]++ > 0) check ('a string 1772'); break; + case 1773: if (n[1773]++ > 0) check ('a string 1773'); break; + case 1774: if (n[1774]++ > 0) check ('a string 1774'); break; + case 1775: if (n[1775]++ > 0) check ('a string 1775'); break; + case 1776: if (n[1776]++ > 0) check ('a string 1776'); break; + case 1777: if (n[1777]++ > 0) check ('a string 1777'); break; + case 1778: if (n[1778]++ > 0) check ('a string 1778'); break; + case 1779: if (n[1779]++ > 0) check ('a string 1779'); break; + case 1780: if (n[1780]++ > 0) check ('a string 1780'); break; + case 1781: if (n[1781]++ > 0) check ('a string 1781'); break; + case 1782: if (n[1782]++ > 0) check ('a string 1782'); break; + case 1783: if (n[1783]++ > 0) check ('a string 1783'); break; + case 1784: if (n[1784]++ > 0) check ('a string 1784'); break; + case 1785: if (n[1785]++ > 0) check ('a string 1785'); break; + case 1786: if (n[1786]++ > 0) check ('a string 1786'); break; + case 1787: if (n[1787]++ > 0) check ('a string 1787'); break; + case 1788: if (n[1788]++ > 0) check ('a string 1788'); break; + case 1789: if (n[1789]++ > 0) check ('a string 1789'); break; + case 1790: if (n[1790]++ > 0) check ('a string 1790'); break; + case 1791: if (n[1791]++ > 0) check ('a string 1791'); break; + case 1792: if (n[1792]++ > 0) check ('a string 1792'); break; + case 1793: if (n[1793]++ > 0) check ('a string 1793'); break; + case 1794: if (n[1794]++ > 0) check ('a string 1794'); break; + case 1795: if (n[1795]++ > 0) check ('a string 1795'); break; + case 1796: if (n[1796]++ > 0) check ('a string 1796'); break; + case 1797: if (n[1797]++ > 0) check ('a string 1797'); break; + case 1798: if (n[1798]++ > 0) check ('a string 1798'); break; + case 1799: if (n[1799]++ > 0) check ('a string 1799'); break; + case 1800: if (n[1800]++ > 0) check ('a string 1800'); break; + case 1801: if (n[1801]++ > 0) check ('a string 1801'); break; + case 1802: if (n[1802]++ > 0) check ('a string 1802'); break; + case 1803: if (n[1803]++ > 0) check ('a string 1803'); break; + case 1804: if (n[1804]++ > 0) check ('a string 1804'); break; + case 1805: if (n[1805]++ > 0) check ('a string 1805'); break; + case 1806: if (n[1806]++ > 0) check ('a string 1806'); break; + case 1807: if (n[1807]++ > 0) check ('a string 1807'); break; + case 1808: if (n[1808]++ > 0) check ('a string 1808'); break; + case 1809: if (n[1809]++ > 0) check ('a string 1809'); break; + case 1810: if (n[1810]++ > 0) check ('a string 1810'); break; + case 1811: if (n[1811]++ > 0) check ('a string 1811'); break; + case 1812: if (n[1812]++ > 0) check ('a string 1812'); break; + case 1813: if (n[1813]++ > 0) check ('a string 1813'); break; + case 1814: if (n[1814]++ > 0) check ('a string 1814'); break; + case 1815: if (n[1815]++ > 0) check ('a string 1815'); break; + case 1816: if (n[1816]++ > 0) check ('a string 1816'); break; + case 1817: if (n[1817]++ > 0) check ('a string 1817'); break; + case 1818: if (n[1818]++ > 0) check ('a string 1818'); break; + case 1819: if (n[1819]++ > 0) check ('a string 1819'); break; + case 1820: if (n[1820]++ > 0) check ('a string 1820'); break; + case 1821: if (n[1821]++ > 0) check ('a string 1821'); break; + case 1822: if (n[1822]++ > 0) check ('a string 1822'); break; + case 1823: if (n[1823]++ > 0) check ('a string 1823'); break; + case 1824: if (n[1824]++ > 0) check ('a string 1824'); break; + case 1825: if (n[1825]++ > 0) check ('a string 1825'); break; + case 1826: if (n[1826]++ > 0) check ('a string 1826'); break; + case 1827: if (n[1827]++ > 0) check ('a string 1827'); break; + case 1828: if (n[1828]++ > 0) check ('a string 1828'); break; + case 1829: if (n[1829]++ > 0) check ('a string 1829'); break; + case 1830: if (n[1830]++ > 0) check ('a string 1830'); break; + case 1831: if (n[1831]++ > 0) check ('a string 1831'); break; + case 1832: if (n[1832]++ > 0) check ('a string 1832'); break; + case 1833: if (n[1833]++ > 0) check ('a string 1833'); break; + case 1834: if (n[1834]++ > 0) check ('a string 1834'); break; + case 1835: if (n[1835]++ > 0) check ('a string 1835'); break; + case 1836: if (n[1836]++ > 0) check ('a string 1836'); break; + case 1837: if (n[1837]++ > 0) check ('a string 1837'); break; + case 1838: if (n[1838]++ > 0) check ('a string 1838'); break; + case 1839: if (n[1839]++ > 0) check ('a string 1839'); break; + case 1840: if (n[1840]++ > 0) check ('a string 1840'); break; + case 1841: if (n[1841]++ > 0) check ('a string 1841'); break; + case 1842: if (n[1842]++ > 0) check ('a string 1842'); break; + case 1843: if (n[1843]++ > 0) check ('a string 1843'); break; + case 1844: if (n[1844]++ > 0) check ('a string 1844'); break; + case 1845: if (n[1845]++ > 0) check ('a string 1845'); break; + case 1846: if (n[1846]++ > 0) check ('a string 1846'); break; + case 1847: if (n[1847]++ > 0) check ('a string 1847'); break; + case 1848: if (n[1848]++ > 0) check ('a string 1848'); break; + case 1849: if (n[1849]++ > 0) check ('a string 1849'); break; + case 1850: if (n[1850]++ > 0) check ('a string 1850'); break; + case 1851: if (n[1851]++ > 0) check ('a string 1851'); break; + case 1852: if (n[1852]++ > 0) check ('a string 1852'); break; + case 1853: if (n[1853]++ > 0) check ('a string 1853'); break; + case 1854: if (n[1854]++ > 0) check ('a string 1854'); break; + case 1855: if (n[1855]++ > 0) check ('a string 1855'); break; + case 1856: if (n[1856]++ > 0) check ('a string 1856'); break; + case 1857: if (n[1857]++ > 0) check ('a string 1857'); break; + case 1858: if (n[1858]++ > 0) check ('a string 1858'); break; + case 1859: if (n[1859]++ > 0) check ('a string 1859'); break; + case 1860: if (n[1860]++ > 0) check ('a string 1860'); break; + case 1861: if (n[1861]++ > 0) check ('a string 1861'); break; + case 1862: if (n[1862]++ > 0) check ('a string 1862'); break; + case 1863: if (n[1863]++ > 0) check ('a string 1863'); break; + case 1864: if (n[1864]++ > 0) check ('a string 1864'); break; + case 1865: if (n[1865]++ > 0) check ('a string 1865'); break; + case 1866: if (n[1866]++ > 0) check ('a string 1866'); break; + case 1867: if (n[1867]++ > 0) check ('a string 1867'); break; + case 1868: if (n[1868]++ > 0) check ('a string 1868'); break; + case 1869: if (n[1869]++ > 0) check ('a string 1869'); break; + case 1870: if (n[1870]++ > 0) check ('a string 1870'); break; + case 1871: if (n[1871]++ > 0) check ('a string 1871'); break; + case 1872: if (n[1872]++ > 0) check ('a string 1872'); break; + case 1873: if (n[1873]++ > 0) check ('a string 1873'); break; + case 1874: if (n[1874]++ > 0) check ('a string 1874'); break; + case 1875: if (n[1875]++ > 0) check ('a string 1875'); break; + case 1876: if (n[1876]++ > 0) check ('a string 1876'); break; + case 1877: if (n[1877]++ > 0) check ('a string 1877'); break; + case 1878: if (n[1878]++ > 0) check ('a string 1878'); break; + case 1879: if (n[1879]++ > 0) check ('a string 1879'); break; + case 1880: if (n[1880]++ > 0) check ('a string 1880'); break; + case 1881: if (n[1881]++ > 0) check ('a string 1881'); break; + case 1882: if (n[1882]++ > 0) check ('a string 1882'); break; + case 1883: if (n[1883]++ > 0) check ('a string 1883'); break; + case 1884: if (n[1884]++ > 0) check ('a string 1884'); break; + case 1885: if (n[1885]++ > 0) check ('a string 1885'); break; + case 1886: if (n[1886]++ > 0) check ('a string 1886'); break; + case 1887: if (n[1887]++ > 0) check ('a string 1887'); break; + case 1888: if (n[1888]++ > 0) check ('a string 1888'); break; + case 1889: if (n[1889]++ > 0) check ('a string 1889'); break; + case 1890: if (n[1890]++ > 0) check ('a string 1890'); break; + case 1891: if (n[1891]++ > 0) check ('a string 1891'); break; + case 1892: if (n[1892]++ > 0) check ('a string 1892'); break; + case 1893: if (n[1893]++ > 0) check ('a string 1893'); break; + case 1894: if (n[1894]++ > 0) check ('a string 1894'); break; + case 1895: if (n[1895]++ > 0) check ('a string 1895'); break; + case 1896: if (n[1896]++ > 0) check ('a string 1896'); break; + case 1897: if (n[1897]++ > 0) check ('a string 1897'); break; + case 1898: if (n[1898]++ > 0) check ('a string 1898'); break; + case 1899: if (n[1899]++ > 0) check ('a string 1899'); break; + case 1900: if (n[1900]++ > 0) check ('a string 1900'); break; + case 1901: if (n[1901]++ > 0) check ('a string 1901'); break; + case 1902: if (n[1902]++ > 0) check ('a string 1902'); break; + case 1903: if (n[1903]++ > 0) check ('a string 1903'); break; + case 1904: if (n[1904]++ > 0) check ('a string 1904'); break; + case 1905: if (n[1905]++ > 0) check ('a string 1905'); break; + case 1906: if (n[1906]++ > 0) check ('a string 1906'); break; + case 1907: if (n[1907]++ > 0) check ('a string 1907'); break; + case 1908: if (n[1908]++ > 0) check ('a string 1908'); break; + case 1909: if (n[1909]++ > 0) check ('a string 1909'); break; + case 1910: if (n[1910]++ > 0) check ('a string 1910'); break; + case 1911: if (n[1911]++ > 0) check ('a string 1911'); break; + case 1912: if (n[1912]++ > 0) check ('a string 1912'); break; + case 1913: if (n[1913]++ > 0) check ('a string 1913'); break; + case 1914: if (n[1914]++ > 0) check ('a string 1914'); break; + case 1915: if (n[1915]++ > 0) check ('a string 1915'); break; + case 1916: if (n[1916]++ > 0) check ('a string 1916'); break; + case 1917: if (n[1917]++ > 0) check ('a string 1917'); break; + case 1918: if (n[1918]++ > 0) check ('a string 1918'); break; + case 1919: if (n[1919]++ > 0) check ('a string 1919'); break; + case 1920: if (n[1920]++ > 0) check ('a string 1920'); break; + case 1921: if (n[1921]++ > 0) check ('a string 1921'); break; + case 1922: if (n[1922]++ > 0) check ('a string 1922'); break; + case 1923: if (n[1923]++ > 0) check ('a string 1923'); break; + case 1924: if (n[1924]++ > 0) check ('a string 1924'); break; + case 1925: if (n[1925]++ > 0) check ('a string 1925'); break; + case 1926: if (n[1926]++ > 0) check ('a string 1926'); break; + case 1927: if (n[1927]++ > 0) check ('a string 1927'); break; + case 1928: if (n[1928]++ > 0) check ('a string 1928'); break; + case 1929: if (n[1929]++ > 0) check ('a string 1929'); break; + case 1930: if (n[1930]++ > 0) check ('a string 1930'); break; + case 1931: if (n[1931]++ > 0) check ('a string 1931'); break; + case 1932: if (n[1932]++ > 0) check ('a string 1932'); break; + case 1933: if (n[1933]++ > 0) check ('a string 1933'); break; + case 1934: if (n[1934]++ > 0) check ('a string 1934'); break; + case 1935: if (n[1935]++ > 0) check ('a string 1935'); break; + case 1936: if (n[1936]++ > 0) check ('a string 1936'); break; + case 1937: if (n[1937]++ > 0) check ('a string 1937'); break; + case 1938: if (n[1938]++ > 0) check ('a string 1938'); break; + case 1939: if (n[1939]++ > 0) check ('a string 1939'); break; + case 1940: if (n[1940]++ > 0) check ('a string 1940'); break; + case 1941: if (n[1941]++ > 0) check ('a string 1941'); break; + case 1942: if (n[1942]++ > 0) check ('a string 1942'); break; + case 1943: if (n[1943]++ > 0) check ('a string 1943'); break; + case 1944: if (n[1944]++ > 0) check ('a string 1944'); break; + case 1945: if (n[1945]++ > 0) check ('a string 1945'); break; + case 1946: if (n[1946]++ > 0) check ('a string 1946'); break; + case 1947: if (n[1947]++ > 0) check ('a string 1947'); break; + case 1948: if (n[1948]++ > 0) check ('a string 1948'); break; + case 1949: if (n[1949]++ > 0) check ('a string 1949'); break; + case 1950: if (n[1950]++ > 0) check ('a string 1950'); break; + case 1951: if (n[1951]++ > 0) check ('a string 1951'); break; + case 1952: if (n[1952]++ > 0) check ('a string 1952'); break; + case 1953: if (n[1953]++ > 0) check ('a string 1953'); break; + case 1954: if (n[1954]++ > 0) check ('a string 1954'); break; + case 1955: if (n[1955]++ > 0) check ('a string 1955'); break; + case 1956: if (n[1956]++ > 0) check ('a string 1956'); break; + case 1957: if (n[1957]++ > 0) check ('a string 1957'); break; + case 1958: if (n[1958]++ > 0) check ('a string 1958'); break; + case 1959: if (n[1959]++ > 0) check ('a string 1959'); break; + case 1960: if (n[1960]++ > 0) check ('a string 1960'); break; + case 1961: if (n[1961]++ > 0) check ('a string 1961'); break; + case 1962: if (n[1962]++ > 0) check ('a string 1962'); break; + case 1963: if (n[1963]++ > 0) check ('a string 1963'); break; + case 1964: if (n[1964]++ > 0) check ('a string 1964'); break; + case 1965: if (n[1965]++ > 0) check ('a string 1965'); break; + case 1966: if (n[1966]++ > 0) check ('a string 1966'); break; + case 1967: if (n[1967]++ > 0) check ('a string 1967'); break; + case 1968: if (n[1968]++ > 0) check ('a string 1968'); break; + case 1969: if (n[1969]++ > 0) check ('a string 1969'); break; + case 1970: if (n[1970]++ > 0) check ('a string 1970'); break; + case 1971: if (n[1971]++ > 0) check ('a string 1971'); break; + case 1972: if (n[1972]++ > 0) check ('a string 1972'); break; + case 1973: if (n[1973]++ > 0) check ('a string 1973'); break; + case 1974: if (n[1974]++ > 0) check ('a string 1974'); break; + case 1975: if (n[1975]++ > 0) check ('a string 1975'); break; + case 1976: if (n[1976]++ > 0) check ('a string 1976'); break; + case 1977: if (n[1977]++ > 0) check ('a string 1977'); break; + case 1978: if (n[1978]++ > 0) check ('a string 1978'); break; + case 1979: if (n[1979]++ > 0) check ('a string 1979'); break; + case 1980: if (n[1980]++ > 0) check ('a string 1980'); break; + case 1981: if (n[1981]++ > 0) check ('a string 1981'); break; + case 1982: if (n[1982]++ > 0) check ('a string 1982'); break; + case 1983: if (n[1983]++ > 0) check ('a string 1983'); break; + case 1984: if (n[1984]++ > 0) check ('a string 1984'); break; + case 1985: if (n[1985]++ > 0) check ('a string 1985'); break; + case 1986: if (n[1986]++ > 0) check ('a string 1986'); break; + case 1987: if (n[1987]++ > 0) check ('a string 1987'); break; + case 1988: if (n[1988]++ > 0) check ('a string 1988'); break; + case 1989: if (n[1989]++ > 0) check ('a string 1989'); break; + case 1990: if (n[1990]++ > 0) check ('a string 1990'); break; + case 1991: if (n[1991]++ > 0) check ('a string 1991'); break; + case 1992: if (n[1992]++ > 0) check ('a string 1992'); break; + case 1993: if (n[1993]++ > 0) check ('a string 1993'); break; + case 1994: if (n[1994]++ > 0) check ('a string 1994'); break; + case 1995: if (n[1995]++ > 0) check ('a string 1995'); break; + case 1996: if (n[1996]++ > 0) check ('a string 1996'); break; + case 1997: if (n[1997]++ > 0) check ('a string 1997'); break; + case 1998: if (n[1998]++ > 0) check ('a string 1998'); break; + case 1999: if (n[1999]++ > 0) check ('a string 1999'); break; + case 2000: if (n[2000]++ > 0) check ('a string 2000'); break; + case 2001: if (n[2001]++ > 0) check ('a string 2001'); break; + case 2002: if (n[2002]++ > 0) check ('a string 2002'); break; + case 2003: if (n[2003]++ > 0) check ('a string 2003'); break; + case 2004: if (n[2004]++ > 0) check ('a string 2004'); break; + case 2005: if (n[2005]++ > 0) check ('a string 2005'); break; + case 2006: if (n[2006]++ > 0) check ('a string 2006'); break; + case 2007: if (n[2007]++ > 0) check ('a string 2007'); break; + case 2008: if (n[2008]++ > 0) check ('a string 2008'); break; + case 2009: if (n[2009]++ > 0) check ('a string 2009'); break; + case 2010: if (n[2010]++ > 0) check ('a string 2010'); break; + case 2011: if (n[2011]++ > 0) check ('a string 2011'); break; + case 2012: if (n[2012]++ > 0) check ('a string 2012'); break; + case 2013: if (n[2013]++ > 0) check ('a string 2013'); break; + case 2014: if (n[2014]++ > 0) check ('a string 2014'); break; + case 2015: if (n[2015]++ > 0) check ('a string 2015'); break; + case 2016: if (n[2016]++ > 0) check ('a string 2016'); break; + case 2017: if (n[2017]++ > 0) check ('a string 2017'); break; + case 2018: if (n[2018]++ > 0) check ('a string 2018'); break; + case 2019: if (n[2019]++ > 0) check ('a string 2019'); break; + case 2020: if (n[2020]++ > 0) check ('a string 2020'); break; + case 2021: if (n[2021]++ > 0) check ('a string 2021'); break; + case 2022: if (n[2022]++ > 0) check ('a string 2022'); break; + case 2023: if (n[2023]++ > 0) check ('a string 2023'); break; + case 2024: if (n[2024]++ > 0) check ('a string 2024'); break; + case 2025: if (n[2025]++ > 0) check ('a string 2025'); break; + case 2026: if (n[2026]++ > 0) check ('a string 2026'); break; + case 2027: if (n[2027]++ > 0) check ('a string 2027'); break; + case 2028: if (n[2028]++ > 0) check ('a string 2028'); break; + case 2029: if (n[2029]++ > 0) check ('a string 2029'); break; + case 2030: if (n[2030]++ > 0) check ('a string 2030'); break; + case 2031: if (n[2031]++ > 0) check ('a string 2031'); break; + case 2032: if (n[2032]++ > 0) check ('a string 2032'); break; + case 2033: if (n[2033]++ > 0) check ('a string 2033'); break; + case 2034: if (n[2034]++ > 0) check ('a string 2034'); break; + case 2035: if (n[2035]++ > 0) check ('a string 2035'); break; + case 2036: if (n[2036]++ > 0) check ('a string 2036'); break; + case 2037: if (n[2037]++ > 0) check ('a string 2037'); break; + case 2038: if (n[2038]++ > 0) check ('a string 2038'); break; + case 2039: if (n[2039]++ > 0) check ('a string 2039'); break; + case 2040: if (n[2040]++ > 0) check ('a string 2040'); break; + case 2041: if (n[2041]++ > 0) check ('a string 2041'); break; + case 2042: if (n[2042]++ > 0) check ('a string 2042'); break; + case 2043: if (n[2043]++ > 0) check ('a string 2043'); break; + case 2044: if (n[2044]++ > 0) check ('a string 2044'); break; + case 2045: if (n[2045]++ > 0) check ('a string 2045'); break; + case 2046: if (n[2046]++ > 0) check ('a string 2046'); break; + case 2047: if (n[2047]++ > 0) check ('a string 2047'); break; + case 2048: if (n[2048]++ > 0) check ('a string 2048'); break; + case 2049: if (n[2049]++ > 0) check ('a string 2049'); break; + case 2050: if (n[2050]++ > 0) check ('a string 2050'); break; + case 2051: if (n[2051]++ > 0) check ('a string 2051'); break; + case 2052: if (n[2052]++ > 0) check ('a string 2052'); break; + case 2053: if (n[2053]++ > 0) check ('a string 2053'); break; + case 2054: if (n[2054]++ > 0) check ('a string 2054'); break; + case 2055: if (n[2055]++ > 0) check ('a string 2055'); break; + case 2056: if (n[2056]++ > 0) check ('a string 2056'); break; + case 2057: if (n[2057]++ > 0) check ('a string 2057'); break; + case 2058: if (n[2058]++ > 0) check ('a string 2058'); break; + case 2059: if (n[2059]++ > 0) check ('a string 2059'); break; + case 2060: if (n[2060]++ > 0) check ('a string 2060'); break; + case 2061: if (n[2061]++ > 0) check ('a string 2061'); break; + case 2062: if (n[2062]++ > 0) check ('a string 2062'); break; + case 2063: if (n[2063]++ > 0) check ('a string 2063'); break; + case 2064: if (n[2064]++ > 0) check ('a string 2064'); break; + case 2065: if (n[2065]++ > 0) check ('a string 2065'); break; + case 2066: if (n[2066]++ > 0) check ('a string 2066'); break; + case 2067: if (n[2067]++ > 0) check ('a string 2067'); break; + case 2068: if (n[2068]++ > 0) check ('a string 2068'); break; + case 2069: if (n[2069]++ > 0) check ('a string 2069'); break; + case 2070: if (n[2070]++ > 0) check ('a string 2070'); break; + case 2071: if (n[2071]++ > 0) check ('a string 2071'); break; + case 2072: if (n[2072]++ > 0) check ('a string 2072'); break; + case 2073: if (n[2073]++ > 0) check ('a string 2073'); break; + case 2074: if (n[2074]++ > 0) check ('a string 2074'); break; + case 2075: if (n[2075]++ > 0) check ('a string 2075'); break; + case 2076: if (n[2076]++ > 0) check ('a string 2076'); break; + case 2077: if (n[2077]++ > 0) check ('a string 2077'); break; + case 2078: if (n[2078]++ > 0) check ('a string 2078'); break; + case 2079: if (n[2079]++ > 0) check ('a string 2079'); break; + case 2080: if (n[2080]++ > 0) check ('a string 2080'); break; + case 2081: if (n[2081]++ > 0) check ('a string 2081'); break; + case 2082: if (n[2082]++ > 0) check ('a string 2082'); break; + case 2083: if (n[2083]++ > 0) check ('a string 2083'); break; + case 2084: if (n[2084]++ > 0) check ('a string 2084'); break; + case 2085: if (n[2085]++ > 0) check ('a string 2085'); break; + case 2086: if (n[2086]++ > 0) check ('a string 2086'); break; + case 2087: if (n[2087]++ > 0) check ('a string 2087'); break; + case 2088: if (n[2088]++ > 0) check ('a string 2088'); break; + case 2089: if (n[2089]++ > 0) check ('a string 2089'); break; + case 2090: if (n[2090]++ > 0) check ('a string 2090'); break; + case 2091: if (n[2091]++ > 0) check ('a string 2091'); break; + case 2092: if (n[2092]++ > 0) check ('a string 2092'); break; + case 2093: if (n[2093]++ > 0) check ('a string 2093'); break; + case 2094: if (n[2094]++ > 0) check ('a string 2094'); break; + case 2095: if (n[2095]++ > 0) check ('a string 2095'); break; + case 2096: if (n[2096]++ > 0) check ('a string 2096'); break; + case 2097: if (n[2097]++ > 0) check ('a string 2097'); break; + case 2098: if (n[2098]++ > 0) check ('a string 2098'); break; + case 2099: if (n[2099]++ > 0) check ('a string 2099'); break; + case 2100: if (n[2100]++ > 0) check ('a string 2100'); break; + case 2101: if (n[2101]++ > 0) check ('a string 2101'); break; + case 2102: if (n[2102]++ > 0) check ('a string 2102'); break; + case 2103: if (n[2103]++ > 0) check ('a string 2103'); break; + case 2104: if (n[2104]++ > 0) check ('a string 2104'); break; + case 2105: if (n[2105]++ > 0) check ('a string 2105'); break; + case 2106: if (n[2106]++ > 0) check ('a string 2106'); break; + case 2107: if (n[2107]++ > 0) check ('a string 2107'); break; + case 2108: if (n[2108]++ > 0) check ('a string 2108'); break; + case 2109: if (n[2109]++ > 0) check ('a string 2109'); break; + case 2110: if (n[2110]++ > 0) check ('a string 2110'); break; + case 2111: if (n[2111]++ > 0) check ('a string 2111'); break; + case 2112: if (n[2112]++ > 0) check ('a string 2112'); break; + case 2113: if (n[2113]++ > 0) check ('a string 2113'); break; + case 2114: if (n[2114]++ > 0) check ('a string 2114'); break; + case 2115: if (n[2115]++ > 0) check ('a string 2115'); break; + case 2116: if (n[2116]++ > 0) check ('a string 2116'); break; + case 2117: if (n[2117]++ > 0) check ('a string 2117'); break; + case 2118: if (n[2118]++ > 0) check ('a string 2118'); break; + case 2119: if (n[2119]++ > 0) check ('a string 2119'); break; + case 2120: if (n[2120]++ > 0) check ('a string 2120'); break; + case 2121: if (n[2121]++ > 0) check ('a string 2121'); break; + case 2122: if (n[2122]++ > 0) check ('a string 2122'); break; + case 2123: if (n[2123]++ > 0) check ('a string 2123'); break; + case 2124: if (n[2124]++ > 0) check ('a string 2124'); break; + case 2125: if (n[2125]++ > 0) check ('a string 2125'); break; + case 2126: if (n[2126]++ > 0) check ('a string 2126'); break; + case 2127: if (n[2127]++ > 0) check ('a string 2127'); break; + case 2128: if (n[2128]++ > 0) check ('a string 2128'); break; + case 2129: if (n[2129]++ > 0) check ('a string 2129'); break; + case 2130: if (n[2130]++ > 0) check ('a string 2130'); break; + case 2131: if (n[2131]++ > 0) check ('a string 2131'); break; + case 2132: if (n[2132]++ > 0) check ('a string 2132'); break; + case 2133: if (n[2133]++ > 0) check ('a string 2133'); break; + case 2134: if (n[2134]++ > 0) check ('a string 2134'); break; + case 2135: if (n[2135]++ > 0) check ('a string 2135'); break; + case 2136: if (n[2136]++ > 0) check ('a string 2136'); break; + case 2137: if (n[2137]++ > 0) check ('a string 2137'); break; + case 2138: if (n[2138]++ > 0) check ('a string 2138'); break; + case 2139: if (n[2139]++ > 0) check ('a string 2139'); break; + case 2140: if (n[2140]++ > 0) check ('a string 2140'); break; + case 2141: if (n[2141]++ > 0) check ('a string 2141'); break; + case 2142: if (n[2142]++ > 0) check ('a string 2142'); break; + case 2143: if (n[2143]++ > 0) check ('a string 2143'); break; + case 2144: if (n[2144]++ > 0) check ('a string 2144'); break; + case 2145: if (n[2145]++ > 0) check ('a string 2145'); break; + case 2146: if (n[2146]++ > 0) check ('a string 2146'); break; + case 2147: if (n[2147]++ > 0) check ('a string 2147'); break; + case 2148: if (n[2148]++ > 0) check ('a string 2148'); break; + case 2149: if (n[2149]++ > 0) check ('a string 2149'); break; + case 2150: if (n[2150]++ > 0) check ('a string 2150'); break; + case 2151: if (n[2151]++ > 0) check ('a string 2151'); break; + case 2152: if (n[2152]++ > 0) check ('a string 2152'); break; + case 2153: if (n[2153]++ > 0) check ('a string 2153'); break; + case 2154: if (n[2154]++ > 0) check ('a string 2154'); break; + case 2155: if (n[2155]++ > 0) check ('a string 2155'); break; + case 2156: if (n[2156]++ > 0) check ('a string 2156'); break; + case 2157: if (n[2157]++ > 0) check ('a string 2157'); break; + case 2158: if (n[2158]++ > 0) check ('a string 2158'); break; + case 2159: if (n[2159]++ > 0) check ('a string 2159'); break; + case 2160: if (n[2160]++ > 0) check ('a string 2160'); break; + case 2161: if (n[2161]++ > 0) check ('a string 2161'); break; + case 2162: if (n[2162]++ > 0) check ('a string 2162'); break; + case 2163: if (n[2163]++ > 0) check ('a string 2163'); break; + case 2164: if (n[2164]++ > 0) check ('a string 2164'); break; + case 2165: if (n[2165]++ > 0) check ('a string 2165'); break; + case 2166: if (n[2166]++ > 0) check ('a string 2166'); break; + case 2167: if (n[2167]++ > 0) check ('a string 2167'); break; + case 2168: if (n[2168]++ > 0) check ('a string 2168'); break; + case 2169: if (n[2169]++ > 0) check ('a string 2169'); break; + case 2170: if (n[2170]++ > 0) check ('a string 2170'); break; + case 2171: if (n[2171]++ > 0) check ('a string 2171'); break; + case 2172: if (n[2172]++ > 0) check ('a string 2172'); break; + case 2173: if (n[2173]++ > 0) check ('a string 2173'); break; + case 2174: if (n[2174]++ > 0) check ('a string 2174'); break; + case 2175: if (n[2175]++ > 0) check ('a string 2175'); break; + case 2176: if (n[2176]++ > 0) check ('a string 2176'); break; + case 2177: if (n[2177]++ > 0) check ('a string 2177'); break; + case 2178: if (n[2178]++ > 0) check ('a string 2178'); break; + case 2179: if (n[2179]++ > 0) check ('a string 2179'); break; + case 2180: if (n[2180]++ > 0) check ('a string 2180'); break; + case 2181: if (n[2181]++ > 0) check ('a string 2181'); break; + case 2182: if (n[2182]++ > 0) check ('a string 2182'); break; + case 2183: if (n[2183]++ > 0) check ('a string 2183'); break; + case 2184: if (n[2184]++ > 0) check ('a string 2184'); break; + case 2185: if (n[2185]++ > 0) check ('a string 2185'); break; + case 2186: if (n[2186]++ > 0) check ('a string 2186'); break; + case 2187: if (n[2187]++ > 0) check ('a string 2187'); break; + case 2188: if (n[2188]++ > 0) check ('a string 2188'); break; + case 2189: if (n[2189]++ > 0) check ('a string 2189'); break; + case 2190: if (n[2190]++ > 0) check ('a string 2190'); break; + case 2191: if (n[2191]++ > 0) check ('a string 2191'); break; + case 2192: if (n[2192]++ > 0) check ('a string 2192'); break; + case 2193: if (n[2193]++ > 0) check ('a string 2193'); break; + case 2194: if (n[2194]++ > 0) check ('a string 2194'); break; + case 2195: if (n[2195]++ > 0) check ('a string 2195'); break; + case 2196: if (n[2196]++ > 0) check ('a string 2196'); break; + case 2197: if (n[2197]++ > 0) check ('a string 2197'); break; + case 2198: if (n[2198]++ > 0) check ('a string 2198'); break; + case 2199: if (n[2199]++ > 0) check ('a string 2199'); break; + case 2200: if (n[2200]++ > 0) check ('a string 2200'); break; + case 2201: if (n[2201]++ > 0) check ('a string 2201'); break; + case 2202: if (n[2202]++ > 0) check ('a string 2202'); break; + case 2203: if (n[2203]++ > 0) check ('a string 2203'); break; + case 2204: if (n[2204]++ > 0) check ('a string 2204'); break; + case 2205: if (n[2205]++ > 0) check ('a string 2205'); break; + case 2206: if (n[2206]++ > 0) check ('a string 2206'); break; + case 2207: if (n[2207]++ > 0) check ('a string 2207'); break; + case 2208: if (n[2208]++ > 0) check ('a string 2208'); break; + case 2209: if (n[2209]++ > 0) check ('a string 2209'); break; + case 2210: if (n[2210]++ > 0) check ('a string 2210'); break; + case 2211: if (n[2211]++ > 0) check ('a string 2211'); break; + case 2212: if (n[2212]++ > 0) check ('a string 2212'); break; + case 2213: if (n[2213]++ > 0) check ('a string 2213'); break; + case 2214: if (n[2214]++ > 0) check ('a string 2214'); break; + case 2215: if (n[2215]++ > 0) check ('a string 2215'); break; + case 2216: if (n[2216]++ > 0) check ('a string 2216'); break; + case 2217: if (n[2217]++ > 0) check ('a string 2217'); break; + case 2218: if (n[2218]++ > 0) check ('a string 2218'); break; + case 2219: if (n[2219]++ > 0) check ('a string 2219'); break; + case 2220: if (n[2220]++ > 0) check ('a string 2220'); break; + case 2221: if (n[2221]++ > 0) check ('a string 2221'); break; + case 2222: if (n[2222]++ > 0) check ('a string 2222'); break; + case 2223: if (n[2223]++ > 0) check ('a string 2223'); break; + case 2224: if (n[2224]++ > 0) check ('a string 2224'); break; + case 2225: if (n[2225]++ > 0) check ('a string 2225'); break; + case 2226: if (n[2226]++ > 0) check ('a string 2226'); break; + case 2227: if (n[2227]++ > 0) check ('a string 2227'); break; + case 2228: if (n[2228]++ > 0) check ('a string 2228'); break; + case 2229: if (n[2229]++ > 0) check ('a string 2229'); break; + case 2230: if (n[2230]++ > 0) check ('a string 2230'); break; + case 2231: if (n[2231]++ > 0) check ('a string 2231'); break; + case 2232: if (n[2232]++ > 0) check ('a string 2232'); break; + case 2233: if (n[2233]++ > 0) check ('a string 2233'); break; + case 2234: if (n[2234]++ > 0) check ('a string 2234'); break; + case 2235: if (n[2235]++ > 0) check ('a string 2235'); break; + case 2236: if (n[2236]++ > 0) check ('a string 2236'); break; + case 2237: if (n[2237]++ > 0) check ('a string 2237'); break; + case 2238: if (n[2238]++ > 0) check ('a string 2238'); break; + case 2239: if (n[2239]++ > 0) check ('a string 2239'); break; + case 2240: if (n[2240]++ > 0) check ('a string 2240'); break; + case 2241: if (n[2241]++ > 0) check ('a string 2241'); break; + case 2242: if (n[2242]++ > 0) check ('a string 2242'); break; + case 2243: if (n[2243]++ > 0) check ('a string 2243'); break; + case 2244: if (n[2244]++ > 0) check ('a string 2244'); break; + case 2245: if (n[2245]++ > 0) check ('a string 2245'); break; + case 2246: if (n[2246]++ > 0) check ('a string 2246'); break; + case 2247: if (n[2247]++ > 0) check ('a string 2247'); break; + case 2248: if (n[2248]++ > 0) check ('a string 2248'); break; + case 2249: if (n[2249]++ > 0) check ('a string 2249'); break; + case 2250: if (n[2250]++ > 0) check ('a string 2250'); break; + case 2251: if (n[2251]++ > 0) check ('a string 2251'); break; + case 2252: if (n[2252]++ > 0) check ('a string 2252'); break; + case 2253: if (n[2253]++ > 0) check ('a string 2253'); break; + case 2254: if (n[2254]++ > 0) check ('a string 2254'); break; + case 2255: if (n[2255]++ > 0) check ('a string 2255'); break; + case 2256: if (n[2256]++ > 0) check ('a string 2256'); break; + case 2257: if (n[2257]++ > 0) check ('a string 2257'); break; + case 2258: if (n[2258]++ > 0) check ('a string 2258'); break; + case 2259: if (n[2259]++ > 0) check ('a string 2259'); break; + case 2260: if (n[2260]++ > 0) check ('a string 2260'); break; + case 2261: if (n[2261]++ > 0) check ('a string 2261'); break; + case 2262: if (n[2262]++ > 0) check ('a string 2262'); break; + case 2263: if (n[2263]++ > 0) check ('a string 2263'); break; + case 2264: if (n[2264]++ > 0) check ('a string 2264'); break; + case 2265: if (n[2265]++ > 0) check ('a string 2265'); break; + case 2266: if (n[2266]++ > 0) check ('a string 2266'); break; + case 2267: if (n[2267]++ > 0) check ('a string 2267'); break; + case 2268: if (n[2268]++ > 0) check ('a string 2268'); break; + case 2269: if (n[2269]++ > 0) check ('a string 2269'); break; + case 2270: if (n[2270]++ > 0) check ('a string 2270'); break; + case 2271: if (n[2271]++ > 0) check ('a string 2271'); break; + case 2272: if (n[2272]++ > 0) check ('a string 2272'); break; + case 2273: if (n[2273]++ > 0) check ('a string 2273'); break; + case 2274: if (n[2274]++ > 0) check ('a string 2274'); break; + case 2275: if (n[2275]++ > 0) check ('a string 2275'); break; + case 2276: if (n[2276]++ > 0) check ('a string 2276'); break; + case 2277: if (n[2277]++ > 0) check ('a string 2277'); break; + case 2278: if (n[2278]++ > 0) check ('a string 2278'); break; + case 2279: if (n[2279]++ > 0) check ('a string 2279'); break; + case 2280: if (n[2280]++ > 0) check ('a string 2280'); break; + case 2281: if (n[2281]++ > 0) check ('a string 2281'); break; + case 2282: if (n[2282]++ > 0) check ('a string 2282'); break; + case 2283: if (n[2283]++ > 0) check ('a string 2283'); break; + case 2284: if (n[2284]++ > 0) check ('a string 2284'); break; + case 2285: if (n[2285]++ > 0) check ('a string 2285'); break; + case 2286: if (n[2286]++ > 0) check ('a string 2286'); break; + case 2287: if (n[2287]++ > 0) check ('a string 2287'); break; + case 2288: if (n[2288]++ > 0) check ('a string 2288'); break; + case 2289: if (n[2289]++ > 0) check ('a string 2289'); break; + case 2290: if (n[2290]++ > 0) check ('a string 2290'); break; + case 2291: if (n[2291]++ > 0) check ('a string 2291'); break; + case 2292: if (n[2292]++ > 0) check ('a string 2292'); break; + case 2293: if (n[2293]++ > 0) check ('a string 2293'); break; + case 2294: if (n[2294]++ > 0) check ('a string 2294'); break; + case 2295: if (n[2295]++ > 0) check ('a string 2295'); break; + case 2296: if (n[2296]++ > 0) check ('a string 2296'); break; + case 2297: if (n[2297]++ > 0) check ('a string 2297'); break; + case 2298: if (n[2298]++ > 0) check ('a string 2298'); break; + case 2299: if (n[2299]++ > 0) check ('a string 2299'); break; + case 2300: if (n[2300]++ > 0) check ('a string 2300'); break; + case 2301: if (n[2301]++ > 0) check ('a string 2301'); break; + case 2302: if (n[2302]++ > 0) check ('a string 2302'); break; + case 2303: if (n[2303]++ > 0) check ('a string 2303'); break; + case 2304: if (n[2304]++ > 0) check ('a string 2304'); break; + case 2305: if (n[2305]++ > 0) check ('a string 2305'); break; + case 2306: if (n[2306]++ > 0) check ('a string 2306'); break; + case 2307: if (n[2307]++ > 0) check ('a string 2307'); break; + case 2308: if (n[2308]++ > 0) check ('a string 2308'); break; + case 2309: if (n[2309]++ > 0) check ('a string 2309'); break; + case 2310: if (n[2310]++ > 0) check ('a string 2310'); break; + case 2311: if (n[2311]++ > 0) check ('a string 2311'); break; + case 2312: if (n[2312]++ > 0) check ('a string 2312'); break; + case 2313: if (n[2313]++ > 0) check ('a string 2313'); break; + case 2314: if (n[2314]++ > 0) check ('a string 2314'); break; + case 2315: if (n[2315]++ > 0) check ('a string 2315'); break; + case 2316: if (n[2316]++ > 0) check ('a string 2316'); break; + case 2317: if (n[2317]++ > 0) check ('a string 2317'); break; + case 2318: if (n[2318]++ > 0) check ('a string 2318'); break; + case 2319: if (n[2319]++ > 0) check ('a string 2319'); break; + case 2320: if (n[2320]++ > 0) check ('a string 2320'); break; + case 2321: if (n[2321]++ > 0) check ('a string 2321'); break; + case 2322: if (n[2322]++ > 0) check ('a string 2322'); break; + case 2323: if (n[2323]++ > 0) check ('a string 2323'); break; + case 2324: if (n[2324]++ > 0) check ('a string 2324'); break; + case 2325: if (n[2325]++ > 0) check ('a string 2325'); break; + case 2326: if (n[2326]++ > 0) check ('a string 2326'); break; + case 2327: if (n[2327]++ > 0) check ('a string 2327'); break; + case 2328: if (n[2328]++ > 0) check ('a string 2328'); break; + case 2329: if (n[2329]++ > 0) check ('a string 2329'); break; + case 2330: if (n[2330]++ > 0) check ('a string 2330'); break; + case 2331: if (n[2331]++ > 0) check ('a string 2331'); break; + case 2332: if (n[2332]++ > 0) check ('a string 2332'); break; + case 2333: if (n[2333]++ > 0) check ('a string 2333'); break; + case 2334: if (n[2334]++ > 0) check ('a string 2334'); break; + case 2335: if (n[2335]++ > 0) check ('a string 2335'); break; + case 2336: if (n[2336]++ > 0) check ('a string 2336'); break; + case 2337: if (n[2337]++ > 0) check ('a string 2337'); break; + case 2338: if (n[2338]++ > 0) check ('a string 2338'); break; + case 2339: if (n[2339]++ > 0) check ('a string 2339'); break; + case 2340: if (n[2340]++ > 0) check ('a string 2340'); break; + case 2341: if (n[2341]++ > 0) check ('a string 2341'); break; + case 2342: if (n[2342]++ > 0) check ('a string 2342'); break; + case 2343: if (n[2343]++ > 0) check ('a string 2343'); break; + case 2344: if (n[2344]++ > 0) check ('a string 2344'); break; + case 2345: if (n[2345]++ > 0) check ('a string 2345'); break; + case 2346: if (n[2346]++ > 0) check ('a string 2346'); break; + case 2347: if (n[2347]++ > 0) check ('a string 2347'); break; + case 2348: if (n[2348]++ > 0) check ('a string 2348'); break; + case 2349: if (n[2349]++ > 0) check ('a string 2349'); break; + case 2350: if (n[2350]++ > 0) check ('a string 2350'); break; + case 2351: if (n[2351]++ > 0) check ('a string 2351'); break; + case 2352: if (n[2352]++ > 0) check ('a string 2352'); break; + case 2353: if (n[2353]++ > 0) check ('a string 2353'); break; + case 2354: if (n[2354]++ > 0) check ('a string 2354'); break; + case 2355: if (n[2355]++ > 0) check ('a string 2355'); break; + case 2356: if (n[2356]++ > 0) check ('a string 2356'); break; + case 2357: if (n[2357]++ > 0) check ('a string 2357'); break; + case 2358: if (n[2358]++ > 0) check ('a string 2358'); break; + case 2359: if (n[2359]++ > 0) check ('a string 2359'); break; + case 2360: if (n[2360]++ > 0) check ('a string 2360'); break; + case 2361: if (n[2361]++ > 0) check ('a string 2361'); break; + case 2362: if (n[2362]++ > 0) check ('a string 2362'); break; + case 2363: if (n[2363]++ > 0) check ('a string 2363'); break; + case 2364: if (n[2364]++ > 0) check ('a string 2364'); break; + case 2365: if (n[2365]++ > 0) check ('a string 2365'); break; + case 2366: if (n[2366]++ > 0) check ('a string 2366'); break; + case 2367: if (n[2367]++ > 0) check ('a string 2367'); break; + case 2368: if (n[2368]++ > 0) check ('a string 2368'); break; + case 2369: if (n[2369]++ > 0) check ('a string 2369'); break; + case 2370: if (n[2370]++ > 0) check ('a string 2370'); break; + case 2371: if (n[2371]++ > 0) check ('a string 2371'); break; + case 2372: if (n[2372]++ > 0) check ('a string 2372'); break; + case 2373: if (n[2373]++ > 0) check ('a string 2373'); break; + case 2374: if (n[2374]++ > 0) check ('a string 2374'); break; + case 2375: if (n[2375]++ > 0) check ('a string 2375'); break; + case 2376: if (n[2376]++ > 0) check ('a string 2376'); break; + case 2377: if (n[2377]++ > 0) check ('a string 2377'); break; + case 2378: if (n[2378]++ > 0) check ('a string 2378'); break; + case 2379: if (n[2379]++ > 0) check ('a string 2379'); break; + case 2380: if (n[2380]++ > 0) check ('a string 2380'); break; + case 2381: if (n[2381]++ > 0) check ('a string 2381'); break; + case 2382: if (n[2382]++ > 0) check ('a string 2382'); break; + case 2383: if (n[2383]++ > 0) check ('a string 2383'); break; + case 2384: if (n[2384]++ > 0) check ('a string 2384'); break; + case 2385: if (n[2385]++ > 0) check ('a string 2385'); break; + case 2386: if (n[2386]++ > 0) check ('a string 2386'); break; + case 2387: if (n[2387]++ > 0) check ('a string 2387'); break; + case 2388: if (n[2388]++ > 0) check ('a string 2388'); break; + case 2389: if (n[2389]++ > 0) check ('a string 2389'); break; + case 2390: if (n[2390]++ > 0) check ('a string 2390'); break; + case 2391: if (n[2391]++ > 0) check ('a string 2391'); break; + case 2392: if (n[2392]++ > 0) check ('a string 2392'); break; + case 2393: if (n[2393]++ > 0) check ('a string 2393'); break; + case 2394: if (n[2394]++ > 0) check ('a string 2394'); break; + case 2395: if (n[2395]++ > 0) check ('a string 2395'); break; + case 2396: if (n[2396]++ > 0) check ('a string 2396'); break; + case 2397: if (n[2397]++ > 0) check ('a string 2397'); break; + case 2398: if (n[2398]++ > 0) check ('a string 2398'); break; + case 2399: if (n[2399]++ > 0) check ('a string 2399'); break; + case 2400: if (n[2400]++ > 0) check ('a string 2400'); break; + case 2401: if (n[2401]++ > 0) check ('a string 2401'); break; + case 2402: if (n[2402]++ > 0) check ('a string 2402'); break; + case 2403: if (n[2403]++ > 0) check ('a string 2403'); break; + case 2404: if (n[2404]++ > 0) check ('a string 2404'); break; + case 2405: if (n[2405]++ > 0) check ('a string 2405'); break; + case 2406: if (n[2406]++ > 0) check ('a string 2406'); break; + case 2407: if (n[2407]++ > 0) check ('a string 2407'); break; + case 2408: if (n[2408]++ > 0) check ('a string 2408'); break; + case 2409: if (n[2409]++ > 0) check ('a string 2409'); break; + case 2410: if (n[2410]++ > 0) check ('a string 2410'); break; + case 2411: if (n[2411]++ > 0) check ('a string 2411'); break; + case 2412: if (n[2412]++ > 0) check ('a string 2412'); break; + case 2413: if (n[2413]++ > 0) check ('a string 2413'); break; + case 2414: if (n[2414]++ > 0) check ('a string 2414'); break; + case 2415: if (n[2415]++ > 0) check ('a string 2415'); break; + case 2416: if (n[2416]++ > 0) check ('a string 2416'); break; + case 2417: if (n[2417]++ > 0) check ('a string 2417'); break; + case 2418: if (n[2418]++ > 0) check ('a string 2418'); break; + case 2419: if (n[2419]++ > 0) check ('a string 2419'); break; + case 2420: if (n[2420]++ > 0) check ('a string 2420'); break; + case 2421: if (n[2421]++ > 0) check ('a string 2421'); break; + case 2422: if (n[2422]++ > 0) check ('a string 2422'); break; + case 2423: if (n[2423]++ > 0) check ('a string 2423'); break; + case 2424: if (n[2424]++ > 0) check ('a string 2424'); break; + case 2425: if (n[2425]++ > 0) check ('a string 2425'); break; + case 2426: if (n[2426]++ > 0) check ('a string 2426'); break; + case 2427: if (n[2427]++ > 0) check ('a string 2427'); break; + case 2428: if (n[2428]++ > 0) check ('a string 2428'); break; + case 2429: if (n[2429]++ > 0) check ('a string 2429'); break; + case 2430: if (n[2430]++ > 0) check ('a string 2430'); break; + case 2431: if (n[2431]++ > 0) check ('a string 2431'); break; + case 2432: if (n[2432]++ > 0) check ('a string 2432'); break; + case 2433: if (n[2433]++ > 0) check ('a string 2433'); break; + case 2434: if (n[2434]++ > 0) check ('a string 2434'); break; + case 2435: if (n[2435]++ > 0) check ('a string 2435'); break; + case 2436: if (n[2436]++ > 0) check ('a string 2436'); break; + case 2437: if (n[2437]++ > 0) check ('a string 2437'); break; + case 2438: if (n[2438]++ > 0) check ('a string 2438'); break; + case 2439: if (n[2439]++ > 0) check ('a string 2439'); break; + case 2440: if (n[2440]++ > 0) check ('a string 2440'); break; + case 2441: if (n[2441]++ > 0) check ('a string 2441'); break; + case 2442: if (n[2442]++ > 0) check ('a string 2442'); break; + case 2443: if (n[2443]++ > 0) check ('a string 2443'); break; + case 2444: if (n[2444]++ > 0) check ('a string 2444'); break; + case 2445: if (n[2445]++ > 0) check ('a string 2445'); break; + case 2446: if (n[2446]++ > 0) check ('a string 2446'); break; + case 2447: if (n[2447]++ > 0) check ('a string 2447'); break; + case 2448: if (n[2448]++ > 0) check ('a string 2448'); break; + case 2449: if (n[2449]++ > 0) check ('a string 2449'); break; + case 2450: if (n[2450]++ > 0) check ('a string 2450'); break; + case 2451: if (n[2451]++ > 0) check ('a string 2451'); break; + case 2452: if (n[2452]++ > 0) check ('a string 2452'); break; + case 2453: if (n[2453]++ > 0) check ('a string 2453'); break; + case 2454: if (n[2454]++ > 0) check ('a string 2454'); break; + case 2455: if (n[2455]++ > 0) check ('a string 2455'); break; + case 2456: if (n[2456]++ > 0) check ('a string 2456'); break; + case 2457: if (n[2457]++ > 0) check ('a string 2457'); break; + case 2458: if (n[2458]++ > 0) check ('a string 2458'); break; + case 2459: if (n[2459]++ > 0) check ('a string 2459'); break; + case 2460: if (n[2460]++ > 0) check ('a string 2460'); break; + case 2461: if (n[2461]++ > 0) check ('a string 2461'); break; + case 2462: if (n[2462]++ > 0) check ('a string 2462'); break; + case 2463: if (n[2463]++ > 0) check ('a string 2463'); break; + case 2464: if (n[2464]++ > 0) check ('a string 2464'); break; + case 2465: if (n[2465]++ > 0) check ('a string 2465'); break; + case 2466: if (n[2466]++ > 0) check ('a string 2466'); break; + case 2467: if (n[2467]++ > 0) check ('a string 2467'); break; + case 2468: if (n[2468]++ > 0) check ('a string 2468'); break; + case 2469: if (n[2469]++ > 0) check ('a string 2469'); break; + case 2470: if (n[2470]++ > 0) check ('a string 2470'); break; + case 2471: if (n[2471]++ > 0) check ('a string 2471'); break; + case 2472: if (n[2472]++ > 0) check ('a string 2472'); break; + case 2473: if (n[2473]++ > 0) check ('a string 2473'); break; + case 2474: if (n[2474]++ > 0) check ('a string 2474'); break; + case 2475: if (n[2475]++ > 0) check ('a string 2475'); break; + case 2476: if (n[2476]++ > 0) check ('a string 2476'); break; + case 2477: if (n[2477]++ > 0) check ('a string 2477'); break; + case 2478: if (n[2478]++ > 0) check ('a string 2478'); break; + case 2479: if (n[2479]++ > 0) check ('a string 2479'); break; + case 2480: if (n[2480]++ > 0) check ('a string 2480'); break; + case 2481: if (n[2481]++ > 0) check ('a string 2481'); break; + case 2482: if (n[2482]++ > 0) check ('a string 2482'); break; + case 2483: if (n[2483]++ > 0) check ('a string 2483'); break; + case 2484: if (n[2484]++ > 0) check ('a string 2484'); break; + case 2485: if (n[2485]++ > 0) check ('a string 2485'); break; + case 2486: if (n[2486]++ > 0) check ('a string 2486'); break; + case 2487: if (n[2487]++ > 0) check ('a string 2487'); break; + case 2488: if (n[2488]++ > 0) check ('a string 2488'); break; + case 2489: if (n[2489]++ > 0) check ('a string 2489'); break; + case 2490: if (n[2490]++ > 0) check ('a string 2490'); break; + case 2491: if (n[2491]++ > 0) check ('a string 2491'); break; + case 2492: if (n[2492]++ > 0) check ('a string 2492'); break; + case 2493: if (n[2493]++ > 0) check ('a string 2493'); break; + case 2494: if (n[2494]++ > 0) check ('a string 2494'); break; + case 2495: if (n[2495]++ > 0) check ('a string 2495'); break; + case 2496: if (n[2496]++ > 0) check ('a string 2496'); break; + case 2497: if (n[2497]++ > 0) check ('a string 2497'); break; + case 2498: if (n[2498]++ > 0) check ('a string 2498'); break; + case 2499: if (n[2499]++ > 0) check ('a string 2499'); break; + case 2500: if (n[2500]++ > 0) check ('a string 2500'); break; + case 2501: if (n[2501]++ > 0) check ('a string 2501'); break; + case 2502: if (n[2502]++ > 0) check ('a string 2502'); break; + case 2503: if (n[2503]++ > 0) check ('a string 2503'); break; + case 2504: if (n[2504]++ > 0) check ('a string 2504'); break; + case 2505: if (n[2505]++ > 0) check ('a string 2505'); break; + case 2506: if (n[2506]++ > 0) check ('a string 2506'); break; + case 2507: if (n[2507]++ > 0) check ('a string 2507'); break; + case 2508: if (n[2508]++ > 0) check ('a string 2508'); break; + case 2509: if (n[2509]++ > 0) check ('a string 2509'); break; + case 2510: if (n[2510]++ > 0) check ('a string 2510'); break; + case 2511: if (n[2511]++ > 0) check ('a string 2511'); break; + case 2512: if (n[2512]++ > 0) check ('a string 2512'); break; + case 2513: if (n[2513]++ > 0) check ('a string 2513'); break; + case 2514: if (n[2514]++ > 0) check ('a string 2514'); break; + case 2515: if (n[2515]++ > 0) check ('a string 2515'); break; + case 2516: if (n[2516]++ > 0) check ('a string 2516'); break; + case 2517: if (n[2517]++ > 0) check ('a string 2517'); break; + case 2518: if (n[2518]++ > 0) check ('a string 2518'); break; + case 2519: if (n[2519]++ > 0) check ('a string 2519'); break; + case 2520: if (n[2520]++ > 0) check ('a string 2520'); break; + case 2521: if (n[2521]++ > 0) check ('a string 2521'); break; + case 2522: if (n[2522]++ > 0) check ('a string 2522'); break; + case 2523: if (n[2523]++ > 0) check ('a string 2523'); break; + case 2524: if (n[2524]++ > 0) check ('a string 2524'); break; + case 2525: if (n[2525]++ > 0) check ('a string 2525'); break; + case 2526: if (n[2526]++ > 0) check ('a string 2526'); break; + case 2527: if (n[2527]++ > 0) check ('a string 2527'); break; + case 2528: if (n[2528]++ > 0) check ('a string 2528'); break; + case 2529: if (n[2529]++ > 0) check ('a string 2529'); break; + case 2530: if (n[2530]++ > 0) check ('a string 2530'); break; + case 2531: if (n[2531]++ > 0) check ('a string 2531'); break; + case 2532: if (n[2532]++ > 0) check ('a string 2532'); break; + case 2533: if (n[2533]++ > 0) check ('a string 2533'); break; + case 2534: if (n[2534]++ > 0) check ('a string 2534'); break; + case 2535: if (n[2535]++ > 0) check ('a string 2535'); break; + case 2536: if (n[2536]++ > 0) check ('a string 2536'); break; + case 2537: if (n[2537]++ > 0) check ('a string 2537'); break; + case 2538: if (n[2538]++ > 0) check ('a string 2538'); break; + case 2539: if (n[2539]++ > 0) check ('a string 2539'); break; + case 2540: if (n[2540]++ > 0) check ('a string 2540'); break; + case 2541: if (n[2541]++ > 0) check ('a string 2541'); break; + case 2542: if (n[2542]++ > 0) check ('a string 2542'); break; + case 2543: if (n[2543]++ > 0) check ('a string 2543'); break; + case 2544: if (n[2544]++ > 0) check ('a string 2544'); break; + case 2545: if (n[2545]++ > 0) check ('a string 2545'); break; + case 2546: if (n[2546]++ > 0) check ('a string 2546'); break; + case 2547: if (n[2547]++ > 0) check ('a string 2547'); break; + case 2548: if (n[2548]++ > 0) check ('a string 2548'); break; + case 2549: if (n[2549]++ > 0) check ('a string 2549'); break; + case 2550: if (n[2550]++ > 0) check ('a string 2550'); break; + case 2551: if (n[2551]++ > 0) check ('a string 2551'); break; + case 2552: if (n[2552]++ > 0) check ('a string 2552'); break; + case 2553: if (n[2553]++ > 0) check ('a string 2553'); break; + case 2554: if (n[2554]++ > 0) check ('a string 2554'); break; + case 2555: if (n[2555]++ > 0) check ('a string 2555'); break; + case 2556: if (n[2556]++ > 0) check ('a string 2556'); break; + case 2557: if (n[2557]++ > 0) check ('a string 2557'); break; + case 2558: if (n[2558]++ > 0) check ('a string 2558'); break; + case 2559: if (n[2559]++ > 0) check ('a string 2559'); break; + case 2560: if (n[2560]++ > 0) check ('a string 2560'); break; + case 2561: if (n[2561]++ > 0) check ('a string 2561'); break; + case 2562: if (n[2562]++ > 0) check ('a string 2562'); break; + case 2563: if (n[2563]++ > 0) check ('a string 2563'); break; + case 2564: if (n[2564]++ > 0) check ('a string 2564'); break; + case 2565: if (n[2565]++ > 0) check ('a string 2565'); break; + case 2566: if (n[2566]++ > 0) check ('a string 2566'); break; + case 2567: if (n[2567]++ > 0) check ('a string 2567'); break; + case 2568: if (n[2568]++ > 0) check ('a string 2568'); break; + case 2569: if (n[2569]++ > 0) check ('a string 2569'); break; + case 2570: if (n[2570]++ > 0) check ('a string 2570'); break; + case 2571: if (n[2571]++ > 0) check ('a string 2571'); break; + case 2572: if (n[2572]++ > 0) check ('a string 2572'); break; + case 2573: if (n[2573]++ > 0) check ('a string 2573'); break; + case 2574: if (n[2574]++ > 0) check ('a string 2574'); break; + case 2575: if (n[2575]++ > 0) check ('a string 2575'); break; + case 2576: if (n[2576]++ > 0) check ('a string 2576'); break; + case 2577: if (n[2577]++ > 0) check ('a string 2577'); break; + case 2578: if (n[2578]++ > 0) check ('a string 2578'); break; + case 2579: if (n[2579]++ > 0) check ('a string 2579'); break; + case 2580: if (n[2580]++ > 0) check ('a string 2580'); break; + case 2581: if (n[2581]++ > 0) check ('a string 2581'); break; + case 2582: if (n[2582]++ > 0) check ('a string 2582'); break; + case 2583: if (n[2583]++ > 0) check ('a string 2583'); break; + case 2584: if (n[2584]++ > 0) check ('a string 2584'); break; + case 2585: if (n[2585]++ > 0) check ('a string 2585'); break; + case 2586: if (n[2586]++ > 0) check ('a string 2586'); break; + case 2587: if (n[2587]++ > 0) check ('a string 2587'); break; + case 2588: if (n[2588]++ > 0) check ('a string 2588'); break; + case 2589: if (n[2589]++ > 0) check ('a string 2589'); break; + case 2590: if (n[2590]++ > 0) check ('a string 2590'); break; + case 2591: if (n[2591]++ > 0) check ('a string 2591'); break; + case 2592: if (n[2592]++ > 0) check ('a string 2592'); break; + case 2593: if (n[2593]++ > 0) check ('a string 2593'); break; + case 2594: if (n[2594]++ > 0) check ('a string 2594'); break; + case 2595: if (n[2595]++ > 0) check ('a string 2595'); break; + case 2596: if (n[2596]++ > 0) check ('a string 2596'); break; + case 2597: if (n[2597]++ > 0) check ('a string 2597'); break; + case 2598: if (n[2598]++ > 0) check ('a string 2598'); break; + case 2599: if (n[2599]++ > 0) check ('a string 2599'); break; + case 2600: if (n[2600]++ > 0) check ('a string 2600'); break; + case 2601: if (n[2601]++ > 0) check ('a string 2601'); break; + case 2602: if (n[2602]++ > 0) check ('a string 2602'); break; + case 2603: if (n[2603]++ > 0) check ('a string 2603'); break; + case 2604: if (n[2604]++ > 0) check ('a string 2604'); break; + case 2605: if (n[2605]++ > 0) check ('a string 2605'); break; + case 2606: if (n[2606]++ > 0) check ('a string 2606'); break; + case 2607: if (n[2607]++ > 0) check ('a string 2607'); break; + case 2608: if (n[2608]++ > 0) check ('a string 2608'); break; + case 2609: if (n[2609]++ > 0) check ('a string 2609'); break; + case 2610: if (n[2610]++ > 0) check ('a string 2610'); break; + case 2611: if (n[2611]++ > 0) check ('a string 2611'); break; + case 2612: if (n[2612]++ > 0) check ('a string 2612'); break; + case 2613: if (n[2613]++ > 0) check ('a string 2613'); break; + case 2614: if (n[2614]++ > 0) check ('a string 2614'); break; + case 2615: if (n[2615]++ > 0) check ('a string 2615'); break; + case 2616: if (n[2616]++ > 0) check ('a string 2616'); break; + case 2617: if (n[2617]++ > 0) check ('a string 2617'); break; + case 2618: if (n[2618]++ > 0) check ('a string 2618'); break; + case 2619: if (n[2619]++ > 0) check ('a string 2619'); break; + case 2620: if (n[2620]++ > 0) check ('a string 2620'); break; + case 2621: if (n[2621]++ > 0) check ('a string 2621'); break; + case 2622: if (n[2622]++ > 0) check ('a string 2622'); break; + case 2623: if (n[2623]++ > 0) check ('a string 2623'); break; + case 2624: if (n[2624]++ > 0) check ('a string 2624'); break; + case 2625: if (n[2625]++ > 0) check ('a string 2625'); break; + case 2626: if (n[2626]++ > 0) check ('a string 2626'); break; + case 2627: if (n[2627]++ > 0) check ('a string 2627'); break; + case 2628: if (n[2628]++ > 0) check ('a string 2628'); break; + case 2629: if (n[2629]++ > 0) check ('a string 2629'); break; + case 2630: if (n[2630]++ > 0) check ('a string 2630'); break; + case 2631: if (n[2631]++ > 0) check ('a string 2631'); break; + case 2632: if (n[2632]++ > 0) check ('a string 2632'); break; + case 2633: if (n[2633]++ > 0) check ('a string 2633'); break; + case 2634: if (n[2634]++ > 0) check ('a string 2634'); break; + case 2635: if (n[2635]++ > 0) check ('a string 2635'); break; + case 2636: if (n[2636]++ > 0) check ('a string 2636'); break; + case 2637: if (n[2637]++ > 0) check ('a string 2637'); break; + case 2638: if (n[2638]++ > 0) check ('a string 2638'); break; + case 2639: if (n[2639]++ > 0) check ('a string 2639'); break; + case 2640: if (n[2640]++ > 0) check ('a string 2640'); break; + case 2641: if (n[2641]++ > 0) check ('a string 2641'); break; + case 2642: if (n[2642]++ > 0) check ('a string 2642'); break; + case 2643: if (n[2643]++ > 0) check ('a string 2643'); break; + case 2644: if (n[2644]++ > 0) check ('a string 2644'); break; + case 2645: if (n[2645]++ > 0) check ('a string 2645'); break; + case 2646: if (n[2646]++ > 0) check ('a string 2646'); break; + case 2647: if (n[2647]++ > 0) check ('a string 2647'); break; + case 2648: if (n[2648]++ > 0) check ('a string 2648'); break; + case 2649: if (n[2649]++ > 0) check ('a string 2649'); break; + case 2650: if (n[2650]++ > 0) check ('a string 2650'); break; + case 2651: if (n[2651]++ > 0) check ('a string 2651'); break; + case 2652: if (n[2652]++ > 0) check ('a string 2652'); break; + case 2653: if (n[2653]++ > 0) check ('a string 2653'); break; + case 2654: if (n[2654]++ > 0) check ('a string 2654'); break; + case 2655: if (n[2655]++ > 0) check ('a string 2655'); break; + case 2656: if (n[2656]++ > 0) check ('a string 2656'); break; + case 2657: if (n[2657]++ > 0) check ('a string 2657'); break; + case 2658: if (n[2658]++ > 0) check ('a string 2658'); break; + case 2659: if (n[2659]++ > 0) check ('a string 2659'); break; + case 2660: if (n[2660]++ > 0) check ('a string 2660'); break; + case 2661: if (n[2661]++ > 0) check ('a string 2661'); break; + case 2662: if (n[2662]++ > 0) check ('a string 2662'); break; + case 2663: if (n[2663]++ > 0) check ('a string 2663'); break; + case 2664: if (n[2664]++ > 0) check ('a string 2664'); break; + case 2665: if (n[2665]++ > 0) check ('a string 2665'); break; + case 2666: if (n[2666]++ > 0) check ('a string 2666'); break; + case 2667: if (n[2667]++ > 0) check ('a string 2667'); break; + case 2668: if (n[2668]++ > 0) check ('a string 2668'); break; + case 2669: if (n[2669]++ > 0) check ('a string 2669'); break; + case 2670: if (n[2670]++ > 0) check ('a string 2670'); break; + case 2671: if (n[2671]++ > 0) check ('a string 2671'); break; + case 2672: if (n[2672]++ > 0) check ('a string 2672'); break; + case 2673: if (n[2673]++ > 0) check ('a string 2673'); break; + case 2674: if (n[2674]++ > 0) check ('a string 2674'); break; + case 2675: if (n[2675]++ > 0) check ('a string 2675'); break; + case 2676: if (n[2676]++ > 0) check ('a string 2676'); break; + case 2677: if (n[2677]++ > 0) check ('a string 2677'); break; + case 2678: if (n[2678]++ > 0) check ('a string 2678'); break; + case 2679: if (n[2679]++ > 0) check ('a string 2679'); break; + case 2680: if (n[2680]++ > 0) check ('a string 2680'); break; + case 2681: if (n[2681]++ > 0) check ('a string 2681'); break; + case 2682: if (n[2682]++ > 0) check ('a string 2682'); break; + case 2683: if (n[2683]++ > 0) check ('a string 2683'); break; + case 2684: if (n[2684]++ > 0) check ('a string 2684'); break; + case 2685: if (n[2685]++ > 0) check ('a string 2685'); break; + case 2686: if (n[2686]++ > 0) check ('a string 2686'); break; + case 2687: if (n[2687]++ > 0) check ('a string 2687'); break; + case 2688: if (n[2688]++ > 0) check ('a string 2688'); break; + case 2689: if (n[2689]++ > 0) check ('a string 2689'); break; + case 2690: if (n[2690]++ > 0) check ('a string 2690'); break; + case 2691: if (n[2691]++ > 0) check ('a string 2691'); break; + case 2692: if (n[2692]++ > 0) check ('a string 2692'); break; + case 2693: if (n[2693]++ > 0) check ('a string 2693'); break; + case 2694: if (n[2694]++ > 0) check ('a string 2694'); break; + case 2695: if (n[2695]++ > 0) check ('a string 2695'); break; + case 2696: if (n[2696]++ > 0) check ('a string 2696'); break; + case 2697: if (n[2697]++ > 0) check ('a string 2697'); break; + case 2698: if (n[2698]++ > 0) check ('a string 2698'); break; + case 2699: if (n[2699]++ > 0) check ('a string 2699'); break; + case 2700: if (n[2700]++ > 0) check ('a string 2700'); break; + case 2701: if (n[2701]++ > 0) check ('a string 2701'); break; + case 2702: if (n[2702]++ > 0) check ('a string 2702'); break; + case 2703: if (n[2703]++ > 0) check ('a string 2703'); break; + case 2704: if (n[2704]++ > 0) check ('a string 2704'); break; + case 2705: if (n[2705]++ > 0) check ('a string 2705'); break; + case 2706: if (n[2706]++ > 0) check ('a string 2706'); break; + case 2707: if (n[2707]++ > 0) check ('a string 2707'); break; + case 2708: if (n[2708]++ > 0) check ('a string 2708'); break; + case 2709: if (n[2709]++ > 0) check ('a string 2709'); break; + case 2710: if (n[2710]++ > 0) check ('a string 2710'); break; + case 2711: if (n[2711]++ > 0) check ('a string 2711'); break; + case 2712: if (n[2712]++ > 0) check ('a string 2712'); break; + case 2713: if (n[2713]++ > 0) check ('a string 2713'); break; + case 2714: if (n[2714]++ > 0) check ('a string 2714'); break; + case 2715: if (n[2715]++ > 0) check ('a string 2715'); break; + case 2716: if (n[2716]++ > 0) check ('a string 2716'); break; + case 2717: if (n[2717]++ > 0) check ('a string 2717'); break; + case 2718: if (n[2718]++ > 0) check ('a string 2718'); break; + case 2719: if (n[2719]++ > 0) check ('a string 2719'); break; + case 2720: if (n[2720]++ > 0) check ('a string 2720'); break; + case 2721: if (n[2721]++ > 0) check ('a string 2721'); break; + case 2722: if (n[2722]++ > 0) check ('a string 2722'); break; + case 2723: if (n[2723]++ > 0) check ('a string 2723'); break; + case 2724: if (n[2724]++ > 0) check ('a string 2724'); break; + case 2725: if (n[2725]++ > 0) check ('a string 2725'); break; + case 2726: if (n[2726]++ > 0) check ('a string 2726'); break; + case 2727: if (n[2727]++ > 0) check ('a string 2727'); break; + case 2728: if (n[2728]++ > 0) check ('a string 2728'); break; + case 2729: if (n[2729]++ > 0) check ('a string 2729'); break; + case 2730: if (n[2730]++ > 0) check ('a string 2730'); break; + case 2731: if (n[2731]++ > 0) check ('a string 2731'); break; + case 2732: if (n[2732]++ > 0) check ('a string 2732'); break; + case 2733: if (n[2733]++ > 0) check ('a string 2733'); break; + case 2734: if (n[2734]++ > 0) check ('a string 2734'); break; + case 2735: if (n[2735]++ > 0) check ('a string 2735'); break; + case 2736: if (n[2736]++ > 0) check ('a string 2736'); break; + case 2737: if (n[2737]++ > 0) check ('a string 2737'); break; + case 2738: if (n[2738]++ > 0) check ('a string 2738'); break; + case 2739: if (n[2739]++ > 0) check ('a string 2739'); break; + case 2740: if (n[2740]++ > 0) check ('a string 2740'); break; + case 2741: if (n[2741]++ > 0) check ('a string 2741'); break; + case 2742: if (n[2742]++ > 0) check ('a string 2742'); break; + case 2743: if (n[2743]++ > 0) check ('a string 2743'); break; + case 2744: if (n[2744]++ > 0) check ('a string 2744'); break; + case 2745: if (n[2745]++ > 0) check ('a string 2745'); break; + case 2746: if (n[2746]++ > 0) check ('a string 2746'); break; + case 2747: if (n[2747]++ > 0) check ('a string 2747'); break; + case 2748: if (n[2748]++ > 0) check ('a string 2748'); break; + case 2749: if (n[2749]++ > 0) check ('a string 2749'); break; + case 2750: if (n[2750]++ > 0) check ('a string 2750'); break; + case 2751: if (n[2751]++ > 0) check ('a string 2751'); break; + case 2752: if (n[2752]++ > 0) check ('a string 2752'); break; + case 2753: if (n[2753]++ > 0) check ('a string 2753'); break; + case 2754: if (n[2754]++ > 0) check ('a string 2754'); break; + case 2755: if (n[2755]++ > 0) check ('a string 2755'); break; + case 2756: if (n[2756]++ > 0) check ('a string 2756'); break; + case 2757: if (n[2757]++ > 0) check ('a string 2757'); break; + case 2758: if (n[2758]++ > 0) check ('a string 2758'); break; + case 2759: if (n[2759]++ > 0) check ('a string 2759'); break; + case 2760: if (n[2760]++ > 0) check ('a string 2760'); break; + case 2761: if (n[2761]++ > 0) check ('a string 2761'); break; + case 2762: if (n[2762]++ > 0) check ('a string 2762'); break; + case 2763: if (n[2763]++ > 0) check ('a string 2763'); break; + case 2764: if (n[2764]++ > 0) check ('a string 2764'); break; + case 2765: if (n[2765]++ > 0) check ('a string 2765'); break; + case 2766: if (n[2766]++ > 0) check ('a string 2766'); break; + case 2767: if (n[2767]++ > 0) check ('a string 2767'); break; + case 2768: if (n[2768]++ > 0) check ('a string 2768'); break; + case 2769: if (n[2769]++ > 0) check ('a string 2769'); break; + case 2770: if (n[2770]++ > 0) check ('a string 2770'); break; + case 2771: if (n[2771]++ > 0) check ('a string 2771'); break; + case 2772: if (n[2772]++ > 0) check ('a string 2772'); break; + case 2773: if (n[2773]++ > 0) check ('a string 2773'); break; + case 2774: if (n[2774]++ > 0) check ('a string 2774'); break; + case 2775: if (n[2775]++ > 0) check ('a string 2775'); break; + case 2776: if (n[2776]++ > 0) check ('a string 2776'); break; + case 2777: if (n[2777]++ > 0) check ('a string 2777'); break; + case 2778: if (n[2778]++ > 0) check ('a string 2778'); break; + case 2779: if (n[2779]++ > 0) check ('a string 2779'); break; + case 2780: if (n[2780]++ > 0) check ('a string 2780'); break; + case 2781: if (n[2781]++ > 0) check ('a string 2781'); break; + case 2782: if (n[2782]++ > 0) check ('a string 2782'); break; + case 2783: if (n[2783]++ > 0) check ('a string 2783'); break; + case 2784: if (n[2784]++ > 0) check ('a string 2784'); break; + case 2785: if (n[2785]++ > 0) check ('a string 2785'); break; + case 2786: if (n[2786]++ > 0) check ('a string 2786'); break; + case 2787: if (n[2787]++ > 0) check ('a string 2787'); break; + case 2788: if (n[2788]++ > 0) check ('a string 2788'); break; + case 2789: if (n[2789]++ > 0) check ('a string 2789'); break; + case 2790: if (n[2790]++ > 0) check ('a string 2790'); break; + case 2791: if (n[2791]++ > 0) check ('a string 2791'); break; + case 2792: if (n[2792]++ > 0) check ('a string 2792'); break; + case 2793: if (n[2793]++ > 0) check ('a string 2793'); break; + case 2794: if (n[2794]++ > 0) check ('a string 2794'); break; + case 2795: if (n[2795]++ > 0) check ('a string 2795'); break; + case 2796: if (n[2796]++ > 0) check ('a string 2796'); break; + case 2797: if (n[2797]++ > 0) check ('a string 2797'); break; + case 2798: if (n[2798]++ > 0) check ('a string 2798'); break; + case 2799: if (n[2799]++ > 0) check ('a string 2799'); break; + case 2800: if (n[2800]++ > 0) check ('a string 2800'); break; + case 2801: if (n[2801]++ > 0) check ('a string 2801'); break; + case 2802: if (n[2802]++ > 0) check ('a string 2802'); break; + case 2803: if (n[2803]++ > 0) check ('a string 2803'); break; + case 2804: if (n[2804]++ > 0) check ('a string 2804'); break; + case 2805: if (n[2805]++ > 0) check ('a string 2805'); break; + case 2806: if (n[2806]++ > 0) check ('a string 2806'); break; + case 2807: if (n[2807]++ > 0) check ('a string 2807'); break; + case 2808: if (n[2808]++ > 0) check ('a string 2808'); break; + case 2809: if (n[2809]++ > 0) check ('a string 2809'); break; + case 2810: if (n[2810]++ > 0) check ('a string 2810'); break; + case 2811: if (n[2811]++ > 0) check ('a string 2811'); break; + case 2812: if (n[2812]++ > 0) check ('a string 2812'); break; + case 2813: if (n[2813]++ > 0) check ('a string 2813'); break; + case 2814: if (n[2814]++ > 0) check ('a string 2814'); break; + case 2815: if (n[2815]++ > 0) check ('a string 2815'); break; + case 2816: if (n[2816]++ > 0) check ('a string 2816'); break; + case 2817: if (n[2817]++ > 0) check ('a string 2817'); break; + case 2818: if (n[2818]++ > 0) check ('a string 2818'); break; + case 2819: if (n[2819]++ > 0) check ('a string 2819'); break; + case 2820: if (n[2820]++ > 0) check ('a string 2820'); break; + case 2821: if (n[2821]++ > 0) check ('a string 2821'); break; + case 2822: if (n[2822]++ > 0) check ('a string 2822'); break; + case 2823: if (n[2823]++ > 0) check ('a string 2823'); break; + case 2824: if (n[2824]++ > 0) check ('a string 2824'); break; + case 2825: if (n[2825]++ > 0) check ('a string 2825'); break; + case 2826: if (n[2826]++ > 0) check ('a string 2826'); break; + case 2827: if (n[2827]++ > 0) check ('a string 2827'); break; + case 2828: if (n[2828]++ > 0) check ('a string 2828'); break; + case 2829: if (n[2829]++ > 0) check ('a string 2829'); break; + case 2830: if (n[2830]++ > 0) check ('a string 2830'); break; + case 2831: if (n[2831]++ > 0) check ('a string 2831'); break; + case 2832: if (n[2832]++ > 0) check ('a string 2832'); break; + case 2833: if (n[2833]++ > 0) check ('a string 2833'); break; + case 2834: if (n[2834]++ > 0) check ('a string 2834'); break; + case 2835: if (n[2835]++ > 0) check ('a string 2835'); break; + case 2836: if (n[2836]++ > 0) check ('a string 2836'); break; + case 2837: if (n[2837]++ > 0) check ('a string 2837'); break; + case 2838: if (n[2838]++ > 0) check ('a string 2838'); break; + case 2839: if (n[2839]++ > 0) check ('a string 2839'); break; + case 2840: if (n[2840]++ > 0) check ('a string 2840'); break; + case 2841: if (n[2841]++ > 0) check ('a string 2841'); break; + case 2842: if (n[2842]++ > 0) check ('a string 2842'); break; + case 2843: if (n[2843]++ > 0) check ('a string 2843'); break; + case 2844: if (n[2844]++ > 0) check ('a string 2844'); break; + case 2845: if (n[2845]++ > 0) check ('a string 2845'); break; + case 2846: if (n[2846]++ > 0) check ('a string 2846'); break; + case 2847: if (n[2847]++ > 0) check ('a string 2847'); break; + case 2848: if (n[2848]++ > 0) check ('a string 2848'); break; + case 2849: if (n[2849]++ > 0) check ('a string 2849'); break; + case 2850: if (n[2850]++ > 0) check ('a string 2850'); break; + case 2851: if (n[2851]++ > 0) check ('a string 2851'); break; + case 2852: if (n[2852]++ > 0) check ('a string 2852'); break; + case 2853: if (n[2853]++ > 0) check ('a string 2853'); break; + case 2854: if (n[2854]++ > 0) check ('a string 2854'); break; + case 2855: if (n[2855]++ > 0) check ('a string 2855'); break; + case 2856: if (n[2856]++ > 0) check ('a string 2856'); break; + case 2857: if (n[2857]++ > 0) check ('a string 2857'); break; + case 2858: if (n[2858]++ > 0) check ('a string 2858'); break; + case 2859: if (n[2859]++ > 0) check ('a string 2859'); break; + case 2860: if (n[2860]++ > 0) check ('a string 2860'); break; + case 2861: if (n[2861]++ > 0) check ('a string 2861'); break; + case 2862: if (n[2862]++ > 0) check ('a string 2862'); break; + case 2863: if (n[2863]++ > 0) check ('a string 2863'); break; + case 2864: if (n[2864]++ > 0) check ('a string 2864'); break; + case 2865: if (n[2865]++ > 0) check ('a string 2865'); break; + case 2866: if (n[2866]++ > 0) check ('a string 2866'); break; + case 2867: if (n[2867]++ > 0) check ('a string 2867'); break; + case 2868: if (n[2868]++ > 0) check ('a string 2868'); break; + case 2869: if (n[2869]++ > 0) check ('a string 2869'); break; + case 2870: if (n[2870]++ > 0) check ('a string 2870'); break; + case 2871: if (n[2871]++ > 0) check ('a string 2871'); break; + case 2872: if (n[2872]++ > 0) check ('a string 2872'); break; + case 2873: if (n[2873]++ > 0) check ('a string 2873'); break; + case 2874: if (n[2874]++ > 0) check ('a string 2874'); break; + case 2875: if (n[2875]++ > 0) check ('a string 2875'); break; + case 2876: if (n[2876]++ > 0) check ('a string 2876'); break; + case 2877: if (n[2877]++ > 0) check ('a string 2877'); break; + case 2878: if (n[2878]++ > 0) check ('a string 2878'); break; + case 2879: if (n[2879]++ > 0) check ('a string 2879'); break; + case 2880: if (n[2880]++ > 0) check ('a string 2880'); break; + case 2881: if (n[2881]++ > 0) check ('a string 2881'); break; + case 2882: if (n[2882]++ > 0) check ('a string 2882'); break; + case 2883: if (n[2883]++ > 0) check ('a string 2883'); break; + case 2884: if (n[2884]++ > 0) check ('a string 2884'); break; + case 2885: if (n[2885]++ > 0) check ('a string 2885'); break; + case 2886: if (n[2886]++ > 0) check ('a string 2886'); break; + case 2887: if (n[2887]++ > 0) check ('a string 2887'); break; + case 2888: if (n[2888]++ > 0) check ('a string 2888'); break; + case 2889: if (n[2889]++ > 0) check ('a string 2889'); break; + case 2890: if (n[2890]++ > 0) check ('a string 2890'); break; + case 2891: if (n[2891]++ > 0) check ('a string 2891'); break; + case 2892: if (n[2892]++ > 0) check ('a string 2892'); break; + case 2893: if (n[2893]++ > 0) check ('a string 2893'); break; + case 2894: if (n[2894]++ > 0) check ('a string 2894'); break; + case 2895: if (n[2895]++ > 0) check ('a string 2895'); break; + case 2896: if (n[2896]++ > 0) check ('a string 2896'); break; + case 2897: if (n[2897]++ > 0) check ('a string 2897'); break; + case 2898: if (n[2898]++ > 0) check ('a string 2898'); break; + case 2899: if (n[2899]++ > 0) check ('a string 2899'); break; + case 2900: if (n[2900]++ > 0) check ('a string 2900'); break; + case 2901: if (n[2901]++ > 0) check ('a string 2901'); break; + case 2902: if (n[2902]++ > 0) check ('a string 2902'); break; + case 2903: if (n[2903]++ > 0) check ('a string 2903'); break; + case 2904: if (n[2904]++ > 0) check ('a string 2904'); break; + case 2905: if (n[2905]++ > 0) check ('a string 2905'); break; + case 2906: if (n[2906]++ > 0) check ('a string 2906'); break; + case 2907: if (n[2907]++ > 0) check ('a string 2907'); break; + case 2908: if (n[2908]++ > 0) check ('a string 2908'); break; + case 2909: if (n[2909]++ > 0) check ('a string 2909'); break; + case 2910: if (n[2910]++ > 0) check ('a string 2910'); break; + case 2911: if (n[2911]++ > 0) check ('a string 2911'); break; + case 2912: if (n[2912]++ > 0) check ('a string 2912'); break; + case 2913: if (n[2913]++ > 0) check ('a string 2913'); break; + case 2914: if (n[2914]++ > 0) check ('a string 2914'); break; + case 2915: if (n[2915]++ > 0) check ('a string 2915'); break; + case 2916: if (n[2916]++ > 0) check ('a string 2916'); break; + case 2917: if (n[2917]++ > 0) check ('a string 2917'); break; + case 2918: if (n[2918]++ > 0) check ('a string 2918'); break; + case 2919: if (n[2919]++ > 0) check ('a string 2919'); break; + case 2920: if (n[2920]++ > 0) check ('a string 2920'); break; + case 2921: if (n[2921]++ > 0) check ('a string 2921'); break; + case 2922: if (n[2922]++ > 0) check ('a string 2922'); break; + case 2923: if (n[2923]++ > 0) check ('a string 2923'); break; + case 2924: if (n[2924]++ > 0) check ('a string 2924'); break; + case 2925: if (n[2925]++ > 0) check ('a string 2925'); break; + case 2926: if (n[2926]++ > 0) check ('a string 2926'); break; + case 2927: if (n[2927]++ > 0) check ('a string 2927'); break; + case 2928: if (n[2928]++ > 0) check ('a string 2928'); break; + case 2929: if (n[2929]++ > 0) check ('a string 2929'); break; + case 2930: if (n[2930]++ > 0) check ('a string 2930'); break; + case 2931: if (n[2931]++ > 0) check ('a string 2931'); break; + case 2932: if (n[2932]++ > 0) check ('a string 2932'); break; + case 2933: if (n[2933]++ > 0) check ('a string 2933'); break; + case 2934: if (n[2934]++ > 0) check ('a string 2934'); break; + case 2935: if (n[2935]++ > 0) check ('a string 2935'); break; + case 2936: if (n[2936]++ > 0) check ('a string 2936'); break; + case 2937: if (n[2937]++ > 0) check ('a string 2937'); break; + case 2938: if (n[2938]++ > 0) check ('a string 2938'); break; + case 2939: if (n[2939]++ > 0) check ('a string 2939'); break; + case 2940: if (n[2940]++ > 0) check ('a string 2940'); break; + case 2941: if (n[2941]++ > 0) check ('a string 2941'); break; + case 2942: if (n[2942]++ > 0) check ('a string 2942'); break; + case 2943: if (n[2943]++ > 0) check ('a string 2943'); break; + case 2944: if (n[2944]++ > 0) check ('a string 2944'); break; + case 2945: if (n[2945]++ > 0) check ('a string 2945'); break; + case 2946: if (n[2946]++ > 0) check ('a string 2946'); break; + case 2947: if (n[2947]++ > 0) check ('a string 2947'); break; + case 2948: if (n[2948]++ > 0) check ('a string 2948'); break; + case 2949: if (n[2949]++ > 0) check ('a string 2949'); break; + case 2950: if (n[2950]++ > 0) check ('a string 2950'); break; + case 2951: if (n[2951]++ > 0) check ('a string 2951'); break; + case 2952: if (n[2952]++ > 0) check ('a string 2952'); break; + case 2953: if (n[2953]++ > 0) check ('a string 2953'); break; + case 2954: if (n[2954]++ > 0) check ('a string 2954'); break; + case 2955: if (n[2955]++ > 0) check ('a string 2955'); break; + case 2956: if (n[2956]++ > 0) check ('a string 2956'); break; + case 2957: if (n[2957]++ > 0) check ('a string 2957'); break; + case 2958: if (n[2958]++ > 0) check ('a string 2958'); break; + case 2959: if (n[2959]++ > 0) check ('a string 2959'); break; + case 2960: if (n[2960]++ > 0) check ('a string 2960'); break; + case 2961: if (n[2961]++ > 0) check ('a string 2961'); break; + case 2962: if (n[2962]++ > 0) check ('a string 2962'); break; + case 2963: if (n[2963]++ > 0) check ('a string 2963'); break; + case 2964: if (n[2964]++ > 0) check ('a string 2964'); break; + case 2965: if (n[2965]++ > 0) check ('a string 2965'); break; + case 2966: if (n[2966]++ > 0) check ('a string 2966'); break; + case 2967: if (n[2967]++ > 0) check ('a string 2967'); break; + case 2968: if (n[2968]++ > 0) check ('a string 2968'); break; + case 2969: if (n[2969]++ > 0) check ('a string 2969'); break; + case 2970: if (n[2970]++ > 0) check ('a string 2970'); break; + case 2971: if (n[2971]++ > 0) check ('a string 2971'); break; + case 2972: if (n[2972]++ > 0) check ('a string 2972'); break; + case 2973: if (n[2973]++ > 0) check ('a string 2973'); break; + case 2974: if (n[2974]++ > 0) check ('a string 2974'); break; + case 2975: if (n[2975]++ > 0) check ('a string 2975'); break; + case 2976: if (n[2976]++ > 0) check ('a string 2976'); break; + case 2977: if (n[2977]++ > 0) check ('a string 2977'); break; + case 2978: if (n[2978]++ > 0) check ('a string 2978'); break; + case 2979: if (n[2979]++ > 0) check ('a string 2979'); break; + case 2980: if (n[2980]++ > 0) check ('a string 2980'); break; + case 2981: if (n[2981]++ > 0) check ('a string 2981'); break; + case 2982: if (n[2982]++ > 0) check ('a string 2982'); break; + case 2983: if (n[2983]++ > 0) check ('a string 2983'); break; + case 2984: if (n[2984]++ > 0) check ('a string 2984'); break; + case 2985: if (n[2985]++ > 0) check ('a string 2985'); break; + case 2986: if (n[2986]++ > 0) check ('a string 2986'); break; + case 2987: if (n[2987]++ > 0) check ('a string 2987'); break; + case 2988: if (n[2988]++ > 0) check ('a string 2988'); break; + case 2989: if (n[2989]++ > 0) check ('a string 2989'); break; + case 2990: if (n[2990]++ > 0) check ('a string 2990'); break; + case 2991: if (n[2991]++ > 0) check ('a string 2991'); break; + case 2992: if (n[2992]++ > 0) check ('a string 2992'); break; + case 2993: if (n[2993]++ > 0) check ('a string 2993'); break; + case 2994: if (n[2994]++ > 0) check ('a string 2994'); break; + case 2995: if (n[2995]++ > 0) check ('a string 2995'); break; + case 2996: if (n[2996]++ > 0) check ('a string 2996'); break; + case 2997: if (n[2997]++ > 0) check ('a string 2997'); break; + case 2998: if (n[2998]++ > 0) check ('a string 2998'); break; + case 2999: if (n[2999]++ > 0) check ('a string 2999'); break; + case 3000: if (n[3000]++ > 0) check ('a string 3000'); break; + case 3001: if (n[3001]++ > 0) check ('a string 3001'); break; + case 3002: if (n[3002]++ > 0) check ('a string 3002'); break; + case 3003: if (n[3003]++ > 0) check ('a string 3003'); break; + case 3004: if (n[3004]++ > 0) check ('a string 3004'); break; + case 3005: if (n[3005]++ > 0) check ('a string 3005'); break; + case 3006: if (n[3006]++ > 0) check ('a string 3006'); break; + case 3007: if (n[3007]++ > 0) check ('a string 3007'); break; + case 3008: if (n[3008]++ > 0) check ('a string 3008'); break; + case 3009: if (n[3009]++ > 0) check ('a string 3009'); break; + default : if (n[3010]++ > 0) check ('a string 3010'); break; + } + } + + b4(); + b_after(); +} + + +function check(status) +{ + print('k = ' + k + ' j = ' + j + ' ' + status); + + for (i = 0; i < i2; i++) + { + if (n[i] != 1) + { + print('n[' + i + '] = ' + n[i]); + if (i != j) + { + print('Test failed'); + err_num++; + break; + } + } + } +} + + +function b4() +{ + print('Visited b4'); +} + + +function b_after() +{ + print('Visited b_after'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-82306.js b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-82306.js new file mode 100644 index 00000000000..6841fd5f7f5 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-82306.js @@ -0,0 +1,59 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com, epstein@tellme.com +* Date: 23 May 2001 +* +* SUMMARY: Regression test for Bugzilla bug 82306 +* See http://bugzilla.mozilla.org/show_bug.cgi?id=82306 +* +* This test used to crash the JS engine. This was discovered +* by Mike Epstein +*/ +//------------------------------------------------------------------------------------------------- +var bug = 82306; +var summary = "Testing we don't crash on encodeURI()"; +var URI = ''; + + +//------------------------------------------------------------------------------------------------- +test(); +//------------------------------------------------------------------------------------------------- + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + URI += ''; + URI += ''; + URI += ''; + URI += '650-930-xxxx'; + URI += '877-485-xxxx'; + URI += ''; + URI += ''; + URI += ''; + URI += ''; + + // Just testing that we don't crash on this + encodeURI(URI); + + exitFunc ('test'); +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-89443.js b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-89443.js new file mode 100644 index 00000000000..ba4e1db5b97 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-89443.js @@ -0,0 +1,2130 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an +* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either expressed +* or implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. +* All Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* Date: 2001-07-12 +* +* SUMMARY: Regression test for bug 89443 +* See http://bugzilla.mozilla.org/show_bug.cgi?id=89443 +* +* Just seeing if this script will compile without stack overflow. +*/ +//------------------------------------------------------------------------------------------------- +var bug = 89443; +var summary = 'Testing this script will compile without stack overflow'; + +printBugNumber (bug); +printStatus (summary); + + +// I don't know what these functions are supposed to be; use dummies - +function isPlainHostName() +{ +} + +function dnsDomainIs() +{ +} + +// Here's the big function - +function FindProxyForURL(url, host) +{ + +if (isPlainHostName(host) +|| dnsDomainIs(host, ".hennepin.lib.mn.us") +|| dnsDomainIs(host, ".hclib.org") +) + return "DIRECT"; +else if (isPlainHostName(host) + +// subscription database access + +|| dnsDomainIs(host, ".asahi.com") +|| dnsDomainIs(host, ".2facts.com") +|| dnsDomainIs(host, ".oclc.org") +|| dnsDomainIs(host, ".collegesource.com") +|| dnsDomainIs(host, ".cq.com") +|| dnsDomainIs(host, ".grolier.com") +|| dnsDomainIs(host, ".groveart.com") +|| dnsDomainIs(host, ".groveopera.com") +|| dnsDomainIs(host, ".fsonline.com") +|| dnsDomainIs(host, ".carl.org") +|| dnsDomainIs(host, ".newslibrary.com") +|| dnsDomainIs(host, ".pioneerplanet.com") +|| dnsDomainIs(host, ".startribune.com") +|| dnsDomainIs(host, ".poemfinder.com") +|| dnsDomainIs(host, ".umi.com") +|| dnsDomainIs(host, ".referenceusa.com") +|| dnsDomainIs(host, ".sirs.com") +|| dnsDomainIs(host, ".krmediastream.com") +|| dnsDomainIs(host, ".gale.com") +|| dnsDomainIs(host, ".galenet.com") +|| dnsDomainIs(host, ".galegroup.com") +|| dnsDomainIs(host, ".facts.com") +|| dnsDomainIs(host, ".eb.com") +|| dnsDomainIs(host, ".worldbookonline.com") +|| dnsDomainIs(host, ".galegroup.com") +|| dnsDomainIs(host, ".accessscience.com") +|| dnsDomainIs(host, ".booksinprint.com") +|| dnsDomainIs(host, ".infolearning.com") +|| dnsDomainIs(host, ".standardpoor.com") + +// image servers +|| dnsDomainIs(host, ".akamaitech.net") +|| dnsDomainIs(host, ".akamai.net") +|| dnsDomainIs(host, ".yimg.com") +|| dnsDomainIs(host, ".imgis.com") +|| dnsDomainIs(host, ".ibsys.com") + +// KidsClick-linked kids search engines +|| dnsDomainIs(host, ".edview.com") +|| dnsDomainIs(host, ".searchopolis.com") +|| dnsDomainIs(host, ".onekey.com") +|| dnsDomainIs(host, ".askjeeves.com") + +// Non-subscription Reference Tools URLs from the RecWebSites DBData table + || dnsDomainIs(host, "www.cnn.com") + || dnsDomainIs(host, "www.emulateme.com") + || dnsDomainIs(host, "terraserver.microsoft.com") + || dnsDomainIs(host, "www.theodora.com") + || dnsDomainIs(host, "www.3datlas.com") + || dnsDomainIs(host, "www.infoplease.com") + || dnsDomainIs(host, "www.switchboard.com") + || dnsDomainIs(host, "www.bartleby.com") + || dnsDomainIs(host, "www.mn-politics.com") + || dnsDomainIs(host, "www.thesaurus.com") + || dnsDomainIs(host, "www.usnews.com") + || dnsDomainIs(host, "www.petersons.com") + || dnsDomainIs(host, "www.collegenet.com") + || dnsDomainIs(host, "www.m-w.com") + || dnsDomainIs(host, "clever.net") + || dnsDomainIs(host, "maps.expedia.com") + || dnsDomainIs(host, "www.CollegeEdge.com") + || dnsDomainIs(host, "www.homeworkcentral.com") + || dnsDomainIs(host, "www.studyweb.com") + || dnsDomainIs(host, "www.mnpro.com") + +// custom URLs for local and other access +|| dnsDomainIs(host, ".dsdukes.com") +|| dnsDomainIs(host, ".spsaints.com") +|| dnsDomainIs(host, ".mnzoo.com") +|| dnsDomainIs(host, ".realaudio.com") +|| dnsDomainIs(host, ".co.hennepin.mn.us") +|| dnsDomainIs(host, ".gov") +|| dnsDomainIs(host, ".org") +|| dnsDomainIs(host, ".edu") +|| dnsDomainIs(host, ".fox29.com") +|| dnsDomainIs(host, ".wcco.com") +|| dnsDomainIs(host, ".kstp.com") +|| dnsDomainIs(host, ".kmsp.com") +|| dnsDomainIs(host, ".kare11.com") +|| dnsDomainIs(host, ".macromedia.com") +|| dnsDomainIs(host, ".shockwave.com") +|| dnsDomainIs(host, ".wwf.com") +|| dnsDomainIs(host, ".wwfsuperstars.com") +|| dnsDomainIs(host, ".summerslam.com") +|| dnsDomainIs(host, ".yahooligans.com") +|| dnsDomainIs(host, ".mhoob.com") +|| dnsDomainIs(host, "www.hmonginternet.com") +|| dnsDomainIs(host, "www.hmongonline.com") +|| dnsDomainIs(host, ".yahoo.com") +|| dnsDomainIs(host, ".pokemon.com") +|| dnsDomainIs(host, ".bet.com") +|| dnsDomainIs(host, ".smallworld.com") +|| dnsDomainIs(host, ".cartoonnetwork.com") +|| dnsDomainIs(host, ".carmensandiego.com") +|| dnsDomainIs(host, ".disney.com") +|| dnsDomainIs(host, ".powerpuffgirls.com") +|| dnsDomainIs(host, ".aol.com") + +// Smithsonian +|| dnsDomainIs(host, "160.111.100.190") + +// Hotmail +|| dnsDomainIs(host, ".passport.com") +|| dnsDomainIs(host, ".hotmail.com") +|| dnsDomainIs(host, "216.33.236.24") +|| dnsDomainIs(host, "216.32.182.251") +|| dnsDomainIs(host, ".hotmail.msn.com") + +// K12 schools +|| dnsDomainIs(host, ".k12.al.us") +|| dnsDomainIs(host, ".k12.ak.us") +|| dnsDomainIs(host, ".k12.ar.us") +|| dnsDomainIs(host, ".k12.az.us") +|| dnsDomainIs(host, ".k12.ca.us") +|| dnsDomainIs(host, ".k12.co.us") +|| dnsDomainIs(host, ".k12.ct.us") +|| dnsDomainIs(host, ".k12.dc.us") +|| dnsDomainIs(host, ".k12.de.us") +|| dnsDomainIs(host, ".k12.fl.us") +|| dnsDomainIs(host, ".k12.ga.us") +|| dnsDomainIs(host, ".k12.hi.us") +|| dnsDomainIs(host, ".k12.id.us") +|| dnsDomainIs(host, ".k12.il.us") +|| dnsDomainIs(host, ".k12.in.us") +|| dnsDomainIs(host, ".k12.ia.us") +|| dnsDomainIs(host, ".k12.ks.us") +|| dnsDomainIs(host, ".k12.ky.us") +|| dnsDomainIs(host, ".k12.la.us") +|| dnsDomainIs(host, ".k12.me.us") +|| dnsDomainIs(host, ".k12.md.us") +|| dnsDomainIs(host, ".k12.ma.us") +|| dnsDomainIs(host, ".k12.mi.us") +|| dnsDomainIs(host, ".k12.mn.us") +|| dnsDomainIs(host, ".k12.ms.us") +|| dnsDomainIs(host, ".k12.mo.us") +|| dnsDomainIs(host, ".k12.mt.us") +|| dnsDomainIs(host, ".k12.ne.us") +|| dnsDomainIs(host, ".k12.nv.us") +|| dnsDomainIs(host, ".k12.nh.us") +|| dnsDomainIs(host, ".k12.nj.us") +|| dnsDomainIs(host, ".k12.nm.us") +|| dnsDomainIs(host, ".k12.ny.us") +|| dnsDomainIs(host, ".k12.nc.us") +|| dnsDomainIs(host, ".k12.nd.us") +|| dnsDomainIs(host, ".k12.oh.us") +|| dnsDomainIs(host, ".k12.ok.us") +|| dnsDomainIs(host, ".k12.or.us") +|| dnsDomainIs(host, ".k12.pa.us") +|| dnsDomainIs(host, ".k12.ri.us") +|| dnsDomainIs(host, ".k12.sc.us") +|| dnsDomainIs(host, ".k12.sd.us") +|| dnsDomainIs(host, ".k12.tn.us") +|| dnsDomainIs(host, ".k12.tx.us") +|| dnsDomainIs(host, ".k12.ut.us") +|| dnsDomainIs(host, ".k12.vt.us") +|| dnsDomainIs(host, ".k12.va.us") +|| dnsDomainIs(host, ".k12.wa.us") +|| dnsDomainIs(host, ".k12.wv.us") +|| dnsDomainIs(host, ".k12.wi.us") +|| dnsDomainIs(host, ".k12.wy.us") + +// U.S. Libraries +|| dnsDomainIs(host, ".lib.al.us") +|| dnsDomainIs(host, ".lib.ak.us") +|| dnsDomainIs(host, ".lib.ar.us") +|| dnsDomainIs(host, ".lib.az.us") +|| dnsDomainIs(host, ".lib.ca.us") +|| dnsDomainIs(host, ".lib.co.us") +|| dnsDomainIs(host, ".lib.ct.us") +|| dnsDomainIs(host, ".lib.dc.us") +|| dnsDomainIs(host, ".lib.de.us") +|| dnsDomainIs(host, ".lib.fl.us") +|| dnsDomainIs(host, ".lib.ga.us") +|| dnsDomainIs(host, ".lib.hi.us") +|| dnsDomainIs(host, ".lib.id.us") +|| dnsDomainIs(host, ".lib.il.us") +|| dnsDomainIs(host, ".lib.in.us") +|| dnsDomainIs(host, ".lib.ia.us") +|| dnsDomainIs(host, ".lib.ks.us") +|| dnsDomainIs(host, ".lib.ky.us") +|| dnsDomainIs(host, ".lib.la.us") +|| dnsDomainIs(host, ".lib.me.us") +|| dnsDomainIs(host, ".lib.md.us") +|| dnsDomainIs(host, ".lib.ma.us") +|| dnsDomainIs(host, ".lib.mi.us") +|| dnsDomainIs(host, ".lib.mn.us") +|| dnsDomainIs(host, ".lib.ms.us") +|| dnsDomainIs(host, ".lib.mo.us") +|| dnsDomainIs(host, ".lib.mt.us") +|| dnsDomainIs(host, ".lib.ne.us") +|| dnsDomainIs(host, ".lib.nv.us") +|| dnsDomainIs(host, ".lib.nh.us") +|| dnsDomainIs(host, ".lib.nj.us") +|| dnsDomainIs(host, ".lib.nm.us") +|| dnsDomainIs(host, ".lib.ny.us") +|| dnsDomainIs(host, ".lib.nc.us") +|| dnsDomainIs(host, ".lib.nd.us") +|| dnsDomainIs(host, ".lib.oh.us") +|| dnsDomainIs(host, ".lib.ok.us") +|| dnsDomainIs(host, ".lib.or.us") +|| dnsDomainIs(host, ".lib.pa.us") +|| dnsDomainIs(host, ".lib.ri.us") +|| dnsDomainIs(host, ".lib.sc.us") +|| dnsDomainIs(host, ".lib.sd.us") +|| dnsDomainIs(host, ".lib.tn.us") +|| dnsDomainIs(host, ".lib.tx.us") +|| dnsDomainIs(host, ".lib.ut.us") +|| dnsDomainIs(host, ".lib.vt.us") +|| dnsDomainIs(host, ".lib.va.us") +|| dnsDomainIs(host, ".lib.wa.us") +|| dnsDomainIs(host, ".lib.wv.us") +|| dnsDomainIs(host, ".lib.wi.us") +|| dnsDomainIs(host, ".lib.wy.us") + +// U.S. Cities +|| dnsDomainIs(host, ".ci.al.us") +|| dnsDomainIs(host, ".ci.ak.us") +|| dnsDomainIs(host, ".ci.ar.us") +|| dnsDomainIs(host, ".ci.az.us") +|| dnsDomainIs(host, ".ci.ca.us") +|| dnsDomainIs(host, ".ci.co.us") +|| dnsDomainIs(host, ".ci.ct.us") +|| dnsDomainIs(host, ".ci.dc.us") +|| dnsDomainIs(host, ".ci.de.us") +|| dnsDomainIs(host, ".ci.fl.us") +|| dnsDomainIs(host, ".ci.ga.us") +|| dnsDomainIs(host, ".ci.hi.us") +|| dnsDomainIs(host, ".ci.id.us") +|| dnsDomainIs(host, ".ci.il.us") +|| dnsDomainIs(host, ".ci.in.us") +|| dnsDomainIs(host, ".ci.ia.us") +|| dnsDomainIs(host, ".ci.ks.us") +|| dnsDomainIs(host, ".ci.ky.us") +|| dnsDomainIs(host, ".ci.la.us") +|| dnsDomainIs(host, ".ci.me.us") +|| dnsDomainIs(host, ".ci.md.us") +|| dnsDomainIs(host, ".ci.ma.us") +|| dnsDomainIs(host, ".ci.mi.us") +|| dnsDomainIs(host, ".ci.mn.us") +|| dnsDomainIs(host, ".ci.ms.us") +|| dnsDomainIs(host, ".ci.mo.us") +|| dnsDomainIs(host, ".ci.mt.us") +|| dnsDomainIs(host, ".ci.ne.us") +|| dnsDomainIs(host, ".ci.nv.us") +|| dnsDomainIs(host, ".ci.nh.us") +|| dnsDomainIs(host, ".ci.nj.us") +|| dnsDomainIs(host, ".ci.nm.us") +|| dnsDomainIs(host, ".ci.ny.us") +|| dnsDomainIs(host, ".ci.nc.us") +|| dnsDomainIs(host, ".ci.nd.us") +|| dnsDomainIs(host, ".ci.oh.us") +|| dnsDomainIs(host, ".ci.ok.us") +|| dnsDomainIs(host, ".ci.or.us") +|| dnsDomainIs(host, ".ci.pa.us") +|| dnsDomainIs(host, ".ci.ri.us") +|| dnsDomainIs(host, ".ci.sc.us") +|| dnsDomainIs(host, ".ci.sd.us") +|| dnsDomainIs(host, ".ci.tn.us") +|| dnsDomainIs(host, ".ci.tx.us") +|| dnsDomainIs(host, ".ci.ut.us") +|| dnsDomainIs(host, ".ci.vt.us") +|| dnsDomainIs(host, ".ci.va.us") +|| dnsDomainIs(host, ".ci.wa.us") +|| dnsDomainIs(host, ".ci.wv.us") +|| dnsDomainIs(host, ".ci.wi.us") +|| dnsDomainIs(host, ".ci.wy.us") + +// U.S. Counties +|| dnsDomainIs(host, ".co.al.us") +|| dnsDomainIs(host, ".co.ak.us") +|| dnsDomainIs(host, ".co.ar.us") +|| dnsDomainIs(host, ".co.az.us") +|| dnsDomainIs(host, ".co.ca.us") +|| dnsDomainIs(host, ".co.co.us") +|| dnsDomainIs(host, ".co.ct.us") +|| dnsDomainIs(host, ".co.dc.us") +|| dnsDomainIs(host, ".co.de.us") +|| dnsDomainIs(host, ".co.fl.us") +|| dnsDomainIs(host, ".co.ga.us") +|| dnsDomainIs(host, ".co.hi.us") +|| dnsDomainIs(host, ".co.id.us") +|| dnsDomainIs(host, ".co.il.us") +|| dnsDomainIs(host, ".co.in.us") +|| dnsDomainIs(host, ".co.ia.us") +|| dnsDomainIs(host, ".co.ks.us") +|| dnsDomainIs(host, ".co.ky.us") +|| dnsDomainIs(host, ".co.la.us") +|| dnsDomainIs(host, ".co.me.us") +|| dnsDomainIs(host, ".co.md.us") +|| dnsDomainIs(host, ".co.ma.us") +|| dnsDomainIs(host, ".co.mi.us") +|| dnsDomainIs(host, ".co.mn.us") +|| dnsDomainIs(host, ".co.ms.us") +|| dnsDomainIs(host, ".co.mo.us") +|| dnsDomainIs(host, ".co.mt.us") +|| dnsDomainIs(host, ".co.ne.us") +|| dnsDomainIs(host, ".co.nv.us") +|| dnsDomainIs(host, ".co.nh.us") +|| dnsDomainIs(host, ".co.nj.us") +|| dnsDomainIs(host, ".co.nm.us") +|| dnsDomainIs(host, ".co.ny.us") +|| dnsDomainIs(host, ".co.nc.us") +|| dnsDomainIs(host, ".co.nd.us") +|| dnsDomainIs(host, ".co.oh.us") +|| dnsDomainIs(host, ".co.ok.us") +|| dnsDomainIs(host, ".co.or.us") +|| dnsDomainIs(host, ".co.pa.us") +|| dnsDomainIs(host, ".co.ri.us") +|| dnsDomainIs(host, ".co.sc.us") +|| dnsDomainIs(host, ".co.sd.us") +|| dnsDomainIs(host, ".co.tn.us") +|| dnsDomainIs(host, ".co.tx.us") +|| dnsDomainIs(host, ".co.ut.us") +|| dnsDomainIs(host, ".co.vt.us") +|| dnsDomainIs(host, ".co.va.us") +|| dnsDomainIs(host, ".co.wa.us") +|| dnsDomainIs(host, ".co.wv.us") +|| dnsDomainIs(host, ".co.wi.us") +|| dnsDomainIs(host, ".co.wy.us") + +// U.S. States +|| dnsDomainIs(host, ".state.al.us") +|| dnsDomainIs(host, ".state.ak.us") +|| dnsDomainIs(host, ".state.ar.us") +|| dnsDomainIs(host, ".state.az.us") +|| dnsDomainIs(host, ".state.ca.us") +|| dnsDomainIs(host, ".state.co.us") +|| dnsDomainIs(host, ".state.ct.us") +|| dnsDomainIs(host, ".state.dc.us") +|| dnsDomainIs(host, ".state.de.us") +|| dnsDomainIs(host, ".state.fl.us") +|| dnsDomainIs(host, ".state.ga.us") +|| dnsDomainIs(host, ".state.hi.us") +|| dnsDomainIs(host, ".state.id.us") +|| dnsDomainIs(host, ".state.il.us") +|| dnsDomainIs(host, ".state.in.us") +|| dnsDomainIs(host, ".state.ia.us") +|| dnsDomainIs(host, ".state.ks.us") +|| dnsDomainIs(host, ".state.ky.us") +|| dnsDomainIs(host, ".state.la.us") +|| dnsDomainIs(host, ".state.me.us") +|| dnsDomainIs(host, ".state.md.us") +|| dnsDomainIs(host, ".state.ma.us") +|| dnsDomainIs(host, ".state.mi.us") +|| dnsDomainIs(host, ".state.mn.us") +|| dnsDomainIs(host, ".state.ms.us") +|| dnsDomainIs(host, ".state.mo.us") +|| dnsDomainIs(host, ".state.mt.us") +|| dnsDomainIs(host, ".state.ne.us") +|| dnsDomainIs(host, ".state.nv.us") +|| dnsDomainIs(host, ".state.nh.us") +|| dnsDomainIs(host, ".state.nj.us") +|| dnsDomainIs(host, ".state.nm.us") +|| dnsDomainIs(host, ".state.ny.us") +|| dnsDomainIs(host, ".state.nc.us") +|| dnsDomainIs(host, ".state.nd.us") +|| dnsDomainIs(host, ".state.oh.us") +|| dnsDomainIs(host, ".state.ok.us") +|| dnsDomainIs(host, ".state.or.us") +|| dnsDomainIs(host, ".state.pa.us") +|| dnsDomainIs(host, ".state.ri.us") +|| dnsDomainIs(host, ".state.sc.us") +|| dnsDomainIs(host, ".state.sd.us") +|| dnsDomainIs(host, ".state.tn.us") +|| dnsDomainIs(host, ".state.tx.us") +|| dnsDomainIs(host, ".state.ut.us") +|| dnsDomainIs(host, ".state.vt.us") +|| dnsDomainIs(host, ".state.va.us") +|| dnsDomainIs(host, ".state.wa.us") +|| dnsDomainIs(host, ".state.wv.us") +|| dnsDomainIs(host, ".state.wi.us") +|| dnsDomainIs(host, ".state.wy.us") + +// KidsClick URLs + +|| dnsDomainIs(host, "12.16.163.163") +|| dnsDomainIs(host, "128.59.173.136") +|| dnsDomainIs(host, "165.112.78.61") +|| dnsDomainIs(host, "216.55.23.140") +|| dnsDomainIs(host, "63.111.53.150") +|| dnsDomainIs(host, "64.94.206.8") + +|| dnsDomainIs(host, "abc.go.com") +|| dnsDomainIs(host, "acmepet.petsmart.com") +|| dnsDomainIs(host, "adver-net.com") +|| dnsDomainIs(host, "aint-it-cool-news.com") +|| dnsDomainIs(host, "akidsheart.com") +|| dnsDomainIs(host, "alabanza.com") +|| dnsDomainIs(host, "allerdays.com") +|| dnsDomainIs(host, "allgame.com") +|| dnsDomainIs(host, "allowancenet.com") +|| dnsDomainIs(host, "amish-heartland.com") +|| dnsDomainIs(host, "ancienthistory.about.com") +|| dnsDomainIs(host, "animals.about.com") +|| dnsDomainIs(host, "antenna.nl") +|| dnsDomainIs(host, "arcweb.sos.state.or.us") +|| dnsDomainIs(host, "artistmummer.homestead.com") +|| dnsDomainIs(host, "artists.vh1.com") +|| dnsDomainIs(host, "arts.lausd.k12.ca.us") +|| dnsDomainIs(host, "asiatravel.com") +|| dnsDomainIs(host, "asterius.com") +|| dnsDomainIs(host, "atlas.gc.ca") +|| dnsDomainIs(host, "atschool.eduweb.co.uk") +|| dnsDomainIs(host, "ayya.pd.net") +|| dnsDomainIs(host, "babelfish.altavista.com") +|| dnsDomainIs(host, "babylon5.warnerbros.com") +|| dnsDomainIs(host, "banzai.neosoft.com") +|| dnsDomainIs(host, "barneyonline.com") +|| dnsDomainIs(host, "baroque-music.com") +|| dnsDomainIs(host, "barsoom.msss.com") +|| dnsDomainIs(host, "baseball-almanac.com") +|| dnsDomainIs(host, "bcadventure.com") +|| dnsDomainIs(host, "beadiecritters.hosting4less.com") +|| dnsDomainIs(host, "beverlyscrafts.com") +|| dnsDomainIs(host, "biology.about.com") +|| dnsDomainIs(host, "birding.about.com") +|| dnsDomainIs(host, "boatsafe.com") +|| dnsDomainIs(host, "bombpop.com") +|| dnsDomainIs(host, "boulter.com") +|| dnsDomainIs(host, "bright-ideas-software.com") +|| dnsDomainIs(host, "buckman.pps.k12.or.us") +|| dnsDomainIs(host, "buffalobills.com") +|| dnsDomainIs(host, "bvsd.k12.co.us") +|| dnsDomainIs(host, "cagle.slate.msn.com") +|| dnsDomainIs(host, "calc.entisoft.com") +|| dnsDomainIs(host, "canada.gc.ca") +|| dnsDomainIs(host, "candleandsoap.about.com") +|| dnsDomainIs(host, "caselaw.lp.findlaw.com") +|| dnsDomainIs(host, "catalog.com") +|| dnsDomainIs(host, "catalog.socialstudies.com") +|| dnsDomainIs(host, "cavern.com") +|| dnsDomainIs(host, "cbs.sportsline.com") +|| dnsDomainIs(host, "cc.matsuyama-u.ac.jp") +|| dnsDomainIs(host, "celt.net") +|| dnsDomainIs(host, "cgfa.kelloggcreek.com") +|| dnsDomainIs(host, "channel4000.com") +|| dnsDomainIs(host, "chess.delorie.com") +|| dnsDomainIs(host, "chess.liveonthenet.com") +|| dnsDomainIs(host, "childfun.com") +|| dnsDomainIs(host, "christmas.com") +|| dnsDomainIs(host, "citystar.com") +|| dnsDomainIs(host, "claim.goldrush.com") +|| dnsDomainIs(host, "clairerosemaryjane.com") +|| dnsDomainIs(host, "clevermedia.com") +|| dnsDomainIs(host, "cobblestonepub.com") +|| dnsDomainIs(host, "codebrkr.infopages.net") +|| dnsDomainIs(host, "colitz.com") +|| dnsDomainIs(host, "collections.ic.gc.ca") +|| dnsDomainIs(host, "coloquio.com") +|| dnsDomainIs(host, "come.to") +|| dnsDomainIs(host, "coombs.anu.edu.au") +|| dnsDomainIs(host, "crafterscommunity.com") +|| dnsDomainIs(host, "craftsforkids.about.com") +|| dnsDomainIs(host, "creativity.net") +|| dnsDomainIs(host, "cslewis.drzeus.net") +|| dnsDomainIs(host, "cust.idl.com.au") +|| dnsDomainIs(host, "cvs.anu.edu.au") +|| dnsDomainIs(host, "cybersleuth-kids.com") +|| dnsDomainIs(host, "cybertown.com") +|| dnsDomainIs(host, "darkfish.com") +|| dnsDomainIs(host, "datadragon.com") +|| dnsDomainIs(host, "davesite.com") +|| dnsDomainIs(host, "dbertens.www.cistron.nl") +|| dnsDomainIs(host, "detnews.com") +|| dnsDomainIs(host, "dhr.dos.state.fl.us") +|| dnsDomainIs(host, "dialspace.dial.pipex.com") +|| dnsDomainIs(host, "dictionaries.travlang.com") +|| dnsDomainIs(host, "disney.go.com") +|| dnsDomainIs(host, "disneyland.disney.go.com") +|| dnsDomainIs(host, "district.gresham.k12.or.us") +|| dnsDomainIs(host, "dmarie.com") +|| dnsDomainIs(host, "dreamwater.com") +|| dnsDomainIs(host, "duke.fuse.net") +|| dnsDomainIs(host, "earlyamerica.com") +|| dnsDomainIs(host, "earthsky.com") +|| dnsDomainIs(host, "easyweb.easynet.co.uk") +|| dnsDomainIs(host, "ecards1.bansheeweb.com") +|| dnsDomainIs(host, "edugreen.teri.res.in") +|| dnsDomainIs(host, "edwardlear.tripod.com") +|| dnsDomainIs(host, "eelink.net") +|| dnsDomainIs(host, "elizabethsings.com") +|| dnsDomainIs(host, "enature.com") +|| dnsDomainIs(host, "encarta.msn.com") +|| dnsDomainIs(host, "endangeredspecie.com") +|| dnsDomainIs(host, "enterprise.america.com") +|| dnsDomainIs(host, "ericae.net") +|| dnsDomainIs(host, "esl.about.com") +|| dnsDomainIs(host, "eveander.com") +|| dnsDomainIs(host, "exn.ca") +|| dnsDomainIs(host, "fallscam.niagara.com") +|| dnsDomainIs(host, "family.go.com") +|| dnsDomainIs(host, "family2.go.com") +|| dnsDomainIs(host, "familyeducation.com") +|| dnsDomainIs(host, "finditquick.com") +|| dnsDomainIs(host, "fln-bma.yazigi.com.br") +|| dnsDomainIs(host, "fln-con.yazigi.com.br") +|| dnsDomainIs(host, "food.epicurious.com") +|| dnsDomainIs(host, "forums.sympatico.ca") +|| dnsDomainIs(host, "fotw.vexillum.com") +|| dnsDomainIs(host, "fox.nstn.ca") +|| dnsDomainIs(host, "framingham.com") +|| dnsDomainIs(host, "freevote.com") +|| dnsDomainIs(host, "freeweb.pdq.net") +|| dnsDomainIs(host, "games.yahoo.com") +|| dnsDomainIs(host, "gardening.sierrahome.com") +|| dnsDomainIs(host, "gardenofpraise.com") +|| dnsDomainIs(host, "gcclearn.gcc.cc.va.us") +|| dnsDomainIs(host, "genealogytoday.com") +|| dnsDomainIs(host, "genesis.ne.mediaone.net") +|| dnsDomainIs(host, "geniefind.com") +|| dnsDomainIs(host, "geography.about.com") +|| dnsDomainIs(host, "gf.state.wy.us") +|| dnsDomainIs(host, "gi.grolier.com") +|| dnsDomainIs(host, "golf.com") +|| dnsDomainIs(host, "greatseal.com") +|| dnsDomainIs(host, "guardians.net") +|| dnsDomainIs(host, "hamlet.hypermart.net") +|| dnsDomainIs(host, "happypuppy.com") +|| dnsDomainIs(host, "harcourt.fsc.follett.com") +|| dnsDomainIs(host, "haringkids.com") +|| dnsDomainIs(host, "harrietmaysavitz.com") +|| dnsDomainIs(host, "harrypotter.warnerbros.com") +|| dnsDomainIs(host, "hca.gilead.org.il") +|| dnsDomainIs(host, "header.future.easyspace.com") +|| dnsDomainIs(host, "historymedren.about.com") +|| dnsDomainIs(host, "home.att.net") +|| dnsDomainIs(host, "home.austin.rr.com") +|| dnsDomainIs(host, "home.capu.net") +|| dnsDomainIs(host, "home.cfl.rr.com") +|| dnsDomainIs(host, "home.clara.net") +|| dnsDomainIs(host, "home.clear.net.nz") +|| dnsDomainIs(host, "home.earthlink.net") +|| dnsDomainIs(host, "home.eznet.net") +|| dnsDomainIs(host, "home.flash.net") +|| dnsDomainIs(host, "home.hiwaay.net") +|| dnsDomainIs(host, "home.hkstar.com") +|| dnsDomainIs(host, "home.ici.net") +|| dnsDomainIs(host, "home.inreach.com") +|| dnsDomainIs(host, "home.interlynx.net") +|| dnsDomainIs(host, "home.istar.ca") +|| dnsDomainIs(host, "home.mira.net") +|| dnsDomainIs(host, "home.nycap.rr.com") +|| dnsDomainIs(host, "home.online.no") +|| dnsDomainIs(host, "home.pb.net") +|| dnsDomainIs(host, "home2.pacific.net.sg") +|| dnsDomainIs(host, "homearts.com") +|| dnsDomainIs(host, "homepage.mac.com") +|| dnsDomainIs(host, "hometown.aol.com") +|| dnsDomainIs(host, "homiliesbyemail.com") +|| dnsDomainIs(host, "hotei.fix.co.jp") +|| dnsDomainIs(host, "hotwired.lycos.com") +|| dnsDomainIs(host, "hp.vector.co.jp") +|| dnsDomainIs(host, "hum.amu.edu.pl") +|| dnsDomainIs(host, "i-cias.com") +|| dnsDomainIs(host, "icatapults.freeservers.com") +|| dnsDomainIs(host, "ind.cioe.com") +|| dnsDomainIs(host, "info.ex.ac.uk") +|| dnsDomainIs(host, "infocan.gc.ca") +|| dnsDomainIs(host, "infoservice.gc.ca") +|| dnsDomainIs(host, "interoz.com") +|| dnsDomainIs(host, "ireland.iol.ie") +|| dnsDomainIs(host, "is.dal.ca") +|| dnsDomainIs(host, "itss.raytheon.com") +|| dnsDomainIs(host, "iul.com") +|| dnsDomainIs(host, "jameswhitcombriley.com") +|| dnsDomainIs(host, "jellieszone.com") +|| dnsDomainIs(host, "jordan.sportsline.com") +|| dnsDomainIs(host, "judyanddavid.com") +|| dnsDomainIs(host, "jurai.murdoch.edu.au") +|| dnsDomainIs(host, "just.about.com") +|| dnsDomainIs(host, "kayleigh.tierranet.com") +|| dnsDomainIs(host, "kcwingwalker.tripod.com") +|| dnsDomainIs(host, "kidexchange.about.com") +|| dnsDomainIs(host, "kids-world.colgatepalmolive.com") +|| dnsDomainIs(host, "kids.mysterynet.com") +|| dnsDomainIs(host, "kids.ot.com") +|| dnsDomainIs(host, "kidsartscrafts.about.com") +|| dnsDomainIs(host, "kidsastronomy.about.com") +|| dnsDomainIs(host, "kidscience.about.com") +|| dnsDomainIs(host, "kidscience.miningco.com") +|| dnsDomainIs(host, "kidscollecting.about.com") +|| dnsDomainIs(host, "kidsfun.co.uk") +|| dnsDomainIs(host, "kidsinternet.about.com") +|| dnsDomainIs(host, "kidslangarts.about.com") +|| dnsDomainIs(host, "kidspenpals.about.com") +|| dnsDomainIs(host, "kitecast.com") +|| dnsDomainIs(host, "knight.city.ba.k12.md.us") +|| dnsDomainIs(host, "kodak.com") +|| dnsDomainIs(host, "kwanzaa4kids.homestead.com") +|| dnsDomainIs(host, "lagos.africaonline.com") +|| dnsDomainIs(host, "lancearmstrong.com") +|| dnsDomainIs(host, "landru.i-link-2.net") +|| dnsDomainIs(host, "lang.nagoya-u.ac.jp") +|| dnsDomainIs(host, "lascala.milano.it") +|| dnsDomainIs(host, "latinoculture.about.com") +|| dnsDomainIs(host, "litcal.yasuda-u.ac.jp") +|| dnsDomainIs(host, "littlebit.com") +|| dnsDomainIs(host, "live.edventures.com") +|| dnsDomainIs(host, "look.net") +|| dnsDomainIs(host, "lycoskids.infoplease.com") +|| dnsDomainIs(host, "lynx.uio.no") +|| dnsDomainIs(host, "macdict.dict.mq.edu.au") +|| dnsDomainIs(host, "maori.culture.co.nz") +|| dnsDomainIs(host, "marktwain.about.com") +|| dnsDomainIs(host, "marktwain.miningco.com") +|| dnsDomainIs(host, "mars2030.net") +|| dnsDomainIs(host, "martin.parasitology.mcgill.ca") +|| dnsDomainIs(host, "martinlutherking.8m.com") +|| dnsDomainIs(host, "mastercollector.com") +|| dnsDomainIs(host, "mathcentral.uregina.ca") +|| dnsDomainIs(host, "members.aol.com") +|| dnsDomainIs(host, "members.carol.net") +|| dnsDomainIs(host, "members.cland.net") +|| dnsDomainIs(host, "members.cruzio.com") +|| dnsDomainIs(host, "members.easyspace.com") +|| dnsDomainIs(host, "members.eisa.net.au") +|| dnsDomainIs(host, "members.home.net") +|| dnsDomainIs(host, "members.iinet.net.au") +|| dnsDomainIs(host, "members.nbci.com") +|| dnsDomainIs(host, "members.ozemail.com.au") +|| dnsDomainIs(host, "members.surfsouth.com") +|| dnsDomainIs(host, "members.theglobe.com") +|| dnsDomainIs(host, "members.tripod.com") +|| dnsDomainIs(host, "mexplaza.udg.mx") +|| dnsDomainIs(host, "mgfx.com") +|| dnsDomainIs(host, "microimg.com") +|| dnsDomainIs(host, "midusa.net") +|| dnsDomainIs(host, "mildan.com") +|| dnsDomainIs(host, "millennianet.com") +|| dnsDomainIs(host, "mindbreakers.e-fun.nu") +|| dnsDomainIs(host, "missjanet.xs4all.nl") +|| dnsDomainIs(host, "mistral.culture.fr") +|| dnsDomainIs(host, "mobileation.com") +|| dnsDomainIs(host, "mrshowbiz.go.com") +|| dnsDomainIs(host, "ms.simplenet.com") +|| dnsDomainIs(host, "museum.gov.ns.ca") +|| dnsDomainIs(host, "music.excite.com") +|| dnsDomainIs(host, "musicfinder.yahoo.com") +|| dnsDomainIs(host, "my.freeway.net") +|| dnsDomainIs(host, "mytrains.com") +|| dnsDomainIs(host, "nativeauthors.com") +|| dnsDomainIs(host, "nba.com") +|| dnsDomainIs(host, "nch.ari.net") +|| dnsDomainIs(host, "neonpeach.tripod.com") +|| dnsDomainIs(host, "net.indra.com") +|| dnsDomainIs(host, "ngeorgia.com") +|| dnsDomainIs(host, "ngp.ngpc.state.ne.us") +|| dnsDomainIs(host, "nhd.heinle.com") +|| dnsDomainIs(host, "nick.com") +|| dnsDomainIs(host, "normandy.eb.com") +|| dnsDomainIs(host, "northshore.shore.net") +|| dnsDomainIs(host, "now2000.com") +|| dnsDomainIs(host, "npc.nunavut.ca") +|| dnsDomainIs(host, "ns2.carib-link.net") +|| dnsDomainIs(host, "ntl.sympatico.ca") +|| dnsDomainIs(host, "oceanographer.navy.mil") +|| dnsDomainIs(host, "oddens.geog.uu.nl") +|| dnsDomainIs(host, "officialcitysites.com") +|| dnsDomainIs(host, "oneida-nation.net") +|| dnsDomainIs(host, "onlinegeorgia.com") +|| dnsDomainIs(host, "originator_2.tripod.com") +|| dnsDomainIs(host, "ortech-engr.com") +|| dnsDomainIs(host, "osage.voorhees.k12.nj.us") +|| dnsDomainIs(host, "osiris.sund.ac.uk") +|| dnsDomainIs(host, "ourworld.compuserve.com") +|| dnsDomainIs(host, "outdoorphoto.com") +|| dnsDomainIs(host, "pages.map.com") +|| dnsDomainIs(host, "pages.prodigy.com") +|| dnsDomainIs(host, "pages.prodigy.net") +|| dnsDomainIs(host, "pages.tca.net") +|| dnsDomainIs(host, "parcsafari.qc.ca") +|| dnsDomainIs(host, "parenthoodweb.com") +|| dnsDomainIs(host, "pathfinder.com") +|| dnsDomainIs(host, "people.clarityconnect.com") +|| dnsDomainIs(host, "people.enternet.com.au") +|| dnsDomainIs(host, "people.ne.mediaone.net") +|| dnsDomainIs(host, "phonics.jazzles.com") +|| dnsDomainIs(host, "pibburns.com") +|| dnsDomainIs(host, "pilgrims.net") +|| dnsDomainIs(host, "pinenet.com") +|| dnsDomainIs(host, "place.scholastic.com") +|| dnsDomainIs(host, "playground.kodak.com") +|| dnsDomainIs(host, "politicalgraveyard.com") +|| dnsDomainIs(host, "polk.ga.net") +|| dnsDomainIs(host, "pompstory.home.mindspring.com") +|| dnsDomainIs(host, "popularmechanics.com") +|| dnsDomainIs(host, "projects.edtech.sandi.net") +|| dnsDomainIs(host, "psyche.usno.navy.mil") +|| dnsDomainIs(host, "pubweb.parc.xerox.com") +|| dnsDomainIs(host, "puzzlemaker.school.discovery.com") +|| dnsDomainIs(host, "quest.classroom.com") +|| dnsDomainIs(host, "quilting.about.com") +|| dnsDomainIs(host, "rabbitmoon.home.mindspring.com") +|| dnsDomainIs(host, "radio.cbc.ca") +|| dnsDomainIs(host, "rats2u.com") +|| dnsDomainIs(host, "rbcm1.rbcm.gov.bc.ca") +|| dnsDomainIs(host, "readplay.com") +|| dnsDomainIs(host, "recipes4children.homestead.com") +|| dnsDomainIs(host, "redsox.com") +|| dnsDomainIs(host, "renaissance.district96.k12.il.us") +|| dnsDomainIs(host, "rhyme.lycos.com") +|| dnsDomainIs(host, "rhythmweb.com") +|| dnsDomainIs(host, "riverresource.com") +|| dnsDomainIs(host, "rockhoundingar.com") +|| dnsDomainIs(host, "rockies.mlb.com") +|| dnsDomainIs(host, "rosecity.net") +|| dnsDomainIs(host, "rr-vs.informatik.uni-ulm.de") +|| dnsDomainIs(host, "rubens.anu.edu.au") +|| dnsDomainIs(host, "rummelplatz.uni-mannheim.de") +|| dnsDomainIs(host, "sandbox.xerox.com") +|| dnsDomainIs(host, "sarah.fredart.com") +|| dnsDomainIs(host, "schmidel.com") +|| dnsDomainIs(host, "scholastic.com") +|| dnsDomainIs(host, "school.discovery.com") +|| dnsDomainIs(host, "schoolcentral.com") +|| dnsDomainIs(host, "seattletimes.nwsource.com") +|| dnsDomainIs(host, "sericulum.com") +|| dnsDomainIs(host, "sf.airforce.com") +|| dnsDomainIs(host, "shop.usps.com") +|| dnsDomainIs(host, "showcase.netins.net") +|| dnsDomainIs(host, "sikids.com") +|| dnsDomainIs(host, "sites.huji.ac.il") +|| dnsDomainIs(host, "sjliving.com") +|| dnsDomainIs(host, "skullduggery.com") +|| dnsDomainIs(host, "skyways.lib.ks.us") +|| dnsDomainIs(host, "snowdaymovie.nick.com") +|| dnsDomainIs(host, "sosa21.hypermart.net") +|| dnsDomainIs(host, "soundamerica.com") +|| dnsDomainIs(host, "spaceboy.nasda.go.jp") +|| dnsDomainIs(host, "sports.nfl.com") +|| dnsDomainIs(host, "sportsillustrated.cnn.com") +|| dnsDomainIs(host, "starwars.hasbro.com") +|| dnsDomainIs(host, "statelibrary.dcr.state.nc.us") +|| dnsDomainIs(host, "streetplay.com") +|| dnsDomainIs(host, "sts.gsc.nrcan.gc.ca") +|| dnsDomainIs(host, "sunniebunniezz.com") +|| dnsDomainIs(host, "sunsite.nus.edu.sg") +|| dnsDomainIs(host, "sunsite.sut.ac.jp") +|| dnsDomainIs(host, "superm.bart.nl") +|| dnsDomainIs(host, "surf.to") +|| dnsDomainIs(host, "svinet2.fs.fed.us") +|| dnsDomainIs(host, "swiminfo.com") +|| dnsDomainIs(host, "tabletennis.about.com") +|| dnsDomainIs(host, "teacher.scholastic.com") +|| dnsDomainIs(host, "theforce.net") +|| dnsDomainIs(host, "thejessicas.homestead.com") +|| dnsDomainIs(host, "themes.editthispage.com") +|| dnsDomainIs(host, "theory.uwinnipeg.ca") +|| dnsDomainIs(host, "theshadowlands.net") +|| dnsDomainIs(host, "thinks.com") +|| dnsDomainIs(host, "thryomanes.tripod.com") +|| dnsDomainIs(host, "time_zone.tripod.com") +|| dnsDomainIs(host, "titania.cobuild.collins.co.uk") +|| dnsDomainIs(host, "torre.duomo.pisa.it") +|| dnsDomainIs(host, "touregypt.net") +|| dnsDomainIs(host, "toycollecting.about.com") +|| dnsDomainIs(host, "trace.ntu.ac.uk") +|| dnsDomainIs(host, "travelwithkids.about.com") +|| dnsDomainIs(host, "tukids.tucows.com") +|| dnsDomainIs(host, "tv.yahoo.com") +|| dnsDomainIs(host, "tycho.usno.navy.mil") +|| dnsDomainIs(host, "ubl.artistdirect.com") +|| dnsDomainIs(host, "uk-pages.net") +|| dnsDomainIs(host, "ukraine.uazone.net") +|| dnsDomainIs(host, "unmuseum.mus.pa.us") +|| dnsDomainIs(host, "us.imdb.com") +|| dnsDomainIs(host, "userpage.chemie.fu-berlin.de") +|| dnsDomainIs(host, "userpage.fu-berlin.de") +|| dnsDomainIs(host, "userpages.aug.com") +|| dnsDomainIs(host, "users.aol.com") +|| dnsDomainIs(host, "users.bigpond.net.au") +|| dnsDomainIs(host, "users.breathemail.net") +|| dnsDomainIs(host, "users.erols.com") +|| dnsDomainIs(host, "users.imag.net") +|| dnsDomainIs(host, "users.inetw.net") +|| dnsDomainIs(host, "users.massed.net") +|| dnsDomainIs(host, "users.skynet.be") +|| dnsDomainIs(host, "users.uniserve.com") +|| dnsDomainIs(host, "venus.spaceports.com") +|| dnsDomainIs(host, "vgstrategies.about.com") +|| dnsDomainIs(host, "victorian.fortunecity.com") +|| dnsDomainIs(host, "vilenski.com") +|| dnsDomainIs(host, "village.infoweb.ne.jp") +|| dnsDomainIs(host, "virtual.finland.fi") +|| dnsDomainIs(host, "vrml.fornax.hu") +|| dnsDomainIs(host, "vvv.com") +|| dnsDomainIs(host, "w1.xrefer.com") +|| dnsDomainIs(host, "w3.one.net") +|| dnsDomainIs(host, "w3.rz-berlin.mpg.de") +|| dnsDomainIs(host, "w3.trib.com") +|| dnsDomainIs(host, "wallofsound.go.com") +|| dnsDomainIs(host, "web.aimnet.com") +|| dnsDomainIs(host, "web.ccsd.k12.wy.us") +|| dnsDomainIs(host, "web.cs.ualberta.ca") +|| dnsDomainIs(host, "web.idirect.com") +|| dnsDomainIs(host, "web.kyoto-inet.or.jp") +|| dnsDomainIs(host, "web.macam98.ac.il") +|| dnsDomainIs(host, "web.massvacation.com") +|| dnsDomainIs(host, "web.one.net.au") +|| dnsDomainIs(host, "web.qx.net") +|| dnsDomainIs(host, "web.uvic.ca") +|| dnsDomainIs(host, "web2.airmail.net") +|| dnsDomainIs(host, "webcoast.com") +|| dnsDomainIs(host, "webgames.kalisto.com") +|| dnsDomainIs(host, "webhome.idirect.com") +|| dnsDomainIs(host, "webpages.homestead.com") +|| dnsDomainIs(host, "webrum.uni-mannheim.de") +|| dnsDomainIs(host, "webusers.anet-stl.com") +|| dnsDomainIs(host, "welcome.to") +|| dnsDomainIs(host, "wgntv.com") +|| dnsDomainIs(host, "whales.magna.com.au") +|| dnsDomainIs(host, "wildheart.com") +|| dnsDomainIs(host, "wilstar.net") +|| dnsDomainIs(host, "winter-wonderland.com") +|| dnsDomainIs(host, "women.com") +|| dnsDomainIs(host, "woodrow.mpls.frb.fed.us") +|| dnsDomainIs(host, "wordzap.com") +|| dnsDomainIs(host, "worldkids.net") +|| dnsDomainIs(host, "worldwideguide.net") +|| dnsDomainIs(host, "ww3.bay.k12.fl.us") +|| dnsDomainIs(host, "ww3.sportsline.com") +|| dnsDomainIs(host, "www-groups.dcs.st-and.ac.uk") +|| dnsDomainIs(host, "www-public.rz.uni-duesseldorf.de") +|| dnsDomainIs(host, "www.1stkids.com") +|| dnsDomainIs(host, "www.2020tech.com") +|| dnsDomainIs(host, "www.21stcenturytoys.com") +|| dnsDomainIs(host, "www.4adventure.com") +|| dnsDomainIs(host, "www.50states.com") +|| dnsDomainIs(host, "www.800padutch.com") +|| dnsDomainIs(host, "www.88.com") +|| dnsDomainIs(host, "www.a-better.com") +|| dnsDomainIs(host, "www.aaa.com.au") +|| dnsDomainIs(host, "www.aacca.com") +|| dnsDomainIs(host, "www.aalbc.com") +|| dnsDomainIs(host, "www.aardman.com") +|| dnsDomainIs(host, "www.aardvarkelectric.com") +|| dnsDomainIs(host, "www.aawc.com") +|| dnsDomainIs(host, "www.ababmx.com") +|| dnsDomainIs(host, "www.abbeville.com") +|| dnsDomainIs(host, "www.abc.net.au") +|| dnsDomainIs(host, "www.abcb.com") +|| dnsDomainIs(host, "www.abctooncenter.com") +|| dnsDomainIs(host, "www.about.ch") +|| dnsDomainIs(host, "www.accessart.org.uk") +|| dnsDomainIs(host, "www.accu.or.jp") +|| dnsDomainIs(host, "www.accuweather.com") +|| dnsDomainIs(host, "www.achuka.co.uk") +|| dnsDomainIs(host, "www.acmecity.com") +|| dnsDomainIs(host, "www.acorn-group.com") +|| dnsDomainIs(host, "www.acs.ucalgary.ca") +|| dnsDomainIs(host, "www.actden.com") +|| dnsDomainIs(host, "www.actionplanet.com") +|| dnsDomainIs(host, "www.activityvillage.co.uk") +|| dnsDomainIs(host, "www.actwin.com") +|| dnsDomainIs(host, "www.adequate.com") +|| dnsDomainIs(host, "www.adidas.com") +|| dnsDomainIs(host, "www.advent-calendars.com") +|| dnsDomainIs(host, "www.aegis.com") +|| dnsDomainIs(host, "www.af.mil") +|| dnsDomainIs(host, "www.africaindex.africainfo.no") +|| dnsDomainIs(host, "www.africam.com") +|| dnsDomainIs(host, "www.africancrafts.com") +|| dnsDomainIs(host, "www.aggressive.com") +|| dnsDomainIs(host, "www.aghines.com") +|| dnsDomainIs(host, "www.agirlsworld.com") +|| dnsDomainIs(host, "www.agora.stm.it") +|| dnsDomainIs(host, "www.agriculture.com") +|| dnsDomainIs(host, "www.aikidofaq.com") +|| dnsDomainIs(host, "www.ajkids.com") +|| dnsDomainIs(host, "www.akfkoala.gil.com.au") +|| dnsDomainIs(host, "www.akhlah.com") +|| dnsDomainIs(host, "www.alabamainfo.com") +|| dnsDomainIs(host, "www.aland.fi") +|| dnsDomainIs(host, "www.albion.com") +|| dnsDomainIs(host, "www.alcoholismhelp.com") +|| dnsDomainIs(host, "www.alcottweb.com") +|| dnsDomainIs(host, "www.alfanet.it") +|| dnsDomainIs(host, "www.alfy.com") +|| dnsDomainIs(host, "www.algebra-online.com") +|| dnsDomainIs(host, "www.alienexplorer.com") +|| dnsDomainIs(host, "www.aliensatschool.com") +|| dnsDomainIs(host, "www.all-links.com") +|| dnsDomainIs(host, "www.alldetroit.com") +|| dnsDomainIs(host, "www.allexperts.com") +|| dnsDomainIs(host, "www.allmixedup.com") +|| dnsDomainIs(host, "www.allmusic.com") +|| dnsDomainIs(host, "www.almanac.com") +|| dnsDomainIs(host, "www.almaz.com") +|| dnsDomainIs(host, "www.almondseed.com") +|| dnsDomainIs(host, "www.aloha.com") +|| dnsDomainIs(host, "www.aloha.net") +|| dnsDomainIs(host, "www.altonweb.com") +|| dnsDomainIs(host, "www.alyeska-pipe.com") +|| dnsDomainIs(host, "www.am-wood.com") +|| dnsDomainIs(host, "www.amazingadventure.com") +|| dnsDomainIs(host, "www.amazon.com") +|| dnsDomainIs(host, "www.americancheerleader.com") +|| dnsDomainIs(host, "www.americancowboy.com") +|| dnsDomainIs(host, "www.americangirl.com") +|| dnsDomainIs(host, "www.americanparknetwork.com") +|| dnsDomainIs(host, "www.americansouthwest.net") +|| dnsDomainIs(host, "www.americanwest.com") +|| dnsDomainIs(host, "www.ameritech.net") +|| dnsDomainIs(host, "www.amtexpo.com") +|| dnsDomainIs(host, "www.anbg.gov.au") +|| dnsDomainIs(host, "www.anc.org.za") +|| dnsDomainIs(host, "www.ancientegypt.co.uk") +|| dnsDomainIs(host, "www.angelfire.com") +|| dnsDomainIs(host, "www.angelsbaseball.com") +|| dnsDomainIs(host, "www.anholt.co.uk") +|| dnsDomainIs(host, "www.animabets.com") +|| dnsDomainIs(host, "www.animalnetwork.com") +|| dnsDomainIs(host, "www.animalpicturesarchive.com") +|| dnsDomainIs(host, "www.anime-genesis.com") +|| dnsDomainIs(host, "www.annefrank.com") +|| dnsDomainIs(host, "www.annefrank.nl") +|| dnsDomainIs(host, "www.annie75.com") +|| dnsDomainIs(host, "www.antbee.com") +|| dnsDomainIs(host, "www.antiquetools.com") +|| dnsDomainIs(host, "www.antiquetoy.com") +|| dnsDomainIs(host, "www.anzsbeg.org.au") +|| dnsDomainIs(host, "www.aol.com") +|| dnsDomainIs(host, "www.aone.com") +|| dnsDomainIs(host, "www.aphids.com") +|| dnsDomainIs(host, "www.apl.com") +|| dnsDomainIs(host, "www.aplusmath.com") +|| dnsDomainIs(host, "www.applebookshop.co.uk") +|| dnsDomainIs(host, "www.appropriatesoftware.com") +|| dnsDomainIs(host, "www.appukids.com") +|| dnsDomainIs(host, "www.april-joy.com") +|| dnsDomainIs(host, "www.arab.net") +|| dnsDomainIs(host, "www.aracnet.com") +|| dnsDomainIs(host, "www.arborday.com") +|| dnsDomainIs(host, "www.arcadevillage.com") +|| dnsDomainIs(host, "www.archiecomics.com") +|| dnsDomainIs(host, "www.archives.state.al.us") +|| dnsDomainIs(host, "www.arctic.ca") +|| dnsDomainIs(host, "www.ardenjohnson.com") +|| dnsDomainIs(host, "www.aristotle.net") +|| dnsDomainIs(host, "www.arizhwys.com") +|| dnsDomainIs(host, "www.arizonaguide.com") +|| dnsDomainIs(host, "www.arlingtoncemetery.com") +|| dnsDomainIs(host, "www.armory.com") +|| dnsDomainIs(host, "www.armwrestling.com") +|| dnsDomainIs(host, "www.arnprior.com") +|| dnsDomainIs(host, "www.artabunga.com") +|| dnsDomainIs(host, "www.artcarte.com") +|| dnsDomainIs(host, "www.artchive.com") +|| dnsDomainIs(host, "www.artcontest.com") +|| dnsDomainIs(host, "www.artcyclopedia.com") +|| dnsDomainIs(host, "www.artisandevelopers.com") +|| dnsDomainIs(host, "www.artlex.com") +|| dnsDomainIs(host, "www.artsandkids.com") +|| dnsDomainIs(host, "www.artyastro.com") +|| dnsDomainIs(host, "www.arwhead.com") +|| dnsDomainIs(host, "www.asahi-net.or.jp") +|| dnsDomainIs(host, "www.asap.unimelb.edu.au") +|| dnsDomainIs(host, "www.ascpl.lib.oh.us") +|| dnsDomainIs(host, "www.asia-art.net") +|| dnsDomainIs(host, "www.asiabigtime.com") +|| dnsDomainIs(host, "www.asianart.com") +|| dnsDomainIs(host, "www.asiatour.com") +|| dnsDomainIs(host, "www.asiaweek.com") +|| dnsDomainIs(host, "www.askanexpert.com") +|| dnsDomainIs(host, "www.askbasil.com") +|| dnsDomainIs(host, "www.assa.org.au") +|| dnsDomainIs(host, "www.ast.cam.ac.uk") +|| dnsDomainIs(host, "www.astronomy.com") +|| dnsDomainIs(host, "www.astros.com") +|| dnsDomainIs(host, "www.atek.com") +|| dnsDomainIs(host, "www.athlete.com") +|| dnsDomainIs(host, "www.athropolis.com") +|| dnsDomainIs(host, "www.atkielski.com") +|| dnsDomainIs(host, "www.atlantabraves.com") +|| dnsDomainIs(host, "www.atlantafalcons.com") +|| dnsDomainIs(host, "www.atlantathrashers.com") +|| dnsDomainIs(host, "www.atlanticus.com") +|| dnsDomainIs(host, "www.atm.ch.cam.ac.uk") +|| dnsDomainIs(host, "www.atom.co.jp") +|| dnsDomainIs(host, "www.atomicarchive.com") +|| dnsDomainIs(host, "www.att.com") +|| dnsDomainIs(host, "www.audreywood.com") +|| dnsDomainIs(host, "www.auntannie.com") +|| dnsDomainIs(host, "www.auntie.com") +|| dnsDomainIs(host, "www.avi-writer.com") +|| dnsDomainIs(host, "www.awesomeclipartforkids.com") +|| dnsDomainIs(host, "www.awhitehorse.com") +|| dnsDomainIs(host, "www.axess.com") +|| dnsDomainIs(host, "www.ayles.com") +|| dnsDomainIs(host, "www.ayn.ca") +|| dnsDomainIs(host, "www.azcardinals.com") +|| dnsDomainIs(host, "www.azdiamondbacks.com") +|| dnsDomainIs(host, "www.azsolarcenter.com") +|| dnsDomainIs(host, "www.azstarnet.com") +|| dnsDomainIs(host, "www.aztecafoods.com") +|| dnsDomainIs(host, "www.b-witched.com") +|| dnsDomainIs(host, "www.baberuthmuseum.com") +|| dnsDomainIs(host, "www.backstreetboys.com") +|| dnsDomainIs(host, "www.bagheera.com") +|| dnsDomainIs(host, "www.bahamas.com") +|| dnsDomainIs(host, "www.baileykids.com") +|| dnsDomainIs(host, "www.baldeagleinfo.com") +|| dnsDomainIs(host, "www.balloonhq.com") +|| dnsDomainIs(host, "www.balloonzone.com") +|| dnsDomainIs(host, "www.ballparks.com") +|| dnsDomainIs(host, "www.balmoralsoftware.com") +|| dnsDomainIs(host, "www.banja.com") +|| dnsDomainIs(host, "www.banph.com") +|| dnsDomainIs(host, "www.barbie.com") +|| dnsDomainIs(host, "www.barkingbuddies.com") +|| dnsDomainIs(host, "www.barnsdle.demon.co.uk") +|| dnsDomainIs(host, "www.barrysclipart.com") +|| dnsDomainIs(host, "www.bartleby.com") +|| dnsDomainIs(host, "www.baseplate.com") +|| dnsDomainIs(host, "www.batman-superman.com") +|| dnsDomainIs(host, "www.batmanbeyond.com") +|| dnsDomainIs(host, "www.bbc.co.uk") +|| dnsDomainIs(host, "www.bbhighway.com") +|| dnsDomainIs(host, "www.bboy.com") +|| dnsDomainIs(host, "www.bcit.tec.nj.us") +|| dnsDomainIs(host, "www.bconnex.net") +|| dnsDomainIs(host, "www.bcpl.net") +|| dnsDomainIs(host, "www.beach-net.com") +|| dnsDomainIs(host, "www.beachboys.com") +|| dnsDomainIs(host, "www.beakman.com") +|| dnsDomainIs(host, "www.beano.co.uk") +|| dnsDomainIs(host, "www.beans.demon.co.uk") +|| dnsDomainIs(host, "www.beartime.com") +|| dnsDomainIs(host, "www.bearyspecial.co.uk") +|| dnsDomainIs(host, "www.bedtime.com") +|| dnsDomainIs(host, "www.beingme.com") +|| dnsDomainIs(host, "www.belizeexplorer.com") +|| dnsDomainIs(host, "www.bell-labs.com") +|| dnsDomainIs(host, "www.bemorecreative.com") +|| dnsDomainIs(host, "www.bengals.com") +|| dnsDomainIs(host, "www.benjerry.com") +|| dnsDomainIs(host, "www.bennygoodsport.com") +|| dnsDomainIs(host, "www.berenstainbears.com") +|| dnsDomainIs(host, "www.beringia.com") +|| dnsDomainIs(host, "www.beritsbest.com") +|| dnsDomainIs(host, "www.berksweb.com") +|| dnsDomainIs(host, "www.best.com") +|| dnsDomainIs(host, "www.betsybyars.com") +|| dnsDomainIs(host, "www.bfro.net") +|| dnsDomainIs(host, "www.bgmm.com") +|| dnsDomainIs(host, "www.bibliography.com") +|| dnsDomainIs(host, "www.bigblue.com.au") +|| dnsDomainIs(host, "www.bigchalk.com") +|| dnsDomainIs(host, "www.bigidea.com") +|| dnsDomainIs(host, "www.bigtop.com") +|| dnsDomainIs(host, "www.bikecrawler.com") +|| dnsDomainIs(host, "www.billboard.com") +|| dnsDomainIs(host, "www.billybear4kids.com") +|| dnsDomainIs(host, "www.biography.com") +|| dnsDomainIs(host, "www.birdnature.com") +|| dnsDomainIs(host, "www.birdsnways.com") +|| dnsDomainIs(host, "www.birdtimes.com") +|| dnsDomainIs(host, "www.birminghamzoo.com") +|| dnsDomainIs(host, "www.birthdaypartyideas.com") +|| dnsDomainIs(host, "www.bis.arachsys.com") +|| dnsDomainIs(host, "www.bkgm.com") +|| dnsDomainIs(host, "www.blackbaseball.com") +|| dnsDomainIs(host, "www.blackbeardthepirate.com") +|| dnsDomainIs(host, "www.blackbeltmag.com") +|| dnsDomainIs(host, "www.blackfacts.com") +|| dnsDomainIs(host, "www.blackfeetnation.com") +|| dnsDomainIs(host, "www.blackhills-info.com") +|| dnsDomainIs(host, "www.blackholegang.com") +|| dnsDomainIs(host, "www.blaque.net") +|| dnsDomainIs(host, "www.blarg.net") +|| dnsDomainIs(host, "www.blasternaut.com") +|| dnsDomainIs(host, "www.blizzard.com") +|| dnsDomainIs(host, "www.blocksite.com") +|| dnsDomainIs(host, "www.bluejackets.com") +|| dnsDomainIs(host, "www.bluejays.ca") +|| dnsDomainIs(host, "www.bluemountain.com") +|| dnsDomainIs(host, "www.blupete.com") +|| dnsDomainIs(host, "www.blyton.co.uk") +|| dnsDomainIs(host, "www.boatnerd.com") +|| dnsDomainIs(host, "www.boatsafe.com") +|| dnsDomainIs(host, "www.bonus.com") +|| dnsDomainIs(host, "www.boowakwala.com") +|| dnsDomainIs(host, "www.bostonbruins.com") +|| dnsDomainIs(host, "www.braceface.com") +|| dnsDomainIs(host, "www.bracesinfo.com") +|| dnsDomainIs(host, "www.bradkent.com") +|| dnsDomainIs(host, "www.brainium.com") +|| dnsDomainIs(host, "www.brainmania.com") +|| dnsDomainIs(host, "www.brainpop.com") +|| dnsDomainIs(host, "www.bridalcave.com") +|| dnsDomainIs(host, "www.brightmoments.com") +|| dnsDomainIs(host, "www.britannia.com") +|| dnsDomainIs(host, "www.britannica.com") +|| dnsDomainIs(host, "www.british-museum.ac.uk") +|| dnsDomainIs(host, "www.brookes.ac.uk") +|| dnsDomainIs(host, "www.brookfieldreader.com") +|| dnsDomainIs(host, "www.btinternet.com") +|| dnsDomainIs(host, "www.bubbledome.co.nz") +|| dnsDomainIs(host, "www.buccaneers.com") +|| dnsDomainIs(host, "www.buffy.com") +|| dnsDomainIs(host, "www.bullying.co.uk") +|| dnsDomainIs(host, "www.bumply.com") +|| dnsDomainIs(host, "www.bungi.com") +|| dnsDomainIs(host, "www.burlco.lib.nj.us") +|| dnsDomainIs(host, "www.burlingamepezmuseum.com") +|| dnsDomainIs(host, "www.bus.ualberta.ca") +|| dnsDomainIs(host, "www.busprod.com") +|| dnsDomainIs(host, "www.butlerart.com") +|| dnsDomainIs(host, "www.butterflies.com") +|| dnsDomainIs(host, "www.butterflyfarm.co.cr") +|| dnsDomainIs(host, "www.bway.net") +|| dnsDomainIs(host, "www.bydonovan.com") +|| dnsDomainIs(host, "www.ca-mall.com") +|| dnsDomainIs(host, "www.cabinessence.com") +|| dnsDomainIs(host, "www.cablecarmuseum.com") +|| dnsDomainIs(host, "www.cadbury.co.uk") +|| dnsDomainIs(host, "www.calendarzone.com") +|| dnsDomainIs(host, "www.calgaryflames.com") +|| dnsDomainIs(host, "www.californiamissions.com") +|| dnsDomainIs(host, "www.camalott.com") +|| dnsDomainIs(host, "www.camelotintl.com") +|| dnsDomainIs(host, "www.campbellsoup.com") +|| dnsDomainIs(host, "www.camvista.com") +|| dnsDomainIs(host, "www.canadiens.com") +|| dnsDomainIs(host, "www.canals.state.ny.us") +|| dnsDomainIs(host, "www.candlelightstories.com") +|| dnsDomainIs(host, "www.candles-museum.com") +|| dnsDomainIs(host, "www.candystand.com") +|| dnsDomainIs(host, "www.caneshockey.com") +|| dnsDomainIs(host, "www.canismajor.com") +|| dnsDomainIs(host, "www.canucks.com") +|| dnsDomainIs(host, "www.capecod.net") +|| dnsDomainIs(host, "www.capital.net") +|| dnsDomainIs(host, "www.capstonestudio.com") +|| dnsDomainIs(host, "www.cardblvd.com") +|| dnsDomainIs(host, "www.caro.net") +|| dnsDomainIs(host, "www.carolhurst.com") +|| dnsDomainIs(host, "www.carr.lib.md.us") +|| dnsDomainIs(host, "www.cartooncorner.com") +|| dnsDomainIs(host, "www.cartooncritters.com") +|| dnsDomainIs(host, "www.cartoonnetwork.com") +|| dnsDomainIs(host, "www.carvingpatterns.com") +|| dnsDomainIs(host, "www.cashuniversity.com") +|| dnsDomainIs(host, "www.castles-of-britain.com") +|| dnsDomainIs(host, "www.castlewales.com") +|| dnsDomainIs(host, "www.catholic-forum.com") +|| dnsDomainIs(host, "www.catholic.net") +|| dnsDomainIs(host, "www.cattle.guelph.on.ca") +|| dnsDomainIs(host, "www.cavedive.com") +|| dnsDomainIs(host, "www.caveofthewinds.com") +|| dnsDomainIs(host, "www.cbc4kids.ca") +|| dnsDomainIs(host, "www.ccer.ggl.ruu.nl") +|| dnsDomainIs(host, "www.ccnet.com") +|| dnsDomainIs(host, "www.celineonline.com") +|| dnsDomainIs(host, "www.cellsalive.com") +|| dnsDomainIs(host, "www.centuryinshoes.com") +|| dnsDomainIs(host, "www.cfl.ca") +|| dnsDomainIs(host, "www.channel4.com") +|| dnsDomainIs(host, "www.channel8.net") +|| dnsDomainIs(host, "www.chanukah99.com") +|| dnsDomainIs(host, "www.charged.com") +|| dnsDomainIs(host, "www.chargers.com") +|| dnsDomainIs(host, "www.charlotte.com") +|| dnsDomainIs(host, "www.chaseday.com") +|| dnsDomainIs(host, "www.chateauversailles.fr") +|| dnsDomainIs(host, "www.cheatcc.com") +|| dnsDomainIs(host, "www.cheerleading.net") +|| dnsDomainIs(host, "www.cheese.com") +|| dnsDomainIs(host, "www.chem4kids.com") +|| dnsDomainIs(host, "www.chemicool.com") +|| dnsDomainIs(host, "www.cherbearsden.com") +|| dnsDomainIs(host, "www.chesskids.com") +|| dnsDomainIs(host, "www.chessvariants.com") +|| dnsDomainIs(host, "www.cheungswingchun.com") +|| dnsDomainIs(host, "www.chevroncars.com") +|| dnsDomainIs(host, "www.chibi.simplenet.com") +|| dnsDomainIs(host, "www.chicagobears.com") +|| dnsDomainIs(host, "www.chicagoblackhawks.com") +|| dnsDomainIs(host, "www.chickasaw.net") +|| dnsDomainIs(host, "www.childrensmusic.co.uk") +|| dnsDomainIs(host, "www.childrenssoftware.com") +|| dnsDomainIs(host, "www.childrenstory.com") +|| dnsDomainIs(host, "www.childrenwithdiabetes.com") +|| dnsDomainIs(host, "www.chinapage.com") +|| dnsDomainIs(host, "www.chinatoday.com") +|| dnsDomainIs(host, "www.chinavista.com") +|| dnsDomainIs(host, "www.chinnet.net") +|| dnsDomainIs(host, "www.chiquita.com") +|| dnsDomainIs(host, "www.chisox.com") +|| dnsDomainIs(host, "www.chivalry.com") +|| dnsDomainIs(host, "www.christiananswers.net") +|| dnsDomainIs(host, "www.christianity.com") +|| dnsDomainIs(host, "www.christmas.com") +|| dnsDomainIs(host, "www.christmas98.com") +|| dnsDomainIs(host, "www.chron.com") +|| dnsDomainIs(host, "www.chronique.com") +|| dnsDomainIs(host, "www.chuckecheese.com") +|| dnsDomainIs(host, "www.chucklebait.com") +|| dnsDomainIs(host, "www.chunkymonkey.com") +|| dnsDomainIs(host, "www.ci.chi.il.us") +|| dnsDomainIs(host, "www.ci.nyc.ny.us") +|| dnsDomainIs(host, "www.ci.phoenix.az.us") +|| dnsDomainIs(host, "www.ci.san-diego.ca.us") +|| dnsDomainIs(host, "www.cibc.com") +|| dnsDomainIs(host, "www.ciderpresspottery.com") +|| dnsDomainIs(host, "www.cincinnatireds.com") +|| dnsDomainIs(host, "www.circusparade.com") +|| dnsDomainIs(host, "www.circusweb.com") +|| dnsDomainIs(host, "www.cirquedusoleil.com") +|| dnsDomainIs(host, "www.cit.state.vt.us") +|| dnsDomainIs(host, "www.citycastles.com") +|| dnsDomainIs(host, "www.cityu.edu.hk") +|| dnsDomainIs(host, "www.civicmind.com") +|| dnsDomainIs(host, "www.civil-war.net") +|| dnsDomainIs(host, "www.civilization.ca") +|| dnsDomainIs(host, "www.cl.cam.ac.uk") +|| dnsDomainIs(host, "www.clantongang.com") +|| dnsDomainIs(host, "www.clark.net") +|| dnsDomainIs(host, "www.classicgaming.com") +|| dnsDomainIs(host, "www.claus.com") +|| dnsDomainIs(host, "www.clayz.com") +|| dnsDomainIs(host, "www.clearcf.uvic.ca") +|| dnsDomainIs(host, "www.clearlight.com") +|| dnsDomainIs(host, "www.clemusart.com") +|| dnsDomainIs(host, "www.clevelandbrowns.com") +|| dnsDomainIs(host, "www.clipartcastle.com") +|| dnsDomainIs(host, "www.clubi.ie") +|| dnsDomainIs(host, "www.cnn.com") +|| dnsDomainIs(host, "www.co.henrico.va.us") +|| dnsDomainIs(host, "www.coax.net") +|| dnsDomainIs(host, "www.cocacola.com") +|| dnsDomainIs(host, "www.cocori.com") +|| dnsDomainIs(host, "www.codesmiths.com") +|| dnsDomainIs(host, "www.codetalk.fed.us") +|| dnsDomainIs(host, "www.coin-gallery.com") +|| dnsDomainIs(host, "www.colinthompson.com") +|| dnsDomainIs(host, "www.collectoronline.com") +|| dnsDomainIs(host, "www.colonialhall.com") +|| dnsDomainIs(host, "www.coloradoavalanche.com") +|| dnsDomainIs(host, "www.coloradorockies.com") +|| dnsDomainIs(host, "www.colormathpink.com") +|| dnsDomainIs(host, "www.colts.com") +|| dnsDomainIs(host, "www.comet.net") +|| dnsDomainIs(host, "www.cometsystems.com") +|| dnsDomainIs(host, "www.comicbookresources.com") +|| dnsDomainIs(host, "www.comicspage.com") +|| dnsDomainIs(host, "www.compassnet.com") +|| dnsDomainIs(host, "www.compleatbellairs.com") +|| dnsDomainIs(host, "www.comptons.com") +|| dnsDomainIs(host, "www.concentric.net") +|| dnsDomainIs(host, "www.congogorillaforest.com") +|| dnsDomainIs(host, "www.conjuror.com") +|| dnsDomainIs(host, "www.conk.com") +|| dnsDomainIs(host, "www.conservation.state.mo.us") +|| dnsDomainIs(host, "www.contracostatimes.com") +|| dnsDomainIs(host, "www.control.chalmers.se") +|| dnsDomainIs(host, "www.cookierecipe.com") +|| dnsDomainIs(host, "www.cooljapanesetoys.com") +|| dnsDomainIs(host, "www.cooper.com") +|| dnsDomainIs(host, "www.corpcomm.net") +|| dnsDomainIs(host, "www.corrietenboom.com") +|| dnsDomainIs(host, "www.corynet.com") +|| dnsDomainIs(host, "www.corypaints.com") +|| dnsDomainIs(host, "www.cosmosmith.com") +|| dnsDomainIs(host, "www.countdown2000.com") +|| dnsDomainIs(host, "www.cowboy.net") +|| dnsDomainIs(host, "www.cowboypal.com") +|| dnsDomainIs(host, "www.cowcreek.com") +|| dnsDomainIs(host, "www.cowgirl.net") +|| dnsDomainIs(host, "www.cowgirls.com") +|| dnsDomainIs(host, "www.cp.duluth.mn.us") +|| dnsDomainIs(host, "www.cpsweb.com") +|| dnsDomainIs(host, "www.craftideas.com") +|| dnsDomainIs(host, "www.craniamania.com") +|| dnsDomainIs(host, "www.crater.lake.national-park.com") +|| dnsDomainIs(host, "www.crayoncrawler.com") +|| dnsDomainIs(host, "www.crazybone.com") +|| dnsDomainIs(host, "www.crazybones.com") +|| dnsDomainIs(host, "www.crd.ge.com") +|| dnsDomainIs(host, "www.create4kids.com") +|| dnsDomainIs(host, "www.creativemusic.com") +|| dnsDomainIs(host, "www.crocodilian.com") +|| dnsDomainIs(host, "www.crop.cri.nz") +|| dnsDomainIs(host, "www.cruzio.com") +|| dnsDomainIs(host, "www.crwflags.com") +|| dnsDomainIs(host, "www.cryptograph.com") +|| dnsDomainIs(host, "www.cryst.bbk.ac.uk") +|| dnsDomainIs(host, "www.cs.bilkent.edu.tr") +|| dnsDomainIs(host, "www.cs.man.ac.uk") +|| dnsDomainIs(host, "www.cs.sfu.ca") +|| dnsDomainIs(host, "www.cs.ubc.ca") +|| dnsDomainIs(host, "www.csd.uu.se") +|| dnsDomainIs(host, "www.csmonitor.com") +|| dnsDomainIs(host, "www.csse.monash.edu.au") +|| dnsDomainIs(host, "www.cstone.net") +|| dnsDomainIs(host, "www.csu.edu.au") +|| dnsDomainIs(host, "www.cubs.com") +|| dnsDomainIs(host, "www.culture.fr") +|| dnsDomainIs(host, "www.cultures.com") +|| dnsDomainIs(host, "www.curtis-collection.com") +|| dnsDomainIs(host, "www.cut-the-knot.com") +|| dnsDomainIs(host, "www.cws-scf.ec.gc.ca") +|| dnsDomainIs(host, "www.cyber-dyne.com") +|| dnsDomainIs(host, "www.cyberbee.com") +|| dnsDomainIs(host, "www.cyberbee.net") +|| dnsDomainIs(host, "www.cybercom.net") +|| dnsDomainIs(host, "www.cybercomm.net") +|| dnsDomainIs(host, "www.cybercomm.nl") +|| dnsDomainIs(host, "www.cybercorp.co.nz") +|| dnsDomainIs(host, "www.cybercs.com") +|| dnsDomainIs(host, "www.cybergoal.com") +|| dnsDomainIs(host, "www.cyberkids.com") +|| dnsDomainIs(host, "www.cyberspaceag.com") +|| dnsDomainIs(host, "www.cyberteens.com") +|| dnsDomainIs(host, "www.cybertours.com") +|| dnsDomainIs(host, "www.cybiko.com") +|| dnsDomainIs(host, "www.czweb.com") +|| dnsDomainIs(host, "www.d91.k12.id.us") +|| dnsDomainIs(host, "www.dailygrammar.com") +|| dnsDomainIs(host, "www.dakidz.com") +|| dnsDomainIs(host, "www.dalejarrettonline.com") +|| dnsDomainIs(host, "www.dallascowboys.com") +|| dnsDomainIs(host, "www.dallasdogndisc.com") +|| dnsDomainIs(host, "www.dallasstars.com") +|| dnsDomainIs(host, "www.damnyankees.com") +|| dnsDomainIs(host, "www.danceart.com") +|| dnsDomainIs(host, "www.daniellesplace.com") +|| dnsDomainIs(host, "www.dare-america.com") +|| dnsDomainIs(host, "www.darkfish.com") +|| dnsDomainIs(host, "www.darsbydesign.com") +|| dnsDomainIs(host, "www.datadragon.com") +|| dnsDomainIs(host, "www.davidreilly.com") +|| dnsDomainIs(host, "www.dccomics.com") +|| dnsDomainIs(host, "www.dcn.davis.ca.us") +|| dnsDomainIs(host, "www.deepseaworld.com") +|| dnsDomainIs(host, "www.delawaretribeofindians.nsn.us") +|| dnsDomainIs(host, "www.demon.co.uk") +|| dnsDomainIs(host, "www.denverbroncos.com") +|| dnsDomainIs(host, "www.denverpost.com") +|| dnsDomainIs(host, "www.dep.state.pa.us") +|| dnsDomainIs(host, "www.desert-fairy.com") +|| dnsDomainIs(host, "www.desert-storm.com") +|| dnsDomainIs(host, "www.desertusa.com") +|| dnsDomainIs(host, "www.designltd.com") +|| dnsDomainIs(host, "www.designsbykat.com") +|| dnsDomainIs(host, "www.detnews.com") +|| dnsDomainIs(host, "www.detroitlions.com") +|| dnsDomainIs(host, "www.detroitredwings.com") +|| dnsDomainIs(host, "www.detroittigers.com") +|| dnsDomainIs(host, "www.deutsches-museum.de") +|| dnsDomainIs(host, "www.devilray.com") +|| dnsDomainIs(host, "www.dhorse.com") +|| dnsDomainIs(host, "www.diana-ross.co.uk") +|| dnsDomainIs(host, "www.dianarossandthesupremes.net") +|| dnsDomainIs(host, "www.diaryproject.com") +|| dnsDomainIs(host, "www.dickbutkus.com") +|| dnsDomainIs(host, "www.dickshovel.com") +|| dnsDomainIs(host, "www.dictionary.com") +|| dnsDomainIs(host, "www.didyouknow.com") +|| dnsDomainIs(host, "www.diegorivera.com") +|| dnsDomainIs(host, "www.digitalcentury.com") +|| dnsDomainIs(host, "www.digitaldog.com") +|| dnsDomainIs(host, "www.digiweb.com") +|| dnsDomainIs(host, "www.dimdima.com") +|| dnsDomainIs(host, "www.dinodon.com") +|| dnsDomainIs(host, "www.dinosauria.com") +|| dnsDomainIs(host, "www.discovereso.com") +|| dnsDomainIs(host, "www.discovergalapagos.com") +|| dnsDomainIs(host, "www.discovergames.com") +|| dnsDomainIs(host, "www.discoveringarchaeology.com") +|| dnsDomainIs(host, "www.discoveringmontana.com") +|| dnsDomainIs(host, "www.discoverlearning.com") +|| dnsDomainIs(host, "www.discovery.com") +|| dnsDomainIs(host, "www.disknet.com") +|| dnsDomainIs(host, "www.disney.go.com") +|| dnsDomainIs(host, "www.distinguishedwomen.com") +|| dnsDomainIs(host, "www.dkonline.com") +|| dnsDomainIs(host, "www.dltk-kids.com") +|| dnsDomainIs(host, "www.dmgi.com") +|| dnsDomainIs(host, "www.dnr.state.md.us") +|| dnsDomainIs(host, "www.dnr.state.mi.us") +|| dnsDomainIs(host, "www.dnr.state.wi.us") +|| dnsDomainIs(host, "www.dodgers.com") +|| dnsDomainIs(host, "www.dodoland.com") +|| dnsDomainIs(host, "www.dog-play.com") +|| dnsDomainIs(host, "www.dogbreedinfo.com") +|| dnsDomainIs(host, "www.doginfomat.com") +|| dnsDomainIs(host, "www.dole5aday.com") +|| dnsDomainIs(host, "www.dollart.com") +|| dnsDomainIs(host, "www.dolliedish.com") +|| dnsDomainIs(host, "www.dome2000.co.uk") +|| dnsDomainIs(host, "www.domtar.com") +|| dnsDomainIs(host, "www.donegal.k12.pa.us") +|| dnsDomainIs(host, "www.dorneypark.com") +|| dnsDomainIs(host, "www.dorothyhinshawpatent.com") +|| dnsDomainIs(host, "www.dougweb.com") +|| dnsDomainIs(host, "www.dps.state.ak.us") +|| dnsDomainIs(host, "www.draw3d.com") +|| dnsDomainIs(host, "www.dreamgate.com") +|| dnsDomainIs(host, "www.dreamkitty.com") +|| dnsDomainIs(host, "www.dreamscape.com") +|| dnsDomainIs(host, "www.dreamtime.net.au") +|| dnsDomainIs(host, "www.drpeppermuseum.com") +|| dnsDomainIs(host, "www.drscience.com") +|| dnsDomainIs(host, "www.drseward.com") +|| dnsDomainIs(host, "www.drtoy.com") +|| dnsDomainIs(host, "www.dse.nl") +|| dnsDomainIs(host, "www.dtic.mil") +|| dnsDomainIs(host, "www.duracell.com") +|| dnsDomainIs(host, "www.dustbunny.com") +|| dnsDomainIs(host, "www.dynanet.com") +|| dnsDomainIs(host, "www.eagerreaders.com") +|| dnsDomainIs(host, "www.eaglekids.com") +|| dnsDomainIs(host, "www.earthcalendar.net") +|| dnsDomainIs(host, "www.earthday.net") +|| dnsDomainIs(host, "www.earthdog.com") +|| dnsDomainIs(host, "www.earthwatch.com") +|| dnsDomainIs(host, "www.ease.com") +|| dnsDomainIs(host, "www.eastasia.ws") +|| dnsDomainIs(host, "www.easytype.com") +|| dnsDomainIs(host, "www.eblewis.com") +|| dnsDomainIs(host, "www.ebs.hw.ac.uk") +|| dnsDomainIs(host, "www.eclipse.net") +|| dnsDomainIs(host, "www.eco-pros.com") +|| dnsDomainIs(host, "www.edbydesign.com") +|| dnsDomainIs(host, "www.eddytheeco-dog.com") +|| dnsDomainIs(host, "www.edgate.com") +|| dnsDomainIs(host, "www.edmontonoilers.com") +|| dnsDomainIs(host, "www.edu-source.com") +|| dnsDomainIs(host, "www.edu.gov.on.ca") +|| dnsDomainIs(host, "www.edu4kids.com") +|| dnsDomainIs(host, "www.educ.uvic.ca") +|| dnsDomainIs(host, "www.educate.org.uk") +|| dnsDomainIs(host, "www.education-world.com") +|| dnsDomainIs(host, "www.edunet.com") +|| dnsDomainIs(host, "www.eduplace.com") +|| dnsDomainIs(host, "www.edupuppy.com") +|| dnsDomainIs(host, "www.eduweb.com") +|| dnsDomainIs(host, "www.ee.ryerson.ca") +|| dnsDomainIs(host, "www.ee.surrey.ac.uk") +|| dnsDomainIs(host, "www.eeggs.com") +|| dnsDomainIs(host, "www.efes.com") +|| dnsDomainIs(host, "www.egalvao.com") +|| dnsDomainIs(host, "www.egypt.com") +|| dnsDomainIs(host, "www.egyptology.com") +|| dnsDomainIs(host, "www.ehobbies.com") +|| dnsDomainIs(host, "www.ehow.com") +|| dnsDomainIs(host, "www.eia.brad.ac.uk") +|| dnsDomainIs(host, "www.elbalero.gob.mx") +|| dnsDomainIs(host, "www.eliki.com") +|| dnsDomainIs(host, "www.elnino.com") +|| dnsDomainIs(host, "www.elok.com") +|| dnsDomainIs(host, "www.emf.net") +|| dnsDomainIs(host, "www.emsphone.com") +|| dnsDomainIs(host, "www.emulateme.com") +|| dnsDomainIs(host, "www.en.com") +|| dnsDomainIs(host, "www.enature.com") +|| dnsDomainIs(host, "www.enchantedlearning.com") +|| dnsDomainIs(host, "www.encyclopedia.com") +|| dnsDomainIs(host, "www.endex.com") +|| dnsDomainIs(host, "www.enjoyillinois.com") +|| dnsDomainIs(host, "www.enn.com") +|| dnsDomainIs(host, "www.enriqueig.com") +|| dnsDomainIs(host, "www.enteract.com") +|| dnsDomainIs(host, "www.epals.com") +|| dnsDomainIs(host, "www.equine-world.co.uk") +|| dnsDomainIs(host, "www.eric-carle.com") +|| dnsDomainIs(host, "www.ericlindros.net") +|| dnsDomainIs(host, "www.escape.com") +|| dnsDomainIs(host, "www.eskimo.com") +|| dnsDomainIs(host, "www.essentialsofmusic.com") +|| dnsDomainIs(host, "www.etch-a-sketch.com") +|| dnsDomainIs(host, "www.ethanallen.together.com") +|| dnsDomainIs(host, "www.etoys.com") +|| dnsDomainIs(host, "www.eurekascience.com") +|| dnsDomainIs(host, "www.euronet.nl") +|| dnsDomainIs(host, "www.everyrule.com") +|| dnsDomainIs(host, "www.ex.ac.uk") +|| dnsDomainIs(host, "www.excite.com") +|| dnsDomainIs(host, "www.execpc.com") +|| dnsDomainIs(host, "www.execulink.com") +|| dnsDomainIs(host, "www.exn.net") +|| dnsDomainIs(host, "www.expa.hvu.nl") +|| dnsDomainIs(host, "www.expage.com") +|| dnsDomainIs(host, "www.explode.to") +|| dnsDomainIs(host, "www.explorescience.com") +|| dnsDomainIs(host, "www.explorezone.com") +|| dnsDomainIs(host, "www.extremescience.com") +|| dnsDomainIs(host, "www.eyelid.co.uk") +|| dnsDomainIs(host, "www.eyeneer.com") +|| dnsDomainIs(host, "www.eyesofachild.com") +|| dnsDomainIs(host, "www.eyesofglory.com") +|| dnsDomainIs(host, "www.ezschool.com") +|| dnsDomainIs(host, "www.f1-live.com") +|| dnsDomainIs(host, "www.fables.co.uk") +|| dnsDomainIs(host, "www.factmonster.com") +|| dnsDomainIs(host, "www.fairygodmother.com") +|| dnsDomainIs(host, "www.familybuzz.com") +|| dnsDomainIs(host, "www.familygames.com") +|| dnsDomainIs(host, "www.familygardening.com") +|| dnsDomainIs(host, "www.familyinternet.com") +|| dnsDomainIs(host, "www.familymoney.com") +|| dnsDomainIs(host, "www.familyplay.com") +|| dnsDomainIs(host, "www.famousbirthdays.com") +|| dnsDomainIs(host, "www.fandom.com") +|| dnsDomainIs(host, "www.fansites.com") +|| dnsDomainIs(host, "www.faoschwarz.com") +|| dnsDomainIs(host, "www.fbe.unsw.edu.au") +|| dnsDomainIs(host, "www.fcps.k12.va.us") +|| dnsDomainIs(host, "www.fellersartsfactory.com") +|| dnsDomainIs(host, "www.ferrari.it") +|| dnsDomainIs(host, "www.fertnel.com") +|| dnsDomainIs(host, "www.fh-konstanz.de") +|| dnsDomainIs(host, "www.fhw.gr") +|| dnsDomainIs(host, "www.fibblesnork.com") +|| dnsDomainIs(host, "www.fidnet.com") +|| dnsDomainIs(host, "www.fieldhockey.com") +|| dnsDomainIs(host, "www.fieldhockeytraining.com") +|| dnsDomainIs(host, "www.fieler.com") +|| dnsDomainIs(host, "www.finalfour.net") +|| dnsDomainIs(host, "www.finifter.com") +|| dnsDomainIs(host, "www.fireworks-safety.com") +|| dnsDomainIs(host, "www.firstcut.com") +|| dnsDomainIs(host, "www.firstnations.com") +|| dnsDomainIs(host, "www.fishbc.com") +|| dnsDomainIs(host, "www.fisher-price.com") +|| dnsDomainIs(host, "www.fisheyeview.com") +|| dnsDomainIs(host, "www.fishgeeks.com") +|| dnsDomainIs(host, "www.fishindex.com") +|| dnsDomainIs(host, "www.fitzgeraldstudio.com") +|| dnsDomainIs(host, "www.flags.net") +|| dnsDomainIs(host, "www.flail.com") +|| dnsDomainIs(host, "www.flamarlins.com") +|| dnsDomainIs(host, "www.flausa.com") +|| dnsDomainIs(host, "www.floodlight-findings.com") +|| dnsDomainIs(host, "www.floridahistory.com") +|| dnsDomainIs(host, "www.floridapanthers.com") +|| dnsDomainIs(host, "www.fng.fi") +|| dnsDomainIs(host, "www.foodsci.uoguelph.ca") +|| dnsDomainIs(host, "www.foremost.com") +|| dnsDomainIs(host, "www.fortress.am") +|| dnsDomainIs(host, "www.fortunecity.com") +|| dnsDomainIs(host, "www.fosterclub.com") +|| dnsDomainIs(host, "www.foundus.com") +|| dnsDomainIs(host, "www.fourmilab.ch") +|| dnsDomainIs(host, "www.fox.com") +|| dnsDomainIs(host, "www.foxfamilychannel.com") +|| dnsDomainIs(host, "www.foxhome.com") +|| dnsDomainIs(host, "www.foxkids.com") +|| dnsDomainIs(host, "www.franceway.com") +|| dnsDomainIs(host, "www.fred.net") +|| dnsDomainIs(host, "www.fredpenner.com") +|| dnsDomainIs(host, "www.freedomknot.com") +|| dnsDomainIs(host, "www.freejigsawpuzzles.com") +|| dnsDomainIs(host, "www.freenet.edmonton.ab.ca") +|| dnsDomainIs(host, "www.frii.com") +|| dnsDomainIs(host, "www.frisbee.com") +|| dnsDomainIs(host, "www.fritolay.com") +|| dnsDomainIs(host, "www.frogsonice.com") +|| dnsDomainIs(host, "www.frontiernet.net") +|| dnsDomainIs(host, "www.fs.fed.us") +|| dnsDomainIs(host, "www.funattic.com") +|| dnsDomainIs(host, ".funbrain.com") +|| dnsDomainIs(host, "www.fundango.com") +|| dnsDomainIs(host, "www.funisland.com") +|| dnsDomainIs(host, "www.funkandwagnalls.com") +|| dnsDomainIs(host, "www.funorama.com") +|| dnsDomainIs(host, "www.funschool.com") +|| dnsDomainIs(host, "www.funster.com") +|| dnsDomainIs(host, "www.furby.com") +|| dnsDomainIs(host, "www.fusion.org.uk") +|| dnsDomainIs(host, "www.futcher.com") +|| dnsDomainIs(host, "www.futurescan.com") +|| dnsDomainIs(host, "www.fyi.net") +|| dnsDomainIs(host, "www.gailgibbons.com") +|| dnsDomainIs(host, "www.galegroup.com") +|| dnsDomainIs(host, "www.gambia.com") +|| dnsDomainIs(host, "www.gamecabinet.com") +|| dnsDomainIs(host, "www.gamecenter.com") +|| dnsDomainIs(host, "www.gamefaqs.com") +|| dnsDomainIs(host, "www.garfield.com") +|| dnsDomainIs(host, "www.garyharbo.com") +|| dnsDomainIs(host, "www.gatefish.com") +|| dnsDomainIs(host, "www.gateway-va.com") +|| dnsDomainIs(host, "www.gazillionaire.com") +|| dnsDomainIs(host, "www.gearhead.com") +|| dnsDomainIs(host, "www.genesplicing.com") +|| dnsDomainIs(host, "www.genhomepage.com") +|| dnsDomainIs(host, "www.geobop.com") +|| dnsDomainIs(host, "www.geocities.com") +|| dnsDomainIs(host, "www.geographia.com") +|| dnsDomainIs(host, "www.georgeworld.com") +|| dnsDomainIs(host, "www.georgian.net") +|| dnsDomainIs(host, "www.german-way.com") +|| dnsDomainIs(host, "www.germanfortravellers.com") +|| dnsDomainIs(host, "www.germantown.k12.il.us") +|| dnsDomainIs(host, "www.germany-tourism.de") +|| dnsDomainIs(host, "www.getmusic.com") +|| dnsDomainIs(host, "www.gettysburg.com") +|| dnsDomainIs(host, "www.ghirardellisq.com") +|| dnsDomainIs(host, "www.ghosttowngallery.com") +|| dnsDomainIs(host, "www.ghosttownsusa.com") +|| dnsDomainIs(host, "www.giants.com") +|| dnsDomainIs(host, "www.gibraltar.gi") +|| dnsDomainIs(host, "www.gigglepoetry.com") +|| dnsDomainIs(host, "www.gilchriststudios.com") +|| dnsDomainIs(host, "www.gillslap.freeserve.co.uk") +|| dnsDomainIs(host, "www.gilmer.net") +|| dnsDomainIs(host, "www.gio.gov.tw") +|| dnsDomainIs(host, "www.girltech.com") +|| dnsDomainIs(host, "www.girlzone.com") +|| dnsDomainIs(host, "www.globalgang.org.uk") +|| dnsDomainIs(host, "www.globalindex.com") +|| dnsDomainIs(host, "www.globalinfo.com") +|| dnsDomainIs(host, "www.gloriafan.com") +|| dnsDomainIs(host, "www.gms.ocps.k12.fl.us") +|| dnsDomainIs(host, "www.go-go-diggity.com") +|| dnsDomainIs(host, "www.goals.com") +|| dnsDomainIs(host, "www.godiva.com") +|| dnsDomainIs(host, "www.golden-retriever.com") +|| dnsDomainIs(host, "www.goldenbooks.com") +|| dnsDomainIs(host, "www.goldeneggs.com.au") +|| dnsDomainIs(host, "www.golfonline.com") +|| dnsDomainIs(host, "www.goobo.com") +|| dnsDomainIs(host, "www.goodearthgraphics.com") +|| dnsDomainIs(host, "www.goodyear.com") +|| dnsDomainIs(host, "www.gopbi.com") +|| dnsDomainIs(host, "www.gorge.net") +|| dnsDomainIs(host, "www.gorp.com") +|| dnsDomainIs(host, "www.got-milk.com") +|| dnsDomainIs(host, "www.gov.ab.ca") +|| dnsDomainIs(host, "www.gov.nb.ca") +|| dnsDomainIs(host, "www.grammarbook.com") +|| dnsDomainIs(host, "www.grammarlady.com") +|| dnsDomainIs(host, "www.grandparents-day.com") +|| dnsDomainIs(host, "www.granthill.com") +|| dnsDomainIs(host, "www.grayweb.com") +|| dnsDomainIs(host, "www.greatbuildings.com") +|| dnsDomainIs(host, "www.greatkids.com") +|| dnsDomainIs(host, "www.greatscience.com") +|| dnsDomainIs(host, "www.greeceny.com") +|| dnsDomainIs(host, "www.greenkeepers.com") +|| dnsDomainIs(host, "www.greylabyrinth.com") +|| dnsDomainIs(host, "www.grimmy.com") +|| dnsDomainIs(host, "www.gsrg.nmh.ac.uk") +|| dnsDomainIs(host, "www.gti.net") +|| dnsDomainIs(host, "www.guinnessworldrecords.com") +|| dnsDomainIs(host, "www.guitar.net") +|| dnsDomainIs(host, "www.guitarplaying.com") +|| dnsDomainIs(host, "www.gumbyworld.com") +|| dnsDomainIs(host, "www.gurlwurld.com") +|| dnsDomainIs(host, "www.gwi.net") +|| dnsDomainIs(host, "www.gymn-forum.com") +|| dnsDomainIs(host, "www.gzkidzone.com") +|| dnsDomainIs(host, "www.haemibalgassi.com") +|| dnsDomainIs(host, "www.hairstylist.com") +|| dnsDomainIs(host, "www.halcyon.com") +|| dnsDomainIs(host, "www.halifax.cbc.ca") +|| dnsDomainIs(host, "www.halloween-online.com") +|| dnsDomainIs(host, "www.halloweenkids.com") +|| dnsDomainIs(host, "www.halloweenmagazine.com") +|| dnsDomainIs(host, "www.hamill.co.uk") +|| dnsDomainIs(host, "www.hamsterdance2.com") +|| dnsDomainIs(host, "www.hamsters.co.uk") +|| dnsDomainIs(host, "www.hamstertours.com") +|| dnsDomainIs(host, "www.handsonmath.com") +|| dnsDomainIs(host, "www.handspeak.com") +|| dnsDomainIs(host, "www.hansonline.com") +|| dnsDomainIs(host, "www.happychild.org.uk") +|| dnsDomainIs(host, "www.happyfamilies.com") +|| dnsDomainIs(host, "www.happytoy.com") +|| dnsDomainIs(host, "www.harley-davidson.com") +|| dnsDomainIs(host, "www.harmonicalessons.com") +|| dnsDomainIs(host, "www.harperchildrens.com") +|| dnsDomainIs(host, "www.harvey.com") +|| dnsDomainIs(host, "www.hasbro-interactive.com") +|| dnsDomainIs(host, "www.haynet.net") +|| dnsDomainIs(host, "www.hbc.com") +|| dnsDomainIs(host, "www.hblewis.com") +|| dnsDomainIs(host, "www.hbook.com") +|| dnsDomainIs(host, "www.he.net") +|| dnsDomainIs(host, "www.headbone.com") +|| dnsDomainIs(host, "www.healthatoz.com") +|| dnsDomainIs(host, "www.healthypet.com") +|| dnsDomainIs(host, "www.heartfoundation.com.au") +|| dnsDomainIs(host, "www.heatersworld.com") +|| dnsDomainIs(host, "www.her-online.com") +|| dnsDomainIs(host, "www.heroesofhistory.com") +|| dnsDomainIs(host, "www.hersheypa.com") +|| dnsDomainIs(host, "www.hersheys.com") +|| dnsDomainIs(host, "www.hevanet.com") +|| dnsDomainIs(host, "www.heynetwork.com") +|| dnsDomainIs(host, "www.hgo.com") +|| dnsDomainIs(host, "www.hhof.com") +|| dnsDomainIs(host, "www.hideandseekpuppies.com") +|| dnsDomainIs(host, "www.hifusion.com") +|| dnsDomainIs(host, "www.highbridgepress.com") +|| dnsDomainIs(host, "www.his.com") +|| dnsDomainIs(host, "www.history.navy.mil") +|| dnsDomainIs(host, "www.historychannel.com") +|| dnsDomainIs(host, "www.historyhouse.com") +|| dnsDomainIs(host, "www.historyplace.com") +|| dnsDomainIs(host, "www.hisurf.com") +|| dnsDomainIs(host, "www.hiyah.com") +|| dnsDomainIs(host, "www.hmnet.com") +|| dnsDomainIs(host, "www.hoboes.com") +|| dnsDomainIs(host, "www.hockeydb.com") +|| dnsDomainIs(host, "www.hohnerusa.com") +|| dnsDomainIs(host, "www.holidaychannel.com") +|| dnsDomainIs(host, "www.holidayfestival.com") +|| dnsDomainIs(host, "www.holidays.net") +|| dnsDomainIs(host, "www.hollywood.com") +|| dnsDomainIs(host, "www.holoworld.com") +|| dnsDomainIs(host, "www.homepagers.com") +|| dnsDomainIs(host, "www.homeschoolzone.com") +|| dnsDomainIs(host, "www.homestead.com") +|| dnsDomainIs(host, "www.homeworkspot.com") +|| dnsDomainIs(host, "www.hompro.com") +|| dnsDomainIs(host, "www.honey.com") +|| dnsDomainIs(host, "www.hooked.net") +|| dnsDomainIs(host, "www.hoophall.com") +|| dnsDomainIs(host, "www.hooverdam.com") +|| dnsDomainIs(host, "www.hopepaul.com") +|| dnsDomainIs(host, "www.horse-country.com") +|| dnsDomainIs(host, "www.horsechat.com") +|| dnsDomainIs(host, "www.horsefun.com") +|| dnsDomainIs(host, "www.horus.ics.org.eg") +|| dnsDomainIs(host, "www.hotbraille.com") +|| dnsDomainIs(host, "www.hotwheels.com") +|| dnsDomainIs(host, "www.howstuffworks.com") +|| dnsDomainIs(host, "www.hpdigitalbookclub.com") +|| dnsDomainIs(host, "www.hpj.com") +|| dnsDomainIs(host, "www.hpl.hp.com") +|| dnsDomainIs(host, "www.hpl.lib.tx.us") +|| dnsDomainIs(host, "www.hpnetwork.f2s.com") +|| dnsDomainIs(host, "www.hsswp.com") +|| dnsDomainIs(host, "www.hsx.com") +|| dnsDomainIs(host, "www.humboldt1.com") +|| dnsDomainIs(host, "www.humongous.com") +|| dnsDomainIs(host, "www.humph3.freeserve.co.uk") +|| dnsDomainIs(host, "www.humphreybear.com ") +|| dnsDomainIs(host, "www.hurricanehunters.com") +|| dnsDomainIs(host, "www.hyperhistory.com") +|| dnsDomainIs(host, "www.i2k.com") +|| dnsDomainIs(host, "www.ibhof.com") +|| dnsDomainIs(host, "www.ibiscom.com") +|| dnsDomainIs(host, "www.ibm.com") +|| dnsDomainIs(host, "www.icangarden.com") +|| dnsDomainIs(host, "www.icecreamusa.com") +|| dnsDomainIs(host, "www.icn.co.uk") +|| dnsDomainIs(host, "www.icomm.ca") +|| dnsDomainIs(host, "www.idfishnhunt.com") +|| dnsDomainIs(host, "www.iditarod.com") +|| dnsDomainIs(host, "www.iei.net") +|| dnsDomainIs(host, "www.iemily.com") +|| dnsDomainIs(host, "www.iir.com") +|| dnsDomainIs(host, "www.ika.com") +|| dnsDomainIs(host, "www.ikoala.com") +|| dnsDomainIs(host, "www.iln.net") +|| dnsDomainIs(host, "www.imagine5.com") +|| dnsDomainIs(host, "www.imes.boj.or.jp") +|| dnsDomainIs(host, "www.inch.com") +|| dnsDomainIs(host, "www.incwell.com") +|| dnsDomainIs(host, "www.indian-river.fl.us") +|| dnsDomainIs(host, "www.indians.com") +|| dnsDomainIs(host, "www.indo.com") +|| dnsDomainIs(host, "www.indyracingleague.com") +|| dnsDomainIs(host, "www.indyzoo.com") +|| dnsDomainIs(host, "www.info-canada.com") +|| dnsDomainIs(host, "www.infomagic.net") +|| dnsDomainIs(host, "www.infoplease.com") +|| dnsDomainIs(host, "www.infoporium.com") +|| dnsDomainIs(host, "www.infostuff.com") +|| dnsDomainIs(host, "www.inhandmuseum.com") +|| dnsDomainIs(host, "www.inil.com") +|| dnsDomainIs(host, "www.inkspot.com") +|| dnsDomainIs(host, "www.inkyfingers.com") +|| dnsDomainIs(host, "www.innerauto.com") +|| dnsDomainIs(host, "www.innerbody.com") +|| dnsDomainIs(host, "www.inqpub.com") +|| dnsDomainIs(host, "www.insecta-inspecta.com") +|| dnsDomainIs(host, "www.insectclopedia.com") +|| dnsDomainIs(host, "www.inside-mexico.com") +|| dnsDomainIs(host, "www.insiders.com") +|| dnsDomainIs(host, "www.insteam.com") +|| dnsDomainIs(host, "www.intel.com") +|| dnsDomainIs(host, "www.intellicast.com") +|| dnsDomainIs(host, "www.interads.co.uk") +|| dnsDomainIs(host, "www.intercot.com") +|| dnsDomainIs(host, "www.intergraffix.com") +|| dnsDomainIs(host, "www.interknowledge.com") +|| dnsDomainIs(host, "www.interlog.com") +|| dnsDomainIs(host, "www.internet4kids.com") +|| dnsDomainIs(host, "www.intersurf.com") +|| dnsDomainIs(host, "www.inthe80s.com") +|| dnsDomainIs(host, "www.inventorsmuseum.com") +|| dnsDomainIs(host, "www.inwap.com") +|| dnsDomainIs(host, "www.ioa.com") +|| dnsDomainIs(host, "www.ionet.net") +|| dnsDomainIs(host, "www.iowacity.com") +|| dnsDomainIs(host, "www.ireland-now.com") +|| dnsDomainIs(host, "www.ireland.com") +|| dnsDomainIs(host, "www.irelandseye.com") +|| dnsDomainIs(host, "www.irlgov.ie") +|| dnsDomainIs(host, "www.isd.net") +|| dnsDomainIs(host, "www.islandnet.com") +|| dnsDomainIs(host, "www.isomedia.com") +|| dnsDomainIs(host, "www.itftennis.com") +|| dnsDomainIs(host, "www.itpi.dpi.state.nc.us") +|| dnsDomainIs(host, "www.itskwanzaatime.com") +|| dnsDomainIs(host, "www.itss.raytheon.com") +|| dnsDomainIs(host, "www.iuma.com") +|| dnsDomainIs(host, "www.iwaynet.net") +|| dnsDomainIs(host, "www.iwc.com") +|| dnsDomainIs(host, "www.iwight.gov.uk") +|| dnsDomainIs(host, "www.ixpres.com") +|| dnsDomainIs(host, "www.j.b.allen.btinternet.co.uk") +|| dnsDomainIs(host, "www.jabuti.com") +|| dnsDomainIs(host, "www.jackinthebox.com") +|| dnsDomainIs(host, "www.jaffebros.com") +|| dnsDomainIs(host, "www.jaguars.com") +|| dnsDomainIs(host, "www.jamaica-gleaner.com") +|| dnsDomainIs(host, "www.jamm.com") +|| dnsDomainIs(host, "www.janbrett.com") +|| dnsDomainIs(host, "www.janetstevens.com") +|| dnsDomainIs(host, "www.japan-guide.com") +|| dnsDomainIs(host, "www.jargon.net") +|| dnsDomainIs(host, "www.javelinamx.com") +|| dnsDomainIs(host, "www.jayjay.com") +|| dnsDomainIs(host, "www.jazclass.aust.com") +|| dnsDomainIs(host, "www.jedinet.com") +|| dnsDomainIs(host, "www.jenniferlopez.com") +|| dnsDomainIs(host, "www.jlpanagopoulos.com") +|| dnsDomainIs(host, "www.jmarshall.com") +|| dnsDomainIs(host, "www.jmccall.demon.co.uk") +|| dnsDomainIs(host, "www.jmts.com") +|| dnsDomainIs(host, "www.joesherlock.com") +|| dnsDomainIs(host, "www.jorvik-viking-centre.co.uk") +|| dnsDomainIs(host, "www.joycecarolthomas.com") +|| dnsDomainIs(host, "www.joycone.com") +|| dnsDomainIs(host, "www.joyrides.com") +|| dnsDomainIs(host, "www.jps.net") +|| dnsDomainIs(host, "www.jspub.com") +|| dnsDomainIs(host, "www.judaica.com") +|| dnsDomainIs(host, "www.judyblume.com") +|| dnsDomainIs(host, "www.julen.net") +|| dnsDomainIs(host, "www.june29.com") +|| dnsDomainIs(host, "www.juneteenth.com") +|| dnsDomainIs(host, "www.justuskidz.com") +|| dnsDomainIs(host, "www.justwomen.com") +|| dnsDomainIs(host, "www.jwindow.net") +|| dnsDomainIs(host, "www.k9web.com") +|| dnsDomainIs(host, "www.kaercher.de") +|| dnsDomainIs(host, "www.kaleidoscapes.com") +|| dnsDomainIs(host, "www.kapili.com") +|| dnsDomainIs(host, "www.kcchiefs.com") +|| dnsDomainIs(host, "www.kcpl.lib.mo.us") +|| dnsDomainIs(host, "www.kcroyals.com") +|| dnsDomainIs(host, "www.kcsd.k12.pa.us") +|| dnsDomainIs(host, "www.kdu.com") +|| dnsDomainIs(host, "www.kelloggs.com") +|| dnsDomainIs(host, "www.kentuckyfriedchicken.com") +|| dnsDomainIs(host, "www.kenyaweb.com") +|| dnsDomainIs(host, "www.keypals.com") +|| dnsDomainIs(host, "www.kfn.com") +|| dnsDomainIs(host, "www.kid-at-art.com") +|| dnsDomainIs(host, "www.kid-channel.com") +|| dnsDomainIs(host, "www.kidallergy.com") +|| dnsDomainIs(host, "www.kidbibs.com") +|| dnsDomainIs(host, "www.kidcomics.com") +|| dnsDomainIs(host, "www.kiddesafety.com") +|| dnsDomainIs(host, "www.kiddiecampus.com") +|| dnsDomainIs(host, "www.kididdles.com") +|| dnsDomainIs(host, "www.kidnews.com") +|| dnsDomainIs(host, "www.kidocracy.com") +|| dnsDomainIs(host, "www.kidport.com") +|| dnsDomainIs(host, "www.kids-channel.co.uk") +|| dnsDomainIs(host, "www.kids-drawings.com") +|| dnsDomainIs(host, "www.kids-in-mind.com") +|| dnsDomainIs(host, "www.kids4peace.com") +|| dnsDomainIs(host, "www.kidsandcomputers.com") +|| dnsDomainIs(host, "www.kidsart.co.uk") +|| dnsDomainIs(host, "www.kidsastronomy.com") +|| dnsDomainIs(host, "www.kidsbank.com") +|| dnsDomainIs(host, "www.kidsbookshelf.com") +|| dnsDomainIs(host, "www.kidsclick.com") +|| dnsDomainIs(host, "www.kidscom.com") +|| dnsDomainIs(host, "www.kidscook.com") +|| dnsDomainIs(host, "www.kidsdoctor.com") +|| dnsDomainIs(host, "www.kidsdomain.com") +|| dnsDomainIs(host, "www.kidsfarm.com") +|| dnsDomainIs(host, "www.kidsfreeware.com") +|| dnsDomainIs(host, "www.kidsfun.tv") +|| dnsDomainIs(host, "www.kidsgolf.com") +|| dnsDomainIs(host, "www.kidsgowild.com") +|| dnsDomainIs(host, "www.kidsjokes.com") +|| dnsDomainIs(host, "www.kidsloveamystery.com") +|| dnsDomainIs(host, "www.kidsmoneycents.com") +|| dnsDomainIs(host, "www.kidsnewsroom.com") +|| dnsDomainIs(host, "www.kidsource.com") +|| dnsDomainIs(host, "www.kidsparties.com") +|| dnsDomainIs(host, "www.kidsplaytown.com") +|| dnsDomainIs(host, "www.kidsreads.com") +|| dnsDomainIs(host, "www.kidsreport.com") +|| dnsDomainIs(host, "www.kidsrunning.com") +|| dnsDomainIs(host, "www.kidstamps.com") +|| dnsDomainIs(host, "www.kidsvideogames.com") +|| dnsDomainIs(host, "www.kidsway.com") +|| dnsDomainIs(host, "www.kidswithcancer.com") +|| dnsDomainIs(host, "www.kidszone.ourfamily.com") +|| dnsDomainIs(host, "www.kidzup.com") +|| dnsDomainIs(host, "www.kinderart.com") +|| dnsDomainIs(host, "www.kineticcity.com") +|| dnsDomainIs(host, "www.kings.k12.ca.us") +|| dnsDomainIs(host, "www.kiplinger.com") +|| dnsDomainIs(host, "www.kiwirecovery.org.nz") +|| dnsDomainIs(host, "www.klipsan.com") +|| dnsDomainIs(host, "www.klutz.com") +|| dnsDomainIs(host, "www.kn.pacbell.com") +|| dnsDomainIs(host, "www.knex.com") +|| dnsDomainIs(host, "www.knowledgeadventure.com") +|| dnsDomainIs(host, "www.knto.or.kr") +|| dnsDomainIs(host, "www.kodak.com") +|| dnsDomainIs(host, "www.konica.co.jp") +|| dnsDomainIs(host, "www.kraftfoods.com") +|| dnsDomainIs(host, "www.kudzukids.com") +|| dnsDomainIs(host, "www.kulichki.com") +|| dnsDomainIs(host, "www.kuttu.com") +|| dnsDomainIs(host, "www.kv5.com") +|| dnsDomainIs(host, "www.kyes-world.com") +|| dnsDomainIs(host, "www.kyohaku.go.jp") +|| dnsDomainIs(host, "www.kyrene.k12.az.us") +|| dnsDomainIs(host, "www.kz") +|| dnsDomainIs(host, "www.la-hq.org.uk") +|| dnsDomainIs(host, "www.labs.net") +|| dnsDomainIs(host, "www.labyrinth.net.au") +|| dnsDomainIs(host, "www.laffinthedark.com") +|| dnsDomainIs(host, "www.lakhota.com") +|| dnsDomainIs(host, "www.lakings.com") +|| dnsDomainIs(host, "www.lam.mus.ca.us") +|| dnsDomainIs(host, "www.lampstras.k12.pa.us") +|| dnsDomainIs(host, "www.lams.losalamos.k12.nm.us") +|| dnsDomainIs(host, "www.landofcadbury.ca") +|| dnsDomainIs(host, "www.larry-boy.com") +|| dnsDomainIs(host, "www.lasersite.com") +|| dnsDomainIs(host, "www.last-word.com") +|| dnsDomainIs(host, "www.latimes.com") +|| dnsDomainIs(host, "www.laughon.com") +|| dnsDomainIs(host, "www.laurasmidiheaven.com") +|| dnsDomainIs(host, "www.lausd.k12.ca.us") +|| dnsDomainIs(host, "www.learn2.com") +|| dnsDomainIs(host, "www.learn2type.com") +|| dnsDomainIs(host, "www.learnfree-hobbies.com") +|| dnsDomainIs(host, "www.learningkingdom.com") +|| dnsDomainIs(host, "www.learningplanet.com") +|| dnsDomainIs(host, "www.leftjustified.com") +|| dnsDomainIs(host, "www.legalpadjr.com") +|| dnsDomainIs(host, "www.legendarysurfers.com") +|| dnsDomainIs(host, "www.legends.dm.net") +|| dnsDomainIs(host, "www.legis.state.wi.us") +|| dnsDomainIs(host, "www.legis.state.wv.us") +|| dnsDomainIs(host, "www.lego.com") +|| dnsDomainIs(host, "www.leje.com") +|| dnsDomainIs(host, "www.leonardodicaprio.com") +|| dnsDomainIs(host, "www.lessonplanspage.com") +|| dnsDomainIs(host, "www.letour.fr") +|| dnsDomainIs(host, "www.levins.com") +|| dnsDomainIs(host, "www.levistrauss.com") +|| dnsDomainIs(host, "www.libertystatepark.com") +|| dnsDomainIs(host, "www.libraryspot.com") +|| dnsDomainIs(host, "www.lifelong.com") +|| dnsDomainIs(host, "www.lighthouse.cc") +|| dnsDomainIs(host, "www.lightlink.com") +|| dnsDomainIs(host, "www.lightspan.com") +|| dnsDomainIs(host, "www.lil-fingers.com") +|| dnsDomainIs(host, "www.linc.or.jp") +|| dnsDomainIs(host, "www.lindsaysbackyard.com") +|| dnsDomainIs(host, "www.lindtchocolate.com") +|| dnsDomainIs(host, "www.lineone.net") +|| dnsDomainIs(host, "www.lionel.com") +|| dnsDomainIs(host, "www.lisafrank.com") +|| dnsDomainIs(host, "www.lissaexplains.com") +|| dnsDomainIs(host, "www.literacycenter.net") +|| dnsDomainIs(host, "www.littleartist.com") +|| dnsDomainIs(host, "www.littlechiles.com") +|| dnsDomainIs(host, "www.littlecritter.com") +|| dnsDomainIs(host, "www.littlecrowtoys.com") +|| dnsDomainIs(host, "www.littlehousebooks.com") +|| dnsDomainIs(host, "www.littlejason.com") +|| dnsDomainIs(host, "www.littleplanettimes.com") +|| dnsDomainIs(host, "www.liveandlearn.com") +|| dnsDomainIs(host, "www.loadstar.prometeus.net") +|| dnsDomainIs(host, "www.localaccess.com") +|| dnsDomainIs(host, "www.lochness.co.uk") +|| dnsDomainIs(host, "www.lochness.scotland.net") +|| dnsDomainIs(host, "www.logos.it") +|| dnsDomainIs(host, "www.lonelyplanet.com") +|| dnsDomainIs(host, "www.looklearnanddo.com") +|| dnsDomainIs(host, "www.loosejocks.com") +|| dnsDomainIs(host, "www.lost-worlds.com") +|| dnsDomainIs(host, "www.love-story.com") +|| dnsDomainIs(host, "www.lpga.com") +|| dnsDomainIs(host, "www.lsjunction.com") +|| dnsDomainIs(host, "www.lucasarts.com") +|| dnsDomainIs(host, "www.lucent.com") +|| dnsDomainIs(host, "www.lucie.com") +|| dnsDomainIs(host, "www.lunaland.co.za") +|| dnsDomainIs(host, "www.luth.se") +|| dnsDomainIs(host, "www.lyricalworks.com") +|| dnsDomainIs(host, "www.infoporium.com") +|| dnsDomainIs(host, "www.infostuff.com") +|| dnsDomainIs(host, "www.inhandmuseum.com") +|| dnsDomainIs(host, "www.inil.com") +|| dnsDomainIs(host, "www.inkspot.com") +|| dnsDomainIs(host, "www.inkyfingers.com") +|| dnsDomainIs(host, "www.innerauto.com") +|| dnsDomainIs(host, "www.innerbody.com") +|| dnsDomainIs(host, "www.inqpub.com") +|| dnsDomainIs(host, "www.insecta-inspecta.com") +|| dnsDomainIs(host, "www.insectclopedia.com") +|| dnsDomainIs(host, "www.inside-mexico.com") +|| dnsDomainIs(host, "www.insiders.com") +|| dnsDomainIs(host, "www.insteam.com") +|| dnsDomainIs(host, "www.intel.com") +|| dnsDomainIs(host, "www.intellicast.com") +|| dnsDomainIs(host, "www.interads.co.uk") +|| dnsDomainIs(host, "www.intercot.com") +|| dnsDomainIs(host, "www.intergraffix.com") +|| dnsDomainIs(host, "www.interknowledge.com") +|| dnsDomainIs(host, "www.interlog.com") +|| dnsDomainIs(host, "www.internet4kids.com") +|| dnsDomainIs(host, "www.intersurf.com") +|| dnsDomainIs(host, "www.inthe80s.com") +|| dnsDomainIs(host, "www.inventorsmuseum.com") +|| dnsDomainIs(host, "www.inwap.com") +|| dnsDomainIs(host, "www.ioa.com") +|| dnsDomainIs(host, "www.ionet.net") +|| dnsDomainIs(host, "www.iowacity.com") +|| dnsDomainIs(host, "www.ireland-now.com") +|| dnsDomainIs(host, "www.ireland.com") +|| dnsDomainIs(host, "www.irelandseye.com") +|| dnsDomainIs(host, "www.irlgov.ie") +|| dnsDomainIs(host, "www.isd.net") +|| dnsDomainIs(host, "www.islandnet.com") +|| dnsDomainIs(host, "www.isomedia.com") +|| dnsDomainIs(host, "www.itftennis.com") +|| dnsDomainIs(host, "www.itpi.dpi.state.nc.us") +|| dnsDomainIs(host, "www.itskwanzaatime.com") +|| dnsDomainIs(host, "www.itss.raytheon.com") +|| dnsDomainIs(host, "www.iuma.com") +|| dnsDomainIs(host, "www.iwaynet.net") +|| dnsDomainIs(host, "www.iwc.com") +|| dnsDomainIs(host, "www.iwight.gov.uk") +|| dnsDomainIs(host, "www.ixpres.com") +|| dnsDomainIs(host, "www.j.b.allen.btinternet.co.uk") +|| dnsDomainIs(host, "www.jabuti.com") +|| dnsDomainIs(host, "www.jackinthebox.com") +|| dnsDomainIs(host, "www.jaffebros.com") +|| dnsDomainIs(host, "www.jaguars.com") +|| dnsDomainIs(host, "www.jamaica-gleaner.com") +|| dnsDomainIs(host, "www.jamm.com") +|| dnsDomainIs(host, "www.janbrett.com") +|| dnsDomainIs(host, "www.janetstevens.com") +|| dnsDomainIs(host, "www.japan-guide.com") +|| dnsDomainIs(host, "www.jargon.net") +|| dnsDomainIs(host, "www.javelinamx.com") +|| dnsDomainIs(host, "www.jayjay.com") +|| dnsDomainIs(host, "www.jazclass.aust.com") + +) +return "PROXY proxy.hclib.org:80"; +else +return "PROXY 172.16.100.20:8080"; +} diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-89474.js b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-89474.js new file mode 100644 index 00000000000..4ed9f674c91 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-89474.js @@ -0,0 +1,62 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributors:darren.deridder@icarusproject.com, +* pschwartau@netscape.com +* Date: 07 July 2001 +* +* SUMMARY: Regression test for Bugzilla bug 89474 +* See http://bugzilla.mozilla.org/show_bug.cgi?id=89474 +* +* This test used to crash the JS shell. This was discovered +* by Darren DeRidder = V[i][1]) && (mois <= V[i][2]))) && + ((region == 0) || (region == V[i][3] )) && + ((confort == 0) || (confort == V[i][4] )) && + ((encadrement == 0) || + ((encadrement==3)&&((V[i][5]==1)||(V[i][5]==2)||(V[i][5] == 3))) || + ((encadrement==2)&&((V[i][5]==1)||(V[i][5]==2) )) || + ((encadrement==1)&&(encadrement==V[i][5]) ) || + ((encadrement>3)&&(encadrement==V[i][5]) )) && + ((typeVillage == 0) || (typeVillage == V[i][6] )) && + ((budget == 0) || (budget == V[i][7] ))) { + + bl = 1; + if ((sport1 != 0) || (sport2 != 0) || (sport3 != 0)) { + bl = 0; + liste = V[i][8]; + taille = liste.length; + for (j=0; j0, we end up calling inner() N+1 times: + * inner(N), inner(N-1), ... , inner(0). + * + * Each call to inner() increments |outer_d| by 1. + * The last call, inner(0), returns the final value + * of |outer_d|, which should be N+1. + */ +function outer(N) +{ + var outer_d = 0; + return inner(N); + + function inner(level) + { + outer_d++; + + if (level > 0) + return inner(level - 1); + else + return outer_d; + } +} + + +/* + * This only has meaning in Rhino - + */ +setDynamicScope(true); + +/* + * Recompile the function |outer| via eval() in order to + * feel the effect of the dynamic scope mode we have set. + */ +var s = outer.toString(); +eval(s); + +status = inSection(1); +actual = outer(-5); +expect = 1; +addThis(); + +status = inSection(2); +actual = outer(0); +expect = 1; +addThis(); + +status = inSection(3); +actual = outer(5); +expect = 6; +addThis(); + + +/* + * Sanity check: do same steps with the dynamic flag off + */ +setDynamicScope(false); + +/* + * Recompile the function |outer| via eval() in order to + * feel the effect of the dynamic scope mode we have set. + */ +eval(s); + +status = inSection(4); +actual = outer(-5); +expect = 1; +addThis(); + +status = inSection(5); +actual = outer(0); +expect = 1; +addThis(); + +status = inSection(6); +actual = outer(5); +expect = 6; +addThis(); + + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + + + +function setDynamicScope(flag) +{ + if (this.Packages) + { + var cx = this.Packages.org.mozilla.javascript.Context.getCurrentContext(); + cx.setCompileFunctionsWithDynamicScope(flag); + } +} + + +function addThis() +{ + statusitems[UBound] = status; + actualvalues[UBound] = actual; + expectedvalues[UBound] = expect; + UBound++; +} + + +function test() +{ + enterFunc('test'); + printBugNumber(bug); + printStatus(summary); + + for (var i=0; i
\n" . + "

Test results, $opt_engine_type


\n" . + "

\n" . + "Test List: $list_name
\n" . + "Skip List: $neglist_name
\n" . + ($#test_list + 1) . " test(s) selected, $tests_completed test(s) " . + "completed, $failures_reported failures reported " . + "($failure_pct% failed)
\n" . + "Engine command line: $engine_command
\n" . + "OS type: $os_type
\n"); + + if ($opt_engine_type =~ /^rhino/) { + open (JAVAOUTPUT, $opt_java_path . "java -fullversion " . + $redirect_command . " |"); + print OUTPUT ; + print OUTPUT "
"; + close (JAVAOUTPUT); + } + + print OUTPUT + ("Testcase execution time: $exec_time_string.
\n" . + "Tests completed on $completion_date.

\n"); + + if ($failures_reported > 0) { + print OUTPUT + ("[ Failure Details | " . + "Retest List | " . + "Test Selection Page ]
\n" . + "


\n" . + "\n" . + "

Failure Details


\n
" . + $html . + "
\n[ Top of Page | " . + "Top of Failures ]
\n" . + "
\n
\n" .
+         "\n" .
+         "

Retest List


\n" . + "# Retest List, $opt_engine_type, " . + "generated $completion_date.\n" . + "# Original test base was: $list_name.\n" . + "# $tests_completed of " . ($#test_list + 1) . + " test(s) were completed, " . + "$failures_reported failures reported.\n" . + join ("\n", @failed_tests) ); +#"
\n" . +# "[ Top of Page | " . +# "Top of Retest List ]
\n"); + } else { + print OUTPUT + ("

Whoop-de-doo, nothing failed!

\n"); + } + +#print OUTPUT ""; + +close (OUTPUT); + +&status ("Wrote results to '$opt_output_file'."); + +if ($opt_console_failures) { + &status ("$failures_reported test(s) failed"); +} + +} + +sub parse_args { + my ($option, $value, $lastopt); + + &dd ("checking command line options."); + + Getopt::Mixed::init ($options); + $Getopt::Mixed::order = $Getopt::Mixed::RETURN_IN_ORDER; + + while (($option, $value) = nextOption()) { + + if ($option eq "a") { + &dd ("opt: running with architecture $value."); + $value =~ s/^ //; + $opt_arch = "arch -$value"; + + } elsif ($option eq "b") { + &dd ("opt: setting bugurl to '$value'."); + $opt_bug_url = $value; + + } elsif ($option eq "c") { + &dd ("opt: setting classpath to '$value'."); + $opt_classpath = $value; + + } elsif (($option eq "e") || (($option eq "") && ($lastopt eq "e"))) { + &dd ("opt: adding engine $value."); + push (@opt_engine_list, $value); + + } elsif ($option eq "f") { + if (!$value) { + die ("Output file cannot be null.\n"); + } + &dd ("opt: setting output file to '$value'."); + $opt_user_output_file = 1; + $opt_output_file = $value; + + } elsif ($option eq "h") { + &usage; + + } elsif ($option eq "j") { + if (!($value =~ /[\/\\]$/)) { + $value .= "/"; + } + &dd ("opt: setting java path to '$value'."); + $opt_java_path = $value; + + } elsif ($option eq "k") { + &dd ("opt: displaying failures on console."); + $opt_console_failures=1; + + } elsif ($option eq "l" || (($option eq "") && ($lastopt eq "l"))) { + $option = "l"; + &dd ("opt: adding test list '$value'."); + push (@opt_test_list_files, $value); + + } elsif ($option eq "L" || (($option eq "") && ($lastopt eq "L"))) { + $option = "L"; + &dd ("opt: adding negative list '$value'."); + push (@opt_neg_list_files, $value); + + } elsif ($option eq "d") { + $option = 'd'; + &dd ("opt: using $value simulator SDK to run jsc."); + $opt_sim_sdk = $value; + + } elsif ($option eq "o") { + $opt_engine_params = $value; + &dd ("opt: setting engine params to '$opt_engine_params'."); + + } elsif ($option eq "p") { + $opt_suite_path = $value; + + if ($os_type eq "MAC") { + if (!($opt_suite_path =~ /\:$/)) { + $opt_suite_path .= ":"; + } + } else { + if (!($opt_suite_path =~ /[\/\\]$/)) { + $opt_suite_path .= "/"; + } + } + + &dd ("opt: setting suite path to '$opt_suite_path'."); + + } elsif ($option eq "s") { + $opt_shell_path = $value; + &dd ("opt: setting shell path to '$opt_shell_path'."); + + } elsif ($option eq "t") { + &dd ("opt: tracing output. (console failures at no extra charge.)"); + $opt_console_failures = 1; + $opt_trace = 1; + + } elsif ($option eq "u") { + &dd ("opt: setting lxr url to '$value'."); + $opt_lxr_url = $value; + + } elsif ($option eq "x") { + &dd ("opt: turning off exit munging."); + $opt_exit_munge = 0; + + } else { + &usage; + } + + $lastopt = $option; + + } + + Getopt::Mixed::cleanup(); + + if ($#opt_engine_list == -1) { + die "You must select a shell to test in.\n"; + } + +} + +# +# print the arguments that this script expects +# +sub usage { + print STDERR + ("\nusage: $0 [] \n" . + "(-a|--arch) run with a specific architecture on mac\n" . + "(-b|--bugurl) Bugzilla URL.\n" . + " (default is $opt_bug_url)\n" . + "(-c|--classpath) Classpath (Rhino only.)\n" . + "(-d|--sdk) Use a simulator SDK to run jsc\n" . + "(-e|--engine) ... Specify the type of engine(s) to test.\n" . + " is one or more of\n" . + " (squirrelfish|smopt|smdebug|lcopt|lcdebug|xpcshell|" . + "rhino|rhinoi|rhinoms|rhinomsi|rhino9|rhinoms9).\n" . + "(-f|--file) Redirect output to file named .\n" . + " (default is " . + "results--.html)\n" . + "(-h|--help) Print this message.\n" . + "(-j|--javapath) Location of java executable.\n" . + "(-k|--confail) Log failures to console (also.)\n" . + "(-l|--list) ... List of tests to execute.\n" . + "(-L|--neglist) ... List of tests to skip.\n" . + "(-o|--opt) Options to pass to the JavaScript engine.\n" . + " (Make sure to quote them!)\n" . + "(-p|--testpath) Root of the test suite. (default is ./)\n" . + "(-s|--shellpath) Location of JavaScript shell.\n" . + "(-t|--trace) Trace script execution.\n" . + "(-u|--lxrurl) Complete URL to tests subdirectory on lxr.\n" . + " (default is $opt_lxr_url)\n" . + "(-x|--noexitmunge) Don't do exit code munging (try this if it\n" . + " seems like your exit codes are turning up\n" . + " as exit signals.)\n"); + exit (1); + +} + +# +# get the shell command used to start the (either) engine +# +sub get_engine_command { + + my $retval; + + if ($opt_engine_type eq "rhino") { + &dd ("getting rhino engine command."); + $opt_rhino_opt = 0; + $opt_rhino_ms = 0; + $retval = &get_rhino_engine_command; + } elsif ($opt_engine_type eq "rhinoi") { + &dd ("getting rhinoi engine command."); + $opt_rhino_opt = -1; + $opt_rhino_ms = 0; + $retval = &get_rhino_engine_command; + } elsif ($opt_engine_type eq "rhino9") { + &dd ("getting rhino engine command."); + $opt_rhino_opt = 9; + $opt_rhino_ms = 0; + $retval = &get_rhino_engine_command; + } elsif ($opt_engine_type eq "rhinoms") { + &dd ("getting rhinoms engine command."); + $opt_rhino_opt = 0; + $opt_rhino_ms = 1; + $retval = &get_rhino_engine_command; + } elsif ($opt_engine_type eq "rhinomsi") { + &dd ("getting rhinomsi engine command."); + $opt_rhino_opt = -1; + $opt_rhino_ms = 1; + $retval = &get_rhino_engine_command; + } elsif ($opt_engine_type eq "rhinoms9") { + &dd ("getting rhinomsi engine command."); + $opt_rhino_opt = 9; + $opt_rhino_ms = 1; + $retval = &get_rhino_engine_command; + } elsif ($opt_engine_type eq "xpcshell") { + &dd ("getting xpcshell engine command."); + $retval = &get_xpc_engine_command; + } elsif ($opt_engine_type =~ /^lc(opt|debug)$/) { + &dd ("getting liveconnect engine command."); + $retval = &get_lc_engine_command; + } elsif ($opt_engine_type =~ /^sm(opt|debug)$/) { + &dd ("getting spidermonkey engine command."); + $retval = &get_sm_engine_command; + } elsif ($opt_engine_type =~ /^ep(opt|debug)$/) { + &dd ("getting epimetheus engine command."); + $retval = &get_ep_engine_command; + } elsif ($opt_engine_type eq "squirrelfish") { + &dd ("getting squirrelfish engine command."); + $retval = &get_squirrelfish_engine_command; + } else { + die ("Unknown engine type selected, '$opt_engine_type'.\n"); + } + + $retval .= " $opt_engine_params"; + + &dd ("got '$retval'"); + + return $retval; + +} + +# +# get the shell command used to run rhino +# +sub get_rhino_engine_command { + my $retval = $opt_java_path . ($opt_rhino_ms ? "jview " : "java "); + + if ($opt_shell_path) { + $opt_classpath = ($opt_classpath) ? + $opt_classpath . ":" . $opt_shell_path : + $opt_shell_path; + } + + if ($opt_classpath) { + $retval .= ($opt_rhino_ms ? "/cp:p" : "-classpath") . " $opt_classpath "; + } + + $retval .= "org.mozilla.javascript.tools.shell.Main"; + + if ($opt_rhino_opt) { + $retval .= " -opt $opt_rhino_opt"; + } + + return $retval; + +} + +# +# get the shell command used to run xpcshell +# +sub get_xpc_engine_command { + my $retval; + my $m5_home = @ENV{"MOZILLA_FIVE_HOME"} || + die ("You must set MOZILLA_FIVE_HOME to use the xpcshell" , + (!$unixish) ? "." : ", also " . + "setting LD_LIBRARY_PATH to the same directory may get rid of " . + "any 'library not found' errors.\n"); + + if (($unixish) && (!@ENV{"LD_LIBRARY_PATH"})) { + print STDERR "-#- WARNING: LD_LIBRARY_PATH is not set, xpcshell may " . + "not be able to find the required components.\n"; + } + + if (!($m5_home =~ /[\/\\]$/)) { + $m5_home .= "/"; + } + + $retval = $m5_home . "xpcshell"; + + if ($os_type eq "WIN") { + $retval .= ".exe"; + } + + $retval = &xp_path($retval); + + if (($os_type ne "MAC") && !(-x $retval)) { +# mac doesn't seem to deal with -x correctly + die ($retval . " is not a valid executable on this system.\n"); + } + + return $retval; + +} + +# +# get the shell command used to run squirrelfish +# +sub get_squirrelfish_engine_command { + my $retval; + + if ($opt_shell_path) { + # FIXME: Quoting the path this way won't work with paths with quotes in + # them. A better fix would be to use the multi-parameter version of + # open(), but that doesn't work on ActiveState Perl. + $retval = "\"" . $opt_shell_path . "\""; + } else { + die "Please specify a full path to the squirrelfish testing engine"; + } + + return $retval; +} + +# +# get the shell command used to run spidermonkey +# +sub get_sm_engine_command { + my $retval; + +# Look for Makefile.ref style make first. +# (On Windows, spidermonkey can be made by two makefiles, each putting the +# executable in a diferent directory, under a different name.) + + if ($opt_shell_path) { +# if the user provided a path to the shell, return that. + $retval = $opt_shell_path; + + } else { + + if ($os_type eq "MAC") { + $retval = $opt_suite_path . ":src:macbuild:JS"; + } else { + $retval = $opt_suite_path . "../src/"; + opendir (SRC_DIR_FILES, $retval); + my @src_dir_files = readdir(SRC_DIR_FILES); + closedir (SRC_DIR_FILES); + + my ($dir, $object_dir); + my $pattern = ($opt_engine_type eq "smdebug") ? + 'DBG.OBJ' : 'OPT.OBJ'; + +# scan for the first directory matching +# the pattern expected to hold this type (debug or opt) of engine + foreach $dir (@src_dir_files) { + if ($dir =~ $pattern) { + $object_dir = $dir; + last; + } + } + + if (!$object_dir && $os_type ne "WIN") { + die ("Could not locate an object directory in $retval " . + "matching the pattern *$pattern. Have you built the " . + "engine?\n"); + } + + if (!(-x $retval . $object_dir . "/js.exe") && ($os_type eq "WIN")) { +# On windows, you can build with js.mak as well as Makefile.ref +# (Can you say WTF boys and girls? I knew you could.) +# So, if the exe the would have been built by Makefile.ref isn't +# here, check for the js.mak version before dying. + if ($opt_shell_path) { + $retval = $opt_shell_path; + if (!($retval =~ /[\/\\]$/)) { + $retval .= "/"; + } + } else { + if ($opt_engine_type eq "smopt") { + $retval = "../src/Release/"; + } else { + $retval = "../src/Debug/"; + } + } + + $retval .= "jsshell.exe"; + + } else { + $retval .= $object_dir . "/js"; + if ($os_type eq "WIN") { + $retval .= ".exe"; + } + } + } # mac/ not mac + + $retval = &xp_path($retval); + + } # (user provided a path) + + + if (($os_type ne "MAC") && !(-x $retval)) { +# mac doesn't seem to deal with -x correctly + die ($retval . " is not a valid executable on this system.\n"); + } + + return $retval; + +} + +# +# get the shell command used to run epimetheus +# +sub get_ep_engine_command { + my $retval; + + if ($opt_shell_path) { +# if the user provided a path to the shell, return that - + $retval = $opt_shell_path; + + } else { + my $dir; + my $os; + my $debug; + my $opt; + my $exe; + + $dir = $opt_suite_path . "../../js2/src/"; + + if ($os_type eq "MAC") { +# +# On the Mac, the debug and opt builds lie in the same directory - +# + $os = "macbuild:"; + $debug = ""; + $opt = ""; + $exe = "JS2"; + } elsif ($os_type eq "WIN") { + $os = "winbuild/Epimetheus/"; + $debug = "Debug/"; + $opt = "Release/"; + $exe = "Epimetheus.exe"; + } else { + $os = ""; + $debug = ""; + $opt = ""; # <<<----- XXX THIS IS NOT RIGHT! CHANGE IT! + $exe = "epimetheus"; + } + + + if ($opt_engine_type eq "epdebug") { + $retval = $dir . $os . $debug . $exe; + } else { + $retval = $dir . $os . $opt . $exe; + } + + $retval = &xp_path($retval); + + }# (user provided a path) + + + if (($os_type ne "MAC") && !(-x $retval)) { +# mac doesn't seem to deal with -x correctly + die ($retval . " is not a valid executable on this system.\n"); + } + + return $retval; +} + +# +# get the shell command used to run the liveconnect shell +# +sub get_lc_engine_command { + my $retval; + + if ($opt_shell_path) { + $retval = $opt_shell_path; + } else { + if ($os_type eq "MAC") { + die "Don't know how to run the lc shell on the mac yet.\n"; + } else { + $retval = $opt_suite_path . "../src/liveconnect/"; + opendir (SRC_DIR_FILES, $retval); + my @src_dir_files = readdir(SRC_DIR_FILES); + closedir (SRC_DIR_FILES); + + my ($dir, $object_dir); + my $pattern = ($opt_engine_type eq "lcdebug") ? + 'DBG.OBJ' : 'OPT.OBJ'; + + foreach $dir (@src_dir_files) { + if ($dir =~ $pattern) { + $object_dir = $dir; + last; + } + } + + if (!$object_dir) { + die ("Could not locate an object directory in $retval " . + "matching the pattern *$pattern. Have you built the " . + "engine?\n"); + } + + $retval .= $object_dir . "/"; + + if ($os_type eq "WIN") { + $retval .= "lcshell.exe"; + } else { + $retval .= "lcshell"; + } + } # mac/ not mac + + $retval = &xp_path($retval); + + } # (user provided a path) + + + if (($os_type ne "MAC") && !(-x $retval)) { +# mac doesn't seem to deal with -x correctly + die ("$retval is not a valid executable on this system.\n"); + } + + return $retval; + +} + +sub get_os_type { + + if ("\n" eq "\015") { + return "MAC"; + } + + my $uname = `uname -a`; + + if ($uname =~ /WIN/) { + $uname = "WIN"; + } else { + chop $uname; + } + + &dd ("get_os_type returning '$uname'."); + return $uname; + +} + +sub get_test_list { + my @test_list; + my @neg_list; + + if ($#opt_test_list_files > -1) { + my $list_file; + + &dd ("getting test list from user specified source."); + + foreach $list_file (@opt_test_list_files) { + push (@test_list, &expand_user_test_list($list_file)); + } + } else { + &dd ("no list file, groveling in '$opt_suite_path'."); + + @test_list = &get_default_test_list($opt_suite_path); + } + + if ($#opt_neg_list_files > -1) { + my $list_file; + my $orig_size = $#test_list + 1; + my $actually_skipped; + + &dd ("getting negative list from user specified source."); + + foreach $list_file (@opt_neg_list_files) { + push (@neg_list, &expand_user_test_list($list_file)); + } + + @test_list = &subtract_arrays (\@test_list, \@neg_list); + + $actually_skipped = $orig_size - ($#test_list + 1); + + &dd ($actually_skipped . " of " . $orig_size . + " tests will be skipped."); + &dd ((($#neg_list + 1) - $actually_skipped) . " skip tests were " . + "not actually part of the test list."); + + + } + + return @test_list; + +} + +# +# reads $list_file, storing non-comment lines into an array. +# lines in the form suite_dir/[*] or suite_dir/test_dir/[*] are expanded +# to include all test files under the specified directory +# +sub expand_user_test_list { + my ($list_file) = @_; + my @retval = (); + +# +# Trim off the leading path separator that begins relative paths on the Mac. +# Each path will get concatenated with $opt_suite_path, which ends in one. +# +# Also note: +# +# We will call expand_test_list_entry(), which does pattern-matching on $list_file. +# This will make the pattern-matching the same as it would be on Linux/Windows - +# + if ($os_type eq "MAC") { + $list_file =~ s/^$path_sep//; + } + + if ($list_file =~ /\.js$/ || -d $opt_suite_path . $list_file) { + + push (@retval, &expand_test_list_entry($list_file)); + + } else { + + open (TESTLIST, $list_file) || + die("Error opening test list file '$list_file': $!\n"); + + while () { + s/\r*\n*$//; + if (!(/\s*\#/)) { +# It's not a comment, so process it + push (@retval, &expand_test_list_entry($_)); + } + } + + close (TESTLIST); + + } + + return @retval; + +} + + +# +# Currently expect all paths to be RELATIVE to the top-level tests directory. +# One day, this should be improved to allow absolute paths as well - +# +sub expand_test_list_entry { + my ($entry) = @_; + my @retval; + + if ($entry =~ /\.js$/) { +# it's a regular entry, add it to the list + if (-f $opt_suite_path . $entry) { + push (@retval, $entry); + } else { + status ("testcase '$entry' not found."); + } + } elsif ($entry =~ /(.*$path_sep[^\*][^$path_sep]*)$path_sep?\*?$/) { +# Entry is in the form suite_dir/test_dir[/*] +# so iterate all tests under it + my $suite_and_test_dir = $1; + my @test_files = &get_js_files ($opt_suite_path . + $suite_and_test_dir); + my $i; + + foreach $i (0 .. $#test_files) { + $test_files[$i] = $suite_and_test_dir . $path_sep . + $test_files[$i]; + } + + splice (@retval, $#retval + 1, 0, @test_files); + + } elsif ($entry =~ /([^\*][^$path_sep]*)$path_sep?\*?$/) { +# Entry is in the form suite_dir[/*] +# so iterate all test dirs and tests under it + my $suite = $1; + my @test_dirs = &get_subdirs ($opt_suite_path . $suite); + my $test_dir; + + foreach $test_dir (@test_dirs) { + my @test_files = &get_js_files ($opt_suite_path . $suite . + $path_sep . $test_dir); + my $i; + + foreach $i (0 .. $#test_files) { + $test_files[$i] = $suite . $path_sep . $test_dir . $path_sep . + $test_files[$i]; + } + + splice (@retval, $#retval + 1, 0, @test_files); + } + + } else { + die ("Dont know what to do with list entry '$entry'.\n"); + } + + return @retval; + +} + +# +# Grovels through $suite_path, searching for *all* test files. Used when the +# user doesn't supply a test list. +# +sub get_default_test_list { + my ($suite_path) = @_; + my @suite_list = &get_subdirs($suite_path); + my $suite; + my @retval; + + foreach $suite (@suite_list) { + my @test_dir_list = get_subdirs ($suite_path . $suite); + my $test_dir; + + foreach $test_dir (@test_dir_list) { + my @test_list = get_js_files ($suite_path . $suite . $path_sep . + $test_dir); + my $test; + + foreach $test (@test_list) { + $retval[$#retval + 1] = $suite . $path_sep . $test_dir . + $path_sep . $test; + } + } + } + + return @retval; + +} + +# +# generate an output file name based on the date +# +sub get_tempfile_name { + my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = + &get_padded_time (localtime); + my $rv; + + if ($os_type ne "MAC") { + $rv = "results-" . $year . "-" . $mon . "-" . $mday . "-" . $hour . + $min . $sec . "-" . $opt_engine_type; + } else { + $rv = "res-" . $year . $mon . $mday . $hour . $min . $sec . "-" . + $opt_engine_type + } + + return $rv . ".html"; +} + +sub get_padded_time { + my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = @_; + + $mon++; + $mon = &zero_pad($mon); + $year += 1900; + $mday= &zero_pad($mday); + $sec = &zero_pad($sec); + $min = &zero_pad($min); + $hour = &zero_pad($hour); + + return ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst); + +} + +sub zero_pad { + my ($string) = @_; + + $string = ($string < 10) ? "0" . $string : $string; + return $string; +} + +sub subtract_arrays { + my ($whole_ref, $part_ref) = @_; + my @whole = @$whole_ref; + my @part = @$part_ref; + my $line; + + foreach $line (@part) { + @whole = grep (!/$line/, @whole); + } + + return @whole; + +} + +# +# Convert unix path to mac style. +# +sub unix_to_mac { + my ($path) = @_; + my @path_elements = split ("/", $path); + my $rv = ""; + my $i; + + foreach $i (0 .. $#path_elements) { + if ($path_elements[$i] eq ".") { + if (!($rv =~ /\:$/)) { + $rv .= ":"; + } + } elsif ($path_elements[$i] eq "..") { + if (!($rv =~ /\:$/)) { + $rv .= "::"; + } else { + $rv .= ":"; + } + } elsif ($path_elements[$i] ne "") { + $rv .= $path_elements[$i] . ":"; + } + + } + + $rv =~ s/\:$//; + + return $rv; +} + +# +# Convert unix path to win style. +# +sub unix_to_win { + my ($path) = @_; + + if ($path_sep ne $win_sep) { + $path =~ s/$path_sep/$win_sep/g; + } + + return $path; +} + +# +# Windows shells require "/" or "\" as path separator. +# Find out the one used in the current Windows shell. +# +sub get_win_sep { + my $path = $ENV{"PATH"} || $ENV{"Path"} || $ENV{"path"}; + $path =~ /\\|\//; + return $&; +} + +# +# Convert unix path to correct style based on platform. +# +sub xp_path { + my ($path) = @_; + + if ($os_type eq "MAC") { + return &unix_to_mac($path); + } elsif($os_type eq "WIN") { + return &unix_to_win($path); + } else { + return $path; + } +} + +sub numericcmp($$) +{ + my ($aa, $bb) = @_; + + my @a = split /(\d+)/, $aa; + my @b = split /(\d+)/, $bb; + + while (@a && @b) { + my $a = shift @a; + my $b = shift @b; + return $a <=> $b if $a =~ /^\d/ && $b =~ /^\d/ && $a != $b; + return $a cmp $b if $a ne $b; + } + + return @a <=> @b; +} + +# +# given a directory, return an array of all subdirectories +# +sub get_subdirs { + my ($dir) = @_; + my @subdirs; + + if ($os_type ne "MAC") { + if (!($dir =~ /\/$/)) { + $dir = $dir . "/"; + } + } else { + if (!($dir =~ /\:$/)) { + $dir = $dir . ":"; + } + } + opendir (DIR, $dir) || die ("couldn't open directory $dir: $!"); + my @testdir_contents = sort numericcmp readdir(DIR); + closedir(DIR); + + foreach (@testdir_contents) { + if ((-d ($dir . $_)) && ($_ ne 'CVS') && ($_ ne '.') && ($_ ne '..')) { + @subdirs[$#subdirs + 1] = $_; + } + } + + return @subdirs; +} + +# +# given a directory, return an array of all the js files that are in it. +# +sub get_js_files { + my ($test_subdir) = @_; + my (@js_file_array, @subdir_files); + + opendir (TEST_SUBDIR, $test_subdir) || die ("couldn't open directory " . + "$test_subdir: $!"); + @subdir_files = sort numericcmp readdir(TEST_SUBDIR); + closedir( TEST_SUBDIR ); + + foreach (@subdir_files) { + if ($_ =~ /\.js$/) { + $js_file_array[$#js_file_array+1] = $_; + } + } + + return @js_file_array; +} + +sub report_failure { + my ($test, $message, $bug_number) = @_; + my $bug_line = ""; + + $failures_reported++; + + $message =~ s/\n+/\n/g; + $test =~ s/\:/\//g; + + if ($opt_console_failures) { + if($bug_number) { + print STDERR ("*-* Testcase $test failed:\nBug Number $bug_number". + "\n$message\n"); + } else { + print STDERR ("*-* Testcase $test failed:\n$message\n"); + } + } + + $message =~ s/\n/
\n/g; + $html .= ""; + + if ($bug_number) { + $bug_line = "". + "Bug Number $bug_number"; + } + + if ($opt_lxr_url) { + $test =~ /\/?([^\/]+\/[^\/]+\/[^\/]+)$/; + $test = $1; + $html .= "
". + "Testcase $1 " . + "failed $bug_line
\n"; + } else { + $html .= "
". + "Testcase $test failed $bug_line
\n"; + } + + $html .= " [ "; + if ($failures_reported > 1) { + $html .= "" . + "Previous Failure | "; + } + + $html .= "" . + "Next Failure | " . + "Top of Page ]
\n" . + "$message
\n"; + + @failed_tests[$#failed_tests + 1] = $test; + +} + +sub dd { + + if ($opt_trace) { + print ("-*- ", @_ , "\n"); + } + +} + +sub status { + + print ("-#- ", @_ , "\n"); + +} + +sub int_handler { + my $resp; + + do { + print ("\n*** User Break: Just [Q]uit, Quit and [R]eport, [C]ontinue ?"); + $resp = ; + } until ($resp =~ /[QqRrCc]/); + + if ($resp =~ /[Qq]/) { + print ("User Exit. No results were generated.\n"); + exit 1; + } elsif ($resp =~ /[Rr]/) { + $user_exit = 1; + } + +} diff --git a/Source/JavaScriptCore/tests/mozilla/menufoot.html b/Source/JavaScriptCore/tests/mozilla/menufoot.html new file mode 100644 index 00000000000..da7902e6775 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/menufoot.html @@ -0,0 +1,8 @@ + + + +
+
+ + + diff --git a/Source/JavaScriptCore/tests/mozilla/menuhead.html b/Source/JavaScriptCore/tests/mozilla/menuhead.html new file mode 100644 index 00000000000..827dc43375c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/menuhead.html @@ -0,0 +1,138 @@ + + + + Core JavaScript Tests + + + + + + + +

Core JavaScript Tests

+ +
+ + diff --git a/Source/JavaScriptCore/tests/mozilla/mkhtml.pl b/Source/JavaScriptCore/tests/mozilla/mkhtml.pl new file mode 100644 index 00000000000..99cb2c5ada2 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/mkhtml.pl @@ -0,0 +1,84 @@ +#!/ns/tools/bin/perl5 + +# mkhtml.pl cruises through your $MOZ_SRC/mozilla/js/tests/ subdirectories, +# and for any .js file it finds, creates an HTML file that includes: +# $MOZ_SRC/mozilla/js/tests/$suite/shell.js, $ +# MOZ_SRC/mozilla/js/tests/$suite/browser.js, +# and the test.js file. +# +# + +$moz_src = $ENV{"MOZ_SRC"} || + die ("You need to set your MOZ_SRC environment variable.\n"); + +$test_home = $moz_src ."/js/tests/"; + +opendir (TEST_HOME, $test_home); +@__suites = readdir (TEST_HOME); +closedir TEST_HOME; + +foreach (@__suites ) { + if ( -d $_ && $_ !~ /\./ && $_ !~ 'CVS' ) { + $suites[$#suites+1] = $_; + } +} +if ( ! $ARGV[0] ) { + die ( "Specify a directory: ". join(" ", @suites) ."\n" ); +} + +$js_test_dir = $moz_src . "/js/tests/" . $ARGV[0] ."/"; + +print "Generating html files for the tests in $js_test_dir\n"; + +$shell_js = $js_test_dir . "shell.js"; +$browser_js = $js_test_dir . "browser.js"; + +# cd to the test directory +chdir $js_test_dir || + die "Couldn't chdir to js_test_dir, which is $js_test_dir\n"; + +print ( "js_test_dir is $js_test_dir\n" ); + +# read the test directory +opendir ( JS_TEST_DIR, $js_test_dir ); +# || die "Couldn't open js_test_dir, which is $js_test_dir\n"; +@js_test_dir_items = readdir( JS_TEST_DIR ); +# || die "Couldn't read js_test_dir, which is $js_test_dir\n"; +closedir( JS_TEST_DIR ); + +print ("The js_test_dir_items are: " . join( ",", @js_test_dir_items ) . "\n"); + +# figure out which of the items are directories +foreach $js_test_subdir ( @js_test_dir_items ) { + if ( -d $js_test_subdir ) { + + $js_test_subdir = $js_test_dir ."/" . $js_test_subdir; + chdir $js_test_subdir + || die "Couldn't chdir to js_test_subdir $js_test_subdir\n"; + print "Just chdir'd to $js_test_subdir \n"; + + opendir( JS_TEST_SUBDIR, $js_test_subdir ); + @subdir_tests = readdir( JS_TEST_SUBDIR ); + closedir( JS_TEST_SUBDIR ); + + foreach ( @subdir_tests ) { + $js_test = $_; + + if ( $_ =~ /\.js$/ ) { + s/\.js$/\.html/; + print $_ ."\n"; + open( HTML_TEST, "> $_") + || die "Can't open html file $test_html\n"; + print HTML_TEST + ''; + print HTML_TEST + ''; + print HTML_TEST + ''; + close HTML_TEST; + } + } + } + chdir $js_test_dir; +} + diff --git a/Source/JavaScriptCore/tests/mozilla/mklistpage.pl b/Source/JavaScriptCore/tests/mozilla/mklistpage.pl new file mode 100644 index 00000000000..9479abf9a37 --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/mklistpage.pl @@ -0,0 +1,261 @@ +#!/usr/bin/perl +# +# The contents of this file are subject to the Netscape Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/NPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is JavaScript Core Tests. +# +# The Initial Developer of the Original Code is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1997-1999 Netscape Communications Corporation. All +# Rights Reserved. +# +# Alternatively, the contents of this file may be used under the +# terms of the GNU Public License (the "GPL"), in which case the +# provisions of the GPL are applicable instead of those above. +# If you wish to allow use of your version of this file only +# under the terms of the GPL and not to allow others to use your +# version of this file under the NPL, indicate your decision by +# deleting the provisions above and replace them with the notice +# and other provisions required by the GPL. If you do not delete +# the provisions above, a recipient may use your version of this +# file under either the NPL or the GPL. +# +# Contributers: +# Robert Ginda +# +# Creates the meat of a test suite manager page, requites menuhead.html and menufoot.html +# to create the complete page. The test suite manager lets you choose a subset of tests +# to run under the runtests2.pl script. +# + +local $lxr_url = "http://lxr.mozilla.org/mozilla/source/js/tests/"; +local $suite_path = $ARGV[0] || "./"; +local $uid = 0; # radio button unique ID +local $html = ""; # html output +local $javascript = ""; # script output + +&main; + +print (&scriptTag($javascript) . "\n"); +print ($html); + +sub main { + local $i, @suite_list; + + if (!($suite_path =~ /\/$/)) { + $suite_path = $suite_path . "/"; + } + + @suite_list = sort(&get_subdirs ($suite_path)); + + $javascript .= "suites = new Object();\n"; + + $html .= "

Test Suites:

\n"; + $html .= "
\n"; + $html .= " "; + $html .= " "; + + # suite menu + $html .= "\n"; + foreach $suite (@suite_list) { + local @readme_text = ("No description available."); + if (open (README, $suite_path . $suite . "/README")) { + @readme_text = ; + close (README); + } + $html .= "" . + ""; + $html .= ""; + $html .= ""; + $html .= ""; + } + $html .= "
$suite@readme_text "; + $html .= "
\n"; + $html .= ""; + $html .= "
"; + $html .= "
\n"; + + foreach $i (0 .. $#suite_list) { + local $prev_href = ($i > 0) ? "\#SUITE_" . $suite_list[$i - 1] : ""; + local $next_href = ($i < $#suite_list) ? "\#SUITE_" . $suite_list[$i + 1] : ""; + &process_suite ($suite_path, $suite_list[$i], $prev_href, $next_href); + } + + $html .= "
\n"; + +} + +# +# Append detail from a 'suite' directory (eg: ecma, ecma_2, js1_1, etc.), calling +# process_test_dir for subordinate categories. +# +sub process_suite { + local ($suite_path, $suite, $prev_href, $next_href) = @_; + local $i, @test_dir_list; + + # suite js object + $javascript .= "suites[\"$suite\"] = {testDirs: {}};\n"; + + @test_dir_list = sort(&get_subdirs ($test_home . $suite)); + + # suite header + $html .= "
$suite " . + "(" . ($#test_dir_list + 1) . " Sub-Categories)
\n"; + $html .= " \n"; + $html .= " " . + "[ Top of page "; + if ($prev_href) { + $html .= " | Previous Suite "; + } + if ($next_href) { + $html .= " | Next Suite "; + } + $html .= "]\n"; + + $html .= "
\n
\n"; + + foreach $i (0 .. $#test_dir_list) { + local $prev_href = ($i > 0) ? "\#TESTDIR_" . $suite . $test_dir_list[$i - 1] : + ""; + local $next_href = ($i < $#test_dir_list) ? + "\#TESTDIR_" . $suite . $test_dir_list[$i + 1] : ""; + &process_test_dir ($suite_path . $suite . "/", $test_dir_list[$i], $suite, + $prev_href, $next_href); + } + + $html .= "
\n"; + +} + +# +# Append detail from a test directory, calling process_test for subordinate js files +# +sub process_test_dir { + local ($test_dir_path, $test_dir, $suite, $prev_href, $next_href) = @_; + + @test_list = sort(&get_js_files ($test_dir_path . $test_dir)); + + $javascript .= "suites[\"$suite\"].testDirs[\"$test_dir\"] = {tests: {}};\n"; + + $html .= " \n"; + $html .= "
$test_dir (" . ($#test_list + 1) . + " tests)
\n"; + $html .= " \n"; + $html .= " "; + $html .= "[ Top of $suite Suite "; + if ($prev_href) { + $html .= "| Previous Category "; + } + if ($next_href) { + $html .= " | Next Category "; + } + $html .= "]
\n"; + $html .= "
\n"; + + $html .= "
\n"; + + foreach $test (@test_list) { + &process_test ($test_dir_path . $test_dir, $test); + } + + $html .= "
\n"; +} + + +# +# Append detail from a single JavaScript file. +# +sub process_test { + local ($test_dir_path, $test) = @_; + local $title = ""; + + $uid++; + + open (TESTCASE, $test_dir_path . "/" . $test) || + die ("Error opening " . $test_dir_path . "/" . $test); + + while () { + if (/.*TITLE\s+\=\s+\"(.*)\"/) { + $title = $1; + break; + } + } + close (TESTCASE); + + $javascript .= "suites[\"$suite\"].testDirs[\"$test_dir\"].tests" . + "[\"$test\"] = \"radio$uid\"\n"; + $html .= " " . + "" . + "$test $title
\n"; + +} + +sub scriptTag { + + return (""); + +} + +# +# given a directory, return an array of all subdirectories +# +sub get_subdirs { + local ($dir) = @_; + local @subdirs; + + if (!($dir =~ /\/$/)) { + $dir = $dir . "/"; + } + + opendir (DIR, $dir) || die ("couldn't open directory $dir: $!"); + local @testdir_contents = readdir(DIR); + closedir(DIR); + + foreach (@testdir_contents) { + if ((-d ($dir . $_)) && ($_ ne 'CVS') && ($_ ne '.') && ($_ ne '..')) { + @subdirs[$#subdirs + 1] = $_; + } + } + + return @subdirs; +} + +# +# given a directory, return an array of all the js files that are in it. +# +sub get_js_files { + local ($test_subdir) = @_; + local @js_file_array; + + opendir ( TEST_SUBDIR, $test_subdir) || die ("couldn't open directory " . + "$test_subdir: $!"); + @subdir_files = readdir( TEST_SUBDIR ); + closedir( TEST_SUBDIR ); + + foreach ( @subdir_files ) { + if ( $_ =~ /\.js$/ ) { + $js_file_array[$#js_file_array+1] = $_; + } + } + + return @js_file_array; +} + + diff --git a/Source/JavaScriptCore/tests/mozilla/runtests.pl b/Source/JavaScriptCore/tests/mozilla/runtests.pl new file mode 100644 index 00000000000..f6f05fb238f --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/runtests.pl @@ -0,0 +1,495 @@ +#!/tools/ns/bin/perl5 +# +# simple script that executes JavaScript tests. you have to build the +# stand-alone, js shell executable (which is not the same as the dll that gets +# built for mozilla). see the readme at +# http://lxr.mozilla.org/mozilla/source/js/src/README.html for instructions on +# how to build the jsshell. +# +# this is just a quick-n-dirty script. for full reporting, you need to run +# the test driver, which requires java and is currently not available on +# mozilla.org. +# +# this test looks for an executable JavaScript shell in +# %MOZ_SRC/mozilla/js/src/[platform]-[platform-version]-OPT.OBJ/js, +# which is the default build location when you build using the instructions +# at http://lxr.mozilla.org/mozilla/source/js/src/README.html +# +# +# christine@netscape.com +# + +&parse_args; +&setup_env; +&main_test_loop; +&cleanup_env; + +# +# given a main directory, assume that there is a file called 'shell.js' +# in it. then, open all the subdirectories, and look for js files. +# for each test.js that is found, execute the shell, and pass shell.js +# and the test.js as file arguments. redirect all process output to a +# file. +# +sub main_test_loop { + foreach $suite ( &get_subdirs( $test_dir )) { + foreach $subdir (&get_subdirs( $suite, $test_dir )) { + @jsfiles = &get_js_files($subdir); + execute_js_tests(@jsfiles); + } + } +} + +# +# given a directory, return an array of all subdirectories +# +sub get_subdirs{ + local ($dir, $path) = @_; + local @subdirs; + + local $dir_path = $path . $dir; + chdir $dir_path; + + opendir ( DIR, ${dir_path} ); + local @testdir_contents = readdir( DIR ); + closedir( DIR ); + + foreach (@testdir_contents) { + if ( (-d $_) && ($_ !~ 'CVS') && ( $_ ne '.') && ($_ ne '..')) { + @subdirs[$#subdirs+1] = $_; + } + } + chdir $path; + return @subdirs; +} + +# +# given a directory, return an array of all the js files that are in it. +# +sub get_js_files { + ( $test_subdir ) = @_; + local @js_file_array; + + $current_test_dir = $test_dir ."/". $suite . "/" .$test_subdir; + chdir $current_test_dir; + + opendir ( TEST_SUBDIR, ${current_test_dir} ); + @subdir_files = readdir( TEST_SUBDIR ); + closedir( TOP_LEVEL_BUILD_DIR ); + + foreach ( @subdir_files ) { + if ( $_ =~ /\.js$/ ) { + $js_file_array[$#js_file_array+1] = $_; + } + } + + return @js_file_array; +} + +# +# given an array of test.js files, execute the shell command and pass +# the shell.js and test.js files as file arguments. redirect process +# output to a file. if $js_verbose is set (not recommended), write all +# testcase output to the output file. if $js_quiet is set, only write +# failed test case information to the output file. the default setting +# is to write a line for each test file, and whether each file passed +# or failed. +# +sub execute_js_tests { + (@js_file_array) = @_; + + $js_printed_suitename = 0; + if ( !$js_quiet ) { + &js_print_suitename; + } + + foreach $js_test (@js_file_array) { + $js_printed_filename = 0; + $js_test_bugnumber = 0; + $runtime_error = ""; + + local $passed = -1; + + # create the test command + $test_command = + $shell_command . + " -f $test_dir/$suite/shell.js " . + " -f $test_dir/$suite/$subdir/$js_test"; + + if ( !$js_quiet ) { + &js_print_filename; + } else { + print '.'; + } + + $test_path = $test_dir ."/" . $suite ."/". $test_subdir ."/". $js_test; + + + if ( !-e $test_path ) { + &js_print( " FAILED! file not found\n", + "", "
\n"); + } else { + open( RUNNING_TEST, "$test_command" . ' 2>&1 |'); + + + # this is where we want the tests to provide a lot more information + # that this script must parse so that we can + + while( ){ + if ( $js_verbose && !$js_quiet ) { + &js_print ($_ ."\n", "", "
\n"); + } + if ( $_ =~ /BUGNUMBER/ ) { + $js_test_bugnumber = $_; + } + if ( $_ =~ /PASSED/ && $passed == -1 ) { + $passed = 1; + } + if ( $_ =~ /FAILED/ && $_ =~ /expected/) { + &js_print_suitename; + &js_print_filename; + &js_print_bugnumber; + + local @msg = split ( "FAILED", $_ ); + &js_print ( $passed ? "\n" : "" ); + &js_print( " " . $msg[0], "  " ); + &js_print( "FAILED", "", ""); + &js_print( $msg[1], "", "
\n" ); + $passed = 0; + } + if ( $_ =~ /$js_test/ ) { + $runtime_error .= $_; + } + } + close( RUNNING_TEST ); + + # + # figure out whether the test passed or failed. print out an + # appropriate level of output based on the value of $js_quiet + # + if ( $js_test =~ /-n\.js$/ ) { + if ( $runtime_error ) { + if ( !$js_quiet ) { + &js_print( " PASSED!\n ", + "  ", + "
" ); + if ( $js_errors ) { + &js_print( $runtime_error, "
", "
"); + } + } + } else { + &js_print_suitename; + &js_print_filename; + &js_print_bugnumber; + &js_print( " FAILED! ", "  ", + ""); + &js_print( " Should have resulted in an error\n", + "","
" ); + } + } else { + if ( $passed == 1 && !$js_quiet) { + &js_print( " PASSED!\n " , "  ", + "
" ); + } else { + if ($passed == -1) { + &js_print_suitename; + &js_print_filename; + &js_print_bugnumber; + &js_print( " FAILED!\n " , "  ", + "
" ); + &js_print( " Missing 'PASSED' in output\n", "","
" ); + &js_print( $log, "output:
", "
" ); + } + } + + } + } + } +} + +# +# figure out what os we're on, the default name of the object directory +# +sub setup_env { + # MOZ_SRC must be set, so we can figure out where the + # JavaScript executable is + $moz_src = $ENV{"MOZ_SRC"} + || die( "You need to set your MOZ_SRC environment variable.\n" ); + $src_dir = $moz_src . '/mozilla/js/src/'; + + # JS_TEST_DIR must be set so we can figure out where the tests are. + $test_dir = $ENV{"JS_TEST_DIR"}; + + # if it's not set, look for it relative to $moz_src + if ( !$test_dir ) { + $test_dir = $moz_src . '/mozilla/js/tests/'; + } + + # make sure that the test dir exists + if ( ! -e $test_dir ) { + die "The JavaScript Test Library could not be found at $test_dir.\n" . + "Check the tests out from /mozilla/js/tests or\n" . + "Set the value of your JS_TEST_DIR environment variable\n " . + "to the location of the test library.\n"; + } + + # make sure that the test dir ends with a trailing slash + $test_dir .= '/'; + + chdir $src_dir; + + # figure out which platform we're on, and figure out where the object + # directory is + + $machine_os = `uname -s`; + + if ( $machine_os =~ /WIN/ ) { + $machine_os = 'WIN'; + $object_dir = ($js_debug) ? 'Debug' : 'Release'; + $js_exe = 'jsshell.exe'; + } else { + chop $machine_os; + $js_exe = 'js'; + + # figure out what the object directory is. on all platforms, + # it's the directory that ends in OBJ. if $js_debug is set, + # look the directory that ends with or DBG.OBJ; otherwise + # look for the directory that ends with OPT.OBJ + + opendir ( SRC_DIR_FILES, $src_dir ); + @src_dir_files = readdir( SRC_DIR_FILES ); + closedir ( SRC_DIR_FILES ); + + $object_pattern = $js_debug ? 'DBG.OBJ' : 'OPT.OBJ'; + + foreach (@src_dir_files) { + if ( $_ =~ /$object_pattern/ && $_ =~ $machine_os) { + $object_dir = $_; + } + } + } + if ( ! $object_dir ) { + die( "Couldn't find an object directory in $src_dir.\n" ); + } + + # figure out what the name of the javascript executable should be, and + # make sure it's there. if it's not there, give a helpful message so + # the user can figure out what they need to do next. + + + if ( ! $js_exe_full_path ) { + $shell_command = $src_dir . $object_dir .'/'. $js_exe; + } else { + $shell_command = $js_exe_full_path; + } + + if ( !-e $shell_command ) { + die ("Could not find JavaScript shell executable $shell_command.\n" . + "Check the value of your MOZ_SRC environment variable.\n" . + "Currently, MOZ_SRC is set to $ENV{\"MOZ_SRC\"}\n". + "See the readme at http://lxr.mozilla.org/mozilla/src/js/src/ " . + "for instructions on building the JavaScript shell.\n" ); + } + + # set the output file name. let's base its name on the date and platform, + # and give it a sequence number. + + if ( $get_output ) { + $js_output = &get_output; + } + if ($js_output) { + print( "Writing results to $js_output\n" ); + chdir $test_dir; + open( JS_OUTPUT, "> ${js_output}" ) || + die "Can't open log file $js_output\n"; + close JS_OUTPUT; + } + + # get the start time + $start_time = time; + + # print out some nice stuff + $start_date = &get_date; + &js_print( "JavaScript tests started: " . $start_date, "

", "

" ); + + &js_print ("Executing all the tests under $test_dir\n against " . + "$shell_command\n", "

", "

" ); +} + +# +# parse arguments. see usage for what arguments are expected. +# +sub parse_args { + $i = 0; + while( $i < @ARGV ){ + if ( $ARGV[$i] eq '--threaded' ) { + $js_threaded = 1; + } elsif ( $ARGV[$i] eq '--d' ) { + $js_debug = 1; + } elsif ( $ARGV[$i] eq '--14' ) { + $js_version = '14'; + } elsif ( $ARGV[$i] eq '--v' ) { + $js_verbose = 1; + } elsif ( $ARGV[$i] eq '-f' ) { + $js_output = $ARGV[++$i]; + } elsif ( $ARGV[$i] eq '--o' ) { + $get_output = 1; + } elsif ($ARGV[$i] eq '--e' ) { + $js_errors = 1; + } elsif ($ARGV[$i] eq '--q' ) { + $js_quiet = 1; + } elsif ($ARGV[$i] eq '--h' ) { + die &usage; + } elsif ( $ARGV[$i] eq '-E' ) { + $js_exe_full_path = $ARGV[$i+1]; + $i++; + } else { + die &usage; + } + $i++; + } + + # + # if no output options are provided, show some output and write to file + # + if ( !$js_verbose && !$js_output && !$get_output ) { + $get_output = 1; + } +} + +# +# print the arguments that this script expects +# +sub usage { + die ("usage: $0\n" . + "--q Quiet mode -- only show information for tests that failed\n". + "--e Show runtime error messages for negative tests\n" . + "--v Verbose output -- show all test cases (not recommended)\n" . + "--o Send output to file whose generated name is based on date\n". + "--d Look for a debug JavaScript executable (default is optimized)\n" . + "-f Redirect output to file named \n" + ); +} + +# +# if $js_output is set, print to file as well as stdout +# +sub js_print { + ($string, $start_tag, $end_tag) = @_; + + if ($js_output) { + open( JS_OUTPUT, ">> ${js_output}" ) || + die "Can't open log file $js_output\n"; + + print JS_OUTPUT "$start_tag $string $end_tag"; + close JS_OUTPUT; + } + print $string; +} + +# +# close open files +# +sub cleanup_env { + # print out some nice stuff + $end_date = &get_date; + &js_print( "\nTests complete at $end_date", "
", "" ); + + # print out how long it took to complete + $end_time = time; + + $test_seconds = ( $end_time - $start_time ); + + &js_print( "Start Date: $start_date\n", "
" ); + &js_print( "End Date: $end_date\n", "
" ); + &js_print( "Test Time: $test_seconds seconds\n", "
" ); + + if ($js_output ) { + if ( !$js_verbose) { + &js_print( "Results were written to " . $js_output ."\n", + "
", "
" ); + } + close JS_OUTPUT; + } +} + + +# +# get the current date and time +# +sub get_date { + &get_localtime; + $now = $year ."/". $mon ."/". $mday ." ". $hour .":". + $min .":". $sec ."\n"; + return $now; + +} +sub get_localtime { + ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = + localtime; + $mon++; + $mon = &zero_pad($mon); + $year= ($year < 2000) ? "19" . $year : $year; + $mday= &zero_pad($mday); + $sec = &zero_pad($sec); + $min = &zero_pad($min); + $hour = &zero_pad($hour); +} +sub zero_pad { + local ($string) = @_; + $string = ($string < 10) ? "0" . $string : $string; + return $string; +} + +# +# generate an output file name based on the date +# +sub get_output { + &get_localtime; + + chdir $test_dir; + + $js_output = $test_dir ."/". $year .'-'. $mon .'-'. $mday ."\.1.html"; + + $output_file_found = 0; + + while ( !$output_file_found ) { + if ( -e $js_output ) { + # get the last sequence number - everything after the dot + @seq_no = split( /\./, $js_output, 2 ); + $js_output = $seq_no[0] .".". (++$seq_no[1]) . "\.html"; + } else { + $output_file_found = 1; + } + } + return $js_output; +} + +sub js_print_suitename { + if ( !$js_printed_suitename ) { + &js_print( "$suite\\$subdir\n", "
", + "
" ); + } + $js_printed_suitename = 1; +} + +sub js_print_filename { + if ( !$js_printed_filename ) { + &js_print( "$js_test\n", "", "
" ); + $js_printed_filename = 1; + } +} + +sub js_print_bugnumber { + if ( !$js_printed_bugnumber ) { + if ( $js_bugnumber =~ /^http/ ) { + &js_print( "$js_bugnumber", "", "" ); + } else { + &js_print( "$js_bugnumber", + "", + "" ); + } + $js_printed_bugnumber = 1; + } +} diff --git a/Source/JavaScriptCore/tests/mozilla/template.js b/Source/JavaScriptCore/tests/mozilla/template.js new file mode 100644 index 00000000000..e953183ad7c --- /dev/null +++ b/Source/JavaScriptCore/tests/mozilla/template.js @@ -0,0 +1,55 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): +*/ + +/** + * File Name: template.js + * Reference: ** replace with bugzilla URL or document reference ** + * Description: ** replace with description of test ** + * Author: ** replace with your e-mail address ** + */ + + var SECTION = ""; // provide a document reference (ie, ECMA section) + var VERSION = "ECMA_2"; // Version of JavaScript or ECMA + var TITLE = ""; // Provide ECMA section title or a description + var BUGNUMBER = ""; // Provide URL to bugsplat or bugzilla report + + startTest(); // leave this alone + + /* + * Calls to AddTestCase here. AddTestCase is a function that is defined + * in shell.js and takes three arguments: + * - a string representation of what is being tested + * - the expected result + * - the actual result + * + * For example, a test might look like this: + * + * var zip = /[\d]{5}$/; + * + * AddTestCase( + * "zip = /[\d]{5}$/; \"PO Box 12345 Boston, MA 02134\".match(zip)", // description of the test + * "02134", // expected result + * "PO Box 12345 Boston, MA 02134".match(zip) ); // actual result + * + */ + + test(); // leave this alone. this executes the test cases and + // displays results. diff --git a/Source/ThirdParty/ANGLE/ANGLE.plist b/Source/ThirdParty/ANGLE/ANGLE.plist new file mode 100644 index 00000000000..304aea0bf36 --- /dev/null +++ b/Source/ThirdParty/ANGLE/ANGLE.plist @@ -0,0 +1,22 @@ + + + + + + OpenSourceProject + ANGLE + OpenSourceVersion + r1641 + OpenSourceWebsiteURL + http://code.google.com/p/angleproject/ + OpenSourceSCM + git clone https://code.google.com/p/angleproject/ && cd angleproject && git checkout 047373aa3eb408be62be52ade840fa5f11e72337 + OpenSourceImportDate + 2013-07-22 + OpenSourceLicense + BSD + OpenSourceLicenseFile + ANGLE.txt + + + diff --git a/Source/ThirdParty/ANGLE/ANGLE.pri b/Source/ThirdParty/ANGLE/ANGLE.pri new file mode 100644 index 00000000000..e069b141f72 --- /dev/null +++ b/Source/ThirdParty/ANGLE/ANGLE.pri @@ -0,0 +1,13 @@ +# ------------------------------------------------------------------- +# This file contains shared rules used both when building ANGLE +# itself, and by targets that use ANGLE. +# +# See 'Tools/qmake/README' for an overview of the build system +# ------------------------------------------------------------------- + +SOURCE_DIR = $${ROOT_WEBKIT_DIR}/Source/ThirdParty/ANGLE + +INCLUDEPATH += \ + $$SOURCE_DIR/include/GLSLANG \ + $$SOURCE_DIR/include/KHR + diff --git a/Source/ThirdParty/ANGLE/ANGLE.pro b/Source/ThirdParty/ANGLE/ANGLE.pro new file mode 100644 index 00000000000..0054d1d60ff --- /dev/null +++ b/Source/ThirdParty/ANGLE/ANGLE.pro @@ -0,0 +1,14 @@ +# ------------------------------------------------------------------- +# Main project file for ANGLE +# +# See 'Tools/qmake/README' for an overview of the build system +# ------------------------------------------------------------------- + +TEMPLATE = subdirs + +derived_sources.file = DerivedSources.pri +target.file = Target.pri + +SUBDIRS += derived_sources target + +addStrictSubdirOrderBetween(derived_sources, target) diff --git a/Source/ThirdParty/ANGLE/ANGLE.txt b/Source/ThirdParty/ANGLE/ANGLE.txt new file mode 100644 index 00000000000..0513b7d0f9f --- /dev/null +++ b/Source/ThirdParty/ANGLE/ANGLE.txt @@ -0,0 +1,32 @@ +// Copyright (C) 2002-2010 The ANGLE Project Authors. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// +// Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. +// Ltd., nor the names of their contributors may be used to endorse +// or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. diff --git a/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj b/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..d642b7271cb --- /dev/null +++ b/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj @@ -0,0 +1,849 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXAggregateTarget section */ + 5CB13FD6179F44C8001F851D /* Derived Sources */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 5CB13FD7179F44C8001F851D /* Build configuration list for PBXAggregateTarget "Derived Sources" */; + buildPhases = ( + 5CB13FDD179F44F3001F851D /* ShellScript */, + ); + dependencies = ( + ); + name = "Derived Sources"; + productName = "Derived Sources"; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 312BDB0C15FECAC90097EBC7 /* ANGLE.plist in CopyFiles */ = {isa = PBXBuildFile; fileRef = 312BDB0915FEC91E0097EBC7 /* ANGLE.plist */; }; + 312BDB0E15FECAE50097EBC7 /* ANGLE.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 312BDB0A15FECA3A0097EBC7 /* ANGLE.txt */; }; + 49951C0314B7AAB30060E96E /* length_limits.h in Headers */ = {isa = PBXBuildFile; fileRef = 49951C0214B7AAB30060E96E /* length_limits.h */; }; + 49951C0914B7AAD80060E96E /* BuiltInFunctionEmulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49951C0514B7AAD70060E96E /* BuiltInFunctionEmulator.cpp */; }; + 49951C0A14B7AAD80060E96E /* BuiltInFunctionEmulator.h in Headers */ = {isa = PBXBuildFile; fileRef = 49951C0614B7AAD80060E96E /* BuiltInFunctionEmulator.h */; }; + 5CB13FD4179DB3FD001F851D /* DetectCallDepth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CB13FD2179DB3FD001F851D /* DetectCallDepth.cpp */; }; + 5CB13FD5179DB3FD001F851D /* DetectCallDepth.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CB13FD3179DB3FD001F851D /* DetectCallDepth.h */; }; + 5CB13FE4179F4658001F851D /* ExpressionParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CB13FDF179F4658001F851D /* ExpressionParser.cpp */; }; + 5CB13FE5179F4658001F851D /* glslang_lex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CB13FE0179F4658001F851D /* glslang_lex.cpp */; }; + 5CB13FE6179F4658001F851D /* glslang_tab.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CB13FE1179F4658001F851D /* glslang_tab.cpp */; }; + 5CB13FE7179F4658001F851D /* glslang_tab.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CB13FE2179F4658001F851D /* glslang_tab.h */; }; + 5CB13FE8179F4658001F851D /* Tokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CB13FE3179F4658001F851D /* Tokenizer.cpp */; }; + 90D9B10212E11DCB002D4255 /* Compiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90D9B0F912E11DCB002D4255 /* Compiler.cpp */; }; + 90D9B10312E11DCB002D4255 /* ExtensionBehavior.h in Headers */ = {isa = PBXBuildFile; fileRef = 90D9B0FA12E11DCB002D4255 /* ExtensionBehavior.h */; }; + 90D9B10712E11DCB002D4255 /* glslang.h in Headers */ = {isa = PBXBuildFile; fileRef = 90D9B0FE12E11DCB002D4255 /* glslang.h */; }; + 90D9B10912E11DCB002D4255 /* SearchSymbol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90D9B10012E11DCB002D4255 /* SearchSymbol.cpp */; }; + 90D9B10A12E11DCB002D4255 /* SearchSymbol.h in Headers */ = {isa = PBXBuildFile; fileRef = 90D9B10112E11DCB002D4255 /* SearchSymbol.h */; }; + 90D9B11312E11DD6002D4255 /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90D9B10B12E11DD6002D4255 /* util.cpp */; }; + 90D9B11412E11DD6002D4255 /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = 90D9B10C12E11DD6002D4255 /* util.h */; }; + 90D9B11512E11DD6002D4255 /* ValidateLimitations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90D9B10D12E11DD6002D4255 /* ValidateLimitations.cpp */; }; + 90D9B11612E11DD6002D4255 /* ValidateLimitations.h in Headers */ = {isa = PBXBuildFile; fileRef = 90D9B10E12E11DD6002D4255 /* ValidateLimitations.h */; }; + 90D9B11712E11DD6002D4255 /* VariableInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90D9B10F12E11DD6002D4255 /* VariableInfo.cpp */; }; + 90D9B11812E11DD6002D4255 /* VariableInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 90D9B11012E11DD6002D4255 /* VariableInfo.h */; }; + 90D9B11912E11DD6002D4255 /* VersionGLSL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90D9B11112E11DD6002D4255 /* VersionGLSL.cpp */; }; + 90D9B11A12E11DD6002D4255 /* VersionGLSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 90D9B11212E11DD6002D4255 /* VersionGLSL.h */; }; + A08C3CDC16D6CB61003F0B83 /* ArrayBoundsClamper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A08C3CDA16D6CB61003F0B83 /* ArrayBoundsClamper.cpp */; }; + A08C3CDD16D6CB61003F0B83 /* ArrayBoundsClamper.h in Headers */ = {isa = PBXBuildFile; fileRef = A08C3CDB16D6CB61003F0B83 /* ArrayBoundsClamper.h */; }; + A0AABE2C13AFE81000F2EBD1 /* ForLoopUnroll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0AABE2A13AFE81000F2EBD1 /* ForLoopUnroll.cpp */; }; + A0AABE2D13AFE81000F2EBD1 /* ForLoopUnroll.h in Headers */ = {isa = PBXBuildFile; fileRef = A0AABE2B13AFE81000F2EBD1 /* ForLoopUnroll.h */; }; + A0AABE3013AFE83000F2EBD1 /* MapLongVariableNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0AABE2E13AFE83000F2EBD1 /* MapLongVariableNames.cpp */; }; + A0AABE3113AFE83000F2EBD1 /* MapLongVariableNames.h in Headers */ = {isa = PBXBuildFile; fileRef = A0AABE2F13AFE83000F2EBD1 /* MapLongVariableNames.h */; }; + A0AABE3413AFE84700F2EBD1 /* OutputGLSLBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0AABE3213AFE84700F2EBD1 /* OutputGLSLBase.cpp */; }; + A0AABE3513AFE84700F2EBD1 /* OutputGLSLBase.h in Headers */ = {isa = PBXBuildFile; fileRef = A0AABE3313AFE84700F2EBD1 /* OutputGLSLBase.h */; }; + A0AABE4413AFE94500F2EBD1 /* OutputESSL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0AABE4213AFE94500F2EBD1 /* OutputESSL.cpp */; }; + A0AABE4513AFE94500F2EBD1 /* OutputESSL.h in Headers */ = {isa = PBXBuildFile; fileRef = A0AABE4313AFE94500F2EBD1 /* OutputESSL.h */; }; + A0AABE4813AFE96100F2EBD1 /* TranslatorESSL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0AABE4613AFE96100F2EBD1 /* TranslatorESSL.cpp */; }; + A0AABE4913AFE96100F2EBD1 /* TranslatorESSL.h in Headers */ = {isa = PBXBuildFile; fileRef = A0AABE4713AFE96100F2EBD1 /* TranslatorESSL.h */; }; + A264F8AC16974DED006FAA5A /* DiagnosticsBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A264F89316974DED006FAA5A /* DiagnosticsBase.cpp */; }; + A264F8AD16974DED006FAA5A /* DiagnosticsBase.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F89416974DED006FAA5A /* DiagnosticsBase.h */; }; + A264F8AE16974DED006FAA5A /* DirectiveHandlerBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A264F89516974DED006FAA5A /* DirectiveHandlerBase.cpp */; }; + A264F8AF16974DED006FAA5A /* DirectiveHandlerBase.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F89616974DED006FAA5A /* DirectiveHandlerBase.h */; }; + A264F8B016974DED006FAA5A /* DirectiveParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A264F89716974DED006FAA5A /* DirectiveParser.cpp */; }; + A264F8B116974DED006FAA5A /* DirectiveParser.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F89816974DED006FAA5A /* DirectiveParser.h */; }; + A264F8B316974DED006FAA5A /* ExpressionParser.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F89A16974DED006FAA5A /* ExpressionParser.h */; }; + A264F8B416974DED006FAA5A /* Input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A264F89B16974DED006FAA5A /* Input.cpp */; }; + A264F8B516974DED006FAA5A /* Input.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F89C16974DED006FAA5A /* Input.h */; }; + A264F8B616974DED006FAA5A /* Lexer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A264F89D16974DED006FAA5A /* Lexer.cpp */; }; + A264F8B716974DED006FAA5A /* Lexer.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F89E16974DED006FAA5A /* Lexer.h */; }; + A264F8B816974DED006FAA5A /* Macro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A264F89F16974DED006FAA5A /* Macro.cpp */; }; + A264F8B916974DED006FAA5A /* Macro.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F8A016974DED006FAA5A /* Macro.h */; }; + A264F8BA16974DED006FAA5A /* MacroExpander.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A264F8A116974DED006FAA5A /* MacroExpander.cpp */; }; + A264F8BB16974DED006FAA5A /* MacroExpander.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F8A216974DED006FAA5A /* MacroExpander.h */; }; + A264F8BC16974DED006FAA5A /* numeric_lex.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F8A316974DED006FAA5A /* numeric_lex.h */; }; + A264F8BD16974DED006FAA5A /* pp_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F8A416974DED006FAA5A /* pp_utils.h */; }; + A264F8BE16974DED006FAA5A /* Preprocessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A264F8A516974DED006FAA5A /* Preprocessor.cpp */; }; + A264F8BF16974DED006FAA5A /* Preprocessor.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F8A616974DED006FAA5A /* Preprocessor.h */; }; + A264F8C016974DED006FAA5A /* SourceLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F8A716974DED006FAA5A /* SourceLocation.h */; }; + A264F8C116974DED006FAA5A /* Token.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A264F8A816974DED006FAA5A /* Token.cpp */; }; + A264F8C216974DED006FAA5A /* Token.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F8A916974DED006FAA5A /* Token.h */; }; + A264F8C416974DED006FAA5A /* Tokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F8AB16974DED006FAA5A /* Tokenizer.h */; }; + A264F8C816974E2A006FAA5A /* HashNames.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F8C516974E2A006FAA5A /* HashNames.h */; }; + A264F8C916974E2A006FAA5A /* VariablePacker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A264F8C616974E2A006FAA5A /* VariablePacker.cpp */; }; + A264F8CA16974E2A006FAA5A /* VariablePacker.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F8C716974E2A006FAA5A /* VariablePacker.h */; }; + A264F8CD169762AA006FAA5A /* khrplatform.h in Headers */ = {isa = PBXBuildFile; fileRef = A264F8CC169762AA006FAA5A /* khrplatform.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A26567BB159C21B100398539 /* Diagnostics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A26567B0159C21B100398539 /* Diagnostics.cpp */; }; + A26567BC159C21B100398539 /* Diagnostics.h in Headers */ = {isa = PBXBuildFile; fileRef = A26567B1159C21B100398539 /* Diagnostics.h */; }; + A26567BD159C21B100398539 /* DirectiveHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A26567B2159C21B100398539 /* DirectiveHandler.cpp */; }; + A26567BE159C21B100398539 /* DirectiveHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = A26567B3159C21B100398539 /* DirectiveHandler.h */; }; + A26567BF159C21B100398539 /* InitializeParseContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A26567B4159C21B100398539 /* InitializeParseContext.cpp */; }; + A26567C0159C21B100398539 /* Pragma.h in Headers */ = {isa = PBXBuildFile; fileRef = A26567B5159C21B100398539 /* Pragma.h */; }; + A26567C1159C21B100398539 /* RenameFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = A26567B6159C21B100398539 /* RenameFunction.h */; }; + A2656839159C23E100398539 /* DependencyGraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A265682D159C23E100398539 /* DependencyGraph.cpp */; }; + A265683A159C23E100398539 /* DependencyGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = A265682E159C23E100398539 /* DependencyGraph.h */; }; + A265683B159C23E100398539 /* DependencyGraphBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A265682F159C23E100398539 /* DependencyGraphBuilder.cpp */; }; + A265683C159C23E100398539 /* DependencyGraphBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = A2656830159C23E100398539 /* DependencyGraphBuilder.h */; }; + A265683D159C23E100398539 /* DependencyGraphOutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A2656831159C23E100398539 /* DependencyGraphOutput.cpp */; }; + A265683E159C23E100398539 /* DependencyGraphOutput.h in Headers */ = {isa = PBXBuildFile; fileRef = A2656832159C23E100398539 /* DependencyGraphOutput.h */; }; + A265683F159C23E100398539 /* DependencyGraphTraverse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A2656833159C23E100398539 /* DependencyGraphTraverse.cpp */; }; + A2656840159C23E100398539 /* RestrictFragmentShaderTiming.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A2656835159C23E100398539 /* RestrictFragmentShaderTiming.cpp */; }; + A2656841159C23E100398539 /* RestrictFragmentShaderTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = A2656836159C23E100398539 /* RestrictFragmentShaderTiming.h */; }; + A2656842159C23E100398539 /* RestrictVertexShaderTiming.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A2656837159C23E100398539 /* RestrictVertexShaderTiming.cpp */; }; + A2656843159C23E100398539 /* RestrictVertexShaderTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = A2656838159C23E100398539 /* RestrictVertexShaderTiming.h */; }; + FB39D2711200F35A00088E69 /* CodeGenGLSL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D2221200F35A00088E69 /* CodeGenGLSL.cpp */; }; + FB39D2751200F35A00088E69 /* debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D2261200F35A00088E69 /* debug.cpp */; }; + FB39D2791200F35A00088E69 /* InfoSink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D22A1200F35A00088E69 /* InfoSink.cpp */; }; + FB39D27B1200F35A00088E69 /* Initialize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D22C1200F35A00088E69 /* Initialize.cpp */; }; + FB39D27D1200F35A00088E69 /* InitializeDll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D22E1200F35A00088E69 /* InitializeDll.cpp */; }; + FB39D2811200F35A00088E69 /* Intermediate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D2321200F35A00088E69 /* Intermediate.cpp */; }; + FB39D2831200F35A00088E69 /* intermOut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D2341200F35A00088E69 /* intermOut.cpp */; }; + FB39D2841200F35A00088E69 /* IntermTraverse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D2351200F35A00088E69 /* IntermTraverse.cpp */; }; + FB39D2881200F35A00088E69 /* ossource_posix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D2391200F35A00088E69 /* ossource_posix.cpp */; }; + FB39D28A1200F35A00088E69 /* OutputGLSL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D23B1200F35A00088E69 /* OutputGLSL.cpp */; }; + FB39D28E1200F35A00088E69 /* parseConst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D23F1200F35A00088E69 /* parseConst.cpp */; }; + FB39D28F1200F35A00088E69 /* ParseHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D2401200F35A00088E69 /* ParseHelper.cpp */; }; + FB39D2911200F35A00088E69 /* PoolAlloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D2421200F35A00088E69 /* PoolAlloc.cpp */; }; + FB39D2A41200F35A00088E69 /* QualifierAlive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D2561200F35A00088E69 /* QualifierAlive.cpp */; }; + FB39D2A61200F35A00088E69 /* RemoveTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D2581200F35A00088E69 /* RemoveTree.cpp */; }; + FB39D2A81200F35A00088E69 /* ShaderLang.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D25A1200F35A00088E69 /* ShaderLang.cpp */; }; + FB39D2AA1200F35A00088E69 /* SymbolTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D25C1200F35A00088E69 /* SymbolTable.cpp */; }; + FB39D2AC1200F35A00088E69 /* TranslatorGLSL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB39D2681200F35A00088E69 /* TranslatorGLSL.cpp */; }; + FB39D76E120110FC00088E69 /* ShaderLang.h in Headers */ = {isa = PBXBuildFile; fileRef = FB39D2BF1200F3E600088E69 /* ShaderLang.h */; settings = {ATTRIBUTES = (Public, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 5CB13FDB179F44EE001F851D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = FB39D0701200ED9200088E69 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5CB13FD6179F44C8001F851D; + remoteInfo = "Derived Sources"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 312BDB0B15FECAB00097EBC7 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 8; + dstPath = "$(INSTALL_PATH_PREFIX)/usr/local/OpenSourceVersions"; + dstSubfolderSpec = 0; + files = ( + 312BDB0C15FECAC90097EBC7 /* ANGLE.plist in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 1; + }; + 312BDB0D15FECACE0097EBC7 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 8; + dstPath = "$(INSTALL_PATH_PREFIX)/usr/local/OpenSourceLicenses"; + dstSubfolderSpec = 0; + files = ( + 312BDB0E15FECAE50097EBC7 /* ANGLE.txt in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 312BDB0915FEC91E0097EBC7 /* ANGLE.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = ANGLE.plist; sourceTree = ""; }; + 312BDB0A15FECA3A0097EBC7 /* ANGLE.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ANGLE.txt; sourceTree = ""; }; + 443A3E1512ECF6CC0004F9D7 /* iOS.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = iOS.xcconfig; sourceTree = ""; }; + 49951C0214B7AAB30060E96E /* length_limits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = length_limits.h; sourceTree = ""; }; + 49951C0514B7AAD70060E96E /* BuiltInFunctionEmulator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BuiltInFunctionEmulator.cpp; sourceTree = ""; }; + 49951C0614B7AAD80060E96E /* BuiltInFunctionEmulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BuiltInFunctionEmulator.h; sourceTree = ""; }; + 5CB13FD2179DB3FD001F851D /* DetectCallDepth.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetectCallDepth.cpp; sourceTree = ""; }; + 5CB13FD3179DB3FD001F851D /* DetectCallDepth.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetectCallDepth.h; sourceTree = ""; }; + 5CB13FDF179F4658001F851D /* ExpressionParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ExpressionParser.cpp; path = ExpressionParser.cpp; sourceTree = ""; }; + 5CB13FE0179F4658001F851D /* glslang_lex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = glslang_lex.cpp; path = glslang_lex.cpp; sourceTree = ""; }; + 5CB13FE1179F4658001F851D /* glslang_tab.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = glslang_tab.cpp; path = glslang_tab.cpp; sourceTree = ""; }; + 5CB13FE2179F4658001F851D /* glslang_tab.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glslang_tab.h; path = glslang_tab.h; sourceTree = ""; }; + 5CB13FE3179F4658001F851D /* Tokenizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Tokenizer.cpp; path = Tokenizer.cpp; sourceTree = ""; }; + 5D7C59C51208C68B001C873E /* ANGLE.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ANGLE.xcconfig; sourceTree = ""; }; + 5D7C59C61208C68B001C873E /* Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = ""; }; + 5D7C59C71208C68B001C873E /* DebugRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = ""; }; + 90D9B0F912E11DCB002D4255 /* Compiler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Compiler.cpp; sourceTree = ""; }; + 90D9B0FA12E11DCB002D4255 /* ExtensionBehavior.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExtensionBehavior.h; sourceTree = ""; }; + 90D9B0FE12E11DCB002D4255 /* glslang.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glslang.h; sourceTree = ""; }; + 90D9B10012E11DCB002D4255 /* SearchSymbol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SearchSymbol.cpp; sourceTree = ""; }; + 90D9B10112E11DCB002D4255 /* SearchSymbol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchSymbol.h; sourceTree = ""; }; + 90D9B10B12E11DD6002D4255 /* util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = util.cpp; sourceTree = ""; }; + 90D9B10C12E11DD6002D4255 /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = ""; }; + 90D9B10D12E11DD6002D4255 /* ValidateLimitations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ValidateLimitations.cpp; sourceTree = ""; }; + 90D9B10E12E11DD6002D4255 /* ValidateLimitations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValidateLimitations.h; sourceTree = ""; }; + 90D9B10F12E11DD6002D4255 /* VariableInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VariableInfo.cpp; sourceTree = ""; }; + 90D9B11012E11DD6002D4255 /* VariableInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VariableInfo.h; sourceTree = ""; }; + 90D9B11112E11DD6002D4255 /* VersionGLSL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VersionGLSL.cpp; sourceTree = ""; }; + 90D9B11212E11DD6002D4255 /* VersionGLSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VersionGLSL.h; sourceTree = ""; }; + A08C3CDA16D6CB61003F0B83 /* ArrayBoundsClamper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ArrayBoundsClamper.cpp; path = src/third_party/compiler/ArrayBoundsClamper.cpp; sourceTree = ""; }; + A08C3CDB16D6CB61003F0B83 /* ArrayBoundsClamper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ArrayBoundsClamper.h; path = src/third_party/compiler/ArrayBoundsClamper.h; sourceTree = ""; }; + A0AABE2A13AFE81000F2EBD1 /* ForLoopUnroll.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ForLoopUnroll.cpp; sourceTree = ""; }; + A0AABE2B13AFE81000F2EBD1 /* ForLoopUnroll.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ForLoopUnroll.h; sourceTree = ""; }; + A0AABE2E13AFE83000F2EBD1 /* MapLongVariableNames.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MapLongVariableNames.cpp; sourceTree = ""; }; + A0AABE2F13AFE83000F2EBD1 /* MapLongVariableNames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapLongVariableNames.h; sourceTree = ""; }; + A0AABE3213AFE84700F2EBD1 /* OutputGLSLBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OutputGLSLBase.cpp; sourceTree = ""; }; + A0AABE3313AFE84700F2EBD1 /* OutputGLSLBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OutputGLSLBase.h; sourceTree = ""; }; + A0AABE4213AFE94500F2EBD1 /* OutputESSL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OutputESSL.cpp; sourceTree = ""; }; + A0AABE4313AFE94500F2EBD1 /* OutputESSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OutputESSL.h; sourceTree = ""; }; + A0AABE4613AFE96100F2EBD1 /* TranslatorESSL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TranslatorESSL.cpp; sourceTree = ""; }; + A0AABE4713AFE96100F2EBD1 /* TranslatorESSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TranslatorESSL.h; sourceTree = ""; }; + A264F89316974DED006FAA5A /* DiagnosticsBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DiagnosticsBase.cpp; sourceTree = ""; }; + A264F89416974DED006FAA5A /* DiagnosticsBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiagnosticsBase.h; sourceTree = ""; }; + A264F89516974DED006FAA5A /* DirectiveHandlerBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DirectiveHandlerBase.cpp; sourceTree = ""; }; + A264F89616974DED006FAA5A /* DirectiveHandlerBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirectiveHandlerBase.h; sourceTree = ""; }; + A264F89716974DED006FAA5A /* DirectiveParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DirectiveParser.cpp; sourceTree = ""; }; + A264F89816974DED006FAA5A /* DirectiveParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirectiveParser.h; sourceTree = ""; }; + A264F89A16974DED006FAA5A /* ExpressionParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExpressionParser.h; sourceTree = ""; }; + A264F89B16974DED006FAA5A /* Input.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Input.cpp; sourceTree = ""; }; + A264F89C16974DED006FAA5A /* Input.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Input.h; sourceTree = ""; }; + A264F89D16974DED006FAA5A /* Lexer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Lexer.cpp; sourceTree = ""; }; + A264F89E16974DED006FAA5A /* Lexer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Lexer.h; sourceTree = ""; }; + A264F89F16974DED006FAA5A /* Macro.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Macro.cpp; sourceTree = ""; }; + A264F8A016974DED006FAA5A /* Macro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Macro.h; sourceTree = ""; }; + A264F8A116974DED006FAA5A /* MacroExpander.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MacroExpander.cpp; sourceTree = ""; }; + A264F8A216974DED006FAA5A /* MacroExpander.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacroExpander.h; sourceTree = ""; }; + A264F8A316974DED006FAA5A /* numeric_lex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = numeric_lex.h; sourceTree = ""; }; + A264F8A416974DED006FAA5A /* pp_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pp_utils.h; sourceTree = ""; }; + A264F8A516974DED006FAA5A /* Preprocessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Preprocessor.cpp; sourceTree = ""; }; + A264F8A616974DED006FAA5A /* Preprocessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Preprocessor.h; sourceTree = ""; }; + A264F8A716974DED006FAA5A /* SourceLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SourceLocation.h; sourceTree = ""; }; + A264F8A816974DED006FAA5A /* Token.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Token.cpp; sourceTree = ""; }; + A264F8A916974DED006FAA5A /* Token.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Token.h; sourceTree = ""; }; + A264F8AB16974DED006FAA5A /* Tokenizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Tokenizer.h; sourceTree = ""; }; + A264F8C516974E2A006FAA5A /* HashNames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashNames.h; sourceTree = ""; }; + A264F8C616974E2A006FAA5A /* VariablePacker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VariablePacker.cpp; sourceTree = ""; }; + A264F8C716974E2A006FAA5A /* VariablePacker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VariablePacker.h; sourceTree = ""; }; + A264F8CC169762AA006FAA5A /* khrplatform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = khrplatform.h; sourceTree = ""; }; + A26567B0159C21B100398539 /* Diagnostics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Diagnostics.cpp; sourceTree = ""; }; + A26567B1159C21B100398539 /* Diagnostics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Diagnostics.h; sourceTree = ""; }; + A26567B2159C21B100398539 /* DirectiveHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DirectiveHandler.cpp; sourceTree = ""; }; + A26567B3159C21B100398539 /* DirectiveHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirectiveHandler.h; sourceTree = ""; }; + A26567B4159C21B100398539 /* InitializeParseContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InitializeParseContext.cpp; sourceTree = ""; }; + A26567B5159C21B100398539 /* Pragma.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Pragma.h; sourceTree = ""; }; + A26567B6159C21B100398539 /* RenameFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenameFunction.h; sourceTree = ""; }; + A265682D159C23E100398539 /* DependencyGraph.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DependencyGraph.cpp; sourceTree = ""; }; + A265682E159C23E100398539 /* DependencyGraph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DependencyGraph.h; sourceTree = ""; }; + A265682F159C23E100398539 /* DependencyGraphBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DependencyGraphBuilder.cpp; sourceTree = ""; }; + A2656830159C23E100398539 /* DependencyGraphBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DependencyGraphBuilder.h; sourceTree = ""; }; + A2656831159C23E100398539 /* DependencyGraphOutput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DependencyGraphOutput.cpp; sourceTree = ""; }; + A2656832159C23E100398539 /* DependencyGraphOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DependencyGraphOutput.h; sourceTree = ""; }; + A2656833159C23E100398539 /* DependencyGraphTraverse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DependencyGraphTraverse.cpp; sourceTree = ""; }; + A2656835159C23E100398539 /* RestrictFragmentShaderTiming.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RestrictFragmentShaderTiming.cpp; sourceTree = ""; }; + A2656836159C23E100398539 /* RestrictFragmentShaderTiming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RestrictFragmentShaderTiming.h; sourceTree = ""; }; + A2656837159C23E100398539 /* RestrictVertexShaderTiming.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RestrictVertexShaderTiming.cpp; sourceTree = ""; }; + A2656838159C23E100398539 /* RestrictVertexShaderTiming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RestrictVertexShaderTiming.h; sourceTree = ""; }; + FB39D0D11200F0E300088E69 /* libANGLE.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANGLE.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FB39D2211200F35A00088E69 /* BaseTypes.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = BaseTypes.h; sourceTree = ""; }; + FB39D2221200F35A00088E69 /* CodeGenGLSL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CodeGenGLSL.cpp; sourceTree = ""; }; + FB39D2241200F35A00088E69 /* Common.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = Common.h; sourceTree = ""; }; + FB39D2251200F35A00088E69 /* ConstantUnion.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = ConstantUnion.h; sourceTree = ""; }; + FB39D2261200F35A00088E69 /* debug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = debug.cpp; sourceTree = ""; }; + FB39D2271200F35A00088E69 /* debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; + FB39D22A1200F35A00088E69 /* InfoSink.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InfoSink.cpp; sourceTree = ""; }; + FB39D22B1200F35A00088E69 /* InfoSink.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = InfoSink.h; sourceTree = ""; }; + FB39D22C1200F35A00088E69 /* Initialize.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Initialize.cpp; sourceTree = ""; }; + FB39D22D1200F35A00088E69 /* Initialize.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = Initialize.h; sourceTree = ""; }; + FB39D22E1200F35A00088E69 /* InitializeDll.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InitializeDll.cpp; sourceTree = ""; }; + FB39D22F1200F35A00088E69 /* InitializeDll.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = InitializeDll.h; sourceTree = ""; }; + FB39D2301200F35A00088E69 /* InitializeGlobals.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = InitializeGlobals.h; sourceTree = ""; }; + FB39D2311200F35A00088E69 /* InitializeParseContext.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = InitializeParseContext.h; sourceTree = ""; }; + FB39D2321200F35A00088E69 /* Intermediate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Intermediate.cpp; sourceTree = ""; }; + FB39D2331200F35A00088E69 /* intermediate.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = intermediate.h; sourceTree = ""; }; + FB39D2341200F35A00088E69 /* intermOut.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = intermOut.cpp; sourceTree = ""; }; + FB39D2351200F35A00088E69 /* IntermTraverse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IntermTraverse.cpp; sourceTree = ""; }; + FB39D2361200F35A00088E69 /* localintermediate.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = localintermediate.h; sourceTree = ""; }; + FB39D2371200F35A00088E69 /* MMap.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = MMap.h; sourceTree = ""; }; + FB39D2381200F35A00088E69 /* osinclude.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = osinclude.h; sourceTree = ""; }; + FB39D2391200F35A00088E69 /* ossource_posix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ossource_posix.cpp; sourceTree = ""; }; + FB39D23A1200F35A00088E69 /* ossource_win.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ossource_win.cpp; sourceTree = ""; }; + FB39D23B1200F35A00088E69 /* OutputGLSL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OutputGLSL.cpp; sourceTree = ""; }; + FB39D23C1200F35A00088E69 /* OutputGLSL.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = OutputGLSL.h; sourceTree = ""; }; + FB39D23F1200F35A00088E69 /* parseConst.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parseConst.cpp; sourceTree = ""; }; + FB39D2401200F35A00088E69 /* ParseHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParseHelper.cpp; sourceTree = ""; }; + FB39D2411200F35A00088E69 /* ParseHelper.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = ParseHelper.h; sourceTree = ""; }; + FB39D2421200F35A00088E69 /* PoolAlloc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PoolAlloc.cpp; sourceTree = ""; }; + FB39D2431200F35A00088E69 /* PoolAlloc.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = PoolAlloc.h; sourceTree = ""; }; + FB39D2561200F35A00088E69 /* QualifierAlive.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = QualifierAlive.cpp; sourceTree = ""; }; + FB39D2571200F35A00088E69 /* QualifierAlive.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = QualifierAlive.h; sourceTree = ""; }; + FB39D2581200F35A00088E69 /* RemoveTree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoveTree.cpp; sourceTree = ""; }; + FB39D2591200F35A00088E69 /* RemoveTree.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = RemoveTree.h; sourceTree = ""; }; + FB39D25A1200F35A00088E69 /* ShaderLang.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShaderLang.cpp; sourceTree = ""; }; + FB39D25B1200F35A00088E69 /* ShHandle.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = ShHandle.h; sourceTree = ""; }; + FB39D25C1200F35A00088E69 /* SymbolTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolTable.cpp; sourceTree = ""; }; + FB39D25D1200F35A00088E69 /* SymbolTable.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = SymbolTable.h; sourceTree = ""; }; + FB39D2681200F35A00088E69 /* TranslatorGLSL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TranslatorGLSL.cpp; sourceTree = ""; }; + FB39D2691200F35A00088E69 /* TranslatorGLSL.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = TranslatorGLSL.h; sourceTree = ""; }; + FB39D26C1200F35A00088E69 /* Types.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = Types.h; sourceTree = ""; }; + FB39D2BF1200F3E600088E69 /* ShaderLang.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = ShaderLang.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + FB39D0CF1200F0E300088E69 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 312BDB0715FEC8E60097EBC7 /* misc */ = { + isa = PBXGroup; + children = ( + 312BDB0915FEC91E0097EBC7 /* ANGLE.plist */, + 312BDB0A15FECA3A0097EBC7 /* ANGLE.txt */, + ); + name = misc; + sourceTree = ""; + }; + 5CB13FDE179F457B001F851D /* Derived Sources */ = { + isa = PBXGroup; + children = ( + 5CB13FDF179F4658001F851D /* ExpressionParser.cpp */, + 5CB13FE0179F4658001F851D /* glslang_lex.cpp */, + 5CB13FE1179F4658001F851D /* glslang_tab.cpp */, + 5CB13FE2179F4658001F851D /* glslang_tab.h */, + 5CB13FE3179F4658001F851D /* Tokenizer.cpp */, + ); + name = "Derived Sources"; + path = DerivedSources/ANGLE; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5D7C59C41208C68B001C873E /* Configurations */ = { + isa = PBXGroup; + children = ( + 5D7C59C51208C68B001C873E /* ANGLE.xcconfig */, + 5D7C59C61208C68B001C873E /* Base.xcconfig */, + 5D7C59C71208C68B001C873E /* DebugRelease.xcconfig */, + 443A3E1512ECF6CC0004F9D7 /* iOS.xcconfig */, + ); + path = Configurations; + sourceTree = ""; + }; + A08C3CD816D6CB35003F0B83 /* third_party */ = { + isa = PBXGroup; + children = ( + A08C3CD916D6CB43003F0B83 /* compiler */, + ); + name = third_party; + sourceTree = ""; + }; + A08C3CD916D6CB43003F0B83 /* compiler */ = { + isa = PBXGroup; + children = ( + A08C3CDA16D6CB61003F0B83 /* ArrayBoundsClamper.cpp */, + A08C3CDB16D6CB61003F0B83 /* ArrayBoundsClamper.h */, + ); + name = compiler; + sourceTree = ""; + }; + A264F8CB169762AA006FAA5A /* KHR */ = { + isa = PBXGroup; + children = ( + A264F8CC169762AA006FAA5A /* khrplatform.h */, + ); + name = KHR; + path = include/KHR; + sourceTree = ""; + }; + A265682C159C23E100398539 /* depgraph */ = { + isa = PBXGroup; + children = ( + A265682D159C23E100398539 /* DependencyGraph.cpp */, + A265682E159C23E100398539 /* DependencyGraph.h */, + A265682F159C23E100398539 /* DependencyGraphBuilder.cpp */, + A2656830159C23E100398539 /* DependencyGraphBuilder.h */, + A2656831159C23E100398539 /* DependencyGraphOutput.cpp */, + A2656832159C23E100398539 /* DependencyGraphOutput.h */, + A2656833159C23E100398539 /* DependencyGraphTraverse.cpp */, + ); + path = depgraph; + sourceTree = ""; + }; + A2656834159C23E100398539 /* timing */ = { + isa = PBXGroup; + children = ( + A2656835159C23E100398539 /* RestrictFragmentShaderTiming.cpp */, + A2656836159C23E100398539 /* RestrictFragmentShaderTiming.h */, + A2656837159C23E100398539 /* RestrictVertexShaderTiming.cpp */, + A2656838159C23E100398539 /* RestrictVertexShaderTiming.h */, + ); + path = timing; + sourceTree = ""; + }; + A29B15E916978B7D00111D97 /* include */ = { + isa = PBXGroup; + children = ( + FB39D2BD1200F3E600088E69 /* GLSLANG */, + A264F8CB169762AA006FAA5A /* KHR */, + ); + name = include; + sourceTree = ""; + }; + FB39D06E1200ED9200088E69 = { + isa = PBXGroup; + children = ( + 5CB13FDE179F457B001F851D /* Derived Sources */, + 5D7C59C41208C68B001C873E /* Configurations */, + A29B15E916978B7D00111D97 /* include */, + 312BDB0715FEC8E60097EBC7 /* misc */, + FB39D0CC1200EF9B00088E69 /* Products */, + FB39D0841200EDEB00088E69 /* src */, + ); + sourceTree = ""; + }; + FB39D0841200EDEB00088E69 /* src */ = { + isa = PBXGroup; + children = ( + FB39D2201200F35A00088E69 /* compiler */, + A08C3CD816D6CB35003F0B83 /* third_party */, + ); + name = src; + sourceTree = ""; + }; + FB39D0CC1200EF9B00088E69 /* Products */ = { + isa = PBXGroup; + children = ( + FB39D0D11200F0E300088E69 /* libANGLE.a */, + ); + name = Products; + sourceTree = ""; + }; + FB39D2201200F35A00088E69 /* compiler */ = { + isa = PBXGroup; + children = ( + A265682C159C23E100398539 /* depgraph */, + FB39D2441200F35A00088E69 /* preprocessor */, + A2656834159C23E100398539 /* timing */, + FB39D2211200F35A00088E69 /* BaseTypes.h */, + 49951C0514B7AAD70060E96E /* BuiltInFunctionEmulator.cpp */, + 49951C0614B7AAD80060E96E /* BuiltInFunctionEmulator.h */, + FB39D2221200F35A00088E69 /* CodeGenGLSL.cpp */, + FB39D2241200F35A00088E69 /* Common.h */, + 90D9B0F912E11DCB002D4255 /* Compiler.cpp */, + FB39D2251200F35A00088E69 /* ConstantUnion.h */, + FB39D2261200F35A00088E69 /* debug.cpp */, + FB39D2271200F35A00088E69 /* debug.h */, + 5CB13FD3179DB3FD001F851D /* DetectCallDepth.h */, + 5CB13FD2179DB3FD001F851D /* DetectCallDepth.cpp */, + A26567B0159C21B100398539 /* Diagnostics.cpp */, + A26567B1159C21B100398539 /* Diagnostics.h */, + A26567B2159C21B100398539 /* DirectiveHandler.cpp */, + A26567B3159C21B100398539 /* DirectiveHandler.h */, + 90D9B0FA12E11DCB002D4255 /* ExtensionBehavior.h */, + A0AABE2A13AFE81000F2EBD1 /* ForLoopUnroll.cpp */, + A0AABE2B13AFE81000F2EBD1 /* ForLoopUnroll.h */, + 90D9B0FE12E11DCB002D4255 /* glslang.h */, + A264F8C516974E2A006FAA5A /* HashNames.h */, + FB39D22A1200F35A00088E69 /* InfoSink.cpp */, + FB39D22B1200F35A00088E69 /* InfoSink.h */, + FB39D22C1200F35A00088E69 /* Initialize.cpp */, + FB39D22D1200F35A00088E69 /* Initialize.h */, + FB39D22E1200F35A00088E69 /* InitializeDll.cpp */, + FB39D22F1200F35A00088E69 /* InitializeDll.h */, + FB39D2301200F35A00088E69 /* InitializeGlobals.h */, + A26567B4159C21B100398539 /* InitializeParseContext.cpp */, + FB39D2311200F35A00088E69 /* InitializeParseContext.h */, + FB39D2321200F35A00088E69 /* Intermediate.cpp */, + FB39D2331200F35A00088E69 /* intermediate.h */, + FB39D2341200F35A00088E69 /* intermOut.cpp */, + FB39D2351200F35A00088E69 /* IntermTraverse.cpp */, + FB39D2361200F35A00088E69 /* localintermediate.h */, + A0AABE2E13AFE83000F2EBD1 /* MapLongVariableNames.cpp */, + A0AABE2F13AFE83000F2EBD1 /* MapLongVariableNames.h */, + FB39D2371200F35A00088E69 /* MMap.h */, + FB39D2381200F35A00088E69 /* osinclude.h */, + FB39D2391200F35A00088E69 /* ossource_posix.cpp */, + FB39D23A1200F35A00088E69 /* ossource_win.cpp */, + A0AABE4213AFE94500F2EBD1 /* OutputESSL.cpp */, + A0AABE4313AFE94500F2EBD1 /* OutputESSL.h */, + FB39D23B1200F35A00088E69 /* OutputGLSL.cpp */, + FB39D23C1200F35A00088E69 /* OutputGLSL.h */, + A0AABE3213AFE84700F2EBD1 /* OutputGLSLBase.cpp */, + A0AABE3313AFE84700F2EBD1 /* OutputGLSLBase.h */, + FB39D23F1200F35A00088E69 /* parseConst.cpp */, + FB39D2401200F35A00088E69 /* ParseHelper.cpp */, + FB39D2411200F35A00088E69 /* ParseHelper.h */, + FB39D2421200F35A00088E69 /* PoolAlloc.cpp */, + FB39D2431200F35A00088E69 /* PoolAlloc.h */, + A26567B5159C21B100398539 /* Pragma.h */, + FB39D2561200F35A00088E69 /* QualifierAlive.cpp */, + FB39D2571200F35A00088E69 /* QualifierAlive.h */, + FB39D2581200F35A00088E69 /* RemoveTree.cpp */, + FB39D2591200F35A00088E69 /* RemoveTree.h */, + A26567B6159C21B100398539 /* RenameFunction.h */, + 90D9B10012E11DCB002D4255 /* SearchSymbol.cpp */, + 90D9B10112E11DCB002D4255 /* SearchSymbol.h */, + FB39D25A1200F35A00088E69 /* ShaderLang.cpp */, + FB39D25B1200F35A00088E69 /* ShHandle.h */, + FB39D25C1200F35A00088E69 /* SymbolTable.cpp */, + FB39D25D1200F35A00088E69 /* SymbolTable.h */, + A0AABE4613AFE96100F2EBD1 /* TranslatorESSL.cpp */, + A0AABE4713AFE96100F2EBD1 /* TranslatorESSL.h */, + FB39D2681200F35A00088E69 /* TranslatorGLSL.cpp */, + FB39D2691200F35A00088E69 /* TranslatorGLSL.h */, + FB39D26C1200F35A00088E69 /* Types.h */, + 90D9B10B12E11DD6002D4255 /* util.cpp */, + 90D9B10C12E11DD6002D4255 /* util.h */, + 90D9B10D12E11DD6002D4255 /* ValidateLimitations.cpp */, + 90D9B10E12E11DD6002D4255 /* ValidateLimitations.h */, + 90D9B10F12E11DD6002D4255 /* VariableInfo.cpp */, + 90D9B11012E11DD6002D4255 /* VariableInfo.h */, + A264F8C616974E2A006FAA5A /* VariablePacker.cpp */, + A264F8C716974E2A006FAA5A /* VariablePacker.h */, + 90D9B11112E11DD6002D4255 /* VersionGLSL.cpp */, + 90D9B11212E11DD6002D4255 /* VersionGLSL.h */, + ); + name = compiler; + path = src/compiler; + sourceTree = ""; + }; + FB39D2441200F35A00088E69 /* preprocessor */ = { + isa = PBXGroup; + children = ( + A264F89316974DED006FAA5A /* DiagnosticsBase.cpp */, + A264F89416974DED006FAA5A /* DiagnosticsBase.h */, + A264F89516974DED006FAA5A /* DirectiveHandlerBase.cpp */, + A264F89616974DED006FAA5A /* DirectiveHandlerBase.h */, + A264F89716974DED006FAA5A /* DirectiveParser.cpp */, + A264F89816974DED006FAA5A /* DirectiveParser.h */, + A264F89A16974DED006FAA5A /* ExpressionParser.h */, + A264F89B16974DED006FAA5A /* Input.cpp */, + A264F89C16974DED006FAA5A /* Input.h */, + 49951C0214B7AAB30060E96E /* length_limits.h */, + A264F89D16974DED006FAA5A /* Lexer.cpp */, + A264F89E16974DED006FAA5A /* Lexer.h */, + A264F89F16974DED006FAA5A /* Macro.cpp */, + A264F8A016974DED006FAA5A /* Macro.h */, + A264F8A116974DED006FAA5A /* MacroExpander.cpp */, + A264F8A216974DED006FAA5A /* MacroExpander.h */, + A264F8A316974DED006FAA5A /* numeric_lex.h */, + A264F8A416974DED006FAA5A /* pp_utils.h */, + A264F8A516974DED006FAA5A /* Preprocessor.cpp */, + A264F8A616974DED006FAA5A /* Preprocessor.h */, + A264F8A716974DED006FAA5A /* SourceLocation.h */, + A264F8A816974DED006FAA5A /* Token.cpp */, + A264F8A916974DED006FAA5A /* Token.h */, + A264F8AB16974DED006FAA5A /* Tokenizer.h */, + ); + path = preprocessor; + sourceTree = ""; + }; + FB39D2BD1200F3E600088E69 /* GLSLANG */ = { + isa = PBXGroup; + children = ( + FB39D2BF1200F3E600088E69 /* ShaderLang.h */, + ); + name = GLSLANG; + path = include/GLSLANG; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + FB39D77B1201110C00088E69 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A08C3CDD16D6CB61003F0B83 /* ArrayBoundsClamper.h in Headers */, + 49951C0A14B7AAD80060E96E /* BuiltInFunctionEmulator.h in Headers */, + A265683A159C23E100398539 /* DependencyGraph.h in Headers */, + A265683C159C23E100398539 /* DependencyGraphBuilder.h in Headers */, + A265683E159C23E100398539 /* DependencyGraphOutput.h in Headers */, + A26567BC159C21B100398539 /* Diagnostics.h in Headers */, + A264F8AD16974DED006FAA5A /* DiagnosticsBase.h in Headers */, + A26567BE159C21B100398539 /* DirectiveHandler.h in Headers */, + A264F8AF16974DED006FAA5A /* DirectiveHandlerBase.h in Headers */, + A264F8B116974DED006FAA5A /* DirectiveParser.h in Headers */, + A264F8B316974DED006FAA5A /* ExpressionParser.h in Headers */, + 90D9B10312E11DCB002D4255 /* ExtensionBehavior.h in Headers */, + A0AABE2D13AFE81000F2EBD1 /* ForLoopUnroll.h in Headers */, + 90D9B10712E11DCB002D4255 /* glslang.h in Headers */, + A264F8C816974E2A006FAA5A /* HashNames.h in Headers */, + A264F8B516974DED006FAA5A /* Input.h in Headers */, + A264F8CD169762AA006FAA5A /* khrplatform.h in Headers */, + 49951C0314B7AAB30060E96E /* length_limits.h in Headers */, + A264F8B716974DED006FAA5A /* Lexer.h in Headers */, + A264F8B916974DED006FAA5A /* Macro.h in Headers */, + A264F8BB16974DED006FAA5A /* MacroExpander.h in Headers */, + A0AABE3113AFE83000F2EBD1 /* MapLongVariableNames.h in Headers */, + A264F8BC16974DED006FAA5A /* numeric_lex.h in Headers */, + A0AABE4513AFE94500F2EBD1 /* OutputESSL.h in Headers */, + A0AABE3513AFE84700F2EBD1 /* OutputGLSLBase.h in Headers */, + A264F8BD16974DED006FAA5A /* pp_utils.h in Headers */, + A26567C0159C21B100398539 /* Pragma.h in Headers */, + A264F8BF16974DED006FAA5A /* Preprocessor.h in Headers */, + A26567C1159C21B100398539 /* RenameFunction.h in Headers */, + A2656841159C23E100398539 /* RestrictFragmentShaderTiming.h in Headers */, + A2656843159C23E100398539 /* RestrictVertexShaderTiming.h in Headers */, + 90D9B10A12E11DCB002D4255 /* SearchSymbol.h in Headers */, + FB39D76E120110FC00088E69 /* ShaderLang.h in Headers */, + A264F8C016974DED006FAA5A /* SourceLocation.h in Headers */, + A264F8C216974DED006FAA5A /* Token.h in Headers */, + A264F8C416974DED006FAA5A /* Tokenizer.h in Headers */, + A0AABE4913AFE96100F2EBD1 /* TranslatorESSL.h in Headers */, + 90D9B11412E11DD6002D4255 /* util.h in Headers */, + 90D9B11612E11DD6002D4255 /* ValidateLimitations.h in Headers */, + 90D9B11812E11DD6002D4255 /* VariableInfo.h in Headers */, + A264F8CA16974E2A006FAA5A /* VariablePacker.h in Headers */, + 90D9B11A12E11DD6002D4255 /* VersionGLSL.h in Headers */, + 5CB13FD5179DB3FD001F851D /* DetectCallDepth.h in Headers */, + 5CB13FE7179F4658001F851D /* glslang_tab.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + FB39D0D01200F0E300088E69 /* ANGLE */ = { + isa = PBXNativeTarget; + buildConfigurationList = FB39D0D61200F11E00088E69 /* Build configuration list for PBXNativeTarget "ANGLE" */; + buildPhases = ( + FB39D77B1201110C00088E69 /* Headers */, + FB39D0CE1200F0E300088E69 /* Sources */, + FB39D0CF1200F0E300088E69 /* Frameworks */, + 312BDB0B15FECAB00097EBC7 /* CopyFiles */, + 312BDB0D15FECACE0097EBC7 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + 5CB13FDC179F44EE001F851D /* PBXTargetDependency */, + ); + name = ANGLE; + productName = angle; + productReference = FB39D0D11200F0E300088E69 /* libANGLE.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + FB39D0701200ED9200088E69 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0440; + }; + buildConfigurationList = FB39D0731200ED9200088E69 /* Build configuration list for PBXProject "ANGLE" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = FB39D06E1200ED9200088E69; + projectDirPath = ""; + projectRoot = ""; + targets = ( + FB39D0D01200F0E300088E69 /* ANGLE */, + 5CB13FD6179F44C8001F851D /* Derived Sources */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + 5CB13FDD179F44F3001F851D /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "mkdir -p \"${BUILT_PRODUCTS_DIR}/DerivedSources/ANGLE\"\ncd \"${BUILT_PRODUCTS_DIR}/DerivedSources/ANGLE\"\n\n/bin/ln -sfh \"${SRCROOT}\" .\nexport ANGLE=\"ANGLE\"\n\nmake --no-builtin-rules -f \"ANGLE/DerivedSources.make\" -j `/usr/sbin/sysctl -n hw.availcpu`"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + FB39D0CE1200F0E300088E69 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A08C3CDC16D6CB61003F0B83 /* ArrayBoundsClamper.cpp in Sources */, + 49951C0914B7AAD80060E96E /* BuiltInFunctionEmulator.cpp in Sources */, + FB39D2711200F35A00088E69 /* CodeGenGLSL.cpp in Sources */, + 90D9B10212E11DCB002D4255 /* Compiler.cpp in Sources */, + FB39D2751200F35A00088E69 /* debug.cpp in Sources */, + A2656839159C23E100398539 /* DependencyGraph.cpp in Sources */, + A265683B159C23E100398539 /* DependencyGraphBuilder.cpp in Sources */, + A265683D159C23E100398539 /* DependencyGraphOutput.cpp in Sources */, + A265683F159C23E100398539 /* DependencyGraphTraverse.cpp in Sources */, + A26567BB159C21B100398539 /* Diagnostics.cpp in Sources */, + A264F8AC16974DED006FAA5A /* DiagnosticsBase.cpp in Sources */, + A26567BD159C21B100398539 /* DirectiveHandler.cpp in Sources */, + A264F8AE16974DED006FAA5A /* DirectiveHandlerBase.cpp in Sources */, + A264F8B016974DED006FAA5A /* DirectiveParser.cpp in Sources */, + A0AABE2C13AFE81000F2EBD1 /* ForLoopUnroll.cpp in Sources */, + FB39D2791200F35A00088E69 /* InfoSink.cpp in Sources */, + FB39D27B1200F35A00088E69 /* Initialize.cpp in Sources */, + FB39D27D1200F35A00088E69 /* InitializeDll.cpp in Sources */, + A26567BF159C21B100398539 /* InitializeParseContext.cpp in Sources */, + A264F8B416974DED006FAA5A /* Input.cpp in Sources */, + FB39D2811200F35A00088E69 /* Intermediate.cpp in Sources */, + FB39D2831200F35A00088E69 /* intermOut.cpp in Sources */, + FB39D2841200F35A00088E69 /* IntermTraverse.cpp in Sources */, + A264F8B616974DED006FAA5A /* Lexer.cpp in Sources */, + A264F8B816974DED006FAA5A /* Macro.cpp in Sources */, + A264F8BA16974DED006FAA5A /* MacroExpander.cpp in Sources */, + A0AABE3013AFE83000F2EBD1 /* MapLongVariableNames.cpp in Sources */, + FB39D2881200F35A00088E69 /* ossource_posix.cpp in Sources */, + A0AABE4413AFE94500F2EBD1 /* OutputESSL.cpp in Sources */, + FB39D28A1200F35A00088E69 /* OutputGLSL.cpp in Sources */, + A0AABE3413AFE84700F2EBD1 /* OutputGLSLBase.cpp in Sources */, + FB39D28E1200F35A00088E69 /* parseConst.cpp in Sources */, + FB39D28F1200F35A00088E69 /* ParseHelper.cpp in Sources */, + FB39D2911200F35A00088E69 /* PoolAlloc.cpp in Sources */, + A264F8BE16974DED006FAA5A /* Preprocessor.cpp in Sources */, + FB39D2A41200F35A00088E69 /* QualifierAlive.cpp in Sources */, + FB39D2A61200F35A00088E69 /* RemoveTree.cpp in Sources */, + A2656840159C23E100398539 /* RestrictFragmentShaderTiming.cpp in Sources */, + A2656842159C23E100398539 /* RestrictVertexShaderTiming.cpp in Sources */, + 90D9B10912E11DCB002D4255 /* SearchSymbol.cpp in Sources */, + FB39D2A81200F35A00088E69 /* ShaderLang.cpp in Sources */, + FB39D2AA1200F35A00088E69 /* SymbolTable.cpp in Sources */, + A264F8C116974DED006FAA5A /* Token.cpp in Sources */, + A0AABE4813AFE96100F2EBD1 /* TranslatorESSL.cpp in Sources */, + FB39D2AC1200F35A00088E69 /* TranslatorGLSL.cpp in Sources */, + 90D9B11312E11DD6002D4255 /* util.cpp in Sources */, + 90D9B11512E11DD6002D4255 /* ValidateLimitations.cpp in Sources */, + 90D9B11712E11DD6002D4255 /* VariableInfo.cpp in Sources */, + A264F8C916974E2A006FAA5A /* VariablePacker.cpp in Sources */, + 90D9B11912E11DD6002D4255 /* VersionGLSL.cpp in Sources */, + 5CB13FD4179DB3FD001F851D /* DetectCallDepth.cpp in Sources */, + 5CB13FE4179F4658001F851D /* ExpressionParser.cpp in Sources */, + 5CB13FE5179F4658001F851D /* glslang_lex.cpp in Sources */, + 5CB13FE6179F4658001F851D /* glslang_tab.cpp in Sources */, + 5CB13FE8179F4658001F851D /* Tokenizer.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 5CB13FDC179F44EE001F851D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 5CB13FD6179F44C8001F851D /* Derived Sources */; + targetProxy = 5CB13FDB179F44EE001F851D /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 5CB13FD8179F44C8001F851D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 5CB13FD9179F44C8001F851D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 5CB13FDA179F44C8001F851D /* Production */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Production; + }; + 5D7C59DB1208C6C3001C873E /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5D7C59C61208C68B001C873E /* Base.xcconfig */; + buildSettings = { + }; + name = Production; + }; + 5D7C59DC1208C6C3001C873E /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5D7C59C51208C68B001C873E /* ANGLE.xcconfig */; + buildSettings = { + }; + name = Production; + }; + FB39D0711200ED9200088E69 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5D7C59C71208C68B001C873E /* DebugRelease.xcconfig */; + buildSettings = { + GCC_OPTIMIZATION_LEVEL = 0; + }; + name = Debug; + }; + FB39D0721200ED9200088E69 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5D7C59C71208C68B001C873E /* DebugRelease.xcconfig */; + buildSettings = { + }; + name = Release; + }; + FB39D0D21200F0E400088E69 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5D7C59C51208C68B001C873E /* ANGLE.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + FB39D0D31200F0E400088E69 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5D7C59C51208C68B001C873E /* ANGLE.xcconfig */; + buildSettings = { + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5CB13FD7179F44C8001F851D /* Build configuration list for PBXAggregateTarget "Derived Sources" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5CB13FD8179F44C8001F851D /* Debug */, + 5CB13FD9179F44C8001F851D /* Release */, + 5CB13FDA179F44C8001F851D /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + FB39D0731200ED9200088E69 /* Build configuration list for PBXProject "ANGLE" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FB39D0711200ED9200088E69 /* Debug */, + FB39D0721200ED9200088E69 /* Release */, + 5D7C59DB1208C6C3001C873E /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + FB39D0D61200F11E00088E69 /* Build configuration list for PBXNativeTarget "ANGLE" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FB39D0D21200F0E400088E69 /* Debug */, + FB39D0D31200F0E400088E69 /* Release */, + 5D7C59DC1208C6C3001C873E /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; +/* End XCConfigurationList section */ + }; + rootObject = FB39D0701200ED9200088E69 /* Project object */; +} diff --git a/Source/ThirdParty/ANGLE/AUTHORS b/Source/ThirdParty/ANGLE/AUTHORS new file mode 100644 index 00000000000..a2ce91575ae --- /dev/null +++ b/Source/ThirdParty/ANGLE/AUTHORS @@ -0,0 +1,32 @@ +# This is the official list of The ANGLE Project Authors +# for copyright purposes. +# This file is distinct from the CONTRIBUTORS files. +# See the latter for an explanation. + +# Names should be added to this file as +# Name or Organization +# Email addresses for individuals are tracked elsewhere to avoid spam. + +Google Inc. +TransGaming Inc. +3DLabs Inc. Ltd. + +Adobe Systems Inc. +Autodesk, Inc. +Cloud Party, Inc. +Intel Corporation +Mozilla Corporation +Turbulenz +Klar盲lvdalens Datakonsult AB + +Jacek Caban +Mark Callow +Ginn Chen +James Hauxwell +Sam Hocevar +Pierre Leveille +Jonathan Liu +Boying Lu +Aitor Moreno +Yuri O'Donnell +Josh Soref diff --git a/Source/ThirdParty/ANGLE/CONTRIBUTORS b/Source/ThirdParty/ANGLE/CONTRIBUTORS new file mode 100644 index 00000000000..4cd41aff5a7 --- /dev/null +++ b/Source/ThirdParty/ANGLE/CONTRIBUTORS @@ -0,0 +1,76 @@ +# This is the official list of people who can contribute +# (and who have contributed) code to the ANGLE project +# repository. +# The AUTHORS file lists the copyright holders; this file +# lists people. For example, Google employees are listed here +# but not in AUTHORS, because Google holds the copyright. +# + +TransGaming Inc. + Nicolas Capens + Daniel Koch + Geoff Lang + Andrew Lewycky + Jamie Madill + Gavriel State + Shannon Woods + +Google Inc. + Brent Austin + Michael Bai + John Bauman + Peter Beverloo + Steve Block + Rachel Blum + Eric Boren + Henry Bridge + Nat Duca + Peter Kasting + Vangelis Kokkevis + Zhenyao Mo + Daniel Nicoara + Alastair Patrick + Alok Priyadarshi + Kenneth Russell + Brian Salomon + Gregg Tavares + Jeff Timanus + Ben Vanik + Adrienne Walker + thestig@chromium.org + Justin Schuh + +Adobe Systems Inc. + Alexandru Chiculita + Steve Minns + Max Vujovic + +Autodesk, Inc. + Ranger Harke + +Cloud Party, Inc. + Conor Dickinson + +Intel Corporation + Jin Yang + Andy Chen + Josh Triplett + +Klar盲lvdalens Datakonsult AB + Milian Wolff + +Mozilla Corp. + Ehsan Akhgari + Jeff Gilbert + Mike Hommey + Benoit Jacob + Makoto Kato + Vladimir Vukicevic + +Turbulenz + Michael Braithwaite + +Ulrik Persson (ddefrostt) +Mark Banner (standard8mbp) +David Kilzer + diff --git a/Source/ThirdParty/ANGLE/Configurations/ANGLE.xcconfig b/Source/ThirdParty/ANGLE/Configurations/ANGLE.xcconfig new file mode 100644 index 00000000000..6d4d0c6f581 --- /dev/null +++ b/Source/ThirdParty/ANGLE/Configurations/ANGLE.xcconfig @@ -0,0 +1,5 @@ +PRODUCT_NAME = ANGLE; + +HEADER_SEARCH_PATHS = include src; +INSTALL_PATH_ACTUAL = /usr/local/lib; +PUBLIC_HEADERS_FOLDER_PATH = $(INSTALL_PATH_PREFIX)/usr/local/include/ANGLE; diff --git a/Source/ThirdParty/ANGLE/Configurations/Base.xcconfig b/Source/ThirdParty/ANGLE/Configurations/Base.xcconfig new file mode 100644 index 00000000000..255ba2fbe8b --- /dev/null +++ b/Source/ThirdParty/ANGLE/Configurations/Base.xcconfig @@ -0,0 +1,48 @@ +#include "iOS.xcconfig" + +CLANG_CXX_LANGUAGE_STANDARD = gnu++0x; +CLANG_CXX_LIBRARY = libc++; +DEAD_CODE_STRIPPING = YES; +DEBUG_INFORMATION_FORMAT = dwarf-with-dsym; +GCC_C_LANGUAGE_STANDARD = gnu99; +GCC_DEBUGGING_SYMBOLS = default; +GCC_ENABLE_CPP_EXCEPTIONS = NO; +GCC_ENABLE_CPP_RTTI = NO; +GCC_ENABLE_OBJC_EXCEPTIONS = YES; +GCC_ENABLE_OBJC_GC = $(GCC_ENABLE_OBJC_GC_$(PLATFORM_NAME)); +GCC_ENABLE_OBJC_GC_iphoneos = NO; +GCC_ENABLE_OBJC_GC_iphonesimulator = NO; +GCC_ENABLE_OBJC_GC_macosx = supported; +GCC_ENABLE_SYMBOL_SEPARATION = NO; +GCC_FAST_OBJC_DISPATCH = YES; +GCC_MODEL_TUNING = $(GCC_MODEL_TUNING_$(PLATFORM_NAME)); +GCC_MODEL_TUNING_macosx = G5; +GCC_OBJC_CALL_CXX_CDTORS = YES; +GCC_OPTIMIZATION_LEVEL = s; +GCC_PRECOMPILE_PREFIX_HEADER = NO; +GCC_INLINES_ARE_PRIVATE_EXTERN = YES; +GCC_SYMBOLS_PRIVATE_EXTERN = NO; +GCC_THREADSAFE_STATICS = NO; +GCC_TREAT_WARNINGS_AS_ERRORS = YES; +GCC_VERSION = com.apple.compilers.llvm.clang.1_0; +GCC_WARN_64_TO_32_BIT_CONVERSION = YES; +GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; +GCC_WARN_ABOUT_MISSING_NEWLINE = YES; +LINKER_DISPLAYS_MANGLED_NAMES = YES; +PREBINDING = NO; +STRIP_INSTALLED_PRODUCT = NO; + +SUPPORTED_PLATFORMS = iphoneos iphonesimulator macosx; + +TARGET_MAC_OS_X_VERSION_MAJOR = $(MAC_OS_X_VERSION_MAJOR); + +TARGETING_SAME_OS_X_VERSION = $(TARGETING_SAME_OS_X_VERSION_$(MAC_OS_X_VERSION_MAJOR)_$(TARGET_MAC_OS_X_VERSION_MAJOR)); +TARGETING_SAME_OS_X_VERSION_1070_1070 = YES; +TARGETING_SAME_OS_X_VERSION_1080_1080 = YES; +TARGETING_SAME_OS_X_VERSION_1090_1090 = YES; + +INSTALL_PATH = $(INSTALL_PATH_PREFIX)$(INSTALL_PATH_ACTUAL); + +// Don't build against an SDK unless we're targeting an older OS version. +SDKROOT = $(SDKROOT_TARGETING_SAME_OS_X_VERSION_$(TARGETING_SAME_OS_X_VERSION)); +SDKROOT_TARGETING_SAME_OS_X_VERSION_ = macosx; diff --git a/Source/ThirdParty/ANGLE/Configurations/DebugRelease.xcconfig b/Source/ThirdParty/ANGLE/Configurations/DebugRelease.xcconfig new file mode 100644 index 00000000000..f1a0b246bd6 --- /dev/null +++ b/Source/ThirdParty/ANGLE/Configurations/DebugRelease.xcconfig @@ -0,0 +1,13 @@ +#include "Base.xcconfig" + +ARCHS = $(ARCHS_STANDARD_32_64_BIT); + +ONLY_ACTIVE_ARCH = YES; + +MACOSX_DEPLOYMENT_TARGET = $(MACOSX_DEPLOYMENT_TARGET_$(TARGET_MAC_OS_X_VERSION_MAJOR)); +MACOSX_DEPLOYMENT_TARGET_1070 = 10.7; +MACOSX_DEPLOYMENT_TARGET_1080 = 10.8; +MACOSX_DEPLOYMENT_TARGET_1090 = 10.9; + +GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; +DEBUG_INFORMATION_FORMAT = dwarf; diff --git a/Source/ThirdParty/ANGLE/Configurations/iOS.xcconfig b/Source/ThirdParty/ANGLE/Configurations/iOS.xcconfig new file mode 100644 index 00000000000..177b31989c5 --- /dev/null +++ b/Source/ThirdParty/ANGLE/Configurations/iOS.xcconfig @@ -0,0 +1 @@ +#include "/AppleInternal/XcodeConfig/AspenFamily.xcconfig" diff --git a/Source/ThirdParty/ANGLE/DEPS b/Source/ThirdParty/ANGLE/DEPS new file mode 100644 index 00000000000..1e5112c882b --- /dev/null +++ b/Source/ThirdParty/ANGLE/DEPS @@ -0,0 +1,18 @@ +deps = { + "trunk/third_party/gyp": + "http://gyp.googlecode.com/svn/trunk@1564", + + "trunk/third_party/googletest": + "http://googletest.googlecode.com/svn/trunk@573", #release 1.6.0 + + "trunk/third_party/googlemock": + "http://googlemock.googlecode.com/svn/trunk@387", #release 1.6.0 +} + +hooks = [ + { + # A change to a .gyp, .gypi, or to GYP itself should run the generator. + "pattern": ".", + "action": ["python", "trunk/build/gyp_angle"], + }, +] diff --git a/Source/ThirdParty/ANGLE/DerivedSources.make b/Source/ThirdParty/ANGLE/DerivedSources.make new file mode 100644 index 00000000000..0c24efe45e3 --- /dev/null +++ b/Source/ThirdParty/ANGLE/DerivedSources.make @@ -0,0 +1,44 @@ +# Copyright (C) 2013 Apple Inc. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +SEARCH_PATH = $(ANGLE)/src/compiler $(ANGLE)/src/compiler/preprocessor + +vpath %.l $(SEARCH_PATH) +vpath %.y $(SEARCH_PATH) + +FLEX = flex --noline --nounistd +BISON = bison --no-lines --skeleton=yacc.c + +all : glslang_lex.cpp glslang_tab.h glslang_tab.cpp ExpressionParser.cpp Tokenizer.cpp + +glslang_tab%h glslang_tab%cpp : glslang.y + $(eval OUTPUT = $(basename $@)) + $(BISON) --defines=$(OUTPUT).h --output=$(OUTPUT).cpp $< + +ExpressionParser.cpp : ExpressionParser.y + $(BISON) --output=$@ $< + +glslang_lex.cpp : glslang.l + $(FLEX) --outfile=$@ $< + +Tokenizer.cpp : Tokenizer.l + $(FLEX) --outfile=$@ $< \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/DerivedSources.pri b/Source/ThirdParty/ANGLE/DerivedSources.pri new file mode 100644 index 00000000000..686c8266fa6 --- /dev/null +++ b/Source/ThirdParty/ANGLE/DerivedSources.pri @@ -0,0 +1,45 @@ +# ------------------------------------------------------------------- +# Derived sources for ANGLE +# +# See 'Tools/qmake/README' for an overview of the build system +# ------------------------------------------------------------------- + +# This file is both a top level target, and included from Target.pri, +# so that the resulting generated sources can be added to SOURCES. +# We only set the template if we're a top level target, so that we +# don't override what Target.pri has already set. +sanitizedFile = $$toSanitizedPath($$_FILE_) +equals(sanitizedFile, $$toSanitizedPath($$_PRO_FILE_)):TEMPLATE = derived + +INCLUDEPATH += \ + $$PWD/include \ + $$PWD/include/GLSLANG \ + $$PWD/include/KHR \ + $$PWD/src \ + $$PWD/src/compiler/preprocessor + +ANGLE_FLEX_SOURCES = \ + $$PWD/src/compiler/glslang.l \ + $$PWD/src/compiler/preprocessor/Tokenizer.l + +angleflex.output = ${QMAKE_FILE_BASE}_lex.cpp +angleflex.input = ANGLE_FLEX_SOURCES +angleflex.commands = $$FLEX --noline --nounistd --outfile=${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} +GENERATORS += angleflex + +ANGLE_BISON_SOURCES = \ + $$PWD/src/compiler/glslang.y \ + $$PWD/src/compiler/preprocessor/ExpressionParser.y + +anglebison_decl.output = ${QMAKE_FILE_BASE}_tab.h +anglebison_decl.input = ANGLE_BISON_SOURCES +anglebison_decl.commands = bison --no-lines --skeleton=yacc.c --defines=${QMAKE_FILE_OUT} --output=${QMAKE_FUNC_FILE_OUT_PATH}$${QMAKE_DIR_SEP}${QMAKE_FILE_OUT_BASE}.cpp ${QMAKE_FILE_IN} +anglebison_decl.variable_out = GENERATED_FILES +GENERATORS += anglebison_decl + +anglebison_impl.input = ANGLE_BISON_SOURCES +anglebison_impl.commands = $$MAKEFILE_NOOP_COMMAND +anglebison_impl.depends = $$GENERATED_SOURCES_DESTDIR/${QMAKE_FILE_BASE}_tab.h +anglebison_impl.output = ${QMAKE_FILE_BASE}_tab.cpp +GENERATORS += anglebison_impl + diff --git a/Source/ThirdParty/ANGLE/GNUmakefile.am b/Source/ThirdParty/ANGLE/GNUmakefile.am new file mode 100644 index 00000000000..600d5d7f589 --- /dev/null +++ b/Source/ThirdParty/ANGLE/GNUmakefile.am @@ -0,0 +1,150 @@ +if USE_OPENGL +noinst_LTLIBRARIES += \ + libANGLE.la +endif + +libANGLE_la_CXXFLAGS = $(global_cxxflags) +libANGLE_la_CFLAGS = $(global_cflags) +libANGLE_la_CPPFLAGS = \ + $(global_cppflags) \ + -I$(srcdir)/Source/ThirdParty/ANGLE/src \ + -I$(srcdir)/Source/ThirdParty/ANGLE/include \ + -I$(srcdir)/Source/ThirdParty/ANGLE/include/GLSLANG \ + -I$(srcdir)/Source/ThirdParty/ANGLE/include/KHR + +nodist_libANGLE_la_SOURCES = \ + DerivedSources/ANGLE/glslang.cpp \ + DerivedSources/ANGLE/glslang_tab.cpp \ + DerivedSources/ANGLE/glslang_tab.h + +libANGLE_la_SOURCES = \ + Source/ThirdParty/ANGLE/include/EGL/egl.h \ + Source/ThirdParty/ANGLE/include/EGL/eglplatform.h \ + Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h \ + Source/ThirdParty/ANGLE/include/KHR/khrplatform.h \ + Source/ThirdParty/ANGLE/src/common/angleutils.h \ + Source/ThirdParty/ANGLE/src/compiler/BaseTypes.h \ + Source/ThirdParty/ANGLE/src/compiler/BuiltInFunctionEmulator.cpp \ + Source/ThirdParty/ANGLE/src/compiler/BuiltInFunctionEmulator.h \ + Source/ThirdParty/ANGLE/src/compiler/CodeGenGLSL.cpp \ + Source/ThirdParty/ANGLE/src/compiler/Common.h \ + Source/ThirdParty/ANGLE/src/compiler/Compiler.cpp \ + Source/ThirdParty/ANGLE/src/compiler/ConstantUnion.h \ + Source/ThirdParty/ANGLE/src/compiler/debug.cpp \ + Source/ThirdParty/ANGLE/src/compiler/debug.h \ + Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraph.cpp \ + Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraph.h \ + Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.h \ + Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.cpp \ + Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphOutput.h \ + Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphOutput.cpp \ + Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphTraverse.cpp \ + Source/ThirdParty/ANGLE/src/compiler/DetectCallDepth.cpp \ + Source/ThirdParty/ANGLE/src/compiler/DetectCallDepth.h \ + Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp \ + Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.h \ + Source/ThirdParty/ANGLE/src/compiler/Diagnostics.cpp \ + Source/ThirdParty/ANGLE/src/compiler/Diagnostics.h \ + Source/ThirdParty/ANGLE/src/compiler/DirectiveHandler.cpp \ + Source/ThirdParty/ANGLE/src/compiler/DirectiveHandler.h \ + Source/ThirdParty/ANGLE/src/compiler/ExtensionBehavior.h \ + Source/ThirdParty/ANGLE/src/compiler/ForLoopUnroll.cpp \ + Source/ThirdParty/ANGLE/src/compiler/ForLoopUnroll.h \ + Source/ThirdParty/ANGLE/src/compiler/glslang.h \ + Source/ThirdParty/ANGLE/src/compiler/HashNames.h \ + Source/ThirdParty/ANGLE/src/compiler/InfoSink.cpp \ + Source/ThirdParty/ANGLE/src/compiler/InfoSink.h \ + Source/ThirdParty/ANGLE/src/compiler/Initialize.cpp \ + Source/ThirdParty/ANGLE/src/compiler/InitializeDll.cpp \ + Source/ThirdParty/ANGLE/src/compiler/InitializeDll.h \ + Source/ThirdParty/ANGLE/src/compiler/InitializeGlobals.h \ + Source/ThirdParty/ANGLE/src/compiler/Initialize.h \ + Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.h \ + Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.cpp \ + Source/ThirdParty/ANGLE/src/compiler/Intermediate.cpp \ + Source/ThirdParty/ANGLE/src/compiler/intermediate.h \ + Source/ThirdParty/ANGLE/src/compiler/intermOut.cpp \ + Source/ThirdParty/ANGLE/src/compiler/IntermTraverse.cpp \ + Source/ThirdParty/ANGLE/src/compiler/localintermediate.h \ + Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.cpp \ + Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h \ + Source/ThirdParty/ANGLE/src/compiler/MMap.h \ + Source/ThirdParty/ANGLE/src/compiler/osinclude.h \ + Source/ThirdParty/ANGLE/src/compiler/ossource_posix.cpp \ + Source/ThirdParty/ANGLE/src/compiler/OutputESSL.cpp \ + Source/ThirdParty/ANGLE/src/compiler/OutputESSL.h \ + Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.cpp \ + Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.h \ + Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp \ + Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h \ + Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.cpp \ + Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.h \ + Source/ThirdParty/ANGLE/src/compiler/parseConst.cpp \ + Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp \ + Source/ThirdParty/ANGLE/src/compiler/ParseHelper.h \ + Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.cpp \ + Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.h \ + Source/ThirdParty/ANGLE/src/compiler/Pragma.h \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/length_limits.h \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/numeric_lex.h \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/DiagnosticsBase.cpp \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/DiagnosticsBase.h \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveHandlerBase.cpp \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveHandlerBase.h \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveParser.cpp \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveParser.h \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.h \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.cpp \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.h \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/Lexer.cpp \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/Lexer.h \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/Macro.cpp \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/Macro.h \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/MacroExpander.cpp \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/MacroExpander.h \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.cpp \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.h \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/SourceLocation.h \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/Token.cpp \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/Token.h \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.cpp \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.h \ + Source/ThirdParty/ANGLE/src/compiler/preprocessor/pp_utils.h \ + Source/ThirdParty/ANGLE/src/compiler/QualifierAlive.cpp \ + Source/ThirdParty/ANGLE/src/compiler/QualifierAlive.h \ + Source/ThirdParty/ANGLE/src/compiler/RemoveTree.cpp \ + Source/ThirdParty/ANGLE/src/compiler/RemoveTree.h \ + Source/ThirdParty/ANGLE/src/compiler/RenameFunction.h \ + Source/ThirdParty/ANGLE/src/compiler/SearchSymbol.cpp \ + Source/ThirdParty/ANGLE/src/compiler/SearchSymbol.h \ + Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp \ + Source/ThirdParty/ANGLE/src/compiler/ShHandle.h \ + Source/ThirdParty/ANGLE/src/compiler/SymbolTable.cpp \ + Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h \ + Source/ThirdParty/ANGLE/src/compiler/VariablePacker.cpp \ + Source/ThirdParty/ANGLE/src/compiler/VariablePacker.h \ + Source/ThirdParty/ANGLE/src/compiler/VersionGLSL.cpp \ + Source/ThirdParty/ANGLE/src/compiler/VersionGLSL.h \ + Source/ThirdParty/ANGLE/src/compiler/timing/RestrictFragmentShaderTiming.cpp \ + Source/ThirdParty/ANGLE/src/compiler/timing/RestrictFragmentShaderTiming.h \ + Source/ThirdParty/ANGLE/src/compiler/timing/RestrictVertexShaderTiming.cpp \ + Source/ThirdParty/ANGLE/src/compiler/timing/RestrictVertexShaderTiming.h \ + Source/ThirdParty/ANGLE/src/compiler/TranslatorESSL.cpp \ + Source/ThirdParty/ANGLE/src/compiler/TranslatorESSL.h \ + Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.cpp \ + Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.h \ + Source/ThirdParty/ANGLE/src/compiler/TranslatorHLSL.cpp \ + Source/ThirdParty/ANGLE/src/compiler/TranslatorHLSL.h \ + Source/ThirdParty/ANGLE/src/compiler/Types.h \ + Source/ThirdParty/ANGLE/src/compiler/Uniform.cpp \ + Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.cpp \ + Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.h \ + Source/ThirdParty/ANGLE/src/compiler/util.cpp \ + Source/ThirdParty/ANGLE/src/compiler/util.h \ + Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.cpp \ + Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.h \ + Source/ThirdParty/ANGLE/src/compiler/VariableInfo.cpp \ + Source/ThirdParty/ANGLE/src/compiler/VariableInfo.h \ + Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp \ + Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.h diff --git a/Source/ThirdParty/ANGLE/LICENSE b/Source/ThirdParty/ANGLE/LICENSE new file mode 100644 index 00000000000..bdacb32e36d --- /dev/null +++ b/Source/ThirdParty/ANGLE/LICENSE @@ -0,0 +1,32 @@ +// Copyright (C) 2002-2013 The ANGLE Project Authors. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// +// Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. +// Ltd., nor the names of their contributors may be used to endorse +// or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. diff --git a/Source/ThirdParty/ANGLE/Makefile b/Source/ThirdParty/ANGLE/Makefile new file mode 100644 index 00000000000..cb4c11a57c6 --- /dev/null +++ b/Source/ThirdParty/ANGLE/Makefile @@ -0,0 +1 @@ +include ../Makefile.shared diff --git a/Source/ThirdParty/ANGLE/README.chromium b/Source/ThirdParty/ANGLE/README.chromium new file mode 100644 index 00000000000..b141fb53074 --- /dev/null +++ b/Source/ThirdParty/ANGLE/README.chromium @@ -0,0 +1,10 @@ +Name: ANGLE +URL: https://code.google.com/p/angleproject/ +Version: 2422 +License: BSD +License File: LICENSE + +Description: +ANGLE is a conformant implementation of the OpenGL ES 2.0 +specification that is hardware鈥恆ccelerated via Direct3D. + diff --git a/Source/ThirdParty/ANGLE/Target.pri b/Source/ThirdParty/ANGLE/Target.pri new file mode 100644 index 00000000000..dc08a155057 --- /dev/null +++ b/Source/ThirdParty/ANGLE/Target.pri @@ -0,0 +1,153 @@ +# ------------------------------------------------------------------- +# Target file for the ANGLE static library +# +# See 'Tools/qmake/README' for an overview of the build system +# ------------------------------------------------------------------- + +TEMPLATE = lib +TARGET = ANGLE + +include(ANGLE.pri) + +CONFIG += staticlib + +INCLUDEPATH += \ + $$SOURCE_DIR/src \ + $$SOURCE_DIR/src/compiler/preprocessor \ + $$SOURCE_DIR/include + +HEADERS += \ + src/compiler/BaseTypes.h \ + src/compiler/BuiltInFunctionEmulator.h \ + src/compiler/Common.h \ + src/compiler/ConstantUnion.h \ + src/compiler/debug.h \ + src/compiler/depgraph/DependencyGraph.h \ + src/compiler/depgraph/DependencyGraphBuilder.h \ + src/compiler/depgraph/DependencyGraphOutput.h \ + src/compiler/DetectCallDepth.h \ + src/compiler/DetectDiscontinuity.h \ + src/compiler/Diagnostics.h \ + src/compiler/DirectiveHandler.h \ + src/compiler/ExtensionBehavior.h \ + src/compiler/ForLoopUnroll.h \ + src/compiler/glslang.h \ + src/compiler/HashNames.h \ + src/compiler/InfoSink.h \ + src/compiler/InitializeDll.h \ + src/compiler/InitializeGlobals.h \ + src/compiler/Initialize.h \ + src/compiler/InitializeParseContext.h \ + src/compiler/intermediate.h \ + src/compiler/localintermediate.h \ + src/compiler/MMap.h \ + src/compiler/MapLongVariableNames.h \ + src/compiler/osinclude.h \ + src/compiler/Pragma.h \ + src/compiler/preprocessor/DiagnosticsBase.h \ + src/compiler/preprocessor/DirectiveHandlerBase.h \ + src/compiler/preprocessor/DirectiveParser.h \ + src/compiler/preprocessor/Input.h \ + src/compiler/preprocessor/length_limits.h \ + src/compiler/preprocessor/Lexer.h \ + src/compiler/preprocessor/Macro.h \ + src/compiler/preprocessor/MacroExpander.h \ + src/compiler/preprocessor/numeric_lex.h \ + src/compiler/preprocessor/Preprocessor.h \ + src/compiler/preprocessor/SourceLocation.h \ + src/compiler/preprocessor/Token.h \ + src/compiler/preprocessor/Tokenizer.h \ + src/compiler/OutputESSL.h \ + src/compiler/OutputGLSL.h \ + src/compiler/OutputGLSLBase.h \ + src/compiler/OutputHLSL.h \ + src/compiler/ParseHelper.h \ + src/compiler/PoolAlloc.h \ + src/compiler/QualifierAlive.h \ + src/compiler/RemoveTree.h \ + src/compiler/RenameFunction.h \ + src/compiler/SearchSymbol.h \ + src/compiler/ShHandle.h \ + src/compiler/SymbolTable.h \ + src/compiler/timing/RestrictFragmentShaderTiming.h \ + src/compiler/timing/RestrictVertexShaderTiming.h \ + src/compiler/TranslatorESSL.h \ + src/compiler/TranslatorGLSL.h \ + src/compiler/TranslatorHLSL.h \ + src/compiler/Types.h \ + src/compiler/Uniform.h \ + src/compiler/UnfoldShortCircuit.h \ + src/compiler/util.h \ + src/compiler/ValidateLimitations.h \ + src/compiler/VariableInfo.h \ + src/compiler/VariablePacker.h \ + src/compiler/VersionGLSL.h \ + src/third_party/compiler/ArrayBoundsClamper.h + +SOURCES += \ + src/compiler/BuiltInFunctionEmulator.cpp \ + src/compiler/CodeGenGLSL.cpp \ + src/compiler/Compiler.cpp \ + src/compiler/debug.cpp \ + src/compiler/depgraph/DependencyGraph.cpp \ + src/compiler/depgraph/DependencyGraphBuilder.cpp \ + src/compiler/depgraph/DependencyGraphOutput.cpp \ + src/compiler/depgraph/DependencyGraphTraverse.cpp \ + src/compiler/DetectCallDepth.cpp \ + src/compiler/DetectDiscontinuity.cpp \ + src/compiler/Diagnostics.cpp \ + src/compiler/DirectiveHandler.cpp \ + src/compiler/ForLoopUnroll.cpp \ + src/compiler/InfoSink.cpp \ + src/compiler/Initialize.cpp \ + src/compiler/InitializeDll.cpp \ + src/compiler/InitializeParseContext.cpp \ + src/compiler/Intermediate.cpp \ + src/compiler/intermOut.cpp \ + src/compiler/IntermTraverse.cpp \ + src/compiler/MapLongVariableNames.cpp \ + src/compiler/OutputESSL.cpp \ + src/compiler/OutputGLSL.cpp \ + src/compiler/OutputGLSLBase.cpp \ + src/compiler/OutputHLSL.cpp \ + src/compiler/parseConst.cpp \ + src/compiler/ParseHelper.cpp \ + src/compiler/PoolAlloc.cpp \ + src/compiler/QualifierAlive.cpp \ + src/compiler/RemoveTree.cpp \ + src/compiler/SearchSymbol.cpp \ + src/compiler/ShaderLang.cpp \ + src/compiler/SymbolTable.cpp \ + src/compiler/timing/RestrictFragmentShaderTiming.cpp \ + src/compiler/timing/RestrictVertexShaderTiming.cpp \ + src/compiler/TranslatorESSL.cpp \ + src/compiler/TranslatorGLSL.cpp \ + src/compiler/TranslatorHLSL.cpp \ + src/compiler/Uniform.cpp \ + src/compiler/UnfoldShortCircuit.cpp \ + src/compiler/util.cpp \ + src/compiler/ValidateLimitations.cpp \ + src/compiler/VariableInfo.cpp \ + src/compiler/VariablePacker.cpp \ + src/compiler/VersionGLSL.cpp \ + src/compiler/preprocessor/DiagnosticsBase.cpp \ + src/compiler/preprocessor/DirectiveHandlerBase.cpp \ + src/compiler/preprocessor/DirectiveParser.cpp \ + src/compiler/preprocessor/Input.cpp \ + src/compiler/preprocessor/Lexer.cpp \ + src/compiler/preprocessor/Macro.cpp \ + src/compiler/preprocessor/MacroExpander.cpp \ + src/compiler/preprocessor/Preprocessor.cpp \ + src/compiler/preprocessor/Token.cpp \ + src/third_party/compiler/ArrayBoundsClamper.cpp + +win32: SOURCES += src/compiler/ossource_win.cpp +else: SOURCES += src/compiler/ossource_posix.cpp + +# Make sure the derived sources are built +include(DerivedSources.pri) + +CONFIG += compiling_thirdparty_code + +# We do not need anything from Qt +QT = diff --git a/Source/ThirdParty/ANGLE/codereview.settings b/Source/ThirdParty/ANGLE/codereview.settings new file mode 100644 index 00000000000..6b8615de1f3 --- /dev/null +++ b/Source/ThirdParty/ANGLE/codereview.settings @@ -0,0 +1,4 @@ +# This file is used by gcl to get repository specific information. +CODE_REVIEW_SERVER: codereview.appspot.com +CC_LIST: angleproject-review@googlegroups.com +VIEW_VC: http://code.google.com/p/angleproject/source/detail?r= diff --git a/Source/ThirdParty/ANGLE/include/EGL/egl.h b/Source/ThirdParty/ANGLE/include/EGL/egl.h new file mode 100644 index 00000000000..99ea342a477 --- /dev/null +++ b/Source/ThirdParty/ANGLE/include/EGL/egl.h @@ -0,0 +1,329 @@ +/* -*- mode: c; tab-width: 8; -*- */ +/* vi: set sw=4 ts=8: */ +/* Reference version of egl.h for EGL 1.4. + * $Revision: 9356 $ on $Date: 2009-10-21 02:52:25 -0700 (Wed, 21 Oct 2009) $ + */ + +/* +** Copyright (c) 2007-2009 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +#ifndef __egl_h_ +#define __egl_h_ + +/* All platform-dependent types and macro boilerplate (such as EGLAPI + * and EGLAPIENTRY) should go in eglplatform.h. + */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* EGL Types */ +/* EGLint is defined in eglplatform.h */ +typedef unsigned int EGLBoolean; +typedef unsigned int EGLenum; +typedef void *EGLConfig; +typedef void *EGLContext; +typedef void *EGLDisplay; +typedef void *EGLSurface; +typedef void *EGLClientBuffer; + +/* EGL Versioning */ +#define EGL_VERSION_1_0 1 +#define EGL_VERSION_1_1 1 +#define EGL_VERSION_1_2 1 +#define EGL_VERSION_1_3 1 +#define EGL_VERSION_1_4 1 + +/* EGL Enumerants. Bitmasks and other exceptional cases aside, most + * enums are assigned unique values starting at 0x3000. + */ + +/* EGL aliases */ +#define EGL_FALSE 0 +#define EGL_TRUE 1 + +/* Out-of-band handle values */ +#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0) +#define EGL_NO_CONTEXT ((EGLContext)0) +#define EGL_NO_DISPLAY ((EGLDisplay)0) +#define EGL_NO_SURFACE ((EGLSurface)0) + +/* Out-of-band attribute value */ +#define EGL_DONT_CARE ((EGLint)-1) + +/* Errors / GetError return values */ +#define EGL_SUCCESS 0x3000 +#define EGL_NOT_INITIALIZED 0x3001 +#define EGL_BAD_ACCESS 0x3002 +#define EGL_BAD_ALLOC 0x3003 +#define EGL_BAD_ATTRIBUTE 0x3004 +#define EGL_BAD_CONFIG 0x3005 +#define EGL_BAD_CONTEXT 0x3006 +#define EGL_BAD_CURRENT_SURFACE 0x3007 +#define EGL_BAD_DISPLAY 0x3008 +#define EGL_BAD_MATCH 0x3009 +#define EGL_BAD_NATIVE_PIXMAP 0x300A +#define EGL_BAD_NATIVE_WINDOW 0x300B +#define EGL_BAD_PARAMETER 0x300C +#define EGL_BAD_SURFACE 0x300D +#define EGL_CONTEXT_LOST 0x300E /* EGL 1.1 - IMG_power_management */ + +/* Reserved 0x300F-0x301F for additional errors */ + +/* Config attributes */ +#define EGL_BUFFER_SIZE 0x3020 +#define EGL_ALPHA_SIZE 0x3021 +#define EGL_BLUE_SIZE 0x3022 +#define EGL_GREEN_SIZE 0x3023 +#define EGL_RED_SIZE 0x3024 +#define EGL_DEPTH_SIZE 0x3025 +#define EGL_STENCIL_SIZE 0x3026 +#define EGL_CONFIG_CAVEAT 0x3027 +#define EGL_CONFIG_ID 0x3028 +#define EGL_LEVEL 0x3029 +#define EGL_MAX_PBUFFER_HEIGHT 0x302A +#define EGL_MAX_PBUFFER_PIXELS 0x302B +#define EGL_MAX_PBUFFER_WIDTH 0x302C +#define EGL_NATIVE_RENDERABLE 0x302D +#define EGL_NATIVE_VISUAL_ID 0x302E +#define EGL_NATIVE_VISUAL_TYPE 0x302F +#define EGL_SAMPLES 0x3031 +#define EGL_SAMPLE_BUFFERS 0x3032 +#define EGL_SURFACE_TYPE 0x3033 +#define EGL_TRANSPARENT_TYPE 0x3034 +#define EGL_TRANSPARENT_BLUE_VALUE 0x3035 +#define EGL_TRANSPARENT_GREEN_VALUE 0x3036 +#define EGL_TRANSPARENT_RED_VALUE 0x3037 +#define EGL_NONE 0x3038 /* Attrib list terminator */ +#define EGL_BIND_TO_TEXTURE_RGB 0x3039 +#define EGL_BIND_TO_TEXTURE_RGBA 0x303A +#define EGL_MIN_SWAP_INTERVAL 0x303B +#define EGL_MAX_SWAP_INTERVAL 0x303C +#define EGL_LUMINANCE_SIZE 0x303D +#define EGL_ALPHA_MASK_SIZE 0x303E +#define EGL_COLOR_BUFFER_TYPE 0x303F +#define EGL_RENDERABLE_TYPE 0x3040 +#define EGL_MATCH_NATIVE_PIXMAP 0x3041 /* Pseudo-attribute (not queryable) */ +#define EGL_CONFORMANT 0x3042 + +/* Reserved 0x3041-0x304F for additional config attributes */ + +/* Config attribute values */ +#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */ +#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */ +#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */ +#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */ +#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */ + +/* More config attribute values, for EGL_TEXTURE_FORMAT */ +#define EGL_NO_TEXTURE 0x305C +#define EGL_TEXTURE_RGB 0x305D +#define EGL_TEXTURE_RGBA 0x305E +#define EGL_TEXTURE_2D 0x305F + +/* Config attribute mask bits */ +#define EGL_PBUFFER_BIT 0x0001 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_PIXMAP_BIT 0x0002 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_WINDOW_BIT 0x0004 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400 /* EGL_SURFACE_TYPE mask bits */ + +#define EGL_OPENGL_ES_BIT 0x0001 /* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENVG_BIT 0x0002 /* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENGL_ES2_BIT 0x0004 /* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENGL_BIT 0x0008 /* EGL_RENDERABLE_TYPE mask bits */ + +/* QueryString targets */ +#define EGL_VENDOR 0x3053 +#define EGL_VERSION 0x3054 +#define EGL_EXTENSIONS 0x3055 +#define EGL_CLIENT_APIS 0x308D + +/* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */ +#define EGL_HEIGHT 0x3056 +#define EGL_WIDTH 0x3057 +#define EGL_LARGEST_PBUFFER 0x3058 +#define EGL_TEXTURE_FORMAT 0x3080 +#define EGL_TEXTURE_TARGET 0x3081 +#define EGL_MIPMAP_TEXTURE 0x3082 +#define EGL_MIPMAP_LEVEL 0x3083 +#define EGL_RENDER_BUFFER 0x3086 +#define EGL_VG_COLORSPACE 0x3087 +#define EGL_VG_ALPHA_FORMAT 0x3088 +#define EGL_HORIZONTAL_RESOLUTION 0x3090 +#define EGL_VERTICAL_RESOLUTION 0x3091 +#define EGL_PIXEL_ASPECT_RATIO 0x3092 +#define EGL_SWAP_BEHAVIOR 0x3093 +#define EGL_MULTISAMPLE_RESOLVE 0x3099 + +/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */ +#define EGL_BACK_BUFFER 0x3084 +#define EGL_SINGLE_BUFFER 0x3085 + +/* OpenVG color spaces */ +#define EGL_VG_COLORSPACE_sRGB 0x3089 /* EGL_VG_COLORSPACE value */ +#define EGL_VG_COLORSPACE_LINEAR 0x308A /* EGL_VG_COLORSPACE value */ + +/* OpenVG alpha formats */ +#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */ +#define EGL_VG_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */ + +/* Constant scale factor by which fractional display resolutions & + * aspect ratio are scaled when queried as integer values. + */ +#define EGL_DISPLAY_SCALING 10000 + +/* Unknown display resolution/aspect ratio */ +#define EGL_UNKNOWN ((EGLint)-1) + +/* Back buffer swap behaviors */ +#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */ +#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */ + +/* CreatePbufferFromClientBuffer buffer types */ +#define EGL_OPENVG_IMAGE 0x3096 + +/* QueryContext targets */ +#define EGL_CONTEXT_CLIENT_TYPE 0x3097 + +/* CreateContext attributes */ +#define EGL_CONTEXT_CLIENT_VERSION 0x3098 + +/* Multisample resolution behaviors */ +#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A /* EGL_MULTISAMPLE_RESOLVE value */ +#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B /* EGL_MULTISAMPLE_RESOLVE value */ + +/* BindAPI/QueryAPI targets */ +#define EGL_OPENGL_ES_API 0x30A0 +#define EGL_OPENVG_API 0x30A1 +#define EGL_OPENGL_API 0x30A2 + +/* GetCurrentSurface targets */ +#define EGL_DRAW 0x3059 +#define EGL_READ 0x305A + +/* WaitNative engines */ +#define EGL_CORE_NATIVE_ENGINE 0x305B + +/* EGL 1.2 tokens renamed for consistency in EGL 1.3 */ +#define EGL_COLORSPACE EGL_VG_COLORSPACE +#define EGL_ALPHA_FORMAT EGL_VG_ALPHA_FORMAT +#define EGL_COLORSPACE_sRGB EGL_VG_COLORSPACE_sRGB +#define EGL_COLORSPACE_LINEAR EGL_VG_COLORSPACE_LINEAR +#define EGL_ALPHA_FORMAT_NONPRE EGL_VG_ALPHA_FORMAT_NONPRE +#define EGL_ALPHA_FORMAT_PRE EGL_VG_ALPHA_FORMAT_PRE + +/* EGL extensions must request enum blocks from the Khronos + * API Registrar, who maintains the enumerant registry. Submit + * a bug in Khronos Bugzilla against task "Registry". + */ + + + +/* EGL Functions */ + +EGLAPI EGLint EGLAPIENTRY eglGetError(void); + +EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id); +EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor); +EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy); + +EGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name); + +EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, + EGLint config_size, EGLint *num_config); +EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, + EGLConfig *configs, EGLint config_size, + EGLint *num_config); +EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, + EGLint attribute, EGLint *value); + +EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, + EGLNativeWindowType win, + const EGLint *attrib_list); +EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, + const EGLint *attrib_list); +EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, + EGLNativePixmapType pixmap, + const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface); +EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface, + EGLint attribute, EGLint *value); + +EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api); +EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void); + +EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void); + +EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void); + +EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer( + EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, + EGLConfig config, const EGLint *attrib_list); + +EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, + EGLint attribute, EGLint value); +EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); +EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); + + +EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval); + + +EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config, + EGLContext share_context, + const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx); +EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, + EGLSurface read, EGLContext ctx); + +EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void); +EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw); +EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx, + EGLint attribute, EGLint *value); + +EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void); +EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine); +EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface); +EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, + EGLNativePixmapType target); + +/* This is a generic function pointer type, whose name indicates it must + * be cast to the proper type *and calling convention* before use. + */ +typedef void (*__eglMustCastToProperFunctionPointerType)(void); + +/* Now, define eglGetProcAddress using the generic function ptr. type */ +EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY + eglGetProcAddress(const char *procname); + +#ifdef __cplusplus +} +#endif + +#endif /* __egl_h_ */ diff --git a/Source/ThirdParty/ANGLE/include/EGL/eglext.h b/Source/ThirdParty/ANGLE/include/EGL/eglext.h new file mode 100644 index 00000000000..c06d4c08505 --- /dev/null +++ b/Source/ThirdParty/ANGLE/include/EGL/eglext.h @@ -0,0 +1,354 @@ +#ifndef __eglext_h_ +#define __eglext_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright (c) 2007-2012 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +#include + +/*************************************************************/ + +/* Header file version number */ +/* Current version at http://www.khronos.org/registry/egl/ */ +/* $Revision: 16473 $ on $Date: 2012-01-04 02:20:48 -0800 (Wed, 04 Jan 2012) $ */ +#define EGL_EGLEXT_VERSION 11 + +#ifndef EGL_KHR_config_attribs +#define EGL_KHR_config_attribs 1 +#define EGL_CONFORMANT_KHR 0x3042 /* EGLConfig attribute */ +#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020 /* EGL_SURFACE_TYPE bitfield */ +#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040 /* EGL_SURFACE_TYPE bitfield */ +#endif + +#ifndef EGL_KHR_lock_surface +#define EGL_KHR_lock_surface 1 +#define EGL_READ_SURFACE_BIT_KHR 0x0001 /* EGL_LOCK_USAGE_HINT_KHR bitfield */ +#define EGL_WRITE_SURFACE_BIT_KHR 0x0002 /* EGL_LOCK_USAGE_HINT_KHR bitfield */ +#define EGL_LOCK_SURFACE_BIT_KHR 0x0080 /* EGL_SURFACE_TYPE bitfield */ +#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100 /* EGL_SURFACE_TYPE bitfield */ +#define EGL_MATCH_FORMAT_KHR 0x3043 /* EGLConfig attribute */ +#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0 /* EGL_MATCH_FORMAT_KHR value */ +#define EGL_FORMAT_RGB_565_KHR 0x30C1 /* EGL_MATCH_FORMAT_KHR value */ +#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2 /* EGL_MATCH_FORMAT_KHR value */ +#define EGL_FORMAT_RGBA_8888_KHR 0x30C3 /* EGL_MATCH_FORMAT_KHR value */ +#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4 /* eglLockSurfaceKHR attribute */ +#define EGL_LOCK_USAGE_HINT_KHR 0x30C5 /* eglLockSurfaceKHR attribute */ +#define EGL_BITMAP_POINTER_KHR 0x30C6 /* eglQuerySurface attribute */ +#define EGL_BITMAP_PITCH_KHR 0x30C7 /* eglQuerySurface attribute */ +#define EGL_BITMAP_ORIGIN_KHR 0x30C8 /* eglQuerySurface attribute */ +#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9 /* eglQuerySurface attribute */ +#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA /* eglQuerySurface attribute */ +#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB /* eglQuerySurface attribute */ +#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC /* eglQuerySurface attribute */ +#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD /* eglQuerySurface attribute */ +#define EGL_LOWER_LEFT_KHR 0x30CE /* EGL_BITMAP_ORIGIN_KHR value */ +#define EGL_UPPER_LEFT_KHR 0x30CF /* EGL_BITMAP_ORIGIN_KHR value */ +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay display, EGLSurface surface); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface); +#endif + +#ifndef EGL_KHR_image +#define EGL_KHR_image 1 +#define EGL_NATIVE_PIXMAP_KHR 0x30B0 /* eglCreateImageKHR target */ +typedef void *EGLImageKHR; +#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0) +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image); +#endif + +#ifndef EGL_KHR_vg_parent_image +#define EGL_KHR_vg_parent_image 1 +#define EGL_VG_PARENT_IMAGE_KHR 0x30BA /* eglCreateImageKHR target */ +#endif + +#ifndef EGL_KHR_gl_texture_2D_image +#define EGL_KHR_gl_texture_2D_image 1 +#define EGL_GL_TEXTURE_2D_KHR 0x30B1 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC /* eglCreateImageKHR attribute */ +#endif + +#ifndef EGL_KHR_gl_texture_cubemap_image +#define EGL_KHR_gl_texture_cubemap_image 1 +#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8 /* eglCreateImageKHR target */ +#endif + +#ifndef EGL_KHR_gl_texture_3D_image +#define EGL_KHR_gl_texture_3D_image 1 +#define EGL_GL_TEXTURE_3D_KHR 0x30B2 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD /* eglCreateImageKHR attribute */ +#endif + +#ifndef EGL_KHR_gl_renderbuffer_image +#define EGL_KHR_gl_renderbuffer_image 1 +#define EGL_GL_RENDERBUFFER_KHR 0x30B9 /* eglCreateImageKHR target */ +#endif + +#if KHRONOS_SUPPORT_INT64 /* EGLTimeKHR requires 64-bit uint support */ +#ifndef EGL_KHR_reusable_sync +#define EGL_KHR_reusable_sync 1 + +typedef void* EGLSyncKHR; +typedef khronos_utime_nanoseconds_t EGLTimeKHR; + +#define EGL_SYNC_STATUS_KHR 0x30F1 +#define EGL_SIGNALED_KHR 0x30F2 +#define EGL_UNSIGNALED_KHR 0x30F3 +#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5 +#define EGL_CONDITION_SATISFIED_KHR 0x30F6 +#define EGL_SYNC_TYPE_KHR 0x30F7 +#define EGL_SYNC_REUSABLE_KHR 0x30FA +#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001 /* eglClientWaitSyncKHR bitfield */ +#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull +#define EGL_NO_SYNC_KHR ((EGLSyncKHR)0) +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync); +EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); +EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); +EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync); +typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); +#endif +#endif + +#ifndef EGL_KHR_image_base +#define EGL_KHR_image_base 1 +/* Most interfaces defined by EGL_KHR_image_pixmap above */ +#define EGL_IMAGE_PRESERVED_KHR 0x30D2 /* eglCreateImageKHR attribute */ +#endif + +#ifndef EGL_KHR_image_pixmap +#define EGL_KHR_image_pixmap 1 +/* Interfaces defined by EGL_KHR_image above */ +#endif + +#ifndef EGL_IMG_context_priority +#define EGL_IMG_context_priority 1 +#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100 +#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101 +#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102 +#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103 +#endif + +#ifndef EGL_KHR_lock_surface2 +#define EGL_KHR_lock_surface2 1 +#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110 +#endif + +#ifndef EGL_NV_coverage_sample +#define EGL_NV_coverage_sample 1 +#define EGL_COVERAGE_BUFFERS_NV 0x30E0 +#define EGL_COVERAGE_SAMPLES_NV 0x30E1 +#endif + +#ifndef EGL_NV_depth_nonlinear +#define EGL_NV_depth_nonlinear 1 +#define EGL_DEPTH_ENCODING_NV 0x30E2 +#define EGL_DEPTH_ENCODING_NONE_NV 0 +#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3 +#endif + +#if KHRONOS_SUPPORT_INT64 /* EGLTimeNV requires 64-bit uint support */ +#ifndef EGL_NV_sync +#define EGL_NV_sync 1 +#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6 +#define EGL_SYNC_STATUS_NV 0x30E7 +#define EGL_SIGNALED_NV 0x30E8 +#define EGL_UNSIGNALED_NV 0x30E9 +#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001 +#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull +#define EGL_ALREADY_SIGNALED_NV 0x30EA +#define EGL_TIMEOUT_EXPIRED_NV 0x30EB +#define EGL_CONDITION_SATISFIED_NV 0x30EC +#define EGL_SYNC_TYPE_NV 0x30ED +#define EGL_SYNC_CONDITION_NV 0x30EE +#define EGL_SYNC_FENCE_NV 0x30EF +#define EGL_NO_SYNC_NV ((EGLSyncNV)0) +typedef void* EGLSyncNV; +typedef khronos_utime_nanoseconds_t EGLTimeNV; +#ifdef EGL_EGLEXT_PROTOTYPES +EGLSyncNV eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); +EGLBoolean eglDestroySyncNV (EGLSyncNV sync); +EGLBoolean eglFenceNV (EGLSyncNV sync); +EGLint eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); +EGLBoolean eglSignalSyncNV (EGLSyncNV sync, EGLenum mode); +EGLBoolean eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync); +typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value); +#endif +#endif + +#if KHRONOS_SUPPORT_INT64 /* Dependent on EGL_KHR_reusable_sync which requires 64-bit uint support */ +#ifndef EGL_KHR_fence_sync +#define EGL_KHR_fence_sync 1 +/* Reuses most tokens and entry points from EGL_KHR_reusable_sync */ +#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0 +#define EGL_SYNC_CONDITION_KHR 0x30F8 +#define EGL_SYNC_FENCE_KHR 0x30F9 +#endif +#endif + +#ifndef EGL_HI_clientpixmap +#define EGL_HI_clientpixmap 1 + +/* Surface Attribute */ +#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74 +/* + * Structure representing a client pixmap + * (pixmap's data is in client-space memory). + */ +struct EGLClientPixmapHI +{ + void* pData; + EGLint iWidth; + EGLint iHeight; + EGLint iStride; +}; + +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI(EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap); +#endif /* EGL_HI_clientpixmap */ + +#ifndef EGL_HI_colorformats +#define EGL_HI_colorformats 1 +/* Config Attribute */ +#define EGL_COLOR_FORMAT_HI 0x8F70 +/* Color Formats */ +#define EGL_COLOR_RGB_HI 0x8F71 +#define EGL_COLOR_RGBA_HI 0x8F72 +#define EGL_COLOR_ARGB_HI 0x8F73 +#endif /* EGL_HI_colorformats */ + +#ifndef EGL_MESA_drm_image +#define EGL_MESA_drm_image 1 +#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 /* CreateDRMImageMESA attribute */ +#define EGL_DRM_BUFFER_USE_MESA 0x31D1 /* CreateDRMImageMESA attribute */ +#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2 /* EGL_IMAGE_FORMAT_MESA attribute value */ +#define EGL_DRM_BUFFER_MESA 0x31D3 /* eglCreateImageKHR target */ +#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4 +#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001 /* EGL_DRM_BUFFER_USE_MESA bits */ +#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002 /* EGL_DRM_BUFFER_USE_MESA bits */ +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); +#endif + +#ifndef EGL_NV_post_sub_buffer +#define EGL_NV_post_sub_buffer 1 +#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); +#endif + +#ifndef EGL_ANGLE_query_surface_pointer +#define EGL_ANGLE_query_surface_pointer 1 +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean eglQuerySurfacePointerANGLE(EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value); +#endif +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value); +#endif + +#ifndef EGL_ANGLE_software_display +#define EGL_ANGLE_software_display 1 +#define EGL_SOFTWARE_DISPLAY_ANGLE ((EGLNativeDisplayType)-1) +#endif + +#ifndef EGL_ANGLE_direct3d_display +#define EGL_ANGLE_direct3d_display 1 +#define EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE ((EGLNativeDisplayType)-2) +#define EGL_D3D11_ONLY_DISPLAY_ANGLE ((EGLNativeDisplayType)-3) +#endif + +#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle +#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1 +#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200 +#endif + +#ifndef EGL_NV_coverage_sample_resolve +#define EGL_NV_coverage_sample_resolve 1 +#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131 +#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132 +#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133 +#endif + +#if KHRONOS_SUPPORT_INT64 /* EGLTimeKHR requires 64-bit uint support */ +#ifndef EGL_NV_system_time +#define EGL_NV_system_time 1 + +typedef khronos_utime_nanoseconds_t EGLuint64NV; + +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV(void); +EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV(void); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void); +typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void); +#endif +#endif + +#ifndef EGL_EXT_create_context_robustness +#define EGL_EXT_create_context_robustness 1 +#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF +#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138 +#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE +#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Source/ThirdParty/ANGLE/include/EGL/eglplatform.h b/Source/ThirdParty/ANGLE/include/EGL/eglplatform.h new file mode 100644 index 00000000000..34283f2e907 --- /dev/null +++ b/Source/ThirdParty/ANGLE/include/EGL/eglplatform.h @@ -0,0 +1,129 @@ +#ifndef __eglplatform_h_ +#define __eglplatform_h_ + +/* +** Copyright (c) 2007-2009 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Platform-specific types and definitions for egl.h + * $Revision: 12306 $ on $Date: 2010-08-25 09:51:28 -0700 (Wed, 25 Aug 2010) $ + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * You are encouraged to submit all modifications to the Khronos group so that + * they can be included in future versions of this file. Please submit changes + * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) + * by filing a bug against product "EGL" component "Registry". + */ + +#include + +/* Macros used in EGL function prototype declarations. + * + * EGL functions should be prototyped as: + * + * EGLAPI return-type EGLAPIENTRY eglFunction(arguments); + * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); + * + * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h + */ + +#ifndef EGLAPI +#define EGLAPI KHRONOS_APICALL +#endif + +#ifndef EGLAPIENTRY +#define EGLAPIENTRY KHRONOS_APIENTRY +#endif +#define EGLAPIENTRYP EGLAPIENTRY* + +/* The types NativeDisplayType, NativeWindowType, and NativePixmapType + * are aliases of window-system-dependent types, such as X Display * or + * Windows Device Context. They must be defined in platform-specific + * code below. The EGL-prefixed versions of Native*Type are the same + * types, renamed in EGL 1.3 so all types in the API start with "EGL". + * + * Khronos STRONGLY RECOMMENDS that you use the default definitions + * provided below, since these changes affect both binary and source + * portability of applications using EGL running on different EGL + * implementations. + */ + +#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include + +typedef HDC EGLNativeDisplayType; +typedef HBITMAP EGLNativePixmapType; +typedef HWND EGLNativeWindowType; + +#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ + +typedef int EGLNativeDisplayType; +typedef void *EGLNativeWindowType; +typedef void *EGLNativePixmapType; + +#elif defined(WL_EGL_PLATFORM) + +typedef struct wl_display *EGLNativeDisplayType; +typedef struct wl_egl_pixmap *EGLNativePixmapType; +typedef struct wl_egl_window *EGLNativeWindowType; + +#elif defined(__unix__) && !defined(ANDROID) + +/* X11 (tentative) */ +#include +#include + +typedef Display *EGLNativeDisplayType; +typedef Pixmap EGLNativePixmapType; +typedef Window EGLNativeWindowType; + +#elif defined(ANDROID) + +struct egl_native_pixmap_t; + +typedef struct ANativeWindow* EGLNativeWindowType; +typedef struct egl_native_pixmap_t* EGLNativePixmapType; +typedef void* EGLNativeDisplayType; + +#else +#error "Platform not recognized" +#endif + +/* EGL 1.2 types, renamed for consistency in EGL 1.3 */ +typedef EGLNativeDisplayType NativeDisplayType; +typedef EGLNativePixmapType NativePixmapType; +typedef EGLNativeWindowType NativeWindowType; + + +/* Define EGLint. This must be a signed integral type large enough to contain + * all legal attribute names and values passed into and out of EGL, whether + * their type is boolean, bitmask, enumerant (symbolic constant), integer, + * handle, or other. While in general a 32-bit integer will suffice, if + * handles are 64 bit types, then EGLint should be defined as a signed 64-bit + * integer type. + */ +typedef khronos_int32_t EGLint; + +#endif /* __eglplatform_h */ diff --git a/Source/ThirdParty/ANGLE/include/GLES2/gl2.h b/Source/ThirdParty/ANGLE/include/GLES2/gl2.h new file mode 100644 index 00000000000..e1d3b87cc59 --- /dev/null +++ b/Source/ThirdParty/ANGLE/include/GLES2/gl2.h @@ -0,0 +1,621 @@ +#ifndef __gl2_h_ +#define __gl2_h_ + +/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +/*------------------------------------------------------------------------- + * Data type definitions + *-----------------------------------------------------------------------*/ + +typedef void GLvoid; +typedef char GLchar; +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef khronos_int8_t GLbyte; +typedef short GLshort; +typedef int GLint; +typedef int GLsizei; +typedef khronos_uint8_t GLubyte; +typedef unsigned short GLushort; +typedef unsigned int GLuint; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; + +/* GL types for handling large vertex buffer objects */ +typedef khronos_intptr_t GLintptr; +typedef khronos_ssize_t GLsizeiptr; + +/* OpenGL ES core versions */ +#define GL_ES_VERSION_2_0 1 + +/* ClearBufferMask */ +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 + +/* Boolean */ +#define GL_FALSE 0 +#define GL_TRUE 1 + +/* BeginMode */ +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 + +/* AlphaFunction (not supported in ES20) */ +/* GL_NEVER */ +/* GL_LESS */ +/* GL_EQUAL */ +/* GL_LEQUAL */ +/* GL_GREATER */ +/* GL_NOTEQUAL */ +/* GL_GEQUAL */ +/* GL_ALWAYS */ + +/* BlendingFactorDest */ +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 + +/* BlendingFactorSrc */ +/* GL_ZERO */ +/* GL_ONE */ +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +/* GL_SRC_ALPHA */ +/* GL_ONE_MINUS_SRC_ALPHA */ +/* GL_DST_ALPHA */ +/* GL_ONE_MINUS_DST_ALPHA */ + +/* BlendEquationSeparate */ +#define GL_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 /* same as BLEND_EQUATION */ +#define GL_BLEND_EQUATION_ALPHA 0x883D + +/* BlendSubtract */ +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B + +/* Separate Blend Functions */ +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 + +/* Buffer Objects */ +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 + +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 + +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 + +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 + +/* CullFaceMode */ +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 + +/* DepthFunction */ +/* GL_NEVER */ +/* GL_LESS */ +/* GL_EQUAL */ +/* GL_LEQUAL */ +/* GL_GREATER */ +/* GL_NOTEQUAL */ +/* GL_GEQUAL */ +/* GL_ALWAYS */ + +/* EnableCap */ +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 + +/* ErrorCode */ +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 + +/* FrontFaceDirection */ +#define GL_CW 0x0900 +#define GL_CCW 0x0901 + +/* GetPName */ +#define GL_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +/* GL_SCISSOR_TEST */ +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +/* GL_POLYGON_OFFSET_FILL */ +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB + +/* GetTextureParameter */ +/* GL_TEXTURE_MAG_FILTER */ +/* GL_TEXTURE_MIN_FILTER */ +/* GL_TEXTURE_WRAP_S */ +/* GL_TEXTURE_WRAP_T */ + +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 + +/* HintMode */ +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 + +/* HintTarget */ +#define GL_GENERATE_MIPMAP_HINT 0x8192 + +/* DataType */ +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_FIXED 0x140C + +/* PixelFormat */ +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A + +/* PixelType */ +/* GL_UNSIGNED_BYTE */ +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 + +/* Shaders */ +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D + +/* StencilFunction */ +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 + +/* StencilOp */ +/* GL_ZERO */ +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 + +/* StringName */ +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 + +/* TextureMagFilter */ +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 + +/* TextureMinFilter */ +/* GL_NEAREST */ +/* GL_LINEAR */ +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 + +/* TextureParameterName */ +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 + +/* TextureTarget */ +/* GL_TEXTURE_2D */ +#define GL_TEXTURE 0x1702 + +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C + +/* TextureUnit */ +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 + +/* TextureWrapMode */ +#define GL_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 + +/* Uniform Types */ +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 + +/* Vertex Arrays */ +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F + +/* Read Format */ +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B + +/* Shader Source */ +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA + +/* Shader Binary */ +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 + +/* Shader Precision-Specified Types */ +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 + +/* Framebuffer Object. */ +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 + +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX 0x1901 +#define GL_STENCIL_INDEX8 0x8D48 + +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 + +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 + +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 + +#define GL_NONE 0 + +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD + +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 + +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 + +/*------------------------------------------------------------------------- + * GL core functions. + *-----------------------------------------------------------------------*/ + +GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); +GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar* name); +GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); +GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); +GL_APICALL void GL_APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +GL_APICALL void GL_APIENTRY glBlendEquation ( GLenum mode ); +GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); +GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); +GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target); +GL_APICALL void GL_APIENTRY glClear (GLbitfield mask); +GL_APICALL void GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +GL_APICALL void GL_APIENTRY glClearDepthf (GLclampf depth); +GL_APICALL void GL_APIENTRY glClearStencil (GLint s); +GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader); +GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data); +GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL GLuint GL_APIENTRY glCreateProgram (void); +GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type); +GL_APICALL void GL_APIENTRY glCullFace (GLenum mode); +GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint* buffers); +GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers); +GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program); +GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers); +GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader); +GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint* textures); +GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func); +GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag); +GL_APICALL void GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar); +GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glDisable (GLenum cap); +GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices); +GL_APICALL void GL_APIENTRY glEnable (GLenum cap); +GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glFinish (void); +GL_APICALL void GL_APIENTRY glFlush (void); +GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode); +GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint* buffers); +GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target); +GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint* framebuffers); +GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint* renderbuffers); +GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint* textures); +GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders); +GL_APICALL int GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name); +GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean* params); +GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params); +GL_APICALL GLenum GL_APIENTRY glGetError (void); +GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat* params); +GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog); +GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog); +GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); +GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source); +GL_APICALL const GLubyte* GL_APIENTRY glGetString (GLenum name); +GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params); +GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat* params); +GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint* params); +GL_APICALL int GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar* name); +GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params); +GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer); +GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode); +GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); +GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap); +GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); +GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); +GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); +GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); +GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); +GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); +GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program); +GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); +GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); +GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert); +GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length); +GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar** string, const GLint* length); +GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); +GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass); +GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params); +GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint* params); +GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat x); +GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint x); +GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint x, GLint y); +GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint x, GLint y, GLint z); +GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w); +GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +GL_APICALL void GL_APIENTRY glUseProgram (GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program); +GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint indx, GLfloat x); +GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint indx, const GLfloat* values); +GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint indx, const GLfloat* values); +GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values); +GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values); +GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr); +GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); + +#ifdef __cplusplus +} +#endif + +#endif /* __gl2_h_ */ diff --git a/Source/ThirdParty/ANGLE/include/GLES2/gl2ext.h b/Source/ThirdParty/ANGLE/include/GLES2/gl2ext.h new file mode 100644 index 00000000000..bad50f9ccbb --- /dev/null +++ b/Source/ThirdParty/ANGLE/include/GLES2/gl2ext.h @@ -0,0 +1,1550 @@ +#ifndef __gl2ext_h_ +#define __gl2ext_h_ + +/* $Revision: 16482 $ on $Date:: 2012-01-04 13:44:55 -0500 #$ */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +#ifndef GL_APIENTRYP +# define GL_APIENTRYP GL_APIENTRY* +#endif + +/*------------------------------------------------------------------------* + * OES extension tokens + *------------------------------------------------------------------------*/ + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_ETC1_RGB8_OES 0x8D64 +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#endif + +/* GL_OES_depth_texture */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +typedef void* GLeglImageOES; +#endif + +/* GL_OES_EGL_image_external */ +#ifndef GL_OES_EGL_image_external +/* GLeglImageOES defined in GL_OES_EGL_image already. */ +#define GL_TEXTURE_EXTERNAL_OES 0x8D65 +#define GL_SAMPLER_EXTERNAL_OES 0x8D66 +#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 +#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 +#endif + +/* GL_OES_element_index_uint */ +#ifndef GL_OES_element_index_uint +#define GL_UNSIGNED_INT 0x1405 +#endif + +/* GL_OES_get_program_binary */ +#ifndef GL_OES_get_program_binary +#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE +#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD +#endif + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#endif + +/* GL_OES_standard_derivatives */ +#ifndef GL_OES_standard_derivatives +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_STENCIL_INDEX1_OES 0x8D46 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_STENCIL_INDEX4_OES 0x8D47 +#endif + +/* GL_OES_texture_3D */ +#ifndef GL_OES_texture_3D +#define GL_TEXTURE_WRAP_R_OES 0x8072 +#define GL_TEXTURE_3D_OES 0x806F +#define GL_TEXTURE_BINDING_3D_OES 0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 +#define GL_SAMPLER_3D_OES 0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 +#endif + +/* GL_OES_texture_float */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_texture_float_linear */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_texture_half_float */ +#ifndef GL_OES_texture_half_float +#define GL_HALF_FLOAT_OES 0x8D61 +#endif + +/* GL_OES_texture_half_float_linear */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_texture_npot */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_vertex_array_object */ +#ifndef GL_OES_vertex_array_object +#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 +#endif + +/* GL_OES_vertex_half_float */ +/* GL_HALF_FLOAT_OES defined in GL_OES_texture_half_float already. */ + +/* GL_OES_vertex_type_10_10_10_2 */ +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6 +#define GL_INT_10_10_10_2_OES 0x8DF7 +#endif + +/*------------------------------------------------------------------------* + * AMD extension tokens + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_3DC_X_AMD 0x87F9 +#define GL_3DC_XY_AMD 0x87FA +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_ATC_RGB_AMD 0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE +#endif + +/* GL_AMD_performance_monitor */ +#ifndef GL_AMD_performance_monitor +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFMON_RESULT_AMD 0x8BC6 +#endif + +/* GL_AMD_program_binary_Z400 */ +#ifndef GL_AMD_program_binary_Z400 +#define GL_Z400_BINARY_AMD 0x8740 +#endif + +/*------------------------------------------------------------------------* + * ANGLE extension tokens + *------------------------------------------------------------------------*/ + +/* GL_ANGLE_framebuffer_blit */ +#ifndef GL_ANGLE_framebuffer_blit +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA +#endif + +/* GL_ANGLE_framebuffer_multisample */ +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 +#define GL_MAX_SAMPLES_ANGLE 0x8D57 +#endif + +/* GL_ANGLE_pack_reverse_row_order */ +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 +#endif + +/* GL_ANGLE_texture_compression_dxt3 */ +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#endif + +/* GL_ANGLE_texture_compression_dxt5 */ +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 +#endif + +/* GL_ANGLE_translated_shader_source */ +#ifndef GL_ANGLE_translated_shader_source +#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 +#endif + +/* GL_ANGLE_texture_usage */ +#ifndef GL_ANGLE_texture_usage +#define GL_TEXTURE_USAGE_ANGLE 0x93A2 +#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 +#endif + +/* GL_ANGLE_instanced_arrays */ +#ifndef GL_ANGLE_instanced_arrays +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE +#endif + +/* GL_ANGLE_program_binary */ +#ifndef GL_ANGLE_program_binary +#define GL_PROGRAM_BINARY_ANGLE 0x93A6 +#endif + +/*------------------------------------------------------------------------* + * APPLE extension tokens + *------------------------------------------------------------------------*/ + +/* GL_APPLE_rgb_422 */ +#ifndef GL_APPLE_rgb_422 +#define GL_RGB_422_APPLE 0x8A1F +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#endif + +/* GL_APPLE_framebuffer_multisample */ +#ifndef GL_APPLE_framebuffer_multisample +#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 +#define GL_MAX_SAMPLES_APPLE 0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA +#endif + +/* GL_APPLE_texture_format_BGRA8888 */ +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_BGRA_EXT 0x80E1 +#endif + +/* GL_APPLE_texture_max_level */ +#ifndef GL_APPLE_texture_max_level +#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D +#endif + +/*------------------------------------------------------------------------* + * ARM extension tokens + *------------------------------------------------------------------------*/ + +/* GL_ARM_mali_shader_binary */ +#ifndef GL_ARM_mali_shader_binary +#define GL_MALI_SHADER_BINARY_ARM 0x8F60 +#endif + +/* GL_ARM_rgba8 */ +/* No new tokens introduced by this extension. */ + +/*------------------------------------------------------------------------* + * EXT extension tokens + *------------------------------------------------------------------------*/ + +/* GL_EXT_blend_minmax */ +#ifndef GL_EXT_blend_minmax +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#endif + +/* GL_EXT_color_buffer_half_float */ +#ifndef GL_EXT_color_buffer_half_float +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_RG16F_EXT 0x822F +#define GL_R16F_EXT 0x822D +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211 +#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 +#endif + +/* GL_EXT_debug_label */ +#ifndef GL_EXT_debug_label +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +#endif + +/* GL_EXT_debug_marker */ +/* No new tokens introduced by this extension. */ + +/* GL_EXT_discard_framebuffer */ +#ifndef GL_EXT_discard_framebuffer +#define GL_COLOR_EXT 0x1800 +#define GL_DEPTH_EXT 0x1801 +#define GL_STENCIL_EXT 0x1802 +#endif + +/* GL_EXT_multisampled_render_to_texture */ +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +#define GL_RENDERBUFFER_SAMPLES_EXT 0x9133 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x9134 +#define GL_MAX_SAMPLES_EXT 0x9135 +#endif + +/* GL_EXT_multi_draw_arrays */ +/* No new tokens introduced by this extension. */ + +/* GL_EXT_occlusion_query_boolean */ +#ifndef GL_EXT_occlusion_query_boolean +#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#endif + +/* GL_EXT_read_format_bgra */ +#ifndef GL_EXT_read_format_bgra +#define GL_BGRA_EXT 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 +#endif + +/* GL_EXT_robustness */ +#ifndef GL_EXT_robustness +/* reuse GL_NO_ERROR */ +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 +#endif + +/* GL_EXT_separate_shader_objects */ +#ifndef GL_EXT_separate_shader_objects +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A +#endif + +/* GL_EXT_shader_texture_lod */ +/* No new tokens introduced by this extension. */ + +/* GL_EXT_shadow_samplers */ +#ifndef GL_EXT_shadow_samplers +#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C +#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D +#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E +#endif + +/* GL_EXT_sRGB */ +#ifndef GL_EXT_sRGB +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 +#endif + +/* GL_EXT_texture_compression_dxt1 */ +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#endif + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_BGRA_EXT 0x80E1 +#endif + +/* GL_EXT_texture_rg */ +#ifndef GL_EXT_texture_rg +#define GL_RED_EXT 0x1903 +#define GL_RG_EXT 0x8227 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#endif + +/* GL_EXT_texture_storage */ +#ifndef GL_EXT_texture_storage +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_ALPHA8_EXT 0x803C +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGB32F_EXT 0x8815 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +/* reuse GL_RGBA16F_EXT */ +#define GL_RGB16F_EXT 0x881B +#define GL_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGB10_EXT 0x8052 +#define GL_BGRA8_EXT 0x93A1 +#endif + +/* GL_EXT_texture_type_2_10_10_10_REV */ +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 +#endif + +/* GL_EXT_unpack_subimage */ +#ifndef GL_EXT_unpack_subimage +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#endif + +/*------------------------------------------------------------------------* + * DMP extension tokens + *------------------------------------------------------------------------*/ + +/* GL_DMP_shader_binary */ +#ifndef GL_DMP_shader_binary +#define GL_SHADER_BINARY_DMP 0x9250 +#endif + +/*------------------------------------------------------------------------* + * IMG extension tokens + *------------------------------------------------------------------------*/ + +/* GL_IMG_program_binary */ +#ifndef GL_IMG_program_binary +#define GL_SGX_PROGRAM_BINARY_IMG 0x9130 +#endif + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_BGRA_IMG 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 +#endif + +/* GL_IMG_shader_binary */ +#ifndef GL_IMG_shader_binary +#define GL_SGX_BINARY_IMG 0x8C0A +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 +#endif + +/* GL_IMG_multisampled_render_to_texture */ +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 +#define GL_MAX_SAMPLES_IMG 0x9135 +#define GL_TEXTURE_SAMPLES_IMG 0x9136 +#endif + +/*------------------------------------------------------------------------* + * NV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_NV_coverage_sample */ +#ifndef GL_NV_coverage_sample +#define GL_COVERAGE_COMPONENT_NV 0x8ED0 +#define GL_COVERAGE_COMPONENT4_NV 0x8ED1 +#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2 +#define GL_COVERAGE_BUFFERS_NV 0x8ED3 +#define GL_COVERAGE_SAMPLES_NV 0x8ED4 +#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5 +#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6 +#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7 +#define GL_COVERAGE_BUFFER_BIT_NV 0x8000 +#endif + +/* GL_NV_depth_nonlinear */ +#ifndef GL_NV_depth_nonlinear +#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C +#endif + +/* GL_NV_draw_buffers */ +#ifndef GL_NV_draw_buffers +#define GL_MAX_DRAW_BUFFERS_NV 0x8824 +#define GL_DRAW_BUFFER0_NV 0x8825 +#define GL_DRAW_BUFFER1_NV 0x8826 +#define GL_DRAW_BUFFER2_NV 0x8827 +#define GL_DRAW_BUFFER3_NV 0x8828 +#define GL_DRAW_BUFFER4_NV 0x8829 +#define GL_DRAW_BUFFER5_NV 0x882A +#define GL_DRAW_BUFFER6_NV 0x882B +#define GL_DRAW_BUFFER7_NV 0x882C +#define GL_DRAW_BUFFER8_NV 0x882D +#define GL_DRAW_BUFFER9_NV 0x882E +#define GL_DRAW_BUFFER10_NV 0x882F +#define GL_DRAW_BUFFER11_NV 0x8830 +#define GL_DRAW_BUFFER12_NV 0x8831 +#define GL_DRAW_BUFFER13_NV 0x8832 +#define GL_DRAW_BUFFER14_NV 0x8833 +#define GL_DRAW_BUFFER15_NV 0x8834 +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF +#endif + +/* GL_EXT_draw_buffers */ +#ifndef GL_EXT_draw_buffers +#define GL_MAX_DRAW_BUFFERS_EXT 0x8824 +#define GL_DRAW_BUFFER0_EXT 0x8825 +#define GL_DRAW_BUFFER1_EXT 0x8826 +#define GL_DRAW_BUFFER2_EXT 0x8827 +#define GL_DRAW_BUFFER3_EXT 0x8828 +#define GL_DRAW_BUFFER4_EXT 0x8829 +#define GL_DRAW_BUFFER5_EXT 0x882A +#define GL_DRAW_BUFFER6_EXT 0x882B +#define GL_DRAW_BUFFER7_EXT 0x882C +#define GL_DRAW_BUFFER8_EXT 0x882D +#define GL_DRAW_BUFFER9_EXT 0x882E +#define GL_DRAW_BUFFER10_EXT 0x882F +#define GL_DRAW_BUFFER11_EXT 0x8830 +#define GL_DRAW_BUFFER12_EXT 0x8831 +#define GL_DRAW_BUFFER13_EXT 0x8832 +#define GL_DRAW_BUFFER14_EXT 0x8833 +#define GL_DRAW_BUFFER15_EXT 0x8834 +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 +#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 +#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 +#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 +#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 +#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 +#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 +#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 +#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 +#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA +#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB +#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC +#define GL_COLOR_ATTACHMENT13_EXT 0x8CED +#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE +#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#endif + +/* GL_NV_fbo_color_attachments */ +#ifndef GL_NV_fbo_color_attachments +#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF +/* GL_COLOR_ATTACHMENT{0-15}_NV defined in GL_NV_draw_buffers already. */ +#endif + +/* GL_NV_fence */ +#ifndef GL_NV_fence +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +#endif + +/* GL_NV_read_buffer */ +#ifndef GL_NV_read_buffer +#define GL_READ_BUFFER_NV 0x0C02 +#endif + +/* GL_NV_read_buffer_front */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_read_depth */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_read_depth_stencil */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_read_stencil */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_texture_compression_s3tc_update */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_texture_npot_2D_mipmap */ +/* No new tokens introduced by this extension. */ + +/*------------------------------------------------------------------------* + * QCOM extension tokens + *------------------------------------------------------------------------*/ + +/* GL_QCOM_alpha_test */ +#ifndef GL_QCOM_alpha_test +#define GL_ALPHA_TEST_QCOM 0x0BC0 +#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1 +#define GL_ALPHA_TEST_REF_QCOM 0x0BC2 +#endif + +/* GL_QCOM_driver_control */ +/* No new tokens introduced by this extension. */ + +/* GL_QCOM_extended_get */ +#ifndef GL_QCOM_extended_get +#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 +#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 +#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 +#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 +#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 +#define GL_TEXTURE_TYPE_QCOM 0x8BD7 +#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 +#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 +#define GL_TEXTURE_TARGET_QCOM 0x8BDA +#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB +#define GL_STATE_RESTORE 0x8BDC +#endif + +/* GL_QCOM_extended_get2 */ +/* No new tokens introduced by this extension. */ + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 +#endif + +/* GL_QCOM_writeonly_rendering */ +#ifndef GL_QCOM_writeonly_rendering +#define GL_WRITEONLY_RENDERING_QCOM 0x8823 +#endif + +/* GL_QCOM_tiled_rendering */ +#ifndef GL_QCOM_tiled_rendering +#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 +#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 +#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 +#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 +#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 +#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 +#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 +#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 +#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 +#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 +#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 +#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 +#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 +#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 +#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 +#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 +#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 +#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 +#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 +#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 +#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 +#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 +#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 +#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 +#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 +#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 +#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 +#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 +#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 +#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 +#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 +#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 +#endif + +/*------------------------------------------------------------------------* + * VIV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_VIV_shader_binary */ +#ifndef GL_VIV_shader_binary +#define GL_SHADER_BINARY_VIV 0x8FC4 +#endif + +/*------------------------------------------------------------------------* + * End of extension tokens, start of corresponding extension functions + *------------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------* + * OES extension functions + *------------------------------------------------------------------------*/ + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#endif + +/* GL_OES_depth_texture */ +#ifndef GL_OES_depth_texture +#define GL_OES_depth_texture 1 +#endif + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +#define GL_OES_EGL_image 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); +#endif +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +#endif + +/* GL_OES_EGL_image_external */ +#ifndef GL_OES_EGL_image_external +#define GL_OES_EGL_image_external 1 +/* glEGLImageTargetTexture2DOES defined in GL_OES_EGL_image already. */ +#endif + +/* GL_OES_element_index_uint */ +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif + +/* GL_OES_fbo_render_mipmap */ +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif + +/* GL_OES_fragment_precision_high */ +#ifndef GL_OES_fragment_precision_high +#define GL_OES_fragment_precision_high 1 +#endif + +/* GL_OES_get_program_binary */ +#ifndef GL_OES_get_program_binary +#define GL_OES_get_program_binary 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); +#endif +typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void* GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); +GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); +GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, GLvoid** params); +#endif +typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid** params); +#endif + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif + +/* GL_OES_standard_derivatives */ +#ifndef GL_OES_standard_derivatives +#define GL_OES_standard_derivatives 1 +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#endif + +/* GL_OES_texture_3D */ +#ifndef GL_OES_texture_3D +#define GL_OES_texture_3D 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); +GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif +typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); +typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOES) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif + +/* GL_OES_texture_float */ +#ifndef GL_OES_texture_float +#define GL_OES_texture_float 1 +#endif + +/* GL_OES_texture_float_linear */ +#ifndef GL_OES_texture_float_linear +#define GL_OES_texture_float_linear 1 +#endif + +/* GL_OES_texture_half_float */ +#ifndef GL_OES_texture_half_float +#define GL_OES_texture_half_float 1 +#endif + +/* GL_OES_texture_half_float_linear */ +#ifndef GL_OES_texture_half_float_linear +#define GL_OES_texture_half_float_linear 1 +#endif + +/* GL_OES_texture_npot */ +#ifndef GL_OES_texture_npot +#define GL_OES_texture_npot 1 +#endif + +/* GL_OES_vertex_array_object */ +#ifndef GL_OES_vertex_array_object +#define GL_OES_vertex_array_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array); +GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); +GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); +GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); +#endif +typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); +#endif + +/* GL_OES_vertex_half_float */ +#ifndef GL_OES_vertex_half_float +#define GL_OES_vertex_half_float 1 +#endif + +/* GL_OES_vertex_type_10_10_10_2 */ +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_OES_vertex_type_10_10_10_2 1 +#endif + +/*------------------------------------------------------------------------* + * AMD extension functions + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#endif + +/* AMD_performance_monitor */ +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, GLvoid *data); +GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList); +GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, GLvoid *data); +typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList); +typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif + +/* GL_AMD_program_binary_Z400 */ +#ifndef GL_AMD_program_binary_Z400 +#define GL_AMD_program_binary_Z400 1 +#endif + +/*------------------------------------------------------------------------* + * ANGLE extension functions + *------------------------------------------------------------------------*/ + +/* GL_ANGLE_framebuffer_blit */ +#ifndef GL_ANGLE_framebuffer_blit +#define GL_ANGLE_framebuffer_blit 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif + +/* GL_ANGLE_framebuffer_multisample */ +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_ANGLE_framebuffer_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif + +/* GL_ANGLE_pack_reverse_row_order */ +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_ANGLE_pack_reverse_row_order 1 +#endif + +/* GL_ANGLE_texture_compression_dxt3 */ +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_ANGLE_texture_compression_dxt3 1 +#endif + +/* GL_ANGLE_texture_compression_dxt5 */ +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_ANGLE_texture_compression_dxt5 1 +#endif + +/* GL_ANGLE_translated_shader_source */ +#ifndef GL_ANGLE_translated_shader_source +#define GL_ANGLE_translated_shader_source 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source); +#endif +typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source); +#endif + +/* GL_ANGLE_texture_usage */ +#ifndef GL_ANGLE_texture_usage +#define GL_ANGLE_texture_usage 1 +#endif + +/* GL_ANGLE_instanced_arrays */ +#ifndef GL_ANGLE_instanced_arrays +#define GL_ANGLE_instanced_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE(GLuint index, GLuint divisor); +GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +#endif +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +#endif + +/*------------------------------------------------------------------------* + * APPLE extension functions + *------------------------------------------------------------------------*/ + +/* GL_APPLE_rgb_422 */ +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 +#endif + +/* GL_APPLE_framebuffer_multisample */ +#ifndef GL_APPLE_framebuffer_multisample +#define GL_APPLE_framebuffer_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); +#endif + +/* GL_APPLE_texture_format_BGRA8888 */ +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_APPLE_texture_format_BGRA8888 1 +#endif + +/* GL_APPLE_texture_max_level */ +#ifndef GL_APPLE_texture_max_level +#define GL_APPLE_texture_max_level 1 +#endif + +/*------------------------------------------------------------------------* + * ARM extension functions + *------------------------------------------------------------------------*/ + +/* GL_ARM_mali_shader_binary */ +#ifndef GL_ARM_mali_shader_binary +#define GL_ARM_mali_shader_binary 1 +#endif + +/* GL_ARM_rgba8 */ +#ifndef GL_ARM_rgba8 +#define GL_ARM_rgba8 1 +#endif + +/*------------------------------------------------------------------------* + * EXT extension functions + *------------------------------------------------------------------------*/ + +/* GL_EXT_blend_minmax */ +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#endif + +/* GL_EXT_color_buffer_half_float */ +#ifndef GL_EXT_color_buffer_half_float +#define GL_EXT_color_buffer_half_float 1 +#endif + +/* GL_EXT_debug_label */ +#ifndef GL_EXT_debug_label +#define GL_EXT_debug_label 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#endif +typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#endif + +/* GL_EXT_debug_marker */ +#ifndef GL_EXT_debug_marker +#define GL_EXT_debug_marker 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void); +#endif +typedef void (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); +#endif + +/* GL_EXT_discard_framebuffer */ +#ifndef GL_EXT_discard_framebuffer +#define GL_EXT_discard_framebuffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif +typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif + +/* GL_EXT_multisampled_render_to_texture */ +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_EXT_multisampled_render_to_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); +#endif +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei); +GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); +#endif + +/* GL_EXT_occlusion_query_boolean */ +#ifndef GL_EXT_occlusion_query_boolean +#define GL_EXT_occlusion_query_boolean 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids); +GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids); +GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id); +GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id); +GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target); +GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params); +#endif +typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); +typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id); +typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); +typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); +#endif + +/* GL_EXT_read_format_bgra */ +#ifndef GL_EXT_read_format_bgra +#define GL_EXT_read_format_bgra 1 +#endif + +/* GL_EXT_robustness */ +#ifndef GL_EXT_robustness +#define GL_EXT_robustness 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); +GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, float *params); +GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, float *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif + +/* GL_EXT_separate_shader_objects */ +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program); +GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program); +GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings); +GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines); +GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint x); +GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint x, GLint y); +GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z); +GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); +GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat x); +GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +#endif +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); +typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint x, GLint y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +#endif + +/* GL_EXT_shader_texture_lod */ +#ifndef GL_EXT_shader_texture_lod +#define GL_EXT_shader_texture_lod 1 +#endif + +/* GL_EXT_shadow_samplers */ +#ifndef GL_EXT_shadow_samplers +#define GL_EXT_shadow_samplers 1 +#endif + +/* GL_EXT_sRGB */ +#ifndef GL_EXT_sRGB +#define GL_EXT_sRGB 1 +#endif + +/* GL_EXT_texture_compression_dxt1 */ +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_EXT_texture_compression_dxt1 1 +#endif + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif + +/* GL_EXT_texture_rg */ +#ifndef GL_EXT_texture_rg +#define GL_EXT_texture_rg 1 +#endif + +/* GL_EXT_texture_storage */ +#ifndef GL_EXT_texture_storage +#define GL_EXT_texture_storage 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif + +/* GL_EXT_texture_type_2_10_10_10_REV */ +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_EXT_texture_type_2_10_10_10_REV 1 +#endif + +/* GL_EXT_unpack_subimage */ +#ifndef GL_EXT_unpack_subimage +#define GL_EXT_unpack_subimage 1 +#endif + +/*------------------------------------------------------------------------* + * DMP extension functions + *------------------------------------------------------------------------*/ + +/* GL_DMP_shader_binary */ +#ifndef GL_DMP_shader_binary +#define GL_DMP_shader_binary 1 +#endif + +/*------------------------------------------------------------------------* + * IMG extension functions + *------------------------------------------------------------------------*/ + +/* GL_IMG_program_binary */ +#ifndef GL_IMG_program_binary +#define GL_IMG_program_binary 1 +#endif + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#endif + +/* GL_IMG_shader_binary */ +#ifndef GL_IMG_shader_binary +#define GL_IMG_shader_binary 1 +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#endif + +/* GL_IMG_multisampled_render_to_texture */ +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_IMG_multisampled_render_to_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); +#endif +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMG) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMG) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif + +/*------------------------------------------------------------------------* + * NV extension functions + *------------------------------------------------------------------------*/ + +/* GL_NV_coverage_sample */ +#ifndef GL_NV_coverage_sample +#define GL_NV_coverage_sample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask); +GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation); +#endif +typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask); +typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation); +#endif + +/* GL_NV_depth_nonlinear */ +#ifndef GL_NV_depth_nonlinear +#define GL_NV_depth_nonlinear 1 +#endif + +/* GL_NV_draw_buffers */ +#ifndef GL_NV_draw_buffers +#define GL_NV_draw_buffers 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs); +#endif +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs); +#endif + +#ifndef GL_EXT_draw_buffers +#define GL_EXT_draw_buffers 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs); +#endif +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs); +#endif + +/* GL_NV_fbo_color_attachments */ +#ifndef GL_NV_fbo_color_attachments +#define GL_NV_fbo_color_attachments 1 +#endif + +/* GL_NV_fence */ +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei, const GLuint *); +GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei, GLuint *); +GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint); +GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint); +GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *); +GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint); +GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint, GLenum); +#endif +typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#endif + +/* GL_NV_read_buffer */ +#ifndef GL_NV_read_buffer +#define GL_NV_read_buffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode); +#endif +typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode); +#endif + +/* GL_NV_read_buffer_front */ +#ifndef GL_NV_read_buffer_front +#define GL_NV_read_buffer_front 1 +#endif + +/* GL_NV_read_depth */ +#ifndef GL_NV_read_depth +#define GL_NV_read_depth 1 +#endif + +/* GL_NV_read_depth_stencil */ +#ifndef GL_NV_read_depth_stencil +#define GL_NV_read_depth_stencil 1 +#endif + +/* GL_NV_read_stencil */ +#ifndef GL_NV_read_stencil +#define GL_NV_read_stencil 1 +#endif + +/* GL_NV_texture_compression_s3tc_update */ +#ifndef GL_NV_texture_compression_s3tc_update +#define GL_NV_texture_compression_s3tc_update 1 +#endif + +/* GL_NV_texture_npot_2D_mipmap */ +#ifndef GL_NV_texture_npot_2D_mipmap +#define GL_NV_texture_npot_2D_mipmap 1 +#endif + +/*------------------------------------------------------------------------* + * QCOM extension functions + *------------------------------------------------------------------------*/ + +/* GL_QCOM_alpha_test */ +#ifndef GL_QCOM_alpha_test +#define GL_QCOM_alpha_test 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref); +#endif +typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref); +#endif + +/* GL_QCOM_driver_control */ +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); +GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); +GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); +#endif +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +#endif + +/* GL_QCOM_extended_get */ +#ifndef GL_QCOM_extended_get +#define GL_QCOM_extended_get 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); +GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); +GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, GLvoid **params); +#endif +typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, GLvoid **params); +#endif + +/* GL_QCOM_extended_get2 */ +#ifndef GL_QCOM_extended_get2 +#define GL_QCOM_extended_get2 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); +GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); +GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif +typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#endif + +/* GL_QCOM_writeonly_rendering */ +#ifndef GL_QCOM_writeonly_rendering +#define GL_QCOM_writeonly_rendering 1 +#endif + +/* GL_QCOM_tiled_rendering */ +#ifndef GL_QCOM_tiled_rendering +#define GL_QCOM_tiled_rendering 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); +#endif +typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); +#endif + +/*------------------------------------------------------------------------* + * VIV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_VIV_shader_binary */ +#ifndef GL_VIV_shader_binary +#define GL_VIV_shader_binary 1 +#endif + +/* GL_ANGLE_program_binary */ +#ifndef GL_ANGLE_program_binary +#define GL_ANGLE_program_binary 1 +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __gl2ext_h_ */ diff --git a/Source/ThirdParty/ANGLE/include/GLES2/gl2platform.h b/Source/ThirdParty/ANGLE/include/GLES2/gl2platform.h new file mode 100644 index 00000000000..c9fa3c4d64b --- /dev/null +++ b/Source/ThirdParty/ANGLE/include/GLES2/gl2platform.h @@ -0,0 +1,30 @@ +#ifndef __gl2platform_h_ +#define __gl2platform_h_ + +/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */ + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * You are encouraged to submit all modifications to the Khronos group so that + * they can be included in future versions of this file. Please submit changes + * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) + * by filing a bug against product "OpenGL-ES" component "Registry". + */ + +#include + +#ifndef GL_APICALL +#define GL_APICALL KHRONOS_APICALL +#endif + +#ifndef GL_APIENTRY +#define GL_APIENTRY KHRONOS_APIENTRY +#endif + +#endif /* __gl2platform_h_ */ diff --git a/Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h b/Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h new file mode 100644 index 00000000000..21e4e9dc7bc --- /dev/null +++ b/Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h @@ -0,0 +1,446 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +#ifndef _COMPILER_INTERFACE_INCLUDED_ +#define _COMPILER_INTERFACE_INCLUDED_ + +#if defined(COMPONENT_BUILD) +#if defined(_WIN32) || defined(_WIN64) + +#if defined(COMPILER_IMPLEMENTATION) +#define COMPILER_EXPORT __declspec(dllexport) +#else +#define COMPILER_EXPORT __declspec(dllimport) +#endif // defined(COMPILER_IMPLEMENTATION) + +#else // defined(WIN32) +#define COMPILER_EXPORT __attribute__((visibility("default"))) +#endif + +#else // defined(COMPONENT_BUILD) +#define COMPILER_EXPORT +#endif + +#include "khrplatform.h" +#include + +// +// This is the platform independent interface between an OGL driver +// and the shading language compiler. +// + +#ifdef __cplusplus +extern "C" { +#endif + +// Version number for shader translation API. +// It is incremented everytime the API changes. +#define ANGLE_SH_VERSION 110 + +// +// The names of the following enums have been derived by replacing GL prefix +// with SH. For example, SH_INFO_LOG_LENGTH is equivalent to GL_INFO_LOG_LENGTH. +// The enum values are also equal to the values of their GL counterpart. This +// is done to make it easier for applications to use the shader library. +// +typedef enum { + SH_FRAGMENT_SHADER = 0x8B30, + SH_VERTEX_SHADER = 0x8B31 +} ShShaderType; + +typedef enum { + SH_GLES2_SPEC = 0x8B40, + SH_WEBGL_SPEC = 0x8B41, + + // The CSS Shaders spec is a subset of the WebGL spec. + // + // In both CSS vertex and fragment shaders, ANGLE: + // (1) Reserves the "css_" prefix. + // (2) Renames the main function to css_main. + // (3) Disables the gl_MaxDrawBuffers built-in. + // + // In CSS fragment shaders, ANGLE: + // (1) Disables the gl_FragColor built-in. + // (2) Disables the gl_FragData built-in. + // (3) Enables the css_MixColor built-in. + // (4) Enables the css_ColorMatrix built-in. + // + // After passing a CSS shader through ANGLE, the browser is expected to append + // a new main function to it. + // This new main function will call the css_main function. + // It may also perform additional operations like varying assignment, texture + // access, and gl_FragColor assignment in order to implement the CSS Shaders + // blend modes. + // + SH_CSS_SHADERS_SPEC = 0x8B42 +} ShShaderSpec; + +typedef enum { + SH_ESSL_OUTPUT = 0x8B45, + SH_GLSL_OUTPUT = 0x8B46, + SH_HLSL_OUTPUT = 0x8B47, + SH_HLSL9_OUTPUT = 0x8B47, + SH_HLSL11_OUTPUT = 0x8B48 +} ShShaderOutput; + +typedef enum { + SH_NONE = 0, + SH_INT = 0x1404, + SH_FLOAT = 0x1406, + SH_FLOAT_VEC2 = 0x8B50, + SH_FLOAT_VEC3 = 0x8B51, + SH_FLOAT_VEC4 = 0x8B52, + SH_INT_VEC2 = 0x8B53, + SH_INT_VEC3 = 0x8B54, + SH_INT_VEC4 = 0x8B55, + SH_BOOL = 0x8B56, + SH_BOOL_VEC2 = 0x8B57, + SH_BOOL_VEC3 = 0x8B58, + SH_BOOL_VEC4 = 0x8B59, + SH_FLOAT_MAT2 = 0x8B5A, + SH_FLOAT_MAT3 = 0x8B5B, + SH_FLOAT_MAT4 = 0x8B5C, + SH_SAMPLER_2D = 0x8B5E, + SH_SAMPLER_CUBE = 0x8B60, + SH_SAMPLER_2D_RECT_ARB = 0x8B63, + SH_SAMPLER_EXTERNAL_OES = 0x8D66 +} ShDataType; + +typedef enum { + SH_INFO_LOG_LENGTH = 0x8B84, + SH_OBJECT_CODE_LENGTH = 0x8B88, // GL_SHADER_SOURCE_LENGTH + SH_ACTIVE_UNIFORMS = 0x8B86, + SH_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87, + SH_ACTIVE_ATTRIBUTES = 0x8B89, + SH_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A, + SH_MAPPED_NAME_MAX_LENGTH = 0x6000, + SH_NAME_MAX_LENGTH = 0x6001, + SH_HASHED_NAME_MAX_LENGTH = 0x6002, + SH_HASHED_NAMES_COUNT = 0x6003, + SH_ACTIVE_UNIFORMS_ARRAY = 0x6004 +} ShShaderInfo; + +// Compile options. +typedef enum { + SH_VALIDATE = 0, + SH_VALIDATE_LOOP_INDEXING = 0x0001, + SH_INTERMEDIATE_TREE = 0x0002, + SH_OBJECT_CODE = 0x0004, + SH_ATTRIBUTES_UNIFORMS = 0x0008, + SH_LINE_DIRECTIVES = 0x0010, + SH_SOURCE_PATH = 0x0020, + SH_MAP_LONG_VARIABLE_NAMES = 0x0040, + SH_UNROLL_FOR_LOOP_WITH_INTEGER_INDEX = 0x0080, + + // This is needed only as a workaround for certain OpenGL driver bugs. + SH_EMULATE_BUILT_IN_FUNCTIONS = 0x0100, + + // This is an experimental flag to enforce restrictions that aim to prevent + // timing attacks. + // It generates compilation errors for shaders that could expose sensitive + // texture information via the timing channel. + // To use this flag, you must compile the shader under the WebGL spec + // (using the SH_WEBGL_SPEC flag). + SH_TIMING_RESTRICTIONS = 0x0200, + + // This flag prints the dependency graph that is used to enforce timing + // restrictions on fragment shaders. + // This flag only has an effect if all of the following are true: + // - The shader spec is SH_WEBGL_SPEC. + // - The compile options contain the SH_TIMING_RESTRICTIONS flag. + // - The shader type is SH_FRAGMENT_SHADER. + SH_DEPENDENCY_GRAPH = 0x0400, + + // Enforce the GLSL 1.017 Appendix A section 7 packing restrictions. + SH_ENFORCE_PACKING_RESTRICTIONS = 0x0800, + + // This flag ensures all indirect (expression-based) array indexing + // is clamped to the bounds of the array. This ensures, for example, + // that you cannot read off the end of a uniform, whether an array + // vec234, or mat234 type. The ShArrayIndexClampingStrategy enum, + // specified in the ShBuiltInResources when constructing the + // compiler, selects the strategy for the clamping implementation. + SH_CLAMP_INDIRECT_ARRAY_BOUNDS = 0x1000, + + // This flag limits the complexity of an expression. + SH_LIMIT_EXPRESSION_COMPLEXITY = 0x2000, + + // This flag limits the depth of the call stack. + SH_LIMIT_CALL_STACK_DEPTH = 0x4000, +} ShCompileOptions; + +// Defines alternate strategies for implementing array index clamping. +typedef enum { + // Use the clamp intrinsic for array index clamping. + SH_CLAMP_WITH_CLAMP_INTRINSIC = 1, + + // Use a user-defined function for array index clamping. + SH_CLAMP_WITH_USER_DEFINED_INT_CLAMP_FUNCTION +} ShArrayIndexClampingStrategy; + +// +// Driver must call this first, once, before doing any other +// compiler operations. +// If the function succeeds, the return value is nonzero, else zero. +// +COMPILER_EXPORT int ShInitialize(); +// +// Driver should call this at shutdown. +// If the function succeeds, the return value is nonzero, else zero. +// +COMPILER_EXPORT int ShFinalize(); + +// The 64 bits hash function. The first parameter is the input string; the +// second parameter is the string length. +typedef khronos_uint64_t (*ShHashFunction64)(const char*, size_t); + +// +// Implementation dependent built-in resources (constants and extensions). +// The names for these resources has been obtained by stripping gl_/GL_. +// +typedef struct +{ + // Constants. + int MaxVertexAttribs; + int MaxVertexUniformVectors; + int MaxVaryingVectors; + int MaxVertexTextureImageUnits; + int MaxCombinedTextureImageUnits; + int MaxTextureImageUnits; + int MaxFragmentUniformVectors; + int MaxDrawBuffers; + + // Extensions. + // Set to 1 to enable the extension, else 0. + int OES_standard_derivatives; + int OES_EGL_image_external; + int ARB_texture_rectangle; + int EXT_draw_buffers; + int EXT_frag_depth; + + // Set to 1 if highp precision is supported in the fragment language. + // Default is 0. + int FragmentPrecisionHigh; + + // Name Hashing. + // Set a 64 bit hash function to enable user-defined name hashing. + // Default is NULL. + ShHashFunction64 HashFunction; + + // Selects a strategy to use when implementing array index clamping. + // Default is SH_CLAMP_WITH_CLAMP_INTRINSIC. + ShArrayIndexClampingStrategy ArrayIndexClampingStrategy; + + // The maximum complexity an expression can be. + int MaxExpressionComplexity; + + // The maximum depth a call stack can be. + int MaxCallStackDepth; +} ShBuiltInResources; + +// +// Initialize built-in resources with minimum expected values. +// +COMPILER_EXPORT void ShInitBuiltInResources(ShBuiltInResources* resources); + +// +// ShHandle held by but opaque to the driver. It is allocated, +// managed, and de-allocated by the compiler. It's contents +// are defined by and used by the compiler. +// +// If handle creation fails, 0 will be returned. +// +typedef void* ShHandle; + +// +// Driver calls these to create and destroy compiler objects. +// +// Returns the handle of constructed compiler, null if the requested compiler is +// not supported. +// Parameters: +// type: Specifies the type of shader - SH_FRAGMENT_SHADER or SH_VERTEX_SHADER. +// spec: Specifies the language spec the compiler must conform to - +// SH_GLES2_SPEC or SH_WEBGL_SPEC. +// output: Specifies the output code type - SH_ESSL_OUTPUT, SH_GLSL_OUTPUT, +// SH_HLSL9_OUTPUT or SH_HLSL11_OUTPUT. +// resources: Specifies the built-in resources. +COMPILER_EXPORT ShHandle ShConstructCompiler( + ShShaderType type, + ShShaderSpec spec, + ShShaderOutput output, + const ShBuiltInResources* resources); +COMPILER_EXPORT void ShDestruct(ShHandle handle); + +// +// Compiles the given shader source. +// If the function succeeds, the return value is nonzero, else zero. +// Parameters: +// handle: Specifies the handle of compiler to be used. +// shaderStrings: Specifies an array of pointers to null-terminated strings +// containing the shader source code. +// numStrings: Specifies the number of elements in shaderStrings array. +// compileOptions: A mask containing the following parameters: +// SH_VALIDATE: Validates shader to ensure that it conforms to the spec +// specified during compiler construction. +// SH_VALIDATE_LOOP_INDEXING: Validates loop and indexing in the shader to +// ensure that they do not exceed the minimum +// functionality mandated in GLSL 1.0 spec, +// Appendix A, Section 4 and 5. +// There is no need to specify this parameter when +// compiling for WebGL - it is implied. +// SH_INTERMEDIATE_TREE: Writes intermediate tree to info log. +// Can be queried by calling ShGetInfoLog(). +// SH_OBJECT_CODE: Translates intermediate tree to glsl or hlsl shader. +// Can be queried by calling ShGetObjectCode(). +// SH_ATTRIBUTES_UNIFORMS: Extracts attributes and uniforms. +// Can be queried by calling ShGetActiveAttrib() and +// ShGetActiveUniform(). +// +COMPILER_EXPORT int ShCompile( + const ShHandle handle, + const char* const shaderStrings[], + size_t numStrings, + int compileOptions + ); + +// Returns a parameter from a compiled shader. +// Parameters: +// handle: Specifies the compiler +// pname: Specifies the parameter to query. +// The following parameters are defined: +// SH_INFO_LOG_LENGTH: the number of characters in the information log +// including the null termination character. +// SH_OBJECT_CODE_LENGTH: the number of characters in the object code +// including the null termination character. +// SH_ACTIVE_ATTRIBUTES: the number of active attribute variables. +// SH_ACTIVE_ATTRIBUTE_MAX_LENGTH: the length of the longest active attribute +// variable name including the null +// termination character. +// SH_ACTIVE_UNIFORMS: the number of active uniform variables. +// SH_ACTIVE_UNIFORM_MAX_LENGTH: the length of the longest active uniform +// variable name including the null +// termination character. +// SH_MAPPED_NAME_MAX_LENGTH: the length of the mapped variable name including +// the null termination character. +// SH_NAME_MAX_LENGTH: the max length of a user-defined name including the +// null termination character. +// SH_HASHED_NAME_MAX_LENGTH: the max length of a hashed name including the +// null termination character. +// SH_HASHED_NAMES_COUNT: the number of hashed names from the latest compile. +// +// params: Requested parameter +COMPILER_EXPORT void ShGetInfo(const ShHandle handle, + ShShaderInfo pname, + size_t* params); + +// Returns nul-terminated information log for a compiled shader. +// Parameters: +// handle: Specifies the compiler +// infoLog: Specifies an array of characters that is used to return +// the information log. It is assumed that infoLog has enough memory +// to accomodate the information log. The size of the buffer required +// to store the returned information log can be obtained by calling +// ShGetInfo with SH_INFO_LOG_LENGTH. +COMPILER_EXPORT void ShGetInfoLog(const ShHandle handle, char* infoLog); + +// Returns null-terminated object code for a compiled shader. +// Parameters: +// handle: Specifies the compiler +// infoLog: Specifies an array of characters that is used to return +// the object code. It is assumed that infoLog has enough memory to +// accomodate the object code. The size of the buffer required to +// store the returned object code can be obtained by calling +// ShGetInfo with SH_OBJECT_CODE_LENGTH. +COMPILER_EXPORT void ShGetObjectCode(const ShHandle handle, char* objCode); + +// Returns information about an active attribute variable. +// Parameters: +// handle: Specifies the compiler +// index: Specifies the index of the attribute variable to be queried. +// length: Returns the number of characters actually written in the string +// indicated by name (excluding the null terminator) if a value other +// than NULL is passed. +// size: Returns the size of the attribute variable. +// type: Returns the data type of the attribute variable. +// name: Returns a null terminated string containing the name of the +// attribute variable. It is assumed that name has enough memory to +// accomodate the attribute variable name. The size of the buffer +// required to store the attribute variable name can be obtained by +// calling ShGetInfo with SH_ACTIVE_ATTRIBUTE_MAX_LENGTH. +// mappedName: Returns a null terminated string containing the mapped name of +// the attribute variable, It is assumed that mappedName has enough +// memory (SH_MAPPED_NAME_MAX_LENGTH), or NULL if don't care +// about the mapped name. If the name is not mapped, then name and +// mappedName are the same. +COMPILER_EXPORT void ShGetActiveAttrib(const ShHandle handle, + int index, + size_t* length, + int* size, + ShDataType* type, + char* name, + char* mappedName); + +// Returns information about an active uniform variable. +// Parameters: +// handle: Specifies the compiler +// index: Specifies the index of the uniform variable to be queried. +// length: Returns the number of characters actually written in the string +// indicated by name (excluding the null terminator) if a value +// other than NULL is passed. +// size: Returns the size of the uniform variable. +// type: Returns the data type of the uniform variable. +// name: Returns a null terminated string containing the name of the +// uniform variable. It is assumed that name has enough memory to +// accomodate the uniform variable name. The size of the buffer required +// to store the uniform variable name can be obtained by calling +// ShGetInfo with SH_ACTIVE_UNIFORMS_MAX_LENGTH. +// mappedName: Returns a null terminated string containing the mapped name of +// the uniform variable, It is assumed that mappedName has enough +// memory (SH_MAPPED_NAME_MAX_LENGTH), or NULL if don't care +// about the mapped name. If the name is not mapped, then name and +// mappedName are the same. +COMPILER_EXPORT void ShGetActiveUniform(const ShHandle handle, + int index, + size_t* length, + int* size, + ShDataType* type, + char* name, + char* mappedName); + +// Returns information about a name hashing entry from the latest compile. +// Parameters: +// handle: Specifies the compiler +// index: Specifies the index of the name hashing entry to be queried. +// name: Returns a null terminated string containing the user defined name. +// It is assumed that name has enough memory to accomodate the name. +// The size of the buffer required to store the user defined name can +// be obtained by calling ShGetInfo with SH_NAME_MAX_LENGTH. +// hashedName: Returns a null terminated string containing the hashed name of +// the uniform variable, It is assumed that hashedName has enough +// memory to accomodate the name. The size of the buffer required +// to store the name can be obtained by calling ShGetInfo with +// SH_HASHED_NAME_MAX_LENGTH. +COMPILER_EXPORT void ShGetNameHashingEntry(const ShHandle handle, + int index, + char* name, + char* hashedName); + +// Returns a parameter from a compiled shader. +// Parameters: +// handle: Specifies the compiler +// pname: Specifies the parameter to query. +// The following parameters are defined: +// SH_ACTIVE_UNIFORMS_ARRAY: an STL vector of active uniforms. Valid only for +// HLSL output. +// params: Requested parameter +COMPILER_EXPORT void ShGetInfoPointer(const ShHandle handle, + ShShaderInfo pname, + void** params); + +#ifdef __cplusplus +} +#endif + +#endif // _COMPILER_INTERFACE_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/include/KHR/khrplatform.h b/Source/ThirdParty/ANGLE/include/KHR/khrplatform.h new file mode 100644 index 00000000000..8ec0d199ff0 --- /dev/null +++ b/Source/ThirdParty/ANGLE/include/KHR/khrplatform.h @@ -0,0 +1,269 @@ +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2009 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. + * + * $Revision: 9356 $ on $Date: 2009-10-21 02:52:25 -0700 (Wed, 21 Oct 2009) $ + * + * Adopters may modify this file to suit their platform. Adopters are + * encouraged to submit platform specific modifications to the Khronos + * group so that they can be included in future versions of this file. + * Please submit changes by sending them to the public Khronos Bugzilla + * (http://khronos.org/bugzilla) by filing a bug against product + * "Khronos (general)" component "Registry". + * + * A predefined template which fills in some of the bug fields can be + * reached using http://tinyurl.com/khrplatform-h-bugreport, but you + * must create a Bugzilla login first. + * + * + * See the Implementer's Guidelines for information about where this file + * should be located on your system and for more details of its use: + * http://www.khronos.org/registry/implementers_guide.pdf + * + * This file should be included as + * #include + * by Khronos client API header files that use its types and defines. + * + * The types in khrplatform.h should only be used to define API-specific types. + * + * Types defined in khrplatform.h: + * khronos_int8_t signed 8 bit + * khronos_uint8_t unsigned 8 bit + * khronos_int16_t signed 16 bit + * khronos_uint16_t unsigned 16 bit + * khronos_int32_t signed 32 bit + * khronos_uint32_t unsigned 32 bit + * khronos_int64_t signed 64 bit + * khronos_uint64_t unsigned 64 bit + * khronos_intptr_t signed same number of bits as a pointer + * khronos_uintptr_t unsigned same number of bits as a pointer + * khronos_ssize_t signed size + * khronos_usize_t unsigned size + * khronos_float_t signed 32 bit floating point + * khronos_time_ns_t unsigned 64 bit time in nanoseconds + * khronos_utime_nanoseconds_t unsigned time interval or absolute time in + * nanoseconds + * khronos_stime_nanoseconds_t signed time interval in nanoseconds + * khronos_boolean_enum_t enumerated boolean type. This should + * only be used as a base type when a client API's boolean type is + * an enum. Client APIs which use an integer or other type for + * booleans cannot use this as the base type for their boolean. + * + * Tokens defined in khrplatform.h: + * + * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. + * + * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. + * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. + * + * Calling convention macros defined in this file: + * KHRONOS_APICALL + * KHRONOS_APIENTRY + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( + * int arg1, + * int arg2) KHRONOS_APIATTRIBUTES; + */ + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APICALL + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +#if defined(_WIN32) && !defined(__SCITECH_SNAP__) +# define KHRONOS_APICALL __declspec(dllimport) +#elif defined (__SYMBIAN32__) +# define KHRONOS_APICALL IMPORT_C +#else +# define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIENTRY + *------------------------------------------------------------------------- + * This follows the return type of the function and precedes the function + * name in the function prototype. + */ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) + /* Win32 but not WinCE */ +# define KHRONOS_APIENTRY __stdcall +#else +# define KHRONOS_APIENTRY +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIATTRIBUTES + *------------------------------------------------------------------------- + * This follows the closing parenthesis of the function prototype arguments. + */ +#if defined (__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- + * basic type definitions + *-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) + + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__VMS ) || defined(__sgi) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* + * Win32 + */ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* + * Sun or Digital + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* + * Hypothetical platform with no float or int64 support + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* + * Generic fallback + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + + +/* + * Types that are (so far) the same on all platforms + */ +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; + +#if KHRONOS_SUPPORT_FLOAT +/* + * Float type + */ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types + * + * These types can be used to represent a time interval in nanoseconds or + * an absolute Unadjusted System Time. Unadjusted System Time is the number + * of nanoseconds since some arbitrary system event (e.g. since the last + * time the system booted). The Unadjusted System Time is an unsigned + * 64 bit value that wraps back to 0 every 584 years. Time intervals + * may be either signed or unsigned. + */ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* + * Dummy value used to pad enum types to 32 bits. + */ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* + * Enumerated boolean type + * + * Values other than zero should be considered to be true. Therefore + * comparisons should not be made against KHRONOS_TRUE. + */ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ diff --git a/Source/ThirdParty/ANGLE/src/ANGLE.sln b/Source/ThirdParty/ANGLE/src/ANGLE.sln new file mode 100644 index 00000000000..c575165d2ef --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/ANGLE.sln @@ -0,0 +1,66 @@ +锘 +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual C++ Express 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libEGL", "libEGL\libEGL.vcxproj", "{E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libGLESv2", "libGLESv2\libGLESv2.vcxproj", "{B5871A7A-968C-42E3-A33B-981E6F448E78}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "translator_hlsl", "compiler\translator_hlsl.vcxproj", "{5620F0E4-6C43-49BC-A178-B804E1A0C3A7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "translator_common", "compiler\translator_common.vcxproj", "{5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "preprocessor", "compiler\preprocessor\preprocessor.vcxproj", "{FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Debug|Win32.ActiveCfg = Debug|Win32 + {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Debug|Win32.Build.0 = Debug|Win32 + {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Debug|x64.ActiveCfg = Debug|x64 + {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Debug|x64.Build.0 = Debug|x64 + {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Release|Win32.ActiveCfg = Release|Win32 + {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Release|Win32.Build.0 = Release|Win32 + {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Release|x64.ActiveCfg = Release|x64 + {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Release|x64.Build.0 = Release|x64 + {B5871A7A-968C-42E3-A33B-981E6F448E78}.Debug|Win32.ActiveCfg = Debug|Win32 + {B5871A7A-968C-42E3-A33B-981E6F448E78}.Debug|Win32.Build.0 = Debug|Win32 + {B5871A7A-968C-42E3-A33B-981E6F448E78}.Debug|x64.ActiveCfg = Debug|x64 + {B5871A7A-968C-42E3-A33B-981E6F448E78}.Debug|x64.Build.0 = Debug|x64 + {B5871A7A-968C-42E3-A33B-981E6F448E78}.Release|Win32.ActiveCfg = Release|Win32 + {B5871A7A-968C-42E3-A33B-981E6F448E78}.Release|Win32.Build.0 = Release|Win32 + {B5871A7A-968C-42E3-A33B-981E6F448E78}.Release|x64.ActiveCfg = Release|x64 + {B5871A7A-968C-42E3-A33B-981E6F448E78}.Release|x64.Build.0 = Release|x64 + {5620F0E4-6C43-49BC-A178-B804E1A0C3A7}.Debug|Win32.ActiveCfg = Debug|Win32 + {5620F0E4-6C43-49BC-A178-B804E1A0C3A7}.Debug|Win32.Build.0 = Debug|Win32 + {5620F0E4-6C43-49BC-A178-B804E1A0C3A7}.Debug|x64.ActiveCfg = Debug|x64 + {5620F0E4-6C43-49BC-A178-B804E1A0C3A7}.Debug|x64.Build.0 = Debug|x64 + {5620F0E4-6C43-49BC-A178-B804E1A0C3A7}.Release|Win32.ActiveCfg = Release|Win32 + {5620F0E4-6C43-49BC-A178-B804E1A0C3A7}.Release|Win32.Build.0 = Release|Win32 + {5620F0E4-6C43-49BC-A178-B804E1A0C3A7}.Release|x64.ActiveCfg = Release|x64 + {5620F0E4-6C43-49BC-A178-B804E1A0C3A7}.Release|x64.Build.0 = Release|x64 + {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Debug|Win32.ActiveCfg = Debug|Win32 + {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Debug|Win32.Build.0 = Debug|Win32 + {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Debug|x64.ActiveCfg = Debug|x64 + {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Debug|x64.Build.0 = Debug|x64 + {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Release|Win32.ActiveCfg = Release|Win32 + {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Release|Win32.Build.0 = Release|Win32 + {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Release|x64.ActiveCfg = Release|x64 + {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Release|x64.Build.0 = Release|x64 + {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Debug|Win32.ActiveCfg = Debug|Win32 + {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Debug|Win32.Build.0 = Debug|Win32 + {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Debug|x64.ActiveCfg = Debug|x64 + {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Debug|x64.Build.0 = Debug|x64 + {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Release|Win32.ActiveCfg = Release|Win32 + {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Release|Win32.Build.0 = Release|Win32 + {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Release|x64.ActiveCfg = Release|x64 + {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Source/ThirdParty/ANGLE/src/build_angle.gyp b/Source/ThirdParty/ANGLE/src/build_angle.gyp new file mode 100644 index 00000000000..6adf1423ae7 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/build_angle.gyp @@ -0,0 +1,15 @@ +# Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'includes': [ + 'build_angle.gypi', + ], +} + +# Local Variables: +# tab-width:2 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=2 shiftwidth=2: diff --git a/Source/ThirdParty/ANGLE/src/build_angle.gypi b/Source/ThirdParty/ANGLE/src/build_angle.gypi new file mode 100644 index 00000000000..405c6710c29 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/build_angle.gypi @@ -0,0 +1,420 @@ +# Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'variables': { + 'angle_code': 1, + }, + 'target_defaults': { + 'defines': [ + 'ANGLE_DISABLE_TRACE', + 'ANGLE_COMPILE_OPTIMIZATION_LEVEL=D3DCOMPILE_OPTIMIZATION_LEVEL1', + 'ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ TEXT("d3dcompiler_46.dll"), TEXT("d3dcompiler_43.dll") }', + ], + }, + 'targets': [ + { + 'target_name': 'preprocessor', + 'type': 'static_library', + 'include_dirs': [ + ], + 'sources': [ + 'compiler/preprocessor/DiagnosticsBase.cpp', + 'compiler/preprocessor/DiagnosticsBase.h', + 'compiler/preprocessor/DirectiveHandlerBase.cpp', + 'compiler/preprocessor/DirectiveHandlerBase.h', + 'compiler/preprocessor/DirectiveParser.cpp', + 'compiler/preprocessor/DirectiveParser.h', + 'compiler/preprocessor/ExpressionParser.cpp', + 'compiler/preprocessor/ExpressionParser.h', + 'compiler/preprocessor/Input.cpp', + 'compiler/preprocessor/Input.h', + 'compiler/preprocessor/length_limits.h', + 'compiler/preprocessor/Lexer.cpp', + 'compiler/preprocessor/Lexer.h', + 'compiler/preprocessor/Macro.cpp', + 'compiler/preprocessor/Macro.h', + 'compiler/preprocessor/MacroExpander.cpp', + 'compiler/preprocessor/MacroExpander.h', + 'compiler/preprocessor/numeric_lex.h', + 'compiler/preprocessor/pp_utils.h', + 'compiler/preprocessor/Preprocessor.cpp', + 'compiler/preprocessor/Preprocessor.h', + 'compiler/preprocessor/SourceLocation.h', + 'compiler/preprocessor/Token.cpp', + 'compiler/preprocessor/Token.h', + 'compiler/preprocessor/Tokenizer.cpp', + 'compiler/preprocessor/Tokenizer.h', + ], + # TODO(jschuh): http://crbug.com/167187 + 'msvs_disabled_warnings': [ + 4267, + ], + }, + { + 'target_name': 'translator_common', + 'type': 'static_library', + 'dependencies': ['preprocessor'], + 'include_dirs': [ + '.', + '../include', + ], + 'defines': [ + 'COMPILER_IMPLEMENTATION', + ], + 'sources': [ + 'compiler/BaseTypes.h', + 'compiler/BuiltInFunctionEmulator.cpp', + 'compiler/BuiltInFunctionEmulator.h', + 'compiler/Common.h', + 'compiler/Compiler.cpp', + 'compiler/ConstantUnion.h', + 'compiler/debug.cpp', + 'compiler/debug.h', + 'compiler/DetectCallDepth.cpp', + 'compiler/DetectCallDepth.h', + 'compiler/Diagnostics.h', + 'compiler/Diagnostics.cpp', + 'compiler/DirectiveHandler.h', + 'compiler/DirectiveHandler.cpp', + 'compiler/ExtensionBehavior.h', + 'compiler/ForLoopUnroll.cpp', + 'compiler/ForLoopUnroll.h', + 'compiler/glslang.h', + 'compiler/glslang_lex.cpp', + 'compiler/glslang_tab.cpp', + 'compiler/glslang_tab.h', + 'compiler/HashNames.h', + 'compiler/InfoSink.cpp', + 'compiler/InfoSink.h', + 'compiler/Initialize.cpp', + 'compiler/Initialize.h', + 'compiler/InitializeDll.cpp', + 'compiler/InitializeDll.h', + 'compiler/InitializeGlobals.h', + 'compiler/InitializeParseContext.cpp', + 'compiler/InitializeParseContext.h', + 'compiler/Intermediate.cpp', + 'compiler/intermediate.h', + 'compiler/intermOut.cpp', + 'compiler/IntermTraverse.cpp', + 'compiler/localintermediate.h', + 'compiler/MapLongVariableNames.cpp', + 'compiler/MapLongVariableNames.h', + 'compiler/MMap.h', + 'compiler/osinclude.h', + 'compiler/parseConst.cpp', + 'compiler/ParseHelper.cpp', + 'compiler/ParseHelper.h', + 'compiler/PoolAlloc.cpp', + 'compiler/PoolAlloc.h', + 'compiler/QualifierAlive.cpp', + 'compiler/QualifierAlive.h', + 'compiler/RemoveTree.cpp', + 'compiler/RemoveTree.h', + 'compiler/RenameFunction.h', + 'compiler/ShHandle.h', + 'compiler/SymbolTable.cpp', + 'compiler/SymbolTable.h', + 'compiler/Types.h', + 'compiler/Uniform.cpp', + 'compiler/Uniform.h', + 'compiler/util.cpp', + 'compiler/util.h', + 'compiler/ValidateLimitations.cpp', + 'compiler/ValidateLimitations.h', + 'compiler/VariableInfo.cpp', + 'compiler/VariableInfo.h', + 'compiler/VariablePacker.cpp', + 'compiler/VariablePacker.h', + # Dependency graph + 'compiler/depgraph/DependencyGraph.cpp', + 'compiler/depgraph/DependencyGraph.h', + 'compiler/depgraph/DependencyGraphBuilder.cpp', + 'compiler/depgraph/DependencyGraphBuilder.h', + 'compiler/depgraph/DependencyGraphOutput.cpp', + 'compiler/depgraph/DependencyGraphOutput.h', + 'compiler/depgraph/DependencyGraphTraverse.cpp', + # Timing restrictions + 'compiler/timing/RestrictFragmentShaderTiming.cpp', + 'compiler/timing/RestrictFragmentShaderTiming.h', + 'compiler/timing/RestrictVertexShaderTiming.cpp', + 'compiler/timing/RestrictVertexShaderTiming.h', + 'third_party/compiler/ArrayBoundsClamper.cpp', + 'third_party/compiler/ArrayBoundsClamper.h', + ], + 'conditions': [ + ['OS=="win"', { + # TODO(jschuh): http://crbug.com/167187 size_t -> int + 'msvs_disabled_warnings': [ 4267 ], + 'sources': ['compiler/ossource_win.cpp'], + }, { # else: posix + 'sources': ['compiler/ossource_posix.cpp'], + }], + ], + }, + { + 'target_name': 'translator_glsl', + 'type': '<(component)', + 'dependencies': ['translator_common'], + 'include_dirs': [ + '.', + '../include', + ], + 'defines': [ + 'COMPILER_IMPLEMENTATION', + ], + 'sources': [ + 'compiler/CodeGenGLSL.cpp', + 'compiler/OutputESSL.cpp', + 'compiler/OutputESSL.h', + 'compiler/OutputGLSLBase.cpp', + 'compiler/OutputGLSLBase.h', + 'compiler/OutputGLSL.cpp', + 'compiler/OutputGLSL.h', + 'compiler/ShaderLang.cpp', + 'compiler/TranslatorESSL.cpp', + 'compiler/TranslatorESSL.h', + 'compiler/TranslatorGLSL.cpp', + 'compiler/TranslatorGLSL.h', + 'compiler/VersionGLSL.cpp', + 'compiler/VersionGLSL.h', + ], + # TODO(jschuh): http://crbug.com/167187 size_t -> int + 'msvs_disabled_warnings': [ 4267 ], + }, + ], + 'conditions': [ + ['OS=="win"', { + 'targets': [ + { + 'target_name': 'translator_hlsl', + 'type': '<(component)', + 'dependencies': ['translator_common'], + 'include_dirs': [ + '.', + '../include', + ], + 'defines': [ + 'COMPILER_IMPLEMENTATION', + ], + 'sources': [ + 'compiler/ShaderLang.cpp', + 'compiler/DetectDiscontinuity.cpp', + 'compiler/DetectDiscontinuity.h', + 'compiler/CodeGenHLSL.cpp', + 'compiler/OutputHLSL.cpp', + 'compiler/OutputHLSL.h', + 'compiler/TranslatorHLSL.cpp', + 'compiler/TranslatorHLSL.h', + 'compiler/UnfoldShortCircuit.cpp', + 'compiler/UnfoldShortCircuit.h', + 'compiler/SearchSymbol.cpp', + 'compiler/SearchSymbol.h', + ], + # TODO(jschuh): http://crbug.com/167187 size_t -> int + 'msvs_disabled_warnings': [ 4267 ], + }, + { + 'target_name': 'libGLESv2', + 'type': 'shared_library', + 'dependencies': ['translator_hlsl'], + 'include_dirs': [ + '.', + '../include', + 'libGLESv2', + ], + 'sources': [ + 'third_party/murmurhash/MurmurHash3.h', + 'third_party/murmurhash/MurmurHash3.cpp', + 'common/angleutils.h', + 'common/debug.cpp', + 'common/debug.h', + 'common/RefCountObject.cpp', + 'common/RefCountObject.h', + 'common/version.h', + 'libGLESv2/precompiled.h', + 'libGLESv2/precompiled.cpp', + 'libGLESv2/BinaryStream.h', + 'libGLESv2/Buffer.cpp', + 'libGLESv2/Buffer.h', + 'libGLESv2/constants.h', + 'libGLESv2/Context.cpp', + 'libGLESv2/Context.h', + 'libGLESv2/angletypes.h', + 'libGLESv2/Fence.cpp', + 'libGLESv2/Fence.h', + 'libGLESv2/Float16ToFloat32.cpp', + 'libGLESv2/Framebuffer.cpp', + 'libGLESv2/Framebuffer.h', + 'libGLESv2/HandleAllocator.cpp', + 'libGLESv2/HandleAllocator.h', + 'libGLESv2/libGLESv2.cpp', + 'libGLESv2/libGLESv2.def', + 'libGLESv2/libGLESv2.rc', + 'libGLESv2/main.cpp', + 'libGLESv2/main.h', + 'libGLESv2/mathutil.h', + 'libGLESv2/Program.cpp', + 'libGLESv2/Program.h', + 'libGLESv2/ProgramBinary.cpp', + 'libGLESv2/ProgramBinary.h', + 'libGLESv2/Query.h', + 'libGLESv2/Query.cpp', + 'libGLESv2/Renderbuffer.cpp', + 'libGLESv2/Renderbuffer.h', + 'libGLESv2/renderer/Blit.cpp', + 'libGLESv2/renderer/Blit.h', + 'libGLESv2/renderer/BufferStorage.h', + 'libGLESv2/renderer/BufferStorage.cpp', + 'libGLESv2/renderer/BufferStorage9.cpp', + 'libGLESv2/renderer/BufferStorage9.h', + 'libGLESv2/renderer/BufferStorage11.cpp', + 'libGLESv2/renderer/BufferStorage11.h', + 'libGLESv2/renderer/FenceImpl.h', + 'libGLESv2/renderer/Fence9.cpp', + 'libGLESv2/renderer/Fence9.h', + 'libGLESv2/renderer/Fence11.cpp', + 'libGLESv2/renderer/Fence11.h', + 'libGLESv2/renderer/generatemip.h', + 'libGLESv2/renderer/Image.cpp', + 'libGLESv2/renderer/Image.h', + 'libGLESv2/renderer/Image11.cpp', + 'libGLESv2/renderer/Image11.h', + 'libGLESv2/renderer/Image9.cpp', + 'libGLESv2/renderer/Image9.h', + 'libGLESv2/renderer/ImageSSE2.cpp', + 'libGLESv2/renderer/IndexBuffer.cpp', + 'libGLESv2/renderer/IndexBuffer.h', + 'libGLESv2/renderer/IndexBuffer9.cpp', + 'libGLESv2/renderer/IndexBuffer9.h', + 'libGLESv2/renderer/IndexBuffer11.cpp', + 'libGLESv2/renderer/IndexBuffer11.h', + 'libGLESv2/renderer/IndexDataManager.cpp', + 'libGLESv2/renderer/IndexDataManager.h', + 'libGLESv2/renderer/InputLayoutCache.cpp', + 'libGLESv2/renderer/InputLayoutCache.h', + 'libGLESv2/renderer/QueryImpl.h', + 'libGLESv2/renderer/Query9.cpp', + 'libGLESv2/renderer/Query9.h', + 'libGLESv2/renderer/Query11.cpp', + 'libGLESv2/renderer/Query11.h', + 'libGLESv2/renderer/Renderer.cpp', + 'libGLESv2/renderer/Renderer.h', + 'libGLESv2/renderer/Renderer11.cpp', + 'libGLESv2/renderer/Renderer11.h', + 'libGLESv2/renderer/renderer11_utils.cpp', + 'libGLESv2/renderer/renderer11_utils.h', + 'libGLESv2/renderer/Renderer9.cpp', + 'libGLESv2/renderer/Renderer9.h', + 'libGLESv2/renderer/renderer9_utils.cpp', + 'libGLESv2/renderer/renderer9_utils.h', + 'libGLESv2/renderer/RenderStateCache.cpp', + 'libGLESv2/renderer/RenderStateCache.h', + 'libGLESv2/renderer/RenderTarget.h', + 'libGLESv2/renderer/RenderTarget11.h', + 'libGLESv2/renderer/RenderTarget11.cpp', + 'libGLESv2/renderer/RenderTarget9.h', + 'libGLESv2/renderer/RenderTarget9.cpp', + 'libGLESv2/renderer/ShaderCache.h', + 'libGLESv2/renderer/ShaderExecutable.h', + 'libGLESv2/renderer/ShaderExecutable9.cpp', + 'libGLESv2/renderer/ShaderExecutable9.h', + 'libGLESv2/renderer/ShaderExecutable11.cpp', + 'libGLESv2/renderer/ShaderExecutable11.h', + 'libGLESv2/renderer/SwapChain.h', + 'libGLESv2/renderer/SwapChain9.cpp', + 'libGLESv2/renderer/SwapChain9.h', + 'libGLESv2/renderer/SwapChain11.cpp', + 'libGLESv2/renderer/SwapChain11.h', + 'libGLESv2/renderer/TextureStorage.cpp', + 'libGLESv2/renderer/TextureStorage.h', + 'libGLESv2/renderer/TextureStorage11.cpp', + 'libGLESv2/renderer/TextureStorage11.h', + 'libGLESv2/renderer/TextureStorage9.cpp', + 'libGLESv2/renderer/TextureStorage9.h', + 'libGLESv2/renderer/VertexBuffer.cpp', + 'libGLESv2/renderer/VertexBuffer.h', + 'libGLESv2/renderer/VertexBuffer9.cpp', + 'libGLESv2/renderer/VertexBuffer9.h', + 'libGLESv2/renderer/VertexBuffer11.cpp', + 'libGLESv2/renderer/VertexBuffer11.h', + 'libGLESv2/renderer/vertexconversion.h', + 'libGLESv2/renderer/VertexDataManager.cpp', + 'libGLESv2/renderer/VertexDataManager.h', + 'libGLESv2/renderer/VertexDeclarationCache.cpp', + 'libGLESv2/renderer/VertexDeclarationCache.h', + 'libGLESv2/ResourceManager.cpp', + 'libGLESv2/ResourceManager.h', + 'libGLESv2/Shader.cpp', + 'libGLESv2/Shader.h', + 'libGLESv2/Texture.cpp', + 'libGLESv2/Texture.h', + 'libGLESv2/Uniform.cpp', + 'libGLESv2/Uniform.h', + 'libGLESv2/utilities.cpp', + 'libGLESv2/utilities.h', + ], + # TODO(jschuh): http://crbug.com/167187 size_t -> int + 'msvs_disabled_warnings': [ 4267 ], + 'msvs_settings': { + 'VCLinkerTool': { + 'AdditionalDependencies': [ + 'd3d9.lib', + 'dxguid.lib', + ], + } + }, + }, + { + 'target_name': 'libEGL', + 'type': 'shared_library', + 'dependencies': ['libGLESv2'], + 'include_dirs': [ + '.', + '../include', + 'libGLESv2', + ], + 'sources': [ + 'common/angleutils.h', + 'common/debug.cpp', + 'common/debug.h', + 'common/RefCountObject.cpp', + 'common/RefCountObject.h', + 'common/version.h', + 'libEGL/Config.cpp', + 'libEGL/Config.h', + 'libEGL/Display.cpp', + 'libEGL/Display.h', + 'libEGL/libEGL.cpp', + 'libEGL/libEGL.def', + 'libEGL/libEGL.rc', + 'libEGL/main.cpp', + 'libEGL/main.h', + 'libEGL/Surface.cpp', + 'libEGL/Surface.h', + ], + # TODO(jschuh): http://crbug.com/167187 size_t -> int + 'msvs_disabled_warnings': [ 4267 ], + 'msvs_settings': { + 'VCLinkerTool': { + 'AdditionalDependencies': [ + 'd3d9.lib', + ], + } + }, + }, + ], + }], + ], +} + +# Local Variables: +# tab-width:2 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=2 shiftwidth=2: +# Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. diff --git a/Source/ThirdParty/ANGLE/src/common/RefCountObject.cpp b/Source/ThirdParty/ANGLE/src/common/RefCountObject.cpp new file mode 100644 index 00000000000..0364adf2cd5 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/common/RefCountObject.cpp @@ -0,0 +1,48 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// RefCountObject.cpp: Defines the gl::RefCountObject base class that provides +// lifecycle support for GL objects using the traditional BindObject scheme, but +// that need to be reference counted for correct cross-context deletion. +// (Concretely, textures, buffers and renderbuffers.) + +#include "RefCountObject.h" + +RefCountObject::RefCountObject(GLuint id) +{ + mId = id; + mRefCount = 0; +} + +RefCountObject::~RefCountObject() +{ + ASSERT(mRefCount == 0); +} + +void RefCountObject::addRef() const +{ + mRefCount++; +} + +void RefCountObject::release() const +{ + ASSERT(mRefCount > 0); + + if (--mRefCount == 0) + { + delete this; + } +} + +void RefCountObjectBindingPointer::set(RefCountObject *newObject) +{ + // addRef first in case newObject == mObject and this is the last reference to it. + if (newObject != NULL) newObject->addRef(); + if (mObject != NULL) mObject->release(); + + mObject = newObject; +} diff --git a/Source/ThirdParty/ANGLE/src/common/RefCountObject.h b/Source/ThirdParty/ANGLE/src/common/RefCountObject.h new file mode 100644 index 00000000000..727c71c3624 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/common/RefCountObject.h @@ -0,0 +1,65 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// RefCountObject.h: Defines the gl::RefCountObject base class that provides +// lifecycle support for GL objects using the traditional BindObject scheme, but +// that need to be reference counted for correct cross-context deletion. +// (Concretely, textures, buffers and renderbuffers.) + +#ifndef COMMON_REFCOUNTOBJECT_H_ +#define COMMON_REFCOUNTOBJECT_H_ + +#include + +#define GL_APICALL +#include + +#include "common/debug.h" + +class RefCountObject +{ + public: + explicit RefCountObject(GLuint id); + virtual ~RefCountObject(); + + virtual void addRef() const; + virtual void release() const; + + GLuint id() const { return mId; } + + private: + GLuint mId; + + mutable std::size_t mRefCount; +}; + +class RefCountObjectBindingPointer +{ + protected: + RefCountObjectBindingPointer() : mObject(NULL) { } + ~RefCountObjectBindingPointer() { ASSERT(mObject == NULL); } // Objects have to be released before the resource manager is destroyed, so they must be explicitly cleaned up. + + void set(RefCountObject *newObject); + RefCountObject *get() const { return mObject; } + + public: + GLuint id() const { return (mObject != NULL) ? mObject->id() : 0; } + bool operator ! () const { return (get() == NULL); } + + private: + RefCountObject *mObject; +}; + +template +class BindingPointer : public RefCountObjectBindingPointer +{ + public: + void set(ObjectType *newObject) { RefCountObjectBindingPointer::set(newObject); } + ObjectType *get() const { return static_cast(RefCountObjectBindingPointer::get()); } + ObjectType *operator -> () const { return get(); } +}; + +#endif // COMMON_REFCOUNTOBJECT_H_ diff --git a/Source/ThirdParty/ANGLE/src/common/angleutils.h b/Source/ThirdParty/ANGLE/src/common/angleutils.h new file mode 100644 index 00000000000..4736518e7e1 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/common/angleutils.h @@ -0,0 +1,56 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// angleutils.h: Common ANGLE utilities. + +#ifndef COMMON_ANGLEUTILS_H_ +#define COMMON_ANGLEUTILS_H_ + +#include + +// A macro to disallow the copy constructor and operator= functions +// This must be used in the private: declarations for a class +#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ + TypeName(const TypeName&); \ + void operator=(const TypeName&) + +template +inline unsigned int ArraySize(T(&)[N]) +{ + return N; +} + +template +void SafeRelease(T (&resourceBlock)[N]) +{ + for (unsigned int i = 0; i < N; i++) + { + SafeRelease(resourceBlock[i]); + } +} + +template +void SafeRelease(T& resource) +{ + if (resource) + { + resource->Release(); + resource = NULL; + } +} + +#if defined(_MSC_VER) && _MSC_VER < 1900 +#define snprintf _snprintf +#endif + +#define VENDOR_ID_AMD 0x1002 +#define VENDOR_ID_INTEL 0x8086 +#define VENDOR_ID_NVIDIA 0x10DE + +#define GL_BGRA4_ANGLEX 0x6ABC +#define GL_BGR5_A1_ANGLEX 0x6ABD + +#endif // COMMON_ANGLEUTILS_H_ diff --git a/Source/ThirdParty/ANGLE/src/common/debug.cpp b/Source/ThirdParty/ANGLE/src/common/debug.cpp new file mode 100644 index 00000000000..23337405ed1 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/common/debug.cpp @@ -0,0 +1,106 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// debug.cpp: Debugging utilities. + +#include "common/debug.h" +#include "common/system.h" +#include + +namespace gl +{ + +typedef void (WINAPI *PerfOutputFunction)(D3DCOLOR, LPCWSTR); + +static void output(bool traceFileDebugOnly, PerfOutputFunction perfFunc, const char *format, va_list vararg) +{ +#if !defined(ANGLE_DISABLE_PERF) + if (perfActive()) + { + char message[32768]; + int len = vsprintf_s(message, format, vararg); + if (len < 0) + { + return; + } + + // There are no ASCII variants of these D3DPERF functions. + wchar_t wideMessage[32768]; + for (int i = 0; i < len; ++i) + { + wideMessage[i] = message[i]; + } + wideMessage[len] = 0; + + perfFunc(0, wideMessage); + } +#endif + +#if !defined(ANGLE_DISABLE_TRACE) +#if defined(NDEBUG) + if (traceFileDebugOnly) + { + return; + } +#endif + + FILE* file = fopen(TRACE_OUTPUT_FILE, "a"); + if (file) + { + vfprintf(file, format, vararg); + fclose(file); + } +#endif +} + +void trace(bool traceFileDebugOnly, const char *format, ...) +{ + va_list vararg; + va_start(vararg, format); +#if defined(ANGLE_DISABLE_PERF) + output(traceFileDebugOnly, NULL, format, vararg); +#else + output(traceFileDebugOnly, D3DPERF_SetMarker, format, vararg); +#endif + va_end(vararg); +} + +bool perfActive() +{ +#if defined(ANGLE_DISABLE_PERF) + return false; +#else + static bool active = D3DPERF_GetStatus() != 0; + return active; +#endif +} + +ScopedPerfEventHelper::ScopedPerfEventHelper(const char* format, ...) +{ +#if !defined(ANGLE_DISABLE_PERF) +#if defined(ANGLE_DISABLE_TRACE) + if (!perfActive()) + { + return; + } +#endif + va_list vararg; + va_start(vararg, format); + output(true, reinterpret_cast(D3DPERF_BeginEvent), format, vararg); + va_end(vararg); +#endif +} + +ScopedPerfEventHelper::~ScopedPerfEventHelper() +{ +#if !defined(ANGLE_DISABLE_PERF) + if (perfActive()) + { + D3DPERF_EndEvent(); + } +#endif +} +} diff --git a/Source/ThirdParty/ANGLE/src/common/debug.h b/Source/ThirdParty/ANGLE/src/common/debug.h new file mode 100644 index 00000000000..23ee26d23ba --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/common/debug.h @@ -0,0 +1,112 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// debug.h: Debugging utilities. + +#ifndef COMMON_DEBUG_H_ +#define COMMON_DEBUG_H_ + +#include +#include + +#include "common/angleutils.h" + +#if !defined(TRACE_OUTPUT_FILE) +#define TRACE_OUTPUT_FILE "debug.txt" +#endif + +namespace gl +{ + // Outputs text to the debugging log + void trace(bool traceFileDebugOnly, const char *format, ...); + + // Returns whether D3DPERF is active. + bool perfActive(); + + // Pairs a D3D begin event with an end event. + class ScopedPerfEventHelper + { + public: + ScopedPerfEventHelper(const char* format, ...); + ~ScopedPerfEventHelper(); + + private: + DISALLOW_COPY_AND_ASSIGN(ScopedPerfEventHelper); + }; +} + +// A macro to output a trace of a function call and its arguments to the debugging log +#if defined(ANGLE_DISABLE_TRACE) && defined(ANGLE_DISABLE_PERF) +#define TRACE(message, ...) (void(0)) +#else +#define TRACE(message, ...) gl::trace(true, "trace: %s(%d): " message "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__) +#endif + +// A macro to output a function call and its arguments to the debugging log, to denote an item in need of fixing. +#if defined(ANGLE_DISABLE_TRACE) && defined(ANGLE_DISABLE_PERF) +#define FIXME(message, ...) (void(0)) +#else +#define FIXME(message, ...) gl::trace(false, "fixme: %s(%d): " message "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__) +#endif + +// A macro to output a function call and its arguments to the debugging log, in case of error. +#if defined(ANGLE_DISABLE_TRACE) && defined(ANGLE_DISABLE_PERF) +#define ERR(message, ...) (void(0)) +#else +#define ERR(message, ...) gl::trace(false, "err: %s(%d): " message "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__) +#endif + +// A macro to log a performance event around a scope. +#if defined(ANGLE_DISABLE_TRACE) && defined(ANGLE_DISABLE_PERF) +#define EVENT(message, ...) (void(0)) +#elif defined(_MSC_VER) +#define EVENT(message, ...) gl::ScopedPerfEventHelper scopedPerfEventHelper ## __LINE__(__FUNCTION__ message "\n", __VA_ARGS__); +#else +#define EVENT(message, ...) gl::ScopedPerfEventHelper scopedPerfEventHelper(message "\n", ##__VA_ARGS__); +#endif + +// A macro asserting a condition and outputting failures to the debug log +#if !defined(NDEBUG) +#define ASSERT(expression) do { \ + if(!(expression)) \ + ERR("\t! Assert failed in %s(%d): "#expression"\n", __FUNCTION__, __LINE__); \ + assert(expression); \ + } while(0) +#else +#define ASSERT(expression) (void(0)) +#endif + +// A macro to indicate unimplemented functionality +#if !defined(NDEBUG) +#define UNIMPLEMENTED() do { \ + FIXME("\t! Unimplemented: %s(%d)\n", __FUNCTION__, __LINE__); \ + assert(false); \ + } while(0) +#else + #define UNIMPLEMENTED() FIXME("\t! Unimplemented: %s(%d)\n", __FUNCTION__, __LINE__) +#endif + +// A macro for code which is not expected to be reached under valid assumptions +#if !defined(NDEBUG) +#define UNREACHABLE() do { \ + ERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__); \ + assert(false); \ + } while(0) +#else + #define UNREACHABLE() ERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__) +#endif + +// A macro that determines whether an object has a given runtime type. +#if !defined(NDEBUG) && (!defined(_MSC_VER) || defined(_CPPRTTI)) +#define HAS_DYNAMIC_TYPE(type, obj) (dynamic_cast(obj) != NULL) +#else +#define HAS_DYNAMIC_TYPE(type, obj) true +#endif + +// A macro functioning as a compile-time assert to validate constant conditions +#define META_ASSERT(condition) typedef int COMPILE_TIME_ASSERT_##__LINE__[static_cast(condition)?1:-1] + +#endif // COMMON_DEBUG_H_ diff --git a/Source/ThirdParty/ANGLE/src/common/system.h b/Source/ThirdParty/ANGLE/src/common/system.h new file mode 100644 index 00000000000..5eb140bccd2 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/common/system.h @@ -0,0 +1,26 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// system.h: Includes Windows system headers and undefines macros that conflict. + +#ifndef COMMON_SYSTEM_H +#define COMMON_SYSTEM_H + +#if !defined(WIN32_LEAN_AND_MEAN) +#define WIN32_LEAN_AND_MEAN +#endif + +#include + +#if defined(min) +#undef min +#endif + +#if defined(max) +#undef max +#endif + +#endif // COMMON_SYSTEM_H diff --git a/Source/ThirdParty/ANGLE/src/common/version.h b/Source/ThirdParty/ANGLE/src/common/version.h new file mode 100644 index 00000000000..c8ff63642b9 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/common/version.h @@ -0,0 +1,12 @@ +#define MAJOR_VERSION 1 +#define MINOR_VERSION 2 +#define BUILD_VERSION 0 +#define BUILD_REVISION 2426 + +#define STRINGIFY(x) #x +#define MACRO_STRINGIFY(x) STRINGIFY(x) + +#define REVISION_STRING MACRO_STRINGIFY(BUILD_REVISION) +#define VERSION_STRING MACRO_STRINGIFY(MAJOR_VERSION) "." MACRO_STRINGIFY(MINOR_VERSION) "." MACRO_STRINGIFY(BUILD_VERSION) "." MACRO_STRINGIFY(BUILD_REVISION) + +#define VERSION_DWORD ((MAJOR_VERSION << 24) | (MINOR_VERSION << 16) | BUILD_REVISION) diff --git a/Source/ThirdParty/ANGLE/src/compiler/64bit-lexer-safety.patch b/Source/ThirdParty/ANGLE/src/compiler/64bit-lexer-safety.patch new file mode 100644 index 00000000000..7af91f57653 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/64bit-lexer-safety.patch @@ -0,0 +1,177 @@ +--- a/src/compiler/glslang_lex.cpp ++++ b/src/compiler/glslang_lex.cpp +@@ -68,6 +68,7 @@ typedef int16_t flex_int16_t; + typedef uint16_t flex_uint16_t; + typedef int32_t flex_int32_t; + typedef uint32_t flex_uint32_t; ++typedef uint64_t flex_uint64_t; + #else + typedef signed char flex_int8_t; + typedef short int flex_int16_t; +@@ -191,6 +192,11 @@ typedef void* yyscan_t; + typedef struct yy_buffer_state *YY_BUFFER_STATE; + #endif + ++#ifndef YY_TYPEDEF_YY_SIZE_T ++#define YY_TYPEDEF_YY_SIZE_T ++typedef size_t yy_size_t; ++#endif ++ + #define EOB_ACT_CONTINUE_SCAN 0 + #define EOB_ACT_END_OF_FILE 1 + #define EOB_ACT_LAST_MATCH 2 +@@ -204,7 +210,7 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; + */ + #define YY_LESS_LINENO(n) \ + do { \ +- int yyl;\ ++ yy_size_t yyl;\ + for ( yyl = n; yyl < yyleng; ++yyl )\ + if ( yytext[yyl] == '\n' )\ + --yylineno;\ +@@ -226,11 +232,6 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; + + #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) + +-#ifndef YY_TYPEDEF_YY_SIZE_T +-#define YY_TYPEDEF_YY_SIZE_T +-typedef size_t yy_size_t; +-#endif +- + #ifndef YY_STRUCT_YY_BUFFER_STATE + #define YY_STRUCT_YY_BUFFER_STATE + struct yy_buffer_state +@@ -248,7 +249,7 @@ struct yy_buffer_state + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ +- int yy_n_chars; ++ yy_size_t yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to +@@ -327,7 +328,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); + + YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); + YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); +-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); ++YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); + + void *yyalloc (yy_size_t ,yyscan_t yyscanner ); + void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner ); +@@ -378,7 +379,7 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); + */ + #define YY_DO_BEFORE_ACTION \ + yyg->yytext_ptr = yy_bp; \ +- yyleng = (size_t) (yy_cp - yy_bp); \ ++ yyleng = (yy_size_t) (yy_cp - yy_bp); \ + yyg->yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yyg->yy_c_buf_p = yy_cp; +@@ -1035,8 +1036,8 @@ struct yyguts_t + size_t yy_buffer_stack_max; /**< capacity of stack. */ + YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ + char yy_hold_char; +- int yy_n_chars; +- int yyleng_r; ++ yy_size_t yy_n_chars; ++ yy_size_t yyleng_r; + char *yy_c_buf_p; + int yy_init; + int yy_start; +@@ -1089,7 +1090,7 @@ FILE *yyget_out (yyscan_t yyscanner ); + + void yyset_out (FILE * out_str ,yyscan_t yyscanner ); + +-int yyget_leng (yyscan_t yyscanner ); ++yy_size_t yyget_leng (yyscan_t yyscanner ); + + char *yyget_text (yyscan_t yyscanner ); + +@@ -1158,7 +1159,7 @@ static int input (yyscan_t yyscanner ); + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ +- int n; \ ++ yy_size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ +@@ -1317,7 +1318,7 @@ yy_find_action: + + if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) + { +- int yyl; ++ yy_size_t yyl; + for ( yyl = 0; yyl < yyleng; ++yyl ) + if ( yytext[yyl] == '\n' ) + +@@ -2203,7 +2204,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) + + else + { +- int num_to_read = ++ yy_size_t num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) +@@ -2217,7 +2218,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) + + if ( b->yy_is_our_buffer ) + { +- int new_size = b->yy_buf_size * 2; ++ yy_size_t new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; +@@ -2248,7 +2249,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), +- yyg->yy_n_chars, (size_t) num_to_read ); ++ yyg->yy_n_chars, num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } +@@ -2373,7 +2374,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) + + else + { /* need more input */ +- int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++ yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + ++yyg->yy_c_buf_p; + + switch ( yy_get_next_buffer( yyscanner ) ) +@@ -2660,7 +2661,7 @@ void yypop_buffer_state (yyscan_t yyscanner) + */ + static void yyensure_buffer_stack (yyscan_t yyscanner) + { +- int num_to_alloc; ++ yy_size_t num_to_alloc; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (!yyg->yy_buffer_stack) { +@@ -2758,12 +2759,11 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner) + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +-YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) ++YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) + { + YY_BUFFER_STATE b; + char *buf; +- yy_size_t n; +- int i; ++ yy_size_t n, i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; +@@ -2913,7 +2913,7 @@ FILE *yyget_out (yyscan_t yyscanner) + /** Get the length of the current token. + * @param yyscanner The scanner object. + */ +-int yyget_leng (yyscan_t yyscanner) ++yy_size_t yyget_leng (yyscan_t yyscanner) + { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyleng; diff --git a/Source/ThirdParty/ANGLE/src/compiler/BaseTypes.h b/Source/ThirdParty/ANGLE/src/compiler/BaseTypes.h new file mode 100644 index 00000000000..1631f4f779f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/BaseTypes.h @@ -0,0 +1,148 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef _BASICTYPES_INCLUDED_ +#define _BASICTYPES_INCLUDED_ + +// +// Precision qualifiers +// +enum TPrecision +{ + // These need to be kept sorted + EbpUndefined, + EbpLow, + EbpMedium, + EbpHigh +}; + +inline const char* getPrecisionString(TPrecision p) +{ + switch(p) + { + case EbpHigh: return "highp"; break; + case EbpMedium: return "mediump"; break; + case EbpLow: return "lowp"; break; + default: return "mediump"; break; // Safest fallback + } +} + +// +// Basic type. Arrays, vectors, etc., are orthogonal to this. +// +enum TBasicType +{ + EbtVoid, + EbtFloat, + EbtInt, + EbtBool, + EbtGuardSamplerBegin, // non type: see implementation of IsSampler() + EbtSampler2D, + EbtSamplerCube, + EbtSamplerExternalOES, // Only valid if OES_EGL_image_external exists. + EbtSampler2DRect, // Only valid if GL_ARB_texture_rectangle exists. + EbtGuardSamplerEnd, // non type: see implementation of IsSampler() + EbtStruct, + EbtAddress, // should be deprecated?? + EbtInvariant // used as a type when qualifying a previously declared variable as being invariant +}; + +inline const char* getBasicString(TBasicType t) +{ + switch (t) + { + case EbtVoid: return "void"; break; + case EbtFloat: return "float"; break; + case EbtInt: return "int"; break; + case EbtBool: return "bool"; break; + case EbtSampler2D: return "sampler2D"; break; + case EbtSamplerCube: return "samplerCube"; break; + case EbtSamplerExternalOES: return "samplerExternalOES"; break; + case EbtSampler2DRect: return "sampler2DRect"; break; + case EbtStruct: return "structure"; break; + default: return "unknown type"; + } +} + +inline bool IsSampler(TBasicType type) +{ + return type > EbtGuardSamplerBegin && type < EbtGuardSamplerEnd; +} + +// +// Qualifiers and built-ins. These are mainly used to see what can be read +// or written, and by the machine dependent translator to know which registers +// to allocate variables in. Since built-ins tend to go to different registers +// than varying or uniform, it makes sense they are peers, not sub-classes. +// +enum TQualifier +{ + EvqTemporary, // For temporaries (within a function), read/write + EvqGlobal, // For globals read/write + EvqConst, // User defined constants and non-output parameters in functions + EvqAttribute, // Readonly + EvqVaryingIn, // readonly, fragment shaders only + EvqVaryingOut, // vertex shaders only read/write + EvqInvariantVaryingIn, // readonly, fragment shaders only + EvqInvariantVaryingOut, // vertex shaders only read/write + EvqUniform, // Readonly, vertex and fragment + + // parameters + EvqIn, + EvqOut, + EvqInOut, + EvqConstReadOnly, + + // built-ins written by vertex shader + EvqPosition, + EvqPointSize, + + // built-ins read by fragment shader + EvqFragCoord, + EvqFrontFacing, + EvqPointCoord, + + // built-ins written by fragment shader + EvqFragColor, + EvqFragData, + EvqFragDepth, + + // end of list + EvqLast +}; + +// +// This is just for debug print out, carried along with the definitions above. +// +inline const char* getQualifierString(TQualifier q) +{ + switch(q) + { + case EvqTemporary: return "Temporary"; break; + case EvqGlobal: return "Global"; break; + case EvqConst: return "const"; break; + case EvqConstReadOnly: return "const"; break; + case EvqAttribute: return "attribute"; break; + case EvqVaryingIn: return "varying"; break; + case EvqVaryingOut: return "varying"; break; + case EvqInvariantVaryingIn: return "invariant varying"; break; + case EvqInvariantVaryingOut:return "invariant varying"; break; + case EvqUniform: return "uniform"; break; + case EvqIn: return "in"; break; + case EvqOut: return "out"; break; + case EvqInOut: return "inout"; break; + case EvqPosition: return "Position"; break; + case EvqPointSize: return "PointSize"; break; + case EvqFragCoord: return "FragCoord"; break; + case EvqFrontFacing: return "FrontFacing"; break; + case EvqFragColor: return "FragColor"; break; + case EvqFragData: return "FragData"; break; + case EvqFragDepth: return "FragDepth"; break; + default: return "unknown qualifier"; + } +} + +#endif // _BASICTYPES_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/BuiltInFunctionEmulator.cpp b/Source/ThirdParty/ANGLE/src/compiler/BuiltInFunctionEmulator.cpp new file mode 100644 index 00000000000..1c4b25f13f0 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/BuiltInFunctionEmulator.cpp @@ -0,0 +1,406 @@ +// +// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/BuiltInFunctionEmulator.h" + +#include "compiler/SymbolTable.h" + +namespace { + +// we use macros here instead of function definitions to work around more GLSL +// compiler bugs, in particular on NVIDIA hardware on Mac OSX. Macros are +// problematic because if the argument has side-effects they will be repeatedly +// evaluated. This is unlikely to show up in real shaders, but is something to +// consider. +const char* kFunctionEmulationVertexSource[] = { + "#error no emulation for cos(float)", + "#error no emulation for cos(vec2)", + "#error no emulation for cos(vec3)", + "#error no emulation for cos(vec4)", + + "#define webgl_distance_emu(x, y) ((x) >= (y) ? (x) - (y) : (y) - (x))", + "#error no emulation for distance(vec2, vec2)", + "#error no emulation for distance(vec3, vec3)", + "#error no emulation for distance(vec4, vec4)", + + "#define webgl_dot_emu(x, y) ((x) * (y))", + "#error no emulation for dot(vec2, vec2)", + "#error no emulation for dot(vec3, vec3)", + "#error no emulation for dot(vec4, vec4)", + + "#define webgl_length_emu(x) ((x) >= 0.0 ? (x) : -(x))", + "#error no emulation for length(vec2)", + "#error no emulation for length(vec3)", + "#error no emulation for length(vec4)", + + "#define webgl_normalize_emu(x) ((x) == 0.0 ? 0.0 : ((x) > 0.0 ? 1.0 : -1.0))", + "#error no emulation for normalize(vec2)", + "#error no emulation for normalize(vec3)", + "#error no emulation for normalize(vec4)", + + "#define webgl_reflect_emu(I, N) ((I) - 2.0 * (N) * (I) * (N))", + "#error no emulation for reflect(vec2, vec2)", + "#error no emulation for reflect(vec3, vec3)", + "#error no emulation for reflect(vec4, vec4)" +}; + +const char* kFunctionEmulationFragmentSource[] = { + "webgl_emu_precision float webgl_cos_emu(webgl_emu_precision float a) { return cos(a); }", + "webgl_emu_precision vec2 webgl_cos_emu(webgl_emu_precision vec2 a) { return cos(a); }", + "webgl_emu_precision vec3 webgl_cos_emu(webgl_emu_precision vec3 a) { return cos(a); }", + "webgl_emu_precision vec4 webgl_cos_emu(webgl_emu_precision vec4 a) { return cos(a); }", + + "#define webgl_distance_emu(x, y) ((x) >= (y) ? (x) - (y) : (y) - (x))", + "#error no emulation for distance(vec2, vec2)", + "#error no emulation for distance(vec3, vec3)", + "#error no emulation for distance(vec4, vec4)", + + "#define webgl_dot_emu(x, y) ((x) * (y))", + "#error no emulation for dot(vec2, vec2)", + "#error no emulation for dot(vec3, vec3)", + "#error no emulation for dot(vec4, vec4)", + + "#define webgl_length_emu(x) ((x) >= 0.0 ? (x) : -(x))", + "#error no emulation for length(vec2)", + "#error no emulation for length(vec3)", + "#error no emulation for length(vec4)", + + "#define webgl_normalize_emu(x) ((x) == 0.0 ? 0.0 : ((x) > 0.0 ? 1.0 : -1.0))", + "#error no emulation for normalize(vec2)", + "#error no emulation for normalize(vec3)", + "#error no emulation for normalize(vec4)", + + "#define webgl_reflect_emu(I, N) ((I) - 2.0 * (N) * (I) * (N))", + "#error no emulation for reflect(vec2, vec2)", + "#error no emulation for reflect(vec3, vec3)", + "#error no emulation for reflect(vec4, vec4)" +}; + +const bool kFunctionEmulationVertexMask[] = { +#if defined(__APPLE__) + // Work around ATI driver bugs in Mac. + false, // TFunctionCos1 + false, // TFunctionCos2 + false, // TFunctionCos3 + false, // TFunctionCos4 + true, // TFunctionDistance1_1 + false, // TFunctionDistance2_2 + false, // TFunctionDistance3_3 + false, // TFunctionDistance4_4 + true, // TFunctionDot1_1 + false, // TFunctionDot2_2 + false, // TFunctionDot3_3 + false, // TFunctionDot4_4 + true, // TFunctionLength1 + false, // TFunctionLength2 + false, // TFunctionLength3 + false, // TFunctionLength4 + true, // TFunctionNormalize1 + false, // TFunctionNormalize2 + false, // TFunctionNormalize3 + false, // TFunctionNormalize4 + true, // TFunctionReflect1_1 + false, // TFunctionReflect2_2 + false, // TFunctionReflect3_3 + false, // TFunctionReflect4_4 +#else + // Work around D3D driver bug in Win. + false, // TFunctionCos1 + false, // TFunctionCos2 + false, // TFunctionCos3 + false, // TFunctionCos4 + false, // TFunctionDistance1_1 + false, // TFunctionDistance2_2 + false, // TFunctionDistance3_3 + false, // TFunctionDistance4_4 + false, // TFunctionDot1_1 + false, // TFunctionDot2_2 + false, // TFunctionDot3_3 + false, // TFunctionDot4_4 + false, // TFunctionLength1 + false, // TFunctionLength2 + false, // TFunctionLength3 + false, // TFunctionLength4 + false, // TFunctionNormalize1 + false, // TFunctionNormalize2 + false, // TFunctionNormalize3 + false, // TFunctionNormalize4 + false, // TFunctionReflect1_1 + false, // TFunctionReflect2_2 + false, // TFunctionReflect3_3 + false, // TFunctionReflect4_4 +#endif + false // TFunctionUnknown +}; + +const bool kFunctionEmulationFragmentMask[] = { +#if defined(__APPLE__) + // Work around ATI driver bugs in Mac. + true, // TFunctionCos1 + true, // TFunctionCos2 + true, // TFunctionCos3 + true, // TFunctionCos4 + true, // TFunctionDistance1_1 + false, // TFunctionDistance2_2 + false, // TFunctionDistance3_3 + false, // TFunctionDistance4_4 + true, // TFunctionDot1_1 + false, // TFunctionDot2_2 + false, // TFunctionDot3_3 + false, // TFunctionDot4_4 + true, // TFunctionLength1 + false, // TFunctionLength2 + false, // TFunctionLength3 + false, // TFunctionLength4 + true, // TFunctionNormalize1 + false, // TFunctionNormalize2 + false, // TFunctionNormalize3 + false, // TFunctionNormalize4 + true, // TFunctionReflect1_1 + false, // TFunctionReflect2_2 + false, // TFunctionReflect3_3 + false, // TFunctionReflect4_4 +#else + // Work around D3D driver bug in Win. + false, // TFunctionCos1 + false, // TFunctionCos2 + false, // TFunctionCos3 + false, // TFunctionCos4 + false, // TFunctionDistance1_1 + false, // TFunctionDistance2_2 + false, // TFunctionDistance3_3 + false, // TFunctionDistance4_4 + false, // TFunctionDot1_1 + false, // TFunctionDot2_2 + false, // TFunctionDot3_3 + false, // TFunctionDot4_4 + false, // TFunctionLength1 + false, // TFunctionLength2 + false, // TFunctionLength3 + false, // TFunctionLength4 + false, // TFunctionNormalize1 + false, // TFunctionNormalize2 + false, // TFunctionNormalize3 + false, // TFunctionNormalize4 + false, // TFunctionReflect1_1 + false, // TFunctionReflect2_2 + false, // TFunctionReflect3_3 + false, // TFunctionReflect4_4 +#endif + false // TFunctionUnknown +}; + +class BuiltInFunctionEmulationMarker : public TIntermTraverser { +public: + BuiltInFunctionEmulationMarker(BuiltInFunctionEmulator& emulator) + : mEmulator(emulator) + { + } + + virtual bool visitUnary(Visit visit, TIntermUnary* node) + { + if (visit == PreVisit) { + bool needToEmulate = mEmulator.SetFunctionCalled( + node->getOp(), node->getOperand()->getType()); + if (needToEmulate) + node->setUseEmulatedFunction(); + } + return true; + } + + virtual bool visitAggregate(Visit visit, TIntermAggregate* node) + { + if (visit == PreVisit) { + // Here we handle all the built-in functions instead of the ones we + // currently identified as problematic. + switch (node->getOp()) { + case EOpLessThan: + case EOpGreaterThan: + case EOpLessThanEqual: + case EOpGreaterThanEqual: + case EOpVectorEqual: + case EOpVectorNotEqual: + case EOpMod: + case EOpPow: + case EOpAtan: + case EOpMin: + case EOpMax: + case EOpClamp: + case EOpMix: + case EOpStep: + case EOpSmoothStep: + case EOpDistance: + case EOpDot: + case EOpCross: + case EOpFaceForward: + case EOpReflect: + case EOpRefract: + case EOpMul: + break; + default: + return true; + }; + const TIntermSequence& sequence = node->getSequence(); + // Right now we only handle built-in functions with two parameters. + if (sequence.size() != 2) + return true; + TIntermTyped* param1 = sequence[0]->getAsTyped(); + TIntermTyped* param2 = sequence[1]->getAsTyped(); + if (!param1 || !param2) + return true; + bool needToEmulate = mEmulator.SetFunctionCalled( + node->getOp(), param1->getType(), param2->getType()); + if (needToEmulate) + node->setUseEmulatedFunction(); + } + return true; + } + +private: + BuiltInFunctionEmulator& mEmulator; +}; + +} // anonymous namepsace + +BuiltInFunctionEmulator::BuiltInFunctionEmulator(ShShaderType shaderType) +{ + if (shaderType == SH_FRAGMENT_SHADER) { + mFunctionMask = kFunctionEmulationFragmentMask; + mFunctionSource = kFunctionEmulationFragmentSource; + } else { + mFunctionMask = kFunctionEmulationVertexMask; + mFunctionSource = kFunctionEmulationVertexSource; + } +} + +bool BuiltInFunctionEmulator::SetFunctionCalled( + TOperator op, const TType& param) +{ + TBuiltInFunction function = IdentifyFunction(op, param); + return SetFunctionCalled(function); +} + +bool BuiltInFunctionEmulator::SetFunctionCalled( + TOperator op, const TType& param1, const TType& param2) +{ + TBuiltInFunction function = IdentifyFunction(op, param1, param2); + return SetFunctionCalled(function); +} + +bool BuiltInFunctionEmulator::SetFunctionCalled( + BuiltInFunctionEmulator::TBuiltInFunction function) { + if (function == TFunctionUnknown || mFunctionMask[function] == false) + return false; + for (size_t i = 0; i < mFunctions.size(); ++i) { + if (mFunctions[i] == function) + return true; + } + mFunctions.push_back(function); + return true; +} + +void BuiltInFunctionEmulator::OutputEmulatedFunctionDefinition( + TInfoSinkBase& out, bool withPrecision) const +{ + if (mFunctions.size() == 0) + return; + out << "// BEGIN: Generated code for built-in function emulation\n\n"; + if (withPrecision) { + out << "#if defined(GL_FRAGMENT_PRECISION_HIGH)\n" + << "#define webgl_emu_precision highp\n" + << "#else\n" + << "#define webgl_emu_precision mediump\n" + << "#endif\n\n"; + } else { + out << "#define webgl_emu_precision\n\n"; + } + for (size_t i = 0; i < mFunctions.size(); ++i) { + out << mFunctionSource[mFunctions[i]] << "\n\n"; + } + out << "// END: Generated code for built-in function emulation\n\n"; +} + +BuiltInFunctionEmulator::TBuiltInFunction +BuiltInFunctionEmulator::IdentifyFunction( + TOperator op, const TType& param) +{ + if (param.getNominalSize() > 4) + return TFunctionUnknown; + unsigned int function = TFunctionUnknown; + switch (op) { + case EOpCos: + function = TFunctionCos1; + break; + case EOpLength: + function = TFunctionLength1; + break; + case EOpNormalize: + function = TFunctionNormalize1; + break; + default: + break; + } + if (function == TFunctionUnknown) + return TFunctionUnknown; + if (param.isVector()) + function += param.getNominalSize() - 1; + return static_cast(function); +} + +BuiltInFunctionEmulator::TBuiltInFunction +BuiltInFunctionEmulator::IdentifyFunction( + TOperator op, const TType& param1, const TType& param2) +{ + // Right now for all the emulated functions with two parameters, the two + // parameters have the same type. + if (param1.isVector() != param2.isVector() || + param1.getNominalSize() != param2.getNominalSize() || + param1.getNominalSize() > 4) + return TFunctionUnknown; + + unsigned int function = TFunctionUnknown; + switch (op) { + case EOpDistance: + function = TFunctionDistance1_1; + break; + case EOpDot: + function = TFunctionDot1_1; + break; + case EOpReflect: + function = TFunctionReflect1_1; + break; + default: + break; + } + if (function == TFunctionUnknown) + return TFunctionUnknown; + if (param1.isVector()) + function += param1.getNominalSize() - 1; + return static_cast(function); +} + +void BuiltInFunctionEmulator::MarkBuiltInFunctionsForEmulation( + TIntermNode* root) +{ + ASSERT(root); + + BuiltInFunctionEmulationMarker marker(*this); + root->traverse(&marker); +} + +void BuiltInFunctionEmulator::Cleanup() +{ + mFunctions.clear(); +} + +//static +TString BuiltInFunctionEmulator::GetEmulatedFunctionName( + const TString& name) +{ + ASSERT(name[name.length() - 1] == '('); + return "webgl_" + name.substr(0, name.length() - 1) + "_emu("; +} + diff --git a/Source/ThirdParty/ANGLE/src/compiler/BuiltInFunctionEmulator.h b/Source/ThirdParty/ANGLE/src/compiler/BuiltInFunctionEmulator.h new file mode 100644 index 00000000000..0d904f41d09 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/BuiltInFunctionEmulator.h @@ -0,0 +1,93 @@ +// +// Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILIER_BUILT_IN_FUNCTION_EMULATOR_H_ +#define COMPILIER_BUILT_IN_FUNCTION_EMULATOR_H_ + +#include "GLSLANG/ShaderLang.h" + +#include "compiler/InfoSink.h" +#include "compiler/intermediate.h" + +// +// This class decides which built-in functions need to be replaced with the +// emulated ones. +// It's only a workaround for OpenGL driver bugs, and isn't needed in general. +// +class BuiltInFunctionEmulator { +public: + BuiltInFunctionEmulator(ShShaderType shaderType); + // Records that a function is called by the shader and might needs to be + // emulated. If the function's group is not in mFunctionGroupFilter, this + // becomes an no-op. + // Returns true if the function call needs to be replaced with an emulated + // one. + bool SetFunctionCalled(TOperator op, const TType& param); + bool SetFunctionCalled( + TOperator op, const TType& param1, const TType& param2); + + // Output function emulation definition. This should be before any other + // shader source. + void OutputEmulatedFunctionDefinition(TInfoSinkBase& out, bool withPrecision) const; + + void MarkBuiltInFunctionsForEmulation(TIntermNode* root); + + void Cleanup(); + + // "name(" becomes "webgl_name_emu(". + static TString GetEmulatedFunctionName(const TString& name); + +private: + // + // Built-in functions. + // + enum TBuiltInFunction { + TFunctionCos1 = 0, // float cos(float); + TFunctionCos2, // vec2 cos(vec2); + TFunctionCos3, // vec3 cos(vec3); + TFunctionCos4, // vec4 cos(vec4); + + TFunctionDistance1_1, // float distance(float, float); + TFunctionDistance2_2, // vec2 distance(vec2, vec2); + TFunctionDistance3_3, // vec3 distance(vec3, vec3); + TFunctionDistance4_4, // vec4 distance(vec4, vec4); + + TFunctionDot1_1, // float dot(float, float); + TFunctionDot2_2, // vec2 dot(vec2, vec2); + TFunctionDot3_3, // vec3 dot(vec3, vec3); + TFunctionDot4_4, // vec4 dot(vec4, vec4); + + TFunctionLength1, // float length(float); + TFunctionLength2, // float length(vec2); + TFunctionLength3, // float length(vec3); + TFunctionLength4, // float length(vec4); + + TFunctionNormalize1, // float normalize(float); + TFunctionNormalize2, // vec2 normalize(vec2); + TFunctionNormalize3, // vec3 normalize(vec3); + TFunctionNormalize4, // vec4 normalize(vec4); + + TFunctionReflect1_1, // float reflect(float, float); + TFunctionReflect2_2, // vec2 reflect(vec2, vec2); + TFunctionReflect3_3, // vec3 reflect(vec3, vec3); + TFunctionReflect4_4, // vec4 reflect(vec4, vec4); + + TFunctionUnknown + }; + + TBuiltInFunction IdentifyFunction(TOperator op, const TType& param); + TBuiltInFunction IdentifyFunction( + TOperator op, const TType& param1, const TType& param2); + + bool SetFunctionCalled(TBuiltInFunction function); + + std::vector mFunctions; + + const bool* mFunctionMask; // a boolean flag for each function. + const char** mFunctionSource; +}; + +#endif // COMPILIER_BUILT_IN_FUNCTION_EMULATOR_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/CodeGenGLSL.cpp b/Source/ThirdParty/ANGLE/src/compiler/CodeGenGLSL.cpp new file mode 100644 index 00000000000..226bf8f0fc0 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/CodeGenGLSL.cpp @@ -0,0 +1,34 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/TranslatorGLSL.h" +#include "compiler/TranslatorESSL.h" + +// +// This function must be provided to create the actual +// compile object used by higher level code. It returns +// a subclass of TCompiler. +// +TCompiler* ConstructCompiler( + ShShaderType type, ShShaderSpec spec, ShShaderOutput output) +{ + switch (output) { + case SH_GLSL_OUTPUT: + return new TranslatorGLSL(type, spec); + case SH_ESSL_OUTPUT: + return new TranslatorESSL(type, spec); + default: + return NULL; + } +} + +// +// Delete the compiler made by ConstructCompiler +// +void DeleteCompiler(TCompiler* compiler) +{ + delete compiler; +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/CodeGenHLSL.cpp b/Source/ThirdParty/ANGLE/src/compiler/CodeGenHLSL.cpp new file mode 100644 index 00000000000..637ccc5e37b --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/CodeGenHLSL.cpp @@ -0,0 +1,33 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/TranslatorHLSL.h" + +// +// This function must be provided to create the actual +// compile object used by higher level code. It returns +// a subclass of TCompiler. +// +TCompiler* ConstructCompiler( + ShShaderType type, ShShaderSpec spec, ShShaderOutput output) +{ + switch (output) + { + case SH_HLSL9_OUTPUT: + case SH_HLSL11_OUTPUT: + return new TranslatorHLSL(type, spec, output); + default: + return NULL; + } +} + +// +// Delete the compiler made by ConstructCompiler +// +void DeleteCompiler(TCompiler* compiler) +{ + delete compiler; +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/Common.h b/Source/ThirdParty/ANGLE/src/compiler/Common.h new file mode 100644 index 00000000000..532486a95c4 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/Common.h @@ -0,0 +1,77 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef _COMMON_INCLUDED_ +#define _COMMON_INCLUDED_ + +#include +#include +#include +#include + +#include "compiler/PoolAlloc.h" + +struct TSourceLoc { + int first_file; + int first_line; + int last_file; + int last_line; +}; + +// +// Put POOL_ALLOCATOR_NEW_DELETE in base classes to make them use this scheme. +// +#define POOL_ALLOCATOR_NEW_DELETE(A) \ + void* operator new(size_t s) { return (A).allocate(s); } \ + void* operator new(size_t, void *_Where) { return (_Where); } \ + void operator delete(void*) { } \ + void operator delete(void *, void *) { } \ + void* operator new[](size_t s) { return (A).allocate(s); } \ + void* operator new[](size_t, void *_Where) { return (_Where); } \ + void operator delete[](void*) { } \ + void operator delete[](void *, void *) { } + +// +// Pool version of string. +// +typedef pool_allocator TStringAllocator; +typedef std::basic_string , TStringAllocator> TString; +typedef std::basic_ostringstream, TStringAllocator> TStringStream; +inline TString* NewPoolTString(const char* s) +{ + void* memory = GlobalPoolAllocator.allocate(sizeof(TString)); + return new(memory) TString(s); +} + +// +// Persistent string memory. Should only be used for strings that survive +// across compiles. +// +#define TPersistString std::string +#define TPersistStringStream std::ostringstream + +// +// Pool allocator versions of vectors, lists, and maps +// +template class TVector : public std::vector > { +public: + typedef typename std::vector >::size_type size_type; + TVector() : std::vector >() {} + TVector(const pool_allocator& a) : std::vector >(a) {} + TVector(size_type i): std::vector >(i) {} +}; + +template > +class TMap : public std::map > > { +public: + typedef pool_allocator > tAllocator; + + TMap() : std::map() {} + // use correct two-stage name lookup supported in gcc 3.4 and above + TMap(const tAllocator& a) : std::map(std::map::key_compare(), a) {} +}; + +#endif // _COMMON_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/Compiler.cpp b/Source/ThirdParty/ANGLE/src/compiler/Compiler.cpp new file mode 100644 index 00000000000..263ec770222 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/Compiler.cpp @@ -0,0 +1,408 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/BuiltInFunctionEmulator.h" +#include "compiler/DetectCallDepth.h" +#include "compiler/ForLoopUnroll.h" +#include "compiler/Initialize.h" +#include "compiler/InitializeParseContext.h" +#include "compiler/MapLongVariableNames.h" +#include "compiler/ParseHelper.h" +#include "compiler/RenameFunction.h" +#include "compiler/ShHandle.h" +#include "compiler/ValidateLimitations.h" +#include "compiler/VariablePacker.h" +#include "compiler/depgraph/DependencyGraph.h" +#include "compiler/depgraph/DependencyGraphOutput.h" +#include "compiler/timing/RestrictFragmentShaderTiming.h" +#include "compiler/timing/RestrictVertexShaderTiming.h" +#include "third_party/compiler/ArrayBoundsClamper.h" + +bool isWebGLBasedSpec(ShShaderSpec spec) +{ + return spec == SH_WEBGL_SPEC || spec == SH_CSS_SHADERS_SPEC; +} + +namespace { +class TScopedPoolAllocator { +public: + TScopedPoolAllocator(TPoolAllocator* allocator, bool pushPop) + : mAllocator(allocator), mPushPopAllocator(pushPop) { + if (mPushPopAllocator) mAllocator->push(); + SetGlobalPoolAllocator(mAllocator); + } + ~TScopedPoolAllocator() { + SetGlobalPoolAllocator(NULL); + if (mPushPopAllocator) mAllocator->pop(); + } + +private: + TPoolAllocator* mAllocator; + bool mPushPopAllocator; +}; +} // namespace + +TShHandleBase::TShHandleBase() { + allocator.push(); + SetGlobalPoolAllocator(&allocator); +} + +TShHandleBase::~TShHandleBase() { + SetGlobalPoolAllocator(NULL); + allocator.popAll(); +} + +TCompiler::TCompiler(ShShaderType type, ShShaderSpec spec) + : shaderType(type), + shaderSpec(spec), + maxUniformVectors(0), + maxExpressionComplexity(0), + maxCallStackDepth(0), + fragmentPrecisionHigh(false), + clampingStrategy(SH_CLAMP_WITH_CLAMP_INTRINSIC), + builtInFunctionEmulator(type) +{ + longNameMap = LongNameMap::GetInstance(); +} + +TCompiler::~TCompiler() +{ + ASSERT(longNameMap); + longNameMap->Release(); +} + +bool TCompiler::Init(const ShBuiltInResources& resources) +{ + maxUniformVectors = (shaderType == SH_VERTEX_SHADER) ? + resources.MaxVertexUniformVectors : + resources.MaxFragmentUniformVectors; + maxExpressionComplexity = resources.MaxExpressionComplexity; + maxCallStackDepth = resources.MaxCallStackDepth; + TScopedPoolAllocator scopedAlloc(&allocator, false); + + // Generate built-in symbol table. + if (!InitBuiltInSymbolTable(resources)) + return false; + InitExtensionBehavior(resources, extensionBehavior); + fragmentPrecisionHigh = resources.FragmentPrecisionHigh == 1; + + arrayBoundsClamper.SetClampingStrategy(resources.ArrayIndexClampingStrategy); + clampingStrategy = resources.ArrayIndexClampingStrategy; + + hashFunction = resources.HashFunction; + + return true; +} + +bool TCompiler::compile(const char* const shaderStrings[], + size_t numStrings, + int compileOptions) +{ + TScopedPoolAllocator scopedAlloc(&allocator, true); + clearResults(); + + if (numStrings == 0) + return true; + + // If compiling for WebGL, validate loop and indexing as well. + if (isWebGLBasedSpec(shaderSpec)) + compileOptions |= SH_VALIDATE_LOOP_INDEXING; + + // First string is path of source file if flag is set. The actual source follows. + const char* sourcePath = NULL; + size_t firstSource = 0; + if (compileOptions & SH_SOURCE_PATH) + { + sourcePath = shaderStrings[0]; + ++firstSource; + } + + TIntermediate intermediate(infoSink); + TParseContext parseContext(symbolTable, extensionBehavior, intermediate, + shaderType, shaderSpec, compileOptions, true, + sourcePath, infoSink); + parseContext.fragmentPrecisionHigh = fragmentPrecisionHigh; + GlobalParseContext = &parseContext; + + // We preserve symbols at the built-in level from compile-to-compile. + // Start pushing the user-defined symbols at global level. + symbolTable.push(); + if (!symbolTable.atGlobalLevel()) { + infoSink.info.prefix(EPrefixInternalError); + infoSink.info << "Wrong symbol table level"; + } + + // Parse shader. + bool success = + (PaParseStrings(numStrings - firstSource, &shaderStrings[firstSource], NULL, &parseContext) == 0) && + (parseContext.treeRoot != NULL); + if (success) { + TIntermNode* root = parseContext.treeRoot; + success = intermediate.postProcess(root); + + if (success) + success = detectCallDepth(root, infoSink, (compileOptions & SH_LIMIT_CALL_STACK_DEPTH) != 0); + + if (success && (compileOptions & SH_VALIDATE_LOOP_INDEXING)) + success = validateLimitations(root); + + if (success && (compileOptions & SH_TIMING_RESTRICTIONS)) + success = enforceTimingRestrictions(root, (compileOptions & SH_DEPENDENCY_GRAPH) != 0); + + if (success && shaderSpec == SH_CSS_SHADERS_SPEC) + rewriteCSSShader(root); + + // Unroll for-loop markup needs to happen after validateLimitations pass. + if (success && (compileOptions & SH_UNROLL_FOR_LOOP_WITH_INTEGER_INDEX)) + ForLoopUnroll::MarkForLoopsWithIntegerIndicesForUnrolling(root); + + // Built-in function emulation needs to happen after validateLimitations pass. + if (success && (compileOptions & SH_EMULATE_BUILT_IN_FUNCTIONS)) + builtInFunctionEmulator.MarkBuiltInFunctionsForEmulation(root); + + // Clamping uniform array bounds needs to happen after validateLimitations pass. + if (success && (compileOptions & SH_CLAMP_INDIRECT_ARRAY_BOUNDS)) + arrayBoundsClamper.MarkIndirectArrayBoundsForClamping(root); + + // Disallow expressions deemed too complex. + if (success && (compileOptions & SH_LIMIT_EXPRESSION_COMPLEXITY)) + success = limitExpressionComplexity(root); + + // Call mapLongVariableNames() before collectAttribsUniforms() so in + // collectAttribsUniforms() we already have the mapped symbol names and + // we could composite mapped and original variable names. + // Also, if we hash all the names, then no need to do this for long names. + if (success && (compileOptions & SH_MAP_LONG_VARIABLE_NAMES) && hashFunction == NULL) + mapLongVariableNames(root); + + if (success && (compileOptions & SH_ATTRIBUTES_UNIFORMS)) { + collectAttribsUniforms(root); + if (compileOptions & SH_ENFORCE_PACKING_RESTRICTIONS) { + success = enforcePackingRestrictions(); + if (!success) { + infoSink.info.prefix(EPrefixError); + infoSink.info << "too many uniforms"; + } + } + } + + if (success && (compileOptions & SH_INTERMEDIATE_TREE)) + intermediate.outputTree(root); + + if (success && (compileOptions & SH_OBJECT_CODE)) + translate(root); + } + + // Cleanup memory. + intermediate.remove(parseContext.treeRoot); + // Ensure symbol table is returned to the built-in level, + // throwing away all but the built-ins. + while (!symbolTable.atBuiltInLevel()) + symbolTable.pop(); + + return success; +} + +bool TCompiler::InitBuiltInSymbolTable(const ShBuiltInResources &resources) +{ + compileResources = resources; + + assert(symbolTable.isEmpty()); + symbolTable.push(); + + TPublicType integer; + integer.type = EbtInt; + integer.size = 1; + integer.matrix = false; + integer.array = false; + + TPublicType floatingPoint; + floatingPoint.type = EbtFloat; + floatingPoint.size = 1; + floatingPoint.matrix = false; + floatingPoint.array = false; + + switch(shaderType) + { + case SH_FRAGMENT_SHADER: + symbolTable.setDefaultPrecision(integer, EbpMedium); + break; + case SH_VERTEX_SHADER: + symbolTable.setDefaultPrecision(integer, EbpHigh); + symbolTable.setDefaultPrecision(floatingPoint, EbpHigh); + break; + default: assert(false && "Language not supported"); + } + + InsertBuiltInFunctions(shaderType, shaderSpec, resources, symbolTable); + + IdentifyBuiltIns(shaderType, shaderSpec, resources, symbolTable); + + return true; +} + +void TCompiler::clearResults() +{ + arrayBoundsClamper.Cleanup(); + infoSink.info.erase(); + infoSink.obj.erase(); + infoSink.debug.erase(); + + attribs.clear(); + uniforms.clear(); + + builtInFunctionEmulator.Cleanup(); + + nameMap.clear(); +} + +bool TCompiler::detectCallDepth(TIntermNode* root, TInfoSink& infoSink, bool limitCallStackDepth) +{ + DetectCallDepth detect(infoSink, limitCallStackDepth, maxCallStackDepth); + root->traverse(&detect); + switch (detect.detectCallDepth()) { + case DetectCallDepth::kErrorNone: + return true; + case DetectCallDepth::kErrorMissingMain: + infoSink.info.prefix(EPrefixError); + infoSink.info << "Missing main()"; + return false; + case DetectCallDepth::kErrorRecursion: + infoSink.info.prefix(EPrefixError); + infoSink.info << "Function recursion detected"; + return false; + case DetectCallDepth::kErrorMaxDepthExceeded: + infoSink.info.prefix(EPrefixError); + infoSink.info << "Function call stack too deep"; + return false; + default: + UNREACHABLE(); + return false; + } +} + +void TCompiler::rewriteCSSShader(TIntermNode* root) +{ + RenameFunction renamer("main(", "css_main("); + root->traverse(&renamer); +} + +bool TCompiler::validateLimitations(TIntermNode* root) { + ValidateLimitations validate(shaderType, infoSink.info); + root->traverse(&validate); + return validate.numErrors() == 0; +} + +bool TCompiler::enforceTimingRestrictions(TIntermNode* root, bool outputGraph) +{ + if (shaderSpec != SH_WEBGL_SPEC) { + infoSink.info << "Timing restrictions must be enforced under the WebGL spec."; + return false; + } + + if (shaderType == SH_FRAGMENT_SHADER) { + TDependencyGraph graph(root); + + // Output any errors first. + bool success = enforceFragmentShaderTimingRestrictions(graph); + + // Then, output the dependency graph. + if (outputGraph) { + TDependencyGraphOutput output(infoSink.info); + output.outputAllSpanningTrees(graph); + } + + return success; + } + else { + return enforceVertexShaderTimingRestrictions(root); + } +} + +bool TCompiler::limitExpressionComplexity(TIntermNode* root) +{ + TIntermTraverser traverser; + root->traverse(&traverser); + TDependencyGraph graph(root); + + for (TFunctionCallVector::const_iterator iter = graph.beginUserDefinedFunctionCalls(); + iter != graph.endUserDefinedFunctionCalls(); + ++iter) + { + TGraphFunctionCall* samplerSymbol = *iter; + TDependencyGraphTraverser graphTraverser; + samplerSymbol->traverse(&graphTraverser); + } + + if (traverser.getMaxDepth() > maxExpressionComplexity) { + infoSink.info << "Expression too complex."; + return false; + } + return true; +} + +bool TCompiler::enforceFragmentShaderTimingRestrictions(const TDependencyGraph& graph) +{ + RestrictFragmentShaderTiming restrictor(infoSink.info); + restrictor.enforceRestrictions(graph); + return restrictor.numErrors() == 0; +} + +bool TCompiler::enforceVertexShaderTimingRestrictions(TIntermNode* root) +{ + RestrictVertexShaderTiming restrictor(infoSink.info); + restrictor.enforceRestrictions(root); + return restrictor.numErrors() == 0; +} + +void TCompiler::collectAttribsUniforms(TIntermNode* root) +{ + CollectAttribsUniforms collect(attribs, uniforms, hashFunction); + root->traverse(&collect); +} + +bool TCompiler::enforcePackingRestrictions() +{ + VariablePacker packer; + return packer.CheckVariablesWithinPackingLimits(maxUniformVectors, uniforms); +} + +void TCompiler::mapLongVariableNames(TIntermNode* root) +{ + ASSERT(longNameMap); + MapLongVariableNames map(longNameMap); + root->traverse(&map); +} + +int TCompiler::getMappedNameMaxLength() const +{ + return MAX_SHORTENED_IDENTIFIER_SIZE + 1; +} + +const TExtensionBehavior& TCompiler::getExtensionBehavior() const +{ + return extensionBehavior; +} + +const ShBuiltInResources& TCompiler::getResources() const +{ + return compileResources; +} + +const ArrayBoundsClamper& TCompiler::getArrayBoundsClamper() const +{ + return arrayBoundsClamper; +} + +ShArrayIndexClampingStrategy TCompiler::getArrayIndexClampingStrategy() const +{ + return clampingStrategy; +} + +const BuiltInFunctionEmulator& TCompiler::getBuiltInFunctionEmulator() const +{ + return builtInFunctionEmulator; +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/ConstantUnion.h b/Source/ThirdParty/ANGLE/src/compiler/ConstantUnion.h new file mode 100644 index 00000000000..32af4d38b0b --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/ConstantUnion.h @@ -0,0 +1,257 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef _CONSTANT_UNION_INCLUDED_ +#define _CONSTANT_UNION_INCLUDED_ + +#include + +class ConstantUnion { +public: + ConstantUnion() + { + iConst = 0; + type = EbtVoid; + } + + POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator) + void setIConst(int i) {iConst = i; type = EbtInt; } + void setFConst(float f) {fConst = f; type = EbtFloat; } + void setBConst(bool b) {bConst = b; type = EbtBool; } + + int getIConst() { return iConst; } + float getFConst() { return fConst; } + bool getBConst() { return bConst; } + int getIConst() const { return iConst; } + float getFConst() const { return fConst; } + bool getBConst() const { return bConst; } + + bool operator==(const int i) const + { + return i == iConst; + } + + bool operator==(const float f) const + { + return f == fConst; + } + + bool operator==(const bool b) const + { + return b == bConst; + } + + bool operator==(const ConstantUnion& constant) const + { + if (constant.type != type) + return false; + + switch (type) { + case EbtInt: + return constant.iConst == iConst; + case EbtFloat: + return constant.fConst == fConst; + case EbtBool: + return constant.bConst == bConst; + default: + return false; + } + } + + bool operator!=(const int i) const + { + return !operator==(i); + } + + bool operator!=(const float f) const + { + return !operator==(f); + } + + bool operator!=(const bool b) const + { + return !operator==(b); + } + + bool operator!=(const ConstantUnion& constant) const + { + return !operator==(constant); + } + + bool operator>(const ConstantUnion& constant) const + { + assert(type == constant.type); + switch (type) { + case EbtInt: + return iConst > constant.iConst; + case EbtFloat: + return fConst > constant.fConst; + default: + return false; // Invalid operation, handled at semantic analysis + } + } + + bool operator<(const ConstantUnion& constant) const + { + assert(type == constant.type); + switch (type) { + case EbtInt: + return iConst < constant.iConst; + case EbtFloat: + return fConst < constant.fConst; + default: + return false; // Invalid operation, handled at semantic analysis + } + } + + ConstantUnion operator+(const ConstantUnion& constant) const + { + ConstantUnion returnValue; + assert(type == constant.type); + switch (type) { + case EbtInt: returnValue.setIConst(iConst + constant.iConst); break; + case EbtFloat: returnValue.setFConst(fConst + constant.fConst); break; + default: assert(false && "Default missing"); + } + + return returnValue; + } + + ConstantUnion operator-(const ConstantUnion& constant) const + { + ConstantUnion returnValue; + assert(type == constant.type); + switch (type) { + case EbtInt: returnValue.setIConst(iConst - constant.iConst); break; + case EbtFloat: returnValue.setFConst(fConst - constant.fConst); break; + default: assert(false && "Default missing"); + } + + return returnValue; + } + + ConstantUnion operator*(const ConstantUnion& constant) const + { + ConstantUnion returnValue; + assert(type == constant.type); + switch (type) { + case EbtInt: returnValue.setIConst(iConst * constant.iConst); break; + case EbtFloat: returnValue.setFConst(fConst * constant.fConst); break; + default: assert(false && "Default missing"); + } + + return returnValue; + } + + ConstantUnion operator%(const ConstantUnion& constant) const + { + ConstantUnion returnValue; + assert(type == constant.type); + switch (type) { + case EbtInt: returnValue.setIConst(iConst % constant.iConst); break; + default: assert(false && "Default missing"); + } + + return returnValue; + } + + ConstantUnion operator>>(const ConstantUnion& constant) const + { + ConstantUnion returnValue; + assert(type == constant.type); + switch (type) { + case EbtInt: returnValue.setIConst(iConst >> constant.iConst); break; + default: assert(false && "Default missing"); + } + + return returnValue; + } + + ConstantUnion operator<<(const ConstantUnion& constant) const + { + ConstantUnion returnValue; + assert(type == constant.type); + switch (type) { + case EbtInt: returnValue.setIConst(iConst << constant.iConst); break; + default: assert(false && "Default missing"); + } + + return returnValue; + } + + ConstantUnion operator&(const ConstantUnion& constant) const + { + ConstantUnion returnValue; + assert(type == constant.type); + switch (type) { + case EbtInt: returnValue.setIConst(iConst & constant.iConst); break; + default: assert(false && "Default missing"); + } + + return returnValue; + } + + ConstantUnion operator|(const ConstantUnion& constant) const + { + ConstantUnion returnValue; + assert(type == constant.type); + switch (type) { + case EbtInt: returnValue.setIConst(iConst | constant.iConst); break; + default: assert(false && "Default missing"); + } + + return returnValue; + } + + ConstantUnion operator^(const ConstantUnion& constant) const + { + ConstantUnion returnValue; + assert(type == constant.type); + switch (type) { + case EbtInt: returnValue.setIConst(iConst ^ constant.iConst); break; + default: assert(false && "Default missing"); + } + + return returnValue; + } + + ConstantUnion operator&&(const ConstantUnion& constant) const + { + ConstantUnion returnValue; + assert(type == constant.type); + switch (type) { + case EbtBool: returnValue.setBConst(bConst && constant.bConst); break; + default: assert(false && "Default missing"); + } + + return returnValue; + } + + ConstantUnion operator||(const ConstantUnion& constant) const + { + ConstantUnion returnValue; + assert(type == constant.type); + switch (type) { + case EbtBool: returnValue.setBConst(bConst || constant.bConst); break; + default: assert(false && "Default missing"); + } + + return returnValue; + } + + TBasicType getType() const { return type; } +private: + + union { + int iConst; // used for ivec, scalar ints + bool bConst; // used for bvec, scalar bools + float fConst; // used for vec, mat, scalar floats + } ; + + TBasicType type; +}; + +#endif // _CONSTANT_UNION_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/DetectCallDepth.cpp b/Source/ThirdParty/ANGLE/src/compiler/DetectCallDepth.cpp new file mode 100644 index 00000000000..60df52c7151 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/DetectCallDepth.cpp @@ -0,0 +1,185 @@ +// +// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/DetectCallDepth.h" +#include "compiler/InfoSink.h" + +DetectCallDepth::FunctionNode::FunctionNode(const TString& fname) + : name(fname), + visit(PreVisit) +{ +} + +const TString& DetectCallDepth::FunctionNode::getName() const +{ + return name; +} + +void DetectCallDepth::FunctionNode::addCallee( + DetectCallDepth::FunctionNode* callee) +{ + for (size_t i = 0; i < callees.size(); ++i) { + if (callees[i] == callee) + return; + } + callees.push_back(callee); +} + +int DetectCallDepth::FunctionNode::detectCallDepth(DetectCallDepth* detectCallDepth, int depth) +{ + ASSERT(visit == PreVisit); + ASSERT(detectCallDepth); + + int maxDepth = depth; + visit = InVisit; + for (size_t i = 0; i < callees.size(); ++i) { + switch (callees[i]->visit) { + case InVisit: + // cycle detected, i.e., recursion detected. + return kInfiniteCallDepth; + case PostVisit: + break; + case PreVisit: { + // Check before we recurse so we don't go too depth + if (detectCallDepth->checkExceedsMaxDepth(depth)) + return depth; + int callDepth = callees[i]->detectCallDepth(detectCallDepth, depth + 1); + // Check after we recurse so we can exit immediately and provide info. + if (detectCallDepth->checkExceedsMaxDepth(callDepth)) { + detectCallDepth->getInfoSink().info << "<-" << callees[i]->getName(); + return callDepth; + } + maxDepth = std::max(callDepth, maxDepth); + break; + } + default: + UNREACHABLE(); + break; + } + } + visit = PostVisit; + return maxDepth; +} + +void DetectCallDepth::FunctionNode::reset() +{ + visit = PreVisit; +} + +DetectCallDepth::DetectCallDepth(TInfoSink& infoSink, bool limitCallStackDepth, int maxCallStackDepth) + : TIntermTraverser(true, false, true, false), + currentFunction(NULL), + infoSink(infoSink), + maxDepth(limitCallStackDepth ? maxCallStackDepth : FunctionNode::kInfiniteCallDepth) +{ +} + +DetectCallDepth::~DetectCallDepth() +{ + for (size_t i = 0; i < functions.size(); ++i) + delete functions[i]; +} + +bool DetectCallDepth::visitAggregate(Visit visit, TIntermAggregate* node) +{ + switch (node->getOp()) + { + case EOpPrototype: + // Function declaration. + // Don't add FunctionNode here because node->getName() is the + // unmangled function name. + break; + case EOpFunction: { + // Function definition. + if (visit == PreVisit) { + currentFunction = findFunctionByName(node->getName()); + if (currentFunction == NULL) { + currentFunction = new FunctionNode(node->getName()); + functions.push_back(currentFunction); + } + } else if (visit == PostVisit) { + currentFunction = NULL; + } + break; + } + case EOpFunctionCall: { + // Function call. + if (visit == PreVisit) { + FunctionNode* func = findFunctionByName(node->getName()); + if (func == NULL) { + func = new FunctionNode(node->getName()); + functions.push_back(func); + } + if (currentFunction) + currentFunction->addCallee(func); + } + break; + } + default: + break; + } + return true; +} + +bool DetectCallDepth::checkExceedsMaxDepth(int depth) +{ + return depth >= maxDepth; +} + +void DetectCallDepth::resetFunctionNodes() +{ + for (size_t i = 0; i < functions.size(); ++i) { + functions[i]->reset(); + } +} + +DetectCallDepth::ErrorCode DetectCallDepth::detectCallDepthForFunction(FunctionNode* func) +{ + currentFunction = NULL; + resetFunctionNodes(); + + int maxCallDepth = func->detectCallDepth(this, 1); + + if (maxCallDepth == FunctionNode::kInfiniteCallDepth) + return kErrorRecursion; + + if (maxCallDepth >= maxDepth) + return kErrorMaxDepthExceeded; + + return kErrorNone; +} + +DetectCallDepth::ErrorCode DetectCallDepth::detectCallDepth() +{ + if (maxDepth != FunctionNode::kInfiniteCallDepth) { + // Check all functions because the driver may fail on them + // TODO: Before detectingRecursion, strip unused functions. + for (size_t i = 0; i < functions.size(); ++i) { + ErrorCode error = detectCallDepthForFunction(functions[i]); + if (error != kErrorNone) + return error; + } + } else { + FunctionNode* main = findFunctionByName("main("); + if (main == NULL) + return kErrorMissingMain; + + return detectCallDepthForFunction(main); + } + + return kErrorNone; +} + +DetectCallDepth::FunctionNode* DetectCallDepth::findFunctionByName( + const TString& name) +{ + for (size_t i = 0; i < functions.size(); ++i) { + if (functions[i]->getName() == name) + return functions[i]; + } + return NULL; +} + diff --git a/Source/ThirdParty/ANGLE/src/compiler/DetectCallDepth.h b/Source/ThirdParty/ANGLE/src/compiler/DetectCallDepth.h new file mode 100644 index 00000000000..89e85f88f6e --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/DetectCallDepth.h @@ -0,0 +1,80 @@ +// +// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_DETECT_RECURSION_H_ +#define COMPILER_DETECT_RECURSION_H_ + +#include "GLSLANG/ShaderLang.h" + +#include +#include "compiler/intermediate.h" +#include "compiler/VariableInfo.h" + +class TInfoSink; + +// Traverses intermediate tree to detect function recursion. +class DetectCallDepth : public TIntermTraverser { +public: + enum ErrorCode { + kErrorMissingMain, + kErrorRecursion, + kErrorMaxDepthExceeded, + kErrorNone + }; + + DetectCallDepth(TInfoSink& infoSync, bool limitCallStackDepth, int maxCallStackDepth); + ~DetectCallDepth(); + + virtual bool visitAggregate(Visit, TIntermAggregate*); + + bool checkExceedsMaxDepth(int depth); + + ErrorCode detectCallDepth(); + +private: + class FunctionNode { + public: + static const int kInfiniteCallDepth = INT_MAX; + + FunctionNode(const TString& fname); + + const TString& getName() const; + + // If a function is already in the callee list, this becomes a no-op. + void addCallee(FunctionNode* callee); + + // Returns kInifinityCallDepth if recursive function calls are detected. + int detectCallDepth(DetectCallDepth* detectCallDepth, int depth); + + // Reset state. + void reset(); + + private: + // mangled function name is unique. + TString name; + + // functions that are directly called by this function. + TVector callees; + + Visit visit; + }; + + ErrorCode detectCallDepthForFunction(FunctionNode* func); + FunctionNode* findFunctionByName(const TString& name); + void resetFunctionNodes(); + + TInfoSink& getInfoSink() { return infoSink; } + + TVector functions; + FunctionNode* currentFunction; + TInfoSink& infoSink; + int maxDepth; + + DetectCallDepth(const DetectCallDepth&); + void operator=(const DetectCallDepth&); +}; + +#endif // COMPILER_DETECT_RECURSION_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp b/Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp new file mode 100644 index 00000000000..7c3b68a0b30 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp @@ -0,0 +1,139 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// Contains analysis utilities for dealing with HLSL's lack of support for +// the use of intrinsic functions which (implicitly or explicitly) compute +// gradients of functions with discontinuities. +// + +#include "compiler/DetectDiscontinuity.h" + +#include "compiler/ParseHelper.h" + +namespace sh +{ +bool DetectLoopDiscontinuity::traverse(TIntermNode *node) +{ + mLoopDepth = 0; + mLoopDiscontinuity = false; + node->traverse(this); + return mLoopDiscontinuity; +} + +bool DetectLoopDiscontinuity::visitLoop(Visit visit, TIntermLoop *loop) +{ + if (visit == PreVisit) + { + ++mLoopDepth; + } + else if (visit == PostVisit) + { + --mLoopDepth; + } + + return true; +} + +bool DetectLoopDiscontinuity::visitBranch(Visit visit, TIntermBranch *node) +{ + if (mLoopDiscontinuity) + { + return false; + } + + if (!mLoopDepth) + { + return true; + } + + switch (node->getFlowOp()) + { + case EOpKill: + break; + case EOpBreak: + case EOpContinue: + case EOpReturn: + mLoopDiscontinuity = true; + break; + default: UNREACHABLE(); + } + + return !mLoopDiscontinuity; +} + +bool DetectLoopDiscontinuity::visitAggregate(Visit visit, TIntermAggregate *node) +{ + return !mLoopDiscontinuity; +} + +bool containsLoopDiscontinuity(TIntermNode *node) +{ + DetectLoopDiscontinuity detectLoopDiscontinuity; + return detectLoopDiscontinuity.traverse(node); +} + +bool DetectGradientOperation::traverse(TIntermNode *node) +{ + mGradientOperation = false; + node->traverse(this); + return mGradientOperation; +} + +bool DetectGradientOperation::visitUnary(Visit visit, TIntermUnary *node) +{ + if (mGradientOperation) + { + return false; + } + + switch (node->getOp()) + { + case EOpDFdx: + case EOpDFdy: + mGradientOperation = true; + default: + break; + } + + return !mGradientOperation; +} + +bool DetectGradientOperation::visitAggregate(Visit visit, TIntermAggregate *node) +{ + if (mGradientOperation) + { + return false; + } + + if (node->getOp() == EOpFunctionCall) + { + if (!node->isUserDefined()) + { + TString name = TFunction::unmangleName(node->getName()); + + if (name == "texture2D" || + name == "texture2DProj" || + name == "textureCube") + { + mGradientOperation = true; + } + } + else + { + // When a user defined function is called, we have to + // conservatively assume it to contain gradient operations + mGradientOperation = true; + } + } + + return !mGradientOperation; +} + +bool containsGradientOperation(TIntermNode *node) +{ + DetectGradientOperation detectGradientOperation; + return detectGradientOperation.traverse(node); +} +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.h b/Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.h new file mode 100644 index 00000000000..e5520bd5b02 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.h @@ -0,0 +1,52 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// Contains analysis utilities for dealing with HLSL's lack of support for +// the use of intrinsic functions which (implicitly or explicitly) compute +// gradients of functions with discontinuities. +// + +#ifndef COMPILER_DETECTDISCONTINUITY_H_ +#define COMPILER_DETECTDISCONTINUITY_H_ + +#include "compiler/intermediate.h" + +namespace sh +{ +// Checks whether a loop can run for a variable number of iterations +class DetectLoopDiscontinuity : public TIntermTraverser +{ + public: + bool traverse(TIntermNode *node); + + protected: + bool visitBranch(Visit visit, TIntermBranch *node); + bool visitLoop(Visit visit, TIntermLoop *loop); + bool visitAggregate(Visit visit, TIntermAggregate *node); + + int mLoopDepth; + bool mLoopDiscontinuity; +}; + +bool containsLoopDiscontinuity(TIntermNode *node); + +// Checks for intrinsic functions which compute gradients +class DetectGradientOperation : public TIntermTraverser +{ + public: + bool traverse(TIntermNode *node); + + protected: + bool visitUnary(Visit visit, TIntermUnary *node); + bool visitAggregate(Visit visit, TIntermAggregate *node); + + bool mGradientOperation; +}; + +bool containsGradientOperation(TIntermNode *node); + +} + +#endif // COMPILER_DETECTDISCONTINUITY_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/Diagnostics.cpp b/Source/ThirdParty/ANGLE/src/compiler/Diagnostics.cpp new file mode 100644 index 00000000000..8a38c41a654 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/Diagnostics.cpp @@ -0,0 +1,63 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/Diagnostics.h" + +#include "compiler/debug.h" +#include "compiler/InfoSink.h" +#include "compiler/preprocessor/SourceLocation.h" + +TDiagnostics::TDiagnostics(TInfoSink& infoSink) : + mInfoSink(infoSink), + mNumErrors(0), + mNumWarnings(0) +{ +} + +TDiagnostics::~TDiagnostics() +{ +} + +void TDiagnostics::writeInfo(Severity severity, + const pp::SourceLocation& loc, + const std::string& reason, + const std::string& token, + const std::string& extra) +{ + TPrefixType prefix = EPrefixNone; + switch (severity) + { + case ERROR: + ++mNumErrors; + prefix = EPrefixError; + break; + case WARNING: + ++mNumWarnings; + prefix = EPrefixWarning; + break; + default: + UNREACHABLE(); + break; + } + + TInfoSinkBase& sink = mInfoSink.info; + /* VC++ format: file(linenum) : error #: 'token' : extrainfo */ + sink.prefix(prefix); + sink.location(loc.file, loc.line); + sink << "'" << token << "' : " << reason << " " << extra << "\n"; +} + +void TDiagnostics::writeDebug(const std::string& str) +{ + mInfoSink.debug << str; +} + +void TDiagnostics::print(ID id, + const pp::SourceLocation& loc, + const std::string& text) +{ + writeInfo(severity(id), loc, message(id), text, ""); +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/Diagnostics.h b/Source/ThirdParty/ANGLE/src/compiler/Diagnostics.h new file mode 100644 index 00000000000..cb71bb12042 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/Diagnostics.h @@ -0,0 +1,44 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_DIAGNOSTICS_H_ +#define COMPILER_DIAGNOSTICS_H_ + +#include "compiler/preprocessor/DiagnosticsBase.h" + +class TInfoSink; + +class TDiagnostics : public pp::Diagnostics +{ + public: + TDiagnostics(TInfoSink& infoSink); + virtual ~TDiagnostics(); + + TInfoSink& infoSink() { return mInfoSink; } + + int numErrors() const { return mNumErrors; } + int numWarnings() const { return mNumWarnings; } + + void writeInfo(Severity severity, + const pp::SourceLocation& loc, + const std::string& reason, + const std::string& token, + const std::string& extra); + + void writeDebug(const std::string& str); + + protected: + virtual void print(ID id, + const pp::SourceLocation& loc, + const std::string& text); + + private: + TInfoSink& mInfoSink; + int mNumErrors; + int mNumWarnings; +}; + +#endif // COMPILER_DIAGNOSTICS_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/DirectiveHandler.cpp b/Source/ThirdParty/ANGLE/src/compiler/DirectiveHandler.cpp new file mode 100644 index 00000000000..d1f6ab3af5b --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/DirectiveHandler.cpp @@ -0,0 +1,161 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/DirectiveHandler.h" + +#include + +#include "compiler/debug.h" +#include "compiler/Diagnostics.h" + +static TBehavior getBehavior(const std::string& str) +{ + static const std::string kRequire("require"); + static const std::string kEnable("enable"); + static const std::string kDisable("disable"); + static const std::string kWarn("warn"); + + if (str == kRequire) return EBhRequire; + else if (str == kEnable) return EBhEnable; + else if (str == kDisable) return EBhDisable; + else if (str == kWarn) return EBhWarn; + return EBhUndefined; +} + +TDirectiveHandler::TDirectiveHandler(TExtensionBehavior& extBehavior, + TDiagnostics& diagnostics) + : mExtensionBehavior(extBehavior), + mDiagnostics(diagnostics) +{ +} + +TDirectiveHandler::~TDirectiveHandler() +{ +} + +void TDirectiveHandler::handleError(const pp::SourceLocation& loc, + const std::string& msg) +{ + mDiagnostics.writeInfo(pp::Diagnostics::ERROR, loc, msg, "", ""); +} + +void TDirectiveHandler::handlePragma(const pp::SourceLocation& loc, + const std::string& name, + const std::string& value) +{ + static const std::string kSTDGL("STDGL"); + static const std::string kOptimize("optimize"); + static const std::string kDebug("debug"); + static const std::string kOn("on"); + static const std::string kOff("off"); + + bool invalidValue = false; + if (name == kSTDGL) + { + // The STDGL pragma is used to reserve pragmas for use by future + // revisions of GLSL. Ignore it. + return; + } + else if (name == kOptimize) + { + if (value == kOn) mPragma.optimize = true; + else if (value == kOff) mPragma.optimize = false; + else invalidValue = true; + } + else if (name == kDebug) + { + if (value == kOn) mPragma.debug = true; + else if (value == kOff) mPragma.debug = false; + else invalidValue = true; + } + else + { + mDiagnostics.report(pp::Diagnostics::UNRECOGNIZED_PRAGMA, loc, name); + return; + } + + if (invalidValue) + mDiagnostics.writeInfo(pp::Diagnostics::ERROR, loc, + "invalid pragma value", value, + "'on' or 'off' expected"); +} + +void TDirectiveHandler::handleExtension(const pp::SourceLocation& loc, + const std::string& name, + const std::string& behavior) +{ + static const std::string kExtAll("all"); + + TBehavior behaviorVal = getBehavior(behavior); + if (behaviorVal == EBhUndefined) + { + mDiagnostics.writeInfo(pp::Diagnostics::ERROR, loc, + "behavior", name, "invalid"); + return; + } + + if (name == kExtAll) + { + if (behaviorVal == EBhRequire) + { + mDiagnostics.writeInfo(pp::Diagnostics::ERROR, loc, + "extension", name, + "cannot have 'require' behavior"); + } + else if (behaviorVal == EBhEnable) + { + mDiagnostics.writeInfo(pp::Diagnostics::ERROR, loc, + "extension", name, + "cannot have 'enable' behavior"); + } + else + { + for (TExtensionBehavior::iterator iter = mExtensionBehavior.begin(); + iter != mExtensionBehavior.end(); ++iter) + iter->second = behaviorVal; + } + return; + } + + TExtensionBehavior::iterator iter = mExtensionBehavior.find(name); + if (iter != mExtensionBehavior.end()) + { + iter->second = behaviorVal; + return; + } + + pp::Diagnostics::Severity severity = pp::Diagnostics::ERROR; + switch (behaviorVal) { + case EBhRequire: + severity = pp::Diagnostics::ERROR; + break; + case EBhEnable: + case EBhWarn: + case EBhDisable: + severity = pp::Diagnostics::WARNING; + break; + default: + UNREACHABLE(); + break; + } + mDiagnostics.writeInfo(severity, loc, + "extension", name, "is not supported"); +} + +void TDirectiveHandler::handleVersion(const pp::SourceLocation& loc, + int version) +{ + static const int kVersion = 100; + + if (version != kVersion) + { + std::stringstream stream; + stream << version; + std::string str = stream.str(); + mDiagnostics.writeInfo(pp::Diagnostics::ERROR, loc, + "version number", str, "not supported"); + } +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/DirectiveHandler.h b/Source/ThirdParty/ANGLE/src/compiler/DirectiveHandler.h new file mode 100644 index 00000000000..95ca59d6fe5 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/DirectiveHandler.h @@ -0,0 +1,46 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_DIRECTIVE_HANDLER_H_ +#define COMPILER_DIRECTIVE_HANDLER_H_ + +#include "compiler/ExtensionBehavior.h" +#include "compiler/Pragma.h" +#include "compiler/preprocessor/DirectiveHandlerBase.h" + +class TDiagnostics; + +class TDirectiveHandler : public pp::DirectiveHandler +{ + public: + TDirectiveHandler(TExtensionBehavior& extBehavior, + TDiagnostics& diagnostics); + virtual ~TDirectiveHandler(); + + const TPragma& pragma() const { return mPragma; } + const TExtensionBehavior& extensionBehavior() const { return mExtensionBehavior; } + + virtual void handleError(const pp::SourceLocation& loc, + const std::string& msg); + + virtual void handlePragma(const pp::SourceLocation& loc, + const std::string& name, + const std::string& value); + + virtual void handleExtension(const pp::SourceLocation& loc, + const std::string& name, + const std::string& behavior); + + virtual void handleVersion(const pp::SourceLocation& loc, + int version); + + private: + TPragma mPragma; + TExtensionBehavior& mExtensionBehavior; + TDiagnostics& mDiagnostics; +}; + +#endif // COMPILER_DIRECTIVE_HANDLER_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/ExtensionBehavior.h b/Source/ThirdParty/ANGLE/src/compiler/ExtensionBehavior.h new file mode 100644 index 00000000000..5c1595fb212 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/ExtensionBehavior.h @@ -0,0 +1,37 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef _EXTENSION_BEHAVIOR_INCLUDED_ +#define _EXTENSION_BEHAVIOR_INCLUDED_ + +#include +#include + +typedef enum +{ + EBhRequire, + EBhEnable, + EBhWarn, + EBhDisable, + EBhUndefined +} TBehavior; + +inline const char* getBehaviorString(TBehavior b) +{ + switch(b) + { + case EBhRequire: return "require"; + case EBhEnable: return "enable"; + case EBhWarn: return "warn"; + case EBhDisable: return "disable"; + default: return NULL; + } +} + +// Mapping between extension name and behavior. +typedef std::map TExtensionBehavior; + +#endif // _EXTENSION_TABLE_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/ForLoopUnroll.cpp b/Source/ThirdParty/ANGLE/src/compiler/ForLoopUnroll.cpp new file mode 100644 index 00000000000..27a13eababb --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/ForLoopUnroll.cpp @@ -0,0 +1,215 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/ForLoopUnroll.h" + +namespace { + +class IntegerForLoopUnrollMarker : public TIntermTraverser { +public: + + virtual bool visitLoop(Visit, TIntermLoop* node) + { + // This is called after ValidateLimitations pass, so all the ASSERT + // should never fail. + // See ValidateLimitations::validateForLoopInit(). + ASSERT(node); + ASSERT(node->getType() == ELoopFor); + ASSERT(node->getInit()); + TIntermAggregate* decl = node->getInit()->getAsAggregate(); + ASSERT(decl && decl->getOp() == EOpDeclaration); + TIntermSequence& declSeq = decl->getSequence(); + ASSERT(declSeq.size() == 1); + TIntermBinary* declInit = declSeq[0]->getAsBinaryNode(); + ASSERT(declInit && declInit->getOp() == EOpInitialize); + ASSERT(declInit->getLeft()); + TIntermSymbol* symbol = declInit->getLeft()->getAsSymbolNode(); + ASSERT(symbol); + TBasicType type = symbol->getBasicType(); + ASSERT(type == EbtInt || type == EbtFloat); + if (type == EbtInt) + node->setUnrollFlag(true); + return true; + } + +}; + +} // anonymous namepsace + +void ForLoopUnroll::FillLoopIndexInfo(TIntermLoop* node, TLoopIndexInfo& info) +{ + ASSERT(node->getType() == ELoopFor); + ASSERT(node->getUnrollFlag()); + + TIntermNode* init = node->getInit(); + ASSERT(init != NULL); + TIntermAggregate* decl = init->getAsAggregate(); + ASSERT((decl != NULL) && (decl->getOp() == EOpDeclaration)); + TIntermSequence& declSeq = decl->getSequence(); + ASSERT(declSeq.size() == 1); + TIntermBinary* declInit = declSeq[0]->getAsBinaryNode(); + ASSERT((declInit != NULL) && (declInit->getOp() == EOpInitialize)); + TIntermSymbol* symbol = declInit->getLeft()->getAsSymbolNode(); + ASSERT(symbol != NULL); + ASSERT(symbol->getBasicType() == EbtInt); + + info.id = symbol->getId(); + + ASSERT(declInit->getRight() != NULL); + TIntermConstantUnion* initNode = declInit->getRight()->getAsConstantUnion(); + ASSERT(initNode != NULL); + + info.initValue = evaluateIntConstant(initNode); + info.currentValue = info.initValue; + + TIntermNode* cond = node->getCondition(); + ASSERT(cond != NULL); + TIntermBinary* binOp = cond->getAsBinaryNode(); + ASSERT(binOp != NULL); + ASSERT(binOp->getRight() != NULL); + ASSERT(binOp->getRight()->getAsConstantUnion() != NULL); + + info.incrementValue = getLoopIncrement(node); + info.stopValue = evaluateIntConstant( + binOp->getRight()->getAsConstantUnion()); + info.op = binOp->getOp(); +} + +void ForLoopUnroll::Step() +{ + ASSERT(mLoopIndexStack.size() > 0); + TLoopIndexInfo& info = mLoopIndexStack[mLoopIndexStack.size() - 1]; + info.currentValue += info.incrementValue; +} + +bool ForLoopUnroll::SatisfiesLoopCondition() +{ + ASSERT(mLoopIndexStack.size() > 0); + TLoopIndexInfo& info = mLoopIndexStack[mLoopIndexStack.size() - 1]; + // Relational operator is one of: > >= < <= == or !=. + switch (info.op) { + case EOpEqual: + return (info.currentValue == info.stopValue); + case EOpNotEqual: + return (info.currentValue != info.stopValue); + case EOpLessThan: + return (info.currentValue < info.stopValue); + case EOpGreaterThan: + return (info.currentValue > info.stopValue); + case EOpLessThanEqual: + return (info.currentValue <= info.stopValue); + case EOpGreaterThanEqual: + return (info.currentValue >= info.stopValue); + default: + UNREACHABLE(); + } + return false; +} + +bool ForLoopUnroll::NeedsToReplaceSymbolWithValue(TIntermSymbol* symbol) +{ + for (TVector::iterator i = mLoopIndexStack.begin(); + i != mLoopIndexStack.end(); + ++i) { + if (i->id == symbol->getId()) + return true; + } + return false; +} + +int ForLoopUnroll::GetLoopIndexValue(TIntermSymbol* symbol) +{ + for (TVector::iterator i = mLoopIndexStack.begin(); + i != mLoopIndexStack.end(); + ++i) { + if (i->id == symbol->getId()) + return i->currentValue; + } + UNREACHABLE(); + return false; +} + +void ForLoopUnroll::Push(TLoopIndexInfo& info) +{ + mLoopIndexStack.push_back(info); +} + +void ForLoopUnroll::Pop() +{ + mLoopIndexStack.pop_back(); +} + +// static +void ForLoopUnroll::MarkForLoopsWithIntegerIndicesForUnrolling( + TIntermNode* root) +{ + ASSERT(root); + + IntegerForLoopUnrollMarker marker; + root->traverse(&marker); +} + +int ForLoopUnroll::getLoopIncrement(TIntermLoop* node) +{ + TIntermNode* expr = node->getExpression(); + ASSERT(expr != NULL); + // for expression has one of the following forms: + // loop_index++ + // loop_index-- + // loop_index += constant_expression + // loop_index -= constant_expression + // ++loop_index + // --loop_index + // The last two forms are not specified in the spec, but I am assuming + // its an oversight. + TIntermUnary* unOp = expr->getAsUnaryNode(); + TIntermBinary* binOp = unOp ? NULL : expr->getAsBinaryNode(); + + TOperator op = EOpNull; + TIntermConstantUnion* incrementNode = NULL; + if (unOp != NULL) { + op = unOp->getOp(); + } else if (binOp != NULL) { + op = binOp->getOp(); + ASSERT(binOp->getRight() != NULL); + incrementNode = binOp->getRight()->getAsConstantUnion(); + ASSERT(incrementNode != NULL); + } + + int increment = 0; + // The operator is one of: ++ -- += -=. + switch (op) { + case EOpPostIncrement: + case EOpPreIncrement: + ASSERT((unOp != NULL) && (binOp == NULL)); + increment = 1; + break; + case EOpPostDecrement: + case EOpPreDecrement: + ASSERT((unOp != NULL) && (binOp == NULL)); + increment = -1; + break; + case EOpAddAssign: + ASSERT((unOp == NULL) && (binOp != NULL)); + increment = evaluateIntConstant(incrementNode); + break; + case EOpSubAssign: + ASSERT((unOp == NULL) && (binOp != NULL)); + increment = - evaluateIntConstant(incrementNode); + break; + default: + ASSERT(false); + } + + return increment; +} + +int ForLoopUnroll::evaluateIntConstant(TIntermConstantUnion* node) +{ + ASSERT((node != NULL) && (node->getUnionArrayPointer() != NULL)); + return node->getIConst(0); +} + diff --git a/Source/ThirdParty/ANGLE/src/compiler/ForLoopUnroll.h b/Source/ThirdParty/ANGLE/src/compiler/ForLoopUnroll.h new file mode 100644 index 00000000000..e800e25b1f0 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/ForLoopUnroll.h @@ -0,0 +1,48 @@ +// +// Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/intermediate.h" + +struct TLoopIndexInfo { + int id; + int initValue; + int stopValue; + int incrementValue; + TOperator op; + int currentValue; +}; + +class ForLoopUnroll { +public: + ForLoopUnroll() { } + + void FillLoopIndexInfo(TIntermLoop* node, TLoopIndexInfo& info); + + // Update the info.currentValue for the next loop iteration. + void Step(); + + // Return false if loop condition is no longer satisfied. + bool SatisfiesLoopCondition(); + + // Check if the symbol is the index of a loop that's unrolled. + bool NeedsToReplaceSymbolWithValue(TIntermSymbol* symbol); + + // Return the current value of a given loop index symbol. + int GetLoopIndexValue(TIntermSymbol* symbol); + + void Push(TLoopIndexInfo& info); + void Pop(); + + static void MarkForLoopsWithIntegerIndicesForUnrolling(TIntermNode* root); + +private: + int getLoopIncrement(TIntermLoop* node); + + int evaluateIntConstant(TIntermConstantUnion* node); + + TVector mLoopIndexStack; +}; + diff --git a/Source/ThirdParty/ANGLE/src/compiler/HashNames.h b/Source/ThirdParty/ANGLE/src/compiler/HashNames.h new file mode 100644 index 00000000000..d2141e2d853 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/HashNames.h @@ -0,0 +1,19 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_HASH_NAMES_H_ +#define COMPILER_HASH_NAMES_H_ + +#include + +#include "compiler/intermediate.h" +#include "GLSLANG/ShaderLang.h" + +#define HASHED_NAME_PREFIX "webgl_" + +typedef std::map NameMap; + +#endif // COMPILER_HASH_NAMES_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/InfoSink.cpp b/Source/ThirdParty/ANGLE/src/compiler/InfoSink.cpp new file mode 100644 index 00000000000..d20a6c0175a --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/InfoSink.cpp @@ -0,0 +1,54 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/InfoSink.h" + +void TInfoSinkBase::prefix(TPrefixType p) { + switch(p) { + case EPrefixNone: + break; + case EPrefixWarning: + sink.append("WARNING: "); + break; + case EPrefixError: + sink.append("ERROR: "); + break; + case EPrefixInternalError: + sink.append("INTERNAL ERROR: "); + break; + case EPrefixUnimplemented: + sink.append("UNIMPLEMENTED: "); + break; + case EPrefixNote: + sink.append("NOTE: "); + break; + default: + sink.append("UNKOWN ERROR: "); + break; + } +} + +void TInfoSinkBase::location(int file, int line) { + TPersistStringStream stream; + if (line) + stream << file << ":" << line; + else + stream << file << ":? "; + stream << ": "; + + sink.append(stream.str()); +} + +void TInfoSinkBase::location(const TSourceLoc& loc) { + location(loc.first_file, loc.first_line); +} + +void TInfoSinkBase::message(TPrefixType p, const TSourceLoc& loc, const char* m) { + prefix(p); + location(loc); + sink.append(m); + sink.append("\n"); +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/InfoSink.h b/Source/ThirdParty/ANGLE/src/compiler/InfoSink.h new file mode 100644 index 00000000000..68888381422 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/InfoSink.h @@ -0,0 +1,115 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef _INFOSINK_INCLUDED_ +#define _INFOSINK_INCLUDED_ + +#include +#include "compiler/Common.h" + +// Returns the fractional part of the given floating-point number. +inline float fractionalPart(float f) { + float intPart = 0.0f; + return modff(f, &intPart); +} + +// +// TPrefixType is used to centralize how info log messages start. +// See below. +// +enum TPrefixType { + EPrefixNone, + EPrefixWarning, + EPrefixError, + EPrefixInternalError, + EPrefixUnimplemented, + EPrefixNote +}; + +// +// Encapsulate info logs for all objects that have them. +// +// The methods are a general set of tools for getting a variety of +// messages and types inserted into the log. +// +class TInfoSinkBase { +public: + TInfoSinkBase() {} + + template + TInfoSinkBase& operator<<(const T& t) { + TPersistStringStream stream; + stream << t; + sink.append(stream.str()); + return *this; + } + // Override << operator for specific types. It is faster to append strings + // and characters directly to the sink. + TInfoSinkBase& operator<<(char c) { + sink.append(1, c); + return *this; + } + TInfoSinkBase& operator<<(const char* str) { + sink.append(str); + return *this; + } + TInfoSinkBase& operator<<(const TPersistString& str) { + sink.append(str); + return *this; + } + TInfoSinkBase& operator<<(const TString& str) { + sink.append(str.c_str()); + return *this; + } + // Make sure floats are written with correct precision. + TInfoSinkBase& operator<<(float f) { + // Make sure that at least one decimal point is written. If a number + // does not have a fractional part, the default precision format does + // not write the decimal portion which gets interpreted as integer by + // the compiler. + TPersistStringStream stream; + if (fractionalPart(f) == 0.0f) { + stream.precision(1); + stream << std::showpoint << std::fixed << f; + } else { + stream.unsetf(std::ios::fixed); + stream.unsetf(std::ios::scientific); + stream.precision(8); + stream << f; + } + sink.append(stream.str()); + return *this; + } + // Write boolean values as their names instead of integral value. + TInfoSinkBase& operator<<(bool b) { + const char* str = b ? "true" : "false"; + sink.append(str); + return *this; + } + + void erase() { sink.clear(); } + int size() { return static_cast(sink.size()); } + + const TPersistString& str() const { return sink; } + const char* c_str() const { return sink.c_str(); } + + void prefix(TPrefixType p); + void location(int file, int line); + void location(const TSourceLoc& loc); + void message(TPrefixType p, const TSourceLoc& loc, const char* m); + +private: + TPersistString sink; +}; + +class TInfoSink { +public: + TInfoSinkBase info; + TInfoSinkBase debug; + TInfoSinkBase obj; +}; + +#endif // _INFOSINK_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/Initialize.cpp b/Source/ThirdParty/ANGLE/src/compiler/Initialize.cpp new file mode 100644 index 00000000000..2cdbe17aa6d --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/Initialize.cpp @@ -0,0 +1,564 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// +// Create strings that declare built-in definitions, add built-ins that +// cannot be expressed in the files, and establish mappings between +// built-in functions and operators. +// + +#include "compiler/Initialize.h" + +#include "compiler/intermediate.h" + +void InsertBuiltInFunctions(ShShaderType type, ShShaderSpec spec, const ShBuiltInResources &resources, TSymbolTable &symbolTable) +{ + TType *float1 = new TType(EbtFloat, EbpUndefined, EvqGlobal, 1); + TType *float2 = new TType(EbtFloat, EbpUndefined, EvqGlobal, 2); + TType *float3 = new TType(EbtFloat, EbpUndefined, EvqGlobal, 3); + TType *float4 = new TType(EbtFloat, EbpUndefined, EvqGlobal, 4); + + TType *int2 = new TType(EbtInt, EbpUndefined, EvqGlobal, 2); + TType *int3 = new TType(EbtInt, EbpUndefined, EvqGlobal, 3); + TType *int4 = new TType(EbtInt, EbpUndefined, EvqGlobal, 4); + + // + // Angle and Trigonometric Functions. + // + symbolTable.insertBuiltIn(float1, "radians", float1); + symbolTable.insertBuiltIn(float2, "radians", float2); + symbolTable.insertBuiltIn(float3, "radians", float3); + symbolTable.insertBuiltIn(float4, "radians", float4); + + symbolTable.insertBuiltIn(float1, "degrees", float1); + symbolTable.insertBuiltIn(float2, "degrees", float2); + symbolTable.insertBuiltIn(float3, "degrees", float3); + symbolTable.insertBuiltIn(float4, "degrees", float4); + + symbolTable.insertBuiltIn(float1, "sin", float1); + symbolTable.insertBuiltIn(float2, "sin", float2); + symbolTable.insertBuiltIn(float3, "sin", float3); + symbolTable.insertBuiltIn(float4, "sin", float4); + + symbolTable.insertBuiltIn(float1, "cos", float1); + symbolTable.insertBuiltIn(float2, "cos", float2); + symbolTable.insertBuiltIn(float3, "cos", float3); + symbolTable.insertBuiltIn(float4, "cos", float4); + + symbolTable.insertBuiltIn(float1, "tan", float1); + symbolTable.insertBuiltIn(float2, "tan", float2); + symbolTable.insertBuiltIn(float3, "tan", float3); + symbolTable.insertBuiltIn(float4, "tan", float4); + + symbolTable.insertBuiltIn(float1, "asin", float1); + symbolTable.insertBuiltIn(float2, "asin", float2); + symbolTable.insertBuiltIn(float3, "asin", float3); + symbolTable.insertBuiltIn(float4, "asin", float4); + + symbolTable.insertBuiltIn(float1, "acos", float1); + symbolTable.insertBuiltIn(float2, "acos", float2); + symbolTable.insertBuiltIn(float3, "acos", float3); + symbolTable.insertBuiltIn(float4, "acos", float4); + + symbolTable.insertBuiltIn(float1, "atan", float1, float1); + symbolTable.insertBuiltIn(float2, "atan", float2, float2); + symbolTable.insertBuiltIn(float3, "atan", float3, float3); + symbolTable.insertBuiltIn(float4, "atan", float4, float4); + + symbolTable.insertBuiltIn(float1, "atan", float1); + symbolTable.insertBuiltIn(float2, "atan", float2); + symbolTable.insertBuiltIn(float3, "atan", float3); + symbolTable.insertBuiltIn(float4, "atan", float4); + + // + // Exponential Functions. + // + symbolTable.insertBuiltIn(float1, "pow", float1, float1); + symbolTable.insertBuiltIn(float2, "pow", float2, float2); + symbolTable.insertBuiltIn(float3, "pow", float3, float3); + symbolTable.insertBuiltIn(float4, "pow", float4, float4); + + symbolTable.insertBuiltIn(float1, "exp", float1); + symbolTable.insertBuiltIn(float2, "exp", float2); + symbolTable.insertBuiltIn(float3, "exp", float3); + symbolTable.insertBuiltIn(float4, "exp", float4); + + symbolTable.insertBuiltIn(float1, "log", float1); + symbolTable.insertBuiltIn(float2, "log", float2); + symbolTable.insertBuiltIn(float3, "log", float3); + symbolTable.insertBuiltIn(float4, "log", float4); + + symbolTable.insertBuiltIn(float1, "exp2", float1); + symbolTable.insertBuiltIn(float2, "exp2", float2); + symbolTable.insertBuiltIn(float3, "exp2", float3); + symbolTable.insertBuiltIn(float4, "exp2", float4); + + symbolTable.insertBuiltIn(float1, "log2", float1); + symbolTable.insertBuiltIn(float2, "log2", float2); + symbolTable.insertBuiltIn(float3, "log2", float3); + symbolTable.insertBuiltIn(float4, "log2", float4); + + symbolTable.insertBuiltIn(float1, "sqrt", float1); + symbolTable.insertBuiltIn(float2, "sqrt", float2); + symbolTable.insertBuiltIn(float3, "sqrt", float3); + symbolTable.insertBuiltIn(float4, "sqrt", float4); + + symbolTable.insertBuiltIn(float1, "inversesqrt", float1); + symbolTable.insertBuiltIn(float2, "inversesqrt", float2); + symbolTable.insertBuiltIn(float3, "inversesqrt", float3); + symbolTable.insertBuiltIn(float4, "inversesqrt", float4); + + // + // Common Functions. + // + symbolTable.insertBuiltIn(float1, "abs", float1); + symbolTable.insertBuiltIn(float2, "abs", float2); + symbolTable.insertBuiltIn(float3, "abs", float3); + symbolTable.insertBuiltIn(float4, "abs", float4); + + symbolTable.insertBuiltIn(float1, "sign", float1); + symbolTable.insertBuiltIn(float2, "sign", float2); + symbolTable.insertBuiltIn(float3, "sign", float3); + symbolTable.insertBuiltIn(float4, "sign", float4); + + symbolTable.insertBuiltIn(float1, "floor", float1); + symbolTable.insertBuiltIn(float2, "floor", float2); + symbolTable.insertBuiltIn(float3, "floor", float3); + symbolTable.insertBuiltIn(float4, "floor", float4); + + symbolTable.insertBuiltIn(float1, "ceil", float1); + symbolTable.insertBuiltIn(float2, "ceil", float2); + symbolTable.insertBuiltIn(float3, "ceil", float3); + symbolTable.insertBuiltIn(float4, "ceil", float4); + + symbolTable.insertBuiltIn(float1, "fract", float1); + symbolTable.insertBuiltIn(float2, "fract", float2); + symbolTable.insertBuiltIn(float3, "fract", float3); + symbolTable.insertBuiltIn(float4, "fract", float4); + + symbolTable.insertBuiltIn(float1, "mod", float1, float1); + symbolTable.insertBuiltIn(float2, "mod", float2, float1); + symbolTable.insertBuiltIn(float3, "mod", float3, float1); + symbolTable.insertBuiltIn(float4, "mod", float4, float1); + symbolTable.insertBuiltIn(float2, "mod", float2, float2); + symbolTable.insertBuiltIn(float3, "mod", float3, float3); + symbolTable.insertBuiltIn(float4, "mod", float4, float4); + + symbolTable.insertBuiltIn(float1, "min", float1, float1); + symbolTable.insertBuiltIn(float2, "min", float2, float1); + symbolTable.insertBuiltIn(float3, "min", float3, float1); + symbolTable.insertBuiltIn(float4, "min", float4, float1); + symbolTable.insertBuiltIn(float2, "min", float2, float2); + symbolTable.insertBuiltIn(float3, "min", float3, float3); + symbolTable.insertBuiltIn(float4, "min", float4, float4); + + symbolTable.insertBuiltIn(float1, "max", float1, float1); + symbolTable.insertBuiltIn(float2, "max", float2, float1); + symbolTable.insertBuiltIn(float3, "max", float3, float1); + symbolTable.insertBuiltIn(float4, "max", float4, float1); + symbolTable.insertBuiltIn(float2, "max", float2, float2); + symbolTable.insertBuiltIn(float3, "max", float3, float3); + symbolTable.insertBuiltIn(float4, "max", float4, float4); + + symbolTable.insertBuiltIn(float1, "clamp", float1, float1, float1); + symbolTable.insertBuiltIn(float2, "clamp", float2, float1, float1); + symbolTable.insertBuiltIn(float3, "clamp", float3, float1, float1); + symbolTable.insertBuiltIn(float4, "clamp", float4, float1, float1); + symbolTable.insertBuiltIn(float2, "clamp", float2, float2, float2); + symbolTable.insertBuiltIn(float3, "clamp", float3, float3, float3); + symbolTable.insertBuiltIn(float4, "clamp", float4, float4, float4); + + symbolTable.insertBuiltIn(float1, "mix", float1, float1, float1); + symbolTable.insertBuiltIn(float2, "mix", float2, float2, float1); + symbolTable.insertBuiltIn(float3, "mix", float3, float3, float1); + symbolTable.insertBuiltIn(float4, "mix", float4, float4, float1); + symbolTable.insertBuiltIn(float2, "mix", float2, float2, float2); + symbolTable.insertBuiltIn(float3, "mix", float3, float3, float3); + symbolTable.insertBuiltIn(float4, "mix", float4, float4, float4); + + symbolTable.insertBuiltIn(float1, "step", float1, float1); + symbolTable.insertBuiltIn(float2, "step", float2, float2); + symbolTable.insertBuiltIn(float3, "step", float3, float3); + symbolTable.insertBuiltIn(float4, "step", float4, float4); + symbolTable.insertBuiltIn(float2, "step", float1, float2); + symbolTable.insertBuiltIn(float3, "step", float1, float3); + symbolTable.insertBuiltIn(float4, "step", float1, float4); + + symbolTable.insertBuiltIn(float1, "smoothstep", float1, float1, float1); + symbolTable.insertBuiltIn(float2, "smoothstep", float2, float2, float2); + symbolTable.insertBuiltIn(float3, "smoothstep", float3, float3, float3); + symbolTable.insertBuiltIn(float4, "smoothstep", float4, float4, float4); + symbolTable.insertBuiltIn(float2, "smoothstep", float1, float1, float2); + symbolTable.insertBuiltIn(float3, "smoothstep", float1, float1, float3); + symbolTable.insertBuiltIn(float4, "smoothstep", float1, float1, float4); + + // + // Geometric Functions. + // + symbolTable.insertBuiltIn(float1, "length", float1); + symbolTable.insertBuiltIn(float1, "length", float2); + symbolTable.insertBuiltIn(float1, "length", float3); + symbolTable.insertBuiltIn(float1, "length", float4); + + symbolTable.insertBuiltIn(float1, "distance", float1, float1); + symbolTable.insertBuiltIn(float1, "distance", float2, float2); + symbolTable.insertBuiltIn(float1, "distance", float3, float3); + symbolTable.insertBuiltIn(float1, "distance", float4, float4); + + symbolTable.insertBuiltIn(float1, "dot", float1, float1); + symbolTable.insertBuiltIn(float1, "dot", float2, float2); + symbolTable.insertBuiltIn(float1, "dot", float3, float3); + symbolTable.insertBuiltIn(float1, "dot", float4, float4); + + symbolTable.insertBuiltIn(float3, "cross", float3, float3); + symbolTable.insertBuiltIn(float1, "normalize", float1); + symbolTable.insertBuiltIn(float2, "normalize", float2); + symbolTable.insertBuiltIn(float3, "normalize", float3); + symbolTable.insertBuiltIn(float4, "normalize", float4); + + symbolTable.insertBuiltIn(float1, "faceforward", float1, float1, float1); + symbolTable.insertBuiltIn(float2, "faceforward", float2, float2, float2); + symbolTable.insertBuiltIn(float3, "faceforward", float3, float3, float3); + symbolTable.insertBuiltIn(float4, "faceforward", float4, float4, float4); + + symbolTable.insertBuiltIn(float1, "reflect", float1, float1); + symbolTable.insertBuiltIn(float2, "reflect", float2, float2); + symbolTable.insertBuiltIn(float3, "reflect", float3, float3); + symbolTable.insertBuiltIn(float4, "reflect", float4, float4); + + symbolTable.insertBuiltIn(float1, "refract", float1, float1, float1); + symbolTable.insertBuiltIn(float2, "refract", float2, float2, float1); + symbolTable.insertBuiltIn(float3, "refract", float3, float3, float1); + symbolTable.insertBuiltIn(float4, "refract", float4, float4, float1); + + TType *mat2 = new TType(EbtFloat, EbpUndefined, EvqGlobal, 2, true); + TType *mat3 = new TType(EbtFloat, EbpUndefined, EvqGlobal, 3, true); + TType *mat4 = new TType(EbtFloat, EbpUndefined, EvqGlobal, 4, true); + + // + // Matrix Functions. + // + symbolTable.insertBuiltIn(mat2, "matrixCompMult", mat2, mat2); + symbolTable.insertBuiltIn(mat3, "matrixCompMult", mat3, mat3); + symbolTable.insertBuiltIn(mat4, "matrixCompMult", mat4, mat4); + + TType *bool1 = new TType(EbtBool, EbpUndefined, EvqGlobal, 1); + TType *bool2 = new TType(EbtBool, EbpUndefined, EvqGlobal, 2); + TType *bool3 = new TType(EbtBool, EbpUndefined, EvqGlobal, 3); + TType *bool4 = new TType(EbtBool, EbpUndefined, EvqGlobal, 4); + + // + // Vector relational functions. + // + symbolTable.insertBuiltIn(bool2, "lessThan", float2, float2); + symbolTable.insertBuiltIn(bool3, "lessThan", float3, float3); + symbolTable.insertBuiltIn(bool4, "lessThan", float4, float4); + + symbolTable.insertBuiltIn(bool2, "lessThan", int2, int2); + symbolTable.insertBuiltIn(bool3, "lessThan", int3, int3); + symbolTable.insertBuiltIn(bool4, "lessThan", int4, int4); + + symbolTable.insertBuiltIn(bool2, "lessThanEqual", float2, float2); + symbolTable.insertBuiltIn(bool3, "lessThanEqual", float3, float3); + symbolTable.insertBuiltIn(bool4, "lessThanEqual", float4, float4); + + symbolTable.insertBuiltIn(bool2, "lessThanEqual", int2, int2); + symbolTable.insertBuiltIn(bool3, "lessThanEqual", int3, int3); + symbolTable.insertBuiltIn(bool4, "lessThanEqual", int4, int4); + + symbolTable.insertBuiltIn(bool2, "greaterThan", float2, float2); + symbolTable.insertBuiltIn(bool3, "greaterThan", float3, float3); + symbolTable.insertBuiltIn(bool4, "greaterThan", float4, float4); + + symbolTable.insertBuiltIn(bool2, "greaterThan", int2, int2); + symbolTable.insertBuiltIn(bool3, "greaterThan", int3, int3); + symbolTable.insertBuiltIn(bool4, "greaterThan", int4, int4); + + symbolTable.insertBuiltIn(bool2, "greaterThanEqual", float2, float2); + symbolTable.insertBuiltIn(bool3, "greaterThanEqual", float3, float3); + symbolTable.insertBuiltIn(bool4, "greaterThanEqual", float4, float4); + + symbolTable.insertBuiltIn(bool2, "greaterThanEqual", int2, int2); + symbolTable.insertBuiltIn(bool3, "greaterThanEqual", int3, int3); + symbolTable.insertBuiltIn(bool4, "greaterThanEqual", int4, int4); + + symbolTable.insertBuiltIn(bool2, "equal", float2, float2); + symbolTable.insertBuiltIn(bool3, "equal", float3, float3); + symbolTable.insertBuiltIn(bool4, "equal", float4, float4); + + symbolTable.insertBuiltIn(bool2, "equal", int2, int2); + symbolTable.insertBuiltIn(bool3, "equal", int3, int3); + symbolTable.insertBuiltIn(bool4, "equal", int4, int4); + + symbolTable.insertBuiltIn(bool2, "equal", bool2, bool2); + symbolTable.insertBuiltIn(bool3, "equal", bool3, bool3); + symbolTable.insertBuiltIn(bool4, "equal", bool4, bool4); + + symbolTable.insertBuiltIn(bool2, "notEqual", float2, float2); + symbolTable.insertBuiltIn(bool3, "notEqual", float3, float3); + symbolTable.insertBuiltIn(bool4, "notEqual", float4, float4); + + symbolTable.insertBuiltIn(bool2, "notEqual", int2, int2); + symbolTable.insertBuiltIn(bool3, "notEqual", int3, int3); + symbolTable.insertBuiltIn(bool4, "notEqual", int4, int4); + + symbolTable.insertBuiltIn(bool2, "notEqual", bool2, bool2); + symbolTable.insertBuiltIn(bool3, "notEqual", bool3, bool3); + symbolTable.insertBuiltIn(bool4, "notEqual", bool4, bool4); + + symbolTable.insertBuiltIn(bool1, "any", bool2); + symbolTable.insertBuiltIn(bool1, "any", bool3); + symbolTable.insertBuiltIn(bool1, "any", bool4); + + symbolTable.insertBuiltIn(bool1, "all", bool2); + symbolTable.insertBuiltIn(bool1, "all", bool3); + symbolTable.insertBuiltIn(bool1, "all", bool4); + + symbolTable.insertBuiltIn(bool2, "not", bool2); + symbolTable.insertBuiltIn(bool3, "not", bool3); + symbolTable.insertBuiltIn(bool4, "not", bool4); + + TType *sampler2D = new TType(EbtSampler2D, EbpUndefined, EvqGlobal, 1); + TType *samplerCube = new TType(EbtSamplerCube, EbpUndefined, EvqGlobal, 1); + + // + // Texture Functions for GLSL ES 1.0 + // + symbolTable.insertBuiltIn(float4, "texture2D", sampler2D, float2); + symbolTable.insertBuiltIn(float4, "texture2DProj", sampler2D, float3); + symbolTable.insertBuiltIn(float4, "texture2DProj", sampler2D, float4); + symbolTable.insertBuiltIn(float4, "textureCube", samplerCube, float3); + + if (resources.OES_EGL_image_external) + { + TType *samplerExternalOES = new TType(EbtSamplerExternalOES, EbpUndefined, EvqGlobal, 1); + + symbolTable.insertBuiltIn(float4, "texture2D", samplerExternalOES, float2); + symbolTable.insertBuiltIn(float4, "texture2DProj", samplerExternalOES, float3); + symbolTable.insertBuiltIn(float4, "texture2DProj", samplerExternalOES, float4); + } + + if (resources.ARB_texture_rectangle) + { + TType *sampler2DRect = new TType(EbtSampler2DRect, EbpUndefined, EvqGlobal, 1); + + symbolTable.insertBuiltIn(float4, "texture2DRect", sampler2DRect, float2); + symbolTable.insertBuiltIn(float4, "texture2DRectProj", sampler2DRect, float3); + symbolTable.insertBuiltIn(float4, "texture2DRectProj", sampler2DRect, float4); + } + + if (type == SH_FRAGMENT_SHADER) + { + symbolTable.insertBuiltIn(float4, "texture2D", sampler2D, float2, float1); + symbolTable.insertBuiltIn(float4, "texture2DProj", sampler2D, float3, float1); + symbolTable.insertBuiltIn(float4, "texture2DProj", sampler2D, float4, float1); + symbolTable.insertBuiltIn(float4, "textureCube", samplerCube, float3, float1); + + if (resources.OES_standard_derivatives) + { + symbolTable.insertBuiltIn(float1, "dFdx", float1); + symbolTable.insertBuiltIn(float2, "dFdx", float2); + symbolTable.insertBuiltIn(float3, "dFdx", float3); + symbolTable.insertBuiltIn(float4, "dFdx", float4); + + symbolTable.insertBuiltIn(float1, "dFdy", float1); + symbolTable.insertBuiltIn(float2, "dFdy", float2); + symbolTable.insertBuiltIn(float3, "dFdy", float3); + symbolTable.insertBuiltIn(float4, "dFdy", float4); + + symbolTable.insertBuiltIn(float1, "fwidth", float1); + symbolTable.insertBuiltIn(float2, "fwidth", float2); + symbolTable.insertBuiltIn(float3, "fwidth", float3); + symbolTable.insertBuiltIn(float4, "fwidth", float4); + } + } + + if(type == SH_VERTEX_SHADER) + { + symbolTable.insertBuiltIn(float4, "texture2DLod", sampler2D, float2, float1); + symbolTable.insertBuiltIn(float4, "texture2DProjLod", sampler2D, float3, float1); + symbolTable.insertBuiltIn(float4, "texture2DProjLod", sampler2D, float4, float1); + symbolTable.insertBuiltIn(float4, "textureCubeLod", samplerCube, float3, float1); + } + + // + // Depth range in window coordinates + // + TFieldList *fields = NewPoolTFieldList(); + TField *near = new TField(new TType(EbtFloat, EbpHigh, EvqGlobal, 1), NewPoolTString("near")); + TField *far = new TField(new TType(EbtFloat, EbpHigh, EvqGlobal, 1), NewPoolTString("far")); + TField *diff = new TField(new TType(EbtFloat, EbpHigh, EvqGlobal, 1), NewPoolTString("diff")); + fields->push_back(near); + fields->push_back(far); + fields->push_back(diff); + TStructure *depthRangeStruct = new TStructure(NewPoolTString("gl_DepthRangeParameters"), fields); + TVariable *depthRangeParameters = new TVariable(&depthRangeStruct->name(), depthRangeStruct, true); + symbolTable.insert(*depthRangeParameters); + TVariable *depthRange = new TVariable(NewPoolTString("gl_DepthRange"), TType(depthRangeStruct)); + depthRange->setQualifier(EvqUniform); + symbolTable.insert(*depthRange); + + // + // Implementation dependent built-in constants. + // + symbolTable.insertConstInt("gl_MaxVertexAttribs", resources.MaxVertexAttribs); + symbolTable.insertConstInt("gl_MaxVertexUniformVectors", resources.MaxVertexUniformVectors); + symbolTable.insertConstInt("gl_MaxVaryingVectors", resources.MaxVaryingVectors); + symbolTable.insertConstInt("gl_MaxVertexTextureImageUnits", resources.MaxVertexTextureImageUnits); + symbolTable.insertConstInt("gl_MaxCombinedTextureImageUnits", resources.MaxCombinedTextureImageUnits); + symbolTable.insertConstInt("gl_MaxTextureImageUnits", resources.MaxTextureImageUnits); + symbolTable.insertConstInt("gl_MaxFragmentUniformVectors", resources.MaxFragmentUniformVectors); + + if (spec != SH_CSS_SHADERS_SPEC) + { + symbolTable.insertConstInt("gl_MaxDrawBuffers", resources.MaxDrawBuffers); + } +} + +void IdentifyBuiltIns(ShShaderType type, ShShaderSpec spec, + const ShBuiltInResources &resources, + TSymbolTable &symbolTable) +{ + // + // First, insert some special built-in variables that are not in + // the built-in header files. + // + switch(type) { + case SH_FRAGMENT_SHADER: + symbolTable.insert(*new TVariable(NewPoolTString("gl_FragCoord"), TType(EbtFloat, EbpMedium, EvqFragCoord, 4))); + symbolTable.insert(*new TVariable(NewPoolTString("gl_FrontFacing"), TType(EbtBool, EbpUndefined, EvqFrontFacing, 1))); + symbolTable.insert(*new TVariable(NewPoolTString("gl_PointCoord"), TType(EbtFloat, EbpMedium, EvqPointCoord, 2))); + + // + // In CSS Shaders, gl_FragColor, gl_FragData, and gl_MaxDrawBuffers are not available. + // Instead, css_MixColor and css_ColorMatrix are available. + // + if (spec != SH_CSS_SHADERS_SPEC) { + symbolTable.insert(*new TVariable(NewPoolTString("gl_FragColor"), TType(EbtFloat, EbpMedium, EvqFragColor, 4))); + symbolTable.insert(*new TVariable(NewPoolTString("gl_FragData[gl_MaxDrawBuffers]"), TType(EbtFloat, EbpMedium, EvqFragData, 4))); + if (resources.EXT_frag_depth) { + symbolTable.insert(*new TVariable(NewPoolTString("gl_FragDepthEXT"), TType(EbtFloat, resources.FragmentPrecisionHigh ? EbpHigh : EbpMedium, EvqFragDepth, 1))); + symbolTable.relateToExtension("gl_FragDepthEXT", "GL_EXT_frag_depth"); + } + } else { + symbolTable.insert(*new TVariable(NewPoolTString("css_MixColor"), TType(EbtFloat, EbpMedium, EvqGlobal, 4))); + symbolTable.insert(*new TVariable(NewPoolTString("css_ColorMatrix"), TType(EbtFloat, EbpMedium, EvqGlobal, 4, true))); + } + + break; + + case SH_VERTEX_SHADER: + symbolTable.insert(*new TVariable(NewPoolTString("gl_Position"), TType(EbtFloat, EbpHigh, EvqPosition, 4))); + symbolTable.insert(*new TVariable(NewPoolTString("gl_PointSize"), TType(EbtFloat, EbpMedium, EvqPointSize, 1))); + break; + + default: assert(false && "Language not supported"); + } + + // + // Next, identify which built-ins from the already loaded headers have + // a mapping to an operator. Those that are not identified as such are + // expected to be resolved through a library of functions, versus as + // operations. + // + symbolTable.relateToOperator("matrixCompMult", EOpMul); + + symbolTable.relateToOperator("equal", EOpVectorEqual); + symbolTable.relateToOperator("notEqual", EOpVectorNotEqual); + symbolTable.relateToOperator("lessThan", EOpLessThan); + symbolTable.relateToOperator("greaterThan", EOpGreaterThan); + symbolTable.relateToOperator("lessThanEqual", EOpLessThanEqual); + symbolTable.relateToOperator("greaterThanEqual", EOpGreaterThanEqual); + + symbolTable.relateToOperator("radians", EOpRadians); + symbolTable.relateToOperator("degrees", EOpDegrees); + symbolTable.relateToOperator("sin", EOpSin); + symbolTable.relateToOperator("cos", EOpCos); + symbolTable.relateToOperator("tan", EOpTan); + symbolTable.relateToOperator("asin", EOpAsin); + symbolTable.relateToOperator("acos", EOpAcos); + symbolTable.relateToOperator("atan", EOpAtan); + + symbolTable.relateToOperator("pow", EOpPow); + symbolTable.relateToOperator("exp2", EOpExp2); + symbolTable.relateToOperator("log", EOpLog); + symbolTable.relateToOperator("exp", EOpExp); + symbolTable.relateToOperator("log2", EOpLog2); + symbolTable.relateToOperator("sqrt", EOpSqrt); + symbolTable.relateToOperator("inversesqrt", EOpInverseSqrt); + + symbolTable.relateToOperator("abs", EOpAbs); + symbolTable.relateToOperator("sign", EOpSign); + symbolTable.relateToOperator("floor", EOpFloor); + symbolTable.relateToOperator("ceil", EOpCeil); + symbolTable.relateToOperator("fract", EOpFract); + symbolTable.relateToOperator("mod", EOpMod); + symbolTable.relateToOperator("min", EOpMin); + symbolTable.relateToOperator("max", EOpMax); + symbolTable.relateToOperator("clamp", EOpClamp); + symbolTable.relateToOperator("mix", EOpMix); + symbolTable.relateToOperator("step", EOpStep); + symbolTable.relateToOperator("smoothstep", EOpSmoothStep); + + symbolTable.relateToOperator("length", EOpLength); + symbolTable.relateToOperator("distance", EOpDistance); + symbolTable.relateToOperator("dot", EOpDot); + symbolTable.relateToOperator("cross", EOpCross); + symbolTable.relateToOperator("normalize", EOpNormalize); + symbolTable.relateToOperator("faceforward", EOpFaceForward); + symbolTable.relateToOperator("reflect", EOpReflect); + symbolTable.relateToOperator("refract", EOpRefract); + + symbolTable.relateToOperator("any", EOpAny); + symbolTable.relateToOperator("all", EOpAll); + symbolTable.relateToOperator("not", EOpVectorLogicalNot); + + // Map language-specific operators. + switch(type) { + case SH_VERTEX_SHADER: + break; + case SH_FRAGMENT_SHADER: + if (resources.OES_standard_derivatives) { + symbolTable.relateToOperator("dFdx", EOpDFdx); + symbolTable.relateToOperator("dFdy", EOpDFdy); + symbolTable.relateToOperator("fwidth", EOpFwidth); + + symbolTable.relateToExtension("dFdx", "GL_OES_standard_derivatives"); + symbolTable.relateToExtension("dFdy", "GL_OES_standard_derivatives"); + symbolTable.relateToExtension("fwidth", "GL_OES_standard_derivatives"); + } + break; + default: break; + } + + // Finally add resource-specific variables. + switch(type) { + case SH_FRAGMENT_SHADER: + if (spec != SH_CSS_SHADERS_SPEC) { + // Set up gl_FragData. The array size. + TType fragData(EbtFloat, EbpMedium, EvqFragData, 4, false, true); + fragData.setArraySize(resources.MaxDrawBuffers); + symbolTable.insert(*new TVariable(NewPoolTString("gl_FragData"), fragData)); + } + break; + default: break; + } +} + +void InitExtensionBehavior(const ShBuiltInResources& resources, + TExtensionBehavior& extBehavior) +{ + if (resources.OES_standard_derivatives) + extBehavior["GL_OES_standard_derivatives"] = EBhUndefined; + if (resources.OES_EGL_image_external) + extBehavior["GL_OES_EGL_image_external"] = EBhUndefined; + if (resources.ARB_texture_rectangle) + extBehavior["GL_ARB_texture_rectangle"] = EBhUndefined; + if (resources.EXT_draw_buffers) + extBehavior["GL_EXT_draw_buffers"] = EBhUndefined; + if (resources.EXT_frag_depth) + extBehavior["GL_EXT_frag_depth"] = EBhUndefined; +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/Initialize.h b/Source/ThirdParty/ANGLE/src/compiler/Initialize.h new file mode 100644 index 00000000000..4aa13466aca --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/Initialize.h @@ -0,0 +1,23 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef _INITIALIZE_INCLUDED_ +#define _INITIALIZE_INCLUDED_ + +#include "compiler/Common.h" +#include "compiler/ShHandle.h" +#include "compiler/SymbolTable.h" + +void InsertBuiltInFunctions(ShShaderType type, ShShaderSpec spec, const ShBuiltInResources &resources, TSymbolTable &table); + +void IdentifyBuiltIns(ShShaderType type, ShShaderSpec spec, + const ShBuiltInResources& resources, + TSymbolTable& symbolTable); + +void InitExtensionBehavior(const ShBuiltInResources& resources, + TExtensionBehavior& extensionBehavior); + +#endif // _INITIALIZE_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/InitializeDll.cpp b/Source/ThirdParty/ANGLE/src/compiler/InitializeDll.cpp new file mode 100644 index 00000000000..8763cfeea8d --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/InitializeDll.cpp @@ -0,0 +1,115 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/InitializeDll.h" + +#include "compiler/InitializeGlobals.h" +#include "compiler/InitializeParseContext.h" +#include "compiler/osinclude.h" + +OS_TLSIndex ThreadInitializeIndex = OS_INVALID_TLS_INDEX; + +bool InitProcess() +{ + if (ThreadInitializeIndex != OS_INVALID_TLS_INDEX) { + // + // Function is re-entrant. + // + return true; + } + + ThreadInitializeIndex = OS_AllocTLSIndex(); + + if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) { + assert(0 && "InitProcess(): Failed to allocate TLS area for init flag"); + return false; + } + + + if (!InitializePoolIndex()) { + assert(0 && "InitProcess(): Failed to initalize global pool"); + return false; + } + + if (!InitializeParseContextIndex()) { + assert(0 && "InitProcess(): Failed to initalize parse context"); + return false; + } + + return InitThread(); +} + +bool DetachProcess() +{ + bool success = true; + + if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) + return true; + + success = DetachThread(); + + if (!FreeParseContextIndex()) + success = false; + + FreePoolIndex(); + + OS_FreeTLSIndex(ThreadInitializeIndex); + ThreadInitializeIndex = OS_INVALID_TLS_INDEX; + + return success; +} + +bool InitThread() +{ + // + // This function is re-entrant + // + if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) { + assert(0 && "InitThread(): Process hasn't been initalised."); + return false; + } + + if (OS_GetTLSValue(ThreadInitializeIndex) != 0) + return true; + + InitializeGlobalPools(); + + if (!InitializeGlobalParseContext()) + return false; + + if (!OS_SetTLSValue(ThreadInitializeIndex, (void *)1)) { + assert(0 && "InitThread(): Unable to set init flag."); + return false; + } + + return true; +} + +bool DetachThread() +{ + bool success = true; + + if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) + return true; + + // + // Function is re-entrant and this thread may not have been initalised. + // + if (OS_GetTLSValue(ThreadInitializeIndex) != 0) { + if (!OS_SetTLSValue(ThreadInitializeIndex, (void *)0)) { + assert(0 && "DetachThread(): Unable to clear init flag."); + success = false; + } + + if (!FreeParseContext()) + success = false; + + FreeGlobalPools(); + } + + return success; +} + diff --git a/Source/ThirdParty/ANGLE/src/compiler/InitializeDll.h b/Source/ThirdParty/ANGLE/src/compiler/InitializeDll.h new file mode 100644 index 00000000000..857238eeae1 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/InitializeDll.h @@ -0,0 +1,16 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +#ifndef __INITIALIZEDLL_H +#define __INITIALIZEDLL_H + +bool InitProcess(); +bool DetachProcess(); + +bool InitThread(); +bool DetachThread(); + +#endif // __INITIALIZEDLL_H + diff --git a/Source/ThirdParty/ANGLE/src/compiler/InitializeGlobals.h b/Source/ThirdParty/ANGLE/src/compiler/InitializeGlobals.h new file mode 100644 index 00000000000..842a45281dd --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/InitializeGlobals.h @@ -0,0 +1,15 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef __INITIALIZE_GLOBALS_INCLUDED_ +#define __INITIALIZE_GLOBALS_INCLUDED_ + +void InitializeGlobalPools(); +void FreeGlobalPools(); +bool InitializePoolIndex(); +void FreePoolIndex(); + +#endif // __INITIALIZE_GLOBALS_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.cpp b/Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.cpp new file mode 100644 index 00000000000..1f40cf58006 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.cpp @@ -0,0 +1,96 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/InitializeParseContext.h" + +#include "compiler/osinclude.h" + +OS_TLSIndex GlobalParseContextIndex = OS_INVALID_TLS_INDEX; + +bool InitializeParseContextIndex() +{ + if (GlobalParseContextIndex != OS_INVALID_TLS_INDEX) { + assert(0 && "InitializeParseContextIndex(): Parse Context already initalized"); + return false; + } + + // + // Allocate a TLS index. + // + GlobalParseContextIndex = OS_AllocTLSIndex(); + + if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) { + assert(0 && "InitializeParseContextIndex(): Parse Context already initalized"); + return false; + } + + return true; +} + +bool FreeParseContextIndex() +{ + OS_TLSIndex tlsiIndex = GlobalParseContextIndex; + + if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) { + assert(0 && "FreeParseContextIndex(): Parse Context index not initalized"); + return false; + } + + GlobalParseContextIndex = OS_INVALID_TLS_INDEX; + + return OS_FreeTLSIndex(tlsiIndex); +} + +bool InitializeGlobalParseContext() +{ + if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) { + assert(0 && "InitializeGlobalParseContext(): Parse Context index not initalized"); + return false; + } + + TThreadParseContext *lpParseContext = static_cast(OS_GetTLSValue(GlobalParseContextIndex)); + if (lpParseContext != 0) { + assert(0 && "InitializeParseContextIndex(): Parse Context already initalized"); + return false; + } + + TThreadParseContext *lpThreadData = new TThreadParseContext(); + if (lpThreadData == 0) { + assert(0 && "InitializeGlobalParseContext(): Unable to create thread parse context"); + return false; + } + + lpThreadData->lpGlobalParseContext = 0; + OS_SetTLSValue(GlobalParseContextIndex, lpThreadData); + + return true; +} + +bool FreeParseContext() +{ + if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) { + assert(0 && "FreeParseContext(): Parse Context index not initalized"); + return false; + } + + TThreadParseContext *lpParseContext = static_cast(OS_GetTLSValue(GlobalParseContextIndex)); + if (lpParseContext) + delete lpParseContext; + + return true; +} + +TParseContextPointer& GetGlobalParseContext() +{ + // + // Minimal error checking for speed + // + + TThreadParseContext *lpParseContext = static_cast(OS_GetTLSValue(GlobalParseContextIndex)); + + return lpParseContext->lpGlobalParseContext; +} + diff --git a/Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.h b/Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.h new file mode 100644 index 00000000000..aa53b735d44 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.h @@ -0,0 +1,26 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef __INITIALIZE_PARSE_CONTEXT_INCLUDED_ +#define __INITIALIZE_PARSE_CONTEXT_INCLUDED_ + +bool InitializeParseContextIndex(); +bool FreeParseContextIndex(); + +bool InitializeGlobalParseContext(); +bool FreeParseContext(); + +struct TParseContext; +typedef TParseContext* TParseContextPointer; +extern TParseContextPointer& GetGlobalParseContext(); +#define GlobalParseContext GetGlobalParseContext() + +typedef struct TThreadParseContextRec +{ + TParseContext *lpGlobalParseContext; +} TThreadParseContext; + +#endif // __INITIALIZE_PARSE_CONTEXT_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/IntermTraverse.cpp b/Source/ThirdParty/ANGLE/src/compiler/IntermTraverse.cpp new file mode 100644 index 00000000000..a13877f18fb --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/IntermTraverse.cpp @@ -0,0 +1,293 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/intermediate.h" + +// +// Traverse the intermediate representation tree, and +// call a node type specific function for each node. +// Done recursively through the member function Traverse(). +// Node types can be skipped if their function to call is 0, +// but their subtree will still be traversed. +// Nodes with children can have their whole subtree skipped +// if preVisit is turned on and the type specific function +// returns false. +// +// preVisit, postVisit, and rightToLeft control what order +// nodes are visited in. +// + +// +// Traversal functions for terminals are straighforward.... +// +void TIntermSymbol::traverse(TIntermTraverser* it) +{ + it->visitSymbol(this); +} + +void TIntermConstantUnion::traverse(TIntermTraverser* it) +{ + it->visitConstantUnion(this); +} + +// +// Traverse a binary node. +// +void TIntermBinary::traverse(TIntermTraverser* it) +{ + bool visit = true; + + // + // visit the node before children if pre-visiting. + // + if(it->preVisit) + { + visit = it->visitBinary(PreVisit, this); + } + + // + // Visit the children, in the right order. + // + if(visit) + { + it->incrementDepth(); + + if(it->rightToLeft) + { + if(right) + { + right->traverse(it); + } + + if(it->inVisit) + { + visit = it->visitBinary(InVisit, this); + } + + if(visit && left) + { + left->traverse(it); + } + } + else + { + if(left) + { + left->traverse(it); + } + + if(it->inVisit) + { + visit = it->visitBinary(InVisit, this); + } + + if(visit && right) + { + right->traverse(it); + } + } + + it->decrementDepth(); + } + + // + // Visit the node after the children, if requested and the traversal + // hasn't been cancelled yet. + // + if(visit && it->postVisit) + { + it->visitBinary(PostVisit, this); + } +} + +// +// Traverse a unary node. Same comments in binary node apply here. +// +void TIntermUnary::traverse(TIntermTraverser* it) +{ + bool visit = true; + + if (it->preVisit) + visit = it->visitUnary(PreVisit, this); + + if (visit) { + it->incrementDepth(); + operand->traverse(it); + it->decrementDepth(); + } + + if (visit && it->postVisit) + it->visitUnary(PostVisit, this); +} + +// +// Traverse an aggregate node. Same comments in binary node apply here. +// +void TIntermAggregate::traverse(TIntermTraverser* it) +{ + bool visit = true; + + if(it->preVisit) + { + visit = it->visitAggregate(PreVisit, this); + } + + if(visit) + { + it->incrementDepth(); + + if(it->rightToLeft) + { + for(TIntermSequence::reverse_iterator sit = sequence.rbegin(); sit != sequence.rend(); sit++) + { + (*sit)->traverse(it); + + if(visit && it->inVisit) + { + if(*sit != sequence.front()) + { + visit = it->visitAggregate(InVisit, this); + } + } + } + } + else + { + for(TIntermSequence::iterator sit = sequence.begin(); sit != sequence.end(); sit++) + { + (*sit)->traverse(it); + + if(visit && it->inVisit) + { + if(*sit != sequence.back()) + { + visit = it->visitAggregate(InVisit, this); + } + } + } + } + + it->decrementDepth(); + } + + if(visit && it->postVisit) + { + it->visitAggregate(PostVisit, this); + } +} + +// +// Traverse a selection node. Same comments in binary node apply here. +// +void TIntermSelection::traverse(TIntermTraverser* it) +{ + bool visit = true; + + if (it->preVisit) + visit = it->visitSelection(PreVisit, this); + + if (visit) { + it->incrementDepth(); + if (it->rightToLeft) { + if (falseBlock) + falseBlock->traverse(it); + if (trueBlock) + trueBlock->traverse(it); + condition->traverse(it); + } else { + condition->traverse(it); + if (trueBlock) + trueBlock->traverse(it); + if (falseBlock) + falseBlock->traverse(it); + } + it->decrementDepth(); + } + + if (visit && it->postVisit) + it->visitSelection(PostVisit, this); +} + +// +// Traverse a loop node. Same comments in binary node apply here. +// +void TIntermLoop::traverse(TIntermTraverser* it) +{ + bool visit = true; + + if(it->preVisit) + { + visit = it->visitLoop(PreVisit, this); + } + + if(visit) + { + it->incrementDepth(); + + if(it->rightToLeft) + { + if(expr) + { + expr->traverse(it); + } + + if(body) + { + body->traverse(it); + } + + if(cond) + { + cond->traverse(it); + } + } + else + { + if(cond) + { + cond->traverse(it); + } + + if(body) + { + body->traverse(it); + } + + if(expr) + { + expr->traverse(it); + } + } + + it->decrementDepth(); + } + + if(visit && it->postVisit) + { + it->visitLoop(PostVisit, this); + } +} + +// +// Traverse a branch node. Same comments in binary node apply here. +// +void TIntermBranch::traverse(TIntermTraverser* it) +{ + bool visit = true; + + if (it->preVisit) + visit = it->visitBranch(PreVisit, this); + + if (visit && expression) { + it->incrementDepth(); + expression->traverse(it); + it->decrementDepth(); + } + + if (visit && it->postVisit) + it->visitBranch(PostVisit, this); +} + diff --git a/Source/ThirdParty/ANGLE/src/compiler/Intermediate.cpp b/Source/ThirdParty/ANGLE/src/compiler/Intermediate.cpp new file mode 100644 index 00000000000..3b6622185d2 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/Intermediate.cpp @@ -0,0 +1,1442 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// +// Build the intermediate representation. +// + +#include +#include +#include + +#include "compiler/HashNames.h" +#include "compiler/localintermediate.h" +#include "compiler/QualifierAlive.h" +#include "compiler/RemoveTree.h" + +bool CompareStructure(const TType& leftNodeType, ConstantUnion* rightUnionArray, ConstantUnion* leftUnionArray); + +static TPrecision GetHigherPrecision( TPrecision left, TPrecision right ){ + return left > right ? left : right; +} + +const char* getOperatorString(TOperator op) { + switch (op) { + case EOpInitialize: return "="; + case EOpAssign: return "="; + case EOpAddAssign: return "+="; + case EOpSubAssign: return "-="; + case EOpDivAssign: return "/="; + + // Fall-through. + case EOpMulAssign: + case EOpVectorTimesMatrixAssign: + case EOpVectorTimesScalarAssign: + case EOpMatrixTimesScalarAssign: + case EOpMatrixTimesMatrixAssign: return "*="; + + // Fall-through. + case EOpIndexDirect: + case EOpIndexIndirect: return "[]"; + + case EOpIndexDirectStruct: return "."; + case EOpVectorSwizzle: return "."; + case EOpAdd: return "+"; + case EOpSub: return "-"; + case EOpMul: return "*"; + case EOpDiv: return "/"; + case EOpMod: UNIMPLEMENTED(); break; + case EOpEqual: return "=="; + case EOpNotEqual: return "!="; + case EOpLessThan: return "<"; + case EOpGreaterThan: return ">"; + case EOpLessThanEqual: return "<="; + case EOpGreaterThanEqual: return ">="; + + // Fall-through. + case EOpVectorTimesScalar: + case EOpVectorTimesMatrix: + case EOpMatrixTimesVector: + case EOpMatrixTimesScalar: + case EOpMatrixTimesMatrix: return "*"; + + case EOpLogicalOr: return "||"; + case EOpLogicalXor: return "^^"; + case EOpLogicalAnd: return "&&"; + case EOpNegative: return "-"; + case EOpVectorLogicalNot: return "not"; + case EOpLogicalNot: return "!"; + case EOpPostIncrement: return "++"; + case EOpPostDecrement: return "--"; + case EOpPreIncrement: return "++"; + case EOpPreDecrement: return "--"; + + // Fall-through. + case EOpConvIntToBool: + case EOpConvFloatToBool: return "bool"; + + // Fall-through. + case EOpConvBoolToFloat: + case EOpConvIntToFloat: return "float"; + + // Fall-through. + case EOpConvFloatToInt: + case EOpConvBoolToInt: return "int"; + + case EOpRadians: return "radians"; + case EOpDegrees: return "degrees"; + case EOpSin: return "sin"; + case EOpCos: return "cos"; + case EOpTan: return "tan"; + case EOpAsin: return "asin"; + case EOpAcos: return "acos"; + case EOpAtan: return "atan"; + case EOpExp: return "exp"; + case EOpLog: return "log"; + case EOpExp2: return "exp2"; + case EOpLog2: return "log2"; + case EOpSqrt: return "sqrt"; + case EOpInverseSqrt: return "inversesqrt"; + case EOpAbs: return "abs"; + case EOpSign: return "sign"; + case EOpFloor: return "floor"; + case EOpCeil: return "ceil"; + case EOpFract: return "fract"; + case EOpLength: return "length"; + case EOpNormalize: return "normalize"; + case EOpDFdx: return "dFdx"; + case EOpDFdy: return "dFdy"; + case EOpFwidth: return "fwidth"; + case EOpAny: return "any"; + case EOpAll: return "all"; + + default: break; + } + return ""; +} + +//////////////////////////////////////////////////////////////////////////// +// +// First set of functions are to help build the intermediate representation. +// These functions are not member functions of the nodes. +// They are called from parser productions. +// +///////////////////////////////////////////////////////////////////////////// + +// +// Add a terminal node for an identifier in an expression. +// +// Returns the added node. +// +TIntermSymbol* TIntermediate::addSymbol(int id, const TString& name, const TType& type, const TSourceLoc& line) +{ + TIntermSymbol* node = new TIntermSymbol(id, name, type); + node->setLine(line); + + return node; +} + +// +// Connect two nodes with a new parent that does a binary operation on the nodes. +// +// Returns the added node. +// +TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc& line, TSymbolTable& symbolTable) +{ + switch (op) { + case EOpEqual: + case EOpNotEqual: + if (left->isArray()) + return 0; + break; + case EOpLessThan: + case EOpGreaterThan: + case EOpLessThanEqual: + case EOpGreaterThanEqual: + if (left->isMatrix() || left->isArray() || left->isVector() || left->getBasicType() == EbtStruct) { + return 0; + } + break; + case EOpLogicalOr: + case EOpLogicalXor: + case EOpLogicalAnd: + if (left->getBasicType() != EbtBool || left->isMatrix() || left->isArray() || left->isVector()) { + return 0; + } + break; + case EOpAdd: + case EOpSub: + case EOpDiv: + case EOpMul: + if (left->getBasicType() == EbtStruct || left->getBasicType() == EbtBool) + return 0; + default: break; + } + + // + // First try converting the children to compatible types. + // + if (left->getType().getStruct() && right->getType().getStruct()) { + if (left->getType() != right->getType()) + return 0; + } else { + TIntermTyped* child = addConversion(op, left->getType(), right); + if (child) + right = child; + else { + child = addConversion(op, right->getType(), left); + if (child) + left = child; + else + return 0; + } + } + + // + // Need a new node holding things together then. Make + // one and promote it to the right type. + // + TIntermBinary* node = new TIntermBinary(op); + node->setLine(line); + + node->setLeft(left); + node->setRight(right); + if (!node->promote(infoSink)) + return 0; + + // + // See if we can fold constants. + // + TIntermTyped* typedReturnNode = 0; + TIntermConstantUnion *leftTempConstant = left->getAsConstantUnion(); + TIntermConstantUnion *rightTempConstant = right->getAsConstantUnion(); + if (leftTempConstant && rightTempConstant) { + typedReturnNode = leftTempConstant->fold(node->getOp(), rightTempConstant, infoSink); + + if (typedReturnNode) + return typedReturnNode; + } + + return node; +} + +// +// Connect two nodes through an assignment. +// +// Returns the added node. +// +TIntermTyped* TIntermediate::addAssign(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc& line) +{ + // + // Like adding binary math, except the conversion can only go + // from right to left. + // + TIntermBinary* node = new TIntermBinary(op); + node->setLine(line); + + TIntermTyped* child = addConversion(op, left->getType(), right); + if (child == 0) + return 0; + + node->setLeft(left); + node->setRight(child); + if (! node->promote(infoSink)) + return 0; + + return node; +} + +// +// Connect two nodes through an index operator, where the left node is the base +// of an array or struct, and the right node is a direct or indirect offset. +// +// Returns the added node. +// The caller should set the type of the returned node. +// +TIntermTyped* TIntermediate::addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, const TSourceLoc& line) +{ + TIntermBinary* node = new TIntermBinary(op); + node->setLine(line); + node->setLeft(base); + node->setRight(index); + + // caller should set the type + + return node; +} + +// +// Add one node as the parent of another that it operates on. +// +// Returns the added node. +// +TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermNode* childNode, const TSourceLoc& line, TSymbolTable& symbolTable) +{ + TIntermUnary* node; + TIntermTyped* child = childNode->getAsTyped(); + + if (child == 0) { + infoSink.info.message(EPrefixInternalError, line, "Bad type in AddUnaryMath"); + return 0; + } + + switch (op) { + case EOpLogicalNot: + if (child->getType().getBasicType() != EbtBool || child->getType().isMatrix() || child->getType().isArray() || child->getType().isVector()) { + return 0; + } + break; + + case EOpPostIncrement: + case EOpPreIncrement: + case EOpPostDecrement: + case EOpPreDecrement: + case EOpNegative: + if (child->getType().getBasicType() == EbtStruct || child->getType().isArray()) + return 0; + default: break; + } + + // + // Do we need to promote the operand? + // + // Note: Implicit promotions were removed from the language. + // + TBasicType newType = EbtVoid; + switch (op) { + case EOpConstructInt: newType = EbtInt; break; + case EOpConstructBool: newType = EbtBool; break; + case EOpConstructFloat: newType = EbtFloat; break; + default: break; + } + + if (newType != EbtVoid) { + child = addConversion(op, TType(newType, child->getPrecision(), EvqTemporary, + child->getNominalSize(), + child->isMatrix(), + child->isArray()), + child); + if (child == 0) + return 0; + } + + // + // For constructors, we are now done, it's all in the conversion. + // + switch (op) { + case EOpConstructInt: + case EOpConstructBool: + case EOpConstructFloat: + return child; + default: break; + } + + TIntermConstantUnion *childTempConstant = 0; + if (child->getAsConstantUnion()) + childTempConstant = child->getAsConstantUnion(); + + // + // Make a new node for the operator. + // + node = new TIntermUnary(op); + node->setLine(line); + node->setOperand(child); + + if (! node->promote(infoSink)) + return 0; + + if (childTempConstant) { + TIntermTyped* newChild = childTempConstant->fold(op, 0, infoSink); + + if (newChild) + return newChild; + } + + return node; +} + +// +// This is the safe way to change the operator on an aggregate, as it +// does lots of error checking and fixing. Especially for establishing +// a function call's operation on it's set of parameters. Sequences +// of instructions are also aggregates, but they just direnctly set +// their operator to EOpSequence. +// +// Returns an aggregate node, which could be the one passed in if +// it was already an aggregate but no operator was set. +// +TIntermAggregate* TIntermediate::setAggregateOperator(TIntermNode* node, TOperator op, const TSourceLoc& line) +{ + TIntermAggregate* aggNode; + + // + // Make sure we have an aggregate. If not turn it into one. + // + if (node) { + aggNode = node->getAsAggregate(); + if (aggNode == 0 || aggNode->getOp() != EOpNull) { + // + // Make an aggregate containing this node. + // + aggNode = new TIntermAggregate(); + aggNode->getSequence().push_back(node); + } + } else + aggNode = new TIntermAggregate(); + + // + // Set the operator. + // + aggNode->setOp(op); + aggNode->setLine(line); + + return aggNode; +} + +// +// Convert one type to another. +// +// Returns the node representing the conversion, which could be the same +// node passed in if no conversion was needed. +// +// Return 0 if a conversion can't be done. +// +TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TIntermTyped* node) +{ + // + // Does the base type allow operation? + // + switch (node->getBasicType()) { + case EbtVoid: + case EbtSampler2D: + case EbtSamplerCube: + return 0; + default: break; + } + + // + // Otherwise, if types are identical, no problem + // + if (type == node->getType()) + return node; + + // + // If one's a structure, then no conversions. + // + if (type.getStruct() || node->getType().getStruct()) + return 0; + + // + // If one's an array, then no conversions. + // + if (type.isArray() || node->getType().isArray()) + return 0; + + TBasicType promoteTo; + + switch (op) { + // + // Explicit conversions + // + case EOpConstructBool: + promoteTo = EbtBool; + break; + case EOpConstructFloat: + promoteTo = EbtFloat; + break; + case EOpConstructInt: + promoteTo = EbtInt; + break; + default: + // + // implicit conversions were removed from the language. + // + if (type.getBasicType() != node->getType().getBasicType()) + return 0; + // + // Size and structure could still differ, but that's + // handled by operator promotion. + // + return node; + } + + if (node->getAsConstantUnion()) { + + return (promoteConstantUnion(promoteTo, node->getAsConstantUnion())); + } else { + + // + // Add a new newNode for the conversion. + // + TIntermUnary* newNode = 0; + + TOperator newOp = EOpNull; + switch (promoteTo) { + case EbtFloat: + switch (node->getBasicType()) { + case EbtInt: newOp = EOpConvIntToFloat; break; + case EbtBool: newOp = EOpConvBoolToFloat; break; + default: + infoSink.info.message(EPrefixInternalError, node->getLine(), "Bad promotion node"); + return 0; + } + break; + case EbtBool: + switch (node->getBasicType()) { + case EbtInt: newOp = EOpConvIntToBool; break; + case EbtFloat: newOp = EOpConvFloatToBool; break; + default: + infoSink.info.message(EPrefixInternalError, node->getLine(), "Bad promotion node"); + return 0; + } + break; + case EbtInt: + switch (node->getBasicType()) { + case EbtBool: newOp = EOpConvBoolToInt; break; + case EbtFloat: newOp = EOpConvFloatToInt; break; + default: + infoSink.info.message(EPrefixInternalError, node->getLine(), "Bad promotion node"); + return 0; + } + break; + default: + infoSink.info.message(EPrefixInternalError, node->getLine(), "Bad promotion type"); + return 0; + } + + TType type(promoteTo, node->getPrecision(), EvqTemporary, node->getNominalSize(), node->isMatrix(), node->isArray()); + newNode = new TIntermUnary(newOp, type); + newNode->setLine(node->getLine()); + newNode->setOperand(node); + + return newNode; + } +} + +// +// Safe way to combine two nodes into an aggregate. Works with null pointers, +// a node that's not a aggregate yet, etc. +// +// Returns the resulting aggregate, unless 0 was passed in for +// both existing nodes. +// +TIntermAggregate* TIntermediate::growAggregate(TIntermNode* left, TIntermNode* right, const TSourceLoc& line) +{ + if (left == 0 && right == 0) + return 0; + + TIntermAggregate* aggNode = 0; + if (left) + aggNode = left->getAsAggregate(); + if (!aggNode || aggNode->getOp() != EOpNull) { + aggNode = new TIntermAggregate; + if (left) + aggNode->getSequence().push_back(left); + } + + if (right) + aggNode->getSequence().push_back(right); + + aggNode->setLine(line); + + return aggNode; +} + +// +// Turn an existing node into an aggregate. +// +// Returns an aggregate, unless 0 was passed in for the existing node. +// +TIntermAggregate* TIntermediate::makeAggregate(TIntermNode* node, const TSourceLoc& line) +{ + if (node == 0) + return 0; + + TIntermAggregate* aggNode = new TIntermAggregate; + aggNode->getSequence().push_back(node); + aggNode->setLine(line); + + return aggNode; +} + +// +// For "if" test nodes. There are three children; a condition, +// a true path, and a false path. The two paths are in the +// nodePair. +// +// Returns the selection node created. +// +TIntermNode* TIntermediate::addSelection(TIntermTyped* cond, TIntermNodePair nodePair, const TSourceLoc& line) +{ + // + // For compile time constant selections, prune the code and + // test now. + // + + if (cond->getAsTyped() && cond->getAsTyped()->getAsConstantUnion()) { + if (cond->getAsConstantUnion()->getBConst(0) == true) + return nodePair.node1 ? setAggregateOperator(nodePair.node1, EOpSequence, nodePair.node1->getLine()) : NULL; + else + return nodePair.node2 ? setAggregateOperator(nodePair.node2, EOpSequence, nodePair.node2->getLine()) : NULL; + } + + TIntermSelection* node = new TIntermSelection(cond, nodePair.node1, nodePair.node2); + node->setLine(line); + + return node; +} + + +TIntermTyped* TIntermediate::addComma(TIntermTyped* left, TIntermTyped* right, const TSourceLoc& line) +{ + if (left->getType().getQualifier() == EvqConst && right->getType().getQualifier() == EvqConst) { + return right; + } else { + TIntermTyped *commaAggregate = growAggregate(left, right, line); + commaAggregate->getAsAggregate()->setOp(EOpComma); + commaAggregate->setType(right->getType()); + commaAggregate->getTypePointer()->setQualifier(EvqTemporary); + return commaAggregate; + } +} + +// +// For "?:" test nodes. There are three children; a condition, +// a true path, and a false path. The two paths are specified +// as separate parameters. +// +// Returns the selection node created, or 0 if one could not be. +// +TIntermTyped* TIntermediate::addSelection(TIntermTyped* cond, TIntermTyped* trueBlock, TIntermTyped* falseBlock, const TSourceLoc& line) +{ + // + // Get compatible types. + // + TIntermTyped* child = addConversion(EOpSequence, trueBlock->getType(), falseBlock); + if (child) + falseBlock = child; + else { + child = addConversion(EOpSequence, falseBlock->getType(), trueBlock); + if (child) + trueBlock = child; + else + return 0; + } + + // + // See if all the operands are constant, then fold it otherwise not. + // + + if (cond->getAsConstantUnion() && trueBlock->getAsConstantUnion() && falseBlock->getAsConstantUnion()) { + if (cond->getAsConstantUnion()->getBConst(0)) + return trueBlock; + else + return falseBlock; + } + + // + // Make a selection node. + // + TIntermSelection* node = new TIntermSelection(cond, trueBlock, falseBlock, trueBlock->getType()); + node->getTypePointer()->setQualifier(EvqTemporary); + node->setLine(line); + + return node; +} + +// +// Constant terminal nodes. Has a union that contains bool, float or int constants +// +// Returns the constant union node created. +// + +TIntermConstantUnion* TIntermediate::addConstantUnion(ConstantUnion* unionArrayPointer, const TType& t, const TSourceLoc& line) +{ + TIntermConstantUnion* node = new TIntermConstantUnion(unionArrayPointer, t); + node->setLine(line); + + return node; +} + +TIntermTyped* TIntermediate::addSwizzle(TVectorFields& fields, const TSourceLoc& line) +{ + + TIntermAggregate* node = new TIntermAggregate(EOpSequence); + + node->setLine(line); + TIntermConstantUnion* constIntNode; + TIntermSequence &sequenceVector = node->getSequence(); + ConstantUnion* unionArray; + + for (int i = 0; i < fields.num; i++) { + unionArray = new ConstantUnion[1]; + unionArray->setIConst(fields.offsets[i]); + constIntNode = addConstantUnion(unionArray, TType(EbtInt, EbpUndefined, EvqConst), line); + sequenceVector.push_back(constIntNode); + } + + return node; +} + +// +// Create loop nodes. +// +TIntermNode* TIntermediate::addLoop(TLoopType type, TIntermNode* init, TIntermTyped* cond, TIntermTyped* expr, TIntermNode* body, const TSourceLoc& line) +{ + TIntermNode* node = new TIntermLoop(type, init, cond, expr, body); + node->setLine(line); + + return node; +} + +// +// Add branches. +// +TIntermBranch* TIntermediate::addBranch(TOperator branchOp, const TSourceLoc& line) +{ + return addBranch(branchOp, 0, line); +} + +TIntermBranch* TIntermediate::addBranch(TOperator branchOp, TIntermTyped* expression, const TSourceLoc& line) +{ + TIntermBranch* node = new TIntermBranch(branchOp, expression); + node->setLine(line); + + return node; +} + +// +// This is to be executed once the final root is put on top by the parsing +// process. +// +bool TIntermediate::postProcess(TIntermNode* root) +{ + if (root == 0) + return true; + + // + // First, finish off the top level sequence, if any + // + TIntermAggregate* aggRoot = root->getAsAggregate(); + if (aggRoot && aggRoot->getOp() == EOpNull) + aggRoot->setOp(EOpSequence); + + return true; +} + +// +// This deletes the tree. +// +void TIntermediate::remove(TIntermNode* root) +{ + if (root) + RemoveAllTreeNodes(root); +} + +//////////////////////////////////////////////////////////////// +// +// Member functions of the nodes used for building the tree. +// +//////////////////////////////////////////////////////////////// + +// +// Say whether or not an operation node changes the value of a variable. +// +// Returns true if state is modified. +// +bool TIntermOperator::modifiesState() const +{ + switch (op) { + case EOpPostIncrement: + case EOpPostDecrement: + case EOpPreIncrement: + case EOpPreDecrement: + case EOpAssign: + case EOpAddAssign: + case EOpSubAssign: + case EOpMulAssign: + case EOpVectorTimesMatrixAssign: + case EOpVectorTimesScalarAssign: + case EOpMatrixTimesScalarAssign: + case EOpMatrixTimesMatrixAssign: + case EOpDivAssign: + return true; + default: + return false; + } +} + +// +// returns true if the operator is for one of the constructors +// +bool TIntermOperator::isConstructor() const +{ + switch (op) { + case EOpConstructVec2: + case EOpConstructVec3: + case EOpConstructVec4: + case EOpConstructMat2: + case EOpConstructMat3: + case EOpConstructMat4: + case EOpConstructFloat: + case EOpConstructIVec2: + case EOpConstructIVec3: + case EOpConstructIVec4: + case EOpConstructInt: + case EOpConstructBVec2: + case EOpConstructBVec3: + case EOpConstructBVec4: + case EOpConstructBool: + case EOpConstructStruct: + return true; + default: + return false; + } +} +// +// Make sure the type of a unary operator is appropriate for its +// combination of operation and operand type. +// +// Returns false in nothing makes sense. +// +bool TIntermUnary::promote(TInfoSink&) +{ + switch (op) { + case EOpLogicalNot: + if (operand->getBasicType() != EbtBool) + return false; + break; + case EOpNegative: + case EOpPostIncrement: + case EOpPostDecrement: + case EOpPreIncrement: + case EOpPreDecrement: + if (operand->getBasicType() == EbtBool) + return false; + break; + + // operators for built-ins are already type checked against their prototype + case EOpAny: + case EOpAll: + case EOpVectorLogicalNot: + return true; + + default: + if (operand->getBasicType() != EbtFloat) + return false; + } + + setType(operand->getType()); + type.setQualifier(EvqTemporary); + + return true; +} + +// +// Establishes the type of the resultant operation, as well as +// makes the operator the correct one for the operands. +// +// Returns false if operator can't work on operands. +// +bool TIntermBinary::promote(TInfoSink& infoSink) +{ + // This function only handles scalars, vectors, and matrices. + if (left->isArray() || right->isArray()) { + infoSink.info.message(EPrefixInternalError, getLine(), "Invalid operation for arrays"); + return false; + } + + // GLSL ES 2.0 does not support implicit type casting. + // So the basic type should always match. + if (left->getBasicType() != right->getBasicType()) + return false; + + // + // Base assumption: just make the type the same as the left + // operand. Then only deviations from this need be coded. + // + setType(left->getType()); + + // The result gets promoted to the highest precision. + TPrecision higherPrecision = GetHigherPrecision(left->getPrecision(), right->getPrecision()); + getTypePointer()->setPrecision(higherPrecision); + + // Binary operations results in temporary variables unless both + // operands are const. + if (left->getQualifier() != EvqConst || right->getQualifier() != EvqConst) { + getTypePointer()->setQualifier(EvqTemporary); + } + + int size = std::max(left->getNominalSize(), right->getNominalSize()); + + // + // All scalars. Code after this test assumes this case is removed! + // + if (size == 1) { + switch (op) { + // + // Promote to conditional + // + case EOpEqual: + case EOpNotEqual: + case EOpLessThan: + case EOpGreaterThan: + case EOpLessThanEqual: + case EOpGreaterThanEqual: + setType(TType(EbtBool, EbpUndefined)); + break; + + // + // And and Or operate on conditionals + // + case EOpLogicalAnd: + case EOpLogicalOr: + // Both operands must be of type bool. + if (left->getBasicType() != EbtBool || right->getBasicType() != EbtBool) + return false; + setType(TType(EbtBool, EbpUndefined)); + break; + + default: + break; + } + return true; + } + + // If we reach here, at least one of the operands is vector or matrix. + // The other operand could be a scalar, vector, or matrix. + // Are the sizes compatible? + // + if (left->getNominalSize() != right->getNominalSize()) { + // If the nominal size of operands do not match: + // One of them must be scalar. + if (left->getNominalSize() != 1 && right->getNominalSize() != 1) + return false; + // Operator cannot be of type pure assignment. + if (op == EOpAssign || op == EOpInitialize) + return false; + } + + // + // Can these two operands be combined? + // + TBasicType basicType = left->getBasicType(); + switch (op) { + case EOpMul: + if (!left->isMatrix() && right->isMatrix()) { + if (left->isVector()) + op = EOpVectorTimesMatrix; + else { + op = EOpMatrixTimesScalar; + setType(TType(basicType, higherPrecision, EvqTemporary, size, true)); + } + } else if (left->isMatrix() && !right->isMatrix()) { + if (right->isVector()) { + op = EOpMatrixTimesVector; + setType(TType(basicType, higherPrecision, EvqTemporary, size, false)); + } else { + op = EOpMatrixTimesScalar; + } + } else if (left->isMatrix() && right->isMatrix()) { + op = EOpMatrixTimesMatrix; + } else if (!left->isMatrix() && !right->isMatrix()) { + if (left->isVector() && right->isVector()) { + // leave as component product + } else if (left->isVector() || right->isVector()) { + op = EOpVectorTimesScalar; + setType(TType(basicType, higherPrecision, EvqTemporary, size, false)); + } + } else { + infoSink.info.message(EPrefixInternalError, getLine(), "Missing elses"); + return false; + } + break; + case EOpMulAssign: + if (!left->isMatrix() && right->isMatrix()) { + if (left->isVector()) + op = EOpVectorTimesMatrixAssign; + else { + return false; + } + } else if (left->isMatrix() && !right->isMatrix()) { + if (right->isVector()) { + return false; + } else { + op = EOpMatrixTimesScalarAssign; + } + } else if (left->isMatrix() && right->isMatrix()) { + op = EOpMatrixTimesMatrixAssign; + } else if (!left->isMatrix() && !right->isMatrix()) { + if (left->isVector() && right->isVector()) { + // leave as component product + } else if (left->isVector() || right->isVector()) { + if (! left->isVector()) + return false; + op = EOpVectorTimesScalarAssign; + setType(TType(basicType, higherPrecision, EvqTemporary, size, false)); + } + } else { + infoSink.info.message(EPrefixInternalError, getLine(), "Missing elses"); + return false; + } + break; + + case EOpAssign: + case EOpInitialize: + case EOpAdd: + case EOpSub: + case EOpDiv: + case EOpAddAssign: + case EOpSubAssign: + case EOpDivAssign: + if ((left->isMatrix() && right->isVector()) || + (left->isVector() && right->isMatrix())) + return false; + setType(TType(basicType, higherPrecision, EvqTemporary, size, left->isMatrix() || right->isMatrix())); + break; + + case EOpEqual: + case EOpNotEqual: + case EOpLessThan: + case EOpGreaterThan: + case EOpLessThanEqual: + case EOpGreaterThanEqual: + if ((left->isMatrix() && right->isVector()) || + (left->isVector() && right->isMatrix())) + return false; + setType(TType(EbtBool, EbpUndefined)); + break; + + default: + return false; + } + + return true; +} + +bool CompareStruct(const TType& leftNodeType, ConstantUnion* rightUnionArray, ConstantUnion* leftUnionArray) +{ + const TFieldList& fields = leftNodeType.getStruct()->fields(); + + size_t structSize = fields.size(); + size_t index = 0; + + for (size_t j = 0; j < structSize; j++) { + size_t size = fields[j]->type()->getObjectSize(); + for (size_t i = 0; i < size; i++) { + if (fields[j]->type()->getBasicType() == EbtStruct) { + if (!CompareStructure(*(fields[j]->type()), &rightUnionArray[index], &leftUnionArray[index])) + return false; + } else { + if (leftUnionArray[index] != rightUnionArray[index]) + return false; + index++; + } + } + } + return true; +} + +bool CompareStructure(const TType& leftNodeType, ConstantUnion* rightUnionArray, ConstantUnion* leftUnionArray) +{ + if (leftNodeType.isArray()) { + TType typeWithoutArrayness = leftNodeType; + typeWithoutArrayness.clearArrayness(); + + size_t arraySize = leftNodeType.getArraySize(); + + for (size_t i = 0; i < arraySize; ++i) { + size_t offset = typeWithoutArrayness.getObjectSize() * i; + if (!CompareStruct(typeWithoutArrayness, &rightUnionArray[offset], &leftUnionArray[offset])) + return false; + } + } else + return CompareStruct(leftNodeType, rightUnionArray, leftUnionArray); + + return true; +} + +// +// The fold functions see if an operation on a constant can be done in place, +// without generating run-time code. +// +// Returns the node to keep using, which may or may not be the node passed in. +// + +TIntermTyped* TIntermConstantUnion::fold(TOperator op, TIntermTyped* constantNode, TInfoSink& infoSink) +{ + ConstantUnion *unionArray = getUnionArrayPointer(); + size_t objectSize = getType().getObjectSize(); + + if (constantNode) { // binary operations + TIntermConstantUnion *node = constantNode->getAsConstantUnion(); + ConstantUnion *rightUnionArray = node->getUnionArrayPointer(); + TType returnType = getType(); + + // for a case like float f = 1.2 + vec4(2,3,4,5); + if (constantNode->getType().getObjectSize() == 1 && objectSize > 1) { + rightUnionArray = new ConstantUnion[objectSize]; + for (size_t i = 0; i < objectSize; ++i) + rightUnionArray[i] = *node->getUnionArrayPointer(); + returnType = getType(); + } else if (constantNode->getType().getObjectSize() > 1 && objectSize == 1) { + // for a case like float f = vec4(2,3,4,5) + 1.2; + unionArray = new ConstantUnion[constantNode->getType().getObjectSize()]; + for (size_t i = 0; i < constantNode->getType().getObjectSize(); ++i) + unionArray[i] = *getUnionArrayPointer(); + returnType = node->getType(); + objectSize = constantNode->getType().getObjectSize(); + } + + ConstantUnion* tempConstArray = 0; + TIntermConstantUnion *tempNode; + + bool boolNodeFlag = false; + switch(op) { + case EOpAdd: + tempConstArray = new ConstantUnion[objectSize]; + {// support MSVC++6.0 + for (size_t i = 0; i < objectSize; i++) + tempConstArray[i] = unionArray[i] + rightUnionArray[i]; + } + break; + case EOpSub: + tempConstArray = new ConstantUnion[objectSize]; + {// support MSVC++6.0 + for (size_t i = 0; i < objectSize; i++) + tempConstArray[i] = unionArray[i] - rightUnionArray[i]; + } + break; + + case EOpMul: + case EOpVectorTimesScalar: + case EOpMatrixTimesScalar: + tempConstArray = new ConstantUnion[objectSize]; + {// support MSVC++6.0 + for (size_t i = 0; i < objectSize; i++) + tempConstArray[i] = unionArray[i] * rightUnionArray[i]; + } + break; + case EOpMatrixTimesMatrix: + if (getType().getBasicType() != EbtFloat || node->getBasicType() != EbtFloat) { + infoSink.info.message(EPrefixInternalError, getLine(), "Constant Folding cannot be done for matrix multiply"); + return 0; + } + {// support MSVC++6.0 + int size = getNominalSize(); + tempConstArray = new ConstantUnion[size*size]; + for (int row = 0; row < size; row++) { + for (int column = 0; column < size; column++) { + tempConstArray[size * column + row].setFConst(0.0f); + for (int i = 0; i < size; i++) { + tempConstArray[size * column + row].setFConst(tempConstArray[size * column + row].getFConst() + unionArray[i * size + row].getFConst() * (rightUnionArray[column * size + i].getFConst())); + } + } + } + } + break; + case EOpDiv: + tempConstArray = new ConstantUnion[objectSize]; + {// support MSVC++6.0 + for (size_t i = 0; i < objectSize; i++) { + switch (getType().getBasicType()) { + case EbtFloat: + if (rightUnionArray[i] == 0.0f) { + infoSink.info.message(EPrefixWarning, getLine(), "Divide by zero error during constant folding"); + tempConstArray[i].setFConst(unionArray[i].getFConst() < 0 ? -FLT_MAX : FLT_MAX); + } else + tempConstArray[i].setFConst(unionArray[i].getFConst() / rightUnionArray[i].getFConst()); + break; + + case EbtInt: + if (rightUnionArray[i] == 0) { + infoSink.info.message(EPrefixWarning, getLine(), "Divide by zero error during constant folding"); + tempConstArray[i].setIConst(INT_MAX); + } else + tempConstArray[i].setIConst(unionArray[i].getIConst() / rightUnionArray[i].getIConst()); + break; + default: + infoSink.info.message(EPrefixInternalError, getLine(), "Constant folding cannot be done for \"/\""); + return 0; + } + } + } + break; + + case EOpMatrixTimesVector: + if (node->getBasicType() != EbtFloat) { + infoSink.info.message(EPrefixInternalError, getLine(), "Constant Folding cannot be done for matrix times vector"); + return 0; + } + tempConstArray = new ConstantUnion[getNominalSize()]; + + {// support MSVC++6.0 + for (int size = getNominalSize(), i = 0; i < size; i++) { + tempConstArray[i].setFConst(0.0f); + for (int j = 0; j < size; j++) { + tempConstArray[i].setFConst(tempConstArray[i].getFConst() + ((unionArray[j*size + i].getFConst()) * rightUnionArray[j].getFConst())); + } + } + } + + tempNode = new TIntermConstantUnion(tempConstArray, node->getType()); + tempNode->setLine(getLine()); + + return tempNode; + + case EOpVectorTimesMatrix: + if (getType().getBasicType() != EbtFloat) { + infoSink.info.message(EPrefixInternalError, getLine(), "Constant Folding cannot be done for vector times matrix"); + return 0; + } + + tempConstArray = new ConstantUnion[getNominalSize()]; + {// support MSVC++6.0 + for (int size = getNominalSize(), i = 0; i < size; i++) { + tempConstArray[i].setFConst(0.0f); + for (int j = 0; j < size; j++) { + tempConstArray[i].setFConst(tempConstArray[i].getFConst() + ((unionArray[j].getFConst()) * rightUnionArray[i*size + j].getFConst())); + } + } + } + break; + + case EOpLogicalAnd: // this code is written for possible future use, will not get executed currently + tempConstArray = new ConstantUnion[objectSize]; + {// support MSVC++6.0 + for (size_t i = 0; i < objectSize; i++) + tempConstArray[i] = unionArray[i] && rightUnionArray[i]; + } + break; + + case EOpLogicalOr: // this code is written for possible future use, will not get executed currently + tempConstArray = new ConstantUnion[objectSize]; + {// support MSVC++6.0 + for (size_t i = 0; i < objectSize; i++) + tempConstArray[i] = unionArray[i] || rightUnionArray[i]; + } + break; + + case EOpLogicalXor: + tempConstArray = new ConstantUnion[objectSize]; + {// support MSVC++6.0 + for (size_t i = 0; i < objectSize; i++) + switch (getType().getBasicType()) { + case EbtBool: tempConstArray[i].setBConst((unionArray[i] == rightUnionArray[i]) ? false : true); break; + default: assert(false && "Default missing"); + } + } + break; + + case EOpLessThan: + assert(objectSize == 1); + tempConstArray = new ConstantUnion[1]; + tempConstArray->setBConst(*unionArray < *rightUnionArray); + returnType = TType(EbtBool, EbpUndefined, EvqConst); + break; + case EOpGreaterThan: + assert(objectSize == 1); + tempConstArray = new ConstantUnion[1]; + tempConstArray->setBConst(*unionArray > *rightUnionArray); + returnType = TType(EbtBool, EbpUndefined, EvqConst); + break; + case EOpLessThanEqual: + { + assert(objectSize == 1); + ConstantUnion constant; + constant.setBConst(*unionArray > *rightUnionArray); + tempConstArray = new ConstantUnion[1]; + tempConstArray->setBConst(!constant.getBConst()); + returnType = TType(EbtBool, EbpUndefined, EvqConst); + break; + } + case EOpGreaterThanEqual: + { + assert(objectSize == 1); + ConstantUnion constant; + constant.setBConst(*unionArray < *rightUnionArray); + tempConstArray = new ConstantUnion[1]; + tempConstArray->setBConst(!constant.getBConst()); + returnType = TType(EbtBool, EbpUndefined, EvqConst); + break; + } + + case EOpEqual: + if (getType().getBasicType() == EbtStruct) { + if (!CompareStructure(node->getType(), node->getUnionArrayPointer(), unionArray)) + boolNodeFlag = true; + } else { + for (size_t i = 0; i < objectSize; i++) { + if (unionArray[i] != rightUnionArray[i]) { + boolNodeFlag = true; + break; // break out of for loop + } + } + } + + tempConstArray = new ConstantUnion[1]; + if (!boolNodeFlag) { + tempConstArray->setBConst(true); + } + else { + tempConstArray->setBConst(false); + } + + tempNode = new TIntermConstantUnion(tempConstArray, TType(EbtBool, EbpUndefined, EvqConst)); + tempNode->setLine(getLine()); + + return tempNode; + + case EOpNotEqual: + if (getType().getBasicType() == EbtStruct) { + if (CompareStructure(node->getType(), node->getUnionArrayPointer(), unionArray)) + boolNodeFlag = true; + } else { + for (size_t i = 0; i < objectSize; i++) { + if (unionArray[i] == rightUnionArray[i]) { + boolNodeFlag = true; + break; // break out of for loop + } + } + } + + tempConstArray = new ConstantUnion[1]; + if (!boolNodeFlag) { + tempConstArray->setBConst(true); + } + else { + tempConstArray->setBConst(false); + } + + tempNode = new TIntermConstantUnion(tempConstArray, TType(EbtBool, EbpUndefined, EvqConst)); + tempNode->setLine(getLine()); + + return tempNode; + + default: + infoSink.info.message(EPrefixInternalError, getLine(), "Invalid operator for constant folding"); + return 0; + } + tempNode = new TIntermConstantUnion(tempConstArray, returnType); + tempNode->setLine(getLine()); + + return tempNode; + } else { + // + // Do unary operations + // + TIntermConstantUnion *newNode = 0; + ConstantUnion* tempConstArray = new ConstantUnion[objectSize]; + for (size_t i = 0; i < objectSize; i++) { + switch(op) { + case EOpNegative: + switch (getType().getBasicType()) { + case EbtFloat: tempConstArray[i].setFConst(-unionArray[i].getFConst()); break; + case EbtInt: tempConstArray[i].setIConst(-unionArray[i].getIConst()); break; + default: + infoSink.info.message(EPrefixInternalError, getLine(), "Unary operation not folded into constant"); + return 0; + } + break; + case EOpLogicalNot: // this code is written for possible future use, will not get executed currently + switch (getType().getBasicType()) { + case EbtBool: tempConstArray[i].setBConst(!unionArray[i].getBConst()); break; + default: + infoSink.info.message(EPrefixInternalError, getLine(), "Unary operation not folded into constant"); + return 0; + } + break; + default: + return 0; + } + } + newNode = new TIntermConstantUnion(tempConstArray, getType()); + newNode->setLine(getLine()); + return newNode; + } +} + +TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermConstantUnion* node) +{ + size_t size = node->getType().getObjectSize(); + + ConstantUnion *leftUnionArray = new ConstantUnion[size]; + + for (size_t i = 0; i < size; i++) { + + switch (promoteTo) { + case EbtFloat: + switch (node->getType().getBasicType()) { + case EbtInt: + leftUnionArray[i].setFConst(static_cast(node->getIConst(i))); + break; + case EbtBool: + leftUnionArray[i].setFConst(static_cast(node->getBConst(i))); + break; + case EbtFloat: + leftUnionArray[i].setFConst(static_cast(node->getFConst(i))); + break; + default: + infoSink.info.message(EPrefixInternalError, node->getLine(), "Cannot promote"); + return 0; + } + break; + case EbtInt: + switch (node->getType().getBasicType()) { + case EbtInt: + leftUnionArray[i].setIConst(static_cast(node->getIConst(i))); + break; + case EbtBool: + leftUnionArray[i].setIConst(static_cast(node->getBConst(i))); + break; + case EbtFloat: + leftUnionArray[i].setIConst(static_cast(node->getFConst(i))); + break; + default: + infoSink.info.message(EPrefixInternalError, node->getLine(), "Cannot promote"); + return 0; + } + break; + case EbtBool: + switch (node->getType().getBasicType()) { + case EbtInt: + leftUnionArray[i].setBConst(node->getIConst(i) != 0); + break; + case EbtBool: + leftUnionArray[i].setBConst(node->getBConst(i)); + break; + case EbtFloat: + leftUnionArray[i].setBConst(node->getFConst(i) != 0.0f); + break; + default: + infoSink.info.message(EPrefixInternalError, node->getLine(), "Cannot promote"); + return 0; + } + + break; + default: + infoSink.info.message(EPrefixInternalError, node->getLine(), "Incorrect data type found"); + return 0; + } + + } + + const TType& t = node->getType(); + + return addConstantUnion(leftUnionArray, TType(promoteTo, t.getPrecision(), t.getQualifier(), t.getNominalSize(), t.isMatrix(), t.isArray()), node->getLine()); +} + +// static +TString TIntermTraverser::hash(const TString& name, ShHashFunction64 hashFunction) +{ + if (hashFunction == NULL || name.empty()) + return name; + khronos_uint64_t number = (*hashFunction)(name.c_str(), name.length()); + TStringStream stream; + stream << HASHED_NAME_PREFIX << std::hex << number; + TString hashedName = stream.str(); + return hashedName; +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/MMap.h b/Source/ThirdParty/ANGLE/src/compiler/MMap.h new file mode 100644 index 00000000000..a308671514c --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/MMap.h @@ -0,0 +1,56 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef _MMAP_INCLUDED_ +#define _MMAP_INCLUDED_ + +// +// Encapsulate memory mapped files +// + +class TMMap { +public: + TMMap(const char* fileName) : + fSize(-1), // -1 is the error value returned by GetFileSize() + fp(NULL), + fBuff(0) // 0 is the error value returned by MapViewOfFile() + { + if ((fp = fopen(fileName, "r")) == NULL) + return; + char c = getc(fp); + fSize = 0; + while (c != EOF) { + fSize++; + c = getc(fp); + } + if (c == EOF) + fSize++; + rewind(fp); + fBuff = (char*)malloc(sizeof(char) * fSize); + int count = 0; + c = getc(fp); + while (c != EOF) { + fBuff[count++] = c; + c = getc(fp); + } + fBuff[count++] = c; + } + + char* getData() { return fBuff; } + int getSize() { return fSize; } + + ~TMMap() { + if (fp != NULL) + fclose(fp); + } + +private: + int fSize; // size of file to map in + FILE *fp; + char* fBuff; // the actual data; +}; + +#endif // _MMAP_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.cpp b/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.cpp new file mode 100644 index 00000000000..a41d20f4e8f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.cpp @@ -0,0 +1,122 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/MapLongVariableNames.h" + +namespace { + +TString mapLongName(size_t id, const TString& name, bool isGlobal) +{ + ASSERT(name.size() > MAX_SHORTENED_IDENTIFIER_SIZE); + TStringStream stream; + stream << "webgl_"; + if (isGlobal) + stream << "g"; + stream << id; + if (name[0] != '_') + stream << "_"; + stream << name.substr(0, MAX_SHORTENED_IDENTIFIER_SIZE - stream.str().size()); + return stream.str(); +} + +LongNameMap* gLongNameMapInstance = NULL; + +} // anonymous namespace + +LongNameMap::LongNameMap() + : refCount(0) +{ +} + +LongNameMap::~LongNameMap() +{ +} + +// static +LongNameMap* LongNameMap::GetInstance() +{ + if (gLongNameMapInstance == NULL) + gLongNameMapInstance = new LongNameMap; + gLongNameMapInstance->refCount++; + return gLongNameMapInstance; +} + +void LongNameMap::Release() +{ + ASSERT(gLongNameMapInstance == this); + ASSERT(refCount > 0); + refCount--; + if (refCount == 0) { + delete gLongNameMapInstance; + gLongNameMapInstance = NULL; + } +} + +const char* LongNameMap::Find(const char* originalName) const +{ + std::map::const_iterator it = mLongNameMap.find( + originalName); + if (it != mLongNameMap.end()) + return (*it).second.c_str(); + return NULL; +} + +void LongNameMap::Insert(const char* originalName, const char* mappedName) +{ + mLongNameMap.insert(std::map::value_type( + originalName, mappedName)); +} + +size_t LongNameMap::Size() const +{ + return mLongNameMap.size(); +} + +MapLongVariableNames::MapLongVariableNames(LongNameMap* globalMap) +{ + ASSERT(globalMap); + mGlobalMap = globalMap; +} + +void MapLongVariableNames::visitSymbol(TIntermSymbol* symbol) +{ + ASSERT(symbol != NULL); + if (symbol->getSymbol().size() > MAX_SHORTENED_IDENTIFIER_SIZE) { + switch (symbol->getQualifier()) { + case EvqVaryingIn: + case EvqVaryingOut: + case EvqInvariantVaryingIn: + case EvqInvariantVaryingOut: + case EvqUniform: + symbol->setSymbol( + mapGlobalLongName(symbol->getSymbol())); + break; + default: + symbol->setSymbol( + mapLongName(symbol->getId(), symbol->getSymbol(), false)); + break; + }; + } +} + +bool MapLongVariableNames::visitLoop(Visit, TIntermLoop* node) +{ + if (node->getInit()) + node->getInit()->traverse(this); + return true; +} + +TString MapLongVariableNames::mapGlobalLongName(const TString& name) +{ + ASSERT(mGlobalMap); + const char* mappedName = mGlobalMap->Find(name.c_str()); + if (mappedName != NULL) + return mappedName; + size_t id = mGlobalMap->Size(); + TString rt = mapLongName(id, name, true); + mGlobalMap->Insert(name.c_str(), rt.c_str()); + return rt; +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h b/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h new file mode 100644 index 00000000000..d6352acb4b2 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h @@ -0,0 +1,59 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_MAP_LONG_VARIABLE_NAMES_H_ +#define COMPILER_MAP_LONG_VARIABLE_NAMES_H_ + +#include "GLSLANG/ShaderLang.h" + +#include "compiler/intermediate.h" +#include "compiler/VariableInfo.h" + +// This size does not include '\0' in the end. +#define MAX_SHORTENED_IDENTIFIER_SIZE 32 + +// This is a ref-counted singleton. GetInstance() returns a pointer to the +// singleton, and after use, call Release(). GetInstance() and Release() should +// be paired. +class LongNameMap { +public: + static LongNameMap* GetInstance(); + void Release(); + + // Return the mapped name if is in the map; + // otherwise, return NULL. + const char* Find(const char* originalName) const; + + // Insert a pair into the map. + void Insert(const char* originalName, const char* mappedName); + + // Return the number of entries in the map. + size_t Size() const; + +private: + LongNameMap(); + ~LongNameMap(); + + size_t refCount; + std::map mLongNameMap; +}; + +// Traverses intermediate tree to map attributes and uniforms names that are +// longer than MAX_SHORTENED_IDENTIFIER_SIZE to MAX_SHORTENED_IDENTIFIER_SIZE. +class MapLongVariableNames : public TIntermTraverser { +public: + MapLongVariableNames(LongNameMap* globalMap); + + virtual void visitSymbol(TIntermSymbol*); + virtual bool visitLoop(Visit, TIntermLoop*); + +private: + TString mapGlobalLongName(const TString& name); + + LongNameMap* mGlobalMap; +}; + +#endif // COMPILER_MAP_LONG_VARIABLE_NAMES_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/OutputESSL.cpp b/Source/ThirdParty/ANGLE/src/compiler/OutputESSL.cpp new file mode 100644 index 00000000000..c2048f1cec4 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/OutputESSL.cpp @@ -0,0 +1,26 @@ +// +// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/OutputESSL.h" + +TOutputESSL::TOutputESSL(TInfoSinkBase& objSink, + ShArrayIndexClampingStrategy clampingStrategy, + ShHashFunction64 hashFunction, + NameMap& nameMap, + TSymbolTable& symbolTable) + : TOutputGLSLBase(objSink, clampingStrategy, hashFunction, nameMap, symbolTable) +{ +} + +bool TOutputESSL::writeVariablePrecision(TPrecision precision) +{ + if (precision == EbpUndefined) + return false; + + TInfoSinkBase& out = objSink(); + out << getPrecisionString(precision); + return true; +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/OutputESSL.h b/Source/ThirdParty/ANGLE/src/compiler/OutputESSL.h new file mode 100644 index 00000000000..05db96e4979 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/OutputESSL.h @@ -0,0 +1,25 @@ +// +// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef CROSSCOMPILERGLSL_OUTPUTESSL_H_ +#define CROSSCOMPILERGLSL_OUTPUTESSL_H_ + +#include "compiler/OutputGLSLBase.h" + +class TOutputESSL : public TOutputGLSLBase +{ +public: + TOutputESSL(TInfoSinkBase& objSink, + ShArrayIndexClampingStrategy clampingStrategy, + ShHashFunction64 hashFunction, + NameMap& nameMap, + TSymbolTable& symbolTable); + +protected: + virtual bool writeVariablePrecision(TPrecision precision); +}; + +#endif // CROSSCOMPILERGLSL_OUTPUTESSL_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.cpp b/Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.cpp new file mode 100644 index 00000000000..10a451c0d76 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.cpp @@ -0,0 +1,35 @@ +// +// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/OutputGLSL.h" + +TOutputGLSL::TOutputGLSL(TInfoSinkBase& objSink, + ShArrayIndexClampingStrategy clampingStrategy, + ShHashFunction64 hashFunction, + NameMap& nameMap, + TSymbolTable& symbolTable) + : TOutputGLSLBase(objSink, clampingStrategy, hashFunction, nameMap, symbolTable) +{ +} + +bool TOutputGLSL::writeVariablePrecision(TPrecision) +{ + return false; +} + +void TOutputGLSL::visitSymbol(TIntermSymbol* node) +{ + TInfoSinkBase& out = objSink(); + + if (node->getSymbol() == "gl_FragDepthEXT") + { + out << "gl_FragDepth"; + } + else + { + TOutputGLSLBase::visitSymbol(node); + } +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.h b/Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.h new file mode 100644 index 00000000000..fa68ac81030 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.h @@ -0,0 +1,26 @@ +// +// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef CROSSCOMPILERGLSL_OUTPUTGLSL_H_ +#define CROSSCOMPILERGLSL_OUTPUTGLSL_H_ + +#include "compiler/OutputGLSLBase.h" + +class TOutputGLSL : public TOutputGLSLBase +{ +public: + TOutputGLSL(TInfoSinkBase& objSink, + ShArrayIndexClampingStrategy clampingStrategy, + ShHashFunction64 hashFunction, + NameMap& nameMap, + TSymbolTable& symbolTable); + +protected: + virtual bool writeVariablePrecision(TPrecision); + virtual void visitSymbol(TIntermSymbol* node); +}; + +#endif // CROSSCOMPILERGLSL_OUTPUTGLSL_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp b/Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp new file mode 100644 index 00000000000..d677c756338 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp @@ -0,0 +1,817 @@ +// +// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/OutputGLSLBase.h" +#include "compiler/debug.h" + +#include + +namespace +{ +TString arrayBrackets(const TType& type) +{ + ASSERT(type.isArray()); + TInfoSinkBase out; + out << "[" << type.getArraySize() << "]"; + return TString(out.c_str()); +} + +bool isSingleStatement(TIntermNode* node) { + if (const TIntermAggregate* aggregate = node->getAsAggregate()) + { + return (aggregate->getOp() != EOpFunction) && + (aggregate->getOp() != EOpSequence); + } + else if (const TIntermSelection* selection = node->getAsSelectionNode()) + { + // Ternary operators are usually part of an assignment operator. + // This handles those rare cases in which they are all by themselves. + return selection->usesTernaryOperator(); + } + else if (node->getAsLoopNode()) + { + return false; + } + return true; +} +} // namespace + +TOutputGLSLBase::TOutputGLSLBase(TInfoSinkBase& objSink, + ShArrayIndexClampingStrategy clampingStrategy, + ShHashFunction64 hashFunction, + NameMap& nameMap, + TSymbolTable& symbolTable) + : TIntermTraverser(true, true, true), + mObjSink(objSink), + mDeclaringVariables(false), + mClampingStrategy(clampingStrategy), + mHashFunction(hashFunction), + mNameMap(nameMap), + mSymbolTable(symbolTable) +{ +} + +void TOutputGLSLBase::writeTriplet(Visit visit, const char* preStr, const char* inStr, const char* postStr) +{ + TInfoSinkBase& out = objSink(); + if (visit == PreVisit && preStr) + { + out << preStr; + } + else if (visit == InVisit && inStr) + { + out << inStr; + } + else if (visit == PostVisit && postStr) + { + out << postStr; + } +} + +void TOutputGLSLBase::writeVariableType(const TType& type) +{ + TInfoSinkBase& out = objSink(); + TQualifier qualifier = type.getQualifier(); + // TODO(alokp): Validate qualifier for variable declarations. + if ((qualifier != EvqTemporary) && (qualifier != EvqGlobal)) + out << type.getQualifierString() << " "; + // Declare the struct if we have not done so already. + if ((type.getBasicType() == EbtStruct) && !structDeclared(type.getStruct())) + { + declareStruct(type.getStruct()); + } + else + { + if (writeVariablePrecision(type.getPrecision())) + out << " "; + out << getTypeName(type); + } +} + +void TOutputGLSLBase::writeFunctionParameters(const TIntermSequence& args) +{ + TInfoSinkBase& out = objSink(); + for (TIntermSequence::const_iterator iter = args.begin(); + iter != args.end(); ++iter) + { + const TIntermSymbol* arg = (*iter)->getAsSymbolNode(); + ASSERT(arg != NULL); + + const TType& type = arg->getType(); + writeVariableType(type); + + const TString& name = arg->getSymbol(); + if (!name.empty()) + out << " " << hashName(name); + if (type.isArray()) + out << arrayBrackets(type); + + // Put a comma if this is not the last argument. + if (iter != args.end() - 1) + out << ", "; + } +} + +const ConstantUnion* TOutputGLSLBase::writeConstantUnion(const TType& type, + const ConstantUnion* pConstUnion) +{ + TInfoSinkBase& out = objSink(); + + if (type.getBasicType() == EbtStruct) + { + const TStructure* structure = type.getStruct(); + out << hashName(structure->name()) << "("; + + const TFieldList& fields = structure->fields(); + for (size_t i = 0; i < fields.size(); ++i) + { + const TType* fieldType = fields[i]->type(); + ASSERT(fieldType != NULL); + pConstUnion = writeConstantUnion(*fieldType, pConstUnion); + if (i != fields.size() - 1) out << ", "; + } + out << ")"; + } + else + { + size_t size = type.getObjectSize(); + bool writeType = size > 1; + if (writeType) out << getTypeName(type) << "("; + for (size_t i = 0; i < size; ++i, ++pConstUnion) + { + switch (pConstUnion->getType()) + { + case EbtFloat: out << std::min(FLT_MAX, std::max(-FLT_MAX, pConstUnion->getFConst())); break; + case EbtInt: out << pConstUnion->getIConst(); break; + case EbtBool: out << pConstUnion->getBConst(); break; + default: UNREACHABLE(); + } + if (i != size - 1) out << ", "; + } + if (writeType) out << ")"; + } + return pConstUnion; +} + +void TOutputGLSLBase::visitSymbol(TIntermSymbol* node) +{ + TInfoSinkBase& out = objSink(); + if (mLoopUnroll.NeedsToReplaceSymbolWithValue(node)) + out << mLoopUnroll.GetLoopIndexValue(node); + else + out << hashVariableName(node->getSymbol()); + + if (mDeclaringVariables && node->getType().isArray()) + out << arrayBrackets(node->getType()); +} + +void TOutputGLSLBase::visitConstantUnion(TIntermConstantUnion* node) +{ + writeConstantUnion(node->getType(), node->getUnionArrayPointer()); +} + +bool TOutputGLSLBase::visitBinary(Visit visit, TIntermBinary* node) +{ + bool visitChildren = true; + TInfoSinkBase& out = objSink(); + switch (node->getOp()) + { + case EOpInitialize: + if (visit == InVisit) + { + out << " = "; + // RHS of initialize is not being declared. + mDeclaringVariables = false; + } + break; + case EOpAssign: writeTriplet(visit, "(", " = ", ")"); break; + case EOpAddAssign: writeTriplet(visit, "(", " += ", ")"); break; + case EOpSubAssign: writeTriplet(visit, "(", " -= ", ")"); break; + case EOpDivAssign: writeTriplet(visit, "(", " /= ", ")"); break; + // Notice the fall-through. + case EOpMulAssign: + case EOpVectorTimesMatrixAssign: + case EOpVectorTimesScalarAssign: + case EOpMatrixTimesScalarAssign: + case EOpMatrixTimesMatrixAssign: + writeTriplet(visit, "(", " *= ", ")"); + break; + + case EOpIndexDirect: + writeTriplet(visit, NULL, "[", "]"); + break; + case EOpIndexIndirect: + if (node->getAddIndexClamp()) + { + if (visit == InVisit) + { + if (mClampingStrategy == SH_CLAMP_WITH_CLAMP_INTRINSIC) { + out << "[int(clamp(float("; + } else { + out << "[webgl_int_clamp("; + } + } + else if (visit == PostVisit) + { + int maxSize; + TIntermTyped *left = node->getLeft(); + TType leftType = left->getType(); + + if (left->isArray()) + { + // The shader will fail validation if the array length is not > 0. + maxSize = leftType.getArraySize() - 1; + } + else + { + maxSize = leftType.getNominalSize() - 1; + } + + if (mClampingStrategy == SH_CLAMP_WITH_CLAMP_INTRINSIC) { + out << "), 0.0, float(" << maxSize << ")))]"; + } else { + out << ", 0, " << maxSize << ")]"; + } + } + } + else + { + writeTriplet(visit, NULL, "[", "]"); + } + break; + case EOpIndexDirectStruct: + if (visit == InVisit) + { + // Here we are writing out "foo.bar", where "foo" is struct + // and "bar" is field. In AST, it is represented as a binary + // node, where left child represents "foo" and right child "bar". + // The node itself represents ".". The struct field "bar" is + // actually stored as an index into TStructure::fields. + out << "."; + const TStructure* structure = node->getLeft()->getType().getStruct(); + const TIntermConstantUnion* index = node->getRight()->getAsConstantUnion(); + const TField* field = structure->fields()[index->getIConst(0)]; + + TString fieldName = field->name(); + if (!mSymbolTable.findBuiltIn(structure->name())) + fieldName = hashName(fieldName); + + out << fieldName; + visitChildren = false; + } + break; + case EOpVectorSwizzle: + if (visit == InVisit) + { + out << "."; + TIntermAggregate* rightChild = node->getRight()->getAsAggregate(); + TIntermSequence& sequence = rightChild->getSequence(); + for (TIntermSequence::iterator sit = sequence.begin(); sit != sequence.end(); ++sit) + { + TIntermConstantUnion* element = (*sit)->getAsConstantUnion(); + ASSERT(element->getBasicType() == EbtInt); + ASSERT(element->getNominalSize() == 1); + const ConstantUnion& data = element->getUnionArrayPointer()[0]; + ASSERT(data.getType() == EbtInt); + switch (data.getIConst()) + { + case 0: out << "x"; break; + case 1: out << "y"; break; + case 2: out << "z"; break; + case 3: out << "w"; break; + default: UNREACHABLE(); break; + } + } + visitChildren = false; + } + break; + + case EOpAdd: writeTriplet(visit, "(", " + ", ")"); break; + case EOpSub: writeTriplet(visit, "(", " - ", ")"); break; + case EOpMul: writeTriplet(visit, "(", " * ", ")"); break; + case EOpDiv: writeTriplet(visit, "(", " / ", ")"); break; + case EOpMod: UNIMPLEMENTED(); break; + case EOpEqual: writeTriplet(visit, "(", " == ", ")"); break; + case EOpNotEqual: writeTriplet(visit, "(", " != ", ")"); break; + case EOpLessThan: writeTriplet(visit, "(", " < ", ")"); break; + case EOpGreaterThan: writeTriplet(visit, "(", " > ", ")"); break; + case EOpLessThanEqual: writeTriplet(visit, "(", " <= ", ")"); break; + case EOpGreaterThanEqual: writeTriplet(visit, "(", " >= ", ")"); break; + + // Notice the fall-through. + case EOpVectorTimesScalar: + case EOpVectorTimesMatrix: + case EOpMatrixTimesVector: + case EOpMatrixTimesScalar: + case EOpMatrixTimesMatrix: + writeTriplet(visit, "(", " * ", ")"); + break; + + case EOpLogicalOr: writeTriplet(visit, "(", " || ", ")"); break; + case EOpLogicalXor: writeTriplet(visit, "(", " ^^ ", ")"); break; + case EOpLogicalAnd: writeTriplet(visit, "(", " && ", ")"); break; + default: UNREACHABLE(); break; + } + + return visitChildren; +} + +bool TOutputGLSLBase::visitUnary(Visit visit, TIntermUnary* node) +{ + TString preString; + TString postString = ")"; + + switch (node->getOp()) + { + case EOpNegative: preString = "(-"; break; + case EOpVectorLogicalNot: preString = "not("; break; + case EOpLogicalNot: preString = "(!"; break; + + case EOpPostIncrement: preString = "("; postString = "++)"; break; + case EOpPostDecrement: preString = "("; postString = "--)"; break; + case EOpPreIncrement: preString = "(++"; break; + case EOpPreDecrement: preString = "(--"; break; + + case EOpConvIntToBool: + case EOpConvFloatToBool: + switch (node->getOperand()->getType().getNominalSize()) + { + case 1: preString = "bool("; break; + case 2: preString = "bvec2("; break; + case 3: preString = "bvec3("; break; + case 4: preString = "bvec4("; break; + default: UNREACHABLE(); + } + break; + case EOpConvBoolToFloat: + case EOpConvIntToFloat: + switch (node->getOperand()->getType().getNominalSize()) + { + case 1: preString = "float("; break; + case 2: preString = "vec2("; break; + case 3: preString = "vec3("; break; + case 4: preString = "vec4("; break; + default: UNREACHABLE(); + } + break; + case EOpConvFloatToInt: + case EOpConvBoolToInt: + switch (node->getOperand()->getType().getNominalSize()) + { + case 1: preString = "int("; break; + case 2: preString = "ivec2("; break; + case 3: preString = "ivec3("; break; + case 4: preString = "ivec4("; break; + default: UNREACHABLE(); + } + break; + + case EOpRadians: preString = "radians("; break; + case EOpDegrees: preString = "degrees("; break; + case EOpSin: preString = "sin("; break; + case EOpCos: preString = "cos("; break; + case EOpTan: preString = "tan("; break; + case EOpAsin: preString = "asin("; break; + case EOpAcos: preString = "acos("; break; + case EOpAtan: preString = "atan("; break; + + case EOpExp: preString = "exp("; break; + case EOpLog: preString = "log("; break; + case EOpExp2: preString = "exp2("; break; + case EOpLog2: preString = "log2("; break; + case EOpSqrt: preString = "sqrt("; break; + case EOpInverseSqrt: preString = "inversesqrt("; break; + + case EOpAbs: preString = "abs("; break; + case EOpSign: preString = "sign("; break; + case EOpFloor: preString = "floor("; break; + case EOpCeil: preString = "ceil("; break; + case EOpFract: preString = "fract("; break; + + case EOpLength: preString = "length("; break; + case EOpNormalize: preString = "normalize("; break; + + case EOpDFdx: preString = "dFdx("; break; + case EOpDFdy: preString = "dFdy("; break; + case EOpFwidth: preString = "fwidth("; break; + + case EOpAny: preString = "any("; break; + case EOpAll: preString = "all("; break; + + default: UNREACHABLE(); break; + } + + if (visit == PreVisit && node->getUseEmulatedFunction()) + preString = BuiltInFunctionEmulator::GetEmulatedFunctionName(preString); + writeTriplet(visit, preString.c_str(), NULL, postString.c_str()); + + return true; +} + +bool TOutputGLSLBase::visitSelection(Visit visit, TIntermSelection* node) +{ + TInfoSinkBase& out = objSink(); + + if (node->usesTernaryOperator()) + { + // Notice two brackets at the beginning and end. The outer ones + // encapsulate the whole ternary expression. This preserves the + // order of precedence when ternary expressions are used in a + // compound expression, i.e., c = 2 * (a < b ? 1 : 2). + out << "(("; + node->getCondition()->traverse(this); + out << ") ? ("; + node->getTrueBlock()->traverse(this); + out << ") : ("; + node->getFalseBlock()->traverse(this); + out << "))"; + } + else + { + out << "if ("; + node->getCondition()->traverse(this); + out << ")\n"; + + incrementDepth(); + visitCodeBlock(node->getTrueBlock()); + + if (node->getFalseBlock()) + { + out << "else\n"; + visitCodeBlock(node->getFalseBlock()); + } + decrementDepth(); + } + return false; +} + +bool TOutputGLSLBase::visitAggregate(Visit visit, TIntermAggregate* node) +{ + bool visitChildren = true; + TInfoSinkBase& out = objSink(); + TString preString; + bool delayedWrite = false; + switch (node->getOp()) + { + case EOpSequence: { + // Scope the sequences except when at the global scope. + if (depth > 0) out << "{\n"; + + incrementDepth(); + const TIntermSequence& sequence = node->getSequence(); + for (TIntermSequence::const_iterator iter = sequence.begin(); + iter != sequence.end(); ++iter) + { + TIntermNode* node = *iter; + ASSERT(node != NULL); + node->traverse(this); + + if (isSingleStatement(node)) + out << ";\n"; + } + decrementDepth(); + + // Scope the sequences except when at the global scope. + if (depth > 0) out << "}\n"; + visitChildren = false; + break; + } + case EOpPrototype: { + // Function declaration. + ASSERT(visit == PreVisit); + writeVariableType(node->getType()); + out << " " << hashName(node->getName()); + + out << "("; + writeFunctionParameters(node->getSequence()); + out << ")"; + + visitChildren = false; + break; + } + case EOpFunction: { + // Function definition. + ASSERT(visit == PreVisit); + writeVariableType(node->getType()); + out << " " << hashFunctionName(node->getName()); + + incrementDepth(); + // Function definition node contains one or two children nodes + // representing function parameters and function body. The latter + // is not present in case of empty function bodies. + const TIntermSequence& sequence = node->getSequence(); + ASSERT((sequence.size() == 1) || (sequence.size() == 2)); + TIntermSequence::const_iterator seqIter = sequence.begin(); + + // Traverse function parameters. + TIntermAggregate* params = (*seqIter)->getAsAggregate(); + ASSERT(params != NULL); + ASSERT(params->getOp() == EOpParameters); + params->traverse(this); + + // Traverse function body. + TIntermAggregate* body = ++seqIter != sequence.end() ? + (*seqIter)->getAsAggregate() : NULL; + visitCodeBlock(body); + decrementDepth(); + + // Fully processed; no need to visit children. + visitChildren = false; + break; + } + case EOpFunctionCall: + // Function call. + if (visit == PreVisit) + { + out << hashFunctionName(node->getName()) << "("; + } + else if (visit == InVisit) + { + out << ", "; + } + else + { + out << ")"; + } + break; + case EOpParameters: { + // Function parameters. + ASSERT(visit == PreVisit); + out << "("; + writeFunctionParameters(node->getSequence()); + out << ")"; + visitChildren = false; + break; + } + case EOpDeclaration: { + // Variable declaration. + if (visit == PreVisit) + { + const TIntermSequence& sequence = node->getSequence(); + const TIntermTyped* variable = sequence.front()->getAsTyped(); + writeVariableType(variable->getType()); + out << " "; + mDeclaringVariables = true; + } + else if (visit == InVisit) + { + out << ", "; + mDeclaringVariables = true; + } + else + { + mDeclaringVariables = false; + } + break; + } + case EOpConstructFloat: writeTriplet(visit, "float(", NULL, ")"); break; + case EOpConstructVec2: writeTriplet(visit, "vec2(", ", ", ")"); break; + case EOpConstructVec3: writeTriplet(visit, "vec3(", ", ", ")"); break; + case EOpConstructVec4: writeTriplet(visit, "vec4(", ", ", ")"); break; + case EOpConstructBool: writeTriplet(visit, "bool(", NULL, ")"); break; + case EOpConstructBVec2: writeTriplet(visit, "bvec2(", ", ", ")"); break; + case EOpConstructBVec3: writeTriplet(visit, "bvec3(", ", ", ")"); break; + case EOpConstructBVec4: writeTriplet(visit, "bvec4(", ", ", ")"); break; + case EOpConstructInt: writeTriplet(visit, "int(", NULL, ")"); break; + case EOpConstructIVec2: writeTriplet(visit, "ivec2(", ", ", ")"); break; + case EOpConstructIVec3: writeTriplet(visit, "ivec3(", ", ", ")"); break; + case EOpConstructIVec4: writeTriplet(visit, "ivec4(", ", ", ")"); break; + case EOpConstructMat2: writeTriplet(visit, "mat2(", ", ", ")"); break; + case EOpConstructMat3: writeTriplet(visit, "mat3(", ", ", ")"); break; + case EOpConstructMat4: writeTriplet(visit, "mat4(", ", ", ")"); break; + case EOpConstructStruct: + if (visit == PreVisit) + { + const TType& type = node->getType(); + ASSERT(type.getBasicType() == EbtStruct); + out << hashName(type.getStruct()->name()) << "("; + } + else if (visit == InVisit) + { + out << ", "; + } + else + { + out << ")"; + } + break; + + case EOpLessThan: preString = "lessThan("; delayedWrite = true; break; + case EOpGreaterThan: preString = "greaterThan("; delayedWrite = true; break; + case EOpLessThanEqual: preString = "lessThanEqual("; delayedWrite = true; break; + case EOpGreaterThanEqual: preString = "greaterThanEqual("; delayedWrite = true; break; + case EOpVectorEqual: preString = "equal("; delayedWrite = true; break; + case EOpVectorNotEqual: preString = "notEqual("; delayedWrite = true; break; + case EOpComma: writeTriplet(visit, NULL, ", ", NULL); break; + + case EOpMod: preString = "mod("; delayedWrite = true; break; + case EOpPow: preString = "pow("; delayedWrite = true; break; + case EOpAtan: preString = "atan("; delayedWrite = true; break; + case EOpMin: preString = "min("; delayedWrite = true; break; + case EOpMax: preString = "max("; delayedWrite = true; break; + case EOpClamp: preString = "clamp("; delayedWrite = true; break; + case EOpMix: preString = "mix("; delayedWrite = true; break; + case EOpStep: preString = "step("; delayedWrite = true; break; + case EOpSmoothStep: preString = "smoothstep("; delayedWrite = true; break; + + case EOpDistance: preString = "distance("; delayedWrite = true; break; + case EOpDot: preString = "dot("; delayedWrite = true; break; + case EOpCross: preString = "cross("; delayedWrite = true; break; + case EOpFaceForward: preString = "faceforward("; delayedWrite = true; break; + case EOpReflect: preString = "reflect("; delayedWrite = true; break; + case EOpRefract: preString = "refract("; delayedWrite = true; break; + case EOpMul: preString = "matrixCompMult("; delayedWrite = true; break; + + default: UNREACHABLE(); break; + } + if (delayedWrite && visit == PreVisit && node->getUseEmulatedFunction()) + preString = BuiltInFunctionEmulator::GetEmulatedFunctionName(preString); + if (delayedWrite) + writeTriplet(visit, preString.c_str(), ", ", ")"); + return visitChildren; +} + +bool TOutputGLSLBase::visitLoop(Visit visit, TIntermLoop* node) +{ + TInfoSinkBase& out = objSink(); + + incrementDepth(); + // Loop header. + TLoopType loopType = node->getType(); + if (loopType == ELoopFor) // for loop + { + if (!node->getUnrollFlag()) { + out << "for ("; + if (node->getInit()) + node->getInit()->traverse(this); + out << "; "; + + if (node->getCondition()) + node->getCondition()->traverse(this); + out << "; "; + + if (node->getExpression()) + node->getExpression()->traverse(this); + out << ")\n"; + } + } + else if (loopType == ELoopWhile) // while loop + { + out << "while ("; + ASSERT(node->getCondition() != NULL); + node->getCondition()->traverse(this); + out << ")\n"; + } + else // do-while loop + { + ASSERT(loopType == ELoopDoWhile); + out << "do\n"; + } + + // Loop body. + if (node->getUnrollFlag()) + { + TLoopIndexInfo indexInfo; + mLoopUnroll.FillLoopIndexInfo(node, indexInfo); + mLoopUnroll.Push(indexInfo); + while (mLoopUnroll.SatisfiesLoopCondition()) + { + visitCodeBlock(node->getBody()); + mLoopUnroll.Step(); + } + mLoopUnroll.Pop(); + } + else + { + visitCodeBlock(node->getBody()); + } + + // Loop footer. + if (loopType == ELoopDoWhile) // do-while loop + { + out << "while ("; + ASSERT(node->getCondition() != NULL); + node->getCondition()->traverse(this); + out << ");\n"; + } + decrementDepth(); + + // No need to visit children. They have been already processed in + // this function. + return false; +} + +bool TOutputGLSLBase::visitBranch(Visit visit, TIntermBranch* node) +{ + switch (node->getFlowOp()) + { + case EOpKill: writeTriplet(visit, "discard", NULL, NULL); break; + case EOpBreak: writeTriplet(visit, "break", NULL, NULL); break; + case EOpContinue: writeTriplet(visit, "continue", NULL, NULL); break; + case EOpReturn: writeTriplet(visit, "return ", NULL, NULL); break; + default: UNREACHABLE(); break; + } + + return true; +} + +void TOutputGLSLBase::visitCodeBlock(TIntermNode* node) { + TInfoSinkBase &out = objSink(); + if (node != NULL) + { + node->traverse(this); + // Single statements not part of a sequence need to be terminated + // with semi-colon. + if (isSingleStatement(node)) + out << ";\n"; + } + else + { + out << "{\n}\n"; // Empty code block. + } +} + +TString TOutputGLSLBase::getTypeName(const TType& type) +{ + TInfoSinkBase out; + if (type.isMatrix()) + { + out << "mat"; + out << type.getNominalSize(); + } + else if (type.isVector()) + { + switch (type.getBasicType()) + { + case EbtFloat: out << "vec"; break; + case EbtInt: out << "ivec"; break; + case EbtBool: out << "bvec"; break; + default: UNREACHABLE(); break; + } + out << type.getNominalSize(); + } + else + { + if (type.getBasicType() == EbtStruct) + out << hashName(type.getStruct()->name()); + else + out << type.getBasicString(); + } + return TString(out.c_str()); +} + +TString TOutputGLSLBase::hashName(const TString& name) +{ + if (mHashFunction == NULL || name.empty()) + return name; + NameMap::const_iterator it = mNameMap.find(name.c_str()); + if (it != mNameMap.end()) + return it->second.c_str(); + TString hashedName = TIntermTraverser::hash(name, mHashFunction); + mNameMap[name.c_str()] = hashedName.c_str(); + return hashedName; +} + +TString TOutputGLSLBase::hashVariableName(const TString& name) +{ + if (mSymbolTable.findBuiltIn(name) != NULL) + return name; + return hashName(name); +} + +TString TOutputGLSLBase::hashFunctionName(const TString& mangled_name) +{ + TString name = TFunction::unmangleName(mangled_name); + if (mSymbolTable.findBuiltIn(mangled_name) != NULL || name == "main") + return name; + return hashName(name); +} + +bool TOutputGLSLBase::structDeclared(const TStructure* structure) const +{ + return mDeclaredStructs.find(structure->name()) != mDeclaredStructs.end(); +} + +void TOutputGLSLBase::declareStruct(const TStructure* structure) +{ + TInfoSinkBase& out = objSink(); + + out << "struct " << hashName(structure->name()) << "{\n"; + const TFieldList& fields = structure->fields(); + for (size_t i = 0; i < fields.size(); ++i) + { + const TField* field = fields[i]; + if (writeVariablePrecision(field->type()->getPrecision())) + out << " "; + out << getTypeName(*field->type()) << " " << hashName(field->name()); + if (field->type()->isArray()) + out << arrayBrackets(*field->type()); + out << ";\n"; + } + out << "}"; + + mDeclaredStructs.insert(structure->name()); +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h b/Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h new file mode 100644 index 00000000000..df4ad68c2c8 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h @@ -0,0 +1,79 @@ +// +// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef CROSSCOMPILERGLSL_OUTPUTGLSLBASE_H_ +#define CROSSCOMPILERGLSL_OUTPUTGLSLBASE_H_ + +#include + +#include "compiler/ForLoopUnroll.h" +#include "compiler/intermediate.h" +#include "compiler/ParseHelper.h" + +class TOutputGLSLBase : public TIntermTraverser +{ +public: + TOutputGLSLBase(TInfoSinkBase& objSink, + ShArrayIndexClampingStrategy clampingStrategy, + ShHashFunction64 hashFunction, + NameMap& nameMap, + TSymbolTable& symbolTable); + +protected: + TInfoSinkBase& objSink() { return mObjSink; } + void writeTriplet(Visit visit, const char* preStr, const char* inStr, const char* postStr); + void writeVariableType(const TType& type); + virtual bool writeVariablePrecision(TPrecision precision) = 0; + void writeFunctionParameters(const TIntermSequence& args); + const ConstantUnion* writeConstantUnion(const TType& type, const ConstantUnion* pConstUnion); + TString getTypeName(const TType& type); + + virtual void visitSymbol(TIntermSymbol* node); + virtual void visitConstantUnion(TIntermConstantUnion* node); + virtual bool visitBinary(Visit visit, TIntermBinary* node); + virtual bool visitUnary(Visit visit, TIntermUnary* node); + virtual bool visitSelection(Visit visit, TIntermSelection* node); + virtual bool visitAggregate(Visit visit, TIntermAggregate* node); + virtual bool visitLoop(Visit visit, TIntermLoop* node); + virtual bool visitBranch(Visit visit, TIntermBranch* node); + + void visitCodeBlock(TIntermNode* node); + + + // Return the original name if hash function pointer is NULL; + // otherwise return the hashed name. + TString hashName(const TString& name); + // Same as hashName(), but without hashing built-in variables. + TString hashVariableName(const TString& name); + // Same as hashName(), but without hashing built-in functions. + TString hashFunctionName(const TString& mangled_name); + +private: + bool structDeclared(const TStructure* structure) const; + void declareStruct(const TStructure* structure); + + TInfoSinkBase& mObjSink; + bool mDeclaringVariables; + + // Structs are declared as the tree is traversed. This set contains all + // the structs already declared. It is maintained so that a struct is + // declared only once. + typedef std::set DeclaredStructs; + DeclaredStructs mDeclaredStructs; + + ForLoopUnroll mLoopUnroll; + + ShArrayIndexClampingStrategy mClampingStrategy; + + // name hashing. + ShHashFunction64 mHashFunction; + + NameMap& mNameMap; + + TSymbolTable& mSymbolTable; +}; + +#endif // CROSSCOMPILERGLSL_OUTPUTGLSLBASE_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.cpp b/Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.cpp new file mode 100644 index 00000000000..e0afe546d2d --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.cpp @@ -0,0 +1,3252 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/OutputHLSL.h" + +#include "common/angleutils.h" +#include "compiler/debug.h" +#include "compiler/DetectDiscontinuity.h" +#include "compiler/InfoSink.h" +#include "compiler/SearchSymbol.h" +#include "compiler/UnfoldShortCircuit.h" + +#include +#include +#include + +namespace sh +{ +// Integer to TString conversion +TString str(int i) +{ + char buffer[20]; + snprintf(buffer, sizeof(buffer), "%d", i); + return buffer; +} + +OutputHLSL::OutputHLSL(TParseContext &context, const ShBuiltInResources& resources, ShShaderOutput outputType) + : TIntermTraverser(true, true, true), mContext(context), mOutputType(outputType) +{ + mUnfoldShortCircuit = new UnfoldShortCircuit(context, this); + mInsideFunction = false; + + mUsesTexture2D = false; + mUsesTexture2D_bias = false; + mUsesTexture2DProj = false; + mUsesTexture2DProj_bias = false; + mUsesTexture2DProjLod = false; + mUsesTexture2DLod = false; + mUsesTextureCube = false; + mUsesTextureCube_bias = false; + mUsesTextureCubeLod = false; + mUsesTexture2DLod0 = false; + mUsesTexture2DLod0_bias = false; + mUsesTexture2DProjLod0 = false; + mUsesTexture2DProjLod0_bias = false; + mUsesTextureCubeLod0 = false; + mUsesTextureCubeLod0_bias = false; + mUsesFragColor = false; + mUsesFragData = false; + mUsesDepthRange = false; + mUsesFragCoord = false; + mUsesPointCoord = false; + mUsesFrontFacing = false; + mUsesPointSize = false; + mUsesFragDepth = false; + mUsesXor = false; + mUsesMod1 = false; + mUsesMod2v = false; + mUsesMod2f = false; + mUsesMod3v = false; + mUsesMod3f = false; + mUsesMod4v = false; + mUsesMod4f = false; + mUsesFaceforward1 = false; + mUsesFaceforward2 = false; + mUsesFaceforward3 = false; + mUsesFaceforward4 = false; + mUsesEqualMat2 = false; + mUsesEqualMat3 = false; + mUsesEqualMat4 = false; + mUsesEqualVec2 = false; + mUsesEqualVec3 = false; + mUsesEqualVec4 = false; + mUsesEqualIVec2 = false; + mUsesEqualIVec3 = false; + mUsesEqualIVec4 = false; + mUsesEqualBVec2 = false; + mUsesEqualBVec3 = false; + mUsesEqualBVec4 = false; + mUsesAtan2_1 = false; + mUsesAtan2_2 = false; + mUsesAtan2_3 = false; + mUsesAtan2_4 = false; + + mNumRenderTargets = resources.EXT_draw_buffers ? resources.MaxDrawBuffers : 1; + + mScopeDepth = 0; + + mUniqueIndex = 0; + + mContainsLoopDiscontinuity = false; + mOutputLod0Function = false; + mInsideDiscontinuousLoop = false; + + mExcessiveLoopIndex = NULL; + + if (mOutputType == SH_HLSL9_OUTPUT) + { + if (mContext.shaderType == SH_FRAGMENT_SHADER) + { + mUniformRegister = 3; // Reserve registers for dx_DepthRange, dx_ViewCoords and dx_DepthFront + } + else + { + mUniformRegister = 2; // Reserve registers for dx_DepthRange and dx_ViewAdjust + } + } + else + { + mUniformRegister = 0; + } + + mSamplerRegister = 0; +} + +OutputHLSL::~OutputHLSL() +{ + delete mUnfoldShortCircuit; +} + +void OutputHLSL::output() +{ + mContainsLoopDiscontinuity = mContext.shaderType == SH_FRAGMENT_SHADER && containsLoopDiscontinuity(mContext.treeRoot); + + mContext.treeRoot->traverse(this); // Output the body first to determine what has to go in the header + header(); + + mContext.infoSink().obj << mHeader.c_str(); + mContext.infoSink().obj << mBody.c_str(); +} + +TInfoSinkBase &OutputHLSL::getBodyStream() +{ + return mBody; +} + +const ActiveUniforms &OutputHLSL::getUniforms() +{ + return mActiveUniforms; +} + +int OutputHLSL::vectorSize(const TType &type) const +{ + int elementSize = type.isMatrix() ? type.getNominalSize() : 1; + int arraySize = type.isArray() ? type.getArraySize() : 1; + + return elementSize * arraySize; +} + +void OutputHLSL::header() +{ + ShShaderType shaderType = mContext.shaderType; + TInfoSinkBase &out = mHeader; + + for (StructDeclarations::iterator structDeclaration = mStructDeclarations.begin(); structDeclaration != mStructDeclarations.end(); structDeclaration++) + { + out << *structDeclaration; + } + + for (Constructors::iterator constructor = mConstructors.begin(); constructor != mConstructors.end(); constructor++) + { + out << *constructor; + } + + TString uniforms; + TString varyings; + TString attributes; + + for (ReferencedSymbols::const_iterator uniform = mReferencedUniforms.begin(); uniform != mReferencedUniforms.end(); uniform++) + { + const TType &type = uniform->second->getType(); + const TString &name = uniform->second->getSymbol(); + + if (mOutputType == SH_HLSL11_OUTPUT && IsSampler(type.getBasicType())) // Also declare the texture + { + int index = samplerRegister(mReferencedUniforms[name]); + + uniforms += "uniform SamplerState sampler_" + decorateUniform(name, type) + arrayString(type) + + " : register(s" + str(index) + ");\n"; + + uniforms += "uniform " + textureString(type) + " texture_" + decorateUniform(name, type) + arrayString(type) + + " : register(t" + str(index) + ");\n"; + } + else + { + uniforms += "uniform " + typeString(type) + " " + decorateUniform(name, type) + arrayString(type) + + " : register(" + registerString(mReferencedUniforms[name]) + ");\n"; + } + } + + for (ReferencedSymbols::const_iterator varying = mReferencedVaryings.begin(); varying != mReferencedVaryings.end(); varying++) + { + const TType &type = varying->second->getType(); + const TString &name = varying->second->getSymbol(); + + // Program linking depends on this exact format + varyings += "static " + typeString(type) + " " + decorate(name) + arrayString(type) + " = " + initializer(type) + ";\n"; + } + + for (ReferencedSymbols::const_iterator attribute = mReferencedAttributes.begin(); attribute != mReferencedAttributes.end(); attribute++) + { + const TType &type = attribute->second->getType(); + const TString &name = attribute->second->getSymbol(); + + attributes += "static " + typeString(type) + " " + decorate(name) + arrayString(type) + " = " + initializer(type) + ";\n"; + } + + if (shaderType == SH_FRAGMENT_SHADER) + { + TExtensionBehavior::const_iterator iter = mContext.extensionBehavior().find("GL_EXT_draw_buffers"); + const bool usingMRTExtension = (iter != mContext.extensionBehavior().end() && (iter->second == EBhEnable || iter->second == EBhRequire)); + + const unsigned int numColorValues = usingMRTExtension ? mNumRenderTargets : 1; + + out << "// Varyings\n"; + out << varyings; + out << "\n" + "static float4 gl_Color[" << numColorValues << "] =\n" + "{\n"; + for (unsigned int i = 0; i < numColorValues; i++) + { + out << " float4(0, 0, 0, 0)"; + if (i + 1 != numColorValues) + { + out << ","; + } + out << "\n"; + } + out << "};\n"; + + if (mUsesFragDepth) + { + out << "static float gl_Depth = 0.0;\n"; + } + + if (mUsesFragCoord) + { + out << "static float4 gl_FragCoord = float4(0, 0, 0, 0);\n"; + } + + if (mUsesPointCoord) + { + out << "static float2 gl_PointCoord = float2(0.5, 0.5);\n"; + } + + if (mUsesFrontFacing) + { + out << "static bool gl_FrontFacing = false;\n"; + } + + out << "\n"; + + if (mUsesDepthRange) + { + out << "struct gl_DepthRangeParameters\n" + "{\n" + " float near;\n" + " float far;\n" + " float diff;\n" + "};\n" + "\n"; + } + + if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "cbuffer DriverConstants : register(b1)\n" + "{\n"; + + if (mUsesDepthRange) + { + out << " float3 dx_DepthRange : packoffset(c0);\n"; + } + + if (mUsesFragCoord) + { + out << " float4 dx_ViewCoords : packoffset(c1);\n"; + } + + if (mUsesFragCoord || mUsesFrontFacing) + { + out << " float3 dx_DepthFront : packoffset(c2);\n"; + } + + out << "};\n"; + } + else + { + if (mUsesDepthRange) + { + out << "uniform float3 dx_DepthRange : register(c0);"; + } + + if (mUsesFragCoord) + { + out << "uniform float4 dx_ViewCoords : register(c1);\n"; + } + + if (mUsesFragCoord || mUsesFrontFacing) + { + out << "uniform float3 dx_DepthFront : register(c2);\n"; + } + } + + out << "\n"; + + if (mUsesDepthRange) + { + out << "static gl_DepthRangeParameters gl_DepthRange = {dx_DepthRange.x, dx_DepthRange.y, dx_DepthRange.z};\n" + "\n"; + } + + out << uniforms; + out << "\n"; + + if (mUsesTexture2D) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_texture2D(sampler2D s, float2 t)\n" + "{\n" + " return tex2D(s, t);\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_texture2D(Texture2D t, SamplerState s, float2 uv)\n" + "{\n" + " return t.Sample(s, uv);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (mUsesTexture2D_bias) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_texture2D(sampler2D s, float2 t, float bias)\n" + "{\n" + " return tex2Dbias(s, float4(t.x, t.y, 0, bias));\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_texture2D(Texture2D t, SamplerState s, float2 uv, float bias)\n" + "{\n" + " return t.SampleBias(s, uv, bias);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (mUsesTexture2DProj) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_texture2DProj(sampler2D s, float3 t)\n" + "{\n" + " return tex2Dproj(s, float4(t.x, t.y, 0, t.z));\n" + "}\n" + "\n" + "float4 gl_texture2DProj(sampler2D s, float4 t)\n" + "{\n" + " return tex2Dproj(s, t);\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_texture2DProj(Texture2D t, SamplerState s, float3 uvw)\n" + "{\n" + " return t.Sample(s, float2(uvw.x / uvw.z, uvw.y / uvw.z));\n" + "}\n" + "\n" + "float4 gl_texture2DProj(Texture2D t, SamplerState s, float4 uvw)\n" + "{\n" + " return t.Sample(s, float2(uvw.x / uvw.w, uvw.y / uvw.w));\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (mUsesTexture2DProj_bias) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_texture2DProj(sampler2D s, float3 t, float bias)\n" + "{\n" + " return tex2Dbias(s, float4(t.x / t.z, t.y / t.z, 0, bias));\n" + "}\n" + "\n" + "float4 gl_texture2DProj(sampler2D s, float4 t, float bias)\n" + "{\n" + " return tex2Dbias(s, float4(t.x / t.w, t.y / t.w, 0, bias));\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_texture2DProj(Texture2D t, SamplerState s, float3 uvw, float bias)\n" + "{\n" + " return t.SampleBias(s, float2(uvw.x / uvw.z, uvw.y / uvw.z), bias);\n" + "}\n" + "\n" + "float4 gl_texture2DProj(Texture2D t, SamplerState s, float4 uvw, float bias)\n" + "{\n" + " return t.SampleBias(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), bias);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (mUsesTextureCube) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_textureCube(samplerCUBE s, float3 t)\n" + "{\n" + " return texCUBE(s, t);\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_textureCube(TextureCube t, SamplerState s, float3 uvw)\n" + "{\n" + " return t.Sample(s, uvw);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (mUsesTextureCube_bias) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_textureCube(samplerCUBE s, float3 t, float bias)\n" + "{\n" + " return texCUBEbias(s, float4(t.x, t.y, t.z, bias));\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_textureCube(TextureCube t, SamplerState s, float3 uvw, float bias)\n" + "{\n" + " return t.SampleBias(s, uvw, bias);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + // These *Lod0 intrinsics are not available in GL fragment shaders. + // They are used to sample using discontinuous texture coordinates. + if (mUsesTexture2DLod0) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_texture2DLod0(sampler2D s, float2 t)\n" + "{\n" + " return tex2Dlod(s, float4(t.x, t.y, 0, 0));\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_texture2DLod0(Texture2D t, SamplerState s, float2 uv)\n" + "{\n" + " return t.SampleLevel(s, uv, 0);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (mUsesTexture2DLod0_bias) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_texture2DLod0(sampler2D s, float2 t, float bias)\n" + "{\n" + " return tex2Dlod(s, float4(t.x, t.y, 0, 0));\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_texture2DLod0(Texture2D t, SamplerState s, float2 uv, float bias)\n" + "{\n" + " return t.SampleLevel(s, uv, 0);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (mUsesTexture2DProjLod0) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_texture2DProjLod0(sampler2D s, float3 t)\n" + "{\n" + " return tex2Dlod(s, float4(t.x / t.z, t.y / t.z, 0, 0));\n" + "}\n" + "\n" + "float4 gl_texture2DProjLod(sampler2D s, float4 t)\n" + "{\n" + " return tex2Dlod(s, float4(t.x / t.w, t.y / t.w, 0, 0));\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_texture2DProjLod0(Texture2D t, SamplerState s, float3 uvw)\n" + "{\n" + " return t.SampleLevel(s, float2(uvw.x / uvw.z, uvw.y / uvw.z), 0);\n" + "}\n" + "\n" + "float4 gl_texture2DProjLod0(Texture2D t, SamplerState s, float4 uvw)\n" + "{\n" + " return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), 0);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (mUsesTexture2DProjLod0_bias) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_texture2DProjLod0_bias(sampler2D s, float3 t, float bias)\n" + "{\n" + " return tex2Dlod(s, float4(t.x / t.z, t.y / t.z, 0, 0));\n" + "}\n" + "\n" + "float4 gl_texture2DProjLod_bias(sampler2D s, float4 t, float bias)\n" + "{\n" + " return tex2Dlod(s, float4(t.x / t.w, t.y / t.w, 0, 0));\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_texture2DProjLod_bias(Texture2D t, SamplerState s, float3 uvw, float bias)\n" + "{\n" + " return t.SampleLevel(s, float2(uvw.x / uvw.z, uvw.y / uvw.z), 0);\n" + "}\n" + "\n" + "float4 gl_texture2DProjLod_bias(Texture2D t, SamplerState s, float4 uvw, float bias)\n" + "{\n" + " return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), 0);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (mUsesTextureCubeLod0) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_textureCubeLod0(samplerCUBE s, float3 t)\n" + "{\n" + " return texCUBElod(s, float4(t.x, t.y, t.z, 0));\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_textureCubeLod0(TextureCube t, SamplerState s, float3 uvw)\n" + "{\n" + " return t.SampleLevel(s, uvw, 0);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (mUsesTextureCubeLod0_bias) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_textureCubeLod0(samplerCUBE s, float3 t, float bias)\n" + "{\n" + " return texCUBElod(s, float4(t.x, t.y, t.z, 0));\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_textureCubeLod0(TextureCube t, SamplerState s, float3 uvw, float bias)\n" + "{\n" + " return t.SampleLevel(s, uvw, 0);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (usingMRTExtension && mNumRenderTargets > 1) + { + out << "#define GL_USES_MRT\n"; + } + + if (mUsesFragColor) + { + out << "#define GL_USES_FRAG_COLOR\n"; + } + + if (mUsesFragData) + { + out << "#define GL_USES_FRAG_DATA\n"; + } + } + else // Vertex shader + { + out << "// Attributes\n"; + out << attributes; + out << "\n" + "static float4 gl_Position = float4(0, 0, 0, 0);\n"; + + if (mUsesPointSize) + { + out << "static float gl_PointSize = float(1);\n"; + } + + out << "\n" + "// Varyings\n"; + out << varyings; + out << "\n"; + + if (mUsesDepthRange) + { + out << "struct gl_DepthRangeParameters\n" + "{\n" + " float near;\n" + " float far;\n" + " float diff;\n" + "};\n" + "\n"; + } + + if (mOutputType == SH_HLSL11_OUTPUT) + { + if (mUsesDepthRange) + { + out << "cbuffer DriverConstants : register(b1)\n" + "{\n" + " float3 dx_DepthRange : packoffset(c0);\n" + "};\n" + "\n"; + } + } + else + { + if (mUsesDepthRange) + { + out << "uniform float3 dx_DepthRange : register(c0);\n"; + } + + out << "uniform float4 dx_ViewAdjust : register(c1);\n" + "\n"; + } + + if (mUsesDepthRange) + { + out << "static gl_DepthRangeParameters gl_DepthRange = {dx_DepthRange.x, dx_DepthRange.y, dx_DepthRange.z};\n" + "\n"; + } + + out << uniforms; + out << "\n"; + + if (mUsesTexture2D) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_texture2D(sampler2D s, float2 t)\n" + "{\n" + " return tex2Dlod(s, float4(t.x, t.y, 0, 0));\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_texture2D(Texture2D t, SamplerState s, float2 uv)\n" + "{\n" + " return t.SampleLevel(s, uv, 0);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (mUsesTexture2DLod) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_texture2DLod(sampler2D s, float2 t, float lod)\n" + "{\n" + " return tex2Dlod(s, float4(t.x, t.y, 0, lod));\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_texture2DLod(Texture2D t, SamplerState s, float2 uv, float lod)\n" + "{\n" + " return t.SampleLevel(s, uv, lod);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (mUsesTexture2DProj) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_texture2DProj(sampler2D s, float3 t)\n" + "{\n" + " return tex2Dlod(s, float4(t.x / t.z, t.y / t.z, 0, 0));\n" + "}\n" + "\n" + "float4 gl_texture2DProj(sampler2D s, float4 t)\n" + "{\n" + " return tex2Dlod(s, float4(t.x / t.w, t.y / t.w, 0, 0));\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_texture2DProj(Texture2D t, SamplerState s, float3 uvw)\n" + "{\n" + " return t.SampleLevel(s, float2(uvw.x / uvw.z, uvw.y / uvw.z), 0);\n" + "}\n" + "\n" + "float4 gl_texture2DProj(Texture2D t, SamplerState s, float4 uvw)\n" + "{\n" + " return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), 0);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (mUsesTexture2DProjLod) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_texture2DProjLod(sampler2D s, float3 t, float lod)\n" + "{\n" + " return tex2Dlod(s, float4(t.x / t.z, t.y / t.z, 0, lod));\n" + "}\n" + "\n" + "float4 gl_texture2DProjLod(sampler2D s, float4 t, float lod)\n" + "{\n" + " return tex2Dlod(s, float4(t.x / t.w, t.y / t.w, 0, lod));\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_texture2DProj(Texture2D t, SamplerState s, float3 uvw, float lod)\n" + "{\n" + " return t.SampleLevel(s, float2(uvw.x / uvw.z, uvw.y / uvw.z), lod);\n" + "}\n" + "\n" + "float4 gl_texture2DProj(Texture2D t, SamplerState s, float4 uvw)\n" + "{\n" + " return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), lod);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (mUsesTextureCube) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_textureCube(samplerCUBE s, float3 t)\n" + "{\n" + " return texCUBElod(s, float4(t.x, t.y, t.z, 0));\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_textureCube(TextureCube t, SamplerState s, float3 uvw)\n" + "{\n" + " return t.SampleLevel(s, uvw, 0);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + + if (mUsesTextureCubeLod) + { + if (mOutputType == SH_HLSL9_OUTPUT) + { + out << "float4 gl_textureCubeLod(samplerCUBE s, float3 t, float lod)\n" + "{\n" + " return texCUBElod(s, float4(t.x, t.y, t.z, lod));\n" + "}\n" + "\n"; + } + else if (mOutputType == SH_HLSL11_OUTPUT) + { + out << "float4 gl_textureCubeLod(TextureCube t, SamplerState s, float3 uvw, float lod)\n" + "{\n" + " return t.SampleLevel(s, uvw, lod);\n" + "}\n" + "\n"; + } + else UNREACHABLE(); + } + } + + if (mUsesFragCoord) + { + out << "#define GL_USES_FRAG_COORD\n"; + } + + if (mUsesPointCoord) + { + out << "#define GL_USES_POINT_COORD\n"; + } + + if (mUsesFrontFacing) + { + out << "#define GL_USES_FRONT_FACING\n"; + } + + if (mUsesPointSize) + { + out << "#define GL_USES_POINT_SIZE\n"; + } + + if (mUsesFragDepth) + { + out << "#define GL_USES_FRAG_DEPTH\n"; + } + + if (mUsesDepthRange) + { + out << "#define GL_USES_DEPTH_RANGE\n"; + } + + if (mUsesXor) + { + out << "bool xor(bool p, bool q)\n" + "{\n" + " return (p || q) && !(p && q);\n" + "}\n" + "\n"; + } + + if (mUsesMod1) + { + out << "float mod(float x, float y)\n" + "{\n" + " return x - y * floor(x / y);\n" + "}\n" + "\n"; + } + + if (mUsesMod2v) + { + out << "float2 mod(float2 x, float2 y)\n" + "{\n" + " return x - y * floor(x / y);\n" + "}\n" + "\n"; + } + + if (mUsesMod2f) + { + out << "float2 mod(float2 x, float y)\n" + "{\n" + " return x - y * floor(x / y);\n" + "}\n" + "\n"; + } + + if (mUsesMod3v) + { + out << "float3 mod(float3 x, float3 y)\n" + "{\n" + " return x - y * floor(x / y);\n" + "}\n" + "\n"; + } + + if (mUsesMod3f) + { + out << "float3 mod(float3 x, float y)\n" + "{\n" + " return x - y * floor(x / y);\n" + "}\n" + "\n"; + } + + if (mUsesMod4v) + { + out << "float4 mod(float4 x, float4 y)\n" + "{\n" + " return x - y * floor(x / y);\n" + "}\n" + "\n"; + } + + if (mUsesMod4f) + { + out << "float4 mod(float4 x, float y)\n" + "{\n" + " return x - y * floor(x / y);\n" + "}\n" + "\n"; + } + + if (mUsesFaceforward1) + { + out << "float faceforward(float N, float I, float Nref)\n" + "{\n" + " if(dot(Nref, I) >= 0)\n" + " {\n" + " return -N;\n" + " }\n" + " else\n" + " {\n" + " return N;\n" + " }\n" + "}\n" + "\n"; + } + + if (mUsesFaceforward2) + { + out << "float2 faceforward(float2 N, float2 I, float2 Nref)\n" + "{\n" + " if(dot(Nref, I) >= 0)\n" + " {\n" + " return -N;\n" + " }\n" + " else\n" + " {\n" + " return N;\n" + " }\n" + "}\n" + "\n"; + } + + if (mUsesFaceforward3) + { + out << "float3 faceforward(float3 N, float3 I, float3 Nref)\n" + "{\n" + " if(dot(Nref, I) >= 0)\n" + " {\n" + " return -N;\n" + " }\n" + " else\n" + " {\n" + " return N;\n" + " }\n" + "}\n" + "\n"; + } + + if (mUsesFaceforward4) + { + out << "float4 faceforward(float4 N, float4 I, float4 Nref)\n" + "{\n" + " if(dot(Nref, I) >= 0)\n" + " {\n" + " return -N;\n" + " }\n" + " else\n" + " {\n" + " return N;\n" + " }\n" + "}\n" + "\n"; + } + + if (mUsesEqualMat2) + { + out << "bool equal(float2x2 m, float2x2 n)\n" + "{\n" + " return m[0][0] == n[0][0] && m[0][1] == n[0][1] &&\n" + " m[1][0] == n[1][0] && m[1][1] == n[1][1];\n" + "}\n"; + } + + if (mUsesEqualMat3) + { + out << "bool equal(float3x3 m, float3x3 n)\n" + "{\n" + " return m[0][0] == n[0][0] && m[0][1] == n[0][1] && m[0][2] == n[0][2] &&\n" + " m[1][0] == n[1][0] && m[1][1] == n[1][1] && m[1][2] == n[1][2] &&\n" + " m[2][0] == n[2][0] && m[2][1] == n[2][1] && m[2][2] == n[2][2];\n" + "}\n"; + } + + if (mUsesEqualMat4) + { + out << "bool equal(float4x4 m, float4x4 n)\n" + "{\n" + " return m[0][0] == n[0][0] && m[0][1] == n[0][1] && m[0][2] == n[0][2] && m[0][3] == n[0][3] &&\n" + " m[1][0] == n[1][0] && m[1][1] == n[1][1] && m[1][2] == n[1][2] && m[1][3] == n[1][3] &&\n" + " m[2][0] == n[2][0] && m[2][1] == n[2][1] && m[2][2] == n[2][2] && m[2][3] == n[2][3] &&\n" + " m[3][0] == n[3][0] && m[3][1] == n[3][1] && m[3][2] == n[3][2] && m[3][3] == n[3][3];\n" + "}\n"; + } + + if (mUsesEqualVec2) + { + out << "bool equal(float2 v, float2 u)\n" + "{\n" + " return v.x == u.x && v.y == u.y;\n" + "}\n"; + } + + if (mUsesEqualVec3) + { + out << "bool equal(float3 v, float3 u)\n" + "{\n" + " return v.x == u.x && v.y == u.y && v.z == u.z;\n" + "}\n"; + } + + if (mUsesEqualVec4) + { + out << "bool equal(float4 v, float4 u)\n" + "{\n" + " return v.x == u.x && v.y == u.y && v.z == u.z && v.w == u.w;\n" + "}\n"; + } + + if (mUsesEqualIVec2) + { + out << "bool equal(int2 v, int2 u)\n" + "{\n" + " return v.x == u.x && v.y == u.y;\n" + "}\n"; + } + + if (mUsesEqualIVec3) + { + out << "bool equal(int3 v, int3 u)\n" + "{\n" + " return v.x == u.x && v.y == u.y && v.z == u.z;\n" + "}\n"; + } + + if (mUsesEqualIVec4) + { + out << "bool equal(int4 v, int4 u)\n" + "{\n" + " return v.x == u.x && v.y == u.y && v.z == u.z && v.w == u.w;\n" + "}\n"; + } + + if (mUsesEqualBVec2) + { + out << "bool equal(bool2 v, bool2 u)\n" + "{\n" + " return v.x == u.x && v.y == u.y;\n" + "}\n"; + } + + if (mUsesEqualBVec3) + { + out << "bool equal(bool3 v, bool3 u)\n" + "{\n" + " return v.x == u.x && v.y == u.y && v.z == u.z;\n" + "}\n"; + } + + if (mUsesEqualBVec4) + { + out << "bool equal(bool4 v, bool4 u)\n" + "{\n" + " return v.x == u.x && v.y == u.y && v.z == u.z && v.w == u.w;\n" + "}\n"; + } + + if (mUsesAtan2_1) + { + out << "float atanyx(float y, float x)\n" + "{\n" + " if(x == 0 && y == 0) x = 1;\n" // Avoid producing a NaN + " return atan2(y, x);\n" + "}\n"; + } + + if (mUsesAtan2_2) + { + out << "float2 atanyx(float2 y, float2 x)\n" + "{\n" + " if(x[0] == 0 && y[0] == 0) x[0] = 1;\n" + " if(x[1] == 0 && y[1] == 0) x[1] = 1;\n" + " return float2(atan2(y[0], x[0]), atan2(y[1], x[1]));\n" + "}\n"; + } + + if (mUsesAtan2_3) + { + out << "float3 atanyx(float3 y, float3 x)\n" + "{\n" + " if(x[0] == 0 && y[0] == 0) x[0] = 1;\n" + " if(x[1] == 0 && y[1] == 0) x[1] = 1;\n" + " if(x[2] == 0 && y[2] == 0) x[2] = 1;\n" + " return float3(atan2(y[0], x[0]), atan2(y[1], x[1]), atan2(y[2], x[2]));\n" + "}\n"; + } + + if (mUsesAtan2_4) + { + out << "float4 atanyx(float4 y, float4 x)\n" + "{\n" + " if(x[0] == 0 && y[0] == 0) x[0] = 1;\n" + " if(x[1] == 0 && y[1] == 0) x[1] = 1;\n" + " if(x[2] == 0 && y[2] == 0) x[2] = 1;\n" + " if(x[3] == 0 && y[3] == 0) x[3] = 1;\n" + " return float4(atan2(y[0], x[0]), atan2(y[1], x[1]), atan2(y[2], x[2]), atan2(y[3], x[3]));\n" + "}\n"; + } +} + +void OutputHLSL::visitSymbol(TIntermSymbol *node) +{ + TInfoSinkBase &out = mBody; + + TString name = node->getSymbol(); + + if (name == "gl_FragColor") + { + out << "gl_Color[0]"; + mUsesFragColor = true; + } + else if (name == "gl_FragData") + { + out << "gl_Color"; + mUsesFragData = true; + } + else if (name == "gl_DepthRange") + { + mUsesDepthRange = true; + out << name; + } + else if (name == "gl_FragCoord") + { + mUsesFragCoord = true; + out << name; + } + else if (name == "gl_PointCoord") + { + mUsesPointCoord = true; + out << name; + } + else if (name == "gl_FrontFacing") + { + mUsesFrontFacing = true; + out << name; + } + else if (name == "gl_PointSize") + { + mUsesPointSize = true; + out << name; + } + else if (name == "gl_FragDepthEXT") + { + mUsesFragDepth = true; + out << "gl_Depth"; + } + else + { + TQualifier qualifier = node->getQualifier(); + + if (qualifier == EvqUniform) + { + mReferencedUniforms[name] = node; + out << decorateUniform(name, node->getType()); + } + else if (qualifier == EvqAttribute) + { + mReferencedAttributes[name] = node; + out << decorate(name); + } + else if (qualifier == EvqVaryingOut || qualifier == EvqInvariantVaryingOut || qualifier == EvqVaryingIn || qualifier == EvqInvariantVaryingIn) + { + mReferencedVaryings[name] = node; + out << decorate(name); + } + else + { + out << decorate(name); + } + } +} + +bool OutputHLSL::visitBinary(Visit visit, TIntermBinary *node) +{ + TInfoSinkBase &out = mBody; + + switch (node->getOp()) + { + case EOpAssign: outputTriplet(visit, "(", " = ", ")"); break; + case EOpInitialize: + if (visit == PreVisit) + { + // GLSL allows to write things like "float x = x;" where a new variable x is defined + // and the value of an existing variable x is assigned. HLSL uses C semantics (the + // new variable is created before the assignment is evaluated), so we need to convert + // this to "float t = x, x = t;". + + TIntermSymbol *symbolNode = node->getLeft()->getAsSymbolNode(); + TIntermTyped *expression = node->getRight(); + + sh::SearchSymbol searchSymbol(symbolNode->getSymbol()); + expression->traverse(&searchSymbol); + bool sameSymbol = searchSymbol.foundMatch(); + + if (sameSymbol) + { + // Type already printed + out << "t" + str(mUniqueIndex) + " = "; + expression->traverse(this); + out << ", "; + symbolNode->traverse(this); + out << " = t" + str(mUniqueIndex); + + mUniqueIndex++; + return false; + } + } + else if (visit == InVisit) + { + out << " = "; + } + break; + case EOpAddAssign: outputTriplet(visit, "(", " += ", ")"); break; + case EOpSubAssign: outputTriplet(visit, "(", " -= ", ")"); break; + case EOpMulAssign: outputTriplet(visit, "(", " *= ", ")"); break; + case EOpVectorTimesScalarAssign: outputTriplet(visit, "(", " *= ", ")"); break; + case EOpMatrixTimesScalarAssign: outputTriplet(visit, "(", " *= ", ")"); break; + case EOpVectorTimesMatrixAssign: + if (visit == PreVisit) + { + out << "("; + } + else if (visit == InVisit) + { + out << " = mul("; + node->getLeft()->traverse(this); + out << ", transpose("; + } + else + { + out << ")))"; + } + break; + case EOpMatrixTimesMatrixAssign: + if (visit == PreVisit) + { + out << "("; + } + else if (visit == InVisit) + { + out << " = mul("; + node->getLeft()->traverse(this); + out << ", "; + } + else + { + out << "))"; + } + break; + case EOpDivAssign: outputTriplet(visit, "(", " /= ", ")"); break; + case EOpIndexDirect: outputTriplet(visit, "", "[", "]"); break; + case EOpIndexIndirect: outputTriplet(visit, "", "[", "]"); break; + case EOpIndexDirectStruct: + if (visit == InVisit) + { + const TStructure* structure = node->getLeft()->getType().getStruct(); + const TIntermConstantUnion* index = node->getRight()->getAsConstantUnion(); + const TField* field = structure->fields()[index->getIConst(0)]; + out << "." + decorateField(field->name(), node->getLeft()->getType()); + + return false; + } + break; + case EOpVectorSwizzle: + if (visit == InVisit) + { + out << "."; + + TIntermAggregate *swizzle = node->getRight()->getAsAggregate(); + + if (swizzle) + { + TIntermSequence &sequence = swizzle->getSequence(); + + for (TIntermSequence::iterator sit = sequence.begin(); sit != sequence.end(); sit++) + { + TIntermConstantUnion *element = (*sit)->getAsConstantUnion(); + + if (element) + { + int i = element->getIConst(0); + + switch (i) + { + case 0: out << "x"; break; + case 1: out << "y"; break; + case 2: out << "z"; break; + case 3: out << "w"; break; + default: UNREACHABLE(); + } + } + else UNREACHABLE(); + } + } + else UNREACHABLE(); + + return false; // Fully processed + } + break; + case EOpAdd: outputTriplet(visit, "(", " + ", ")"); break; + case EOpSub: outputTriplet(visit, "(", " - ", ")"); break; + case EOpMul: outputTriplet(visit, "(", " * ", ")"); break; + case EOpDiv: outputTriplet(visit, "(", " / ", ")"); break; + case EOpEqual: + case EOpNotEqual: + if (node->getLeft()->isScalar()) + { + if (node->getOp() == EOpEqual) + { + outputTriplet(visit, "(", " == ", ")"); + } + else + { + outputTriplet(visit, "(", " != ", ")"); + } + } + else if (node->getLeft()->getBasicType() == EbtStruct) + { + if (node->getOp() == EOpEqual) + { + out << "("; + } + else + { + out << "!("; + } + + const TFieldList &fields = node->getLeft()->getType().getStruct()->fields(); + + for (size_t i = 0; i < fields.size(); i++) + { + const TField *field = fields[i]; + + node->getLeft()->traverse(this); + out << "." + decorateField(field->name(), node->getLeft()->getType()) + " == "; + node->getRight()->traverse(this); + out << "." + decorateField(field->name(), node->getLeft()->getType()); + + if (i < fields.size() - 1) + { + out << " && "; + } + } + + out << ")"; + + return false; + } + else + { + if (node->getLeft()->isMatrix()) + { + switch (node->getLeft()->getNominalSize()) + { + case 2: mUsesEqualMat2 = true; break; + case 3: mUsesEqualMat3 = true; break; + case 4: mUsesEqualMat4 = true; break; + default: UNREACHABLE(); + } + } + else if (node->getLeft()->isVector()) + { + switch (node->getLeft()->getBasicType()) + { + case EbtFloat: + switch (node->getLeft()->getNominalSize()) + { + case 2: mUsesEqualVec2 = true; break; + case 3: mUsesEqualVec3 = true; break; + case 4: mUsesEqualVec4 = true; break; + default: UNREACHABLE(); + } + break; + case EbtInt: + switch (node->getLeft()->getNominalSize()) + { + case 2: mUsesEqualIVec2 = true; break; + case 3: mUsesEqualIVec3 = true; break; + case 4: mUsesEqualIVec4 = true; break; + default: UNREACHABLE(); + } + break; + case EbtBool: + switch (node->getLeft()->getNominalSize()) + { + case 2: mUsesEqualBVec2 = true; break; + case 3: mUsesEqualBVec3 = true; break; + case 4: mUsesEqualBVec4 = true; break; + default: UNREACHABLE(); + } + break; + default: UNREACHABLE(); + } + } + else UNREACHABLE(); + + if (node->getOp() == EOpEqual) + { + outputTriplet(visit, "equal(", ", ", ")"); + } + else + { + outputTriplet(visit, "!equal(", ", ", ")"); + } + } + break; + case EOpLessThan: outputTriplet(visit, "(", " < ", ")"); break; + case EOpGreaterThan: outputTriplet(visit, "(", " > ", ")"); break; + case EOpLessThanEqual: outputTriplet(visit, "(", " <= ", ")"); break; + case EOpGreaterThanEqual: outputTriplet(visit, "(", " >= ", ")"); break; + case EOpVectorTimesScalar: outputTriplet(visit, "(", " * ", ")"); break; + case EOpMatrixTimesScalar: outputTriplet(visit, "(", " * ", ")"); break; + case EOpVectorTimesMatrix: outputTriplet(visit, "mul(", ", transpose(", "))"); break; + case EOpMatrixTimesVector: outputTriplet(visit, "mul(transpose(", "), ", ")"); break; + case EOpMatrixTimesMatrix: outputTriplet(visit, "transpose(mul(transpose(", "), transpose(", ")))"); break; + case EOpLogicalOr: + out << "s" << mUnfoldShortCircuit->getNextTemporaryIndex(); + return false; + case EOpLogicalXor: + mUsesXor = true; + outputTriplet(visit, "xor(", ", ", ")"); + break; + case EOpLogicalAnd: + out << "s" << mUnfoldShortCircuit->getNextTemporaryIndex(); + return false; + default: UNREACHABLE(); + } + + return true; +} + +bool OutputHLSL::visitUnary(Visit visit, TIntermUnary *node) +{ + switch (node->getOp()) + { + case EOpNegative: outputTriplet(visit, "(-", "", ")"); break; + case EOpVectorLogicalNot: outputTriplet(visit, "(!", "", ")"); break; + case EOpLogicalNot: outputTriplet(visit, "(!", "", ")"); break; + case EOpPostIncrement: outputTriplet(visit, "(", "", "++)"); break; + case EOpPostDecrement: outputTriplet(visit, "(", "", "--)"); break; + case EOpPreIncrement: outputTriplet(visit, "(++", "", ")"); break; + case EOpPreDecrement: outputTriplet(visit, "(--", "", ")"); break; + case EOpConvIntToBool: + case EOpConvFloatToBool: + switch (node->getOperand()->getType().getNominalSize()) + { + case 1: outputTriplet(visit, "bool(", "", ")"); break; + case 2: outputTriplet(visit, "bool2(", "", ")"); break; + case 3: outputTriplet(visit, "bool3(", "", ")"); break; + case 4: outputTriplet(visit, "bool4(", "", ")"); break; + default: UNREACHABLE(); + } + break; + case EOpConvBoolToFloat: + case EOpConvIntToFloat: + switch (node->getOperand()->getType().getNominalSize()) + { + case 1: outputTriplet(visit, "float(", "", ")"); break; + case 2: outputTriplet(visit, "float2(", "", ")"); break; + case 3: outputTriplet(visit, "float3(", "", ")"); break; + case 4: outputTriplet(visit, "float4(", "", ")"); break; + default: UNREACHABLE(); + } + break; + case EOpConvFloatToInt: + case EOpConvBoolToInt: + switch (node->getOperand()->getType().getNominalSize()) + { + case 1: outputTriplet(visit, "int(", "", ")"); break; + case 2: outputTriplet(visit, "int2(", "", ")"); break; + case 3: outputTriplet(visit, "int3(", "", ")"); break; + case 4: outputTriplet(visit, "int4(", "", ")"); break; + default: UNREACHABLE(); + } + break; + case EOpRadians: outputTriplet(visit, "radians(", "", ")"); break; + case EOpDegrees: outputTriplet(visit, "degrees(", "", ")"); break; + case EOpSin: outputTriplet(visit, "sin(", "", ")"); break; + case EOpCos: outputTriplet(visit, "cos(", "", ")"); break; + case EOpTan: outputTriplet(visit, "tan(", "", ")"); break; + case EOpAsin: outputTriplet(visit, "asin(", "", ")"); break; + case EOpAcos: outputTriplet(visit, "acos(", "", ")"); break; + case EOpAtan: outputTriplet(visit, "atan(", "", ")"); break; + case EOpExp: outputTriplet(visit, "exp(", "", ")"); break; + case EOpLog: outputTriplet(visit, "log(", "", ")"); break; + case EOpExp2: outputTriplet(visit, "exp2(", "", ")"); break; + case EOpLog2: outputTriplet(visit, "log2(", "", ")"); break; + case EOpSqrt: outputTriplet(visit, "sqrt(", "", ")"); break; + case EOpInverseSqrt: outputTriplet(visit, "rsqrt(", "", ")"); break; + case EOpAbs: outputTriplet(visit, "abs(", "", ")"); break; + case EOpSign: outputTriplet(visit, "sign(", "", ")"); break; + case EOpFloor: outputTriplet(visit, "floor(", "", ")"); break; + case EOpCeil: outputTriplet(visit, "ceil(", "", ")"); break; + case EOpFract: outputTriplet(visit, "frac(", "", ")"); break; + case EOpLength: outputTriplet(visit, "length(", "", ")"); break; + case EOpNormalize: outputTriplet(visit, "normalize(", "", ")"); break; + case EOpDFdx: + if(mInsideDiscontinuousLoop || mOutputLod0Function) + { + outputTriplet(visit, "(", "", ", 0.0)"); + } + else + { + outputTriplet(visit, "ddx(", "", ")"); + } + break; + case EOpDFdy: + if(mInsideDiscontinuousLoop || mOutputLod0Function) + { + outputTriplet(visit, "(", "", ", 0.0)"); + } + else + { + outputTriplet(visit, "ddy(", "", ")"); + } + break; + case EOpFwidth: + if(mInsideDiscontinuousLoop || mOutputLod0Function) + { + outputTriplet(visit, "(", "", ", 0.0)"); + } + else + { + outputTriplet(visit, "fwidth(", "", ")"); + } + break; + case EOpAny: outputTriplet(visit, "any(", "", ")"); break; + case EOpAll: outputTriplet(visit, "all(", "", ")"); break; + default: UNREACHABLE(); + } + + return true; +} + +bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node) +{ + TInfoSinkBase &out = mBody; + + switch (node->getOp()) + { + case EOpSequence: + { + if (mInsideFunction) + { + outputLineDirective(node->getLine().first_line); + out << "{\n"; + + mScopeDepth++; + + if (mScopeBracket.size() < mScopeDepth) + { + mScopeBracket.push_back(0); // New scope level + } + else + { + mScopeBracket[mScopeDepth - 1]++; // New scope at existing level + } + } + + for (TIntermSequence::iterator sit = node->getSequence().begin(); sit != node->getSequence().end(); sit++) + { + outputLineDirective((*sit)->getLine().first_line); + + traverseStatements(*sit); + + out << ";\n"; + } + + if (mInsideFunction) + { + outputLineDirective(node->getLine().last_line); + out << "}\n"; + + mScopeDepth--; + } + + return false; + } + case EOpDeclaration: + if (visit == PreVisit) + { + TIntermSequence &sequence = node->getSequence(); + TIntermTyped *variable = sequence[0]->getAsTyped(); + + if (variable && (variable->getQualifier() == EvqTemporary || variable->getQualifier() == EvqGlobal)) + { + if (variable->getType().getStruct()) + { + addConstructor(variable->getType(), scopedStruct(variable->getType().getStruct()->name()), NULL); + } + + if (!variable->getAsSymbolNode() || variable->getAsSymbolNode()->getSymbol() != "") // Variable declaration + { + if (!mInsideFunction) + { + out << "static "; + } + + out << typeString(variable->getType()) + " "; + + for (TIntermSequence::iterator sit = sequence.begin(); sit != sequence.end(); sit++) + { + TIntermSymbol *symbol = (*sit)->getAsSymbolNode(); + + if (symbol) + { + symbol->traverse(this); + out << arrayString(symbol->getType()); + out << " = " + initializer(variable->getType()); + } + else + { + (*sit)->traverse(this); + } + + if (*sit != sequence.back()) + { + out << ", "; + } + } + } + else if (variable->getAsSymbolNode() && variable->getAsSymbolNode()->getSymbol() == "") // Type (struct) declaration + { + // Already added to constructor map + } + else UNREACHABLE(); + } + else if (variable && (variable->getQualifier() == EvqVaryingOut || variable->getQualifier() == EvqInvariantVaryingOut)) + { + for (TIntermSequence::iterator sit = sequence.begin(); sit != sequence.end(); sit++) + { + TIntermSymbol *symbol = (*sit)->getAsSymbolNode(); + + if (symbol) + { + // Vertex (output) varyings which are declared but not written to should still be declared to allow successful linking + mReferencedVaryings[symbol->getSymbol()] = symbol; + } + else + { + (*sit)->traverse(this); + } + } + } + + return false; + } + else if (visit == InVisit) + { + out << ", "; + } + break; + case EOpPrototype: + if (visit == PreVisit) + { + out << typeString(node->getType()) << " " << decorate(node->getName()) << (mOutputLod0Function ? "Lod0(" : "("); + + TIntermSequence &arguments = node->getSequence(); + + for (unsigned int i = 0; i < arguments.size(); i++) + { + TIntermSymbol *symbol = arguments[i]->getAsSymbolNode(); + + if (symbol) + { + out << argumentString(symbol); + + if (i < arguments.size() - 1) + { + out << ", "; + } + } + else UNREACHABLE(); + } + + out << ");\n"; + + // Also prototype the Lod0 variant if needed + if (mContainsLoopDiscontinuity && !mOutputLod0Function) + { + mOutputLod0Function = true; + node->traverse(this); + mOutputLod0Function = false; + } + + return false; + } + break; + case EOpComma: outputTriplet(visit, "(", ", ", ")"); break; + case EOpFunction: + { + TString name = TFunction::unmangleName(node->getName()); + + out << typeString(node->getType()) << " "; + + if (name == "main") + { + out << "gl_main("; + } + else + { + out << decorate(name) << (mOutputLod0Function ? "Lod0(" : "("); + } + + TIntermSequence &sequence = node->getSequence(); + TIntermSequence &arguments = sequence[0]->getAsAggregate()->getSequence(); + + for (unsigned int i = 0; i < arguments.size(); i++) + { + TIntermSymbol *symbol = arguments[i]->getAsSymbolNode(); + + if (symbol) + { + if (symbol->getType().getStruct()) + { + addConstructor(symbol->getType(), scopedStruct(symbol->getType().getStruct()->name()), NULL); + } + + out << argumentString(symbol); + + if (i < arguments.size() - 1) + { + out << ", "; + } + } + else UNREACHABLE(); + } + + out << ")\n" + "{\n"; + + if (sequence.size() > 1) + { + mInsideFunction = true; + sequence[1]->traverse(this); + mInsideFunction = false; + } + + out << "}\n"; + + if (mContainsLoopDiscontinuity && !mOutputLod0Function) + { + if (name != "main") + { + mOutputLod0Function = true; + node->traverse(this); + mOutputLod0Function = false; + } + } + + return false; + } + break; + case EOpFunctionCall: + { + TString name = TFunction::unmangleName(node->getName()); + bool lod0 = mInsideDiscontinuousLoop || mOutputLod0Function; + + if (node->isUserDefined()) + { + out << decorate(name) << (lod0 ? "Lod0(" : "("); + } + else + { + if (name == "texture2D") + { + if (!lod0) + { + if (node->getSequence().size() == 2) + { + mUsesTexture2D = true; + } + else if (node->getSequence().size() == 3) + { + mUsesTexture2D_bias = true; + } + else UNREACHABLE(); + + out << "gl_texture2D("; + } + else + { + if (node->getSequence().size() == 2) + { + mUsesTexture2DLod0 = true; + } + else if (node->getSequence().size() == 3) + { + mUsesTexture2DLod0_bias = true; + } + else UNREACHABLE(); + + out << "gl_texture2DLod0("; + } + } + else if (name == "texture2DProj") + { + if (!lod0) + { + if (node->getSequence().size() == 2) + { + mUsesTexture2DProj = true; + } + else if (node->getSequence().size() == 3) + { + mUsesTexture2DProj_bias = true; + } + else UNREACHABLE(); + + out << "gl_texture2DProj("; + } + else + { + if (node->getSequence().size() == 2) + { + mUsesTexture2DProjLod0 = true; + } + else if (node->getSequence().size() == 3) + { + mUsesTexture2DProjLod0_bias = true; + } + else UNREACHABLE(); + + out << "gl_texture2DProjLod0("; + } + } + else if (name == "textureCube") + { + if (!lod0) + { + if (node->getSequence().size() == 2) + { + mUsesTextureCube = true; + } + else if (node->getSequence().size() == 3) + { + mUsesTextureCube_bias = true; + } + else UNREACHABLE(); + + out << "gl_textureCube("; + } + else + { + if (node->getSequence().size() == 2) + { + mUsesTextureCubeLod0 = true; + } + else if (node->getSequence().size() == 3) + { + mUsesTextureCubeLod0_bias = true; + } + else UNREACHABLE(); + + out << "gl_textureCubeLod0("; + } + } + else if (name == "texture2DLod") + { + if (node->getSequence().size() == 3) + { + mUsesTexture2DLod = true; + } + else UNREACHABLE(); + + out << "gl_texture2DLod("; + } + else if (name == "texture2DProjLod") + { + if (node->getSequence().size() == 3) + { + mUsesTexture2DProjLod = true; + } + else UNREACHABLE(); + + out << "gl_texture2DProjLod("; + } + else if (name == "textureCubeLod") + { + if (node->getSequence().size() == 3) + { + mUsesTextureCubeLod = true; + } + else UNREACHABLE(); + + out << "gl_textureCubeLod("; + } + else UNREACHABLE(); + } + + TIntermSequence &arguments = node->getSequence(); + + for (TIntermSequence::iterator arg = arguments.begin(); arg != arguments.end(); arg++) + { + if (mOutputType == SH_HLSL11_OUTPUT && IsSampler((*arg)->getAsTyped()->getBasicType())) + { + out << "texture_"; + (*arg)->traverse(this); + out << ", sampler_"; + } + + (*arg)->traverse(this); + + if (arg < arguments.end() - 1) + { + out << ", "; + } + } + + out << ")"; + + return false; + } + break; + case EOpParameters: outputTriplet(visit, "(", ", ", ")\n{\n"); break; + case EOpConstructFloat: + addConstructor(node->getType(), "vec1", &node->getSequence()); + outputTriplet(visit, "vec1(", "", ")"); + break; + case EOpConstructVec2: + addConstructor(node->getType(), "vec2", &node->getSequence()); + outputTriplet(visit, "vec2(", ", ", ")"); + break; + case EOpConstructVec3: + addConstructor(node->getType(), "vec3", &node->getSequence()); + outputTriplet(visit, "vec3(", ", ", ")"); + break; + case EOpConstructVec4: + addConstructor(node->getType(), "vec4", &node->getSequence()); + outputTriplet(visit, "vec4(", ", ", ")"); + break; + case EOpConstructBool: + addConstructor(node->getType(), "bvec1", &node->getSequence()); + outputTriplet(visit, "bvec1(", "", ")"); + break; + case EOpConstructBVec2: + addConstructor(node->getType(), "bvec2", &node->getSequence()); + outputTriplet(visit, "bvec2(", ", ", ")"); + break; + case EOpConstructBVec3: + addConstructor(node->getType(), "bvec3", &node->getSequence()); + outputTriplet(visit, "bvec3(", ", ", ")"); + break; + case EOpConstructBVec4: + addConstructor(node->getType(), "bvec4", &node->getSequence()); + outputTriplet(visit, "bvec4(", ", ", ")"); + break; + case EOpConstructInt: + addConstructor(node->getType(), "ivec1", &node->getSequence()); + outputTriplet(visit, "ivec1(", "", ")"); + break; + case EOpConstructIVec2: + addConstructor(node->getType(), "ivec2", &node->getSequence()); + outputTriplet(visit, "ivec2(", ", ", ")"); + break; + case EOpConstructIVec3: + addConstructor(node->getType(), "ivec3", &node->getSequence()); + outputTriplet(visit, "ivec3(", ", ", ")"); + break; + case EOpConstructIVec4: + addConstructor(node->getType(), "ivec4", &node->getSequence()); + outputTriplet(visit, "ivec4(", ", ", ")"); + break; + case EOpConstructMat2: + addConstructor(node->getType(), "mat2", &node->getSequence()); + outputTriplet(visit, "mat2(", ", ", ")"); + break; + case EOpConstructMat3: + addConstructor(node->getType(), "mat3", &node->getSequence()); + outputTriplet(visit, "mat3(", ", ", ")"); + break; + case EOpConstructMat4: + addConstructor(node->getType(), "mat4", &node->getSequence()); + outputTriplet(visit, "mat4(", ", ", ")"); + break; + case EOpConstructStruct: + addConstructor(node->getType(), scopedStruct(node->getType().getStruct()->name()), &node->getSequence()); + outputTriplet(visit, structLookup(node->getType().getStruct()->name()) + "_ctor(", ", ", ")"); + break; + case EOpLessThan: outputTriplet(visit, "(", " < ", ")"); break; + case EOpGreaterThan: outputTriplet(visit, "(", " > ", ")"); break; + case EOpLessThanEqual: outputTriplet(visit, "(", " <= ", ")"); break; + case EOpGreaterThanEqual: outputTriplet(visit, "(", " >= ", ")"); break; + case EOpVectorEqual: outputTriplet(visit, "(", " == ", ")"); break; + case EOpVectorNotEqual: outputTriplet(visit, "(", " != ", ")"); break; + case EOpMod: + { + // We need to look at the number of components in both arguments + switch (node->getSequence()[0]->getAsTyped()->getNominalSize() * 10 + + node->getSequence()[1]->getAsTyped()->getNominalSize()) + { + case 11: mUsesMod1 = true; break; + case 22: mUsesMod2v = true; break; + case 21: mUsesMod2f = true; break; + case 33: mUsesMod3v = true; break; + case 31: mUsesMod3f = true; break; + case 44: mUsesMod4v = true; break; + case 41: mUsesMod4f = true; break; + default: UNREACHABLE(); + } + + outputTriplet(visit, "mod(", ", ", ")"); + } + break; + case EOpPow: outputTriplet(visit, "pow(", ", ", ")"); break; + case EOpAtan: + ASSERT(node->getSequence().size() == 2); // atan(x) is a unary operator + switch (node->getSequence()[0]->getAsTyped()->getNominalSize()) + { + case 1: mUsesAtan2_1 = true; break; + case 2: mUsesAtan2_2 = true; break; + case 3: mUsesAtan2_3 = true; break; + case 4: mUsesAtan2_4 = true; break; + default: UNREACHABLE(); + } + outputTriplet(visit, "atanyx(", ", ", ")"); + break; + case EOpMin: outputTriplet(visit, "min(", ", ", ")"); break; + case EOpMax: outputTriplet(visit, "max(", ", ", ")"); break; + case EOpClamp: outputTriplet(visit, "clamp(", ", ", ")"); break; + case EOpMix: outputTriplet(visit, "lerp(", ", ", ")"); break; + case EOpStep: outputTriplet(visit, "step(", ", ", ")"); break; + case EOpSmoothStep: outputTriplet(visit, "smoothstep(", ", ", ")"); break; + case EOpDistance: outputTriplet(visit, "distance(", ", ", ")"); break; + case EOpDot: outputTriplet(visit, "dot(", ", ", ")"); break; + case EOpCross: outputTriplet(visit, "cross(", ", ", ")"); break; + case EOpFaceForward: + { + switch (node->getSequence()[0]->getAsTyped()->getNominalSize()) // Number of components in the first argument + { + case 1: mUsesFaceforward1 = true; break; + case 2: mUsesFaceforward2 = true; break; + case 3: mUsesFaceforward3 = true; break; + case 4: mUsesFaceforward4 = true; break; + default: UNREACHABLE(); + } + + outputTriplet(visit, "faceforward(", ", ", ")"); + } + break; + case EOpReflect: outputTriplet(visit, "reflect(", ", ", ")"); break; + case EOpRefract: outputTriplet(visit, "refract(", ", ", ")"); break; + case EOpMul: outputTriplet(visit, "(", " * ", ")"); break; + default: UNREACHABLE(); + } + + return true; +} + +bool OutputHLSL::visitSelection(Visit visit, TIntermSelection *node) +{ + TInfoSinkBase &out = mBody; + + if (node->usesTernaryOperator()) + { + out << "s" << mUnfoldShortCircuit->getNextTemporaryIndex(); + } + else // if/else statement + { + mUnfoldShortCircuit->traverse(node->getCondition()); + + out << "if("; + + node->getCondition()->traverse(this); + + out << ")\n"; + + outputLineDirective(node->getLine().first_line); + out << "{\n"; + + if (node->getTrueBlock()) + { + traverseStatements(node->getTrueBlock()); + } + + outputLineDirective(node->getLine().first_line); + out << ";\n}\n"; + + if (node->getFalseBlock()) + { + out << "else\n"; + + outputLineDirective(node->getFalseBlock()->getLine().first_line); + out << "{\n"; + + outputLineDirective(node->getFalseBlock()->getLine().first_line); + traverseStatements(node->getFalseBlock()); + + outputLineDirective(node->getFalseBlock()->getLine().first_line); + out << ";\n}\n"; + } + } + + return false; +} + +void OutputHLSL::visitConstantUnion(TIntermConstantUnion *node) +{ + writeConstantUnion(node->getType(), node->getUnionArrayPointer()); +} + +bool OutputHLSL::visitLoop(Visit visit, TIntermLoop *node) +{ + bool wasDiscontinuous = mInsideDiscontinuousLoop; + + if (mContainsLoopDiscontinuity && !mInsideDiscontinuousLoop) + { + mInsideDiscontinuousLoop = containsLoopDiscontinuity(node); + } + + if (mOutputType == SH_HLSL9_OUTPUT) + { + if (handleExcessiveLoop(node)) + { + return false; + } + } + + TInfoSinkBase &out = mBody; + + if (node->getType() == ELoopDoWhile) + { + out << "{do\n"; + + outputLineDirective(node->getLine().first_line); + out << "{\n"; + } + else + { + out << "{for("; + + if (node->getInit()) + { + node->getInit()->traverse(this); + } + + out << "; "; + + if (node->getCondition()) + { + node->getCondition()->traverse(this); + } + + out << "; "; + + if (node->getExpression()) + { + node->getExpression()->traverse(this); + } + + out << ")\n"; + + outputLineDirective(node->getLine().first_line); + out << "{\n"; + } + + if (node->getBody()) + { + traverseStatements(node->getBody()); + } + + outputLineDirective(node->getLine().first_line); + out << ";}\n"; + + if (node->getType() == ELoopDoWhile) + { + outputLineDirective(node->getCondition()->getLine().first_line); + out << "while(\n"; + + node->getCondition()->traverse(this); + + out << ");"; + } + + out << "}\n"; + + mInsideDiscontinuousLoop = wasDiscontinuous; + + return false; +} + +bool OutputHLSL::visitBranch(Visit visit, TIntermBranch *node) +{ + TInfoSinkBase &out = mBody; + + switch (node->getFlowOp()) + { + case EOpKill: outputTriplet(visit, "discard;\n", "", ""); break; + case EOpBreak: + if (visit == PreVisit) + { + if (mExcessiveLoopIndex) + { + out << "{Break"; + mExcessiveLoopIndex->traverse(this); + out << " = true; break;}\n"; + } + else + { + out << "break;\n"; + } + } + break; + case EOpContinue: outputTriplet(visit, "continue;\n", "", ""); break; + case EOpReturn: + if (visit == PreVisit) + { + if (node->getExpression()) + { + out << "return "; + } + else + { + out << "return;\n"; + } + } + else if (visit == PostVisit) + { + if (node->getExpression()) + { + out << ";\n"; + } + } + break; + default: UNREACHABLE(); + } + + return true; +} + +void OutputHLSL::traverseStatements(TIntermNode *node) +{ + if (isSingleStatement(node)) + { + mUnfoldShortCircuit->traverse(node); + } + + node->traverse(this); +} + +bool OutputHLSL::isSingleStatement(TIntermNode *node) +{ + TIntermAggregate *aggregate = node->getAsAggregate(); + + if (aggregate) + { + if (aggregate->getOp() == EOpSequence) + { + return false; + } + else + { + for (TIntermSequence::iterator sit = aggregate->getSequence().begin(); sit != aggregate->getSequence().end(); sit++) + { + if (!isSingleStatement(*sit)) + { + return false; + } + } + + return true; + } + } + + return true; +} + +// Handle loops with more than 254 iterations (unsupported by D3D9) by splitting them +// (The D3D documentation says 255 iterations, but the compiler complains at anything more than 254). +bool OutputHLSL::handleExcessiveLoop(TIntermLoop *node) +{ + const int MAX_LOOP_ITERATIONS = 254; + TInfoSinkBase &out = mBody; + + // Parse loops of the form: + // for(int index = initial; index [comparator] limit; index += increment) + TIntermSymbol *index = NULL; + TOperator comparator = EOpNull; + int initial = 0; + int limit = 0; + int increment = 0; + + // Parse index name and intial value + if (node->getInit()) + { + TIntermAggregate *init = node->getInit()->getAsAggregate(); + + if (init) + { + TIntermSequence &sequence = init->getSequence(); + TIntermTyped *variable = sequence[0]->getAsTyped(); + + if (variable && variable->getQualifier() == EvqTemporary) + { + TIntermBinary *assign = variable->getAsBinaryNode(); + + if (assign->getOp() == EOpInitialize) + { + TIntermSymbol *symbol = assign->getLeft()->getAsSymbolNode(); + TIntermConstantUnion *constant = assign->getRight()->getAsConstantUnion(); + + if (symbol && constant) + { + if (constant->getBasicType() == EbtInt && constant->getNominalSize() == 1) + { + index = symbol; + initial = constant->getIConst(0); + } + } + } + } + } + } + + // Parse comparator and limit value + if (index != NULL && node->getCondition()) + { + TIntermBinary *test = node->getCondition()->getAsBinaryNode(); + + if (test && test->getLeft()->getAsSymbolNode()->getId() == index->getId()) + { + TIntermConstantUnion *constant = test->getRight()->getAsConstantUnion(); + + if (constant) + { + if (constant->getBasicType() == EbtInt && constant->getNominalSize() == 1) + { + comparator = test->getOp(); + limit = constant->getIConst(0); + } + } + } + } + + // Parse increment + if (index != NULL && comparator != EOpNull && node->getExpression()) + { + TIntermBinary *binaryTerminal = node->getExpression()->getAsBinaryNode(); + TIntermUnary *unaryTerminal = node->getExpression()->getAsUnaryNode(); + + if (binaryTerminal) + { + TOperator op = binaryTerminal->getOp(); + TIntermConstantUnion *constant = binaryTerminal->getRight()->getAsConstantUnion(); + + if (constant) + { + if (constant->getBasicType() == EbtInt && constant->getNominalSize() == 1) + { + int value = constant->getIConst(0); + + switch (op) + { + case EOpAddAssign: increment = value; break; + case EOpSubAssign: increment = -value; break; + default: UNIMPLEMENTED(); + } + } + } + } + else if (unaryTerminal) + { + TOperator op = unaryTerminal->getOp(); + + switch (op) + { + case EOpPostIncrement: increment = 1; break; + case EOpPostDecrement: increment = -1; break; + case EOpPreIncrement: increment = 1; break; + case EOpPreDecrement: increment = -1; break; + default: UNIMPLEMENTED(); + } + } + } + + if (index != NULL && comparator != EOpNull && increment != 0) + { + if (comparator == EOpLessThanEqual) + { + comparator = EOpLessThan; + limit += 1; + } + + if (comparator == EOpLessThan) + { + int iterations = (limit - initial) / increment; + + if (iterations <= MAX_LOOP_ITERATIONS) + { + return false; // Not an excessive loop + } + + TIntermSymbol *restoreIndex = mExcessiveLoopIndex; + mExcessiveLoopIndex = index; + + out << "{int "; + index->traverse(this); + out << ";\n" + "bool Break"; + index->traverse(this); + out << " = false;\n"; + + bool firstLoopFragment = true; + + while (iterations > 0) + { + int clampedLimit = initial + increment * std::min(MAX_LOOP_ITERATIONS, iterations); + + if (!firstLoopFragment) + { + out << "if(!Break"; + index->traverse(this); + out << ") {\n"; + } + + if (iterations <= MAX_LOOP_ITERATIONS) // Last loop fragment + { + mExcessiveLoopIndex = NULL; // Stops setting the Break flag + } + + // for(int index = initial; index < clampedLimit; index += increment) + + out << "for("; + index->traverse(this); + out << " = "; + out << initial; + + out << "; "; + index->traverse(this); + out << " < "; + out << clampedLimit; + + out << "; "; + index->traverse(this); + out << " += "; + out << increment; + out << ")\n"; + + outputLineDirective(node->getLine().first_line); + out << "{\n"; + + if (node->getBody()) + { + node->getBody()->traverse(this); + } + + outputLineDirective(node->getLine().first_line); + out << ";}\n"; + + if (!firstLoopFragment) + { + out << "}\n"; + } + + firstLoopFragment = false; + + initial += MAX_LOOP_ITERATIONS * increment; + iterations -= MAX_LOOP_ITERATIONS; + } + + out << "}"; + + mExcessiveLoopIndex = restoreIndex; + + return true; + } + else UNIMPLEMENTED(); + } + + return false; // Not handled as an excessive loop +} + +void OutputHLSL::outputTriplet(Visit visit, const TString &preString, const TString &inString, const TString &postString) +{ + TInfoSinkBase &out = mBody; + + if (visit == PreVisit) + { + out << preString; + } + else if (visit == InVisit) + { + out << inString; + } + else if (visit == PostVisit) + { + out << postString; + } +} + +void OutputHLSL::outputLineDirective(int line) +{ + if ((mContext.compileOptions & SH_LINE_DIRECTIVES) && (line > 0)) + { + mBody << "\n"; + mBody << "#line " << line; + + if (mContext.sourcePath) + { + mBody << " \"" << mContext.sourcePath << "\""; + } + + mBody << "\n"; + } +} + +TString OutputHLSL::argumentString(const TIntermSymbol *symbol) +{ + TQualifier qualifier = symbol->getQualifier(); + const TType &type = symbol->getType(); + TString name = symbol->getSymbol(); + + if (name.empty()) // HLSL demands named arguments, also for prototypes + { + name = "x" + str(mUniqueIndex++); + } + else + { + name = decorate(name); + } + + if (mOutputType == SH_HLSL11_OUTPUT && IsSampler(type.getBasicType())) + { + return qualifierString(qualifier) + " " + textureString(type) + " texture_" + name + arrayString(type) + ", " + + qualifierString(qualifier) + " SamplerState sampler_" + name + arrayString(type); + } + + return qualifierString(qualifier) + " " + typeString(type) + " " + name + arrayString(type); +} + +TString OutputHLSL::qualifierString(TQualifier qualifier) +{ + switch(qualifier) + { + case EvqIn: return "in"; + case EvqOut: return "out"; + case EvqInOut: return "inout"; + case EvqConstReadOnly: return "const"; + default: UNREACHABLE(); + } + + return ""; +} + +TString OutputHLSL::typeString(const TType &type) +{ + if (type.getBasicType() == EbtStruct) + { + const TString& typeName = type.getStruct()->name(); + if (typeName != "") + { + return structLookup(typeName); + } + else // Nameless structure, define in place + { + const TFieldList &fields = type.getStruct()->fields(); + + TString string = "struct\n" + "{\n"; + + for (unsigned int i = 0; i < fields.size(); i++) + { + const TField *field = fields[i]; + + string += " " + typeString(*field->type()) + " " + decorate(field->name()) + arrayString(*field->type()) + ";\n"; + } + + string += "} "; + + return string; + } + } + else if (type.isMatrix()) + { + switch (type.getNominalSize()) + { + case 2: return "float2x2"; + case 3: return "float3x3"; + case 4: return "float4x4"; + } + } + else + { + switch (type.getBasicType()) + { + case EbtFloat: + switch (type.getNominalSize()) + { + case 1: return "float"; + case 2: return "float2"; + case 3: return "float3"; + case 4: return "float4"; + } + case EbtInt: + switch (type.getNominalSize()) + { + case 1: return "int"; + case 2: return "int2"; + case 3: return "int3"; + case 4: return "int4"; + } + case EbtBool: + switch (type.getNominalSize()) + { + case 1: return "bool"; + case 2: return "bool2"; + case 3: return "bool3"; + case 4: return "bool4"; + } + case EbtVoid: + return "void"; + case EbtSampler2D: + return "sampler2D"; + case EbtSamplerCube: + return "samplerCUBE"; + case EbtSamplerExternalOES: + return "sampler2D"; + default: + break; + } + } + + UNREACHABLE(); + return ""; +} + +TString OutputHLSL::textureString(const TType &type) +{ + switch (type.getBasicType()) + { + case EbtSampler2D: + return "Texture2D"; + case EbtSamplerCube: + return "TextureCube"; + case EbtSamplerExternalOES: + return "Texture2D"; + default: + break; + } + + UNREACHABLE(); + return ""; +} + +TString OutputHLSL::arrayString(const TType &type) +{ + if (!type.isArray()) + { + return ""; + } + + return "[" + str(type.getArraySize()) + "]"; +} + +TString OutputHLSL::initializer(const TType &type) +{ + TString string; + + size_t size = type.getObjectSize(); + for (size_t component = 0; component < size; component++) + { + string += "0"; + + if (component + 1 < size) + { + string += ", "; + } + } + + return "{" + string + "}"; +} + +void OutputHLSL::addConstructor(const TType &type, const TString &name, const TIntermSequence *parameters) +{ + if (name == "") + { + return; // Nameless structures don't have constructors + } + + if (type.getStruct() && mStructNames.find(decorate(name)) != mStructNames.end()) + { + return; // Already added + } + + TType ctorType = type; + ctorType.clearArrayness(); + ctorType.setPrecision(EbpHigh); + ctorType.setQualifier(EvqTemporary); + + TString ctorName = type.getStruct() ? decorate(name) : name; + + typedef std::vector ParameterArray; + ParameterArray ctorParameters; + + if (type.getStruct()) + { + mStructNames.insert(decorate(name)); + + TString structure; + structure += "struct " + decorate(name) + "\n" + "{\n"; + + const TFieldList &fields = type.getStruct()->fields(); + + for (unsigned int i = 0; i < fields.size(); i++) + { + const TField *field = fields[i]; + + structure += " " + typeString(*field->type()) + " " + decorateField(field->name(), type) + arrayString(*field->type()) + ";\n"; + } + + structure += "};\n"; + + if (std::find(mStructDeclarations.begin(), mStructDeclarations.end(), structure) == mStructDeclarations.end()) + { + mStructDeclarations.push_back(structure); + } + + for (unsigned int i = 0; i < fields.size(); i++) + { + ctorParameters.push_back(*fields[i]->type()); + } + } + else if (parameters) + { + for (TIntermSequence::const_iterator parameter = parameters->begin(); parameter != parameters->end(); parameter++) + { + ctorParameters.push_back((*parameter)->getAsTyped()->getType()); + } + } + else UNREACHABLE(); + + TString constructor; + + if (ctorType.getStruct()) + { + constructor += ctorName + " " + ctorName + "_ctor("; + } + else // Built-in type + { + constructor += typeString(ctorType) + " " + ctorName + "("; + } + + for (unsigned int parameter = 0; parameter < ctorParameters.size(); parameter++) + { + const TType &type = ctorParameters[parameter]; + + constructor += typeString(type) + " x" + str(parameter) + arrayString(type); + + if (parameter < ctorParameters.size() - 1) + { + constructor += ", "; + } + } + + constructor += ")\n" + "{\n"; + + if (ctorType.getStruct()) + { + constructor += " " + ctorName + " structure = {"; + } + else + { + constructor += " return " + typeString(ctorType) + "("; + } + + if (ctorType.isMatrix() && ctorParameters.size() == 1) + { + int dim = ctorType.getNominalSize(); + const TType ¶meter = ctorParameters[0]; + + if (parameter.isScalar()) + { + for (int row = 0; row < dim; row++) + { + for (int col = 0; col < dim; col++) + { + constructor += TString((row == col) ? "x0" : "0.0"); + + if (row < dim - 1 || col < dim - 1) + { + constructor += ", "; + } + } + } + } + else if (parameter.isMatrix()) + { + for (int row = 0; row < dim; row++) + { + for (int col = 0; col < dim; col++) + { + if (row < parameter.getNominalSize() && col < parameter.getNominalSize()) + { + constructor += TString("x0") + "[" + str(row) + "]" + "[" + str(col) + "]"; + } + else + { + constructor += TString((row == col) ? "1.0" : "0.0"); + } + + if (row < dim - 1 || col < dim - 1) + { + constructor += ", "; + } + } + } + } + else UNREACHABLE(); + } + else + { + size_t remainingComponents = ctorType.getObjectSize(); + size_t parameterIndex = 0; + + while (remainingComponents > 0) + { + const TType ¶meter = ctorParameters[parameterIndex]; + const size_t parameterSize = parameter.getObjectSize(); + bool moreParameters = parameterIndex + 1 < ctorParameters.size(); + + constructor += "x" + str(parameterIndex); + + if (parameter.isScalar()) + { + ASSERT(parameterSize <= remainingComponents); + remainingComponents -= parameterSize; + } + else if (parameter.isVector()) + { + if (remainingComponents == parameterSize || moreParameters) + { + ASSERT(parameterSize <= remainingComponents); + remainingComponents -= parameterSize; + } + else if (remainingComponents < static_cast(parameter.getNominalSize())) + { + switch (remainingComponents) + { + case 1: constructor += ".x"; break; + case 2: constructor += ".xy"; break; + case 3: constructor += ".xyz"; break; + case 4: constructor += ".xyzw"; break; + default: UNREACHABLE(); + } + + remainingComponents = 0; + } + else UNREACHABLE(); + } + else if (parameter.isMatrix() || parameter.getStruct()) + { + ASSERT(remainingComponents == parameterSize || moreParameters); + ASSERT(parameterSize <= remainingComponents); + + remainingComponents -= parameterSize; + } + else UNREACHABLE(); + + if (moreParameters) + { + parameterIndex++; + } + + if (remainingComponents) + { + constructor += ", "; + } + } + } + + if (ctorType.getStruct()) + { + constructor += "};\n" + " return structure;\n" + "}\n"; + } + else + { + constructor += ");\n" + "}\n"; + } + + mConstructors.insert(constructor); +} + +const ConstantUnion *OutputHLSL::writeConstantUnion(const TType &type, const ConstantUnion *constUnion) +{ + TInfoSinkBase &out = mBody; + + if (type.getBasicType() == EbtStruct) + { + out << structLookup(type.getStruct()->name()) + "_ctor("; + + const TFieldList &fields = type.getStruct()->fields(); + + for (size_t i = 0; i < fields.size(); i++) + { + const TType *fieldType = fields[i]->type(); + + constUnion = writeConstantUnion(*fieldType, constUnion); + + if (i != fields.size() - 1) + { + out << ", "; + } + } + + out << ")"; + } + else + { + size_t size = type.getObjectSize(); + bool writeType = size > 1; + + if (writeType) + { + out << typeString(type) << "("; + } + + for (size_t i = 0; i < size; i++, constUnion++) + { + switch (constUnion->getType()) + { + case EbtFloat: out << std::min(FLT_MAX, std::max(-FLT_MAX, constUnion->getFConst())); break; + case EbtInt: out << constUnion->getIConst(); break; + case EbtBool: out << constUnion->getBConst(); break; + default: UNREACHABLE(); + } + + if (i != size - 1) + { + out << ", "; + } + } + + if (writeType) + { + out << ")"; + } + } + + return constUnion; +} + +TString OutputHLSL::scopeString(unsigned int depthLimit) +{ + TString string; + + for (unsigned int i = 0; i < mScopeBracket.size() && i < depthLimit; i++) + { + string += "_" + str(i); + } + + return string; +} + +TString OutputHLSL::scopedStruct(const TString &typeName) +{ + if (typeName == "") + { + return typeName; + } + + return typeName + scopeString(mScopeDepth); +} + +TString OutputHLSL::structLookup(const TString &typeName) +{ + for (int depth = mScopeDepth; depth >= 0; depth--) + { + TString scopedName = decorate(typeName + scopeString(depth)); + + for (StructNames::iterator structName = mStructNames.begin(); structName != mStructNames.end(); structName++) + { + if (*structName == scopedName) + { + return scopedName; + } + } + } + + UNREACHABLE(); // Should have found a matching constructor + + return typeName; +} + +TString OutputHLSL::decorate(const TString &string) +{ + if (string.compare(0, 3, "gl_") != 0 && string.compare(0, 3, "dx_") != 0) + { + return "_" + string; + } + + return string; +} + +TString OutputHLSL::decorateUniform(const TString &string, const TType &type) +{ + if (type.getBasicType() == EbtSamplerExternalOES) + { + return "ex_" + string; + } + + return decorate(string); +} + +TString OutputHLSL::decorateField(const TString &string, const TType &structure) +{ + if (structure.getStruct()->name().compare(0, 3, "gl_") != 0) + { + return decorate(string); + } + + return string; +} + +TString OutputHLSL::registerString(TIntermSymbol *operand) +{ + ASSERT(operand->getQualifier() == EvqUniform); + + if (IsSampler(operand->getBasicType())) + { + return "s" + str(samplerRegister(operand)); + } + + return "c" + str(uniformRegister(operand)); +} + +int OutputHLSL::samplerRegister(TIntermSymbol *sampler) +{ + const TType &type = sampler->getType(); + ASSERT(IsSampler(type.getBasicType())); + + int index = mSamplerRegister; + mSamplerRegister += sampler->totalRegisterCount(); + + declareUniform(type, sampler->getSymbol(), index); + + return index; +} + +int OutputHLSL::uniformRegister(TIntermSymbol *uniform) +{ + const TType &type = uniform->getType(); + ASSERT(!IsSampler(type.getBasicType())); + + int index = mUniformRegister; + mUniformRegister += uniform->totalRegisterCount(); + + declareUniform(type, uniform->getSymbol(), index); + + return index; +} + +void OutputHLSL::declareUniform(const TType &type, const TString &name, int index) +{ + TStructure *structure = type.getStruct(); + + if (!structure) + { + mActiveUniforms.push_back(Uniform(glVariableType(type), glVariablePrecision(type), name.c_str(), type.getArraySize(), index)); + } + else + { + const TFieldList &fields = structure->fields(); + + if (type.isArray()) + { + int elementIndex = index; + + for (int i = 0; i < type.getArraySize(); i++) + { + for (size_t j = 0; j < fields.size(); j++) + { + const TType &fieldType = *fields[j]->type(); + const TString uniformName = name + "[" + str(i) + "]." + fields[j]->name(); + declareUniform(fieldType, uniformName, elementIndex); + elementIndex += fieldType.totalRegisterCount(); + } + } + } + else + { + int fieldIndex = index; + + for (size_t i = 0; i < fields.size(); i++) + { + const TType &fieldType = *fields[i]->type(); + const TString uniformName = name + "." + fields[i]->name(); + declareUniform(fieldType, uniformName, fieldIndex); + fieldIndex += fieldType.totalRegisterCount(); + } + } + } +} + +GLenum OutputHLSL::glVariableType(const TType &type) +{ + if (type.getBasicType() == EbtFloat) + { + if (type.isScalar()) + { + return GL_FLOAT; + } + else if (type.isVector()) + { + switch(type.getNominalSize()) + { + case 2: return GL_FLOAT_VEC2; + case 3: return GL_FLOAT_VEC3; + case 4: return GL_FLOAT_VEC4; + default: UNREACHABLE(); + } + } + else if (type.isMatrix()) + { + switch(type.getNominalSize()) + { + case 2: return GL_FLOAT_MAT2; + case 3: return GL_FLOAT_MAT3; + case 4: return GL_FLOAT_MAT4; + default: UNREACHABLE(); + } + } + else UNREACHABLE(); + } + else if (type.getBasicType() == EbtInt) + { + if (type.isScalar()) + { + return GL_INT; + } + else if (type.isVector()) + { + switch(type.getNominalSize()) + { + case 2: return GL_INT_VEC2; + case 3: return GL_INT_VEC3; + case 4: return GL_INT_VEC4; + default: UNREACHABLE(); + } + } + else UNREACHABLE(); + } + else if (type.getBasicType() == EbtBool) + { + if (type.isScalar()) + { + return GL_BOOL; + } + else if (type.isVector()) + { + switch(type.getNominalSize()) + { + case 2: return GL_BOOL_VEC2; + case 3: return GL_BOOL_VEC3; + case 4: return GL_BOOL_VEC4; + default: UNREACHABLE(); + } + } + else UNREACHABLE(); + } + else if (type.getBasicType() == EbtSampler2D) + { + return GL_SAMPLER_2D; + } + else if (type.getBasicType() == EbtSamplerCube) + { + return GL_SAMPLER_CUBE; + } + else UNREACHABLE(); + + return GL_NONE; +} + +GLenum OutputHLSL::glVariablePrecision(const TType &type) +{ + if (type.getBasicType() == EbtFloat) + { + switch (type.getPrecision()) + { + case EbpHigh: return GL_HIGH_FLOAT; + case EbpMedium: return GL_MEDIUM_FLOAT; + case EbpLow: return GL_LOW_FLOAT; + case EbpUndefined: + // Should be defined as the default precision by the parser + default: UNREACHABLE(); + } + } + else if (type.getBasicType() == EbtInt) + { + switch (type.getPrecision()) + { + case EbpHigh: return GL_HIGH_INT; + case EbpMedium: return GL_MEDIUM_INT; + case EbpLow: return GL_LOW_INT; + case EbpUndefined: + // Should be defined as the default precision by the parser + default: UNREACHABLE(); + } + } + + // Other types (boolean, sampler) don't have a precision + return GL_NONE; +} + +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.h b/Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.h new file mode 100644 index 00000000000..b33b1f5f0a1 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.h @@ -0,0 +1,178 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_OUTPUTHLSL_H_ +#define COMPILER_OUTPUTHLSL_H_ + +#include +#include +#include + +#define GL_APICALL +#include + +#include "compiler/intermediate.h" +#include "compiler/ParseHelper.h" +#include "compiler/Uniform.h" + +namespace sh +{ +class UnfoldShortCircuit; + +class OutputHLSL : public TIntermTraverser +{ + public: + OutputHLSL(TParseContext &context, const ShBuiltInResources& resources, ShShaderOutput outputType); + ~OutputHLSL(); + + void output(); + + TInfoSinkBase &getBodyStream(); + const ActiveUniforms &getUniforms(); + + TString typeString(const TType &type); + TString textureString(const TType &type); + static TString qualifierString(TQualifier qualifier); + static TString arrayString(const TType &type); + static TString initializer(const TType &type); + static TString decorate(const TString &string); // Prepends an underscore to avoid naming clashes + static TString decorateUniform(const TString &string, const TType &type); + static TString decorateField(const TString &string, const TType &structure); + + protected: + void header(); + + // Visit AST nodes and output their code to the body stream + void visitSymbol(TIntermSymbol*); + void visitConstantUnion(TIntermConstantUnion*); + bool visitBinary(Visit visit, TIntermBinary*); + bool visitUnary(Visit visit, TIntermUnary*); + bool visitSelection(Visit visit, TIntermSelection*); + bool visitAggregate(Visit visit, TIntermAggregate*); + bool visitLoop(Visit visit, TIntermLoop*); + bool visitBranch(Visit visit, TIntermBranch*); + + void traverseStatements(TIntermNode *node); + bool isSingleStatement(TIntermNode *node); + bool handleExcessiveLoop(TIntermLoop *node); + void outputTriplet(Visit visit, const TString &preString, const TString &inString, const TString &postString); + void outputLineDirective(int line); + TString argumentString(const TIntermSymbol *symbol); + int vectorSize(const TType &type) const; + + void addConstructor(const TType &type, const TString &name, const TIntermSequence *parameters); + const ConstantUnion *writeConstantUnion(const TType &type, const ConstantUnion *constUnion); + + TString scopeString(unsigned int depthLimit); + TString scopedStruct(const TString &typeName); + TString structLookup(const TString &typeName); + + TParseContext &mContext; + const ShShaderOutput mOutputType; + UnfoldShortCircuit *mUnfoldShortCircuit; + bool mInsideFunction; + + // Output streams + TInfoSinkBase mHeader; + TInfoSinkBase mBody; + TInfoSinkBase mFooter; + + typedef std::map ReferencedSymbols; + ReferencedSymbols mReferencedUniforms; + ReferencedSymbols mReferencedAttributes; + ReferencedSymbols mReferencedVaryings; + + // Parameters determining what goes in the header output + bool mUsesTexture2D; + bool mUsesTexture2D_bias; + bool mUsesTexture2DLod; + bool mUsesTexture2DProj; + bool mUsesTexture2DProj_bias; + bool mUsesTexture2DProjLod; + bool mUsesTextureCube; + bool mUsesTextureCube_bias; + bool mUsesTextureCubeLod; + bool mUsesTexture2DLod0; + bool mUsesTexture2DLod0_bias; + bool mUsesTexture2DProjLod0; + bool mUsesTexture2DProjLod0_bias; + bool mUsesTextureCubeLod0; + bool mUsesTextureCubeLod0_bias; + bool mUsesFragColor; + bool mUsesFragData; + bool mUsesDepthRange; + bool mUsesFragCoord; + bool mUsesPointCoord; + bool mUsesFrontFacing; + bool mUsesPointSize; + bool mUsesFragDepth; + bool mUsesXor; + bool mUsesMod1; + bool mUsesMod2v; + bool mUsesMod2f; + bool mUsesMod3v; + bool mUsesMod3f; + bool mUsesMod4v; + bool mUsesMod4f; + bool mUsesFaceforward1; + bool mUsesFaceforward2; + bool mUsesFaceforward3; + bool mUsesFaceforward4; + bool mUsesEqualMat2; + bool mUsesEqualMat3; + bool mUsesEqualMat4; + bool mUsesEqualVec2; + bool mUsesEqualVec3; + bool mUsesEqualVec4; + bool mUsesEqualIVec2; + bool mUsesEqualIVec3; + bool mUsesEqualIVec4; + bool mUsesEqualBVec2; + bool mUsesEqualBVec3; + bool mUsesEqualBVec4; + bool mUsesAtan2_1; + bool mUsesAtan2_2; + bool mUsesAtan2_3; + bool mUsesAtan2_4; + + int mNumRenderTargets; + + typedef std::set Constructors; + Constructors mConstructors; + + typedef std::set StructNames; + StructNames mStructNames; + + typedef std::list StructDeclarations; + StructDeclarations mStructDeclarations; + + typedef std::vector ScopeBracket; + ScopeBracket mScopeBracket; + unsigned int mScopeDepth; + + int mUniqueIndex; // For creating unique names + + bool mContainsLoopDiscontinuity; + bool mOutputLod0Function; + bool mInsideDiscontinuousLoop; + + TIntermSymbol *mExcessiveLoopIndex; + + int mUniformRegister; + int mSamplerRegister; + + TString registerString(TIntermSymbol *operand); + int samplerRegister(TIntermSymbol *sampler); + int uniformRegister(TIntermSymbol *uniform); + void declareUniform(const TType &type, const TString &name, int index); + static GLenum glVariableType(const TType &type); + static GLenum glVariablePrecision(const TType &type); + + ActiveUniforms mActiveUniforms; +}; +} + +#endif // COMPILER_OUTPUTHLSL_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp b/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp new file mode 100644 index 00000000000..29bd483144e --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp @@ -0,0 +1,1600 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/ParseHelper.h" + +#include +#include + +#include "compiler/glslang.h" +#include "compiler/preprocessor/SourceLocation.h" + +/////////////////////////////////////////////////////////////////////// +// +// Sub- vector and matrix fields +// +//////////////////////////////////////////////////////////////////////// + +// +// Look at a '.' field selector string and change it into offsets +// for a vector. +// +bool TParseContext::parseVectorFields(const TString& compString, int vecSize, TVectorFields& fields, const TSourceLoc& line) +{ + fields.num = (int) compString.size(); + if (fields.num > 4) { + error(line, "illegal vector field selection", compString.c_str()); + return false; + } + + enum { + exyzw, + ergba, + estpq + } fieldSet[4]; + + for (int i = 0; i < fields.num; ++i) { + switch (compString[i]) { + case 'x': + fields.offsets[i] = 0; + fieldSet[i] = exyzw; + break; + case 'r': + fields.offsets[i] = 0; + fieldSet[i] = ergba; + break; + case 's': + fields.offsets[i] = 0; + fieldSet[i] = estpq; + break; + case 'y': + fields.offsets[i] = 1; + fieldSet[i] = exyzw; + break; + case 'g': + fields.offsets[i] = 1; + fieldSet[i] = ergba; + break; + case 't': + fields.offsets[i] = 1; + fieldSet[i] = estpq; + break; + case 'z': + fields.offsets[i] = 2; + fieldSet[i] = exyzw; + break; + case 'b': + fields.offsets[i] = 2; + fieldSet[i] = ergba; + break; + case 'p': + fields.offsets[i] = 2; + fieldSet[i] = estpq; + break; + + case 'w': + fields.offsets[i] = 3; + fieldSet[i] = exyzw; + break; + case 'a': + fields.offsets[i] = 3; + fieldSet[i] = ergba; + break; + case 'q': + fields.offsets[i] = 3; + fieldSet[i] = estpq; + break; + default: + error(line, "illegal vector field selection", compString.c_str()); + return false; + } + } + + for (int i = 0; i < fields.num; ++i) { + if (fields.offsets[i] >= vecSize) { + error(line, "vector field selection out of range", compString.c_str()); + return false; + } + + if (i > 0) { + if (fieldSet[i] != fieldSet[i-1]) { + error(line, "illegal - vector component fields not from the same set", compString.c_str()); + return false; + } + } + } + + return true; +} + + +// +// Look at a '.' field selector string and change it into offsets +// for a matrix. +// +bool TParseContext::parseMatrixFields(const TString& compString, int matSize, TMatrixFields& fields, const TSourceLoc& line) +{ + fields.wholeRow = false; + fields.wholeCol = false; + fields.row = -1; + fields.col = -1; + + if (compString.size() != 2) { + error(line, "illegal length of matrix field selection", compString.c_str()); + return false; + } + + if (compString[0] == '_') { + if (compString[1] < '0' || compString[1] > '3') { + error(line, "illegal matrix field selection", compString.c_str()); + return false; + } + fields.wholeCol = true; + fields.col = compString[1] - '0'; + } else if (compString[1] == '_') { + if (compString[0] < '0' || compString[0] > '3') { + error(line, "illegal matrix field selection", compString.c_str()); + return false; + } + fields.wholeRow = true; + fields.row = compString[0] - '0'; + } else { + if (compString[0] < '0' || compString[0] > '3' || + compString[1] < '0' || compString[1] > '3') { + error(line, "illegal matrix field selection", compString.c_str()); + return false; + } + fields.row = compString[0] - '0'; + fields.col = compString[1] - '0'; + } + + if (fields.row >= matSize || fields.col >= matSize) { + error(line, "matrix field selection out of range", compString.c_str()); + return false; + } + + return true; +} + +/////////////////////////////////////////////////////////////////////// +// +// Errors +// +//////////////////////////////////////////////////////////////////////// + +// +// Track whether errors have occurred. +// +void TParseContext::recover() +{ +} + +// +// Used by flex/bison to output all syntax and parsing errors. +// +void TParseContext::error(const TSourceLoc& loc, + const char* reason, const char* token, + const char* extraInfo) +{ + pp::SourceLocation srcLoc; + srcLoc.file = loc.first_file; + srcLoc.line = loc.first_line; + diagnostics.writeInfo(pp::Diagnostics::ERROR, + srcLoc, reason, token, extraInfo); + +} + +void TParseContext::warning(const TSourceLoc& loc, + const char* reason, const char* token, + const char* extraInfo) { + pp::SourceLocation srcLoc; + srcLoc.file = loc.first_file; + srcLoc.line = loc.first_line; + diagnostics.writeInfo(pp::Diagnostics::WARNING, + srcLoc, reason, token, extraInfo); +} + +void TParseContext::trace(const char* str) +{ + diagnostics.writeDebug(str); +} + +// +// Same error message for all places assignments don't work. +// +void TParseContext::assignError(const TSourceLoc& line, const char* op, TString left, TString right) +{ + std::stringstream extraInfoStream; + extraInfoStream << "cannot convert from '" << right << "' to '" << left << "'"; + std::string extraInfo = extraInfoStream.str(); + error(line, "", op, extraInfo.c_str()); +} + +// +// Same error message for all places unary operations don't work. +// +void TParseContext::unaryOpError(const TSourceLoc& line, const char* op, TString operand) +{ + std::stringstream extraInfoStream; + extraInfoStream << "no operation '" << op << "' exists that takes an operand of type " << operand + << " (or there is no acceptable conversion)"; + std::string extraInfo = extraInfoStream.str(); + error(line, " wrong operand type", op, extraInfo.c_str()); +} + +// +// Same error message for all binary operations don't work. +// +void TParseContext::binaryOpError(const TSourceLoc& line, const char* op, TString left, TString right) +{ + std::stringstream extraInfoStream; + extraInfoStream << "no operation '" << op << "' exists that takes a left-hand operand of type '" << left + << "' and a right operand of type '" << right << "' (or there is no acceptable conversion)"; + std::string extraInfo = extraInfoStream.str(); + error(line, " wrong operand types ", op, extraInfo.c_str()); +} + +bool TParseContext::precisionErrorCheck(const TSourceLoc& line, TPrecision precision, TBasicType type){ + if (!checksPrecisionErrors) + return false; + switch( type ){ + case EbtFloat: + if( precision == EbpUndefined ){ + error( line, "No precision specified for (float)", "" ); + return true; + } + break; + case EbtInt: + if( precision == EbpUndefined ){ + error( line, "No precision specified (int)", "" ); + return true; + } + break; + default: + return false; + } + return false; +} + +// +// Both test and if necessary, spit out an error, to see if the node is really +// an l-value that can be operated on this way. +// +// Returns true if the was an error. +// +bool TParseContext::lValueErrorCheck(const TSourceLoc& line, const char* op, TIntermTyped* node) +{ + TIntermSymbol* symNode = node->getAsSymbolNode(); + TIntermBinary* binaryNode = node->getAsBinaryNode(); + + if (binaryNode) { + bool errorReturn; + + switch(binaryNode->getOp()) { + case EOpIndexDirect: + case EOpIndexIndirect: + case EOpIndexDirectStruct: + return lValueErrorCheck(line, op, binaryNode->getLeft()); + case EOpVectorSwizzle: + errorReturn = lValueErrorCheck(line, op, binaryNode->getLeft()); + if (!errorReturn) { + int offset[4] = {0,0,0,0}; + + TIntermTyped* rightNode = binaryNode->getRight(); + TIntermAggregate *aggrNode = rightNode->getAsAggregate(); + + for (TIntermSequence::iterator p = aggrNode->getSequence().begin(); + p != aggrNode->getSequence().end(); p++) { + int value = (*p)->getAsTyped()->getAsConstantUnion()->getIConst(0); + offset[value]++; + if (offset[value] > 1) { + error(line, " l-value of swizzle cannot have duplicate components", op); + + return true; + } + } + } + + return errorReturn; + default: + break; + } + error(line, " l-value required", op); + + return true; + } + + + const char* symbol = 0; + if (symNode != 0) + symbol = symNode->getSymbol().c_str(); + + const char* message = 0; + switch (node->getQualifier()) { + case EvqConst: message = "can't modify a const"; break; + case EvqConstReadOnly: message = "can't modify a const"; break; + case EvqAttribute: message = "can't modify an attribute"; break; + case EvqUniform: message = "can't modify a uniform"; break; + case EvqVaryingIn: message = "can't modify a varying"; break; + case EvqFragCoord: message = "can't modify gl_FragCoord"; break; + case EvqFrontFacing: message = "can't modify gl_FrontFacing"; break; + case EvqPointCoord: message = "can't modify gl_PointCoord"; break; + default: + + // + // Type that can't be written to? + // + switch (node->getBasicType()) { + case EbtSampler2D: + case EbtSamplerCube: + message = "can't modify a sampler"; + break; + case EbtVoid: + message = "can't modify void"; + break; + default: + break; + } + } + + if (message == 0 && binaryNode == 0 && symNode == 0) { + error(line, " l-value required", op); + + return true; + } + + + // + // Everything else is okay, no error. + // + if (message == 0) + return false; + + // + // If we get here, we have an error and a message. + // + if (symNode) { + std::stringstream extraInfoStream; + extraInfoStream << "\"" << symbol << "\" (" << message << ")"; + std::string extraInfo = extraInfoStream.str(); + error(line, " l-value required", op, extraInfo.c_str()); + } + else { + std::stringstream extraInfoStream; + extraInfoStream << "(" << message << ")"; + std::string extraInfo = extraInfoStream.str(); + error(line, " l-value required", op, extraInfo.c_str()); + } + + return true; +} + +// +// Both test, and if necessary spit out an error, to see if the node is really +// a constant. +// +// Returns true if the was an error. +// +bool TParseContext::constErrorCheck(TIntermTyped* node) +{ + if (node->getQualifier() == EvqConst) + return false; + + error(node->getLine(), "constant expression required", ""); + + return true; +} + +// +// Both test, and if necessary spit out an error, to see if the node is really +// an integer. +// +// Returns true if the was an error. +// +bool TParseContext::integerErrorCheck(TIntermTyped* node, const char* token) +{ + if (node->getBasicType() == EbtInt && node->getNominalSize() == 1) + return false; + + error(node->getLine(), "integer expression required", token); + + return true; +} + +// +// Both test, and if necessary spit out an error, to see if we are currently +// globally scoped. +// +// Returns true if the was an error. +// +bool TParseContext::globalErrorCheck(const TSourceLoc& line, bool global, const char* token) +{ + if (global) + return false; + + error(line, "only allowed at global scope", token); + + return true; +} + +// +// For now, keep it simple: if it starts "gl_", it's reserved, independent +// of scope. Except, if the symbol table is at the built-in push-level, +// which is when we are parsing built-ins. +// Also checks for "webgl_" and "_webgl_" reserved identifiers if parsing a +// webgl shader. +// +// Returns true if there was an error. +// +bool TParseContext::reservedErrorCheck(const TSourceLoc& line, const TString& identifier) +{ + static const char* reservedErrMsg = "reserved built-in name"; + if (!symbolTable.atBuiltInLevel()) { + if (identifier.compare(0, 3, "gl_") == 0) { + error(line, reservedErrMsg, "gl_"); + return true; + } + if (isWebGLBasedSpec(shaderSpec)) { + if (identifier.compare(0, 6, "webgl_") == 0) { + error(line, reservedErrMsg, "webgl_"); + return true; + } + if (identifier.compare(0, 7, "_webgl_") == 0) { + error(line, reservedErrMsg, "_webgl_"); + return true; + } + if (shaderSpec == SH_CSS_SHADERS_SPEC && identifier.compare(0, 4, "css_") == 0) { + error(line, reservedErrMsg, "css_"); + return true; + } + } + if (identifier.find("__") != TString::npos) { + error(line, "identifiers containing two consecutive underscores (__) are reserved as possible future keywords", identifier.c_str()); + return true; + } + } + + return false; +} + +// +// Make sure there is enough data provided to the constructor to build +// something of the type of the constructor. Also returns the type of +// the constructor. +// +// Returns true if there was an error in construction. +// +bool TParseContext::constructorErrorCheck(const TSourceLoc& line, TIntermNode* node, TFunction& function, TOperator op, TType* type) +{ + *type = function.getReturnType(); + + bool constructingMatrix = false; + switch(op) { + case EOpConstructMat2: + case EOpConstructMat3: + case EOpConstructMat4: + constructingMatrix = true; + break; + default: + break; + } + + // + // Note: It's okay to have too many components available, but not okay to have unused + // arguments. 'full' will go to true when enough args have been seen. If we loop + // again, there is an extra argument, so 'overfull' will become true. + // + + size_t size = 0; + bool constType = true; + bool full = false; + bool overFull = false; + bool matrixInMatrix = false; + bool arrayArg = false; + for (size_t i = 0; i < function.getParamCount(); ++i) { + const TParameter& param = function.getParam(i); + size += param.type->getObjectSize(); + + if (constructingMatrix && param.type->isMatrix()) + matrixInMatrix = true; + if (full) + overFull = true; + if (op != EOpConstructStruct && !type->isArray() && size >= type->getObjectSize()) + full = true; + if (param.type->getQualifier() != EvqConst) + constType = false; + if (param.type->isArray()) + arrayArg = true; + } + + if (constType) + type->setQualifier(EvqConst); + + if (type->isArray() && static_cast(type->getArraySize()) != function.getParamCount()) { + error(line, "array constructor needs one argument per array element", "constructor"); + return true; + } + + if (arrayArg && op != EOpConstructStruct) { + error(line, "constructing from a non-dereferenced array", "constructor"); + return true; + } + + if (matrixInMatrix && !type->isArray()) { + if (function.getParamCount() != 1) { + error(line, "constructing matrix from matrix can only take one argument", "constructor"); + return true; + } + } + + if (overFull) { + error(line, "too many arguments", "constructor"); + return true; + } + + if (op == EOpConstructStruct && !type->isArray() && int(type->getStruct()->fields().size()) != function.getParamCount()) { + error(line, "Number of constructor parameters does not match the number of structure fields", "constructor"); + return true; + } + + if (!type->isMatrix() || !matrixInMatrix) { + if ((op != EOpConstructStruct && size != 1 && size < type->getObjectSize()) || + (op == EOpConstructStruct && size < type->getObjectSize())) { + error(line, "not enough data provided for construction", "constructor"); + return true; + } + } + + TIntermTyped *typed = node ? node->getAsTyped() : 0; + if (typed == 0) { + error(line, "constructor argument does not have a type", "constructor"); + return true; + } + if (op != EOpConstructStruct && IsSampler(typed->getBasicType())) { + error(line, "cannot convert a sampler", "constructor"); + return true; + } + if (typed->getBasicType() == EbtVoid) { + error(line, "cannot convert a void", "constructor"); + return true; + } + + return false; +} + +// This function checks to see if a void variable has been declared and raise an error message for such a case +// +// returns true in case of an error +// +bool TParseContext::voidErrorCheck(const TSourceLoc& line, const TString& identifier, const TPublicType& pubType) +{ + if (pubType.type == EbtVoid) { + error(line, "illegal use of type 'void'", identifier.c_str()); + return true; + } + + return false; +} + +// This function checks to see if the node (for the expression) contains a scalar boolean expression or not +// +// returns true in case of an error +// +bool TParseContext::boolErrorCheck(const TSourceLoc& line, const TIntermTyped* type) +{ + if (type->getBasicType() != EbtBool || type->isArray() || type->isMatrix() || type->isVector()) { + error(line, "boolean expression expected", ""); + return true; + } + + return false; +} + +// This function checks to see if the node (for the expression) contains a scalar boolean expression or not +// +// returns true in case of an error +// +bool TParseContext::boolErrorCheck(const TSourceLoc& line, const TPublicType& pType) +{ + if (pType.type != EbtBool || pType.array || pType.matrix || (pType.size > 1)) { + error(line, "boolean expression expected", ""); + return true; + } + + return false; +} + +bool TParseContext::samplerErrorCheck(const TSourceLoc& line, const TPublicType& pType, const char* reason) +{ + if (pType.type == EbtStruct) { + if (containsSampler(*pType.userDef)) { + error(line, reason, getBasicString(pType.type), "(structure contains a sampler)"); + + return true; + } + + return false; + } else if (IsSampler(pType.type)) { + error(line, reason, getBasicString(pType.type)); + + return true; + } + + return false; +} + +bool TParseContext::structQualifierErrorCheck(const TSourceLoc& line, const TPublicType& pType) +{ + if ((pType.qualifier == EvqVaryingIn || pType.qualifier == EvqVaryingOut || pType.qualifier == EvqAttribute) && + pType.type == EbtStruct) { + error(line, "cannot be used with a structure", getQualifierString(pType.qualifier)); + + return true; + } + + if (pType.qualifier != EvqUniform && samplerErrorCheck(line, pType, "samplers must be uniform")) + return true; + + return false; +} + +bool TParseContext::parameterSamplerErrorCheck(const TSourceLoc& line, TQualifier qualifier, const TType& type) +{ + if ((qualifier == EvqOut || qualifier == EvqInOut) && + type.getBasicType() != EbtStruct && IsSampler(type.getBasicType())) { + error(line, "samplers cannot be output parameters", type.getBasicString()); + return true; + } + + return false; +} + +bool TParseContext::containsSampler(TType& type) +{ + if (IsSampler(type.getBasicType())) + return true; + + if (type.getBasicType() == EbtStruct) { + const TFieldList& fields = type.getStruct()->fields(); + for (unsigned int i = 0; i < fields.size(); ++i) { + if (containsSampler(*fields[i]->type())) + return true; + } + } + + return false; +} + +// +// Do size checking for an array type's size. +// +// Returns true if there was an error. +// +bool TParseContext::arraySizeErrorCheck(const TSourceLoc& line, TIntermTyped* expr, int& size) +{ + TIntermConstantUnion* constant = expr->getAsConstantUnion(); + if (constant == 0 || constant->getBasicType() != EbtInt) { + error(line, "array size must be a constant integer expression", ""); + return true; + } + + size = constant->getIConst(0); + + if (size <= 0) { + error(line, "array size must be a positive integer", ""); + size = 1; + return true; + } + + return false; +} + +// +// See if this qualifier can be an array. +// +// Returns true if there is an error. +// +bool TParseContext::arrayQualifierErrorCheck(const TSourceLoc& line, TPublicType type) +{ + if ((type.qualifier == EvqAttribute) || (type.qualifier == EvqConst)) { + error(line, "cannot declare arrays of this qualifier", TType(type).getCompleteString().c_str()); + return true; + } + + return false; +} + +// +// See if this type can be an array. +// +// Returns true if there is an error. +// +bool TParseContext::arrayTypeErrorCheck(const TSourceLoc& line, TPublicType type) +{ + // + // Can the type be an array? + // + if (type.array) { + error(line, "cannot declare arrays of arrays", TType(type).getCompleteString().c_str()); + return true; + } + + return false; +} + +// +// Do all the semantic checking for declaring an array, with and +// without a size, and make the right changes to the symbol table. +// +// size == 0 means no specified size. +// +// Returns true if there was an error. +// +bool TParseContext::arrayErrorCheck(const TSourceLoc& line, TString& identifier, TPublicType type, TVariable*& variable) +{ + // + // Don't check for reserved word use until after we know it's not in the symbol table, + // because reserved arrays can be redeclared. + // + + bool builtIn = false; + bool sameScope = false; + TSymbol* symbol = symbolTable.find(identifier, &builtIn, &sameScope); + if (symbol == 0 || !sameScope) { + if (reservedErrorCheck(line, identifier)) + return true; + + variable = new TVariable(&identifier, TType(type)); + + if (type.arraySize) + variable->getType().setArraySize(type.arraySize); + + if (! symbolTable.insert(*variable)) { + delete variable; + error(line, "INTERNAL ERROR inserting new symbol", identifier.c_str()); + return true; + } + } else { + if (! symbol->isVariable()) { + error(line, "variable expected", identifier.c_str()); + return true; + } + + variable = static_cast(symbol); + if (! variable->getType().isArray()) { + error(line, "redeclaring non-array as array", identifier.c_str()); + return true; + } + if (variable->getType().getArraySize() > 0) { + error(line, "redeclaration of array with size", identifier.c_str()); + return true; + } + + if (! variable->getType().sameElementType(TType(type))) { + error(line, "redeclaration of array with a different type", identifier.c_str()); + return true; + } + + if (type.arraySize) + variable->getType().setArraySize(type.arraySize); + } + + if (voidErrorCheck(line, identifier, type)) + return true; + + return false; +} + +// +// Enforce non-initializer type/qualifier rules. +// +// Returns true if there was an error. +// +bool TParseContext::nonInitConstErrorCheck(const TSourceLoc& line, TString& identifier, TPublicType& type, bool array) +{ + if (type.qualifier == EvqConst) + { + // Make the qualifier make sense. + type.qualifier = EvqTemporary; + + if (array) + { + error(line, "arrays may not be declared constant since they cannot be initialized", identifier.c_str()); + } + else if (type.isStructureContainingArrays()) + { + error(line, "structures containing arrays may not be declared constant since they cannot be initialized", identifier.c_str()); + } + else + { + error(line, "variables with qualifier 'const' must be initialized", identifier.c_str()); + } + + return true; + } + + return false; +} + +// +// Do semantic checking for a variable declaration that has no initializer, +// and update the symbol table. +// +// Returns true if there was an error. +// +bool TParseContext::nonInitErrorCheck(const TSourceLoc& line, TString& identifier, TPublicType& type, TVariable*& variable) +{ + if (reservedErrorCheck(line, identifier)) + recover(); + + variable = new TVariable(&identifier, TType(type)); + + if (! symbolTable.insert(*variable)) { + error(line, "redefinition", variable->getName().c_str()); + delete variable; + variable = 0; + return true; + } + + if (voidErrorCheck(line, identifier, type)) + return true; + + return false; +} + +bool TParseContext::paramErrorCheck(const TSourceLoc& line, TQualifier qualifier, TQualifier paramQualifier, TType* type) +{ + if (qualifier != EvqConst && qualifier != EvqTemporary) { + error(line, "qualifier not allowed on function parameter", getQualifierString(qualifier)); + return true; + } + if (qualifier == EvqConst && paramQualifier != EvqIn) { + error(line, "qualifier not allowed with ", getQualifierString(qualifier), getQualifierString(paramQualifier)); + return true; + } + + if (qualifier == EvqConst) + type->setQualifier(EvqConstReadOnly); + else + type->setQualifier(paramQualifier); + + return false; +} + +bool TParseContext::extensionErrorCheck(const TSourceLoc& line, const TString& extension) +{ + const TExtensionBehavior& extBehavior = extensionBehavior(); + TExtensionBehavior::const_iterator iter = extBehavior.find(extension.c_str()); + if (iter == extBehavior.end()) { + error(line, "extension", extension.c_str(), "is not supported"); + return true; + } + // In GLSL ES, an extension's default behavior is "disable". + if (iter->second == EBhDisable || iter->second == EBhUndefined) { + error(line, "extension", extension.c_str(), "is disabled"); + return true; + } + if (iter->second == EBhWarn) { + warning(line, "extension", extension.c_str(), "is being used"); + return false; + } + + return false; +} + +bool TParseContext::supportsExtension(const char* extension) +{ + const TExtensionBehavior& extbehavior = extensionBehavior(); + TExtensionBehavior::const_iterator iter = extbehavior.find(extension); + return (iter != extbehavior.end()); +} + +bool TParseContext::isExtensionEnabled(const char* extension) const +{ + const TExtensionBehavior& extbehavior = extensionBehavior(); + std::map::const_iterator iter = extbehavior.find(extension); + + if (iter == extbehavior.end()) + { + return false; + } + + return (iter->second == EBhEnable || iter->second == EBhRequire); +} + +///////////////////////////////////////////////////////////////////////////////// +// +// Non-Errors. +// +///////////////////////////////////////////////////////////////////////////////// + +// +// Look up a function name in the symbol table, and make sure it is a function. +// +// Return the function symbol if found, otherwise 0. +// +const TFunction* TParseContext::findFunction(const TSourceLoc& line, TFunction* call, bool *builtIn) +{ + // First find by unmangled name to check whether the function name has been + // hidden by a variable name or struct typename. + // If a function is found, check for one with a matching argument list. + const TSymbol* symbol = symbolTable.find(call->getName(), builtIn); + if (symbol == 0 || symbol->isFunction()) { + symbol = symbolTable.find(call->getMangledName(), builtIn); + } + + if (symbol == 0) { + error(line, "no matching overloaded function found", call->getName().c_str()); + return 0; + } + + if (!symbol->isFunction()) { + error(line, "function name expected", call->getName().c_str()); + return 0; + } + + return static_cast(symbol); +} + +// +// Initializers show up in several places in the grammar. Have one set of +// code to handle them here. +// +bool TParseContext::executeInitializer(const TSourceLoc& line, TString& identifier, TPublicType& pType, + TIntermTyped* initializer, TIntermNode*& intermNode, TVariable* variable) +{ + TType type = TType(pType); + + if (variable == 0) { + if (reservedErrorCheck(line, identifier)) + return true; + + if (voidErrorCheck(line, identifier, pType)) + return true; + + // + // add variable to symbol table + // + variable = new TVariable(&identifier, type); + if (! symbolTable.insert(*variable)) { + error(line, "redefinition", variable->getName().c_str()); + return true; + // don't delete variable, it's used by error recovery, and the pool + // pop will take care of the memory + } + } + + // + // identifier must be of type constant, a global, or a temporary + // + TQualifier qualifier = variable->getType().getQualifier(); + if ((qualifier != EvqTemporary) && (qualifier != EvqGlobal) && (qualifier != EvqConst)) { + error(line, " cannot initialize this type of qualifier ", variable->getType().getQualifierString()); + return true; + } + // + // test for and propagate constant + // + + if (qualifier == EvqConst) { + if (qualifier != initializer->getType().getQualifier()) { + std::stringstream extraInfoStream; + extraInfoStream << "'" << variable->getType().getCompleteString() << "'"; + std::string extraInfo = extraInfoStream.str(); + error(line, " assigning non-constant to", "=", extraInfo.c_str()); + variable->getType().setQualifier(EvqTemporary); + return true; + } + if (type != initializer->getType()) { + error(line, " non-matching types for const initializer ", + variable->getType().getQualifierString()); + variable->getType().setQualifier(EvqTemporary); + return true; + } + if (initializer->getAsConstantUnion()) { + variable->shareConstPointer(initializer->getAsConstantUnion()->getUnionArrayPointer()); + } else if (initializer->getAsSymbolNode()) { + const TSymbol* symbol = symbolTable.find(initializer->getAsSymbolNode()->getSymbol()); + const TVariable* tVar = static_cast(symbol); + + ConstantUnion* constArray = tVar->getConstPointer(); + variable->shareConstPointer(constArray); + } else { + std::stringstream extraInfoStream; + extraInfoStream << "'" << variable->getType().getCompleteString() << "'"; + std::string extraInfo = extraInfoStream.str(); + error(line, " cannot assign to", "=", extraInfo.c_str()); + variable->getType().setQualifier(EvqTemporary); + return true; + } + } + + if (qualifier != EvqConst) { + TIntermSymbol* intermSymbol = intermediate.addSymbol(variable->getUniqueId(), variable->getName(), variable->getType(), line); + intermNode = intermediate.addAssign(EOpInitialize, intermSymbol, initializer, line); + if (intermNode == 0) { + assignError(line, "=", intermSymbol->getCompleteString(), initializer->getCompleteString()); + return true; + } + } else + intermNode = 0; + + return false; +} + +bool TParseContext::areAllChildConst(TIntermAggregate* aggrNode) +{ + ASSERT(aggrNode != NULL); + if (!aggrNode->isConstructor()) + return false; + + bool allConstant = true; + + // check if all the child nodes are constants so that they can be inserted into + // the parent node + TIntermSequence &sequence = aggrNode->getSequence() ; + for (TIntermSequence::iterator p = sequence.begin(); p != sequence.end(); ++p) { + if (!(*p)->getAsTyped()->getAsConstantUnion()) + return false; + } + + return allConstant; +} + +// This function is used to test for the correctness of the parameters passed to various constructor functions +// and also convert them to the right datatype if it is allowed and required. +// +// Returns 0 for an error or the constructed node (aggregate or typed) for no error. +// +TIntermTyped* TParseContext::addConstructor(TIntermNode* node, const TType* type, TOperator op, TFunction* fnCall, const TSourceLoc& line) +{ + if (node == 0) + return 0; + + TIntermAggregate* aggrNode = node->getAsAggregate(); + + TFieldList::const_iterator memberFields; + if (op == EOpConstructStruct) + memberFields = type->getStruct()->fields().begin(); + + TType elementType = *type; + if (type->isArray()) + elementType.clearArrayness(); + + bool singleArg; + if (aggrNode) { + if (aggrNode->getOp() != EOpNull || aggrNode->getSequence().size() == 1) + singleArg = true; + else + singleArg = false; + } else + singleArg = true; + + TIntermTyped *newNode; + if (singleArg) { + // If structure constructor or array constructor is being called + // for only one parameter inside the structure, we need to call constructStruct function once. + if (type->isArray()) + newNode = constructStruct(node, &elementType, 1, node->getLine(), false); + else if (op == EOpConstructStruct) + newNode = constructStruct(node, (*memberFields)->type(), 1, node->getLine(), false); + else + newNode = constructBuiltIn(type, op, node, node->getLine(), false); + + if (newNode && newNode->getAsAggregate()) { + TIntermTyped* constConstructor = foldConstConstructor(newNode->getAsAggregate(), *type); + if (constConstructor) + return constConstructor; + } + + return newNode; + } + + // + // Handle list of arguments. + // + TIntermSequence &sequenceVector = aggrNode->getSequence() ; // Stores the information about the parameter to the constructor + // if the structure constructor contains more than one parameter, then construct + // each parameter + + int paramCount = 0; // keeps a track of the constructor parameter number being checked + + // for each parameter to the constructor call, check to see if the right type is passed or convert them + // to the right type if possible (and allowed). + // for structure constructors, just check if the right type is passed, no conversion is allowed. + + for (TIntermSequence::iterator p = sequenceVector.begin(); + p != sequenceVector.end(); p++, paramCount++) { + if (type->isArray()) + newNode = constructStruct(*p, &elementType, paramCount+1, node->getLine(), true); + else if (op == EOpConstructStruct) + newNode = constructStruct(*p, memberFields[paramCount]->type(), paramCount+1, node->getLine(), true); + else + newNode = constructBuiltIn(type, op, *p, node->getLine(), true); + + if (newNode) { + *p = newNode; + } + } + + TIntermTyped* constructor = intermediate.setAggregateOperator(aggrNode, op, line); + TIntermTyped* constConstructor = foldConstConstructor(constructor->getAsAggregate(), *type); + if (constConstructor) + return constConstructor; + + return constructor; +} + +TIntermTyped* TParseContext::foldConstConstructor(TIntermAggregate* aggrNode, const TType& type) +{ + bool canBeFolded = areAllChildConst(aggrNode); + aggrNode->setType(type); + if (canBeFolded) { + bool returnVal = false; + ConstantUnion* unionArray = new ConstantUnion[type.getObjectSize()]; + if (aggrNode->getSequence().size() == 1) { + returnVal = intermediate.parseConstTree(aggrNode->getLine(), aggrNode, unionArray, aggrNode->getOp(), symbolTable, type, true); + } + else { + returnVal = intermediate.parseConstTree(aggrNode->getLine(), aggrNode, unionArray, aggrNode->getOp(), symbolTable, type); + } + if (returnVal) + return 0; + + return intermediate.addConstantUnion(unionArray, type, aggrNode->getLine()); + } + + return 0; +} + +// Function for constructor implementation. Calls addUnaryMath with appropriate EOp value +// for the parameter to the constructor (passed to this function). Essentially, it converts +// the parameter types correctly. If a constructor expects an int (like ivec2) and is passed a +// float, then float is converted to int. +// +// Returns 0 for an error or the constructed node. +// +TIntermTyped* TParseContext::constructBuiltIn(const TType* type, TOperator op, TIntermNode* node, const TSourceLoc& line, bool subset) +{ + TIntermTyped* newNode; + TOperator basicOp; + + // + // First, convert types as needed. + // + switch (op) { + case EOpConstructVec2: + case EOpConstructVec3: + case EOpConstructVec4: + case EOpConstructMat2: + case EOpConstructMat3: + case EOpConstructMat4: + case EOpConstructFloat: + basicOp = EOpConstructFloat; + break; + + case EOpConstructIVec2: + case EOpConstructIVec3: + case EOpConstructIVec4: + case EOpConstructInt: + basicOp = EOpConstructInt; + break; + + case EOpConstructBVec2: + case EOpConstructBVec3: + case EOpConstructBVec4: + case EOpConstructBool: + basicOp = EOpConstructBool; + break; + + default: + error(line, "unsupported construction", ""); + recover(); + + return 0; + } + newNode = intermediate.addUnaryMath(basicOp, node, node->getLine(), symbolTable); + if (newNode == 0) { + error(line, "can't convert", "constructor"); + return 0; + } + + // + // Now, if there still isn't an operation to do the construction, and we need one, add one. + // + + // Otherwise, skip out early. + if (subset || (newNode != node && newNode->getType() == *type)) + return newNode; + + // setAggregateOperator will insert a new node for the constructor, as needed. + return intermediate.setAggregateOperator(newNode, op, line); +} + +// This function tests for the type of the parameters to the structures constructors. Raises +// an error message if the expected type does not match the parameter passed to the constructor. +// +// Returns 0 for an error or the input node itself if the expected and the given parameter types match. +// +TIntermTyped* TParseContext::constructStruct(TIntermNode* node, TType* type, int paramCount, const TSourceLoc& line, bool subset) +{ + if (*type == node->getAsTyped()->getType()) { + if (subset) + return node->getAsTyped(); + else + return intermediate.setAggregateOperator(node->getAsTyped(), EOpConstructStruct, line); + } else { + std::stringstream extraInfoStream; + extraInfoStream << "cannot convert parameter " << paramCount + << " from '" << node->getAsTyped()->getType().getBasicString() + << "' to '" << type->getBasicString() << "'"; + std::string extraInfo = extraInfoStream.str(); + error(line, "", "constructor", extraInfo.c_str()); + recover(); + } + + return 0; +} + +// +// This function returns the tree representation for the vector field(s) being accessed from contant vector. +// If only one component of vector is accessed (v.x or v[0] where v is a contant vector), then a contant node is +// returned, else an aggregate node is returned (for v.xy). The input to this function could either be the symbol +// node or it could be the intermediate tree representation of accessing fields in a constant structure or column of +// a constant matrix. +// +TIntermTyped* TParseContext::addConstVectorNode(TVectorFields& fields, TIntermTyped* node, const TSourceLoc& line) +{ + TIntermTyped* typedNode; + TIntermConstantUnion* tempConstantNode = node->getAsConstantUnion(); + + ConstantUnion *unionArray; + if (tempConstantNode) { + unionArray = tempConstantNode->getUnionArrayPointer(); + + if (!unionArray) { + return node; + } + } else { // The node has to be either a symbol node or an aggregate node or a tempConstant node, else, its an error + error(line, "Cannot offset into the vector", "Error"); + recover(); + + return 0; + } + + ConstantUnion* constArray = new ConstantUnion[fields.num]; + + for (int i = 0; i < fields.num; i++) { + if (fields.offsets[i] >= node->getType().getNominalSize()) { + std::stringstream extraInfoStream; + extraInfoStream << "vector field selection out of range '" << fields.offsets[i] << "'"; + std::string extraInfo = extraInfoStream.str(); + error(line, "", "[", extraInfo.c_str()); + recover(); + fields.offsets[i] = 0; + } + + constArray[i] = unionArray[fields.offsets[i]]; + + } + typedNode = intermediate.addConstantUnion(constArray, node->getType(), line); + return typedNode; +} + +// +// This function returns the column being accessed from a constant matrix. The values are retrieved from +// the symbol table and parse-tree is built for a vector (each column of a matrix is a vector). The input +// to the function could either be a symbol node (m[0] where m is a constant matrix)that represents a +// constant matrix or it could be the tree representation of the constant matrix (s.m1[0] where s is a constant structure) +// +TIntermTyped* TParseContext::addConstMatrixNode(int index, TIntermTyped* node, const TSourceLoc& line) +{ + TIntermTyped* typedNode; + TIntermConstantUnion* tempConstantNode = node->getAsConstantUnion(); + + if (index >= node->getType().getNominalSize()) { + std::stringstream extraInfoStream; + extraInfoStream << "matrix field selection out of range '" << index << "'"; + std::string extraInfo = extraInfoStream.str(); + error(line, "", "[", extraInfo.c_str()); + recover(); + index = 0; + } + + if (tempConstantNode) { + ConstantUnion* unionArray = tempConstantNode->getUnionArrayPointer(); + int size = tempConstantNode->getType().getNominalSize(); + typedNode = intermediate.addConstantUnion(&unionArray[size*index], tempConstantNode->getType(), line); + } else { + error(line, "Cannot offset into the matrix", "Error"); + recover(); + + return 0; + } + + return typedNode; +} + + +// +// This function returns an element of an array accessed from a constant array. The values are retrieved from +// the symbol table and parse-tree is built for the type of the element. The input +// to the function could either be a symbol node (a[0] where a is a constant array)that represents a +// constant array or it could be the tree representation of the constant array (s.a1[0] where s is a constant structure) +// +TIntermTyped* TParseContext::addConstArrayNode(int index, TIntermTyped* node, const TSourceLoc& line) +{ + TIntermTyped* typedNode; + TIntermConstantUnion* tempConstantNode = node->getAsConstantUnion(); + TType arrayElementType = node->getType(); + arrayElementType.clearArrayness(); + + if (index >= node->getType().getArraySize()) { + std::stringstream extraInfoStream; + extraInfoStream << "array field selection out of range '" << index << "'"; + std::string extraInfo = extraInfoStream.str(); + error(line, "", "[", extraInfo.c_str()); + recover(); + index = 0; + } + + if (tempConstantNode) { + size_t arrayElementSize = arrayElementType.getObjectSize(); + ConstantUnion* unionArray = tempConstantNode->getUnionArrayPointer(); + typedNode = intermediate.addConstantUnion(&unionArray[arrayElementSize * index], tempConstantNode->getType(), line); + } else { + error(line, "Cannot offset into the array", "Error"); + recover(); + + return 0; + } + + return typedNode; +} + + +// +// This function returns the value of a particular field inside a constant structure from the symbol table. +// If there is an embedded/nested struct, it appropriately calls addConstStructNested or addConstStructFromAggr +// function and returns the parse-tree with the values of the embedded/nested struct. +// +TIntermTyped* TParseContext::addConstStruct(TString& identifier, TIntermTyped* node, const TSourceLoc& line) +{ + const TFieldList& fields = node->getType().getStruct()->fields(); + + size_t instanceSize = 0; + for (size_t index = 0; index < fields.size(); ++index) { + if (fields[index]->name() == identifier) { + break; + } else { + instanceSize += fields[index]->type()->getObjectSize(); + } + } + + TIntermTyped* typedNode = 0; + TIntermConstantUnion* tempConstantNode = node->getAsConstantUnion(); + if (tempConstantNode) { + ConstantUnion* constArray = tempConstantNode->getUnionArrayPointer(); + + typedNode = intermediate.addConstantUnion(constArray+instanceSize, tempConstantNode->getType(), line); // type will be changed in the calling function + } else { + error(line, "Cannot offset into the structure", "Error"); + recover(); + + return 0; + } + + return typedNode; +} + +bool TParseContext::enterStructDeclaration(const TSourceLoc& line, const TString& identifier) +{ + ++structNestingLevel; + + // Embedded structure definitions are not supported per GLSL ES spec. + // They aren't allowed in GLSL either, but we need to detect this here + // so we don't rely on the GLSL compiler to catch it. + if (structNestingLevel > 1) { + error(line, "", "Embedded struct definitions are not allowed"); + return true; + } + + return false; +} + +void TParseContext::exitStructDeclaration() +{ + --structNestingLevel; +} + +namespace { + +const int kWebGLMaxStructNesting = 4; + +} // namespace + +bool TParseContext::structNestingErrorCheck(const TSourceLoc& line, const TField& field) +{ + if (!isWebGLBasedSpec(shaderSpec)) { + return false; + } + + if (field.type()->getBasicType() != EbtStruct) { + return false; + } + + // We're already inside a structure definition at this point, so add + // one to the field's struct nesting. + if (1 + field.type()->getDeepestStructNesting() > kWebGLMaxStructNesting) { + std::stringstream extraInfoStream; + extraInfoStream << "Reference of struct type " << field.name() + << " exceeds maximum struct nesting of " << kWebGLMaxStructNesting; + std::string extraInfo = extraInfoStream.str(); + error(line, "", "", extraInfo.c_str()); + return true; + } + + return false; +} + +// +// Parse an array index expression +// +TIntermTyped* TParseContext::addIndexExpression(TIntermTyped *baseExpression, const TSourceLoc& location, TIntermTyped *indexExpression) +{ + TIntermTyped *indexedExpression = NULL; + + if (!baseExpression->isArray() && !baseExpression->isMatrix() && !baseExpression->isVector()) + { + if (baseExpression->getAsSymbolNode()) + { + error(location, " left of '[' is not of type array, matrix, or vector ", baseExpression->getAsSymbolNode()->getSymbol().c_str()); + } + else + { + error(location, " left of '[' is not of type array, matrix, or vector ", "expression"); + } + recover(); + } + + if (indexExpression->getQualifier() == EvqConst) + { + int index = indexExpression->getAsConstantUnion()->getIConst(0); + if (index < 0) + { + std::stringstream infoStream; + infoStream << index; + std::string info = infoStream.str(); + error(location, "negative index", info.c_str()); + recover(); + index = 0; + } + if (baseExpression->getType().getQualifier() == EvqConst) + { + if (baseExpression->isArray()) + { + // constant folding for arrays + indexedExpression = addConstArrayNode(index, baseExpression, location); + } + else if (baseExpression->isVector()) + { + // constant folding for vectors + TVectorFields fields; + fields.num = 1; + fields.offsets[0] = index; // need to do it this way because v.xy sends fields integer array + indexedExpression = addConstVectorNode(fields, baseExpression, location); + } + else if (baseExpression->isMatrix()) + { + // constant folding for matrices + indexedExpression = addConstMatrixNode(index, baseExpression, location); + } + } + else + { + if (baseExpression->isArray()) + { + if (index >= baseExpression->getType().getArraySize()) + { + std::stringstream extraInfoStream; + extraInfoStream << "array index out of range '" << index << "'"; + std::string extraInfo = extraInfoStream.str(); + error(location, "", "[", extraInfo.c_str()); + recover(); + index = baseExpression->getType().getArraySize() - 1; + } + else if (baseExpression->getQualifier() == EvqFragData && index > 0 && !isExtensionEnabled("GL_EXT_draw_buffers")) + { + error(location, "", "[", "array indexes for gl_FragData must be zero when GL_EXT_draw_buffers is disabled"); + recover(); + index = 0; + } + } + else if ((baseExpression->isVector() || baseExpression->isMatrix()) && baseExpression->getType().getNominalSize() <= index) + { + std::stringstream extraInfoStream; + extraInfoStream << "field selection out of range '" << index << "'"; + std::string extraInfo = extraInfoStream.str(); + error(location, "", "[", extraInfo.c_str()); + recover(); + index = baseExpression->getType().getNominalSize() - 1; + } + + indexExpression->getAsConstantUnion()->getUnionArrayPointer()->setIConst(index); + indexedExpression = intermediate.addIndex(EOpIndexDirect, baseExpression, indexExpression, location); + } + } + else + { + indexedExpression = intermediate.addIndex(EOpIndexIndirect, baseExpression, indexExpression, location); + } + + if (indexedExpression == 0) + { + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setFConst(0.0f); + indexedExpression = intermediate.addConstantUnion(unionArray, TType(EbtFloat, EbpHigh, EvqConst), location); + } + else if (baseExpression->isArray()) + { + const TType &baseType = baseExpression->getType(); + if (baseType.getStruct()) + { + TType copyOfType(baseType.getStruct()); + indexedExpression->setType(copyOfType); + } + else + { + indexedExpression->setType(TType(baseExpression->getBasicType(), baseExpression->getPrecision(), EvqTemporary, baseExpression->getNominalSize(), baseExpression->isMatrix())); + } + + if (baseExpression->getType().getQualifier() == EvqConst) + { + indexedExpression->getTypePointer()->setQualifier(EvqConst); + } + } + else if (baseExpression->isMatrix()) + { + TQualifier qualifier = baseExpression->getType().getQualifier() == EvqConst ? EvqConst : EvqTemporary; + indexedExpression->setType(TType(baseExpression->getBasicType(), baseExpression->getPrecision(), qualifier, baseExpression->getNominalSize())); + } + else if (baseExpression->isVector()) + { + TQualifier qualifier = baseExpression->getType().getQualifier() == EvqConst ? EvqConst : EvqTemporary; + indexedExpression->setType(TType(baseExpression->getBasicType(), baseExpression->getPrecision(), qualifier)); + } + else + { + indexedExpression->setType(baseExpression->getType()); + } + + return indexedExpression; +} + +// +// Parse an array of strings using yyparse. +// +// Returns 0 for success. +// +int PaParseStrings(size_t count, const char* const string[], const int length[], + TParseContext* context) { + if ((count == 0) || (string == NULL)) + return 1; + + if (glslang_initialize(context)) + return 1; + + int error = glslang_scan(count, string, length, context); + if (!error) + error = glslang_parse(context); + + glslang_finalize(context); + + return (error == 0) && (context->numErrors() == 0) ? 0 : 1; +} + + + diff --git a/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.h b/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.h new file mode 100644 index 00000000000..c2b3c3f7ec8 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.h @@ -0,0 +1,134 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +#ifndef _PARSER_HELPER_INCLUDED_ +#define _PARSER_HELPER_INCLUDED_ + +#include "compiler/Diagnostics.h" +#include "compiler/DirectiveHandler.h" +#include "compiler/localintermediate.h" +#include "compiler/preprocessor/Preprocessor.h" +#include "compiler/ShHandle.h" +#include "compiler/SymbolTable.h" + +struct TMatrixFields { + bool wholeRow; + bool wholeCol; + int row; + int col; +}; + +// +// The following are extra variables needed during parsing, grouped together so +// they can be passed to the parser without needing a global. +// +struct TParseContext { + TParseContext(TSymbolTable& symt, TExtensionBehavior& ext, TIntermediate& interm, ShShaderType type, ShShaderSpec spec, int options, bool checksPrecErrors, const char* sourcePath, TInfoSink& is) : + intermediate(interm), + symbolTable(symt), + shaderType(type), + shaderSpec(spec), + compileOptions(options), + sourcePath(sourcePath), + treeRoot(0), + loopNestingLevel(0), + structNestingLevel(0), + currentFunctionType(NULL), + functionReturnsValue(false), + checksPrecisionErrors(checksPrecErrors), + diagnostics(is), + directiveHandler(ext, diagnostics), + preprocessor(&diagnostics, &directiveHandler), + scanner(NULL) { } + TIntermediate& intermediate; // to hold and build a parse tree + TSymbolTable& symbolTable; // symbol table that goes with the language currently being parsed + ShShaderType shaderType; // vertex or fragment language (future: pack or unpack) + ShShaderSpec shaderSpec; // The language specification compiler conforms to - GLES2 or WebGL. + int compileOptions; + const char* sourcePath; // Path of source file or NULL. + TIntermNode* treeRoot; // root of parse tree being created + int loopNestingLevel; // 0 if outside all loops + int structNestingLevel; // incremented while parsing a struct declaration + const TType* currentFunctionType; // the return type of the function that's currently being parsed + bool functionReturnsValue; // true if a non-void function has a return + bool checksPrecisionErrors; // true if an error will be generated when a variable is declared without precision, explicit or implicit. + bool fragmentPrecisionHigh; // true if highp precision is supported in the fragment language. + TString HashErrMsg; + TDiagnostics diagnostics; + TDirectiveHandler directiveHandler; + pp::Preprocessor preprocessor; + void* scanner; + + int numErrors() const { return diagnostics.numErrors(); } + TInfoSink& infoSink() { return diagnostics.infoSink(); } + void error(const TSourceLoc& loc, const char *reason, const char* token, + const char* extraInfo=""); + void warning(const TSourceLoc& loc, const char* reason, const char* token, + const char* extraInfo=""); + void trace(const char* str); + void recover(); + + bool parseVectorFields(const TString&, int vecSize, TVectorFields&, const TSourceLoc& line); + bool parseMatrixFields(const TString&, int matSize, TMatrixFields&, const TSourceLoc& line); + + bool reservedErrorCheck(const TSourceLoc& line, const TString& identifier); + void assignError(const TSourceLoc& line, const char* op, TString left, TString right); + void unaryOpError(const TSourceLoc& line, const char* op, TString operand); + void binaryOpError(const TSourceLoc& line, const char* op, TString left, TString right); + bool precisionErrorCheck(const TSourceLoc& line, TPrecision precision, TBasicType type); + bool lValueErrorCheck(const TSourceLoc& line, const char* op, TIntermTyped*); + bool constErrorCheck(TIntermTyped* node); + bool integerErrorCheck(TIntermTyped* node, const char* token); + bool globalErrorCheck(const TSourceLoc& line, bool global, const char* token); + bool constructorErrorCheck(const TSourceLoc& line, TIntermNode*, TFunction&, TOperator, TType*); + bool arraySizeErrorCheck(const TSourceLoc& line, TIntermTyped* expr, int& size); + bool arrayQualifierErrorCheck(const TSourceLoc& line, TPublicType type); + bool arrayTypeErrorCheck(const TSourceLoc& line, TPublicType type); + bool arrayErrorCheck(const TSourceLoc& line, TString& identifier, TPublicType type, TVariable*& variable); + bool voidErrorCheck(const TSourceLoc&, const TString&, const TPublicType&); + bool boolErrorCheck(const TSourceLoc&, const TIntermTyped*); + bool boolErrorCheck(const TSourceLoc&, const TPublicType&); + bool samplerErrorCheck(const TSourceLoc& line, const TPublicType& pType, const char* reason); + bool structQualifierErrorCheck(const TSourceLoc& line, const TPublicType& pType); + bool parameterSamplerErrorCheck(const TSourceLoc& line, TQualifier qualifier, const TType& type); + bool nonInitConstErrorCheck(const TSourceLoc& line, TString& identifier, TPublicType& type, bool array); + bool nonInitErrorCheck(const TSourceLoc& line, TString& identifier, TPublicType& type, TVariable*& variable); + bool paramErrorCheck(const TSourceLoc& line, TQualifier qualifier, TQualifier paramQualifier, TType* type); + bool extensionErrorCheck(const TSourceLoc& line, const TString&); + + const TPragma& pragma() const { return directiveHandler.pragma(); } + const TExtensionBehavior& extensionBehavior() const { return directiveHandler.extensionBehavior(); } + bool supportsExtension(const char* extension); + bool isExtensionEnabled(const char* extension) const; + + bool containsSampler(TType& type); + bool areAllChildConst(TIntermAggregate* aggrNode); + const TFunction* findFunction(const TSourceLoc& line, TFunction* pfnCall, bool *builtIn = 0); + bool executeInitializer(const TSourceLoc& line, TString& identifier, TPublicType& pType, + TIntermTyped* initializer, TIntermNode*& intermNode, TVariable* variable = 0); + + TIntermTyped* addConstructor(TIntermNode*, const TType*, TOperator, TFunction*, const TSourceLoc&); + TIntermTyped* foldConstConstructor(TIntermAggregate* aggrNode, const TType& type); + TIntermTyped* constructStruct(TIntermNode*, TType*, int, const TSourceLoc&, bool subset); + TIntermTyped* constructBuiltIn(const TType*, TOperator, TIntermNode*, const TSourceLoc&, bool subset); + TIntermTyped* addConstVectorNode(TVectorFields&, TIntermTyped*, const TSourceLoc&); + TIntermTyped* addConstMatrixNode(int , TIntermTyped*, const TSourceLoc&); + TIntermTyped* addConstArrayNode(int index, TIntermTyped* node, const TSourceLoc& line); + TIntermTyped* addConstStruct(TString& , TIntermTyped*, const TSourceLoc&); + TIntermTyped* addIndexExpression(TIntermTyped *baseExpression, const TSourceLoc& location, TIntermTyped *indexExpression); + + // Performs an error check for embedded struct declarations. + // Returns true if an error was raised due to the declaration of + // this struct. + bool enterStructDeclaration(const TSourceLoc& line, const TString& identifier); + void exitStructDeclaration(); + + bool structNestingErrorCheck(const TSourceLoc& line, const TField& field); +}; + +int PaParseStrings(size_t count, const char* const string[], const int length[], + TParseContext* context); + +#endif // _PARSER_HELPER_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.cpp b/Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.cpp new file mode 100644 index 00000000000..3f0f5a63a81 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.cpp @@ -0,0 +1,317 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/PoolAlloc.h" + +#ifndef _MSC_VER +#include +#endif +#include + +#include "common/angleutils.h" +#include "compiler/InitializeGlobals.h" +#include "compiler/osinclude.h" + +OS_TLSIndex PoolIndex = OS_INVALID_TLS_INDEX; + +void InitializeGlobalPools() +{ + TThreadGlobalPools* globalPools= static_cast(OS_GetTLSValue(PoolIndex)); + if (globalPools) + return; + + TThreadGlobalPools* threadData = new TThreadGlobalPools(); + threadData->globalPoolAllocator = 0; + + OS_SetTLSValue(PoolIndex, threadData); +} + +void FreeGlobalPools() +{ + // Release the allocated memory for this thread. + TThreadGlobalPools* globalPools= static_cast(OS_GetTLSValue(PoolIndex)); + if (!globalPools) + return; + + delete globalPools; +} + +bool InitializePoolIndex() +{ + // Allocate a TLS index. + if ((PoolIndex = OS_AllocTLSIndex()) == OS_INVALID_TLS_INDEX) + return false; + + return true; +} + +void FreePoolIndex() +{ + // Release the TLS index. + OS_FreeTLSIndex(PoolIndex); +} + +TPoolAllocator& GetGlobalPoolAllocator() +{ + TThreadGlobalPools* threadData = static_cast(OS_GetTLSValue(PoolIndex)); + + return *threadData->globalPoolAllocator; +} + +void SetGlobalPoolAllocator(TPoolAllocator* poolAllocator) +{ + TThreadGlobalPools* threadData = static_cast(OS_GetTLSValue(PoolIndex)); + + threadData->globalPoolAllocator = poolAllocator; +} + +// +// Implement the functionality of the TPoolAllocator class, which +// is documented in PoolAlloc.h. +// +TPoolAllocator::TPoolAllocator(int growthIncrement, int allocationAlignment) : + pageSize(growthIncrement), + alignment(allocationAlignment), + freeList(0), + inUseList(0), + numCalls(0), + totalBytes(0) +{ + // + // Don't allow page sizes we know are smaller than all common + // OS page sizes. + // + if (pageSize < 4*1024) + pageSize = 4*1024; + + // + // A large currentPageOffset indicates a new page needs to + // be obtained to allocate memory. + // + currentPageOffset = pageSize; + + // + // Adjust alignment to be at least pointer aligned and + // power of 2. + // + size_t minAlign = sizeof(void*); + alignment &= ~(minAlign - 1); + if (alignment < minAlign) + alignment = minAlign; + size_t a = 1; + while (a < alignment) + a <<= 1; + alignment = a; + alignmentMask = a - 1; + + // + // Align header skip + // + headerSkip = minAlign; + if (headerSkip < sizeof(tHeader)) { + headerSkip = (sizeof(tHeader) + alignmentMask) & ~alignmentMask; + } +} + +TPoolAllocator::~TPoolAllocator() +{ + while (inUseList) { + tHeader* next = inUseList->nextPage; + inUseList->~tHeader(); + delete [] reinterpret_cast(inUseList); + inUseList = next; + } + + // We should not check the guard blocks + // here, because we did it already when the block was + // placed into the free list. + // + while (freeList) { + tHeader* next = freeList->nextPage; + delete [] reinterpret_cast(freeList); + freeList = next; + } +} + +// Support MSVC++ 6.0 +const unsigned char TAllocation::guardBlockBeginVal = 0xfb; +const unsigned char TAllocation::guardBlockEndVal = 0xfe; +const unsigned char TAllocation::userDataFill = 0xcd; + +#ifdef GUARD_BLOCKS + const size_t TAllocation::guardBlockSize = 16; +#else + const size_t TAllocation::guardBlockSize = 0; +#endif + +// +// Check a single guard block for damage +// +void TAllocation::checkGuardBlock(unsigned char* blockMem, unsigned char val, const char* locText) const +{ +#ifdef GUARD_BLOCKS + for (size_t x = 0; x < guardBlockSize; x++) { + if (blockMem[x] != val) { + char assertMsg[80]; + + // We don't print the assert message. It's here just to be helpful. +#if defined(_MSC_VER) + snprintf(assertMsg, sizeof(assertMsg), "PoolAlloc: Damage %s %Iu byte allocation at 0x%p\n", + locText, size, data()); +#else + snprintf(assertMsg, sizeof(assertMsg), "PoolAlloc: Damage %s %zu byte allocation at 0x%p\n", + locText, size, data()); +#endif + assert(0 && "PoolAlloc: Damage in guard block"); + } + } +#endif +} + + +void TPoolAllocator::push() +{ + tAllocState state = { currentPageOffset, inUseList }; + + stack.push_back(state); + + // + // Indicate there is no current page to allocate from. + // + currentPageOffset = pageSize; +} + +// +// Do a mass-deallocation of all the individual allocations +// that have occurred since the last push(), or since the +// last pop(), or since the object's creation. +// +// The deallocated pages are saved for future allocations. +// +void TPoolAllocator::pop() +{ + if (stack.size() < 1) + return; + + tHeader* page = stack.back().page; + currentPageOffset = stack.back().offset; + + while (inUseList != page) { + // invoke destructor to free allocation list + inUseList->~tHeader(); + + tHeader* nextInUse = inUseList->nextPage; + if (inUseList->pageCount > 1) + delete [] reinterpret_cast(inUseList); + else { + inUseList->nextPage = freeList; + freeList = inUseList; + } + inUseList = nextInUse; + } + + stack.pop_back(); +} + +// +// Do a mass-deallocation of all the individual allocations +// that have occurred. +// +void TPoolAllocator::popAll() +{ + while (stack.size() > 0) + pop(); +} + +void* TPoolAllocator::allocate(size_t numBytes) +{ + // + // Just keep some interesting statistics. + // + ++numCalls; + totalBytes += numBytes; + + // If we are using guard blocks, all allocations are bracketed by + // them: [guardblock][allocation][guardblock]. numBytes is how + // much memory the caller asked for. allocationSize is the total + // size including guard blocks. In release build, + // guardBlockSize=0 and this all gets optimized away. + size_t allocationSize = TAllocation::allocationSize(numBytes); + // Detect integer overflow. + if (allocationSize < numBytes) + return 0; + + // + // Do the allocation, most likely case first, for efficiency. + // This step could be moved to be inline sometime. + // + if (allocationSize <= pageSize - currentPageOffset) { + // + // Safe to allocate from currentPageOffset. + // + unsigned char* memory = reinterpret_cast(inUseList) + currentPageOffset; + currentPageOffset += allocationSize; + currentPageOffset = (currentPageOffset + alignmentMask) & ~alignmentMask; + + return initializeAllocation(inUseList, memory, numBytes); + } + + if (allocationSize > pageSize - headerSkip) { + // + // Do a multi-page allocation. Don't mix these with the others. + // The OS is efficient and allocating and free-ing multiple pages. + // + size_t numBytesToAlloc = allocationSize + headerSkip; + // Detect integer overflow. + if (numBytesToAlloc < allocationSize) + return 0; + + tHeader* memory = reinterpret_cast(::new char[numBytesToAlloc]); + if (memory == 0) + return 0; + + // Use placement-new to initialize header + new(memory) tHeader(inUseList, (numBytesToAlloc + pageSize - 1) / pageSize); + inUseList = memory; + + currentPageOffset = pageSize; // make next allocation come from a new page + + // No guard blocks for multi-page allocations (yet) + return reinterpret_cast(reinterpret_cast(memory) + headerSkip); + } + + // + // Need a simple page to allocate from. + // + tHeader* memory; + if (freeList) { + memory = freeList; + freeList = freeList->nextPage; + } else { + memory = reinterpret_cast(::new char[pageSize]); + if (memory == 0) + return 0; + } + + // Use placement-new to initialize header + new(memory) tHeader(inUseList, 1); + inUseList = memory; + + unsigned char* ret = reinterpret_cast(inUseList) + headerSkip; + currentPageOffset = (headerSkip + allocationSize + alignmentMask) & ~alignmentMask; + + return initializeAllocation(inUseList, ret, numBytes); +} + + +// +// Check all allocations in a list for damage by calling check on each. +// +void TAllocation::checkAllocList() const +{ + for (const TAllocation* alloc = this; alloc != 0; alloc = alloc->prevAlloc) + alloc->check(); +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.h b/Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.h new file mode 100644 index 00000000000..a8a59c69acd --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.h @@ -0,0 +1,306 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef _POOLALLOC_INCLUDED_ +#define _POOLALLOC_INCLUDED_ + +#ifdef _DEBUG +#define GUARD_BLOCKS // define to enable guard block sanity checking +#endif + +// +// This header defines an allocator that can be used to efficiently +// allocate a large number of small requests for heap memory, with the +// intention that they are not individually deallocated, but rather +// collectively deallocated at one time. +// +// This simultaneously +// +// * Makes each individual allocation much more efficient; the +// typical allocation is trivial. +// * Completely avoids the cost of doing individual deallocation. +// * Saves the trouble of tracking down and plugging a large class of leaks. +// +// Individual classes can use this allocator by supplying their own +// new and delete methods. +// +// STL containers can use this allocator by using the pool_allocator +// class as the allocator (second) template argument. +// + +#include +#include +#include + +// If we are using guard blocks, we must track each indivual +// allocation. If we aren't using guard blocks, these +// never get instantiated, so won't have any impact. +// + +class TAllocation { +public: + TAllocation(size_t size, unsigned char* mem, TAllocation* prev = 0) : + size(size), mem(mem), prevAlloc(prev) { + // Allocations are bracketed: + // [allocationHeader][initialGuardBlock][userData][finalGuardBlock] + // This would be cleaner with if (guardBlockSize)..., but that + // makes the compiler print warnings about 0 length memsets, + // even with the if() protecting them. +#ifdef GUARD_BLOCKS + memset(preGuard(), guardBlockBeginVal, guardBlockSize); + memset(data(), userDataFill, size); + memset(postGuard(), guardBlockEndVal, guardBlockSize); +#endif + } + + void check() const { + checkGuardBlock(preGuard(), guardBlockBeginVal, "before"); + checkGuardBlock(postGuard(), guardBlockEndVal, "after"); + } + + void checkAllocList() const; + + // Return total size needed to accomodate user buffer of 'size', + // plus our tracking data. + inline static size_t allocationSize(size_t size) { + return size + 2 * guardBlockSize + headerSize(); + } + + // Offset from surrounding buffer to get to user data buffer. + inline static unsigned char* offsetAllocation(unsigned char* m) { + return m + guardBlockSize + headerSize(); + } + +private: + void checkGuardBlock(unsigned char* blockMem, unsigned char val, const char* locText) const; + + // Find offsets to pre and post guard blocks, and user data buffer + unsigned char* preGuard() const { return mem + headerSize(); } + unsigned char* data() const { return preGuard() + guardBlockSize; } + unsigned char* postGuard() const { return data() + size; } + + size_t size; // size of the user data area + unsigned char* mem; // beginning of our allocation (pts to header) + TAllocation* prevAlloc; // prior allocation in the chain + + // Support MSVC++ 6.0 + const static unsigned char guardBlockBeginVal; + const static unsigned char guardBlockEndVal; + const static unsigned char userDataFill; + + const static size_t guardBlockSize; +#ifdef GUARD_BLOCKS + inline static size_t headerSize() { return sizeof(TAllocation); } +#else + inline static size_t headerSize() { return 0; } +#endif +}; + +// +// There are several stacks. One is to track the pushing and popping +// of the user, and not yet implemented. The others are simply a +// repositories of free pages or used pages. +// +// Page stacks are linked together with a simple header at the beginning +// of each allocation obtained from the underlying OS. Multi-page allocations +// are returned to the OS. Individual page allocations are kept for future +// re-use. +// +// The "page size" used is not, nor must it match, the underlying OS +// page size. But, having it be about that size or equal to a set of +// pages is likely most optimal. +// +class TPoolAllocator { +public: + TPoolAllocator(int growthIncrement = 8*1024, int allocationAlignment = 16); + + // + // Don't call the destructor just to free up the memory, call pop() + // + ~TPoolAllocator(); + + // + // Call push() to establish a new place to pop memory too. Does not + // have to be called to get things started. + // + void push(); + + // + // Call pop() to free all memory allocated since the last call to push(), + // or if no last call to push, frees all memory since first allocation. + // + void pop(); + + // + // Call popAll() to free all memory allocated. + // + void popAll(); + + // + // Call allocate() to actually acquire memory. Returns 0 if no memory + // available, otherwise a properly aligned pointer to 'numBytes' of memory. + // + void* allocate(size_t numBytes); + + // + // There is no deallocate. The point of this class is that + // deallocation can be skipped by the user of it, as the model + // of use is to simultaneously deallocate everything at once + // by calling pop(), and to not have to solve memory leak problems. + // + +protected: + friend struct tHeader; + + struct tHeader { + tHeader(tHeader* nextPage, size_t pageCount) : + nextPage(nextPage), + pageCount(pageCount) +#ifdef GUARD_BLOCKS + , lastAllocation(0) +#endif + { } + + ~tHeader() { +#ifdef GUARD_BLOCKS + if (lastAllocation) + lastAllocation->checkAllocList(); +#endif + } + + tHeader* nextPage; + size_t pageCount; +#ifdef GUARD_BLOCKS + TAllocation* lastAllocation; +#endif + }; + + struct tAllocState { + size_t offset; + tHeader* page; + }; + typedef std::vector tAllocStack; + + // Track allocations if and only if we're using guard blocks + void* initializeAllocation(tHeader* block, unsigned char* memory, size_t numBytes) { +#ifdef GUARD_BLOCKS + new(memory) TAllocation(numBytes, memory, block->lastAllocation); + block->lastAllocation = reinterpret_cast(memory); +#endif + // This is optimized entirely away if GUARD_BLOCKS is not defined. + return TAllocation::offsetAllocation(memory); + } + + size_t pageSize; // granularity of allocation from the OS + size_t alignment; // all returned allocations will be aligned at + // this granularity, which will be a power of 2 + size_t alignmentMask; + size_t headerSkip; // amount of memory to skip to make room for the + // header (basically, size of header, rounded + // up to make it aligned + size_t currentPageOffset; // next offset in top of inUseList to allocate from + tHeader* freeList; // list of popped memory + tHeader* inUseList; // list of all memory currently being used + tAllocStack stack; // stack of where to allocate from, to partition pool + + int numCalls; // just an interesting statistic + size_t totalBytes; // just an interesting statistic +private: + TPoolAllocator& operator=(const TPoolAllocator&); // dont allow assignment operator + TPoolAllocator(const TPoolAllocator&); // dont allow default copy constructor +}; + + +// +// There could potentially be many pools with pops happening at +// different times. But a simple use is to have a global pop +// with everyone using the same global allocator. +// +extern TPoolAllocator& GetGlobalPoolAllocator(); +extern void SetGlobalPoolAllocator(TPoolAllocator* poolAllocator); +#define GlobalPoolAllocator GetGlobalPoolAllocator() + +struct TThreadGlobalPools +{ + TPoolAllocator* globalPoolAllocator; +}; + +// +// This STL compatible allocator is intended to be used as the allocator +// parameter to templatized STL containers, like vector and map. +// +// It will use the pools for allocation, and not +// do any deallocation, but will still do destruction. +// +template +class pool_allocator { +public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T* pointer; + typedef const T* const_pointer; + typedef T& reference; + typedef const T& const_reference; + typedef T value_type; + + template + struct rebind { + typedef pool_allocator other; + }; + pointer address(reference x) const { return &x; } + const_pointer address(const_reference x) const { return &x; } + + pool_allocator() : allocator(&GlobalPoolAllocator) { } + pool_allocator(TPoolAllocator& a) : allocator(&a) { } + pool_allocator(const pool_allocator& p) : allocator(p.allocator) { } + + template + pool_allocator& operator=(const pool_allocator& p) { + allocator = p.allocator; + return *this; + } + + template + pool_allocator(const pool_allocator& p) : allocator(&p.getAllocator()) { } + +#if defined(__SUNPRO_CC) && !defined(_RWSTD_ALLOCATOR) + // libCStd on some platforms have a different allocate/deallocate interface. + // Caller pre-bakes sizeof(T) into 'n' which is the number of bytes to be + // allocated, not the number of elements. + void* allocate(size_type n) { + return getAllocator().allocate(n); + } + void* allocate(size_type n, const void*) { + return getAllocator().allocate(n); + } + void deallocate(void*, size_type) {} +#else + pointer allocate(size_type n) { + return reinterpret_cast(getAllocator().allocate(n * sizeof(T))); + } + pointer allocate(size_type n, const void*) { + return reinterpret_cast(getAllocator().allocate(n * sizeof(T))); + } + void deallocate(pointer, size_type) {} +#endif // _RWSTD_ALLOCATOR + + void construct(pointer p, const T& val) { new ((void *)p) T(val); } + void destroy(pointer p) { p->T::~T(); } + + bool operator==(const pool_allocator& rhs) const { return &getAllocator() == &rhs.getAllocator(); } + bool operator!=(const pool_allocator& rhs) const { return &getAllocator() != &rhs.getAllocator(); } + + size_type max_size() const { return static_cast(-1) / sizeof(T); } + size_type max_size(int size) const { return static_cast(-1) / size; } + + void setAllocator(TPoolAllocator* a) { allocator = a; } + TPoolAllocator& getAllocator() const { return *allocator; } + +protected: + TPoolAllocator* allocator; +}; + +#endif // _POOLALLOC_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/Pragma.h b/Source/ThirdParty/ANGLE/src/compiler/Pragma.h new file mode 100644 index 00000000000..2f744123b82 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/Pragma.h @@ -0,0 +1,19 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_PRAGMA_H_ +#define COMPILER_PRAGMA_H_ + +struct TPragma { + // By default optimization is turned on and debug is turned off. + TPragma() : optimize(true), debug(false) { } + TPragma(bool o, bool d) : optimize(o), debug(d) { } + + bool optimize; + bool debug; +}; + +#endif // COMPILER_PRAGMA_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/QualifierAlive.cpp b/Source/ThirdParty/ANGLE/src/compiler/QualifierAlive.cpp new file mode 100644 index 00000000000..92a6874eb7b --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/QualifierAlive.cpp @@ -0,0 +1,58 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/intermediate.h" + +class TAliveTraverser : public TIntermTraverser { +public: + TAliveTraverser(TQualifier q) : TIntermTraverser(true, false, false, true), found(false), qualifier(q) + { + } + + bool wasFound() { return found; } + +protected: + bool found; + TQualifier qualifier; + + void visitSymbol(TIntermSymbol*); + bool visitSelection(Visit, TIntermSelection*); +}; + +// +// Report whether or not a variable of the given qualifier type +// is guaranteed written. Not always possible to determine if +// it is written conditionally. +// +// ?? It does not do this well yet, this is just a place holder +// that simply determines if it was reference at all, anywhere. +// +bool QualifierWritten(TIntermNode* node, TQualifier qualifier) +{ + TAliveTraverser it(qualifier); + + if (node) + node->traverse(&it); + + return it.wasFound(); +} + +void TAliveTraverser::visitSymbol(TIntermSymbol* node) +{ + // + // If it's what we're looking for, record it. + // + if (node->getQualifier() == qualifier) + found = true; +} + +bool TAliveTraverser::visitSelection(Visit preVisit, TIntermSelection* node) +{ + if (wasFound()) + return false; + + return true; +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/QualifierAlive.h b/Source/ThirdParty/ANGLE/src/compiler/QualifierAlive.h new file mode 100644 index 00000000000..872a06f7219 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/QualifierAlive.h @@ -0,0 +1,7 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +bool QualifierWritten(TIntermNode* root, TQualifier); diff --git a/Source/ThirdParty/ANGLE/src/compiler/RemoveTree.cpp b/Source/ThirdParty/ANGLE/src/compiler/RemoveTree.cpp new file mode 100644 index 00000000000..a4b8c1e63e1 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/RemoveTree.cpp @@ -0,0 +1,77 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/intermediate.h" +#include "compiler/RemoveTree.h" + +// +// Code to recursively delete the intermediate tree. +// + +class RemoveTree : public TIntermTraverser +{ +public: + RemoveTree() : TIntermTraverser(false, false, true) + { + } + +protected: + void visitSymbol(TIntermSymbol*); + void visitConstantUnion(TIntermConstantUnion*); + bool visitBinary(Visit visit, TIntermBinary*); + bool visitUnary(Visit visit, TIntermUnary*); + bool visitSelection(Visit visit, TIntermSelection*); + bool visitAggregate(Visit visit, TIntermAggregate*); +}; + +void RemoveTree::visitSymbol(TIntermSymbol* node) +{ + delete node; +} + +bool RemoveTree::visitBinary(Visit visit, TIntermBinary* node) +{ + delete node; + + return true; +} + +bool RemoveTree::visitUnary(Visit visit, TIntermUnary* node) +{ + delete node; + + return true; +} + +bool RemoveTree::visitAggregate(Visit visit, TIntermAggregate* node) +{ + delete node; + + return true; +} + +bool RemoveTree::visitSelection(Visit visit, TIntermSelection* node) +{ + delete node; + + return true; +} + +void RemoveTree::visitConstantUnion(TIntermConstantUnion* node) +{ + delete node; +} + +// +// Entry point. +// +void RemoveAllTreeNodes(TIntermNode* root) +{ + RemoveTree it; + + root->traverse(&it); +} + diff --git a/Source/ThirdParty/ANGLE/src/compiler/RemoveTree.h b/Source/ThirdParty/ANGLE/src/compiler/RemoveTree.h new file mode 100644 index 00000000000..97a821679c2 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/RemoveTree.h @@ -0,0 +1,7 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +void RemoveAllTreeNodes(TIntermNode*); diff --git a/Source/ThirdParty/ANGLE/src/compiler/RenameFunction.h b/Source/ThirdParty/ANGLE/src/compiler/RenameFunction.h new file mode 100644 index 00000000000..3908bfddb82 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/RenameFunction.h @@ -0,0 +1,36 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_RENAME_FUNCTION +#define COMPILER_RENAME_FUNCTION + +#include "compiler/intermediate.h" + +// +// Renames a function, including its declaration and any calls to it. +// +class RenameFunction : public TIntermTraverser +{ +public: + RenameFunction(const TString& oldFunctionName, const TString& newFunctionName) + : TIntermTraverser(true, false, false) + , mOldFunctionName(oldFunctionName) + , mNewFunctionName(newFunctionName) {} + + virtual bool visitAggregate(Visit visit, TIntermAggregate* node) + { + TOperator op = node->getOp(); + if ((op == EOpFunction || op == EOpFunctionCall) && node->getName() == mOldFunctionName) + node->setName(mNewFunctionName); + return true; + } + +private: + const TString mOldFunctionName; + const TString mNewFunctionName; +}; + +#endif // COMPILER_RENAME_FUNCTION diff --git a/Source/ThirdParty/ANGLE/src/compiler/SearchSymbol.cpp b/Source/ThirdParty/ANGLE/src/compiler/SearchSymbol.cpp new file mode 100644 index 00000000000..9368f1a4faf --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/SearchSymbol.cpp @@ -0,0 +1,38 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// SearchSymbol is an AST traverser to detect the use of a given symbol name +// + +#include "compiler/SearchSymbol.h" + +#include "compiler/InfoSink.h" +#include "compiler/OutputHLSL.h" + +namespace sh +{ +SearchSymbol::SearchSymbol(const TString &symbol) : mSymbol(symbol) +{ + match = false; +} + +void SearchSymbol::traverse(TIntermNode *node) +{ + node->traverse(this); +} + +void SearchSymbol::visitSymbol(TIntermSymbol *symbolNode) +{ + if (symbolNode->getSymbol() == mSymbol) + { + match = true; + } +} + +bool SearchSymbol::foundMatch() const +{ + return match; +} +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/SearchSymbol.h b/Source/ThirdParty/ANGLE/src/compiler/SearchSymbol.h new file mode 100644 index 00000000000..6bc0b90febf --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/SearchSymbol.h @@ -0,0 +1,33 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// SearchSymbol is an AST traverser to detect the use of a given symbol name +// + +#ifndef COMPILER_SEARCHSYMBOL_H_ +#define COMPILER_SEARCHSYMBOL_H_ + +#include "compiler/intermediate.h" +#include "compiler/ParseHelper.h" + +namespace sh +{ +class SearchSymbol : public TIntermTraverser +{ + public: + SearchSymbol(const TString &symbol); + + void traverse(TIntermNode *node); + void visitSymbol(TIntermSymbol *symbolNode); + + bool foundMatch() const; + + protected: + const TString &mSymbol; + bool match; +}; +} + +#endif // COMPILER_SEARCHSYMBOL_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/ShHandle.h b/Source/ThirdParty/ANGLE/src/compiler/ShHandle.h new file mode 100644 index 00000000000..eaf6f687d09 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/ShHandle.h @@ -0,0 +1,167 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef _SHHANDLE_INCLUDED_ +#define _SHHANDLE_INCLUDED_ + +// +// Machine independent part of the compiler private objects +// sent as ShHandle to the driver. +// +// This should not be included by driver code. +// + +#include "GLSLANG/ShaderLang.h" + +#include "compiler/BuiltInFunctionEmulator.h" +#include "compiler/ExtensionBehavior.h" +#include "compiler/HashNames.h" +#include "compiler/InfoSink.h" +#include "compiler/SymbolTable.h" +#include "compiler/VariableInfo.h" +#include "third_party/compiler/ArrayBoundsClamper.h" + +class LongNameMap; +class TCompiler; +class TDependencyGraph; +class TranslatorHLSL; + +// +// Helper function to identify specs that are based on the WebGL spec, +// like the CSS Shaders spec. +// +bool isWebGLBasedSpec(ShShaderSpec spec); + +// +// The base class used to back handles returned to the driver. +// +class TShHandleBase { +public: + TShHandleBase(); + virtual ~TShHandleBase(); + virtual TCompiler* getAsCompiler() { return 0; } + virtual TranslatorHLSL* getAsTranslatorHLSL() { return 0; } + +protected: + // Memory allocator. Allocates and tracks memory required by the compiler. + // Deallocates all memory when compiler is destructed. + TPoolAllocator allocator; +}; + +// +// The base class for the machine dependent compiler to derive from +// for managing object code from the compile. +// +class TCompiler : public TShHandleBase { +public: + TCompiler(ShShaderType type, ShShaderSpec spec); + virtual ~TCompiler(); + virtual TCompiler* getAsCompiler() { return this; } + + bool Init(const ShBuiltInResources& resources); + bool compile(const char* const shaderStrings[], + size_t numStrings, + int compileOptions); + + // Get results of the last compilation. + TInfoSink& getInfoSink() { return infoSink; } + const TVariableInfoList& getAttribs() const { return attribs; } + const TVariableInfoList& getUniforms() const { return uniforms; } + int getMappedNameMaxLength() const; + + ShHashFunction64 getHashFunction() const { return hashFunction; } + NameMap& getNameMap() { return nameMap; } + TSymbolTable& getSymbolTable() { return symbolTable; } + +protected: + ShShaderType getShaderType() const { return shaderType; } + ShShaderSpec getShaderSpec() const { return shaderSpec; } + // Initialize symbol-table with built-in symbols. + bool InitBuiltInSymbolTable(const ShBuiltInResources& resources); + // Clears the results from the previous compilation. + void clearResults(); + // Return true if function recursion is detected or call depth exceeded. + bool detectCallDepth(TIntermNode* root, TInfoSink& infoSink, bool limitCallStackDepth); + // Rewrites a shader's intermediate tree according to the CSS Shaders spec. + void rewriteCSSShader(TIntermNode* root); + // Returns true if the given shader does not exceed the minimum + // functionality mandated in GLSL 1.0 spec Appendix A. + bool validateLimitations(TIntermNode* root); + // Collect info for all attribs and uniforms. + void collectAttribsUniforms(TIntermNode* root); + // Map long variable names into shorter ones. + void mapLongVariableNames(TIntermNode* root); + // Translate to object code. + virtual void translate(TIntermNode* root) = 0; + // Returns true if, after applying the packing rules in the GLSL 1.017 spec + // Appendix A, section 7, the shader does not use too many uniforms. + bool enforcePackingRestrictions(); + // Returns true if the shader passes the restrictions that aim to prevent timing attacks. + bool enforceTimingRestrictions(TIntermNode* root, bool outputGraph); + // Returns true if the shader does not use samplers. + bool enforceVertexShaderTimingRestrictions(TIntermNode* root); + // Returns true if the shader does not use sampler dependent values to affect control + // flow or in operations whose time can depend on the input values. + bool enforceFragmentShaderTimingRestrictions(const TDependencyGraph& graph); + // Return true if the maximum expression complexity below the limit. + bool limitExpressionComplexity(TIntermNode* root); + // Get built-in extensions with default behavior. + const TExtensionBehavior& getExtensionBehavior() const; + // Get the resources set by InitBuiltInSymbolTable + const ShBuiltInResources& getResources() const; + + const ArrayBoundsClamper& getArrayBoundsClamper() const; + ShArrayIndexClampingStrategy getArrayIndexClampingStrategy() const; + const BuiltInFunctionEmulator& getBuiltInFunctionEmulator() const; + +private: + ShShaderType shaderType; + ShShaderSpec shaderSpec; + + int maxUniformVectors; + int maxExpressionComplexity; + int maxCallStackDepth; + + ShBuiltInResources compileResources; + + // Built-in symbol table for the given language, spec, and resources. + // It is preserved from compile-to-compile. + TSymbolTable symbolTable; + // Built-in extensions with default behavior. + TExtensionBehavior extensionBehavior; + bool fragmentPrecisionHigh; + + ArrayBoundsClamper arrayBoundsClamper; + ShArrayIndexClampingStrategy clampingStrategy; + BuiltInFunctionEmulator builtInFunctionEmulator; + + // Results of compilation. + TInfoSink infoSink; // Output sink. + TVariableInfoList attribs; // Active attributes in the compiled shader. + TVariableInfoList uniforms; // Active uniforms in the compiled shader. + + // Cached copy of the ref-counted singleton. + LongNameMap* longNameMap; + + // name hashing. + ShHashFunction64 hashFunction; + NameMap nameMap; +}; + +// +// This is the interface between the machine independent code +// and the machine dependent code. +// +// The machine dependent code should derive from the classes +// above. Then Construct*() and Delete*() will create and +// destroy the machine dependent objects, which contain the +// above machine independent information. +// +TCompiler* ConstructCompiler( + ShShaderType type, ShShaderSpec spec, ShShaderOutput output); +void DeleteCompiler(TCompiler*); + +#endif // _SHHANDLE_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp b/Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp new file mode 100644 index 00000000000..3f6370385cf --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp @@ -0,0 +1,373 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// +// Implement the top-level of interface to the compiler, +// as defined in ShaderLang.h +// + +#include "GLSLANG/ShaderLang.h" + +#include "compiler/InitializeDll.h" +#include "compiler/preprocessor/length_limits.h" +#include "compiler/ShHandle.h" +#include "compiler/TranslatorHLSL.h" + +// +// This is the platform independent interface between an OGL driver +// and the shading language compiler. +// + +static bool checkActiveUniformAndAttribMaxLengths(const ShHandle handle, + size_t expectedValue) +{ + size_t activeUniformLimit = 0; + ShGetInfo(handle, SH_ACTIVE_UNIFORM_MAX_LENGTH, &activeUniformLimit); + size_t activeAttribLimit = 0; + ShGetInfo(handle, SH_ACTIVE_ATTRIBUTE_MAX_LENGTH, &activeAttribLimit); + return (expectedValue == activeUniformLimit && expectedValue == activeAttribLimit); +} + +static bool checkMappedNameMaxLength(const ShHandle handle, size_t expectedValue) +{ + size_t mappedNameMaxLength = 0; + ShGetInfo(handle, SH_MAPPED_NAME_MAX_LENGTH, &mappedNameMaxLength); + return (expectedValue == mappedNameMaxLength); +} + +static void getVariableInfo(ShShaderInfo varType, + const ShHandle handle, + int index, + size_t* length, + int* size, + ShDataType* type, + char* name, + char* mappedName) +{ + if (!handle || !size || !type || !name) + return; + ASSERT((varType == SH_ACTIVE_ATTRIBUTES) || + (varType == SH_ACTIVE_UNIFORMS)); + + TShHandleBase* base = reinterpret_cast(handle); + TCompiler* compiler = base->getAsCompiler(); + if (compiler == 0) + return; + + const TVariableInfoList& varList = varType == SH_ACTIVE_ATTRIBUTES ? + compiler->getAttribs() : compiler->getUniforms(); + if (index < 0 || index >= static_cast(varList.size())) + return; + + const TVariableInfo& varInfo = varList[index]; + if (length) *length = varInfo.name.size(); + *size = varInfo.size; + *type = varInfo.type; + + // This size must match that queried by + // SH_ACTIVE_UNIFORM_MAX_LENGTH and SH_ACTIVE_ATTRIBUTE_MAX_LENGTH + // in ShGetInfo, below. + size_t activeUniformAndAttribLength = 1 + MAX_SYMBOL_NAME_LEN; + ASSERT(checkActiveUniformAndAttribMaxLengths(handle, activeUniformAndAttribLength)); + strncpy(name, varInfo.name.c_str(), activeUniformAndAttribLength); + name[activeUniformAndAttribLength - 1] = 0; + if (mappedName) { + // This size must match that queried by + // SH_MAPPED_NAME_MAX_LENGTH in ShGetInfo, below. + size_t maxMappedNameLength = 1 + MAX_SYMBOL_NAME_LEN; + ASSERT(checkMappedNameMaxLength(handle, maxMappedNameLength)); + strncpy(mappedName, varInfo.mappedName.c_str(), maxMappedNameLength); + mappedName[maxMappedNameLength - 1] = 0; + } +} + +// +// Driver must call this first, once, before doing any other +// compiler operations. +// +int ShInitialize() +{ + if (!InitProcess()) + return 0; + + return 1; +} + +// +// Cleanup symbol tables +// +int ShFinalize() +{ + if (!DetachProcess()) + return 0; + + return 1; +} + +// +// Initialize built-in resources with minimum expected values. +// +void ShInitBuiltInResources(ShBuiltInResources* resources) +{ + // Constants. + resources->MaxVertexAttribs = 8; + resources->MaxVertexUniformVectors = 128; + resources->MaxVaryingVectors = 8; + resources->MaxVertexTextureImageUnits = 0; + resources->MaxCombinedTextureImageUnits = 8; + resources->MaxTextureImageUnits = 8; + resources->MaxFragmentUniformVectors = 16; + resources->MaxDrawBuffers = 1; + + // Extensions. + resources->OES_standard_derivatives = 0; + resources->OES_EGL_image_external = 0; + resources->ARB_texture_rectangle = 0; + resources->EXT_draw_buffers = 0; + resources->EXT_frag_depth = 0; + + // Disable highp precision in fragment shader by default. + resources->FragmentPrecisionHigh = 0; + + // Disable name hashing by default. + resources->HashFunction = NULL; + + resources->ArrayIndexClampingStrategy = SH_CLAMP_WITH_CLAMP_INTRINSIC; +} + +// +// Driver calls these to create and destroy compiler objects. +// +ShHandle ShConstructCompiler(ShShaderType type, ShShaderSpec spec, + ShShaderOutput output, + const ShBuiltInResources* resources) +{ + if (!InitThread()) + return 0; + + TShHandleBase* base = static_cast(ConstructCompiler(type, spec, output)); + TCompiler* compiler = base->getAsCompiler(); + if (compiler == 0) + return 0; + + // Generate built-in symbol table. + if (!compiler->Init(*resources)) { + ShDestruct(base); + return 0; + } + + return reinterpret_cast(base); +} + +void ShDestruct(ShHandle handle) +{ + if (handle == 0) + return; + + TShHandleBase* base = static_cast(handle); + + if (base->getAsCompiler()) + DeleteCompiler(base->getAsCompiler()); +} + +// +// Do an actual compile on the given strings. The result is left +// in the given compile object. +// +// Return: The return value of ShCompile is really boolean, indicating +// success or failure. +// +int ShCompile( + const ShHandle handle, + const char* const shaderStrings[], + size_t numStrings, + int compileOptions) +{ + if (!InitThread()) + return 0; + + if (handle == 0) + return 0; + + TShHandleBase* base = reinterpret_cast(handle); + TCompiler* compiler = base->getAsCompiler(); + if (compiler == 0) + return 0; + + bool success = compiler->compile(shaderStrings, numStrings, compileOptions); + return success ? 1 : 0; +} + +void ShGetInfo(const ShHandle handle, ShShaderInfo pname, size_t* params) +{ + if (!handle || !params) + return; + + TShHandleBase* base = static_cast(handle); + TCompiler* compiler = base->getAsCompiler(); + if (!compiler) return; + + switch(pname) + { + case SH_INFO_LOG_LENGTH: + *params = compiler->getInfoSink().info.size() + 1; + break; + case SH_OBJECT_CODE_LENGTH: + *params = compiler->getInfoSink().obj.size() + 1; + break; + case SH_ACTIVE_UNIFORMS: + *params = compiler->getUniforms().size(); + break; + case SH_ACTIVE_UNIFORM_MAX_LENGTH: + *params = 1 + MAX_SYMBOL_NAME_LEN; + break; + case SH_ACTIVE_ATTRIBUTES: + *params = compiler->getAttribs().size(); + break; + case SH_ACTIVE_ATTRIBUTE_MAX_LENGTH: + *params = 1 + MAX_SYMBOL_NAME_LEN; + break; + case SH_MAPPED_NAME_MAX_LENGTH: + // Use longer length than MAX_SHORTENED_IDENTIFIER_SIZE to + // handle array and struct dereferences. + *params = 1 + MAX_SYMBOL_NAME_LEN; + break; + case SH_NAME_MAX_LENGTH: + *params = 1 + MAX_SYMBOL_NAME_LEN; + break; + case SH_HASHED_NAME_MAX_LENGTH: + if (compiler->getHashFunction() == NULL) { + *params = 0; + } else { + // 64 bits hashing output requires 16 bytes for hex + // representation. + const char HashedNamePrefix[] = HASHED_NAME_PREFIX; + *params = 16 + sizeof(HashedNamePrefix); + } + break; + case SH_HASHED_NAMES_COUNT: + *params = compiler->getNameMap().size(); + break; + default: UNREACHABLE(); + } +} + +// +// Return any compiler log of messages for the application. +// +void ShGetInfoLog(const ShHandle handle, char* infoLog) +{ + if (!handle || !infoLog) + return; + + TShHandleBase* base = static_cast(handle); + TCompiler* compiler = base->getAsCompiler(); + if (!compiler) return; + + TInfoSink& infoSink = compiler->getInfoSink(); + strcpy(infoLog, infoSink.info.c_str()); +} + +// +// Return any object code. +// +void ShGetObjectCode(const ShHandle handle, char* objCode) +{ + if (!handle || !objCode) + return; + + TShHandleBase* base = static_cast(handle); + TCompiler* compiler = base->getAsCompiler(); + if (!compiler) return; + + TInfoSink& infoSink = compiler->getInfoSink(); + strcpy(objCode, infoSink.obj.c_str()); +} + +void ShGetActiveAttrib(const ShHandle handle, + int index, + size_t* length, + int* size, + ShDataType* type, + char* name, + char* mappedName) +{ + getVariableInfo(SH_ACTIVE_ATTRIBUTES, + handle, index, length, size, type, name, mappedName); +} + +void ShGetActiveUniform(const ShHandle handle, + int index, + size_t* length, + int* size, + ShDataType* type, + char* name, + char* mappedName) +{ + getVariableInfo(SH_ACTIVE_UNIFORMS, + handle, index, length, size, type, name, mappedName); +} + +void ShGetNameHashingEntry(const ShHandle handle, + int index, + char* name, + char* hashedName) +{ + if (!handle || !name || !hashedName || index < 0) + return; + + TShHandleBase* base = static_cast(handle); + TCompiler* compiler = base->getAsCompiler(); + if (!compiler) return; + + const NameMap& nameMap = compiler->getNameMap(); + if (index >= static_cast(nameMap.size())) + return; + + NameMap::const_iterator it = nameMap.begin(); + for (int i = 0; i < index; ++i) + ++it; + + size_t len = it->first.length() + 1; + size_t max_len = 0; + ShGetInfo(handle, SH_NAME_MAX_LENGTH, &max_len); + if (len > max_len) { + ASSERT(false); + len = max_len; + } + strncpy(name, it->first.c_str(), len); + // To be on the safe side in case the source is longer than expected. + name[len - 1] = '\0'; + + len = it->second.length() + 1; + max_len = 0; + ShGetInfo(handle, SH_HASHED_NAME_MAX_LENGTH, &max_len); + if (len > max_len) { + ASSERT(false); + len = max_len; + } + strncpy(hashedName, it->second.c_str(), len); + // To be on the safe side in case the source is longer than expected. + hashedName[len - 1] = '\0'; +} + +void ShGetInfoPointer(const ShHandle handle, ShShaderInfo pname, void** params) +{ + if (!handle || !params) + return; + + TShHandleBase* base = static_cast(handle); + TranslatorHLSL* translator = base->getAsTranslatorHLSL(); + if (!translator) return; + + switch(pname) + { + case SH_ACTIVE_UNIFORMS_ARRAY: + *params = (void*)&translator->getUniforms(); + break; + default: UNREACHABLE(); + } +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.cpp b/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.cpp new file mode 100644 index 00000000000..42e8998c5ee --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.cpp @@ -0,0 +1,209 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// +// Symbol table for parsing. Most functionaliy and main ideas +// are documented in the header file. +// + +#if defined(_MSC_VER) +#pragma warning(disable: 4718) +#endif + +#include "compiler/SymbolTable.h" + +#include +#include +#include + +TType::TType(const TPublicType &p) : + type(p.type), precision(p.precision), qualifier(p.qualifier), size(p.size), matrix(p.matrix), array(p.array), arraySize(p.arraySize), structure(0) +{ + if (p.userDef) + structure = p.userDef->getStruct(); +} + +// +// Recursively generate mangled names. +// +TString TType::buildMangledName() const +{ + TString mangledName; + if (isMatrix()) + mangledName += 'm'; + else if (isVector()) + mangledName += 'v'; + + switch (type) { + case EbtFloat: mangledName += 'f'; break; + case EbtInt: mangledName += 'i'; break; + case EbtBool: mangledName += 'b'; break; + case EbtSampler2D: mangledName += "s2"; break; + case EbtSamplerCube: mangledName += "sC"; break; + case EbtStruct: mangledName += structure->mangledName(); break; + default: break; + } + + mangledName += static_cast('0' + getNominalSize()); + if (isArray()) { + char buf[20]; + snprintf(buf, sizeof(buf), "%d", arraySize); + mangledName += '['; + mangledName += buf; + mangledName += ']'; + } + return mangledName; +} + +size_t TType::getObjectSize() const +{ + size_t totalSize = 0; + + if (getBasicType() == EbtStruct) + totalSize = structure->objectSize(); + else if (matrix) + totalSize = size * size; + else + totalSize = size; + + if (isArray()) { + size_t arraySize = getArraySize(); + if (arraySize > INT_MAX / totalSize) + totalSize = INT_MAX; + else + totalSize *= arraySize; + } + + return totalSize; +} + +bool TStructure::containsArrays() const +{ + for (size_t i = 0; i < mFields->size(); ++i) { + const TType* fieldType = (*mFields)[i]->type(); + if (fieldType->isArray() || fieldType->isStructureContainingArrays()) + return true; + } + return false; +} + +TString TStructure::buildMangledName() const +{ + TString mangledName("struct-"); + mangledName += *mName; + for (size_t i = 0; i < mFields->size(); ++i) { + mangledName += '-'; + mangledName += (*mFields)[i]->type()->getMangledName(); + } + return mangledName; +} + +size_t TStructure::calculateObjectSize() const +{ + size_t size = 0; + for (size_t i = 0; i < mFields->size(); ++i) { + size_t fieldSize = (*mFields)[i]->type()->getObjectSize(); + if (fieldSize > INT_MAX - size) + size = INT_MAX; + else + size += fieldSize; + } + return size; +} + +int TStructure::calculateDeepestNesting() const +{ + int maxNesting = 0; + for (size_t i = 0; i < mFields->size(); ++i) { + maxNesting = std::max(maxNesting, (*mFields)[i]->type()->getDeepestStructNesting()); + } + return 1 + maxNesting; +} + +// +// Dump functions. +// + +void TVariable::dump(TInfoSink& infoSink) const +{ + infoSink.debug << getName().c_str() << ": " << type.getQualifierString() << " " << type.getPrecisionString() << " " << type.getBasicString(); + if (type.isArray()) { + infoSink.debug << "[0]"; + } + infoSink.debug << "\n"; +} + +void TFunction::dump(TInfoSink &infoSink) const +{ + infoSink.debug << getName().c_str() << ": " << returnType.getBasicString() << " " << getMangledName().c_str() << "\n"; +} + +void TSymbolTableLevel::dump(TInfoSink &infoSink) const +{ + tLevel::const_iterator it; + for (it = level.begin(); it != level.end(); ++it) + (*it).second->dump(infoSink); +} + +void TSymbolTable::dump(TInfoSink &infoSink) const +{ + for (int level = currentLevel(); level >= 0; --level) { + infoSink.debug << "LEVEL " << level << "\n"; + table[level]->dump(infoSink); + } +} + +// +// Functions have buried pointers to delete. +// +TFunction::~TFunction() +{ + for (TParamList::iterator i = parameters.begin(); i != parameters.end(); ++i) + delete (*i).type; +} + +// +// Symbol table levels are a map of pointers to symbols that have to be deleted. +// +TSymbolTableLevel::~TSymbolTableLevel() +{ + for (tLevel::iterator it = level.begin(); it != level.end(); ++it) + if ((*it).first == (*it).second->getMangledName()) + delete (*it).second; +} + +// +// Change all function entries in the table with the non-mangled name +// to be related to the provided built-in operation. This is a low +// performance operation, and only intended for symbol tables that +// live across a large number of compiles. +// +void TSymbolTableLevel::relateToOperator(const char* name, TOperator op) +{ + tLevel::iterator it; + for (it = level.begin(); it != level.end(); ++it) { + if ((*it).second->isFunction()) { + TFunction* function = static_cast((*it).second); + if (function->getName() == name) + function->relateToOperator(op); + } + } +} + +// +// Change all function entries in the table with the non-mangled name +// to be related to the provided built-in extension. This is a low +// performance operation, and only intended for symbol tables that +// live across a large number of compiles. +// +void TSymbolTableLevel::relateToExtension(const char* name, const TString& ext) +{ + for (tLevel::iterator it = level.begin(); it != level.end(); ++it) { + TSymbol* symbol = it->second; + if (symbol->getName() == name) + symbol->relateToExtension(ext); + } +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h b/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h new file mode 100644 index 00000000000..7ea6cd155f6 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h @@ -0,0 +1,389 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef _SYMBOL_TABLE_INCLUDED_ +#define _SYMBOL_TABLE_INCLUDED_ + +// +// Symbol table for parsing. Has these design characteristics: +// +// * Same symbol table can be used to compile many shaders, to preserve +// effort of creating and loading with the large numbers of built-in +// symbols. +// +// * Name mangling will be used to give each function a unique name +// so that symbol table lookups are never ambiguous. This allows +// a simpler symbol table structure. +// +// * Pushing and popping of scope, so symbol table will really be a stack +// of symbol tables. Searched from the top, with new inserts going into +// the top. +// +// * Constants: Compile time constant symbols will keep their values +// in the symbol table. The parser can substitute constants at parse +// time, including doing constant folding and constant propagation. +// +// * No temporaries: Temporaries made from operations (+, --, .xy, etc.) +// are tracked in the intermediate representation, not the symbol table. +// + +#include + +#include "common/angleutils.h" +#include "compiler/InfoSink.h" +#include "compiler/intermediate.h" + +// +// Symbol base class. (Can build functions or variables out of these...) +// +class TSymbol { +public: + POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator) + TSymbol(const TString *n) : name(n) { } + virtual ~TSymbol() { /* don't delete name, it's from the pool */ } + const TString& getName() const { return *name; } + virtual const TString& getMangledName() const { return getName(); } + virtual bool isFunction() const { return false; } + virtual bool isVariable() const { return false; } + void setUniqueId(int id) { uniqueId = id; } + int getUniqueId() const { return uniqueId; } + virtual void dump(TInfoSink &infoSink) const = 0; + void relateToExtension(const TString& ext) { extension = ext; } + const TString& getExtension() const { return extension; } + +private: + DISALLOW_COPY_AND_ASSIGN(TSymbol); + + const TString *name; + unsigned int uniqueId; // For real comparing during code generation + TString extension; +}; + +// +// Variable class, meaning a symbol that's not a function. +// +// There could be a separate class heirarchy for Constant variables; +// Only one of int, bool, or float, (or none) is correct for +// any particular use, but it's easy to do this way, and doesn't +// seem worth having separate classes, and "getConst" can't simply return +// different values for different types polymorphically, so this is +// just simple and pragmatic. +// +class TVariable : public TSymbol { +public: + TVariable(const TString *name, const TType& t, bool uT = false ) : TSymbol(name), type(t), userType(uT), unionArray(0) { } + virtual ~TVariable() { } + virtual bool isVariable() const { return true; } + TType& getType() { return type; } + const TType& getType() const { return type; } + bool isUserType() const { return userType; } + void setQualifier(TQualifier qualifier) { type.setQualifier(qualifier); } + + virtual void dump(TInfoSink &infoSink) const; + + ConstantUnion* getConstPointer() + { + if (!unionArray) + unionArray = new ConstantUnion[type.getObjectSize()]; + + return unionArray; + } + + ConstantUnion* getConstPointer() const { return unionArray; } + + void shareConstPointer( ConstantUnion *constArray) + { + if (unionArray == constArray) + return; + + delete[] unionArray; + unionArray = constArray; + } + +private: + DISALLOW_COPY_AND_ASSIGN(TVariable); + + TType type; + bool userType; + // we are assuming that Pool Allocator will free the memory allocated to unionArray + // when this object is destroyed + ConstantUnion *unionArray; +}; + +// +// The function sub-class of symbols and the parser will need to +// share this definition of a function parameter. +// +struct TParameter { + TString *name; + TType* type; +}; + +// +// The function sub-class of a symbol. +// +class TFunction : public TSymbol { +public: + TFunction(TOperator o) : + TSymbol(0), + returnType(TType(EbtVoid, EbpUndefined)), + op(o), + defined(false) { } + TFunction(const TString *name, TType& retType, TOperator tOp = EOpNull) : + TSymbol(name), + returnType(retType), + mangledName(TFunction::mangleName(*name)), + op(tOp), + defined(false) { } + virtual ~TFunction(); + virtual bool isFunction() const { return true; } + + static TString mangleName(const TString& name) { return name + '('; } + static TString unmangleName(const TString& mangledName) + { + return TString(mangledName.c_str(), mangledName.find_first_of('(')); + } + + void addParameter(TParameter& p) + { + parameters.push_back(p); + mangledName = mangledName + p.type->getMangledName(); + } + + const TString& getMangledName() const { return mangledName; } + const TType& getReturnType() const { return returnType; } + + void relateToOperator(TOperator o) { op = o; } + TOperator getBuiltInOp() const { return op; } + + void setDefined() { defined = true; } + bool isDefined() { return defined; } + + size_t getParamCount() const { return parameters.size(); } + const TParameter& getParam(size_t i) const { return parameters[i]; } + + virtual void dump(TInfoSink &infoSink) const; + +private: + DISALLOW_COPY_AND_ASSIGN(TFunction); + + typedef TVector TParamList; + TParamList parameters; + TType returnType; + TString mangledName; + TOperator op; + bool defined; +}; + + +class TSymbolTableLevel { +public: + typedef TMap tLevel; + typedef tLevel::const_iterator const_iterator; + typedef const tLevel::value_type tLevelPair; + typedef std::pair tInsertResult; + + POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator) + TSymbolTableLevel() { } + ~TSymbolTableLevel(); + + bool insert(const TString &name, TSymbol &symbol) + { + // + // returning true means symbol was added to the table + // + tInsertResult result; + result = level.insert(tLevelPair(name, &symbol)); + + return result.second; + } + + bool insert(TSymbol &symbol) + { + return insert(symbol.getMangledName(), symbol); + } + + TSymbol* find(const TString& name) const + { + tLevel::const_iterator it = level.find(name); + if (it == level.end()) + return 0; + else + return (*it).second; + } + + const_iterator begin() const + { + return level.begin(); + } + + const_iterator end() const + { + return level.end(); + } + + void relateToOperator(const char* name, TOperator op); + void relateToExtension(const char* name, const TString& ext); + void dump(TInfoSink &infoSink) const; + +protected: + tLevel level; +}; + +class TSymbolTable { +public: + TSymbolTable() : uniqueId(0) + { + // + // The symbol table cannot be used until push() is called, but + // the lack of an initial call to push() can be used to detect + // that the symbol table has not been preloaded with built-ins. + // + } + + ~TSymbolTable() + { + // level 0 is always built In symbols, so we never pop that out + while (table.size() > 1) + pop(); + } + + // + // When the symbol table is initialized with the built-ins, there should + // 'push' calls, so that built-ins are at level 0 and the shader + // globals are at level 1. + // + bool isEmpty() { return table.size() == 0; } + bool atBuiltInLevel() { return table.size() == 1; } + bool atGlobalLevel() { return table.size() <= 2; } + void push() + { + table.push_back(new TSymbolTableLevel); + precisionStack.push_back( PrecisionStackLevel() ); + } + + void pop() + { + delete table[currentLevel()]; + table.pop_back(); + precisionStack.pop_back(); + } + + bool insert(TSymbol& symbol) + { + symbol.setUniqueId(++uniqueId); + return table[currentLevel()]->insert(symbol); + } + + bool insertConstInt(const char *name, int value) + { + TVariable *constant = new TVariable(NewPoolTString(name), TType(EbtInt, EbpUndefined, EvqConst, 1)); + constant->getConstPointer()->setIConst(value); + return insert(*constant); + } + + bool insertBuiltIn(TType *rvalue, const char *name, TType *ptype1, TType *ptype2 = 0, TType *ptype3 = 0) + { + TFunction *function = new TFunction(NewPoolTString(name), *rvalue); + + TParameter param1 = {NULL, ptype1}; + function->addParameter(param1); + + if(ptype2) + { + TParameter param2 = {NULL, ptype2}; + function->addParameter(param2); + } + + if(ptype3) + { + TParameter param3 = {NULL, ptype3}; + function->addParameter(param3); + } + + return insert(*function); + } + + TSymbol* find(const TString& name, bool* builtIn = 0, bool *sameScope = 0) + { + int level = currentLevel(); + TSymbol* symbol; + do { + symbol = table[level]->find(name); + --level; + } while (symbol == 0 && level >= 0); + level++; + if (builtIn) + *builtIn = level == 0; + if (sameScope) + *sameScope = level == currentLevel(); + return symbol; + } + + TSymbol *findBuiltIn(const TString &name) + { + return table[0]->find(name); + } + + TSymbolTableLevel* getGlobalLevel() { + assert(table.size() >= 2); + return table[1]; + } + + TSymbolTableLevel* getOuterLevel() { + assert(table.size() >= 2); + return table[currentLevel() - 1]; + } + + void relateToOperator(const char* name, TOperator op) { + table[0]->relateToOperator(name, op); + } + void relateToExtension(const char* name, const TString& ext) { + table[0]->relateToExtension(name, ext); + } + int getMaxSymbolId() { return uniqueId; } + void dump(TInfoSink &infoSink) const; + + bool setDefaultPrecision( const TPublicType& type, TPrecision prec ){ + if (IsSampler(type.type)) + return true; // Skip sampler types for the time being + if (type.type != EbtFloat && type.type != EbtInt) + return false; // Only set default precision for int/float + if (type.size != 1 || type.matrix || type.array) + return false; // Not allowed to set for aggregate types + int indexOfLastElement = static_cast(precisionStack.size()) - 1; + precisionStack[indexOfLastElement][type.type] = prec; // Uses map operator [], overwrites the current value + return true; + } + + // Searches down the precisionStack for a precision qualifier for the specified TBasicType + TPrecision getDefaultPrecision( TBasicType type){ + if( type != EbtFloat && type != EbtInt ) return EbpUndefined; + int level = static_cast(precisionStack.size()) - 1; + assert( level >= 0); // Just to be safe. Should not happen. + PrecisionStackLevel::iterator it; + TPrecision prec = EbpUndefined; // If we dont find anything we return this. Should we error check this? + while( level >= 0 ){ + it = precisionStack[level].find( type ); + if( it != precisionStack[level].end() ){ + prec = (*it).second; + break; + } + level--; + } + return prec; + } + +protected: + int currentLevel() const { return static_cast(table.size()) - 1; } + + std::vector table; + typedef std::map< TBasicType, TPrecision > PrecisionStackLevel; + std::vector< PrecisionStackLevel > precisionStack; + int uniqueId; // for unique identification in code generation +}; + +#endif // _SYMBOL_TABLE_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/TranslatorESSL.cpp b/Source/ThirdParty/ANGLE/src/compiler/TranslatorESSL.cpp new file mode 100644 index 00000000000..2900f8a8ede --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/TranslatorESSL.cpp @@ -0,0 +1,43 @@ +// +// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/TranslatorESSL.h" + +#include "compiler/OutputESSL.h" + +TranslatorESSL::TranslatorESSL(ShShaderType type, ShShaderSpec spec) + : TCompiler(type, spec) { +} + +void TranslatorESSL::translate(TIntermNode* root) { + TInfoSinkBase& sink = getInfoSink().obj; + + // Write built-in extension behaviors. + writeExtensionBehavior(); + + // Write emulated built-in functions if needed. + getBuiltInFunctionEmulator().OutputEmulatedFunctionDefinition( + sink, getShaderType() == SH_FRAGMENT_SHADER); + + // Write array bounds clamping emulation if needed. + getArrayBoundsClamper().OutputClampingFunctionDefinition(sink); + + // Write translated shader. + TOutputESSL outputESSL(sink, getArrayIndexClampingStrategy(), getHashFunction(), getNameMap(), getSymbolTable()); + root->traverse(&outputESSL); +} + +void TranslatorESSL::writeExtensionBehavior() { + TInfoSinkBase& sink = getInfoSink().obj; + const TExtensionBehavior& extensionBehavior = getExtensionBehavior(); + for (TExtensionBehavior::const_iterator iter = extensionBehavior.begin(); + iter != extensionBehavior.end(); ++iter) { + if (iter->second != EBhUndefined) { + sink << "#extension " << iter->first << " : " + << getBehaviorString(iter->second) << "\n"; + } + } +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/TranslatorESSL.h b/Source/ThirdParty/ANGLE/src/compiler/TranslatorESSL.h new file mode 100644 index 00000000000..a1196bd0013 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/TranslatorESSL.h @@ -0,0 +1,23 @@ +// +// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_TRANSLATORESSL_H_ +#define COMPILER_TRANSLATORESSL_H_ + +#include "compiler/ShHandle.h" + +class TranslatorESSL : public TCompiler { +public: + TranslatorESSL(ShShaderType type, ShShaderSpec spec); + +protected: + virtual void translate(TIntermNode* root); + +private: + void writeExtensionBehavior(); +}; + +#endif // COMPILER_TRANSLATORESSL_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.cpp b/Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.cpp new file mode 100644 index 00000000000..7ca4341dcde --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.cpp @@ -0,0 +1,44 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/TranslatorGLSL.h" + +#include "compiler/OutputGLSL.h" +#include "compiler/VersionGLSL.h" + +static void writeVersion(ShShaderType type, TIntermNode* root, + TInfoSinkBase& sink) { + TVersionGLSL versionGLSL(type); + root->traverse(&versionGLSL); + int version = versionGLSL.getVersion(); + // We need to write version directive only if it is greater than 110. + // If there is no version directive in the shader, 110 is implied. + if (version > 110) { + sink << "#version " << version << "\n"; + } +} + +TranslatorGLSL::TranslatorGLSL(ShShaderType type, ShShaderSpec spec) + : TCompiler(type, spec) { +} + +void TranslatorGLSL::translate(TIntermNode* root) { + TInfoSinkBase& sink = getInfoSink().obj; + + // Write GLSL version. + writeVersion(getShaderType(), root, sink); + + // Write emulated built-in functions if needed. + getBuiltInFunctionEmulator().OutputEmulatedFunctionDefinition( + sink, false); + + // Write array bounds clamping emulation if needed. + getArrayBoundsClamper().OutputClampingFunctionDefinition(sink); + + // Write translated shader. + TOutputGLSL outputGLSL(sink, getArrayIndexClampingStrategy(), getHashFunction(), getNameMap(), getSymbolTable()); + root->traverse(&outputGLSL); +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.h b/Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.h new file mode 100644 index 00000000000..c2ce06d192f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.h @@ -0,0 +1,20 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_TRANSLATORGLSL_H_ +#define COMPILER_TRANSLATORGLSL_H_ + +#include "compiler/ShHandle.h" + +class TranslatorGLSL : public TCompiler { +public: + TranslatorGLSL(ShShaderType type, ShShaderSpec spec); + +protected: + virtual void translate(TIntermNode* root); +}; + +#endif // COMPILER_TRANSLATORGLSL_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/TranslatorHLSL.cpp b/Source/ThirdParty/ANGLE/src/compiler/TranslatorHLSL.cpp new file mode 100644 index 00000000000..37408a07c49 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/TranslatorHLSL.cpp @@ -0,0 +1,24 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/TranslatorHLSL.h" + +#include "compiler/InitializeParseContext.h" +#include "compiler/OutputHLSL.h" + +TranslatorHLSL::TranslatorHLSL(ShShaderType type, ShShaderSpec spec, ShShaderOutput output) + : TCompiler(type, spec), mOutputType(output) +{ +} + +void TranslatorHLSL::translate(TIntermNode *root) +{ + TParseContext& parseContext = *GetGlobalParseContext(); + sh::OutputHLSL outputHLSL(parseContext, getResources(), mOutputType); + + outputHLSL.output(); + mActiveUniforms = outputHLSL.getUniforms(); +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/TranslatorHLSL.h b/Source/ThirdParty/ANGLE/src/compiler/TranslatorHLSL.h new file mode 100644 index 00000000000..9550e15e8ef --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/TranslatorHLSL.h @@ -0,0 +1,27 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_TRANSLATORHLSL_H_ +#define COMPILER_TRANSLATORHLSL_H_ + +#include "compiler/ShHandle.h" +#include "compiler/Uniform.h" + +class TranslatorHLSL : public TCompiler { +public: + TranslatorHLSL(ShShaderType type, ShShaderSpec spec, ShShaderOutput output); + + virtual TranslatorHLSL *getAsTranslatorHLSL() { return this; } + const sh::ActiveUniforms &getUniforms() { return mActiveUniforms; } + +protected: + virtual void translate(TIntermNode* root); + + sh::ActiveUniforms mActiveUniforms; + ShShaderOutput mOutputType; +}; + +#endif // COMPILER_TRANSLATORHLSL_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/Types.h b/Source/ThirdParty/ANGLE/src/compiler/Types.h new file mode 100644 index 00000000000..ac1fb64e9c8 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/Types.h @@ -0,0 +1,313 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef _TYPES_INCLUDED +#define _TYPES_INCLUDED + +#include "common/angleutils.h" + +#include "compiler/BaseTypes.h" +#include "compiler/Common.h" +#include "compiler/debug.h" + +struct TPublicType; +class TType; + +class TField +{ +public: + POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator); + TField(TType* type, TString* name) : mType(type), mName(name) {} + + // TODO(alokp): We should only return const type. + // Fix it by tweaking grammar. + TType* type() { return mType; } + const TType* type() const { return mType; } + + const TString& name() const { return *mName; } + +private: + DISALLOW_COPY_AND_ASSIGN(TField); + TType* mType; + TString* mName; +}; + +typedef TVector TFieldList; +inline TFieldList* NewPoolTFieldList() +{ + void* memory = GlobalPoolAllocator.allocate(sizeof(TFieldList)); + return new(memory) TFieldList; +} + +class TStructure +{ +public: + POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator); + TStructure(TString* name, TFieldList* fields) + : mName(name), + mFields(fields), + mObjectSize(0), + mDeepestNesting(0) { + } + + const TString& name() const { return *mName; } + const TFieldList& fields() const { return *mFields; } + + const TString& mangledName() const { + if (mMangledName.empty()) + mMangledName = buildMangledName(); + return mMangledName; + } + size_t objectSize() const { + if (mObjectSize == 0) + mObjectSize = calculateObjectSize(); + return mObjectSize; + }; + int deepestNesting() const { + if (mDeepestNesting == 0) + mDeepestNesting = calculateDeepestNesting(); + return mDeepestNesting; + } + bool containsArrays() const; + +private: + DISALLOW_COPY_AND_ASSIGN(TStructure); + TString buildMangledName() const; + size_t calculateObjectSize() const; + int calculateDeepestNesting() const; + + TString* mName; + TFieldList* mFields; + + mutable TString mMangledName; + mutable size_t mObjectSize; + mutable int mDeepestNesting; +}; + +// +// Base class for things that have a type. +// +class TType +{ +public: + POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator) + TType() {} + TType(TBasicType t, TPrecision p, TQualifier q = EvqTemporary, int s = 1, bool m = false, bool a = false) : + type(t), precision(p), qualifier(q), size(s), matrix(m), array(a), arraySize(0), structure(0) + { + } + explicit TType(const TPublicType &p); + TType(TStructure* userDef, TPrecision p = EbpUndefined) : + type(EbtStruct), precision(p), qualifier(EvqTemporary), size(1), matrix(false), array(false), arraySize(0), structure(userDef) + { + } + + TBasicType getBasicType() const { return type; } + void setBasicType(TBasicType t) { type = t; } + + TPrecision getPrecision() const { return precision; } + void setPrecision(TPrecision p) { precision = p; } + + TQualifier getQualifier() const { return qualifier; } + void setQualifier(TQualifier q) { qualifier = q; } + + // One-dimensional size of single instance type + int getNominalSize() const { return size; } + void setNominalSize(int s) { size = s; } + // Full size of single instance of type + size_t getObjectSize() const; + + int elementRegisterCount() const + { + if (structure) + { + const TFieldList &fields = getStruct()->fields(); + int registerCount = 0; + + for (size_t i = 0; i < fields.size(); i++) + { + registerCount += fields[i]->type()->totalRegisterCount(); + } + + return registerCount; + } + else if (isMatrix()) + { + return getNominalSize(); + } + else + { + return 1; + } + } + + int totalRegisterCount() const + { + if (array) + { + return arraySize * elementRegisterCount(); + } + else + { + return elementRegisterCount(); + } + } + + bool isMatrix() const { return matrix ? true : false; } + void setMatrix(bool m) { matrix = m; } + + bool isArray() const { return array ? true : false; } + int getArraySize() const { return arraySize; } + void setArraySize(int s) { array = true; arraySize = s; } + void clearArrayness() { array = false; arraySize = 0; } + + bool isVector() const { return size > 1 && !matrix; } + bool isScalar() const { return size == 1 && !matrix && !structure; } + + TStructure* getStruct() const { return structure; } + void setStruct(TStructure* s) { structure = s; } + + const TString& getMangledName() const { + if (mangled.empty()) { + mangled = buildMangledName(); + mangled += ';'; + } + return mangled; + } + + bool sameElementType(const TType& right) const { + return type == right.type && + size == right.size && + matrix == right.matrix && + structure == right.structure; + } + bool operator==(const TType& right) const { + return type == right.type && + size == right.size && + matrix == right.matrix && + array == right.array && (!array || arraySize == right.arraySize) && + structure == right.structure; + // don't check the qualifier, it's not ever what's being sought after + } + bool operator!=(const TType& right) const { + return !operator==(right); + } + bool operator<(const TType& right) const { + if (type != right.type) return type < right.type; + if (size != right.size) return size < right.size; + if (matrix != right.matrix) return matrix < right.matrix; + if (array != right.array) return array < right.array; + if (arraySize != right.arraySize) return arraySize < right.arraySize; + if (structure != right.structure) return structure < right.structure; + + return false; + } + + const char* getBasicString() const { return ::getBasicString(type); } + const char* getPrecisionString() const { return ::getPrecisionString(precision); } + const char* getQualifierString() const { return ::getQualifierString(qualifier); } + TString getCompleteString() const; + + // If this type is a struct, returns the deepest struct nesting of + // any field in the struct. For example: + // struct nesting1 { + // vec4 position; + // }; + // struct nesting2 { + // nesting1 field1; + // vec4 field2; + // }; + // For type "nesting2", this method would return 2 -- the number + // of structures through which indirection must occur to reach the + // deepest field (nesting2.field1.position). + int getDeepestStructNesting() const { + return structure ? structure->deepestNesting() : 0; + } + + bool isStructureContainingArrays() const { + return structure ? structure->containsArrays() : false; + } + +private: + TString buildMangledName() const; + +#ifdef __GNUC__ + TBasicType type; + TPrecision precision; + TQualifier qualifier; +#else + TBasicType type : 6; + TPrecision precision; + TQualifier qualifier : 7; +#endif + int size : 8; // size of vector or matrix, not size of array + unsigned int matrix : 1; + unsigned int array : 1; + int arraySize; + + TStructure* structure; // 0 unless this is a struct + + mutable TString mangled; +}; + +// +// This is a workaround for a problem with the yacc stack, It can't have +// types that it thinks have non-trivial constructors. It should +// just be used while recognizing the grammar, not anything else. Pointers +// could be used, but also trying to avoid lots of memory management overhead. +// +// Not as bad as it looks, there is no actual assumption that the fields +// match up or are name the same or anything like that. +// +struct TPublicType +{ + TBasicType type; + TQualifier qualifier; + TPrecision precision; + int size; // size of vector or matrix, not size of array + bool matrix; + bool array; + int arraySize; + TType* userDef; + TSourceLoc line; + + void setBasic(TBasicType bt, TQualifier q, const TSourceLoc& ln) + { + type = bt; + qualifier = q; + precision = EbpUndefined; + size = 1; + matrix = false; + array = false; + arraySize = 0; + userDef = 0; + line = ln; + } + + void setAggregate(int s, bool m = false) + { + size = s; + matrix = m; + } + + void setArray(bool a, int s = 0) + { + array = a; + arraySize = s; + } + + bool isStructureContainingArrays() const + { + if (!userDef) + { + return false; + } + + return userDef->isStructureContainingArrays(); + } +}; + +#endif // _TYPES_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.cpp b/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.cpp new file mode 100644 index 00000000000..47f0afca6a6 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.cpp @@ -0,0 +1,176 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// UnfoldShortCircuit is an AST traverser to output short-circuiting operators as if-else statements. +// The results are assigned to s# temporaries, which are used by the main translator instead of +// the original expression. +// + +#include "compiler/UnfoldShortCircuit.h" + +#include "compiler/InfoSink.h" +#include "compiler/OutputHLSL.h" + +namespace sh +{ +UnfoldShortCircuit::UnfoldShortCircuit(TParseContext &context, OutputHLSL *outputHLSL) : mContext(context), mOutputHLSL(outputHLSL) +{ + mTemporaryIndex = 0; +} + +void UnfoldShortCircuit::traverse(TIntermNode *node) +{ + int rewindIndex = mTemporaryIndex; + node->traverse(this); + mTemporaryIndex = rewindIndex; +} + +bool UnfoldShortCircuit::visitBinary(Visit visit, TIntermBinary *node) +{ + TInfoSinkBase &out = mOutputHLSL->getBodyStream(); + + switch (node->getOp()) + { + case EOpLogicalOr: + // "x || y" is equivalent to "x ? true : y", which unfolds to "bool s; if(x) s = true; else s = y;", + // and then further simplifies down to "bool s = x; if(!s) s = y;". + { + int i = mTemporaryIndex; + + out << "bool s" << i << ";\n"; + + out << "{\n"; + + mTemporaryIndex = i + 1; + node->getLeft()->traverse(this); + out << "s" << i << " = "; + mTemporaryIndex = i + 1; + node->getLeft()->traverse(mOutputHLSL); + out << ";\n"; + out << "if(!s" << i << ")\n" + "{\n"; + mTemporaryIndex = i + 1; + node->getRight()->traverse(this); + out << " s" << i << " = "; + mTemporaryIndex = i + 1; + node->getRight()->traverse(mOutputHLSL); + out << ";\n" + "}\n"; + + out << "}\n"; + + mTemporaryIndex = i + 1; + } + return false; + case EOpLogicalAnd: + // "x && y" is equivalent to "x ? y : false", which unfolds to "bool s; if(x) s = y; else s = false;", + // and then further simplifies down to "bool s = x; if(s) s = y;". + { + int i = mTemporaryIndex; + + out << "bool s" << i << ";\n"; + + out << "{\n"; + + mTemporaryIndex = i + 1; + node->getLeft()->traverse(this); + out << "s" << i << " = "; + mTemporaryIndex = i + 1; + node->getLeft()->traverse(mOutputHLSL); + out << ";\n"; + out << "if(s" << i << ")\n" + "{\n"; + mTemporaryIndex = i + 1; + node->getRight()->traverse(this); + out << " s" << i << " = "; + mTemporaryIndex = i + 1; + node->getRight()->traverse(mOutputHLSL); + out << ";\n" + "}\n"; + + out << "}\n"; + + mTemporaryIndex = i + 1; + } + return false; + default: + return true; + } +} + +bool UnfoldShortCircuit::visitSelection(Visit visit, TIntermSelection *node) +{ + TInfoSinkBase &out = mOutputHLSL->getBodyStream(); + + // Unfold "b ? x : y" into "type s; if(b) s = x; else s = y;" + if (node->usesTernaryOperator()) + { + int i = mTemporaryIndex; + + out << mOutputHLSL->typeString(node->getType()) << " s" << i << ";\n"; + + out << "{\n"; + + mTemporaryIndex = i + 1; + node->getCondition()->traverse(this); + out << "if("; + mTemporaryIndex = i + 1; + node->getCondition()->traverse(mOutputHLSL); + out << ")\n" + "{\n"; + mTemporaryIndex = i + 1; + node->getTrueBlock()->traverse(this); + out << " s" << i << " = "; + mTemporaryIndex = i + 1; + node->getTrueBlock()->traverse(mOutputHLSL); + out << ";\n" + "}\n" + "else\n" + "{\n"; + mTemporaryIndex = i + 1; + node->getFalseBlock()->traverse(this); + out << " s" << i << " = "; + mTemporaryIndex = i + 1; + node->getFalseBlock()->traverse(mOutputHLSL); + out << ";\n" + "}\n"; + + out << "}\n"; + + mTemporaryIndex = i + 1; + } + + return false; +} + +bool UnfoldShortCircuit::visitLoop(Visit visit, TIntermLoop *node) +{ + int rewindIndex = mTemporaryIndex; + + if (node->getInit()) + { + node->getInit()->traverse(this); + } + + if (node->getCondition()) + { + node->getCondition()->traverse(this); + } + + if (node->getExpression()) + { + node->getExpression()->traverse(this); + } + + mTemporaryIndex = rewindIndex; + + return false; +} + +int UnfoldShortCircuit::getNextTemporaryIndex() +{ + return mTemporaryIndex++; +} +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.h b/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.h new file mode 100644 index 00000000000..cb176a5f1c9 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.h @@ -0,0 +1,39 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// UnfoldShortCircuit is an AST traverser to output short-circuiting operators as if-else statements +// + +#ifndef COMPILER_UNFOLDSHORTCIRCUIT_H_ +#define COMPILER_UNFOLDSHORTCIRCUIT_H_ + +#include "compiler/intermediate.h" +#include "compiler/ParseHelper.h" + +namespace sh +{ +class OutputHLSL; + +class UnfoldShortCircuit : public TIntermTraverser +{ + public: + UnfoldShortCircuit(TParseContext &context, OutputHLSL *outputHLSL); + + void traverse(TIntermNode *node); + bool visitBinary(Visit visit, TIntermBinary*); + bool visitSelection(Visit visit, TIntermSelection *node); + bool visitLoop(Visit visit, TIntermLoop *node); + + int getNextTemporaryIndex(); + + protected: + TParseContext &mContext; + OutputHLSL *const mOutputHLSL; + + int mTemporaryIndex; +}; +} + +#endif // COMPILER_UNFOLDSHORTCIRCUIT_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/Uniform.cpp b/Source/ThirdParty/ANGLE/src/compiler/Uniform.cpp new file mode 100644 index 00000000000..f367db2be8e --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/Uniform.cpp @@ -0,0 +1,21 @@ +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/Uniform.h" + +namespace sh +{ + +Uniform::Uniform(GLenum type, GLenum precision, const char *name, int arraySize, int registerIndex) +{ + this->type = type; + this->precision = precision; + this->name = name; + this->arraySize = arraySize; + this->registerIndex = registerIndex; +} + +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/Uniform.h b/Source/ThirdParty/ANGLE/src/compiler/Uniform.h new file mode 100644 index 00000000000..4c53ffa7d2f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/Uniform.h @@ -0,0 +1,35 @@ +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_UNIFORM_H_ +#define COMPILER_UNIFORM_H_ + +#include +#include + +#define GL_APICALL +#include + +namespace sh +{ + +struct Uniform +{ + Uniform(GLenum type, GLenum precision, const char *name, int arraySize, int registerIndex); + + GLenum type; + GLenum precision; + std::string name; + unsigned int arraySize; + + int registerIndex; +}; + +typedef std::vector ActiveUniforms; + +} + +#endif // COMPILER_UNIFORM_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.cpp b/Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.cpp new file mode 100644 index 00000000000..a5562d09a43 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.cpp @@ -0,0 +1,512 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/ValidateLimitations.h" +#include "compiler/InfoSink.h" +#include "compiler/InitializeParseContext.h" +#include "compiler/ParseHelper.h" + +namespace { +bool IsLoopIndex(const TIntermSymbol* symbol, const TLoopStack& stack) { + for (TLoopStack::const_iterator i = stack.begin(); i != stack.end(); ++i) { + if (i->index.id == symbol->getId()) + return true; + } + return false; +} + +void MarkLoopForUnroll(const TIntermSymbol* symbol, TLoopStack& stack) { + for (TLoopStack::iterator i = stack.begin(); i != stack.end(); ++i) { + if (i->index.id == symbol->getId()) { + ASSERT(i->loop != NULL); + i->loop->setUnrollFlag(true); + return; + } + } + UNREACHABLE(); +} + +// Traverses a node to check if it represents a constant index expression. +// Definition: +// constant-index-expressions are a superset of constant-expressions. +// Constant-index-expressions can include loop indices as defined in +// GLSL ES 1.0 spec, Appendix A, section 4. +// The following are constant-index-expressions: +// - Constant expressions +// - Loop indices as defined in section 4 +// - Expressions composed of both of the above +class ValidateConstIndexExpr : public TIntermTraverser { +public: + ValidateConstIndexExpr(const TLoopStack& stack) + : mValid(true), mLoopStack(stack) {} + + // Returns true if the parsed node represents a constant index expression. + bool isValid() const { return mValid; } + + virtual void visitSymbol(TIntermSymbol* symbol) { + // Only constants and loop indices are allowed in a + // constant index expression. + if (mValid) { + mValid = (symbol->getQualifier() == EvqConst) || + IsLoopIndex(symbol, mLoopStack); + } + } + +private: + bool mValid; + const TLoopStack& mLoopStack; +}; + +// Traverses a node to check if it uses a loop index. +// If an int loop index is used in its body as a sampler array index, +// mark the loop for unroll. +class ValidateLoopIndexExpr : public TIntermTraverser { +public: + ValidateLoopIndexExpr(TLoopStack& stack) + : mUsesFloatLoopIndex(false), + mUsesIntLoopIndex(false), + mLoopStack(stack) {} + + bool usesFloatLoopIndex() const { return mUsesFloatLoopIndex; } + bool usesIntLoopIndex() const { return mUsesIntLoopIndex; } + + virtual void visitSymbol(TIntermSymbol* symbol) { + if (IsLoopIndex(symbol, mLoopStack)) { + switch (symbol->getBasicType()) { + case EbtFloat: + mUsesFloatLoopIndex = true; + break; + case EbtInt: + mUsesIntLoopIndex = true; + MarkLoopForUnroll(symbol, mLoopStack); + break; + default: + UNREACHABLE(); + } + } + } + +private: + bool mUsesFloatLoopIndex; + bool mUsesIntLoopIndex; + TLoopStack& mLoopStack; +}; +} // namespace + +ValidateLimitations::ValidateLimitations(ShShaderType shaderType, + TInfoSinkBase& sink) + : mShaderType(shaderType), + mSink(sink), + mNumErrors(0) +{ +} + +bool ValidateLimitations::visitBinary(Visit, TIntermBinary* node) +{ + // Check if loop index is modified in the loop body. + validateOperation(node, node->getLeft()); + + // Check indexing. + switch (node->getOp()) { + case EOpIndexDirect: + validateIndexing(node); + break; + case EOpIndexIndirect: +#if defined(__APPLE__) + // Loop unrolling is a work-around for a Mac Cg compiler bug where it + // crashes when a sampler array's index is also the loop index. + // Once Apple fixes this bug, we should remove the code in this CL. + // See http://codereview.appspot.com/4331048/. + if ((node->getLeft() != NULL) && (node->getRight() != NULL) && + (node->getLeft()->getAsSymbolNode())) { + TIntermSymbol* symbol = node->getLeft()->getAsSymbolNode(); + if (IsSampler(symbol->getBasicType()) && symbol->isArray()) { + ValidateLoopIndexExpr validate(mLoopStack); + node->getRight()->traverse(&validate); + if (validate.usesFloatLoopIndex()) { + error(node->getLine(), + "sampler array index is float loop index", + "for"); + } + } + } +#endif + validateIndexing(node); + break; + default: break; + } + return true; +} + +bool ValidateLimitations::visitUnary(Visit, TIntermUnary* node) +{ + // Check if loop index is modified in the loop body. + validateOperation(node, node->getOperand()); + + return true; +} + +bool ValidateLimitations::visitAggregate(Visit, TIntermAggregate* node) +{ + switch (node->getOp()) { + case EOpFunctionCall: + validateFunctionCall(node); + break; + default: + break; + } + return true; +} + +bool ValidateLimitations::visitLoop(Visit, TIntermLoop* node) +{ + if (!validateLoopType(node)) + return false; + + TLoopInfo info; + memset(&info, 0, sizeof(TLoopInfo)); + info.loop = node; + if (!validateForLoopHeader(node, &info)) + return false; + + TIntermNode* body = node->getBody(); + if (body != NULL) { + mLoopStack.push_back(info); + body->traverse(this); + mLoopStack.pop_back(); + } + + // The loop is fully processed - no need to visit children. + return false; +} + +void ValidateLimitations::error(TSourceLoc loc, + const char *reason, const char* token) +{ + mSink.prefix(EPrefixError); + mSink.location(loc); + mSink << "'" << token << "' : " << reason << "\n"; + ++mNumErrors; +} + +bool ValidateLimitations::withinLoopBody() const +{ + return !mLoopStack.empty(); +} + +bool ValidateLimitations::isLoopIndex(const TIntermSymbol* symbol) const +{ + return IsLoopIndex(symbol, mLoopStack); +} + +bool ValidateLimitations::validateLoopType(TIntermLoop* node) { + TLoopType type = node->getType(); + if (type == ELoopFor) + return true; + + // Reject while and do-while loops. + error(node->getLine(), + "This type of loop is not allowed", + type == ELoopWhile ? "while" : "do"); + return false; +} + +bool ValidateLimitations::validateForLoopHeader(TIntermLoop* node, + TLoopInfo* info) +{ + ASSERT(node->getType() == ELoopFor); + + // + // The for statement has the form: + // for ( init-declaration ; condition ; expression ) statement + // + if (!validateForLoopInit(node, info)) + return false; + if (!validateForLoopCond(node, info)) + return false; + if (!validateForLoopExpr(node, info)) + return false; + + return true; +} + +bool ValidateLimitations::validateForLoopInit(TIntermLoop* node, + TLoopInfo* info) +{ + TIntermNode* init = node->getInit(); + if (init == NULL) { + error(node->getLine(), "Missing init declaration", "for"); + return false; + } + + // + // init-declaration has the form: + // type-specifier identifier = constant-expression + // + TIntermAggregate* decl = init->getAsAggregate(); + if ((decl == NULL) || (decl->getOp() != EOpDeclaration)) { + error(init->getLine(), "Invalid init declaration", "for"); + return false; + } + // To keep things simple do not allow declaration list. + TIntermSequence& declSeq = decl->getSequence(); + if (declSeq.size() != 1) { + error(decl->getLine(), "Invalid init declaration", "for"); + return false; + } + TIntermBinary* declInit = declSeq[0]->getAsBinaryNode(); + if ((declInit == NULL) || (declInit->getOp() != EOpInitialize)) { + error(decl->getLine(), "Invalid init declaration", "for"); + return false; + } + TIntermSymbol* symbol = declInit->getLeft()->getAsSymbolNode(); + if (symbol == NULL) { + error(declInit->getLine(), "Invalid init declaration", "for"); + return false; + } + // The loop index has type int or float. + TBasicType type = symbol->getBasicType(); + if ((type != EbtInt) && (type != EbtFloat)) { + error(symbol->getLine(), + "Invalid type for loop index", getBasicString(type)); + return false; + } + // The loop index is initialized with constant expression. + if (!isConstExpr(declInit->getRight())) { + error(declInit->getLine(), + "Loop index cannot be initialized with non-constant expression", + symbol->getSymbol().c_str()); + return false; + } + + info->index.id = symbol->getId(); + return true; +} + +bool ValidateLimitations::validateForLoopCond(TIntermLoop* node, + TLoopInfo* info) +{ + TIntermNode* cond = node->getCondition(); + if (cond == NULL) { + error(node->getLine(), "Missing condition", "for"); + return false; + } + // + // condition has the form: + // loop_index relational_operator constant_expression + // + TIntermBinary* binOp = cond->getAsBinaryNode(); + if (binOp == NULL) { + error(node->getLine(), "Invalid condition", "for"); + return false; + } + // Loop index should be to the left of relational operator. + TIntermSymbol* symbol = binOp->getLeft()->getAsSymbolNode(); + if (symbol == NULL) { + error(binOp->getLine(), "Invalid condition", "for"); + return false; + } + if (symbol->getId() != info->index.id) { + error(symbol->getLine(), + "Expected loop index", symbol->getSymbol().c_str()); + return false; + } + // Relational operator is one of: > >= < <= == or !=. + switch (binOp->getOp()) { + case EOpEqual: + case EOpNotEqual: + case EOpLessThan: + case EOpGreaterThan: + case EOpLessThanEqual: + case EOpGreaterThanEqual: + break; + default: + error(binOp->getLine(), + "Invalid relational operator", + getOperatorString(binOp->getOp())); + break; + } + // Loop index must be compared with a constant. + if (!isConstExpr(binOp->getRight())) { + error(binOp->getLine(), + "Loop index cannot be compared with non-constant expression", + symbol->getSymbol().c_str()); + return false; + } + + return true; +} + +bool ValidateLimitations::validateForLoopExpr(TIntermLoop* node, + TLoopInfo* info) +{ + TIntermNode* expr = node->getExpression(); + if (expr == NULL) { + error(node->getLine(), "Missing expression", "for"); + return false; + } + + // for expression has one of the following forms: + // loop_index++ + // loop_index-- + // loop_index += constant_expression + // loop_index -= constant_expression + // ++loop_index + // --loop_index + // The last two forms are not specified in the spec, but I am assuming + // its an oversight. + TIntermUnary* unOp = expr->getAsUnaryNode(); + TIntermBinary* binOp = unOp ? NULL : expr->getAsBinaryNode(); + + TOperator op = EOpNull; + TIntermSymbol* symbol = NULL; + if (unOp != NULL) { + op = unOp->getOp(); + symbol = unOp->getOperand()->getAsSymbolNode(); + } else if (binOp != NULL) { + op = binOp->getOp(); + symbol = binOp->getLeft()->getAsSymbolNode(); + } + + // The operand must be loop index. + if (symbol == NULL) { + error(expr->getLine(), "Invalid expression", "for"); + return false; + } + if (symbol->getId() != info->index.id) { + error(symbol->getLine(), + "Expected loop index", symbol->getSymbol().c_str()); + return false; + } + + // The operator is one of: ++ -- += -=. + switch (op) { + case EOpPostIncrement: + case EOpPostDecrement: + case EOpPreIncrement: + case EOpPreDecrement: + ASSERT((unOp != NULL) && (binOp == NULL)); + break; + case EOpAddAssign: + case EOpSubAssign: + ASSERT((unOp == NULL) && (binOp != NULL)); + break; + default: + error(expr->getLine(), "Invalid operator", getOperatorString(op)); + return false; + } + + // Loop index must be incremented/decremented with a constant. + if (binOp != NULL) { + if (!isConstExpr(binOp->getRight())) { + error(binOp->getLine(), + "Loop index cannot be modified by non-constant expression", + symbol->getSymbol().c_str()); + return false; + } + } + + return true; +} + +bool ValidateLimitations::validateFunctionCall(TIntermAggregate* node) +{ + ASSERT(node->getOp() == EOpFunctionCall); + + // If not within loop body, there is nothing to check. + if (!withinLoopBody()) + return true; + + // List of param indices for which loop indices are used as argument. + typedef std::vector ParamIndex; + ParamIndex pIndex; + TIntermSequence& params = node->getSequence(); + for (TIntermSequence::size_type i = 0; i < params.size(); ++i) { + TIntermSymbol* symbol = params[i]->getAsSymbolNode(); + if (symbol && isLoopIndex(symbol)) + pIndex.push_back(i); + } + // If none of the loop indices are used as arguments, + // there is nothing to check. + if (pIndex.empty()) + return true; + + bool valid = true; + TSymbolTable& symbolTable = GlobalParseContext->symbolTable; + TSymbol* symbol = symbolTable.find(node->getName()); + ASSERT(symbol && symbol->isFunction()); + TFunction* function = static_cast(symbol); + for (ParamIndex::const_iterator i = pIndex.begin(); + i != pIndex.end(); ++i) { + const TParameter& param = function->getParam(*i); + TQualifier qual = param.type->getQualifier(); + if ((qual == EvqOut) || (qual == EvqInOut)) { + error(params[*i]->getLine(), + "Loop index cannot be used as argument to a function out or inout parameter", + params[*i]->getAsSymbolNode()->getSymbol().c_str()); + valid = false; + } + } + + return valid; +} + +bool ValidateLimitations::validateOperation(TIntermOperator* node, + TIntermNode* operand) { + // Check if loop index is modified in the loop body. + if (!withinLoopBody() || !node->modifiesState()) + return true; + + const TIntermSymbol* symbol = operand->getAsSymbolNode(); + if (symbol && isLoopIndex(symbol)) { + error(node->getLine(), + "Loop index cannot be statically assigned to within the body of the loop", + symbol->getSymbol().c_str()); + } + return true; +} + +bool ValidateLimitations::isConstExpr(TIntermNode* node) +{ + ASSERT(node != NULL); + return node->getAsConstantUnion() != NULL; +} + +bool ValidateLimitations::isConstIndexExpr(TIntermNode* node) +{ + ASSERT(node != NULL); + + ValidateConstIndexExpr validate(mLoopStack); + node->traverse(&validate); + return validate.isValid(); +} + +bool ValidateLimitations::validateIndexing(TIntermBinary* node) +{ + ASSERT((node->getOp() == EOpIndexDirect) || + (node->getOp() == EOpIndexIndirect)); + + bool valid = true; + TIntermTyped* index = node->getRight(); + // The index expression must have integral type. + if (!index->isScalar() || (index->getBasicType() != EbtInt)) { + error(index->getLine(), + "Index expression must have integral type", + index->getCompleteString().c_str()); + valid = false; + } + // The index expession must be a constant-index-expression unless + // the operand is a uniform in a vertex shader. + TIntermTyped* operand = node->getLeft(); + bool skip = (mShaderType == SH_VERTEX_SHADER) && + (operand->getQualifier() == EvqUniform); + if (!skip && !isConstIndexExpr(index)) { + error(index->getLine(), "Index expression must be constant", "[]"); + valid = false; + } + return valid; +} + diff --git a/Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.h b/Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.h new file mode 100644 index 00000000000..a835cb3c226 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.h @@ -0,0 +1,59 @@ +// +// Copyright (c) 2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "GLSLANG/ShaderLang.h" +#include "compiler/intermediate.h" + +class TInfoSinkBase; + +struct TLoopInfo { + struct TIndex { + int id; // symbol id. + } index; + TIntermLoop* loop; +}; +typedef TVector TLoopStack; + +// Traverses intermediate tree to ensure that the shader does not exceed the +// minimum functionality mandated in GLSL 1.0 spec, Appendix A. +class ValidateLimitations : public TIntermTraverser { +public: + ValidateLimitations(ShShaderType shaderType, TInfoSinkBase& sink); + + int numErrors() const { return mNumErrors; } + + virtual bool visitBinary(Visit, TIntermBinary*); + virtual bool visitUnary(Visit, TIntermUnary*); + virtual bool visitAggregate(Visit, TIntermAggregate*); + virtual bool visitLoop(Visit, TIntermLoop*); + +private: + void error(TSourceLoc loc, const char *reason, const char* token); + + bool withinLoopBody() const; + bool isLoopIndex(const TIntermSymbol* symbol) const; + bool validateLoopType(TIntermLoop* node); + bool validateForLoopHeader(TIntermLoop* node, TLoopInfo* info); + bool validateForLoopInit(TIntermLoop* node, TLoopInfo* info); + bool validateForLoopCond(TIntermLoop* node, TLoopInfo* info); + bool validateForLoopExpr(TIntermLoop* node, TLoopInfo* info); + // Returns true if none of the loop indices is used as the argument to + // the given function out or inout parameter. + bool validateFunctionCall(TIntermAggregate* node); + bool validateOperation(TIntermOperator* node, TIntermNode* operand); + + // Returns true if indexing does not exceed the minimum functionality + // mandated in GLSL 1.0 spec, Appendix A, Section 5. + bool isConstExpr(TIntermNode* node); + bool isConstIndexExpr(TIntermNode* node); + bool validateIndexing(TIntermBinary* node); + + ShShaderType mShaderType; + TInfoSinkBase& mSink; + int mNumErrors; + TLoopStack mLoopStack; +}; + diff --git a/Source/ThirdParty/ANGLE/src/compiler/VariableInfo.cpp b/Source/ThirdParty/ANGLE/src/compiler/VariableInfo.cpp new file mode 100644 index 00000000000..84db807a801 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/VariableInfo.cpp @@ -0,0 +1,245 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/VariableInfo.h" + +static TString arrayBrackets(int index) +{ + TStringStream stream; + stream << "[" << index << "]"; + return stream.str(); +} + +// Returns the data type for an attribute or uniform. +static ShDataType getVariableDataType(const TType& type) +{ + switch (type.getBasicType()) { + case EbtFloat: + if (type.isMatrix()) { + switch (type.getNominalSize()) { + case 2: return SH_FLOAT_MAT2; + case 3: return SH_FLOAT_MAT3; + case 4: return SH_FLOAT_MAT4; + default: UNREACHABLE(); + } + } else if (type.isVector()) { + switch (type.getNominalSize()) { + case 2: return SH_FLOAT_VEC2; + case 3: return SH_FLOAT_VEC3; + case 4: return SH_FLOAT_VEC4; + default: UNREACHABLE(); + } + } else { + return SH_FLOAT; + } + case EbtInt: + if (type.isMatrix()) { + UNREACHABLE(); + } else if (type.isVector()) { + switch (type.getNominalSize()) { + case 2: return SH_INT_VEC2; + case 3: return SH_INT_VEC3; + case 4: return SH_INT_VEC4; + default: UNREACHABLE(); + } + } else { + return SH_INT; + } + case EbtBool: + if (type.isMatrix()) { + UNREACHABLE(); + } else if (type.isVector()) { + switch (type.getNominalSize()) { + case 2: return SH_BOOL_VEC2; + case 3: return SH_BOOL_VEC3; + case 4: return SH_BOOL_VEC4; + default: UNREACHABLE(); + } + } else { + return SH_BOOL; + } + case EbtSampler2D: return SH_SAMPLER_2D; + case EbtSamplerCube: return SH_SAMPLER_CUBE; + case EbtSamplerExternalOES: return SH_SAMPLER_EXTERNAL_OES; + case EbtSampler2DRect: return SH_SAMPLER_2D_RECT_ARB; + default: UNREACHABLE(); + } + return SH_NONE; +} + +static void getBuiltInVariableInfo(const TType& type, + const TString& name, + const TString& mappedName, + TVariableInfoList& infoList); +static void getUserDefinedVariableInfo(const TType& type, + const TString& name, + const TString& mappedName, + TVariableInfoList& infoList, + ShHashFunction64 hashFunction); + +// Returns info for an attribute or uniform. +static void getVariableInfo(const TType& type, + const TString& name, + const TString& mappedName, + TVariableInfoList& infoList, + ShHashFunction64 hashFunction) +{ + if (type.getBasicType() == EbtStruct) { + if (type.isArray()) { + for (int i = 0; i < type.getArraySize(); ++i) { + TString lname = name + arrayBrackets(i); + TString lmappedName = mappedName + arrayBrackets(i); + getUserDefinedVariableInfo(type, lname, lmappedName, infoList, hashFunction); + } + } else { + getUserDefinedVariableInfo(type, name, mappedName, infoList, hashFunction); + } + } else { + getBuiltInVariableInfo(type, name, mappedName, infoList); + } +} + +void getBuiltInVariableInfo(const TType& type, + const TString& name, + const TString& mappedName, + TVariableInfoList& infoList) +{ + ASSERT(type.getBasicType() != EbtStruct); + + TVariableInfo varInfo; + if (type.isArray()) { + varInfo.name = (name + "[0]").c_str(); + varInfo.mappedName = (mappedName + "[0]").c_str(); + varInfo.size = type.getArraySize(); + } else { + varInfo.name = name.c_str(); + varInfo.mappedName = mappedName.c_str(); + varInfo.size = 1; + } + varInfo.type = getVariableDataType(type); + infoList.push_back(varInfo); +} + +void getUserDefinedVariableInfo(const TType& type, + const TString& name, + const TString& mappedName, + TVariableInfoList& infoList, + ShHashFunction64 hashFunction) +{ + ASSERT(type.getBasicType() == EbtStruct); + + const TFieldList& fields = type.getStruct()->fields(); + for (size_t i = 0; i < fields.size(); ++i) { + const TType& fieldType = *(fields[i]->type()); + const TString& fieldName = fields[i]->name(); + getVariableInfo(fieldType, + name + "." + fieldName, + mappedName + "." + TIntermTraverser::hash(fieldName, hashFunction), + infoList, + hashFunction); + } +} + +TVariableInfo::TVariableInfo() +{ +} + +TVariableInfo::TVariableInfo(ShDataType type, int size) + : type(type), + size(size) +{ +} + +CollectAttribsUniforms::CollectAttribsUniforms(TVariableInfoList& attribs, + TVariableInfoList& uniforms, + ShHashFunction64 hashFunction) + : mAttribs(attribs), + mUniforms(uniforms), + mHashFunction(hashFunction) +{ +} + +// We are only interested in attribute and uniform variable declaration. +void CollectAttribsUniforms::visitSymbol(TIntermSymbol*) +{ +} + +void CollectAttribsUniforms::visitConstantUnion(TIntermConstantUnion*) +{ +} + +bool CollectAttribsUniforms::visitBinary(Visit, TIntermBinary*) +{ + return false; +} + +bool CollectAttribsUniforms::visitUnary(Visit, TIntermUnary*) +{ + return false; +} + +bool CollectAttribsUniforms::visitSelection(Visit, TIntermSelection*) +{ + return false; +} + +bool CollectAttribsUniforms::visitAggregate(Visit, TIntermAggregate* node) +{ + bool visitChildren = false; + + switch (node->getOp()) + { + case EOpSequence: + // We need to visit sequence children to get to variable declarations. + visitChildren = true; + break; + case EOpDeclaration: { + const TIntermSequence& sequence = node->getSequence(); + TQualifier qualifier = sequence.front()->getAsTyped()->getQualifier(); + if (qualifier == EvqAttribute || qualifier == EvqUniform) + { + TVariableInfoList& infoList = qualifier == EvqAttribute ? + mAttribs : mUniforms; + for (TIntermSequence::const_iterator i = sequence.begin(); + i != sequence.end(); ++i) + { + const TIntermSymbol* variable = (*i)->getAsSymbolNode(); + // The only case in which the sequence will not contain a + // TIntermSymbol node is initialization. It will contain a + // TInterBinary node in that case. Since attributes and unifroms + // cannot be initialized in a shader, we must have only + // TIntermSymbol nodes in the sequence. + ASSERT(variable != NULL); + TString processedSymbol; + if (mHashFunction == NULL) + processedSymbol = variable->getSymbol(); + else + processedSymbol = TIntermTraverser::hash(variable->getOriginalSymbol(), mHashFunction); + getVariableInfo(variable->getType(), + variable->getOriginalSymbol(), + processedSymbol, + infoList, + mHashFunction); + } + } + break; + } + default: break; + } + + return visitChildren; +} + +bool CollectAttribsUniforms::visitLoop(Visit, TIntermLoop*) +{ + return false; +} + +bool CollectAttribsUniforms::visitBranch(Visit, TIntermBranch*) +{ + return false; +} + diff --git a/Source/ThirdParty/ANGLE/src/compiler/VariableInfo.h b/Source/ThirdParty/ANGLE/src/compiler/VariableInfo.h new file mode 100644 index 00000000000..4130a589f50 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/VariableInfo.h @@ -0,0 +1,49 @@ +// +// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_VARIABLE_INFO_H_ +#define COMPILER_VARIABLE_INFO_H_ + +#include "GLSLANG/ShaderLang.h" +#include "compiler/intermediate.h" + +// Provides information about a variable. +// It is currently being used to store info about active attribs and uniforms. +struct TVariableInfo { + TVariableInfo(ShDataType type, int size); + TVariableInfo(); + + TPersistString name; + TPersistString mappedName; + ShDataType type; + int size; +}; +typedef std::vector TVariableInfoList; + +// Traverses intermediate tree to collect all attributes and uniforms. +class CollectAttribsUniforms : public TIntermTraverser { +public: + CollectAttribsUniforms(TVariableInfoList& attribs, + TVariableInfoList& uniforms, + ShHashFunction64 hashFunction); + + virtual void visitSymbol(TIntermSymbol*); + virtual void visitConstantUnion(TIntermConstantUnion*); + virtual bool visitBinary(Visit, TIntermBinary*); + virtual bool visitUnary(Visit, TIntermUnary*); + virtual bool visitSelection(Visit, TIntermSelection*); + virtual bool visitAggregate(Visit, TIntermAggregate*); + virtual bool visitLoop(Visit, TIntermLoop*); + virtual bool visitBranch(Visit, TIntermBranch*); + +private: + TVariableInfoList& mAttribs; + TVariableInfoList& mUniforms; + + ShHashFunction64 mHashFunction; +}; + +#endif // COMPILER_VARIABLE_INFO_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/VariablePacker.cpp b/Source/ThirdParty/ANGLE/src/compiler/VariablePacker.cpp new file mode 100644 index 00000000000..89572877635 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/VariablePacker.cpp @@ -0,0 +1,297 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +#include "compiler/VariablePacker.h" + +#include +#include "compiler/ShHandle.h" + +namespace { +int GetSortOrder(ShDataType type) +{ + switch (type) { + case SH_FLOAT_MAT4: + return 0; + case SH_FLOAT_MAT2: + return 1; + case SH_FLOAT_VEC4: + case SH_INT_VEC4: + case SH_BOOL_VEC4: + return 2; + case SH_FLOAT_MAT3: + return 3; + case SH_FLOAT_VEC3: + case SH_INT_VEC3: + case SH_BOOL_VEC3: + return 4; + case SH_FLOAT_VEC2: + case SH_INT_VEC2: + case SH_BOOL_VEC2: + return 5; + case SH_FLOAT: + case SH_INT: + case SH_BOOL: + case SH_SAMPLER_2D: + case SH_SAMPLER_CUBE: + case SH_SAMPLER_EXTERNAL_OES: + case SH_SAMPLER_2D_RECT_ARB: + return 6; + default: + ASSERT(false); + return 7; + } +} +} // namespace + +int VariablePacker::GetNumComponentsPerRow(ShDataType type) +{ + switch (type) { + case SH_FLOAT_MAT4: + case SH_FLOAT_MAT2: + case SH_FLOAT_VEC4: + case SH_INT_VEC4: + case SH_BOOL_VEC4: + return 4; + case SH_FLOAT_MAT3: + case SH_FLOAT_VEC3: + case SH_INT_VEC3: + case SH_BOOL_VEC3: + return 3; + case SH_FLOAT_VEC2: + case SH_INT_VEC2: + case SH_BOOL_VEC2: + return 2; + case SH_FLOAT: + case SH_INT: + case SH_BOOL: + case SH_SAMPLER_2D: + case SH_SAMPLER_CUBE: + case SH_SAMPLER_EXTERNAL_OES: + case SH_SAMPLER_2D_RECT_ARB: + return 1; + default: + ASSERT(false); + return 5; + } +} + +int VariablePacker::GetNumRows(ShDataType type) +{ + switch (type) { + case SH_FLOAT_MAT4: + return 4; + case SH_FLOAT_MAT3: + return 3; + case SH_FLOAT_MAT2: + return 2; + case SH_FLOAT_VEC4: + case SH_INT_VEC4: + case SH_BOOL_VEC4: + case SH_FLOAT_VEC3: + case SH_INT_VEC3: + case SH_BOOL_VEC3: + case SH_FLOAT_VEC2: + case SH_INT_VEC2: + case SH_BOOL_VEC2: + case SH_FLOAT: + case SH_INT: + case SH_BOOL: + case SH_SAMPLER_2D: + case SH_SAMPLER_CUBE: + case SH_SAMPLER_EXTERNAL_OES: + case SH_SAMPLER_2D_RECT_ARB: + return 1; + default: + ASSERT(false); + return 100000; + } +} + +struct TVariableInfoComparer { + bool operator()(const TVariableInfo& lhs, const TVariableInfo& rhs) const + { + int lhsSortOrder = GetSortOrder(lhs.type); + int rhsSortOrder = GetSortOrder(rhs.type); + if (lhsSortOrder != rhsSortOrder) { + return lhsSortOrder < rhsSortOrder; + } + // Sort by largest first. + return lhs.size > rhs.size; + } +}; + +unsigned VariablePacker::makeColumnFlags(int column, int numComponentsPerRow) +{ + return ((kColumnMask << (kNumColumns - numComponentsPerRow)) & + kColumnMask) >> column; +} + +void VariablePacker::fillColumns(int topRow, int numRows, int column, int numComponentsPerRow) +{ + unsigned columnFlags = makeColumnFlags(column, numComponentsPerRow); + for (int r = 0; r < numRows; ++r) { + int row = topRow + r; + ASSERT((rows_[row] & columnFlags) == 0); + rows_[row] |= columnFlags; + } +} + +bool VariablePacker::searchColumn(int column, int numRows, int* destRow, int* destSize) +{ + ASSERT(destRow); + + for (; topNonFullRow_ < maxRows_ && rows_[topNonFullRow_] == kColumnMask; + ++topNonFullRow_) { + } + + for (; bottomNonFullRow_ >= 0 && rows_[bottomNonFullRow_] == kColumnMask; + --bottomNonFullRow_) { + } + + if (bottomNonFullRow_ - topNonFullRow_ + 1 < numRows) { + return false; + } + + unsigned columnFlags = makeColumnFlags(column, 1); + int topGoodRow = 0; + int smallestGoodTop = -1; + int smallestGoodSize = maxRows_ + 1; + int bottomRow = bottomNonFullRow_ + 1; + bool found = false; + for (int row = topNonFullRow_; row <= bottomRow; ++row) { + bool rowEmpty = row < bottomRow ? ((rows_[row] & columnFlags) == 0) : false; + if (rowEmpty) { + if (!found) { + topGoodRow = row; + found = true; + } + } else { + if (found) { + int size = row - topGoodRow; + if (size >= numRows && size < smallestGoodSize) { + smallestGoodSize = size; + smallestGoodTop = topGoodRow; + } + } + found = false; + } + } + if (smallestGoodTop < 0) { + return false; + } + + *destRow = smallestGoodTop; + if (destSize) { + *destSize = smallestGoodSize; + } + return true; +} + +bool VariablePacker::CheckVariablesWithinPackingLimits(int maxVectors, const TVariableInfoList& in_variables) +{ + ASSERT(maxVectors > 0); + maxRows_ = maxVectors; + topNonFullRow_ = 0; + bottomNonFullRow_ = maxRows_ - 1; + TVariableInfoList variables(in_variables); + + // As per GLSL 1.017 Appendix A, Section 7 variables are packed in specific + // order by type, then by size of array, largest first. + std::sort(variables.begin(), variables.end(), TVariableInfoComparer()); + rows_.clear(); + rows_.resize(maxVectors, 0); + + // Packs the 4 column variables. + size_t ii = 0; + for (; ii < variables.size(); ++ii) { + const TVariableInfo& variable = variables[ii]; + if (GetNumComponentsPerRow(variable.type) != 4) { + break; + } + topNonFullRow_ += GetNumRows(variable.type) * variable.size; + } + + if (topNonFullRow_ > maxRows_) { + return false; + } + + // Packs the 3 column variables. + int num3ColumnRows = 0; + for (; ii < variables.size(); ++ii) { + const TVariableInfo& variable = variables[ii]; + if (GetNumComponentsPerRow(variable.type) != 3) { + break; + } + num3ColumnRows += GetNumRows(variable.type) * variable.size; + } + + if (topNonFullRow_ + num3ColumnRows > maxRows_) { + return false; + } + + fillColumns(topNonFullRow_, num3ColumnRows, 0, 3); + + // Packs the 2 column variables. + int top2ColumnRow = topNonFullRow_ + num3ColumnRows; + int twoColumnRowsAvailable = maxRows_ - top2ColumnRow; + int rowsAvailableInColumns01 = twoColumnRowsAvailable; + int rowsAvailableInColumns23 = twoColumnRowsAvailable; + for (; ii < variables.size(); ++ii) { + const TVariableInfo& variable = variables[ii]; + if (GetNumComponentsPerRow(variable.type) != 2) { + break; + } + int numRows = GetNumRows(variable.type) * variable.size; + if (numRows <= rowsAvailableInColumns01) { + rowsAvailableInColumns01 -= numRows; + } else if (numRows <= rowsAvailableInColumns23) { + rowsAvailableInColumns23 -= numRows; + } else { + return false; + } + } + + int numRowsUsedInColumns01 = + twoColumnRowsAvailable - rowsAvailableInColumns01; + int numRowsUsedInColumns23 = + twoColumnRowsAvailable - rowsAvailableInColumns23; + fillColumns(top2ColumnRow, numRowsUsedInColumns01, 0, 2); + fillColumns(maxRows_ - numRowsUsedInColumns23, numRowsUsedInColumns23, + 2, 2); + + // Packs the 1 column variables. + for (; ii < variables.size(); ++ii) { + const TVariableInfo& variable = variables[ii]; + ASSERT(1 == GetNumComponentsPerRow(variable.type)); + int numRows = GetNumRows(variable.type) * variable.size; + int smallestColumn = -1; + int smallestSize = maxRows_ + 1; + int topRow = -1; + for (int column = 0; column < kNumColumns; ++column) { + int row = 0; + int size = 0; + if (searchColumn(column, numRows, &row, &size)) { + if (size < smallestSize) { + smallestSize = size; + smallestColumn = column; + topRow = row; + } + } + } + + if (smallestColumn < 0) { + return false; + } + + fillColumns(topRow, numRows, smallestColumn, 1); + } + + ASSERT(variables.size() == ii); + + return true; +} + + + diff --git a/Source/ThirdParty/ANGLE/src/compiler/VariablePacker.h b/Source/ThirdParty/ANGLE/src/compiler/VariablePacker.h new file mode 100644 index 00000000000..8987066cc37 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/VariablePacker.h @@ -0,0 +1,41 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef _VARIABLEPACKER_INCLUDED_ +#define _VARIABLEPACKER_INCLUDED_ + +#include +#include "compiler/ShHandle.h" + +class VariablePacker { + public: + // Returns true if the passed in variables pack in maxVectors following + // the packing rules from the GLSL 1.017 spec, Appendix A, section 7. + bool CheckVariablesWithinPackingLimits( + int maxVectors, + const TVariableInfoList& in_variables); + + // Gets how many components in a row a data type takes. + static int GetNumComponentsPerRow(ShDataType type); + + // Gets how many rows a data type takes. + static int GetNumRows(ShDataType type); + + private: + static const int kNumColumns = 4; + static const unsigned kColumnMask = (1 << kNumColumns) - 1; + + unsigned makeColumnFlags(int column, int numComponentsPerRow); + void fillColumns(int topRow, int numRows, int column, int numComponentsPerRow); + bool searchColumn(int column, int numRows, int* destRow, int* destSize); + + int topNonFullRow_; + int bottomNonFullRow_; + int maxRows_; + std::vector rows_; +}; + +#endif // _VARIABLEPACKER_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/VersionGLSL.cpp b/Source/ThirdParty/ANGLE/src/compiler/VersionGLSL.cpp new file mode 100644 index 00000000000..7a82bb4dc17 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/VersionGLSL.cpp @@ -0,0 +1,140 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/VersionGLSL.h" + +static const int GLSL_VERSION_110 = 110; +static const int GLSL_VERSION_120 = 120; + +// We need to scan for the following: +// 1. "invariant" keyword: This can occur in both - vertex and fragment shaders +// but only at the global scope. +// 2. "gl_PointCoord" built-in variable: This can only occur in fragment shader +// but inside any scope. +// 3. Call to a matrix constructor with another matrix as argument. +// (These constructors were reserved in GLSL version 1.10.) +// 4. Arrays as "out" function parameters. +// GLSL spec section 6.1.1: "When calling a function, expressions that do +// not evaluate to l-values cannot be passed to parameters declared as +// out or inout." +// GLSL 1.1 section 5.8: "Other binary or unary expressions, +// non-dereferenced arrays, function names, swizzles with repeated fields, +// and constants cannot be l-values." +// GLSL 1.2 relaxed the restriction on arrays, section 5.8: "Variables that +// are built-in types, entire structures or arrays... are all l-values." +// +// TODO(alokp): The following two cases of invariant decalaration get lost +// during parsing - they do not get carried over to the intermediate tree. +// Handle these cases: +// 1. When a pragma is used to force all output variables to be invariant: +// - #pragma STDGL invariant(all) +// 2. When a previously decalared or built-in variable is marked invariant: +// - invariant gl_Position; +// - varying vec3 color; invariant color; +// +TVersionGLSL::TVersionGLSL(ShShaderType type) + : mShaderType(type), + mVersion(GLSL_VERSION_110) +{ +} + +void TVersionGLSL::visitSymbol(TIntermSymbol* node) +{ + if (node->getSymbol() == "gl_PointCoord") + updateVersion(GLSL_VERSION_120); +} + +void TVersionGLSL::visitConstantUnion(TIntermConstantUnion*) +{ +} + +bool TVersionGLSL::visitBinary(Visit, TIntermBinary*) +{ + return true; +} + +bool TVersionGLSL::visitUnary(Visit, TIntermUnary*) +{ + return true; +} + +bool TVersionGLSL::visitSelection(Visit, TIntermSelection*) +{ + return true; +} + +bool TVersionGLSL::visitAggregate(Visit, TIntermAggregate* node) +{ + bool visitChildren = true; + + switch (node->getOp()) { + case EOpSequence: + // We need to visit sequence children to get to global or inner scope. + visitChildren = true; + break; + case EOpDeclaration: { + const TIntermSequence& sequence = node->getSequence(); + TQualifier qualifier = sequence.front()->getAsTyped()->getQualifier(); + if ((qualifier == EvqInvariantVaryingIn) || + (qualifier == EvqInvariantVaryingOut)) { + updateVersion(GLSL_VERSION_120); + } + break; + } + case EOpParameters: { + const TIntermSequence& params = node->getSequence(); + for (TIntermSequence::const_iterator iter = params.begin(); + iter != params.end(); ++iter) + { + const TIntermTyped* param = (*iter)->getAsTyped(); + if (param->isArray()) + { + TQualifier qualifier = param->getQualifier(); + if ((qualifier == EvqOut) || (qualifier == EvqInOut)) + { + updateVersion(GLSL_VERSION_120); + break; + } + } + } + // Fully processed. No need to visit children. + visitChildren = false; + break; + } + case EOpConstructMat2: + case EOpConstructMat3: + case EOpConstructMat4: { + const TIntermSequence& sequence = node->getSequence(); + if (sequence.size() == 1) { + TIntermTyped* typed = sequence.front()->getAsTyped(); + if (typed && typed->isMatrix()) { + updateVersion(GLSL_VERSION_120); + } + } + break; + } + + default: break; + } + + return visitChildren; +} + +bool TVersionGLSL::visitLoop(Visit, TIntermLoop*) +{ + return true; +} + +bool TVersionGLSL::visitBranch(Visit, TIntermBranch*) +{ + return true; +} + +void TVersionGLSL::updateVersion(int version) +{ + mVersion = std::max(version, mVersion); +} + diff --git a/Source/ThirdParty/ANGLE/src/compiler/VersionGLSL.h b/Source/ThirdParty/ANGLE/src/compiler/VersionGLSL.h new file mode 100644 index 00000000000..1c1cb1ab97b --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/VersionGLSL.h @@ -0,0 +1,56 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_VERSIONGLSL_H_ +#define COMPILER_VERSIONGLSL_H_ + +#include "GLSLANG/ShaderLang.h" +#include "compiler/intermediate.h" + +// Traverses the intermediate tree to return the minimum GLSL version +// required to legally access all built-in features used in the shader. +// GLSL 1.1 which is mandated by OpenGL 2.0 provides: +// - #version and #extension to declare version and extensions. +// - built-in functions refract, exp, and log. +// - updated step() to compare x < edge instead of x <= edge. +// GLSL 1.2 which is mandated by OpenGL 2.1 provides: +// - many changes to reduce differences when compared to the ES specification. +// - invariant keyword and its support. +// - c++ style name hiding rules. +// - built-in variable gl_PointCoord for fragment shaders. +// - matrix constructors taking matrix as argument. +// - array as "out" function parameters +// +class TVersionGLSL : public TIntermTraverser { +public: + TVersionGLSL(ShShaderType type); + + // Returns 120 if the following is used the shader: + // - "invariant", + // - "gl_PointCoord", + // - matrix/matrix constructors + // - array "out" parameters + // Else 110 is returned. + int getVersion() { return mVersion; } + + virtual void visitSymbol(TIntermSymbol*); + virtual void visitConstantUnion(TIntermConstantUnion*); + virtual bool visitBinary(Visit, TIntermBinary*); + virtual bool visitUnary(Visit, TIntermUnary*); + virtual bool visitSelection(Visit, TIntermSelection*); + virtual bool visitAggregate(Visit, TIntermAggregate*); + virtual bool visitLoop(Visit, TIntermLoop*); + virtual bool visitBranch(Visit, TIntermBranch*); + +protected: + void updateVersion(int version); + +private: + ShShaderType mShaderType; + int mVersion; +}; + +#endif // COMPILER_VERSIONGLSL_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/debug.cpp b/Source/ThirdParty/ANGLE/src/compiler/debug.cpp new file mode 100644 index 00000000000..53778bd3eb7 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/debug.cpp @@ -0,0 +1,37 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// debug.cpp: Debugging utilities. + +#include "compiler/debug.h" + +#include +#include + +#include "compiler/InitializeParseContext.h" +#include "compiler/ParseHelper.h" + +static const int kTraceBufferLen = 1024; + +#ifdef TRACE_ENABLED +extern "C" { +void Trace(const char *format, ...) { + if (!format) return; + + TParseContext* parseContext = GetGlobalParseContext(); + if (parseContext) { + char buf[kTraceBufferLen]; + va_list args; + va_start(args, format); + vsnprintf(buf, kTraceBufferLen, format, args); + va_end(args); + + parseContext->trace(buf); + } +} +} // extern "C" +#endif // TRACE_ENABLED + diff --git a/Source/ThirdParty/ANGLE/src/compiler/debug.h b/Source/ThirdParty/ANGLE/src/compiler/debug.h new file mode 100644 index 00000000000..7a371516af0 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/debug.h @@ -0,0 +1,53 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// debug.h: Debugging utilities. + +#ifndef COMPILER_DEBUG_H_ +#define COMPILER_DEBUG_H_ + +#include + +#ifdef _DEBUG +#define TRACE_ENABLED // define to enable debug message tracing +#endif // _DEBUG + +// Outputs text to the debug log +#ifdef TRACE_ENABLED + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus +void Trace(const char* format, ...); +#ifdef __cplusplus +} +#endif // __cplusplus + +#else // TRACE_ENABLED + +#define Trace(...) ((void)0) + +#endif // TRACE_ENABLED + +// A macro asserting a condition and outputting failures to the debug log +#define ASSERT(expression) do { \ + if(!(expression)) \ + Trace("Assert failed: %s(%d): "#expression"\n", __FUNCTION__, __LINE__); \ + assert(expression); \ +} while(0) + +#define UNIMPLEMENTED() do { \ + Trace("Unimplemented invoked: %s(%d)\n", __FUNCTION__, __LINE__); \ + assert(false); \ +} while(0) + +#define UNREACHABLE() do { \ + Trace("Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__); \ + assert(false); \ +} while(0) + +#endif // COMPILER_DEBUG_H_ + diff --git a/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraph.cpp b/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraph.cpp new file mode 100644 index 00000000000..9408f2820cd --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraph.cpp @@ -0,0 +1,99 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#if defined(_MSC_VER) +#pragma warning(disable: 4718) +#endif + +#include "compiler/depgraph/DependencyGraph.h" +#include "compiler/depgraph/DependencyGraphBuilder.h" + +TDependencyGraph::TDependencyGraph(TIntermNode* intermNode) +{ + TDependencyGraphBuilder::build(intermNode, this); +} + +TDependencyGraph::~TDependencyGraph() +{ + for (TGraphNodeVector::const_iterator iter = mAllNodes.begin(); iter != mAllNodes.end(); ++iter) + { + TGraphNode* node = *iter; + delete node; + } +} + +TGraphArgument* TDependencyGraph::createArgument(TIntermAggregate* intermFunctionCall, + int argumentNumber) +{ + TGraphArgument* argument = new TGraphArgument(intermFunctionCall, argumentNumber); + mAllNodes.push_back(argument); + return argument; +} + +TGraphFunctionCall* TDependencyGraph::createFunctionCall(TIntermAggregate* intermFunctionCall) +{ + TGraphFunctionCall* functionCall = new TGraphFunctionCall(intermFunctionCall); + mAllNodes.push_back(functionCall); + if (functionCall->getIntermFunctionCall()->isUserDefined()) + mUserDefinedFunctionCalls.push_back(functionCall); + return functionCall; +} + +TGraphSymbol* TDependencyGraph::getOrCreateSymbol(TIntermSymbol* intermSymbol) +{ + TSymbolIdMap::const_iterator iter = mSymbolIdMap.find(intermSymbol->getId()); + + TGraphSymbol* symbol = NULL; + + if (iter != mSymbolIdMap.end()) { + TSymbolIdPair pair = *iter; + symbol = pair.second; + } else { + symbol = new TGraphSymbol(intermSymbol); + mAllNodes.push_back(symbol); + + TSymbolIdPair pair(intermSymbol->getId(), symbol); + mSymbolIdMap.insert(pair); + + // We save all sampler symbols in a collection, so we can start graph traversals from them quickly. + if (IsSampler(intermSymbol->getBasicType())) + mSamplerSymbols.push_back(symbol); + } + + return symbol; +} + +TGraphSelection* TDependencyGraph::createSelection(TIntermSelection* intermSelection) +{ + TGraphSelection* selection = new TGraphSelection(intermSelection); + mAllNodes.push_back(selection); + return selection; +} + +TGraphLoop* TDependencyGraph::createLoop(TIntermLoop* intermLoop) +{ + TGraphLoop* loop = new TGraphLoop(intermLoop); + mAllNodes.push_back(loop); + return loop; +} + +TGraphLogicalOp* TDependencyGraph::createLogicalOp(TIntermBinary* intermLogicalOp) +{ + TGraphLogicalOp* logicalOp = new TGraphLogicalOp(intermLogicalOp); + mAllNodes.push_back(logicalOp); + return logicalOp; +} + +const char* TGraphLogicalOp::getOpString() const +{ + const char* opString = NULL; + switch (getIntermLogicalOp()->getOp()) { + case EOpLogicalAnd: opString = "and"; break; + case EOpLogicalOr: opString = "or"; break; + default: opString = "unknown"; break; + } + return opString; +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraph.h b/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraph.h new file mode 100644 index 00000000000..5a9c35d00b7 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraph.h @@ -0,0 +1,212 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_DEPGRAPH_DEPENDENCY_GRAPH_H +#define COMPILER_DEPGRAPH_DEPENDENCY_GRAPH_H + +#include "compiler/intermediate.h" + +#include +#include + +class TGraphNode; +class TGraphParentNode; +class TGraphArgument; +class TGraphFunctionCall; +class TGraphSymbol; +class TGraphSelection; +class TGraphLoop; +class TGraphLogicalOp; +class TDependencyGraphTraverser; +class TDependencyGraphOutput; + +typedef std::set TGraphNodeSet; +typedef std::vector TGraphNodeVector; +typedef std::vector TGraphSymbolVector; +typedef std::vector TFunctionCallVector; + +// +// Base class for all dependency graph nodes. +// +class TGraphNode { +public: + TGraphNode(TIntermNode* node) : intermNode(node) {} + virtual ~TGraphNode() {} + virtual void traverse(TDependencyGraphTraverser* graphTraverser); +protected: + TIntermNode* intermNode; +}; + +// +// Base class for dependency graph nodes that may have children. +// +class TGraphParentNode : public TGraphNode { +public: + TGraphParentNode(TIntermNode* node) : TGraphNode(node) {} + virtual ~TGraphParentNode() {} + void addDependentNode(TGraphNode* node) { if (node != this) mDependentNodes.insert(node); } + virtual void traverse(TDependencyGraphTraverser* graphTraverser); +private: + TGraphNodeSet mDependentNodes; +}; + +// +// Handle function call arguments. +// +class TGraphArgument : public TGraphParentNode { +public: + TGraphArgument(TIntermAggregate* intermFunctionCall, int argumentNumber) + : TGraphParentNode(intermFunctionCall) + , mArgumentNumber(argumentNumber) {} + virtual ~TGraphArgument() {} + const TIntermAggregate* getIntermFunctionCall() const { return intermNode->getAsAggregate(); } + int getArgumentNumber() const { return mArgumentNumber; } + virtual void traverse(TDependencyGraphTraverser* graphTraverser); +private: + int mArgumentNumber; +}; + +// +// Handle function calls. +// +class TGraphFunctionCall : public TGraphParentNode { +public: + TGraphFunctionCall(TIntermAggregate* intermFunctionCall) + : TGraphParentNode(intermFunctionCall) {} + virtual ~TGraphFunctionCall() {} + const TIntermAggregate* getIntermFunctionCall() const { return intermNode->getAsAggregate(); } + virtual void traverse(TDependencyGraphTraverser* graphTraverser); +}; + +// +// Handle symbols. +// +class TGraphSymbol : public TGraphParentNode { +public: + TGraphSymbol(TIntermSymbol* intermSymbol) : TGraphParentNode(intermSymbol) {} + virtual ~TGraphSymbol() {} + const TIntermSymbol* getIntermSymbol() const { return intermNode->getAsSymbolNode(); } + virtual void traverse(TDependencyGraphTraverser* graphTraverser); +}; + +// +// Handle if statements and ternary operators. +// +class TGraphSelection : public TGraphNode { +public: + TGraphSelection(TIntermSelection* intermSelection) : TGraphNode(intermSelection) {} + virtual ~TGraphSelection() {} + const TIntermSelection* getIntermSelection() const { return intermNode->getAsSelectionNode(); } + virtual void traverse(TDependencyGraphTraverser* graphTraverser); +}; + +// +// Handle for, do-while, and while loops. +// +class TGraphLoop : public TGraphNode { +public: + TGraphLoop(TIntermLoop* intermLoop) : TGraphNode(intermLoop) {} + virtual ~TGraphLoop() {} + const TIntermLoop* getIntermLoop() const { return intermNode->getAsLoopNode(); } + virtual void traverse(TDependencyGraphTraverser* graphTraverser); +}; + +// +// Handle logical and, or. +// +class TGraphLogicalOp : public TGraphNode { +public: + TGraphLogicalOp(TIntermBinary* intermLogicalOp) : TGraphNode(intermLogicalOp) {} + virtual ~TGraphLogicalOp() {} + const TIntermBinary* getIntermLogicalOp() const { return intermNode->getAsBinaryNode(); } + const char* getOpString() const; + virtual void traverse(TDependencyGraphTraverser* graphTraverser); +}; + +// +// A dependency graph of symbols, function calls, conditions etc. +// +// This class provides an interface to the entry points of the dependency graph. +// +// Dependency graph nodes should be created by using one of the provided "create..." methods. +// This class (and nobody else) manages the memory of the created nodes. +// Nodes may not be removed after being added, so all created nodes will exist while the +// TDependencyGraph instance exists. +// +class TDependencyGraph { +public: + TDependencyGraph(TIntermNode* intermNode); + ~TDependencyGraph(); + TGraphNodeVector::const_iterator begin() const { return mAllNodes.begin(); } + TGraphNodeVector::const_iterator end() const { return mAllNodes.end(); } + + TGraphSymbolVector::const_iterator beginSamplerSymbols() const + { + return mSamplerSymbols.begin(); + } + + TGraphSymbolVector::const_iterator endSamplerSymbols() const + { + return mSamplerSymbols.end(); + } + + TFunctionCallVector::const_iterator beginUserDefinedFunctionCalls() const + { + return mUserDefinedFunctionCalls.begin(); + } + + TFunctionCallVector::const_iterator endUserDefinedFunctionCalls() const + { + return mUserDefinedFunctionCalls.end(); + } + + TGraphArgument* createArgument(TIntermAggregate* intermFunctionCall, int argumentNumber); + TGraphFunctionCall* createFunctionCall(TIntermAggregate* intermFunctionCall); + TGraphSymbol* getOrCreateSymbol(TIntermSymbol* intermSymbol); + TGraphSelection* createSelection(TIntermSelection* intermSelection); + TGraphLoop* createLoop(TIntermLoop* intermLoop); + TGraphLogicalOp* createLogicalOp(TIntermBinary* intermLogicalOp); +private: + typedef TMap TSymbolIdMap; + typedef std::pair TSymbolIdPair; + + TGraphNodeVector mAllNodes; + TGraphSymbolVector mSamplerSymbols; + TFunctionCallVector mUserDefinedFunctionCalls; + TSymbolIdMap mSymbolIdMap; +}; + +// +// For traversing the dependency graph. Users should derive from this, +// put their traversal specific data in it, and then pass it to a +// traverse method. +// +// When using this, just fill in the methods for nodes you want visited. +// +class TDependencyGraphTraverser { +public: + TDependencyGraphTraverser() : mDepth(0) {} + + virtual void visitSymbol(TGraphSymbol* symbol) {}; + virtual void visitArgument(TGraphArgument* selection) {}; + virtual void visitFunctionCall(TGraphFunctionCall* functionCall) {}; + virtual void visitSelection(TGraphSelection* selection) {}; + virtual void visitLoop(TGraphLoop* loop) {}; + virtual void visitLogicalOp(TGraphLogicalOp* logicalOp) {}; + + int getDepth() const { return mDepth; } + void incrementDepth() { ++mDepth; } + void decrementDepth() { --mDepth; } + + void clearVisited() { mVisited.clear(); } + void markVisited(TGraphNode* node) { mVisited.insert(node); } + bool isVisited(TGraphNode* node) const { return mVisited.find(node) != mVisited.end(); } +private: + int mDepth; + TGraphNodeSet mVisited; +}; + +#endif diff --git a/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.cpp b/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.cpp new file mode 100644 index 00000000000..d586cfd03cf --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.cpp @@ -0,0 +1,227 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/depgraph/DependencyGraphBuilder.h" + +void TDependencyGraphBuilder::build(TIntermNode* node, TDependencyGraph* graph) +{ + TDependencyGraphBuilder builder(graph); + builder.build(node); +} + +bool TDependencyGraphBuilder::visitAggregate(Visit visit, TIntermAggregate* intermAggregate) +{ + switch (intermAggregate->getOp()) { + case EOpFunction: visitFunctionDefinition(intermAggregate); break; + case EOpFunctionCall: visitFunctionCall(intermAggregate); break; + default: visitAggregateChildren(intermAggregate); break; + } + + return false; +} + +void TDependencyGraphBuilder::visitFunctionDefinition(TIntermAggregate* intermAggregate) +{ + // Currently, we do not support user defined functions. + if (intermAggregate->getName() != "main(") + return; + + visitAggregateChildren(intermAggregate); +} + +// Takes an expression like "f(x)" and creates a dependency graph like +// "x -> argument 0 -> function call". +void TDependencyGraphBuilder::visitFunctionCall(TIntermAggregate* intermFunctionCall) +{ + TGraphFunctionCall* functionCall = mGraph->createFunctionCall(intermFunctionCall); + + // Run through the function call arguments. + int argumentNumber = 0; + TIntermSequence& intermArguments = intermFunctionCall->getSequence(); + for (TIntermSequence::const_iterator iter = intermArguments.begin(); + iter != intermArguments.end(); + ++iter, ++argumentNumber) + { + TNodeSetMaintainer nodeSetMaintainer(this); + + TIntermNode* intermArgument = *iter; + intermArgument->traverse(this); + + if (TParentNodeSet* argumentNodes = mNodeSets.getTopSet()) { + TGraphArgument* argument = mGraph->createArgument(intermFunctionCall, argumentNumber); + connectMultipleNodesToSingleNode(argumentNodes, argument); + argument->addDependentNode(functionCall); + } + } + + // Push the leftmost symbol of this function call into the current set of dependent symbols to + // represent the result of this function call. + // Thus, an expression like "y = f(x)" will yield a dependency graph like + // "x -> argument 0 -> function call -> y". + // This line essentially passes the function call node back up to an earlier visitAssignment + // call, which will create the connection "function call -> y". + mNodeSets.insertIntoTopSet(functionCall); +} + +void TDependencyGraphBuilder::visitAggregateChildren(TIntermAggregate* intermAggregate) +{ + TIntermSequence& sequence = intermAggregate->getSequence(); + for(TIntermSequence::const_iterator iter = sequence.begin(); iter != sequence.end(); ++iter) + { + TIntermNode* intermChild = *iter; + intermChild->traverse(this); + } +} + +void TDependencyGraphBuilder::visitSymbol(TIntermSymbol* intermSymbol) +{ + // Push this symbol into the set of dependent symbols for the current assignment or condition + // that we are traversing. + TGraphSymbol* symbol = mGraph->getOrCreateSymbol(intermSymbol); + mNodeSets.insertIntoTopSet(symbol); + + // If this symbol is the current leftmost symbol under an assignment, replace the previous + // leftmost symbol with this symbol. + if (!mLeftmostSymbols.empty() && mLeftmostSymbols.top() != &mRightSubtree) { + mLeftmostSymbols.pop(); + mLeftmostSymbols.push(symbol); + } +} + +bool TDependencyGraphBuilder::visitBinary(Visit visit, TIntermBinary* intermBinary) +{ + TOperator op = intermBinary->getOp(); + if (op == EOpInitialize || intermBinary->modifiesState()) + visitAssignment(intermBinary); + else if (op == EOpLogicalAnd || op == EOpLogicalOr) + visitLogicalOp(intermBinary); + else + visitBinaryChildren(intermBinary); + + return false; +} + +void TDependencyGraphBuilder::visitAssignment(TIntermBinary* intermAssignment) +{ + TIntermTyped* intermLeft = intermAssignment->getLeft(); + if (!intermLeft) + return; + + TGraphSymbol* leftmostSymbol = NULL; + + { + TNodeSetMaintainer nodeSetMaintainer(this); + + { + TLeftmostSymbolMaintainer leftmostSymbolMaintainer(this, mLeftSubtree); + intermLeft->traverse(this); + leftmostSymbol = mLeftmostSymbols.top(); + + // After traversing the left subtree of this assignment, we should have found a real + // leftmost symbol, and the leftmost symbol should not be a placeholder. + ASSERT(leftmostSymbol != &mLeftSubtree); + ASSERT(leftmostSymbol != &mRightSubtree); + } + + if (TIntermTyped* intermRight = intermAssignment->getRight()) { + TLeftmostSymbolMaintainer leftmostSymbolMaintainer(this, mRightSubtree); + intermRight->traverse(this); + } + + if (TParentNodeSet* assignmentNodes = mNodeSets.getTopSet()) + connectMultipleNodesToSingleNode(assignmentNodes, leftmostSymbol); + } + + // Push the leftmost symbol of this assignment into the current set of dependent symbols to + // represent the result of this assignment. + // An expression like "a = (b = c)" will yield a dependency graph like "c -> b -> a". + // This line essentially passes the leftmost symbol of the nested assignment ("b" in this + // example) back up to the earlier visitAssignment call for the outer assignment, which will + // create the connection "b -> a". + mNodeSets.insertIntoTopSet(leftmostSymbol); +} + +void TDependencyGraphBuilder::visitLogicalOp(TIntermBinary* intermLogicalOp) +{ + if (TIntermTyped* intermLeft = intermLogicalOp->getLeft()) { + TNodeSetPropagatingMaintainer nodeSetMaintainer(this); + + intermLeft->traverse(this); + if (TParentNodeSet* leftNodes = mNodeSets.getTopSet()) { + TGraphLogicalOp* logicalOp = mGraph->createLogicalOp(intermLogicalOp); + connectMultipleNodesToSingleNode(leftNodes, logicalOp); + } + } + + if (TIntermTyped* intermRight = intermLogicalOp->getRight()) { + TLeftmostSymbolMaintainer leftmostSymbolMaintainer(this, mRightSubtree); + intermRight->traverse(this); + } +} + +void TDependencyGraphBuilder::visitBinaryChildren(TIntermBinary* intermBinary) +{ + if (TIntermTyped* intermLeft = intermBinary->getLeft()) + intermLeft->traverse(this); + + if (TIntermTyped* intermRight = intermBinary->getRight()) { + TLeftmostSymbolMaintainer leftmostSymbolMaintainer(this, mRightSubtree); + intermRight->traverse(this); + } +} + +bool TDependencyGraphBuilder::visitSelection(Visit visit, TIntermSelection* intermSelection) +{ + if (TIntermNode* intermCondition = intermSelection->getCondition()) { + TNodeSetMaintainer nodeSetMaintainer(this); + + intermCondition->traverse(this); + if (TParentNodeSet* conditionNodes = mNodeSets.getTopSet()) { + TGraphSelection* selection = mGraph->createSelection(intermSelection); + connectMultipleNodesToSingleNode(conditionNodes, selection); + } + } + + if (TIntermNode* intermTrueBlock = intermSelection->getTrueBlock()) + intermTrueBlock->traverse(this); + + if (TIntermNode* intermFalseBlock = intermSelection->getFalseBlock()) + intermFalseBlock->traverse(this); + + return false; +} + +bool TDependencyGraphBuilder::visitLoop(Visit visit, TIntermLoop* intermLoop) +{ + if (TIntermTyped* intermCondition = intermLoop->getCondition()) { + TNodeSetMaintainer nodeSetMaintainer(this); + + intermCondition->traverse(this); + if (TParentNodeSet* conditionNodes = mNodeSets.getTopSet()) { + TGraphLoop* loop = mGraph->createLoop(intermLoop); + connectMultipleNodesToSingleNode(conditionNodes, loop); + } + } + + if (TIntermNode* intermBody = intermLoop->getBody()) + intermBody->traverse(this); + + if (TIntermTyped* intermExpression = intermLoop->getExpression()) + intermExpression->traverse(this); + + return false; +} + + +void TDependencyGraphBuilder::connectMultipleNodesToSingleNode(TParentNodeSet* nodes, + TGraphNode* node) const +{ + for (TParentNodeSet::const_iterator iter = nodes->begin(); iter != nodes->end(); ++iter) + { + TGraphParentNode* currentNode = *iter; + currentNode->addDependentNode(node); + } +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.h b/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.h new file mode 100644 index 00000000000..c5f232cb21e --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.h @@ -0,0 +1,181 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_DEPGRAPH_DEPENDENCY_GRAPH_BUILDER_H +#define COMPILER_DEPGRAPH_DEPENDENCY_GRAPH_BUILDER_H + +#include "compiler/depgraph/DependencyGraph.h" + +// +// Creates a dependency graph of symbols, function calls, conditions etc. by traversing a +// intermediate tree. +// +class TDependencyGraphBuilder : public TIntermTraverser { +public: + static void build(TIntermNode* node, TDependencyGraph* graph); + + virtual void visitSymbol(TIntermSymbol*); + virtual bool visitBinary(Visit visit, TIntermBinary*); + virtual bool visitSelection(Visit visit, TIntermSelection*); + virtual bool visitAggregate(Visit visit, TIntermAggregate*); + virtual bool visitLoop(Visit visit, TIntermLoop*); + +private: + typedef std::stack TSymbolStack; + typedef std::set TParentNodeSet; + + // + // For collecting the dependent nodes of assignments, conditions, etc. + // while traversing the intermediate tree. + // + // This data structure is stack of sets. Each set contains dependency graph parent nodes. + // + class TNodeSetStack { + public: + TNodeSetStack() {}; + ~TNodeSetStack() { clear(); } + + // This should only be called after a pushSet. + // Returns NULL if the top set is empty. + TParentNodeSet* getTopSet() const + { + ASSERT(!nodeSets.empty()); + TParentNodeSet* topSet = nodeSets.top(); + return !topSet->empty() ? topSet : NULL; + } + + void pushSet() { nodeSets.push(new TParentNodeSet()); } + void popSet() + { + ASSERT(!nodeSets.empty()); + delete nodeSets.top(); + nodeSets.pop(); + } + + // Pops the top set and adds its contents to the new top set. + // This should only be called after a pushSet. + // If there is no set below the top set, the top set is just deleted. + void popSetIntoNext() + { + ASSERT(!nodeSets.empty()); + TParentNodeSet* oldTopSet = nodeSets.top(); + nodeSets.pop(); + + if (!nodeSets.empty()) { + TParentNodeSet* newTopSet = nodeSets.top(); + newTopSet->insert(oldTopSet->begin(), oldTopSet->end()); + } + + delete oldTopSet; + } + + // Does nothing if there is no top set. + // This can be called when there is no top set if we are visiting + // symbols that are not under an assignment or condition. + // We don't need to track those symbols. + void insertIntoTopSet(TGraphParentNode* node) + { + if (nodeSets.empty()) + return; + + nodeSets.top()->insert(node); + } + + void clear() + { + while (!nodeSets.empty()) + popSet(); + } + + private: + typedef std::stack TParentNodeSetStack; + + TParentNodeSetStack nodeSets; + }; + + // + // An instance of this class pushes a new node set when instantiated. + // When the instance goes out of scope, it and pops the node set. + // + class TNodeSetMaintainer { + public: + TNodeSetMaintainer(TDependencyGraphBuilder* factory) + : sets(factory->mNodeSets) { sets.pushSet(); } + ~TNodeSetMaintainer() { sets.popSet(); } + protected: + TNodeSetStack& sets; + }; + + // + // An instance of this class pushes a new node set when instantiated. + // When the instance goes out of scope, it and pops the top node set and adds its contents to + // the new top node set. + // + class TNodeSetPropagatingMaintainer { + public: + TNodeSetPropagatingMaintainer(TDependencyGraphBuilder* factory) + : sets(factory->mNodeSets) { sets.pushSet(); } + ~TNodeSetPropagatingMaintainer() { sets.popSetIntoNext(); } + protected: + TNodeSetStack& sets; + }; + + // + // An instance of this class keeps track of the leftmost symbol while we're exploring an + // assignment. + // It will push the placeholder symbol kLeftSubtree when instantiated under a left subtree, + // and kRightSubtree under a right subtree. + // When it goes out of scope, it will pop the leftmost symbol at the top of the scope. + // During traversal, the TDependencyGraphBuilder will replace kLeftSubtree with a real symbol. + // kRightSubtree will never be replaced by a real symbol because we are tracking the leftmost + // symbol. + // + class TLeftmostSymbolMaintainer { + public: + TLeftmostSymbolMaintainer(TDependencyGraphBuilder* factory, TGraphSymbol& subtree) + : leftmostSymbols(factory->mLeftmostSymbols) + { + needsPlaceholderSymbol = leftmostSymbols.empty() || leftmostSymbols.top() != &subtree; + if (needsPlaceholderSymbol) + leftmostSymbols.push(&subtree); + } + + ~TLeftmostSymbolMaintainer() + { + if (needsPlaceholderSymbol) + leftmostSymbols.pop(); + } + + protected: + TSymbolStack& leftmostSymbols; + bool needsPlaceholderSymbol; + }; + + TDependencyGraphBuilder(TDependencyGraph* graph) + : TIntermTraverser(true, false, false) + , mLeftSubtree(NULL) + , mRightSubtree(NULL) + , mGraph(graph) {} + void build(TIntermNode* intermNode) { intermNode->traverse(this); } + + void connectMultipleNodesToSingleNode(TParentNodeSet* nodes, TGraphNode* node) const; + + void visitAssignment(TIntermBinary*); + void visitLogicalOp(TIntermBinary*); + void visitBinaryChildren(TIntermBinary*); + void visitFunctionDefinition(TIntermAggregate*); + void visitFunctionCall(TIntermAggregate* intermFunctionCall); + void visitAggregateChildren(TIntermAggregate*); + + TGraphSymbol mLeftSubtree; + TGraphSymbol mRightSubtree; + + TDependencyGraph* mGraph; + TNodeSetStack mNodeSets; + TSymbolStack mLeftmostSymbols; +}; + +#endif // COMPILER_DEPGRAPH_DEPENDENCY_GRAPH_BUILDER_H diff --git a/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphOutput.cpp b/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphOutput.cpp new file mode 100644 index 00000000000..6fc489e7b6f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphOutput.cpp @@ -0,0 +1,65 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/depgraph/DependencyGraphOutput.h" + +void TDependencyGraphOutput::outputIndentation() +{ + for (int i = 0; i < getDepth(); ++i) + mSink << " "; +} + +void TDependencyGraphOutput::visitArgument(TGraphArgument* parameter) +{ + outputIndentation(); + mSink << "argument " << parameter->getArgumentNumber() << " of call to " + << parameter->getIntermFunctionCall()->getName() << "\n"; +} + +void TDependencyGraphOutput::visitFunctionCall(TGraphFunctionCall* functionCall) +{ + outputIndentation(); + mSink << "function call " << functionCall->getIntermFunctionCall()->getName() << "\n"; +} + +void TDependencyGraphOutput::visitSymbol(TGraphSymbol* symbol) +{ + outputIndentation(); + mSink << symbol->getIntermSymbol()->getSymbol() << " (symbol id: " + << symbol->getIntermSymbol()->getId() << ")\n"; +} + +void TDependencyGraphOutput::visitSelection(TGraphSelection* selection) +{ + outputIndentation(); + mSink << "selection\n"; +} + +void TDependencyGraphOutput::visitLoop(TGraphLoop* loop) +{ + outputIndentation(); + mSink << "loop condition\n"; +} + +void TDependencyGraphOutput::visitLogicalOp(TGraphLogicalOp* logicalOp) +{ + outputIndentation(); + mSink << "logical " << logicalOp->getOpString() << "\n"; +} + +void TDependencyGraphOutput::outputAllSpanningTrees(TDependencyGraph& graph) +{ + mSink << "\n"; + + for (TGraphNodeVector::const_iterator iter = graph.begin(); iter != graph.end(); ++iter) + { + TGraphNode* symbol = *iter; + mSink << "--- Dependency graph spanning tree ---\n"; + clearVisited(); + symbol->traverse(this); + mSink << "\n"; + } +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphOutput.h b/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphOutput.h new file mode 100644 index 00000000000..01447da987d --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphOutput.h @@ -0,0 +1,30 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_DEPGRAPH_DEPENDENCY_GRAPH_OUTPUT_H +#define COMPILER_DEPGRAPH_DEPENDENCY_GRAPH_OUTPUT_H + +#include "compiler/depgraph/DependencyGraph.h" +#include "compiler/InfoSink.h" + +class TDependencyGraphOutput : public TDependencyGraphTraverser { +public: + TDependencyGraphOutput(TInfoSinkBase& sink) : mSink(sink) {} + virtual void visitSymbol(TGraphSymbol* symbol); + virtual void visitArgument(TGraphArgument* parameter); + virtual void visitFunctionCall(TGraphFunctionCall* functionCall); + virtual void visitSelection(TGraphSelection* selection); + virtual void visitLoop(TGraphLoop* loop); + virtual void visitLogicalOp(TGraphLogicalOp* logicalOp); + + void outputAllSpanningTrees(TDependencyGraph& graph); +private: + void outputIndentation(); + + TInfoSinkBase& mSink; +}; + +#endif // COMPILER_DEPGRAPH_DEPENDENCY_GRAPH_OUTPUT_H diff --git a/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphTraverse.cpp b/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphTraverse.cpp new file mode 100644 index 00000000000..b158575cec3 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphTraverse.cpp @@ -0,0 +1,69 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/depgraph/DependencyGraph.h" + +// These methods do a breadth-first traversal through the graph and mark visited nodes. + +void TGraphNode::traverse(TDependencyGraphTraverser* graphTraverser) +{ + graphTraverser->markVisited(this); +} + +void TGraphParentNode::traverse(TDependencyGraphTraverser* graphTraverser) +{ + TGraphNode::traverse(graphTraverser); + + graphTraverser->incrementDepth(); + + // Visit the parent node's children. + for (TGraphNodeSet::const_iterator iter = mDependentNodes.begin(); + iter != mDependentNodes.end(); + ++iter) + { + TGraphNode* node = *iter; + if (!graphTraverser->isVisited(node)) + node->traverse(graphTraverser); + } + + graphTraverser->decrementDepth(); +} + +void TGraphArgument::traverse(TDependencyGraphTraverser* graphTraverser) +{ + graphTraverser->visitArgument(this); + TGraphParentNode::traverse(graphTraverser); +} + +void TGraphFunctionCall::traverse(TDependencyGraphTraverser* graphTraverser) +{ + graphTraverser->visitFunctionCall(this); + TGraphParentNode::traverse(graphTraverser); +} + +void TGraphSymbol::traverse(TDependencyGraphTraverser* graphTraverser) +{ + graphTraverser->visitSymbol(this); + TGraphParentNode::traverse(graphTraverser); +} + +void TGraphSelection::traverse(TDependencyGraphTraverser* graphTraverser) +{ + graphTraverser->visitSelection(this); + TGraphNode::traverse(graphTraverser); +} + +void TGraphLoop::traverse(TDependencyGraphTraverser* graphTraverser) +{ + graphTraverser->visitLoop(this); + TGraphNode::traverse(graphTraverser); +} + +void TGraphLogicalOp::traverse(TDependencyGraphTraverser* graphTraverser) +{ + graphTraverser->visitLogicalOp(this); + TGraphNode::traverse(graphTraverser); +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/generate_parser.sh b/Source/ThirdParty/ANGLE/src/compiler/generate_parser.sh new file mode 100755 index 00000000000..e4721915e3c --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/generate_parser.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Copyright (c) 2010 The ANGLE Project Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Generates GLSL ES parser - glslang_lex.cpp, glslang_tab.h, and glslang_tab.cpp + +run_flex() +{ +input_file=$script_dir/$1.l +output_source=$script_dir/$1_lex.cpp +flex --noline --nounistd --outfile=$output_source $input_file +} + +run_bison() +{ +input_file=$script_dir/$1.y +output_header=$script_dir/$1_tab.h +output_source=$script_dir/$1_tab.cpp +bison --no-lines --skeleton=yacc.c --defines=$output_header --output=$output_source $input_file +} + +script_dir=$(dirname $0) + +# Generate Parser +run_flex glslang +run_bison glslang diff --git a/Source/ThirdParty/ANGLE/src/compiler/glslang.h b/Source/ThirdParty/ANGLE/src/compiler/glslang.h new file mode 100644 index 00000000000..f221199093c --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/glslang.h @@ -0,0 +1,16 @@ +// +// Copyright (c) 2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +struct TParseContext; +extern int glslang_initialize(TParseContext* context); +extern int glslang_finalize(TParseContext* context); + +extern int glslang_scan(size_t count, + const char* const string[], + const int length[], + TParseContext* context); +extern int glslang_parse(TParseContext* context); + diff --git a/Source/ThirdParty/ANGLE/src/compiler/glslang.l b/Source/ThirdParty/ANGLE/src/compiler/glslang.l new file mode 100644 index 00000000000..404987508f1 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/glslang.l @@ -0,0 +1,331 @@ +/* +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +This file contains the Lex specification for GLSL ES. +Based on ANSI C grammar, Lex specification: +http://www.lysator.liu.se/c/ANSI-C-grammar-l.html + +IF YOU MODIFY THIS FILE YOU ALSO NEED TO RUN generate_parser.sh, +WHICH GENERATES THE GLSL ES LEXER (glslang_lex.cpp). +*/ + +%top{ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// This file is auto-generated by generate_parser.sh. DO NOT EDIT! + +// Ignore errors in auto-generated code. +#if defined(__GNUC__) +#pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic ignored "-Wunused-variable" +#pragma GCC diagnostic ignored "-Wswitch-enum" +#elif defined(_MSC_VER) +#pragma warning(disable: 4065) +#pragma warning(disable: 4189) +#pragma warning(disable: 4505) +#pragma warning(disable: 4701) +#endif +} + +%{ +#include "compiler/glslang.h" +#include "compiler/ParseHelper.h" +#include "compiler/preprocessor/Token.h" +#include "compiler/util.h" +#include "glslang_tab.h" + +/* windows only pragma */ +#ifdef _MSC_VER +#pragma warning(disable : 4102) +#endif + +#define YY_USER_ACTION \ + yylloc->first_file = yylloc->last_file = yycolumn; \ + yylloc->first_line = yylloc->last_line = yylineno; + +#define YY_INPUT(buf, result, max_size) \ + result = string_input(buf, max_size, yyscanner); + +static yy_size_t string_input(char* buf, yy_size_t max_size, yyscan_t yyscanner); +static int check_type(yyscan_t yyscanner); +static int reserved_word(yyscan_t yyscanner); +%} + +%option noyywrap nounput never-interactive +%option yylineno reentrant bison-bridge bison-locations +%option extra-type="TParseContext*" + +D [0-9] +L [a-zA-Z_] +H [a-fA-F0-9] +E [Ee][+-]?{D}+ +O [0-7] + +%% + +"invariant" { return INVARIANT; } +"highp" { return HIGH_PRECISION; } +"mediump" { return MEDIUM_PRECISION; } +"lowp" { return LOW_PRECISION; } +"precision" { return PRECISION; } + +"attribute" { return ATTRIBUTE; } +"const" { return CONST_QUAL; } +"uniform" { return UNIFORM; } +"varying" { return VARYING; } + +"break" { return BREAK; } +"continue" { return CONTINUE; } +"do" { return DO; } +"for" { return FOR; } +"while" { return WHILE; } + +"if" { return IF; } +"else" { return ELSE; } + +"in" { return IN_QUAL; } +"out" { return OUT_QUAL; } +"inout" { return INOUT_QUAL; } + +"float" { return FLOAT_TYPE; } +"int" { return INT_TYPE; } +"void" { return VOID_TYPE; } +"bool" { return BOOL_TYPE; } +"true" { yylval->lex.b = true; return BOOLCONSTANT; } +"false" { yylval->lex.b = false; return BOOLCONSTANT; } + +"discard" { return DISCARD; } +"return" { return RETURN; } + +"mat2" { return MATRIX2; } +"mat3" { return MATRIX3; } +"mat4" { return MATRIX4; } + +"vec2" { return VEC2; } +"vec3" { return VEC3; } +"vec4" { return VEC4; } +"ivec2" { return IVEC2; } +"ivec3" { return IVEC3; } +"ivec4" { return IVEC4; } +"bvec2" { return BVEC2; } +"bvec3" { return BVEC3; } +"bvec4" { return BVEC4; } + +"sampler2D" { return SAMPLER2D; } +"samplerCube" { return SAMPLERCUBE; } +"samplerExternalOES" { return SAMPLER_EXTERNAL_OES; } +"sampler2DRect" { return SAMPLER2DRECT; } + +"struct" { return STRUCT; } + +"asm" { return reserved_word(yyscanner); } + +"class" { return reserved_word(yyscanner); } +"union" { return reserved_word(yyscanner); } +"enum" { return reserved_word(yyscanner); } +"typedef" { return reserved_word(yyscanner); } +"template" { return reserved_word(yyscanner); } +"this" { return reserved_word(yyscanner); } +"packed" { return reserved_word(yyscanner); } + +"goto" { return reserved_word(yyscanner); } +"switch" { return reserved_word(yyscanner); } +"default" { return reserved_word(yyscanner); } + +"inline" { return reserved_word(yyscanner); } +"noinline" { return reserved_word(yyscanner); } +"volatile" { return reserved_word(yyscanner); } +"public" { return reserved_word(yyscanner); } +"static" { return reserved_word(yyscanner); } +"extern" { return reserved_word(yyscanner); } +"external" { return reserved_word(yyscanner); } +"interface" { return reserved_word(yyscanner); } +"flat" { return reserved_word(yyscanner); } + +"long" { return reserved_word(yyscanner); } +"short" { return reserved_word(yyscanner); } +"double" { return reserved_word(yyscanner); } +"half" { return reserved_word(yyscanner); } +"fixed" { return reserved_word(yyscanner); } +"unsigned" { return reserved_word(yyscanner); } +"superp" { return reserved_word(yyscanner); } + +"input" { return reserved_word(yyscanner); } +"output" { return reserved_word(yyscanner); } + +"hvec2" { return reserved_word(yyscanner); } +"hvec3" { return reserved_word(yyscanner); } +"hvec4" { return reserved_word(yyscanner); } +"dvec2" { return reserved_word(yyscanner); } +"dvec3" { return reserved_word(yyscanner); } +"dvec4" { return reserved_word(yyscanner); } +"fvec2" { return reserved_word(yyscanner); } +"fvec3" { return reserved_word(yyscanner); } +"fvec4" { return reserved_word(yyscanner); } + +"sampler1D" { return reserved_word(yyscanner); } +"sampler3D" { return reserved_word(yyscanner); } +"sampler1DShadow" { return reserved_word(yyscanner); } +"sampler2DShadow" { return reserved_word(yyscanner); } +"sampler3DRect" { return reserved_word(yyscanner); } +"sampler2DRectShadow" { return reserved_word(yyscanner); } + +"sizeof" { return reserved_word(yyscanner); } +"cast" { return reserved_word(yyscanner); } + +"namespace" { return reserved_word(yyscanner); } +"using" { return reserved_word(yyscanner); } + +{L}({L}|{D})* { + yylval->lex.string = NewPoolTString(yytext); + return check_type(yyscanner); +} + +0[xX]{H}+ { yylval->lex.i = static_cast(strtol(yytext, 0, 0)); return INTCONSTANT; } +0{O}+ { yylval->lex.i = static_cast(strtol(yytext, 0, 0)); return INTCONSTANT; } +{D}+ { yylval->lex.i = static_cast(strtol(yytext, 0, 0)); return INTCONSTANT; } + +{D}+{E} { yylval->lex.f = static_cast(atof_dot(yytext)); return FLOATCONSTANT; } +{D}+"."{D}*({E})? { yylval->lex.f = static_cast(atof_dot(yytext)); return FLOATCONSTANT; } +"."{D}+({E})? { yylval->lex.f = static_cast(atof_dot(yytext)); return FLOATCONSTANT; } + +"+=" { return ADD_ASSIGN; } +"-=" { return SUB_ASSIGN; } +"*=" { return MUL_ASSIGN; } +"/=" { return DIV_ASSIGN; } +"%=" { return MOD_ASSIGN; } +"<<=" { return LEFT_ASSIGN; } +">>=" { return RIGHT_ASSIGN; } +"&=" { return AND_ASSIGN; } +"^=" { return XOR_ASSIGN; } +"|=" { return OR_ASSIGN; } + +"++" { return INC_OP; } +"--" { return DEC_OP; } +"&&" { return AND_OP; } +"||" { return OR_OP; } +"^^" { return XOR_OP; } +"<=" { return LE_OP; } +">=" { return GE_OP; } +"==" { return EQ_OP; } +"!=" { return NE_OP; } +"<<" { return LEFT_OP; } +">>" { return RIGHT_OP; } +";" { return SEMICOLON; } +("{"|"<%") { return LEFT_BRACE; } +("}"|"%>") { return RIGHT_BRACE; } +"," { return COMMA; } +":" { return COLON; } +"=" { return EQUAL; } +"(" { return LEFT_PAREN; } +")" { return RIGHT_PAREN; } +("["|"<:") { return LEFT_BRACKET; } +("]"|":>") { return RIGHT_BRACKET; } +"." { return DOT; } +"!" { return BANG; } +"-" { return DASH; } +"~" { return TILDE; } +"+" { return PLUS; } +"*" { return STAR; } +"/" { return SLASH; } +"%" { return PERCENT; } +"<" { return LEFT_ANGLE; } +">" { return RIGHT_ANGLE; } +"|" { return VERTICAL_BAR; } +"^" { return CARET; } +"&" { return AMPERSAND; } +"?" { return QUESTION; } + +[ \t\v\n\f\r] { } +<> { yyterminate(); } +. { assert(false); return 0; } + +%% + +yy_size_t string_input(char* buf, yy_size_t max_size, yyscan_t yyscanner) { + pp::Token token; + yyget_extra(yyscanner)->preprocessor.lex(&token); + yy_size_t len = token.type == pp::Token::LAST ? 0 : token.text.size(); + if (len < max_size) + memcpy(buf, token.text.c_str(), len); + yyset_column(token.location.file, yyscanner); + yyset_lineno(token.location.line, yyscanner); + + if (len >= max_size) + YY_FATAL_ERROR("Input buffer overflow"); + else if (len > 0) + buf[len++] = ' '; + return len; +} + +int check_type(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*) yyscanner; + + int token = IDENTIFIER; + TSymbol* symbol = yyextra->symbolTable.find(yytext); + if (symbol && symbol->isVariable()) { + TVariable* variable = static_cast(symbol); + if (variable->isUserType()) + token = TYPE_NAME; + } + yylval->lex.symbol = symbol; + return token; +} + +int reserved_word(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*) yyscanner; + + yyextra->error(*yylloc, "Illegal use of reserved word", yytext, ""); + yyextra->recover(); + return 0; +} + +int glslang_initialize(TParseContext* context) { + yyscan_t scanner = NULL; + if (yylex_init_extra(context, &scanner)) + return 1; + + context->scanner = scanner; + return 0; +} + +int glslang_finalize(TParseContext* context) { + yyscan_t scanner = context->scanner; + if (scanner == NULL) return 0; + + context->scanner = NULL; + yylex_destroy(scanner); + + return 0; +} + +int glslang_scan(size_t count, const char* const string[], const int length[], + TParseContext* context) { + yyrestart(NULL, context->scanner); + yyset_column(0, context->scanner); + yyset_lineno(1, context->scanner); + + // Initialize preprocessor. + if (!context->preprocessor.init(count, string, length)) + return 1; + + // Define extension macros. + const TExtensionBehavior& extBehavior = context->extensionBehavior(); + for (TExtensionBehavior::const_iterator iter = extBehavior.begin(); + iter != extBehavior.end(); ++iter) { + context->preprocessor.predefineMacro(iter->first.c_str(), 1); + } + if (context->fragmentPrecisionHigh) + context->preprocessor.predefineMacro("GL_FRAGMENT_PRECISION_HIGH", 1); + + return 0; +} + diff --git a/Source/ThirdParty/ANGLE/src/compiler/glslang.y b/Source/ThirdParty/ANGLE/src/compiler/glslang.y new file mode 100644 index 00000000000..4f894b382ac --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/glslang.y @@ -0,0 +1,2012 @@ +/* +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +This file contains the Yacc grammar for GLSL ES. +Based on ANSI C Yacc grammar: +http://www.lysator.liu.se/c/ANSI-C-grammar-y.html + +IF YOU MODIFY THIS FILE YOU ALSO NEED TO RUN generate_parser.sh, +WHICH GENERATES THE GLSL ES PARSER (glslang_tab.cpp AND glslang_tab.h). +*/ + +%{ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// This file is auto-generated by generate_parser.sh. DO NOT EDIT! + +// Ignore errors in auto-generated code. +#if defined(__GNUC__) +#pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic ignored "-Wunused-variable" +#pragma GCC diagnostic ignored "-Wswitch-enum" +#elif defined(_MSC_VER) +#pragma warning(disable: 4065) +#pragma warning(disable: 4189) +#pragma warning(disable: 4505) +#pragma warning(disable: 4701) +#endif + +#include "compiler/SymbolTable.h" +#include "compiler/ParseHelper.h" +#include "GLSLANG/ShaderLang.h" + +#define YYENABLE_NLS 0 + +#define YYLEX_PARAM context->scanner +%} + +%expect 1 /* One shift reduce conflict because of if | else */ +%pure-parser +%parse-param {TParseContext* context} +%locations +%lex-param {YYLEX_PARAM} + +%union { +#define YYLTYPE TSourceLoc +#define YYLTYPE_IS_DECLARED 1 + struct { + union { + TString *string; + float f; + int i; + bool b; + }; + TSymbol* symbol; + } lex; + struct { + TOperator op; + union { + TIntermNode* intermNode; + TIntermNodePair nodePair; + TIntermTyped* intermTypedNode; + TIntermAggregate* intermAggregate; + }; + union { + TPublicType type; + TPrecision precision; + TQualifier qualifier; + TFunction* function; + TParameter param; + TField* field; + TFieldList* fieldList; + }; + } interm; +} + +%{ +extern int yylex(YYSTYPE* yylval, YYLTYPE* yylloc, void* yyscanner); +static void yyerror(YYLTYPE* yylloc, TParseContext* context, const char* reason); + +#define YYLLOC_DEFAULT(Current, Rhs, N) \ + do { \ + if (N) { \ + (Current).first_file = YYRHSLOC(Rhs, 1).first_file; \ + (Current).first_line = YYRHSLOC(Rhs, 1).first_line; \ + (Current).last_file = YYRHSLOC(Rhs, N).last_file; \ + (Current).last_line = YYRHSLOC(Rhs, N).last_line; \ + } \ + else { \ + (Current).first_file = YYRHSLOC(Rhs, 0).last_file; \ + (Current).first_line = YYRHSLOC(Rhs, 0).last_line; \ + (Current).last_file = YYRHSLOC(Rhs, 0).last_file; \ + (Current).last_line = YYRHSLOC(Rhs, 0).last_line; \ + } \ + } while (0) + +#define VERTEX_ONLY(S, L) { \ + if (context->shaderType != SH_VERTEX_SHADER) { \ + context->error(L, " supported in vertex shaders only ", S); \ + context->recover(); \ + } \ +} + +#define FRAG_ONLY(S, L) { \ + if (context->shaderType != SH_FRAGMENT_SHADER) { \ + context->error(L, " supported in fragment shaders only ", S); \ + context->recover(); \ + } \ +} +%} + +%token INVARIANT HIGH_PRECISION MEDIUM_PRECISION LOW_PRECISION PRECISION +%token ATTRIBUTE CONST_QUAL BOOL_TYPE FLOAT_TYPE INT_TYPE +%token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN +%token BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 VEC2 VEC3 VEC4 +%token MATRIX2 MATRIX3 MATRIX4 IN_QUAL OUT_QUAL INOUT_QUAL UNIFORM VARYING +%token STRUCT VOID_TYPE WHILE +%token SAMPLER2D SAMPLERCUBE SAMPLER_EXTERNAL_OES SAMPLER2DRECT + +%token IDENTIFIER TYPE_NAME FLOATCONSTANT INTCONSTANT BOOLCONSTANT +%token LEFT_OP RIGHT_OP +%token INC_OP DEC_OP LE_OP GE_OP EQ_OP NE_OP +%token AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN +%token MOD_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN XOR_ASSIGN OR_ASSIGN +%token SUB_ASSIGN + +%token LEFT_PAREN RIGHT_PAREN LEFT_BRACKET RIGHT_BRACKET LEFT_BRACE RIGHT_BRACE DOT +%token COMMA COLON EQUAL SEMICOLON BANG DASH TILDE PLUS STAR SLASH PERCENT +%token LEFT_ANGLE RIGHT_ANGLE VERTICAL_BAR CARET AMPERSAND QUESTION + +%type identifier +%type assignment_operator unary_operator +%type variable_identifier primary_expression postfix_expression +%type expression integer_expression assignment_expression +%type unary_expression multiplicative_expression additive_expression +%type relational_expression equality_expression +%type conditional_expression constant_expression +%type logical_or_expression logical_xor_expression logical_and_expression +%type shift_expression and_expression exclusive_or_expression inclusive_or_expression +%type function_call initializer condition conditionopt + +%type translation_unit function_definition +%type statement simple_statement +%type statement_list compound_statement +%type declaration_statement selection_statement expression_statement +%type declaration external_declaration +%type for_init_statement compound_statement_no_new_scope +%type selection_rest_statement for_rest_statement +%type iteration_statement jump_statement statement_no_new_scope statement_with_scope +%type single_declaration init_declarator_list + +%type parameter_declaration parameter_declarator parameter_type_specifier +%type parameter_qualifier + +%type precision_qualifier +%type type_qualifier fully_specified_type type_specifier +%type type_specifier_no_prec type_specifier_nonarray +%type struct_specifier +%type struct_declarator +%type struct_declarator_list struct_declaration struct_declaration_list +%type function_header function_declarator function_identifier +%type function_header_with_parameters function_call_header +%type function_call_header_with_parameters function_call_header_no_parameters function_call_generic function_prototype +%type function_call_or_method + +%start translation_unit +%% + +identifier + : IDENTIFIER + | TYPE_NAME + +variable_identifier + : IDENTIFIER { + // The symbol table search was done in the lexical phase + const TSymbol* symbol = $1.symbol; + const TVariable* variable; + if (symbol == 0) { + context->error(@1, "undeclared identifier", $1.string->c_str()); + context->recover(); + TType type(EbtFloat, EbpUndefined); + TVariable* fakeVariable = new TVariable($1.string, type); + context->symbolTable.insert(*fakeVariable); + variable = fakeVariable; + } else { + // This identifier can only be a variable type symbol + if (! symbol->isVariable()) { + context->error(@1, "variable expected", $1.string->c_str()); + context->recover(); + } + + variable = static_cast(symbol); + + if (context->symbolTable.findBuiltIn(variable->getName()) && + !variable->getExtension().empty() && + context->extensionErrorCheck(@1, variable->getExtension())) { + context->recover(); + } + } + + // don't delete $1.string, it's used by error recovery, and the pool + // pop will reclaim the memory + + if (variable->getType().getQualifier() == EvqConst ) { + ConstantUnion* constArray = variable->getConstPointer(); + TType t(variable->getType()); + $$ = context->intermediate.addConstantUnion(constArray, t, @1); + } else + $$ = context->intermediate.addSymbol(variable->getUniqueId(), + variable->getName(), + variable->getType(), + @1); + } + ; + +primary_expression + : variable_identifier { + $$ = $1; + } + | INTCONSTANT { + // + // INT_TYPE is only 16-bit plus sign bit for vertex/fragment shaders, + // check for overflow for constants + // + if (abs($1.i) >= (1 << 16)) { + context->error(@1, " integer constant overflow", ""); + context->recover(); + } + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setIConst($1.i); + $$ = context->intermediate.addConstantUnion(unionArray, TType(EbtInt, EbpUndefined, EvqConst), @1); + } + | FLOATCONSTANT { + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setFConst($1.f); + $$ = context->intermediate.addConstantUnion(unionArray, TType(EbtFloat, EbpUndefined, EvqConst), @1); + } + | BOOLCONSTANT { + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst($1.b); + $$ = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), @1); + } + | LEFT_PAREN expression RIGHT_PAREN { + $$ = $2; + } + ; + +postfix_expression + : primary_expression { + $$ = $1; + } + | postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET { + $$ = context->addIndexExpression($1, @2, $3); + } + | function_call { + $$ = $1; + } + | postfix_expression DOT identifier { + if ($1->isArray()) { + context->error(@3, "cannot apply dot operator to an array", "."); + context->recover(); + } + + if ($1->isVector()) { + TVectorFields fields; + if (! context->parseVectorFields(*$3.string, $1->getNominalSize(), fields, @3)) { + fields.num = 1; + fields.offsets[0] = 0; + context->recover(); + } + + if ($1->getType().getQualifier() == EvqConst) { // constant folding for vector fields + $$ = context->addConstVectorNode(fields, $1, @3); + if ($$ == 0) { + context->recover(); + $$ = $1; + } + else + $$->setType(TType($1->getBasicType(), $1->getPrecision(), EvqConst, (int) (*$3.string).size())); + } else { + TString vectorString = *$3.string; + TIntermTyped* index = context->intermediate.addSwizzle(fields, @3); + $$ = context->intermediate.addIndex(EOpVectorSwizzle, $1, index, @2); + $$->setType(TType($1->getBasicType(), $1->getPrecision(), EvqTemporary, (int) vectorString.size())); + } + } else if ($1->isMatrix()) { + TMatrixFields fields; + if (! context->parseMatrixFields(*$3.string, $1->getNominalSize(), fields, @3)) { + fields.wholeRow = false; + fields.wholeCol = false; + fields.row = 0; + fields.col = 0; + context->recover(); + } + + if (fields.wholeRow || fields.wholeCol) { + context->error(@2, " non-scalar fields not implemented yet", "."); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setIConst(0); + TIntermTyped* index = context->intermediate.addConstantUnion(unionArray, TType(EbtInt, EbpUndefined, EvqConst), @3); + $$ = context->intermediate.addIndex(EOpIndexDirect, $1, index, @2); + $$->setType(TType($1->getBasicType(), $1->getPrecision(),EvqTemporary, $1->getNominalSize())); + } else { + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setIConst(fields.col * $1->getNominalSize() + fields.row); + TIntermTyped* index = context->intermediate.addConstantUnion(unionArray, TType(EbtInt, EbpUndefined, EvqConst), @3); + $$ = context->intermediate.addIndex(EOpIndexDirect, $1, index, @2); + $$->setType(TType($1->getBasicType(), $1->getPrecision())); + } + } else if ($1->getBasicType() == EbtStruct) { + bool fieldFound = false; + const TFieldList& fields = $1->getType().getStruct()->fields(); + unsigned int i; + for (i = 0; i < fields.size(); ++i) { + if (fields[i]->name() == *$3.string) { + fieldFound = true; + break; + } + } + if (fieldFound) { + if ($1->getType().getQualifier() == EvqConst) { + $$ = context->addConstStruct(*$3.string, $1, @2); + if ($$ == 0) { + context->recover(); + $$ = $1; + } + else { + $$->setType(*fields[i]->type()); + // change the qualifier of the return type, not of the structure field + // as the structure definition is shared between various structures. + $$->getTypePointer()->setQualifier(EvqConst); + } + } else { + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setIConst(i); + TIntermTyped* index = context->intermediate.addConstantUnion(unionArray, *fields[i]->type(), @3); + $$ = context->intermediate.addIndex(EOpIndexDirectStruct, $1, index, @2); + $$->setType(*fields[i]->type()); + } + } else { + context->error(@2, " no such field in structure", $3.string->c_str()); + context->recover(); + $$ = $1; + } + } else { + context->error(@2, " field selection requires structure, vector, or matrix on left hand side", $3.string->c_str()); + context->recover(); + $$ = $1; + } + // don't delete $3.string, it's from the pool + } + | postfix_expression INC_OP { + if (context->lValueErrorCheck(@2, "++", $1)) + context->recover(); + $$ = context->intermediate.addUnaryMath(EOpPostIncrement, $1, @2, context->symbolTable); + if ($$ == 0) { + context->unaryOpError(@2, "++", $1->getCompleteString()); + context->recover(); + $$ = $1; + } + } + | postfix_expression DEC_OP { + if (context->lValueErrorCheck(@2, "--", $1)) + context->recover(); + $$ = context->intermediate.addUnaryMath(EOpPostDecrement, $1, @2, context->symbolTable); + if ($$ == 0) { + context->unaryOpError(@2, "--", $1->getCompleteString()); + context->recover(); + $$ = $1; + } + } + ; + +integer_expression + : expression { + if (context->integerErrorCheck($1, "[]")) + context->recover(); + $$ = $1; + } + ; + +function_call + : function_call_or_method { + TFunction* fnCall = $1.function; + TOperator op = fnCall->getBuiltInOp(); + + if (op != EOpNull) + { + // + // Then this should be a constructor. + // Don't go through the symbol table for constructors. + // Their parameters will be verified algorithmically. + // + TType type(EbtVoid, EbpUndefined); // use this to get the type back + if (context->constructorErrorCheck(@1, $1.intermNode, *fnCall, op, &type)) { + $$ = 0; + } else { + // + // It's a constructor, of type 'type'. + // + $$ = context->addConstructor($1.intermNode, &type, op, fnCall, @1); + } + + if ($$ == 0) { + context->recover(); + $$ = context->intermediate.setAggregateOperator(0, op, @1); + } + $$->setType(type); + } else { + // + // Not a constructor. Find it in the symbol table. + // + const TFunction* fnCandidate; + bool builtIn; + fnCandidate = context->findFunction(@1, fnCall, &builtIn); + if (fnCandidate) { + // + // A declared function. + // + if (builtIn && !fnCandidate->getExtension().empty() && + context->extensionErrorCheck(@1, fnCandidate->getExtension())) { + context->recover(); + } + op = fnCandidate->getBuiltInOp(); + if (builtIn && op != EOpNull) { + // + // A function call mapped to a built-in operation. + // + if (fnCandidate->getParamCount() == 1) { + // + // Treat it like a built-in unary operator. + // + $$ = context->intermediate.addUnaryMath(op, $1.intermNode, @1, context->symbolTable); + if ($$ == 0) { + std::stringstream extraInfoStream; + extraInfoStream << "built in unary operator function. Type: " << static_cast($1.intermNode)->getCompleteString(); + std::string extraInfo = extraInfoStream.str(); + context->error($1.intermNode->getLine(), " wrong operand type", "Internal Error", extraInfo.c_str()); + YYERROR; + } + } else { + $$ = context->intermediate.setAggregateOperator($1.intermAggregate, op, @1); + } + } else { + // This is a real function call + + $$ = context->intermediate.setAggregateOperator($1.intermAggregate, EOpFunctionCall, @1); + $$->setType(fnCandidate->getReturnType()); + + // this is how we know whether the given function is a builtIn function or a user defined function + // if builtIn == false, it's a userDefined -> could be an overloaded builtIn function also + // if builtIn == true, it's definitely a builtIn function with EOpNull + if (!builtIn) + $$->getAsAggregate()->setUserDefined(); + $$->getAsAggregate()->setName(fnCandidate->getMangledName()); + + TQualifier qual; + for (size_t i = 0; i < fnCandidate->getParamCount(); ++i) { + qual = fnCandidate->getParam(i).type->getQualifier(); + if (qual == EvqOut || qual == EvqInOut) { + if (context->lValueErrorCheck($$->getLine(), "assign", $$->getAsAggregate()->getSequence()[i]->getAsTyped())) { + context->error($1.intermNode->getLine(), "Constant value cannot be passed for 'out' or 'inout' parameters.", "Error"); + context->recover(); + } + } + } + } + $$->setType(fnCandidate->getReturnType()); + } else { + // error message was put out by PaFindFunction() + // Put on a dummy node for error recovery + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setFConst(0.0f); + $$ = context->intermediate.addConstantUnion(unionArray, TType(EbtFloat, EbpUndefined, EvqConst), @1); + context->recover(); + } + } + delete fnCall; + } + ; + +function_call_or_method + : function_call_generic { + $$ = $1; + } + | postfix_expression DOT function_call_generic { + context->error(@3, "methods are not supported", ""); + context->recover(); + $$ = $3; + } + ; + +function_call_generic + : function_call_header_with_parameters RIGHT_PAREN { + $$ = $1; + } + | function_call_header_no_parameters RIGHT_PAREN { + $$ = $1; + } + ; + +function_call_header_no_parameters + : function_call_header VOID_TYPE { + $$.function = $1; + $$.intermNode = 0; + } + | function_call_header { + $$.function = $1; + $$.intermNode = 0; + } + ; + +function_call_header_with_parameters + : function_call_header assignment_expression { + TParameter param = { 0, new TType($2->getType()) }; + $1->addParameter(param); + $$.function = $1; + $$.intermNode = $2; + } + | function_call_header_with_parameters COMMA assignment_expression { + TParameter param = { 0, new TType($3->getType()) }; + $1.function->addParameter(param); + $$.function = $1.function; + $$.intermNode = context->intermediate.growAggregate($1.intermNode, $3, @2); + } + ; + +function_call_header + : function_identifier LEFT_PAREN { + $$ = $1; + } + ; + +// Grammar Note: Constructors look like functions, but are recognized as types. + +function_identifier + : type_specifier_nonarray { + // + // Constructor + // + TOperator op = EOpNull; + if ($1.userDef) { + op = EOpConstructStruct; + } else { + switch ($1.type) { + case EbtFloat: + if ($1.matrix) { + switch($1.size) { + case 2: op = EOpConstructMat2; break; + case 3: op = EOpConstructMat3; break; + case 4: op = EOpConstructMat4; break; + } + } else { + switch($1.size) { + case 1: op = EOpConstructFloat; break; + case 2: op = EOpConstructVec2; break; + case 3: op = EOpConstructVec3; break; + case 4: op = EOpConstructVec4; break; + } + } + break; + case EbtInt: + switch($1.size) { + case 1: op = EOpConstructInt; break; + case 2: op = EOpConstructIVec2; break; + case 3: op = EOpConstructIVec3; break; + case 4: op = EOpConstructIVec4; break; + } + break; + case EbtBool: + switch($1.size) { + case 1: op = EOpConstructBool; break; + case 2: op = EOpConstructBVec2; break; + case 3: op = EOpConstructBVec3; break; + case 4: op = EOpConstructBVec4; break; + } + break; + default: break; + } + if (op == EOpNull) { + context->error(@1, "cannot construct this type", getBasicString($1.type)); + context->recover(); + $1.type = EbtFloat; + op = EOpConstructFloat; + } + } + TString tempString; + TType type($1); + TFunction *function = new TFunction(&tempString, type, op); + $$ = function; + } + | IDENTIFIER { + if (context->reservedErrorCheck(@1, *$1.string)) + context->recover(); + TType type(EbtVoid, EbpUndefined); + TFunction *function = new TFunction($1.string, type); + $$ = function; + } + ; + +unary_expression + : postfix_expression { + $$ = $1; + } + | INC_OP unary_expression { + if (context->lValueErrorCheck(@1, "++", $2)) + context->recover(); + $$ = context->intermediate.addUnaryMath(EOpPreIncrement, $2, @1, context->symbolTable); + if ($$ == 0) { + context->unaryOpError(@1, "++", $2->getCompleteString()); + context->recover(); + $$ = $2; + } + } + | DEC_OP unary_expression { + if (context->lValueErrorCheck(@1, "--", $2)) + context->recover(); + $$ = context->intermediate.addUnaryMath(EOpPreDecrement, $2, @1, context->symbolTable); + if ($$ == 0) { + context->unaryOpError(@1, "--", $2->getCompleteString()); + context->recover(); + $$ = $2; + } + } + | unary_operator unary_expression { + if ($1.op != EOpNull) { + $$ = context->intermediate.addUnaryMath($1.op, $2, @1, context->symbolTable); + if ($$ == 0) { + const char* errorOp = ""; + switch($1.op) { + case EOpNegative: errorOp = "-"; break; + case EOpLogicalNot: errorOp = "!"; break; + default: break; + } + context->unaryOpError(@1, errorOp, $2->getCompleteString()); + context->recover(); + $$ = $2; + } + } else + $$ = $2; + } + ; +// Grammar Note: No traditional style type casts. + +unary_operator + : PLUS { $$.op = EOpNull; } + | DASH { $$.op = EOpNegative; } + | BANG { $$.op = EOpLogicalNot; } + ; +// Grammar Note: No '*' or '&' unary ops. Pointers are not supported. + +multiplicative_expression + : unary_expression { $$ = $1; } + | multiplicative_expression STAR unary_expression { + $$ = context->intermediate.addBinaryMath(EOpMul, $1, $3, @2, context->symbolTable); + if ($$ == 0) { + context->binaryOpError(@2, "*", $1->getCompleteString(), $3->getCompleteString()); + context->recover(); + $$ = $1; + } + } + | multiplicative_expression SLASH unary_expression { + $$ = context->intermediate.addBinaryMath(EOpDiv, $1, $3, @2, context->symbolTable); + if ($$ == 0) { + context->binaryOpError(@2, "/", $1->getCompleteString(), $3->getCompleteString()); + context->recover(); + $$ = $1; + } + } + ; + +additive_expression + : multiplicative_expression { $$ = $1; } + | additive_expression PLUS multiplicative_expression { + $$ = context->intermediate.addBinaryMath(EOpAdd, $1, $3, @2, context->symbolTable); + if ($$ == 0) { + context->binaryOpError(@2, "+", $1->getCompleteString(), $3->getCompleteString()); + context->recover(); + $$ = $1; + } + } + | additive_expression DASH multiplicative_expression { + $$ = context->intermediate.addBinaryMath(EOpSub, $1, $3, @2, context->symbolTable); + if ($$ == 0) { + context->binaryOpError(@2, "-", $1->getCompleteString(), $3->getCompleteString()); + context->recover(); + $$ = $1; + } + } + ; + +shift_expression + : additive_expression { $$ = $1; } + ; + +relational_expression + : shift_expression { $$ = $1; } + | relational_expression LEFT_ANGLE shift_expression { + $$ = context->intermediate.addBinaryMath(EOpLessThan, $1, $3, @2, context->symbolTable); + if ($$ == 0) { + context->binaryOpError(@2, "<", $1->getCompleteString(), $3->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + $$ = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), @2); + } + } + | relational_expression RIGHT_ANGLE shift_expression { + $$ = context->intermediate.addBinaryMath(EOpGreaterThan, $1, $3, @2, context->symbolTable); + if ($$ == 0) { + context->binaryOpError(@2, ">", $1->getCompleteString(), $3->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + $$ = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), @2); + } + } + | relational_expression LE_OP shift_expression { + $$ = context->intermediate.addBinaryMath(EOpLessThanEqual, $1, $3, @2, context->symbolTable); + if ($$ == 0) { + context->binaryOpError(@2, "<=", $1->getCompleteString(), $3->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + $$ = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), @2); + } + } + | relational_expression GE_OP shift_expression { + $$ = context->intermediate.addBinaryMath(EOpGreaterThanEqual, $1, $3, @2, context->symbolTable); + if ($$ == 0) { + context->binaryOpError(@2, ">=", $1->getCompleteString(), $3->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + $$ = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), @2); + } + } + ; + +equality_expression + : relational_expression { $$ = $1; } + | equality_expression EQ_OP relational_expression { + $$ = context->intermediate.addBinaryMath(EOpEqual, $1, $3, @2, context->symbolTable); + if ($$ == 0) { + context->binaryOpError(@2, "==", $1->getCompleteString(), $3->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + $$ = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), @2); + } + } + | equality_expression NE_OP relational_expression { + $$ = context->intermediate.addBinaryMath(EOpNotEqual, $1, $3, @2, context->symbolTable); + if ($$ == 0) { + context->binaryOpError(@2, "!=", $1->getCompleteString(), $3->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + $$ = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), @2); + } + } + ; + +and_expression + : equality_expression { $$ = $1; } + ; + +exclusive_or_expression + : and_expression { $$ = $1; } + ; + +inclusive_or_expression + : exclusive_or_expression { $$ = $1; } + ; + +logical_and_expression + : inclusive_or_expression { $$ = $1; } + | logical_and_expression AND_OP inclusive_or_expression { + $$ = context->intermediate.addBinaryMath(EOpLogicalAnd, $1, $3, @2, context->symbolTable); + if ($$ == 0) { + context->binaryOpError(@2, "&&", $1->getCompleteString(), $3->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + $$ = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), @2); + } + } + ; + +logical_xor_expression + : logical_and_expression { $$ = $1; } + | logical_xor_expression XOR_OP logical_and_expression { + $$ = context->intermediate.addBinaryMath(EOpLogicalXor, $1, $3, @2, context->symbolTable); + if ($$ == 0) { + context->binaryOpError(@2, "^^", $1->getCompleteString(), $3->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + $$ = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), @2); + } + } + ; + +logical_or_expression + : logical_xor_expression { $$ = $1; } + | logical_or_expression OR_OP logical_xor_expression { + $$ = context->intermediate.addBinaryMath(EOpLogicalOr, $1, $3, @2, context->symbolTable); + if ($$ == 0) { + context->binaryOpError(@2, "||", $1->getCompleteString(), $3->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + $$ = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), @2); + } + } + ; + +conditional_expression + : logical_or_expression { $$ = $1; } + | logical_or_expression QUESTION expression COLON assignment_expression { + if (context->boolErrorCheck(@2, $1)) + context->recover(); + + $$ = context->intermediate.addSelection($1, $3, $5, @2); + if ($3->getType() != $5->getType()) + $$ = 0; + + if ($$ == 0) { + context->binaryOpError(@2, ":", $3->getCompleteString(), $5->getCompleteString()); + context->recover(); + $$ = $5; + } + } + ; + +assignment_expression + : conditional_expression { $$ = $1; } + | unary_expression assignment_operator assignment_expression { + if (context->lValueErrorCheck(@2, "assign", $1)) + context->recover(); + $$ = context->intermediate.addAssign($2.op, $1, $3, @2); + if ($$ == 0) { + context->assignError(@2, "assign", $1->getCompleteString(), $3->getCompleteString()); + context->recover(); + $$ = $1; + } + } + ; + +assignment_operator + : EQUAL { $$.op = EOpAssign; } + | MUL_ASSIGN { $$.op = EOpMulAssign; } + | DIV_ASSIGN { $$.op = EOpDivAssign; } + | ADD_ASSIGN { $$.op = EOpAddAssign; } + | SUB_ASSIGN { $$.op = EOpSubAssign; } + ; + +expression + : assignment_expression { + $$ = $1; + } + | expression COMMA assignment_expression { + $$ = context->intermediate.addComma($1, $3, @2); + if ($$ == 0) { + context->binaryOpError(@2, ",", $1->getCompleteString(), $3->getCompleteString()); + context->recover(); + $$ = $3; + } + } + ; + +constant_expression + : conditional_expression { + if (context->constErrorCheck($1)) + context->recover(); + $$ = $1; + } + ; + +declaration + : function_prototype SEMICOLON { + TFunction &function = *($1.function); + + TIntermAggregate *prototype = new TIntermAggregate; + prototype->setType(function.getReturnType()); + prototype->setName(function.getName()); + + for (size_t i = 0; i < function.getParamCount(); i++) + { + const TParameter ¶m = function.getParam(i); + if (param.name != 0) + { + TVariable variable(param.name, *param.type); + + prototype = context->intermediate.growAggregate(prototype, context->intermediate.addSymbol(variable.getUniqueId(), variable.getName(), variable.getType(), @1), @1); + } + else + { + prototype = context->intermediate.growAggregate(prototype, context->intermediate.addSymbol(0, "", *param.type, @1), @1); + } + } + + prototype->setOp(EOpPrototype); + $$ = prototype; + + context->symbolTable.pop(); + } + | init_declarator_list SEMICOLON { + if ($1.intermAggregate) + $1.intermAggregate->setOp(EOpDeclaration); + $$ = $1.intermAggregate; + } + | PRECISION precision_qualifier type_specifier_no_prec SEMICOLON { + if (($2 == EbpHigh) && (context->shaderType == SH_FRAGMENT_SHADER) && !context->fragmentPrecisionHigh) { + context->error(@1, "precision is not supported in fragment shader", "highp"); + context->recover(); + } + if (!context->symbolTable.setDefaultPrecision( $3, $2 )) { + context->error(@1, "illegal type argument for default precision qualifier", getBasicString($3.type)); + context->recover(); + } + $$ = 0; + } + ; + +function_prototype + : function_declarator RIGHT_PAREN { + // + // Multiple declarations of the same function are allowed. + // + // If this is a definition, the definition production code will check for redefinitions + // (we don't know at this point if it's a definition or not). + // + // Redeclarations are allowed. But, return types and parameter qualifiers must match. + // + TFunction* prevDec = static_cast(context->symbolTable.find($1->getMangledName())); + if (prevDec) { + if (prevDec->getReturnType() != $1->getReturnType()) { + context->error(@2, "overloaded functions must have the same return type", $1->getReturnType().getBasicString()); + context->recover(); + } + for (size_t i = 0; i < prevDec->getParamCount(); ++i) { + if (prevDec->getParam(i).type->getQualifier() != $1->getParam(i).type->getQualifier()) { + context->error(@2, "overloaded functions must have the same parameter qualifiers", $1->getParam(i).type->getQualifierString()); + context->recover(); + } + } + } + + // + // Check for previously declared variables using the same name. + // + TSymbol *prevSym = context->symbolTable.find($1->getName()); + if (prevSym) + { + if (!prevSym->isFunction()) + { + context->error(@2, "redefinition", $1->getName().c_str(), "function"); + context->recover(); + } + } + else + { + // Insert the unmangled name to detect potential future redefinition as a variable. + context->symbolTable.getOuterLevel()->insert($1->getName(), *$1); + } + + // + // If this is a redeclaration, it could also be a definition, + // in which case, we want to use the variable names from this one, and not the one that's + // being redeclared. So, pass back up this declaration, not the one in the symbol table. + // + $$.function = $1; + + // We're at the inner scope level of the function's arguments and body statement. + // Add the function prototype to the surrounding scope instead. + context->symbolTable.getOuterLevel()->insert(*$$.function); + } + ; + +function_declarator + : function_header { + $$ = $1; + } + | function_header_with_parameters { + $$ = $1; + } + ; + + +function_header_with_parameters + : function_header parameter_declaration { + // Add the parameter + $$ = $1; + if ($2.param.type->getBasicType() != EbtVoid) + $1->addParameter($2.param); + else + delete $2.param.type; + } + | function_header_with_parameters COMMA parameter_declaration { + // + // Only first parameter of one-parameter functions can be void + // The check for named parameters not being void is done in parameter_declarator + // + if ($3.param.type->getBasicType() == EbtVoid) { + // + // This parameter > first is void + // + context->error(@2, "cannot be an argument type except for '(void)'", "void"); + context->recover(); + delete $3.param.type; + } else { + // Add the parameter + $$ = $1; + $1->addParameter($3.param); + } + } + ; + +function_header + : fully_specified_type IDENTIFIER LEFT_PAREN { + if ($1.qualifier != EvqGlobal && $1.qualifier != EvqTemporary) { + context->error(@2, "no qualifiers allowed for function return", getQualifierString($1.qualifier)); + context->recover(); + } + // make sure a sampler is not involved as well... + if (context->structQualifierErrorCheck(@2, $1)) + context->recover(); + + // Add the function as a prototype after parsing it (we do not support recursion) + TFunction *function; + TType type($1); + function = new TFunction($2.string, type); + $$ = function; + + context->symbolTable.push(); + } + ; + +parameter_declarator + // Type + name + : type_specifier identifier { + if ($1.type == EbtVoid) { + context->error(@2, "illegal use of type 'void'", $2.string->c_str()); + context->recover(); + } + if (context->reservedErrorCheck(@2, *$2.string)) + context->recover(); + TParameter param = {$2.string, new TType($1)}; + $$.param = param; + } + | type_specifier identifier LEFT_BRACKET constant_expression RIGHT_BRACKET { + // Check that we can make an array out of this type + if (context->arrayTypeErrorCheck(@3, $1)) + context->recover(); + + if (context->reservedErrorCheck(@2, *$2.string)) + context->recover(); + + int size; + if (context->arraySizeErrorCheck(@3, $4, size)) + context->recover(); + $1.setArray(true, size); + + TType* type = new TType($1); + TParameter param = { $2.string, type }; + $$.param = param; + } + ; + +parameter_declaration + // + // The only parameter qualifier a parameter can have are + // IN_QUAL, OUT_QUAL, INOUT_QUAL, or CONST. + // + + // + // Type + name + // + : type_qualifier parameter_qualifier parameter_declarator { + $$ = $3; + if (context->paramErrorCheck(@3, $1.qualifier, $2, $$.param.type)) + context->recover(); + } + | parameter_qualifier parameter_declarator { + $$ = $2; + if (context->parameterSamplerErrorCheck(@2, $1, *$2.param.type)) + context->recover(); + if (context->paramErrorCheck(@2, EvqTemporary, $1, $$.param.type)) + context->recover(); + } + // + // Only type + // + | type_qualifier parameter_qualifier parameter_type_specifier { + $$ = $3; + if (context->paramErrorCheck(@3, $1.qualifier, $2, $$.param.type)) + context->recover(); + } + | parameter_qualifier parameter_type_specifier { + $$ = $2; + if (context->parameterSamplerErrorCheck(@2, $1, *$2.param.type)) + context->recover(); + if (context->paramErrorCheck(@2, EvqTemporary, $1, $$.param.type)) + context->recover(); + } + ; + +parameter_qualifier + : /* empty */ { + $$ = EvqIn; + } + | IN_QUAL { + $$ = EvqIn; + } + | OUT_QUAL { + $$ = EvqOut; + } + | INOUT_QUAL { + $$ = EvqInOut; + } + ; + +parameter_type_specifier + : type_specifier { + TParameter param = { 0, new TType($1) }; + $$.param = param; + } + ; + +init_declarator_list + : single_declaration { + $$ = $1; + } + | init_declarator_list COMMA identifier { + if ($1.type.type == EbtInvariant && !$3.symbol) + { + context->error(@3, "undeclared identifier declared as invariant", $3.string->c_str()); + context->recover(); + } + + TIntermSymbol* symbol = context->intermediate.addSymbol(0, *$3.string, TType($1.type), @3); + $$.intermAggregate = context->intermediate.growAggregate($1.intermNode, symbol, @3); + + if (context->structQualifierErrorCheck(@3, $$.type)) + context->recover(); + + if (context->nonInitConstErrorCheck(@3, *$3.string, $$.type, false)) + context->recover(); + + TVariable* variable = 0; + if (context->nonInitErrorCheck(@3, *$3.string, $$.type, variable)) + context->recover(); + if (symbol && variable) + symbol->setId(variable->getUniqueId()); + } + | init_declarator_list COMMA identifier LEFT_BRACKET RIGHT_BRACKET { + if (context->structQualifierErrorCheck(@3, $1.type)) + context->recover(); + + if (context->nonInitConstErrorCheck(@3, *$3.string, $1.type, true)) + context->recover(); + + $$ = $1; + + if (context->arrayTypeErrorCheck(@4, $1.type) || context->arrayQualifierErrorCheck(@4, $1.type)) + context->recover(); + else { + $1.type.setArray(true); + TVariable* variable; + if (context->arrayErrorCheck(@4, *$3.string, $1.type, variable)) + context->recover(); + } + } + | init_declarator_list COMMA identifier LEFT_BRACKET constant_expression RIGHT_BRACKET { + if (context->structQualifierErrorCheck(@3, $1.type)) + context->recover(); + + if (context->nonInitConstErrorCheck(@3, *$3.string, $1.type, true)) + context->recover(); + + $$ = $1; + + if (context->arrayTypeErrorCheck(@4, $1.type) || context->arrayQualifierErrorCheck(@4, $1.type)) + context->recover(); + else { + int size; + if (context->arraySizeErrorCheck(@4, $5, size)) + context->recover(); + $1.type.setArray(true, size); + TVariable* variable = 0; + if (context->arrayErrorCheck(@4, *$3.string, $1.type, variable)) + context->recover(); + TType type = TType($1.type); + type.setArraySize(size); + $$.intermAggregate = context->intermediate.growAggregate($1.intermNode, context->intermediate.addSymbol(variable ? variable->getUniqueId() : 0, *$3.string, type, @3), @3); + } + } + | init_declarator_list COMMA identifier EQUAL initializer { + if (context->structQualifierErrorCheck(@3, $1.type)) + context->recover(); + + $$ = $1; + + TIntermNode* intermNode; + if (!context->executeInitializer(@3, *$3.string, $1.type, $5, intermNode)) { + // + // build the intermediate representation + // + if (intermNode) + $$.intermAggregate = context->intermediate.growAggregate($1.intermNode, intermNode, @4); + else + $$.intermAggregate = $1.intermAggregate; + } else { + context->recover(); + $$.intermAggregate = 0; + } + } + ; + +single_declaration + : fully_specified_type { + $$.type = $1; + $$.intermAggregate = context->intermediate.makeAggregate(context->intermediate.addSymbol(0, "", TType($1), @1), @1); + } + | fully_specified_type identifier { + TIntermSymbol* symbol = context->intermediate.addSymbol(0, *$2.string, TType($1), @2); + $$.intermAggregate = context->intermediate.makeAggregate(symbol, @2); + + if (context->structQualifierErrorCheck(@2, $$.type)) + context->recover(); + + if (context->nonInitConstErrorCheck(@2, *$2.string, $$.type, false)) + context->recover(); + + $$.type = $1; + + TVariable* variable = 0; + if (context->nonInitErrorCheck(@2, *$2.string, $$.type, variable)) + context->recover(); + if (variable && symbol) + symbol->setId(variable->getUniqueId()); + } + | fully_specified_type identifier LEFT_BRACKET RIGHT_BRACKET { + context->error(@2, "unsized array declarations not supported", $2.string->c_str()); + context->recover(); + + TIntermSymbol* symbol = context->intermediate.addSymbol(0, *$2.string, TType($1), @2); + $$.intermAggregate = context->intermediate.makeAggregate(symbol, @2); + $$.type = $1; + } + | fully_specified_type identifier LEFT_BRACKET constant_expression RIGHT_BRACKET { + TType type = TType($1); + int size; + if (context->arraySizeErrorCheck(@2, $4, size)) + context->recover(); + type.setArraySize(size); + TIntermSymbol* symbol = context->intermediate.addSymbol(0, *$2.string, type, @2); + $$.intermAggregate = context->intermediate.makeAggregate(symbol, @2); + + if (context->structQualifierErrorCheck(@2, $1)) + context->recover(); + + if (context->nonInitConstErrorCheck(@2, *$2.string, $1, true)) + context->recover(); + + $$.type = $1; + + if (context->arrayTypeErrorCheck(@3, $1) || context->arrayQualifierErrorCheck(@3, $1)) + context->recover(); + else { + int size; + if (context->arraySizeErrorCheck(@3, $4, size)) + context->recover(); + + $1.setArray(true, size); + TVariable* variable = 0; + if (context->arrayErrorCheck(@3, *$2.string, $1, variable)) + context->recover(); + if (variable && symbol) + symbol->setId(variable->getUniqueId()); + } + } + | fully_specified_type identifier EQUAL initializer { + if (context->structQualifierErrorCheck(@2, $1)) + context->recover(); + + $$.type = $1; + + TIntermNode* intermNode; + if (!context->executeInitializer(@2, *$2.string, $1, $4, intermNode)) { + // + // Build intermediate representation + // + if(intermNode) + $$.intermAggregate = context->intermediate.makeAggregate(intermNode, @3); + else + $$.intermAggregate = 0; + } else { + context->recover(); + $$.intermAggregate = 0; + } + } + | INVARIANT IDENTIFIER { + VERTEX_ONLY("invariant declaration", @1); + if (context->globalErrorCheck(@1, context->symbolTable.atGlobalLevel(), "invariant varying")) + context->recover(); + $$.type.setBasic(EbtInvariant, EvqInvariantVaryingOut, @2); + if (!$2.symbol) + { + context->error(@2, "undeclared identifier declared as invariant", $2.string->c_str()); + context->recover(); + + $$.intermAggregate = 0; + } + else + { + TIntermSymbol *symbol = context->intermediate.addSymbol(0, *$2.string, TType($$.type), @2); + $$.intermAggregate = context->intermediate.makeAggregate(symbol, @2); + } + } + ; + +fully_specified_type + : type_specifier { + $$ = $1; + + if ($1.array) { + context->error(@1, "not supported", "first-class array"); + context->recover(); + $1.setArray(false); + } + } + | type_qualifier type_specifier { + if ($2.array) { + context->error(@2, "not supported", "first-class array"); + context->recover(); + $2.setArray(false); + } + + if ($1.qualifier == EvqAttribute && + ($2.type == EbtBool || $2.type == EbtInt)) { + context->error(@2, "cannot be bool or int", getQualifierString($1.qualifier)); + context->recover(); + } + if (($1.qualifier == EvqVaryingIn || $1.qualifier == EvqVaryingOut) && + ($2.type == EbtBool || $2.type == EbtInt)) { + context->error(@2, "cannot be bool or int", getQualifierString($1.qualifier)); + context->recover(); + } + $$ = $2; + $$.qualifier = $1.qualifier; + } + ; + +type_qualifier + : CONST_QUAL { + $$.setBasic(EbtVoid, EvqConst, @1); + } + | ATTRIBUTE { + VERTEX_ONLY("attribute", @1); + if (context->globalErrorCheck(@1, context->symbolTable.atGlobalLevel(), "attribute")) + context->recover(); + $$.setBasic(EbtVoid, EvqAttribute, @1); + } + | VARYING { + if (context->globalErrorCheck(@1, context->symbolTable.atGlobalLevel(), "varying")) + context->recover(); + if (context->shaderType == SH_VERTEX_SHADER) + $$.setBasic(EbtVoid, EvqVaryingOut, @1); + else + $$.setBasic(EbtVoid, EvqVaryingIn, @1); + } + | INVARIANT VARYING { + if (context->globalErrorCheck(@1, context->symbolTable.atGlobalLevel(), "invariant varying")) + context->recover(); + if (context->shaderType == SH_VERTEX_SHADER) + $$.setBasic(EbtVoid, EvqInvariantVaryingOut, @1); + else + $$.setBasic(EbtVoid, EvqInvariantVaryingIn, @1); + } + | UNIFORM { + if (context->globalErrorCheck(@1, context->symbolTable.atGlobalLevel(), "uniform")) + context->recover(); + $$.setBasic(EbtVoid, EvqUniform, @1); + } + ; + +type_specifier + : type_specifier_no_prec { + $$ = $1; + + if ($$.precision == EbpUndefined) { + $$.precision = context->symbolTable.getDefaultPrecision($1.type); + if (context->precisionErrorCheck(@1, $$.precision, $1.type)) { + context->recover(); + } + } + } + | precision_qualifier type_specifier_no_prec { + $$ = $2; + $$.precision = $1; + } + ; + +precision_qualifier + : HIGH_PRECISION { + $$ = EbpHigh; + } + | MEDIUM_PRECISION { + $$ = EbpMedium; + } + | LOW_PRECISION { + $$ = EbpLow; + } + ; + +type_specifier_no_prec + : type_specifier_nonarray { + $$ = $1; + } + | type_specifier_nonarray LEFT_BRACKET constant_expression RIGHT_BRACKET { + $$ = $1; + + if (context->arrayTypeErrorCheck(@2, $1)) + context->recover(); + else { + int size; + if (context->arraySizeErrorCheck(@2, $3, size)) + context->recover(); + $$.setArray(true, size); + } + } + ; + +type_specifier_nonarray + : VOID_TYPE { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtVoid, qual, @1); + } + | FLOAT_TYPE { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtFloat, qual, @1); + } + | INT_TYPE { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtInt, qual, @1); + } + | BOOL_TYPE { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtBool, qual, @1); + } + | VEC2 { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtFloat, qual, @1); + $$.setAggregate(2); + } + | VEC3 { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtFloat, qual, @1); + $$.setAggregate(3); + } + | VEC4 { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtFloat, qual, @1); + $$.setAggregate(4); + } + | BVEC2 { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtBool, qual, @1); + $$.setAggregate(2); + } + | BVEC3 { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtBool, qual, @1); + $$.setAggregate(3); + } + | BVEC4 { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtBool, qual, @1); + $$.setAggregate(4); + } + | IVEC2 { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtInt, qual, @1); + $$.setAggregate(2); + } + | IVEC3 { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtInt, qual, @1); + $$.setAggregate(3); + } + | IVEC4 { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtInt, qual, @1); + $$.setAggregate(4); + } + | MATRIX2 { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtFloat, qual, @1); + $$.setAggregate(2, true); + } + | MATRIX3 { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtFloat, qual, @1); + $$.setAggregate(3, true); + } + | MATRIX4 { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtFloat, qual, @1); + $$.setAggregate(4, true); + } + | SAMPLER2D { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtSampler2D, qual, @1); + } + | SAMPLERCUBE { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtSamplerCube, qual, @1); + } + | SAMPLER_EXTERNAL_OES { + if (!context->supportsExtension("GL_OES_EGL_image_external")) { + context->error(@1, "unsupported type", "samplerExternalOES"); + context->recover(); + } + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtSamplerExternalOES, qual, @1); + } + | SAMPLER2DRECT { + if (!context->supportsExtension("GL_ARB_texture_rectangle")) { + context->error(@1, "unsupported type", "sampler2DRect"); + context->recover(); + } + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtSampler2DRect, qual, @1); + } + | struct_specifier { + $$ = $1; + $$.qualifier = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + } + | TYPE_NAME { + // + // This is for user defined type names. The lexical phase looked up the + // type. + // + TType& structure = static_cast($1.symbol)->getType(); + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + $$.setBasic(EbtStruct, qual, @1); + $$.userDef = &structure; + } + ; + +struct_specifier + : STRUCT identifier LEFT_BRACE { if (context->enterStructDeclaration(@2, *$2.string)) context->recover(); } struct_declaration_list RIGHT_BRACE { + if (context->reservedErrorCheck(@2, *$2.string)) + context->recover(); + + TType* structure = new TType(new TStructure($2.string, $5)); + TVariable* userTypeDef = new TVariable($2.string, *structure, true); + if (! context->symbolTable.insert(*userTypeDef)) { + context->error(@2, "redefinition", $2.string->c_str(), "struct"); + context->recover(); + } + $$.setBasic(EbtStruct, EvqTemporary, @1); + $$.userDef = structure; + context->exitStructDeclaration(); + } + | STRUCT LEFT_BRACE { if (context->enterStructDeclaration(@2, *$2.string)) context->recover(); } struct_declaration_list RIGHT_BRACE { + TType* structure = new TType(new TStructure(NewPoolTString(""), $4)); + $$.setBasic(EbtStruct, EvqTemporary, @1); + $$.userDef = structure; + context->exitStructDeclaration(); + } + ; + +struct_declaration_list + : struct_declaration { + $$ = $1; + } + | struct_declaration_list struct_declaration { + $$ = $1; + for (size_t i = 0; i < $2->size(); ++i) { + TField* field = (*$2)[i]; + for (size_t j = 0; j < $$->size(); ++j) { + if ((*$$)[j]->name() == field->name()) { + context->error(@2, "duplicate field name in structure:", "struct", field->name().c_str()); + context->recover(); + } + } + $$->push_back(field); + } + } + ; + +struct_declaration + : type_specifier struct_declarator_list SEMICOLON { + $$ = $2; + + if (context->voidErrorCheck(@1, (*$2)[0]->name(), $1)) { + context->recover(); + } + for (unsigned int i = 0; i < $$->size(); ++i) { + // + // Careful not to replace already known aspects of type, like array-ness + // + TType* type = (*$$)[i]->type(); + type->setBasicType($1.type); + type->setNominalSize($1.size); + type->setMatrix($1.matrix); + type->setPrecision($1.precision); + + // don't allow arrays of arrays + if (type->isArray()) { + if (context->arrayTypeErrorCheck(@1, $1)) + context->recover(); + } + if ($1.array) + type->setArraySize($1.arraySize); + if ($1.userDef) + type->setStruct($1.userDef->getStruct()); + + if (context->structNestingErrorCheck(@1, *(*$$)[i])) + context->recover(); + } + } + ; + +struct_declarator_list + : struct_declarator { + $$ = NewPoolTFieldList(); + $$->push_back($1); + } + | struct_declarator_list COMMA struct_declarator { + $$->push_back($3); + } + ; + +struct_declarator + : identifier { + if (context->reservedErrorCheck(@1, *$1.string)) + context->recover(); + + TType* type = new TType(EbtVoid, EbpUndefined); + $$ = new TField(type, $1.string); + } + | identifier LEFT_BRACKET constant_expression RIGHT_BRACKET { + if (context->reservedErrorCheck(@1, *$1.string)) + context->recover(); + + TType* type = new TType(EbtVoid, EbpUndefined); + int size = 0; + if (context->arraySizeErrorCheck(@3, $3, size)) + context->recover(); + type->setArraySize(size); + + $$ = new TField(type, $1.string); + } + ; + +initializer + : assignment_expression { $$ = $1; } + ; + +declaration_statement + : declaration { $$ = $1; } + ; + +statement + : compound_statement { $$ = $1; } + | simple_statement { $$ = $1; } + ; + +// Grammar Note: No labeled statements; 'goto' is not supported. + +simple_statement + : declaration_statement { $$ = $1; } + | expression_statement { $$ = $1; } + | selection_statement { $$ = $1; } + | iteration_statement { $$ = $1; } + | jump_statement { $$ = $1; } + ; + +compound_statement + : LEFT_BRACE RIGHT_BRACE { $$ = 0; } + | LEFT_BRACE { context->symbolTable.push(); } statement_list { context->symbolTable.pop(); } RIGHT_BRACE { + if ($3 != 0) { + $3->setOp(EOpSequence); + $3->setLine(@$); + } + $$ = $3; + } + ; + +statement_no_new_scope + : compound_statement_no_new_scope { $$ = $1; } + | simple_statement { $$ = $1; } + ; + +statement_with_scope + : { context->symbolTable.push(); } compound_statement_no_new_scope { context->symbolTable.pop(); $$ = $2; } + | { context->symbolTable.push(); } simple_statement { context->symbolTable.pop(); $$ = $2; } + ; + +compound_statement_no_new_scope + // Statement that doesn't create a new scope, for selection_statement, iteration_statement + : LEFT_BRACE RIGHT_BRACE { + $$ = 0; + } + | LEFT_BRACE statement_list RIGHT_BRACE { + if ($2) { + $2->setOp(EOpSequence); + $2->setLine(@$); + } + $$ = $2; + } + ; + +statement_list + : statement { + $$ = context->intermediate.makeAggregate($1, @$); + } + | statement_list statement { + $$ = context->intermediate.growAggregate($1, $2, @$); + } + ; + +expression_statement + : SEMICOLON { $$ = 0; } + | expression SEMICOLON { $$ = static_cast($1); } + ; + +selection_statement + : IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement { + if (context->boolErrorCheck(@1, $3)) + context->recover(); + $$ = context->intermediate.addSelection($3, $5, @1); + } + ; + +selection_rest_statement + : statement_with_scope ELSE statement_with_scope { + $$.node1 = $1; + $$.node2 = $3; + } + | statement_with_scope { + $$.node1 = $1; + $$.node2 = 0; + } + ; + +// Grammar Note: No 'switch'. Switch statements not supported. + +condition + // In 1996 c++ draft, conditions can include single declarations + : expression { + $$ = $1; + if (context->boolErrorCheck($1->getLine(), $1)) + context->recover(); + } + | fully_specified_type identifier EQUAL initializer { + TIntermNode* intermNode; + if (context->structQualifierErrorCheck(@2, $1)) + context->recover(); + if (context->boolErrorCheck(@2, $1)) + context->recover(); + + if (!context->executeInitializer(@2, *$2.string, $1, $4, intermNode)) + $$ = $4; + else { + context->recover(); + $$ = 0; + } + } + ; + +iteration_statement + : WHILE LEFT_PAREN { context->symbolTable.push(); ++context->loopNestingLevel; } condition RIGHT_PAREN statement_no_new_scope { + context->symbolTable.pop(); + $$ = context->intermediate.addLoop(ELoopWhile, 0, $4, 0, $6, @1); + --context->loopNestingLevel; + } + | DO { ++context->loopNestingLevel; } statement_with_scope WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON { + if (context->boolErrorCheck(@8, $6)) + context->recover(); + + $$ = context->intermediate.addLoop(ELoopDoWhile, 0, $6, 0, $3, @4); + --context->loopNestingLevel; + } + | FOR LEFT_PAREN { context->symbolTable.push(); ++context->loopNestingLevel; } for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope { + context->symbolTable.pop(); + $$ = context->intermediate.addLoop(ELoopFor, $4, reinterpret_cast($5.node1), reinterpret_cast($5.node2), $7, @1); + --context->loopNestingLevel; + } + ; + +for_init_statement + : expression_statement { + $$ = $1; + } + | declaration_statement { + $$ = $1; + } + ; + +conditionopt + : condition { + $$ = $1; + } + | /* May be null */ { + $$ = 0; + } + ; + +for_rest_statement + : conditionopt SEMICOLON { + $$.node1 = $1; + $$.node2 = 0; + } + | conditionopt SEMICOLON expression { + $$.node1 = $1; + $$.node2 = $3; + } + ; + +jump_statement + : CONTINUE SEMICOLON { + if (context->loopNestingLevel <= 0) { + context->error(@1, "continue statement only allowed in loops", ""); + context->recover(); + } + $$ = context->intermediate.addBranch(EOpContinue, @1); + } + | BREAK SEMICOLON { + if (context->loopNestingLevel <= 0) { + context->error(@1, "break statement only allowed in loops", ""); + context->recover(); + } + $$ = context->intermediate.addBranch(EOpBreak, @1); + } + | RETURN SEMICOLON { + $$ = context->intermediate.addBranch(EOpReturn, @1); + if (context->currentFunctionType->getBasicType() != EbtVoid) { + context->error(@1, "non-void function must return a value", "return"); + context->recover(); + } + } + | RETURN expression SEMICOLON { + $$ = context->intermediate.addBranch(EOpReturn, $2, @1); + context->functionReturnsValue = true; + if (context->currentFunctionType->getBasicType() == EbtVoid) { + context->error(@1, "void function cannot return a value", "return"); + context->recover(); + } else if (*(context->currentFunctionType) != $2->getType()) { + context->error(@1, "function return is not matching type:", "return"); + context->recover(); + } + } + | DISCARD SEMICOLON { + FRAG_ONLY("discard", @1); + $$ = context->intermediate.addBranch(EOpKill, @1); + } + ; + +// Grammar Note: No 'goto'. Gotos are not supported. + +translation_unit + : external_declaration { + $$ = $1; + context->treeRoot = $$; + } + | translation_unit external_declaration { + $$ = context->intermediate.growAggregate($1, $2, @$); + context->treeRoot = $$; + } + ; + +external_declaration + : function_definition { + $$ = $1; + } + | declaration { + $$ = $1; + } + ; + +function_definition + : function_prototype { + TFunction* function = $1.function; + + const TSymbol *builtIn = context->symbolTable.findBuiltIn(function->getMangledName()); + + if (builtIn) + { + context->error(@1, "built-in functions cannot be redefined", function->getName().c_str()); + context->recover(); + } + + TFunction* prevDec = static_cast(context->symbolTable.find(function->getMangledName())); + // + // Note: 'prevDec' could be 'function' if this is the first time we've seen function + // as it would have just been put in the symbol table. Otherwise, we're looking up + // an earlier occurance. + // + if (prevDec->isDefined()) { + // + // Then this function already has a body. + // + context->error(@1, "function already has a body", function->getName().c_str()); + context->recover(); + } + prevDec->setDefined(); + + // + // Raise error message if main function takes any parameters or return anything other than void + // + if (function->getName() == "main") { + if (function->getParamCount() > 0) { + context->error(@1, "function cannot take any parameter(s)", function->getName().c_str()); + context->recover(); + } + if (function->getReturnType().getBasicType() != EbtVoid) { + context->error(@1, "", function->getReturnType().getBasicString(), "main function cannot return a value"); + context->recover(); + } + } + + // + // Remember the return type for later checking for RETURN statements. + // + context->currentFunctionType = &(prevDec->getReturnType()); + context->functionReturnsValue = false; + + // + // Insert parameters into the symbol table. + // If the parameter has no name, it's not an error, just don't insert it + // (could be used for unused args). + // + // Also, accumulate the list of parameters into the HIL, so lower level code + // knows where to find parameters. + // + TIntermAggregate* paramNodes = new TIntermAggregate; + for (size_t i = 0; i < function->getParamCount(); i++) { + const TParameter& param = function->getParam(i); + if (param.name != 0) { + TVariable *variable = new TVariable(param.name, *param.type); + // + // Insert the parameters with name in the symbol table. + // + if (! context->symbolTable.insert(*variable)) { + context->error(@1, "redefinition", variable->getName().c_str()); + context->recover(); + delete variable; + } + + // + // Add the parameter to the HIL + // + paramNodes = context->intermediate.growAggregate( + paramNodes, + context->intermediate.addSymbol(variable->getUniqueId(), + variable->getName(), + variable->getType(), + @1), + @1); + } else { + paramNodes = context->intermediate.growAggregate(paramNodes, context->intermediate.addSymbol(0, "", *param.type, @1), @1); + } + } + context->intermediate.setAggregateOperator(paramNodes, EOpParameters, @1); + $1.intermAggregate = paramNodes; + context->loopNestingLevel = 0; + } + compound_statement_no_new_scope { + //?? Check that all paths return a value if return type != void ? + // May be best done as post process phase on intermediate code + if (context->currentFunctionType->getBasicType() != EbtVoid && ! context->functionReturnsValue) { + context->error(@1, "function does not return a value:", "", $1.function->getName().c_str()); + context->recover(); + } + + $$ = context->intermediate.growAggregate($1.intermAggregate, $3, @$); + context->intermediate.setAggregateOperator($$, EOpFunction, @1); + $$->getAsAggregate()->setName($1.function->getMangledName().c_str()); + $$->getAsAggregate()->setType($1.function->getReturnType()); + + // store the pragma information for debug and optimize and other vendor specific + // information. This information can be queried from the parse tree + $$->getAsAggregate()->setOptimize(context->pragma().optimize); + $$->getAsAggregate()->setDebug(context->pragma().debug); + + context->symbolTable.pop(); + } + ; + +%% + +void yyerror(YYLTYPE* yylloc, TParseContext* context, const char* reason) { + context->error(*yylloc, reason, ""); + context->recover(); +} + +int glslang_parse(TParseContext* context) { + return yyparse(context); +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp b/Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp new file mode 100644 index 00000000000..a4a2e076b4a --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp @@ -0,0 +1,2940 @@ +#line 17 "./glslang.l" +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// This file is auto-generated by generate_parser.sh. DO NOT EDIT! + +// Ignore errors in auto-generated code. +#if defined(__GNUC__) +#pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic ignored "-Wunused-variable" +#pragma GCC diagnostic ignored "-Wswitch-enum" +#elif defined(_MSC_VER) +#pragma warning(disable: 4065) +#pragma warning(disable: 4189) +#pragma warning(disable: 4505) +#pragma warning(disable: 4701) +#endif + + + +#line 25 "./glslang_lex.cpp" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* An opaque pointer. */ +#ifndef YY_TYPEDEF_YY_SCANNER_T +#define YY_TYPEDEF_YY_SCANNER_T +typedef void* yyscan_t; +#endif + +/* For convenience, these vars (plus the bison vars far below) + are macros in the reentrant scanner. */ +#define yyin yyg->yyin_r +#define yyout yyg->yyout_r +#define yyextra yyg->yyextra_r +#define yyleng yyg->yyleng_r +#define yytext yyg->yytext_r +#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) +#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) +#define yy_flex_debug yyg->yy_flex_debug_r + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yyg->yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yyg->yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart(yyin ,yyscanner ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires + * access to the local variable yy_act. Since yyless() is a macro, it would break + * existing scanners that call yyless() from OUTSIDE yylex. + * One obvious solution it to make yy_act a global. I tried that, and saw + * a 5% performance hit in a non-yylineno scanner, because yy_act is + * normally declared as a register variable-- so it is not worth it. + */ + #define YY_LESS_LINENO(n) \ + do { \ + yy_size_t yyl;\ + for ( yyl = n; yyl < yyleng; ++yyl )\ + if ( yytext[yyl] == '\n' )\ + --yylineno;\ + }while(0) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = yyg->yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + yy_size_t yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ + ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] + +void yyrestart (FILE *input_file ,yyscan_t yyscanner ); +void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); +YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); +void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); +void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); +void yypop_buffer_state (yyscan_t yyscanner ); + +static void yyensure_buffer_stack (yyscan_t yyscanner ); +static void yy_load_buffer_state (yyscan_t yyscanner ); +static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); + +#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) + +YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); +YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); + +void *yyalloc (yy_size_t ,yyscan_t yyscanner ); +void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner ); +void yyfree (void * ,yyscan_t yyscanner ); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define yywrap(n) 1 +#define YY_SKIP_YYWRAP + +typedef unsigned char YY_CHAR; + +typedef int yy_state_type; + +#define yytext_ptr yytext_r + +static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); +static int yy_get_next_buffer (yyscan_t yyscanner ); +static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + yyg->yytext_ptr = yy_bp; \ + yyleng = (yy_size_t) (yy_cp - yy_bp); \ + yyg->yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yyg->yy_c_buf_p = yy_cp; + +#define YY_NUM_RULES 147 +#define YY_END_OF_BUFFER 148 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[443] = + { 0, + 0, 0, 148, 146, 145, 145, 132, 138, 143, 127, + 128, 136, 135, 124, 133, 131, 137, 96, 96, 125, + 121, 139, 126, 140, 144, 93, 129, 130, 142, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 122, + 141, 123, 134, 118, 104, 123, 112, 107, 102, 110, + 100, 111, 101, 99, 103, 98, 95, 96, 0, 0, + 130, 122, 129, 119, 115, 117, 116, 120, 93, 108, + 114, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 12, 93, 93, 93, 93, 93, 93, 93, 93, + + 93, 93, 93, 93, 93, 15, 17, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 109, 113, 0, 98, 0, 0, + 97, 94, 105, 106, 45, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 13, 93, 93, 93, 93, 93, 93, + 93, 93, 21, 93, 93, 93, 93, 93, 93, 93, + 93, 18, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + + 93, 93, 93, 93, 93, 0, 99, 0, 98, 93, + 23, 93, 93, 90, 93, 93, 93, 93, 93, 93, + 93, 16, 48, 93, 93, 93, 64, 93, 93, 53, + 68, 93, 93, 93, 93, 93, 93, 93, 93, 65, + 4, 28, 29, 30, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 51, 24, 93, 93, 93, 93, 93, 93, 31, 32, + 33, 22, 93, 93, 93, 10, 37, 38, 39, 46, + 7, 93, 93, 93, 93, 77, 78, 79, 93, 25, + 69, 20, 80, 81, 82, 2, 74, 75, 76, 93, + + 19, 72, 93, 93, 34, 35, 36, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 66, 93, 93, 93, + 93, 93, 93, 93, 93, 47, 93, 92, 93, 93, + 14, 93, 93, 93, 93, 67, 61, 56, 93, 93, + 93, 93, 93, 73, 52, 93, 59, 27, 93, 89, + 60, 44, 71, 54, 93, 93, 93, 93, 93, 93, + 93, 93, 55, 26, 93, 93, 93, 3, 93, 93, + 93, 93, 93, 49, 8, 93, 9, 93, 93, 11, + 62, 93, 93, 93, 57, 93, 93, 93, 93, 93, + 93, 50, 70, 58, 6, 63, 1, 91, 5, 83, + + 40, 84, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 41, 93, 93, 93, 93, 93, + 93, 93, 43, 93, 87, 93, 93, 93, 93, 93, + 85, 93, 86, 93, 93, 93, 93, 93, 93, 42, + 88, 0 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 1, 1, 1, 5, 6, 1, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 20, 20, 21, 21, 22, 23, 24, + 25, 26, 27, 1, 28, 28, 29, 30, 31, 28, + 32, 32, 32, 32, 32, 32, 32, 32, 33, 32, + 32, 34, 35, 32, 32, 32, 32, 36, 32, 32, + 37, 1, 38, 39, 32, 1, 40, 41, 42, 43, + + 44, 45, 46, 47, 48, 32, 49, 50, 51, 52, + 53, 54, 32, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int32_t yy_meta[68] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 3, 3, 3, 3, 3, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 1, 1, 1, 1 + } ; + +static yyconst flex_int16_t yy_base[445] = + { 0, + 0, 0, 587, 588, 588, 588, 561, 43, 64, 588, + 588, 560, 61, 588, 60, 58, 559, 77, 86, 557, + 588, 104, 557, 55, 588, 0, 588, 588, 75, 26, + 57, 82, 83, 73, 93, 528, 97, 95, 527, 44, + 71, 521, 104, 534, 110, 116, 35, 111, 530, 588, + 114, 588, 588, 588, 588, 588, 588, 588, 588, 588, + 588, 588, 588, 165, 588, 172, 202, 211, 233, 0, + 588, 588, 588, 551, 588, 588, 588, 550, 0, 588, + 588, 523, 516, 519, 527, 526, 513, 528, 515, 521, + 509, 506, 519, 506, 503, 503, 509, 497, 108, 502, + + 512, 498, 504, 507, 508, 0, 145, 507, 113, 493, + 506, 497, 499, 489, 503, 500, 502, 485, 490, 487, + 476, 157, 484, 489, 485, 487, 476, 479, 118, 484, + 476, 488, 70, 481, 588, 588, 246, 253, 270, 219, + 283, 0, 588, 588, 0, 473, 477, 486, 483, 467, + 467, 119, 482, 479, 479, 477, 474, 466, 472, 459, + 470, 456, 472, 0, 469, 457, 464, 461, 465, 458, + 447, 446, 459, 462, 459, 454, 445, 188, 450, 453, + 444, 441, 445, 451, 442, 433, 436, 434, 444, 430, + 428, 441, 427, 429, 426, 437, 436, 124, 431, 426, + + 415, 258, 433, 435, 424, 290, 297, 304, 311, 425, + 0, 423, 275, 0, 415, 413, 421, 410, 427, 416, + 316, 0, 0, 410, 420, 420, 0, 405, 319, 0, + 0, 407, 322, 408, 402, 401, 402, 401, 325, 0, + 0, 0, 0, 0, 397, 398, 403, 394, 407, 402, + 401, 393, 397, 389, 392, 396, 401, 387, 399, 390, + 0, 0, 396, 385, 385, 390, 389, 386, 0, 0, + 0, 0, 376, 388, 390, 0, 0, 0, 0, 0, + 0, 378, 379, 373, 383, 0, 0, 0, 374, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 381, + + 0, 0, 379, 375, 0, 0, 0, 371, 367, 372, + 362, 375, 361, 374, 363, 370, 0, 368, 370, 354, + 356, 362, 368, 363, 351, 0, 353, 0, 352, 355, + 0, 344, 343, 343, 356, 0, 358, 0, 357, 356, + 341, 354, 341, 0, 0, 344, 0, 0, 336, 0, + 0, 0, 0, 0, 333, 344, 337, 343, 340, 335, + 327, 339, 0, 0, 332, 339, 328, 0, 337, 334, + 324, 329, 332, 0, 0, 332, 0, 330, 329, 0, + 0, 328, 314, 326, 0, 317, 338, 337, 336, 307, + 303, 0, 0, 0, 0, 0, 0, 0, 0, 328, + + 166, 325, 316, 299, 308, 310, 306, 308, 307, 306, + 309, 306, 256, 253, 0, 228, 238, 222, 235, 203, + 207, 204, 212, 191, 0, 201, 165, 167, 153, 161, + 0, 170, 0, 175, 151, 141, 100, 114, 59, 0, + 0, 588, 359, 113 + } ; + +static yyconst flex_int16_t yy_def[445] = + { 0, + 442, 1, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 443, 442, 442, 442, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 444, + 442, 442, 442, 442, 442, 442, 442, 442, 443, 442, + 442, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 442, 442, 442, 442, 442, 442, + 442, 444, 442, 442, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + + 443, 443, 443, 443, 443, 442, 442, 442, 442, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 0, 442, 442 + } ; + +static yyconst flex_int16_t yy_nxt[656] = + { 0, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 19, 19, 19, 19, + 19, 20, 21, 22, 23, 24, 25, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 26, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 26, 26, 26, 50, 51, 52, 53, 55, 56, 57, + 60, 62, 64, 64, 64, 64, 64, 64, 64, 77, + 78, 82, 83, 110, 63, 61, 129, 111, 58, 66, + 130, 67, 67, 67, 67, 67, 67, 68, 66, 80, + + 68, 68, 68, 68, 68, 68, 68, 69, 72, 84, + 112, 85, 70, 81, 142, 86, 69, 203, 441, 204, + 69, 87, 94, 113, 95, 73, 90, 74, 75, 69, + 91, 88, 97, 96, 89, 92, 103, 70, 135, 106, + 98, 93, 99, 115, 104, 100, 107, 162, 440, 119, + 131, 101, 439, 108, 132, 105, 120, 121, 116, 125, + 163, 117, 126, 133, 176, 198, 122, 123, 264, 124, + 127, 438, 177, 199, 216, 217, 265, 128, 136, 64, + 64, 64, 64, 64, 64, 64, 138, 138, 138, 138, + 138, 138, 138, 437, 170, 137, 190, 171, 172, 406, + + 407, 173, 139, 174, 242, 243, 244, 436, 137, 435, + 434, 191, 433, 432, 66, 139, 67, 67, 67, 67, + 67, 67, 68, 66, 431, 68, 68, 68, 68, 68, + 68, 68, 69, 141, 141, 141, 141, 141, 141, 141, + 430, 69, 140, 429, 140, 69, 428, 141, 141, 141, + 141, 141, 141, 141, 69, 206, 427, 206, 426, 425, + 207, 207, 207, 207, 207, 207, 207, 138, 138, 138, + 138, 138, 138, 138, 269, 270, 271, 424, 423, 208, + 422, 208, 421, 139, 209, 209, 209, 209, 209, 209, + 209, 277, 278, 279, 420, 419, 139, 141, 141, 141, + + 141, 141, 141, 141, 207, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 286, 287, 288, 293, 294, 295, 297, 298, + 299, 305, 306, 307, 387, 388, 389, 418, 417, 416, + 415, 414, 413, 412, 411, 410, 409, 390, 408, 391, + 79, 79, 405, 404, 403, 402, 401, 400, 399, 398, + 397, 396, 395, 394, 393, 392, 386, 385, 384, 383, + 382, 381, 380, 379, 378, 377, 376, 375, 374, 373, + 372, 371, 370, 369, 368, 367, 366, 365, 364, 363, + + 362, 361, 360, 359, 358, 357, 356, 355, 354, 353, + 352, 351, 350, 349, 348, 347, 346, 345, 344, 343, + 342, 341, 340, 339, 338, 337, 336, 335, 334, 333, + 332, 331, 330, 329, 328, 327, 326, 325, 324, 323, + 322, 321, 320, 319, 318, 317, 316, 315, 314, 313, + 312, 311, 310, 309, 308, 304, 303, 302, 301, 300, + 296, 292, 291, 290, 289, 285, 284, 283, 282, 281, + 280, 276, 275, 274, 273, 272, 268, 267, 266, 263, + 262, 261, 260, 259, 258, 257, 256, 255, 254, 253, + 252, 251, 250, 249, 248, 247, 246, 245, 241, 240, + + 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, + 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, + 219, 218, 215, 214, 213, 212, 211, 210, 205, 202, + 201, 200, 197, 196, 195, 194, 193, 192, 189, 188, + 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, + 175, 169, 168, 167, 166, 165, 164, 161, 160, 159, + 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, + 148, 147, 146, 145, 144, 143, 134, 118, 114, 109, + 102, 76, 71, 65, 59, 54, 442, 3, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442 + } ; + +static yyconst flex_int16_t yy_chk[656] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 8, 8, 9, + 13, 15, 16, 16, 16, 16, 16, 16, 16, 24, + 24, 30, 30, 40, 15, 13, 47, 40, 9, 18, + 47, 18, 18, 18, 18, 18, 18, 18, 19, 29, + + 19, 19, 19, 19, 19, 19, 19, 18, 22, 31, + 41, 31, 18, 29, 444, 31, 19, 133, 439, 133, + 18, 32, 34, 41, 34, 22, 33, 22, 22, 19, + 33, 32, 35, 34, 32, 33, 37, 18, 51, 38, + 35, 33, 35, 43, 37, 35, 38, 99, 438, 45, + 48, 35, 437, 38, 48, 37, 45, 45, 43, 46, + 99, 43, 46, 48, 109, 129, 45, 45, 198, 45, + 46, 436, 109, 129, 152, 152, 198, 46, 51, 64, + 64, 64, 64, 64, 64, 64, 66, 66, 66, 66, + 66, 66, 66, 435, 107, 64, 122, 107, 107, 401, + + 401, 107, 66, 107, 178, 178, 178, 434, 64, 432, + 430, 122, 429, 428, 67, 66, 67, 67, 67, 67, + 67, 67, 67, 68, 427, 68, 68, 68, 68, 68, + 68, 68, 67, 140, 140, 140, 140, 140, 140, 140, + 426, 68, 69, 424, 69, 67, 423, 69, 69, 69, + 69, 69, 69, 69, 68, 137, 422, 137, 421, 420, + 137, 137, 137, 137, 137, 137, 137, 138, 138, 138, + 138, 138, 138, 138, 202, 202, 202, 419, 418, 139, + 417, 139, 416, 138, 139, 139, 139, 139, 139, 139, + 139, 213, 213, 213, 414, 413, 138, 141, 141, 141, + + 141, 141, 141, 141, 206, 206, 206, 206, 206, 206, + 206, 207, 207, 207, 207, 207, 207, 207, 208, 208, + 208, 208, 208, 208, 208, 209, 209, 209, 209, 209, + 209, 209, 221, 221, 221, 229, 229, 229, 233, 233, + 233, 239, 239, 239, 372, 372, 372, 412, 411, 410, + 409, 408, 407, 406, 405, 404, 403, 372, 402, 372, + 443, 443, 400, 391, 390, 389, 388, 387, 386, 384, + 383, 382, 379, 378, 376, 373, 371, 370, 369, 367, + 366, 365, 362, 361, 360, 359, 358, 357, 356, 355, + 349, 346, 343, 342, 341, 340, 339, 337, 335, 334, + + 333, 332, 330, 329, 327, 325, 324, 323, 322, 321, + 320, 319, 318, 316, 315, 314, 313, 312, 311, 310, + 309, 308, 304, 303, 300, 289, 285, 284, 283, 282, + 275, 274, 273, 268, 267, 266, 265, 264, 263, 260, + 259, 258, 257, 256, 255, 254, 253, 252, 251, 250, + 249, 248, 247, 246, 245, 238, 237, 236, 235, 234, + 232, 228, 226, 225, 224, 220, 219, 218, 217, 216, + 215, 212, 210, 205, 204, 203, 201, 200, 199, 197, + 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, + 186, 185, 184, 183, 182, 181, 180, 179, 177, 176, + + 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, + 165, 163, 162, 161, 160, 159, 158, 157, 156, 155, + 154, 153, 151, 150, 149, 148, 147, 146, 134, 132, + 131, 130, 128, 127, 126, 125, 124, 123, 121, 120, + 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, + 108, 105, 104, 103, 102, 101, 100, 98, 97, 96, + 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, + 85, 84, 83, 82, 78, 74, 49, 44, 42, 39, + 36, 23, 20, 17, 12, 7, 3, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442 + } ; + +/* Table of booleans, true if rule could match eol. */ +static yyconst flex_int32_t yy_rule_can_match_eol[148] = + { 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, }; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +/* +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +This file contains the Lex specification for GLSL ES. +Based on ANSI C grammar, Lex specification: +http://www.lysator.liu.se/c/ANSI-C-grammar-l.html + +IF YOU MODIFY THIS FILE YOU ALSO NEED TO RUN generate_parser.sh, +WHICH GENERATES THE GLSL ES LEXER (glslang_lex.cpp). +*/ + +#include "compiler/glslang.h" +#include "compiler/ParseHelper.h" +#include "compiler/preprocessor/Token.h" +#include "compiler/util.h" +#include "glslang_tab.h" + +/* windows only pragma */ +#ifdef _MSC_VER +#pragma warning(disable : 4102) +#endif + +#define YY_USER_ACTION \ + yylloc->first_file = yylloc->last_file = yycolumn; \ + yylloc->first_line = yylloc->last_line = yylineno; + +#define YY_INPUT(buf, result, max_size) \ + result = string_input(buf, max_size, yyscanner); + +static yy_size_t string_input(char* buf, yy_size_t max_size, yyscan_t yyscanner); +static int check_type(yyscan_t yyscanner); +static int reserved_word(yyscan_t yyscanner); + +#define INITIAL 0 + +#define YY_EXTRA_TYPE TParseContext* + +/* Holds the entire state of the reentrant scanner. */ +struct yyguts_t + { + + /* User-defined. Not touched by flex. */ + YY_EXTRA_TYPE yyextra_r; + + /* The rest are the same as the globals declared in the non-reentrant scanner. */ + FILE *yyin_r, *yyout_r; + size_t yy_buffer_stack_top; /**< index of top of stack. */ + size_t yy_buffer_stack_max; /**< capacity of stack. */ + YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ + char yy_hold_char; + yy_size_t yy_n_chars; + yy_size_t yyleng_r; + char *yy_c_buf_p; + int yy_init; + int yy_start; + int yy_did_buffer_switch_on_eof; + int yy_start_stack_ptr; + int yy_start_stack_depth; + int *yy_start_stack; + yy_state_type yy_last_accepting_state; + char* yy_last_accepting_cpos; + + int yylineno_r; + int yy_flex_debug_r; + + char *yytext_r; + int yy_more_flag; + int yy_more_len; + + YYSTYPE * yylval_r; + + YYLTYPE * yylloc_r; + + }; /* end struct yyguts_t */ + +static int yy_init_globals (yyscan_t yyscanner ); + + /* This must go here because YYSTYPE and YYLTYPE are included + * from bison output in section 1.*/ + # define yylval yyg->yylval_r + + # define yylloc yyg->yylloc_r + +int yylex_init (yyscan_t* scanner); + +int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy (yyscan_t yyscanner ); + +int yyget_debug (yyscan_t yyscanner ); + +void yyset_debug (int debug_flag ,yyscan_t yyscanner ); + +YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner ); + +void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); + +FILE *yyget_in (yyscan_t yyscanner ); + +void yyset_in (FILE * in_str ,yyscan_t yyscanner ); + +FILE *yyget_out (yyscan_t yyscanner ); + +void yyset_out (FILE * out_str ,yyscan_t yyscanner ); + +yy_size_t yyget_leng (yyscan_t yyscanner ); + +char *yyget_text (yyscan_t yyscanner ); + +int yyget_lineno (yyscan_t yyscanner ); + +void yyset_lineno (int line_number ,yyscan_t yyscanner ); + +YYSTYPE * yyget_lval (yyscan_t yyscanner ); + +void yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); + + YYLTYPE *yyget_lloc (yyscan_t yyscanner ); + + void yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap (yyscan_t yyscanner ); +#else +extern int yywrap (yyscan_t yyscanner ); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (yyscan_t yyscanner ); +#else +static int input (yyscan_t yyscanner ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + yy_size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex \ + (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner); + +#define YY_DECL int yylex \ + (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + yylval = yylval_param; + + yylloc = yylloc_param; + + if ( !yyg->yy_init ) + { + yyg->yy_init = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! yyg->yy_start ) + yyg->yy_start = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); + } + + yy_load_buffer_state(yyscanner ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = yyg->yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yyg->yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = yyg->yy_start; +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 443 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_current_state != 442 ); + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + + if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) + { + yy_size_t yyl; + for ( yyl = 0; yyl < yyleng; ++yyl ) + if ( yytext[yyl] == '\n' ) + + do{ yylineno++; + yycolumn=0; + }while(0) +; + } + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = yyg->yy_hold_char; + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + +case 1: +YY_RULE_SETUP +{ return INVARIANT; } + YY_BREAK +case 2: +YY_RULE_SETUP +{ return HIGH_PRECISION; } + YY_BREAK +case 3: +YY_RULE_SETUP +{ return MEDIUM_PRECISION; } + YY_BREAK +case 4: +YY_RULE_SETUP +{ return LOW_PRECISION; } + YY_BREAK +case 5: +YY_RULE_SETUP +{ return PRECISION; } + YY_BREAK +case 6: +YY_RULE_SETUP +{ return ATTRIBUTE; } + YY_BREAK +case 7: +YY_RULE_SETUP +{ return CONST_QUAL; } + YY_BREAK +case 8: +YY_RULE_SETUP +{ return UNIFORM; } + YY_BREAK +case 9: +YY_RULE_SETUP +{ return VARYING; } + YY_BREAK +case 10: +YY_RULE_SETUP +{ return BREAK; } + YY_BREAK +case 11: +YY_RULE_SETUP +{ return CONTINUE; } + YY_BREAK +case 12: +YY_RULE_SETUP +{ return DO; } + YY_BREAK +case 13: +YY_RULE_SETUP +{ return FOR; } + YY_BREAK +case 14: +YY_RULE_SETUP +{ return WHILE; } + YY_BREAK +case 15: +YY_RULE_SETUP +{ return IF; } + YY_BREAK +case 16: +YY_RULE_SETUP +{ return ELSE; } + YY_BREAK +case 17: +YY_RULE_SETUP +{ return IN_QUAL; } + YY_BREAK +case 18: +YY_RULE_SETUP +{ return OUT_QUAL; } + YY_BREAK +case 19: +YY_RULE_SETUP +{ return INOUT_QUAL; } + YY_BREAK +case 20: +YY_RULE_SETUP +{ return FLOAT_TYPE; } + YY_BREAK +case 21: +YY_RULE_SETUP +{ return INT_TYPE; } + YY_BREAK +case 22: +YY_RULE_SETUP +{ return VOID_TYPE; } + YY_BREAK +case 23: +YY_RULE_SETUP +{ return BOOL_TYPE; } + YY_BREAK +case 24: +YY_RULE_SETUP +{ yylval->lex.b = true; return BOOLCONSTANT; } + YY_BREAK +case 25: +YY_RULE_SETUP +{ yylval->lex.b = false; return BOOLCONSTANT; } + YY_BREAK +case 26: +YY_RULE_SETUP +{ return DISCARD; } + YY_BREAK +case 27: +YY_RULE_SETUP +{ return RETURN; } + YY_BREAK +case 28: +YY_RULE_SETUP +{ return MATRIX2; } + YY_BREAK +case 29: +YY_RULE_SETUP +{ return MATRIX3; } + YY_BREAK +case 30: +YY_RULE_SETUP +{ return MATRIX4; } + YY_BREAK +case 31: +YY_RULE_SETUP +{ return VEC2; } + YY_BREAK +case 32: +YY_RULE_SETUP +{ return VEC3; } + YY_BREAK +case 33: +YY_RULE_SETUP +{ return VEC4; } + YY_BREAK +case 34: +YY_RULE_SETUP +{ return IVEC2; } + YY_BREAK +case 35: +YY_RULE_SETUP +{ return IVEC3; } + YY_BREAK +case 36: +YY_RULE_SETUP +{ return IVEC4; } + YY_BREAK +case 37: +YY_RULE_SETUP +{ return BVEC2; } + YY_BREAK +case 38: +YY_RULE_SETUP +{ return BVEC3; } + YY_BREAK +case 39: +YY_RULE_SETUP +{ return BVEC4; } + YY_BREAK +case 40: +YY_RULE_SETUP +{ return SAMPLER2D; } + YY_BREAK +case 41: +YY_RULE_SETUP +{ return SAMPLERCUBE; } + YY_BREAK +case 42: +YY_RULE_SETUP +{ return SAMPLER_EXTERNAL_OES; } + YY_BREAK +case 43: +YY_RULE_SETUP +{ return SAMPLER2DRECT; } + YY_BREAK +case 44: +YY_RULE_SETUP +{ return STRUCT; } + YY_BREAK +case 45: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 46: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 47: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 48: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 49: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 50: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 51: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 52: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 53: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 54: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 55: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 56: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 57: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 58: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 59: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 60: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 61: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 62: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 63: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 64: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 65: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 66: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 67: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 68: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 69: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 70: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 71: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 72: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 73: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 74: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 75: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 76: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 77: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 78: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 79: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 80: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 81: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 82: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 83: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 84: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 85: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 86: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 87: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 88: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 89: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 90: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 91: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 92: +YY_RULE_SETUP +{ return reserved_word(yyscanner); } + YY_BREAK +case 93: +YY_RULE_SETUP +{ + yylval->lex.string = NewPoolTString(yytext); + return check_type(yyscanner); +} + YY_BREAK +case 94: +YY_RULE_SETUP +{ yylval->lex.i = static_cast(strtol(yytext, 0, 0)); return INTCONSTANT; } + YY_BREAK +case 95: +YY_RULE_SETUP +{ yylval->lex.i = static_cast(strtol(yytext, 0, 0)); return INTCONSTANT; } + YY_BREAK +case 96: +YY_RULE_SETUP +{ yylval->lex.i = static_cast(strtol(yytext, 0, 0)); return INTCONSTANT; } + YY_BREAK +case 97: +YY_RULE_SETUP +{ yylval->lex.f = static_cast(atof_dot(yytext)); return FLOATCONSTANT; } + YY_BREAK +case 98: +YY_RULE_SETUP +{ yylval->lex.f = static_cast(atof_dot(yytext)); return FLOATCONSTANT; } + YY_BREAK +case 99: +YY_RULE_SETUP +{ yylval->lex.f = static_cast(atof_dot(yytext)); return FLOATCONSTANT; } + YY_BREAK +case 100: +YY_RULE_SETUP +{ return ADD_ASSIGN; } + YY_BREAK +case 101: +YY_RULE_SETUP +{ return SUB_ASSIGN; } + YY_BREAK +case 102: +YY_RULE_SETUP +{ return MUL_ASSIGN; } + YY_BREAK +case 103: +YY_RULE_SETUP +{ return DIV_ASSIGN; } + YY_BREAK +case 104: +YY_RULE_SETUP +{ return MOD_ASSIGN; } + YY_BREAK +case 105: +YY_RULE_SETUP +{ return LEFT_ASSIGN; } + YY_BREAK +case 106: +YY_RULE_SETUP +{ return RIGHT_ASSIGN; } + YY_BREAK +case 107: +YY_RULE_SETUP +{ return AND_ASSIGN; } + YY_BREAK +case 108: +YY_RULE_SETUP +{ return XOR_ASSIGN; } + YY_BREAK +case 109: +YY_RULE_SETUP +{ return OR_ASSIGN; } + YY_BREAK +case 110: +YY_RULE_SETUP +{ return INC_OP; } + YY_BREAK +case 111: +YY_RULE_SETUP +{ return DEC_OP; } + YY_BREAK +case 112: +YY_RULE_SETUP +{ return AND_OP; } + YY_BREAK +case 113: +YY_RULE_SETUP +{ return OR_OP; } + YY_BREAK +case 114: +YY_RULE_SETUP +{ return XOR_OP; } + YY_BREAK +case 115: +YY_RULE_SETUP +{ return LE_OP; } + YY_BREAK +case 116: +YY_RULE_SETUP +{ return GE_OP; } + YY_BREAK +case 117: +YY_RULE_SETUP +{ return EQ_OP; } + YY_BREAK +case 118: +YY_RULE_SETUP +{ return NE_OP; } + YY_BREAK +case 119: +YY_RULE_SETUP +{ return LEFT_OP; } + YY_BREAK +case 120: +YY_RULE_SETUP +{ return RIGHT_OP; } + YY_BREAK +case 121: +YY_RULE_SETUP +{ return SEMICOLON; } + YY_BREAK +case 122: +YY_RULE_SETUP +{ return LEFT_BRACE; } + YY_BREAK +case 123: +YY_RULE_SETUP +{ return RIGHT_BRACE; } + YY_BREAK +case 124: +YY_RULE_SETUP +{ return COMMA; } + YY_BREAK +case 125: +YY_RULE_SETUP +{ return COLON; } + YY_BREAK +case 126: +YY_RULE_SETUP +{ return EQUAL; } + YY_BREAK +case 127: +YY_RULE_SETUP +{ return LEFT_PAREN; } + YY_BREAK +case 128: +YY_RULE_SETUP +{ return RIGHT_PAREN; } + YY_BREAK +case 129: +YY_RULE_SETUP +{ return LEFT_BRACKET; } + YY_BREAK +case 130: +YY_RULE_SETUP +{ return RIGHT_BRACKET; } + YY_BREAK +case 131: +YY_RULE_SETUP +{ return DOT; } + YY_BREAK +case 132: +YY_RULE_SETUP +{ return BANG; } + YY_BREAK +case 133: +YY_RULE_SETUP +{ return DASH; } + YY_BREAK +case 134: +YY_RULE_SETUP +{ return TILDE; } + YY_BREAK +case 135: +YY_RULE_SETUP +{ return PLUS; } + YY_BREAK +case 136: +YY_RULE_SETUP +{ return STAR; } + YY_BREAK +case 137: +YY_RULE_SETUP +{ return SLASH; } + YY_BREAK +case 138: +YY_RULE_SETUP +{ return PERCENT; } + YY_BREAK +case 139: +YY_RULE_SETUP +{ return LEFT_ANGLE; } + YY_BREAK +case 140: +YY_RULE_SETUP +{ return RIGHT_ANGLE; } + YY_BREAK +case 141: +YY_RULE_SETUP +{ return VERTICAL_BAR; } + YY_BREAK +case 142: +YY_RULE_SETUP +{ return CARET; } + YY_BREAK +case 143: +YY_RULE_SETUP +{ return AMPERSAND; } + YY_BREAK +case 144: +YY_RULE_SETUP +{ return QUESTION; } + YY_BREAK +case 145: +/* rule 145 can match eol */ +YY_RULE_SETUP +{ } + YY_BREAK +case YY_STATE_EOF(INITIAL): +{ yyterminate(); } + YY_BREAK +case 146: +YY_RULE_SETUP +{ assert(false); return 0; } + YY_BREAK +case 147: +YY_RULE_SETUP +ECHO; + YY_BREAK + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yyg->yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( yyscanner ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); + + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++yyg->yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( yyscanner ) ) + { + case EOB_ACT_END_OF_FILE: + { + yyg->yy_did_buffer_switch_on_eof = 0; + + if ( yywrap(yyscanner ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! yyg->yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( yyscanner ); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yyg->yy_c_buf_p = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; + + yy_current_state = yy_get_previous_state( yyscanner ); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = yyg->yytext_ptr; + register int number_to_move, i; + int ret_val; + + if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; + + else + { + yy_size_t num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) (yyg->yy_c_buf_p - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + yy_size_t new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + yyg->yy_n_chars, num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + if ( yyg->yy_n_chars == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart(yyin ,yyscanner); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + + yyg->yy_n_chars += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; + + yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (yyscan_t yyscanner) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + yy_current_state = yyg->yy_start; + + for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 443 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) +{ + register int yy_is_jam; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ + register char *yy_cp = yyg->yy_c_buf_p; + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 443 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 442); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (yyscan_t yyscanner) +#else + static int input (yyscan_t yyscanner) +#endif + +{ + int c; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + *yyg->yy_c_buf_p = yyg->yy_hold_char; + + if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) + /* This was really a NUL. */ + *yyg->yy_c_buf_p = '\0'; + + else + { /* need more input */ + yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + ++yyg->yy_c_buf_p; + + switch ( yy_get_next_buffer( yyscanner ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart(yyin ,yyscanner); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap(yyscanner ) ) + return 0; + + if ( ! yyg->yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(yyscanner); +#else + return input(yyscanner); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = yyg->yytext_ptr + offset; + break; + } + } + } + + c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ + *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ + yyg->yy_hold_char = *++yyg->yy_c_buf_p; + + if ( c == '\n' ) + + do{ yylineno++; + yycolumn=0; + }while(0) +; + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * @param yyscanner The scanner object. + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); + } + + yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); + yy_load_buffer_state(yyscanner ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * @param yyscanner The scanner object. + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (yyscanner); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state(yyscanner ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + yyg->yy_did_buffer_switch_on_eof = 1; +} + +static void yy_load_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + yyg->yy_hold_char = *yyg->yy_c_buf_p; +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * @param yyscanner The scanner object. + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ,yyscanner ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer(b,file ,yyscanner); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * @param yyscanner The scanner object. + */ + void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree((void *) b->yy_ch_buf ,yyscanner ); + + yyfree((void *) b ,yyscanner ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) + +{ + int oerrno = errno; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + yy_flush_buffer(b ,yyscanner); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * @param yyscanner The scanner object. + */ + void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state(yyscanner ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * @param yyscanner The scanner object. + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(yyscanner); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + yyg->yy_buffer_stack_top++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state(yyscanner ); + yyg->yy_did_buffer_switch_on_eof = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * @param yyscanner The scanner object. + */ +void yypop_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + if (yyg->yy_buffer_stack_top > 0) + --yyg->yy_buffer_stack_top; + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state(yyscanner ); + yyg->yy_did_buffer_switch_on_eof = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (yyscan_t yyscanner) +{ + yy_size_t num_to_alloc; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (!yyg->yy_buffer_stack) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + , yyscanner); + if ( ! yyg->yy_buffer_stack ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + yyg->yy_buffer_stack_max = num_to_alloc; + yyg->yy_buffer_stack_top = 0; + return; + } + + if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = yyg->yy_buffer_stack_max + grow_size; + yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc + (yyg->yy_buffer_stack, + num_to_alloc * sizeof(struct yy_buffer_state*) + , yyscanner); + if ( ! yyg->yy_buffer_stack ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); + yyg->yy_buffer_stack_max = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer(b ,yyscanner ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner) +{ + + return yy_scan_bytes(yystr,strlen(yystr) ,yyscanner); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n, i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) yyalloc(n ,yyscanner ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer(buf,n ,yyscanner); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = yyg->yy_hold_char; \ + yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ + yyg->yy_hold_char = *yyg->yy_c_buf_p; \ + *yyg->yy_c_buf_p = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the user-defined data for this scanner. + * @param yyscanner The scanner object. + */ +YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyextra; +} + +/** Get the current line number. + * @param yyscanner The scanner object. + */ +int yyget_lineno (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (! YY_CURRENT_BUFFER) + return 0; + + return yylineno; +} + +/** Get the current column number. + * @param yyscanner The scanner object. + */ +int yyget_column (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (! YY_CURRENT_BUFFER) + return 0; + + return yycolumn; +} + +/** Get the input stream. + * @param yyscanner The scanner object. + */ +FILE *yyget_in (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyin; +} + +/** Get the output stream. + * @param yyscanner The scanner object. + */ +FILE *yyget_out (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyout; +} + +/** Get the length of the current token. + * @param yyscanner The scanner object. + */ +yy_size_t yyget_leng (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyleng; +} + +/** Get the current token. + * @param yyscanner The scanner object. + */ + +char *yyget_text (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yytext; +} + +/** Set the user-defined data. This data is never touched by the scanner. + * @param user_defined The data to be associated with this scanner. + * @param yyscanner The scanner object. + */ +void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyextra = user_defined ; +} + +/** Set the current line number. + * @param line_number + * @param yyscanner The scanner object. + */ +void yyset_lineno (int line_number , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* lineno is only valid if an input buffer exists. */ + if (! YY_CURRENT_BUFFER ) + yy_fatal_error( "yyset_lineno called with no buffer" , yyscanner); + + yylineno = line_number; +} + +/** Set the current column. + * @param line_number + * @param yyscanner The scanner object. + */ +void yyset_column (int column_no , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* column is only valid if an input buffer exists. */ + if (! YY_CURRENT_BUFFER ) + yy_fatal_error( "yyset_column called with no buffer" , yyscanner); + + yycolumn = column_no; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * @param yyscanner The scanner object. + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * in_str , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyin = in_str ; +} + +void yyset_out (FILE * out_str , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyout = out_str ; +} + +int yyget_debug (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yy_flex_debug; +} + +void yyset_debug (int bdebug , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yy_flex_debug = bdebug ; +} + +/* Accessor methods for yylval and yylloc */ + +YYSTYPE * yyget_lval (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yylval; +} + +void yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yylval = yylval_param; +} + +YYLTYPE *yyget_lloc (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yylloc; +} + +void yyset_lloc (YYLTYPE * yylloc_param , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yylloc = yylloc_param; +} + +/* User-visible API */ + +/* yylex_init is special because it creates the scanner itself, so it is + * the ONLY reentrant function that doesn't take the scanner as the last argument. + * That's why we explicitly handle the declaration, instead of using our macros. + */ + +int yylex_init(yyscan_t* ptr_yy_globals) + +{ + if (ptr_yy_globals == NULL){ + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL ); + + if (*ptr_yy_globals == NULL){ + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ + memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); + + return yy_init_globals ( *ptr_yy_globals ); +} + +/* yylex_init_extra has the same functionality as yylex_init, but follows the + * convention of taking the scanner as the last argument. Note however, that + * this is a *pointer* to a scanner, as it will be allocated by this call (and + * is the reason, too, why this function also must handle its own declaration). + * The user defined value in the first argument will be available to yyalloc in + * the yyextra field. + */ + +int yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) + +{ + struct yyguts_t dummy_yyguts; + + yyset_extra (yy_user_defined, &dummy_yyguts); + + if (ptr_yy_globals == NULL){ + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); + + if (*ptr_yy_globals == NULL){ + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in + yy_init_globals. Leave at 0x00 for releases. */ + memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); + + yyset_extra (yy_user_defined, *ptr_yy_globals); + + return yy_init_globals ( *ptr_yy_globals ); +} + +static int yy_init_globals (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + yyg->yy_buffer_stack = 0; + yyg->yy_buffer_stack_top = 0; + yyg->yy_buffer_stack_max = 0; + yyg->yy_c_buf_p = (char *) 0; + yyg->yy_init = 0; + yyg->yy_start = 0; + + yyg->yy_start_stack_ptr = 0; + yyg->yy_start_stack_depth = 0; + yyg->yy_start_stack = NULL; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(yyscanner); + } + + /* Destroy the stack itself. */ + yyfree(yyg->yy_buffer_stack ,yyscanner); + yyg->yy_buffer_stack = NULL; + + /* Destroy the start condition stack. */ + yyfree(yyg->yy_start_stack ,yyscanner ); + yyg->yy_start_stack = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( yyscanner); + + /* Destroy the main struct (reentrant only). */ + yyfree ( yyscanner , yyscanner ); + yyscanner = NULL; + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size , yyscan_t yyscanner) +{ + return (void *) malloc( size ); +} + +void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void yyfree (void * ptr , yyscan_t yyscanner) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +yy_size_t string_input(char* buf, yy_size_t max_size, yyscan_t yyscanner) { + pp::Token token; + yyget_extra(yyscanner)->preprocessor.lex(&token); + yy_size_t len = token.type == pp::Token::LAST ? 0 : token.text.size(); + if (len < max_size) + memcpy(buf, token.text.c_str(), len); + yyset_column(token.location.file,yyscanner); + yyset_lineno(token.location.line,yyscanner); + + if (len >= max_size) + YY_FATAL_ERROR("Input buffer overflow"); + else if (len > 0) + buf[len++] = ' '; + return len; +} + +int check_type(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*) yyscanner; + + int token = IDENTIFIER; + TSymbol* symbol = yyextra->symbolTable.find(yytext); + if (symbol && symbol->isVariable()) { + TVariable* variable = static_cast(symbol); + if (variable->isUserType()) + token = TYPE_NAME; + } + yylval->lex.symbol = symbol; + return token; +} + +int reserved_word(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*) yyscanner; + + yyextra->error(*yylloc, "Illegal use of reserved word", yytext, ""); + yyextra->recover(); + return 0; +} + +int glslang_initialize(TParseContext* context) { + yyscan_t scanner = NULL; + if (yylex_init_extra(context,&scanner)) + return 1; + + context->scanner = scanner; + return 0; +} + +int glslang_finalize(TParseContext* context) { + yyscan_t scanner = context->scanner; + if (scanner == NULL) return 0; + + context->scanner = NULL; + yylex_destroy(scanner); + + return 0; +} + +int glslang_scan(size_t count, const char* const string[], const int length[], + TParseContext* context) { + yyrestart(NULL,context->scanner); + yyset_column(0,context->scanner); + yyset_lineno(1,context->scanner); + + // Initialize preprocessor. + if (!context->preprocessor.init(count, string, length)) + return 1; + + // Define extension macros. + const TExtensionBehavior& extBehavior = context->extensionBehavior(); + for (TExtensionBehavior::const_iterator iter = extBehavior.begin(); + iter != extBehavior.end(); ++iter) { + context->preprocessor.predefineMacro(iter->first.c_str(), 1); + } + if (context->fragmentPrecisionHigh) + context->preprocessor.predefineMacro("GL_FRAGMENT_PRECISION_HIGH", 1); + + return 0; +} + diff --git a/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp b/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp new file mode 100644 index 00000000000..4b0ed2fcc8f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp @@ -0,0 +1,4833 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Using locations. */ +#define YYLSP_NEEDED 1 + + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + INVARIANT = 258, + HIGH_PRECISION = 259, + MEDIUM_PRECISION = 260, + LOW_PRECISION = 261, + PRECISION = 262, + ATTRIBUTE = 263, + CONST_QUAL = 264, + BOOL_TYPE = 265, + FLOAT_TYPE = 266, + INT_TYPE = 267, + BREAK = 268, + CONTINUE = 269, + DO = 270, + ELSE = 271, + FOR = 272, + IF = 273, + DISCARD = 274, + RETURN = 275, + BVEC2 = 276, + BVEC3 = 277, + BVEC4 = 278, + IVEC2 = 279, + IVEC3 = 280, + IVEC4 = 281, + VEC2 = 282, + VEC3 = 283, + VEC4 = 284, + MATRIX2 = 285, + MATRIX3 = 286, + MATRIX4 = 287, + IN_QUAL = 288, + OUT_QUAL = 289, + INOUT_QUAL = 290, + UNIFORM = 291, + VARYING = 292, + STRUCT = 293, + VOID_TYPE = 294, + WHILE = 295, + SAMPLER2D = 296, + SAMPLERCUBE = 297, + SAMPLER_EXTERNAL_OES = 298, + SAMPLER2DRECT = 299, + IDENTIFIER = 300, + TYPE_NAME = 301, + FLOATCONSTANT = 302, + INTCONSTANT = 303, + BOOLCONSTANT = 304, + LEFT_OP = 305, + RIGHT_OP = 306, + INC_OP = 307, + DEC_OP = 308, + LE_OP = 309, + GE_OP = 310, + EQ_OP = 311, + NE_OP = 312, + AND_OP = 313, + OR_OP = 314, + XOR_OP = 315, + MUL_ASSIGN = 316, + DIV_ASSIGN = 317, + ADD_ASSIGN = 318, + MOD_ASSIGN = 319, + LEFT_ASSIGN = 320, + RIGHT_ASSIGN = 321, + AND_ASSIGN = 322, + XOR_ASSIGN = 323, + OR_ASSIGN = 324, + SUB_ASSIGN = 325, + LEFT_PAREN = 326, + RIGHT_PAREN = 327, + LEFT_BRACKET = 328, + RIGHT_BRACKET = 329, + LEFT_BRACE = 330, + RIGHT_BRACE = 331, + DOT = 332, + COMMA = 333, + COLON = 334, + EQUAL = 335, + SEMICOLON = 336, + BANG = 337, + DASH = 338, + TILDE = 339, + PLUS = 340, + STAR = 341, + SLASH = 342, + PERCENT = 343, + LEFT_ANGLE = 344, + RIGHT_ANGLE = 345, + VERTICAL_BAR = 346, + CARET = 347, + AMPERSAND = 348, + QUESTION = 349 + }; +#endif +/* Tokens. */ +#define INVARIANT 258 +#define HIGH_PRECISION 259 +#define MEDIUM_PRECISION 260 +#define LOW_PRECISION 261 +#define PRECISION 262 +#define ATTRIBUTE 263 +#define CONST_QUAL 264 +#define BOOL_TYPE 265 +#define FLOAT_TYPE 266 +#define INT_TYPE 267 +#define BREAK 268 +#define CONTINUE 269 +#define DO 270 +#define ELSE 271 +#define FOR 272 +#define IF 273 +#define DISCARD 274 +#define RETURN 275 +#define BVEC2 276 +#define BVEC3 277 +#define BVEC4 278 +#define IVEC2 279 +#define IVEC3 280 +#define IVEC4 281 +#define VEC2 282 +#define VEC3 283 +#define VEC4 284 +#define MATRIX2 285 +#define MATRIX3 286 +#define MATRIX4 287 +#define IN_QUAL 288 +#define OUT_QUAL 289 +#define INOUT_QUAL 290 +#define UNIFORM 291 +#define VARYING 292 +#define STRUCT 293 +#define VOID_TYPE 294 +#define WHILE 295 +#define SAMPLER2D 296 +#define SAMPLERCUBE 297 +#define SAMPLER_EXTERNAL_OES 298 +#define SAMPLER2DRECT 299 +#define IDENTIFIER 300 +#define TYPE_NAME 301 +#define FLOATCONSTANT 302 +#define INTCONSTANT 303 +#define BOOLCONSTANT 304 +#define LEFT_OP 305 +#define RIGHT_OP 306 +#define INC_OP 307 +#define DEC_OP 308 +#define LE_OP 309 +#define GE_OP 310 +#define EQ_OP 311 +#define NE_OP 312 +#define AND_OP 313 +#define OR_OP 314 +#define XOR_OP 315 +#define MUL_ASSIGN 316 +#define DIV_ASSIGN 317 +#define ADD_ASSIGN 318 +#define MOD_ASSIGN 319 +#define LEFT_ASSIGN 320 +#define RIGHT_ASSIGN 321 +#define AND_ASSIGN 322 +#define XOR_ASSIGN 323 +#define OR_ASSIGN 324 +#define SUB_ASSIGN 325 +#define LEFT_PAREN 326 +#define RIGHT_PAREN 327 +#define LEFT_BRACKET 328 +#define RIGHT_BRACKET 329 +#define LEFT_BRACE 330 +#define RIGHT_BRACE 331 +#define DOT 332 +#define COMMA 333 +#define COLON 334 +#define EQUAL 335 +#define SEMICOLON 336 +#define BANG 337 +#define DASH 338 +#define TILDE 339 +#define PLUS 340 +#define STAR 341 +#define SLASH 342 +#define PERCENT 343 +#define LEFT_ANGLE 344 +#define RIGHT_ANGLE 345 +#define VERTICAL_BAR 346 +#define CARET 347 +#define AMPERSAND 348 +#define QUESTION 349 + + + + +/* Copy the first part of user declarations. */ + + +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// This file is auto-generated by generate_parser.sh. DO NOT EDIT! + +// Ignore errors in auto-generated code. +#if defined(__GNUC__) +#pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic ignored "-Wunused-variable" +#pragma GCC diagnostic ignored "-Wswitch-enum" +#elif defined(_MSC_VER) +#pragma warning(disable: 4065) +#pragma warning(disable: 4189) +#pragma warning(disable: 4505) +#pragma warning(disable: 4701) +#endif + +#include "compiler/SymbolTable.h" +#include "compiler/ParseHelper.h" +#include "GLSLANG/ShaderLang.h" + +#define YYENABLE_NLS 0 + +#define YYLEX_PARAM context->scanner + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE + +{ +#define YYLTYPE TSourceLoc +#define YYLTYPE_IS_DECLARED 1 + struct { + union { + TString *string; + float f; + int i; + bool b; + }; + TSymbol* symbol; + } lex; + struct { + TOperator op; + union { + TIntermNode* intermNode; + TIntermNodePair nodePair; + TIntermTyped* intermTypedNode; + TIntermAggregate* intermAggregate; + }; + union { + TPublicType type; + TPrecision precision; + TQualifier qualifier; + TFunction* function; + TParameter param; + TField* field; + TFieldList* fieldList; + }; + } interm; +} +/* Line 193 of yacc.c. */ + + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED +typedef struct YYLTYPE +{ + int first_line; + int first_column; + int last_line; + int last_column; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +# define YYLTYPE_IS_DECLARED 1 +# define YYLTYPE_IS_TRIVIAL 1 +#endif + + +/* Copy the second part of user declarations. */ + + +extern int yylex(YYSTYPE* yylval, YYLTYPE* yylloc, void* yyscanner); +static void yyerror(YYLTYPE* yylloc, TParseContext* context, const char* reason); + +#define YYLLOC_DEFAULT(Current, Rhs, N) \ + do { \ + if (YYID(N)) { \ + (Current).first_file = YYRHSLOC(Rhs, 1).first_file; \ + (Current).first_line = YYRHSLOC(Rhs, 1).first_line; \ + (Current).last_file = YYRHSLOC(Rhs, N).last_file; \ + (Current).last_line = YYRHSLOC(Rhs, N).last_line; \ + } \ + else { \ + (Current).first_file = YYRHSLOC(Rhs, 0).last_file; \ + (Current).first_line = YYRHSLOC(Rhs, 0).last_line; \ + (Current).last_file = YYRHSLOC(Rhs, 0).last_file; \ + (Current).last_line = YYRHSLOC(Rhs, 0).last_line; \ + } \ + } while (0) + +#define VERTEX_ONLY(S, L) { \ + if (context->shaderType != SH_VERTEX_SHADER) { \ + context->error(L, " supported in vertex shaders only ", S); \ + context->recover(); \ + } \ +} + +#define FRAG_ONLY(S, L) { \ + if (context->shaderType != SH_FRAGMENT_SHADER) { \ + context->error(L, " supported in fragment shaders only ", S); \ + context->recover(); \ + } \ +} + + +/* Line 216 of yacc.c. */ + + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ + && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + YYLTYPE yyls; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ + + 2 * YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 74 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 1490 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 95 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 84 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 202 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 307 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 349 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 5, 7, 9, 11, 13, 15, 17, + 21, 23, 28, 30, 34, 37, 40, 42, 44, 46, + 50, 53, 56, 59, 61, 64, 68, 71, 73, 75, + 77, 80, 83, 86, 88, 90, 92, 94, 98, 102, + 104, 108, 112, 114, 116, 120, 124, 128, 132, 134, + 138, 142, 144, 146, 148, 150, 154, 156, 160, 162, + 166, 168, 174, 176, 180, 182, 184, 186, 188, 190, + 192, 196, 198, 201, 204, 209, 212, 214, 216, 219, + 223, 227, 230, 236, 240, 243, 247, 250, 251, 253, + 255, 257, 259, 261, 265, 271, 278, 284, 286, 289, + 294, 300, 305, 308, 310, 313, 315, 317, 319, 322, + 324, 326, 329, 331, 333, 335, 337, 342, 344, 346, + 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, + 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, + 387, 394, 395, 401, 403, 406, 410, 412, 416, 418, + 423, 425, 427, 429, 431, 433, 435, 437, 439, 441, + 444, 445, 446, 452, 454, 456, 457, 460, 461, 464, + 467, 471, 473, 476, 478, 481, 487, 491, 493, 495, + 500, 501, 508, 509, 518, 519, 527, 529, 531, 533, + 534, 537, 541, 544, 547, 550, 554, 557, 559, 562, + 564, 566, 567 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 175, 0, -1, 45, -1, 46, -1, 45, -1, 97, + -1, 48, -1, 47, -1, 49, -1, 71, 124, 72, + -1, 98, -1, 99, 73, 100, 74, -1, 101, -1, + 99, 77, 96, -1, 99, 52, -1, 99, 53, -1, + 124, -1, 102, -1, 103, -1, 99, 77, 103, -1, + 105, 72, -1, 104, 72, -1, 106, 39, -1, 106, + -1, 106, 122, -1, 105, 78, 122, -1, 107, 71, + -1, 142, -1, 45, -1, 99, -1, 52, 108, -1, + 53, 108, -1, 109, 108, -1, 85, -1, 83, -1, + 82, -1, 108, -1, 110, 86, 108, -1, 110, 87, + 108, -1, 110, -1, 111, 85, 110, -1, 111, 83, + 110, -1, 111, -1, 112, -1, 113, 89, 112, -1, + 113, 90, 112, -1, 113, 54, 112, -1, 113, 55, + 112, -1, 113, -1, 114, 56, 113, -1, 114, 57, + 113, -1, 114, -1, 115, -1, 116, -1, 117, -1, + 118, 58, 117, -1, 118, -1, 119, 60, 118, -1, + 119, -1, 120, 59, 119, -1, 120, -1, 120, 94, + 124, 79, 122, -1, 121, -1, 108, 123, 122, -1, + 80, -1, 61, -1, 62, -1, 63, -1, 70, -1, + 122, -1, 124, 78, 122, -1, 121, -1, 127, 81, + -1, 135, 81, -1, 7, 140, 141, 81, -1, 128, + 72, -1, 130, -1, 129, -1, 130, 132, -1, 129, + 78, 132, -1, 137, 45, 71, -1, 139, 96, -1, + 139, 96, 73, 125, 74, -1, 138, 133, 131, -1, + 133, 131, -1, 138, 133, 134, -1, 133, 134, -1, + -1, 33, -1, 34, -1, 35, -1, 139, -1, 136, + -1, 135, 78, 96, -1, 135, 78, 96, 73, 74, + -1, 135, 78, 96, 73, 125, 74, -1, 135, 78, + 96, 80, 150, -1, 137, -1, 137, 96, -1, 137, + 96, 73, 74, -1, 137, 96, 73, 125, 74, -1, + 137, 96, 80, 150, -1, 3, 45, -1, 139, -1, + 138, 139, -1, 9, -1, 8, -1, 37, -1, 3, + 37, -1, 36, -1, 141, -1, 140, 141, -1, 4, + -1, 5, -1, 6, -1, 142, -1, 142, 73, 125, + 74, -1, 39, -1, 11, -1, 12, -1, 10, -1, + 27, -1, 28, -1, 29, -1, 21, -1, 22, -1, + 23, -1, 24, -1, 25, -1, 26, -1, 30, -1, + 31, -1, 32, -1, 41, -1, 42, -1, 43, -1, + 44, -1, 143, -1, 46, -1, -1, 38, 96, 75, + 144, 146, 76, -1, -1, 38, 75, 145, 146, 76, + -1, 147, -1, 146, 147, -1, 139, 148, 81, -1, + 149, -1, 148, 78, 149, -1, 96, -1, 96, 73, + 125, 74, -1, 122, -1, 126, -1, 154, -1, 153, + -1, 151, -1, 163, -1, 164, -1, 167, -1, 174, + -1, 75, 76, -1, -1, -1, 75, 155, 162, 156, + 76, -1, 161, -1, 153, -1, -1, 159, 161, -1, + -1, 160, 153, -1, 75, 76, -1, 75, 162, 76, + -1, 152, -1, 162, 152, -1, 81, -1, 124, 81, + -1, 18, 71, 124, 72, 165, -1, 158, 16, 158, + -1, 158, -1, 124, -1, 137, 96, 80, 150, -1, + -1, 40, 71, 168, 166, 72, 157, -1, -1, 15, + 169, 158, 40, 71, 124, 72, 81, -1, -1, 17, + 71, 170, 171, 173, 72, 157, -1, 163, -1, 151, + -1, 166, -1, -1, 172, 81, -1, 172, 81, 124, + -1, 14, 81, -1, 13, 81, -1, 20, 81, -1, + 20, 124, 81, -1, 19, 81, -1, 176, -1, 175, + 176, -1, 177, -1, 126, -1, -1, 127, 178, 161, + -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 176, 176, 177, 180, 223, 226, 239, 244, 249, + 255, 258, 261, 264, 359, 369, 382, 390, 490, 493, + 501, 504, 510, 514, 521, 527, 536, 544, 599, 609, + 612, 622, 632, 653, 654, 655, 660, 661, 669, 680, + 681, 689, 700, 704, 705, 715, 725, 735, 748, 749, + 759, 772, 776, 780, 784, 785, 798, 799, 812, 813, + 826, 827, 844, 845, 858, 859, 860, 861, 862, 866, + 869, 880, 888, 915, 920, 934, 989, 992, 999, 1007, + 1028, 1049, 1059, 1087, 1092, 1102, 1107, 1117, 1120, 1123, + 1126, 1132, 1139, 1142, 1164, 1182, 1206, 1229, 1233, 1251, + 1259, 1291, 1311, 1332, 1341, 1364, 1367, 1373, 1381, 1389, + 1397, 1407, 1414, 1417, 1420, 1426, 1429, 1444, 1448, 1452, + 1456, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, + 1505, 1510, 1515, 1520, 1524, 1528, 1536, 1544, 1548, 1561, + 1561, 1575, 1575, 1584, 1587, 1603, 1636, 1640, 1646, 1653, + 1668, 1672, 1676, 1677, 1683, 1684, 1685, 1686, 1687, 1691, + 1692, 1692, 1692, 1702, 1703, 1707, 1707, 1708, 1708, 1713, + 1716, 1726, 1729, 1735, 1736, 1740, 1748, 1752, 1762, 1767, + 1784, 1784, 1789, 1789, 1796, 1796, 1804, 1807, 1813, 1816, + 1822, 1826, 1833, 1840, 1847, 1854, 1865, 1874, 1878, 1885, + 1888, 1894, 1894 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "INVARIANT", "HIGH_PRECISION", + "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "ATTRIBUTE", + "CONST_QUAL", "BOOL_TYPE", "FLOAT_TYPE", "INT_TYPE", "BREAK", "CONTINUE", + "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", "BVEC2", "BVEC3", + "BVEC4", "IVEC2", "IVEC3", "IVEC4", "VEC2", "VEC3", "VEC4", "MATRIX2", + "MATRIX3", "MATRIX4", "IN_QUAL", "OUT_QUAL", "INOUT_QUAL", "UNIFORM", + "VARYING", "STRUCT", "VOID_TYPE", "WHILE", "SAMPLER2D", "SAMPLERCUBE", + "SAMPLER_EXTERNAL_OES", "SAMPLER2DRECT", "IDENTIFIER", "TYPE_NAME", + "FLOATCONSTANT", "INTCONSTANT", "BOOLCONSTANT", "LEFT_OP", "RIGHT_OP", + "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", + "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", + "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", + "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET", + "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON", + "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH", + "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", + "AMPERSAND", "QUESTION", "$accept", "identifier", "variable_identifier", + "primary_expression", "postfix_expression", "integer_expression", + "function_call", "function_call_or_method", "function_call_generic", + "function_call_header_no_parameters", + "function_call_header_with_parameters", "function_call_header", + "function_identifier", "unary_expression", "unary_operator", + "multiplicative_expression", "additive_expression", "shift_expression", + "relational_expression", "equality_expression", "and_expression", + "exclusive_or_expression", "inclusive_or_expression", + "logical_and_expression", "logical_xor_expression", + "logical_or_expression", "conditional_expression", + "assignment_expression", "assignment_operator", "expression", + "constant_expression", "declaration", "function_prototype", + "function_declarator", "function_header_with_parameters", + "function_header", "parameter_declarator", "parameter_declaration", + "parameter_qualifier", "parameter_type_specifier", + "init_declarator_list", "single_declaration", "fully_specified_type", + "type_qualifier", "type_specifier", "precision_qualifier", + "type_specifier_no_prec", "type_specifier_nonarray", "struct_specifier", + "@1", "@2", "struct_declaration_list", "struct_declaration", + "struct_declarator_list", "struct_declarator", "initializer", + "declaration_statement", "statement", "simple_statement", + "compound_statement", "@3", "@4", "statement_no_new_scope", + "statement_with_scope", "@5", "@6", "compound_statement_no_new_scope", + "statement_list", "expression_statement", "selection_statement", + "selection_rest_statement", "condition", "iteration_statement", "@7", + "@8", "@9", "for_init_statement", "conditionopt", "for_rest_statement", + "jump_statement", "translation_unit", "external_declaration", + "function_definition", "@10", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 95, 96, 96, 97, 98, 98, 98, 98, 98, + 99, 99, 99, 99, 99, 99, 100, 101, 102, 102, + 103, 103, 104, 104, 105, 105, 106, 107, 107, 108, + 108, 108, 108, 109, 109, 109, 110, 110, 110, 111, + 111, 111, 112, 113, 113, 113, 113, 113, 114, 114, + 114, 115, 116, 117, 118, 118, 119, 119, 120, 120, + 121, 121, 122, 122, 123, 123, 123, 123, 123, 124, + 124, 125, 126, 126, 126, 127, 128, 128, 129, 129, + 130, 131, 131, 132, 132, 132, 132, 133, 133, 133, + 133, 134, 135, 135, 135, 135, 135, 136, 136, 136, + 136, 136, 136, 137, 137, 138, 138, 138, 138, 138, + 139, 139, 140, 140, 140, 141, 141, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 144, + 143, 145, 143, 146, 146, 147, 148, 148, 149, 149, + 150, 151, 152, 152, 153, 153, 153, 153, 153, 154, + 155, 156, 154, 157, 157, 159, 158, 160, 158, 161, + 161, 162, 162, 163, 163, 164, 165, 165, 166, 166, + 168, 167, 169, 167, 170, 167, 171, 171, 172, 172, + 173, 173, 174, 174, 174, 174, 174, 175, 175, 176, + 176, 178, 177 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 1, 1, 1, 1, 1, 1, 3, + 1, 4, 1, 3, 2, 2, 1, 1, 1, 3, + 2, 2, 2, 1, 2, 3, 2, 1, 1, 1, + 2, 2, 2, 1, 1, 1, 1, 3, 3, 1, + 3, 3, 1, 1, 3, 3, 3, 3, 1, 3, + 3, 1, 1, 1, 1, 3, 1, 3, 1, 3, + 1, 5, 1, 3, 1, 1, 1, 1, 1, 1, + 3, 1, 2, 2, 4, 2, 1, 1, 2, 3, + 3, 2, 5, 3, 2, 3, 2, 0, 1, 1, + 1, 1, 1, 3, 5, 6, 5, 1, 2, 4, + 5, 4, 2, 1, 2, 1, 1, 1, 2, 1, + 1, 2, 1, 1, 1, 1, 4, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 6, 0, 5, 1, 2, 3, 1, 3, 1, 4, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 0, 5, 1, 1, 0, 2, 0, 2, 2, + 3, 1, 2, 1, 2, 5, 3, 1, 1, 4, + 0, 6, 0, 8, 0, 7, 1, 1, 1, 0, + 2, 3, 2, 2, 2, 3, 2, 1, 2, 1, + 1, 0, 3 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 0, 0, 112, 113, 114, 0, 106, 105, 120, 118, + 119, 124, 125, 126, 127, 128, 129, 121, 122, 123, + 130, 131, 132, 109, 107, 0, 117, 133, 134, 135, + 136, 138, 200, 201, 0, 77, 87, 0, 92, 97, + 0, 103, 0, 110, 115, 137, 0, 197, 199, 108, + 102, 0, 2, 3, 141, 0, 72, 0, 75, 87, + 0, 88, 89, 90, 78, 0, 87, 0, 73, 2, + 98, 104, 111, 0, 1, 198, 0, 0, 139, 0, + 202, 79, 84, 86, 91, 0, 93, 80, 0, 0, + 4, 7, 6, 8, 0, 0, 0, 35, 34, 33, + 5, 10, 29, 12, 17, 18, 0, 0, 23, 0, + 36, 0, 39, 42, 43, 48, 51, 52, 53, 54, + 56, 58, 60, 71, 0, 27, 74, 0, 0, 143, + 0, 0, 0, 182, 0, 0, 0, 0, 0, 160, + 169, 173, 36, 62, 69, 0, 151, 0, 115, 154, + 171, 153, 152, 0, 155, 156, 157, 158, 81, 83, + 85, 0, 0, 99, 0, 150, 101, 30, 31, 0, + 14, 15, 0, 0, 21, 20, 0, 22, 24, 26, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 116, 148, 0, 146, 142, + 144, 0, 193, 192, 167, 184, 0, 196, 194, 0, + 180, 159, 0, 65, 66, 67, 68, 64, 0, 0, + 174, 170, 172, 0, 94, 0, 96, 100, 9, 0, + 16, 2, 3, 13, 19, 25, 37, 38, 41, 40, + 46, 47, 44, 45, 49, 50, 55, 57, 59, 0, + 0, 0, 145, 140, 0, 0, 0, 0, 0, 195, + 0, 161, 63, 70, 0, 95, 11, 0, 0, 147, + 0, 166, 168, 187, 186, 189, 167, 178, 0, 0, + 0, 82, 61, 149, 0, 188, 0, 0, 177, 175, + 0, 0, 162, 0, 190, 0, 167, 0, 164, 181, + 163, 0, 191, 185, 176, 179, 183 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 196, 100, 101, 102, 229, 103, 104, 105, 106, + 107, 108, 109, 142, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 143, 144, 218, 145, + 124, 146, 147, 34, 35, 36, 82, 64, 65, 83, + 37, 38, 39, 40, 41, 42, 43, 125, 45, 130, + 77, 128, 129, 197, 198, 166, 149, 150, 151, 152, + 212, 280, 299, 254, 255, 256, 300, 153, 154, 155, + 289, 279, 156, 260, 204, 257, 275, 286, 287, 157, + 46, 47, 48, 57 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -261 +static const yytype_int16 yypact[] = +{ + 1327, -20, -261, -261, -261, 113, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -19, -261, -261, -261, -261, + -261, -261, -261, -61, -40, -28, 75, -7, -261, 24, + 1370, -261, 1444, -261, -11, -261, 1283, -261, -261, -261, + -261, 1444, -261, -261, -261, 6, -261, 54, -261, 88, + 62, -261, -261, -261, -261, 1370, 59, 91, -261, 36, + -50, -261, -261, 1051, -261, -261, 63, 1370, -261, 293, + -261, -261, -261, -261, 91, 1370, -12, -261, 856, 1051, + 77, -261, -261, -261, 1051, 1051, 1051, -261, -261, -261, + -261, -261, -14, -261, -261, -261, 84, -44, 1116, 95, + -261, 1051, 53, 3, -261, -36, 89, -261, -261, -261, + 104, 107, -45, -261, 96, -261, -261, 91, 1184, -261, + 1370, 92, 93, -261, 98, 101, 94, 921, 105, 102, + -261, -261, 72, -261, -261, 9, -261, -61, 42, -261, + -261, -261, -261, 376, -261, -261, -261, -261, 106, -261, + -261, 986, 1051, -261, 103, -261, -261, -261, -261, -41, + -261, -261, 1051, 1407, -261, -261, 1051, 110, -261, -261, + -261, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, + 1051, 1051, 1051, 1051, 1051, -261, 109, 23, -261, -261, + -261, 1227, -261, -261, 111, -261, 1051, -261, -261, 25, + -261, -261, 459, -261, -261, -261, -261, -261, 1051, 1051, + -261, -261, -261, 1051, -261, 114, -261, -261, -261, 115, + 112, 77, 116, -261, -261, -261, -261, -261, 53, 53, + -261, -261, -261, -261, -36, -36, -261, 104, 107, 76, + 1051, 91, -261, -261, 145, 54, 625, 708, -6, -261, + 791, 459, -261, -261, 117, -261, -261, 1051, 120, -261, + 124, -261, -261, -261, -261, 791, 111, 112, 91, 125, + 122, -261, -261, -261, 1051, -261, 118, 128, 180, -261, + 126, 542, -261, -5, 1051, 542, 111, 1051, -261, -261, + -261, 123, 112, -261, -261, -261, -261 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -261, -24, -261, -261, -261, -261, -261, -261, 34, -261, + -261, -261, -261, 32, -261, -33, -261, -27, -26, -261, + -261, -261, 14, 16, 18, -261, -66, -87, -261, -92, + -85, 11, 12, -261, -261, -261, 141, 150, 161, 143, + -261, -261, -231, 5, -30, 224, -18, 0, -261, -261, + -261, 100, -119, -261, -17, -156, -25, -145, -243, -261, + -261, -261, -64, -260, -261, -261, -52, 21, -22, -261, + -261, -39, -261, -261, -261, -261, -261, -261, -261, -261, + -261, 191, -261, -261 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -166 +static const yytype_int16 yytable[] = +{ + 44, 55, 165, 164, 169, 80, 226, 123, 222, 200, + 71, 32, 33, 272, 193, 70, 288, 49, 185, 186, + 56, 178, 123, 88, 72, 50, 52, 53, 175, 278, + 89, 228, 58, 76, 176, 84, 304, 219, 170, 171, + 44, 66, 44, 86, 278, 209, 44, 127, 298, 194, + 59, 44, 298, 187, 188, 84, 54, 32, 33, 172, + 158, 161, 73, 173, 66, 44, 276, 301, 162, 69, + 53, 67, 219, 219, 68, 165, 225, 44, 60, 148, + 230, 78, 200, 6, 7, 44, 183, 219, 184, 235, + 220, 60, 61, 62, 63, 123, 6, 7, 127, 49, + 127, 251, 249, 219, 252, 110, 259, 87, 61, 62, + 63, 23, 24, -27, 258, 73, 222, 2, 3, 4, + 110, 61, 62, 63, 23, 24, 167, 168, 44, 79, + 44, 262, 263, 213, 214, 215, 52, 53, 264, 181, + 182, 305, 216, 180, 126, 189, 190, -76, -28, 233, + 238, 239, 217, 148, 219, 267, 174, 123, 240, 241, + 242, 243, 191, 244, 245, 268, 179, 192, 277, 205, + 195, 127, 206, 202, 203, 207, 210, 227, 211, 223, + 282, -117, 250, 277, 123, 270, -165, -138, 265, 266, + 219, 281, 293, 110, 283, 284, 296, 291, 292, 294, + 295, 44, 302, 271, 306, 246, 297, 234, 247, 81, + 165, 248, 148, 236, 237, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 159, 85, 160, 51, + 201, 303, 273, 261, 269, 274, 285, 75, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 290, 110, 148, 148, 0, 0, + 148, 148, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, + 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, + 0, 148, 0, 0, 0, 148, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 131, 132, 133, 0, + 134, 135, 136, 137, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 0, 0, 0, 23, + 24, 25, 26, 138, 27, 28, 29, 30, 90, 31, + 91, 92, 93, 0, 0, 94, 95, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 96, 0, 0, 0, 139, 140, + 0, 0, 0, 0, 141, 97, 98, 0, 99, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 131, + 132, 133, 0, 134, 135, 136, 137, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, + 0, 0, 23, 24, 25, 26, 138, 27, 28, 29, + 30, 90, 31, 91, 92, 93, 0, 0, 94, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, + 0, 139, 221, 0, 0, 0, 0, 141, 97, 98, + 0, 99, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 131, 132, 133, 0, 134, 135, 136, 137, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 0, 0, 0, 23, 24, 25, 26, 138, + 27, 28, 29, 30, 90, 31, 91, 92, 93, 0, + 0, 94, 95, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 0, 0, 0, 139, 0, 0, 0, 0, 0, + 141, 97, 98, 0, 99, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 131, 132, 133, 0, 134, + 135, 136, 137, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 0, 0, 0, 23, 24, + 25, 26, 138, 27, 28, 29, 30, 90, 31, 91, + 92, 93, 0, 0, 94, 95, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 96, 0, 0, 0, 79, 0, 0, + 0, 0, 0, 141, 97, 98, 0, 99, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 131, 132, + 133, 0, 134, 135, 136, 137, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, + 0, 23, 24, 25, 26, 138, 27, 28, 29, 30, + 90, 31, 91, 92, 93, 0, 0, 94, 95, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 141, 97, 98, 0, + 99, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 0, 0, 0, 23, 24, 25, 26, 0, 27, + 28, 29, 30, 90, 31, 91, 92, 93, 0, 0, + 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, + 97, 98, 0, 99, 60, 2, 3, 4, 0, 6, + 7, 8, 9, 10, 0, 0, 0, 0, 0, 0, + 0, 0, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 0, 0, 0, 23, 24, 25, + 26, 0, 27, 28, 29, 30, 90, 31, 91, 92, + 93, 0, 0, 94, 95, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 0, 8, 9, 10, 0, + 0, 0, 0, 97, 98, 0, 99, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, + 0, 0, 0, 0, 25, 26, 0, 27, 28, 29, + 30, 90, 31, 91, 92, 93, 0, 0, 94, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, + 163, 8, 9, 10, 0, 0, 0, 0, 97, 98, + 0, 99, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 0, 0, 0, 0, 0, 25, + 26, 0, 27, 28, 29, 30, 90, 31, 91, 92, + 93, 0, 0, 94, 95, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 0, 8, 9, 10, 0, + 0, 0, 208, 97, 98, 0, 99, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, + 0, 0, 0, 0, 25, 26, 0, 27, 28, 29, + 30, 90, 31, 91, 92, 93, 0, 0, 94, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, + 224, 8, 9, 10, 0, 0, 0, 0, 97, 98, + 0, 99, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 0, 0, 0, 0, 0, 25, + 26, 0, 27, 28, 29, 30, 90, 31, 91, 92, + 93, 0, 0, 94, 95, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 0, 8, 9, 10, 0, + 0, 0, 0, 97, 98, 0, 99, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, + 0, 0, 0, 0, 25, 177, 0, 27, 28, 29, + 30, 90, 31, 91, 92, 93, 0, 0, 94, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 2, 3, + 4, 0, 0, 0, 8, 9, 10, 0, 97, 98, + 0, 99, 0, 0, 0, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, + 0, 0, 25, 26, 0, 27, 28, 29, 30, 0, + 31, 2, 3, 4, 0, 0, 0, 8, 9, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 199, 0, 0, 0, 0, 25, 26, 0, 27, 28, + 29, 30, 0, 31, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 74, 0, 0, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, + 0, 0, 0, 253, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 0, 0, 0, 23, + 24, 25, 26, 0, 27, 28, 29, 30, 0, 31, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 0, 0, 0, 23, 24, 25, 26, 0, 27, 28, + 29, 30, 0, 31, 2, 3, 4, 0, 0, 0, + 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 0, 0, 0, 0, 0, 25, 26, + 0, 27, 28, 29, 30, 0, 31, 8, 9, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 0, 0, 0, 0, 0, 25, 26, 0, 27, 28, + 29, 30, 231, 232, 8, 9, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, + 0, 0, 25, 26, 0, 27, 28, 29, 30, 0, + 31 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 25, 89, 88, 96, 57, 162, 73, 153, 128, + 40, 0, 0, 256, 59, 39, 276, 37, 54, 55, + 81, 108, 88, 73, 42, 45, 45, 46, 72, 260, + 80, 72, 72, 51, 78, 65, 296, 78, 52, 53, + 40, 36, 42, 67, 275, 137, 46, 77, 291, 94, + 78, 51, 295, 89, 90, 85, 75, 46, 46, 73, + 84, 73, 73, 77, 59, 65, 72, 72, 80, 45, + 46, 78, 78, 78, 81, 162, 161, 77, 3, 79, + 172, 75, 201, 8, 9, 85, 83, 78, 85, 176, + 81, 3, 33, 34, 35, 161, 8, 9, 128, 37, + 130, 78, 194, 78, 81, 73, 81, 71, 33, 34, + 35, 36, 37, 71, 206, 73, 261, 4, 5, 6, + 88, 33, 34, 35, 36, 37, 94, 95, 128, 75, + 130, 218, 219, 61, 62, 63, 45, 46, 223, 86, + 87, 297, 70, 111, 81, 56, 57, 72, 71, 173, + 183, 184, 80, 153, 78, 79, 72, 223, 185, 186, + 187, 188, 58, 189, 190, 250, 71, 60, 260, 71, + 74, 201, 71, 81, 81, 81, 71, 74, 76, 73, + 267, 71, 73, 275, 250, 40, 75, 71, 74, 74, + 78, 74, 284, 161, 74, 71, 16, 72, 76, 81, + 72, 201, 294, 255, 81, 191, 80, 173, 192, 59, + 297, 193, 212, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 85, 66, 85, 5, + 130, 295, 257, 212, 251, 257, 275, 46, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 278, 223, 256, 257, -1, -1, + 260, 261, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 275, -1, -1, -1, -1, + -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, + -1, 291, -1, -1, -1, 295, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, -1, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, -1, -1, 52, 53, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 71, -1, -1, -1, 75, 76, + -1, -1, -1, -1, 81, 82, 83, -1, 85, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, -1, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, + -1, -1, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, -1, -1, 52, 53, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, + -1, 75, 76, -1, -1, -1, -1, 81, 82, 83, + -1, 85, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, -1, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, -1, -1, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, -1, + -1, 52, 53, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 71, -1, -1, -1, 75, -1, -1, -1, -1, -1, + 81, 82, 83, -1, 85, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, -1, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, -1, -1, 52, 53, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 71, -1, -1, -1, 75, -1, -1, + -1, -1, -1, 81, 82, 83, -1, 85, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, -1, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, + -1, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, -1, -1, 52, 53, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 81, 82, 83, -1, + 85, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, -1, -1, -1, -1, -1, -1, -1, -1, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, -1, -1, -1, 36, 37, 38, 39, -1, 41, + 42, 43, 44, 45, 46, 47, 48, 49, -1, -1, + 52, 53, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, + 82, 83, -1, 85, 3, 4, 5, 6, -1, 8, + 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, + -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, -1, -1, 36, 37, 38, + 39, -1, 41, 42, 43, 44, 45, 46, 47, 48, + 49, -1, -1, 52, 53, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 71, -1, -1, -1, 10, 11, 12, -1, + -1, -1, -1, 82, 83, -1, 85, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, + -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, + 44, 45, 46, 47, 48, 49, -1, -1, 52, 53, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, + 74, 10, 11, 12, -1, -1, -1, -1, 82, 83, + -1, 85, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, -1, -1, -1, -1, 38, + 39, -1, 41, 42, 43, 44, 45, 46, 47, 48, + 49, -1, -1, 52, 53, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 71, -1, -1, -1, 10, 11, 12, -1, + -1, -1, 81, 82, 83, -1, 85, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, + -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, + 44, 45, 46, 47, 48, 49, -1, -1, 52, 53, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, + 74, 10, 11, 12, -1, -1, -1, -1, 82, 83, + -1, 85, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, -1, -1, -1, -1, 38, + 39, -1, 41, 42, 43, 44, 45, 46, 47, 48, + 49, -1, -1, 52, 53, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 71, -1, -1, -1, 10, 11, 12, -1, + -1, -1, -1, 82, 83, -1, 85, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, + -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, + 44, 45, 46, 47, 48, 49, -1, -1, 52, 53, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 71, 4, 5, + 6, -1, -1, -1, 10, 11, 12, -1, 82, 83, + -1, 85, -1, -1, -1, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, + -1, -1, 38, 39, -1, 41, 42, 43, 44, -1, + 46, 4, 5, 6, -1, -1, -1, 10, 11, 12, + -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 76, -1, -1, -1, -1, 38, 39, -1, 41, 42, + 43, 44, -1, 46, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 0, -1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, -1, -1, -1, -1, + -1, -1, -1, 76, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, + 37, 38, 39, -1, 41, 42, 43, 44, -1, 46, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, -1, -1, 36, 37, 38, 39, -1, 41, 42, + 43, 44, -1, 46, 4, 5, 6, -1, -1, -1, + 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, + -1, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, -1, -1, -1, -1, -1, 38, 39, + -1, 41, 42, 43, 44, -1, 46, 10, 11, 12, + -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, + 43, 44, 45, 46, 10, 11, 12, -1, -1, -1, + -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, + -1, -1, 38, 39, -1, 41, 42, 43, 44, -1, + 46 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 36, 37, 38, 39, 41, 42, 43, + 44, 46, 126, 127, 128, 129, 130, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 175, 176, 177, 37, + 45, 140, 45, 46, 75, 96, 81, 178, 72, 78, + 3, 33, 34, 35, 132, 133, 138, 78, 81, 45, + 96, 139, 141, 73, 0, 176, 141, 145, 75, 75, + 161, 132, 131, 134, 139, 133, 96, 71, 73, 80, + 45, 47, 48, 49, 52, 53, 71, 82, 83, 85, + 97, 98, 99, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 125, 142, 81, 139, 146, 147, + 144, 13, 14, 15, 17, 18, 19, 20, 40, 75, + 76, 81, 108, 121, 122, 124, 126, 127, 142, 151, + 152, 153, 154, 162, 163, 164, 167, 174, 96, 131, + 134, 73, 80, 74, 125, 122, 150, 108, 108, 124, + 52, 53, 73, 77, 72, 72, 78, 39, 122, 71, + 108, 86, 87, 83, 85, 54, 55, 89, 90, 56, + 57, 58, 60, 59, 94, 74, 96, 148, 149, 76, + 147, 146, 81, 81, 169, 71, 71, 81, 81, 124, + 71, 76, 155, 61, 62, 63, 70, 80, 123, 78, + 81, 76, 152, 73, 74, 125, 150, 74, 72, 100, + 124, 45, 46, 96, 103, 122, 108, 108, 110, 110, + 112, 112, 112, 112, 113, 113, 117, 118, 119, 124, + 73, 78, 81, 76, 158, 159, 160, 170, 124, 81, + 168, 162, 122, 122, 125, 74, 74, 79, 125, 149, + 40, 161, 153, 151, 163, 171, 72, 124, 137, 166, + 156, 74, 122, 74, 71, 166, 172, 173, 158, 165, + 96, 72, 76, 124, 81, 72, 16, 80, 153, 157, + 161, 72, 124, 157, 158, 150, 81 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (&yylloc, context, YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval, &yylloc) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, Location, context); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, TParseContext* context) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, context) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + YYLTYPE const * const yylocationp; + TParseContext* context; +#endif +{ + if (!yyvaluep) + return; + YYUSE (yylocationp); + YYUSE (context); +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, TParseContext* context) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, context) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + YYLTYPE const * const yylocationp; + TParseContext* context; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + YY_LOCATION_PRINT (yyoutput, *yylocationp); + YYFPRINTF (yyoutput, ": "); + yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, context); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, TParseContext* context) +#else +static void +yy_reduce_print (yyvsp, yylsp, yyrule, context) + YYSTYPE *yyvsp; + YYLTYPE *yylsp; + int yyrule; + TParseContext* context; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , &(yylsp[(yyi + 1) - (yynrhs)]) , context); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, yylsp, Rule, context); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, TParseContext* context) +#else +static void +yydestruct (yymsg, yytype, yyvaluep, yylocationp, context) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + YYLTYPE *yylocationp; + TParseContext* context; +#endif +{ + YYUSE (yyvaluep); + YYUSE (yylocationp); + YYUSE (context); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (TParseContext* context); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (TParseContext* context) +#else +int +yyparse (context) + TParseContext* context; +#endif +#endif +{ + /* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; +/* Location data for the look-ahead symbol. */ +YYLTYPE yylloc; + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + /* The location stack. */ + YYLTYPE yylsa[YYINITDEPTH]; + YYLTYPE *yyls = yylsa; + YYLTYPE *yylsp; + /* The locations where the error started and ended. */ + YYLTYPE yyerror_range[2]; + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + YYLTYPE yyloc; + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + yylsp = yyls; +#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL + /* Initialize the default location before parsing starts. */ + yylloc.first_line = yylloc.last_line = 1; + yylloc.first_column = yylloc.last_column = 0; +#endif + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + YYLTYPE *yyls1 = yyls; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yyls1, yysize * sizeof (*yylsp), + &yystacksize); + yyls = yyls1; + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + YYSTACK_RELOCATE (yyls); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + yylsp = yyls + yysize - 1; + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + *++yylsp = yylloc; + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + /* Default location. */ + YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 4: + + { + // The symbol table search was done in the lexical phase + const TSymbol* symbol = (yyvsp[(1) - (1)].lex).symbol; + const TVariable* variable; + if (symbol == 0) { + context->error((yylsp[(1) - (1)]), "undeclared identifier", (yyvsp[(1) - (1)].lex).string->c_str()); + context->recover(); + TType type(EbtFloat, EbpUndefined); + TVariable* fakeVariable = new TVariable((yyvsp[(1) - (1)].lex).string, type); + context->symbolTable.insert(*fakeVariable); + variable = fakeVariable; + } else { + // This identifier can only be a variable type symbol + if (! symbol->isVariable()) { + context->error((yylsp[(1) - (1)]), "variable expected", (yyvsp[(1) - (1)].lex).string->c_str()); + context->recover(); + } + + variable = static_cast(symbol); + + if (context->symbolTable.findBuiltIn(variable->getName()) && + !variable->getExtension().empty() && + context->extensionErrorCheck((yylsp[(1) - (1)]), variable->getExtension())) { + context->recover(); + } + } + + // don't delete $1.string, it's used by error recovery, and the pool + // pop will reclaim the memory + + if (variable->getType().getQualifier() == EvqConst ) { + ConstantUnion* constArray = variable->getConstPointer(); + TType t(variable->getType()); + (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(constArray, t, (yylsp[(1) - (1)])); + } else + (yyval.interm.intermTypedNode) = context->intermediate.addSymbol(variable->getUniqueId(), + variable->getName(), + variable->getType(), + (yylsp[(1) - (1)])); + ;} + break; + + case 5: + + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + ;} + break; + + case 6: + + { + // + // INT_TYPE is only 16-bit plus sign bit for vertex/fragment shaders, + // check for overflow for constants + // + if (abs((yyvsp[(1) - (1)].lex).i) >= (1 << 16)) { + context->error((yylsp[(1) - (1)]), " integer constant overflow", ""); + context->recover(); + } + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setIConst((yyvsp[(1) - (1)].lex).i); + (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtInt, EbpUndefined, EvqConst), (yylsp[(1) - (1)])); + ;} + break; + + case 7: + + { + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setFConst((yyvsp[(1) - (1)].lex).f); + (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtFloat, EbpUndefined, EvqConst), (yylsp[(1) - (1)])); + ;} + break; + + case 8: + + { + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst((yyvsp[(1) - (1)].lex).b); + (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(1) - (1)])); + ;} + break; + + case 9: + + { + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode); + ;} + break; + + case 10: + + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + ;} + break; + + case 11: + + { + (yyval.interm.intermTypedNode) = context->addIndexExpression((yyvsp[(1) - (4)].interm.intermTypedNode), (yylsp[(2) - (4)]), (yyvsp[(3) - (4)].interm.intermTypedNode)); + ;} + break; + + case 12: + + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + ;} + break; + + case 13: + + { + if ((yyvsp[(1) - (3)].interm.intermTypedNode)->isArray()) { + context->error((yylsp[(3) - (3)]), "cannot apply dot operator to an array", "."); + context->recover(); + } + + if ((yyvsp[(1) - (3)].interm.intermTypedNode)->isVector()) { + TVectorFields fields; + if (! context->parseVectorFields(*(yyvsp[(3) - (3)].lex).string, (yyvsp[(1) - (3)].interm.intermTypedNode)->getNominalSize(), fields, (yylsp[(3) - (3)]))) { + fields.num = 1; + fields.offsets[0] = 0; + context->recover(); + } + + if ((yyvsp[(1) - (3)].interm.intermTypedNode)->getType().getQualifier() == EvqConst) { // constant folding for vector fields + (yyval.interm.intermTypedNode) = context->addConstVectorNode(fields, (yyvsp[(1) - (3)].interm.intermTypedNode), (yylsp[(3) - (3)])); + if ((yyval.interm.intermTypedNode) == 0) { + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + else + (yyval.interm.intermTypedNode)->setType(TType((yyvsp[(1) - (3)].interm.intermTypedNode)->getBasicType(), (yyvsp[(1) - (3)].interm.intermTypedNode)->getPrecision(), EvqConst, (int) (*(yyvsp[(3) - (3)].lex).string).size())); + } else { + TString vectorString = *(yyvsp[(3) - (3)].lex).string; + TIntermTyped* index = context->intermediate.addSwizzle(fields, (yylsp[(3) - (3)])); + (yyval.interm.intermTypedNode) = context->intermediate.addIndex(EOpVectorSwizzle, (yyvsp[(1) - (3)].interm.intermTypedNode), index, (yylsp[(2) - (3)])); + (yyval.interm.intermTypedNode)->setType(TType((yyvsp[(1) - (3)].interm.intermTypedNode)->getBasicType(), (yyvsp[(1) - (3)].interm.intermTypedNode)->getPrecision(), EvqTemporary, (int) vectorString.size())); + } + } else if ((yyvsp[(1) - (3)].interm.intermTypedNode)->isMatrix()) { + TMatrixFields fields; + if (! context->parseMatrixFields(*(yyvsp[(3) - (3)].lex).string, (yyvsp[(1) - (3)].interm.intermTypedNode)->getNominalSize(), fields, (yylsp[(3) - (3)]))) { + fields.wholeRow = false; + fields.wholeCol = false; + fields.row = 0; + fields.col = 0; + context->recover(); + } + + if (fields.wholeRow || fields.wholeCol) { + context->error((yylsp[(2) - (3)]), " non-scalar fields not implemented yet", "."); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setIConst(0); + TIntermTyped* index = context->intermediate.addConstantUnion(unionArray, TType(EbtInt, EbpUndefined, EvqConst), (yylsp[(3) - (3)])); + (yyval.interm.intermTypedNode) = context->intermediate.addIndex(EOpIndexDirect, (yyvsp[(1) - (3)].interm.intermTypedNode), index, (yylsp[(2) - (3)])); + (yyval.interm.intermTypedNode)->setType(TType((yyvsp[(1) - (3)].interm.intermTypedNode)->getBasicType(), (yyvsp[(1) - (3)].interm.intermTypedNode)->getPrecision(),EvqTemporary, (yyvsp[(1) - (3)].interm.intermTypedNode)->getNominalSize())); + } else { + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setIConst(fields.col * (yyvsp[(1) - (3)].interm.intermTypedNode)->getNominalSize() + fields.row); + TIntermTyped* index = context->intermediate.addConstantUnion(unionArray, TType(EbtInt, EbpUndefined, EvqConst), (yylsp[(3) - (3)])); + (yyval.interm.intermTypedNode) = context->intermediate.addIndex(EOpIndexDirect, (yyvsp[(1) - (3)].interm.intermTypedNode), index, (yylsp[(2) - (3)])); + (yyval.interm.intermTypedNode)->setType(TType((yyvsp[(1) - (3)].interm.intermTypedNode)->getBasicType(), (yyvsp[(1) - (3)].interm.intermTypedNode)->getPrecision())); + } + } else if ((yyvsp[(1) - (3)].interm.intermTypedNode)->getBasicType() == EbtStruct) { + bool fieldFound = false; + const TFieldList& fields = (yyvsp[(1) - (3)].interm.intermTypedNode)->getType().getStruct()->fields(); + unsigned int i; + for (i = 0; i < fields.size(); ++i) { + if (fields[i]->name() == *(yyvsp[(3) - (3)].lex).string) { + fieldFound = true; + break; + } + } + if (fieldFound) { + if ((yyvsp[(1) - (3)].interm.intermTypedNode)->getType().getQualifier() == EvqConst) { + (yyval.interm.intermTypedNode) = context->addConstStruct(*(yyvsp[(3) - (3)].lex).string, (yyvsp[(1) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)])); + if ((yyval.interm.intermTypedNode) == 0) { + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + else { + (yyval.interm.intermTypedNode)->setType(*fields[i]->type()); + // change the qualifier of the return type, not of the structure field + // as the structure definition is shared between various structures. + (yyval.interm.intermTypedNode)->getTypePointer()->setQualifier(EvqConst); + } + } else { + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setIConst(i); + TIntermTyped* index = context->intermediate.addConstantUnion(unionArray, *fields[i]->type(), (yylsp[(3) - (3)])); + (yyval.interm.intermTypedNode) = context->intermediate.addIndex(EOpIndexDirectStruct, (yyvsp[(1) - (3)].interm.intermTypedNode), index, (yylsp[(2) - (3)])); + (yyval.interm.intermTypedNode)->setType(*fields[i]->type()); + } + } else { + context->error((yylsp[(2) - (3)]), " no such field in structure", (yyvsp[(3) - (3)].lex).string->c_str()); + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + } else { + context->error((yylsp[(2) - (3)]), " field selection requires structure, vector, or matrix on left hand side", (yyvsp[(3) - (3)].lex).string->c_str()); + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + // don't delete $3.string, it's from the pool + ;} + break; + + case 14: + + { + if (context->lValueErrorCheck((yylsp[(2) - (2)]), "++", (yyvsp[(1) - (2)].interm.intermTypedNode))) + context->recover(); + (yyval.interm.intermTypedNode) = context->intermediate.addUnaryMath(EOpPostIncrement, (yyvsp[(1) - (2)].interm.intermTypedNode), (yylsp[(2) - (2)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->unaryOpError((yylsp[(2) - (2)]), "++", (yyvsp[(1) - (2)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (2)].interm.intermTypedNode); + } + ;} + break; + + case 15: + + { + if (context->lValueErrorCheck((yylsp[(2) - (2)]), "--", (yyvsp[(1) - (2)].interm.intermTypedNode))) + context->recover(); + (yyval.interm.intermTypedNode) = context->intermediate.addUnaryMath(EOpPostDecrement, (yyvsp[(1) - (2)].interm.intermTypedNode), (yylsp[(2) - (2)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->unaryOpError((yylsp[(2) - (2)]), "--", (yyvsp[(1) - (2)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (2)].interm.intermTypedNode); + } + ;} + break; + + case 16: + + { + if (context->integerErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode), "[]")) + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + ;} + break; + + case 17: + + { + TFunction* fnCall = (yyvsp[(1) - (1)].interm).function; + TOperator op = fnCall->getBuiltInOp(); + + if (op != EOpNull) + { + // + // Then this should be a constructor. + // Don't go through the symbol table for constructors. + // Their parameters will be verified algorithmically. + // + TType type(EbtVoid, EbpUndefined); // use this to get the type back + if (context->constructorErrorCheck((yylsp[(1) - (1)]), (yyvsp[(1) - (1)].interm).intermNode, *fnCall, op, &type)) { + (yyval.interm.intermTypedNode) = 0; + } else { + // + // It's a constructor, of type 'type'. + // + (yyval.interm.intermTypedNode) = context->addConstructor((yyvsp[(1) - (1)].interm).intermNode, &type, op, fnCall, (yylsp[(1) - (1)])); + } + + if ((yyval.interm.intermTypedNode) == 0) { + context->recover(); + (yyval.interm.intermTypedNode) = context->intermediate.setAggregateOperator(0, op, (yylsp[(1) - (1)])); + } + (yyval.interm.intermTypedNode)->setType(type); + } else { + // + // Not a constructor. Find it in the symbol table. + // + const TFunction* fnCandidate; + bool builtIn; + fnCandidate = context->findFunction((yylsp[(1) - (1)]), fnCall, &builtIn); + if (fnCandidate) { + // + // A declared function. + // + if (builtIn && !fnCandidate->getExtension().empty() && + context->extensionErrorCheck((yylsp[(1) - (1)]), fnCandidate->getExtension())) { + context->recover(); + } + op = fnCandidate->getBuiltInOp(); + if (builtIn && op != EOpNull) { + // + // A function call mapped to a built-in operation. + // + if (fnCandidate->getParamCount() == 1) { + // + // Treat it like a built-in unary operator. + // + (yyval.interm.intermTypedNode) = context->intermediate.addUnaryMath(op, (yyvsp[(1) - (1)].interm).intermNode, (yylsp[(1) - (1)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + std::stringstream extraInfoStream; + extraInfoStream << "built in unary operator function. Type: " << static_cast((yyvsp[(1) - (1)].interm).intermNode)->getCompleteString(); + std::string extraInfo = extraInfoStream.str(); + context->error((yyvsp[(1) - (1)].interm).intermNode->getLine(), " wrong operand type", "Internal Error", extraInfo.c_str()); + YYERROR; + } + } else { + (yyval.interm.intermTypedNode) = context->intermediate.setAggregateOperator((yyvsp[(1) - (1)].interm).intermAggregate, op, (yylsp[(1) - (1)])); + } + } else { + // This is a real function call + + (yyval.interm.intermTypedNode) = context->intermediate.setAggregateOperator((yyvsp[(1) - (1)].interm).intermAggregate, EOpFunctionCall, (yylsp[(1) - (1)])); + (yyval.interm.intermTypedNode)->setType(fnCandidate->getReturnType()); + + // this is how we know whether the given function is a builtIn function or a user defined function + // if builtIn == false, it's a userDefined -> could be an overloaded builtIn function also + // if builtIn == true, it's definitely a builtIn function with EOpNull + if (!builtIn) + (yyval.interm.intermTypedNode)->getAsAggregate()->setUserDefined(); + (yyval.interm.intermTypedNode)->getAsAggregate()->setName(fnCandidate->getMangledName()); + + TQualifier qual; + for (size_t i = 0; i < fnCandidate->getParamCount(); ++i) { + qual = fnCandidate->getParam(i).type->getQualifier(); + if (qual == EvqOut || qual == EvqInOut) { + if (context->lValueErrorCheck((yyval.interm.intermTypedNode)->getLine(), "assign", (yyval.interm.intermTypedNode)->getAsAggregate()->getSequence()[i]->getAsTyped())) { + context->error((yyvsp[(1) - (1)].interm).intermNode->getLine(), "Constant value cannot be passed for 'out' or 'inout' parameters.", "Error"); + context->recover(); + } + } + } + } + (yyval.interm.intermTypedNode)->setType(fnCandidate->getReturnType()); + } else { + // error message was put out by PaFindFunction() + // Put on a dummy node for error recovery + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setFConst(0.0f); + (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtFloat, EbpUndefined, EvqConst), (yylsp[(1) - (1)])); + context->recover(); + } + } + delete fnCall; + ;} + break; + + case 18: + + { + (yyval.interm) = (yyvsp[(1) - (1)].interm); + ;} + break; + + case 19: + + { + context->error((yylsp[(3) - (3)]), "methods are not supported", ""); + context->recover(); + (yyval.interm) = (yyvsp[(3) - (3)].interm); + ;} + break; + + case 20: + + { + (yyval.interm) = (yyvsp[(1) - (2)].interm); + ;} + break; + + case 21: + + { + (yyval.interm) = (yyvsp[(1) - (2)].interm); + ;} + break; + + case 22: + + { + (yyval.interm).function = (yyvsp[(1) - (2)].interm.function); + (yyval.interm).intermNode = 0; + ;} + break; + + case 23: + + { + (yyval.interm).function = (yyvsp[(1) - (1)].interm.function); + (yyval.interm).intermNode = 0; + ;} + break; + + case 24: + + { + TParameter param = { 0, new TType((yyvsp[(2) - (2)].interm.intermTypedNode)->getType()) }; + (yyvsp[(1) - (2)].interm.function)->addParameter(param); + (yyval.interm).function = (yyvsp[(1) - (2)].interm.function); + (yyval.interm).intermNode = (yyvsp[(2) - (2)].interm.intermTypedNode); + ;} + break; + + case 25: + + { + TParameter param = { 0, new TType((yyvsp[(3) - (3)].interm.intermTypedNode)->getType()) }; + (yyvsp[(1) - (3)].interm).function->addParameter(param); + (yyval.interm).function = (yyvsp[(1) - (3)].interm).function; + (yyval.interm).intermNode = context->intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)])); + ;} + break; + + case 26: + + { + (yyval.interm.function) = (yyvsp[(1) - (2)].interm.function); + ;} + break; + + case 27: + + { + // + // Constructor + // + TOperator op = EOpNull; + if ((yyvsp[(1) - (1)].interm.type).userDef) { + op = EOpConstructStruct; + } else { + switch ((yyvsp[(1) - (1)].interm.type).type) { + case EbtFloat: + if ((yyvsp[(1) - (1)].interm.type).matrix) { + switch((yyvsp[(1) - (1)].interm.type).size) { + case 2: op = EOpConstructMat2; break; + case 3: op = EOpConstructMat3; break; + case 4: op = EOpConstructMat4; break; + } + } else { + switch((yyvsp[(1) - (1)].interm.type).size) { + case 1: op = EOpConstructFloat; break; + case 2: op = EOpConstructVec2; break; + case 3: op = EOpConstructVec3; break; + case 4: op = EOpConstructVec4; break; + } + } + break; + case EbtInt: + switch((yyvsp[(1) - (1)].interm.type).size) { + case 1: op = EOpConstructInt; break; + case 2: op = EOpConstructIVec2; break; + case 3: op = EOpConstructIVec3; break; + case 4: op = EOpConstructIVec4; break; + } + break; + case EbtBool: + switch((yyvsp[(1) - (1)].interm.type).size) { + case 1: op = EOpConstructBool; break; + case 2: op = EOpConstructBVec2; break; + case 3: op = EOpConstructBVec3; break; + case 4: op = EOpConstructBVec4; break; + } + break; + default: break; + } + if (op == EOpNull) { + context->error((yylsp[(1) - (1)]), "cannot construct this type", getBasicString((yyvsp[(1) - (1)].interm.type).type)); + context->recover(); + (yyvsp[(1) - (1)].interm.type).type = EbtFloat; + op = EOpConstructFloat; + } + } + TString tempString; + TType type((yyvsp[(1) - (1)].interm.type)); + TFunction *function = new TFunction(&tempString, type, op); + (yyval.interm.function) = function; + ;} + break; + + case 28: + + { + if (context->reservedErrorCheck((yylsp[(1) - (1)]), *(yyvsp[(1) - (1)].lex).string)) + context->recover(); + TType type(EbtVoid, EbpUndefined); + TFunction *function = new TFunction((yyvsp[(1) - (1)].lex).string, type); + (yyval.interm.function) = function; + ;} + break; + + case 29: + + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + ;} + break; + + case 30: + + { + if (context->lValueErrorCheck((yylsp[(1) - (2)]), "++", (yyvsp[(2) - (2)].interm.intermTypedNode))) + context->recover(); + (yyval.interm.intermTypedNode) = context->intermediate.addUnaryMath(EOpPreIncrement, (yyvsp[(2) - (2)].interm.intermTypedNode), (yylsp[(1) - (2)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->unaryOpError((yylsp[(1) - (2)]), "++", (yyvsp[(2) - (2)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode); + } + ;} + break; + + case 31: + + { + if (context->lValueErrorCheck((yylsp[(1) - (2)]), "--", (yyvsp[(2) - (2)].interm.intermTypedNode))) + context->recover(); + (yyval.interm.intermTypedNode) = context->intermediate.addUnaryMath(EOpPreDecrement, (yyvsp[(2) - (2)].interm.intermTypedNode), (yylsp[(1) - (2)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->unaryOpError((yylsp[(1) - (2)]), "--", (yyvsp[(2) - (2)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode); + } + ;} + break; + + case 32: + + { + if ((yyvsp[(1) - (2)].interm).op != EOpNull) { + (yyval.interm.intermTypedNode) = context->intermediate.addUnaryMath((yyvsp[(1) - (2)].interm).op, (yyvsp[(2) - (2)].interm.intermTypedNode), (yylsp[(1) - (2)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + const char* errorOp = ""; + switch((yyvsp[(1) - (2)].interm).op) { + case EOpNegative: errorOp = "-"; break; + case EOpLogicalNot: errorOp = "!"; break; + default: break; + } + context->unaryOpError((yylsp[(1) - (2)]), errorOp, (yyvsp[(2) - (2)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode); + } + } else + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode); + ;} + break; + + case 33: + + { (yyval.interm).op = EOpNull; ;} + break; + + case 34: + + { (yyval.interm).op = EOpNegative; ;} + break; + + case 35: + + { (yyval.interm).op = EOpLogicalNot; ;} + break; + + case 36: + + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} + break; + + case 37: + + { + (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpMul, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->binaryOpError((yylsp[(2) - (3)]), "*", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + ;} + break; + + case 38: + + { + (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpDiv, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->binaryOpError((yylsp[(2) - (3)]), "/", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + ;} + break; + + case 39: + + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} + break; + + case 40: + + { + (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpAdd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->binaryOpError((yylsp[(2) - (3)]), "+", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + ;} + break; + + case 41: + + { + (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpSub, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->binaryOpError((yylsp[(2) - (3)]), "-", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + ;} + break; + + case 42: + + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} + break; + + case 43: + + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} + break; + + case 44: + + { + (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpLessThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->binaryOpError((yylsp[(2) - (3)]), "<", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)])); + } + ;} + break; + + case 45: + + { + (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpGreaterThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->binaryOpError((yylsp[(2) - (3)]), ">", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)])); + } + ;} + break; + + case 46: + + { + (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpLessThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->binaryOpError((yylsp[(2) - (3)]), "<=", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)])); + } + ;} + break; + + case 47: + + { + (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpGreaterThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->binaryOpError((yylsp[(2) - (3)]), ">=", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)])); + } + ;} + break; + + case 48: + + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} + break; + + case 49: + + { + (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->binaryOpError((yylsp[(2) - (3)]), "==", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)])); + } + ;} + break; + + case 50: + + { + (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpNotEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->binaryOpError((yylsp[(2) - (3)]), "!=", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)])); + } + ;} + break; + + case 51: + + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} + break; + + case 52: + + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} + break; + + case 53: + + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} + break; + + case 54: + + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} + break; + + case 55: + + { + (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpLogicalAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->binaryOpError((yylsp[(2) - (3)]), "&&", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)])); + } + ;} + break; + + case 56: + + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} + break; + + case 57: + + { + (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpLogicalXor, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->binaryOpError((yylsp[(2) - (3)]), "^^", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)])); + } + ;} + break; + + case 58: + + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} + break; + + case 59: + + { + (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpLogicalOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)]), context->symbolTable); + if ((yyval.interm.intermTypedNode) == 0) { + context->binaryOpError((yylsp[(2) - (3)]), "||", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + ConstantUnion *unionArray = new ConstantUnion[1]; + unionArray->setBConst(false); + (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)])); + } + ;} + break; + + case 60: + + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} + break; + + case 61: + + { + if (context->boolErrorCheck((yylsp[(2) - (5)]), (yyvsp[(1) - (5)].interm.intermTypedNode))) + context->recover(); + + (yyval.interm.intermTypedNode) = context->intermediate.addSelection((yyvsp[(1) - (5)].interm.intermTypedNode), (yyvsp[(3) - (5)].interm.intermTypedNode), (yyvsp[(5) - (5)].interm.intermTypedNode), (yylsp[(2) - (5)])); + if ((yyvsp[(3) - (5)].interm.intermTypedNode)->getType() != (yyvsp[(5) - (5)].interm.intermTypedNode)->getType()) + (yyval.interm.intermTypedNode) = 0; + + if ((yyval.interm.intermTypedNode) == 0) { + context->binaryOpError((yylsp[(2) - (5)]), ":", (yyvsp[(3) - (5)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(5) - (5)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(5) - (5)].interm.intermTypedNode); + } + ;} + break; + + case 62: + + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} + break; + + case 63: + + { + if (context->lValueErrorCheck((yylsp[(2) - (3)]), "assign", (yyvsp[(1) - (3)].interm.intermTypedNode))) + context->recover(); + (yyval.interm.intermTypedNode) = context->intermediate.addAssign((yyvsp[(2) - (3)].interm).op, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)])); + if ((yyval.interm.intermTypedNode) == 0) { + context->assignError((yylsp[(2) - (3)]), "assign", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + ;} + break; + + case 64: + + { (yyval.interm).op = EOpAssign; ;} + break; + + case 65: + + { (yyval.interm).op = EOpMulAssign; ;} + break; + + case 66: + + { (yyval.interm).op = EOpDivAssign; ;} + break; + + case 67: + + { (yyval.interm).op = EOpAddAssign; ;} + break; + + case 68: + + { (yyval.interm).op = EOpSubAssign; ;} + break; + + case 69: + + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + ;} + break; + + case 70: + + { + (yyval.interm.intermTypedNode) = context->intermediate.addComma((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)])); + if ((yyval.interm.intermTypedNode) == 0) { + context->binaryOpError((yylsp[(2) - (3)]), ",", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(3) - (3)].interm.intermTypedNode); + } + ;} + break; + + case 71: + + { + if (context->constErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode))) + context->recover(); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + ;} + break; + + case 72: + + { + TFunction &function = *((yyvsp[(1) - (2)].interm).function); + + TIntermAggregate *prototype = new TIntermAggregate; + prototype->setType(function.getReturnType()); + prototype->setName(function.getName()); + + for (size_t i = 0; i < function.getParamCount(); i++) + { + const TParameter ¶m = function.getParam(i); + if (param.name != 0) + { + TVariable variable(param.name, *param.type); + + prototype = context->intermediate.growAggregate(prototype, context->intermediate.addSymbol(variable.getUniqueId(), variable.getName(), variable.getType(), (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); + } + else + { + prototype = context->intermediate.growAggregate(prototype, context->intermediate.addSymbol(0, "", *param.type, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); + } + } + + prototype->setOp(EOpPrototype); + (yyval.interm.intermNode) = prototype; + + context->symbolTable.pop(); + ;} + break; + + case 73: + + { + if ((yyvsp[(1) - (2)].interm).intermAggregate) + (yyvsp[(1) - (2)].interm).intermAggregate->setOp(EOpDeclaration); + (yyval.interm.intermNode) = (yyvsp[(1) - (2)].interm).intermAggregate; + ;} + break; + + case 74: + + { + if (((yyvsp[(2) - (4)].interm.precision) == EbpHigh) && (context->shaderType == SH_FRAGMENT_SHADER) && !context->fragmentPrecisionHigh) { + context->error((yylsp[(1) - (4)]), "precision is not supported in fragment shader", "highp"); + context->recover(); + } + if (!context->symbolTable.setDefaultPrecision( (yyvsp[(3) - (4)].interm.type), (yyvsp[(2) - (4)].interm.precision) )) { + context->error((yylsp[(1) - (4)]), "illegal type argument for default precision qualifier", getBasicString((yyvsp[(3) - (4)].interm.type).type)); + context->recover(); + } + (yyval.interm.intermNode) = 0; + ;} + break; + + case 75: + + { + // + // Multiple declarations of the same function are allowed. + // + // If this is a definition, the definition production code will check for redefinitions + // (we don't know at this point if it's a definition or not). + // + // Redeclarations are allowed. But, return types and parameter qualifiers must match. + // + TFunction* prevDec = static_cast(context->symbolTable.find((yyvsp[(1) - (2)].interm.function)->getMangledName())); + if (prevDec) { + if (prevDec->getReturnType() != (yyvsp[(1) - (2)].interm.function)->getReturnType()) { + context->error((yylsp[(2) - (2)]), "overloaded functions must have the same return type", (yyvsp[(1) - (2)].interm.function)->getReturnType().getBasicString()); + context->recover(); + } + for (size_t i = 0; i < prevDec->getParamCount(); ++i) { + if (prevDec->getParam(i).type->getQualifier() != (yyvsp[(1) - (2)].interm.function)->getParam(i).type->getQualifier()) { + context->error((yylsp[(2) - (2)]), "overloaded functions must have the same parameter qualifiers", (yyvsp[(1) - (2)].interm.function)->getParam(i).type->getQualifierString()); + context->recover(); + } + } + } + + // + // Check for previously declared variables using the same name. + // + TSymbol *prevSym = context->symbolTable.find((yyvsp[(1) - (2)].interm.function)->getName()); + if (prevSym) + { + if (!prevSym->isFunction()) + { + context->error((yylsp[(2) - (2)]), "redefinition", (yyvsp[(1) - (2)].interm.function)->getName().c_str(), "function"); + context->recover(); + } + } + else + { + // Insert the unmangled name to detect potential future redefinition as a variable. + context->symbolTable.getOuterLevel()->insert((yyvsp[(1) - (2)].interm.function)->getName(), *(yyvsp[(1) - (2)].interm.function)); + } + + // + // If this is a redeclaration, it could also be a definition, + // in which case, we want to use the variable names from this one, and not the one that's + // being redeclared. So, pass back up this declaration, not the one in the symbol table. + // + (yyval.interm).function = (yyvsp[(1) - (2)].interm.function); + + // We're at the inner scope level of the function's arguments and body statement. + // Add the function prototype to the surrounding scope instead. + context->symbolTable.getOuterLevel()->insert(*(yyval.interm).function); + ;} + break; + + case 76: + + { + (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function); + ;} + break; + + case 77: + + { + (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function); + ;} + break; + + case 78: + + { + // Add the parameter + (yyval.interm.function) = (yyvsp[(1) - (2)].interm.function); + if ((yyvsp[(2) - (2)].interm).param.type->getBasicType() != EbtVoid) + (yyvsp[(1) - (2)].interm.function)->addParameter((yyvsp[(2) - (2)].interm).param); + else + delete (yyvsp[(2) - (2)].interm).param.type; + ;} + break; + + case 79: + + { + // + // Only first parameter of one-parameter functions can be void + // The check for named parameters not being void is done in parameter_declarator + // + if ((yyvsp[(3) - (3)].interm).param.type->getBasicType() == EbtVoid) { + // + // This parameter > first is void + // + context->error((yylsp[(2) - (3)]), "cannot be an argument type except for '(void)'", "void"); + context->recover(); + delete (yyvsp[(3) - (3)].interm).param.type; + } else { + // Add the parameter + (yyval.interm.function) = (yyvsp[(1) - (3)].interm.function); + (yyvsp[(1) - (3)].interm.function)->addParameter((yyvsp[(3) - (3)].interm).param); + } + ;} + break; + + case 80: + + { + if ((yyvsp[(1) - (3)].interm.type).qualifier != EvqGlobal && (yyvsp[(1) - (3)].interm.type).qualifier != EvqTemporary) { + context->error((yylsp[(2) - (3)]), "no qualifiers allowed for function return", getQualifierString((yyvsp[(1) - (3)].interm.type).qualifier)); + context->recover(); + } + // make sure a sampler is not involved as well... + if (context->structQualifierErrorCheck((yylsp[(2) - (3)]), (yyvsp[(1) - (3)].interm.type))) + context->recover(); + + // Add the function as a prototype after parsing it (we do not support recursion) + TFunction *function; + TType type((yyvsp[(1) - (3)].interm.type)); + function = new TFunction((yyvsp[(2) - (3)].lex).string, type); + (yyval.interm.function) = function; + + context->symbolTable.push(); + ;} + break; + + case 81: + + { + if ((yyvsp[(1) - (2)].interm.type).type == EbtVoid) { + context->error((yylsp[(2) - (2)]), "illegal use of type 'void'", (yyvsp[(2) - (2)].lex).string->c_str()); + context->recover(); + } + if (context->reservedErrorCheck((yylsp[(2) - (2)]), *(yyvsp[(2) - (2)].lex).string)) + context->recover(); + TParameter param = {(yyvsp[(2) - (2)].lex).string, new TType((yyvsp[(1) - (2)].interm.type))}; + (yyval.interm).param = param; + ;} + break; + + case 82: + + { + // Check that we can make an array out of this type + if (context->arrayTypeErrorCheck((yylsp[(3) - (5)]), (yyvsp[(1) - (5)].interm.type))) + context->recover(); + + if (context->reservedErrorCheck((yylsp[(2) - (5)]), *(yyvsp[(2) - (5)].lex).string)) + context->recover(); + + int size; + if (context->arraySizeErrorCheck((yylsp[(3) - (5)]), (yyvsp[(4) - (5)].interm.intermTypedNode), size)) + context->recover(); + (yyvsp[(1) - (5)].interm.type).setArray(true, size); + + TType* type = new TType((yyvsp[(1) - (5)].interm.type)); + TParameter param = { (yyvsp[(2) - (5)].lex).string, type }; + (yyval.interm).param = param; + ;} + break; + + case 83: + + { + (yyval.interm) = (yyvsp[(3) - (3)].interm); + if (context->paramErrorCheck((yylsp[(3) - (3)]), (yyvsp[(1) - (3)].interm.type).qualifier, (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type)) + context->recover(); + ;} + break; + + case 84: + + { + (yyval.interm) = (yyvsp[(2) - (2)].interm); + if (context->parameterSamplerErrorCheck((yylsp[(2) - (2)]), (yyvsp[(1) - (2)].interm.qualifier), *(yyvsp[(2) - (2)].interm).param.type)) + context->recover(); + if (context->paramErrorCheck((yylsp[(2) - (2)]), EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type)) + context->recover(); + ;} + break; + + case 85: + + { + (yyval.interm) = (yyvsp[(3) - (3)].interm); + if (context->paramErrorCheck((yylsp[(3) - (3)]), (yyvsp[(1) - (3)].interm.type).qualifier, (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type)) + context->recover(); + ;} + break; + + case 86: + + { + (yyval.interm) = (yyvsp[(2) - (2)].interm); + if (context->parameterSamplerErrorCheck((yylsp[(2) - (2)]), (yyvsp[(1) - (2)].interm.qualifier), *(yyvsp[(2) - (2)].interm).param.type)) + context->recover(); + if (context->paramErrorCheck((yylsp[(2) - (2)]), EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type)) + context->recover(); + ;} + break; + + case 87: + + { + (yyval.interm.qualifier) = EvqIn; + ;} + break; + + case 88: + + { + (yyval.interm.qualifier) = EvqIn; + ;} + break; + + case 89: + + { + (yyval.interm.qualifier) = EvqOut; + ;} + break; + + case 90: + + { + (yyval.interm.qualifier) = EvqInOut; + ;} + break; + + case 91: + + { + TParameter param = { 0, new TType((yyvsp[(1) - (1)].interm.type)) }; + (yyval.interm).param = param; + ;} + break; + + case 92: + + { + (yyval.interm) = (yyvsp[(1) - (1)].interm); + ;} + break; + + case 93: + + { + if ((yyvsp[(1) - (3)].interm).type.type == EbtInvariant && !(yyvsp[(3) - (3)].lex).symbol) + { + context->error((yylsp[(3) - (3)]), "undeclared identifier declared as invariant", (yyvsp[(3) - (3)].lex).string->c_str()); + context->recover(); + } + + TIntermSymbol* symbol = context->intermediate.addSymbol(0, *(yyvsp[(3) - (3)].lex).string, TType((yyvsp[(1) - (3)].interm).type), (yylsp[(3) - (3)])); + (yyval.interm).intermAggregate = context->intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, symbol, (yylsp[(3) - (3)])); + + if (context->structQualifierErrorCheck((yylsp[(3) - (3)]), (yyval.interm).type)) + context->recover(); + + if (context->nonInitConstErrorCheck((yylsp[(3) - (3)]), *(yyvsp[(3) - (3)].lex).string, (yyval.interm).type, false)) + context->recover(); + + TVariable* variable = 0; + if (context->nonInitErrorCheck((yylsp[(3) - (3)]), *(yyvsp[(3) - (3)].lex).string, (yyval.interm).type, variable)) + context->recover(); + if (symbol && variable) + symbol->setId(variable->getUniqueId()); + ;} + break; + + case 94: + + { + if (context->structQualifierErrorCheck((yylsp[(3) - (5)]), (yyvsp[(1) - (5)].interm).type)) + context->recover(); + + if (context->nonInitConstErrorCheck((yylsp[(3) - (5)]), *(yyvsp[(3) - (5)].lex).string, (yyvsp[(1) - (5)].interm).type, true)) + context->recover(); + + (yyval.interm) = (yyvsp[(1) - (5)].interm); + + if (context->arrayTypeErrorCheck((yylsp[(4) - (5)]), (yyvsp[(1) - (5)].interm).type) || context->arrayQualifierErrorCheck((yylsp[(4) - (5)]), (yyvsp[(1) - (5)].interm).type)) + context->recover(); + else { + (yyvsp[(1) - (5)].interm).type.setArray(true); + TVariable* variable; + if (context->arrayErrorCheck((yylsp[(4) - (5)]), *(yyvsp[(3) - (5)].lex).string, (yyvsp[(1) - (5)].interm).type, variable)) + context->recover(); + } + ;} + break; + + case 95: + + { + if (context->structQualifierErrorCheck((yylsp[(3) - (6)]), (yyvsp[(1) - (6)].interm).type)) + context->recover(); + + if (context->nonInitConstErrorCheck((yylsp[(3) - (6)]), *(yyvsp[(3) - (6)].lex).string, (yyvsp[(1) - (6)].interm).type, true)) + context->recover(); + + (yyval.interm) = (yyvsp[(1) - (6)].interm); + + if (context->arrayTypeErrorCheck((yylsp[(4) - (6)]), (yyvsp[(1) - (6)].interm).type) || context->arrayQualifierErrorCheck((yylsp[(4) - (6)]), (yyvsp[(1) - (6)].interm).type)) + context->recover(); + else { + int size; + if (context->arraySizeErrorCheck((yylsp[(4) - (6)]), (yyvsp[(5) - (6)].interm.intermTypedNode), size)) + context->recover(); + (yyvsp[(1) - (6)].interm).type.setArray(true, size); + TVariable* variable = 0; + if (context->arrayErrorCheck((yylsp[(4) - (6)]), *(yyvsp[(3) - (6)].lex).string, (yyvsp[(1) - (6)].interm).type, variable)) + context->recover(); + TType type = TType((yyvsp[(1) - (6)].interm).type); + type.setArraySize(size); + (yyval.interm).intermAggregate = context->intermediate.growAggregate((yyvsp[(1) - (6)].interm).intermNode, context->intermediate.addSymbol(variable ? variable->getUniqueId() : 0, *(yyvsp[(3) - (6)].lex).string, type, (yylsp[(3) - (6)])), (yylsp[(3) - (6)])); + } + ;} + break; + + case 96: + + { + if (context->structQualifierErrorCheck((yylsp[(3) - (5)]), (yyvsp[(1) - (5)].interm).type)) + context->recover(); + + (yyval.interm) = (yyvsp[(1) - (5)].interm); + + TIntermNode* intermNode; + if (!context->executeInitializer((yylsp[(3) - (5)]), *(yyvsp[(3) - (5)].lex).string, (yyvsp[(1) - (5)].interm).type, (yyvsp[(5) - (5)].interm.intermTypedNode), intermNode)) { + // + // build the intermediate representation + // + if (intermNode) + (yyval.interm).intermAggregate = context->intermediate.growAggregate((yyvsp[(1) - (5)].interm).intermNode, intermNode, (yylsp[(4) - (5)])); + else + (yyval.interm).intermAggregate = (yyvsp[(1) - (5)].interm).intermAggregate; + } else { + context->recover(); + (yyval.interm).intermAggregate = 0; + } + ;} + break; + + case 97: + + { + (yyval.interm).type = (yyvsp[(1) - (1)].interm.type); + (yyval.interm).intermAggregate = context->intermediate.makeAggregate(context->intermediate.addSymbol(0, "", TType((yyvsp[(1) - (1)].interm.type)), (yylsp[(1) - (1)])), (yylsp[(1) - (1)])); + ;} + break; + + case 98: + + { + TIntermSymbol* symbol = context->intermediate.addSymbol(0, *(yyvsp[(2) - (2)].lex).string, TType((yyvsp[(1) - (2)].interm.type)), (yylsp[(2) - (2)])); + (yyval.interm).intermAggregate = context->intermediate.makeAggregate(symbol, (yylsp[(2) - (2)])); + + if (context->structQualifierErrorCheck((yylsp[(2) - (2)]), (yyval.interm).type)) + context->recover(); + + if (context->nonInitConstErrorCheck((yylsp[(2) - (2)]), *(yyvsp[(2) - (2)].lex).string, (yyval.interm).type, false)) + context->recover(); + + (yyval.interm).type = (yyvsp[(1) - (2)].interm.type); + + TVariable* variable = 0; + if (context->nonInitErrorCheck((yylsp[(2) - (2)]), *(yyvsp[(2) - (2)].lex).string, (yyval.interm).type, variable)) + context->recover(); + if (variable && symbol) + symbol->setId(variable->getUniqueId()); + ;} + break; + + case 99: + + { + context->error((yylsp[(2) - (4)]), "unsized array declarations not supported", (yyvsp[(2) - (4)].lex).string->c_str()); + context->recover(); + + TIntermSymbol* symbol = context->intermediate.addSymbol(0, *(yyvsp[(2) - (4)].lex).string, TType((yyvsp[(1) - (4)].interm.type)), (yylsp[(2) - (4)])); + (yyval.interm).intermAggregate = context->intermediate.makeAggregate(symbol, (yylsp[(2) - (4)])); + (yyval.interm).type = (yyvsp[(1) - (4)].interm.type); + ;} + break; + + case 100: + + { + TType type = TType((yyvsp[(1) - (5)].interm.type)); + int size; + if (context->arraySizeErrorCheck((yylsp[(2) - (5)]), (yyvsp[(4) - (5)].interm.intermTypedNode), size)) + context->recover(); + type.setArraySize(size); + TIntermSymbol* symbol = context->intermediate.addSymbol(0, *(yyvsp[(2) - (5)].lex).string, type, (yylsp[(2) - (5)])); + (yyval.interm).intermAggregate = context->intermediate.makeAggregate(symbol, (yylsp[(2) - (5)])); + + if (context->structQualifierErrorCheck((yylsp[(2) - (5)]), (yyvsp[(1) - (5)].interm.type))) + context->recover(); + + if (context->nonInitConstErrorCheck((yylsp[(2) - (5)]), *(yyvsp[(2) - (5)].lex).string, (yyvsp[(1) - (5)].interm.type), true)) + context->recover(); + + (yyval.interm).type = (yyvsp[(1) - (5)].interm.type); + + if (context->arrayTypeErrorCheck((yylsp[(3) - (5)]), (yyvsp[(1) - (5)].interm.type)) || context->arrayQualifierErrorCheck((yylsp[(3) - (5)]), (yyvsp[(1) - (5)].interm.type))) + context->recover(); + else { + int size; + if (context->arraySizeErrorCheck((yylsp[(3) - (5)]), (yyvsp[(4) - (5)].interm.intermTypedNode), size)) + context->recover(); + + (yyvsp[(1) - (5)].interm.type).setArray(true, size); + TVariable* variable = 0; + if (context->arrayErrorCheck((yylsp[(3) - (5)]), *(yyvsp[(2) - (5)].lex).string, (yyvsp[(1) - (5)].interm.type), variable)) + context->recover(); + if (variable && symbol) + symbol->setId(variable->getUniqueId()); + } + ;} + break; + + case 101: + + { + if (context->structQualifierErrorCheck((yylsp[(2) - (4)]), (yyvsp[(1) - (4)].interm.type))) + context->recover(); + + (yyval.interm).type = (yyvsp[(1) - (4)].interm.type); + + TIntermNode* intermNode; + if (!context->executeInitializer((yylsp[(2) - (4)]), *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), (yyvsp[(4) - (4)].interm.intermTypedNode), intermNode)) { + // + // Build intermediate representation + // + if(intermNode) + (yyval.interm).intermAggregate = context->intermediate.makeAggregate(intermNode, (yylsp[(3) - (4)])); + else + (yyval.interm).intermAggregate = 0; + } else { + context->recover(); + (yyval.interm).intermAggregate = 0; + } + ;} + break; + + case 102: + + { + VERTEX_ONLY("invariant declaration", (yylsp[(1) - (2)])); + if (context->globalErrorCheck((yylsp[(1) - (2)]), context->symbolTable.atGlobalLevel(), "invariant varying")) + context->recover(); + (yyval.interm).type.setBasic(EbtInvariant, EvqInvariantVaryingOut, (yylsp[(2) - (2)])); + if (!(yyvsp[(2) - (2)].lex).symbol) + { + context->error((yylsp[(2) - (2)]), "undeclared identifier declared as invariant", (yyvsp[(2) - (2)].lex).string->c_str()); + context->recover(); + + (yyval.interm).intermAggregate = 0; + } + else + { + TIntermSymbol *symbol = context->intermediate.addSymbol(0, *(yyvsp[(2) - (2)].lex).string, TType((yyval.interm).type), (yylsp[(2) - (2)])); + (yyval.interm).intermAggregate = context->intermediate.makeAggregate(symbol, (yylsp[(2) - (2)])); + } + ;} + break; + + case 103: + + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + + if ((yyvsp[(1) - (1)].interm.type).array) { + context->error((yylsp[(1) - (1)]), "not supported", "first-class array"); + context->recover(); + (yyvsp[(1) - (1)].interm.type).setArray(false); + } + ;} + break; + + case 104: + + { + if ((yyvsp[(2) - (2)].interm.type).array) { + context->error((yylsp[(2) - (2)]), "not supported", "first-class array"); + context->recover(); + (yyvsp[(2) - (2)].interm.type).setArray(false); + } + + if ((yyvsp[(1) - (2)].interm.type).qualifier == EvqAttribute && + ((yyvsp[(2) - (2)].interm.type).type == EbtBool || (yyvsp[(2) - (2)].interm.type).type == EbtInt)) { + context->error((yylsp[(2) - (2)]), "cannot be bool or int", getQualifierString((yyvsp[(1) - (2)].interm.type).qualifier)); + context->recover(); + } + if (((yyvsp[(1) - (2)].interm.type).qualifier == EvqVaryingIn || (yyvsp[(1) - (2)].interm.type).qualifier == EvqVaryingOut) && + ((yyvsp[(2) - (2)].interm.type).type == EbtBool || (yyvsp[(2) - (2)].interm.type).type == EbtInt)) { + context->error((yylsp[(2) - (2)]), "cannot be bool or int", getQualifierString((yyvsp[(1) - (2)].interm.type).qualifier)); + context->recover(); + } + (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type); + (yyval.interm.type).qualifier = (yyvsp[(1) - (2)].interm.type).qualifier; + ;} + break; + + case 105: + + { + (yyval.interm.type).setBasic(EbtVoid, EvqConst, (yylsp[(1) - (1)])); + ;} + break; + + case 106: + + { + VERTEX_ONLY("attribute", (yylsp[(1) - (1)])); + if (context->globalErrorCheck((yylsp[(1) - (1)]), context->symbolTable.atGlobalLevel(), "attribute")) + context->recover(); + (yyval.interm.type).setBasic(EbtVoid, EvqAttribute, (yylsp[(1) - (1)])); + ;} + break; + + case 107: + + { + if (context->globalErrorCheck((yylsp[(1) - (1)]), context->symbolTable.atGlobalLevel(), "varying")) + context->recover(); + if (context->shaderType == SH_VERTEX_SHADER) + (yyval.interm.type).setBasic(EbtVoid, EvqVaryingOut, (yylsp[(1) - (1)])); + else + (yyval.interm.type).setBasic(EbtVoid, EvqVaryingIn, (yylsp[(1) - (1)])); + ;} + break; + + case 108: + + { + if (context->globalErrorCheck((yylsp[(1) - (2)]), context->symbolTable.atGlobalLevel(), "invariant varying")) + context->recover(); + if (context->shaderType == SH_VERTEX_SHADER) + (yyval.interm.type).setBasic(EbtVoid, EvqInvariantVaryingOut, (yylsp[(1) - (2)])); + else + (yyval.interm.type).setBasic(EbtVoid, EvqInvariantVaryingIn, (yylsp[(1) - (2)])); + ;} + break; + + case 109: + + { + if (context->globalErrorCheck((yylsp[(1) - (1)]), context->symbolTable.atGlobalLevel(), "uniform")) + context->recover(); + (yyval.interm.type).setBasic(EbtVoid, EvqUniform, (yylsp[(1) - (1)])); + ;} + break; + + case 110: + + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + + if ((yyval.interm.type).precision == EbpUndefined) { + (yyval.interm.type).precision = context->symbolTable.getDefaultPrecision((yyvsp[(1) - (1)].interm.type).type); + if (context->precisionErrorCheck((yylsp[(1) - (1)]), (yyval.interm.type).precision, (yyvsp[(1) - (1)].interm.type).type)) { + context->recover(); + } + } + ;} + break; + + case 111: + + { + (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type); + (yyval.interm.type).precision = (yyvsp[(1) - (2)].interm.precision); + ;} + break; + + case 112: + + { + (yyval.interm.precision) = EbpHigh; + ;} + break; + + case 113: + + { + (yyval.interm.precision) = EbpMedium; + ;} + break; + + case 114: + + { + (yyval.interm.precision) = EbpLow; + ;} + break; + + case 115: + + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + ;} + break; + + case 116: + + { + (yyval.interm.type) = (yyvsp[(1) - (4)].interm.type); + + if (context->arrayTypeErrorCheck((yylsp[(2) - (4)]), (yyvsp[(1) - (4)].interm.type))) + context->recover(); + else { + int size; + if (context->arraySizeErrorCheck((yylsp[(2) - (4)]), (yyvsp[(3) - (4)].interm.intermTypedNode), size)) + context->recover(); + (yyval.interm.type).setArray(true, size); + } + ;} + break; + + case 117: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtVoid, qual, (yylsp[(1) - (1)])); + ;} + break; + + case 118: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)])); + ;} + break; + + case 119: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[(1) - (1)])); + ;} + break; + + case 120: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[(1) - (1)])); + ;} + break; + + case 121: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)])); + (yyval.interm.type).setAggregate(2); + ;} + break; + + case 122: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)])); + (yyval.interm.type).setAggregate(3); + ;} + break; + + case 123: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)])); + (yyval.interm.type).setAggregate(4); + ;} + break; + + case 124: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[(1) - (1)])); + (yyval.interm.type).setAggregate(2); + ;} + break; + + case 125: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[(1) - (1)])); + (yyval.interm.type).setAggregate(3); + ;} + break; + + case 126: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[(1) - (1)])); + (yyval.interm.type).setAggregate(4); + ;} + break; + + case 127: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[(1) - (1)])); + (yyval.interm.type).setAggregate(2); + ;} + break; + + case 128: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[(1) - (1)])); + (yyval.interm.type).setAggregate(3); + ;} + break; + + case 129: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[(1) - (1)])); + (yyval.interm.type).setAggregate(4); + ;} + break; + + case 130: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)])); + (yyval.interm.type).setAggregate(2, true); + ;} + break; + + case 131: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)])); + (yyval.interm.type).setAggregate(3, true); + ;} + break; + + case 132: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)])); + (yyval.interm.type).setAggregate(4, true); + ;} + break; + + case 133: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtSampler2D, qual, (yylsp[(1) - (1)])); + ;} + break; + + case 134: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtSamplerCube, qual, (yylsp[(1) - (1)])); + ;} + break; + + case 135: + + { + if (!context->supportsExtension("GL_OES_EGL_image_external")) { + context->error((yylsp[(1) - (1)]), "unsupported type", "samplerExternalOES"); + context->recover(); + } + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtSamplerExternalOES, qual, (yylsp[(1) - (1)])); + ;} + break; + + case 136: + + { + if (!context->supportsExtension("GL_ARB_texture_rectangle")) { + context->error((yylsp[(1) - (1)]), "unsupported type", "sampler2DRect"); + context->recover(); + } + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtSampler2DRect, qual, (yylsp[(1) - (1)])); + ;} + break; + + case 137: + + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + (yyval.interm.type).qualifier = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + ;} + break; + + case 138: + + { + // + // This is for user defined type names. The lexical phase looked up the + // type. + // + TType& structure = static_cast((yyvsp[(1) - (1)].lex).symbol)->getType(); + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtStruct, qual, (yylsp[(1) - (1)])); + (yyval.interm.type).userDef = &structure; + ;} + break; + + case 139: + + { if (context->enterStructDeclaration((yylsp[(2) - (3)]), *(yyvsp[(2) - (3)].lex).string)) context->recover(); ;} + break; + + case 140: + + { + if (context->reservedErrorCheck((yylsp[(2) - (6)]), *(yyvsp[(2) - (6)].lex).string)) + context->recover(); + + TType* structure = new TType(new TStructure((yyvsp[(2) - (6)].lex).string, (yyvsp[(5) - (6)].interm.fieldList))); + TVariable* userTypeDef = new TVariable((yyvsp[(2) - (6)].lex).string, *structure, true); + if (! context->symbolTable.insert(*userTypeDef)) { + context->error((yylsp[(2) - (6)]), "redefinition", (yyvsp[(2) - (6)].lex).string->c_str(), "struct"); + context->recover(); + } + (yyval.interm.type).setBasic(EbtStruct, EvqTemporary, (yylsp[(1) - (6)])); + (yyval.interm.type).userDef = structure; + context->exitStructDeclaration(); + ;} + break; + + case 141: + + { if (context->enterStructDeclaration((yylsp[(2) - (2)]), *(yyvsp[(2) - (2)].lex).string)) context->recover(); ;} + break; + + case 142: + + { + TType* structure = new TType(new TStructure(NewPoolTString(""), (yyvsp[(4) - (5)].interm.fieldList))); + (yyval.interm.type).setBasic(EbtStruct, EvqTemporary, (yylsp[(1) - (5)])); + (yyval.interm.type).userDef = structure; + context->exitStructDeclaration(); + ;} + break; + + case 143: + + { + (yyval.interm.fieldList) = (yyvsp[(1) - (1)].interm.fieldList); + ;} + break; + + case 144: + + { + (yyval.interm.fieldList) = (yyvsp[(1) - (2)].interm.fieldList); + for (size_t i = 0; i < (yyvsp[(2) - (2)].interm.fieldList)->size(); ++i) { + TField* field = (*(yyvsp[(2) - (2)].interm.fieldList))[i]; + for (size_t j = 0; j < (yyval.interm.fieldList)->size(); ++j) { + if ((*(yyval.interm.fieldList))[j]->name() == field->name()) { + context->error((yylsp[(2) - (2)]), "duplicate field name in structure:", "struct", field->name().c_str()); + context->recover(); + } + } + (yyval.interm.fieldList)->push_back(field); + } + ;} + break; + + case 145: + + { + (yyval.interm.fieldList) = (yyvsp[(2) - (3)].interm.fieldList); + + if (context->voidErrorCheck((yylsp[(1) - (3)]), (*(yyvsp[(2) - (3)].interm.fieldList))[0]->name(), (yyvsp[(1) - (3)].interm.type))) { + context->recover(); + } + for (unsigned int i = 0; i < (yyval.interm.fieldList)->size(); ++i) { + // + // Careful not to replace already known aspects of type, like array-ness + // + TType* type = (*(yyval.interm.fieldList))[i]->type(); + type->setBasicType((yyvsp[(1) - (3)].interm.type).type); + type->setNominalSize((yyvsp[(1) - (3)].interm.type).size); + type->setMatrix((yyvsp[(1) - (3)].interm.type).matrix); + type->setPrecision((yyvsp[(1) - (3)].interm.type).precision); + + // don't allow arrays of arrays + if (type->isArray()) { + if (context->arrayTypeErrorCheck((yylsp[(1) - (3)]), (yyvsp[(1) - (3)].interm.type))) + context->recover(); + } + if ((yyvsp[(1) - (3)].interm.type).array) + type->setArraySize((yyvsp[(1) - (3)].interm.type).arraySize); + if ((yyvsp[(1) - (3)].interm.type).userDef) + type->setStruct((yyvsp[(1) - (3)].interm.type).userDef->getStruct()); + + if (context->structNestingErrorCheck((yylsp[(1) - (3)]), *(*(yyval.interm.fieldList))[i])) + context->recover(); + } + ;} + break; + + case 146: + + { + (yyval.interm.fieldList) = NewPoolTFieldList(); + (yyval.interm.fieldList)->push_back((yyvsp[(1) - (1)].interm.field)); + ;} + break; + + case 147: + + { + (yyval.interm.fieldList)->push_back((yyvsp[(3) - (3)].interm.field)); + ;} + break; + + case 148: + + { + if (context->reservedErrorCheck((yylsp[(1) - (1)]), *(yyvsp[(1) - (1)].lex).string)) + context->recover(); + + TType* type = new TType(EbtVoid, EbpUndefined); + (yyval.interm.field) = new TField(type, (yyvsp[(1) - (1)].lex).string); + ;} + break; + + case 149: + + { + if (context->reservedErrorCheck((yylsp[(1) - (4)]), *(yyvsp[(1) - (4)].lex).string)) + context->recover(); + + TType* type = new TType(EbtVoid, EbpUndefined); + int size = 0; + if (context->arraySizeErrorCheck((yylsp[(3) - (4)]), (yyvsp[(3) - (4)].interm.intermTypedNode), size)) + context->recover(); + type->setArraySize(size); + + (yyval.interm.field) = new TField(type, (yyvsp[(1) - (4)].lex).string); + ;} + break; + + case 150: + + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} + break; + + case 151: + + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} + break; + + case 152: + + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermAggregate); ;} + break; + + case 153: + + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} + break; + + case 154: + + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} + break; + + case 155: + + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} + break; + + case 156: + + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} + break; + + case 157: + + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} + break; + + case 158: + + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} + break; + + case 159: + + { (yyval.interm.intermAggregate) = 0; ;} + break; + + case 160: + + { context->symbolTable.push(); ;} + break; + + case 161: + + { context->symbolTable.pop(); ;} + break; + + case 162: + + { + if ((yyvsp[(3) - (5)].interm.intermAggregate) != 0) { + (yyvsp[(3) - (5)].interm.intermAggregate)->setOp(EOpSequence); + (yyvsp[(3) - (5)].interm.intermAggregate)->setLine((yyloc)); + } + (yyval.interm.intermAggregate) = (yyvsp[(3) - (5)].interm.intermAggregate); + ;} + break; + + case 163: + + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} + break; + + case 164: + + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} + break; + + case 165: + + { context->symbolTable.push(); ;} + break; + + case 166: + + { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); ;} + break; + + case 167: + + { context->symbolTable.push(); ;} + break; + + case 168: + + { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); ;} + break; + + case 169: + + { + (yyval.interm.intermNode) = 0; + ;} + break; + + case 170: + + { + if ((yyvsp[(2) - (3)].interm.intermAggregate)) { + (yyvsp[(2) - (3)].interm.intermAggregate)->setOp(EOpSequence); + (yyvsp[(2) - (3)].interm.intermAggregate)->setLine((yyloc)); + } + (yyval.interm.intermNode) = (yyvsp[(2) - (3)].interm.intermAggregate); + ;} + break; + + case 171: + + { + (yyval.interm.intermAggregate) = context->intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode), (yyloc)); + ;} + break; + + case 172: + + { + (yyval.interm.intermAggregate) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermAggregate), (yyvsp[(2) - (2)].interm.intermNode), (yyloc)); + ;} + break; + + case 173: + + { (yyval.interm.intermNode) = 0; ;} + break; + + case 174: + + { (yyval.interm.intermNode) = static_cast((yyvsp[(1) - (2)].interm.intermTypedNode)); ;} + break; + + case 175: + + { + if (context->boolErrorCheck((yylsp[(1) - (5)]), (yyvsp[(3) - (5)].interm.intermTypedNode))) + context->recover(); + (yyval.interm.intermNode) = context->intermediate.addSelection((yyvsp[(3) - (5)].interm.intermTypedNode), (yyvsp[(5) - (5)].interm.nodePair), (yylsp[(1) - (5)])); + ;} + break; + + case 176: + + { + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode); + (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermNode); + ;} + break; + + case 177: + + { + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode); + (yyval.interm.nodePair).node2 = 0; + ;} + break; + + case 178: + + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + if (context->boolErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode)->getLine(), (yyvsp[(1) - (1)].interm.intermTypedNode))) + context->recover(); + ;} + break; + + case 179: + + { + TIntermNode* intermNode; + if (context->structQualifierErrorCheck((yylsp[(2) - (4)]), (yyvsp[(1) - (4)].interm.type))) + context->recover(); + if (context->boolErrorCheck((yylsp[(2) - (4)]), (yyvsp[(1) - (4)].interm.type))) + context->recover(); + + if (!context->executeInitializer((yylsp[(2) - (4)]), *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), (yyvsp[(4) - (4)].interm.intermTypedNode), intermNode)) + (yyval.interm.intermTypedNode) = (yyvsp[(4) - (4)].interm.intermTypedNode); + else { + context->recover(); + (yyval.interm.intermTypedNode) = 0; + } + ;} + break; + + case 180: + + { context->symbolTable.push(); ++context->loopNestingLevel; ;} + break; + + case 181: + + { + context->symbolTable.pop(); + (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopWhile, 0, (yyvsp[(4) - (6)].interm.intermTypedNode), 0, (yyvsp[(6) - (6)].interm.intermNode), (yylsp[(1) - (6)])); + --context->loopNestingLevel; + ;} + break; + + case 182: + + { ++context->loopNestingLevel; ;} + break; + + case 183: + + { + if (context->boolErrorCheck((yylsp[(8) - (8)]), (yyvsp[(6) - (8)].interm.intermTypedNode))) + context->recover(); + + (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopDoWhile, 0, (yyvsp[(6) - (8)].interm.intermTypedNode), 0, (yyvsp[(3) - (8)].interm.intermNode), (yylsp[(4) - (8)])); + --context->loopNestingLevel; + ;} + break; + + case 184: + + { context->symbolTable.push(); ++context->loopNestingLevel; ;} + break; + + case 185: + + { + context->symbolTable.pop(); + (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopFor, (yyvsp[(4) - (7)].interm.intermNode), reinterpret_cast((yyvsp[(5) - (7)].interm.nodePair).node1), reinterpret_cast((yyvsp[(5) - (7)].interm.nodePair).node2), (yyvsp[(7) - (7)].interm.intermNode), (yylsp[(1) - (7)])); + --context->loopNestingLevel; + ;} + break; + + case 186: + + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + ;} + break; + + case 187: + + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + ;} + break; + + case 188: + + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + ;} + break; + + case 189: + + { + (yyval.interm.intermTypedNode) = 0; + ;} + break; + + case 190: + + { + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode); + (yyval.interm.nodePair).node2 = 0; + ;} + break; + + case 191: + + { + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode); + (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermTypedNode); + ;} + break; + + case 192: + + { + if (context->loopNestingLevel <= 0) { + context->error((yylsp[(1) - (2)]), "continue statement only allowed in loops", ""); + context->recover(); + } + (yyval.interm.intermNode) = context->intermediate.addBranch(EOpContinue, (yylsp[(1) - (2)])); + ;} + break; + + case 193: + + { + if (context->loopNestingLevel <= 0) { + context->error((yylsp[(1) - (2)]), "break statement only allowed in loops", ""); + context->recover(); + } + (yyval.interm.intermNode) = context->intermediate.addBranch(EOpBreak, (yylsp[(1) - (2)])); + ;} + break; + + case 194: + + { + (yyval.interm.intermNode) = context->intermediate.addBranch(EOpReturn, (yylsp[(1) - (2)])); + if (context->currentFunctionType->getBasicType() != EbtVoid) { + context->error((yylsp[(1) - (2)]), "non-void function must return a value", "return"); + context->recover(); + } + ;} + break; + + case 195: + + { + (yyval.interm.intermNode) = context->intermediate.addBranch(EOpReturn, (yyvsp[(2) - (3)].interm.intermTypedNode), (yylsp[(1) - (3)])); + context->functionReturnsValue = true; + if (context->currentFunctionType->getBasicType() == EbtVoid) { + context->error((yylsp[(1) - (3)]), "void function cannot return a value", "return"); + context->recover(); + } else if (*(context->currentFunctionType) != (yyvsp[(2) - (3)].interm.intermTypedNode)->getType()) { + context->error((yylsp[(1) - (3)]), "function return is not matching type:", "return"); + context->recover(); + } + ;} + break; + + case 196: + + { + FRAG_ONLY("discard", (yylsp[(1) - (2)])); + (yyval.interm.intermNode) = context->intermediate.addBranch(EOpKill, (yylsp[(1) - (2)])); + ;} + break; + + case 197: + + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + context->treeRoot = (yyval.interm.intermNode); + ;} + break; + + case 198: + + { + (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode), (yyloc)); + context->treeRoot = (yyval.interm.intermNode); + ;} + break; + + case 199: + + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + ;} + break; + + case 200: + + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + ;} + break; + + case 201: + + { + TFunction* function = (yyvsp[(1) - (1)].interm).function; + + const TSymbol *builtIn = context->symbolTable.findBuiltIn(function->getMangledName()); + + if (builtIn) + { + context->error((yylsp[(1) - (1)]), "built-in functions cannot be redefined", function->getName().c_str()); + context->recover(); + } + + TFunction* prevDec = static_cast(context->symbolTable.find(function->getMangledName())); + // + // Note: 'prevDec' could be 'function' if this is the first time we've seen function + // as it would have just been put in the symbol table. Otherwise, we're looking up + // an earlier occurance. + // + if (prevDec->isDefined()) { + // + // Then this function already has a body. + // + context->error((yylsp[(1) - (1)]), "function already has a body", function->getName().c_str()); + context->recover(); + } + prevDec->setDefined(); + + // + // Raise error message if main function takes any parameters or return anything other than void + // + if (function->getName() == "main") { + if (function->getParamCount() > 0) { + context->error((yylsp[(1) - (1)]), "function cannot take any parameter(s)", function->getName().c_str()); + context->recover(); + } + if (function->getReturnType().getBasicType() != EbtVoid) { + context->error((yylsp[(1) - (1)]), "", function->getReturnType().getBasicString(), "main function cannot return a value"); + context->recover(); + } + } + + // + // Remember the return type for later checking for RETURN statements. + // + context->currentFunctionType = &(prevDec->getReturnType()); + context->functionReturnsValue = false; + + // + // Insert parameters into the symbol table. + // If the parameter has no name, it's not an error, just don't insert it + // (could be used for unused args). + // + // Also, accumulate the list of parameters into the HIL, so lower level code + // knows where to find parameters. + // + TIntermAggregate* paramNodes = new TIntermAggregate; + for (size_t i = 0; i < function->getParamCount(); i++) { + const TParameter& param = function->getParam(i); + if (param.name != 0) { + TVariable *variable = new TVariable(param.name, *param.type); + // + // Insert the parameters with name in the symbol table. + // + if (! context->symbolTable.insert(*variable)) { + context->error((yylsp[(1) - (1)]), "redefinition", variable->getName().c_str()); + context->recover(); + delete variable; + } + + // + // Add the parameter to the HIL + // + paramNodes = context->intermediate.growAggregate( + paramNodes, + context->intermediate.addSymbol(variable->getUniqueId(), + variable->getName(), + variable->getType(), + (yylsp[(1) - (1)])), + (yylsp[(1) - (1)])); + } else { + paramNodes = context->intermediate.growAggregate(paramNodes, context->intermediate.addSymbol(0, "", *param.type, (yylsp[(1) - (1)])), (yylsp[(1) - (1)])); + } + } + context->intermediate.setAggregateOperator(paramNodes, EOpParameters, (yylsp[(1) - (1)])); + (yyvsp[(1) - (1)].interm).intermAggregate = paramNodes; + context->loopNestingLevel = 0; + ;} + break; + + case 202: + + { + //?? Check that all paths return a value if return type != void ? + // May be best done as post process phase on intermediate code + if (context->currentFunctionType->getBasicType() != EbtVoid && ! context->functionReturnsValue) { + context->error((yylsp[(1) - (3)]), "function does not return a value:", "", (yyvsp[(1) - (3)].interm).function->getName().c_str()); + context->recover(); + } + + (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermAggregate, (yyvsp[(3) - (3)].interm.intermNode), (yyloc)); + context->intermediate.setAggregateOperator((yyval.interm.intermNode), EOpFunction, (yylsp[(1) - (3)])); + (yyval.interm.intermNode)->getAsAggregate()->setName((yyvsp[(1) - (3)].interm).function->getMangledName().c_str()); + (yyval.interm.intermNode)->getAsAggregate()->setType((yyvsp[(1) - (3)].interm).function->getReturnType()); + + // store the pragma information for debug and optimize and other vendor specific + // information. This information can be queried from the parse tree + (yyval.interm.intermNode)->getAsAggregate()->setOptimize(context->pragma().optimize); + (yyval.interm.intermNode)->getAsAggregate()->setDebug(context->pragma().debug); + + context->symbolTable.pop(); + ;} + break; + + +/* Line 1267 of yacc.c. */ + + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + *++yylsp = yyloc; + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (&yylloc, context, YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (&yylloc, context, yymsg); + } + else + { + yyerror (&yylloc, context, YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + yyerror_range[0] = yylloc; + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval, &yylloc, context); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + yyerror_range[0] = yylsp[1-yylen]; + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + yyerror_range[0] = *yylsp; + yydestruct ("Error: popping", + yystos[yystate], yyvsp, yylsp, context); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + yyerror_range[1] = yylloc; + /* Using YYLLOC is tempting, but would change the location of + the look-ahead. YYLOC is available though. */ + YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2); + *++yylsp = yyloc; + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (&yylloc, context, YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval, &yylloc, context); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp, yylsp, context); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + + + + +void yyerror(YYLTYPE* yylloc, TParseContext* context, const char* reason) { + context->error(*yylloc, reason, ""); + context->recover(); +} + +int glslang_parse(TParseContext* context) { + return yyparse(context); +} + diff --git a/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.h b/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.h new file mode 100644 index 00000000000..51b62a4e7e3 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.h @@ -0,0 +1,290 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + INVARIANT = 258, + HIGH_PRECISION = 259, + MEDIUM_PRECISION = 260, + LOW_PRECISION = 261, + PRECISION = 262, + ATTRIBUTE = 263, + CONST_QUAL = 264, + BOOL_TYPE = 265, + FLOAT_TYPE = 266, + INT_TYPE = 267, + BREAK = 268, + CONTINUE = 269, + DO = 270, + ELSE = 271, + FOR = 272, + IF = 273, + DISCARD = 274, + RETURN = 275, + BVEC2 = 276, + BVEC3 = 277, + BVEC4 = 278, + IVEC2 = 279, + IVEC3 = 280, + IVEC4 = 281, + VEC2 = 282, + VEC3 = 283, + VEC4 = 284, + MATRIX2 = 285, + MATRIX3 = 286, + MATRIX4 = 287, + IN_QUAL = 288, + OUT_QUAL = 289, + INOUT_QUAL = 290, + UNIFORM = 291, + VARYING = 292, + STRUCT = 293, + VOID_TYPE = 294, + WHILE = 295, + SAMPLER2D = 296, + SAMPLERCUBE = 297, + SAMPLER_EXTERNAL_OES = 298, + SAMPLER2DRECT = 299, + IDENTIFIER = 300, + TYPE_NAME = 301, + FLOATCONSTANT = 302, + INTCONSTANT = 303, + BOOLCONSTANT = 304, + LEFT_OP = 305, + RIGHT_OP = 306, + INC_OP = 307, + DEC_OP = 308, + LE_OP = 309, + GE_OP = 310, + EQ_OP = 311, + NE_OP = 312, + AND_OP = 313, + OR_OP = 314, + XOR_OP = 315, + MUL_ASSIGN = 316, + DIV_ASSIGN = 317, + ADD_ASSIGN = 318, + MOD_ASSIGN = 319, + LEFT_ASSIGN = 320, + RIGHT_ASSIGN = 321, + AND_ASSIGN = 322, + XOR_ASSIGN = 323, + OR_ASSIGN = 324, + SUB_ASSIGN = 325, + LEFT_PAREN = 326, + RIGHT_PAREN = 327, + LEFT_BRACKET = 328, + RIGHT_BRACKET = 329, + LEFT_BRACE = 330, + RIGHT_BRACE = 331, + DOT = 332, + COMMA = 333, + COLON = 334, + EQUAL = 335, + SEMICOLON = 336, + BANG = 337, + DASH = 338, + TILDE = 339, + PLUS = 340, + STAR = 341, + SLASH = 342, + PERCENT = 343, + LEFT_ANGLE = 344, + RIGHT_ANGLE = 345, + VERTICAL_BAR = 346, + CARET = 347, + AMPERSAND = 348, + QUESTION = 349 + }; +#endif +/* Tokens. */ +#define INVARIANT 258 +#define HIGH_PRECISION 259 +#define MEDIUM_PRECISION 260 +#define LOW_PRECISION 261 +#define PRECISION 262 +#define ATTRIBUTE 263 +#define CONST_QUAL 264 +#define BOOL_TYPE 265 +#define FLOAT_TYPE 266 +#define INT_TYPE 267 +#define BREAK 268 +#define CONTINUE 269 +#define DO 270 +#define ELSE 271 +#define FOR 272 +#define IF 273 +#define DISCARD 274 +#define RETURN 275 +#define BVEC2 276 +#define BVEC3 277 +#define BVEC4 278 +#define IVEC2 279 +#define IVEC3 280 +#define IVEC4 281 +#define VEC2 282 +#define VEC3 283 +#define VEC4 284 +#define MATRIX2 285 +#define MATRIX3 286 +#define MATRIX4 287 +#define IN_QUAL 288 +#define OUT_QUAL 289 +#define INOUT_QUAL 290 +#define UNIFORM 291 +#define VARYING 292 +#define STRUCT 293 +#define VOID_TYPE 294 +#define WHILE 295 +#define SAMPLER2D 296 +#define SAMPLERCUBE 297 +#define SAMPLER_EXTERNAL_OES 298 +#define SAMPLER2DRECT 299 +#define IDENTIFIER 300 +#define TYPE_NAME 301 +#define FLOATCONSTANT 302 +#define INTCONSTANT 303 +#define BOOLCONSTANT 304 +#define LEFT_OP 305 +#define RIGHT_OP 306 +#define INC_OP 307 +#define DEC_OP 308 +#define LE_OP 309 +#define GE_OP 310 +#define EQ_OP 311 +#define NE_OP 312 +#define AND_OP 313 +#define OR_OP 314 +#define XOR_OP 315 +#define MUL_ASSIGN 316 +#define DIV_ASSIGN 317 +#define ADD_ASSIGN 318 +#define MOD_ASSIGN 319 +#define LEFT_ASSIGN 320 +#define RIGHT_ASSIGN 321 +#define AND_ASSIGN 322 +#define XOR_ASSIGN 323 +#define OR_ASSIGN 324 +#define SUB_ASSIGN 325 +#define LEFT_PAREN 326 +#define RIGHT_PAREN 327 +#define LEFT_BRACKET 328 +#define RIGHT_BRACKET 329 +#define LEFT_BRACE 330 +#define RIGHT_BRACE 331 +#define DOT 332 +#define COMMA 333 +#define COLON 334 +#define EQUAL 335 +#define SEMICOLON 336 +#define BANG 337 +#define DASH 338 +#define TILDE 339 +#define PLUS 340 +#define STAR 341 +#define SLASH 342 +#define PERCENT 343 +#define LEFT_ANGLE 344 +#define RIGHT_ANGLE 345 +#define VERTICAL_BAR 346 +#define CARET 347 +#define AMPERSAND 348 +#define QUESTION 349 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE + +{ +#define YYLTYPE TSourceLoc +#define YYLTYPE_IS_DECLARED 1 + struct { + union { + TString *string; + float f; + int i; + bool b; + }; + TSymbol* symbol; + } lex; + struct { + TOperator op; + union { + TIntermNode* intermNode; + TIntermNodePair nodePair; + TIntermTyped* intermTypedNode; + TIntermAggregate* intermAggregate; + }; + union { + TPublicType type; + TPrecision precision; + TQualifier qualifier; + TFunction* function; + TParameter param; + TField* field; + TFieldList* fieldList; + }; + } interm; +} +/* Line 1529 of yacc.c. */ + + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED +typedef struct YYLTYPE +{ + int first_line; + int first_column; + int last_line; + int last_column; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +# define YYLTYPE_IS_DECLARED 1 +# define YYLTYPE_IS_TRIVIAL 1 +#endif + + diff --git a/Source/ThirdParty/ANGLE/src/compiler/intermOut.cpp b/Source/ThirdParty/ANGLE/src/compiler/intermOut.cpp new file mode 100644 index 00000000000..13aa96af6d6 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/intermOut.cpp @@ -0,0 +1,424 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/localintermediate.h" + +// +// Two purposes: +// 1. Show an example of how to iterate tree. Functions can +// also directly call Traverse() on children themselves to +// have finer grained control over the process than shown here. +// See the last function for how to get started. +// 2. Print out a text based description of the tree. +// + +// +// Use this class to carry along data from node to node in +// the traversal +// +class TOutputTraverser : public TIntermTraverser { +public: + TOutputTraverser(TInfoSinkBase& i) : sink(i) { } + TInfoSinkBase& sink; + +protected: + void visitSymbol(TIntermSymbol*); + void visitConstantUnion(TIntermConstantUnion*); + bool visitBinary(Visit visit, TIntermBinary*); + bool visitUnary(Visit visit, TIntermUnary*); + bool visitSelection(Visit visit, TIntermSelection*); + bool visitAggregate(Visit visit, TIntermAggregate*); + bool visitLoop(Visit visit, TIntermLoop*); + bool visitBranch(Visit visit, TIntermBranch*); +}; + +TString TType::getCompleteString() const +{ + TStringStream stream; + + if (qualifier != EvqTemporary && qualifier != EvqGlobal) + stream << getQualifierString() << " " << getPrecisionString() << " "; + if (array) + stream << "array[" << getArraySize() << "] of "; + if (matrix) + stream << size << "X" << size << " matrix of "; + else if (size > 1) + stream << size << "-component vector of "; + + stream << getBasicString(); + return stream.str(); +} + +// +// Helper functions for printing, not part of traversing. +// + +void OutputTreeText(TInfoSinkBase& sink, TIntermNode* node, const int depth) +{ + int i; + + sink.location(node->getLine()); + + for (i = 0; i < depth; ++i) + sink << " "; +} + +// +// The rest of the file are the traversal functions. The last one +// is the one that starts the traversal. +// +// Return true from interior nodes to have the external traversal +// continue on to children. If you process children yourself, +// return false. +// + +void TOutputTraverser::visitSymbol(TIntermSymbol* node) +{ + OutputTreeText(sink, node, depth); + + sink << "'" << node->getSymbol() << "' "; + sink << "(" << node->getCompleteString() << ")\n"; +} + +bool TOutputTraverser::visitBinary(Visit visit, TIntermBinary* node) +{ + TInfoSinkBase& out = sink; + + OutputTreeText(out, node, depth); + + switch (node->getOp()) { + case EOpAssign: out << "move second child to first child"; break; + case EOpInitialize: out << "initialize first child with second child"; break; + case EOpAddAssign: out << "add second child into first child"; break; + case EOpSubAssign: out << "subtract second child into first child"; break; + case EOpMulAssign: out << "multiply second child into first child"; break; + case EOpVectorTimesMatrixAssign: out << "matrix mult second child into first child"; break; + case EOpVectorTimesScalarAssign: out << "vector scale second child into first child"; break; + case EOpMatrixTimesScalarAssign: out << "matrix scale second child into first child"; break; + case EOpMatrixTimesMatrixAssign: out << "matrix mult second child into first child"; break; + case EOpDivAssign: out << "divide second child into first child"; break; + case EOpIndexDirect: out << "direct index"; break; + case EOpIndexIndirect: out << "indirect index"; break; + case EOpIndexDirectStruct: out << "direct index for structure"; break; + case EOpVectorSwizzle: out << "vector swizzle"; break; + + case EOpAdd: out << "add"; break; + case EOpSub: out << "subtract"; break; + case EOpMul: out << "component-wise multiply"; break; + case EOpDiv: out << "divide"; break; + case EOpEqual: out << "Compare Equal"; break; + case EOpNotEqual: out << "Compare Not Equal"; break; + case EOpLessThan: out << "Compare Less Than"; break; + case EOpGreaterThan: out << "Compare Greater Than"; break; + case EOpLessThanEqual: out << "Compare Less Than or Equal"; break; + case EOpGreaterThanEqual: out << "Compare Greater Than or Equal"; break; + + case EOpVectorTimesScalar: out << "vector-scale"; break; + case EOpVectorTimesMatrix: out << "vector-times-matrix"; break; + case EOpMatrixTimesVector: out << "matrix-times-vector"; break; + case EOpMatrixTimesScalar: out << "matrix-scale"; break; + case EOpMatrixTimesMatrix: out << "matrix-multiply"; break; + + case EOpLogicalOr: out << "logical-or"; break; + case EOpLogicalXor: out << "logical-xor"; break; + case EOpLogicalAnd: out << "logical-and"; break; + default: out << ""; + } + + out << " (" << node->getCompleteString() << ")"; + + out << "\n"; + + return true; +} + +bool TOutputTraverser::visitUnary(Visit visit, TIntermUnary* node) +{ + TInfoSinkBase& out = sink; + + OutputTreeText(out, node, depth); + + switch (node->getOp()) { + case EOpNegative: out << "Negate value"; break; + case EOpVectorLogicalNot: + case EOpLogicalNot: out << "Negate conditional"; break; + + case EOpPostIncrement: out << "Post-Increment"; break; + case EOpPostDecrement: out << "Post-Decrement"; break; + case EOpPreIncrement: out << "Pre-Increment"; break; + case EOpPreDecrement: out << "Pre-Decrement"; break; + + case EOpConvIntToBool: out << "Convert int to bool"; break; + case EOpConvFloatToBool:out << "Convert float to bool";break; + case EOpConvBoolToFloat:out << "Convert bool to float";break; + case EOpConvIntToFloat: out << "Convert int to float"; break; + case EOpConvFloatToInt: out << "Convert float to int"; break; + case EOpConvBoolToInt: out << "Convert bool to int"; break; + + case EOpRadians: out << "radians"; break; + case EOpDegrees: out << "degrees"; break; + case EOpSin: out << "sine"; break; + case EOpCos: out << "cosine"; break; + case EOpTan: out << "tangent"; break; + case EOpAsin: out << "arc sine"; break; + case EOpAcos: out << "arc cosine"; break; + case EOpAtan: out << "arc tangent"; break; + + case EOpExp: out << "exp"; break; + case EOpLog: out << "log"; break; + case EOpExp2: out << "exp2"; break; + case EOpLog2: out << "log2"; break; + case EOpSqrt: out << "sqrt"; break; + case EOpInverseSqrt: out << "inverse sqrt"; break; + + case EOpAbs: out << "Absolute value"; break; + case EOpSign: out << "Sign"; break; + case EOpFloor: out << "Floor"; break; + case EOpCeil: out << "Ceiling"; break; + case EOpFract: out << "Fraction"; break; + + case EOpLength: out << "length"; break; + case EOpNormalize: out << "normalize"; break; + // case EOpDPdx: out << "dPdx"; break; + // case EOpDPdy: out << "dPdy"; break; + // case EOpFwidth: out << "fwidth"; break; + + case EOpAny: out << "any"; break; + case EOpAll: out << "all"; break; + + default: + out.prefix(EPrefixError); + out << "Bad unary op"; + } + + out << " (" << node->getCompleteString() << ")"; + + out << "\n"; + + return true; +} + +bool TOutputTraverser::visitAggregate(Visit visit, TIntermAggregate* node) +{ + TInfoSinkBase& out = sink; + + if (node->getOp() == EOpNull) { + out.prefix(EPrefixError); + out << "node is still EOpNull!"; + return true; + } + + OutputTreeText(out, node, depth); + + switch (node->getOp()) { + case EOpSequence: out << "Sequence\n"; return true; + case EOpComma: out << "Comma\n"; return true; + case EOpFunction: out << "Function Definition: " << node->getName(); break; + case EOpFunctionCall: out << "Function Call: " << node->getName(); break; + case EOpParameters: out << "Function Parameters: "; break; + + case EOpConstructFloat: out << "Construct float"; break; + case EOpConstructVec2: out << "Construct vec2"; break; + case EOpConstructVec3: out << "Construct vec3"; break; + case EOpConstructVec4: out << "Construct vec4"; break; + case EOpConstructBool: out << "Construct bool"; break; + case EOpConstructBVec2: out << "Construct bvec2"; break; + case EOpConstructBVec3: out << "Construct bvec3"; break; + case EOpConstructBVec4: out << "Construct bvec4"; break; + case EOpConstructInt: out << "Construct int"; break; + case EOpConstructIVec2: out << "Construct ivec2"; break; + case EOpConstructIVec3: out << "Construct ivec3"; break; + case EOpConstructIVec4: out << "Construct ivec4"; break; + case EOpConstructMat2: out << "Construct mat2"; break; + case EOpConstructMat3: out << "Construct mat3"; break; + case EOpConstructMat4: out << "Construct mat4"; break; + case EOpConstructStruct: out << "Construct structure"; break; + + case EOpLessThan: out << "Compare Less Than"; break; + case EOpGreaterThan: out << "Compare Greater Than"; break; + case EOpLessThanEqual: out << "Compare Less Than or Equal"; break; + case EOpGreaterThanEqual: out << "Compare Greater Than or Equal"; break; + case EOpVectorEqual: out << "Equal"; break; + case EOpVectorNotEqual: out << "NotEqual"; break; + + case EOpMod: out << "mod"; break; + case EOpPow: out << "pow"; break; + + case EOpAtan: out << "arc tangent"; break; + + case EOpMin: out << "min"; break; + case EOpMax: out << "max"; break; + case EOpClamp: out << "clamp"; break; + case EOpMix: out << "mix"; break; + case EOpStep: out << "step"; break; + case EOpSmoothStep: out << "smoothstep"; break; + + case EOpDistance: out << "distance"; break; + case EOpDot: out << "dot-product"; break; + case EOpCross: out << "cross-product"; break; + case EOpFaceForward: out << "face-forward"; break; + case EOpReflect: out << "reflect"; break; + case EOpRefract: out << "refract"; break; + case EOpMul: out << "component-wise multiply"; break; + + case EOpDeclaration: out << "Declaration: "; break; + + default: + out.prefix(EPrefixError); + out << "Bad aggregation op"; + } + + if (node->getOp() != EOpSequence && node->getOp() != EOpParameters) + out << " (" << node->getCompleteString() << ")"; + + out << "\n"; + + return true; +} + +bool TOutputTraverser::visitSelection(Visit visit, TIntermSelection* node) +{ + TInfoSinkBase& out = sink; + + OutputTreeText(out, node, depth); + + out << "Test condition and select"; + out << " (" << node->getCompleteString() << ")\n"; + + ++depth; + + OutputTreeText(sink, node, depth); + out << "Condition\n"; + node->getCondition()->traverse(this); + + OutputTreeText(sink, node, depth); + if (node->getTrueBlock()) { + out << "true case\n"; + node->getTrueBlock()->traverse(this); + } else + out << "true case is null\n"; + + if (node->getFalseBlock()) { + OutputTreeText(sink, node, depth); + out << "false case\n"; + node->getFalseBlock()->traverse(this); + } + + --depth; + + return false; +} + +void TOutputTraverser::visitConstantUnion(TIntermConstantUnion* node) +{ + TInfoSinkBase& out = sink; + + size_t size = node->getType().getObjectSize(); + + for (size_t i = 0; i < size; i++) { + OutputTreeText(out, node, depth); + switch (node->getUnionArrayPointer()[i].getType()) { + case EbtBool: + if (node->getUnionArrayPointer()[i].getBConst()) + out << "true"; + else + out << "false"; + + out << " (" << "const bool" << ")"; + out << "\n"; + break; + case EbtFloat: + out << node->getUnionArrayPointer()[i].getFConst(); + out << " (const float)\n"; + break; + case EbtInt: + out << node->getUnionArrayPointer()[i].getIConst(); + out << " (const int)\n"; + break; + default: + out.message(EPrefixInternalError, node->getLine(), "Unknown constant"); + break; + } + } +} + +bool TOutputTraverser::visitLoop(Visit visit, TIntermLoop* node) +{ + TInfoSinkBase& out = sink; + + OutputTreeText(out, node, depth); + + out << "Loop with condition "; + if (node->getType() == ELoopDoWhile) + out << "not "; + out << "tested first\n"; + + ++depth; + + OutputTreeText(sink, node, depth); + if (node->getCondition()) { + out << "Loop Condition\n"; + node->getCondition()->traverse(this); + } else + out << "No loop condition\n"; + + OutputTreeText(sink, node, depth); + if (node->getBody()) { + out << "Loop Body\n"; + node->getBody()->traverse(this); + } else + out << "No loop body\n"; + + if (node->getExpression()) { + OutputTreeText(sink, node, depth); + out << "Loop Terminal Expression\n"; + node->getExpression()->traverse(this); + } + + --depth; + + return false; +} + +bool TOutputTraverser::visitBranch(Visit visit, TIntermBranch* node) +{ + TInfoSinkBase& out = sink; + + OutputTreeText(out, node, depth); + + switch (node->getFlowOp()) { + case EOpKill: out << "Branch: Kill"; break; + case EOpBreak: out << "Branch: Break"; break; + case EOpContinue: out << "Branch: Continue"; break; + case EOpReturn: out << "Branch: Return"; break; + default: out << "Branch: Unknown Branch"; break; + } + + if (node->getExpression()) { + out << " with expression\n"; + ++depth; + node->getExpression()->traverse(this); + --depth; + } else + out << "\n"; + + return false; +} + +// +// This function is the one to call externally to start the traversal. +// Individual functions can be initialized to 0 to skip processing of that +// type of node. It's children will still be processed. +// +void TIntermediate::outputTree(TIntermNode* root) +{ + if (root == 0) + return; + + TOutputTraverser it(infoSink.info); + + root->traverse(&it); +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/intermediate.h b/Source/ThirdParty/ANGLE/src/compiler/intermediate.h new file mode 100644 index 00000000000..c96479639bb --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/intermediate.h @@ -0,0 +1,581 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// +// Definition of the in-memory high-level intermediate representation +// of shaders. This is a tree that parser creates. +// +// Nodes in the tree are defined as a hierarchy of classes derived from +// TIntermNode. Each is a node in a tree. There is no preset branching factor; +// each node can have it's own type of list of children. +// + +#ifndef __INTERMEDIATE_H +#define __INTERMEDIATE_H + +#include "GLSLANG/ShaderLang.h" + +#include +#include "compiler/Common.h" +#include "compiler/Types.h" +#include "compiler/ConstantUnion.h" + +// +// Operators used by the high-level (parse tree) representation. +// +enum TOperator { + EOpNull, // if in a node, should only mean a node is still being built + EOpSequence, // denotes a list of statements, or parameters, etc. + EOpFunctionCall, + EOpFunction, // For function definition + EOpParameters, // an aggregate listing the parameters to a function + + EOpDeclaration, + EOpPrototype, + + // + // Unary operators + // + + EOpNegative, + EOpLogicalNot, + EOpVectorLogicalNot, + + EOpPostIncrement, + EOpPostDecrement, + EOpPreIncrement, + EOpPreDecrement, + + EOpConvIntToBool, + EOpConvFloatToBool, + EOpConvBoolToFloat, + EOpConvIntToFloat, + EOpConvFloatToInt, + EOpConvBoolToInt, + + // + // binary operations + // + + EOpAdd, + EOpSub, + EOpMul, + EOpDiv, + EOpEqual, + EOpNotEqual, + EOpVectorEqual, + EOpVectorNotEqual, + EOpLessThan, + EOpGreaterThan, + EOpLessThanEqual, + EOpGreaterThanEqual, + EOpComma, + + EOpVectorTimesScalar, + EOpVectorTimesMatrix, + EOpMatrixTimesVector, + EOpMatrixTimesScalar, + + EOpLogicalOr, + EOpLogicalXor, + EOpLogicalAnd, + + EOpIndexDirect, + EOpIndexIndirect, + EOpIndexDirectStruct, + + EOpVectorSwizzle, + + // + // Built-in functions potentially mapped to operators + // + + EOpRadians, + EOpDegrees, + EOpSin, + EOpCos, + EOpTan, + EOpAsin, + EOpAcos, + EOpAtan, + + EOpPow, + EOpExp, + EOpLog, + EOpExp2, + EOpLog2, + EOpSqrt, + EOpInverseSqrt, + + EOpAbs, + EOpSign, + EOpFloor, + EOpCeil, + EOpFract, + EOpMod, + EOpMin, + EOpMax, + EOpClamp, + EOpMix, + EOpStep, + EOpSmoothStep, + + EOpLength, + EOpDistance, + EOpDot, + EOpCross, + EOpNormalize, + EOpFaceForward, + EOpReflect, + EOpRefract, + + EOpDFdx, // Fragment only, OES_standard_derivatives extension + EOpDFdy, // Fragment only, OES_standard_derivatives extension + EOpFwidth, // Fragment only, OES_standard_derivatives extension + + EOpMatrixTimesMatrix, + + EOpAny, + EOpAll, + + // + // Branch + // + + EOpKill, // Fragment only + EOpReturn, + EOpBreak, + EOpContinue, + + // + // Constructors + // + + EOpConstructInt, + EOpConstructBool, + EOpConstructFloat, + EOpConstructVec2, + EOpConstructVec3, + EOpConstructVec4, + EOpConstructBVec2, + EOpConstructBVec3, + EOpConstructBVec4, + EOpConstructIVec2, + EOpConstructIVec3, + EOpConstructIVec4, + EOpConstructMat2, + EOpConstructMat3, + EOpConstructMat4, + EOpConstructStruct, + + // + // moves + // + + EOpAssign, + EOpInitialize, + EOpAddAssign, + EOpSubAssign, + EOpMulAssign, + EOpVectorTimesMatrixAssign, + EOpVectorTimesScalarAssign, + EOpMatrixTimesScalarAssign, + EOpMatrixTimesMatrixAssign, + EOpDivAssign +}; + +extern const char* getOperatorString(TOperator op); + +class TIntermTraverser; +class TIntermAggregate; +class TIntermBinary; +class TIntermUnary; +class TIntermConstantUnion; +class TIntermSelection; +class TIntermTyped; +class TIntermSymbol; +class TIntermLoop; +class TInfoSink; + +// +// Base class for the tree nodes +// +class TIntermNode { +public: + POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator) + + TIntermNode() { + // TODO: Move this to TSourceLoc constructor + // after getting rid of TPublicType. + line.first_file = line.last_file = 0; + line.first_line = line.last_line = 0; + } + virtual ~TIntermNode() { } + + const TSourceLoc& getLine() const { return line; } + void setLine(const TSourceLoc& l) { line = l; } + + virtual void traverse(TIntermTraverser*) = 0; + virtual TIntermTyped* getAsTyped() { return 0; } + virtual TIntermConstantUnion* getAsConstantUnion() { return 0; } + virtual TIntermAggregate* getAsAggregate() { return 0; } + virtual TIntermBinary* getAsBinaryNode() { return 0; } + virtual TIntermUnary* getAsUnaryNode() { return 0; } + virtual TIntermSelection* getAsSelectionNode() { return 0; } + virtual TIntermSymbol* getAsSymbolNode() { return 0; } + virtual TIntermLoop* getAsLoopNode() { return 0; } + +protected: + TSourceLoc line; +}; + +// +// This is just to help yacc. +// +struct TIntermNodePair { + TIntermNode* node1; + TIntermNode* node2; +}; + +// +// Intermediate class for nodes that have a type. +// +class TIntermTyped : public TIntermNode { +public: + TIntermTyped(const TType& t) : type(t) { } + virtual TIntermTyped* getAsTyped() { return this; } + + void setType(const TType& t) { type = t; } + const TType& getType() const { return type; } + TType* getTypePointer() { return &type; } + + TBasicType getBasicType() const { return type.getBasicType(); } + TQualifier getQualifier() const { return type.getQualifier(); } + TPrecision getPrecision() const { return type.getPrecision(); } + int getNominalSize() const { return type.getNominalSize(); } + + bool isMatrix() const { return type.isMatrix(); } + bool isArray() const { return type.isArray(); } + bool isVector() const { return type.isVector(); } + bool isScalar() const { return type.isScalar(); } + const char* getBasicString() const { return type.getBasicString(); } + const char* getQualifierString() const { return type.getQualifierString(); } + TString getCompleteString() const { return type.getCompleteString(); } + + int totalRegisterCount() const { return type.totalRegisterCount(); } + int elementRegisterCount() const { return type.elementRegisterCount(); } + int getArraySize() const { return type.getArraySize(); } + +protected: + TType type; +}; + +// +// Handle for, do-while, and while loops. +// +enum TLoopType { + ELoopFor, + ELoopWhile, + ELoopDoWhile +}; + +class TIntermLoop : public TIntermNode { +public: + TIntermLoop(TLoopType aType, + TIntermNode *aInit, TIntermTyped* aCond, TIntermTyped* aExpr, + TIntermNode* aBody) : + type(aType), + init(aInit), + cond(aCond), + expr(aExpr), + body(aBody), + unrollFlag(false) { } + + virtual TIntermLoop* getAsLoopNode() { return this; } + virtual void traverse(TIntermTraverser*); + + TLoopType getType() const { return type; } + TIntermNode* getInit() { return init; } + TIntermTyped* getCondition() { return cond; } + TIntermTyped* getExpression() { return expr; } + TIntermNode* getBody() { return body; } + + void setUnrollFlag(bool flag) { unrollFlag = flag; } + bool getUnrollFlag() { return unrollFlag; } + +protected: + TLoopType type; + TIntermNode* init; // for-loop initialization + TIntermTyped* cond; // loop exit condition + TIntermTyped* expr; // for-loop expression + TIntermNode* body; // loop body + + bool unrollFlag; // Whether the loop should be unrolled or not. +}; + +// +// Handle break, continue, return, and kill. +// +class TIntermBranch : public TIntermNode { +public: + TIntermBranch(TOperator op, TIntermTyped* e) : + flowOp(op), + expression(e) { } + + virtual void traverse(TIntermTraverser*); + + TOperator getFlowOp() { return flowOp; } + TIntermTyped* getExpression() { return expression; } + +protected: + TOperator flowOp; + TIntermTyped* expression; // non-zero except for "return exp;" statements +}; + +// +// Nodes that correspond to symbols or constants in the source code. +// +class TIntermSymbol : public TIntermTyped { +public: + // if symbol is initialized as symbol(sym), the memory comes from the poolallocator of sym. If sym comes from + // per process globalpoolallocator, then it causes increased memory usage per compile + // it is essential to use "symbol = sym" to assign to symbol + TIntermSymbol(int i, const TString& sym, const TType& t) : + TIntermTyped(t), id(i) { symbol = sym; originalSymbol = sym; } + + int getId() const { return id; } + const TString& getSymbol() const { return symbol; } + + void setId(int newId) { id = newId; } + void setSymbol(const TString& sym) { symbol = sym; } + + const TString& getOriginalSymbol() const { return originalSymbol; } + + virtual void traverse(TIntermTraverser*); + virtual TIntermSymbol* getAsSymbolNode() { return this; } + +protected: + int id; + TString symbol; + TString originalSymbol; +}; + +class TIntermConstantUnion : public TIntermTyped { +public: + TIntermConstantUnion(ConstantUnion *unionPointer, const TType& t) : TIntermTyped(t), unionArrayPointer(unionPointer) { } + + ConstantUnion* getUnionArrayPointer() const { return unionArrayPointer; } + + int getIConst(size_t index) const { return unionArrayPointer ? unionArrayPointer[index].getIConst() : 0; } + float getFConst(size_t index) const { return unionArrayPointer ? unionArrayPointer[index].getFConst() : 0.0f; } + bool getBConst(size_t index) const { return unionArrayPointer ? unionArrayPointer[index].getBConst() : false; } + + virtual TIntermConstantUnion* getAsConstantUnion() { return this; } + virtual void traverse(TIntermTraverser*); + + TIntermTyped* fold(TOperator, TIntermTyped*, TInfoSink&); + +protected: + ConstantUnion *unionArrayPointer; +}; + +// +// Intermediate class for node types that hold operators. +// +class TIntermOperator : public TIntermTyped { +public: + TOperator getOp() const { return op; } + void setOp(TOperator o) { op = o; } + + bool modifiesState() const; + bool isConstructor() const; + +protected: + TIntermOperator(TOperator o) : TIntermTyped(TType(EbtFloat, EbpUndefined)), op(o) {} + TIntermOperator(TOperator o, TType& t) : TIntermTyped(t), op(o) {} + TOperator op; +}; + +// +// Nodes for all the basic binary math operators. +// +class TIntermBinary : public TIntermOperator { +public: + TIntermBinary(TOperator o) : TIntermOperator(o), addIndexClamp(false) {} + + virtual TIntermBinary* getAsBinaryNode() { return this; } + virtual void traverse(TIntermTraverser*); + + void setLeft(TIntermTyped* n) { left = n; } + void setRight(TIntermTyped* n) { right = n; } + TIntermTyped* getLeft() const { return left; } + TIntermTyped* getRight() const { return right; } + bool promote(TInfoSink&); + + void setAddIndexClamp() { addIndexClamp = true; } + bool getAddIndexClamp() { return addIndexClamp; } + +protected: + TIntermTyped* left; + TIntermTyped* right; + + // If set to true, wrap any EOpIndexIndirect with a clamp to bounds. + bool addIndexClamp; +}; + +// +// Nodes for unary math operators. +// +class TIntermUnary : public TIntermOperator { +public: + TIntermUnary(TOperator o, TType& t) : TIntermOperator(o, t), operand(0), useEmulatedFunction(false) {} + TIntermUnary(TOperator o) : TIntermOperator(o), operand(0), useEmulatedFunction(false) {} + + virtual void traverse(TIntermTraverser*); + virtual TIntermUnary* getAsUnaryNode() { return this; } + + void setOperand(TIntermTyped* o) { operand = o; } + TIntermTyped* getOperand() { return operand; } + bool promote(TInfoSink&); + + void setUseEmulatedFunction() { useEmulatedFunction = true; } + bool getUseEmulatedFunction() { return useEmulatedFunction; } + +protected: + TIntermTyped* operand; + + // If set to true, replace the built-in function call with an emulated one + // to work around driver bugs. + bool useEmulatedFunction; +}; + +typedef TVector TIntermSequence; +typedef TVector TQualifierList; + +// +// Nodes that operate on an arbitrary sized set of children. +// +class TIntermAggregate : public TIntermOperator { +public: + TIntermAggregate() : TIntermOperator(EOpNull), userDefined(false), useEmulatedFunction(false) { } + TIntermAggregate(TOperator o) : TIntermOperator(o), useEmulatedFunction(false) { } + ~TIntermAggregate() { } + + virtual TIntermAggregate* getAsAggregate() { return this; } + virtual void traverse(TIntermTraverser*); + + TIntermSequence& getSequence() { return sequence; } + + void setName(const TString& n) { name = n; } + const TString& getName() const { return name; } + + void setUserDefined() { userDefined = true; } + bool isUserDefined() const { return userDefined; } + + void setOptimize(bool o) { optimize = o; } + bool getOptimize() { return optimize; } + void setDebug(bool d) { debug = d; } + bool getDebug() { return debug; } + + void setUseEmulatedFunction() { useEmulatedFunction = true; } + bool getUseEmulatedFunction() { return useEmulatedFunction; } + +protected: + TIntermAggregate(const TIntermAggregate&); // disallow copy constructor + TIntermAggregate& operator=(const TIntermAggregate&); // disallow assignment operator + TIntermSequence sequence; + TString name; + bool userDefined; // used for user defined function names + + bool optimize; + bool debug; + + // If set to true, replace the built-in function call with an emulated one + // to work around driver bugs. + bool useEmulatedFunction; +}; + +// +// For if tests. Simplified since there is no switch statement. +// +class TIntermSelection : public TIntermTyped { +public: + TIntermSelection(TIntermTyped* cond, TIntermNode* trueB, TIntermNode* falseB) : + TIntermTyped(TType(EbtVoid, EbpUndefined)), condition(cond), trueBlock(trueB), falseBlock(falseB) {} + TIntermSelection(TIntermTyped* cond, TIntermNode* trueB, TIntermNode* falseB, const TType& type) : + TIntermTyped(type), condition(cond), trueBlock(trueB), falseBlock(falseB) {} + + virtual void traverse(TIntermTraverser*); + + bool usesTernaryOperator() const { return getBasicType() != EbtVoid; } + TIntermNode* getCondition() const { return condition; } + TIntermNode* getTrueBlock() const { return trueBlock; } + TIntermNode* getFalseBlock() const { return falseBlock; } + TIntermSelection* getAsSelectionNode() { return this; } + +protected: + TIntermTyped* condition; + TIntermNode* trueBlock; + TIntermNode* falseBlock; +}; + +enum Visit +{ + PreVisit, + InVisit, + PostVisit +}; + +// +// For traversing the tree. User should derive from this, +// put their traversal specific data in it, and then pass +// it to a Traverse method. +// +// When using this, just fill in the methods for nodes you want visited. +// Return false from a pre-visit to skip visiting that node's subtree. +// +class TIntermTraverser +{ +public: + POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator) + + TIntermTraverser(bool preVisit = true, bool inVisit = false, bool postVisit = false, bool rightToLeft = false) : + preVisit(preVisit), + inVisit(inVisit), + postVisit(postVisit), + rightToLeft(rightToLeft), + depth(0), + maxDepth(0) {} + virtual ~TIntermTraverser() {}; + + virtual void visitSymbol(TIntermSymbol*) {} + virtual void visitConstantUnion(TIntermConstantUnion*) {} + virtual bool visitBinary(Visit visit, TIntermBinary*) {return true;} + virtual bool visitUnary(Visit visit, TIntermUnary*) {return true;} + virtual bool visitSelection(Visit visit, TIntermSelection*) {return true;} + virtual bool visitAggregate(Visit visit, TIntermAggregate*) {return true;} + virtual bool visitLoop(Visit visit, TIntermLoop*) {return true;} + virtual bool visitBranch(Visit visit, TIntermBranch*) {return true;} + + int getMaxDepth() const {return maxDepth;} + void incrementDepth() {depth++; maxDepth = std::max(maxDepth, depth); } + void decrementDepth() {depth--;} + + // Return the original name if hash function pointer is NULL; + // otherwise return the hashed name. + static TString hash(const TString& name, ShHashFunction64 hashFunction); + + const bool preVisit; + const bool inVisit; + const bool postVisit; + const bool rightToLeft; + +protected: + int depth; + int maxDepth; +}; + +#endif // __INTERMEDIATE_H diff --git a/Source/ThirdParty/ANGLE/src/compiler/localintermediate.h b/Source/ThirdParty/ANGLE/src/compiler/localintermediate.h new file mode 100644 index 00000000000..b67340706a3 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/localintermediate.h @@ -0,0 +1,57 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef _LOCAL_INTERMEDIATE_INCLUDED_ +#define _LOCAL_INTERMEDIATE_INCLUDED_ + +#include "GLSLANG/ShaderLang.h" +#include "compiler/intermediate.h" +#include "compiler/SymbolTable.h" + +struct TVectorFields { + int offsets[4]; + int num; +}; + +// +// Set of helper functions to help parse and build the tree. +// +class TInfoSink; +class TIntermediate { +public: + POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator) + + TIntermediate(TInfoSink& i) : infoSink(i) { } + TIntermSymbol* addSymbol(int Id, const TString&, const TType&, const TSourceLoc&); + TIntermTyped* addConversion(TOperator, const TType&, TIntermTyped*); + TIntermTyped* addBinaryMath(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc&, TSymbolTable&); + TIntermTyped* addAssign(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc&); + TIntermTyped* addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, const TSourceLoc&); + TIntermTyped* addUnaryMath(TOperator op, TIntermNode* child, const TSourceLoc&, TSymbolTable&); + TIntermAggregate* growAggregate(TIntermNode* left, TIntermNode* right, const TSourceLoc&); + TIntermAggregate* makeAggregate(TIntermNode* node, const TSourceLoc&); + TIntermAggregate* setAggregateOperator(TIntermNode*, TOperator, const TSourceLoc&); + TIntermNode* addSelection(TIntermTyped* cond, TIntermNodePair code, const TSourceLoc&); + TIntermTyped* addSelection(TIntermTyped* cond, TIntermTyped* trueBlock, TIntermTyped* falseBlock, const TSourceLoc&); + TIntermTyped* addComma(TIntermTyped* left, TIntermTyped* right, const TSourceLoc&); + TIntermConstantUnion* addConstantUnion(ConstantUnion*, const TType&, const TSourceLoc&); + TIntermTyped* promoteConstantUnion(TBasicType, TIntermConstantUnion*) ; + bool parseConstTree(const TSourceLoc&, TIntermNode*, ConstantUnion*, TOperator, TSymbolTable&, TType, bool singleConstantParam = false); + TIntermNode* addLoop(TLoopType, TIntermNode*, TIntermTyped*, TIntermTyped*, TIntermNode*, const TSourceLoc&); + TIntermBranch* addBranch(TOperator, const TSourceLoc&); + TIntermBranch* addBranch(TOperator, TIntermTyped*, const TSourceLoc&); + TIntermTyped* addSwizzle(TVectorFields&, const TSourceLoc&); + bool postProcess(TIntermNode*); + void remove(TIntermNode*); + void outputTree(TIntermNode*); + +private: + void operator=(TIntermediate&); // prevent assignments + + TInfoSink& infoSink; +}; + +#endif // _LOCAL_INTERMEDIATE_INCLUDED_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/osinclude.h b/Source/ThirdParty/ANGLE/src/compiler/osinclude.h new file mode 100644 index 00000000000..d8bb1a797c4 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/osinclude.h @@ -0,0 +1,65 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef __OSINCLUDE_H +#define __OSINCLUDE_H + +// +// This file contains contains os-specific datatypes and +// declares any os-specific functions. +// + +#if defined(_WIN32) || defined(_WIN64) +#define ANGLE_OS_WIN +#elif defined(__APPLE__) || defined(__linux__) || \ + defined(__FreeBSD__) || defined(__OpenBSD__) || \ + defined(__sun) || defined(ANDROID) || \ + defined(__GLIBC__) || defined(__GNU__) || \ + defined(__QNX__) +#define ANGLE_OS_POSIX +#else +#error Unsupported platform. +#endif + +#if defined(ANGLE_OS_WIN) +#define STRICT +#define VC_EXTRALEAN 1 +#include +#elif defined(ANGLE_OS_POSIX) +#include +#include +#include +#endif // ANGLE_OS_WIN + + +#include "compiler/debug.h" + +// +// Thread Local Storage Operations +// +#if defined(ANGLE_OS_WIN) +typedef DWORD OS_TLSIndex; +#define OS_INVALID_TLS_INDEX (TLS_OUT_OF_INDEXES) +#elif defined(ANGLE_OS_POSIX) +typedef pthread_key_t OS_TLSIndex; +#define OS_INVALID_TLS_INDEX (static_cast(-1)) +#endif // ANGLE_OS_WIN + +OS_TLSIndex OS_AllocTLSIndex(); +bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue); +bool OS_FreeTLSIndex(OS_TLSIndex nIndex); + +inline void* OS_GetTLSValue(OS_TLSIndex nIndex) +{ + ASSERT(nIndex != OS_INVALID_TLS_INDEX); +#if defined(ANGLE_OS_WIN) + return TlsGetValue(nIndex); +#elif defined(ANGLE_OS_POSIX) + return pthread_getspecific(nIndex); +#endif // ANGLE_OS_WIN +} + +#endif // __OSINCLUDE_H diff --git a/Source/ThirdParty/ANGLE/src/compiler/ossource_posix.cpp b/Source/ThirdParty/ANGLE/src/compiler/ossource_posix.cpp new file mode 100644 index 00000000000..1e1e699aebc --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/ossource_posix.cpp @@ -0,0 +1,64 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// +// This file contains the posix specific functions +// +#include "compiler/osinclude.h" + +#if !defined(ANGLE_OS_POSIX) +#error Trying to build a posix specific file in a non-posix build. +#endif + +// +// Thread Local Storage Operations +// +OS_TLSIndex OS_AllocTLSIndex() +{ + pthread_key_t pPoolIndex; + + // + // Create global pool key. + // + if ((pthread_key_create(&pPoolIndex, NULL)) != 0) { + assert(0 && "OS_AllocTLSIndex(): Unable to allocate Thread Local Storage"); + return false; + } + else { + return pPoolIndex; + } +} + + +bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue) +{ + if (nIndex == OS_INVALID_TLS_INDEX) { + assert(0 && "OS_SetTLSValue(): Invalid TLS Index"); + return false; + } + + if (pthread_setspecific(nIndex, lpvValue) == 0) + return true; + else + return false; +} + + +bool OS_FreeTLSIndex(OS_TLSIndex nIndex) +{ + if (nIndex == OS_INVALID_TLS_INDEX) { + assert(0 && "OS_SetTLSValue(): Invalid TLS Index"); + return false; + } + + // + // Delete the global pool key. + // + if (pthread_key_delete(nIndex) == 0) + return true; + else + return false; +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/ossource_win.cpp b/Source/ThirdParty/ANGLE/src/compiler/ossource_win.cpp new file mode 100644 index 00000000000..89922fef3f4 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/ossource_win.cpp @@ -0,0 +1,57 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/osinclude.h" +// +// This file contains contains the window's specific functions +// + +#if !defined(ANGLE_OS_WIN) +#error Trying to build a windows specific file in a non windows build. +#endif + + +// +// Thread Local Storage Operations +// +OS_TLSIndex OS_AllocTLSIndex() +{ + DWORD dwIndex = TlsAlloc(); + if (dwIndex == TLS_OUT_OF_INDEXES) { + assert(0 && "OS_AllocTLSIndex(): Unable to allocate Thread Local Storage"); + return OS_INVALID_TLS_INDEX; + } + + return dwIndex; +} + + +bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue) +{ + if (nIndex == OS_INVALID_TLS_INDEX) { + assert(0 && "OS_SetTLSValue(): Invalid TLS Index"); + return false; + } + + if (TlsSetValue(nIndex, lpvValue)) + return true; + else + return false; +} + + +bool OS_FreeTLSIndex(OS_TLSIndex nIndex) +{ + if (nIndex == OS_INVALID_TLS_INDEX) { + assert(0 && "OS_SetTLSValue(): Invalid TLS Index"); + return false; + } + + if (TlsFree(nIndex)) + return true; + else + return false; +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/parseConst.cpp b/Source/ThirdParty/ANGLE/src/compiler/parseConst.cpp new file mode 100644 index 00000000000..1cc5db8d770 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/parseConst.cpp @@ -0,0 +1,245 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/ParseHelper.h" + +// +// Use this class to carry along data from node to node in +// the traversal +// +class TConstTraverser : public TIntermTraverser { +public: + TConstTraverser(ConstantUnion* cUnion, bool singleConstParam, TOperator constructType, TInfoSink& sink, TSymbolTable& symTable, TType& t) + : error(false), + index(0), + unionArray(cUnion), + type(t), + constructorType(constructType), + singleConstantParam(singleConstParam), + infoSink(sink), + symbolTable(symTable), + size(0), + isMatrix(false), + matrixSize(0) { + } + + bool error; + +protected: + void visitSymbol(TIntermSymbol*); + void visitConstantUnion(TIntermConstantUnion*); + bool visitBinary(Visit visit, TIntermBinary*); + bool visitUnary(Visit visit, TIntermUnary*); + bool visitSelection(Visit visit, TIntermSelection*); + bool visitAggregate(Visit visit, TIntermAggregate*); + bool visitLoop(Visit visit, TIntermLoop*); + bool visitBranch(Visit visit, TIntermBranch*); + + size_t index; + ConstantUnion *unionArray; + TType type; + TOperator constructorType; + bool singleConstantParam; + TInfoSink& infoSink; + TSymbolTable& symbolTable; + size_t size; // size of the constructor ( 4 for vec4) + bool isMatrix; + size_t matrixSize; // dimension of the matrix (nominal size and not the instance size) +}; + +// +// The rest of the file are the traversal functions. The last one +// is the one that starts the traversal. +// +// Return true from interior nodes to have the external traversal +// continue on to children. If you process children yourself, +// return false. +// + +void TConstTraverser::visitSymbol(TIntermSymbol* node) +{ + infoSink.info.message(EPrefixInternalError, node->getLine(), "Symbol Node found in constant constructor"); + return; + +} + +bool TConstTraverser::visitBinary(Visit visit, TIntermBinary* node) +{ + TQualifier qualifier = node->getType().getQualifier(); + + if (qualifier != EvqConst) { + TString buf; + buf.append("'constructor' : assigning non-constant to "); + buf.append(type.getCompleteString()); + infoSink.info.message(EPrefixError, node->getLine(), buf.c_str()); + error = true; + return false; + } + + infoSink.info.message(EPrefixInternalError, node->getLine(), "Binary Node found in constant constructor"); + + return false; +} + +bool TConstTraverser::visitUnary(Visit visit, TIntermUnary* node) +{ + TString buf; + buf.append("'constructor' : assigning non-constant to "); + buf.append(type.getCompleteString()); + infoSink.info.message(EPrefixError, node->getLine(), buf.c_str()); + error = true; + return false; +} + +bool TConstTraverser::visitAggregate(Visit visit, TIntermAggregate* node) +{ + if (!node->isConstructor() && node->getOp() != EOpComma) { + TString buf; + buf.append("'constructor' : assigning non-constant to "); + buf.append(type.getCompleteString()); + infoSink.info.message(EPrefixError, node->getLine(), buf.c_str()); + error = true; + return false; + } + + if (node->getSequence().size() == 0) { + error = true; + return false; + } + + bool flag = node->getSequence().size() == 1 && node->getSequence()[0]->getAsTyped()->getAsConstantUnion(); + if (flag) + { + singleConstantParam = true; + constructorType = node->getOp(); + size = node->getType().getObjectSize(); + + if (node->getType().isMatrix()) { + isMatrix = true; + matrixSize = node->getType().getNominalSize(); + } + } + + for (TIntermSequence::iterator p = node->getSequence().begin(); + p != node->getSequence().end(); p++) { + + if (node->getOp() == EOpComma) + index = 0; + + (*p)->traverse(this); + } + if (flag) + { + singleConstantParam = false; + constructorType = EOpNull; + size = 0; + isMatrix = false; + matrixSize = 0; + } + return false; +} + +bool TConstTraverser::visitSelection(Visit visit, TIntermSelection* node) +{ + infoSink.info.message(EPrefixInternalError, node->getLine(), "Selection Node found in constant constructor"); + error = true; + return false; +} + +void TConstTraverser::visitConstantUnion(TIntermConstantUnion* node) +{ + if (!node->getUnionArrayPointer()) + { + // The constant was not initialized, this should already have been logged + assert(infoSink.info.size() != 0); + return; + } + + ConstantUnion* leftUnionArray = unionArray; + size_t instanceSize = type.getObjectSize(); + + if (index >= instanceSize) + return; + + if (!singleConstantParam) { + size_t size = node->getType().getObjectSize(); + + ConstantUnion *rightUnionArray = node->getUnionArrayPointer(); + for (size_t i = 0; i < size; i++) { + if (index >= instanceSize) + return; + leftUnionArray[index] = rightUnionArray[i]; + + (index)++; + } + } else { + size_t totalSize = index + size; + ConstantUnion *rightUnionArray = node->getUnionArrayPointer(); + if (!isMatrix) { + size_t count = 0; + for (size_t i = index; i < totalSize; i++) { + if (i >= instanceSize) + return; + + leftUnionArray[i] = rightUnionArray[count]; + + (index)++; + + if (node->getType().getObjectSize() > 1) + count++; + } + } else { // for matrix constructors + size_t count = 0; + size_t element = index; + for (size_t i = index; i < totalSize; i++) { + if (i >= instanceSize) + return; + if (element - i == 0 || (i - element) % (matrixSize + 1) == 0 ) + leftUnionArray[i] = rightUnionArray[count]; + else + leftUnionArray[i].setFConst(0.0f); + + (index)++; + + if (node->getType().getObjectSize() > 1) + count++; + } + } + } +} + +bool TConstTraverser::visitLoop(Visit visit, TIntermLoop* node) +{ + infoSink.info.message(EPrefixInternalError, node->getLine(), "Loop Node found in constant constructor"); + error = true; + return false; +} + +bool TConstTraverser::visitBranch(Visit visit, TIntermBranch* node) +{ + infoSink.info.message(EPrefixInternalError, node->getLine(), "Branch Node found in constant constructor"); + error = true; + return false; +} + +// +// This function is the one to call externally to start the traversal. +// Individual functions can be initialized to 0 to skip processing of that +// type of node. It's children will still be processed. +// +bool TIntermediate::parseConstTree(const TSourceLoc& line, TIntermNode* root, ConstantUnion* unionArray, TOperator constructorType, TSymbolTable& symbolTable, TType t, bool singleConstantParam) +{ + if (root == 0) + return false; + + TConstTraverser it(unionArray, singleConstantParam, constructorType, infoSink, symbolTable, t); + + root->traverse(&it); + if (it.error) + return true; + else + return false; +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/64bit-tokenizer-safety.patch b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/64bit-tokenizer-safety.patch new file mode 100644 index 00000000000..7cb061601ed --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/64bit-tokenizer-safety.patch @@ -0,0 +1,159 @@ +--- a/src/compiler/preprocessor/Tokenizer.cpp ++++ b/src/compiler/preprocessor/Tokenizer.cpp +@@ -56,6 +56,7 @@ typedef int16_t flex_int16_t; + typedef uint16_t flex_uint16_t; + typedef int32_t flex_int32_t; + typedef uint32_t flex_uint32_t; ++typedef uint64_t flex_uint64_t; + #else + typedef signed char flex_int8_t; + typedef short int flex_int16_t; +@@ -179,6 +180,11 @@ typedef void* yyscan_t; + typedef struct yy_buffer_state *YY_BUFFER_STATE; + #endif + ++#ifndef YY_TYPEDEF_YY_SIZE_T ++#define YY_TYPEDEF_YY_SIZE_T ++typedef size_t yy_size_t; ++#endif ++ + #define EOB_ACT_CONTINUE_SCAN 0 + #define EOB_ACT_END_OF_FILE 1 + #define EOB_ACT_LAST_MATCH 2 +@@ -201,11 +207,6 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; + + #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) + +-#ifndef YY_TYPEDEF_YY_SIZE_T +-#define YY_TYPEDEF_YY_SIZE_T +-typedef size_t yy_size_t; +-#endif +- + #ifndef YY_STRUCT_YY_BUFFER_STATE + #define YY_STRUCT_YY_BUFFER_STATE + struct yy_buffer_state +@@ -223,7 +224,7 @@ struct yy_buffer_state + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ +- int yy_n_chars; ++ yy_size_t yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to +@@ -302,7 +303,7 @@ static void pp_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); + + YY_BUFFER_STATE pp_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); + YY_BUFFER_STATE pp_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); +-YY_BUFFER_STATE pp_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); ++YY_BUFFER_STATE pp_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); + + void *ppalloc (yy_size_t ,yyscan_t yyscanner ); + void *pprealloc (void *,yy_size_t ,yyscan_t yyscanner ); +@@ -353,7 +354,7 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); + */ + #define YY_DO_BEFORE_ACTION \ + yyg->yytext_ptr = yy_bp; \ +- yyleng = (size_t) (yy_cp - yy_bp); \ ++ yyleng = (yy_size_t) (yy_cp - yy_bp); \ + yyg->yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yyg->yy_c_buf_p = yy_cp; +@@ -579,8 +580,8 @@ struct yyguts_t + size_t yy_buffer_stack_max; /**< capacity of stack. */ + YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ + char yy_hold_char; +- int yy_n_chars; +- int yyleng_r; ++ yy_size_t yy_n_chars; ++ yy_size_t yyleng_r; + char *yy_c_buf_p; + int yy_init; + int yy_start; +@@ -637,7 +638,7 @@ FILE *ppget_out (yyscan_t yyscanner ); + + void ppset_out (FILE * out_str ,yyscan_t yyscanner ); + +-int ppget_leng (yyscan_t yyscanner ); ++yy_size_t ppget_leng (yyscan_t yyscanner ); + + char *ppget_text (yyscan_t yyscanner ); + +@@ -704,7 +705,7 @@ static int input (yyscan_t yyscanner ); + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ +- int n; \ ++ yy_size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ +@@ -1338,7 +1339,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) + + else + { +- int num_to_read = ++ yy_size_t num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) +@@ -1352,7 +1353,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) + + if ( b->yy_is_our_buffer ) + { +- int new_size = b->yy_buf_size * 2; ++ yy_size_t new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; +@@ -1383,7 +1384,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), +- yyg->yy_n_chars, (size_t) num_to_read ); ++ yyg->yy_n_chars, num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } +@@ -1508,7 +1509,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) + + else + { /* need more input */ +- int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++ yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + ++yyg->yy_c_buf_p; + + switch ( yy_get_next_buffer( yyscanner ) ) +@@ -1788,7 +1789,7 @@ void pppop_buffer_state (yyscan_t yyscanner) + */ + static void ppensure_buffer_stack (yyscan_t yyscanner) + { +- int num_to_alloc; ++ yy_size_t num_to_alloc; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (!yyg->yy_buffer_stack) { +@@ -1886,12 +1887,11 @@ YY_BUFFER_STATE pp_scan_string (yyconst char * yystr , yyscan_t yyscanner) + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +-YY_BUFFER_STATE pp_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) ++YY_BUFFER_STATE pp_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) + { + YY_BUFFER_STATE b; + char *buf; +- yy_size_t n; +- int i; ++ yy_size_t n, i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; +@@ -2001,7 +2001,7 @@ FILE *ppget_out (yyscan_t yyscanner) + /** Get the length of the current token. + * @param yyscanner The scanner object. + */ +-int ppget_leng (yyscan_t yyscanner) ++yy_size_t ppget_leng (yyscan_t yyscanner) + { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyleng; diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DiagnosticsBase.cpp b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DiagnosticsBase.cpp new file mode 100644 index 00000000000..3e22e1f1c57 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DiagnosticsBase.cpp @@ -0,0 +1,127 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "DiagnosticsBase.h" + +#include + +namespace pp +{ + +Diagnostics::~Diagnostics() +{ +} + +void Diagnostics::report(ID id, + const SourceLocation& loc, + const std::string& text) +{ + // TODO(alokp): Keep a count of errors and warnings. + print(id, loc, text); +} + +Diagnostics::Severity Diagnostics::severity(ID id) +{ + if ((id > ERROR_BEGIN) && (id < ERROR_END)) + return ERROR; + + if ((id > WARNING_BEGIN) && (id < WARNING_END)) + return WARNING; + + assert(false); + return ERROR; +} + +std::string Diagnostics::message(ID id) +{ + switch (id) + { + // Errors begin. + case INTERNAL_ERROR: + return "internal error"; + case OUT_OF_MEMORY: + return "out of memory"; + case INVALID_CHARACTER: + return "invalid character"; + case INVALID_NUMBER: + return "invalid number"; + case INTEGER_OVERFLOW: + return "integer overflow"; + case FLOAT_OVERFLOW: + return "float overflow"; + case TOKEN_TOO_LONG: + return "token too long"; + case INVALID_EXPRESSION: + return "invalid expression"; + case DIVISION_BY_ZERO: + return "division by zero"; + case EOF_IN_COMMENT: + return "unexpected end of file found in comment"; + case UNEXPECTED_TOKEN: + return "unexpected token"; + case DIRECTIVE_INVALID_NAME: + return "invalid directive name"; + case MACRO_NAME_RESERVED: + return "macro name is reserved"; + case MACRO_REDEFINED: + return "macro redefined"; + case MACRO_PREDEFINED_REDEFINED: + return "predefined macro redefined"; + case MACRO_PREDEFINED_UNDEFINED: + return "predefined macro undefined"; + case MACRO_UNTERMINATED_INVOCATION: + return "unterminated macro invocation"; + case MACRO_TOO_FEW_ARGS: + return "Not enough arguments for macro"; + case MACRO_TOO_MANY_ARGS: + return "Too many arguments for macro"; + case CONDITIONAL_ENDIF_WITHOUT_IF: + return "unexpected #endif found without a matching #if"; + case CONDITIONAL_ELSE_WITHOUT_IF: + return "unexpected #else found without a matching #if"; + case CONDITIONAL_ELSE_AFTER_ELSE: + return "unexpected #else found after another #else"; + case CONDITIONAL_ELIF_WITHOUT_IF: + return "unexpected #elif found without a matching #if"; + case CONDITIONAL_ELIF_AFTER_ELSE: + return "unexpected #elif found after #else"; + case CONDITIONAL_UNTERMINATED: + return "unexpected end of file found in conditional block"; + case INVALID_EXTENSION_NAME: + return "invalid extension name"; + case INVALID_EXTENSION_BEHAVIOR: + return "invalid extension behavior"; + case INVALID_EXTENSION_DIRECTIVE: + return "invalid extension directive"; + case INVALID_VERSION_NUMBER: + return "invalid version number"; + case INVALID_VERSION_DIRECTIVE: + return "invalid version directive"; + case VERSION_NOT_FIRST_STATEMENT: + return "#version directive must occur before anything else, " + "except for comments and white space"; + case INVALID_LINE_NUMBER: + return "invalid line number"; + case INVALID_FILE_NUMBER: + return "invalid file number"; + case INVALID_LINE_DIRECTIVE: + return "invalid line directive"; + // Errors end. + // Warnings begin. + case EOF_IN_DIRECTIVE: + return "unexpected end of file found in directive"; + case CONDITIONAL_UNEXPECTED_TOKEN: + return "unexpected token after conditional expression"; + case UNRECOGNIZED_PRAGMA: + return "unrecognized pragma"; + // Warnings end. + default: + assert(false); + return ""; + } +} + +} // namespace pp diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DiagnosticsBase.h b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DiagnosticsBase.h new file mode 100644 index 00000000000..07bc4118464 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DiagnosticsBase.h @@ -0,0 +1,87 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_PREPROCESSOR_DIAGNOSTICS_H_ +#define COMPILER_PREPROCESSOR_DIAGNOSTICS_H_ + +#include + +namespace pp +{ + +struct SourceLocation; + +// Base class for reporting diagnostic messages. +// Derived classes are responsible for formatting and printing the messages. +class Diagnostics +{ + public: + enum Severity + { + ERROR, + WARNING + }; + enum ID + { + ERROR_BEGIN, + INTERNAL_ERROR, + OUT_OF_MEMORY, + INVALID_CHARACTER, + INVALID_NUMBER, + INTEGER_OVERFLOW, + FLOAT_OVERFLOW, + TOKEN_TOO_LONG, + INVALID_EXPRESSION, + DIVISION_BY_ZERO, + EOF_IN_COMMENT, + UNEXPECTED_TOKEN, + DIRECTIVE_INVALID_NAME, + MACRO_NAME_RESERVED, + MACRO_REDEFINED, + MACRO_PREDEFINED_REDEFINED, + MACRO_PREDEFINED_UNDEFINED, + MACRO_UNTERMINATED_INVOCATION, + MACRO_TOO_FEW_ARGS, + MACRO_TOO_MANY_ARGS, + CONDITIONAL_ENDIF_WITHOUT_IF, + CONDITIONAL_ELSE_WITHOUT_IF, + CONDITIONAL_ELSE_AFTER_ELSE, + CONDITIONAL_ELIF_WITHOUT_IF, + CONDITIONAL_ELIF_AFTER_ELSE, + CONDITIONAL_UNTERMINATED, + INVALID_EXTENSION_NAME, + INVALID_EXTENSION_BEHAVIOR, + INVALID_EXTENSION_DIRECTIVE, + INVALID_VERSION_NUMBER, + INVALID_VERSION_DIRECTIVE, + VERSION_NOT_FIRST_STATEMENT, + INVALID_LINE_NUMBER, + INVALID_FILE_NUMBER, + INVALID_LINE_DIRECTIVE, + ERROR_END, + + WARNING_BEGIN, + EOF_IN_DIRECTIVE, + CONDITIONAL_UNEXPECTED_TOKEN, + UNRECOGNIZED_PRAGMA, + WARNING_END + }; + + virtual ~Diagnostics(); + + void report(ID id, const SourceLocation& loc, const std::string& text); + + protected: + Severity severity(ID id); + std::string message(ID id); + + virtual void print(ID id, + const SourceLocation& loc, + const std::string& text) = 0; +}; + +} // namespace pp +#endif // COMPILER_PREPROCESSOR_DIAGNOSTICS_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveHandlerBase.cpp b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveHandlerBase.cpp new file mode 100644 index 00000000000..ef35c6ed503 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveHandlerBase.cpp @@ -0,0 +1,16 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "DirectiveHandlerBase.h" + +namespace pp +{ + +DirectiveHandler::~DirectiveHandler() +{ +} + +} // namespace pp diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveHandlerBase.h b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveHandlerBase.h new file mode 100644 index 00000000000..2aaeec28180 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveHandlerBase.h @@ -0,0 +1,43 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_PREPROCESSOR_DIRECTIVE_HANDLER_H_ +#define COMPILER_PREPROCESSOR_DIRECTIVE_HANDLER_H_ + +#include + +namespace pp +{ + +struct SourceLocation; + +// Base class for handling directives. +// Preprocessor uses this class to notify the clients about certain +// preprocessor directives. Derived classes are responsible for +// handling them in an appropriate manner. +class DirectiveHandler +{ + public: + virtual ~DirectiveHandler(); + + virtual void handleError(const SourceLocation& loc, + const std::string& msg) = 0; + + // Handle pragma of form: #pragma name[(value)] + virtual void handlePragma(const SourceLocation& loc, + const std::string& name, + const std::string& value) = 0; + + virtual void handleExtension(const SourceLocation& loc, + const std::string& name, + const std::string& behavior) = 0; + + virtual void handleVersion(const SourceLocation& loc, + int version) = 0; +}; + +} // namespace pp +#endif // COMPILER_PREPROCESSOR_DIRECTIVE_HANDLER_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveParser.cpp b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveParser.cpp new file mode 100644 index 00000000000..94dfdf513d7 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveParser.cpp @@ -0,0 +1,932 @@ +// +// Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "DirectiveParser.h" + +#include +#include +#include + +#include "DiagnosticsBase.h" +#include "DirectiveHandlerBase.h" +#include "ExpressionParser.h" +#include "MacroExpander.h" +#include "Token.h" +#include "Tokenizer.h" + +namespace { +enum DirectiveType +{ + DIRECTIVE_NONE, + DIRECTIVE_DEFINE, + DIRECTIVE_UNDEF, + DIRECTIVE_IF, + DIRECTIVE_IFDEF, + DIRECTIVE_IFNDEF, + DIRECTIVE_ELSE, + DIRECTIVE_ELIF, + DIRECTIVE_ENDIF, + DIRECTIVE_ERROR, + DIRECTIVE_PRAGMA, + DIRECTIVE_EXTENSION, + DIRECTIVE_VERSION, + DIRECTIVE_LINE +}; +} // namespace + +static DirectiveType getDirective(const pp::Token* token) +{ + static const std::string kDirectiveDefine("define"); + static const std::string kDirectiveUndef("undef"); + static const std::string kDirectiveIf("if"); + static const std::string kDirectiveIfdef("ifdef"); + static const std::string kDirectiveIfndef("ifndef"); + static const std::string kDirectiveElse("else"); + static const std::string kDirectiveElif("elif"); + static const std::string kDirectiveEndif("endif"); + static const std::string kDirectiveError("error"); + static const std::string kDirectivePragma("pragma"); + static const std::string kDirectiveExtension("extension"); + static const std::string kDirectiveVersion("version"); + static const std::string kDirectiveLine("line"); + + if (token->type != pp::Token::IDENTIFIER) + return DIRECTIVE_NONE; + + if (token->text == kDirectiveDefine) + return DIRECTIVE_DEFINE; + else if (token->text == kDirectiveUndef) + return DIRECTIVE_UNDEF; + else if (token->text == kDirectiveIf) + return DIRECTIVE_IF; + else if (token->text == kDirectiveIfdef) + return DIRECTIVE_IFDEF; + else if (token->text == kDirectiveIfndef) + return DIRECTIVE_IFNDEF; + else if (token->text == kDirectiveElse) + return DIRECTIVE_ELSE; + else if (token->text == kDirectiveElif) + return DIRECTIVE_ELIF; + else if (token->text == kDirectiveEndif) + return DIRECTIVE_ENDIF; + else if (token->text == kDirectiveError) + return DIRECTIVE_ERROR; + else if (token->text == kDirectivePragma) + return DIRECTIVE_PRAGMA; + else if (token->text == kDirectiveExtension) + return DIRECTIVE_EXTENSION; + else if (token->text == kDirectiveVersion) + return DIRECTIVE_VERSION; + else if (token->text == kDirectiveLine) + return DIRECTIVE_LINE; + + return DIRECTIVE_NONE; +} + +static bool isConditionalDirective(DirectiveType directive) +{ + switch (directive) + { + case DIRECTIVE_IF: + case DIRECTIVE_IFDEF: + case DIRECTIVE_IFNDEF: + case DIRECTIVE_ELSE: + case DIRECTIVE_ELIF: + case DIRECTIVE_ENDIF: + return true; + default: + return false; + } +} + +// Returns true if the token represents End Of Directive. +static bool isEOD(const pp::Token* token) +{ + return (token->type == '\n') || (token->type == pp::Token::LAST); +} + +static void skipUntilEOD(pp::Lexer* lexer, pp::Token* token) +{ + while(!isEOD(token)) + { + lexer->lex(token); + } +} + +static bool isMacroNameReserved(const std::string& name) +{ + // Names prefixed with "GL_" are reserved. + if (name.substr(0, 3) == "GL_") + return true; + + // Names containing two consecutive underscores are reserved. + if (name.find("__") != std::string::npos) + return true; + + return false; +} + +static bool isMacroPredefined(const std::string& name, + const pp::MacroSet& macroSet) +{ + pp::MacroSet::const_iterator iter = macroSet.find(name); + return iter != macroSet.end() ? iter->second.predefined : false; +} + +namespace pp +{ + +class DefinedParser : public Lexer +{ + public: + DefinedParser(Lexer* lexer, + const MacroSet* macroSet, + Diagnostics* diagnostics) : + mLexer(lexer), + mMacroSet(macroSet), + mDiagnostics(diagnostics) + { + } + + protected: + virtual void lex(Token* token) + { + static const std::string kDefined("defined"); + + mLexer->lex(token); + if (token->type != Token::IDENTIFIER) + return; + if (token->text != kDefined) + return; + + bool paren = false; + mLexer->lex(token); + if (token->type == '(') + { + paren = true; + mLexer->lex(token); + } + + if (token->type != Token::IDENTIFIER) + { + mDiagnostics->report(Diagnostics::UNEXPECTED_TOKEN, + token->location, token->text); + skipUntilEOD(mLexer, token); + return; + } + MacroSet::const_iterator iter = mMacroSet->find(token->text); + std::string expression = iter != mMacroSet->end() ? "1" : "0"; + + if (paren) + { + mLexer->lex(token); + if (token->type != ')') + { + mDiagnostics->report(Diagnostics::UNEXPECTED_TOKEN, + token->location, token->text); + skipUntilEOD(mLexer, token); + return; + } + } + + // We have a valid defined operator. + // Convert the current token into a CONST_INT token. + token->type = Token::CONST_INT; + token->text = expression; + } + + private: + Lexer* mLexer; + const MacroSet* mMacroSet; + Diagnostics* mDiagnostics; +}; + +DirectiveParser::DirectiveParser(Tokenizer* tokenizer, + MacroSet* macroSet, + Diagnostics* diagnostics, + DirectiveHandler* directiveHandler) : + mPastFirstStatement(false), + mTokenizer(tokenizer), + mMacroSet(macroSet), + mDiagnostics(diagnostics), + mDirectiveHandler(directiveHandler) +{ +} + +void DirectiveParser::lex(Token* token) +{ + do + { + mTokenizer->lex(token); + + if (token->type == Token::PP_HASH) + { + parseDirective(token); + mPastFirstStatement = true; + } + + if (token->type == Token::LAST) + { + if (!mConditionalStack.empty()) + { + const ConditionalBlock& block = mConditionalStack.back(); + mDiagnostics->report(Diagnostics::CONDITIONAL_UNTERMINATED, + block.location, block.type); + } + break; + } + + } while (skipping() || (token->type == '\n')); + + mPastFirstStatement = true; +} + +void DirectiveParser::parseDirective(Token* token) +{ + assert(token->type == Token::PP_HASH); + + mTokenizer->lex(token); + if (isEOD(token)) + { + // Empty Directive. + return; + } + + DirectiveType directive = getDirective(token); + + // While in an excluded conditional block/group, + // we only parse conditional directives. + if (skipping() && !isConditionalDirective(directive)) + { + skipUntilEOD(mTokenizer, token); + return; + } + + switch(directive) + { + case DIRECTIVE_NONE: + mDiagnostics->report(Diagnostics::DIRECTIVE_INVALID_NAME, + token->location, token->text); + skipUntilEOD(mTokenizer, token); + break; + case DIRECTIVE_DEFINE: + parseDefine(token); + break; + case DIRECTIVE_UNDEF: + parseUndef(token); + break; + case DIRECTIVE_IF: + parseIf(token); + break; + case DIRECTIVE_IFDEF: + parseIfdef(token); + break; + case DIRECTIVE_IFNDEF: + parseIfndef(token); + break; + case DIRECTIVE_ELSE: + parseElse(token); + break; + case DIRECTIVE_ELIF: + parseElif(token); + break; + case DIRECTIVE_ENDIF: + parseEndif(token); + break; + case DIRECTIVE_ERROR: + parseError(token); + break; + case DIRECTIVE_PRAGMA: + parsePragma(token); + break; + case DIRECTIVE_EXTENSION: + parseExtension(token); + break; + case DIRECTIVE_VERSION: + parseVersion(token); + break; + case DIRECTIVE_LINE: + parseLine(token); + break; + default: + assert(false); + break; + } + + skipUntilEOD(mTokenizer, token); + if (token->type == Token::LAST) + { + mDiagnostics->report(Diagnostics::EOF_IN_DIRECTIVE, + token->location, token->text); + } +} + +void DirectiveParser::parseDefine(Token* token) +{ + assert(getDirective(token) == DIRECTIVE_DEFINE); + + mTokenizer->lex(token); + if (token->type != Token::IDENTIFIER) + { + mDiagnostics->report(Diagnostics::UNEXPECTED_TOKEN, + token->location, token->text); + return; + } + if (isMacroPredefined(token->text, *mMacroSet)) + { + mDiagnostics->report(Diagnostics::MACRO_PREDEFINED_REDEFINED, + token->location, token->text); + return; + } + if (isMacroNameReserved(token->text)) + { + mDiagnostics->report(Diagnostics::MACRO_NAME_RESERVED, + token->location, token->text); + return; + } + + Macro macro; + macro.type = Macro::kTypeObj; + macro.name = token->text; + + mTokenizer->lex(token); + if (token->type == '(' && !token->hasLeadingSpace()) + { + // Function-like macro. Collect arguments. + macro.type = Macro::kTypeFunc; + do { + mTokenizer->lex(token); + if (token->type != Token::IDENTIFIER) + break; + macro.parameters.push_back(token->text); + + mTokenizer->lex(token); // Get ','. + } while (token->type == ','); + + if (token->type != ')') + { + mDiagnostics->report(Diagnostics::UNEXPECTED_TOKEN, + token->location, + token->text); + return; + } + mTokenizer->lex(token); // Get ')'. + } + + while ((token->type != '\n') && (token->type != Token::LAST)) + { + // Reset the token location because it is unnecessary in replacement + // list. Resetting it also allows us to reuse Token::equals() to + // compare macros. + token->location = SourceLocation(); + macro.replacements.push_back(*token); + mTokenizer->lex(token); + } + if (!macro.replacements.empty()) + { + // Whitespace preceding the replacement list is not considered part of + // the replacement list for either form of macro. + macro.replacements.front().setHasLeadingSpace(false); + } + + // Check for macro redefinition. + MacroSet::const_iterator iter = mMacroSet->find(macro.name); + if (iter != mMacroSet->end() && !macro.equals(iter->second)) + { + mDiagnostics->report(Diagnostics::MACRO_REDEFINED, + token->location, + macro.name); + return; + } + mMacroSet->insert(std::make_pair(macro.name, macro)); +} + +void DirectiveParser::parseUndef(Token* token) +{ + assert(getDirective(token) == DIRECTIVE_UNDEF); + + mTokenizer->lex(token); + if (token->type != Token::IDENTIFIER) + { + mDiagnostics->report(Diagnostics::UNEXPECTED_TOKEN, + token->location, token->text); + return; + } + + MacroSet::iterator iter = mMacroSet->find(token->text); + if (iter != mMacroSet->end()) + { + if (iter->second.predefined) + { + mDiagnostics->report(Diagnostics::MACRO_PREDEFINED_UNDEFINED, + token->location, token->text); + } + else + { + mMacroSet->erase(iter); + } + } + + mTokenizer->lex(token); +} + +void DirectiveParser::parseIf(Token* token) +{ + assert(getDirective(token) == DIRECTIVE_IF); + parseConditionalIf(token); +} + +void DirectiveParser::parseIfdef(Token* token) +{ + assert(getDirective(token) == DIRECTIVE_IFDEF); + parseConditionalIf(token); +} + +void DirectiveParser::parseIfndef(Token* token) +{ + assert(getDirective(token) == DIRECTIVE_IFNDEF); + parseConditionalIf(token); +} + +void DirectiveParser::parseElse(Token* token) +{ + assert(getDirective(token) == DIRECTIVE_ELSE); + + if (mConditionalStack.empty()) + { + mDiagnostics->report(Diagnostics::CONDITIONAL_ELSE_WITHOUT_IF, + token->location, token->text); + skipUntilEOD(mTokenizer, token); + return; + } + + ConditionalBlock& block = mConditionalStack.back(); + if (block.skipBlock) + { + // No diagnostics. Just skip the whole line. + skipUntilEOD(mTokenizer, token); + return; + } + if (block.foundElseGroup) + { + mDiagnostics->report(Diagnostics::CONDITIONAL_ELSE_AFTER_ELSE, + token->location, token->text); + skipUntilEOD(mTokenizer, token); + return; + } + + block.foundElseGroup = true; + block.skipGroup = block.foundValidGroup; + block.foundValidGroup = true; + + // Warn if there are extra tokens after #else. + mTokenizer->lex(token); + if (!isEOD(token)) + { + mDiagnostics->report(Diagnostics::CONDITIONAL_UNEXPECTED_TOKEN, + token->location, token->text); + skipUntilEOD(mTokenizer, token); + } +} + +void DirectiveParser::parseElif(Token* token) +{ + assert(getDirective(token) == DIRECTIVE_ELIF); + + if (mConditionalStack.empty()) + { + mDiagnostics->report(Diagnostics::CONDITIONAL_ELIF_WITHOUT_IF, + token->location, token->text); + skipUntilEOD(mTokenizer, token); + return; + } + + ConditionalBlock& block = mConditionalStack.back(); + if (block.skipBlock) + { + // No diagnostics. Just skip the whole line. + skipUntilEOD(mTokenizer, token); + return; + } + if (block.foundElseGroup) + { + mDiagnostics->report(Diagnostics::CONDITIONAL_ELIF_AFTER_ELSE, + token->location, token->text); + skipUntilEOD(mTokenizer, token); + return; + } + if (block.foundValidGroup) + { + // Do not parse the expression. + // Also be careful not to emit a diagnostic. + block.skipGroup = true; + skipUntilEOD(mTokenizer, token); + return; + } + + int expression = parseExpressionIf(token); + block.skipGroup = expression == 0; + block.foundValidGroup = expression != 0; +} + +void DirectiveParser::parseEndif(Token* token) +{ + assert(getDirective(token) == DIRECTIVE_ENDIF); + + if (mConditionalStack.empty()) + { + mDiagnostics->report(Diagnostics::CONDITIONAL_ENDIF_WITHOUT_IF, + token->location, token->text); + skipUntilEOD(mTokenizer, token); + return; + } + + mConditionalStack.pop_back(); + + // Warn if there are tokens after #endif. + mTokenizer->lex(token); + if (!isEOD(token)) + { + mDiagnostics->report(Diagnostics::CONDITIONAL_UNEXPECTED_TOKEN, + token->location, token->text); + skipUntilEOD(mTokenizer, token); + } +} + +void DirectiveParser::parseError(Token* token) +{ + assert(getDirective(token) == DIRECTIVE_ERROR); + + std::ostringstream stream; + mTokenizer->lex(token); + while ((token->type != '\n') && (token->type != Token::LAST)) + { + stream << *token; + mTokenizer->lex(token); + } + mDirectiveHandler->handleError(token->location, stream.str()); +} + +// Parses pragma of form: #pragma name[(value)]. +void DirectiveParser::parsePragma(Token* token) +{ + assert(getDirective(token) == DIRECTIVE_PRAGMA); + + enum State + { + PRAGMA_NAME, + LEFT_PAREN, + PRAGMA_VALUE, + RIGHT_PAREN + }; + + bool valid = true; + std::string name, value; + int state = PRAGMA_NAME; + + mTokenizer->lex(token); + while ((token->type != '\n') && (token->type != Token::LAST)) + { + switch(state++) + { + case PRAGMA_NAME: + name = token->text; + valid = valid && (token->type == Token::IDENTIFIER); + break; + case LEFT_PAREN: + valid = valid && (token->type == '('); + break; + case PRAGMA_VALUE: + value = token->text; + valid = valid && (token->type == Token::IDENTIFIER); + break; + case RIGHT_PAREN: + valid = valid && (token->type == ')'); + break; + default: + valid = false; + break; + } + mTokenizer->lex(token); + } + + valid = valid && ((state == PRAGMA_NAME) || // Empty pragma. + (state == LEFT_PAREN) || // Without value. + (state == RIGHT_PAREN + 1)); // With value. + if (!valid) + { + mDiagnostics->report(Diagnostics::UNRECOGNIZED_PRAGMA, + token->location, name); + } + else if (state > PRAGMA_NAME) // Do not notify for empty pragma. + { + mDirectiveHandler->handlePragma(token->location, name, value); + } +} + +void DirectiveParser::parseExtension(Token* token) +{ + assert(getDirective(token) == DIRECTIVE_EXTENSION); + + enum State + { + EXT_NAME, + COLON, + EXT_BEHAVIOR + }; + + bool valid = true; + std::string name, behavior; + int state = EXT_NAME; + + mTokenizer->lex(token); + while ((token->type != '\n') && (token->type != Token::LAST)) + { + switch (state++) + { + case EXT_NAME: + if (valid && (token->type != Token::IDENTIFIER)) + { + mDiagnostics->report(Diagnostics::INVALID_EXTENSION_NAME, + token->location, token->text); + valid = false; + } + if (valid) name = token->text; + break; + case COLON: + if (valid && (token->type != ':')) + { + mDiagnostics->report(Diagnostics::UNEXPECTED_TOKEN, + token->location, token->text); + valid = false; + } + break; + case EXT_BEHAVIOR: + if (valid && (token->type != Token::IDENTIFIER)) + { + mDiagnostics->report(Diagnostics::INVALID_EXTENSION_BEHAVIOR, + token->location, token->text); + valid = false; + } + if (valid) behavior = token->text; + break; + default: + if (valid) + { + mDiagnostics->report(Diagnostics::UNEXPECTED_TOKEN, + token->location, token->text); + valid = false; + } + break; + } + mTokenizer->lex(token); + } + if (valid && (state != EXT_BEHAVIOR + 1)) + { + mDiagnostics->report(Diagnostics::INVALID_EXTENSION_DIRECTIVE, + token->location, token->text); + valid = false; + } + if (valid) + mDirectiveHandler->handleExtension(token->location, name, behavior); +} + +void DirectiveParser::parseVersion(Token* token) +{ + assert(getDirective(token) == DIRECTIVE_VERSION); + + if (mPastFirstStatement) + { + mDiagnostics->report(Diagnostics::VERSION_NOT_FIRST_STATEMENT, + token->location, token->text); + skipUntilEOD(mTokenizer, token); + return; + } + + enum State + { + VERSION_NUMBER + }; + + bool valid = true; + int version = 0; + int state = VERSION_NUMBER; + + mTokenizer->lex(token); + while ((token->type != '\n') && (token->type != Token::LAST)) + { + switch (state++) + { + case VERSION_NUMBER: + if (valid && (token->type != Token::CONST_INT)) + { + mDiagnostics->report(Diagnostics::INVALID_VERSION_NUMBER, + token->location, token->text); + valid = false; + } + if (valid && !token->iValue(&version)) + { + mDiagnostics->report(Diagnostics::INTEGER_OVERFLOW, + token->location, token->text); + valid = false; + } + break; + default: + if (valid) + { + mDiagnostics->report(Diagnostics::UNEXPECTED_TOKEN, + token->location, token->text); + valid = false; + } + break; + } + mTokenizer->lex(token); + } + if (valid && (state != VERSION_NUMBER + 1)) + { + mDiagnostics->report(Diagnostics::INVALID_VERSION_DIRECTIVE, + token->location, token->text); + valid = false; + } + if (valid) + mDirectiveHandler->handleVersion(token->location, version); +} + +void DirectiveParser::parseLine(Token* token) +{ + assert(getDirective(token) == DIRECTIVE_LINE); + + enum State + { + LINE_NUMBER, + FILE_NUMBER + }; + + bool valid = true; + int line = 0, file = 0; + int state = LINE_NUMBER; + + MacroExpander macroExpander(mTokenizer, mMacroSet, mDiagnostics); + macroExpander.lex(token); + while ((token->type != '\n') && (token->type != Token::LAST)) + { + switch (state++) + { + case LINE_NUMBER: + if (valid && (token->type != Token::CONST_INT)) + { + mDiagnostics->report(Diagnostics::INVALID_LINE_NUMBER, + token->location, token->text); + valid = false; + } + if (valid && !token->iValue(&line)) + { + mDiagnostics->report(Diagnostics::INTEGER_OVERFLOW, + token->location, token->text); + valid = false; + } + break; + case FILE_NUMBER: + if (valid && (token->type != Token::CONST_INT)) + { + mDiagnostics->report(Diagnostics::INVALID_FILE_NUMBER, + token->location, token->text); + valid = false; + } + if (valid && !token->iValue(&file)) + { + mDiagnostics->report(Diagnostics::INTEGER_OVERFLOW, + token->location, token->text); + valid = false; + } + break; + default: + if (valid) + { + mDiagnostics->report(Diagnostics::UNEXPECTED_TOKEN, + token->location, token->text); + valid = false; + } + break; + } + macroExpander.lex(token); + } + + if (valid && (state != FILE_NUMBER) && (state != FILE_NUMBER + 1)) + { + mDiagnostics->report(Diagnostics::INVALID_LINE_DIRECTIVE, + token->location, token->text); + valid = false; + } + if (valid) + { + mTokenizer->setLineNumber(line); + if (state == FILE_NUMBER + 1) mTokenizer->setFileNumber(file); + } +} + +bool DirectiveParser::skipping() const +{ + if (mConditionalStack.empty()) return false; + + const ConditionalBlock& block = mConditionalStack.back(); + return block.skipBlock || block.skipGroup; +} + +void DirectiveParser::parseConditionalIf(Token* token) +{ + ConditionalBlock block; + block.type = token->text; + block.location = token->location; + + if (skipping()) + { + // This conditional block is inside another conditional group + // which is skipped. As a consequence this whole block is skipped. + // Be careful not to parse the conditional expression that might + // emit a diagnostic. + skipUntilEOD(mTokenizer, token); + block.skipBlock = true; + } + else + { + DirectiveType directive = getDirective(token); + + int expression = 0; + switch (directive) + { + case DIRECTIVE_IF: + expression = parseExpressionIf(token); + break; + case DIRECTIVE_IFDEF: + expression = parseExpressionIfdef(token); + break; + case DIRECTIVE_IFNDEF: + expression = parseExpressionIfdef(token) == 0 ? 1 : 0; + break; + default: + assert(false); + break; + } + block.skipGroup = expression == 0; + block.foundValidGroup = expression != 0; + } + mConditionalStack.push_back(block); +} + +int DirectiveParser::parseExpressionIf(Token* token) +{ + assert((getDirective(token) == DIRECTIVE_IF) || + (getDirective(token) == DIRECTIVE_ELIF)); + + DefinedParser definedParser(mTokenizer, mMacroSet, mDiagnostics); + MacroExpander macroExpander(&definedParser, mMacroSet, mDiagnostics); + ExpressionParser expressionParser(¯oExpander, mDiagnostics); + + int expression = 0; + macroExpander.lex(token); + expressionParser.parse(token, &expression); + + // Warn if there are tokens after #if expression. + if (!isEOD(token)) + { + mDiagnostics->report(Diagnostics::CONDITIONAL_UNEXPECTED_TOKEN, + token->location, token->text); + skipUntilEOD(mTokenizer, token); + } + + return expression; +} + +int DirectiveParser::parseExpressionIfdef(Token* token) +{ + assert((getDirective(token) == DIRECTIVE_IFDEF) || + (getDirective(token) == DIRECTIVE_IFNDEF)); + + mTokenizer->lex(token); + if (token->type != Token::IDENTIFIER) + { + mDiagnostics->report(Diagnostics::UNEXPECTED_TOKEN, + token->location, token->text); + skipUntilEOD(mTokenizer, token); + return 0; + } + + MacroSet::const_iterator iter = mMacroSet->find(token->text); + int expression = iter != mMacroSet->end() ? 1 : 0; + + // Warn if there are tokens after #ifdef expression. + mTokenizer->lex(token); + if (!isEOD(token)) + { + mDiagnostics->report(Diagnostics::CONDITIONAL_UNEXPECTED_TOKEN, + token->location, token->text); + skipUntilEOD(mTokenizer, token); + } + return expression; +} + +} // namespace pp diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveParser.h b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveParser.h new file mode 100644 index 00000000000..8a7f0072bae --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveParser.h @@ -0,0 +1,82 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_PREPROCESSOR_DIRECTIVE_PARSER_H_ +#define COMPILER_PREPROCESSOR_DIRECTIVE_PARSER_H_ + +#include "Lexer.h" +#include "Macro.h" +#include "pp_utils.h" +#include "SourceLocation.h" + +namespace pp +{ + +class Diagnostics; +class DirectiveHandler; +class Tokenizer; + +class DirectiveParser : public Lexer +{ + public: + DirectiveParser(Tokenizer* tokenizer, + MacroSet* macroSet, + Diagnostics* diagnostics, + DirectiveHandler* directiveHandler); + + virtual void lex(Token* token); + + private: + PP_DISALLOW_COPY_AND_ASSIGN(DirectiveParser); + + void parseDirective(Token* token); + void parseDefine(Token* token); + void parseUndef(Token* token); + void parseIf(Token* token); + void parseIfdef(Token* token); + void parseIfndef(Token* token); + void parseElse(Token* token); + void parseElif(Token* token); + void parseEndif(Token* token); + void parseError(Token* token); + void parsePragma(Token* token); + void parseExtension(Token* token); + void parseVersion(Token* token); + void parseLine(Token* token); + + bool skipping() const; + void parseConditionalIf(Token* token); + int parseExpressionIf(Token* token); + int parseExpressionIfdef(Token* token); + + struct ConditionalBlock + { + std::string type; + SourceLocation location; + bool skipBlock; + bool skipGroup; + bool foundValidGroup; + bool foundElseGroup; + + ConditionalBlock() : + skipBlock(false), + skipGroup(false), + foundValidGroup(false), + foundElseGroup(false) + { + } + }; + bool mPastFirstStatement; + std::vector mConditionalStack; + Tokenizer* mTokenizer; + MacroSet* mMacroSet; + Diagnostics* mDiagnostics; + DirectiveHandler* mDirectiveHandler; +}; + +} // namespace pp +#endif // COMPILER_PREPROCESSOR_DIRECTIVE_PARSER_H_ + diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp new file mode 100644 index 00000000000..811b2fda394 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp @@ -0,0 +1,1949 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse ppparse +#define yylex pplex +#define yyerror pperror +#define yylval pplval +#define yychar ppchar +#define yydebug ppdebug +#define yynerrs ppnerrs + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + TOK_CONST_INT = 258, + TOK_OP_OR = 259, + TOK_OP_AND = 260, + TOK_OP_NE = 261, + TOK_OP_EQ = 262, + TOK_OP_GE = 263, + TOK_OP_LE = 264, + TOK_OP_RIGHT = 265, + TOK_OP_LEFT = 266, + TOK_UNARY = 267 + }; +#endif +/* Tokens. */ +#define TOK_CONST_INT 258 +#define TOK_OP_OR 259 +#define TOK_OP_AND 260 +#define TOK_OP_NE 261 +#define TOK_OP_EQ 262 +#define TOK_OP_GE 263 +#define TOK_OP_LE 264 +#define TOK_OP_RIGHT 265 +#define TOK_OP_LEFT 266 +#define TOK_UNARY 267 + + + + +/* Copy the first part of user declarations. */ + + +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// This file is auto-generated by generate_parser.sh. DO NOT EDIT! + +#if defined(__GNUC__) +// Triggered by the auto-generated pplval variable. +#if !defined(__clang__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#else +#pragma GCC diagnostic ignored "-Wuninitialized" +#endif +#elif defined(_MSC_VER) +#pragma warning(disable: 4065 4701) +#endif + +#include "ExpressionParser.h" + +#include +#include + +#include "DiagnosticsBase.h" +#include "Lexer.h" +#include "Token.h" + +#if defined(_MSC_VER) +typedef __int64 YYSTYPE; +#else +#include +typedef intmax_t YYSTYPE; +#endif // _MSC_VER +#define YYENABLE_NLS 0 +#define YYLTYPE_IS_TRIVIAL 1 +#define YYSTYPE_IS_TRIVIAL 1 +#define YYSTYPE_IS_DECLARED 1 + +namespace { +struct Context +{ + pp::Diagnostics* diagnostics; + pp::Lexer* lexer; + pp::Token* token; + int* result; +}; +} // namespace + + +static int yylex(YYSTYPE* lvalp, Context* context); +static void yyerror(Context* context, const char* reason); + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef int YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ + + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 14 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 175 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 27 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 3 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 26 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 52 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 267 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 23, 2, 2, 2, 21, 8, 2, + 25, 26, 19, 17, 2, 18, 2, 20, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 11, 2, 12, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 6, 2, 24, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 9, 10, 13, 14, 15, 16, 22 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint8 yyprhs[] = +{ + 0, 0, 3, 5, 7, 11, 15, 19, 23, 27, + 31, 35, 39, 43, 47, 51, 55, 59, 63, 67, + 71, 75, 79, 82, 85, 88, 91 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 28, 0, -1, 29, -1, 3, -1, 29, 4, 29, + -1, 29, 5, 29, -1, 29, 6, 29, -1, 29, + 7, 29, -1, 29, 8, 29, -1, 29, 9, 29, + -1, 29, 10, 29, -1, 29, 13, 29, -1, 29, + 14, 29, -1, 29, 12, 29, -1, 29, 11, 29, + -1, 29, 15, 29, -1, 29, 16, 29, -1, 29, + 18, 29, -1, 29, 17, 29, -1, 29, 21, 29, + -1, 29, 20, 29, -1, 29, 19, 29, -1, 23, + 29, -1, 24, 29, -1, 18, 29, -1, 17, 29, + -1, 25, 29, 26, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint8 yyrline[] = +{ + 0, 91, 91, 98, 99, 102, 105, 108, 111, 114, + 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, + 157, 170, 173, 176, 179, 182, 185 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "TOK_CONST_INT", "TOK_OP_OR", + "TOK_OP_AND", "'|'", "'^'", "'&'", "TOK_OP_NE", "TOK_OP_EQ", "'<'", + "'>'", "TOK_OP_GE", "TOK_OP_LE", "TOK_OP_RIGHT", "TOK_OP_LEFT", "'+'", + "'-'", "'*'", "'/'", "'%'", "TOK_UNARY", "'!'", "'~'", "'('", "')'", + "$accept", "input", "expression", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 124, 94, 38, 261, + 262, 60, 62, 263, 264, 265, 266, 43, 45, 42, + 47, 37, 267, 33, 126, 40, 41 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 27, 28, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 1, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 2, 2, 2, 2, 3 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 0, 3, 0, 0, 0, 0, 0, 0, 2, 25, + 24, 22, 23, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 4, 5, 6, 7, 8, 9, + 10, 14, 13, 11, 12, 15, 16, 18, 17, 21, + 20, 19 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = +{ + -1, 7, 8 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -11 +static const yytype_int16 yypact[] = +{ + 46, -11, 46, 46, 46, 46, 46, 12, 68, -11, + -11, -11, -11, 27, -11, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, -11, 85, 101, 116, 130, 143, 154, + 154, -10, -10, -10, -10, 37, 37, 31, 31, -11, + -11, -11 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = +{ + -11, -11, -2 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const yytype_uint8 yytable[] = +{ + 9, 10, 11, 12, 13, 26, 27, 28, 29, 30, + 31, 32, 14, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 1, + 30, 31, 32, 33, 28, 29, 30, 31, 32, 0, + 0, 0, 0, 2, 3, 0, 0, 0, 0, 4, + 5, 6, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32 +}; + +static const yytype_int8 yycheck[] = +{ + 2, 3, 4, 5, 6, 15, 16, 17, 18, 19, + 20, 21, 0, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 3, + 19, 20, 21, 26, 17, 18, 19, 20, 21, -1, + -1, -1, -1, 17, 18, -1, -1, -1, -1, 23, + 24, 25, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 3, 17, 18, 23, 24, 25, 28, 29, 29, + 29, 29, 29, 29, 0, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 26, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (context, YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval, context) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, context); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, Context *context) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep, context) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + Context *context; +#endif +{ + if (!yyvaluep) + return; + YYUSE (context); +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, Context *context) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep, context) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + Context *context; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep, context); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule, Context *context) +#else +static void +yy_reduce_print (yyvsp, yyrule, context) + YYSTYPE *yyvsp; + int yyrule; + Context *context; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , context); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule, context); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, Context *context) +#else +static void +yydestruct (yymsg, yytype, yyvaluep, context) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + Context *context; +#endif +{ + YYUSE (yyvaluep); + YYUSE (context); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (Context *context); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (Context *context) +#else +int +yyparse (context) + Context *context; +#endif +#endif +{ + /* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: + + { + *(context->result) = static_cast((yyvsp[(1) - (1)])); + YYACCEPT; + ;} + break; + + case 4: + + { + (yyval) = (yyvsp[(1) - (3)]) || (yyvsp[(3) - (3)]); + ;} + break; + + case 5: + + { + (yyval) = (yyvsp[(1) - (3)]) && (yyvsp[(3) - (3)]); + ;} + break; + + case 6: + + { + (yyval) = (yyvsp[(1) - (3)]) | (yyvsp[(3) - (3)]); + ;} + break; + + case 7: + + { + (yyval) = (yyvsp[(1) - (3)]) ^ (yyvsp[(3) - (3)]); + ;} + break; + + case 8: + + { + (yyval) = (yyvsp[(1) - (3)]) & (yyvsp[(3) - (3)]); + ;} + break; + + case 9: + + { + (yyval) = (yyvsp[(1) - (3)]) != (yyvsp[(3) - (3)]); + ;} + break; + + case 10: + + { + (yyval) = (yyvsp[(1) - (3)]) == (yyvsp[(3) - (3)]); + ;} + break; + + case 11: + + { + (yyval) = (yyvsp[(1) - (3)]) >= (yyvsp[(3) - (3)]); + ;} + break; + + case 12: + + { + (yyval) = (yyvsp[(1) - (3)]) <= (yyvsp[(3) - (3)]); + ;} + break; + + case 13: + + { + (yyval) = (yyvsp[(1) - (3)]) > (yyvsp[(3) - (3)]); + ;} + break; + + case 14: + + { + (yyval) = (yyvsp[(1) - (3)]) < (yyvsp[(3) - (3)]); + ;} + break; + + case 15: + + { + (yyval) = (yyvsp[(1) - (3)]) >> (yyvsp[(3) - (3)]); + ;} + break; + + case 16: + + { + (yyval) = (yyvsp[(1) - (3)]) << (yyvsp[(3) - (3)]); + ;} + break; + + case 17: + + { + (yyval) = (yyvsp[(1) - (3)]) - (yyvsp[(3) - (3)]); + ;} + break; + + case 18: + + { + (yyval) = (yyvsp[(1) - (3)]) + (yyvsp[(3) - (3)]); + ;} + break; + + case 19: + + { + if ((yyvsp[(3) - (3)]) == 0) { + std::ostringstream stream; + stream << (yyvsp[(1) - (3)]) << " % " << (yyvsp[(3) - (3)]); + std::string text = stream.str(); + context->diagnostics->report(pp::Diagnostics::DIVISION_BY_ZERO, + context->token->location, + text.c_str()); + YYABORT; + } else { + (yyval) = (yyvsp[(1) - (3)]) % (yyvsp[(3) - (3)]); + } + ;} + break; + + case 20: + + { + if ((yyvsp[(3) - (3)]) == 0) { + std::ostringstream stream; + stream << (yyvsp[(1) - (3)]) << " / " << (yyvsp[(3) - (3)]); + std::string text = stream.str(); + context->diagnostics->report(pp::Diagnostics::DIVISION_BY_ZERO, + context->token->location, + text.c_str()); + YYABORT; + } else { + (yyval) = (yyvsp[(1) - (3)]) / (yyvsp[(3) - (3)]); + } + ;} + break; + + case 21: + + { + (yyval) = (yyvsp[(1) - (3)]) * (yyvsp[(3) - (3)]); + ;} + break; + + case 22: + + { + (yyval) = ! (yyvsp[(2) - (2)]); + ;} + break; + + case 23: + + { + (yyval) = ~ (yyvsp[(2) - (2)]); + ;} + break; + + case 24: + + { + (yyval) = - (yyvsp[(2) - (2)]); + ;} + break; + + case 25: + + { + (yyval) = + (yyvsp[(2) - (2)]); + ;} + break; + + case 26: + + { + (yyval) = (yyvsp[(2) - (3)]); + ;} + break; + + +/* Line 1267 of yacc.c. */ + + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (context, YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (context, yymsg); + } + else + { + yyerror (context, YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval, context); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp, context); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (context, YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval, context); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp, context); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + + + + +int yylex(YYSTYPE* lvalp, Context* context) +{ + int type = 0; + + pp::Token* token = context->token; + switch (token->type) + { + case pp::Token::CONST_INT: + { + unsigned int val = 0; + if (!token->uValue(&val)) + { + context->diagnostics->report(pp::Diagnostics::INTEGER_OVERFLOW, + token->location, token->text); + } + *lvalp = static_cast(val); + type = TOK_CONST_INT; + break; + } + case pp::Token::OP_OR: type = TOK_OP_OR; break; + case pp::Token::OP_AND: type = TOK_OP_AND; break; + case pp::Token::OP_NE: type = TOK_OP_NE; break; + case pp::Token::OP_EQ: type = TOK_OP_EQ; break; + case pp::Token::OP_GE: type = TOK_OP_GE; break; + case pp::Token::OP_LE: type = TOK_OP_LE; break; + case pp::Token::OP_RIGHT: type = TOK_OP_RIGHT; break; + case pp::Token::OP_LEFT: type = TOK_OP_LEFT; break; + case '|': type = '|'; break; + case '^': type = '^'; break; + case '&': type = '&'; break; + case '>': type = '>'; break; + case '<': type = '<'; break; + case '-': type = '-'; break; + case '+': type = '+'; break; + case '%': type = '%'; break; + case '/': type = '/'; break; + case '*': type = '*'; break; + case '!': type = '!'; break; + case '~': type = '~'; break; + case '(': type = '('; break; + case ')': type = ')'; break; + + default: break; + } + + // Advance to the next token if the current one is valid. + if (type != 0) context->lexer->lex(token); + + return type; +} + +void yyerror(Context* context, const char* reason) +{ + context->diagnostics->report(pp::Diagnostics::INVALID_EXPRESSION, + context->token->location, + reason); +} + +namespace pp { + +ExpressionParser::ExpressionParser(Lexer* lexer, Diagnostics* diagnostics) : + mLexer(lexer), + mDiagnostics(diagnostics) +{ +} + +bool ExpressionParser::parse(Token* token, int* result) +{ + Context context; + context.diagnostics = mDiagnostics; + context.lexer = mLexer; + context.token = token; + context.result = result; + int ret = yyparse(&context); + switch (ret) + { + case 0: + case 1: + break; + + case 2: + mDiagnostics->report(Diagnostics::OUT_OF_MEMORY, token->location, ""); + break; + + default: + assert(false); + mDiagnostics->report(Diagnostics::INTERNAL_ERROR, token->location, ""); + break; + } + + return ret == 0; +} + +} // namespace pp + diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.h b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.h new file mode 100644 index 00000000000..092d059413b --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.h @@ -0,0 +1,34 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_PREPROCESSOR_EXPRESSION_PARSER_H_ +#define COMPILER_PREPROCESSOR_EXPRESSION_PARSER_H_ + +#include "pp_utils.h" + +namespace pp +{ + +class Diagnostics; +class Lexer; +struct Token; + +class ExpressionParser +{ + public: + ExpressionParser(Lexer* lexer, Diagnostics* diagnostics); + + bool parse(Token* token, int* result); + + private: + PP_DISALLOW_COPY_AND_ASSIGN(ExpressionParser); + + Lexer* mLexer; + Diagnostics* mDiagnostics; +}; + +} // namespace pp +#endif // COMPILER_PREPROCESSOR_EXPRESSION_PARSER_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.y b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.y new file mode 100644 index 00000000000..b6d3143e605 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.y @@ -0,0 +1,285 @@ +/* +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +This file contains the Yacc grammar for GLSL ES preprocessor expression. + +IF YOU MODIFY THIS FILE YOU ALSO NEED TO RUN generate_parser.sh, +WHICH GENERATES THE GLSL ES preprocessor expression parser. +*/ + +%{ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// This file is auto-generated by generate_parser.sh. DO NOT EDIT! + +#if defined(__GNUC__) +// Triggered by the auto-generated pplval variable. +#if !defined(__clang__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#else +#pragma GCC diagnostic ignored "-Wuninitialized" +#endif +#elif defined(_MSC_VER) +#pragma warning(disable: 4065 4701) +#endif + +#include "ExpressionParser.h" + +#include +#include + +#include "DiagnosticsBase.h" +#include "Lexer.h" +#include "Token.h" + +#if defined(_MSC_VER) +typedef __int64 YYSTYPE; +#else +#include +typedef intmax_t YYSTYPE; +#endif // _MSC_VER +#define YYENABLE_NLS 0 +#define YYLTYPE_IS_TRIVIAL 1 +#define YYSTYPE_IS_TRIVIAL 1 +#define YYSTYPE_IS_DECLARED 1 + +namespace { +struct Context +{ + pp::Diagnostics* diagnostics; + pp::Lexer* lexer; + pp::Token* token; + int* result; +}; +} // namespace +%} + +%pure-parser +%name-prefix="pp" +%parse-param {Context *context} +%lex-param {Context *context} + +%{ +static int yylex(YYSTYPE* lvalp, Context* context); +static void yyerror(Context* context, const char* reason); +%} + +%token TOK_CONST_INT +%left TOK_OP_OR +%left TOK_OP_AND +%left '|' +%left '^' +%left '&' +%left TOK_OP_EQ TOK_OP_NE +%left '<' '>' TOK_OP_LE TOK_OP_GE +%left TOK_OP_LEFT TOK_OP_RIGHT +%left '+' '-' +%left '*' '/' '%' +%right TOK_UNARY + +%% + +input + : expression { + *(context->result) = static_cast($1); + YYACCEPT; + } +; + +expression + : TOK_CONST_INT + | expression TOK_OP_OR expression { + $$ = $1 || $3; + } + | expression TOK_OP_AND expression { + $$ = $1 && $3; + } + | expression '|' expression { + $$ = $1 | $3; + } + | expression '^' expression { + $$ = $1 ^ $3; + } + | expression '&' expression { + $$ = $1 & $3; + } + | expression TOK_OP_NE expression { + $$ = $1 != $3; + } + | expression TOK_OP_EQ expression { + $$ = $1 == $3; + } + | expression TOK_OP_GE expression { + $$ = $1 >= $3; + } + | expression TOK_OP_LE expression { + $$ = $1 <= $3; + } + | expression '>' expression { + $$ = $1 > $3; + } + | expression '<' expression { + $$ = $1 < $3; + } + | expression TOK_OP_RIGHT expression { + $$ = $1 >> $3; + } + | expression TOK_OP_LEFT expression { + $$ = $1 << $3; + } + | expression '-' expression { + $$ = $1 - $3; + } + | expression '+' expression { + $$ = $1 + $3; + } + | expression '%' expression { + if ($3 == 0) { + std::ostringstream stream; + stream << $1 << " % " << $3; + std::string text = stream.str(); + context->diagnostics->report(pp::Diagnostics::DIVISION_BY_ZERO, + context->token->location, + text.c_str()); + YYABORT; + } else { + $$ = $1 % $3; + } + } + | expression '/' expression { + if ($3 == 0) { + std::ostringstream stream; + stream << $1 << " / " << $3; + std::string text = stream.str(); + context->diagnostics->report(pp::Diagnostics::DIVISION_BY_ZERO, + context->token->location, + text.c_str()); + YYABORT; + } else { + $$ = $1 / $3; + } + } + | expression '*' expression { + $$ = $1 * $3; + } + | '!' expression %prec TOK_UNARY { + $$ = ! $2; + } + | '~' expression %prec TOK_UNARY { + $$ = ~ $2; + } + | '-' expression %prec TOK_UNARY { + $$ = - $2; + } + | '+' expression %prec TOK_UNARY { + $$ = + $2; + } + | '(' expression ')' { + $$ = $2; + } +; + +%% + +int yylex(YYSTYPE* lvalp, Context* context) +{ + int type = 0; + + pp::Token* token = context->token; + switch (token->type) + { + case pp::Token::CONST_INT: + { + unsigned int val = 0; + if (!token->uValue(&val)) + { + context->diagnostics->report(pp::Diagnostics::INTEGER_OVERFLOW, + token->location, token->text); + } + *lvalp = static_cast(val); + type = TOK_CONST_INT; + break; + } + case pp::Token::OP_OR: type = TOK_OP_OR; break; + case pp::Token::OP_AND: type = TOK_OP_AND; break; + case pp::Token::OP_NE: type = TOK_OP_NE; break; + case pp::Token::OP_EQ: type = TOK_OP_EQ; break; + case pp::Token::OP_GE: type = TOK_OP_GE; break; + case pp::Token::OP_LE: type = TOK_OP_LE; break; + case pp::Token::OP_RIGHT: type = TOK_OP_RIGHT; break; + case pp::Token::OP_LEFT: type = TOK_OP_LEFT; break; + case '|': type = '|'; break; + case '^': type = '^'; break; + case '&': type = '&'; break; + case '>': type = '>'; break; + case '<': type = '<'; break; + case '-': type = '-'; break; + case '+': type = '+'; break; + case '%': type = '%'; break; + case '/': type = '/'; break; + case '*': type = '*'; break; + case '!': type = '!'; break; + case '~': type = '~'; break; + case '(': type = '('; break; + case ')': type = ')'; break; + + default: break; + } + + // Advance to the next token if the current one is valid. + if (type != 0) context->lexer->lex(token); + + return type; +} + +void yyerror(Context* context, const char* reason) +{ + context->diagnostics->report(pp::Diagnostics::INVALID_EXPRESSION, + context->token->location, + reason); +} + +namespace pp { + +ExpressionParser::ExpressionParser(Lexer* lexer, Diagnostics* diagnostics) : + mLexer(lexer), + mDiagnostics(diagnostics) +{ +} + +bool ExpressionParser::parse(Token* token, int* result) +{ + Context context; + context.diagnostics = mDiagnostics; + context.lexer = mLexer; + context.token = token; + context.result = result; + int ret = yyparse(&context); + switch (ret) + { + case 0: + case 1: + break; + + case 2: + mDiagnostics->report(Diagnostics::OUT_OF_MEMORY, token->location, ""); + break; + + default: + assert(false); + mDiagnostics->report(Diagnostics::INTERNAL_ERROR, token->location, ""); + break; + } + + return ret == 0; +} + +} // namespace pp diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.cpp b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.cpp new file mode 100644 index 00000000000..b4d970a97d0 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.cpp @@ -0,0 +1,54 @@ +// +// Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "Input.h" + +#include +#include +#include + +namespace pp +{ + +Input::Input() : mCount(0), mString(0) +{ +} + +Input::Input(size_t count, const char* const string[], const int length[]) : + mCount(count), + mString(string) +{ + mLength.reserve(mCount); + for (size_t i = 0; i < mCount; ++i) + { + int len = length ? length[i] : -1; + mLength.push_back(len < 0 ? std::strlen(mString[i]) : len); + } +} + +size_t Input::read(char* buf, size_t maxSize) +{ + size_t nRead = 0; + while ((nRead < maxSize) && (mReadLoc.sIndex < mCount)) + { + size_t size = mLength[mReadLoc.sIndex] - mReadLoc.cIndex; + size = std::min(size, maxSize); + std::memcpy(buf + nRead, mString[mReadLoc.sIndex] + mReadLoc.cIndex, size); + nRead += size; + mReadLoc.cIndex += size; + + // Advance string if we reached the end of current string. + if (mReadLoc.cIndex == mLength[mReadLoc.sIndex]) + { + ++mReadLoc.sIndex; + mReadLoc.cIndex = 0; + } + } + return nRead; +} + +} // namespace pp + diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.h b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.h new file mode 100644 index 00000000000..14b7597cb48 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.h @@ -0,0 +1,49 @@ +// +// Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_PREPROCESSOR_INPUT_H_ +#define COMPILER_PREPROCESSOR_INPUT_H_ + +#include +#include + +namespace pp +{ + +// Holds and reads input for Lexer. +class Input +{ + public: + Input(); + Input(size_t count, const char* const string[], const int length[]); + + size_t count() const { return mCount; } + const char* string(size_t index) const { return mString[index]; } + size_t length(size_t index) const { return mLength[index]; } + + size_t read(char* buf, size_t maxSize); + + struct Location + { + size_t sIndex; // String index; + size_t cIndex; // Char index. + + Location() : sIndex(0), cIndex(0) { } + }; + const Location& readLoc() const { return mReadLoc; } + + private: + // Input. + size_t mCount; + const char* const* mString; + std::vector mLength; + + Location mReadLoc; +}; + +} // namespace pp +#endif // COMPILER_PREPROCESSOR_INPUT_H_ + diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Lexer.cpp b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Lexer.cpp new file mode 100644 index 00000000000..7c663ee7617 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Lexer.cpp @@ -0,0 +1,16 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "Lexer.h" + +namespace pp +{ + +Lexer::~Lexer() +{ +} + +} // namespace pp diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Lexer.h b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Lexer.h new file mode 100644 index 00000000000..eb85cea8734 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Lexer.h @@ -0,0 +1,25 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_PREPROCESSOR_LEXER_H_ +#define COMPILER_PREPROCESSOR_LEXER_H_ + +namespace pp +{ + +struct Token; + +class Lexer +{ + public: + virtual ~Lexer(); + + virtual void lex(Token* token) = 0; +}; + +} // namespace pp +#endif // COMPILER_PREPROCESSOR_LEXER_H_ + diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Macro.cpp b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Macro.cpp new file mode 100644 index 00000000000..b2e3088e32b --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Macro.cpp @@ -0,0 +1,23 @@ +// +// Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "Macro.h" + +#include "Token.h" + +namespace pp +{ + +bool Macro::equals(const Macro& other) const +{ + return (type == other.type) && + (name == other.name) && + (parameters == other.parameters) && + (replacements == other.replacements); +} + +} // namespace pp + diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Macro.h b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Macro.h new file mode 100644 index 00000000000..7ec01491166 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Macro.h @@ -0,0 +1,44 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_PREPROCESSOR_MACRO_H_ +#define COMPILER_PREPROCESSOR_MACRO_H_ + +#include +#include +#include + +namespace pp +{ + +struct Token; + +struct Macro +{ + enum Type + { + kTypeObj, + kTypeFunc + }; + typedef std::vector Parameters; + typedef std::vector Replacements; + + Macro() : predefined(false), disabled(false), type(kTypeObj) { } + bool equals(const Macro& other) const; + + bool predefined; + mutable bool disabled; + + Type type; + std::string name; + Parameters parameters; + Replacements replacements; +}; + +typedef std::map MacroSet; + +} // namespace pp +#endif // COMPILER_PREPROCESSOR_MACRO_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/MacroExpander.cpp b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/MacroExpander.cpp new file mode 100644 index 00000000000..1116c516ff6 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/MacroExpander.cpp @@ -0,0 +1,370 @@ +// +// Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "MacroExpander.h" + +#include +#include + +#include "DiagnosticsBase.h" +#include "Token.h" + +namespace pp +{ + +class TokenLexer : public Lexer +{ + public: + typedef std::vector TokenVector; + + TokenLexer(TokenVector* tokens) + { + tokens->swap(mTokens); + mIter = mTokens.begin(); + } + + virtual void lex(Token* token) + { + if (mIter == mTokens.end()) + { + token->reset(); + token->type = Token::LAST; + } + else + { + *token = *mIter++; + } + } + + private: + PP_DISALLOW_COPY_AND_ASSIGN(TokenLexer); + + TokenVector mTokens; + TokenVector::const_iterator mIter; +}; + +MacroExpander::MacroExpander(Lexer* lexer, + MacroSet* macroSet, + Diagnostics* diagnostics) : + mLexer(lexer), + mMacroSet(macroSet), + mDiagnostics(diagnostics) +{ +} + +MacroExpander::~MacroExpander() +{ + for (std::size_t i = 0; i < mContextStack.size(); ++i) + { + delete mContextStack[i]; + } +} + +void MacroExpander::lex(Token* token) +{ + while (true) + { + getToken(token); + + if (token->type != Token::IDENTIFIER) + break; + + if (token->expansionDisabled()) + break; + + MacroSet::const_iterator iter = mMacroSet->find(token->text); + if (iter == mMacroSet->end()) + break; + + const Macro& macro = iter->second; + if (macro.disabled) + { + // If a particular token is not expanded, it is never expanded. + token->setExpansionDisabled(true); + break; + } + if ((macro.type == Macro::kTypeFunc) && !isNextTokenLeftParen()) + { + // If the token immediately after the macro name is not a '(', + // this macro should not be expanded. + break; + } + + pushMacro(macro, *token); + } +} + +void MacroExpander::getToken(Token* token) +{ + if (mReserveToken.get()) + { + *token = *mReserveToken; + mReserveToken.reset(); + return; + } + + // First pop all empty macro contexts. + while (!mContextStack.empty() && mContextStack.back()->empty()) + { + popMacro(); + } + + if (!mContextStack.empty()) + { + *token = mContextStack.back()->get(); + } + else + { + mLexer->lex(token); + } +} + +void MacroExpander::ungetToken(const Token& token) +{ + if (!mContextStack.empty()) + { + MacroContext* context = mContextStack.back(); + context->unget(); + assert(context->replacements[context->index] == token); + } + else + { + assert(!mReserveToken.get()); + mReserveToken.reset(new Token(token)); + } +} + +bool MacroExpander::isNextTokenLeftParen() +{ + Token token; + getToken(&token); + + bool lparen = token.type == '('; + ungetToken(token); + + return lparen; +} + +bool MacroExpander::pushMacro(const Macro& macro, const Token& identifier) +{ + assert(!macro.disabled); + assert(!identifier.expansionDisabled()); + assert(identifier.type == Token::IDENTIFIER); + assert(identifier.text == macro.name); + + std::vector replacements; + if (!expandMacro(macro, identifier, &replacements)) + return false; + + // Macro is disabled for expansion until it is popped off the stack. + macro.disabled = true; + + MacroContext* context = new MacroContext; + context->macro = ¯o; + context->replacements.swap(replacements); + mContextStack.push_back(context); + return true; +} + +void MacroExpander::popMacro() +{ + assert(!mContextStack.empty()); + + MacroContext* context = mContextStack.back(); + mContextStack.pop_back(); + + assert(context->empty()); + assert(context->macro->disabled); + context->macro->disabled = false; + delete context; +} + +bool MacroExpander::expandMacro(const Macro& macro, + const Token& identifier, + std::vector* replacements) +{ + replacements->clear(); + if (macro.type == Macro::kTypeObj) + { + replacements->assign(macro.replacements.begin(), + macro.replacements.end()); + + if (macro.predefined) + { + static const std::string kLine = "__LINE__"; + static const std::string kFile = "__FILE__"; + + assert(replacements->size() == 1); + Token& repl = replacements->front(); + if (macro.name == kLine) + { + std::ostringstream stream; + stream << identifier.location.line; + repl.text = stream.str(); + } + else if (macro.name == kFile) + { + std::ostringstream stream; + stream << identifier.location.file; + repl.text = stream.str(); + } + } + } + else + { + assert(macro.type == Macro::kTypeFunc); + std::vector args; + args.reserve(macro.parameters.size()); + if (!collectMacroArgs(macro, identifier, &args)) + return false; + + replaceMacroParams(macro, args, replacements); + } + + for (std::size_t i = 0; i < replacements->size(); ++i) + { + Token& repl = replacements->at(i); + if (i == 0) + { + // The first token in the replacement list inherits the padding + // properties of the identifier token. + repl.setAtStartOfLine(identifier.atStartOfLine()); + repl.setHasLeadingSpace(identifier.hasLeadingSpace()); + } + repl.location = identifier.location; + } + return true; +} + +bool MacroExpander::collectMacroArgs(const Macro& macro, + const Token& identifier, + std::vector* args) +{ + Token token; + getToken(&token); + assert(token.type == '('); + + args->push_back(MacroArg()); + for (int openParens = 1; openParens != 0; ) + { + getToken(&token); + + if (token.type == Token::LAST) + { + mDiagnostics->report(Diagnostics::MACRO_UNTERMINATED_INVOCATION, + identifier.location, identifier.text); + // Do not lose EOF token. + ungetToken(token); + return false; + } + + bool isArg = false; // True if token is part of the current argument. + switch (token.type) + { + case '(': + ++openParens; + isArg = true; + break; + case ')': + --openParens; + isArg = openParens != 0; + break; + case ',': + // The individual arguments are separated by comma tokens, but + // the comma tokens between matching inner parentheses do not + // seperate arguments. + if (openParens == 1) args->push_back(MacroArg()); + isArg = openParens != 1; + break; + default: + isArg = true; + break; + } + if (isArg) + { + MacroArg& arg = args->back(); + // Initial whitespace is not part of the argument. + if (arg.empty()) token.setHasLeadingSpace(false); + arg.push_back(token); + } + } + + const Macro::Parameters& params = macro.parameters; + // If there is only one empty argument, it is equivalent to no argument. + if (params.empty() && (args->size() == 1) && args->front().empty()) + { + args->clear(); + } + // Validate the number of arguments. + if (args->size() != params.size()) + { + Diagnostics::ID id = args->size() < macro.parameters.size() ? + Diagnostics::MACRO_TOO_FEW_ARGS : + Diagnostics::MACRO_TOO_MANY_ARGS; + mDiagnostics->report(id, identifier.location, identifier.text); + return false; + } + + // Pre-expand each argument before substitution. + // This step expands each argument individually before they are + // inserted into the macro body. + for (std::size_t i = 0; i < args->size(); ++i) + { + MacroArg& arg = args->at(i); + TokenLexer lexer(&arg); + MacroExpander expander(&lexer, mMacroSet, mDiagnostics); + + arg.clear(); + expander.lex(&token); + while (token.type != Token::LAST) + { + arg.push_back(token); + expander.lex(&token); + } + } + return true; +} + +void MacroExpander::replaceMacroParams(const Macro& macro, + const std::vector& args, + std::vector* replacements) +{ + for (std::size_t i = 0; i < macro.replacements.size(); ++i) + { + const Token& repl = macro.replacements[i]; + if (repl.type != Token::IDENTIFIER) + { + replacements->push_back(repl); + continue; + } + + // TODO(alokp): Optimize this. + // There is no need to search for macro params every time. + // The param index can be cached with the replacement token. + Macro::Parameters::const_iterator iter = std::find( + macro.parameters.begin(), macro.parameters.end(), repl.text); + if (iter == macro.parameters.end()) + { + replacements->push_back(repl); + continue; + } + + std::size_t iArg = std::distance(macro.parameters.begin(), iter); + const MacroArg& arg = args[iArg]; + if (arg.empty()) + { + continue; + } + std::size_t iRepl = replacements->size(); + replacements->insert(replacements->end(), arg.begin(), arg.end()); + // The replacement token inherits padding properties from + // macro replacement token. + replacements->at(iRepl).setHasLeadingSpace(repl.hasLeadingSpace()); + } +} + +} // namespace pp + diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/MacroExpander.h b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/MacroExpander.h new file mode 100644 index 00000000000..21b67571f19 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/MacroExpander.h @@ -0,0 +1,75 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_PREPROCESSOR_MACRO_EXPANDER_H_ +#define COMPILER_PREPROCESSOR_MACRO_EXPANDER_H_ + +#include +#include +#include + +#include "Lexer.h" +#include "Macro.h" +#include "pp_utils.h" + +namespace pp +{ + +class Diagnostics; + +class MacroExpander : public Lexer +{ + public: + MacroExpander(Lexer* lexer, MacroSet* macroSet, Diagnostics* diagnostics); + virtual ~MacroExpander(); + + virtual void lex(Token* token); + + private: + PP_DISALLOW_COPY_AND_ASSIGN(MacroExpander); + + void getToken(Token* token); + void ungetToken(const Token& token); + bool isNextTokenLeftParen(); + + bool pushMacro(const Macro& macro, const Token& identifier); + void popMacro(); + + bool expandMacro(const Macro& macro, + const Token& identifier, + std::vector* replacements); + + typedef std::vector MacroArg; + bool collectMacroArgs(const Macro& macro, + const Token& identifier, + std::vector* args); + void replaceMacroParams(const Macro& macro, + const std::vector& args, + std::vector* replacements); + + struct MacroContext + { + const Macro* macro; + std::size_t index; + std::vector replacements; + + MacroContext() : macro(0), index(0) { } + bool empty() const { return index == replacements.size(); } + const Token& get() { return replacements[index++]; } + void unget() { assert(index > 0); --index; } + }; + + Lexer* mLexer; + MacroSet* mMacroSet; + Diagnostics* mDiagnostics; + + std::auto_ptr mReserveToken; + std::vector mContextStack; +}; + +} // namespace pp +#endif // COMPILER_PREPROCESSOR_MACRO_EXPANDER_H_ + diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.cpp b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.cpp new file mode 100644 index 00000000000..5ffc6420bcc --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.cpp @@ -0,0 +1,142 @@ +// +// Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "Preprocessor.h" + +#include +#include + +#include "DiagnosticsBase.h" +#include "DirectiveParser.h" +#include "Macro.h" +#include "MacroExpander.h" +#include "Token.h" +#include "Tokenizer.h" + +namespace pp +{ + +struct PreprocessorImpl +{ + Diagnostics* diagnostics; + MacroSet macroSet; + Tokenizer tokenizer; + DirectiveParser directiveParser; + MacroExpander macroExpander; + + PreprocessorImpl(Diagnostics* diag, + DirectiveHandler* directiveHandler) : + diagnostics(diag), + tokenizer(diag), + directiveParser(&tokenizer, ¯oSet, diag, directiveHandler), + macroExpander(&directiveParser, ¯oSet, diag) + { + } +}; + +Preprocessor::Preprocessor(Diagnostics* diagnostics, + DirectiveHandler* directiveHandler) +{ + mImpl = new PreprocessorImpl(diagnostics, directiveHandler); +} + +Preprocessor::~Preprocessor() +{ + delete mImpl; +} + +bool Preprocessor::init(size_t count, + const char* const string[], + const int length[]) +{ + static const int kGLSLVersion = 100; + + // Add standard pre-defined macros. + predefineMacro("__LINE__", 0); + predefineMacro("__FILE__", 0); + predefineMacro("__VERSION__", kGLSLVersion); + predefineMacro("GL_ES", 1); + + return mImpl->tokenizer.init(count, string, length); +} + +void Preprocessor::predefineMacro(const char* name, int value) +{ + std::ostringstream stream; + stream << value; + + Token token; + token.type = Token::CONST_INT; + token.text = stream.str(); + + Macro macro; + macro.predefined = true; + macro.type = Macro::kTypeObj; + macro.name = name; + macro.replacements.push_back(token); + + mImpl->macroSet[name] = macro; +} + +void Preprocessor::lex(Token* token) +{ + bool validToken = false; + while (!validToken) + { + mImpl->macroExpander.lex(token); + switch (token->type) + { + // We should not be returning internal preprocessing tokens. + // Convert preprocessing tokens to compiler tokens or report + // diagnostics. + case Token::PP_HASH: + assert(false); + break; + case Token::CONST_INT: + { + int val = 0; + if (!token->iValue(&val)) + { + // Do not mark the token as invalid. + // Just emit the diagnostic and reset value to 0. + mImpl->diagnostics->report(Diagnostics::INTEGER_OVERFLOW, + token->location, token->text); + token->text.assign("0"); + } + validToken = true; + break; + } + case Token::CONST_FLOAT: + { + float val = 0; + if (!token->fValue(&val)) + { + // Do not mark the token as invalid. + // Just emit the diagnostic and reset value to 0.0. + mImpl->diagnostics->report(Diagnostics::FLOAT_OVERFLOW, + token->location, token->text); + token->text.assign("0.0"); + } + validToken = true; + break; + } + case Token::PP_NUMBER: + mImpl->diagnostics->report(Diagnostics::INVALID_NUMBER, + token->location, token->text); + break; + case Token::PP_OTHER: + mImpl->diagnostics->report(Diagnostics::INVALID_CHARACTER, + token->location, token->text); + break; + default: + validToken = true; + break; + } + } +} + +} // namespace pp + diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.h b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.h new file mode 100644 index 00000000000..7b70180fc82 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.h @@ -0,0 +1,51 @@ +// +// Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_PREPROCESSOR_PREPROCESSOR_H_ +#define COMPILER_PREPROCESSOR_PREPROCESSOR_H_ + +#include + +#include "pp_utils.h" + +namespace pp +{ + +class Diagnostics; +class DirectiveHandler; +struct PreprocessorImpl; +struct Token; + +class Preprocessor +{ + public: + Preprocessor(Diagnostics* diagnostics, DirectiveHandler* directiveHandler); + ~Preprocessor(); + + // count: specifies the number of elements in the string and length arrays. + // string: specifies an array of pointers to strings. + // length: specifies an array of string lengths. + // If length is NULL, each string is assumed to be null terminated. + // If length is a value other than NULL, it points to an array containing + // a string length for each of the corresponding elements of string. + // Each element in the length array may contain the length of the + // corresponding string or a value less than 0 to indicate that the string + // is null terminated. + bool init(size_t count, const char* const string[], const int length[]); + // Adds a pre-defined macro. + void predefineMacro(const char* name, int value); + + void lex(Token* token); + + private: + PP_DISALLOW_COPY_AND_ASSIGN(Preprocessor); + + PreprocessorImpl* mImpl; +}; + +} // namespace pp +#endif // COMPILER_PREPROCESSOR_PREPROCESSOR_H_ + diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/SourceLocation.h b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/SourceLocation.h new file mode 100644 index 00000000000..6982613ac74 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/SourceLocation.h @@ -0,0 +1,38 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_PREPROCESSOR_SOURCE_LOCATION_H_ +#define COMPILER_PREPROCESSOR_SOURCE_LOCATION_H_ + +namespace pp +{ + +struct SourceLocation +{ + SourceLocation() : file(0), line(0) { } + SourceLocation(int f, int l) : file(f), line(l) { } + + bool equals(const SourceLocation& other) const + { + return (file == other.file) && (line == other.line); + } + + int file; + int line; +}; + +inline bool operator==(const SourceLocation& lhs, const SourceLocation& rhs) +{ + return lhs.equals(rhs); +} + +inline bool operator!=(const SourceLocation& lhs, const SourceLocation& rhs) +{ + return !lhs.equals(rhs); +} + +} // namespace pp +#endif // COMPILER_PREPROCESSOR_SOURCE_LOCATION_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Token.cpp b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Token.cpp new file mode 100644 index 00000000000..67f50aa32ce --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Token.cpp @@ -0,0 +1,83 @@ +// +// Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "Token.h" + +#include + +#include "numeric_lex.h" + +namespace pp +{ + +void Token::reset() +{ + type = 0; + flags = 0; + location = SourceLocation(); + text.clear(); +} + +bool Token::equals(const Token& other) const +{ + return (type == other.type) && + (flags == other.flags) && + (location == other.location) && + (text == other.text); +} + +void Token::setAtStartOfLine(bool start) +{ + if (start) + flags |= AT_START_OF_LINE; + else + flags &= ~AT_START_OF_LINE; +} + +void Token::setHasLeadingSpace(bool space) +{ + if (space) + flags |= HAS_LEADING_SPACE; + else + flags &= ~HAS_LEADING_SPACE; +} + +void Token::setExpansionDisabled(bool disable) +{ + if (disable) + flags |= EXPANSION_DISABLED; + else + flags &= ~EXPANSION_DISABLED; +} + +bool Token::iValue(int* value) const +{ + assert(type == CONST_INT); + return numeric_lex_int(text, value); +} + +bool Token::uValue(unsigned int* value) const +{ + assert(type == CONST_INT); + return numeric_lex_int(text, value); +} + +bool Token::fValue(float* value) const +{ + assert(type == CONST_FLOAT); + return numeric_lex_float(text, value); +} + +std::ostream& operator<<(std::ostream& out, const Token& token) +{ + if (token.hasLeadingSpace()) + out << " "; + + out << token.text; + return out; +} + +} // namespace pp diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Token.h b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Token.h new file mode 100644 index 00000000000..8b553aecb68 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Token.h @@ -0,0 +1,106 @@ +// +// Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_PREPROCESSOR_TOKEN_H_ +#define COMPILER_PREPROCESSOR_TOKEN_H_ + +#include +#include + +#include "SourceLocation.h" + +namespace pp +{ + +struct Token +{ + enum Type + { + LAST = 0, // EOF. + + IDENTIFIER = 258, + + CONST_INT, + CONST_FLOAT, + + OP_INC, + OP_DEC, + OP_LEFT, + OP_RIGHT, + OP_LE, + OP_GE, + OP_EQ, + OP_NE, + OP_AND, + OP_XOR, + OP_OR, + OP_ADD_ASSIGN, + OP_SUB_ASSIGN, + OP_MUL_ASSIGN, + OP_DIV_ASSIGN, + OP_MOD_ASSIGN, + OP_LEFT_ASSIGN, + OP_RIGHT_ASSIGN, + OP_AND_ASSIGN, + OP_XOR_ASSIGN, + OP_OR_ASSIGN, + + // Preprocessing token types. + // These types are used by the preprocessor internally. + // Preprocessor clients must not depend or check for them. + PP_HASH, + PP_NUMBER, + PP_OTHER + }; + enum Flags + { + AT_START_OF_LINE = 1 << 0, + HAS_LEADING_SPACE = 1 << 1, + EXPANSION_DISABLED = 1 << 2 + }; + + Token() : type(0), flags(0) { } + + void reset(); + bool equals(const Token& other) const; + + // Returns true if this is the first token on line. + // It disregards any leading whitespace. + bool atStartOfLine() const { return (flags & AT_START_OF_LINE) != 0; } + void setAtStartOfLine(bool start); + + bool hasLeadingSpace() const { return (flags & HAS_LEADING_SPACE) != 0; } + void setHasLeadingSpace(bool space); + + bool expansionDisabled() const { return (flags & EXPANSION_DISABLED) != 0; } + void setExpansionDisabled(bool disable); + + // Converts text into numeric value for CONST_INT and CONST_FLOAT token. + // Returns false if the parsed value cannot fit into an int or float. + bool iValue(int* value) const; + bool uValue(unsigned int* value) const; + bool fValue(float* value) const; + + int type; + unsigned int flags; + SourceLocation location; + std::string text; +}; + +inline bool operator==(const Token& lhs, const Token& rhs) +{ + return lhs.equals(rhs); +} + +inline bool operator!=(const Token& lhs, const Token& rhs) +{ + return !lhs.equals(rhs); +} + +extern std::ostream& operator<<(std::ostream& out, const Token& token); + +} // namepsace pp +#endif // COMPILER_PREPROCESSOR_TOKEN_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.cpp b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.cpp new file mode 100644 index 00000000000..0ccd6fda85f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.cpp @@ -0,0 +1,2365 @@ +#line 16 "./Tokenizer.l" +// +// Copyright (c) 2011-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// This file is auto-generated by generate_parser.sh. DO NOT EDIT! + + + +#line 13 "./Tokenizer.cpp" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* An opaque pointer. */ +#ifndef YY_TYPEDEF_YY_SCANNER_T +#define YY_TYPEDEF_YY_SCANNER_T +typedef void* yyscan_t; +#endif + +/* For convenience, these vars (plus the bison vars far below) + are macros in the reentrant scanner. */ +#define yyin yyg->yyin_r +#define yyout yyg->yyout_r +#define yyextra yyg->yyextra_r +#define yyleng yyg->yyleng_r +#define yytext yyg->yytext_r +#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) +#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) +#define yy_flex_debug yyg->yy_flex_debug_r + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yyg->yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yyg->yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE pprestart(yyin ,yyscanner ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = yyg->yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + yy_size_t yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via pprestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ + ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] + +void pprestart (FILE *input_file ,yyscan_t yyscanner ); +void pp_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); +YY_BUFFER_STATE pp_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); +void pp_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); +void pp_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); +void pppush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); +void pppop_buffer_state (yyscan_t yyscanner ); + +static void ppensure_buffer_stack (yyscan_t yyscanner ); +static void pp_load_buffer_state (yyscan_t yyscanner ); +static void pp_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); + +#define YY_FLUSH_BUFFER pp_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) + +YY_BUFFER_STATE pp_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); +YY_BUFFER_STATE pp_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); +YY_BUFFER_STATE pp_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); + +void *ppalloc (yy_size_t ,yyscan_t yyscanner ); +void *pprealloc (void *,yy_size_t ,yyscan_t yyscanner ); +void ppfree (void * ,yyscan_t yyscanner ); + +#define yy_new_buffer pp_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + ppensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + pp_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + ppensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + pp_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define ppwrap(n) 1 +#define YY_SKIP_YYWRAP + +typedef unsigned char YY_CHAR; + +typedef int yy_state_type; + +#define yytext_ptr yytext_r + +static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); +static int yy_get_next_buffer (yyscan_t yyscanner ); +static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + yyg->yytext_ptr = yy_bp; \ + yyleng = (yy_size_t) (yy_cp - yy_bp); \ + yyg->yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yyg->yy_c_buf_p = yy_cp; + +#define YY_NUM_RULES 38 +#define YY_END_OF_BUFFER 39 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[87] = + { 0, + 0, 0, 0, 0, 39, 37, 34, 35, 35, 33, + 7, 33, 33, 33, 33, 33, 33, 33, 33, 9, + 9, 33, 33, 33, 8, 37, 33, 33, 3, 5, + 5, 4, 34, 35, 19, 27, 20, 30, 25, 12, + 23, 13, 24, 10, 2, 1, 26, 10, 9, 11, + 11, 11, 11, 9, 14, 16, 18, 17, 15, 8, + 36, 36, 31, 21, 32, 22, 3, 5, 6, 11, + 10, 11, 1, 10, 11, 0, 10, 9, 28, 29, + 0, 10, 10, 10, 10, 0 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 5, 1, 6, 1, 7, 8, 1, 9, + 9, 10, 11, 9, 12, 13, 14, 15, 16, 16, + 16, 16, 16, 16, 16, 17, 17, 9, 9, 18, + 19, 20, 9, 1, 21, 21, 21, 21, 22, 21, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 24, 23, 23, + 9, 25, 9, 26, 23, 1, 21, 21, 21, 21, + + 22, 21, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, + 23, 23, 9, 27, 9, 9, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int32_t yy_meta[28] = + { 0, + 1, 1, 2, 2, 1, 1, 1, 1, 1, 3, + 1, 1, 4, 1, 5, 5, 5, 1, 1, 1, + 5, 5, 5, 5, 1, 1, 1 + } ; + +static yyconst flex_int16_t yy_base[92] = + { 0, + 0, 0, 25, 27, 162, 163, 159, 163, 152, 132, + 163, 131, 24, 163, 116, 22, 26, 31, 30, 37, + 40, 44, 115, 46, 0, 64, 50, 15, 0, 163, + 124, 91, 88, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 64, 163, 0, 163, 76, 54, 58, + 79, 91, 91, 0, 56, 163, 163, 163, 32, 0, + 163, 36, 163, 163, 163, 163, 0, 163, 163, 94, + 0, 106, 0, 0, 113, 55, 72, 113, 163, 163, + 116, 101, 108, 123, 126, 163, 143, 31, 148, 153, + 155 + + } ; + +static yyconst flex_int16_t yy_def[92] = + { 0, + 86, 1, 87, 87, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 20, 86, 86, 86, 88, 86, 86, 86, 89, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 90, 86, 86, 20, 20, + 48, 51, 91, 21, 86, 86, 86, 86, 86, 88, + 86, 86, 86, 86, 86, 86, 89, 86, 86, 44, + 44, 70, 90, 48, 51, 86, 52, 91, 86, 86, + 86, 72, 75, 86, 86, 0, 86, 86, 86, 86, + 86 + + } ; + +static yyconst flex_int16_t yy_nxt[191] = + { 0, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, + 25, 25, 25, 25, 26, 27, 28, 30, 31, 30, + 31, 37, 40, 65, 32, 60, 32, 42, 61, 45, + 41, 66, 38, 46, 43, 44, 44, 44, 47, 48, + 80, 49, 49, 50, 54, 54, 54, 51, 52, 51, + 53, 55, 56, 51, 58, 59, 61, 62, 63, 84, + 84, 84, 50, 50, 79, 64, 70, 51, 71, 71, + 71, 51, 86, 86, 70, 72, 70, 70, 51, 33, + 74, 74, 74, 51, 51, 51, 51, 75, 51, 51, + + 51, 76, 76, 51, 69, 77, 77, 77, 70, 70, + 70, 86, 86, 51, 51, 70, 81, 81, 86, 86, + 82, 82, 82, 81, 81, 51, 68, 83, 83, 83, + 85, 85, 85, 57, 39, 51, 51, 84, 84, 84, + 85, 85, 85, 29, 29, 29, 29, 29, 67, 36, + 35, 67, 67, 73, 34, 73, 73, 73, 78, 78, + 33, 86, 5, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86 + } ; + +static yyconst flex_int16_t yy_chk[191] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, + 4, 13, 16, 28, 3, 88, 4, 17, 62, 19, + 16, 28, 13, 19, 17, 18, 18, 18, 19, 20, + 59, 20, 20, 20, 21, 21, 21, 20, 20, 20, + 20, 22, 22, 21, 24, 24, 26, 26, 27, 76, + 76, 76, 50, 50, 55, 27, 44, 49, 44, 44, + 44, 50, 77, 77, 44, 44, 44, 44, 48, 33, + 48, 48, 48, 51, 51, 51, 48, 48, 48, 48, + + 51, 52, 52, 53, 32, 52, 52, 52, 70, 70, + 70, 82, 82, 53, 53, 70, 72, 72, 83, 83, + 72, 72, 72, 75, 75, 78, 31, 75, 75, 75, + 81, 81, 81, 23, 15, 78, 78, 84, 84, 84, + 85, 85, 85, 87, 87, 87, 87, 87, 89, 12, + 10, 89, 89, 90, 9, 90, 90, 90, 91, 91, + 7, 5, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86 + } ; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +/* +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +This file contains the Lex specification for GLSL ES preprocessor. +Based on Microsoft Visual Studio 2010 Preprocessor Grammar: +http://msdn.microsoft.com/en-us/library/2scxys89.aspx + +IF YOU MODIFY THIS FILE YOU ALSO NEED TO RUN generate_parser.sh. +*/ + +#include "Tokenizer.h" + +#include "DiagnosticsBase.h" +#include "Token.h" + +#if defined(__GNUC__) +// Triggered by the auto-generated yy_fatal_error function. +#pragma GCC diagnostic ignored "-Wmissing-noreturn" +#endif + +typedef std::string YYSTYPE; +typedef pp::SourceLocation YYLTYPE; + +// Use the unused yycolumn variable to track file (string) number. +#define yyfileno yycolumn + +#define YY_USER_INIT \ + do { \ + yyfileno = 0; \ + yylineno = 1; \ + yyextra->leadingSpace = false; \ + yyextra->lineStart = true; \ + } while(0); + +#define YY_USER_ACTION \ + do \ + { \ + pp::Input* input = &yyextra->input; \ + pp::Input::Location* scanLoc = &yyextra->scanLoc; \ + while ((scanLoc->sIndex < input->count()) && \ + (scanLoc->cIndex >= input->length(scanLoc->sIndex))) \ + { \ + scanLoc->cIndex -= input->length(scanLoc->sIndex++); \ + ++yyfileno; yylineno = 1; \ + } \ + yylloc->file = yyfileno; \ + yylloc->line = yylineno; \ + scanLoc->cIndex += yyleng; \ + } while(0); + +#define YY_INPUT(buf, result, maxSize) \ + result = yyextra->input.read(buf, maxSize); + +#define INITIAL 0 +#define COMMENT 1 + +#define YY_EXTRA_TYPE pp::Tokenizer::Context* + +/* Holds the entire state of the reentrant scanner. */ +struct yyguts_t + { + + /* User-defined. Not touched by flex. */ + YY_EXTRA_TYPE yyextra_r; + + /* The rest are the same as the globals declared in the non-reentrant scanner. */ + FILE *yyin_r, *yyout_r; + size_t yy_buffer_stack_top; /**< index of top of stack. */ + size_t yy_buffer_stack_max; /**< capacity of stack. */ + YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ + char yy_hold_char; + yy_size_t yy_n_chars; + yy_size_t yyleng_r; + char *yy_c_buf_p; + int yy_init; + int yy_start; + int yy_did_buffer_switch_on_eof; + int yy_start_stack_ptr; + int yy_start_stack_depth; + int *yy_start_stack; + yy_state_type yy_last_accepting_state; + char* yy_last_accepting_cpos; + + int yylineno_r; + int yy_flex_debug_r; + + char *yytext_r; + int yy_more_flag; + int yy_more_len; + + YYSTYPE * yylval_r; + + YYLTYPE * yylloc_r; + + }; /* end struct yyguts_t */ + +static int yy_init_globals (yyscan_t yyscanner ); + + /* This must go here because YYSTYPE and YYLTYPE are included + * from bison output in section 1.*/ + # define yylval yyg->yylval_r + + # define yylloc yyg->yylloc_r + +int pplex_init (yyscan_t* scanner); + +int pplex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int pplex_destroy (yyscan_t yyscanner ); + +int ppget_debug (yyscan_t yyscanner ); + +void ppset_debug (int debug_flag ,yyscan_t yyscanner ); + +YY_EXTRA_TYPE ppget_extra (yyscan_t yyscanner ); + +void ppset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); + +FILE *ppget_in (yyscan_t yyscanner ); + +void ppset_in (FILE * in_str ,yyscan_t yyscanner ); + +FILE *ppget_out (yyscan_t yyscanner ); + +void ppset_out (FILE * out_str ,yyscan_t yyscanner ); + +yy_size_t ppget_leng (yyscan_t yyscanner ); + +char *ppget_text (yyscan_t yyscanner ); + +int ppget_lineno (yyscan_t yyscanner ); + +void ppset_lineno (int line_number ,yyscan_t yyscanner ); + +YYSTYPE * ppget_lval (yyscan_t yyscanner ); + +void ppset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); + + YYLTYPE *ppget_lloc (yyscan_t yyscanner ); + + void ppset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int ppwrap (yyscan_t yyscanner ); +#else +extern int ppwrap (yyscan_t yyscanner ); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (yyscan_t yyscanner ); +#else +static int input (yyscan_t yyscanner ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + yy_size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int pplex \ + (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner); + +#define YY_DECL int pplex \ + (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* Line comment */ + + yylval = yylval_param; + + yylloc = yylloc_param; + + if ( !yyg->yy_init ) + { + yyg->yy_init = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! yyg->yy_start ) + yyg->yy_start = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + ppensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + pp_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); + } + + pp_load_buffer_state(yyscanner ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = yyg->yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yyg->yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = yyg->yy_start; +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 87 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_current_state != 86 ); + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = yyg->yy_hold_char; + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + +case 1: +YY_RULE_SETUP + + YY_BREAK +/* Block comment */ +/* Line breaks are just counted - not returned. */ +/* The comment is replaced by a single space. */ +case 2: +YY_RULE_SETUP +{ BEGIN(COMMENT); } + YY_BREAK +case 3: +YY_RULE_SETUP + + YY_BREAK +case 4: +YY_RULE_SETUP + + YY_BREAK +case 5: +/* rule 5 can match eol */ +YY_RULE_SETUP +{ ++yylineno; } + YY_BREAK +case 6: +YY_RULE_SETUP +{ + yyextra->leadingSpace = true; + BEGIN(INITIAL); +} + YY_BREAK +case 7: +YY_RULE_SETUP +{ + // # is only valid at start of line for preprocessor directives. + yylval->assign(1, yytext[0]); + return yyextra->lineStart ? pp::Token::PP_HASH : pp::Token::PP_OTHER; +} + YY_BREAK +case 8: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::IDENTIFIER; +} + YY_BREAK +case 9: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::CONST_INT; +} + YY_BREAK +case 10: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::CONST_FLOAT; +} + YY_BREAK +/* Anything that starts with a {DIGIT} or .{DIGIT} must be a number. */ +/* Rule to catch all invalid integers and floats. */ +case 11: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::PP_NUMBER; +} + YY_BREAK +case 12: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_INC; +} + YY_BREAK +case 13: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_DEC; +} + YY_BREAK +case 14: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_LEFT; +} + YY_BREAK +case 15: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_RIGHT; +} + YY_BREAK +case 16: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_LE; +} + YY_BREAK +case 17: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_GE; +} + YY_BREAK +case 18: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_EQ; +} + YY_BREAK +case 19: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_NE; +} + YY_BREAK +case 20: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_AND; +} + YY_BREAK +case 21: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_XOR; +} + YY_BREAK +case 22: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_OR; +} + YY_BREAK +case 23: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_ADD_ASSIGN; +} + YY_BREAK +case 24: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_SUB_ASSIGN; +} + YY_BREAK +case 25: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_MUL_ASSIGN; +} + YY_BREAK +case 26: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_DIV_ASSIGN; +} + YY_BREAK +case 27: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_MOD_ASSIGN; +} + YY_BREAK +case 28: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_LEFT_ASSIGN; +} + YY_BREAK +case 29: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_RIGHT_ASSIGN; +} + YY_BREAK +case 30: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_AND_ASSIGN; +} + YY_BREAK +case 31: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_XOR_ASSIGN; +} + YY_BREAK +case 32: +YY_RULE_SETUP +{ + yylval->assign(yytext, yyleng); + return pp::Token::OP_OR_ASSIGN; +} + YY_BREAK +case 33: +YY_RULE_SETUP +{ + yylval->assign(1, yytext[0]); + return yytext[0]; +} + YY_BREAK +case 34: +YY_RULE_SETUP +{ yyextra->leadingSpace = true; } + YY_BREAK +case 35: +/* rule 35 can match eol */ +YY_RULE_SETUP +{ + ++yylineno; + yylval->assign(1, '\n'); + return '\n'; +} + YY_BREAK +case 36: +/* rule 36 can match eol */ +YY_RULE_SETUP +{ ++yylineno; } + YY_BREAK +case 37: +YY_RULE_SETUP +{ + yylval->assign(1, yytext[0]); + return pp::Token::PP_OTHER; +} + YY_BREAK +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(COMMENT): +{ + // YY_USER_ACTION is not invoked for handling EOF. + // Set the location for EOF token manually. + pp::Input* input = &yyextra->input; + pp::Input::Location* scanLoc = &yyextra->scanLoc; + yy_size_t sIndexMax = input->count() ? input->count() - 1 : 0; + if (scanLoc->sIndex != sIndexMax) + { + // We can only reach here if there are empty strings at the + // end of the input. + scanLoc->sIndex = sIndexMax; scanLoc->cIndex = 0; + // FIXME: this is not 64-bit clean. + yyfileno = static_cast(sIndexMax); yylineno = 1; + } + yylloc->file = yyfileno; + yylloc->line = yylineno; + yylval->clear(); + + if (YY_START == COMMENT) + { + yyextra->diagnostics->report(pp::Diagnostics::EOF_IN_COMMENT, + pp::SourceLocation(yyfileno, yylineno), + ""); + } + yyterminate(); +} + YY_BREAK +case 38: +YY_RULE_SETUP +ECHO; + YY_BREAK + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yyg->yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * pplex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( yyscanner ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); + + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++yyg->yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( yyscanner ) ) + { + case EOB_ACT_END_OF_FILE: + { + yyg->yy_did_buffer_switch_on_eof = 0; + + if ( ppwrap(yyscanner ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! yyg->yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( yyscanner ); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yyg->yy_c_buf_p = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; + + yy_current_state = yy_get_previous_state( yyscanner ); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of pplex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = yyg->yytext_ptr; + register int number_to_move, i; + int ret_val; + + if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; + + else + { + yy_size_t num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) (yyg->yy_c_buf_p - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + yy_size_t new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + pprealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + yyg->yy_n_chars, num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + if ( yyg->yy_n_chars == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + pprestart(yyin ,yyscanner); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) pprealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + + yyg->yy_n_chars += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; + + yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (yyscan_t yyscanner) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + yy_current_state = yyg->yy_start; + + for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 87 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) +{ + register int yy_is_jam; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ + register char *yy_cp = yyg->yy_c_buf_p; + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 87 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 86); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (yyscan_t yyscanner) +#else + static int input (yyscan_t yyscanner) +#endif + +{ + int c; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + *yyg->yy_c_buf_p = yyg->yy_hold_char; + + if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) + /* This was really a NUL. */ + *yyg->yy_c_buf_p = '\0'; + + else + { /* need more input */ + yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + ++yyg->yy_c_buf_p; + + switch ( yy_get_next_buffer( yyscanner ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + pprestart(yyin ,yyscanner); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( ppwrap(yyscanner ) ) + return 0; + + if ( ! yyg->yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(yyscanner); +#else + return input(yyscanner); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = yyg->yytext_ptr + offset; + break; + } + } + } + + c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ + *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ + yyg->yy_hold_char = *++yyg->yy_c_buf_p; + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * @param yyscanner The scanner object. + * @note This function does not reset the start condition to @c INITIAL . + */ + void pprestart (FILE * input_file , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if ( ! YY_CURRENT_BUFFER ){ + ppensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + pp_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); + } + + pp_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); + pp_load_buffer_state(yyscanner ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * @param yyscanner The scanner object. + */ + void pp_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* TODO. We should be able to replace this entire function body + * with + * pppop_buffer_state(); + * pppush_buffer_state(new_buffer); + */ + ppensure_buffer_stack (yyscanner); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + pp_load_buffer_state(yyscanner ); + + /* We don't actually know whether we did this switch during + * EOF (ppwrap()) processing, but the only time this flag + * is looked at is after ppwrap() is called, so it's safe + * to go ahead and always set it. + */ + yyg->yy_did_buffer_switch_on_eof = 1; +} + +static void pp_load_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + yyg->yy_hold_char = *yyg->yy_c_buf_p; +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * @param yyscanner The scanner object. + * @return the allocated buffer state. + */ + YY_BUFFER_STATE pp_create_buffer (FILE * file, int size , yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) ppalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in pp_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) ppalloc(b->yy_buf_size + 2 ,yyscanner ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in pp_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + pp_init_buffer(b,file ,yyscanner); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with pp_create_buffer() + * @param yyscanner The scanner object. + */ + void pp_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + ppfree((void *) b->yy_ch_buf ,yyscanner ); + + ppfree((void *) b ,yyscanner ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a pprestart() or at EOF. + */ + static void pp_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) + +{ + int oerrno = errno; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + pp_flush_buffer(b ,yyscanner); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then pp_init_buffer was _probably_ + * called from pprestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * @param yyscanner The scanner object. + */ + void pp_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + pp_load_buffer_state(yyscanner ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * @param yyscanner The scanner object. + */ +void pppush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + if (new_buffer == NULL) + return; + + ppensure_buffer_stack(yyscanner); + + /* This block is copied from pp_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + yyg->yy_buffer_stack_top++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from pp_switch_to_buffer. */ + pp_load_buffer_state(yyscanner ); + yyg->yy_did_buffer_switch_on_eof = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * @param yyscanner The scanner object. + */ +void pppop_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + if (!YY_CURRENT_BUFFER) + return; + + pp_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + if (yyg->yy_buffer_stack_top > 0) + --yyg->yy_buffer_stack_top; + + if (YY_CURRENT_BUFFER) { + pp_load_buffer_state(yyscanner ); + yyg->yy_did_buffer_switch_on_eof = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void ppensure_buffer_stack (yyscan_t yyscanner) +{ + yy_size_t num_to_alloc; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (!yyg->yy_buffer_stack) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + yyg->yy_buffer_stack = (struct yy_buffer_state**)ppalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + , yyscanner); + if ( ! yyg->yy_buffer_stack ) + YY_FATAL_ERROR( "out of dynamic memory in ppensure_buffer_stack()" ); + + memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + yyg->yy_buffer_stack_max = num_to_alloc; + yyg->yy_buffer_stack_top = 0; + return; + } + + if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = yyg->yy_buffer_stack_max + grow_size; + yyg->yy_buffer_stack = (struct yy_buffer_state**)pprealloc + (yyg->yy_buffer_stack, + num_to_alloc * sizeof(struct yy_buffer_state*) + , yyscanner); + if ( ! yyg->yy_buffer_stack ) + YY_FATAL_ERROR( "out of dynamic memory in ppensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); + yyg->yy_buffer_stack_max = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE pp_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) ppalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in pp_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + pp_switch_to_buffer(b ,yyscanner ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to pplex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * pp_scan_bytes() instead. + */ +YY_BUFFER_STATE pp_scan_string (yyconst char * yystr , yyscan_t yyscanner) +{ + + return pp_scan_bytes(yystr,strlen(yystr) ,yyscanner); +} + +/** Setup the input buffer state to scan the given bytes. The next call to pplex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE pp_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n, i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) ppalloc(n ,yyscanner ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in pp_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = pp_scan_buffer(buf,n ,yyscanner); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in pp_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = yyg->yy_hold_char; \ + yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ + yyg->yy_hold_char = *yyg->yy_c_buf_p; \ + *yyg->yy_c_buf_p = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the user-defined data for this scanner. + * @param yyscanner The scanner object. + */ +YY_EXTRA_TYPE ppget_extra (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyextra; +} + +/** Get the current line number. + * @param yyscanner The scanner object. + */ +int ppget_lineno (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (! YY_CURRENT_BUFFER) + return 0; + + return yylineno; +} + +/** Get the current column number. + * @param yyscanner The scanner object. + */ +int ppget_column (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (! YY_CURRENT_BUFFER) + return 0; + + return yycolumn; +} + +/** Get the input stream. + * @param yyscanner The scanner object. + */ +FILE *ppget_in (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyin; +} + +/** Get the output stream. + * @param yyscanner The scanner object. + */ +FILE *ppget_out (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyout; +} + +/** Get the length of the current token. + * @param yyscanner The scanner object. + */ +yy_size_t ppget_leng (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyleng; +} + +/** Get the current token. + * @param yyscanner The scanner object. + */ + +char *ppget_text (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yytext; +} + +/** Set the user-defined data. This data is never touched by the scanner. + * @param user_defined The data to be associated with this scanner. + * @param yyscanner The scanner object. + */ +void ppset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyextra = user_defined ; +} + +/** Set the current line number. + * @param line_number + * @param yyscanner The scanner object. + */ +void ppset_lineno (int line_number , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* lineno is only valid if an input buffer exists. */ + if (! YY_CURRENT_BUFFER ) + yy_fatal_error( "ppset_lineno called with no buffer" , yyscanner); + + yylineno = line_number; +} + +/** Set the current column. + * @param line_number + * @param yyscanner The scanner object. + */ +void ppset_column (int column_no , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* column is only valid if an input buffer exists. */ + if (! YY_CURRENT_BUFFER ) + yy_fatal_error( "ppset_column called with no buffer" , yyscanner); + + yycolumn = column_no; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * @param yyscanner The scanner object. + * @see pp_switch_to_buffer + */ +void ppset_in (FILE * in_str , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyin = in_str ; +} + +void ppset_out (FILE * out_str , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyout = out_str ; +} + +int ppget_debug (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yy_flex_debug; +} + +void ppset_debug (int bdebug , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yy_flex_debug = bdebug ; +} + +/* Accessor methods for yylval and yylloc */ + +YYSTYPE * ppget_lval (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yylval; +} + +void ppset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yylval = yylval_param; +} + +YYLTYPE *ppget_lloc (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yylloc; +} + +void ppset_lloc (YYLTYPE * yylloc_param , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yylloc = yylloc_param; +} + +/* User-visible API */ + +/* pplex_init is special because it creates the scanner itself, so it is + * the ONLY reentrant function that doesn't take the scanner as the last argument. + * That's why we explicitly handle the declaration, instead of using our macros. + */ + +int pplex_init(yyscan_t* ptr_yy_globals) + +{ + if (ptr_yy_globals == NULL){ + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = (yyscan_t) ppalloc ( sizeof( struct yyguts_t ), NULL ); + + if (*ptr_yy_globals == NULL){ + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ + memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); + + return yy_init_globals ( *ptr_yy_globals ); +} + +/* pplex_init_extra has the same functionality as pplex_init, but follows the + * convention of taking the scanner as the last argument. Note however, that + * this is a *pointer* to a scanner, as it will be allocated by this call (and + * is the reason, too, why this function also must handle its own declaration). + * The user defined value in the first argument will be available to ppalloc in + * the yyextra field. + */ + +int pplex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) + +{ + struct yyguts_t dummy_yyguts; + + ppset_extra (yy_user_defined, &dummy_yyguts); + + if (ptr_yy_globals == NULL){ + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = (yyscan_t) ppalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); + + if (*ptr_yy_globals == NULL){ + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in + yy_init_globals. Leave at 0x00 for releases. */ + memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); + + ppset_extra (yy_user_defined, *ptr_yy_globals); + + return yy_init_globals ( *ptr_yy_globals ); +} + +static int yy_init_globals (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from pplex_destroy(), so don't allocate here. + */ + + yyg->yy_buffer_stack = 0; + yyg->yy_buffer_stack_top = 0; + yyg->yy_buffer_stack_max = 0; + yyg->yy_c_buf_p = (char *) 0; + yyg->yy_init = 0; + yyg->yy_start = 0; + + yyg->yy_start_stack_ptr = 0; + yyg->yy_start_stack_depth = 0; + yyg->yy_start_stack = NULL; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * pplex_init() + */ + return 0; +} + +/* pplex_destroy is for both reentrant and non-reentrant scanners. */ +int pplex_destroy (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + pp_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); + YY_CURRENT_BUFFER_LVALUE = NULL; + pppop_buffer_state(yyscanner); + } + + /* Destroy the stack itself. */ + ppfree(yyg->yy_buffer_stack ,yyscanner); + yyg->yy_buffer_stack = NULL; + + /* Destroy the start condition stack. */ + ppfree(yyg->yy_start_stack ,yyscanner ); + yyg->yy_start_stack = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * pplex() is called, initialization will occur. */ + yy_init_globals( yyscanner); + + /* Destroy the main struct (reentrant only). */ + ppfree ( yyscanner , yyscanner ); + yyscanner = NULL; + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *ppalloc (yy_size_t size , yyscan_t yyscanner) +{ + return (void *) malloc( size ); +} + +void *pprealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void ppfree (void * ptr , yyscan_t yyscanner) +{ + free( (char *) ptr ); /* see pprealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +namespace pp { + +// TODO(alokp): Maximum token length should ideally be specified by +// the preprocessor client, i.e., the compiler. +const size_t Tokenizer::kMaxTokenLength = 256; + +Tokenizer::Tokenizer(Diagnostics* diagnostics) : mHandle(0) +{ + mContext.diagnostics = diagnostics; +} + +Tokenizer::~Tokenizer() +{ + destroyScanner(); +} + +bool Tokenizer::init(size_t count, const char* const string[], const int length[]) +{ + if ((count > 0) && (string == 0)) return false; + + mContext.input = Input(count, string, length); + return initScanner(); +} + +void Tokenizer::setFileNumber(int file) +{ + // We use column number as file number. + // See macro yyfileno. + ppset_column(file,mHandle); +} + +void Tokenizer::setLineNumber(int line) +{ + ppset_lineno(line,mHandle); +} + +void Tokenizer::lex(Token* token) +{ + token->type = pplex(&token->text,&token->location,mHandle); + if (token->text.size() > kMaxTokenLength) + { + mContext.diagnostics->report(Diagnostics::TOKEN_TOO_LONG, + token->location, token->text); + token->text.erase(kMaxTokenLength); + } + + token->flags = 0; + + token->setAtStartOfLine(mContext.lineStart); + mContext.lineStart = token->type == '\n'; + + token->setHasLeadingSpace(mContext.leadingSpace); + mContext.leadingSpace = false; +} + +bool Tokenizer::initScanner() +{ + if ((mHandle == NULL) && pplex_init_extra(&mContext,&mHandle)) + return false; + + pprestart(0,mHandle); + return true; +} + +void Tokenizer::destroyScanner() +{ + if (mHandle == NULL) + return; + + pplex_destroy(mHandle); + mHandle = NULL; +} + +} // namespace pp + diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.h b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.h new file mode 100644 index 00000000000..7a6fa87b040 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.h @@ -0,0 +1,58 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_PREPROCESSOR_TOKENIZER_H_ +#define COMPILER_PREPROCESSOR_TOKENIZER_H_ + +#include "Input.h" +#include "Lexer.h" +#include "pp_utils.h" + +namespace pp +{ + +class Diagnostics; + +class Tokenizer : public Lexer +{ + public: + struct Context + { + Diagnostics* diagnostics; + + Input input; + // The location where yytext points to. Token location should track + // scanLoc instead of Input::mReadLoc because they may not be the same + // if text is buffered up in the scanner input buffer. + Input::Location scanLoc; + + bool leadingSpace; + bool lineStart; + }; + static const std::size_t kMaxTokenLength; + + Tokenizer(Diagnostics* diagnostics); + ~Tokenizer(); + + bool init(size_t count, const char* const string[], const int length[]); + + void setFileNumber(int file); + void setLineNumber(int line); + + virtual void lex(Token* token); + + private: + PP_DISALLOW_COPY_AND_ASSIGN(Tokenizer); + bool initScanner(); + void destroyScanner(); + + void* mHandle; // Scanner handle. + Context mContext; // Scanner extra. +}; + +} // namespace pp +#endif // COMPILER_PREPROCESSOR_TOKENIZER_H_ + diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.l b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.l new file mode 100644 index 00000000000..fc81d84f373 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.l @@ -0,0 +1,342 @@ +/* +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +This file contains the Lex specification for GLSL ES preprocessor. +Based on Microsoft Visual Studio 2010 Preprocessor Grammar: +http://msdn.microsoft.com/en-us/library/2scxys89.aspx + +IF YOU MODIFY THIS FILE YOU ALSO NEED TO RUN generate_parser.sh. +*/ + +%top{ +// +// Copyright (c) 2011-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// This file is auto-generated by generate_parser.sh. DO NOT EDIT! +} + +%{ +#include "Tokenizer.h" + +#include "DiagnosticsBase.h" +#include "Token.h" + +#if defined(__GNUC__) +// Triggered by the auto-generated yy_fatal_error function. +#pragma GCC diagnostic ignored "-Wmissing-noreturn" +#endif + +typedef std::string YYSTYPE; +typedef pp::SourceLocation YYLTYPE; + +// Use the unused yycolumn variable to track file (string) number. +#define yyfileno yycolumn + +#define YY_USER_INIT \ + do { \ + yyfileno = 0; \ + yylineno = 1; \ + yyextra->leadingSpace = false; \ + yyextra->lineStart = true; \ + } while(0); + +#define YY_USER_ACTION \ + do \ + { \ + pp::Input* input = &yyextra->input; \ + pp::Input::Location* scanLoc = &yyextra->scanLoc; \ + while ((scanLoc->sIndex < input->count()) && \ + (scanLoc->cIndex >= input->length(scanLoc->sIndex))) \ + { \ + scanLoc->cIndex -= input->length(scanLoc->sIndex++); \ + ++yyfileno; yylineno = 1; \ + } \ + yylloc->file = yyfileno; \ + yylloc->line = yylineno; \ + scanLoc->cIndex += yyleng; \ + } while(0); + +#define YY_INPUT(buf, result, maxSize) \ + result = yyextra->input.read(buf, maxSize); + +%} + +%option noyywrap nounput never-interactive +%option reentrant bison-bridge bison-locations +%option prefix="pp" +%option extra-type="pp::Tokenizer::Context*" +%x COMMENT + +NEWLINE \n|\r|\r\n +IDENTIFIER [_a-zA-Z][_a-zA-Z0-9]* +PUNCTUATOR [][<>(){}.+-/*%^|&~=!:;,?] + +DECIMAL_CONSTANT [1-9][0-9]* +OCTAL_CONSTANT 0[0-7]* +HEXADECIMAL_CONSTANT 0[xX][0-9a-fA-F]+ + +DIGIT [0-9] +EXPONENT_PART [eE][+-]?{DIGIT}+ +FRACTIONAL_CONSTANT ({DIGIT}*"."{DIGIT}+)|({DIGIT}+".") + +%% + + /* Line comment */ +"//"[^\r\n]* + + /* Block comment */ + /* Line breaks are just counted - not returned. */ + /* The comment is replaced by a single space. */ +"/*" { BEGIN(COMMENT); } +[^*\r\n]+ +"*" +{NEWLINE} { ++yylineno; } +"*/" { + yyextra->leadingSpace = true; + BEGIN(INITIAL); +} + +# { + // # is only valid at start of line for preprocessor directives. + yylval->assign(1, yytext[0]); + return yyextra->lineStart ? pp::Token::PP_HASH : pp::Token::PP_OTHER; +} + +{IDENTIFIER} { + yylval->assign(yytext, yyleng); + return pp::Token::IDENTIFIER; +} + +{DECIMAL_CONSTANT}|{OCTAL_CONSTANT}|{HEXADECIMAL_CONSTANT} { + yylval->assign(yytext, yyleng); + return pp::Token::CONST_INT; +} + +({DIGIT}+{EXPONENT_PART})|({FRACTIONAL_CONSTANT}{EXPONENT_PART}?) { + yylval->assign(yytext, yyleng); + return pp::Token::CONST_FLOAT; +} + + /* Anything that starts with a {DIGIT} or .{DIGIT} must be a number. */ + /* Rule to catch all invalid integers and floats. */ +({DIGIT}+[_a-zA-Z0-9.]*)|("."{DIGIT}+[_a-zA-Z0-9.]*) { + yylval->assign(yytext, yyleng); + return pp::Token::PP_NUMBER; +} + +"++" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_INC; +} +"--" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_DEC; +} +"<<" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_LEFT; +} +">>" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_RIGHT; +} +"<=" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_LE; +} +">=" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_GE; +} +"==" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_EQ; +} +"!=" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_NE; +} +"&&" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_AND; +} +"^^" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_XOR; +} +"||" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_OR; +} +"+=" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_ADD_ASSIGN; +} +"-=" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_SUB_ASSIGN; +} +"*=" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_MUL_ASSIGN; +} +"/=" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_DIV_ASSIGN; +} +"%=" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_MOD_ASSIGN; +} +"<<=" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_LEFT_ASSIGN; +} +">>=" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_RIGHT_ASSIGN; +} +"&=" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_AND_ASSIGN; +} +"^=" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_XOR_ASSIGN; +} +"|=" { + yylval->assign(yytext, yyleng); + return pp::Token::OP_OR_ASSIGN; +} + +{PUNCTUATOR} { + yylval->assign(1, yytext[0]); + return yytext[0]; +} + +[ \t\v\f]+ { yyextra->leadingSpace = true; } + +{NEWLINE} { + ++yylineno; + yylval->assign(1, '\n'); + return '\n'; +} + +\\{NEWLINE} { ++yylineno; } + +. { + yylval->assign(1, yytext[0]); + return pp::Token::PP_OTHER; +} + +<*><> { + // YY_USER_ACTION is not invoked for handling EOF. + // Set the location for EOF token manually. + pp::Input* input = &yyextra->input; + pp::Input::Location* scanLoc = &yyextra->scanLoc; + yy_size_t sIndexMax = input->count() ? input->count() - 1 : 0; + if (scanLoc->sIndex != sIndexMax) + { + // We can only reach here if there are empty strings at the + // end of the input. + scanLoc->sIndex = sIndexMax; scanLoc->cIndex = 0; + // FIXME: this is not 64-bit clean. + yyfileno = static_cast(sIndexMax); yylineno = 1; + } + yylloc->file = yyfileno; + yylloc->line = yylineno; + yylval->clear(); + + if (YY_START == COMMENT) + { + yyextra->diagnostics->report(pp::Diagnostics::EOF_IN_COMMENT, + pp::SourceLocation(yyfileno, yylineno), + ""); + } + yyterminate(); +} + +%% + +namespace pp { + +// TODO(alokp): Maximum token length should ideally be specified by +// the preprocessor client, i.e., the compiler. +const size_t Tokenizer::kMaxTokenLength = 256; + +Tokenizer::Tokenizer(Diagnostics* diagnostics) : mHandle(0) +{ + mContext.diagnostics = diagnostics; +} + +Tokenizer::~Tokenizer() +{ + destroyScanner(); +} + +bool Tokenizer::init(size_t count, const char* const string[], const int length[]) +{ + if ((count > 0) && (string == 0)) return false; + + mContext.input = Input(count, string, length); + return initScanner(); +} + +void Tokenizer::setFileNumber(int file) +{ + // We use column number as file number. + // See macro yyfileno. + yyset_column(file, mHandle); +} + +void Tokenizer::setLineNumber(int line) +{ + yyset_lineno(line, mHandle); +} + +void Tokenizer::lex(Token* token) +{ + token->type = yylex(&token->text, &token->location, mHandle); + if (token->text.size() > kMaxTokenLength) + { + mContext.diagnostics->report(Diagnostics::TOKEN_TOO_LONG, + token->location, token->text); + token->text.erase(kMaxTokenLength); + } + + token->flags = 0; + + token->setAtStartOfLine(mContext.lineStart); + mContext.lineStart = token->type == '\n'; + + token->setHasLeadingSpace(mContext.leadingSpace); + mContext.leadingSpace = false; +} + +bool Tokenizer::initScanner() +{ + if ((mHandle == NULL) && yylex_init_extra(&mContext, &mHandle)) + return false; + + yyrestart(0, mHandle); + return true; +} + +void Tokenizer::destroyScanner() +{ + if (mHandle == NULL) + return; + + yylex_destroy(mHandle); + mHandle = NULL; +} + +} // namespace pp + diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/generate_parser.sh b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/generate_parser.sh new file mode 100755 index 00000000000..e9c70b13b53 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/generate_parser.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Generates various components of GLSL ES preprocessor. + +run_flex() +{ +input_file=$script_dir/$1 +output_source=$script_dir/$2 +flex --noline --nounistd --outfile=$output_source $input_file +} + +run_bison() +{ +input_file=$script_dir/$1 +output_source=$script_dir/$2 +bison --no-lines --skeleton=yacc.c --output=$output_source $input_file +} + +script_dir=$(dirname $0) + +# Generate preprocessor +run_flex Tokenizer.l Tokenizer.cpp +run_bison ExpressionParser.y ExpressionParser.cpp diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/length_limits.h b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/length_limits.h new file mode 100644 index 00000000000..4f1f71319fc --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/length_limits.h @@ -0,0 +1,21 @@ +// +// Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// +// length_limits.h +// + +#if !defined(__LENGTH_LIMITS_H) +#define __LENGTH_LIMITS_H 1 + +// These constants are factored out from the rest of the headers to +// make it easier to reference them from the compiler sources. + +// These lengths do not include the NULL terminator. +#define MAX_SYMBOL_NAME_LEN 256 +#define MAX_STRING_LEN 511 + +#endif // !(defined(__LENGTH_LIMITS_H) diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/numeric_lex.h b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/numeric_lex.h new file mode 100644 index 00000000000..b04125d2309 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/numeric_lex.h @@ -0,0 +1,61 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// numeric_lex.h: Functions to extract numeric values from string. + +#ifndef COMPILER_PREPROCESSOR_NUMERIC_LEX_H_ +#define COMPILER_PREPROCESSOR_NUMERIC_LEX_H_ + +#include + +namespace pp { + +inline std::ios::fmtflags numeric_base_int(const std::string& str) +{ + if ((str.size() >= 2) && + (str[0] == '0') && + (str[1] == 'x' || str[1] == 'X')) + { + return std::ios::hex; + } + else if ((str.size() >= 1) && (str[0] == '0')) + { + return std::ios::oct; + } + return std::ios::dec; +} + +// The following functions parse the given string to extract a numerical +// value of the given type. These functions assume that the string is +// of the correct form. They can only fail if the parsed value is too big, +// in which case false is returned. + +template +bool numeric_lex_int(const std::string& str, IntType* value) +{ + std::istringstream stream(str); + // This should not be necessary, but MSVS has a buggy implementation. + // It returns incorrect results if the base is not specified. + stream.setf(numeric_base_int(str), std::ios::basefield); + + stream >> (*value); + return !stream.fail(); +} + +template +bool numeric_lex_float(const std::string& str, FloatType* value) +{ + std::istringstream stream(str); + // Force "C" locale so that decimal character is always '.', and + // not dependent on the current locale. + stream.imbue(std::locale::classic()); + + stream >> (*value); + return !stream.fail(); +} + +} // namespace pp. +#endif // COMPILER_PREPROCESSOR_NUMERIC_LEX_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/pp_utils.h b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/pp_utils.h new file mode 100644 index 00000000000..17164ea8b03 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/pp_utils.h @@ -0,0 +1,18 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// pp_utils.h: Common preprocessor utilities + +#ifndef COMPILER_PREPROCESSOR_PPUTILS_H_ +#define COMPILER_PREPROCESSOR_PPUTILS_H_ + +// A macro to disallow the copy constructor and operator= functions +// This must be used in the private: declarations for a class. +#define PP_DISALLOW_COPY_AND_ASSIGN(TypeName) \ + TypeName(const TypeName&); \ + void operator=(const TypeName&) + +#endif // COMPILER_PREPROCESSOR_PPUTILS_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/preprocessor.vcxproj b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/preprocessor.vcxproj new file mode 100644 index 00000000000..14f701b01ef --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/preprocessor.vcxproj @@ -0,0 +1,172 @@ +锘 + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325} + preprocessor + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + + + Level4 + true + EditAndContinue + 4100;4127;4189;4239;4244;4245;4512;4702;4267;%(DisableSpecificWarnings) + + + + + X64 + + + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + + + Level4 + true + ProgramDatabase + 4100;4127;4189;4239;4244;4245;4512;4702;4718;4267;%(DisableSpecificWarnings) + + + + + MaxSpeed + AnySuitable + WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions) + MultiThreaded + + + Level4 + true + ProgramDatabase + 4100;4127;4189;4239;4244;4245;4512;4702;4718;4267;%(DisableSpecificWarnings) + + + + + X64 + + + MaxSpeed + AnySuitable + WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions) + MultiThreaded + + + Level4 + true + ProgramDatabase + 4100;4127;4189;4239;4244;4245;4512;4702;4718;4267;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/preprocessor.vcxproj.filters b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/preprocessor.vcxproj.filters new file mode 100644 index 00000000000..8c8da8687ab --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/preprocessor.vcxproj.filters @@ -0,0 +1,100 @@ +锘 + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictFragmentShaderTiming.cpp b/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictFragmentShaderTiming.cpp new file mode 100644 index 00000000000..538b731b8e4 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictFragmentShaderTiming.cpp @@ -0,0 +1,127 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/InfoSink.h" +#include "compiler/ParseHelper.h" +#include "compiler/depgraph/DependencyGraphOutput.h" +#include "compiler/timing/RestrictFragmentShaderTiming.h" + +RestrictFragmentShaderTiming::RestrictFragmentShaderTiming(TInfoSinkBase& sink) + : mSink(sink) + , mNumErrors(0) +{ + // Sampling ops found only in fragment shaders. + mSamplingOps.insert("texture2D(s21;vf2;f1;"); + mSamplingOps.insert("texture2DProj(s21;vf3;f1;"); + mSamplingOps.insert("texture2DProj(s21;vf4;f1;"); + mSamplingOps.insert("textureCube(sC1;vf3;f1;"); + // Sampling ops found in both vertex and fragment shaders. + mSamplingOps.insert("texture2D(s21;vf2;"); + mSamplingOps.insert("texture2DProj(s21;vf3;"); + mSamplingOps.insert("texture2DProj(s21;vf4;"); + mSamplingOps.insert("textureCube(sC1;vf3;"); + // Sampling ops provided by OES_EGL_image_external. + mSamplingOps.insert("texture2D(1;vf2;"); + mSamplingOps.insert("texture2DProj(1;vf3;"); + mSamplingOps.insert("texture2DProj(1;vf4;"); + // Sampling ops provided by ARB_texture_rectangle. + mSamplingOps.insert("texture2DRect(1;vf2;"); + mSamplingOps.insert("texture2DRectProj(1;vf3;"); + mSamplingOps.insert("texture2DRectProj(1;vf4;"); +} + +// FIXME(mvujovic): We do not know if the execution time of built-in operations like sin, pow, etc. +// can vary based on the value of the input arguments. If so, we should restrict those as well. +void RestrictFragmentShaderTiming::enforceRestrictions(const TDependencyGraph& graph) +{ + mNumErrors = 0; + + // FIXME(mvujovic): The dependency graph does not support user defined function calls right now, + // so we generate errors for them. + validateUserDefinedFunctionCallUsage(graph); + + // Starting from each sampler, traverse the dependency graph and generate an error each time we + // hit a node where sampler dependent values are not allowed. + for (TGraphSymbolVector::const_iterator iter = graph.beginSamplerSymbols(); + iter != graph.endSamplerSymbols(); + ++iter) + { + TGraphSymbol* samplerSymbol = *iter; + clearVisited(); + samplerSymbol->traverse(this); + } +} + +void RestrictFragmentShaderTiming::validateUserDefinedFunctionCallUsage(const TDependencyGraph& graph) +{ + for (TFunctionCallVector::const_iterator iter = graph.beginUserDefinedFunctionCalls(); + iter != graph.endUserDefinedFunctionCalls(); + ++iter) + { + TGraphFunctionCall* functionCall = *iter; + beginError(functionCall->getIntermFunctionCall()); + mSink << "A call to a user defined function is not permitted.\n"; + } +} + +void RestrictFragmentShaderTiming::beginError(const TIntermNode* node) +{ + ++mNumErrors; + mSink.prefix(EPrefixError); + mSink.location(node->getLine()); +} + +bool RestrictFragmentShaderTiming::isSamplingOp(const TIntermAggregate* intermFunctionCall) const +{ + return !intermFunctionCall->isUserDefined() && + mSamplingOps.find(intermFunctionCall->getName()) != mSamplingOps.end(); +} + +void RestrictFragmentShaderTiming::visitArgument(TGraphArgument* parameter) +{ + // Texture cache access time might leak sensitive information. + // Thus, we restrict sampler dependent values from affecting the coordinate or LOD bias of a + // sampling operation. + if (isSamplingOp(parameter->getIntermFunctionCall())) { + switch (parameter->getArgumentNumber()) { + case 1: + // Second argument (coord) + beginError(parameter->getIntermFunctionCall()); + mSink << "An expression dependent on a sampler is not permitted to be the" + << " coordinate argument of a sampling operation.\n"; + break; + case 2: + // Third argument (bias) + beginError(parameter->getIntermFunctionCall()); + mSink << "An expression dependent on a sampler is not permitted to be the" + << " bias argument of a sampling operation.\n"; + break; + default: + // First argument (sampler) + break; + } + } +} + +void RestrictFragmentShaderTiming::visitSelection(TGraphSelection* selection) +{ + beginError(selection->getIntermSelection()); + mSink << "An expression dependent on a sampler is not permitted in a conditional statement.\n"; +} + +void RestrictFragmentShaderTiming::visitLoop(TGraphLoop* loop) +{ + beginError(loop->getIntermLoop()); + mSink << "An expression dependent on a sampler is not permitted in a loop condition.\n"; +} + +void RestrictFragmentShaderTiming::visitLogicalOp(TGraphLogicalOp* logicalOp) +{ + beginError(logicalOp->getIntermLogicalOp()); + mSink << "An expression dependent on a sampler is not permitted on the left hand side of a logical " + << logicalOp->getOpString() + << " operator.\n"; +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictFragmentShaderTiming.h b/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictFragmentShaderTiming.h new file mode 100644 index 00000000000..899165ca287 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictFragmentShaderTiming.h @@ -0,0 +1,40 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_TIMING_RESTRICT_FRAGMENT_SHADER_TIMING_H_ +#define COMPILER_TIMING_RESTRICT_FRAGMENT_SHADER_TIMING_H_ + +#include "GLSLANG/ShaderLang.h" + +#include "compiler/intermediate.h" +#include "compiler/depgraph/DependencyGraph.h" + +class TInfoSinkBase; + +class RestrictFragmentShaderTiming : TDependencyGraphTraverser { +public: + RestrictFragmentShaderTiming(TInfoSinkBase& sink); + void enforceRestrictions(const TDependencyGraph& graph); + int numErrors() const { return mNumErrors; } + + virtual void visitArgument(TGraphArgument* parameter); + virtual void visitSelection(TGraphSelection* selection); + virtual void visitLoop(TGraphLoop* loop); + virtual void visitLogicalOp(TGraphLogicalOp* logicalOp); + +private: + void beginError(const TIntermNode* node); + void validateUserDefinedFunctionCallUsage(const TDependencyGraph& graph); + bool isSamplingOp(const TIntermAggregate* intermFunctionCall) const; + + TInfoSinkBase& mSink; + int mNumErrors; + + typedef std::set StringSet; + StringSet mSamplingOps; +}; + +#endif // COMPILER_TIMING_RESTRICT_FRAGMENT_SHADER_TIMING_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictVertexShaderTiming.cpp b/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictVertexShaderTiming.cpp new file mode 100644 index 00000000000..355eb62d650 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictVertexShaderTiming.cpp @@ -0,0 +1,17 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "compiler/timing/RestrictVertexShaderTiming.h" + +void RestrictVertexShaderTiming::visitSymbol(TIntermSymbol* node) +{ + if (IsSampler(node->getBasicType())) { + ++mNumErrors; + mSink.message(EPrefixError, + node->getLine(), + "Samplers are not permitted in vertex shaders"); + } +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictVertexShaderTiming.h b/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictVertexShaderTiming.h new file mode 100644 index 00000000000..19a05fa68bc --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictVertexShaderTiming.h @@ -0,0 +1,33 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_TIMING_RESTRICT_VERTEX_SHADER_TIMING_H_ +#define COMPILER_TIMING_RESTRICT_VERTEX_SHADER_TIMING_H_ + +#include "GLSLANG/ShaderLang.h" + +#include "compiler/intermediate.h" +#include "compiler/InfoSink.h" + +class TInfoSinkBase; + +class RestrictVertexShaderTiming : public TIntermTraverser { +public: + RestrictVertexShaderTiming(TInfoSinkBase& sink) + : TIntermTraverser(true, false, false) + , mSink(sink) + , mNumErrors(0) {} + + void enforceRestrictions(TIntermNode* root) { root->traverse(this); } + int numErrors() { return mNumErrors; } + + virtual void visitSymbol(TIntermSymbol*); +private: + TInfoSinkBase& mSink; + int mNumErrors; +}; + +#endif // COMPILER_TIMING_RESTRICT_VERTEX_SHADER_TIMING_H_ diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator_common.vcxproj b/Source/ThirdParty/ANGLE/src/compiler/translator_common.vcxproj new file mode 100644 index 00000000000..69cc82d291f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/translator_common.vcxproj @@ -0,0 +1,273 @@ +锘 + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD} + compiler + Win32Proj + + + + StaticLibrary + NotSet + true + + + StaticLibrary + NotSet + + + StaticLibrary + NotSet + true + + + StaticLibrary + NotSet + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\common\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\common\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + Disabled + $(ProjectDir);$(ProjectDir)../;$(ProjectDir)../../include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + + + Level4 + true + EditAndContinue + 4100;4127;4189;4239;4244;4245;4512;4702;4718;%(DisableSpecificWarnings) + + + + + X64 + + + Disabled + $(ProjectDir);$(ProjectDir)../;$(ProjectDir)../../include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + + + Level4 + true + ProgramDatabase + 4100;4127;4189;4239;4244;4245;4267;4512;4702;4718;%(DisableSpecificWarnings) + + + + + MaxSpeed + AnySuitable + $(ProjectDir);$(ProjectDir)../;$(ProjectDir)../../include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions) + MultiThreaded + + + Level4 + true + ProgramDatabase + 4100;4127;4189;4239;4244;4245;4512;4702;4718;%(DisableSpecificWarnings) + + + + + X64 + + + MaxSpeed + AnySuitable + $(ProjectDir);$(ProjectDir)../;$(ProjectDir)../../include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions) + MultiThreaded + + + Level4 + true + ProgramDatabase + 4100;4127;4189;4239;4244;4245;4267;4512;4702;4718;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %(AdditionalInputs) + %(Outputs) + + + + + %(AdditionalInputs) + %(Outputs) + + + + + %(AdditionalInputs) + %(Outputs) + + + + + %(AdditionalInputs) + %(Outputs) + + + + + + + %(Outputs) + + + + + %(Outputs) + + + + + %(Outputs) + + + + + %(Outputs) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator_common.vcxproj.filters b/Source/ThirdParty/ANGLE/src/compiler/translator_common.vcxproj.filters new file mode 100644 index 00000000000..af28d917472 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/translator_common.vcxproj.filters @@ -0,0 +1,271 @@ +锘 + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {eb8da157-b29c-43c3-880d-54679e176dc5} + + + {b5410d3a-c3c8-4ae6-843a-b000d652632e} + + + {a9847611-dcd5-4c89-8262-a22b96c7c98d} + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {094f7115-35d3-4c63-870c-ab5f393dc2c2} + + + {5f5742e9-15e1-43b4-b1e7-0c118be14e04} + + + {c4007e35-3c11-44d6-95f7-bb81db528068} + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\generated + + + Source Files\generated + + + Source Files\depgraph + + + Source Files\depgraph + + + Source Files\depgraph + + + Source Files\depgraph + + + Source Files\timing + + + Source Files\timing + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files\generated + + + Header Files\timing + + + Header Files\timing + + + Header Files\depgraph + + + Header Files\depgraph + + + Header Files\depgraph + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator_hlsl.vcxproj b/Source/ThirdParty/ANGLE/src/compiler/translator_hlsl.vcxproj new file mode 100644 index 00000000000..15a909e2b11 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/translator_hlsl.vcxproj @@ -0,0 +1,164 @@ +锘 + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {5620F0E4-6C43-49BC-A178-B804E1A0C3A7} + CrossCompilerHLSL + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\hlsl\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\hlsl\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + Disabled + $(ProjectDir)../;$(ProjectDir)../../include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;NOMINMAX;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + + + Level4 + true + EditAndContinue + 4100;4127;4189;4239;4244;4245;4512;4702;%(DisableSpecificWarnings) + + + + + MaxSpeed + AnySuitable + true + $(ProjectDir)../;$(ProjectDir)../../include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions) + MultiThreaded + true + + + Level4 + true + ProgramDatabase + 4100;4127;4189;4239;4244;4245;4512;4702;%(DisableSpecificWarnings) + + + + + X64 + + + Disabled + $(ProjectDir)../;$(ProjectDir)../../include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;NOMINMAX;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + + + Level4 + 4100;4127;4189;4239;4244;4245;4512;4702;%(DisableSpecificWarnings) + ProgramDatabase + true + + + + + X64 + + + MaxSpeed + AnySuitable + true + $(ProjectDir)../;$(ProjectDir)../../include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions) + MultiThreaded + true + + + Level4 + 4100;4127;4189;4239;4244;4245;4512;4702;%(DisableSpecificWarnings) + ProgramDatabase + true + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator_hlsl.vcxproj.filters b/Source/ThirdParty/ANGLE/src/compiler/translator_hlsl.vcxproj.filters new file mode 100644 index 00000000000..5ea235a9820 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/translator_hlsl.vcxproj.filters @@ -0,0 +1,56 @@ +锘 + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/compiler/util.cpp b/Source/ThirdParty/ANGLE/src/compiler/util.cpp new file mode 100644 index 00000000000..b46e4d0e342 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/util.cpp @@ -0,0 +1,33 @@ +// +// Copyright (c) 2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include +#include + +#include "util.h" + +#ifdef _MSC_VER + #include +#else + #include +#endif + +double atof_dot(const char *str) +{ +#ifdef _MSC_VER + _locale_t l = _create_locale(LC_NUMERIC, "C"); + double result = _atof_l(str, l); + _free_locale(l); + return result; +#else + double result; + std::istringstream s(str); + std::locale l("C"); + s.imbue(l); + s >> result; + return result; +#endif +} diff --git a/Source/ThirdParty/ANGLE/src/compiler/util.h b/Source/ThirdParty/ANGLE/src/compiler/util.h new file mode 100644 index 00000000000..35288b73968 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/compiler/util.h @@ -0,0 +1,21 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef COMPILER_UTIL_H +#define COMPILER_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +// atof_dot is like atof but forcing C locale, i.e. forcing '.' as decimal point. +double atof_dot(const char *str); + +#ifdef __cplusplus +} // end extern "C" +#endif + +#endif // COMPILER_UTIL_H diff --git a/Source/ThirdParty/ANGLE/src/libEGL/Config.cpp b/Source/ThirdParty/ANGLE/src/libEGL/Config.cpp new file mode 100644 index 00000000000..5488cb6f4f1 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/Config.cpp @@ -0,0 +1,340 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Config.cpp: Implements the egl::Config class, describing the format, type +// and size for an egl::Surface. Implements EGLConfig and related functionality. +// [EGL 1.4] section 3.4 page 15. + +#include "libEGL/Config.h" + +#include +#include + +#include +#include + +#include "common/debug.h" + +using namespace std; + +namespace egl +{ +Config::Config(rx::ConfigDesc desc, EGLint minInterval, EGLint maxInterval, EGLint texWidth, EGLint texHeight) + : mRenderTargetFormat(desc.renderTargetFormat), mDepthStencilFormat(desc.depthStencilFormat), mMultiSample(desc.multiSample) +{ + mBindToTextureRGB = EGL_FALSE; + mBindToTextureRGBA = EGL_FALSE; + switch (desc.renderTargetFormat) + { + case GL_RGB5_A1: + mBufferSize = 16; + mRedSize = 5; + mGreenSize = 5; + mBlueSize = 5; + mAlphaSize = 1; + break; + case GL_RGBA8_OES: + mBufferSize = 32; + mRedSize = 8; + mGreenSize = 8; + mBlueSize = 8; + mAlphaSize = 8; + mBindToTextureRGBA = true; + break; + case GL_RGB565: + mBufferSize = 16; + mRedSize = 5; + mGreenSize = 6; + mBlueSize = 5; + mAlphaSize = 0; + break; + case GL_RGB8_OES: + mBufferSize = 32; + mRedSize = 8; + mGreenSize = 8; + mBlueSize = 8; + mAlphaSize = 0; + mBindToTextureRGB = true; + break; + case GL_BGRA8_EXT: + mBufferSize = 32; + mRedSize = 8; + mGreenSize = 8; + mBlueSize = 8; + mAlphaSize = 8; + mBindToTextureRGBA = true; + break; + default: + UNREACHABLE(); // Other formats should not be valid + } + + mLuminanceSize = 0; + mAlphaMaskSize = 0; + mColorBufferType = EGL_RGB_BUFFER; + mConfigCaveat = (desc.fastConfig) ? EGL_NONE : EGL_SLOW_CONFIG; + mConfigID = 0; + mConformant = EGL_OPENGL_ES2_BIT; + + switch (desc.depthStencilFormat) + { + case GL_NONE: + mDepthSize = 0; + mStencilSize = 0; + break; + case GL_DEPTH_COMPONENT32_OES: + mDepthSize = 32; + mStencilSize = 0; + break; + case GL_DEPTH24_STENCIL8_OES: + mDepthSize = 24; + mStencilSize = 8; + break; + case GL_DEPTH_COMPONENT24_OES: + mDepthSize = 24; + mStencilSize = 0; + break; + case GL_DEPTH_COMPONENT16: + mDepthSize = 16; + mStencilSize = 0; + break; + default: + UNREACHABLE(); + } + + mLevel = 0; + mMatchNativePixmap = EGL_NONE; + mMaxPBufferWidth = texWidth; + mMaxPBufferHeight = texHeight; + mMaxPBufferPixels = texWidth*texHeight; + mMaxSwapInterval = maxInterval; + mMinSwapInterval = minInterval; + mNativeRenderable = EGL_FALSE; + mNativeVisualID = 0; + mNativeVisualType = 0; + mRenderableType = EGL_OPENGL_ES2_BIT; + mSampleBuffers = desc.multiSample ? 1 : 0; + mSamples = desc.multiSample; + mSurfaceType = EGL_PBUFFER_BIT | EGL_WINDOW_BIT | EGL_SWAP_BEHAVIOR_PRESERVED_BIT; + mTransparentType = EGL_NONE; + mTransparentRedValue = 0; + mTransparentGreenValue = 0; + mTransparentBlueValue = 0; +} + +EGLConfig Config::getHandle() const +{ + return (EGLConfig)(size_t)mConfigID; +} + +SortConfig::SortConfig(const EGLint *attribList) + : mWantRed(false), mWantGreen(false), mWantBlue(false), mWantAlpha(false), mWantLuminance(false) +{ + scanForWantedComponents(attribList); +} + +void SortConfig::scanForWantedComponents(const EGLint *attribList) +{ + // [EGL] section 3.4.1 page 24 + // Sorting rule #3: by larger total number of color bits, not considering + // components that are 0 or don't-care. + for (const EGLint *attr = attribList; attr[0] != EGL_NONE; attr += 2) + { + if (attr[1] != 0 && attr[1] != EGL_DONT_CARE) + { + switch (attr[0]) + { + case EGL_RED_SIZE: mWantRed = true; break; + case EGL_GREEN_SIZE: mWantGreen = true; break; + case EGL_BLUE_SIZE: mWantBlue = true; break; + case EGL_ALPHA_SIZE: mWantAlpha = true; break; + case EGL_LUMINANCE_SIZE: mWantLuminance = true; break; + } + } + } +} + +EGLint SortConfig::wantedComponentsSize(const Config &config) const +{ + EGLint total = 0; + + if (mWantRed) total += config.mRedSize; + if (mWantGreen) total += config.mGreenSize; + if (mWantBlue) total += config.mBlueSize; + if (mWantAlpha) total += config.mAlphaSize; + if (mWantLuminance) total += config.mLuminanceSize; + + return total; +} + +bool SortConfig::operator()(const Config *x, const Config *y) const +{ + return (*this)(*x, *y); +} + +bool SortConfig::operator()(const Config &x, const Config &y) const +{ + #define SORT(attribute) \ + if (x.attribute != y.attribute) \ + { \ + return x.attribute < y.attribute; \ + } + + META_ASSERT(EGL_NONE < EGL_SLOW_CONFIG && EGL_SLOW_CONFIG < EGL_NON_CONFORMANT_CONFIG); + SORT(mConfigCaveat); + + META_ASSERT(EGL_RGB_BUFFER < EGL_LUMINANCE_BUFFER); + SORT(mColorBufferType); + + // By larger total number of color bits, only considering those that are requested to be > 0. + EGLint xComponentsSize = wantedComponentsSize(x); + EGLint yComponentsSize = wantedComponentsSize(y); + if (xComponentsSize != yComponentsSize) + { + return xComponentsSize > yComponentsSize; + } + + SORT(mBufferSize); + SORT(mSampleBuffers); + SORT(mSamples); + SORT(mDepthSize); + SORT(mStencilSize); + SORT(mAlphaMaskSize); + SORT(mNativeVisualType); + SORT(mConfigID); + + #undef SORT + + return false; +} + +// We'd like to use SortConfig to also eliminate duplicate configs. +// This works as long as we never have two configs with different per-RGB-component layouts, +// but the same total. +// 5551 and 565 are different because R+G+B is different. +// 5551 and 555 are different because bufferSize is different. +const EGLint ConfigSet::mSortAttribs[] = +{ + EGL_RED_SIZE, 1, + EGL_GREEN_SIZE, 1, + EGL_BLUE_SIZE, 1, + EGL_LUMINANCE_SIZE, 1, + // BUT NOT ALPHA + EGL_NONE +}; + +ConfigSet::ConfigSet() + : mSet(SortConfig(mSortAttribs)) +{ +} + +void ConfigSet::add(rx::ConfigDesc desc, EGLint minSwapInterval, EGLint maxSwapInterval, EGLint texWidth, EGLint texHeight) +{ + Config config(desc, minSwapInterval, maxSwapInterval, texWidth, texHeight); + mSet.insert(config); +} + +size_t ConfigSet::size() const +{ + return mSet.size(); +} + +bool ConfigSet::getConfigs(EGLConfig *configs, const EGLint *attribList, EGLint configSize, EGLint *numConfig) +{ + vector passed; + passed.reserve(mSet.size()); + + for (Iterator config = mSet.begin(); config != mSet.end(); config++) + { + bool match = true; + const EGLint *attribute = attribList; + + while (attribute[0] != EGL_NONE) + { + switch (attribute[0]) + { + case EGL_BUFFER_SIZE: match = config->mBufferSize >= attribute[1]; break; + case EGL_ALPHA_SIZE: match = config->mAlphaSize >= attribute[1]; break; + case EGL_BLUE_SIZE: match = config->mBlueSize >= attribute[1]; break; + case EGL_GREEN_SIZE: match = config->mGreenSize >= attribute[1]; break; + case EGL_RED_SIZE: match = config->mRedSize >= attribute[1]; break; + case EGL_DEPTH_SIZE: match = config->mDepthSize >= attribute[1]; break; + case EGL_STENCIL_SIZE: match = config->mStencilSize >= attribute[1]; break; + case EGL_CONFIG_CAVEAT: match = config->mConfigCaveat == (EGLenum) attribute[1]; break; + case EGL_CONFIG_ID: match = config->mConfigID == attribute[1]; break; + case EGL_LEVEL: match = config->mLevel >= attribute[1]; break; + case EGL_NATIVE_RENDERABLE: match = config->mNativeRenderable == (EGLBoolean) attribute[1]; break; + case EGL_NATIVE_VISUAL_TYPE: match = config->mNativeVisualType == attribute[1]; break; + case EGL_SAMPLES: match = config->mSamples >= attribute[1]; break; + case EGL_SAMPLE_BUFFERS: match = config->mSampleBuffers >= attribute[1]; break; + case EGL_SURFACE_TYPE: match = (config->mSurfaceType & attribute[1]) == attribute[1]; break; + case EGL_TRANSPARENT_TYPE: match = config->mTransparentType == (EGLenum) attribute[1]; break; + case EGL_TRANSPARENT_BLUE_VALUE: match = config->mTransparentBlueValue == attribute[1]; break; + case EGL_TRANSPARENT_GREEN_VALUE: match = config->mTransparentGreenValue == attribute[1]; break; + case EGL_TRANSPARENT_RED_VALUE: match = config->mTransparentRedValue == attribute[1]; break; + case EGL_BIND_TO_TEXTURE_RGB: match = config->mBindToTextureRGB == (EGLBoolean) attribute[1]; break; + case EGL_BIND_TO_TEXTURE_RGBA: match = config->mBindToTextureRGBA == (EGLBoolean) attribute[1]; break; + case EGL_MIN_SWAP_INTERVAL: match = config->mMinSwapInterval == attribute[1]; break; + case EGL_MAX_SWAP_INTERVAL: match = config->mMaxSwapInterval == attribute[1]; break; + case EGL_LUMINANCE_SIZE: match = config->mLuminanceSize >= attribute[1]; break; + case EGL_ALPHA_MASK_SIZE: match = config->mAlphaMaskSize >= attribute[1]; break; + case EGL_COLOR_BUFFER_TYPE: match = config->mColorBufferType == (EGLenum) attribute[1]; break; + case EGL_RENDERABLE_TYPE: match = (config->mRenderableType & attribute[1]) == attribute[1]; break; + case EGL_MATCH_NATIVE_PIXMAP: match = false; UNIMPLEMENTED(); break; + case EGL_CONFORMANT: match = (config->mConformant & attribute[1]) == attribute[1]; break; + case EGL_MAX_PBUFFER_WIDTH: match = config->mMaxPBufferWidth >= attribute[1]; break; + case EGL_MAX_PBUFFER_HEIGHT: match = config->mMaxPBufferHeight >= attribute[1]; break; + case EGL_MAX_PBUFFER_PIXELS: match = config->mMaxPBufferPixels >= attribute[1]; break; + default: + return false; + } + + if (!match) + { + break; + } + + attribute += 2; + } + + if (match) + { + passed.push_back(&*config); + } + } + + if (configs) + { + sort(passed.begin(), passed.end(), SortConfig(attribList)); + + EGLint index; + for (index = 0; index < configSize && index < static_cast(passed.size()); index++) + { + configs[index] = passed[index]->getHandle(); + } + + *numConfig = index; + } + else + { + *numConfig = passed.size(); + } + + return true; +} + +const egl::Config *ConfigSet::get(EGLConfig configHandle) +{ + for (Iterator config = mSet.begin(); config != mSet.end(); config++) + { + if (config->getHandle() == configHandle) + { + return &(*config); + } + } + + return NULL; +} +} diff --git a/Source/ThirdParty/ANGLE/src/libEGL/Config.h b/Source/ThirdParty/ANGLE/src/libEGL/Config.h new file mode 100644 index 00000000000..680337b7009 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/Config.h @@ -0,0 +1,115 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Config.h: Defines the egl::Config class, describing the format, type +// and size for an egl::Surface. Implements EGLConfig and related functionality. +// [EGL 1.4] section 3.4 page 15. + +#ifndef INCLUDE_CONFIG_H_ +#define INCLUDE_CONFIG_H_ + +#define EGLAPI +#include + +#include + +#include "libGLESv2/renderer/Renderer.h" +#include "common/angleutils.h" + +namespace egl +{ +class Display; + +class Config +{ + public: + Config(rx::ConfigDesc desc, EGLint minSwapInterval, EGLint maxSwapInterval, EGLint texWidth, EGLint texHeight); + + EGLConfig getHandle() const; + + const GLenum mRenderTargetFormat; + const GLenum mDepthStencilFormat; + const GLint mMultiSample; + + EGLint mBufferSize; // Depth of the color buffer + EGLint mRedSize; // Bits of Red in the color buffer + EGLint mGreenSize; // Bits of Green in the color buffer + EGLint mBlueSize; // Bits of Blue in the color buffer + EGLint mLuminanceSize; // Bits of Luminance in the color buffer + EGLint mAlphaSize; // Bits of Alpha in the color buffer + EGLint mAlphaMaskSize; // Bits of Alpha Mask in the mask buffer + EGLBoolean mBindToTextureRGB; // True if bindable to RGB textures. + EGLBoolean mBindToTextureRGBA; // True if bindable to RGBA textures. + EGLenum mColorBufferType; // Color buffer type + EGLenum mConfigCaveat; // Any caveats for the configuration + EGLint mConfigID; // Unique EGLConfig identifier + EGLint mConformant; // Whether contexts created with this config are conformant + EGLint mDepthSize; // Bits of Z in the depth buffer + EGLint mLevel; // Frame buffer level + EGLBoolean mMatchNativePixmap; // Match the native pixmap format + EGLint mMaxPBufferWidth; // Maximum width of pbuffer + EGLint mMaxPBufferHeight; // Maximum height of pbuffer + EGLint mMaxPBufferPixels; // Maximum size of pbuffer + EGLint mMaxSwapInterval; // Maximum swap interval + EGLint mMinSwapInterval; // Minimum swap interval + EGLBoolean mNativeRenderable; // EGL_TRUE if native rendering APIs can render to surface + EGLint mNativeVisualID; // Handle of corresponding native visual + EGLint mNativeVisualType; // Native visual type of the associated visual + EGLint mRenderableType; // Which client rendering APIs are supported. + EGLint mSampleBuffers; // Number of multisample buffers + EGLint mSamples; // Number of samples per pixel + EGLint mStencilSize; // Bits of Stencil in the stencil buffer + EGLint mSurfaceType; // Which types of EGL surfaces are supported. + EGLenum mTransparentType; // Type of transparency supported + EGLint mTransparentRedValue; // Transparent red value + EGLint mTransparentGreenValue; // Transparent green value + EGLint mTransparentBlueValue; // Transparent blue value +}; + +// Function object used by STL sorting routines for ordering Configs according to [EGL] section 3.4.1 page 24. +class SortConfig +{ + public: + explicit SortConfig(const EGLint *attribList); + + bool operator()(const Config *x, const Config *y) const; + bool operator()(const Config &x, const Config &y) const; + + private: + void scanForWantedComponents(const EGLint *attribList); + EGLint wantedComponentsSize(const Config &config) const; + + bool mWantRed; + bool mWantGreen; + bool mWantBlue; + bool mWantAlpha; + bool mWantLuminance; +}; + +class ConfigSet +{ + friend Display; + + public: + ConfigSet(); + + void add(rx::ConfigDesc desc, EGLint minSwapInterval, EGLint maxSwapInterval, EGLint texWidth, EGLint texHeight); + size_t size() const; + bool getConfigs(EGLConfig *configs, const EGLint *attribList, EGLint configSize, EGLint *numConfig); + const egl::Config *get(EGLConfig configHandle); + + private: + DISALLOW_COPY_AND_ASSIGN(ConfigSet); + + typedef std::set Set; + typedef Set::iterator Iterator; + Set mSet; + + static const EGLint mSortAttribs[]; +}; +} + +#endif // INCLUDE_CONFIG_H_ diff --git a/Source/ThirdParty/ANGLE/src/libEGL/Display.cpp b/Source/ThirdParty/ANGLE/src/libEGL/Display.cpp new file mode 100644 index 00000000000..8f2af794643 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/Display.cpp @@ -0,0 +1,537 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Display.cpp: Implements the egl::Display class, representing the abstract +// display on which graphics are drawn. Implements EGLDisplay. +// [EGL 1.4] section 2.1.2 page 3. + +#include "libEGL/Display.h" + +#include +#include +#include + +#include "common/debug.h" +#include "libGLESv2/mathutil.h" +#include "libGLESv2/main.h" +#include "libGLESv2/Context.h" +#include "libGLESv2/renderer/SwapChain.h" + +#include "libEGL/main.h" +#include "libEGL/Surface.h" + +namespace egl +{ +namespace +{ + typedef std::map DisplayMap; + DisplayMap displays; +} + +egl::Display *Display::getDisplay(EGLNativeDisplayType displayId) +{ + if (displays.find(displayId) != displays.end()) + { + return displays[displayId]; + } + + // FIXME: Check if displayId is a valid display device context + + egl::Display *display = new egl::Display(displayId, (HDC)displayId); + + displays[displayId] = display; + return display; +} + +Display::Display(EGLNativeDisplayType displayId, HDC deviceContext) : mDc(deviceContext) +{ + mDisplayId = displayId; + mRenderer = NULL; +} + +Display::~Display() +{ + terminate(); + + DisplayMap::iterator thisDisplay = displays.find(mDisplayId); + + if (thisDisplay != displays.end()) + { + displays.erase(thisDisplay); + } +} + +bool Display::initialize() +{ + if (isInitialized()) + { + return true; + } + + mRenderer = glCreateRenderer(this, mDc, mDisplayId); + + if (!mRenderer) + { + terminate(); + return error(EGL_NOT_INITIALIZED, false); + } + + EGLint minSwapInterval = mRenderer->getMinSwapInterval(); + EGLint maxSwapInterval = mRenderer->getMaxSwapInterval(); + EGLint maxTextureWidth = mRenderer->getMaxTextureWidth(); + EGLint maxTextureHeight = mRenderer->getMaxTextureHeight(); + + rx::ConfigDesc *descList; + int numConfigs = mRenderer->generateConfigs(&descList); + ConfigSet configSet; + + for (int i = 0; i < numConfigs; ++i) + configSet.add(descList[i], minSwapInterval, maxSwapInterval, + maxTextureWidth, maxTextureHeight); + + // Give the sorted configs a unique ID and store them internally + EGLint index = 1; + for (ConfigSet::Iterator config = configSet.mSet.begin(); config != configSet.mSet.end(); config++) + { + Config configuration = *config; + configuration.mConfigID = index; + index++; + + mConfigSet.mSet.insert(configuration); + } + + mRenderer->deleteConfigs(descList); + descList = NULL; + + if (!isInitialized()) + { + terminate(); + return false; + } + + initExtensionString(); + initVendorString(); + + return true; +} + +void Display::terminate() +{ + while (!mSurfaceSet.empty()) + { + destroySurface(*mSurfaceSet.begin()); + } + + while (!mContextSet.empty()) + { + destroyContext(*mContextSet.begin()); + } + + glDestroyRenderer(mRenderer); + mRenderer = NULL; +} + +bool Display::getConfigs(EGLConfig *configs, const EGLint *attribList, EGLint configSize, EGLint *numConfig) +{ + return mConfigSet.getConfigs(configs, attribList, configSize, numConfig); +} + +bool Display::getConfigAttrib(EGLConfig config, EGLint attribute, EGLint *value) +{ + const egl::Config *configuration = mConfigSet.get(config); + + switch (attribute) + { + case EGL_BUFFER_SIZE: *value = configuration->mBufferSize; break; + case EGL_ALPHA_SIZE: *value = configuration->mAlphaSize; break; + case EGL_BLUE_SIZE: *value = configuration->mBlueSize; break; + case EGL_GREEN_SIZE: *value = configuration->mGreenSize; break; + case EGL_RED_SIZE: *value = configuration->mRedSize; break; + case EGL_DEPTH_SIZE: *value = configuration->mDepthSize; break; + case EGL_STENCIL_SIZE: *value = configuration->mStencilSize; break; + case EGL_CONFIG_CAVEAT: *value = configuration->mConfigCaveat; break; + case EGL_CONFIG_ID: *value = configuration->mConfigID; break; + case EGL_LEVEL: *value = configuration->mLevel; break; + case EGL_NATIVE_RENDERABLE: *value = configuration->mNativeRenderable; break; + case EGL_NATIVE_VISUAL_TYPE: *value = configuration->mNativeVisualType; break; + case EGL_SAMPLES: *value = configuration->mSamples; break; + case EGL_SAMPLE_BUFFERS: *value = configuration->mSampleBuffers; break; + case EGL_SURFACE_TYPE: *value = configuration->mSurfaceType; break; + case EGL_TRANSPARENT_TYPE: *value = configuration->mTransparentType; break; + case EGL_TRANSPARENT_BLUE_VALUE: *value = configuration->mTransparentBlueValue; break; + case EGL_TRANSPARENT_GREEN_VALUE: *value = configuration->mTransparentGreenValue; break; + case EGL_TRANSPARENT_RED_VALUE: *value = configuration->mTransparentRedValue; break; + case EGL_BIND_TO_TEXTURE_RGB: *value = configuration->mBindToTextureRGB; break; + case EGL_BIND_TO_TEXTURE_RGBA: *value = configuration->mBindToTextureRGBA; break; + case EGL_MIN_SWAP_INTERVAL: *value = configuration->mMinSwapInterval; break; + case EGL_MAX_SWAP_INTERVAL: *value = configuration->mMaxSwapInterval; break; + case EGL_LUMINANCE_SIZE: *value = configuration->mLuminanceSize; break; + case EGL_ALPHA_MASK_SIZE: *value = configuration->mAlphaMaskSize; break; + case EGL_COLOR_BUFFER_TYPE: *value = configuration->mColorBufferType; break; + case EGL_RENDERABLE_TYPE: *value = configuration->mRenderableType; break; + case EGL_MATCH_NATIVE_PIXMAP: *value = false; UNIMPLEMENTED(); break; + case EGL_CONFORMANT: *value = configuration->mConformant; break; + case EGL_MAX_PBUFFER_WIDTH: *value = configuration->mMaxPBufferWidth; break; + case EGL_MAX_PBUFFER_HEIGHT: *value = configuration->mMaxPBufferHeight; break; + case EGL_MAX_PBUFFER_PIXELS: *value = configuration->mMaxPBufferPixels; break; + default: + return false; + } + + return true; +} + + + +EGLSurface Display::createWindowSurface(HWND window, EGLConfig config, const EGLint *attribList) +{ + const Config *configuration = mConfigSet.get(config); + EGLint postSubBufferSupported = EGL_FALSE; + + if (attribList) + { + while (*attribList != EGL_NONE) + { + switch (attribList[0]) + { + case EGL_RENDER_BUFFER: + switch (attribList[1]) + { + case EGL_BACK_BUFFER: + break; + case EGL_SINGLE_BUFFER: + return error(EGL_BAD_MATCH, EGL_NO_SURFACE); // Rendering directly to front buffer not supported + default: + return error(EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE); + } + break; + case EGL_POST_SUB_BUFFER_SUPPORTED_NV: + postSubBufferSupported = attribList[1]; + break; + case EGL_VG_COLORSPACE: + return error(EGL_BAD_MATCH, EGL_NO_SURFACE); + case EGL_VG_ALPHA_FORMAT: + return error(EGL_BAD_MATCH, EGL_NO_SURFACE); + default: + return error(EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE); + } + + attribList += 2; + } + } + + if (hasExistingWindowSurface(window)) + { + return error(EGL_BAD_ALLOC, EGL_NO_SURFACE); + } + + if (mRenderer->testDeviceLost(false)) + { + if (!restoreLostDevice()) + return EGL_NO_SURFACE; + } + + Surface *surface = new Surface(this, configuration, window, postSubBufferSupported); + + if (!surface->initialize()) + { + delete surface; + return EGL_NO_SURFACE; + } + + mSurfaceSet.insert(surface); + + return success(surface); +} + +EGLSurface Display::createOffscreenSurface(EGLConfig config, HANDLE shareHandle, const EGLint *attribList) +{ + EGLint width = 0, height = 0; + EGLenum textureFormat = EGL_NO_TEXTURE; + EGLenum textureTarget = EGL_NO_TEXTURE; + const Config *configuration = mConfigSet.get(config); + + if (attribList) + { + while (*attribList != EGL_NONE) + { + switch (attribList[0]) + { + case EGL_WIDTH: + width = attribList[1]; + break; + case EGL_HEIGHT: + height = attribList[1]; + break; + case EGL_LARGEST_PBUFFER: + if (attribList[1] != EGL_FALSE) + UNIMPLEMENTED(); // FIXME + break; + case EGL_TEXTURE_FORMAT: + switch (attribList[1]) + { + case EGL_NO_TEXTURE: + case EGL_TEXTURE_RGB: + case EGL_TEXTURE_RGBA: + textureFormat = attribList[1]; + break; + default: + return error(EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE); + } + break; + case EGL_TEXTURE_TARGET: + switch (attribList[1]) + { + case EGL_NO_TEXTURE: + case EGL_TEXTURE_2D: + textureTarget = attribList[1]; + break; + default: + return error(EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE); + } + break; + case EGL_MIPMAP_TEXTURE: + if (attribList[1] != EGL_FALSE) + return error(EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE); + break; + case EGL_VG_COLORSPACE: + return error(EGL_BAD_MATCH, EGL_NO_SURFACE); + case EGL_VG_ALPHA_FORMAT: + return error(EGL_BAD_MATCH, EGL_NO_SURFACE); + default: + return error(EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE); + } + + attribList += 2; + } + } + + if (width < 0 || height < 0) + { + return error(EGL_BAD_PARAMETER, EGL_NO_SURFACE); + } + + if (width == 0 || height == 0) + { + return error(EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE); + } + + if (textureFormat != EGL_NO_TEXTURE && !mRenderer->getNonPower2TextureSupport() && (!gl::isPow2(width) || !gl::isPow2(height))) + { + return error(EGL_BAD_MATCH, EGL_NO_SURFACE); + } + + if ((textureFormat != EGL_NO_TEXTURE && textureTarget == EGL_NO_TEXTURE) || + (textureFormat == EGL_NO_TEXTURE && textureTarget != EGL_NO_TEXTURE)) + { + return error(EGL_BAD_MATCH, EGL_NO_SURFACE); + } + + if (!(configuration->mSurfaceType & EGL_PBUFFER_BIT)) + { + return error(EGL_BAD_MATCH, EGL_NO_SURFACE); + } + + if ((textureFormat == EGL_TEXTURE_RGB && configuration->mBindToTextureRGB != EGL_TRUE) || + (textureFormat == EGL_TEXTURE_RGBA && configuration->mBindToTextureRGBA != EGL_TRUE)) + { + return error(EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE); + } + + if (mRenderer->testDeviceLost(false)) + { + if (!restoreLostDevice()) + return EGL_NO_SURFACE; + } + + Surface *surface = new Surface(this, configuration, shareHandle, width, height, textureFormat, textureTarget); + + if (!surface->initialize()) + { + delete surface; + return EGL_NO_SURFACE; + } + + mSurfaceSet.insert(surface); + + return success(surface); +} + +EGLContext Display::createContext(EGLConfig configHandle, const gl::Context *shareContext, bool notifyResets, bool robustAccess) +{ + if (!mRenderer) + { + return NULL; + } + else if (mRenderer->testDeviceLost(false)) // Lost device + { + if (!restoreLostDevice()) + return NULL; + } + + gl::Context *context = glCreateContext(shareContext, mRenderer, notifyResets, robustAccess); + mContextSet.insert(context); + + return context; +} + +bool Display::restoreLostDevice() +{ + for (ContextSet::iterator ctx = mContextSet.begin(); ctx != mContextSet.end(); ctx++) + { + if ((*ctx)->isResetNotificationEnabled()) + return false; // If reset notifications have been requested, application must delete all contexts first + } + + // Release surface resources to make the Reset() succeed + for (SurfaceSet::iterator surface = mSurfaceSet.begin(); surface != mSurfaceSet.end(); surface++) + { + (*surface)->release(); + } + + if (!mRenderer->resetDevice()) + { + return error(EGL_BAD_ALLOC, false); + } + + // Restore any surfaces that may have been lost + for (SurfaceSet::iterator surface = mSurfaceSet.begin(); surface != mSurfaceSet.end(); surface++) + { + (*surface)->resetSwapChain(); + } + + return true; +} + + +void Display::destroySurface(egl::Surface *surface) +{ + delete surface; + mSurfaceSet.erase(surface); +} + +void Display::destroyContext(gl::Context *context) +{ + glDestroyContext(context); + mContextSet.erase(context); +} + +void Display::notifyDeviceLost() +{ + for (ContextSet::iterator context = mContextSet.begin(); context != mContextSet.end(); context++) + { + (*context)->markContextLost(); + } + egl::error(EGL_CONTEXT_LOST); +} + +void Display::recreateSwapChains() +{ + for (SurfaceSet::iterator surface = mSurfaceSet.begin(); surface != mSurfaceSet.end(); surface++) + { + (*surface)->getSwapChain()->recreate(); + } +} + +bool Display::isInitialized() const +{ + return mRenderer != NULL && mConfigSet.size() > 0; +} + +bool Display::isValidConfig(EGLConfig config) +{ + return mConfigSet.get(config) != NULL; +} + +bool Display::isValidContext(gl::Context *context) +{ + return mContextSet.find(context) != mContextSet.end(); +} + +bool Display::isValidSurface(egl::Surface *surface) +{ + return mSurfaceSet.find(surface) != mSurfaceSet.end(); +} + +bool Display::hasExistingWindowSurface(HWND window) +{ + for (SurfaceSet::iterator surface = mSurfaceSet.begin(); surface != mSurfaceSet.end(); surface++) + { + if ((*surface)->getWindowHandle() == window) + { + return true; + } + } + + return false; +} + +void Display::initExtensionString() +{ + HMODULE swiftShader = GetModuleHandle(TEXT("swiftshader_d3d9.dll")); + bool shareHandleSupported = mRenderer->getShareHandleSupport(); + + mExtensionString = ""; + + // Multi-vendor (EXT) extensions + mExtensionString += "EGL_EXT_create_context_robustness "; + + // ANGLE-specific extensions + if (shareHandleSupported) + { + mExtensionString += "EGL_ANGLE_d3d_share_handle_client_buffer "; + } + + mExtensionString += "EGL_ANGLE_query_surface_pointer "; + + if (swiftShader) + { + mExtensionString += "EGL_ANGLE_software_display "; + } + + if (shareHandleSupported) + { + mExtensionString += "EGL_ANGLE_surface_d3d_texture_2d_share_handle "; + } + + if (mRenderer->getPostSubBufferSupport()) + { + mExtensionString += "EGL_NV_post_sub_buffer"; + } + + std::string::size_type end = mExtensionString.find_last_not_of(' '); + if (end != std::string::npos) + { + mExtensionString.resize(end+1); + } +} + +const char *Display::getExtensionString() const +{ + return mExtensionString.c_str(); +} + +void Display::initVendorString() +{ + mVendorString = "Google Inc."; + + LUID adapterLuid = {0}; + + if (mRenderer && mRenderer->getLUID(&adapterLuid)) + { + char adapterLuidString[64]; + sprintf_s(adapterLuidString, sizeof(adapterLuidString), " (adapter LUID: %08x%08x)", adapterLuid.HighPart, adapterLuid.LowPart); + + mVendorString += adapterLuidString; + } +} + +const char *Display::getVendorString() const +{ + return mVendorString.c_str(); +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libEGL/Display.h b/Source/ThirdParty/ANGLE/src/libEGL/Display.h new file mode 100644 index 00000000000..58c3940331b --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/Display.h @@ -0,0 +1,94 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Display.h: Defines the egl::Display class, representing the abstract +// display on which graphics are drawn. Implements EGLDisplay. +// [EGL 1.4] section 2.1.2 page 3. + +#ifndef LIBEGL_DISPLAY_H_ +#define LIBEGL_DISPLAY_H_ + +#include "common/system.h" + +#include +#include + +#include "libEGL/Config.h" + +namespace gl +{ +class Context; +} + +namespace egl +{ +class Surface; + +class Display +{ + public: + ~Display(); + + bool initialize(); + void terminate(); + + static egl::Display *getDisplay(EGLNativeDisplayType displayId); + + bool getConfigs(EGLConfig *configs, const EGLint *attribList, EGLint configSize, EGLint *numConfig); + bool getConfigAttrib(EGLConfig config, EGLint attribute, EGLint *value); + + EGLSurface createWindowSurface(HWND window, EGLConfig config, const EGLint *attribList); + EGLSurface createOffscreenSurface(EGLConfig config, HANDLE shareHandle, const EGLint *attribList); + EGLContext createContext(EGLConfig configHandle, const gl::Context *shareContext, bool notifyResets, bool robustAccess); + + void destroySurface(egl::Surface *surface); + void destroyContext(gl::Context *context); + + bool isInitialized() const; + bool isValidConfig(EGLConfig config); + bool isValidContext(gl::Context *context); + bool isValidSurface(egl::Surface *surface); + bool hasExistingWindowSurface(HWND window); + + rx::Renderer *getRenderer() { return mRenderer; }; + + // exported methods must be virtual + virtual void notifyDeviceLost(); + virtual void recreateSwapChains(); + + const char *getExtensionString() const; + const char *getVendorString() const; + + private: + DISALLOW_COPY_AND_ASSIGN(Display); + + Display(EGLNativeDisplayType displayId, HDC deviceContext); + + bool restoreLostDevice(); + + EGLNativeDisplayType mDisplayId; + const HDC mDc; + + bool mSoftwareDevice; + + typedef std::set SurfaceSet; + SurfaceSet mSurfaceSet; + + ConfigSet mConfigSet; + + typedef std::set ContextSet; + ContextSet mContextSet; + + rx::Renderer *mRenderer; + + void initExtensionString(); + void initVendorString(); + std::string mExtensionString; + std::string mVendorString; +}; +} + +#endif // LIBEGL_DISPLAY_H_ diff --git a/Source/ThirdParty/ANGLE/src/libEGL/README b/Source/ThirdParty/ANGLE/src/libEGL/README new file mode 100644 index 00000000000..e0f07c5684b --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/README @@ -0,0 +1 @@ +This directory's contents are not synced from the ANGLE project because no platform in WebKit needs them yet. diff --git a/Source/ThirdParty/ANGLE/src/libEGL/Surface.cpp b/Source/ThirdParty/ANGLE/src/libEGL/Surface.cpp new file mode 100644 index 00000000000..539c4c623d8 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/Surface.cpp @@ -0,0 +1,408 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Surface.cpp: Implements the egl::Surface class, representing a drawing surface +// such as the client area of a window, including any back buffers. +// Implements EGLSurface and related functionality. [EGL 1.4] section 2.2 page 3. + +#include + +#include "libEGL/Surface.h" + +#include "common/debug.h" +#include "libGLESv2/Texture.h" +#include "libGLESv2/renderer/SwapChain.h" +#include "libGLESv2/main.h" + +#include "libEGL/main.h" +#include "libEGL/Display.h" + +namespace egl +{ + +Surface::Surface(Display *display, const Config *config, HWND window, EGLint postSubBufferSupported) + : mDisplay(display), mConfig(config), mWindow(window), mPostSubBufferSupported(postSubBufferSupported) +{ + mRenderer = mDisplay->getRenderer(); + mSwapChain = NULL; + mShareHandle = NULL; + mTexture = NULL; + mTextureFormat = EGL_NO_TEXTURE; + mTextureTarget = EGL_NO_TEXTURE; + + mPixelAspectRatio = (EGLint)(1.0 * EGL_DISPLAY_SCALING); // FIXME: Determine actual pixel aspect ratio + mRenderBuffer = EGL_BACK_BUFFER; + mSwapBehavior = EGL_BUFFER_PRESERVED; + mSwapInterval = -1; + mWidth = -1; + mHeight = -1; + setSwapInterval(1); + + subclassWindow(); +} + +Surface::Surface(Display *display, const Config *config, HANDLE shareHandle, EGLint width, EGLint height, EGLenum textureFormat, EGLenum textureType) + : mDisplay(display), mWindow(NULL), mConfig(config), mShareHandle(shareHandle), mWidth(width), mHeight(height), mPostSubBufferSupported(EGL_FALSE) +{ + mRenderer = mDisplay->getRenderer(); + mSwapChain = NULL; + mWindowSubclassed = false; + mTexture = NULL; + mTextureFormat = textureFormat; + mTextureTarget = textureType; + + mPixelAspectRatio = (EGLint)(1.0 * EGL_DISPLAY_SCALING); // FIXME: Determine actual pixel aspect ratio + mRenderBuffer = EGL_BACK_BUFFER; + mSwapBehavior = EGL_BUFFER_PRESERVED; + mSwapInterval = -1; + setSwapInterval(1); +} + +Surface::~Surface() +{ + unsubclassWindow(); + release(); +} + +bool Surface::initialize() +{ + if (!resetSwapChain()) + return false; + + return true; +} + +void Surface::release() +{ + delete mSwapChain; + mSwapChain = NULL; + + if (mTexture) + { + mTexture->releaseTexImage(); + mTexture = NULL; + } +} + +bool Surface::resetSwapChain() +{ + ASSERT(!mSwapChain); + + int width; + int height; + + if (mWindow) + { + RECT windowRect; + if (!GetClientRect(getWindowHandle(), &windowRect)) + { + ASSERT(false); + + ERR("Could not retrieve the window dimensions"); + return error(EGL_BAD_SURFACE, false); + } + + width = windowRect.right - windowRect.left; + height = windowRect.bottom - windowRect.top; + } + else + { + // non-window surface - size is determined at creation + width = mWidth; + height = mHeight; + } + + mSwapChain = mRenderer->createSwapChain(mWindow, mShareHandle, + mConfig->mRenderTargetFormat, + mConfig->mDepthStencilFormat); + if (!mSwapChain) + { + return error(EGL_BAD_ALLOC, false); + } + + if (!resetSwapChain(width, height)) + { + delete mSwapChain; + mSwapChain = NULL; + return false; + } + + return true; +} + +bool Surface::resizeSwapChain(int backbufferWidth, int backbufferHeight) +{ + ASSERT(backbufferWidth >= 0 && backbufferHeight >= 0); + ASSERT(mSwapChain); + + EGLint status = mSwapChain->resize(backbufferWidth, backbufferHeight); + + if (status == EGL_CONTEXT_LOST) + { + mDisplay->notifyDeviceLost(); + return false; + } + else if (status != EGL_SUCCESS) + { + return error(status, false); + } + + mWidth = backbufferWidth; + mHeight = backbufferHeight; + + return true; +} + +bool Surface::resetSwapChain(int backbufferWidth, int backbufferHeight) +{ + ASSERT(backbufferWidth >= 0 && backbufferHeight >= 0); + ASSERT(mSwapChain); + + EGLint status = mSwapChain->reset(backbufferWidth, backbufferHeight, mSwapInterval); + + if (status == EGL_CONTEXT_LOST) + { + mRenderer->notifyDeviceLost(); + return false; + } + else if (status != EGL_SUCCESS) + { + return error(status, false); + } + + mWidth = backbufferWidth; + mHeight = backbufferHeight; + mSwapIntervalDirty = false; + + return true; +} + +bool Surface::swapRect(EGLint x, EGLint y, EGLint width, EGLint height) +{ + if (!mSwapChain) + { + return true; + } + + if (x + width > mWidth) + { + width = mWidth - x; + } + + if (y + height > mHeight) + { + height = mHeight - y; + } + + if (width == 0 || height == 0) + { + return true; + } + + EGLint status = mSwapChain->swapRect(x, y, width, height); + + if (status == EGL_CONTEXT_LOST) + { + mRenderer->notifyDeviceLost(); + return false; + } + else if (status != EGL_SUCCESS) + { + return error(status, false); + } + + checkForOutOfDateSwapChain(); + + return true; +} + +HWND Surface::getWindowHandle() +{ + return mWindow; +} + + +#define kSurfaceProperty _TEXT("Egl::SurfaceOwner") +#define kParentWndProc _TEXT("Egl::SurfaceParentWndProc") + +static LRESULT CALLBACK SurfaceWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) +{ + if (message == WM_SIZE) + { + Surface* surf = reinterpret_cast(GetProp(hwnd, kSurfaceProperty)); + if(surf) + { + surf->checkForOutOfDateSwapChain(); + } + } + WNDPROC prevWndFunc = reinterpret_cast(GetProp(hwnd, kParentWndProc)); + return CallWindowProc(prevWndFunc, hwnd, message, wparam, lparam); +} + +void Surface::subclassWindow() +{ + if (!mWindow) + { + return; + } + + DWORD processId; + DWORD threadId = GetWindowThreadProcessId(mWindow, &processId); + if (processId != GetCurrentProcessId() || threadId != GetCurrentThreadId()) + { + return; + } + + SetLastError(0); + LONG_PTR oldWndProc = SetWindowLongPtr(mWindow, GWLP_WNDPROC, reinterpret_cast(SurfaceWindowProc)); + if(oldWndProc == 0 && GetLastError() != ERROR_SUCCESS) + { + mWindowSubclassed = false; + return; + } + + SetProp(mWindow, kSurfaceProperty, reinterpret_cast(this)); + SetProp(mWindow, kParentWndProc, reinterpret_cast(oldWndProc)); + mWindowSubclassed = true; +} + +void Surface::unsubclassWindow() +{ + if(!mWindowSubclassed) + { + return; + } + + // un-subclass + LONG_PTR parentWndFunc = reinterpret_cast(GetProp(mWindow, kParentWndProc)); + + // Check the windowproc is still SurfaceWindowProc. + // If this assert fails, then it is likely the application has subclassed the + // hwnd as well and did not unsubclass before destroying its EGL context. The + // application should be modified to either subclass before initializing the + // EGL context, or to unsubclass before destroying the EGL context. + if(parentWndFunc) + { + LONG_PTR prevWndFunc = SetWindowLongPtr(mWindow, GWLP_WNDPROC, parentWndFunc); + ASSERT(prevWndFunc == reinterpret_cast(SurfaceWindowProc)); + } + + RemoveProp(mWindow, kSurfaceProperty); + RemoveProp(mWindow, kParentWndProc); + mWindowSubclassed = false; +} + +bool Surface::checkForOutOfDateSwapChain() +{ + RECT client; + if (!GetClientRect(getWindowHandle(), &client)) + { + ASSERT(false); + return false; + } + + // Grow the buffer now, if the window has grown. We need to grow now to avoid losing information. + int clientWidth = client.right - client.left; + int clientHeight = client.bottom - client.top; + bool sizeDirty = clientWidth != getWidth() || clientHeight != getHeight(); + + if (mSwapIntervalDirty) + { + resetSwapChain(clientWidth, clientHeight); + } + else if (sizeDirty) + { + resizeSwapChain(clientWidth, clientHeight); + } + + if (mSwapIntervalDirty || sizeDirty) + { + if (static_cast(getCurrentDrawSurface()) == this) + { + glMakeCurrent(glGetCurrentContext(), static_cast(getCurrentDisplay()), this); + } + + return true; + } + + return false; +} + +bool Surface::swap() +{ + return swapRect(0, 0, mWidth, mHeight); +} + +bool Surface::postSubBuffer(EGLint x, EGLint y, EGLint width, EGLint height) +{ + if (!mPostSubBufferSupported) + { + // Spec is not clear about how this should be handled. + return true; + } + + return swapRect(x, y, width, height); +} + +EGLint Surface::getWidth() const +{ + return mWidth; +} + +EGLint Surface::getHeight() const +{ + return mHeight; +} + +EGLint Surface::isPostSubBufferSupported() const +{ + return mPostSubBufferSupported; +} + +rx::SwapChain *Surface::getSwapChain() const +{ + return mSwapChain; +} + +void Surface::setSwapInterval(EGLint interval) +{ + if (mSwapInterval == interval) + { + return; + } + + mSwapInterval = interval; + mSwapInterval = std::max(mSwapInterval, mRenderer->getMinSwapInterval()); + mSwapInterval = std::min(mSwapInterval, mRenderer->getMaxSwapInterval()); + + mSwapIntervalDirty = true; +} + +EGLenum Surface::getTextureFormat() const +{ + return mTextureFormat; +} + +EGLenum Surface::getTextureTarget() const +{ + return mTextureTarget; +} + +void Surface::setBoundTexture(gl::Texture2D *texture) +{ + mTexture = texture; +} + +gl::Texture2D *Surface::getBoundTexture() const +{ + return mTexture; +} + +EGLenum Surface::getFormat() const +{ + return mConfig->mRenderTargetFormat; +} +} diff --git a/Source/ThirdParty/ANGLE/src/libEGL/Surface.h b/Source/ThirdParty/ANGLE/src/libEGL/Surface.h new file mode 100644 index 00000000000..938b800cdde --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/Surface.h @@ -0,0 +1,108 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Surface.h: Defines the egl::Surface class, representing a drawing surface +// such as the client area of a window, including any back buffers. +// Implements EGLSurface and related functionality. [EGL 1.4] section 2.2 page 3. + +#ifndef LIBEGL_SURFACE_H_ +#define LIBEGL_SURFACE_H_ + +#define EGLAPI +#include + +#include "common/angleutils.h" + +namespace gl +{ +class Texture2D; +} +namespace rx +{ +class Renderer; +class SwapChain; +} + +namespace egl +{ +class Display; +class Config; + +class Surface +{ + public: + Surface(Display *display, const egl::Config *config, HWND window, EGLint postSubBufferSupported); + Surface(Display *display, const egl::Config *config, HANDLE shareHandle, EGLint width, EGLint height, EGLenum textureFormat, EGLenum textureTarget); + + ~Surface(); + + bool initialize(); + void release(); + bool resetSwapChain(); + + HWND getWindowHandle(); + bool swap(); + bool postSubBuffer(EGLint x, EGLint y, EGLint width, EGLint height); + + virtual EGLint getWidth() const; + virtual EGLint getHeight() const; + + virtual EGLint isPostSubBufferSupported() const; + + virtual rx::SwapChain *getSwapChain() const; + + void setSwapInterval(EGLint interval); + bool checkForOutOfDateSwapChain(); // Returns true if swapchain changed due to resize or interval update + + virtual EGLenum getTextureFormat() const; + virtual EGLenum getTextureTarget() const; + virtual EGLenum getFormat() const; + + virtual void setBoundTexture(gl::Texture2D *texture); + virtual gl::Texture2D *getBoundTexture() const; + +private: + DISALLOW_COPY_AND_ASSIGN(Surface); + + Display *const mDisplay; + rx::Renderer *mRenderer; + + HANDLE mShareHandle; + rx::SwapChain *mSwapChain; + + void subclassWindow(); + void unsubclassWindow(); + bool resizeSwapChain(int backbufferWidth, int backbufferHeight); + bool resetSwapChain(int backbufferWidth, int backbufferHeight); + bool swapRect(EGLint x, EGLint y, EGLint width, EGLint height); + + const HWND mWindow; // Window that the surface is created for. + bool mWindowSubclassed; // Indicates whether we successfully subclassed mWindow for WM_RESIZE hooking + const egl::Config *mConfig; // EGL config surface was created with + EGLint mHeight; // Height of surface + EGLint mWidth; // Width of surface +// EGLint horizontalResolution; // Horizontal dot pitch +// EGLint verticalResolution; // Vertical dot pitch +// EGLBoolean largestPBuffer; // If true, create largest pbuffer possible +// EGLBoolean mipmapTexture; // True if texture has mipmaps +// EGLint mipmapLevel; // Mipmap level to render to +// EGLenum multisampleResolve; // Multisample resolve behavior + EGLint mPixelAspectRatio; // Display aspect ratio + EGLenum mRenderBuffer; // Render buffer + EGLenum mSwapBehavior; // Buffer swap behavior + EGLenum mTextureFormat; // Format of texture: RGB, RGBA, or no texture + EGLenum mTextureTarget; // Type of texture: 2D or no texture +// EGLenum vgAlphaFormat; // Alpha format for OpenVG +// EGLenum vgColorSpace; // Color space for OpenVG + EGLint mSwapInterval; + EGLint mPostSubBufferSupported; + + bool mSwapIntervalDirty; + gl::Texture2D *mTexture; +}; +} + +#endif // LIBEGL_SURFACE_H_ diff --git a/Source/ThirdParty/ANGLE/src/libEGL/libEGL.cpp b/Source/ThirdParty/ANGLE/src/libEGL/libEGL.cpp new file mode 100644 index 00000000000..bcba43f63a2 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/libEGL.cpp @@ -0,0 +1,1185 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// libEGL.cpp: Implements the exported EGL functions. + +#include + +#include "common/debug.h" +#include "common/version.h" +#include "libGLESv2/Context.h" +#include "libGLESv2/Texture.h" +#include "libGLESv2/main.h" +#include "libGLESv2/renderer/SwapChain.h" + +#include "libEGL/main.h" +#include "libEGL/Display.h" +#include "libEGL/Surface.h" + +bool validateDisplay(egl::Display *display) +{ + if (display == EGL_NO_DISPLAY) + { + return egl::error(EGL_BAD_DISPLAY, false); + } + + if (!display->isInitialized()) + { + return egl::error(EGL_NOT_INITIALIZED, false); + } + + return true; +} + +bool validateConfig(egl::Display *display, EGLConfig config) +{ + if (!validateDisplay(display)) + { + return false; + } + + if (!display->isValidConfig(config)) + { + return egl::error(EGL_BAD_CONFIG, false); + } + + return true; +} + +bool validateContext(egl::Display *display, gl::Context *context) +{ + if (!validateDisplay(display)) + { + return false; + } + + if (!display->isValidContext(context)) + { + return egl::error(EGL_BAD_CONTEXT, false); + } + + return true; +} + +bool validateSurface(egl::Display *display, egl::Surface *surface) +{ + if (!validateDisplay(display)) + { + return false; + } + + if (!display->isValidSurface(surface)) + { + return egl::error(EGL_BAD_SURFACE, false); + } + + return true; +} + +extern "C" +{ +EGLint __stdcall eglGetError(void) +{ + EVENT("()"); + + EGLint error = egl::getCurrentError(); + + if (error != EGL_SUCCESS) + { + egl::setCurrentError(EGL_SUCCESS); + } + + return error; +} + +EGLDisplay __stdcall eglGetDisplay(EGLNativeDisplayType display_id) +{ + EVENT("(EGLNativeDisplayType display_id = 0x%0.8p)", display_id); + + try + { + return egl::Display::getDisplay(display_id); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_NO_DISPLAY); + } +} + +EGLBoolean __stdcall eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLint *major = 0x%0.8p, EGLint *minor = 0x%0.8p)", + dpy, major, minor); + + try + { + if (dpy == EGL_NO_DISPLAY) + { + return egl::error(EGL_BAD_DISPLAY, EGL_FALSE); + } + + egl::Display *display = static_cast(dpy); + + if (!display->initialize()) + { + return egl::error(EGL_NOT_INITIALIZED, EGL_FALSE); + } + + if (major) *major = 1; + if (minor) *minor = 4; + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglTerminate(EGLDisplay dpy) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p)", dpy); + + try + { + if (dpy == EGL_NO_DISPLAY) + { + return egl::error(EGL_BAD_DISPLAY, EGL_FALSE); + } + + egl::Display *display = static_cast(dpy); + + display->terminate(); + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +const char *__stdcall eglQueryString(EGLDisplay dpy, EGLint name) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLint name = %d)", dpy, name); + + try + { + egl::Display *display = static_cast(dpy); + + if (!validateDisplay(display)) + { + return NULL; + } + + switch (name) + { + case EGL_CLIENT_APIS: + return egl::success("OpenGL_ES"); + case EGL_EXTENSIONS: + return egl::success(display->getExtensionString()); + case EGL_VENDOR: + return egl::success(display->getVendorString()); + case EGL_VERSION: + return egl::success("1.4 (ANGLE " VERSION_STRING ")"); + } + + return egl::error(EGL_BAD_PARAMETER, (const char*)NULL); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, (const char*)NULL); + } +} + +EGLBoolean __stdcall eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLConfig *configs = 0x%0.8p, " + "EGLint config_size = %d, EGLint *num_config = 0x%0.8p)", + dpy, configs, config_size, num_config); + + try + { + egl::Display *display = static_cast(dpy); + + if (!validateDisplay(display)) + { + return EGL_FALSE; + } + + if (!num_config) + { + return egl::error(EGL_BAD_PARAMETER, EGL_FALSE); + } + + const EGLint attribList[] = {EGL_NONE}; + + if (!display->getConfigs(configs, attribList, config_size, num_config)) + { + return egl::error(EGL_BAD_ATTRIBUTE, EGL_FALSE); + } + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, const EGLint *attrib_list = 0x%0.8p, " + "EGLConfig *configs = 0x%0.8p, EGLint config_size = %d, EGLint *num_config = 0x%0.8p)", + dpy, attrib_list, configs, config_size, num_config); + + try + { + egl::Display *display = static_cast(dpy); + + if (!validateDisplay(display)) + { + return EGL_FALSE; + } + + if (!num_config) + { + return egl::error(EGL_BAD_PARAMETER, EGL_FALSE); + } + + const EGLint attribList[] = {EGL_NONE}; + + if (!attrib_list) + { + attrib_list = attribList; + } + + display->getConfigs(configs, attrib_list, config_size, num_config); + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLConfig config = 0x%0.8p, EGLint attribute = %d, EGLint *value = 0x%0.8p)", + dpy, config, attribute, value); + + try + { + egl::Display *display = static_cast(dpy); + + if (!validateConfig(display, config)) + { + return EGL_FALSE; + } + + if (!display->getConfigAttrib(config, attribute, value)) + { + return egl::error(EGL_BAD_ATTRIBUTE, EGL_FALSE); + } + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLSurface __stdcall eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLConfig config = 0x%0.8p, EGLNativeWindowType win = 0x%0.8p, " + "const EGLint *attrib_list = 0x%0.8p)", dpy, config, win, attrib_list); + + try + { + egl::Display *display = static_cast(dpy); + + if (!validateConfig(display, config)) + { + return EGL_NO_SURFACE; + } + + HWND window = (HWND)win; + + if (!IsWindow(window)) + { + return egl::error(EGL_BAD_NATIVE_WINDOW, EGL_NO_SURFACE); + } + + return display->createWindowSurface(window, config, attrib_list); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_NO_SURFACE); + } +} + +EGLSurface __stdcall eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLConfig config = 0x%0.8p, const EGLint *attrib_list = 0x%0.8p)", + dpy, config, attrib_list); + + try + { + egl::Display *display = static_cast(dpy); + + if (!validateConfig(display, config)) + { + return EGL_NO_SURFACE; + } + + return display->createOffscreenSurface(config, NULL, attrib_list); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_NO_SURFACE); + } +} + +EGLSurface __stdcall eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLConfig config = 0x%0.8p, EGLNativePixmapType pixmap = 0x%0.8p, " + "const EGLint *attrib_list = 0x%0.8p)", dpy, config, pixmap, attrib_list); + + try + { + egl::Display *display = static_cast(dpy); + + if (!validateConfig(display, config)) + { + return EGL_NO_SURFACE; + } + + UNIMPLEMENTED(); // FIXME + + return egl::success(EGL_NO_SURFACE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_NO_SURFACE); + } +} + +EGLBoolean __stdcall eglDestroySurface(EGLDisplay dpy, EGLSurface surface) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLSurface surface = 0x%0.8p)", dpy, surface); + + try + { + egl::Display *display = static_cast(dpy); + egl::Surface *eglSurface = static_cast(surface); + + if (!validateSurface(display, eglSurface)) + { + return EGL_FALSE; + } + + if (surface == EGL_NO_SURFACE) + { + return egl::error(EGL_BAD_SURFACE, EGL_FALSE); + } + + display->destroySurface((egl::Surface*)surface); + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLSurface surface = 0x%0.8p, EGLint attribute = %d, EGLint *value = 0x%0.8p)", + dpy, surface, attribute, value); + + try + { + egl::Display *display = static_cast(dpy); + egl::Surface *eglSurface = (egl::Surface*)surface; + + if (!validateSurface(display, eglSurface)) + { + return EGL_FALSE; + } + + if (surface == EGL_NO_SURFACE) + { + return egl::error(EGL_BAD_SURFACE, EGL_FALSE); + } + + switch (attribute) + { + case EGL_VG_ALPHA_FORMAT: + UNIMPLEMENTED(); // FIXME + break; + case EGL_VG_COLORSPACE: + UNIMPLEMENTED(); // FIXME + break; + case EGL_CONFIG_ID: + UNIMPLEMENTED(); // FIXME + break; + case EGL_HEIGHT: + *value = eglSurface->getHeight(); + break; + case EGL_HORIZONTAL_RESOLUTION: + UNIMPLEMENTED(); // FIXME + break; + case EGL_LARGEST_PBUFFER: + UNIMPLEMENTED(); // FIXME + break; + case EGL_MIPMAP_TEXTURE: + UNIMPLEMENTED(); // FIXME + break; + case EGL_MIPMAP_LEVEL: + UNIMPLEMENTED(); // FIXME + break; + case EGL_MULTISAMPLE_RESOLVE: + UNIMPLEMENTED(); // FIXME + break; + case EGL_PIXEL_ASPECT_RATIO: + UNIMPLEMENTED(); // FIXME + break; + case EGL_RENDER_BUFFER: + UNIMPLEMENTED(); // FIXME + break; + case EGL_SWAP_BEHAVIOR: + UNIMPLEMENTED(); // FIXME + break; + case EGL_TEXTURE_FORMAT: + UNIMPLEMENTED(); // FIXME + break; + case EGL_TEXTURE_TARGET: + UNIMPLEMENTED(); // FIXME + break; + case EGL_VERTICAL_RESOLUTION: + UNIMPLEMENTED(); // FIXME + break; + case EGL_WIDTH: + *value = eglSurface->getWidth(); + break; + case EGL_POST_SUB_BUFFER_SUPPORTED_NV: + *value = eglSurface->isPostSubBufferSupported(); + break; + default: + return egl::error(EGL_BAD_ATTRIBUTE, EGL_FALSE); + } + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglQuerySurfacePointerANGLE(EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value) +{ + TRACE("(EGLDisplay dpy = 0x%0.8p, EGLSurface surface = 0x%0.8p, EGLint attribute = %d, void **value = 0x%0.8p)", + dpy, surface, attribute, value); + + try + { + egl::Display *display = static_cast(dpy); + egl::Surface *eglSurface = (egl::Surface*)surface; + + if (!validateSurface(display, eglSurface)) + { + return EGL_FALSE; + } + + if (surface == EGL_NO_SURFACE) + { + return egl::error(EGL_BAD_SURFACE, EGL_FALSE); + } + + switch (attribute) + { + case EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE: + { + rx::SwapChain *swapchain = eglSurface->getSwapChain(); + *value = (void*) (swapchain ? swapchain->getShareHandle() : NULL); + } + break; + default: + return egl::error(EGL_BAD_ATTRIBUTE, EGL_FALSE); + } + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglBindAPI(EGLenum api) +{ + EVENT("(EGLenum api = 0x%X)", api); + + try + { + switch (api) + { + case EGL_OPENGL_API: + case EGL_OPENVG_API: + return egl::error(EGL_BAD_PARAMETER, EGL_FALSE); // Not supported by this implementation + case EGL_OPENGL_ES_API: + break; + default: + return egl::error(EGL_BAD_PARAMETER, EGL_FALSE); + } + + egl::setCurrentAPI(api); + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLenum __stdcall eglQueryAPI(void) +{ + EVENT("()"); + + try + { + EGLenum API = egl::getCurrentAPI(); + + return egl::success(API); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglWaitClient(void) +{ + EVENT("()"); + + try + { + UNIMPLEMENTED(); // FIXME + + return egl::success(0); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglReleaseThread(void) +{ + EVENT("()"); + + try + { + eglMakeCurrent(EGL_NO_DISPLAY, EGL_NO_CONTEXT, EGL_NO_SURFACE, EGL_NO_SURFACE); + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLSurface __stdcall eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLenum buftype = 0x%X, EGLClientBuffer buffer = 0x%0.8p, " + "EGLConfig config = 0x%0.8p, const EGLint *attrib_list = 0x%0.8p)", + dpy, buftype, buffer, config, attrib_list); + + try + { + egl::Display *display = static_cast(dpy); + + if (!validateConfig(display, config)) + { + return EGL_NO_SURFACE; + } + + if (buftype != EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE || !buffer) + { + return egl::error(EGL_BAD_PARAMETER, EGL_NO_SURFACE); + } + + return display->createOffscreenSurface(config, (HANDLE)buffer, attrib_list); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_NO_SURFACE); + } +} + +EGLBoolean __stdcall eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLSurface surface = 0x%0.8p, EGLint attribute = %d, EGLint value = %d)", + dpy, surface, attribute, value); + + try + { + egl::Display *display = static_cast(dpy); + egl::Surface *eglSurface = static_cast(surface); + + if (!validateSurface(display, eglSurface)) + { + return EGL_FALSE; + } + + UNIMPLEMENTED(); // FIXME + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLSurface surface = 0x%0.8p, EGLint buffer = %d)", dpy, surface, buffer); + + try + { + egl::Display *display = static_cast(dpy); + egl::Surface *eglSurface = static_cast(surface); + + if (!validateSurface(display, eglSurface)) + { + return EGL_FALSE; + } + + if (buffer != EGL_BACK_BUFFER) + { + return egl::error(EGL_BAD_PARAMETER, EGL_FALSE); + } + + if (surface == EGL_NO_SURFACE || eglSurface->getWindowHandle()) + { + return egl::error(EGL_BAD_SURFACE, EGL_FALSE); + } + + if (eglSurface->getBoundTexture()) + { + return egl::error(EGL_BAD_ACCESS, EGL_FALSE); + } + + if (eglSurface->getTextureFormat() == EGL_NO_TEXTURE) + { + return egl::error(EGL_BAD_MATCH, EGL_FALSE); + } + + if (!glBindTexImage(eglSurface)) + { + return egl::error(EGL_BAD_MATCH, EGL_FALSE); + } + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLSurface surface = 0x%0.8p, EGLint buffer = %d)", dpy, surface, buffer); + + try + { + egl::Display *display = static_cast(dpy); + egl::Surface *eglSurface = static_cast(surface); + + if (!validateSurface(display, eglSurface)) + { + return EGL_FALSE; + } + + if (buffer != EGL_BACK_BUFFER) + { + return egl::error(EGL_BAD_PARAMETER, EGL_FALSE); + } + + if (surface == EGL_NO_SURFACE || eglSurface->getWindowHandle()) + { + return egl::error(EGL_BAD_SURFACE, EGL_FALSE); + } + + if (eglSurface->getTextureFormat() == EGL_NO_TEXTURE) + { + return egl::error(EGL_BAD_MATCH, EGL_FALSE); + } + + gl::Texture2D *texture = eglSurface->getBoundTexture(); + + if (texture) + { + texture->releaseTexImage(); + } + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglSwapInterval(EGLDisplay dpy, EGLint interval) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLint interval = %d)", dpy, interval); + + try + { + egl::Display *display = static_cast(dpy); + + if (!validateDisplay(display)) + { + return EGL_FALSE; + } + + egl::Surface *draw_surface = static_cast(egl::getCurrentDrawSurface()); + + if (draw_surface == NULL) + { + return egl::error(EGL_BAD_SURFACE, EGL_FALSE); + } + + draw_surface->setSwapInterval(interval); + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLContext __stdcall eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLConfig config = 0x%0.8p, EGLContext share_context = 0x%0.8p, " + "const EGLint *attrib_list = 0x%0.8p)", dpy, config, share_context, attrib_list); + + try + { + // Get the requested client version (default is 1) and check it is two. + EGLint client_version = 1; + bool reset_notification = false; + bool robust_access = false; + + if (attrib_list) + { + for (const EGLint* attribute = attrib_list; attribute[0] != EGL_NONE; attribute += 2) + { + switch (attribute[0]) + { + case EGL_CONTEXT_CLIENT_VERSION: + client_version = attribute[1]; + break; + case EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT: + if (attribute[1] == EGL_TRUE) + { + return egl::error(EGL_BAD_CONFIG, EGL_NO_CONTEXT); // Unimplemented + // robust_access = true; + } + else if (attribute[1] != EGL_FALSE) + return egl::error(EGL_BAD_ATTRIBUTE, EGL_NO_CONTEXT); + break; + case EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT: + if (attribute[1] == EGL_LOSE_CONTEXT_ON_RESET_EXT) + reset_notification = true; + else if (attribute[1] != EGL_NO_RESET_NOTIFICATION_EXT) + return egl::error(EGL_BAD_ATTRIBUTE, EGL_NO_CONTEXT); + break; + default: + return egl::error(EGL_BAD_ATTRIBUTE, EGL_NO_CONTEXT); + } + } + } + + if (client_version != 2) + { + return egl::error(EGL_BAD_CONFIG, EGL_NO_CONTEXT); + } + + if (share_context && static_cast(share_context)->isResetNotificationEnabled() != reset_notification) + { + return egl::error(EGL_BAD_MATCH, EGL_NO_CONTEXT); + } + + egl::Display *display = static_cast(dpy); + + if (!validateConfig(display, config)) + { + return EGL_NO_CONTEXT; + } + + EGLContext context = display->createContext(config, static_cast(share_context), reset_notification, robust_access); + + if (context) + return egl::success(context); + else + return egl::error(EGL_CONTEXT_LOST, EGL_NO_CONTEXT); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_NO_CONTEXT); + } +} + +EGLBoolean __stdcall eglDestroyContext(EGLDisplay dpy, EGLContext ctx) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLContext ctx = 0x%0.8p)", dpy, ctx); + + try + { + egl::Display *display = static_cast(dpy); + gl::Context *context = static_cast(ctx); + + if (!validateContext(display, context)) + { + return EGL_FALSE; + } + + if (ctx == EGL_NO_CONTEXT) + { + return egl::error(EGL_BAD_CONTEXT, EGL_FALSE); + } + + display->destroyContext(context); + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLSurface draw = 0x%0.8p, EGLSurface read = 0x%0.8p, EGLContext ctx = 0x%0.8p)", + dpy, draw, read, ctx); + + try + { + egl::Display *display = static_cast(dpy); + gl::Context *context = static_cast(ctx); + + if (ctx != EGL_NO_CONTEXT && !validateContext(display, context)) + { + return EGL_FALSE; + } + + rx::Renderer *renderer = display->getRenderer(); + if (renderer->testDeviceLost(true)) + { + return EGL_FALSE; + } + + if (renderer->isDeviceLost()) + { + return egl::error(EGL_CONTEXT_LOST, EGL_FALSE); + } + + if ((draw != EGL_NO_SURFACE && !validateSurface(display, static_cast(draw))) || + (read != EGL_NO_SURFACE && !validateSurface(display, static_cast(read)))) + { + return EGL_FALSE; + } + + if (draw != read) + { + UNIMPLEMENTED(); // FIXME + } + + egl::setCurrentDisplay(dpy); + egl::setCurrentDrawSurface(draw); + egl::setCurrentReadSurface(read); + + glMakeCurrent(context, display, static_cast(draw)); + + return egl::success(EGL_TRUE); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLContext __stdcall eglGetCurrentContext(void) +{ + EVENT("()"); + + try + { + EGLContext context = glGetCurrentContext(); + + return egl::success(context); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_NO_CONTEXT); + } +} + +EGLSurface __stdcall eglGetCurrentSurface(EGLint readdraw) +{ + EVENT("(EGLint readdraw = %d)", readdraw); + + try + { + if (readdraw == EGL_READ) + { + EGLSurface read = egl::getCurrentReadSurface(); + return egl::success(read); + } + else if (readdraw == EGL_DRAW) + { + EGLSurface draw = egl::getCurrentDrawSurface(); + return egl::success(draw); + } + else + { + return egl::error(EGL_BAD_PARAMETER, EGL_NO_SURFACE); + } + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_NO_SURFACE); + } +} + +EGLDisplay __stdcall eglGetCurrentDisplay(void) +{ + EVENT("()"); + + try + { + EGLDisplay dpy = egl::getCurrentDisplay(); + + return egl::success(dpy); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_NO_DISPLAY); + } +} + +EGLBoolean __stdcall eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLContext ctx = 0x%0.8p, EGLint attribute = %d, EGLint *value = 0x%0.8p)", + dpy, ctx, attribute, value); + + try + { + egl::Display *display = static_cast(dpy); + gl::Context *context = static_cast(ctx); + + if (!validateContext(display, context)) + { + return EGL_FALSE; + } + + UNIMPLEMENTED(); // FIXME + + return egl::success(0); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglWaitGL(void) +{ + EVENT("()"); + + try + { + UNIMPLEMENTED(); // FIXME + + return egl::success(0); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglWaitNative(EGLint engine) +{ + EVENT("(EGLint engine = %d)", engine); + + try + { + UNIMPLEMENTED(); // FIXME + + return egl::success(0); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglSwapBuffers(EGLDisplay dpy, EGLSurface surface) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLSurface surface = 0x%0.8p)", dpy, surface); + + try + { + egl::Display *display = static_cast(dpy); + egl::Surface *eglSurface = (egl::Surface*)surface; + + if (!validateSurface(display, eglSurface)) + { + return EGL_FALSE; + } + + if (display->getRenderer()->isDeviceLost()) + { + return egl::error(EGL_CONTEXT_LOST, EGL_FALSE); + } + + if (surface == EGL_NO_SURFACE) + { + return egl::error(EGL_BAD_SURFACE, EGL_FALSE); + } + + if (eglSurface->swap()) + { + return egl::success(EGL_TRUE); + } + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } + + return EGL_FALSE; +} + +EGLBoolean __stdcall eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLSurface surface = 0x%0.8p, EGLNativePixmapType target = 0x%0.8p)", dpy, surface, target); + + try + { + egl::Display *display = static_cast(dpy); + egl::Surface *eglSurface = static_cast(surface); + + if (!validateSurface(display, eglSurface)) + { + return EGL_FALSE; + } + + if (display->getRenderer()->isDeviceLost()) + { + return egl::error(EGL_CONTEXT_LOST, EGL_FALSE); + } + + UNIMPLEMENTED(); // FIXME + + return egl::success(0); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } +} + +EGLBoolean __stdcall eglPostSubBufferNV(EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height) +{ + EVENT("(EGLDisplay dpy = 0x%0.8p, EGLSurface surface = 0x%0.8p, EGLint x = %d, EGLint y = %d, EGLint width = %d, EGLint height = %d)", dpy, surface, x, y, width, height); + + try + { + if (x < 0 || y < 0 || width < 0 || height < 0) + { + return egl::error(EGL_BAD_PARAMETER, EGL_FALSE); + } + + egl::Display *display = static_cast(dpy); + egl::Surface *eglSurface = static_cast(surface); + + if (!validateSurface(display, eglSurface)) + { + return EGL_FALSE; + } + + if (display->getRenderer()->isDeviceLost()) + { + return egl::error(EGL_CONTEXT_LOST, EGL_FALSE); + } + + if (surface == EGL_NO_SURFACE) + { + return egl::error(EGL_BAD_SURFACE, EGL_FALSE); + } + + if (eglSurface->postSubBuffer(x, y, width, height)) + { + return egl::success(EGL_TRUE); + } + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, EGL_FALSE); + } + + return EGL_FALSE; +} + +__eglMustCastToProperFunctionPointerType __stdcall eglGetProcAddress(const char *procname) +{ + EVENT("(const char *procname = \"%s\")", procname); + + try + { + struct Extension + { + const char *name; + __eglMustCastToProperFunctionPointerType address; + }; + + static const Extension eglExtensions[] = + { + {"eglQuerySurfacePointerANGLE", (__eglMustCastToProperFunctionPointerType)eglQuerySurfacePointerANGLE}, + {"eglPostSubBufferNV", (__eglMustCastToProperFunctionPointerType)eglPostSubBufferNV}, + {"", NULL}, + }; + + for (unsigned int ext = 0; ext < ArraySize(eglExtensions); ext++) + { + if (strcmp(procname, eglExtensions[ext].name) == 0) + { + return (__eglMustCastToProperFunctionPointerType)eglExtensions[ext].address; + } + } + + return glGetProcAddress(procname); + } + catch(std::bad_alloc&) + { + return egl::error(EGL_BAD_ALLOC, (__eglMustCastToProperFunctionPointerType)NULL); + } +} +} diff --git a/Source/ThirdParty/ANGLE/src/libEGL/libEGL.def b/Source/ThirdParty/ANGLE/src/libEGL/libEGL.def new file mode 100644 index 00000000000..71a5e679770 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/libEGL.def @@ -0,0 +1,36 @@ +LIBRARY libEGL +EXPORTS + eglBindAPI @14 + eglBindTexImage @20 + eglChooseConfig @7 + eglCopyBuffers @33 + eglCreateContext @23 + eglCreatePbufferFromClientBuffer @18 + eglCreatePbufferSurface @10 + eglCreatePixmapSurface @11 + eglCreateWindowSurface @9 + eglDestroyContext @24 + eglDestroySurface @12 + eglGetConfigAttrib @8 + eglGetConfigs @6 + eglGetCurrentContext @26 + eglGetCurrentDisplay @28 + eglGetCurrentSurface @27 + eglGetDisplay @2 + eglGetError @1 + eglGetProcAddress @34 + eglInitialize @3 + eglMakeCurrent @25 + eglQueryAPI @15 + eglQueryContext @29 + eglQueryString @5 + eglQuerySurface @13 + eglReleaseTexImage @21 + eglReleaseThread @17 + eglSurfaceAttrib @19 + eglSwapBuffers @32 + eglSwapInterval @22 + eglTerminate @4 + eglWaitClient @16 + eglWaitGL @30 + eglWaitNative @31 \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libEGL/libEGL.rc b/Source/ThirdParty/ANGLE/src/libEGL/libEGL.rc new file mode 100644 index 00000000000..5d1f32f1c94 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/libEGL.rc @@ -0,0 +1,102 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include +#include "../common/version.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "#include ""../common/version.h""\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION + PRODUCTVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "FileDescription", "ANGLE libEGL Dynamic Link Library" + VALUE "FileVersion", VERSION_STRING + VALUE "InternalName", "libEGL" + VALUE "LegalCopyright", "Copyright (C) 2011 Google Inc." + VALUE "OriginalFilename", "libEGL.dll" + VALUE "PrivateBuild", VERSION_STRING + VALUE "ProductName", "ANGLE libEGL Dynamic Link Library" + VALUE "ProductVersion", VERSION_STRING + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/Source/ThirdParty/ANGLE/src/libEGL/libEGL.vcxproj b/Source/ThirdParty/ANGLE/src/libEGL/libEGL.vcxproj new file mode 100644 index 00000000000..7b25213057a --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/libEGL.vcxproj @@ -0,0 +1,258 @@ +锘 + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6} + libEGL + Win32Proj + + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(LibraryPath) + $(DXSDK_DIR)\lib\x86;$(LibraryPath) + $(LibraryPath) + $(LibraryPath) + $(DXSDK_DIR)\include;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include; + + + + Disabled + $(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBEGL_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + + + Level4 + true + EditAndContinue + 4100;4127;4189;4239;4244;4245;4512;4702;%(DisableSpecificWarnings) + + + d3d9.lib;%(AdditionalDependencies) + libEGL.def + %(DelayLoadDLLs) + true + Windows + + + MachineX86 + + + %40echo on +mkdir "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libEGL.dll" "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libEGL.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" +%40echo off + + + + + + MaxSpeed + AnySuitable + $(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + ANGLE_DISABLE_TRACE;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBEGL_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions) + MultiThreaded + + + Level4 + true + ProgramDatabase + 4100;4127;4189;4239;4244;4245;4512;4702;%(DisableSpecificWarnings) + + + d3d9.lib;%(AdditionalDependencies) + libEGL.def + %(DelayLoadDLLs) + true + Windows + true + true + + + MachineX86 + + + %40echo on +mkdir "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libEGL.dll" "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libEGL.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" +%40echo off + + + + + + X64 + + + Disabled + $(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBEGL_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + + + Level4 + 4100;4127;4189;4239;4244;4245;4512;4702;%(DisableSpecificWarnings) + ProgramDatabase + true + + + d3d9.lib;%(AdditionalDependencies) + libEGL.def + %(DelayLoadDLLs) + true + Windows + + + MachineX64 + + + %40echo on +mkdir "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libEGL.dll" "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libEGL.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" +%40echo off + + + + + + X64 + + + MaxSpeed + AnySuitable + $(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBEGL_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions) + MultiThreaded + + + Level4 + 4100;4127;4189;4239;4244;4245;4512;4702;%(DisableSpecificWarnings) + ProgramDatabase + true + + + d3d9.lib;%(AdditionalDependencies) + libEGL.def + %(DelayLoadDLLs) + true + Windows + true + true + + + MachineX64 + + + %40echo on +mkdir "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libEGL.dll" "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libEGL.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" +%40echo off + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {b5871a7a-968c-42e3-a33b-981e6f448e78} + + + + + + \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libEGL/libEGL.vcxproj.filters b/Source/ThirdParty/ANGLE/src/libEGL/libEGL.vcxproj.filters new file mode 100644 index 00000000000..e78b94fc475 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/libEGL.vcxproj.filters @@ -0,0 +1,68 @@ +锘 + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + + + + + \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libEGL/main.cpp b/Source/ThirdParty/ANGLE/src/libEGL/main.cpp new file mode 100644 index 00000000000..424ec3fcd1d --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/main.cpp @@ -0,0 +1,166 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// main.cpp: DLL entry point and management of thread-local data. + +#include "libEGL/main.h" + +#include "common/debug.h" + +static DWORD currentTLS = TLS_OUT_OF_INDEXES; + +extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) +{ + switch (reason) + { + case DLL_PROCESS_ATTACH: + { +#if !defined(ANGLE_DISABLE_TRACE) + FILE *debug = fopen(TRACE_OUTPUT_FILE, "rt"); + + if (debug) + { + fclose(debug); + debug = fopen(TRACE_OUTPUT_FILE, "wt"); // Erase + + if (debug) + { + fclose(debug); + } + } +#endif + + currentTLS = TlsAlloc(); + + if (currentTLS == TLS_OUT_OF_INDEXES) + { + return FALSE; + } + } + // Fall throught to initialize index + case DLL_THREAD_ATTACH: + { + egl::Current *current = (egl::Current*)LocalAlloc(LPTR, sizeof(egl::Current)); + + if (current) + { + TlsSetValue(currentTLS, current); + + current->error = EGL_SUCCESS; + current->API = EGL_OPENGL_ES_API; + current->display = EGL_NO_DISPLAY; + current->drawSurface = EGL_NO_SURFACE; + current->readSurface = EGL_NO_SURFACE; + } + } + break; + case DLL_THREAD_DETACH: + { + void *current = TlsGetValue(currentTLS); + + if (current) + { + LocalFree((HLOCAL)current); + } + } + break; + case DLL_PROCESS_DETACH: + { + void *current = TlsGetValue(currentTLS); + + if (current) + { + LocalFree((HLOCAL)current); + } + + TlsFree(currentTLS); + } + break; + default: + break; + } + + return TRUE; +} + +namespace egl +{ +void setCurrentError(EGLint error) +{ + Current *current = (Current*)TlsGetValue(currentTLS); + + current->error = error; +} + +EGLint getCurrentError() +{ + Current *current = (Current*)TlsGetValue(currentTLS); + + return current->error; +} + +void setCurrentAPI(EGLenum API) +{ + Current *current = (Current*)TlsGetValue(currentTLS); + + current->API = API; +} + +EGLenum getCurrentAPI() +{ + Current *current = (Current*)TlsGetValue(currentTLS); + + return current->API; +} + +void setCurrentDisplay(EGLDisplay dpy) +{ + Current *current = (Current*)TlsGetValue(currentTLS); + + current->display = dpy; +} + +EGLDisplay getCurrentDisplay() +{ + Current *current = (Current*)TlsGetValue(currentTLS); + + return current->display; +} + +void setCurrentDrawSurface(EGLSurface surface) +{ + Current *current = (Current*)TlsGetValue(currentTLS); + + current->drawSurface = surface; +} + +EGLSurface getCurrentDrawSurface() +{ + Current *current = (Current*)TlsGetValue(currentTLS); + + return current->drawSurface; +} + +void setCurrentReadSurface(EGLSurface surface) +{ + Current *current = (Current*)TlsGetValue(currentTLS); + + current->readSurface = surface; +} + +EGLSurface getCurrentReadSurface() +{ + Current *current = (Current*)TlsGetValue(currentTLS); + + return current->readSurface; +} + +void error(EGLint errorCode) +{ + egl::setCurrentError(errorCode); +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libEGL/main.h b/Source/ThirdParty/ANGLE/src/libEGL/main.h new file mode 100644 index 00000000000..77da8f0f8e7 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/main.h @@ -0,0 +1,62 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// main.h: Management of thread-local data. + +#ifndef LIBEGL_MAIN_H_ +#define LIBEGL_MAIN_H_ + +#define EGLAPI +#include +#include + +namespace egl +{ +struct Current +{ + EGLint error; + EGLenum API; + EGLDisplay display; + EGLSurface drawSurface; + EGLSurface readSurface; +}; + +void setCurrentError(EGLint error); +EGLint getCurrentError(); + +void setCurrentAPI(EGLenum API); +EGLenum getCurrentAPI(); + +void setCurrentDisplay(EGLDisplay dpy); +EGLDisplay getCurrentDisplay(); + +void setCurrentDrawSurface(EGLSurface surface); +EGLSurface getCurrentDrawSurface(); + +void setCurrentReadSurface(EGLSurface surface); +EGLSurface getCurrentReadSurface(); + +void error(EGLint errorCode); + +template +const T &error(EGLint errorCode, const T &returnValue) +{ + error(errorCode); + + return returnValue; +} + +template +const T &success(const T &returnValue) +{ + egl::setCurrentError(EGL_SUCCESS); + + return returnValue; +} + +} + +#endif // LIBEGL_MAIN_H_ diff --git a/Source/ThirdParty/ANGLE/src/libEGL/resource.h b/Source/ThirdParty/ANGLE/src/libEGL/resource.h new file mode 100644 index 00000000000..3921f4c0774 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/resource.h @@ -0,0 +1,14 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by libEGL.rc + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/BinaryStream.h b/Source/ThirdParty/ANGLE/src/libGLESv2/BinaryStream.h new file mode 100644 index 00000000000..21c2f86ce82 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/BinaryStream.h @@ -0,0 +1,164 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// BinaryStream.h: Provides binary serialization of simple types. + +#ifndef LIBGLESV2_BINARYSTREAM_H_ +#define LIBGLESV2_BINARYSTREAM_H_ + +#include "common/angleutils.h" + +namespace gl +{ + +class BinaryInputStream +{ + public: + BinaryInputStream(const void *data, size_t length) + { + mError = false; + mOffset = 0; + mData = static_cast(data); + mLength = length; + } + + template + void read(T *v, size_t num) + { + union + { + T dummy; // Compilation error for non-trivial types + } dummy; + (void) dummy; + + if (mError) + { + return; + } + + size_t length = num * sizeof(T); + + if (mOffset + length > mLength) + { + mError = true; + return; + } + + memcpy(v, mData + mOffset, length); + mOffset += length; + } + + template + void read(T * v) + { + read(v, 1); + } + + void read(std::string *v) + { + size_t length; + read(&length); + + if (mError) + { + return; + } + + if (mOffset + length > mLength) + { + mError = true; + return; + } + + v->assign(mData + mOffset, length); + mOffset += length; + } + + void skip(size_t length) + { + if (mOffset + length > mLength) + { + mError = true; + return; + } + + mOffset += length; + } + + size_t offset() const + { + return mOffset; + } + + bool error() const + { + return mError; + } + + bool endOfStream() const + { + return mOffset == mLength; + } + + private: + DISALLOW_COPY_AND_ASSIGN(BinaryInputStream); + bool mError; + size_t mOffset; + const char *mData; + size_t mLength; +}; + +class BinaryOutputStream +{ + public: + BinaryOutputStream() + { + } + + template + void write(const T *v, size_t num) + { + union + { + T dummy; // Compilation error for non-trivial types + } dummy; + (void) dummy; + + const char *asBytes = reinterpret_cast(v); + mData.insert(mData.end(), asBytes, asBytes + num * sizeof(T)); + } + + template + void write(const T &v) + { + write(&v, 1); + } + + void write(const std::string &v) + { + size_t length = v.length(); + write(length); + + write(v.c_str(), length); + } + + size_t length() const + { + return mData.size(); + } + + const void* data() const + { + return mData.size() ? &mData[0] : NULL; + } + + private: + DISALLOW_COPY_AND_ASSIGN(BinaryOutputStream); + std::vector mData; +}; +} + +#endif // LIBGLESV2_BINARYSTREAM_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Buffer.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/Buffer.cpp new file mode 100644 index 00000000000..8d5b4ef2a13 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Buffer.cpp @@ -0,0 +1,119 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Buffer.cpp: Implements the gl::Buffer class, representing storage of vertex and/or +// index data. Implements GL buffer objects and related functionality. +// [OpenGL ES 2.0.24] section 2.9 page 21. + +#include "libGLESv2/Buffer.h" + +#include "libGLESv2/renderer/VertexBuffer.h" +#include "libGLESv2/renderer/IndexBuffer.h" +#include "libGLESv2/renderer/BufferStorage.h" +#include "libGLESv2/renderer/Renderer.h" + +namespace gl +{ + +Buffer::Buffer(rx::Renderer *renderer, GLuint id) : RefCountObject(id) +{ + mRenderer = renderer; + mUsage = GL_DYNAMIC_DRAW; + + mBufferStorage = renderer->createBufferStorage(); + mStaticVertexBuffer = NULL; + mStaticIndexBuffer = NULL; + mUnmodifiedDataUse = 0; +} + +Buffer::~Buffer() +{ + delete mBufferStorage; + delete mStaticVertexBuffer; + delete mStaticIndexBuffer; +} + +void Buffer::bufferData(const void *data, GLsizeiptr size, GLenum usage) +{ + mBufferStorage->clear(); + mBufferStorage->setData(data, size, 0); + + mUsage = usage; + + invalidateStaticData(); + + if (usage == GL_STATIC_DRAW) + { + mStaticVertexBuffer = new rx::StaticVertexBufferInterface(mRenderer); + mStaticIndexBuffer = new rx::StaticIndexBufferInterface(mRenderer); + } +} + +void Buffer::bufferSubData(const void *data, GLsizeiptr size, GLintptr offset) +{ + mBufferStorage->setData(data, size, offset); + + if ((mStaticVertexBuffer && mStaticVertexBuffer->getBufferSize() != 0) || (mStaticIndexBuffer && mStaticIndexBuffer->getBufferSize() != 0)) + { + invalidateStaticData(); + } + + mUnmodifiedDataUse = 0; +} + +rx::BufferStorage *Buffer::getStorage() const +{ + return mBufferStorage; +} + +unsigned int Buffer::size() +{ + return mBufferStorage->getSize(); +} + +GLenum Buffer::usage() const +{ + return mUsage; +} + +rx::StaticVertexBufferInterface *Buffer::getStaticVertexBuffer() +{ + return mStaticVertexBuffer; +} + +rx::StaticIndexBufferInterface *Buffer::getStaticIndexBuffer() +{ + return mStaticIndexBuffer; +} + +void Buffer::invalidateStaticData() +{ + delete mStaticVertexBuffer; + mStaticVertexBuffer = NULL; + + delete mStaticIndexBuffer; + mStaticIndexBuffer = NULL; + + mUnmodifiedDataUse = 0; +} + +// Creates static buffers if sufficient used data has been left unmodified +void Buffer::promoteStaticUsage(int dataSize) +{ + if (!mStaticVertexBuffer && !mStaticIndexBuffer) + { + mUnmodifiedDataUse += dataSize; + + if (mUnmodifiedDataUse > 3 * mBufferStorage->getSize()) + { + mStaticVertexBuffer = new rx::StaticVertexBufferInterface(mRenderer); + mStaticIndexBuffer = new rx::StaticIndexBufferInterface(mRenderer); + } + } +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Buffer.h b/Source/ThirdParty/ANGLE/src/libGLESv2/Buffer.h new file mode 100644 index 00000000000..4376ada5c04 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Buffer.h @@ -0,0 +1,63 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Buffer.h: Defines the gl::Buffer class, representing storage of vertex and/or +// index data. Implements GL buffer objects and related functionality. +// [OpenGL ES 2.0.24] section 2.9 page 21. + +#ifndef LIBGLESV2_BUFFER_H_ +#define LIBGLESV2_BUFFER_H_ + +#include "common/angleutils.h" +#include "common/RefCountObject.h" + +namespace rx +{ +class Renderer; +class BufferStorage; +class StaticIndexBufferInterface; +class StaticVertexBufferInterface; +}; + +namespace gl +{ + +class Buffer : public RefCountObject +{ + public: + Buffer(rx::Renderer *renderer, GLuint id); + + virtual ~Buffer(); + + void bufferData(const void *data, GLsizeiptr size, GLenum usage); + void bufferSubData(const void *data, GLsizeiptr size, GLintptr offset); + + GLenum usage() const; + + rx::BufferStorage *getStorage() const; + unsigned int size(); + + rx::StaticVertexBufferInterface *getStaticVertexBuffer(); + rx::StaticIndexBufferInterface *getStaticIndexBuffer(); + void invalidateStaticData(); + void promoteStaticUsage(int dataSize); + + private: + DISALLOW_COPY_AND_ASSIGN(Buffer); + + rx::Renderer *mRenderer; + GLenum mUsage; + + rx::BufferStorage *mBufferStorage; + + rx::StaticVertexBufferInterface *mStaticVertexBuffer; + rx::StaticIndexBufferInterface *mStaticIndexBuffer; + unsigned int mUnmodifiedDataUse; +}; + +} + +#endif // LIBGLESV2_BUFFER_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Context.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/Context.cpp new file mode 100644 index 00000000000..e084db1ab40 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Context.cpp @@ -0,0 +1,2972 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Context.cpp: Implements the gl::Context class, managing all GL state and performing +// rendering operations. It is the GLES2 specific implementation of EGLContext. + +#include "libGLESv2/Context.h" + +#include "libGLESv2/main.h" +#include "libGLESv2/utilities.h" +#include "libGLESv2/Buffer.h" +#include "libGLESv2/Fence.h" +#include "libGLESv2/Framebuffer.h" +#include "libGLESv2/Renderbuffer.h" +#include "libGLESv2/Program.h" +#include "libGLESv2/ProgramBinary.h" +#include "libGLESv2/Query.h" +#include "libGLESv2/Texture.h" +#include "libGLESv2/ResourceManager.h" +#include "libGLESv2/renderer/IndexDataManager.h" +#include "libGLESv2/renderer/RenderTarget.h" +#include "libGLESv2/renderer/Renderer.h" + +#include "libEGL/Surface.h" + +#undef near +#undef far + +namespace gl +{ +static const char* makeStaticString(const std::string& str) +{ + static std::set strings; + std::set::iterator it = strings.find(str); + if (it != strings.end()) + return it->c_str(); + + return strings.insert(str).first->c_str(); +} + +Context::Context(const gl::Context *shareContext, rx::Renderer *renderer, bool notifyResets, bool robustAccess) : mRenderer(renderer) +{ + ASSERT(robustAccess == false); // Unimplemented + + mFenceHandleAllocator.setBaseHandle(0); + + setClearColor(0.0f, 0.0f, 0.0f, 0.0f); + + mState.depthClearValue = 1.0f; + mState.stencilClearValue = 0; + + mState.rasterizer.cullFace = false; + mState.rasterizer.cullMode = GL_BACK; + mState.rasterizer.frontFace = GL_CCW; + mState.rasterizer.polygonOffsetFill = false; + mState.rasterizer.polygonOffsetFactor = 0.0f; + mState.rasterizer.polygonOffsetUnits = 0.0f; + mState.rasterizer.pointDrawMode = false; + mState.rasterizer.multiSample = false; + mState.scissorTest = false; + mState.scissor.x = 0; + mState.scissor.y = 0; + mState.scissor.width = 0; + mState.scissor.height = 0; + + mState.blend.blend = false; + mState.blend.sourceBlendRGB = GL_ONE; + mState.blend.sourceBlendAlpha = GL_ONE; + mState.blend.destBlendRGB = GL_ZERO; + mState.blend.destBlendAlpha = GL_ZERO; + mState.blend.blendEquationRGB = GL_FUNC_ADD; + mState.blend.blendEquationAlpha = GL_FUNC_ADD; + mState.blend.sampleAlphaToCoverage = false; + mState.blend.dither = true; + + mState.blendColor.red = 0; + mState.blendColor.green = 0; + mState.blendColor.blue = 0; + mState.blendColor.alpha = 0; + + mState.depthStencil.depthTest = false; + mState.depthStencil.depthFunc = GL_LESS; + mState.depthStencil.depthMask = true; + mState.depthStencil.stencilTest = false; + mState.depthStencil.stencilFunc = GL_ALWAYS; + mState.depthStencil.stencilMask = -1; + mState.depthStencil.stencilWritemask = -1; + mState.depthStencil.stencilBackFunc = GL_ALWAYS; + mState.depthStencil.stencilBackMask = - 1; + mState.depthStencil.stencilBackWritemask = -1; + mState.depthStencil.stencilFail = GL_KEEP; + mState.depthStencil.stencilPassDepthFail = GL_KEEP; + mState.depthStencil.stencilPassDepthPass = GL_KEEP; + mState.depthStencil.stencilBackFail = GL_KEEP; + mState.depthStencil.stencilBackPassDepthFail = GL_KEEP; + mState.depthStencil.stencilBackPassDepthPass = GL_KEEP; + + mState.stencilRef = 0; + mState.stencilBackRef = 0; + + mState.sampleCoverage = false; + mState.sampleCoverageValue = 1.0f; + mState.sampleCoverageInvert = false; + mState.generateMipmapHint = GL_DONT_CARE; + mState.fragmentShaderDerivativeHint = GL_DONT_CARE; + + mState.lineWidth = 1.0f; + + mState.viewport.x = 0; + mState.viewport.y = 0; + mState.viewport.width = 0; + mState.viewport.height = 0; + mState.zNear = 0.0f; + mState.zFar = 1.0f; + + mState.blend.colorMaskRed = true; + mState.blend.colorMaskGreen = true; + mState.blend.colorMaskBlue = true; + mState.blend.colorMaskAlpha = true; + + if (shareContext != NULL) + { + mResourceManager = shareContext->mResourceManager; + mResourceManager->addRef(); + } + else + { + mResourceManager = new ResourceManager(mRenderer); + } + + // [OpenGL ES 2.0.24] section 3.7 page 83: + // In the initial state, TEXTURE_2D and TEXTURE_CUBE_MAP have twodimensional + // and cube map texture state vectors respectively associated with them. + // In order that access to these initial textures not be lost, they are treated as texture + // objects all of whose names are 0. + + mTexture2DZero.set(new Texture2D(mRenderer, 0)); + mTextureCubeMapZero.set(new TextureCubeMap(mRenderer, 0)); + + mState.activeSampler = 0; + bindArrayBuffer(0); + bindElementArrayBuffer(0); + bindTextureCubeMap(0); + bindTexture2D(0); + bindReadFramebuffer(0); + bindDrawFramebuffer(0); + bindRenderbuffer(0); + + mState.currentProgram = 0; + mCurrentProgramBinary.set(NULL); + + mState.packAlignment = 4; + mState.unpackAlignment = 4; + mState.packReverseRowOrder = false; + + mExtensionString = NULL; + mRendererString = NULL; + + mInvalidEnum = false; + mInvalidValue = false; + mInvalidOperation = false; + mOutOfMemory = false; + mInvalidFramebufferOperation = false; + + mHasBeenCurrent = false; + mContextLost = false; + mResetStatus = GL_NO_ERROR; + mResetStrategy = (notifyResets ? GL_LOSE_CONTEXT_ON_RESET_EXT : GL_NO_RESET_NOTIFICATION_EXT); + mRobustAccess = robustAccess; + + mSupportsBGRATextures = false; + mSupportsDXT1Textures = false; + mSupportsDXT3Textures = false; + mSupportsDXT5Textures = false; + mSupportsEventQueries = false; + mSupportsOcclusionQueries = false; + mNumCompressedTextureFormats = 0; +} + +Context::~Context() +{ + if (mState.currentProgram != 0) + { + Program *programObject = mResourceManager->getProgram(mState.currentProgram); + if (programObject) + { + programObject->release(); + } + mState.currentProgram = 0; + } + mCurrentProgramBinary.set(NULL); + + while (!mFramebufferMap.empty()) + { + deleteFramebuffer(mFramebufferMap.begin()->first); + } + + while (!mFenceMap.empty()) + { + deleteFence(mFenceMap.begin()->first); + } + + while (!mQueryMap.empty()) + { + deleteQuery(mQueryMap.begin()->first); + } + + for (int type = 0; type < TEXTURE_TYPE_COUNT; type++) + { + for (int sampler = 0; sampler < IMPLEMENTATION_MAX_COMBINED_TEXTURE_IMAGE_UNITS; sampler++) + { + mState.samplerTexture[type][sampler].set(NULL); + } + } + + for (int type = 0; type < TEXTURE_TYPE_COUNT; type++) + { + mIncompleteTextures[type].set(NULL); + } + + for (int i = 0; i < MAX_VERTEX_ATTRIBS; i++) + { + mState.vertexAttribute[i].mBoundBuffer.set(NULL); + } + + for (int i = 0; i < QUERY_TYPE_COUNT; i++) + { + mState.activeQuery[i].set(NULL); + } + + mState.arrayBuffer.set(NULL); + mState.elementArrayBuffer.set(NULL); + mState.renderbuffer.set(NULL); + + mTexture2DZero.set(NULL); + mTextureCubeMapZero.set(NULL); + + mResourceManager->release(); +} + +void Context::makeCurrent(egl::Surface *surface) +{ + if (!mHasBeenCurrent) + { + mMajorShaderModel = mRenderer->getMajorShaderModel(); + mMaximumPointSize = mRenderer->getMaxPointSize(); + mSupportsVertexTexture = mRenderer->getVertexTextureSupport(); + mSupportsNonPower2Texture = mRenderer->getNonPower2TextureSupport(); + mSupportsInstancing = mRenderer->getInstancingSupport(); + + mMaxViewportDimension = mRenderer->getMaxViewportDimension(); + mMaxTextureDimension = std::min(std::min(mRenderer->getMaxTextureWidth(), mRenderer->getMaxTextureHeight()), + (int)gl::IMPLEMENTATION_MAX_TEXTURE_SIZE); + mMaxCubeTextureDimension = std::min(mMaxTextureDimension, (int)gl::IMPLEMENTATION_MAX_CUBE_MAP_TEXTURE_SIZE); + mMaxRenderbufferDimension = mMaxTextureDimension; + mMaxTextureLevel = log2(mMaxTextureDimension) + 1; + mMaxTextureAnisotropy = mRenderer->getTextureMaxAnisotropy(); + TRACE("MaxTextureDimension=%d, MaxCubeTextureDimension=%d, MaxRenderbufferDimension=%d, MaxTextureLevel=%d, MaxTextureAnisotropy=%f", + mMaxTextureDimension, mMaxCubeTextureDimension, mMaxRenderbufferDimension, mMaxTextureLevel, mMaxTextureAnisotropy); + + mSupportsEventQueries = mRenderer->getEventQuerySupport(); + mSupportsOcclusionQueries = mRenderer->getOcclusionQuerySupport(); + mSupportsBGRATextures = mRenderer->getBGRATextureSupport(); + mSupportsDXT1Textures = mRenderer->getDXT1TextureSupport(); + mSupportsDXT3Textures = mRenderer->getDXT3TextureSupport(); + mSupportsDXT5Textures = mRenderer->getDXT5TextureSupport(); + mSupportsFloat32Textures = mRenderer->getFloat32TextureSupport(&mSupportsFloat32LinearFilter, &mSupportsFloat32RenderableTextures); + mSupportsFloat16Textures = mRenderer->getFloat16TextureSupport(&mSupportsFloat16LinearFilter, &mSupportsFloat16RenderableTextures); + mSupportsLuminanceTextures = mRenderer->getLuminanceTextureSupport(); + mSupportsLuminanceAlphaTextures = mRenderer->getLuminanceAlphaTextureSupport(); + mSupportsDepthTextures = mRenderer->getDepthTextureSupport(); + mSupportsTextureFilterAnisotropy = mRenderer->getTextureFilterAnisotropySupport(); + mSupports32bitIndices = mRenderer->get32BitIndexSupport(); + + mNumCompressedTextureFormats = 0; + if (supportsDXT1Textures()) + { + mNumCompressedTextureFormats += 2; + } + if (supportsDXT3Textures()) + { + mNumCompressedTextureFormats += 1; + } + if (supportsDXT5Textures()) + { + mNumCompressedTextureFormats += 1; + } + + initExtensionString(); + initRendererString(); + + mState.viewport.x = 0; + mState.viewport.y = 0; + mState.viewport.width = surface->getWidth(); + mState.viewport.height = surface->getHeight(); + + mState.scissor.x = 0; + mState.scissor.y = 0; + mState.scissor.width = surface->getWidth(); + mState.scissor.height = surface->getHeight(); + + mHasBeenCurrent = true; + } + + // Wrap the existing swapchain resources into GL objects and assign them to the '0' names + rx::SwapChain *swapchain = surface->getSwapChain(); + + Colorbuffer *colorbufferZero = new Colorbuffer(mRenderer, swapchain); + DepthStencilbuffer *depthStencilbufferZero = new DepthStencilbuffer(mRenderer, swapchain); + Framebuffer *framebufferZero = new DefaultFramebuffer(mRenderer, colorbufferZero, depthStencilbufferZero); + + setFramebufferZero(framebufferZero); +} + +// NOTE: this function should not assume that this context is current! +void Context::markContextLost() +{ + if (mResetStrategy == GL_LOSE_CONTEXT_ON_RESET_EXT) + mResetStatus = GL_UNKNOWN_CONTEXT_RESET_EXT; + mContextLost = true; +} + +bool Context::isContextLost() +{ + return mContextLost; +} + +void Context::setClearColor(float red, float green, float blue, float alpha) +{ + mState.colorClearValue.red = red; + mState.colorClearValue.green = green; + mState.colorClearValue.blue = blue; + mState.colorClearValue.alpha = alpha; +} + +void Context::setClearDepth(float depth) +{ + mState.depthClearValue = depth; +} + +void Context::setClearStencil(int stencil) +{ + mState.stencilClearValue = stencil; +} + +void Context::setCullFace(bool enabled) +{ + mState.rasterizer.cullFace = enabled; +} + +bool Context::isCullFaceEnabled() const +{ + return mState.rasterizer.cullFace; +} + +void Context::setCullMode(GLenum mode) +{ + mState.rasterizer.cullMode = mode; +} + +void Context::setFrontFace(GLenum front) +{ + mState.rasterizer.frontFace = front; +} + +void Context::setDepthTest(bool enabled) +{ + mState.depthStencil.depthTest = enabled; +} + +bool Context::isDepthTestEnabled() const +{ + return mState.depthStencil.depthTest; +} + +void Context::setDepthFunc(GLenum depthFunc) +{ + mState.depthStencil.depthFunc = depthFunc; +} + +void Context::setDepthRange(float zNear, float zFar) +{ + mState.zNear = zNear; + mState.zFar = zFar; +} + +void Context::setBlend(bool enabled) +{ + mState.blend.blend = enabled; +} + +bool Context::isBlendEnabled() const +{ + return mState.blend.blend; +} + +void Context::setBlendFactors(GLenum sourceRGB, GLenum destRGB, GLenum sourceAlpha, GLenum destAlpha) +{ + mState.blend.sourceBlendRGB = sourceRGB; + mState.blend.destBlendRGB = destRGB; + mState.blend.sourceBlendAlpha = sourceAlpha; + mState.blend.destBlendAlpha = destAlpha; +} + +void Context::setBlendColor(float red, float green, float blue, float alpha) +{ + mState.blendColor.red = red; + mState.blendColor.green = green; + mState.blendColor.blue = blue; + mState.blendColor.alpha = alpha; +} + +void Context::setBlendEquation(GLenum rgbEquation, GLenum alphaEquation) +{ + mState.blend.blendEquationRGB = rgbEquation; + mState.blend.blendEquationAlpha = alphaEquation; +} + +void Context::setStencilTest(bool enabled) +{ + mState.depthStencil.stencilTest = enabled; +} + +bool Context::isStencilTestEnabled() const +{ + return mState.depthStencil.stencilTest; +} + +void Context::setStencilParams(GLenum stencilFunc, GLint stencilRef, GLuint stencilMask) +{ + mState.depthStencil.stencilFunc = stencilFunc; + mState.stencilRef = (stencilRef > 0) ? stencilRef : 0; + mState.depthStencil.stencilMask = stencilMask; +} + +void Context::setStencilBackParams(GLenum stencilBackFunc, GLint stencilBackRef, GLuint stencilBackMask) +{ + mState.depthStencil.stencilBackFunc = stencilBackFunc; + mState.stencilBackRef = (stencilBackRef > 0) ? stencilBackRef : 0; + mState.depthStencil.stencilBackMask = stencilBackMask; +} + +void Context::setStencilWritemask(GLuint stencilWritemask) +{ + mState.depthStencil.stencilWritemask = stencilWritemask; +} + +void Context::setStencilBackWritemask(GLuint stencilBackWritemask) +{ + mState.depthStencil.stencilBackWritemask = stencilBackWritemask; +} + +void Context::setStencilOperations(GLenum stencilFail, GLenum stencilPassDepthFail, GLenum stencilPassDepthPass) +{ + mState.depthStencil.stencilFail = stencilFail; + mState.depthStencil.stencilPassDepthFail = stencilPassDepthFail; + mState.depthStencil.stencilPassDepthPass = stencilPassDepthPass; +} + +void Context::setStencilBackOperations(GLenum stencilBackFail, GLenum stencilBackPassDepthFail, GLenum stencilBackPassDepthPass) +{ + mState.depthStencil.stencilBackFail = stencilBackFail; + mState.depthStencil.stencilBackPassDepthFail = stencilBackPassDepthFail; + mState.depthStencil.stencilBackPassDepthPass = stencilBackPassDepthPass; +} + +void Context::setPolygonOffsetFill(bool enabled) +{ + mState.rasterizer.polygonOffsetFill = enabled; +} + +bool Context::isPolygonOffsetFillEnabled() const +{ + return mState.rasterizer.polygonOffsetFill; +} + +void Context::setPolygonOffsetParams(GLfloat factor, GLfloat units) +{ + // An application can pass NaN values here, so handle this gracefully + mState.rasterizer.polygonOffsetFactor = factor != factor ? 0.0f : factor; + mState.rasterizer.polygonOffsetUnits = units != units ? 0.0f : units; +} + +void Context::setSampleAlphaToCoverage(bool enabled) +{ + mState.blend.sampleAlphaToCoverage = enabled; +} + +bool Context::isSampleAlphaToCoverageEnabled() const +{ + return mState.blend.sampleAlphaToCoverage; +} + +void Context::setSampleCoverage(bool enabled) +{ + mState.sampleCoverage = enabled; +} + +bool Context::isSampleCoverageEnabled() const +{ + return mState.sampleCoverage; +} + +void Context::setSampleCoverageParams(GLclampf value, bool invert) +{ + mState.sampleCoverageValue = value; + mState.sampleCoverageInvert = invert; +} + +void Context::setScissorTest(bool enabled) +{ + mState.scissorTest = enabled; +} + +bool Context::isScissorTestEnabled() const +{ + return mState.scissorTest; +} + +void Context::setDither(bool enabled) +{ + mState.blend.dither = enabled; +} + +bool Context::isDitherEnabled() const +{ + return mState.blend.dither; +} + +void Context::setLineWidth(GLfloat width) +{ + mState.lineWidth = width; +} + +void Context::setGenerateMipmapHint(GLenum hint) +{ + mState.generateMipmapHint = hint; +} + +void Context::setFragmentShaderDerivativeHint(GLenum hint) +{ + mState.fragmentShaderDerivativeHint = hint; + // TODO: Propagate the hint to shader translator so we can write + // ddx, ddx_coarse, or ddx_fine depending on the hint. + // Ignore for now. It is valid for implementations to ignore hint. +} + +void Context::setViewportParams(GLint x, GLint y, GLsizei width, GLsizei height) +{ + mState.viewport.x = x; + mState.viewport.y = y; + mState.viewport.width = width; + mState.viewport.height = height; +} + +void Context::setScissorParams(GLint x, GLint y, GLsizei width, GLsizei height) +{ + mState.scissor.x = x; + mState.scissor.y = y; + mState.scissor.width = width; + mState.scissor.height = height; +} + +void Context::setColorMask(bool red, bool green, bool blue, bool alpha) +{ + mState.blend.colorMaskRed = red; + mState.blend.colorMaskGreen = green; + mState.blend.colorMaskBlue = blue; + mState.blend.colorMaskAlpha = alpha; +} + +void Context::setDepthMask(bool mask) +{ + mState.depthStencil.depthMask = mask; +} + +void Context::setActiveSampler(unsigned int active) +{ + mState.activeSampler = active; +} + +GLuint Context::getReadFramebufferHandle() const +{ + return mState.readFramebuffer; +} + +GLuint Context::getDrawFramebufferHandle() const +{ + return mState.drawFramebuffer; +} + +GLuint Context::getRenderbufferHandle() const +{ + return mState.renderbuffer.id(); +} + +GLuint Context::getArrayBufferHandle() const +{ + return mState.arrayBuffer.id(); +} + +GLuint Context::getActiveQuery(GLenum target) const +{ + Query *queryObject = NULL; + + switch (target) + { + case GL_ANY_SAMPLES_PASSED_EXT: + queryObject = mState.activeQuery[QUERY_ANY_SAMPLES_PASSED].get(); + break; + case GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT: + queryObject = mState.activeQuery[QUERY_ANY_SAMPLES_PASSED_CONSERVATIVE].get(); + break; + default: + ASSERT(false); + } + + if (queryObject) + { + return queryObject->id(); + } + else + { + return 0; + } +} + +void Context::setEnableVertexAttribArray(unsigned int attribNum, bool enabled) +{ + mState.vertexAttribute[attribNum].mArrayEnabled = enabled; +} + +const VertexAttribute &Context::getVertexAttribState(unsigned int attribNum) +{ + return mState.vertexAttribute[attribNum]; +} + +void Context::setVertexAttribState(unsigned int attribNum, Buffer *boundBuffer, GLint size, GLenum type, bool normalized, + GLsizei stride, const void *pointer) +{ + mState.vertexAttribute[attribNum].mBoundBuffer.set(boundBuffer); + mState.vertexAttribute[attribNum].mSize = size; + mState.vertexAttribute[attribNum].mType = type; + mState.vertexAttribute[attribNum].mNormalized = normalized; + mState.vertexAttribute[attribNum].mStride = stride; + mState.vertexAttribute[attribNum].mPointer = pointer; +} + +const void *Context::getVertexAttribPointer(unsigned int attribNum) const +{ + return mState.vertexAttribute[attribNum].mPointer; +} + +void Context::setPackAlignment(GLint alignment) +{ + mState.packAlignment = alignment; +} + +GLint Context::getPackAlignment() const +{ + return mState.packAlignment; +} + +void Context::setUnpackAlignment(GLint alignment) +{ + mState.unpackAlignment = alignment; +} + +GLint Context::getUnpackAlignment() const +{ + return mState.unpackAlignment; +} + +void Context::setPackReverseRowOrder(bool reverseRowOrder) +{ + mState.packReverseRowOrder = reverseRowOrder; +} + +bool Context::getPackReverseRowOrder() const +{ + return mState.packReverseRowOrder; +} + +GLuint Context::createBuffer() +{ + return mResourceManager->createBuffer(); +} + +GLuint Context::createProgram() +{ + return mResourceManager->createProgram(); +} + +GLuint Context::createShader(GLenum type) +{ + return mResourceManager->createShader(type); +} + +GLuint Context::createTexture() +{ + return mResourceManager->createTexture(); +} + +GLuint Context::createRenderbuffer() +{ + return mResourceManager->createRenderbuffer(); +} + +// Returns an unused framebuffer name +GLuint Context::createFramebuffer() +{ + GLuint handle = mFramebufferHandleAllocator.allocate(); + + mFramebufferMap[handle] = NULL; + + return handle; +} + +GLuint Context::createFence() +{ + GLuint handle = mFenceHandleAllocator.allocate(); + + mFenceMap[handle] = new Fence(mRenderer); + + return handle; +} + +// Returns an unused query name +GLuint Context::createQuery() +{ + GLuint handle = mQueryHandleAllocator.allocate(); + + mQueryMap[handle] = NULL; + + return handle; +} + +void Context::deleteBuffer(GLuint buffer) +{ + if (mResourceManager->getBuffer(buffer)) + { + detachBuffer(buffer); + } + + mResourceManager->deleteBuffer(buffer); +} + +void Context::deleteShader(GLuint shader) +{ + mResourceManager->deleteShader(shader); +} + +void Context::deleteProgram(GLuint program) +{ + mResourceManager->deleteProgram(program); +} + +void Context::deleteTexture(GLuint texture) +{ + if (mResourceManager->getTexture(texture)) + { + detachTexture(texture); + } + + mResourceManager->deleteTexture(texture); +} + +void Context::deleteRenderbuffer(GLuint renderbuffer) +{ + if (mResourceManager->getRenderbuffer(renderbuffer)) + { + detachRenderbuffer(renderbuffer); + } + + mResourceManager->deleteRenderbuffer(renderbuffer); +} + +void Context::deleteFramebuffer(GLuint framebuffer) +{ + FramebufferMap::iterator framebufferObject = mFramebufferMap.find(framebuffer); + + if (framebufferObject != mFramebufferMap.end()) + { + detachFramebuffer(framebuffer); + + mFramebufferHandleAllocator.release(framebufferObject->first); + delete framebufferObject->second; + mFramebufferMap.erase(framebufferObject); + } +} + +void Context::deleteFence(GLuint fence) +{ + FenceMap::iterator fenceObject = mFenceMap.find(fence); + + if (fenceObject != mFenceMap.end()) + { + mFenceHandleAllocator.release(fenceObject->first); + delete fenceObject->second; + mFenceMap.erase(fenceObject); + } +} + +void Context::deleteQuery(GLuint query) +{ + QueryMap::iterator queryObject = mQueryMap.find(query); + if (queryObject != mQueryMap.end()) + { + mQueryHandleAllocator.release(queryObject->first); + if (queryObject->second) + { + queryObject->second->release(); + } + mQueryMap.erase(queryObject); + } +} + +Buffer *Context::getBuffer(GLuint handle) +{ + return mResourceManager->getBuffer(handle); +} + +Shader *Context::getShader(GLuint handle) +{ + return mResourceManager->getShader(handle); +} + +Program *Context::getProgram(GLuint handle) +{ + return mResourceManager->getProgram(handle); +} + +Texture *Context::getTexture(GLuint handle) +{ + return mResourceManager->getTexture(handle); +} + +Renderbuffer *Context::getRenderbuffer(GLuint handle) +{ + return mResourceManager->getRenderbuffer(handle); +} + +Framebuffer *Context::getReadFramebuffer() +{ + return getFramebuffer(mState.readFramebuffer); +} + +Framebuffer *Context::getDrawFramebuffer() +{ + return mBoundDrawFramebuffer; +} + +void Context::bindArrayBuffer(unsigned int buffer) +{ + mResourceManager->checkBufferAllocation(buffer); + + mState.arrayBuffer.set(getBuffer(buffer)); +} + +void Context::bindElementArrayBuffer(unsigned int buffer) +{ + mResourceManager->checkBufferAllocation(buffer); + + mState.elementArrayBuffer.set(getBuffer(buffer)); +} + +void Context::bindTexture2D(GLuint texture) +{ + mResourceManager->checkTextureAllocation(texture, TEXTURE_2D); + + mState.samplerTexture[TEXTURE_2D][mState.activeSampler].set(getTexture(texture)); +} + +void Context::bindTextureCubeMap(GLuint texture) +{ + mResourceManager->checkTextureAllocation(texture, TEXTURE_CUBE); + + mState.samplerTexture[TEXTURE_CUBE][mState.activeSampler].set(getTexture(texture)); +} + +void Context::bindReadFramebuffer(GLuint framebuffer) +{ + if (!getFramebuffer(framebuffer)) + { + mFramebufferMap[framebuffer] = new Framebuffer(mRenderer); + } + + mState.readFramebuffer = framebuffer; +} + +void Context::bindDrawFramebuffer(GLuint framebuffer) +{ + if (!getFramebuffer(framebuffer)) + { + mFramebufferMap[framebuffer] = new Framebuffer(mRenderer); + } + + mState.drawFramebuffer = framebuffer; + + mBoundDrawFramebuffer = getFramebuffer(framebuffer); +} + +void Context::bindRenderbuffer(GLuint renderbuffer) +{ + mResourceManager->checkRenderbufferAllocation(renderbuffer); + + mState.renderbuffer.set(getRenderbuffer(renderbuffer)); +} + +void Context::useProgram(GLuint program) +{ + GLuint priorProgram = mState.currentProgram; + mState.currentProgram = program; // Must switch before trying to delete, otherwise it only gets flagged. + + if (priorProgram != program) + { + Program *newProgram = mResourceManager->getProgram(program); + Program *oldProgram = mResourceManager->getProgram(priorProgram); + mCurrentProgramBinary.set(NULL); + + if (newProgram) + { + newProgram->addRef(); + mCurrentProgramBinary.set(newProgram->getProgramBinary()); + } + + if (oldProgram) + { + oldProgram->release(); + } + } +} + +void Context::linkProgram(GLuint program) +{ + Program *programObject = mResourceManager->getProgram(program); + + bool linked = programObject->link(); + + // if the current program was relinked successfully we + // need to install the new executables + if (linked && program == mState.currentProgram) + { + mCurrentProgramBinary.set(programObject->getProgramBinary()); + } +} + +void Context::setProgramBinary(GLuint program, const void *binary, GLint length) +{ + Program *programObject = mResourceManager->getProgram(program); + + bool loaded = programObject->setProgramBinary(binary, length); + + // if the current program was reloaded successfully we + // need to install the new executables + if (loaded && program == mState.currentProgram) + { + mCurrentProgramBinary.set(programObject->getProgramBinary()); + } + +} + +void Context::beginQuery(GLenum target, GLuint query) +{ + // From EXT_occlusion_query_boolean: If BeginQueryEXT is called with an + // of zero, if the active query object name for is non-zero (for the + // targets ANY_SAMPLES_PASSED_EXT and ANY_SAMPLES_PASSED_CONSERVATIVE_EXT, if + // the active query for either target is non-zero), if is the name of an + // existing query object whose type does not match , or if is the + // active query object name for any query type, the error INVALID_OPERATION is + // generated. + + // Ensure no other queries are active + // NOTE: If other queries than occlusion are supported, we will need to check + // separately that: + // a) The query ID passed is not the current active query for any target/type + // b) There are no active queries for the requested target (and in the case + // of GL_ANY_SAMPLES_PASSED_EXT and GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT, + // no query may be active for either if glBeginQuery targets either. + for (int i = 0; i < QUERY_TYPE_COUNT; i++) + { + if (mState.activeQuery[i].get() != NULL) + { + return gl::error(GL_INVALID_OPERATION); + } + } + + QueryType qType; + switch (target) + { + case GL_ANY_SAMPLES_PASSED_EXT: + qType = QUERY_ANY_SAMPLES_PASSED; + break; + case GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT: + qType = QUERY_ANY_SAMPLES_PASSED_CONSERVATIVE; + break; + default: + ASSERT(false); + return; + } + + Query *queryObject = getQuery(query, true, target); + + // check that name was obtained with glGenQueries + if (!queryObject) + { + return gl::error(GL_INVALID_OPERATION); + } + + // check for type mismatch + if (queryObject->getType() != target) + { + return gl::error(GL_INVALID_OPERATION); + } + + // set query as active for specified target + mState.activeQuery[qType].set(queryObject); + + // begin query + queryObject->begin(); +} + +void Context::endQuery(GLenum target) +{ + QueryType qType; + + switch (target) + { + case GL_ANY_SAMPLES_PASSED_EXT: + qType = QUERY_ANY_SAMPLES_PASSED; + break; + case GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT: + qType = QUERY_ANY_SAMPLES_PASSED_CONSERVATIVE; + break; + default: + ASSERT(false); + return; + } + + Query *queryObject = mState.activeQuery[qType].get(); + + if (queryObject == NULL) + { + return gl::error(GL_INVALID_OPERATION); + } + + queryObject->end(); + + mState.activeQuery[qType].set(NULL); +} + +void Context::setFramebufferZero(Framebuffer *buffer) +{ + delete mFramebufferMap[0]; + mFramebufferMap[0] = buffer; + if (mState.drawFramebuffer == 0) + { + mBoundDrawFramebuffer = buffer; + } +} + +void Context::setRenderbufferStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples) +{ + RenderbufferStorage *renderbuffer = NULL; + switch (internalformat) + { + case GL_DEPTH_COMPONENT16: + renderbuffer = new gl::Depthbuffer(mRenderer, width, height, samples); + break; + case GL_RGBA4: + case GL_RGB5_A1: + case GL_RGB565: + case GL_RGB8_OES: + case GL_RGBA8_OES: + renderbuffer = new gl::Colorbuffer(mRenderer,width, height, internalformat, samples); + break; + case GL_STENCIL_INDEX8: + renderbuffer = new gl::Stencilbuffer(mRenderer, width, height, samples); + break; + case GL_DEPTH24_STENCIL8_OES: + renderbuffer = new gl::DepthStencilbuffer(mRenderer, width, height, samples); + break; + default: + UNREACHABLE(); return; + } + + Renderbuffer *renderbufferObject = mState.renderbuffer.get(); + renderbufferObject->setStorage(renderbuffer); +} + +Framebuffer *Context::getFramebuffer(unsigned int handle) +{ + FramebufferMap::iterator framebuffer = mFramebufferMap.find(handle); + + if (framebuffer == mFramebufferMap.end()) + { + return NULL; + } + else + { + return framebuffer->second; + } +} + +Fence *Context::getFence(unsigned int handle) +{ + FenceMap::iterator fence = mFenceMap.find(handle); + + if (fence == mFenceMap.end()) + { + return NULL; + } + else + { + return fence->second; + } +} + +Query *Context::getQuery(unsigned int handle, bool create, GLenum type) +{ + QueryMap::iterator query = mQueryMap.find(handle); + + if (query == mQueryMap.end()) + { + return NULL; + } + else + { + if (!query->second && create) + { + query->second = new Query(mRenderer, type, handle); + query->second->addRef(); + } + return query->second; + } +} + +Buffer *Context::getArrayBuffer() +{ + return mState.arrayBuffer.get(); +} + +Buffer *Context::getElementArrayBuffer() +{ + return mState.elementArrayBuffer.get(); +} + +ProgramBinary *Context::getCurrentProgramBinary() +{ + return mCurrentProgramBinary.get(); +} + +Texture2D *Context::getTexture2D() +{ + return static_cast(getSamplerTexture(mState.activeSampler, TEXTURE_2D)); +} + +TextureCubeMap *Context::getTextureCubeMap() +{ + return static_cast(getSamplerTexture(mState.activeSampler, TEXTURE_CUBE)); +} + +Texture *Context::getSamplerTexture(unsigned int sampler, TextureType type) +{ + GLuint texid = mState.samplerTexture[type][sampler].id(); + + if (texid == 0) // Special case: 0 refers to different initial textures based on the target + { + switch (type) + { + default: UNREACHABLE(); + case TEXTURE_2D: return mTexture2DZero.get(); + case TEXTURE_CUBE: return mTextureCubeMapZero.get(); + } + } + + return mState.samplerTexture[type][sampler].get(); +} + +bool Context::getBooleanv(GLenum pname, GLboolean *params) +{ + switch (pname) + { + case GL_SHADER_COMPILER: *params = GL_TRUE; break; + case GL_SAMPLE_COVERAGE_INVERT: *params = mState.sampleCoverageInvert; break; + case GL_DEPTH_WRITEMASK: *params = mState.depthStencil.depthMask; break; + case GL_COLOR_WRITEMASK: + params[0] = mState.blend.colorMaskRed; + params[1] = mState.blend.colorMaskGreen; + params[2] = mState.blend.colorMaskBlue; + params[3] = mState.blend.colorMaskAlpha; + break; + case GL_CULL_FACE: *params = mState.rasterizer.cullFace; break; + case GL_POLYGON_OFFSET_FILL: *params = mState.rasterizer.polygonOffsetFill; break; + case GL_SAMPLE_ALPHA_TO_COVERAGE: *params = mState.blend.sampleAlphaToCoverage; break; + case GL_SAMPLE_COVERAGE: *params = mState.sampleCoverage; break; + case GL_SCISSOR_TEST: *params = mState.scissorTest; break; + case GL_STENCIL_TEST: *params = mState.depthStencil.stencilTest; break; + case GL_DEPTH_TEST: *params = mState.depthStencil.depthTest; break; + case GL_BLEND: *params = mState.blend.blend; break; + case GL_DITHER: *params = mState.blend.dither; break; + case GL_CONTEXT_ROBUST_ACCESS_EXT: *params = mRobustAccess ? GL_TRUE : GL_FALSE; break; + default: + return false; + } + + return true; +} + +bool Context::getFloatv(GLenum pname, GLfloat *params) +{ + // Please note: DEPTH_CLEAR_VALUE is included in our internal getFloatv implementation + // because it is stored as a float, despite the fact that the GL ES 2.0 spec names + // GetIntegerv as its native query function. As it would require conversion in any + // case, this should make no difference to the calling application. + switch (pname) + { + case GL_LINE_WIDTH: *params = mState.lineWidth; break; + case GL_SAMPLE_COVERAGE_VALUE: *params = mState.sampleCoverageValue; break; + case GL_DEPTH_CLEAR_VALUE: *params = mState.depthClearValue; break; + case GL_POLYGON_OFFSET_FACTOR: *params = mState.rasterizer.polygonOffsetFactor; break; + case GL_POLYGON_OFFSET_UNITS: *params = mState.rasterizer.polygonOffsetUnits; break; + case GL_ALIASED_LINE_WIDTH_RANGE: + params[0] = gl::ALIASED_LINE_WIDTH_RANGE_MIN; + params[1] = gl::ALIASED_LINE_WIDTH_RANGE_MAX; + break; + case GL_ALIASED_POINT_SIZE_RANGE: + params[0] = gl::ALIASED_POINT_SIZE_RANGE_MIN; + params[1] = getMaximumPointSize(); + break; + case GL_DEPTH_RANGE: + params[0] = mState.zNear; + params[1] = mState.zFar; + break; + case GL_COLOR_CLEAR_VALUE: + params[0] = mState.colorClearValue.red; + params[1] = mState.colorClearValue.green; + params[2] = mState.colorClearValue.blue; + params[3] = mState.colorClearValue.alpha; + break; + case GL_BLEND_COLOR: + params[0] = mState.blendColor.red; + params[1] = mState.blendColor.green; + params[2] = mState.blendColor.blue; + params[3] = mState.blendColor.alpha; + break; + case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: + if (!supportsTextureFilterAnisotropy()) + { + return false; + } + *params = mMaxTextureAnisotropy; + break; + default: + return false; + } + + return true; +} + +bool Context::getIntegerv(GLenum pname, GLint *params) +{ + if (pname >= GL_DRAW_BUFFER0_EXT && pname <= GL_DRAW_BUFFER15_EXT) + { + unsigned int colorAttachment = (pname - GL_DRAW_BUFFER0_EXT); + + if (colorAttachment >= mRenderer->getMaxRenderTargets()) + { + // return true to stop further operation in the parent call + return gl::error(GL_INVALID_OPERATION, true); + } + + Framebuffer *framebuffer = getDrawFramebuffer(); + + *params = framebuffer->getDrawBufferState(colorAttachment); + return true; + } + + // Please note: DEPTH_CLEAR_VALUE is not included in our internal getIntegerv implementation + // because it is stored as a float, despite the fact that the GL ES 2.0 spec names + // GetIntegerv as its native query function. As it would require conversion in any + // case, this should make no difference to the calling application. You may find it in + // Context::getFloatv. + switch (pname) + { + case GL_MAX_VERTEX_ATTRIBS: *params = gl::MAX_VERTEX_ATTRIBS; break; + case GL_MAX_VERTEX_UNIFORM_VECTORS: *params = mRenderer->getMaxVertexUniformVectors(); break; + case GL_MAX_VARYING_VECTORS: *params = mRenderer->getMaxVaryingVectors(); break; + case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: *params = mRenderer->getMaxCombinedTextureImageUnits(); break; + case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: *params = mRenderer->getMaxVertexTextureImageUnits(); break; + case GL_MAX_TEXTURE_IMAGE_UNITS: *params = gl::MAX_TEXTURE_IMAGE_UNITS; break; + case GL_MAX_FRAGMENT_UNIFORM_VECTORS: *params = mRenderer->getMaxFragmentUniformVectors(); break; + case GL_MAX_RENDERBUFFER_SIZE: *params = getMaximumRenderbufferDimension(); break; + case GL_MAX_COLOR_ATTACHMENTS_EXT: *params = mRenderer->getMaxRenderTargets(); break; + case GL_MAX_DRAW_BUFFERS_EXT: *params = mRenderer->getMaxRenderTargets(); break; + case GL_NUM_SHADER_BINARY_FORMATS: *params = 0; break; + case GL_SHADER_BINARY_FORMATS: /* no shader binary formats are supported */ break; + case GL_ARRAY_BUFFER_BINDING: *params = mState.arrayBuffer.id(); break; + case GL_ELEMENT_ARRAY_BUFFER_BINDING: *params = mState.elementArrayBuffer.id(); break; + //case GL_FRAMEBUFFER_BINDING: // now equivalent to GL_DRAW_FRAMEBUFFER_BINDING_ANGLE + case GL_DRAW_FRAMEBUFFER_BINDING_ANGLE: *params = mState.drawFramebuffer; break; + case GL_READ_FRAMEBUFFER_BINDING_ANGLE: *params = mState.readFramebuffer; break; + case GL_RENDERBUFFER_BINDING: *params = mState.renderbuffer.id(); break; + case GL_CURRENT_PROGRAM: *params = mState.currentProgram; break; + case GL_PACK_ALIGNMENT: *params = mState.packAlignment; break; + case GL_PACK_REVERSE_ROW_ORDER_ANGLE: *params = mState.packReverseRowOrder; break; + case GL_UNPACK_ALIGNMENT: *params = mState.unpackAlignment; break; + case GL_GENERATE_MIPMAP_HINT: *params = mState.generateMipmapHint; break; + case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES: *params = mState.fragmentShaderDerivativeHint; break; + case GL_ACTIVE_TEXTURE: *params = (mState.activeSampler + GL_TEXTURE0); break; + case GL_STENCIL_FUNC: *params = mState.depthStencil.stencilFunc; break; + case GL_STENCIL_REF: *params = mState.stencilRef; break; + case GL_STENCIL_VALUE_MASK: *params = mState.depthStencil.stencilMask; break; + case GL_STENCIL_BACK_FUNC: *params = mState.depthStencil.stencilBackFunc; break; + case GL_STENCIL_BACK_REF: *params = mState.stencilBackRef; break; + case GL_STENCIL_BACK_VALUE_MASK: *params = mState.depthStencil.stencilBackMask; break; + case GL_STENCIL_FAIL: *params = mState.depthStencil.stencilFail; break; + case GL_STENCIL_PASS_DEPTH_FAIL: *params = mState.depthStencil.stencilPassDepthFail; break; + case GL_STENCIL_PASS_DEPTH_PASS: *params = mState.depthStencil.stencilPassDepthPass; break; + case GL_STENCIL_BACK_FAIL: *params = mState.depthStencil.stencilBackFail; break; + case GL_STENCIL_BACK_PASS_DEPTH_FAIL: *params = mState.depthStencil.stencilBackPassDepthFail; break; + case GL_STENCIL_BACK_PASS_DEPTH_PASS: *params = mState.depthStencil.stencilBackPassDepthPass; break; + case GL_DEPTH_FUNC: *params = mState.depthStencil.depthFunc; break; + case GL_BLEND_SRC_RGB: *params = mState.blend.sourceBlendRGB; break; + case GL_BLEND_SRC_ALPHA: *params = mState.blend.sourceBlendAlpha; break; + case GL_BLEND_DST_RGB: *params = mState.blend.destBlendRGB; break; + case GL_BLEND_DST_ALPHA: *params = mState.blend.destBlendAlpha; break; + case GL_BLEND_EQUATION_RGB: *params = mState.blend.blendEquationRGB; break; + case GL_BLEND_EQUATION_ALPHA: *params = mState.blend.blendEquationAlpha; break; + case GL_STENCIL_WRITEMASK: *params = mState.depthStencil.stencilWritemask; break; + case GL_STENCIL_BACK_WRITEMASK: *params = mState.depthStencil.stencilBackWritemask; break; + case GL_STENCIL_CLEAR_VALUE: *params = mState.stencilClearValue; break; + case GL_SUBPIXEL_BITS: *params = 4; break; + case GL_MAX_TEXTURE_SIZE: *params = getMaximumTextureDimension(); break; + case GL_MAX_CUBE_MAP_TEXTURE_SIZE: *params = getMaximumCubeTextureDimension(); break; + case GL_NUM_COMPRESSED_TEXTURE_FORMATS: + params[0] = mNumCompressedTextureFormats; + break; + case GL_MAX_SAMPLES_ANGLE: + { + GLsizei maxSamples = getMaxSupportedSamples(); + if (maxSamples != 0) + { + *params = maxSamples; + } + else + { + return false; + } + + break; + } + case GL_SAMPLE_BUFFERS: + case GL_SAMPLES: + { + gl::Framebuffer *framebuffer = getDrawFramebuffer(); + if (framebuffer->completeness() == GL_FRAMEBUFFER_COMPLETE) + { + switch (pname) + { + case GL_SAMPLE_BUFFERS: + if (framebuffer->getSamples() != 0) + { + *params = 1; + } + else + { + *params = 0; + } + break; + case GL_SAMPLES: + *params = framebuffer->getSamples(); + break; + } + } + else + { + *params = 0; + } + } + break; + case GL_IMPLEMENTATION_COLOR_READ_TYPE: + case GL_IMPLEMENTATION_COLOR_READ_FORMAT: + { + GLenum format, type; + if (getCurrentReadFormatType(&format, &type)) + { + if (pname == GL_IMPLEMENTATION_COLOR_READ_FORMAT) + *params = format; + else + *params = type; + } + } + break; + case GL_MAX_VIEWPORT_DIMS: + { + params[0] = mMaxViewportDimension; + params[1] = mMaxViewportDimension; + } + break; + case GL_COMPRESSED_TEXTURE_FORMATS: + { + if (supportsDXT1Textures()) + { + *params++ = GL_COMPRESSED_RGB_S3TC_DXT1_EXT; + *params++ = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; + } + if (supportsDXT3Textures()) + { + *params++ = GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE; + } + if (supportsDXT5Textures()) + { + *params++ = GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE; + } + } + break; + case GL_VIEWPORT: + params[0] = mState.viewport.x; + params[1] = mState.viewport.y; + params[2] = mState.viewport.width; + params[3] = mState.viewport.height; + break; + case GL_SCISSOR_BOX: + params[0] = mState.scissor.x; + params[1] = mState.scissor.y; + params[2] = mState.scissor.width; + params[3] = mState.scissor.height; + break; + case GL_CULL_FACE_MODE: *params = mState.rasterizer.cullMode; break; + case GL_FRONT_FACE: *params = mState.rasterizer.frontFace; break; + case GL_RED_BITS: + case GL_GREEN_BITS: + case GL_BLUE_BITS: + case GL_ALPHA_BITS: + { + gl::Framebuffer *framebuffer = getDrawFramebuffer(); + gl::Renderbuffer *colorbuffer = framebuffer->getFirstColorbuffer(); + + if (colorbuffer) + { + switch (pname) + { + case GL_RED_BITS: *params = colorbuffer->getRedSize(); break; + case GL_GREEN_BITS: *params = colorbuffer->getGreenSize(); break; + case GL_BLUE_BITS: *params = colorbuffer->getBlueSize(); break; + case GL_ALPHA_BITS: *params = colorbuffer->getAlphaSize(); break; + } + } + else + { + *params = 0; + } + } + break; + case GL_DEPTH_BITS: + { + gl::Framebuffer *framebuffer = getDrawFramebuffer(); + gl::Renderbuffer *depthbuffer = framebuffer->getDepthbuffer(); + + if (depthbuffer) + { + *params = depthbuffer->getDepthSize(); + } + else + { + *params = 0; + } + } + break; + case GL_STENCIL_BITS: + { + gl::Framebuffer *framebuffer = getDrawFramebuffer(); + gl::Renderbuffer *stencilbuffer = framebuffer->getStencilbuffer(); + + if (stencilbuffer) + { + *params = stencilbuffer->getStencilSize(); + } + else + { + *params = 0; + } + } + break; + case GL_TEXTURE_BINDING_2D: + { + if (mState.activeSampler > mRenderer->getMaxCombinedTextureImageUnits() - 1) + { + gl::error(GL_INVALID_OPERATION); + return false; + } + + *params = mState.samplerTexture[TEXTURE_2D][mState.activeSampler].id(); + } + break; + case GL_TEXTURE_BINDING_CUBE_MAP: + { + if (mState.activeSampler > mRenderer->getMaxCombinedTextureImageUnits() - 1) + { + gl::error(GL_INVALID_OPERATION); + return false; + } + + *params = mState.samplerTexture[TEXTURE_CUBE][mState.activeSampler].id(); + } + break; + case GL_RESET_NOTIFICATION_STRATEGY_EXT: + *params = mResetStrategy; + break; + case GL_NUM_PROGRAM_BINARY_FORMATS_OES: + *params = 1; + break; + case GL_PROGRAM_BINARY_FORMATS_OES: + *params = GL_PROGRAM_BINARY_ANGLE; + break; + default: + return false; + } + + return true; +} + +bool Context::getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *numParams) +{ + if (pname >= GL_DRAW_BUFFER0_EXT && pname <= GL_DRAW_BUFFER15_EXT) + { + *type = GL_INT; + *numParams = 1; + return true; + } + + // Please note: the query type returned for DEPTH_CLEAR_VALUE in this implementation + // is FLOAT rather than INT, as would be suggested by the GL ES 2.0 spec. This is due + // to the fact that it is stored internally as a float, and so would require conversion + // if returned from Context::getIntegerv. Since this conversion is already implemented + // in the case that one calls glGetIntegerv to retrieve a float-typed state variable, we + // place DEPTH_CLEAR_VALUE with the floats. This should make no difference to the calling + // application. + switch (pname) + { + case GL_COMPRESSED_TEXTURE_FORMATS: + { + *type = GL_INT; + *numParams = mNumCompressedTextureFormats; + } + break; + case GL_SHADER_BINARY_FORMATS: + { + *type = GL_INT; + *numParams = 0; + } + break; + case GL_MAX_VERTEX_ATTRIBS: + case GL_MAX_VERTEX_UNIFORM_VECTORS: + case GL_MAX_VARYING_VECTORS: + case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: + case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: + case GL_MAX_TEXTURE_IMAGE_UNITS: + case GL_MAX_FRAGMENT_UNIFORM_VECTORS: + case GL_MAX_RENDERBUFFER_SIZE: + case GL_MAX_COLOR_ATTACHMENTS_EXT: + case GL_MAX_DRAW_BUFFERS_EXT: + case GL_NUM_SHADER_BINARY_FORMATS: + case GL_NUM_COMPRESSED_TEXTURE_FORMATS: + case GL_ARRAY_BUFFER_BINDING: + case GL_FRAMEBUFFER_BINDING: + case GL_RENDERBUFFER_BINDING: + case GL_CURRENT_PROGRAM: + case GL_PACK_ALIGNMENT: + case GL_PACK_REVERSE_ROW_ORDER_ANGLE: + case GL_UNPACK_ALIGNMENT: + case GL_GENERATE_MIPMAP_HINT: + case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES: + case GL_RED_BITS: + case GL_GREEN_BITS: + case GL_BLUE_BITS: + case GL_ALPHA_BITS: + case GL_DEPTH_BITS: + case GL_STENCIL_BITS: + case GL_ELEMENT_ARRAY_BUFFER_BINDING: + case GL_CULL_FACE_MODE: + case GL_FRONT_FACE: + case GL_ACTIVE_TEXTURE: + case GL_STENCIL_FUNC: + case GL_STENCIL_VALUE_MASK: + case GL_STENCIL_REF: + case GL_STENCIL_FAIL: + case GL_STENCIL_PASS_DEPTH_FAIL: + case GL_STENCIL_PASS_DEPTH_PASS: + case GL_STENCIL_BACK_FUNC: + case GL_STENCIL_BACK_VALUE_MASK: + case GL_STENCIL_BACK_REF: + case GL_STENCIL_BACK_FAIL: + case GL_STENCIL_BACK_PASS_DEPTH_FAIL: + case GL_STENCIL_BACK_PASS_DEPTH_PASS: + case GL_DEPTH_FUNC: + case GL_BLEND_SRC_RGB: + case GL_BLEND_SRC_ALPHA: + case GL_BLEND_DST_RGB: + case GL_BLEND_DST_ALPHA: + case GL_BLEND_EQUATION_RGB: + case GL_BLEND_EQUATION_ALPHA: + case GL_STENCIL_WRITEMASK: + case GL_STENCIL_BACK_WRITEMASK: + case GL_STENCIL_CLEAR_VALUE: + case GL_SUBPIXEL_BITS: + case GL_MAX_TEXTURE_SIZE: + case GL_MAX_CUBE_MAP_TEXTURE_SIZE: + case GL_SAMPLE_BUFFERS: + case GL_SAMPLES: + case GL_IMPLEMENTATION_COLOR_READ_TYPE: + case GL_IMPLEMENTATION_COLOR_READ_FORMAT: + case GL_TEXTURE_BINDING_2D: + case GL_TEXTURE_BINDING_CUBE_MAP: + case GL_RESET_NOTIFICATION_STRATEGY_EXT: + case GL_NUM_PROGRAM_BINARY_FORMATS_OES: + case GL_PROGRAM_BINARY_FORMATS_OES: + { + *type = GL_INT; + *numParams = 1; + } + break; + case GL_MAX_SAMPLES_ANGLE: + { + if (getMaxSupportedSamples() != 0) + { + *type = GL_INT; + *numParams = 1; + } + else + { + return false; + } + } + break; + case GL_MAX_VIEWPORT_DIMS: + { + *type = GL_INT; + *numParams = 2; + } + break; + case GL_VIEWPORT: + case GL_SCISSOR_BOX: + { + *type = GL_INT; + *numParams = 4; + } + break; + case GL_SHADER_COMPILER: + case GL_SAMPLE_COVERAGE_INVERT: + case GL_DEPTH_WRITEMASK: + case GL_CULL_FACE: // CULL_FACE through DITHER are natural to IsEnabled, + case GL_POLYGON_OFFSET_FILL: // but can be retrieved through the Get{Type}v queries. + case GL_SAMPLE_ALPHA_TO_COVERAGE: // For this purpose, they are treated here as bool-natural + case GL_SAMPLE_COVERAGE: + case GL_SCISSOR_TEST: + case GL_STENCIL_TEST: + case GL_DEPTH_TEST: + case GL_BLEND: + case GL_DITHER: + case GL_CONTEXT_ROBUST_ACCESS_EXT: + { + *type = GL_BOOL; + *numParams = 1; + } + break; + case GL_COLOR_WRITEMASK: + { + *type = GL_BOOL; + *numParams = 4; + } + break; + case GL_POLYGON_OFFSET_FACTOR: + case GL_POLYGON_OFFSET_UNITS: + case GL_SAMPLE_COVERAGE_VALUE: + case GL_DEPTH_CLEAR_VALUE: + case GL_LINE_WIDTH: + { + *type = GL_FLOAT; + *numParams = 1; + } + break; + case GL_ALIASED_LINE_WIDTH_RANGE: + case GL_ALIASED_POINT_SIZE_RANGE: + case GL_DEPTH_RANGE: + { + *type = GL_FLOAT; + *numParams = 2; + } + break; + case GL_COLOR_CLEAR_VALUE: + case GL_BLEND_COLOR: + { + *type = GL_FLOAT; + *numParams = 4; + } + break; + case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: + if (!supportsTextureFilterAnisotropy()) + { + return false; + } + *type = GL_FLOAT; + *numParams = 1; + break; + default: + return false; + } + + return true; +} + +// Applies the render target surface, depth stencil surface, viewport rectangle and +// scissor rectangle to the renderer +bool Context::applyRenderTarget(GLenum drawMode, bool ignoreViewport) +{ + Framebuffer *framebufferObject = getDrawFramebuffer(); + + if (!framebufferObject || framebufferObject->completeness() != GL_FRAMEBUFFER_COMPLETE) + { + return gl::error(GL_INVALID_FRAMEBUFFER_OPERATION, false); + } + + mRenderer->applyRenderTarget(framebufferObject); + + if (!mRenderer->setViewport(mState.viewport, mState.zNear, mState.zFar, drawMode, mState.rasterizer.frontFace, + ignoreViewport)) + { + return false; + } + + mRenderer->setScissorRectangle(mState.scissor, mState.scissorTest); + + return true; +} + +// Applies the fixed-function state (culling, depth test, alpha blending, stenciling, etc) to the Direct3D 9 device +void Context::applyState(GLenum drawMode) +{ + Framebuffer *framebufferObject = getDrawFramebuffer(); + int samples = framebufferObject->getSamples(); + + mState.rasterizer.pointDrawMode = (drawMode == GL_POINTS); + mState.rasterizer.multiSample = (samples != 0); + mRenderer->setRasterizerState(mState.rasterizer); + + unsigned int mask = 0; + if (mState.sampleCoverage) + { + if (mState.sampleCoverageValue != 0) + { + + float threshold = 0.5f; + + for (int i = 0; i < samples; ++i) + { + mask <<= 1; + + if ((i + 1) * mState.sampleCoverageValue >= threshold) + { + threshold += 1.0f; + mask |= 1; + } + } + } + + if (mState.sampleCoverageInvert) + { + mask = ~mask; + } + } + else + { + mask = 0xFFFFFFFF; + } + mRenderer->setBlendState(mState.blend, mState.blendColor, mask); + + mRenderer->setDepthStencilState(mState.depthStencil, mState.stencilRef, mState.stencilBackRef, + mState.rasterizer.frontFace == GL_CCW); +} + +// Applies the shaders and shader constants to the Direct3D 9 device +void Context::applyShaders() +{ + ProgramBinary *programBinary = getCurrentProgramBinary(); + + mRenderer->applyShaders(programBinary); + + programBinary->applyUniforms(); +} + +// Applies the textures and sampler states to the Direct3D 9 device +void Context::applyTextures() +{ + applyTextures(SAMPLER_PIXEL); + + if (mSupportsVertexTexture) + { + applyTextures(SAMPLER_VERTEX); + } +} + +// For each Direct3D 9 sampler of either the pixel or vertex stage, +// looks up the corresponding OpenGL texture image unit and texture type, +// and sets the texture and its addressing/filtering state (or NULL when inactive). +void Context::applyTextures(SamplerType type) +{ + ProgramBinary *programBinary = getCurrentProgramBinary(); + + // Range of Direct3D samplers of given sampler type + int samplerCount = (type == SAMPLER_PIXEL) ? MAX_TEXTURE_IMAGE_UNITS : mRenderer->getMaxVertexTextureImageUnits(); + int samplerRange = programBinary->getUsedSamplerRange(type); + + for (int samplerIndex = 0; samplerIndex < samplerRange; samplerIndex++) + { + int textureUnit = programBinary->getSamplerMapping(type, samplerIndex); // OpenGL texture image unit index + + if (textureUnit != -1) + { + TextureType textureType = programBinary->getSamplerTextureType(type, samplerIndex); + Texture *texture = getSamplerTexture(textureUnit, textureType); + + if (texture->isSamplerComplete()) + { + SamplerState samplerState; + texture->getSamplerState(&samplerState); + mRenderer->setSamplerState(type, samplerIndex, samplerState); + + mRenderer->setTexture(type, samplerIndex, texture); + + texture->resetDirty(); + } + else + { + mRenderer->setTexture(type, samplerIndex, getIncompleteTexture(textureType)); + } + } + else + { + mRenderer->setTexture(type, samplerIndex, NULL); + } + } + + for (int samplerIndex = samplerRange; samplerIndex < samplerCount; samplerIndex++) + { + mRenderer->setTexture(type, samplerIndex, NULL); + } +} + +void Context::readPixels(GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, GLsizei *bufSize, void* pixels) +{ + Framebuffer *framebuffer = getReadFramebuffer(); + + if (framebuffer->completeness() != GL_FRAMEBUFFER_COMPLETE) + { + return gl::error(GL_INVALID_FRAMEBUFFER_OPERATION); + } + + if (getReadFramebufferHandle() != 0 && framebuffer->getSamples() != 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + GLsizei outputPitch = ComputePitch(width, ConvertSizedInternalFormat(format, type), getPackAlignment()); + // sized query sanity check + if (bufSize) + { + int requiredSize = outputPitch * height; + if (requiredSize > *bufSize) + { + return gl::error(GL_INVALID_OPERATION); + } + } + + mRenderer->readPixels(framebuffer, x, y, width, height, format, type, outputPitch, getPackReverseRowOrder(), getPackAlignment(), pixels); +} + +void Context::clear(GLbitfield mask) +{ + Framebuffer *framebufferObject = getDrawFramebuffer(); + + if (!framebufferObject || framebufferObject->completeness() != GL_FRAMEBUFFER_COMPLETE) + { + return gl::error(GL_INVALID_FRAMEBUFFER_OPERATION); + } + + DWORD flags = 0; + GLbitfield finalMask = 0; + + if (mask & GL_COLOR_BUFFER_BIT) + { + mask &= ~GL_COLOR_BUFFER_BIT; + + if (framebufferObject->hasEnabledColorAttachment()) + { + finalMask |= GL_COLOR_BUFFER_BIT; + } + } + + if (mask & GL_DEPTH_BUFFER_BIT) + { + mask &= ~GL_DEPTH_BUFFER_BIT; + if (mState.depthStencil.depthMask && framebufferObject->getDepthbufferType() != GL_NONE) + { + finalMask |= GL_DEPTH_BUFFER_BIT; + } + } + + if (mask & GL_STENCIL_BUFFER_BIT) + { + mask &= ~GL_STENCIL_BUFFER_BIT; + if (framebufferObject->getStencilbufferType() != GL_NONE) + { + rx::RenderTarget *depthStencil = framebufferObject->getStencilbuffer()->getDepthStencil(); + if (!depthStencil) + { + ERR("Depth stencil pointer unexpectedly null."); + return; + } + + if (GetStencilSize(depthStencil->getActualFormat()) > 0) + { + finalMask |= GL_STENCIL_BUFFER_BIT; + } + } + } + + if (mask != 0) + { + return gl::error(GL_INVALID_VALUE); + } + + if (!applyRenderTarget(GL_TRIANGLES, true)) // Clips the clear to the scissor rectangle but not the viewport + { + return; + } + + ClearParameters clearParams; + clearParams.mask = finalMask; + clearParams.colorClearValue = mState.colorClearValue; + clearParams.colorMaskRed = mState.blend.colorMaskRed; + clearParams.colorMaskGreen = mState.blend.colorMaskGreen; + clearParams.colorMaskBlue = mState.blend.colorMaskBlue; + clearParams.colorMaskAlpha = mState.blend.colorMaskAlpha; + clearParams.depthClearValue = mState.depthClearValue; + clearParams.stencilClearValue = mState.stencilClearValue; + clearParams.stencilWriteMask = mState.depthStencil.stencilWritemask; + + mRenderer->clear(clearParams, framebufferObject); +} + +void Context::drawArrays(GLenum mode, GLint first, GLsizei count, GLsizei instances) +{ + if (!mState.currentProgram) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!mRenderer->applyPrimitiveType(mode, count)) + { + return; + } + + if (!applyRenderTarget(mode, false)) + { + return; + } + + applyState(mode); + + ProgramBinary *programBinary = getCurrentProgramBinary(); + + GLenum err = mRenderer->applyVertexBuffer(programBinary, mState.vertexAttribute, first, count, instances); + if (err != GL_NO_ERROR) + { + return gl::error(err); + } + + applyShaders(); + applyTextures(); + + if (!programBinary->validateSamplers(NULL)) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!skipDraw(mode)) + { + mRenderer->drawArrays(mode, count, instances); + } +} + +void Context::drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instances) +{ + if (!mState.currentProgram) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!indices && !mState.elementArrayBuffer) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!mRenderer->applyPrimitiveType(mode, count)) + { + return; + } + + if (!applyRenderTarget(mode, false)) + { + return; + } + + applyState(mode); + + rx::TranslatedIndexData indexInfo; + GLenum err = mRenderer->applyIndexBuffer(indices, mState.elementArrayBuffer.get(), count, mode, type, &indexInfo); + if (err != GL_NO_ERROR) + { + return gl::error(err); + } + + ProgramBinary *programBinary = getCurrentProgramBinary(); + + GLsizei vertexCount = indexInfo.maxIndex - indexInfo.minIndex + 1; + err = mRenderer->applyVertexBuffer(programBinary, mState.vertexAttribute, indexInfo.minIndex, vertexCount, instances); + if (err != GL_NO_ERROR) + { + return gl::error(err); + } + + applyShaders(); + applyTextures(); + + if (!programBinary->validateSamplers(NULL)) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!skipDraw(mode)) + { + mRenderer->drawElements(mode, count, type, indices, mState.elementArrayBuffer.get(), indexInfo, instances); + } +} + +// Implements glFlush when block is false, glFinish when block is true +void Context::sync(bool block) +{ + mRenderer->sync(block); +} + +void Context::recordInvalidEnum() +{ + mInvalidEnum = true; +} + +void Context::recordInvalidValue() +{ + mInvalidValue = true; +} + +void Context::recordInvalidOperation() +{ + mInvalidOperation = true; +} + +void Context::recordOutOfMemory() +{ + mOutOfMemory = true; +} + +void Context::recordInvalidFramebufferOperation() +{ + mInvalidFramebufferOperation = true; +} + +// Get one of the recorded errors and clear its flag, if any. +// [OpenGL ES 2.0.24] section 2.5 page 13. +GLenum Context::getError() +{ + if (mInvalidEnum) + { + mInvalidEnum = false; + + return GL_INVALID_ENUM; + } + + if (mInvalidValue) + { + mInvalidValue = false; + + return GL_INVALID_VALUE; + } + + if (mInvalidOperation) + { + mInvalidOperation = false; + + return GL_INVALID_OPERATION; + } + + if (mOutOfMemory) + { + mOutOfMemory = false; + + return GL_OUT_OF_MEMORY; + } + + if (mInvalidFramebufferOperation) + { + mInvalidFramebufferOperation = false; + + return GL_INVALID_FRAMEBUFFER_OPERATION; + } + + return GL_NO_ERROR; +} + +GLenum Context::getResetStatus() +{ + if (mResetStatus == GL_NO_ERROR && !mContextLost) + { + // mResetStatus will be set by the markContextLost callback + // in the case a notification is sent + mRenderer->testDeviceLost(true); + } + + GLenum status = mResetStatus; + + if (mResetStatus != GL_NO_ERROR) + { + ASSERT(mContextLost); + + if (mRenderer->testDeviceResettable()) + { + mResetStatus = GL_NO_ERROR; + } + } + + return status; +} + +bool Context::isResetNotificationEnabled() +{ + return (mResetStrategy == GL_LOSE_CONTEXT_ON_RESET_EXT); +} + +int Context::getMajorShaderModel() const +{ + return mMajorShaderModel; +} + +float Context::getMaximumPointSize() const +{ + return mMaximumPointSize; +} + +unsigned int Context::getMaximumCombinedTextureImageUnits() const +{ + return mRenderer->getMaxCombinedTextureImageUnits(); +} + +int Context::getMaxSupportedSamples() const +{ + return mRenderer->getMaxSupportedSamples(); +} + +unsigned int Context::getMaximumRenderTargets() const +{ + return mRenderer->getMaxRenderTargets(); +} + +bool Context::supportsEventQueries() const +{ + return mSupportsEventQueries; +} + +bool Context::supportsOcclusionQueries() const +{ + return mSupportsOcclusionQueries; +} + +bool Context::supportsBGRATextures() const +{ + return mSupportsBGRATextures; +} + +bool Context::supportsDXT1Textures() const +{ + return mSupportsDXT1Textures; +} + +bool Context::supportsDXT3Textures() const +{ + return mSupportsDXT3Textures; +} + +bool Context::supportsDXT5Textures() const +{ + return mSupportsDXT5Textures; +} + +bool Context::supportsFloat32Textures() const +{ + return mSupportsFloat32Textures; +} + +bool Context::supportsFloat32LinearFilter() const +{ + return mSupportsFloat32LinearFilter; +} + +bool Context::supportsFloat32RenderableTextures() const +{ + return mSupportsFloat32RenderableTextures; +} + +bool Context::supportsFloat16Textures() const +{ + return mSupportsFloat16Textures; +} + +bool Context::supportsFloat16LinearFilter() const +{ + return mSupportsFloat16LinearFilter; +} + +bool Context::supportsFloat16RenderableTextures() const +{ + return mSupportsFloat16RenderableTextures; +} + +int Context::getMaximumRenderbufferDimension() const +{ + return mMaxRenderbufferDimension; +} + +int Context::getMaximumTextureDimension() const +{ + return mMaxTextureDimension; +} + +int Context::getMaximumCubeTextureDimension() const +{ + return mMaxCubeTextureDimension; +} + +int Context::getMaximumTextureLevel() const +{ + return mMaxTextureLevel; +} + +bool Context::supportsLuminanceTextures() const +{ + return mSupportsLuminanceTextures; +} + +bool Context::supportsLuminanceAlphaTextures() const +{ + return mSupportsLuminanceAlphaTextures; +} + +bool Context::supportsDepthTextures() const +{ + return mSupportsDepthTextures; +} + +bool Context::supports32bitIndices() const +{ + return mSupports32bitIndices; +} + +bool Context::supportsNonPower2Texture() const +{ + return mSupportsNonPower2Texture; +} + +bool Context::supportsInstancing() const +{ + return mSupportsInstancing; +} + +bool Context::supportsTextureFilterAnisotropy() const +{ + return mSupportsTextureFilterAnisotropy; +} + +float Context::getTextureMaxAnisotropy() const +{ + return mMaxTextureAnisotropy; +} + +bool Context::getCurrentReadFormatType(GLenum *format, GLenum *type) +{ + Framebuffer *framebuffer = getReadFramebuffer(); + if (!framebuffer || framebuffer->completeness() != GL_FRAMEBUFFER_COMPLETE) + { + return gl::error(GL_INVALID_OPERATION, false); + } + + Renderbuffer *renderbuffer = framebuffer->getReadColorbuffer(); + if (!renderbuffer) + { + return gl::error(GL_INVALID_OPERATION, false); + } + + *format = gl::ExtractFormat(renderbuffer->getActualFormat()); + *type = gl::ExtractType(renderbuffer->getActualFormat()); + + return true; +} + +void Context::detachBuffer(GLuint buffer) +{ + // [OpenGL ES 2.0.24] section 2.9 page 22: + // If a buffer object is deleted while it is bound, all bindings to that object in the current context + // (i.e. in the thread that called Delete-Buffers) are reset to zero. + + if (mState.arrayBuffer.id() == buffer) + { + mState.arrayBuffer.set(NULL); + } + + if (mState.elementArrayBuffer.id() == buffer) + { + mState.elementArrayBuffer.set(NULL); + } + + for (int attribute = 0; attribute < MAX_VERTEX_ATTRIBS; attribute++) + { + if (mState.vertexAttribute[attribute].mBoundBuffer.id() == buffer) + { + mState.vertexAttribute[attribute].mBoundBuffer.set(NULL); + } + } +} + +void Context::detachTexture(GLuint texture) +{ + // [OpenGL ES 2.0.24] section 3.8 page 84: + // If a texture object is deleted, it is as if all texture units which are bound to that texture object are + // rebound to texture object zero + + for (int type = 0; type < TEXTURE_TYPE_COUNT; type++) + { + for (int sampler = 0; sampler < IMPLEMENTATION_MAX_COMBINED_TEXTURE_IMAGE_UNITS; sampler++) + { + if (mState.samplerTexture[type][sampler].id() == texture) + { + mState.samplerTexture[type][sampler].set(NULL); + } + } + } + + // [OpenGL ES 2.0.24] section 4.4 page 112: + // If a texture object is deleted while its image is attached to the currently bound framebuffer, then it is + // as if FramebufferTexture2D had been called, with a texture of 0, for each attachment point to which this + // image was attached in the currently bound framebuffer. + + Framebuffer *readFramebuffer = getReadFramebuffer(); + Framebuffer *drawFramebuffer = getDrawFramebuffer(); + + if (readFramebuffer) + { + readFramebuffer->detachTexture(texture); + } + + if (drawFramebuffer && drawFramebuffer != readFramebuffer) + { + drawFramebuffer->detachTexture(texture); + } +} + +void Context::detachFramebuffer(GLuint framebuffer) +{ + // [OpenGL ES 2.0.24] section 4.4 page 107: + // If a framebuffer that is currently bound to the target FRAMEBUFFER is deleted, it is as though + // BindFramebuffer had been executed with the target of FRAMEBUFFER and framebuffer of zero. + + if (mState.readFramebuffer == framebuffer) + { + bindReadFramebuffer(0); + } + + if (mState.drawFramebuffer == framebuffer) + { + bindDrawFramebuffer(0); + } +} + +void Context::detachRenderbuffer(GLuint renderbuffer) +{ + // [OpenGL ES 2.0.24] section 4.4 page 109: + // If a renderbuffer that is currently bound to RENDERBUFFER is deleted, it is as though BindRenderbuffer + // had been executed with the target RENDERBUFFER and name of zero. + + if (mState.renderbuffer.id() == renderbuffer) + { + bindRenderbuffer(0); + } + + // [OpenGL ES 2.0.24] section 4.4 page 111: + // If a renderbuffer object is deleted while its image is attached to the currently bound framebuffer, + // then it is as if FramebufferRenderbuffer had been called, with a renderbuffer of 0, for each attachment + // point to which this image was attached in the currently bound framebuffer. + + Framebuffer *readFramebuffer = getReadFramebuffer(); + Framebuffer *drawFramebuffer = getDrawFramebuffer(); + + if (readFramebuffer) + { + readFramebuffer->detachRenderbuffer(renderbuffer); + } + + if (drawFramebuffer && drawFramebuffer != readFramebuffer) + { + drawFramebuffer->detachRenderbuffer(renderbuffer); + } +} + +Texture *Context::getIncompleteTexture(TextureType type) +{ + Texture *t = mIncompleteTextures[type].get(); + + if (t == NULL) + { + static const GLubyte color[] = { 0, 0, 0, 255 }; + + switch (type) + { + default: + UNREACHABLE(); + // default falls through to TEXTURE_2D + + case TEXTURE_2D: + { + Texture2D *incomplete2d = new Texture2D(mRenderer, Texture::INCOMPLETE_TEXTURE_ID); + incomplete2d->setImage(0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, 1, color); + t = incomplete2d; + } + break; + + case TEXTURE_CUBE: + { + TextureCubeMap *incompleteCube = new TextureCubeMap(mRenderer, Texture::INCOMPLETE_TEXTURE_ID); + + incompleteCube->setImagePosX(0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, 1, color); + incompleteCube->setImageNegX(0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, 1, color); + incompleteCube->setImagePosY(0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, 1, color); + incompleteCube->setImageNegY(0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, 1, color); + incompleteCube->setImagePosZ(0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, 1, color); + incompleteCube->setImageNegZ(0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, 1, color); + + t = incompleteCube; + } + break; + } + + mIncompleteTextures[type].set(t); + } + + return t; +} + +bool Context::skipDraw(GLenum drawMode) +{ + if (drawMode == GL_POINTS) + { + // ProgramBinary assumes non-point rendering if gl_PointSize isn't written, + // which affects varying interpolation. Since the value of gl_PointSize is + // undefined when not written, just skip drawing to avoid unexpected results. + if (!getCurrentProgramBinary()->usesPointSize()) + { + // This is stictly speaking not an error, but developers should be + // notified of risking undefined behavior. + ERR("Point rendering without writing to gl_PointSize."); + + return true; + } + } + else if (IsTriangleMode(drawMode)) + { + if (mState.rasterizer.cullFace && mState.rasterizer.cullMode == GL_FRONT_AND_BACK) + { + return true; + } + } + + return false; +} + +void Context::setVertexAttrib(GLuint index, const GLfloat *values) +{ + ASSERT(index < gl::MAX_VERTEX_ATTRIBS); + + mState.vertexAttribute[index].mCurrentValue[0] = values[0]; + mState.vertexAttribute[index].mCurrentValue[1] = values[1]; + mState.vertexAttribute[index].mCurrentValue[2] = values[2]; + mState.vertexAttribute[index].mCurrentValue[3] = values[3]; +} + +void Context::setVertexAttribDivisor(GLuint index, GLuint divisor) +{ + ASSERT(index < gl::MAX_VERTEX_ATTRIBS); + + mState.vertexAttribute[index].mDivisor = divisor; +} + +// keep list sorted in following order +// OES extensions +// EXT extensions +// Vendor extensions +void Context::initExtensionString() +{ + std::string extensionString = ""; + + // OES extensions + if (supports32bitIndices()) + { + extensionString += "GL_OES_element_index_uint "; + } + + extensionString += "GL_OES_packed_depth_stencil "; + extensionString += "GL_OES_get_program_binary "; + extensionString += "GL_OES_rgb8_rgba8 "; + if (mRenderer->getDerivativeInstructionSupport()) + { + extensionString += "GL_OES_standard_derivatives "; + } + + if (supportsFloat16Textures()) + { + extensionString += "GL_OES_texture_half_float "; + } + if (supportsFloat16LinearFilter()) + { + extensionString += "GL_OES_texture_half_float_linear "; + } + if (supportsFloat32Textures()) + { + extensionString += "GL_OES_texture_float "; + } + if (supportsFloat32LinearFilter()) + { + extensionString += "GL_OES_texture_float_linear "; + } + + if (supportsNonPower2Texture()) + { + extensionString += "GL_OES_texture_npot "; + } + + // Multi-vendor (EXT) extensions + if (supportsOcclusionQueries()) + { + extensionString += "GL_EXT_occlusion_query_boolean "; + } + + extensionString += "GL_EXT_read_format_bgra "; + extensionString += "GL_EXT_robustness "; + + if (supportsDXT1Textures()) + { + extensionString += "GL_EXT_texture_compression_dxt1 "; + } + + if (supportsTextureFilterAnisotropy()) + { + extensionString += "GL_EXT_texture_filter_anisotropic "; + } + + if (supportsBGRATextures()) + { + extensionString += "GL_EXT_texture_format_BGRA8888 "; + } + + if (mRenderer->getMaxRenderTargets() > 1) + { + extensionString += "GL_EXT_draw_buffers "; + } + + extensionString += "GL_EXT_texture_storage "; + extensionString += "GL_EXT_frag_depth "; + + // ANGLE-specific extensions + if (supportsDepthTextures()) + { + extensionString += "GL_ANGLE_depth_texture "; + } + + extensionString += "GL_ANGLE_framebuffer_blit "; + if (getMaxSupportedSamples() != 0) + { + extensionString += "GL_ANGLE_framebuffer_multisample "; + } + + if (supportsInstancing()) + { + extensionString += "GL_ANGLE_instanced_arrays "; + } + + extensionString += "GL_ANGLE_pack_reverse_row_order "; + + if (supportsDXT3Textures()) + { + extensionString += "GL_ANGLE_texture_compression_dxt3 "; + } + if (supportsDXT5Textures()) + { + extensionString += "GL_ANGLE_texture_compression_dxt5 "; + } + + extensionString += "GL_ANGLE_texture_usage "; + extensionString += "GL_ANGLE_translated_shader_source "; + + // Other vendor-specific extensions + if (supportsEventQueries()) + { + extensionString += "GL_NV_fence "; + } + + std::string::size_type end = extensionString.find_last_not_of(' '); + if (end != std::string::npos) + { + extensionString.resize(end+1); + } + + mExtensionString = makeStaticString(extensionString); +} + +const char *Context::getExtensionString() const +{ + return mExtensionString; +} + +void Context::initRendererString() +{ + std::ostringstream rendererString; + rendererString << "ANGLE ("; + rendererString << mRenderer->getRendererDescription(); + rendererString << ")"; + + mRendererString = makeStaticString(rendererString.str()); +} + +const char *Context::getRendererString() const +{ + return mRendererString; +} + +void Context::blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, + GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, + GLbitfield mask) +{ + Framebuffer *readFramebuffer = getReadFramebuffer(); + Framebuffer *drawFramebuffer = getDrawFramebuffer(); + + if (!readFramebuffer || readFramebuffer->completeness() != GL_FRAMEBUFFER_COMPLETE || + !drawFramebuffer || drawFramebuffer->completeness() != GL_FRAMEBUFFER_COMPLETE) + { + return gl::error(GL_INVALID_FRAMEBUFFER_OPERATION); + } + + if (drawFramebuffer->getSamples() != 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + Renderbuffer *readColorBuffer = readFramebuffer->getReadColorbuffer(); + Renderbuffer *drawColorBuffer = drawFramebuffer->getFirstColorbuffer(); + + if (drawColorBuffer == NULL) + { + ERR("Draw buffers formats don't match, which is not supported in this implementation of BlitFramebufferANGLE"); + return gl::error(GL_INVALID_OPERATION); + } + + int readBufferWidth = readColorBuffer->getWidth(); + int readBufferHeight = readColorBuffer->getHeight(); + int drawBufferWidth = drawColorBuffer->getWidth(); + int drawBufferHeight = drawColorBuffer->getHeight(); + + Rectangle sourceRect; + Rectangle destRect; + + if (srcX0 < srcX1) + { + sourceRect.x = srcX0; + destRect.x = dstX0; + sourceRect.width = srcX1 - srcX0; + destRect.width = dstX1 - dstX0; + } + else + { + sourceRect.x = srcX1; + destRect.x = dstX1; + sourceRect.width = srcX0 - srcX1; + destRect.width = dstX0 - dstX1; + } + + if (srcY0 < srcY1) + { + sourceRect.height = srcY1 - srcY0; + destRect.height = dstY1 - dstY0; + sourceRect.y = srcY0; + destRect.y = dstY0; + } + else + { + sourceRect.height = srcY0 - srcY1; + destRect.height = dstY0 - srcY1; + sourceRect.y = srcY1; + destRect.y = dstY1; + } + + Rectangle sourceScissoredRect = sourceRect; + Rectangle destScissoredRect = destRect; + + if (mState.scissorTest) + { + // Only write to parts of the destination framebuffer which pass the scissor test. + if (destRect.x < mState.scissor.x) + { + int xDiff = mState.scissor.x - destRect.x; + destScissoredRect.x = mState.scissor.x; + destScissoredRect.width -= xDiff; + sourceScissoredRect.x += xDiff; + sourceScissoredRect.width -= xDiff; + + } + + if (destRect.x + destRect.width > mState.scissor.x + mState.scissor.width) + { + int xDiff = (destRect.x + destRect.width) - (mState.scissor.x + mState.scissor.width); + destScissoredRect.width -= xDiff; + sourceScissoredRect.width -= xDiff; + } + + if (destRect.y < mState.scissor.y) + { + int yDiff = mState.scissor.y - destRect.y; + destScissoredRect.y = mState.scissor.y; + destScissoredRect.height -= yDiff; + sourceScissoredRect.y += yDiff; + sourceScissoredRect.height -= yDiff; + } + + if (destRect.y + destRect.height > mState.scissor.y + mState.scissor.height) + { + int yDiff = (destRect.y + destRect.height) - (mState.scissor.y + mState.scissor.height); + destScissoredRect.height -= yDiff; + sourceScissoredRect.height -= yDiff; + } + } + + bool blitRenderTarget = false; + bool blitDepthStencil = false; + + Rectangle sourceTrimmedRect = sourceScissoredRect; + Rectangle destTrimmedRect = destScissoredRect; + + // The source & destination rectangles also may need to be trimmed if they fall out of the bounds of + // the actual draw and read surfaces. + if (sourceTrimmedRect.x < 0) + { + int xDiff = 0 - sourceTrimmedRect.x; + sourceTrimmedRect.x = 0; + sourceTrimmedRect.width -= xDiff; + destTrimmedRect.x += xDiff; + destTrimmedRect.width -= xDiff; + } + + if (sourceTrimmedRect.x + sourceTrimmedRect.width > readBufferWidth) + { + int xDiff = (sourceTrimmedRect.x + sourceTrimmedRect.width) - readBufferWidth; + sourceTrimmedRect.width -= xDiff; + destTrimmedRect.width -= xDiff; + } + + if (sourceTrimmedRect.y < 0) + { + int yDiff = 0 - sourceTrimmedRect.y; + sourceTrimmedRect.y = 0; + sourceTrimmedRect.height -= yDiff; + destTrimmedRect.y += yDiff; + destTrimmedRect.height -= yDiff; + } + + if (sourceTrimmedRect.y + sourceTrimmedRect.height > readBufferHeight) + { + int yDiff = (sourceTrimmedRect.y + sourceTrimmedRect.height) - readBufferHeight; + sourceTrimmedRect.height -= yDiff; + destTrimmedRect.height -= yDiff; + } + + if (destTrimmedRect.x < 0) + { + int xDiff = 0 - destTrimmedRect.x; + destTrimmedRect.x = 0; + destTrimmedRect.width -= xDiff; + sourceTrimmedRect.x += xDiff; + sourceTrimmedRect.width -= xDiff; + } + + if (destTrimmedRect.x + destTrimmedRect.width > drawBufferWidth) + { + int xDiff = (destTrimmedRect.x + destTrimmedRect.width) - drawBufferWidth; + destTrimmedRect.width -= xDiff; + sourceTrimmedRect.width -= xDiff; + } + + if (destTrimmedRect.y < 0) + { + int yDiff = 0 - destTrimmedRect.y; + destTrimmedRect.y = 0; + destTrimmedRect.height -= yDiff; + sourceTrimmedRect.y += yDiff; + sourceTrimmedRect.height -= yDiff; + } + + if (destTrimmedRect.y + destTrimmedRect.height > drawBufferHeight) + { + int yDiff = (destTrimmedRect.y + destTrimmedRect.height) - drawBufferHeight; + destTrimmedRect.height -= yDiff; + sourceTrimmedRect.height -= yDiff; + } + + bool partialBufferCopy = false; + if (sourceTrimmedRect.height < readBufferHeight || + sourceTrimmedRect.width < readBufferWidth || + destTrimmedRect.height < drawBufferHeight || + destTrimmedRect.width < drawBufferWidth || + sourceTrimmedRect.y != 0 || destTrimmedRect.y != 0 || sourceTrimmedRect.x != 0 || destTrimmedRect.x != 0) + { + partialBufferCopy = true; + } + + if (mask & GL_COLOR_BUFFER_BIT) + { + const GLenum readColorbufferType = readFramebuffer->getReadColorbufferType(); + const bool validReadType = (readColorbufferType == GL_TEXTURE_2D) || (readColorbufferType == GL_RENDERBUFFER); + bool validDrawType = true; + bool validDrawFormat = true; + + for (unsigned int colorAttachment = 0; colorAttachment < gl::IMPLEMENTATION_MAX_DRAW_BUFFERS; colorAttachment++) + { + if (drawFramebuffer->isEnabledColorAttachment(colorAttachment)) + { + if (drawFramebuffer->getColorbufferType(colorAttachment) != GL_TEXTURE_2D && + drawFramebuffer->getColorbufferType(colorAttachment) != GL_RENDERBUFFER) + { + validDrawType = false; + } + + if (drawFramebuffer->getColorbuffer(colorAttachment)->getActualFormat() != readColorBuffer->getActualFormat()) + { + validDrawFormat = false; + } + } + } + + if (!validReadType || !validDrawType || !validDrawFormat) + { + ERR("Color buffer format conversion in BlitFramebufferANGLE not supported by this implementation"); + return gl::error(GL_INVALID_OPERATION); + } + + if (partialBufferCopy && readFramebuffer->getSamples() != 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + blitRenderTarget = true; + + } + + if (mask & (GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)) + { + Renderbuffer *readDSBuffer = NULL; + Renderbuffer *drawDSBuffer = NULL; + + // We support OES_packed_depth_stencil, and do not support a separately attached depth and stencil buffer, so if we have + // both a depth and stencil buffer, it will be the same buffer. + + if (mask & GL_DEPTH_BUFFER_BIT) + { + if (readFramebuffer->getDepthbuffer() && drawFramebuffer->getDepthbuffer()) + { + if (readFramebuffer->getDepthbufferType() != drawFramebuffer->getDepthbufferType() || + readFramebuffer->getDepthbuffer()->getActualFormat() != drawFramebuffer->getDepthbuffer()->getActualFormat()) + { + return gl::error(GL_INVALID_OPERATION); + } + + blitDepthStencil = true; + readDSBuffer = readFramebuffer->getDepthbuffer(); + drawDSBuffer = drawFramebuffer->getDepthbuffer(); + } + } + + if (mask & GL_STENCIL_BUFFER_BIT) + { + if (readFramebuffer->getStencilbuffer() && drawFramebuffer->getStencilbuffer()) + { + if (readFramebuffer->getStencilbufferType() != drawFramebuffer->getStencilbufferType() || + readFramebuffer->getStencilbuffer()->getActualFormat() != drawFramebuffer->getStencilbuffer()->getActualFormat()) + { + return gl::error(GL_INVALID_OPERATION); + } + + blitDepthStencil = true; + readDSBuffer = readFramebuffer->getStencilbuffer(); + drawDSBuffer = drawFramebuffer->getStencilbuffer(); + } + } + + if (partialBufferCopy) + { + ERR("Only whole-buffer depth and stencil blits are supported by this implementation."); + return gl::error(GL_INVALID_OPERATION); // only whole-buffer copies are permitted + } + + if ((drawDSBuffer && drawDSBuffer->getSamples() != 0) || + (readDSBuffer && readDSBuffer->getSamples() != 0)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + + if (blitRenderTarget || blitDepthStencil) + { + mRenderer->blitRect(readFramebuffer, sourceTrimmedRect, drawFramebuffer, destTrimmedRect, blitRenderTarget, blitDepthStencil); + } +} + +} + +extern "C" +{ +gl::Context *glCreateContext(const gl::Context *shareContext, rx::Renderer *renderer, bool notifyResets, bool robustAccess) +{ + return new gl::Context(shareContext, renderer, notifyResets, robustAccess); +} + +void glDestroyContext(gl::Context *context) +{ + delete context; + + if (context == gl::getContext()) + { + gl::makeCurrent(NULL, NULL, NULL); + } +} + +void glMakeCurrent(gl::Context *context, egl::Display *display, egl::Surface *surface) +{ + gl::makeCurrent(context, display, surface); +} + +gl::Context *glGetCurrentContext() +{ + return gl::getContext(); +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Context.h b/Source/ThirdParty/ANGLE/src/libGLESv2/Context.h new file mode 100644 index 00000000000..9c222be24d7 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Context.h @@ -0,0 +1,505 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Context.h: Defines the gl::Context class, managing all GL state and performing +// rendering operations. It is the GLES2 specific implementation of EGLContext. + +#ifndef LIBGLESV2_CONTEXT_H_ +#define LIBGLESV2_CONTEXT_H_ + +#define GL_APICALL +#include +#include +#define EGLAPI +#include + +#include +#include +#ifdef _MSC_VER +#include +#else +#include +#endif + +#include "common/angleutils.h" +#include "common/RefCountObject.h" +#include "libGLESv2/HandleAllocator.h" +#include "libGLESv2/angletypes.h" +#include "libGLESv2/Constants.h" + +namespace rx +{ +class Renderer; +} + +namespace egl +{ +class Display; +class Surface; +} + +namespace gl +{ +class Shader; +class Program; +class ProgramBinary; +class Texture; +class Texture2D; +class TextureCubeMap; +class Framebuffer; +class Renderbuffer; +class RenderbufferStorage; +class Colorbuffer; +class Depthbuffer; +class Stencilbuffer; +class DepthStencilbuffer; +class Fence; +class Query; +class ResourceManager; +class Buffer; + +enum QueryType +{ + QUERY_ANY_SAMPLES_PASSED, + QUERY_ANY_SAMPLES_PASSED_CONSERVATIVE, + + QUERY_TYPE_COUNT +}; + +// Helper structure describing a single vertex attribute +class VertexAttribute +{ + public: + VertexAttribute() : mType(GL_FLOAT), mSize(0), mNormalized(false), mStride(0), mPointer(NULL), mArrayEnabled(false), mDivisor(0) + { + mCurrentValue[0] = 0.0f; + mCurrentValue[1] = 0.0f; + mCurrentValue[2] = 0.0f; + mCurrentValue[3] = 1.0f; + } + + int typeSize() const + { + switch (mType) + { + case GL_BYTE: return mSize * sizeof(GLbyte); + case GL_UNSIGNED_BYTE: return mSize * sizeof(GLubyte); + case GL_SHORT: return mSize * sizeof(GLshort); + case GL_UNSIGNED_SHORT: return mSize * sizeof(GLushort); + case GL_FIXED: return mSize * sizeof(GLfixed); + case GL_FLOAT: return mSize * sizeof(GLfloat); + default: UNREACHABLE(); return mSize * sizeof(GLfloat); + } + } + + GLsizei stride() const + { + return mStride ? mStride : typeSize(); + } + + // From glVertexAttribPointer + GLenum mType; + GLint mSize; + bool mNormalized; + GLsizei mStride; // 0 means natural stride + + union + { + const void *mPointer; + intptr_t mOffset; + }; + + BindingPointer mBoundBuffer; // Captured when glVertexAttribPointer is called. + + bool mArrayEnabled; // From glEnable/DisableVertexAttribArray + float mCurrentValue[4]; // From glVertexAttrib + unsigned int mDivisor; +}; + +// Helper structure to store all raw state +struct State +{ + Color colorClearValue; + GLclampf depthClearValue; + int stencilClearValue; + + RasterizerState rasterizer; + bool scissorTest; + Rectangle scissor; + + BlendState blend; + Color blendColor; + bool sampleCoverage; + GLclampf sampleCoverageValue; + bool sampleCoverageInvert; + + DepthStencilState depthStencil; + GLint stencilRef; + GLint stencilBackRef; + + GLfloat lineWidth; + + GLenum generateMipmapHint; + GLenum fragmentShaderDerivativeHint; + + Rectangle viewport; + float zNear; + float zFar; + + unsigned int activeSampler; // Active texture unit selector - GL_TEXTURE0 + BindingPointer arrayBuffer; + BindingPointer elementArrayBuffer; + GLuint readFramebuffer; + GLuint drawFramebuffer; + BindingPointer renderbuffer; + GLuint currentProgram; + + VertexAttribute vertexAttribute[MAX_VERTEX_ATTRIBS]; + BindingPointer samplerTexture[TEXTURE_TYPE_COUNT][IMPLEMENTATION_MAX_COMBINED_TEXTURE_IMAGE_UNITS]; + BindingPointer activeQuery[QUERY_TYPE_COUNT]; + + GLint unpackAlignment; + GLint packAlignment; + bool packReverseRowOrder; +}; + +class Context +{ + public: + Context(const gl::Context *shareContext, rx::Renderer *renderer, bool notifyResets, bool robustAccess); + + ~Context(); + + void makeCurrent(egl::Surface *surface); + + virtual void markContextLost(); + bool isContextLost(); + + // State manipulation + void setClearColor(float red, float green, float blue, float alpha); + + void setClearDepth(float depth); + + void setClearStencil(int stencil); + + void setCullFace(bool enabled); + bool isCullFaceEnabled() const; + + void setCullMode(GLenum mode); + + void setFrontFace(GLenum front); + + void setDepthTest(bool enabled); + bool isDepthTestEnabled() const; + + void setDepthFunc(GLenum depthFunc); + + void setDepthRange(float zNear, float zFar); + + void setBlend(bool enabled); + bool isBlendEnabled() const; + + void setBlendFactors(GLenum sourceRGB, GLenum destRGB, GLenum sourceAlpha, GLenum destAlpha); + void setBlendColor(float red, float green, float blue, float alpha); + void setBlendEquation(GLenum rgbEquation, GLenum alphaEquation); + + void setStencilTest(bool enabled); + bool isStencilTestEnabled() const; + + void setStencilParams(GLenum stencilFunc, GLint stencilRef, GLuint stencilMask); + void setStencilBackParams(GLenum stencilBackFunc, GLint stencilBackRef, GLuint stencilBackMask); + void setStencilWritemask(GLuint stencilWritemask); + void setStencilBackWritemask(GLuint stencilBackWritemask); + void setStencilOperations(GLenum stencilFail, GLenum stencilPassDepthFail, GLenum stencilPassDepthPass); + void setStencilBackOperations(GLenum stencilBackFail, GLenum stencilBackPassDepthFail, GLenum stencilBackPassDepthPass); + + void setPolygonOffsetFill(bool enabled); + bool isPolygonOffsetFillEnabled() const; + + void setPolygonOffsetParams(GLfloat factor, GLfloat units); + + void setSampleAlphaToCoverage(bool enabled); + bool isSampleAlphaToCoverageEnabled() const; + + void setSampleCoverage(bool enabled); + bool isSampleCoverageEnabled() const; + + void setSampleCoverageParams(GLclampf value, bool invert); + + void setScissorTest(bool enabled); + bool isScissorTestEnabled() const; + + void setDither(bool enabled); + bool isDitherEnabled() const; + + void setLineWidth(GLfloat width); + + void setGenerateMipmapHint(GLenum hint); + void setFragmentShaderDerivativeHint(GLenum hint); + + void setViewportParams(GLint x, GLint y, GLsizei width, GLsizei height); + + void setScissorParams(GLint x, GLint y, GLsizei width, GLsizei height); + + void setColorMask(bool red, bool green, bool blue, bool alpha); + void setDepthMask(bool mask); + + void setActiveSampler(unsigned int active); + + GLuint getReadFramebufferHandle() const; + GLuint getDrawFramebufferHandle() const; + GLuint getRenderbufferHandle() const; + + GLuint getArrayBufferHandle() const; + + GLuint getActiveQuery(GLenum target) const; + + void setEnableVertexAttribArray(unsigned int attribNum, bool enabled); + const VertexAttribute &getVertexAttribState(unsigned int attribNum); + void setVertexAttribState(unsigned int attribNum, Buffer *boundBuffer, GLint size, GLenum type, + bool normalized, GLsizei stride, const void *pointer); + const void *getVertexAttribPointer(unsigned int attribNum) const; + + void setUnpackAlignment(GLint alignment); + GLint getUnpackAlignment() const; + + void setPackAlignment(GLint alignment); + GLint getPackAlignment() const; + + void setPackReverseRowOrder(bool reverseRowOrder); + bool getPackReverseRowOrder() const; + + // These create and destroy methods are merely pass-throughs to + // ResourceManager, which owns these object types + GLuint createBuffer(); + GLuint createShader(GLenum type); + GLuint createProgram(); + GLuint createTexture(); + GLuint createRenderbuffer(); + + void deleteBuffer(GLuint buffer); + void deleteShader(GLuint shader); + void deleteProgram(GLuint program); + void deleteTexture(GLuint texture); + void deleteRenderbuffer(GLuint renderbuffer); + + // Framebuffers are owned by the Context, so these methods do not pass through + GLuint createFramebuffer(); + void deleteFramebuffer(GLuint framebuffer); + + // Fences are owned by the Context. + GLuint createFence(); + void deleteFence(GLuint fence); + + // Queries are owned by the Context; + GLuint createQuery(); + void deleteQuery(GLuint query); + + void bindArrayBuffer(GLuint buffer); + void bindElementArrayBuffer(GLuint buffer); + void bindTexture2D(GLuint texture); + void bindTextureCubeMap(GLuint texture); + void bindReadFramebuffer(GLuint framebuffer); + void bindDrawFramebuffer(GLuint framebuffer); + void bindRenderbuffer(GLuint renderbuffer); + void useProgram(GLuint program); + void linkProgram(GLuint program); + void setProgramBinary(GLuint program, const void *binary, GLint length); + + void beginQuery(GLenum target, GLuint query); + void endQuery(GLenum target); + + void setFramebufferZero(Framebuffer *framebuffer); + + void setRenderbufferStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples); + + void setVertexAttrib(GLuint index, const GLfloat *values); + void setVertexAttribDivisor(GLuint index, GLuint divisor); + + Buffer *getBuffer(GLuint handle); + Fence *getFence(GLuint handle); + Shader *getShader(GLuint handle); + Program *getProgram(GLuint handle); + Texture *getTexture(GLuint handle); + Framebuffer *getFramebuffer(GLuint handle); + Renderbuffer *getRenderbuffer(GLuint handle); + Query *getQuery(GLuint handle, bool create, GLenum type); + + Buffer *getArrayBuffer(); + Buffer *getElementArrayBuffer(); + ProgramBinary *getCurrentProgramBinary(); + Texture2D *getTexture2D(); + TextureCubeMap *getTextureCubeMap(); + Texture *getSamplerTexture(unsigned int sampler, TextureType type); + Framebuffer *getReadFramebuffer(); + Framebuffer *getDrawFramebuffer(); + + bool getFloatv(GLenum pname, GLfloat *params); + bool getIntegerv(GLenum pname, GLint *params); + bool getBooleanv(GLenum pname, GLboolean *params); + + bool getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *numParams); + + void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei *bufSize, void* pixels); + void clear(GLbitfield mask); + void drawArrays(GLenum mode, GLint first, GLsizei count, GLsizei instances); + void drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instances); + void sync(bool block); // flush/finish + + void recordInvalidEnum(); + void recordInvalidValue(); + void recordInvalidOperation(); + void recordOutOfMemory(); + void recordInvalidFramebufferOperation(); + + GLenum getError(); + GLenum getResetStatus(); + virtual bool isResetNotificationEnabled(); + + int getMajorShaderModel() const; + float getMaximumPointSize() const; + unsigned int getMaximumCombinedTextureImageUnits() const; + int getMaximumRenderbufferDimension() const; + int getMaximumTextureDimension() const; + int getMaximumCubeTextureDimension() const; + int getMaximumTextureLevel() const; + unsigned int getMaximumRenderTargets() const; + GLsizei getMaxSupportedSamples() const; + const char *getExtensionString() const; + const char *getRendererString() const; + bool supportsEventQueries() const; + bool supportsOcclusionQueries() const; + bool supportsBGRATextures() const; + bool supportsDXT1Textures() const; + bool supportsDXT3Textures() const; + bool supportsDXT5Textures() const; + bool supportsFloat32Textures() const; + bool supportsFloat32LinearFilter() const; + bool supportsFloat32RenderableTextures() const; + bool supportsFloat16Textures() const; + bool supportsFloat16LinearFilter() const; + bool supportsFloat16RenderableTextures() const; + bool supportsLuminanceTextures() const; + bool supportsLuminanceAlphaTextures() const; + bool supportsDepthTextures() const; + bool supports32bitIndices() const; + bool supportsNonPower2Texture() const; + bool supportsInstancing() const; + bool supportsTextureFilterAnisotropy() const; + + bool getCurrentReadFormatType(GLenum *format, GLenum *type); + + float getTextureMaxAnisotropy() const; + + void blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, + GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, + GLbitfield mask); + + private: + DISALLOW_COPY_AND_ASSIGN(Context); + + bool applyRenderTarget(GLenum drawMode, bool ignoreViewport); + void applyState(GLenum drawMode); + void applyShaders(); + void applyTextures(); + void applyTextures(SamplerType type); + + void detachBuffer(GLuint buffer); + void detachTexture(GLuint texture); + void detachFramebuffer(GLuint framebuffer); + void detachRenderbuffer(GLuint renderbuffer); + + Texture *getIncompleteTexture(TextureType type); + + bool skipDraw(GLenum drawMode); + + void initExtensionString(); + void initRendererString(); + + rx::Renderer *const mRenderer; + + State mState; + + BindingPointer mTexture2DZero; + BindingPointer mTextureCubeMapZero; + +#ifndef HASH_MAP +# ifdef _MSC_VER +# define HASH_MAP stdext::hash_map +# else +# define HASH_MAP std::unordered_map +# endif +#endif + + typedef HASH_MAP FramebufferMap; + FramebufferMap mFramebufferMap; + HandleAllocator mFramebufferHandleAllocator; + + typedef HASH_MAP FenceMap; + FenceMap mFenceMap; + HandleAllocator mFenceHandleAllocator; + + typedef HASH_MAP QueryMap; + QueryMap mQueryMap; + HandleAllocator mQueryHandleAllocator; + + const char *mExtensionString; + const char *mRendererString; + + BindingPointer mIncompleteTextures[TEXTURE_TYPE_COUNT]; + + // Recorded errors + bool mInvalidEnum; + bool mInvalidValue; + bool mInvalidOperation; + bool mOutOfMemory; + bool mInvalidFramebufferOperation; + + // Current/lost context flags + bool mHasBeenCurrent; + bool mContextLost; + GLenum mResetStatus; + GLenum mResetStrategy; + bool mRobustAccess; + + BindingPointer mCurrentProgramBinary; + Framebuffer *mBoundDrawFramebuffer; + + int mMajorShaderModel; + float mMaximumPointSize; + bool mSupportsVertexTexture; + bool mSupportsNonPower2Texture; + bool mSupportsInstancing; + int mMaxViewportDimension; + int mMaxRenderbufferDimension; + int mMaxTextureDimension; + int mMaxCubeTextureDimension; + int mMaxTextureLevel; + float mMaxTextureAnisotropy; + bool mSupportsEventQueries; + bool mSupportsOcclusionQueries; + bool mSupportsBGRATextures; + bool mSupportsDXT1Textures; + bool mSupportsDXT3Textures; + bool mSupportsDXT5Textures; + bool mSupportsFloat32Textures; + bool mSupportsFloat32LinearFilter; + bool mSupportsFloat32RenderableTextures; + bool mSupportsFloat16Textures; + bool mSupportsFloat16LinearFilter; + bool mSupportsFloat16RenderableTextures; + bool mSupportsLuminanceTextures; + bool mSupportsLuminanceAlphaTextures; + bool mSupportsDepthTextures; + bool mSupports32bitIndices; + bool mSupportsTextureFilterAnisotropy; + int mNumCompressedTextureFormats; + + ResourceManager *mResourceManager; +}; +} + +#endif // INCLUDE_CONTEXT_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Fence.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/Fence.cpp new file mode 100644 index 00000000000..e4218bbeec2 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Fence.cpp @@ -0,0 +1,52 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Fence.cpp: Implements the gl::Fence class, which supports the GL_NV_fence extension. + +#include "libGLESv2/Fence.h" +#include "libGLESv2/renderer/FenceImpl.h" +#include "libGLESv2/renderer/Renderer.h" + +namespace gl +{ + +Fence::Fence(rx::Renderer *renderer) +{ + mFence = renderer->createFence(); +} + +Fence::~Fence() +{ + delete mFence; +} + +GLboolean Fence::isFence() +{ + return mFence->isFence(); +} + +void Fence::setFence(GLenum condition) +{ + mFence->setFence(condition); +} + +GLboolean Fence::testFence() +{ + return mFence->testFence(); +} + +void Fence::finishFence() +{ + mFence->finishFence(); +} + +void Fence::getFenceiv(GLenum pname, GLint *params) +{ + mFence->getFenceiv(pname, params); +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Fence.h b/Source/ThirdParty/ANGLE/src/libGLESv2/Fence.h new file mode 100644 index 00000000000..1cedebb112d --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Fence.h @@ -0,0 +1,43 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Fence.h: Defines the gl::Fence class, which supports the GL_NV_fence extension. + +#ifndef LIBGLESV2_FENCE_H_ +#define LIBGLESV2_FENCE_H_ + +#include "common/angleutils.h" + +namespace rx +{ +class Renderer; +class FenceImpl; +} + +namespace gl +{ + +class Fence +{ + public: + explicit Fence(rx::Renderer *renderer); + virtual ~Fence(); + + GLboolean isFence(); + void setFence(GLenum condition); + GLboolean testFence(); + void finishFence(); + void getFenceiv(GLenum pname, GLint *params); + + private: + DISALLOW_COPY_AND_ASSIGN(Fence); + + rx::FenceImpl *mFence; +}; + +} + +#endif // LIBGLESV2_FENCE_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Float16ToFloat32.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/Float16ToFloat32.cpp new file mode 100644 index 00000000000..b90d2f6023c --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Float16ToFloat32.cpp @@ -0,0 +1,2204 @@ +#include "precompiled.h" +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// This file is automatically generated. + +namespace gl +{ + +const static unsigned g_mantissa[2048] = { + 0x00000000, + 0x33800000, + 0x34000000, + 0x34400000, + 0x34800000, + 0x34a00000, + 0x34c00000, + 0x34e00000, + 0x35000000, + 0x35100000, + 0x35200000, + 0x35300000, + 0x35400000, + 0x35500000, + 0x35600000, + 0x35700000, + 0x35800000, + 0x35880000, + 0x35900000, + 0x35980000, + 0x35a00000, + 0x35a80000, + 0x35b00000, + 0x35b80000, + 0x35c00000, + 0x35c80000, + 0x35d00000, + 0x35d80000, + 0x35e00000, + 0x35e80000, + 0x35f00000, + 0x35f80000, + 0x36000000, + 0x36040000, + 0x36080000, + 0x360c0000, + 0x36100000, + 0x36140000, + 0x36180000, + 0x361c0000, + 0x36200000, + 0x36240000, + 0x36280000, + 0x362c0000, + 0x36300000, + 0x36340000, + 0x36380000, + 0x363c0000, + 0x36400000, + 0x36440000, + 0x36480000, + 0x364c0000, + 0x36500000, + 0x36540000, + 0x36580000, + 0x365c0000, + 0x36600000, + 0x36640000, + 0x36680000, + 0x366c0000, + 0x36700000, + 0x36740000, + 0x36780000, + 0x367c0000, + 0x36800000, + 0x36820000, + 0x36840000, + 0x36860000, + 0x36880000, + 0x368a0000, + 0x368c0000, + 0x368e0000, + 0x36900000, + 0x36920000, + 0x36940000, + 0x36960000, + 0x36980000, + 0x369a0000, + 0x369c0000, + 0x369e0000, + 0x36a00000, + 0x36a20000, + 0x36a40000, + 0x36a60000, + 0x36a80000, + 0x36aa0000, + 0x36ac0000, + 0x36ae0000, + 0x36b00000, + 0x36b20000, + 0x36b40000, + 0x36b60000, + 0x36b80000, + 0x36ba0000, + 0x36bc0000, + 0x36be0000, + 0x36c00000, + 0x36c20000, + 0x36c40000, + 0x36c60000, + 0x36c80000, + 0x36ca0000, + 0x36cc0000, + 0x36ce0000, + 0x36d00000, + 0x36d20000, + 0x36d40000, + 0x36d60000, + 0x36d80000, + 0x36da0000, + 0x36dc0000, + 0x36de0000, + 0x36e00000, + 0x36e20000, + 0x36e40000, + 0x36e60000, + 0x36e80000, + 0x36ea0000, + 0x36ec0000, + 0x36ee0000, + 0x36f00000, + 0x36f20000, + 0x36f40000, + 0x36f60000, + 0x36f80000, + 0x36fa0000, + 0x36fc0000, + 0x36fe0000, + 0x37000000, + 0x37010000, + 0x37020000, + 0x37030000, + 0x37040000, + 0x37050000, + 0x37060000, + 0x37070000, + 0x37080000, + 0x37090000, + 0x370a0000, + 0x370b0000, + 0x370c0000, + 0x370d0000, + 0x370e0000, + 0x370f0000, + 0x37100000, + 0x37110000, + 0x37120000, + 0x37130000, + 0x37140000, + 0x37150000, + 0x37160000, + 0x37170000, + 0x37180000, + 0x37190000, + 0x371a0000, + 0x371b0000, + 0x371c0000, + 0x371d0000, + 0x371e0000, + 0x371f0000, + 0x37200000, + 0x37210000, + 0x37220000, + 0x37230000, + 0x37240000, + 0x37250000, + 0x37260000, + 0x37270000, + 0x37280000, + 0x37290000, + 0x372a0000, + 0x372b0000, + 0x372c0000, + 0x372d0000, + 0x372e0000, + 0x372f0000, + 0x37300000, + 0x37310000, + 0x37320000, + 0x37330000, + 0x37340000, + 0x37350000, + 0x37360000, + 0x37370000, + 0x37380000, + 0x37390000, + 0x373a0000, + 0x373b0000, + 0x373c0000, + 0x373d0000, + 0x373e0000, + 0x373f0000, + 0x37400000, + 0x37410000, + 0x37420000, + 0x37430000, + 0x37440000, + 0x37450000, + 0x37460000, + 0x37470000, + 0x37480000, + 0x37490000, + 0x374a0000, + 0x374b0000, + 0x374c0000, + 0x374d0000, + 0x374e0000, + 0x374f0000, + 0x37500000, + 0x37510000, + 0x37520000, + 0x37530000, + 0x37540000, + 0x37550000, + 0x37560000, + 0x37570000, + 0x37580000, + 0x37590000, + 0x375a0000, + 0x375b0000, + 0x375c0000, + 0x375d0000, + 0x375e0000, + 0x375f0000, + 0x37600000, + 0x37610000, + 0x37620000, + 0x37630000, + 0x37640000, + 0x37650000, + 0x37660000, + 0x37670000, + 0x37680000, + 0x37690000, + 0x376a0000, + 0x376b0000, + 0x376c0000, + 0x376d0000, + 0x376e0000, + 0x376f0000, + 0x37700000, + 0x37710000, + 0x37720000, + 0x37730000, + 0x37740000, + 0x37750000, + 0x37760000, + 0x37770000, + 0x37780000, + 0x37790000, + 0x377a0000, + 0x377b0000, + 0x377c0000, + 0x377d0000, + 0x377e0000, + 0x377f0000, + 0x37800000, + 0x37808000, + 0x37810000, + 0x37818000, + 0x37820000, + 0x37828000, + 0x37830000, + 0x37838000, + 0x37840000, + 0x37848000, + 0x37850000, + 0x37858000, + 0x37860000, + 0x37868000, + 0x37870000, + 0x37878000, + 0x37880000, + 0x37888000, + 0x37890000, + 0x37898000, + 0x378a0000, + 0x378a8000, + 0x378b0000, + 0x378b8000, + 0x378c0000, + 0x378c8000, + 0x378d0000, + 0x378d8000, + 0x378e0000, + 0x378e8000, + 0x378f0000, + 0x378f8000, + 0x37900000, + 0x37908000, + 0x37910000, + 0x37918000, + 0x37920000, + 0x37928000, + 0x37930000, + 0x37938000, + 0x37940000, + 0x37948000, + 0x37950000, + 0x37958000, + 0x37960000, + 0x37968000, + 0x37970000, + 0x37978000, + 0x37980000, + 0x37988000, + 0x37990000, + 0x37998000, + 0x379a0000, + 0x379a8000, + 0x379b0000, + 0x379b8000, + 0x379c0000, + 0x379c8000, + 0x379d0000, + 0x379d8000, + 0x379e0000, + 0x379e8000, + 0x379f0000, + 0x379f8000, + 0x37a00000, + 0x37a08000, + 0x37a10000, + 0x37a18000, + 0x37a20000, + 0x37a28000, + 0x37a30000, + 0x37a38000, + 0x37a40000, + 0x37a48000, + 0x37a50000, + 0x37a58000, + 0x37a60000, + 0x37a68000, + 0x37a70000, + 0x37a78000, + 0x37a80000, + 0x37a88000, + 0x37a90000, + 0x37a98000, + 0x37aa0000, + 0x37aa8000, + 0x37ab0000, + 0x37ab8000, + 0x37ac0000, + 0x37ac8000, + 0x37ad0000, + 0x37ad8000, + 0x37ae0000, + 0x37ae8000, + 0x37af0000, + 0x37af8000, + 0x37b00000, + 0x37b08000, + 0x37b10000, + 0x37b18000, + 0x37b20000, + 0x37b28000, + 0x37b30000, + 0x37b38000, + 0x37b40000, + 0x37b48000, + 0x37b50000, + 0x37b58000, + 0x37b60000, + 0x37b68000, + 0x37b70000, + 0x37b78000, + 0x37b80000, + 0x37b88000, + 0x37b90000, + 0x37b98000, + 0x37ba0000, + 0x37ba8000, + 0x37bb0000, + 0x37bb8000, + 0x37bc0000, + 0x37bc8000, + 0x37bd0000, + 0x37bd8000, + 0x37be0000, + 0x37be8000, + 0x37bf0000, + 0x37bf8000, + 0x37c00000, + 0x37c08000, + 0x37c10000, + 0x37c18000, + 0x37c20000, + 0x37c28000, + 0x37c30000, + 0x37c38000, + 0x37c40000, + 0x37c48000, + 0x37c50000, + 0x37c58000, + 0x37c60000, + 0x37c68000, + 0x37c70000, + 0x37c78000, + 0x37c80000, + 0x37c88000, + 0x37c90000, + 0x37c98000, + 0x37ca0000, + 0x37ca8000, + 0x37cb0000, + 0x37cb8000, + 0x37cc0000, + 0x37cc8000, + 0x37cd0000, + 0x37cd8000, + 0x37ce0000, + 0x37ce8000, + 0x37cf0000, + 0x37cf8000, + 0x37d00000, + 0x37d08000, + 0x37d10000, + 0x37d18000, + 0x37d20000, + 0x37d28000, + 0x37d30000, + 0x37d38000, + 0x37d40000, + 0x37d48000, + 0x37d50000, + 0x37d58000, + 0x37d60000, + 0x37d68000, + 0x37d70000, + 0x37d78000, + 0x37d80000, + 0x37d88000, + 0x37d90000, + 0x37d98000, + 0x37da0000, + 0x37da8000, + 0x37db0000, + 0x37db8000, + 0x37dc0000, + 0x37dc8000, + 0x37dd0000, + 0x37dd8000, + 0x37de0000, + 0x37de8000, + 0x37df0000, + 0x37df8000, + 0x37e00000, + 0x37e08000, + 0x37e10000, + 0x37e18000, + 0x37e20000, + 0x37e28000, + 0x37e30000, + 0x37e38000, + 0x37e40000, + 0x37e48000, + 0x37e50000, + 0x37e58000, + 0x37e60000, + 0x37e68000, + 0x37e70000, + 0x37e78000, + 0x37e80000, + 0x37e88000, + 0x37e90000, + 0x37e98000, + 0x37ea0000, + 0x37ea8000, + 0x37eb0000, + 0x37eb8000, + 0x37ec0000, + 0x37ec8000, + 0x37ed0000, + 0x37ed8000, + 0x37ee0000, + 0x37ee8000, + 0x37ef0000, + 0x37ef8000, + 0x37f00000, + 0x37f08000, + 0x37f10000, + 0x37f18000, + 0x37f20000, + 0x37f28000, + 0x37f30000, + 0x37f38000, + 0x37f40000, + 0x37f48000, + 0x37f50000, + 0x37f58000, + 0x37f60000, + 0x37f68000, + 0x37f70000, + 0x37f78000, + 0x37f80000, + 0x37f88000, + 0x37f90000, + 0x37f98000, + 0x37fa0000, + 0x37fa8000, + 0x37fb0000, + 0x37fb8000, + 0x37fc0000, + 0x37fc8000, + 0x37fd0000, + 0x37fd8000, + 0x37fe0000, + 0x37fe8000, + 0x37ff0000, + 0x37ff8000, + 0x38000000, + 0x38004000, + 0x38008000, + 0x3800c000, + 0x38010000, + 0x38014000, + 0x38018000, + 0x3801c000, + 0x38020000, + 0x38024000, + 0x38028000, + 0x3802c000, + 0x38030000, + 0x38034000, + 0x38038000, + 0x3803c000, + 0x38040000, + 0x38044000, + 0x38048000, + 0x3804c000, + 0x38050000, + 0x38054000, + 0x38058000, + 0x3805c000, + 0x38060000, + 0x38064000, + 0x38068000, + 0x3806c000, + 0x38070000, + 0x38074000, + 0x38078000, + 0x3807c000, + 0x38080000, + 0x38084000, + 0x38088000, + 0x3808c000, + 0x38090000, + 0x38094000, + 0x38098000, + 0x3809c000, + 0x380a0000, + 0x380a4000, + 0x380a8000, + 0x380ac000, + 0x380b0000, + 0x380b4000, + 0x380b8000, + 0x380bc000, + 0x380c0000, + 0x380c4000, + 0x380c8000, + 0x380cc000, + 0x380d0000, + 0x380d4000, + 0x380d8000, + 0x380dc000, + 0x380e0000, + 0x380e4000, + 0x380e8000, + 0x380ec000, + 0x380f0000, + 0x380f4000, + 0x380f8000, + 0x380fc000, + 0x38100000, + 0x38104000, + 0x38108000, + 0x3810c000, + 0x38110000, + 0x38114000, + 0x38118000, + 0x3811c000, + 0x38120000, + 0x38124000, + 0x38128000, + 0x3812c000, + 0x38130000, + 0x38134000, + 0x38138000, + 0x3813c000, + 0x38140000, + 0x38144000, + 0x38148000, + 0x3814c000, + 0x38150000, + 0x38154000, + 0x38158000, + 0x3815c000, + 0x38160000, + 0x38164000, + 0x38168000, + 0x3816c000, + 0x38170000, + 0x38174000, + 0x38178000, + 0x3817c000, + 0x38180000, + 0x38184000, + 0x38188000, + 0x3818c000, + 0x38190000, + 0x38194000, + 0x38198000, + 0x3819c000, + 0x381a0000, + 0x381a4000, + 0x381a8000, + 0x381ac000, + 0x381b0000, + 0x381b4000, + 0x381b8000, + 0x381bc000, + 0x381c0000, + 0x381c4000, + 0x381c8000, + 0x381cc000, + 0x381d0000, + 0x381d4000, + 0x381d8000, + 0x381dc000, + 0x381e0000, + 0x381e4000, + 0x381e8000, + 0x381ec000, + 0x381f0000, + 0x381f4000, + 0x381f8000, + 0x381fc000, + 0x38200000, + 0x38204000, + 0x38208000, + 0x3820c000, + 0x38210000, + 0x38214000, + 0x38218000, + 0x3821c000, + 0x38220000, + 0x38224000, + 0x38228000, + 0x3822c000, + 0x38230000, + 0x38234000, + 0x38238000, + 0x3823c000, + 0x38240000, + 0x38244000, + 0x38248000, + 0x3824c000, + 0x38250000, + 0x38254000, + 0x38258000, + 0x3825c000, + 0x38260000, + 0x38264000, + 0x38268000, + 0x3826c000, + 0x38270000, + 0x38274000, + 0x38278000, + 0x3827c000, + 0x38280000, + 0x38284000, + 0x38288000, + 0x3828c000, + 0x38290000, + 0x38294000, + 0x38298000, + 0x3829c000, + 0x382a0000, + 0x382a4000, + 0x382a8000, + 0x382ac000, + 0x382b0000, + 0x382b4000, + 0x382b8000, + 0x382bc000, + 0x382c0000, + 0x382c4000, + 0x382c8000, + 0x382cc000, + 0x382d0000, + 0x382d4000, + 0x382d8000, + 0x382dc000, + 0x382e0000, + 0x382e4000, + 0x382e8000, + 0x382ec000, + 0x382f0000, + 0x382f4000, + 0x382f8000, + 0x382fc000, + 0x38300000, + 0x38304000, + 0x38308000, + 0x3830c000, + 0x38310000, + 0x38314000, + 0x38318000, + 0x3831c000, + 0x38320000, + 0x38324000, + 0x38328000, + 0x3832c000, + 0x38330000, + 0x38334000, + 0x38338000, + 0x3833c000, + 0x38340000, + 0x38344000, + 0x38348000, + 0x3834c000, + 0x38350000, + 0x38354000, + 0x38358000, + 0x3835c000, + 0x38360000, + 0x38364000, + 0x38368000, + 0x3836c000, + 0x38370000, + 0x38374000, + 0x38378000, + 0x3837c000, + 0x38380000, + 0x38384000, + 0x38388000, + 0x3838c000, + 0x38390000, + 0x38394000, + 0x38398000, + 0x3839c000, + 0x383a0000, + 0x383a4000, + 0x383a8000, + 0x383ac000, + 0x383b0000, + 0x383b4000, + 0x383b8000, + 0x383bc000, + 0x383c0000, + 0x383c4000, + 0x383c8000, + 0x383cc000, + 0x383d0000, + 0x383d4000, + 0x383d8000, + 0x383dc000, + 0x383e0000, + 0x383e4000, + 0x383e8000, + 0x383ec000, + 0x383f0000, + 0x383f4000, + 0x383f8000, + 0x383fc000, + 0x38400000, + 0x38404000, + 0x38408000, + 0x3840c000, + 0x38410000, + 0x38414000, + 0x38418000, + 0x3841c000, + 0x38420000, + 0x38424000, + 0x38428000, + 0x3842c000, + 0x38430000, + 0x38434000, + 0x38438000, + 0x3843c000, + 0x38440000, + 0x38444000, + 0x38448000, + 0x3844c000, + 0x38450000, + 0x38454000, + 0x38458000, + 0x3845c000, + 0x38460000, + 0x38464000, + 0x38468000, + 0x3846c000, + 0x38470000, + 0x38474000, + 0x38478000, + 0x3847c000, + 0x38480000, + 0x38484000, + 0x38488000, + 0x3848c000, + 0x38490000, + 0x38494000, + 0x38498000, + 0x3849c000, + 0x384a0000, + 0x384a4000, + 0x384a8000, + 0x384ac000, + 0x384b0000, + 0x384b4000, + 0x384b8000, + 0x384bc000, + 0x384c0000, + 0x384c4000, + 0x384c8000, + 0x384cc000, + 0x384d0000, + 0x384d4000, + 0x384d8000, + 0x384dc000, + 0x384e0000, + 0x384e4000, + 0x384e8000, + 0x384ec000, + 0x384f0000, + 0x384f4000, + 0x384f8000, + 0x384fc000, + 0x38500000, + 0x38504000, + 0x38508000, + 0x3850c000, + 0x38510000, + 0x38514000, + 0x38518000, + 0x3851c000, + 0x38520000, + 0x38524000, + 0x38528000, + 0x3852c000, + 0x38530000, + 0x38534000, + 0x38538000, + 0x3853c000, + 0x38540000, + 0x38544000, + 0x38548000, + 0x3854c000, + 0x38550000, + 0x38554000, + 0x38558000, + 0x3855c000, + 0x38560000, + 0x38564000, + 0x38568000, + 0x3856c000, + 0x38570000, + 0x38574000, + 0x38578000, + 0x3857c000, + 0x38580000, + 0x38584000, + 0x38588000, + 0x3858c000, + 0x38590000, + 0x38594000, + 0x38598000, + 0x3859c000, + 0x385a0000, + 0x385a4000, + 0x385a8000, + 0x385ac000, + 0x385b0000, + 0x385b4000, + 0x385b8000, + 0x385bc000, + 0x385c0000, + 0x385c4000, + 0x385c8000, + 0x385cc000, + 0x385d0000, + 0x385d4000, + 0x385d8000, + 0x385dc000, + 0x385e0000, + 0x385e4000, + 0x385e8000, + 0x385ec000, + 0x385f0000, + 0x385f4000, + 0x385f8000, + 0x385fc000, + 0x38600000, + 0x38604000, + 0x38608000, + 0x3860c000, + 0x38610000, + 0x38614000, + 0x38618000, + 0x3861c000, + 0x38620000, + 0x38624000, + 0x38628000, + 0x3862c000, + 0x38630000, + 0x38634000, + 0x38638000, + 0x3863c000, + 0x38640000, + 0x38644000, + 0x38648000, + 0x3864c000, + 0x38650000, + 0x38654000, + 0x38658000, + 0x3865c000, + 0x38660000, + 0x38664000, + 0x38668000, + 0x3866c000, + 0x38670000, + 0x38674000, + 0x38678000, + 0x3867c000, + 0x38680000, + 0x38684000, + 0x38688000, + 0x3868c000, + 0x38690000, + 0x38694000, + 0x38698000, + 0x3869c000, + 0x386a0000, + 0x386a4000, + 0x386a8000, + 0x386ac000, + 0x386b0000, + 0x386b4000, + 0x386b8000, + 0x386bc000, + 0x386c0000, + 0x386c4000, + 0x386c8000, + 0x386cc000, + 0x386d0000, + 0x386d4000, + 0x386d8000, + 0x386dc000, + 0x386e0000, + 0x386e4000, + 0x386e8000, + 0x386ec000, + 0x386f0000, + 0x386f4000, + 0x386f8000, + 0x386fc000, + 0x38700000, + 0x38704000, + 0x38708000, + 0x3870c000, + 0x38710000, + 0x38714000, + 0x38718000, + 0x3871c000, + 0x38720000, + 0x38724000, + 0x38728000, + 0x3872c000, + 0x38730000, + 0x38734000, + 0x38738000, + 0x3873c000, + 0x38740000, + 0x38744000, + 0x38748000, + 0x3874c000, + 0x38750000, + 0x38754000, + 0x38758000, + 0x3875c000, + 0x38760000, + 0x38764000, + 0x38768000, + 0x3876c000, + 0x38770000, + 0x38774000, + 0x38778000, + 0x3877c000, + 0x38780000, + 0x38784000, + 0x38788000, + 0x3878c000, + 0x38790000, + 0x38794000, + 0x38798000, + 0x3879c000, + 0x387a0000, + 0x387a4000, + 0x387a8000, + 0x387ac000, + 0x387b0000, + 0x387b4000, + 0x387b8000, + 0x387bc000, + 0x387c0000, + 0x387c4000, + 0x387c8000, + 0x387cc000, + 0x387d0000, + 0x387d4000, + 0x387d8000, + 0x387dc000, + 0x387e0000, + 0x387e4000, + 0x387e8000, + 0x387ec000, + 0x387f0000, + 0x387f4000, + 0x387f8000, + 0x387fc000, + 0x38000000, + 0x38002000, + 0x38004000, + 0x38006000, + 0x38008000, + 0x3800a000, + 0x3800c000, + 0x3800e000, + 0x38010000, + 0x38012000, + 0x38014000, + 0x38016000, + 0x38018000, + 0x3801a000, + 0x3801c000, + 0x3801e000, + 0x38020000, + 0x38022000, + 0x38024000, + 0x38026000, + 0x38028000, + 0x3802a000, + 0x3802c000, + 0x3802e000, + 0x38030000, + 0x38032000, + 0x38034000, + 0x38036000, + 0x38038000, + 0x3803a000, + 0x3803c000, + 0x3803e000, + 0x38040000, + 0x38042000, + 0x38044000, + 0x38046000, + 0x38048000, + 0x3804a000, + 0x3804c000, + 0x3804e000, + 0x38050000, + 0x38052000, + 0x38054000, + 0x38056000, + 0x38058000, + 0x3805a000, + 0x3805c000, + 0x3805e000, + 0x38060000, + 0x38062000, + 0x38064000, + 0x38066000, + 0x38068000, + 0x3806a000, + 0x3806c000, + 0x3806e000, + 0x38070000, + 0x38072000, + 0x38074000, + 0x38076000, + 0x38078000, + 0x3807a000, + 0x3807c000, + 0x3807e000, + 0x38080000, + 0x38082000, + 0x38084000, + 0x38086000, + 0x38088000, + 0x3808a000, + 0x3808c000, + 0x3808e000, + 0x38090000, + 0x38092000, + 0x38094000, + 0x38096000, + 0x38098000, + 0x3809a000, + 0x3809c000, + 0x3809e000, + 0x380a0000, + 0x380a2000, + 0x380a4000, + 0x380a6000, + 0x380a8000, + 0x380aa000, + 0x380ac000, + 0x380ae000, + 0x380b0000, + 0x380b2000, + 0x380b4000, + 0x380b6000, + 0x380b8000, + 0x380ba000, + 0x380bc000, + 0x380be000, + 0x380c0000, + 0x380c2000, + 0x380c4000, + 0x380c6000, + 0x380c8000, + 0x380ca000, + 0x380cc000, + 0x380ce000, + 0x380d0000, + 0x380d2000, + 0x380d4000, + 0x380d6000, + 0x380d8000, + 0x380da000, + 0x380dc000, + 0x380de000, + 0x380e0000, + 0x380e2000, + 0x380e4000, + 0x380e6000, + 0x380e8000, + 0x380ea000, + 0x380ec000, + 0x380ee000, + 0x380f0000, + 0x380f2000, + 0x380f4000, + 0x380f6000, + 0x380f8000, + 0x380fa000, + 0x380fc000, + 0x380fe000, + 0x38100000, + 0x38102000, + 0x38104000, + 0x38106000, + 0x38108000, + 0x3810a000, + 0x3810c000, + 0x3810e000, + 0x38110000, + 0x38112000, + 0x38114000, + 0x38116000, + 0x38118000, + 0x3811a000, + 0x3811c000, + 0x3811e000, + 0x38120000, + 0x38122000, + 0x38124000, + 0x38126000, + 0x38128000, + 0x3812a000, + 0x3812c000, + 0x3812e000, + 0x38130000, + 0x38132000, + 0x38134000, + 0x38136000, + 0x38138000, + 0x3813a000, + 0x3813c000, + 0x3813e000, + 0x38140000, + 0x38142000, + 0x38144000, + 0x38146000, + 0x38148000, + 0x3814a000, + 0x3814c000, + 0x3814e000, + 0x38150000, + 0x38152000, + 0x38154000, + 0x38156000, + 0x38158000, + 0x3815a000, + 0x3815c000, + 0x3815e000, + 0x38160000, + 0x38162000, + 0x38164000, + 0x38166000, + 0x38168000, + 0x3816a000, + 0x3816c000, + 0x3816e000, + 0x38170000, + 0x38172000, + 0x38174000, + 0x38176000, + 0x38178000, + 0x3817a000, + 0x3817c000, + 0x3817e000, + 0x38180000, + 0x38182000, + 0x38184000, + 0x38186000, + 0x38188000, + 0x3818a000, + 0x3818c000, + 0x3818e000, + 0x38190000, + 0x38192000, + 0x38194000, + 0x38196000, + 0x38198000, + 0x3819a000, + 0x3819c000, + 0x3819e000, + 0x381a0000, + 0x381a2000, + 0x381a4000, + 0x381a6000, + 0x381a8000, + 0x381aa000, + 0x381ac000, + 0x381ae000, + 0x381b0000, + 0x381b2000, + 0x381b4000, + 0x381b6000, + 0x381b8000, + 0x381ba000, + 0x381bc000, + 0x381be000, + 0x381c0000, + 0x381c2000, + 0x381c4000, + 0x381c6000, + 0x381c8000, + 0x381ca000, + 0x381cc000, + 0x381ce000, + 0x381d0000, + 0x381d2000, + 0x381d4000, + 0x381d6000, + 0x381d8000, + 0x381da000, + 0x381dc000, + 0x381de000, + 0x381e0000, + 0x381e2000, + 0x381e4000, + 0x381e6000, + 0x381e8000, + 0x381ea000, + 0x381ec000, + 0x381ee000, + 0x381f0000, + 0x381f2000, + 0x381f4000, + 0x381f6000, + 0x381f8000, + 0x381fa000, + 0x381fc000, + 0x381fe000, + 0x38200000, + 0x38202000, + 0x38204000, + 0x38206000, + 0x38208000, + 0x3820a000, + 0x3820c000, + 0x3820e000, + 0x38210000, + 0x38212000, + 0x38214000, + 0x38216000, + 0x38218000, + 0x3821a000, + 0x3821c000, + 0x3821e000, + 0x38220000, + 0x38222000, + 0x38224000, + 0x38226000, + 0x38228000, + 0x3822a000, + 0x3822c000, + 0x3822e000, + 0x38230000, + 0x38232000, + 0x38234000, + 0x38236000, + 0x38238000, + 0x3823a000, + 0x3823c000, + 0x3823e000, + 0x38240000, + 0x38242000, + 0x38244000, + 0x38246000, + 0x38248000, + 0x3824a000, + 0x3824c000, + 0x3824e000, + 0x38250000, + 0x38252000, + 0x38254000, + 0x38256000, + 0x38258000, + 0x3825a000, + 0x3825c000, + 0x3825e000, + 0x38260000, + 0x38262000, + 0x38264000, + 0x38266000, + 0x38268000, + 0x3826a000, + 0x3826c000, + 0x3826e000, + 0x38270000, + 0x38272000, + 0x38274000, + 0x38276000, + 0x38278000, + 0x3827a000, + 0x3827c000, + 0x3827e000, + 0x38280000, + 0x38282000, + 0x38284000, + 0x38286000, + 0x38288000, + 0x3828a000, + 0x3828c000, + 0x3828e000, + 0x38290000, + 0x38292000, + 0x38294000, + 0x38296000, + 0x38298000, + 0x3829a000, + 0x3829c000, + 0x3829e000, + 0x382a0000, + 0x382a2000, + 0x382a4000, + 0x382a6000, + 0x382a8000, + 0x382aa000, + 0x382ac000, + 0x382ae000, + 0x382b0000, + 0x382b2000, + 0x382b4000, + 0x382b6000, + 0x382b8000, + 0x382ba000, + 0x382bc000, + 0x382be000, + 0x382c0000, + 0x382c2000, + 0x382c4000, + 0x382c6000, + 0x382c8000, + 0x382ca000, + 0x382cc000, + 0x382ce000, + 0x382d0000, + 0x382d2000, + 0x382d4000, + 0x382d6000, + 0x382d8000, + 0x382da000, + 0x382dc000, + 0x382de000, + 0x382e0000, + 0x382e2000, + 0x382e4000, + 0x382e6000, + 0x382e8000, + 0x382ea000, + 0x382ec000, + 0x382ee000, + 0x382f0000, + 0x382f2000, + 0x382f4000, + 0x382f6000, + 0x382f8000, + 0x382fa000, + 0x382fc000, + 0x382fe000, + 0x38300000, + 0x38302000, + 0x38304000, + 0x38306000, + 0x38308000, + 0x3830a000, + 0x3830c000, + 0x3830e000, + 0x38310000, + 0x38312000, + 0x38314000, + 0x38316000, + 0x38318000, + 0x3831a000, + 0x3831c000, + 0x3831e000, + 0x38320000, + 0x38322000, + 0x38324000, + 0x38326000, + 0x38328000, + 0x3832a000, + 0x3832c000, + 0x3832e000, + 0x38330000, + 0x38332000, + 0x38334000, + 0x38336000, + 0x38338000, + 0x3833a000, + 0x3833c000, + 0x3833e000, + 0x38340000, + 0x38342000, + 0x38344000, + 0x38346000, + 0x38348000, + 0x3834a000, + 0x3834c000, + 0x3834e000, + 0x38350000, + 0x38352000, + 0x38354000, + 0x38356000, + 0x38358000, + 0x3835a000, + 0x3835c000, + 0x3835e000, + 0x38360000, + 0x38362000, + 0x38364000, + 0x38366000, + 0x38368000, + 0x3836a000, + 0x3836c000, + 0x3836e000, + 0x38370000, + 0x38372000, + 0x38374000, + 0x38376000, + 0x38378000, + 0x3837a000, + 0x3837c000, + 0x3837e000, + 0x38380000, + 0x38382000, + 0x38384000, + 0x38386000, + 0x38388000, + 0x3838a000, + 0x3838c000, + 0x3838e000, + 0x38390000, + 0x38392000, + 0x38394000, + 0x38396000, + 0x38398000, + 0x3839a000, + 0x3839c000, + 0x3839e000, + 0x383a0000, + 0x383a2000, + 0x383a4000, + 0x383a6000, + 0x383a8000, + 0x383aa000, + 0x383ac000, + 0x383ae000, + 0x383b0000, + 0x383b2000, + 0x383b4000, + 0x383b6000, + 0x383b8000, + 0x383ba000, + 0x383bc000, + 0x383be000, + 0x383c0000, + 0x383c2000, + 0x383c4000, + 0x383c6000, + 0x383c8000, + 0x383ca000, + 0x383cc000, + 0x383ce000, + 0x383d0000, + 0x383d2000, + 0x383d4000, + 0x383d6000, + 0x383d8000, + 0x383da000, + 0x383dc000, + 0x383de000, + 0x383e0000, + 0x383e2000, + 0x383e4000, + 0x383e6000, + 0x383e8000, + 0x383ea000, + 0x383ec000, + 0x383ee000, + 0x383f0000, + 0x383f2000, + 0x383f4000, + 0x383f6000, + 0x383f8000, + 0x383fa000, + 0x383fc000, + 0x383fe000, + 0x38400000, + 0x38402000, + 0x38404000, + 0x38406000, + 0x38408000, + 0x3840a000, + 0x3840c000, + 0x3840e000, + 0x38410000, + 0x38412000, + 0x38414000, + 0x38416000, + 0x38418000, + 0x3841a000, + 0x3841c000, + 0x3841e000, + 0x38420000, + 0x38422000, + 0x38424000, + 0x38426000, + 0x38428000, + 0x3842a000, + 0x3842c000, + 0x3842e000, + 0x38430000, + 0x38432000, + 0x38434000, + 0x38436000, + 0x38438000, + 0x3843a000, + 0x3843c000, + 0x3843e000, + 0x38440000, + 0x38442000, + 0x38444000, + 0x38446000, + 0x38448000, + 0x3844a000, + 0x3844c000, + 0x3844e000, + 0x38450000, + 0x38452000, + 0x38454000, + 0x38456000, + 0x38458000, + 0x3845a000, + 0x3845c000, + 0x3845e000, + 0x38460000, + 0x38462000, + 0x38464000, + 0x38466000, + 0x38468000, + 0x3846a000, + 0x3846c000, + 0x3846e000, + 0x38470000, + 0x38472000, + 0x38474000, + 0x38476000, + 0x38478000, + 0x3847a000, + 0x3847c000, + 0x3847e000, + 0x38480000, + 0x38482000, + 0x38484000, + 0x38486000, + 0x38488000, + 0x3848a000, + 0x3848c000, + 0x3848e000, + 0x38490000, + 0x38492000, + 0x38494000, + 0x38496000, + 0x38498000, + 0x3849a000, + 0x3849c000, + 0x3849e000, + 0x384a0000, + 0x384a2000, + 0x384a4000, + 0x384a6000, + 0x384a8000, + 0x384aa000, + 0x384ac000, + 0x384ae000, + 0x384b0000, + 0x384b2000, + 0x384b4000, + 0x384b6000, + 0x384b8000, + 0x384ba000, + 0x384bc000, + 0x384be000, + 0x384c0000, + 0x384c2000, + 0x384c4000, + 0x384c6000, + 0x384c8000, + 0x384ca000, + 0x384cc000, + 0x384ce000, + 0x384d0000, + 0x384d2000, + 0x384d4000, + 0x384d6000, + 0x384d8000, + 0x384da000, + 0x384dc000, + 0x384de000, + 0x384e0000, + 0x384e2000, + 0x384e4000, + 0x384e6000, + 0x384e8000, + 0x384ea000, + 0x384ec000, + 0x384ee000, + 0x384f0000, + 0x384f2000, + 0x384f4000, + 0x384f6000, + 0x384f8000, + 0x384fa000, + 0x384fc000, + 0x384fe000, + 0x38500000, + 0x38502000, + 0x38504000, + 0x38506000, + 0x38508000, + 0x3850a000, + 0x3850c000, + 0x3850e000, + 0x38510000, + 0x38512000, + 0x38514000, + 0x38516000, + 0x38518000, + 0x3851a000, + 0x3851c000, + 0x3851e000, + 0x38520000, + 0x38522000, + 0x38524000, + 0x38526000, + 0x38528000, + 0x3852a000, + 0x3852c000, + 0x3852e000, + 0x38530000, + 0x38532000, + 0x38534000, + 0x38536000, + 0x38538000, + 0x3853a000, + 0x3853c000, + 0x3853e000, + 0x38540000, + 0x38542000, + 0x38544000, + 0x38546000, + 0x38548000, + 0x3854a000, + 0x3854c000, + 0x3854e000, + 0x38550000, + 0x38552000, + 0x38554000, + 0x38556000, + 0x38558000, + 0x3855a000, + 0x3855c000, + 0x3855e000, + 0x38560000, + 0x38562000, + 0x38564000, + 0x38566000, + 0x38568000, + 0x3856a000, + 0x3856c000, + 0x3856e000, + 0x38570000, + 0x38572000, + 0x38574000, + 0x38576000, + 0x38578000, + 0x3857a000, + 0x3857c000, + 0x3857e000, + 0x38580000, + 0x38582000, + 0x38584000, + 0x38586000, + 0x38588000, + 0x3858a000, + 0x3858c000, + 0x3858e000, + 0x38590000, + 0x38592000, + 0x38594000, + 0x38596000, + 0x38598000, + 0x3859a000, + 0x3859c000, + 0x3859e000, + 0x385a0000, + 0x385a2000, + 0x385a4000, + 0x385a6000, + 0x385a8000, + 0x385aa000, + 0x385ac000, + 0x385ae000, + 0x385b0000, + 0x385b2000, + 0x385b4000, + 0x385b6000, + 0x385b8000, + 0x385ba000, + 0x385bc000, + 0x385be000, + 0x385c0000, + 0x385c2000, + 0x385c4000, + 0x385c6000, + 0x385c8000, + 0x385ca000, + 0x385cc000, + 0x385ce000, + 0x385d0000, + 0x385d2000, + 0x385d4000, + 0x385d6000, + 0x385d8000, + 0x385da000, + 0x385dc000, + 0x385de000, + 0x385e0000, + 0x385e2000, + 0x385e4000, + 0x385e6000, + 0x385e8000, + 0x385ea000, + 0x385ec000, + 0x385ee000, + 0x385f0000, + 0x385f2000, + 0x385f4000, + 0x385f6000, + 0x385f8000, + 0x385fa000, + 0x385fc000, + 0x385fe000, + 0x38600000, + 0x38602000, + 0x38604000, + 0x38606000, + 0x38608000, + 0x3860a000, + 0x3860c000, + 0x3860e000, + 0x38610000, + 0x38612000, + 0x38614000, + 0x38616000, + 0x38618000, + 0x3861a000, + 0x3861c000, + 0x3861e000, + 0x38620000, + 0x38622000, + 0x38624000, + 0x38626000, + 0x38628000, + 0x3862a000, + 0x3862c000, + 0x3862e000, + 0x38630000, + 0x38632000, + 0x38634000, + 0x38636000, + 0x38638000, + 0x3863a000, + 0x3863c000, + 0x3863e000, + 0x38640000, + 0x38642000, + 0x38644000, + 0x38646000, + 0x38648000, + 0x3864a000, + 0x3864c000, + 0x3864e000, + 0x38650000, + 0x38652000, + 0x38654000, + 0x38656000, + 0x38658000, + 0x3865a000, + 0x3865c000, + 0x3865e000, + 0x38660000, + 0x38662000, + 0x38664000, + 0x38666000, + 0x38668000, + 0x3866a000, + 0x3866c000, + 0x3866e000, + 0x38670000, + 0x38672000, + 0x38674000, + 0x38676000, + 0x38678000, + 0x3867a000, + 0x3867c000, + 0x3867e000, + 0x38680000, + 0x38682000, + 0x38684000, + 0x38686000, + 0x38688000, + 0x3868a000, + 0x3868c000, + 0x3868e000, + 0x38690000, + 0x38692000, + 0x38694000, + 0x38696000, + 0x38698000, + 0x3869a000, + 0x3869c000, + 0x3869e000, + 0x386a0000, + 0x386a2000, + 0x386a4000, + 0x386a6000, + 0x386a8000, + 0x386aa000, + 0x386ac000, + 0x386ae000, + 0x386b0000, + 0x386b2000, + 0x386b4000, + 0x386b6000, + 0x386b8000, + 0x386ba000, + 0x386bc000, + 0x386be000, + 0x386c0000, + 0x386c2000, + 0x386c4000, + 0x386c6000, + 0x386c8000, + 0x386ca000, + 0x386cc000, + 0x386ce000, + 0x386d0000, + 0x386d2000, + 0x386d4000, + 0x386d6000, + 0x386d8000, + 0x386da000, + 0x386dc000, + 0x386de000, + 0x386e0000, + 0x386e2000, + 0x386e4000, + 0x386e6000, + 0x386e8000, + 0x386ea000, + 0x386ec000, + 0x386ee000, + 0x386f0000, + 0x386f2000, + 0x386f4000, + 0x386f6000, + 0x386f8000, + 0x386fa000, + 0x386fc000, + 0x386fe000, + 0x38700000, + 0x38702000, + 0x38704000, + 0x38706000, + 0x38708000, + 0x3870a000, + 0x3870c000, + 0x3870e000, + 0x38710000, + 0x38712000, + 0x38714000, + 0x38716000, + 0x38718000, + 0x3871a000, + 0x3871c000, + 0x3871e000, + 0x38720000, + 0x38722000, + 0x38724000, + 0x38726000, + 0x38728000, + 0x3872a000, + 0x3872c000, + 0x3872e000, + 0x38730000, + 0x38732000, + 0x38734000, + 0x38736000, + 0x38738000, + 0x3873a000, + 0x3873c000, + 0x3873e000, + 0x38740000, + 0x38742000, + 0x38744000, + 0x38746000, + 0x38748000, + 0x3874a000, + 0x3874c000, + 0x3874e000, + 0x38750000, + 0x38752000, + 0x38754000, + 0x38756000, + 0x38758000, + 0x3875a000, + 0x3875c000, + 0x3875e000, + 0x38760000, + 0x38762000, + 0x38764000, + 0x38766000, + 0x38768000, + 0x3876a000, + 0x3876c000, + 0x3876e000, + 0x38770000, + 0x38772000, + 0x38774000, + 0x38776000, + 0x38778000, + 0x3877a000, + 0x3877c000, + 0x3877e000, + 0x38780000, + 0x38782000, + 0x38784000, + 0x38786000, + 0x38788000, + 0x3878a000, + 0x3878c000, + 0x3878e000, + 0x38790000, + 0x38792000, + 0x38794000, + 0x38796000, + 0x38798000, + 0x3879a000, + 0x3879c000, + 0x3879e000, + 0x387a0000, + 0x387a2000, + 0x387a4000, + 0x387a6000, + 0x387a8000, + 0x387aa000, + 0x387ac000, + 0x387ae000, + 0x387b0000, + 0x387b2000, + 0x387b4000, + 0x387b6000, + 0x387b8000, + 0x387ba000, + 0x387bc000, + 0x387be000, + 0x387c0000, + 0x387c2000, + 0x387c4000, + 0x387c6000, + 0x387c8000, + 0x387ca000, + 0x387cc000, + 0x387ce000, + 0x387d0000, + 0x387d2000, + 0x387d4000, + 0x387d6000, + 0x387d8000, + 0x387da000, + 0x387dc000, + 0x387de000, + 0x387e0000, + 0x387e2000, + 0x387e4000, + 0x387e6000, + 0x387e8000, + 0x387ea000, + 0x387ec000, + 0x387ee000, + 0x387f0000, + 0x387f2000, + 0x387f4000, + 0x387f6000, + 0x387f8000, + 0x387fa000, + 0x387fc000, + 0x387fe000, +}; + +const static unsigned g_exponent[64] = { + 0x00000000, + 0x00800000, + 0x01000000, + 0x01800000, + 0x02000000, + 0x02800000, + 0x03000000, + 0x03800000, + 0x04000000, + 0x04800000, + 0x05000000, + 0x05800000, + 0x06000000, + 0x06800000, + 0x07000000, + 0x07800000, + 0x08000000, + 0x08800000, + 0x09000000, + 0x09800000, + 0x0a000000, + 0x0a800000, + 0x0b000000, + 0x0b800000, + 0x0c000000, + 0x0c800000, + 0x0d000000, + 0x0d800000, + 0x0e000000, + 0x0e800000, + 0x0f000000, + 0x47800000, + 0x80000000, + 0x80800000, + 0x81000000, + 0x81800000, + 0x82000000, + 0x82800000, + 0x83000000, + 0x83800000, + 0x84000000, + 0x84800000, + 0x85000000, + 0x85800000, + 0x86000000, + 0x86800000, + 0x87000000, + 0x87800000, + 0x88000000, + 0x88800000, + 0x89000000, + 0x89800000, + 0x8a000000, + 0x8a800000, + 0x8b000000, + 0x8b800000, + 0x8c000000, + 0x8c800000, + 0x8d000000, + 0x8d800000, + 0x8e000000, + 0x8e800000, + 0x8f000000, + 0xc7800000, +}; + +const static unsigned g_offset[64] = { + 0x00000000, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000000, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, + 0x00000400, +}; + +float float16ToFloat32(unsigned short h) +{ + unsigned i32 = g_mantissa[g_offset[h >> 10] + (h & 0x3ff)] + g_exponent[h >> 10]; + return *(float*) &i32; +} +} + diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Float16ToFloat32.py b/Source/ThirdParty/ANGLE/src/libGLESv2/Float16ToFloat32.py new file mode 100644 index 00000000000..cf039bfc21e --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Float16ToFloat32.py @@ -0,0 +1,78 @@ +# Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# + +# This script generates a function that converts 16-bit precision floating +# point numbers to 32-bit. +# It is based on ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf. + +def convertMantissa(i): + if i == 0: + return 0 + elif i < 1024: + m = i << 13 + e = 0 + while not (m & 0x00800000): + e -= 0x00800000 + m = m << 1 + m &= ~0x00800000 + e += 0x38800000 + return m | e + else: + return 0x38000000 + ((i - 1024) << 13) + +def convertExponent(i): + if i == 0: + return 0 + elif i in range(1, 31): + return i << 23 + elif i == 31: + return 0x47800000 + elif i == 32: + return 0x80000000 + elif i in range(33, 63): + return 0x80000000 + ((i - 32) << 23) + else: + return 0xC7800000 + +def convertOffset(i): + if i == 0 or i == 32: + return 0 + else: + return 1024 + +print """// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// This file is automatically generated. + +namespace gl +{ +""" + +print "const static unsigned g_mantissa[2048] = {" +for i in range(0, 2048): + print " %#010x," % convertMantissa(i) +print "};\n" + +print "const static unsigned g_exponent[64] = {" +for i in range(0, 64): + print " %#010x," % convertExponent(i) +print "};\n" + +print "const static unsigned g_offset[64] = {" +for i in range(0, 64): + print " %#010x," % convertOffset(i) +print "};\n" + +print """float float16ToFloat32(unsigned short h) +{ + unsigned i32 = g_mantissa[g_offset[h >> 10] + (h & 0x3ff)] + g_exponent[h >> 10]; + return *(float*) &i32; +} +} +""" diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Framebuffer.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/Framebuffer.cpp new file mode 100644 index 00000000000..b0abba0ac44 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Framebuffer.cpp @@ -0,0 +1,603 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Framebuffer.cpp: Implements the gl::Framebuffer class. Implements GL framebuffer +// objects and related functionality. [OpenGL ES 2.0.24] section 4.4 page 105. + +#include "libGLESv2/Framebuffer.h" + +#include "libGLESv2/main.h" +#include "libGLESv2/utilities.h" +#include "libGLESv2/Texture.h" +#include "libGLESv2/Context.h" +#include "libGLESv2/renderer/Renderer.h" +#include "libGLESv2/Renderbuffer.h" + +namespace gl +{ + +Framebuffer::Framebuffer(rx::Renderer *renderer) + : mRenderer(renderer) +{ + for (unsigned int colorAttachment = 0; colorAttachment < IMPLEMENTATION_MAX_DRAW_BUFFERS; colorAttachment++) + { + mColorbufferTypes[colorAttachment] = GL_NONE; + mDrawBufferStates[colorAttachment] = GL_NONE; + } + mDrawBufferStates[0] = GL_COLOR_ATTACHMENT0_EXT; + mReadBufferState = GL_COLOR_ATTACHMENT0_EXT; + + mDepthbufferType = GL_NONE; + mStencilbufferType = GL_NONE; +} + +Framebuffer::~Framebuffer() +{ + for (unsigned int colorAttachment = 0; colorAttachment < IMPLEMENTATION_MAX_DRAW_BUFFERS; colorAttachment++) + { + mColorbufferPointers[colorAttachment].set(NULL); + } + mDepthbufferPointer.set(NULL); + mStencilbufferPointer.set(NULL); +} + +Renderbuffer *Framebuffer::lookupRenderbuffer(GLenum type, GLuint handle) const +{ + gl::Context *context = gl::getContext(); + Renderbuffer *buffer = NULL; + + if (type == GL_NONE) + { + buffer = NULL; + } + else if (type == GL_RENDERBUFFER) + { + buffer = context->getRenderbuffer(handle); + } + else if (IsInternalTextureTarget(type)) + { + buffer = context->getTexture(handle)->getRenderbuffer(type); + } + else + { + UNREACHABLE(); + } + + return buffer; +} + +void Framebuffer::setColorbuffer(unsigned int colorAttachment, GLenum type, GLuint colorbuffer) +{ + ASSERT(colorAttachment < IMPLEMENTATION_MAX_DRAW_BUFFERS); + mColorbufferTypes[colorAttachment] = (colorbuffer != 0) ? type : GL_NONE; + mColorbufferPointers[colorAttachment].set(lookupRenderbuffer(type, colorbuffer)); +} + +void Framebuffer::setDepthbuffer(GLenum type, GLuint depthbuffer) +{ + mDepthbufferType = (depthbuffer != 0) ? type : GL_NONE; + mDepthbufferPointer.set(lookupRenderbuffer(type, depthbuffer)); +} + +void Framebuffer::setStencilbuffer(GLenum type, GLuint stencilbuffer) +{ + mStencilbufferType = (stencilbuffer != 0) ? type : GL_NONE; + mStencilbufferPointer.set(lookupRenderbuffer(type, stencilbuffer)); +} + +void Framebuffer::detachTexture(GLuint texture) +{ + for (unsigned int colorAttachment = 0; colorAttachment < IMPLEMENTATION_MAX_DRAW_BUFFERS; colorAttachment++) + { + if (mColorbufferPointers[colorAttachment].id() == texture && IsInternalTextureTarget(mColorbufferTypes[colorAttachment])) + { + mColorbufferTypes[colorAttachment] = GL_NONE; + mColorbufferPointers[colorAttachment].set(NULL); + } + } + + if (mDepthbufferPointer.id() == texture && IsInternalTextureTarget(mDepthbufferType)) + { + mDepthbufferType = GL_NONE; + mDepthbufferPointer.set(NULL); + } + + if (mStencilbufferPointer.id() == texture && IsInternalTextureTarget(mStencilbufferType)) + { + mStencilbufferType = GL_NONE; + mStencilbufferPointer.set(NULL); + } +} + +void Framebuffer::detachRenderbuffer(GLuint renderbuffer) +{ + for (unsigned int colorAttachment = 0; colorAttachment < IMPLEMENTATION_MAX_DRAW_BUFFERS; colorAttachment++) + { + if (mColorbufferPointers[colorAttachment].id() == renderbuffer && mColorbufferTypes[colorAttachment] == GL_RENDERBUFFER) + { + mColorbufferTypes[colorAttachment] = GL_NONE; + mColorbufferPointers[colorAttachment].set(NULL); + } + } + + if (mDepthbufferPointer.id() == renderbuffer && mDepthbufferType == GL_RENDERBUFFER) + { + mDepthbufferType = GL_NONE; + mDepthbufferPointer.set(NULL); + } + + if (mStencilbufferPointer.id() == renderbuffer && mStencilbufferType == GL_RENDERBUFFER) + { + mStencilbufferType = GL_NONE; + mStencilbufferPointer.set(NULL); + } +} + +unsigned int Framebuffer::getRenderTargetSerial(unsigned int colorAttachment) const +{ + ASSERT(colorAttachment < IMPLEMENTATION_MAX_DRAW_BUFFERS); + + Renderbuffer *colorbuffer = mColorbufferPointers[colorAttachment].get(); + + if (colorbuffer) + { + return colorbuffer->getSerial(); + } + + return 0; +} + +unsigned int Framebuffer::getDepthbufferSerial() const +{ + Renderbuffer *depthbuffer = mDepthbufferPointer.get(); + + if (depthbuffer) + { + return depthbuffer->getSerial(); + } + + return 0; +} + +unsigned int Framebuffer::getStencilbufferSerial() const +{ + Renderbuffer *stencilbuffer = mStencilbufferPointer.get(); + + if (stencilbuffer) + { + return stencilbuffer->getSerial(); + } + + return 0; +} + +Renderbuffer *Framebuffer::getColorbuffer(unsigned int colorAttachment) const +{ + ASSERT(colorAttachment < IMPLEMENTATION_MAX_DRAW_BUFFERS); + return mColorbufferPointers[colorAttachment].get(); +} + +Renderbuffer *Framebuffer::getDepthbuffer() const +{ + return mDepthbufferPointer.get(); +} + +Renderbuffer *Framebuffer::getStencilbuffer() const +{ + return mStencilbufferPointer.get(); +} + +Renderbuffer *Framebuffer::getDepthOrStencilbuffer() const +{ + Renderbuffer *depthstencilbuffer = mDepthbufferPointer.get(); + + if (!depthstencilbuffer) + { + depthstencilbuffer = mStencilbufferPointer.get(); + } + + return depthstencilbuffer; +} + +Renderbuffer *Framebuffer::getReadColorbuffer() const +{ + // Will require more logic if glReadBuffers is supported + return mColorbufferPointers[0].get(); +} + +GLenum Framebuffer::getReadColorbufferType() const +{ + // Will require more logic if glReadBuffers is supported + return mColorbufferTypes[0]; +} + +Renderbuffer *Framebuffer::getFirstColorbuffer() const +{ + for (unsigned int colorAttachment = 0; colorAttachment < IMPLEMENTATION_MAX_DRAW_BUFFERS; colorAttachment++) + { + if (mColorbufferTypes[colorAttachment] != GL_NONE) + { + return mColorbufferPointers[colorAttachment].get(); + } + } + + return NULL; +} + +GLenum Framebuffer::getColorbufferType(unsigned int colorAttachment) const +{ + ASSERT(colorAttachment < IMPLEMENTATION_MAX_DRAW_BUFFERS); + return mColorbufferTypes[colorAttachment]; +} + +GLenum Framebuffer::getDepthbufferType() const +{ + return mDepthbufferType; +} + +GLenum Framebuffer::getStencilbufferType() const +{ + return mStencilbufferType; +} + +GLuint Framebuffer::getColorbufferHandle(unsigned int colorAttachment) const +{ + ASSERT(colorAttachment < IMPLEMENTATION_MAX_DRAW_BUFFERS); + return mColorbufferPointers[colorAttachment].id(); +} + +GLuint Framebuffer::getDepthbufferHandle() const +{ + return mDepthbufferPointer.id(); +} + +GLuint Framebuffer::getStencilbufferHandle() const +{ + return mStencilbufferPointer.id(); +} + +GLenum Framebuffer::getDrawBufferState(unsigned int colorAttachment) const +{ + return mDrawBufferStates[colorAttachment]; +} + +void Framebuffer::setDrawBufferState(unsigned int colorAttachment, GLenum drawBuffer) +{ + mDrawBufferStates[colorAttachment] = drawBuffer; +} + +bool Framebuffer::isEnabledColorAttachment(unsigned int colorAttachment) const +{ + return (mColorbufferTypes[colorAttachment] != GL_NONE && mDrawBufferStates[colorAttachment] != GL_NONE); +} + +bool Framebuffer::hasEnabledColorAttachment() const +{ + for (unsigned int colorAttachment = 0; colorAttachment < gl::IMPLEMENTATION_MAX_DRAW_BUFFERS; colorAttachment++) + { + if (isEnabledColorAttachment(colorAttachment)) + { + return true; + } + } + + return false; +} + +bool Framebuffer::hasStencil() const +{ + if (mStencilbufferType != GL_NONE) + { + const Renderbuffer *stencilbufferObject = getStencilbuffer(); + + if (stencilbufferObject) + { + return stencilbufferObject->getStencilSize() > 0; + } + } + + return false; +} + +bool Framebuffer::usingExtendedDrawBuffers() const +{ + for (unsigned int colorAttachment = 1; colorAttachment < IMPLEMENTATION_MAX_DRAW_BUFFERS; colorAttachment++) + { + if (isEnabledColorAttachment(colorAttachment)) + { + return true; + } + } + + return false; +} + +GLenum Framebuffer::completeness() const +{ + int width = 0; + int height = 0; + int colorbufferSize = 0; + int samples = -1; + bool missingAttachment = true; + + for (unsigned int colorAttachment = 0; colorAttachment < IMPLEMENTATION_MAX_DRAW_BUFFERS; colorAttachment++) + { + if (mColorbufferTypes[colorAttachment] != GL_NONE) + { + const Renderbuffer *colorbuffer = getColorbuffer(colorAttachment); + + if (!colorbuffer) + { + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + + if (colorbuffer->getWidth() == 0 || colorbuffer->getHeight() == 0) + { + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + + if (mColorbufferTypes[colorAttachment] == GL_RENDERBUFFER) + { + if (!gl::IsColorRenderable(colorbuffer->getInternalFormat())) + { + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + } + else if (IsInternalTextureTarget(mColorbufferTypes[colorAttachment])) + { + GLint internalformat = colorbuffer->getInternalFormat(); + GLenum format = gl::ExtractFormat(internalformat); + + if (IsCompressed(format) || + format == GL_ALPHA || + format == GL_LUMINANCE || + format == GL_LUMINANCE_ALPHA) + { + return GL_FRAMEBUFFER_UNSUPPORTED; + } + + bool filtering, renderable; + + if ((gl::IsFloat32Format(internalformat) && !mRenderer->getFloat32TextureSupport(&filtering, &renderable)) || + (gl::IsFloat16Format(internalformat) && !mRenderer->getFloat16TextureSupport(&filtering, &renderable))) + { + return GL_FRAMEBUFFER_UNSUPPORTED; + } + + if (gl::IsDepthTexture(internalformat) || gl::IsStencilTexture(internalformat)) + { + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + } + else + { + UNREACHABLE(); + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + + if (!missingAttachment) + { + // all color attachments must have the same width and height + if (colorbuffer->getWidth() != width || colorbuffer->getHeight() != height) + { + return GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS; + } + + // APPLE_framebuffer_multisample, which EXT_draw_buffers refers to, requires that + // all color attachments have the same number of samples for the FBO to be complete. + if (colorbuffer->getSamples() != samples) + { + return GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT; + } + + // all color attachments attachments must have the same number of bitplanes + if (gl::ComputePixelSize(colorbuffer->getInternalFormat()) != colorbufferSize) + { + return GL_FRAMEBUFFER_UNSUPPORTED; + } + + // D3D11 does not allow for overlapping RenderTargetViews, so ensure uniqueness + for (unsigned int previousColorAttachment = 0; previousColorAttachment < colorAttachment; previousColorAttachment++) + { + if (mColorbufferPointers[colorAttachment].get() == mColorbufferPointers[previousColorAttachment].get()) + { + return GL_FRAMEBUFFER_UNSUPPORTED; + } + } + } + else + { + width = colorbuffer->getWidth(); + height = colorbuffer->getHeight(); + samples = colorbuffer->getSamples(); + colorbufferSize = gl::ComputePixelSize(colorbuffer->getInternalFormat()); + missingAttachment = false; + } + } + } + + const Renderbuffer *depthbuffer = NULL; + const Renderbuffer *stencilbuffer = NULL; + + if (mDepthbufferType != GL_NONE) + { + depthbuffer = getDepthbuffer(); + + if (!depthbuffer) + { + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + + if (depthbuffer->getWidth() == 0 || depthbuffer->getHeight() == 0) + { + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + + if (mDepthbufferType == GL_RENDERBUFFER) + { + if (!gl::IsDepthRenderable(depthbuffer->getInternalFormat())) + { + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + } + else if (IsInternalTextureTarget(mDepthbufferType)) + { + GLint internalformat = depthbuffer->getInternalFormat(); + + // depth texture attachments require OES/ANGLE_depth_texture + if (!mRenderer->getDepthTextureSupport()) + { + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + + if (!gl::IsDepthTexture(internalformat)) + { + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + } + else + { + UNREACHABLE(); + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + + if (missingAttachment) + { + width = depthbuffer->getWidth(); + height = depthbuffer->getHeight(); + samples = depthbuffer->getSamples(); + missingAttachment = false; + } + else if (width != depthbuffer->getWidth() || height != depthbuffer->getHeight()) + { + return GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS; + } + else if (samples != depthbuffer->getSamples()) + { + return GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE; + } + } + + if (mStencilbufferType != GL_NONE) + { + stencilbuffer = getStencilbuffer(); + + if (!stencilbuffer) + { + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + + if (stencilbuffer->getWidth() == 0 || stencilbuffer->getHeight() == 0) + { + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + + if (mStencilbufferType == GL_RENDERBUFFER) + { + if (!gl::IsStencilRenderable(stencilbuffer->getInternalFormat())) + { + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + } + else if (IsInternalTextureTarget(mStencilbufferType)) + { + GLint internalformat = stencilbuffer->getInternalFormat(); + + // texture stencil attachments come along as part + // of OES_packed_depth_stencil + OES/ANGLE_depth_texture + if (!mRenderer->getDepthTextureSupport()) + { + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + + if (!gl::IsStencilTexture(internalformat)) + { + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + } + else + { + UNREACHABLE(); + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + } + + if (missingAttachment) + { + width = stencilbuffer->getWidth(); + height = stencilbuffer->getHeight(); + samples = stencilbuffer->getSamples(); + missingAttachment = false; + } + else if (width != stencilbuffer->getWidth() || height != stencilbuffer->getHeight()) + { + return GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS; + } + else if (samples != stencilbuffer->getSamples()) + { + return GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE; + } + } + + // if we have both a depth and stencil buffer, they must refer to the same object + // since we only support packed_depth_stencil and not separate depth and stencil + if (depthbuffer && stencilbuffer && (depthbuffer != stencilbuffer)) + { + return GL_FRAMEBUFFER_UNSUPPORTED; + } + + // we need to have at least one attachment to be complete + if (missingAttachment) + { + return GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT; + } + + return GL_FRAMEBUFFER_COMPLETE; +} + +DefaultFramebuffer::DefaultFramebuffer(rx::Renderer *renderer, Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil) + : Framebuffer(renderer) +{ + mColorbufferPointers[0].set(new Renderbuffer(mRenderer, 0, colorbuffer)); + + Renderbuffer *depthStencilRenderbuffer = new Renderbuffer(mRenderer, 0, depthStencil); + mDepthbufferPointer.set(depthStencilRenderbuffer); + mStencilbufferPointer.set(depthStencilRenderbuffer); + + mColorbufferTypes[0] = GL_RENDERBUFFER; + mDepthbufferType = (depthStencilRenderbuffer->getDepthSize() != 0) ? GL_RENDERBUFFER : GL_NONE; + mStencilbufferType = (depthStencilRenderbuffer->getStencilSize() != 0) ? GL_RENDERBUFFER : GL_NONE; + + mDrawBufferStates[0] = GL_BACK; + mReadBufferState = GL_BACK; +} + +int Framebuffer::getSamples() const +{ + if (completeness() == GL_FRAMEBUFFER_COMPLETE) + { + // for a complete framebuffer, all attachments must have the same sample count + // in this case return the first nonzero sample size + for (unsigned int colorAttachment = 0; colorAttachment < IMPLEMENTATION_MAX_DRAW_BUFFERS; colorAttachment++) + { + if (mColorbufferTypes[colorAttachment] != GL_NONE) + { + return getColorbuffer(colorAttachment)->getSamples(); + } + } + } + + return 0; +} + +GLenum DefaultFramebuffer::completeness() const +{ + // The default framebuffer *must* always be complete, though it may not be + // subject to the same rules as application FBOs. ie, it could have 0x0 size. + return GL_FRAMEBUFFER_COMPLETE; +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Framebuffer.h b/Source/ThirdParty/ANGLE/src/libGLESv2/Framebuffer.h new file mode 100644 index 00000000000..b54e008dd82 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Framebuffer.h @@ -0,0 +1,108 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Framebuffer.h: Defines the gl::Framebuffer class. Implements GL framebuffer +// objects and related functionality. [OpenGL ES 2.0.24] section 4.4 page 105. + +#ifndef LIBGLESV2_FRAMEBUFFER_H_ +#define LIBGLESV2_FRAMEBUFFER_H_ + +#include "common/angleutils.h" +#include "common/RefCountObject.h" +#include "constants.h" + +namespace rx +{ +class Renderer; +} + +namespace gl +{ +class Renderbuffer; +class Colorbuffer; +class Depthbuffer; +class Stencilbuffer; +class DepthStencilbuffer; + +class Framebuffer +{ + public: + explicit Framebuffer(rx::Renderer *renderer); + + virtual ~Framebuffer(); + + void setColorbuffer(unsigned int colorAttachment, GLenum type, GLuint colorbuffer); + void setDepthbuffer(GLenum type, GLuint depthbuffer); + void setStencilbuffer(GLenum type, GLuint stencilbuffer); + + void detachTexture(GLuint texture); + void detachRenderbuffer(GLuint renderbuffer); + + unsigned int getRenderTargetSerial(unsigned int colorAttachment) const; + unsigned int getDepthbufferSerial() const; + unsigned int getStencilbufferSerial() const; + + Renderbuffer *getColorbuffer(unsigned int colorAttachment) const; + Renderbuffer *getDepthbuffer() const; + Renderbuffer *getStencilbuffer() const; + Renderbuffer *getDepthOrStencilbuffer() const; + Renderbuffer *getReadColorbuffer() const; + GLenum getReadColorbufferType() const; + Renderbuffer *getFirstColorbuffer() const; + + GLenum getColorbufferType(unsigned int colorAttachment) const; + GLenum getDepthbufferType() const; + GLenum getStencilbufferType() const; + + GLuint getColorbufferHandle(unsigned int colorAttachment) const; + GLuint getDepthbufferHandle() const; + GLuint getStencilbufferHandle() const; + + GLenum getDrawBufferState(unsigned int colorAttachment) const; + void setDrawBufferState(unsigned int colorAttachment, GLenum drawBuffer); + + bool isEnabledColorAttachment(unsigned int colorAttachment) const; + bool hasEnabledColorAttachment() const; + bool hasStencil() const; + int getSamples() const; + bool usingExtendedDrawBuffers() const; + + virtual GLenum completeness() const; + + protected: + GLenum mColorbufferTypes[IMPLEMENTATION_MAX_DRAW_BUFFERS]; + BindingPointer mColorbufferPointers[IMPLEMENTATION_MAX_DRAW_BUFFERS]; + GLenum mDrawBufferStates[IMPLEMENTATION_MAX_DRAW_BUFFERS]; + GLenum mReadBufferState; + + GLenum mDepthbufferType; + BindingPointer mDepthbufferPointer; + + GLenum mStencilbufferType; + BindingPointer mStencilbufferPointer; + + rx::Renderer *mRenderer; + + private: + DISALLOW_COPY_AND_ASSIGN(Framebuffer); + + Renderbuffer *lookupRenderbuffer(GLenum type, GLuint handle) const; +}; + +class DefaultFramebuffer : public Framebuffer +{ + public: + DefaultFramebuffer(rx::Renderer *Renderer, Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil); + + virtual GLenum completeness() const; + + private: + DISALLOW_COPY_AND_ASSIGN(DefaultFramebuffer); +}; + +} + +#endif // LIBGLESV2_FRAMEBUFFER_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/HandleAllocator.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/HandleAllocator.cpp new file mode 100644 index 00000000000..37da99aa182 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/HandleAllocator.cpp @@ -0,0 +1,64 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// HandleAllocator.cpp: Implements the gl::HandleAllocator class, which is used +// to allocate GL handles. + +#include "libGLESv2/HandleAllocator.h" + +#include "libGLESv2/main.h" + +namespace gl +{ + +HandleAllocator::HandleAllocator() : mBaseValue(1), mNextValue(1) +{ +} + +HandleAllocator::~HandleAllocator() +{ +} + +void HandleAllocator::setBaseHandle(GLuint value) +{ + ASSERT(mBaseValue == mNextValue); + mBaseValue = value; + mNextValue = value; +} + +GLuint HandleAllocator::allocate() +{ + if (mFreeValues.size()) + { + GLuint handle = mFreeValues.back(); + mFreeValues.pop_back(); + return handle; + } + return mNextValue++; +} + +void HandleAllocator::release(GLuint handle) +{ + if (handle == mNextValue - 1) + { + // Don't drop below base value + if(mNextValue > mBaseValue) + { + mNextValue--; + } + } + else + { + // Only free handles that we own - don't drop below the base value + if (handle >= mBaseValue) + { + mFreeValues.push_back(handle); + } + } +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/HandleAllocator.h b/Source/ThirdParty/ANGLE/src/libGLESv2/HandleAllocator.h new file mode 100644 index 00000000000..a92e1684d4f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/HandleAllocator.h @@ -0,0 +1,45 @@ +// +// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// HandleAllocator.h: Defines the gl::HandleAllocator class, which is used to +// allocate GL handles. + +#ifndef LIBGLESV2_HANDLEALLOCATOR_H_ +#define LIBGLESV2_HANDLEALLOCATOR_H_ + +#define GL_APICALL +#include + +#include + +#include "common/angleutils.h" + +namespace gl +{ + +class HandleAllocator +{ + public: + HandleAllocator(); + virtual ~HandleAllocator(); + + void setBaseHandle(GLuint value); + + GLuint allocate(); + void release(GLuint handle); + + private: + DISALLOW_COPY_AND_ASSIGN(HandleAllocator); + + GLuint mBaseValue; + GLuint mNextValue; + typedef std::vector HandleList; + HandleList mFreeValues; +}; + +} + +#endif // LIBGLESV2_HANDLEALLOCATOR_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Program.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/Program.cpp new file mode 100644 index 00000000000..c38aa5a61aa --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Program.cpp @@ -0,0 +1,525 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Program.cpp: Implements the gl::Program class. Implements GL program objects +// and related functionality. [OpenGL ES 2.0.24] section 2.10.3 page 28. + +#include "libGLESv2/Program.h" +#include "libGLESv2/ProgramBinary.h" +#include "libGLESv2/ResourceManager.h" + +namespace gl +{ +const char * const g_fakepath = "C:\\fakepath"; + +AttributeBindings::AttributeBindings() +{ +} + +AttributeBindings::~AttributeBindings() +{ +} + +InfoLog::InfoLog() : mInfoLog(NULL) +{ +} + +InfoLog::~InfoLog() +{ + delete[] mInfoLog; +} + + +int InfoLog::getLength() const +{ + if (!mInfoLog) + { + return 0; + } + else + { + return strlen(mInfoLog) + 1; + } +} + +void InfoLog::getLog(GLsizei bufSize, GLsizei *length, char *infoLog) +{ + int index = 0; + + if (bufSize > 0) + { + if (mInfoLog) + { + index = std::min(bufSize - 1, (int)strlen(mInfoLog)); + memcpy(infoLog, mInfoLog, index); + } + + infoLog[index] = '\0'; + } + + if (length) + { + *length = index; + } +} + +// append a santized message to the program info log. +// The D3D compiler includes a fake file path in some of the warning or error +// messages, so lets remove all occurrences of this fake file path from the log. +void InfoLog::appendSanitized(const char *message) +{ + std::string msg(message); + + size_t found; + do + { + found = msg.find(g_fakepath); + if (found != std::string::npos) + { + msg.erase(found, strlen(g_fakepath)); + } + } + while (found != std::string::npos); + + append("%s", msg.c_str()); +} + +void InfoLog::append(const char *format, ...) +{ + if (!format) + { + return; + } + + char info[1024]; + + va_list vararg; + va_start(vararg, format); + vsnprintf(info, sizeof(info), format, vararg); + va_end(vararg); + + size_t infoLength = strlen(info); + + if (!mInfoLog) + { + mInfoLog = new char[infoLength + 2]; + strcpy(mInfoLog, info); + strcpy(mInfoLog + infoLength, "\n"); + } + else + { + size_t logLength = strlen(mInfoLog); + char *newLog = new char[logLength + infoLength + 2]; + strcpy(newLog, mInfoLog); + strcpy(newLog + logLength, info); + strcpy(newLog + logLength + infoLength, "\n"); + + delete[] mInfoLog; + mInfoLog = newLog; + } +} + +void InfoLog::reset() +{ + if (mInfoLog) + { + delete [] mInfoLog; + mInfoLog = NULL; + } +} + +Program::Program(rx::Renderer *renderer, ResourceManager *manager, GLuint handle) : mResourceManager(manager), mHandle(handle) +{ + mFragmentShader = NULL; + mVertexShader = NULL; + mProgramBinary.set(NULL); + mDeleteStatus = false; + mLinked = false; + mRefCount = 0; + mRenderer = renderer; +} + +Program::~Program() +{ + unlink(true); + + if (mVertexShader != NULL) + { + mVertexShader->release(); + } + + if (mFragmentShader != NULL) + { + mFragmentShader->release(); + } +} + +bool Program::attachShader(Shader *shader) +{ + if (shader->getType() == GL_VERTEX_SHADER) + { + if (mVertexShader) + { + return false; + } + + mVertexShader = (VertexShader*)shader; + mVertexShader->addRef(); + } + else if (shader->getType() == GL_FRAGMENT_SHADER) + { + if (mFragmentShader) + { + return false; + } + + mFragmentShader = (FragmentShader*)shader; + mFragmentShader->addRef(); + } + else UNREACHABLE(); + + return true; +} + +bool Program::detachShader(Shader *shader) +{ + if (shader->getType() == GL_VERTEX_SHADER) + { + if (mVertexShader != shader) + { + return false; + } + + mVertexShader->release(); + mVertexShader = NULL; + } + else if (shader->getType() == GL_FRAGMENT_SHADER) + { + if (mFragmentShader != shader) + { + return false; + } + + mFragmentShader->release(); + mFragmentShader = NULL; + } + else UNREACHABLE(); + + return true; +} + +int Program::getAttachedShadersCount() const +{ + return (mVertexShader ? 1 : 0) + (mFragmentShader ? 1 : 0); +} + +void AttributeBindings::bindAttributeLocation(GLuint index, const char *name) +{ + if (index < MAX_VERTEX_ATTRIBS) + { + for (int i = 0; i < MAX_VERTEX_ATTRIBS; i++) + { + mAttributeBinding[i].erase(name); + } + + mAttributeBinding[index].insert(name); + } +} + +void Program::bindAttributeLocation(GLuint index, const char *name) +{ + mAttributeBindings.bindAttributeLocation(index, name); +} + +// Links the HLSL code of the vertex and pixel shader by matching up their varyings, +// compiling them into binaries, determining the attribute mappings, and collecting +// a list of uniforms +bool Program::link() +{ + unlink(false); + + mInfoLog.reset(); + + mProgramBinary.set(new ProgramBinary(mRenderer)); + mLinked = mProgramBinary->link(mInfoLog, mAttributeBindings, mFragmentShader, mVertexShader); + + return mLinked; +} + +int AttributeBindings::getAttributeBinding(const std::string &name) const +{ + for (int location = 0; location < MAX_VERTEX_ATTRIBS; location++) + { + if (mAttributeBinding[location].find(name) != mAttributeBinding[location].end()) + { + return location; + } + } + + return -1; +} + +// Returns the program object to an unlinked state, before re-linking, or at destruction +void Program::unlink(bool destroy) +{ + if (destroy) // Object being destructed + { + if (mFragmentShader) + { + mFragmentShader->release(); + mFragmentShader = NULL; + } + + if (mVertexShader) + { + mVertexShader->release(); + mVertexShader = NULL; + } + } + + mProgramBinary.set(NULL); + mLinked = false; +} + +bool Program::isLinked() +{ + return mLinked; +} + +ProgramBinary* Program::getProgramBinary() +{ + return mProgramBinary.get(); +} + +bool Program::setProgramBinary(const void *binary, GLsizei length) +{ + unlink(false); + + mInfoLog.reset(); + + mProgramBinary.set(new ProgramBinary(mRenderer)); + mLinked = mProgramBinary->load(mInfoLog, binary, length); + if (!mLinked) + { + mProgramBinary.set(NULL); + } + + return mLinked; +} + +void Program::release() +{ + mRefCount--; + + if (mRefCount == 0 && mDeleteStatus) + { + mResourceManager->deleteProgram(mHandle); + } +} + +void Program::addRef() +{ + mRefCount++; +} + +unsigned int Program::getRefCount() const +{ + return mRefCount; +} + +GLint Program::getProgramBinaryLength() const +{ + ProgramBinary *programBinary = mProgramBinary.get(); + if (programBinary) + { + return programBinary->getLength(); + } + else + { + return 0; + } +} + +int Program::getInfoLogLength() const +{ + return mInfoLog.getLength(); +} + +void Program::getInfoLog(GLsizei bufSize, GLsizei *length, char *infoLog) +{ + return mInfoLog.getLog(bufSize, length, infoLog); +} + +void Program::getAttachedShaders(GLsizei maxCount, GLsizei *count, GLuint *shaders) +{ + int total = 0; + + if (mVertexShader) + { + if (total < maxCount) + { + shaders[total] = mVertexShader->getHandle(); + } + + total++; + } + + if (mFragmentShader) + { + if (total < maxCount) + { + shaders[total] = mFragmentShader->getHandle(); + } + + total++; + } + + if (count) + { + *count = total; + } +} + +void Program::getActiveAttribute(GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + ProgramBinary *programBinary = getProgramBinary(); + if (programBinary) + { + programBinary->getActiveAttribute(index, bufsize, length, size, type, name); + } + else + { + if (bufsize > 0) + { + name[0] = '\0'; + } + + if (length) + { + *length = 0; + } + + *type = GL_NONE; + *size = 1; + } +} + +GLint Program::getActiveAttributeCount() +{ + ProgramBinary *programBinary = getProgramBinary(); + if (programBinary) + { + return programBinary->getActiveAttributeCount(); + } + else + { + return 0; + } +} + +GLint Program::getActiveAttributeMaxLength() +{ + ProgramBinary *programBinary = getProgramBinary(); + if (programBinary) + { + return programBinary->getActiveAttributeMaxLength(); + } + else + { + return 0; + } +} + +void Program::getActiveUniform(GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + ProgramBinary *programBinary = getProgramBinary(); + if (programBinary) + { + return programBinary->getActiveUniform(index, bufsize, length, size, type, name); + } + else + { + if (bufsize > 0) + { + name[0] = '\0'; + } + + if (length) + { + *length = 0; + } + + *size = 0; + *type = GL_NONE; + } +} + +GLint Program::getActiveUniformCount() +{ + ProgramBinary *programBinary = getProgramBinary(); + if (programBinary) + { + return programBinary->getActiveUniformCount(); + } + else + { + return 0; + } +} + +GLint Program::getActiveUniformMaxLength() +{ + ProgramBinary *programBinary = getProgramBinary(); + if (programBinary) + { + return programBinary->getActiveUniformMaxLength(); + } + else + { + return 0; + } +} + +void Program::flagForDeletion() +{ + mDeleteStatus = true; +} + +bool Program::isFlaggedForDeletion() const +{ + return mDeleteStatus; +} + +void Program::validate() +{ + mInfoLog.reset(); + + ProgramBinary *programBinary = getProgramBinary(); + if (isLinked() && programBinary) + { + programBinary->validate(mInfoLog); + } + else + { + mInfoLog.append("Program has not been successfully linked."); + } +} + +bool Program::isValidated() const +{ + ProgramBinary *programBinary = mProgramBinary.get(); + if (programBinary) + { + return programBinary->isValidated(); + } + else + { + return false; + } +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Program.h b/Source/ThirdParty/ANGLE/src/libGLESv2/Program.h new file mode 100644 index 00000000000..a9db83403d9 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Program.h @@ -0,0 +1,130 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Program.h: Defines the gl::Program class. Implements GL program objects +// and related functionality. [OpenGL ES 2.0.24] section 2.10.3 page 28. + +#ifndef LIBGLESV2_PROGRAM_H_ +#define LIBGLESV2_PROGRAM_H_ + +#include +#include + +#include "common/angleutils.h" +#include "common/RefCountObject.h" +#include "libGLESv2/Constants.h" + +namespace rx +{ +class Renderer; +} + +namespace gl +{ +class ResourceManager; +class FragmentShader; +class VertexShader; +class ProgramBinary; +class Shader; + +extern const char * const g_fakepath; + +class AttributeBindings +{ + public: + AttributeBindings(); + ~AttributeBindings(); + + void bindAttributeLocation(GLuint index, const char *name); + int getAttributeBinding(const std::string &name) const; + + private: + std::set mAttributeBinding[MAX_VERTEX_ATTRIBS]; +}; + +class InfoLog +{ + public: + InfoLog(); + ~InfoLog(); + + int getLength() const; + void getLog(GLsizei bufSize, GLsizei *length, char *infoLog); + + void appendSanitized(const char *message); + void append(const char *info, ...); + void reset(); + private: + DISALLOW_COPY_AND_ASSIGN(InfoLog); + char *mInfoLog; +}; + +class Program +{ + public: + Program(rx::Renderer *renderer, ResourceManager *manager, GLuint handle); + + ~Program(); + + bool attachShader(Shader *shader); + bool detachShader(Shader *shader); + int getAttachedShadersCount() const; + + void bindAttributeLocation(GLuint index, const char *name); + + bool link(); + bool isLinked(); + bool setProgramBinary(const void *binary, GLsizei length); + ProgramBinary *getProgramBinary(); + + int getInfoLogLength() const; + void getInfoLog(GLsizei bufSize, GLsizei *length, char *infoLog); + void getAttachedShaders(GLsizei maxCount, GLsizei *count, GLuint *shaders); + + void getActiveAttribute(GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + GLint getActiveAttributeCount(); + GLint getActiveAttributeMaxLength(); + + void getActiveUniform(GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + GLint getActiveUniformCount(); + GLint getActiveUniformMaxLength(); + + void addRef(); + void release(); + unsigned int getRefCount() const; + void flagForDeletion(); + bool isFlaggedForDeletion() const; + + void validate(); + bool isValidated() const; + + GLint getProgramBinaryLength() const; + + private: + DISALLOW_COPY_AND_ASSIGN(Program); + + void unlink(bool destroy = false); + + FragmentShader *mFragmentShader; + VertexShader *mVertexShader; + + AttributeBindings mAttributeBindings; + + BindingPointer mProgramBinary; + bool mLinked; + bool mDeleteStatus; // Flag to indicate that the program can be deleted when no longer in use + + unsigned int mRefCount; + + ResourceManager *mResourceManager; + rx::Renderer *mRenderer; + const GLuint mHandle; + + InfoLog mInfoLog; +}; +} + +#endif // LIBGLESV2_PROGRAM_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/ProgramBinary.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/ProgramBinary.cpp new file mode 100644 index 00000000000..135facd89a0 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/ProgramBinary.cpp @@ -0,0 +1,2620 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Program.cpp: Implements the gl::Program class. Implements GL program objects +// and related functionality. [OpenGL ES 2.0.24] section 2.10.3 page 28. + +#include "libGLESv2/BinaryStream.h" +#include "libGLESv2/ProgramBinary.h" +#include "libGLESv2/renderer/ShaderExecutable.h" + +#include "common/debug.h" +#include "common/version.h" +#include "utilities.h" + +#include "libGLESv2/main.h" +#include "libGLESv2/Shader.h" +#include "libGLESv2/Program.h" +#include "libGLESv2/renderer/Renderer.h" +#include "libGLESv2/renderer/VertexDataManager.h" + +#undef near +#undef far + +namespace gl +{ +std::string str(int i) +{ + char buffer[20]; + snprintf(buffer, sizeof(buffer), "%d", i); + return buffer; +} + +UniformLocation::UniformLocation(const std::string &name, unsigned int element, unsigned int index) + : name(name), element(element), index(index) +{ +} + +unsigned int ProgramBinary::mCurrentSerial = 1; + +ProgramBinary::ProgramBinary(rx::Renderer *renderer) : mRenderer(renderer), RefCountObject(0), mSerial(issueSerial()) +{ + mPixelExecutable = NULL; + mVertexExecutable = NULL; + mGeometryExecutable = NULL; + + mValidated = false; + + for (int index = 0; index < MAX_VERTEX_ATTRIBS; index++) + { + mSemanticIndex[index] = -1; + } + + for (int index = 0; index < MAX_TEXTURE_IMAGE_UNITS; index++) + { + mSamplersPS[index].active = false; + } + + for (int index = 0; index < IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS; index++) + { + mSamplersVS[index].active = false; + } + + mUsedVertexSamplerRange = 0; + mUsedPixelSamplerRange = 0; + mUsesPointSize = false; +} + +ProgramBinary::~ProgramBinary() +{ + delete mPixelExecutable; + mPixelExecutable = NULL; + + delete mVertexExecutable; + mVertexExecutable = NULL; + + delete mGeometryExecutable; + mGeometryExecutable = NULL; + + while (!mUniforms.empty()) + { + delete mUniforms.back(); + mUniforms.pop_back(); + } +} + +unsigned int ProgramBinary::getSerial() const +{ + return mSerial; +} + +unsigned int ProgramBinary::issueSerial() +{ + return mCurrentSerial++; +} + +rx::ShaderExecutable *ProgramBinary::getPixelExecutable() +{ + return mPixelExecutable; +} + +rx::ShaderExecutable *ProgramBinary::getVertexExecutable() +{ + return mVertexExecutable; +} + +rx::ShaderExecutable *ProgramBinary::getGeometryExecutable() +{ + return mGeometryExecutable; +} + +GLuint ProgramBinary::getAttributeLocation(const char *name) +{ + if (name) + { + for (int index = 0; index < MAX_VERTEX_ATTRIBS; index++) + { + if (mLinkedAttribute[index].name == std::string(name)) + { + return index; + } + } + } + + return -1; +} + +int ProgramBinary::getSemanticIndex(int attributeIndex) +{ + ASSERT(attributeIndex >= 0 && attributeIndex < MAX_VERTEX_ATTRIBS); + + return mSemanticIndex[attributeIndex]; +} + +// Returns one more than the highest sampler index used. +GLint ProgramBinary::getUsedSamplerRange(SamplerType type) +{ + switch (type) + { + case SAMPLER_PIXEL: + return mUsedPixelSamplerRange; + case SAMPLER_VERTEX: + return mUsedVertexSamplerRange; + default: + UNREACHABLE(); + return 0; + } +} + +bool ProgramBinary::usesPointSize() const +{ + return mUsesPointSize; +} + +bool ProgramBinary::usesPointSpriteEmulation() const +{ + return mUsesPointSize && mRenderer->getMajorShaderModel() >= 4; +} + +bool ProgramBinary::usesGeometryShader() const +{ + return usesPointSpriteEmulation(); +} + +// Returns the index of the texture image unit (0-19) corresponding to a Direct3D 9 sampler +// index (0-15 for the pixel shader and 0-3 for the vertex shader). +GLint ProgramBinary::getSamplerMapping(SamplerType type, unsigned int samplerIndex) +{ + GLint logicalTextureUnit = -1; + + switch (type) + { + case SAMPLER_PIXEL: + ASSERT(samplerIndex < sizeof(mSamplersPS)/sizeof(mSamplersPS[0])); + + if (mSamplersPS[samplerIndex].active) + { + logicalTextureUnit = mSamplersPS[samplerIndex].logicalTextureUnit; + } + break; + case SAMPLER_VERTEX: + ASSERT(samplerIndex < sizeof(mSamplersVS)/sizeof(mSamplersVS[0])); + + if (mSamplersVS[samplerIndex].active) + { + logicalTextureUnit = mSamplersVS[samplerIndex].logicalTextureUnit; + } + break; + default: UNREACHABLE(); + } + + if (logicalTextureUnit >= 0 && logicalTextureUnit < (GLint)mRenderer->getMaxCombinedTextureImageUnits()) + { + return logicalTextureUnit; + } + + return -1; +} + +// Returns the texture type for a given Direct3D 9 sampler type and +// index (0-15 for the pixel shader and 0-3 for the vertex shader). +TextureType ProgramBinary::getSamplerTextureType(SamplerType type, unsigned int samplerIndex) +{ + switch (type) + { + case SAMPLER_PIXEL: + ASSERT(samplerIndex < sizeof(mSamplersPS)/sizeof(mSamplersPS[0])); + ASSERT(mSamplersPS[samplerIndex].active); + return mSamplersPS[samplerIndex].textureType; + case SAMPLER_VERTEX: + ASSERT(samplerIndex < sizeof(mSamplersVS)/sizeof(mSamplersVS[0])); + ASSERT(mSamplersVS[samplerIndex].active); + return mSamplersVS[samplerIndex].textureType; + default: UNREACHABLE(); + } + + return TEXTURE_2D; +} + +GLint ProgramBinary::getUniformLocation(std::string name) +{ + unsigned int subscript = 0; + + // Strip any trailing array operator and retrieve the subscript + size_t open = name.find_last_of('['); + size_t close = name.find_last_of(']'); + if (open != std::string::npos && close == name.length() - 1) + { + subscript = atoi(name.substr(open + 1).c_str()); + name.erase(open); + } + + unsigned int numUniforms = mUniformIndex.size(); + for (unsigned int location = 0; location < numUniforms; location++) + { + if (mUniformIndex[location].name == name && + mUniformIndex[location].element == subscript) + { + return location; + } + } + + return -1; +} + +bool ProgramBinary::setUniform1fv(GLint location, GLsizei count, const GLfloat* v) +{ + if (location < 0 || location >= (int)mUniformIndex.size()) + { + return false; + } + + Uniform *targetUniform = mUniforms[mUniformIndex[location].index]; + targetUniform->dirty = true; + + int elementCount = targetUniform->elementCount(); + + if (elementCount == 1 && count > 1) + return false; // attempting to write an array to a non-array uniform is an INVALID_OPERATION + + count = std::min(elementCount - (int)mUniformIndex[location].element, count); + + if (targetUniform->type == GL_FLOAT) + { + GLfloat *target = (GLfloat*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + target[0] = v[0]; + target[1] = 0; + target[2] = 0; + target[3] = 0; + target += 4; + v += 1; + } + } + else if (targetUniform->type == GL_BOOL) + { + GLint *boolParams = (GLint*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + boolParams[0] = (v[0] == 0.0f) ? GL_FALSE : GL_TRUE; + boolParams[1] = GL_FALSE; + boolParams[2] = GL_FALSE; + boolParams[3] = GL_FALSE; + boolParams += 4; + v += 1; + } + } + else + { + return false; + } + + return true; +} + +bool ProgramBinary::setUniform2fv(GLint location, GLsizei count, const GLfloat *v) +{ + if (location < 0 || location >= (int)mUniformIndex.size()) + { + return false; + } + + Uniform *targetUniform = mUniforms[mUniformIndex[location].index]; + targetUniform->dirty = true; + + int elementCount = targetUniform->elementCount(); + + if (elementCount == 1 && count > 1) + return false; // attempting to write an array to a non-array uniform is an INVALID_OPERATION + + count = std::min(elementCount - (int)mUniformIndex[location].element, count); + + if (targetUniform->type == GL_FLOAT_VEC2) + { + GLfloat *target = (GLfloat*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + target[0] = v[0]; + target[1] = v[1]; + target[2] = 0; + target[3] = 0; + target += 4; + v += 2; + } + } + else if (targetUniform->type == GL_BOOL_VEC2) + { + GLint *boolParams = (GLint*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + boolParams[0] = (v[0] == 0.0f) ? GL_FALSE : GL_TRUE; + boolParams[1] = (v[1] == 0.0f) ? GL_FALSE : GL_TRUE; + boolParams[2] = GL_FALSE; + boolParams[3] = GL_FALSE; + boolParams += 4; + v += 2; + } + } + else + { + return false; + } + + return true; +} + +bool ProgramBinary::setUniform3fv(GLint location, GLsizei count, const GLfloat *v) +{ + if (location < 0 || location >= (int)mUniformIndex.size()) + { + return false; + } + + Uniform *targetUniform = mUniforms[mUniformIndex[location].index]; + targetUniform->dirty = true; + + int elementCount = targetUniform->elementCount(); + + if (elementCount == 1 && count > 1) + return false; // attempting to write an array to a non-array uniform is an INVALID_OPERATION + + count = std::min(elementCount - (int)mUniformIndex[location].element, count); + + if (targetUniform->type == GL_FLOAT_VEC3) + { + GLfloat *target = (GLfloat*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + target[0] = v[0]; + target[1] = v[1]; + target[2] = v[2]; + target[3] = 0; + target += 4; + v += 3; + } + } + else if (targetUniform->type == GL_BOOL_VEC3) + { + GLint *boolParams = (GLint*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + boolParams[0] = (v[0] == 0.0f) ? GL_FALSE : GL_TRUE; + boolParams[1] = (v[1] == 0.0f) ? GL_FALSE : GL_TRUE; + boolParams[2] = (v[2] == 0.0f) ? GL_FALSE : GL_TRUE; + boolParams[3] = GL_FALSE; + boolParams += 4; + v += 3; + } + } + else + { + return false; + } + + return true; +} + +bool ProgramBinary::setUniform4fv(GLint location, GLsizei count, const GLfloat *v) +{ + if (location < 0 || location >= (int)mUniformIndex.size()) + { + return false; + } + + Uniform *targetUniform = mUniforms[mUniformIndex[location].index]; + targetUniform->dirty = true; + + int elementCount = targetUniform->elementCount(); + + if (elementCount == 1 && count > 1) + return false; // attempting to write an array to a non-array uniform is an INVALID_OPERATION + + count = std::min(elementCount - (int)mUniformIndex[location].element, count); + + if (targetUniform->type == GL_FLOAT_VEC4) + { + GLfloat *target = (GLfloat*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + target[0] = v[0]; + target[1] = v[1]; + target[2] = v[2]; + target[3] = v[3]; + target += 4; + v += 4; + } + } + else if (targetUniform->type == GL_BOOL_VEC4) + { + GLint *boolParams = (GLint*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + boolParams[0] = (v[0] == 0.0f) ? GL_FALSE : GL_TRUE; + boolParams[1] = (v[1] == 0.0f) ? GL_FALSE : GL_TRUE; + boolParams[2] = (v[2] == 0.0f) ? GL_FALSE : GL_TRUE; + boolParams[3] = (v[3] == 0.0f) ? GL_FALSE : GL_TRUE; + boolParams += 4; + v += 4; + } + } + else + { + return false; + } + + return true; +} + +template +void transposeMatrix(T *target, const GLfloat *value) +{ + int copyWidth = std::min(targetWidth, srcWidth); + int copyHeight = std::min(targetHeight, srcHeight); + + for (int x = 0; x < copyWidth; x++) + { + for (int y = 0; y < copyHeight; y++) + { + target[x * targetWidth + y] = (T)value[y * srcWidth + x]; + } + } + // clear unfilled right side + for (int y = 0; y < copyHeight; y++) + { + for (int x = srcWidth; x < targetWidth; x++) + { + target[y * targetWidth + x] = (T)0; + } + } + // clear unfilled bottom. + for (int y = srcHeight; y < targetHeight; y++) + { + for (int x = 0; x < targetWidth; x++) + { + target[y * targetWidth + x] = (T)0; + } + } +} + +bool ProgramBinary::setUniformMatrix2fv(GLint location, GLsizei count, const GLfloat *value) +{ + if (location < 0 || location >= (int)mUniformIndex.size()) + { + return false; + } + + Uniform *targetUniform = mUniforms[mUniformIndex[location].index]; + targetUniform->dirty = true; + + if (targetUniform->type != GL_FLOAT_MAT2) + { + return false; + } + + int elementCount = targetUniform->elementCount(); + + if (elementCount == 1 && count > 1) + return false; // attempting to write an array to a non-array uniform is an INVALID_OPERATION + + count = std::min(elementCount - (int)mUniformIndex[location].element, count); + GLfloat *target = (GLfloat*)targetUniform->data + mUniformIndex[location].element * 8; + + for (int i = 0; i < count; i++) + { + transposeMatrix(target, value); + target += 8; + value += 4; + } + + return true; +} + +bool ProgramBinary::setUniformMatrix3fv(GLint location, GLsizei count, const GLfloat *value) +{ + if (location < 0 || location >= (int)mUniformIndex.size()) + { + return false; + } + + Uniform *targetUniform = mUniforms[mUniformIndex[location].index]; + targetUniform->dirty = true; + + if (targetUniform->type != GL_FLOAT_MAT3) + { + return false; + } + + int elementCount = targetUniform->elementCount(); + + if (elementCount == 1 && count > 1) + return false; // attempting to write an array to a non-array uniform is an INVALID_OPERATION + + count = std::min(elementCount - (int)mUniformIndex[location].element, count); + GLfloat *target = (GLfloat*)targetUniform->data + mUniformIndex[location].element * 12; + + for (int i = 0; i < count; i++) + { + transposeMatrix(target, value); + target += 12; + value += 9; + } + + return true; +} + + +bool ProgramBinary::setUniformMatrix4fv(GLint location, GLsizei count, const GLfloat *value) +{ + if (location < 0 || location >= (int)mUniformIndex.size()) + { + return false; + } + + Uniform *targetUniform = mUniforms[mUniformIndex[location].index]; + targetUniform->dirty = true; + + if (targetUniform->type != GL_FLOAT_MAT4) + { + return false; + } + + int elementCount = targetUniform->elementCount(); + + if (elementCount == 1 && count > 1) + return false; // attempting to write an array to a non-array uniform is an INVALID_OPERATION + + count = std::min(elementCount - (int)mUniformIndex[location].element, count); + GLfloat *target = (GLfloat*)(targetUniform->data + mUniformIndex[location].element * sizeof(GLfloat) * 16); + + for (int i = 0; i < count; i++) + { + transposeMatrix(target, value); + target += 16; + value += 16; + } + + return true; +} + +bool ProgramBinary::setUniform1iv(GLint location, GLsizei count, const GLint *v) +{ + if (location < 0 || location >= (int)mUniformIndex.size()) + { + return false; + } + + Uniform *targetUniform = mUniforms[mUniformIndex[location].index]; + targetUniform->dirty = true; + + int elementCount = targetUniform->elementCount(); + + if (elementCount == 1 && count > 1) + return false; // attempting to write an array to a non-array uniform is an INVALID_OPERATION + + count = std::min(elementCount - (int)mUniformIndex[location].element, count); + + if (targetUniform->type == GL_INT || + targetUniform->type == GL_SAMPLER_2D || + targetUniform->type == GL_SAMPLER_CUBE) + { + GLint *target = (GLint*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + target[0] = v[0]; + target[1] = 0; + target[2] = 0; + target[3] = 0; + target += 4; + v += 1; + } + } + else if (targetUniform->type == GL_BOOL) + { + GLint *boolParams = (GLint*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + boolParams[0] = (v[0] == 0) ? GL_FALSE : GL_TRUE; + boolParams[1] = GL_FALSE; + boolParams[2] = GL_FALSE; + boolParams[3] = GL_FALSE; + boolParams += 4; + v += 1; + } + } + else + { + return false; + } + + return true; +} + +bool ProgramBinary::setUniform2iv(GLint location, GLsizei count, const GLint *v) +{ + if (location < 0 || location >= (int)mUniformIndex.size()) + { + return false; + } + + Uniform *targetUniform = mUniforms[mUniformIndex[location].index]; + targetUniform->dirty = true; + + int elementCount = targetUniform->elementCount(); + + if (elementCount == 1 && count > 1) + return false; // attempting to write an array to a non-array uniform is an INVALID_OPERATION + + count = std::min(elementCount - (int)mUniformIndex[location].element, count); + + if (targetUniform->type == GL_INT_VEC2) + { + GLint *target = (GLint*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + target[0] = v[0]; + target[1] = v[1]; + target[2] = 0; + target[3] = 0; + target += 4; + v += 2; + } + } + else if (targetUniform->type == GL_BOOL_VEC2) + { + GLint *boolParams = (GLint*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + boolParams[0] = (v[0] == 0) ? GL_FALSE : GL_TRUE; + boolParams[1] = (v[1] == 0) ? GL_FALSE : GL_TRUE; + boolParams[2] = GL_FALSE; + boolParams[3] = GL_FALSE; + boolParams += 4; + v += 2; + } + } + else + { + return false; + } + + return true; +} + +bool ProgramBinary::setUniform3iv(GLint location, GLsizei count, const GLint *v) +{ + if (location < 0 || location >= (int)mUniformIndex.size()) + { + return false; + } + + Uniform *targetUniform = mUniforms[mUniformIndex[location].index]; + targetUniform->dirty = true; + + int elementCount = targetUniform->elementCount(); + + if (elementCount == 1 && count > 1) + return false; // attempting to write an array to a non-array uniform is an INVALID_OPERATION + + count = std::min(elementCount - (int)mUniformIndex[location].element, count); + + if (targetUniform->type == GL_INT_VEC3) + { + GLint *target = (GLint*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + target[0] = v[0]; + target[1] = v[1]; + target[2] = v[2]; + target[3] = 0; + target += 4; + v += 3; + } + } + else if (targetUniform->type == GL_BOOL_VEC3) + { + GLint *boolParams = (GLint*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + boolParams[0] = (v[0] == 0) ? GL_FALSE : GL_TRUE; + boolParams[1] = (v[1] == 0) ? GL_FALSE : GL_TRUE; + boolParams[2] = (v[2] == 0) ? GL_FALSE : GL_TRUE; + boolParams[3] = GL_FALSE; + boolParams += 4; + v += 3; + } + } + else + { + return false; + } + + return true; +} + +bool ProgramBinary::setUniform4iv(GLint location, GLsizei count, const GLint *v) +{ + if (location < 0 || location >= (int)mUniformIndex.size()) + { + return false; + } + + Uniform *targetUniform = mUniforms[mUniformIndex[location].index]; + targetUniform->dirty = true; + + int elementCount = targetUniform->elementCount(); + + if (elementCount == 1 && count > 1) + return false; // attempting to write an array to a non-array uniform is an INVALID_OPERATION + + count = std::min(elementCount - (int)mUniformIndex[location].element, count); + + if (targetUniform->type == GL_INT_VEC4) + { + GLint *target = (GLint*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + target[0] = v[0]; + target[1] = v[1]; + target[2] = v[2]; + target[3] = v[3]; + target += 4; + v += 4; + } + } + else if (targetUniform->type == GL_BOOL_VEC4) + { + GLint *boolParams = (GLint*)targetUniform->data + mUniformIndex[location].element * 4; + + for (int i = 0; i < count; i++) + { + boolParams[0] = (v[0] == 0) ? GL_FALSE : GL_TRUE; + boolParams[1] = (v[1] == 0) ? GL_FALSE : GL_TRUE; + boolParams[2] = (v[2] == 0) ? GL_FALSE : GL_TRUE; + boolParams[3] = (v[3] == 0) ? GL_FALSE : GL_TRUE; + boolParams += 4; + v += 4; + } + } + else + { + return false; + } + + return true; +} + +bool ProgramBinary::getUniformfv(GLint location, GLsizei *bufSize, GLfloat *params) +{ + if (location < 0 || location >= (int)mUniformIndex.size()) + { + return false; + } + + Uniform *targetUniform = mUniforms[mUniformIndex[location].index]; + + // sized queries -- ensure the provided buffer is large enough + if (bufSize) + { + int requiredBytes = UniformExternalSize(targetUniform->type); + if (*bufSize < requiredBytes) + { + return false; + } + } + + switch (targetUniform->type) + { + case GL_FLOAT_MAT2: + transposeMatrix(params, (GLfloat*)targetUniform->data + mUniformIndex[location].element * 8); + break; + case GL_FLOAT_MAT3: + transposeMatrix(params, (GLfloat*)targetUniform->data + mUniformIndex[location].element * 12); + break; + case GL_FLOAT_MAT4: + transposeMatrix(params, (GLfloat*)targetUniform->data + mUniformIndex[location].element * 16); + break; + default: + { + unsigned int size = UniformComponentCount(targetUniform->type); + + switch (UniformComponentType(targetUniform->type)) + { + case GL_BOOL: + { + GLint *boolParams = (GLint*)targetUniform->data + mUniformIndex[location].element * 4; + + for (unsigned int i = 0; i < size; i++) + { + params[i] = (boolParams[i] == GL_FALSE) ? 0.0f : 1.0f; + } + } + break; + case GL_FLOAT: + memcpy(params, targetUniform->data + mUniformIndex[location].element * 4 * sizeof(GLfloat), + size * sizeof(GLfloat)); + break; + case GL_INT: + { + GLint *intParams = (GLint*)targetUniform->data + mUniformIndex[location].element * 4; + + for (unsigned int i = 0; i < size; i++) + { + params[i] = (float)intParams[i]; + } + } + break; + default: UNREACHABLE(); + } + } + } + + return true; +} + +bool ProgramBinary::getUniformiv(GLint location, GLsizei *bufSize, GLint *params) +{ + if (location < 0 || location >= (int)mUniformIndex.size()) + { + return false; + } + + Uniform *targetUniform = mUniforms[mUniformIndex[location].index]; + + // sized queries -- ensure the provided buffer is large enough + if (bufSize) + { + int requiredBytes = UniformExternalSize(targetUniform->type); + if (*bufSize < requiredBytes) + { + return false; + } + } + + switch (targetUniform->type) + { + case GL_FLOAT_MAT2: + transposeMatrix(params, (GLfloat*)targetUniform->data + mUniformIndex[location].element * 8); + break; + case GL_FLOAT_MAT3: + transposeMatrix(params, (GLfloat*)targetUniform->data + mUniformIndex[location].element * 12); + break; + case GL_FLOAT_MAT4: + transposeMatrix(params, (GLfloat*)targetUniform->data + mUniformIndex[location].element * 16); + break; + default: + { + unsigned int size = VariableColumnCount(targetUniform->type); + + switch (UniformComponentType(targetUniform->type)) + { + case GL_BOOL: + { + GLint *boolParams = (GLint*)targetUniform->data + mUniformIndex[location].element * 4; + + for (unsigned int i = 0; i < size; i++) + { + params[i] = boolParams[i]; + } + } + break; + case GL_FLOAT: + { + GLfloat *floatParams = (GLfloat*)targetUniform->data + mUniformIndex[location].element * 4; + + for (unsigned int i = 0; i < size; i++) + { + params[i] = (GLint)floatParams[i]; + } + } + break; + case GL_INT: + memcpy(params, targetUniform->data + mUniformIndex[location].element * 4 * sizeof(GLint), + size * sizeof(GLint)); + break; + default: UNREACHABLE(); + } + } + } + + return true; +} + +void ProgramBinary::dirtyAllUniforms() +{ + unsigned int numUniforms = mUniforms.size(); + for (unsigned int index = 0; index < numUniforms; index++) + { + mUniforms[index]->dirty = true; + } +} + +// Applies all the uniforms set for this program object to the renderer +void ProgramBinary::applyUniforms() +{ + // Retrieve sampler uniform values + for (std::vector::iterator ub = mUniforms.begin(), ue = mUniforms.end(); ub != ue; ++ub) + { + Uniform *targetUniform = *ub; + + if (targetUniform->dirty) + { + if (targetUniform->type == GL_SAMPLER_2D || + targetUniform->type == GL_SAMPLER_CUBE) + { + int count = targetUniform->elementCount(); + GLint (*v)[4] = (GLint(*)[4])targetUniform->data; + + if (targetUniform->psRegisterIndex >= 0) + { + unsigned int firstIndex = targetUniform->psRegisterIndex; + + for (int i = 0; i < count; i++) + { + unsigned int samplerIndex = firstIndex + i; + + if (samplerIndex < MAX_TEXTURE_IMAGE_UNITS) + { + ASSERT(mSamplersPS[samplerIndex].active); + mSamplersPS[samplerIndex].logicalTextureUnit = v[i][0]; + } + } + } + + if (targetUniform->vsRegisterIndex >= 0) + { + unsigned int firstIndex = targetUniform->vsRegisterIndex; + + for (int i = 0; i < count; i++) + { + unsigned int samplerIndex = firstIndex + i; + + if (samplerIndex < IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS) + { + ASSERT(mSamplersVS[samplerIndex].active); + mSamplersVS[samplerIndex].logicalTextureUnit = v[i][0]; + } + } + } + } + } + } + + mRenderer->applyUniforms(this, &mUniforms); +} + +// Packs varyings into generic varying registers, using the algorithm from [OpenGL ES Shading Language 1.00 rev. 17] appendix A section 7 page 111 +// Returns the number of used varying registers, or -1 if unsuccesful +int ProgramBinary::packVaryings(InfoLog &infoLog, const Varying *packing[][4], FragmentShader *fragmentShader) +{ + const int maxVaryingVectors = mRenderer->getMaxVaryingVectors(); + + fragmentShader->resetVaryingsRegisterAssignment(); + + for (VaryingList::iterator varying = fragmentShader->mVaryings.begin(); varying != fragmentShader->mVaryings.end(); varying++) + { + int n = VariableRowCount(varying->type) * varying->size; + int m = VariableColumnCount(varying->type); + bool success = false; + + if (m == 2 || m == 3 || m == 4) + { + for (int r = 0; r <= maxVaryingVectors - n && !success; r++) + { + bool available = true; + + for (int y = 0; y < n && available; y++) + { + for (int x = 0; x < m && available; x++) + { + if (packing[r + y][x]) + { + available = false; + } + } + } + + if (available) + { + varying->reg = r; + varying->col = 0; + + for (int y = 0; y < n; y++) + { + for (int x = 0; x < m; x++) + { + packing[r + y][x] = &*varying; + } + } + + success = true; + } + } + + if (!success && m == 2) + { + for (int r = maxVaryingVectors - n; r >= 0 && !success; r--) + { + bool available = true; + + for (int y = 0; y < n && available; y++) + { + for (int x = 2; x < 4 && available; x++) + { + if (packing[r + y][x]) + { + available = false; + } + } + } + + if (available) + { + varying->reg = r; + varying->col = 2; + + for (int y = 0; y < n; y++) + { + for (int x = 2; x < 4; x++) + { + packing[r + y][x] = &*varying; + } + } + + success = true; + } + } + } + } + else if (m == 1) + { + int space[4] = {0}; + + for (int y = 0; y < maxVaryingVectors; y++) + { + for (int x = 0; x < 4; x++) + { + space[x] += packing[y][x] ? 0 : 1; + } + } + + int column = 0; + + for (int x = 0; x < 4; x++) + { + if (space[x] >= n && space[x] < space[column]) + { + column = x; + } + } + + if (space[column] >= n) + { + for (int r = 0; r < maxVaryingVectors; r++) + { + if (!packing[r][column]) + { + varying->reg = r; + + for (int y = r; y < r + n; y++) + { + packing[y][column] = &*varying; + } + + break; + } + } + + varying->col = column; + + success = true; + } + } + else UNREACHABLE(); + + if (!success) + { + infoLog.append("Could not pack varying %s", varying->name.c_str()); + + return -1; + } + } + + // Return the number of used registers + int registers = 0; + + for (int r = 0; r < maxVaryingVectors; r++) + { + if (packing[r][0] || packing[r][1] || packing[r][2] || packing[r][3]) + { + registers++; + } + } + + return registers; +} + +bool ProgramBinary::linkVaryings(InfoLog &infoLog, int registers, const Varying *packing[][4], + std::string& pixelHLSL, std::string& vertexHLSL, + FragmentShader *fragmentShader, VertexShader *vertexShader) +{ + if (pixelHLSL.empty() || vertexHLSL.empty()) + { + return false; + } + + bool usesMRT = fragmentShader->mUsesMultipleRenderTargets; + bool usesFragColor = fragmentShader->mUsesFragColor; + bool usesFragData = fragmentShader->mUsesFragData; + if (usesFragColor && usesFragData) + { + infoLog.append("Cannot use both gl_FragColor and gl_FragData in the same fragment shader."); + return false; + } + + // Write the HLSL input/output declarations + const int shaderModel = mRenderer->getMajorShaderModel(); + const int maxVaryingVectors = mRenderer->getMaxVaryingVectors(); + + const int registersNeeded = registers + (fragmentShader->mUsesFragCoord ? 1 : 0) + (fragmentShader->mUsesPointCoord ? 1 : 0); + + // The output color is broadcast to all enabled draw buffers when writing to gl_FragColor + const bool broadcast = fragmentShader->mUsesFragColor; + const unsigned int numRenderTargets = (broadcast || usesMRT ? mRenderer->getMaxRenderTargets() : 1); + + if (registersNeeded > maxVaryingVectors) + { + infoLog.append("No varying registers left to support gl_FragCoord/gl_PointCoord"); + + return false; + } + + vertexShader->resetVaryingsRegisterAssignment(); + + for (VaryingList::iterator input = fragmentShader->mVaryings.begin(); input != fragmentShader->mVaryings.end(); input++) + { + bool matched = false; + + for (VaryingList::iterator output = vertexShader->mVaryings.begin(); output != vertexShader->mVaryings.end(); output++) + { + if (output->name == input->name) + { + if (output->type != input->type || output->size != input->size) + { + infoLog.append("Type of vertex varying %s does not match that of the fragment varying", output->name.c_str()); + + return false; + } + + output->reg = input->reg; + output->col = input->col; + + matched = true; + break; + } + } + + if (!matched) + { + infoLog.append("Fragment varying %s does not match any vertex varying", input->name.c_str()); + + return false; + } + } + + mUsesPointSize = vertexShader->mUsesPointSize; + std::string varyingSemantic = (mUsesPointSize && shaderModel == 3) ? "COLOR" : "TEXCOORD"; + std::string targetSemantic = (shaderModel >= 4) ? "SV_Target" : "COLOR"; + std::string positionSemantic = (shaderModel >= 4) ? "SV_Position" : "POSITION"; + std::string depthSemantic = (shaderModel >= 4) ? "SV_Depth" : "DEPTH"; + + // special varyings that use reserved registers + int reservedRegisterIndex = registers; + std::string fragCoordSemantic; + std::string pointCoordSemantic; + + if (fragmentShader->mUsesFragCoord) + { + fragCoordSemantic = varyingSemantic + str(reservedRegisterIndex++); + } + + if (fragmentShader->mUsesPointCoord) + { + // Shader model 3 uses a special TEXCOORD semantic for point sprite texcoords. + // In DX11 we compute this in the GS. + if (shaderModel == 3) + { + pointCoordSemantic = "TEXCOORD0"; + } + else if (shaderModel >= 4) + { + pointCoordSemantic = varyingSemantic + str(reservedRegisterIndex++); + } + } + + vertexHLSL += "struct VS_INPUT\n" + "{\n"; + + int semanticIndex = 0; + for (AttributeArray::iterator attribute = vertexShader->mAttributes.begin(); attribute != vertexShader->mAttributes.end(); attribute++) + { + switch (attribute->type) + { + case GL_FLOAT: vertexHLSL += " float "; break; + case GL_FLOAT_VEC2: vertexHLSL += " float2 "; break; + case GL_FLOAT_VEC3: vertexHLSL += " float3 "; break; + case GL_FLOAT_VEC4: vertexHLSL += " float4 "; break; + case GL_FLOAT_MAT2: vertexHLSL += " float2x2 "; break; + case GL_FLOAT_MAT3: vertexHLSL += " float3x3 "; break; + case GL_FLOAT_MAT4: vertexHLSL += " float4x4 "; break; + default: UNREACHABLE(); + } + + vertexHLSL += decorateAttribute(attribute->name) + " : TEXCOORD" + str(semanticIndex) + ";\n"; + + semanticIndex += VariableRowCount(attribute->type); + } + + vertexHLSL += "};\n" + "\n" + "struct VS_OUTPUT\n" + "{\n"; + + if (shaderModel < 4) + { + vertexHLSL += " float4 gl_Position : " + positionSemantic + ";\n"; + } + + for (int r = 0; r < registers; r++) + { + int registerSize = packing[r][3] ? 4 : (packing[r][2] ? 3 : (packing[r][1] ? 2 : 1)); + + vertexHLSL += " float" + str(registerSize) + " v" + str(r) + " : " + varyingSemantic + str(r) + ";\n"; + } + + if (fragmentShader->mUsesFragCoord) + { + vertexHLSL += " float4 gl_FragCoord : " + fragCoordSemantic + ";\n"; + } + + if (vertexShader->mUsesPointSize && shaderModel >= 3) + { + vertexHLSL += " float gl_PointSize : PSIZE;\n"; + } + + if (shaderModel >= 4) + { + vertexHLSL += " float4 gl_Position : " + positionSemantic + ";\n"; + } + + vertexHLSL += "};\n" + "\n" + "VS_OUTPUT main(VS_INPUT input)\n" + "{\n"; + + for (AttributeArray::iterator attribute = vertexShader->mAttributes.begin(); attribute != vertexShader->mAttributes.end(); attribute++) + { + vertexHLSL += " " + decorateAttribute(attribute->name) + " = "; + + if (VariableRowCount(attribute->type) > 1) // Matrix + { + vertexHLSL += "transpose"; + } + + vertexHLSL += "(input." + decorateAttribute(attribute->name) + ");\n"; + } + + if (shaderModel >= 4) + { + vertexHLSL += "\n" + " gl_main();\n" + "\n" + " VS_OUTPUT output;\n" + " output.gl_Position.x = gl_Position.x;\n" + " output.gl_Position.y = -gl_Position.y;\n" + " output.gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5;\n" + " output.gl_Position.w = gl_Position.w;\n"; + } + else + { + vertexHLSL += "\n" + " gl_main();\n" + "\n" + " VS_OUTPUT output;\n" + " output.gl_Position.x = gl_Position.x * dx_ViewAdjust.z + dx_ViewAdjust.x * gl_Position.w;\n" + " output.gl_Position.y = -(gl_Position.y * dx_ViewAdjust.w + dx_ViewAdjust.y * gl_Position.w);\n" + " output.gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5;\n" + " output.gl_Position.w = gl_Position.w;\n"; + } + + if (vertexShader->mUsesPointSize && shaderModel >= 3) + { + vertexHLSL += " output.gl_PointSize = gl_PointSize;\n"; + } + + if (fragmentShader->mUsesFragCoord) + { + vertexHLSL += " output.gl_FragCoord = gl_Position;\n"; + } + + for (VaryingList::iterator varying = vertexShader->mVaryings.begin(); varying != vertexShader->mVaryings.end(); varying++) + { + if (varying->reg >= 0) + { + for (int i = 0; i < varying->size; i++) + { + int rows = VariableRowCount(varying->type); + + for (int j = 0; j < rows; j++) + { + int r = varying->reg + i * rows + j; + vertexHLSL += " output.v" + str(r); + + bool sharedRegister = false; // Register used by multiple varyings + + for (int x = 0; x < 4; x++) + { + if (packing[r][x] && packing[r][x] != packing[r][0]) + { + sharedRegister = true; + break; + } + } + + if(sharedRegister) + { + vertexHLSL += "."; + + for (int x = 0; x < 4; x++) + { + if (packing[r][x] == &*varying) + { + switch(x) + { + case 0: vertexHLSL += "x"; break; + case 1: vertexHLSL += "y"; break; + case 2: vertexHLSL += "z"; break; + case 3: vertexHLSL += "w"; break; + } + } + } + } + + vertexHLSL += " = " + varying->name; + + if (varying->array) + { + vertexHLSL += "[" + str(i) + "]"; + } + + if (rows > 1) + { + vertexHLSL += "[" + str(j) + "]"; + } + + vertexHLSL += ";\n"; + } + } + } + } + + vertexHLSL += "\n" + " return output;\n" + "}\n"; + + pixelHLSL += "struct PS_INPUT\n" + "{\n"; + + for (VaryingList::iterator varying = fragmentShader->mVaryings.begin(); varying != fragmentShader->mVaryings.end(); varying++) + { + if (varying->reg >= 0) + { + for (int i = 0; i < varying->size; i++) + { + int rows = VariableRowCount(varying->type); + for (int j = 0; j < rows; j++) + { + std::string n = str(varying->reg + i * rows + j); + pixelHLSL += " float" + str(VariableColumnCount(varying->type)) + " v" + n + " : " + varyingSemantic + n + ";\n"; + } + } + } + else UNREACHABLE(); + } + + if (fragmentShader->mUsesFragCoord) + { + pixelHLSL += " float4 gl_FragCoord : " + fragCoordSemantic + ";\n"; + } + + if (fragmentShader->mUsesPointCoord && shaderModel >= 3) + { + pixelHLSL += " float2 gl_PointCoord : " + pointCoordSemantic + ";\n"; + } + + // Must consume the PSIZE element if the geometry shader is not active + // We won't know if we use a GS until we draw + if (vertexShader->mUsesPointSize && shaderModel >= 4) + { + pixelHLSL += " float gl_PointSize : PSIZE;\n"; + } + + if (fragmentShader->mUsesFragCoord) + { + if (shaderModel >= 4) + { + pixelHLSL += " float4 dx_VPos : SV_Position;\n"; + } + else if (shaderModel >= 3) + { + pixelHLSL += " float2 dx_VPos : VPOS;\n"; + } + } + + pixelHLSL += "};\n" + "\n" + "struct PS_OUTPUT\n" + "{\n"; + + for (unsigned int renderTargetIndex = 0; renderTargetIndex < numRenderTargets; renderTargetIndex++) + { + pixelHLSL += " float4 gl_Color" + str(renderTargetIndex) + " : " + targetSemantic + str(renderTargetIndex) + ";\n"; + } + + if (fragmentShader->mUsesFragDepth) + { + pixelHLSL += " float gl_Depth : " + depthSemantic + ";\n"; + } + + pixelHLSL += "};\n" + "\n"; + + if (fragmentShader->mUsesFrontFacing) + { + if (shaderModel >= 4) + { + pixelHLSL += "PS_OUTPUT main(PS_INPUT input, bool isFrontFace : SV_IsFrontFace)\n" + "{\n"; + } + else + { + pixelHLSL += "PS_OUTPUT main(PS_INPUT input, float vFace : VFACE)\n" + "{\n"; + } + } + else + { + pixelHLSL += "PS_OUTPUT main(PS_INPUT input)\n" + "{\n"; + } + + if (fragmentShader->mUsesFragCoord) + { + pixelHLSL += " float rhw = 1.0 / input.gl_FragCoord.w;\n"; + + if (shaderModel >= 4) + { + pixelHLSL += " gl_FragCoord.x = input.dx_VPos.x;\n" + " gl_FragCoord.y = input.dx_VPos.y;\n"; + } + else if (shaderModel >= 3) + { + pixelHLSL += " gl_FragCoord.x = input.dx_VPos.x + 0.5;\n" + " gl_FragCoord.y = input.dx_VPos.y + 0.5;\n"; + } + else + { + // dx_ViewCoords contains the viewport width/2, height/2, center.x and center.y. See Renderer::setViewport() + pixelHLSL += " gl_FragCoord.x = (input.gl_FragCoord.x * rhw) * dx_ViewCoords.x + dx_ViewCoords.z;\n" + " gl_FragCoord.y = (input.gl_FragCoord.y * rhw) * dx_ViewCoords.y + dx_ViewCoords.w;\n"; + } + + pixelHLSL += " gl_FragCoord.z = (input.gl_FragCoord.z * rhw) * dx_DepthFront.x + dx_DepthFront.y;\n" + " gl_FragCoord.w = rhw;\n"; + } + + if (fragmentShader->mUsesPointCoord && shaderModel >= 3) + { + pixelHLSL += " gl_PointCoord.x = input.gl_PointCoord.x;\n"; + pixelHLSL += " gl_PointCoord.y = 1.0 - input.gl_PointCoord.y;\n"; + } + + if (fragmentShader->mUsesFrontFacing) + { + if (shaderModel <= 3) + { + pixelHLSL += " gl_FrontFacing = (vFace * dx_DepthFront.z >= 0.0);\n"; + } + else + { + pixelHLSL += " gl_FrontFacing = isFrontFace;\n"; + } + } + + for (VaryingList::iterator varying = fragmentShader->mVaryings.begin(); varying != fragmentShader->mVaryings.end(); varying++) + { + if (varying->reg >= 0) + { + for (int i = 0; i < varying->size; i++) + { + int rows = VariableRowCount(varying->type); + for (int j = 0; j < rows; j++) + { + std::string n = str(varying->reg + i * rows + j); + pixelHLSL += " " + varying->name; + + if (varying->array) + { + pixelHLSL += "[" + str(i) + "]"; + } + + if (rows > 1) + { + pixelHLSL += "[" + str(j) + "]"; + } + + switch (VariableColumnCount(varying->type)) + { + case 1: pixelHLSL += " = input.v" + n + ".x;\n"; break; + case 2: pixelHLSL += " = input.v" + n + ".xy;\n"; break; + case 3: pixelHLSL += " = input.v" + n + ".xyz;\n"; break; + case 4: pixelHLSL += " = input.v" + n + ";\n"; break; + default: UNREACHABLE(); + } + } + } + } + else UNREACHABLE(); + } + + pixelHLSL += "\n" + " gl_main();\n" + "\n" + " PS_OUTPUT output;\n"; + + for (unsigned int renderTargetIndex = 0; renderTargetIndex < numRenderTargets; renderTargetIndex++) + { + unsigned int sourceColorIndex = broadcast ? 0 : renderTargetIndex; + + pixelHLSL += " output.gl_Color" + str(renderTargetIndex) + " = gl_Color[" + str(sourceColorIndex) + "];\n"; + } + + if (fragmentShader->mUsesFragDepth) + { + pixelHLSL += " output.gl_Depth = gl_Depth;\n"; + } + + pixelHLSL += "\n" + " return output;\n" + "}\n"; + + return true; +} + +bool ProgramBinary::load(InfoLog &infoLog, const void *binary, GLsizei length) +{ + BinaryInputStream stream(binary, length); + + int format = 0; + stream.read(&format); + if (format != GL_PROGRAM_BINARY_ANGLE) + { + infoLog.append("Invalid program binary format."); + return false; + } + + int version = 0; + stream.read(&version); + if (version != VERSION_DWORD) + { + infoLog.append("Invalid program binary version."); + return false; + } + + int compileFlags = 0; + stream.read(&compileFlags); + if (compileFlags != ANGLE_COMPILE_OPTIMIZATION_LEVEL) + { + infoLog.append("Mismatched compilation flags."); + return false; + } + + for (int i = 0; i < MAX_VERTEX_ATTRIBS; ++i) + { + stream.read(&mLinkedAttribute[i].type); + std::string name; + stream.read(&name); + mLinkedAttribute[i].name = name; + stream.read(&mSemanticIndex[i]); + } + + for (unsigned int i = 0; i < MAX_TEXTURE_IMAGE_UNITS; ++i) + { + stream.read(&mSamplersPS[i].active); + stream.read(&mSamplersPS[i].logicalTextureUnit); + + int textureType; + stream.read(&textureType); + mSamplersPS[i].textureType = (TextureType) textureType; + } + + for (unsigned int i = 0; i < IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS; ++i) + { + stream.read(&mSamplersVS[i].active); + stream.read(&mSamplersVS[i].logicalTextureUnit); + + int textureType; + stream.read(&textureType); + mSamplersVS[i].textureType = (TextureType) textureType; + } + + stream.read(&mUsedVertexSamplerRange); + stream.read(&mUsedPixelSamplerRange); + stream.read(&mUsesPointSize); + + size_t size; + stream.read(&size); + if (stream.error()) + { + infoLog.append("Invalid program binary."); + return false; + } + + mUniforms.resize(size); + for (unsigned int i = 0; i < size; ++i) + { + GLenum type; + GLenum precision; + std::string name; + unsigned int arraySize; + + stream.read(&type); + stream.read(&precision); + stream.read(&name); + stream.read(&arraySize); + + mUniforms[i] = new Uniform(type, precision, name, arraySize); + + stream.read(&mUniforms[i]->psRegisterIndex); + stream.read(&mUniforms[i]->vsRegisterIndex); + stream.read(&mUniforms[i]->registerCount); + } + + stream.read(&size); + if (stream.error()) + { + infoLog.append("Invalid program binary."); + return false; + } + + mUniformIndex.resize(size); + for (unsigned int i = 0; i < size; ++i) + { + stream.read(&mUniformIndex[i].name); + stream.read(&mUniformIndex[i].element); + stream.read(&mUniformIndex[i].index); + } + + unsigned int pixelShaderSize; + stream.read(&pixelShaderSize); + + unsigned int vertexShaderSize; + stream.read(&vertexShaderSize); + + unsigned int geometryShaderSize; + stream.read(&geometryShaderSize); + + const char *ptr = (const char*) binary + stream.offset(); + + const GUID *binaryIdentifier = (const GUID *) ptr; + ptr += sizeof(GUID); + + GUID identifier = mRenderer->getAdapterIdentifier(); + if (memcmp(&identifier, binaryIdentifier, sizeof(GUID)) != 0) + { + infoLog.append("Invalid program binary."); + return false; + } + + const char *pixelShaderFunction = ptr; + ptr += pixelShaderSize; + + const char *vertexShaderFunction = ptr; + ptr += vertexShaderSize; + + const char *geometryShaderFunction = geometryShaderSize > 0 ? ptr : NULL; + ptr += geometryShaderSize; + + mPixelExecutable = mRenderer->loadExecutable(reinterpret_cast(pixelShaderFunction), + pixelShaderSize, rx::SHADER_PIXEL); + if (!mPixelExecutable) + { + infoLog.append("Could not create pixel shader."); + return false; + } + + mVertexExecutable = mRenderer->loadExecutable(reinterpret_cast(vertexShaderFunction), + vertexShaderSize, rx::SHADER_VERTEX); + if (!mVertexExecutable) + { + infoLog.append("Could not create vertex shader."); + delete mPixelExecutable; + mPixelExecutable = NULL; + return false; + } + + if (geometryShaderFunction != NULL && geometryShaderSize > 0) + { + mGeometryExecutable = mRenderer->loadExecutable(reinterpret_cast(geometryShaderFunction), + geometryShaderSize, rx::SHADER_GEOMETRY); + if (!mGeometryExecutable) + { + infoLog.append("Could not create geometry shader."); + delete mPixelExecutable; + mPixelExecutable = NULL; + delete mVertexExecutable; + mVertexExecutable = NULL; + return false; + } + } + else + { + mGeometryExecutable = NULL; + } + + return true; +} + +bool ProgramBinary::save(void* binary, GLsizei bufSize, GLsizei *length) +{ + BinaryOutputStream stream; + + stream.write(GL_PROGRAM_BINARY_ANGLE); + stream.write(VERSION_DWORD); + stream.write(ANGLE_COMPILE_OPTIMIZATION_LEVEL); + + for (unsigned int i = 0; i < MAX_VERTEX_ATTRIBS; ++i) + { + stream.write(mLinkedAttribute[i].type); + stream.write(mLinkedAttribute[i].name); + stream.write(mSemanticIndex[i]); + } + + for (unsigned int i = 0; i < MAX_TEXTURE_IMAGE_UNITS; ++i) + { + stream.write(mSamplersPS[i].active); + stream.write(mSamplersPS[i].logicalTextureUnit); + stream.write((int) mSamplersPS[i].textureType); + } + + for (unsigned int i = 0; i < IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS; ++i) + { + stream.write(mSamplersVS[i].active); + stream.write(mSamplersVS[i].logicalTextureUnit); + stream.write((int) mSamplersVS[i].textureType); + } + + stream.write(mUsedVertexSamplerRange); + stream.write(mUsedPixelSamplerRange); + stream.write(mUsesPointSize); + + stream.write(mUniforms.size()); + for (unsigned int i = 0; i < mUniforms.size(); ++i) + { + stream.write(mUniforms[i]->type); + stream.write(mUniforms[i]->precision); + stream.write(mUniforms[i]->name); + stream.write(mUniforms[i]->arraySize); + + stream.write(mUniforms[i]->psRegisterIndex); + stream.write(mUniforms[i]->vsRegisterIndex); + stream.write(mUniforms[i]->registerCount); + } + + stream.write(mUniformIndex.size()); + for (unsigned int i = 0; i < mUniformIndex.size(); ++i) + { + stream.write(mUniformIndex[i].name); + stream.write(mUniformIndex[i].element); + stream.write(mUniformIndex[i].index); + } + + UINT pixelShaderSize = mPixelExecutable->getLength(); + stream.write(pixelShaderSize); + + UINT vertexShaderSize = mVertexExecutable->getLength(); + stream.write(vertexShaderSize); + + UINT geometryShaderSize = (mGeometryExecutable != NULL) ? mGeometryExecutable->getLength() : 0; + stream.write(geometryShaderSize); + + GUID identifier = mRenderer->getAdapterIdentifier(); + + GLsizei streamLength = stream.length(); + const void *streamData = stream.data(); + + GLsizei totalLength = streamLength + sizeof(GUID) + pixelShaderSize + vertexShaderSize + geometryShaderSize; + if (totalLength > bufSize) + { + if (length) + { + *length = 0; + } + + return false; + } + + if (binary) + { + char *ptr = (char*) binary; + + memcpy(ptr, streamData, streamLength); + ptr += streamLength; + + memcpy(ptr, &identifier, sizeof(GUID)); + ptr += sizeof(GUID); + + memcpy(ptr, mPixelExecutable->getFunction(), pixelShaderSize); + ptr += pixelShaderSize; + + memcpy(ptr, mVertexExecutable->getFunction(), vertexShaderSize); + ptr += vertexShaderSize; + + if (mGeometryExecutable != NULL && geometryShaderSize > 0) + { + memcpy(ptr, mGeometryExecutable->getFunction(), geometryShaderSize); + ptr += geometryShaderSize; + } + + ASSERT(ptr - totalLength == binary); + } + + if (length) + { + *length = totalLength; + } + + return true; +} + +GLint ProgramBinary::getLength() +{ + GLint length; + if (save(NULL, INT_MAX, &length)) + { + return length; + } + else + { + return 0; + } +} + +bool ProgramBinary::link(InfoLog &infoLog, const AttributeBindings &attributeBindings, FragmentShader *fragmentShader, VertexShader *vertexShader) +{ + if (!fragmentShader || !fragmentShader->isCompiled()) + { + return false; + } + + if (!vertexShader || !vertexShader->isCompiled()) + { + return false; + } + + std::string pixelHLSL = fragmentShader->getHLSL(); + std::string vertexHLSL = vertexShader->getHLSL(); + + // Map the varyings to the register file + const Varying *packing[IMPLEMENTATION_MAX_VARYING_VECTORS][4] = {NULL}; + int registers = packVaryings(infoLog, packing, fragmentShader); + + if (registers < 0) + { + return false; + } + + if (!linkVaryings(infoLog, registers, packing, pixelHLSL, vertexHLSL, fragmentShader, vertexShader)) + { + return false; + } + + bool success = true; + + if (!linkAttributes(infoLog, attributeBindings, fragmentShader, vertexShader)) + { + success = false; + } + + if (!linkUniforms(infoLog, vertexShader->getUniforms(), fragmentShader->getUniforms())) + { + success = false; + } + + // special case for gl_DepthRange, the only built-in uniform (also a struct) + if (vertexShader->mUsesDepthRange || fragmentShader->mUsesDepthRange) + { + mUniforms.push_back(new Uniform(GL_FLOAT, GL_HIGH_FLOAT, "gl_DepthRange.near", 0)); + mUniforms.push_back(new Uniform(GL_FLOAT, GL_HIGH_FLOAT, "gl_DepthRange.far", 0)); + mUniforms.push_back(new Uniform(GL_FLOAT, GL_HIGH_FLOAT, "gl_DepthRange.diff", 0)); + } + + if (success) + { + mVertexExecutable = mRenderer->compileToExecutable(infoLog, vertexHLSL.c_str(), rx::SHADER_VERTEX); + mPixelExecutable = mRenderer->compileToExecutable(infoLog, pixelHLSL.c_str(), rx::SHADER_PIXEL); + + if (usesGeometryShader()) + { + std::string geometryHLSL = generateGeometryShaderHLSL(registers, packing, fragmentShader, vertexShader); + mGeometryExecutable = mRenderer->compileToExecutable(infoLog, geometryHLSL.c_str(), rx::SHADER_GEOMETRY); + } + + if (!mVertexExecutable || !mPixelExecutable || (usesGeometryShader() && !mGeometryExecutable)) + { + infoLog.append("Failed to create D3D shaders."); + success = false; + + delete mVertexExecutable; + mVertexExecutable = NULL; + delete mPixelExecutable; + mPixelExecutable = NULL; + delete mGeometryExecutable; + mGeometryExecutable = NULL; + } + } + + return success; +} + +// Determines the mapping between GL attributes and Direct3D 9 vertex stream usage indices +bool ProgramBinary::linkAttributes(InfoLog &infoLog, const AttributeBindings &attributeBindings, FragmentShader *fragmentShader, VertexShader *vertexShader) +{ + unsigned int usedLocations = 0; + + // Link attributes that have a binding location + for (AttributeArray::iterator attribute = vertexShader->mAttributes.begin(); attribute != vertexShader->mAttributes.end(); attribute++) + { + int location = attributeBindings.getAttributeBinding(attribute->name); + + if (location != -1) // Set by glBindAttribLocation + { + if (!mLinkedAttribute[location].name.empty()) + { + // Multiple active attributes bound to the same location; not an error + } + + mLinkedAttribute[location] = *attribute; + + int rows = VariableRowCount(attribute->type); + + if (rows + location > MAX_VERTEX_ATTRIBS) + { + infoLog.append("Active attribute (%s) at location %d is too big to fit", attribute->name.c_str(), location); + + return false; + } + + for (int i = 0; i < rows; i++) + { + usedLocations |= 1 << (location + i); + } + } + } + + // Link attributes that don't have a binding location + for (AttributeArray::iterator attribute = vertexShader->mAttributes.begin(); attribute != vertexShader->mAttributes.end(); attribute++) + { + int location = attributeBindings.getAttributeBinding(attribute->name); + + if (location == -1) // Not set by glBindAttribLocation + { + int rows = VariableRowCount(attribute->type); + int availableIndex = AllocateFirstFreeBits(&usedLocations, rows, MAX_VERTEX_ATTRIBS); + + if (availableIndex == -1 || availableIndex + rows > MAX_VERTEX_ATTRIBS) + { + infoLog.append("Too many active attributes (%s)", attribute->name.c_str()); + + return false; // Fail to link + } + + mLinkedAttribute[availableIndex] = *attribute; + } + } + + for (int attributeIndex = 0; attributeIndex < MAX_VERTEX_ATTRIBS; ) + { + int index = vertexShader->getSemanticIndex(mLinkedAttribute[attributeIndex].name); + int rows = std::max(VariableRowCount(mLinkedAttribute[attributeIndex].type), 1); + + for (int r = 0; r < rows; r++) + { + mSemanticIndex[attributeIndex++] = index++; + } + } + + return true; +} + +bool ProgramBinary::linkUniforms(InfoLog &infoLog, const sh::ActiveUniforms &vertexUniforms, const sh::ActiveUniforms &fragmentUniforms) +{ + for (sh::ActiveUniforms::const_iterator uniform = vertexUniforms.begin(); uniform != vertexUniforms.end(); uniform++) + { + if (!defineUniform(GL_VERTEX_SHADER, *uniform, infoLog)) + { + return false; + } + } + + for (sh::ActiveUniforms::const_iterator uniform = fragmentUniforms.begin(); uniform != fragmentUniforms.end(); uniform++) + { + if (!defineUniform(GL_FRAGMENT_SHADER, *uniform, infoLog)) + { + return false; + } + } + + return true; +} + +bool ProgramBinary::defineUniform(GLenum shader, const sh::Uniform &constant, InfoLog &infoLog) +{ + if (constant.type == GL_SAMPLER_2D || + constant.type == GL_SAMPLER_CUBE) + { + unsigned int samplerIndex = constant.registerIndex; + + do + { + if (shader == GL_VERTEX_SHADER) + { + if (samplerIndex < mRenderer->getMaxVertexTextureImageUnits()) + { + mSamplersVS[samplerIndex].active = true; + mSamplersVS[samplerIndex].textureType = (constant.type == GL_SAMPLER_CUBE) ? TEXTURE_CUBE : TEXTURE_2D; + mSamplersVS[samplerIndex].logicalTextureUnit = 0; + mUsedVertexSamplerRange = std::max(samplerIndex + 1, mUsedVertexSamplerRange); + } + else + { + infoLog.append("Vertex shader sampler count exceeds the maximum vertex texture units (%d).", mRenderer->getMaxVertexTextureImageUnits()); + return false; + } + } + else if (shader == GL_FRAGMENT_SHADER) + { + if (samplerIndex < MAX_TEXTURE_IMAGE_UNITS) + { + mSamplersPS[samplerIndex].active = true; + mSamplersPS[samplerIndex].textureType = (constant.type == GL_SAMPLER_CUBE) ? TEXTURE_CUBE : TEXTURE_2D; + mSamplersPS[samplerIndex].logicalTextureUnit = 0; + mUsedPixelSamplerRange = std::max(samplerIndex + 1, mUsedPixelSamplerRange); + } + else + { + infoLog.append("Pixel shader sampler count exceeds MAX_TEXTURE_IMAGE_UNITS (%d).", MAX_TEXTURE_IMAGE_UNITS); + return false; + } + } + else UNREACHABLE(); + + samplerIndex++; + } + while (samplerIndex < constant.registerIndex + constant.arraySize); + } + + Uniform *uniform = NULL; + GLint location = getUniformLocation(constant.name); + + if (location >= 0) // Previously defined, type and precision must match + { + uniform = mUniforms[mUniformIndex[location].index]; + + if (uniform->type != constant.type) + { + infoLog.append("Types for uniform %s do not match between the vertex and fragment shader", uniform->name.c_str()); + return false; + } + + if (uniform->precision != constant.precision) + { + infoLog.append("Precisions for uniform %s do not match between the vertex and fragment shader", uniform->name.c_str()); + return false; + } + } + else + { + uniform = new Uniform(constant.type, constant.precision, constant.name, constant.arraySize); + } + + if (!uniform) + { + return false; + } + + if (shader == GL_FRAGMENT_SHADER) + { + uniform->psRegisterIndex = constant.registerIndex; + } + else if (shader == GL_VERTEX_SHADER) + { + uniform->vsRegisterIndex = constant.registerIndex; + } + else UNREACHABLE(); + + if (location >= 0) + { + return uniform->type == constant.type; + } + + mUniforms.push_back(uniform); + unsigned int uniformIndex = mUniforms.size() - 1; + + for (unsigned int i = 0; i < uniform->elementCount(); i++) + { + mUniformIndex.push_back(UniformLocation(constant.name, i, uniformIndex)); + } + + if (shader == GL_VERTEX_SHADER) + { + if (constant.registerIndex + uniform->registerCount > mRenderer->getReservedVertexUniformVectors() + mRenderer->getMaxVertexUniformVectors()) + { + infoLog.append("Vertex shader active uniforms exceed GL_MAX_VERTEX_UNIFORM_VECTORS (%u)", mRenderer->getMaxVertexUniformVectors()); + return false; + } + } + else if (shader == GL_FRAGMENT_SHADER) + { + if (constant.registerIndex + uniform->registerCount > mRenderer->getReservedFragmentUniformVectors() + mRenderer->getMaxFragmentUniformVectors()) + { + infoLog.append("Fragment shader active uniforms exceed GL_MAX_FRAGMENT_UNIFORM_VECTORS (%u)", mRenderer->getMaxFragmentUniformVectors()); + return false; + } + } + else UNREACHABLE(); + + return true; +} + +std::string ProgramBinary::generateGeometryShaderHLSL(int registers, const Varying *packing[][4], FragmentShader *fragmentShader, VertexShader *vertexShader) const +{ + // for now we only handle point sprite emulation + ASSERT(usesPointSpriteEmulation()); + return generatePointSpriteHLSL(registers, packing, fragmentShader, vertexShader); +} + +std::string ProgramBinary::generatePointSpriteHLSL(int registers, const Varying *packing[][4], FragmentShader *fragmentShader, VertexShader *vertexShader) const +{ + ASSERT(registers >= 0); + ASSERT(vertexShader->mUsesPointSize); + ASSERT(mRenderer->getMajorShaderModel() >= 4); + + std::string geomHLSL; + + std::string varyingSemantic = "TEXCOORD"; + + std::string fragCoordSemantic; + std::string pointCoordSemantic; + + int reservedRegisterIndex = registers; + + if (fragmentShader->mUsesFragCoord) + { + fragCoordSemantic = varyingSemantic + str(reservedRegisterIndex++); + } + + if (fragmentShader->mUsesPointCoord) + { + pointCoordSemantic = varyingSemantic + str(reservedRegisterIndex++); + } + + geomHLSL += "uniform float4 dx_ViewCoords : register(c1);\n" + "\n" + "struct GS_INPUT\n" + "{\n"; + + for (int r = 0; r < registers; r++) + { + int registerSize = packing[r][3] ? 4 : (packing[r][2] ? 3 : (packing[r][1] ? 2 : 1)); + + geomHLSL += " float" + str(registerSize) + " v" + str(r) + " : " + varyingSemantic + str(r) + ";\n"; + } + + if (fragmentShader->mUsesFragCoord) + { + geomHLSL += " float4 gl_FragCoord : " + fragCoordSemantic + ";\n"; + } + + geomHLSL += " float gl_PointSize : PSIZE;\n" + " float4 gl_Position : SV_Position;\n" + "};\n" + "\n" + "struct GS_OUTPUT\n" + "{\n"; + + for (int r = 0; r < registers; r++) + { + int registerSize = packing[r][3] ? 4 : (packing[r][2] ? 3 : (packing[r][1] ? 2 : 1)); + + geomHLSL += " float" + str(registerSize) + " v" + str(r) + " : " + varyingSemantic + str(r) + ";\n"; + } + + if (fragmentShader->mUsesFragCoord) + { + geomHLSL += " float4 gl_FragCoord : " + fragCoordSemantic + ";\n"; + } + + if (fragmentShader->mUsesPointCoord) + { + geomHLSL += " float2 gl_PointCoord : " + pointCoordSemantic + ";\n"; + } + + geomHLSL += " float gl_PointSize : PSIZE;\n" + " float4 gl_Position : SV_Position;\n" + "};\n" + "\n" + "static float2 pointSpriteCorners[] = \n" + "{\n" + " float2( 0.5f, -0.5f),\n" + " float2( 0.5f, 0.5f),\n" + " float2(-0.5f, -0.5f),\n" + " float2(-0.5f, 0.5f)\n" + "};\n" + "\n" + "static float2 pointSpriteTexcoords[] = \n" + "{\n" + " float2(1.0f, 1.0f),\n" + " float2(1.0f, 0.0f),\n" + " float2(0.0f, 1.0f),\n" + " float2(0.0f, 0.0f)\n" + "};\n" + "\n" + "static float minPointSize = " + str(ALIASED_POINT_SIZE_RANGE_MIN) + ".0f;\n" + "static float maxPointSize = " + str(mRenderer->getMaxPointSize()) + ".0f;\n" + "\n" + "[maxvertexcount(4)]\n" + "void main(point GS_INPUT input[1], inout TriangleStream outStream)\n" + "{\n" + " GS_OUTPUT output = (GS_OUTPUT)0;\n" + " output.gl_PointSize = input[0].gl_PointSize;\n"; + + for (int r = 0; r < registers; r++) + { + geomHLSL += " output.v" + str(r) + " = input[0].v" + str(r) + ";\n"; + } + + if (fragmentShader->mUsesFragCoord) + { + geomHLSL += " output.gl_FragCoord = input[0].gl_FragCoord;\n"; + } + + geomHLSL += " \n" + " float gl_PointSize = clamp(input[0].gl_PointSize, minPointSize, maxPointSize);\n" + " float4 gl_Position = input[0].gl_Position;\n" + " float2 viewportScale = float2(1.0f / dx_ViewCoords.x, 1.0f / dx_ViewCoords.y) * gl_Position.w;\n"; + + for (int corner = 0; corner < 4; corner++) + { + geomHLSL += " \n" + " output.gl_Position = gl_Position + float4(pointSpriteCorners[" + str(corner) + "] * viewportScale * gl_PointSize, 0.0f, 0.0f);\n"; + + if (fragmentShader->mUsesPointCoord) + { + geomHLSL += " output.gl_PointCoord = pointSpriteTexcoords[" + str(corner) + "];\n"; + } + + geomHLSL += " outStream.Append(output);\n"; + } + + geomHLSL += " \n" + " outStream.RestartStrip();\n" + "}\n"; + + return geomHLSL; +} + +// This method needs to match OutputHLSL::decorate +std::string ProgramBinary::decorateAttribute(const std::string &name) +{ + if (name.compare(0, 3, "gl_") != 0 && name.compare(0, 3, "dx_") != 0) + { + return "_" + name; + } + + return name; +} + +bool ProgramBinary::isValidated() const +{ + return mValidated; +} + +void ProgramBinary::getActiveAttribute(GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) const +{ + // Skip over inactive attributes + unsigned int activeAttribute = 0; + unsigned int attribute; + for (attribute = 0; attribute < MAX_VERTEX_ATTRIBS; attribute++) + { + if (mLinkedAttribute[attribute].name.empty()) + { + continue; + } + + if (activeAttribute == index) + { + break; + } + + activeAttribute++; + } + + if (bufsize > 0) + { + const char *string = mLinkedAttribute[attribute].name.c_str(); + + strncpy(name, string, bufsize); + name[bufsize - 1] = '\0'; + + if (length) + { + *length = strlen(name); + } + } + + *size = 1; // Always a single 'type' instance + + *type = mLinkedAttribute[attribute].type; +} + +GLint ProgramBinary::getActiveAttributeCount() const +{ + int count = 0; + + for (int attributeIndex = 0; attributeIndex < MAX_VERTEX_ATTRIBS; attributeIndex++) + { + if (!mLinkedAttribute[attributeIndex].name.empty()) + { + count++; + } + } + + return count; +} + +GLint ProgramBinary::getActiveAttributeMaxLength() const +{ + int maxLength = 0; + + for (int attributeIndex = 0; attributeIndex < MAX_VERTEX_ATTRIBS; attributeIndex++) + { + if (!mLinkedAttribute[attributeIndex].name.empty()) + { + maxLength = std::max((int)(mLinkedAttribute[attributeIndex].name.length() + 1), maxLength); + } + } + + return maxLength; +} + +void ProgramBinary::getActiveUniform(GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) const +{ + ASSERT(index < mUniforms.size()); // index must be smaller than getActiveUniformCount() + + if (bufsize > 0) + { + std::string string = mUniforms[index]->name; + + if (mUniforms[index]->isArray()) + { + string += "[0]"; + } + + strncpy(name, string.c_str(), bufsize); + name[bufsize - 1] = '\0'; + + if (length) + { + *length = strlen(name); + } + } + + *size = mUniforms[index]->elementCount(); + + *type = mUniforms[index]->type; +} + +GLint ProgramBinary::getActiveUniformCount() const +{ + return mUniforms.size(); +} + +GLint ProgramBinary::getActiveUniformMaxLength() const +{ + int maxLength = 0; + + unsigned int numUniforms = mUniforms.size(); + for (unsigned int uniformIndex = 0; uniformIndex < numUniforms; uniformIndex++) + { + if (!mUniforms[uniformIndex]->name.empty()) + { + int length = (int)(mUniforms[uniformIndex]->name.length() + 1); + if (mUniforms[uniformIndex]->isArray()) + { + length += 3; // Counting in "[0]". + } + maxLength = std::max(length, maxLength); + } + } + + return maxLength; +} + +void ProgramBinary::validate(InfoLog &infoLog) +{ + applyUniforms(); + if (!validateSamplers(&infoLog)) + { + mValidated = false; + } + else + { + mValidated = true; + } +} + +bool ProgramBinary::validateSamplers(InfoLog *infoLog) +{ + // if any two active samplers in a program are of different types, but refer to the same + // texture image unit, and this is the current program, then ValidateProgram will fail, and + // DrawArrays and DrawElements will issue the INVALID_OPERATION error. + + const unsigned int maxCombinedTextureImageUnits = mRenderer->getMaxCombinedTextureImageUnits(); + TextureType textureUnitType[IMPLEMENTATION_MAX_COMBINED_TEXTURE_IMAGE_UNITS]; + + for (unsigned int i = 0; i < IMPLEMENTATION_MAX_COMBINED_TEXTURE_IMAGE_UNITS; ++i) + { + textureUnitType[i] = TEXTURE_UNKNOWN; + } + + for (unsigned int i = 0; i < mUsedPixelSamplerRange; ++i) + { + if (mSamplersPS[i].active) + { + unsigned int unit = mSamplersPS[i].logicalTextureUnit; + + if (unit >= maxCombinedTextureImageUnits) + { + if (infoLog) + { + infoLog->append("Sampler uniform (%d) exceeds IMPLEMENTATION_MAX_COMBINED_TEXTURE_IMAGE_UNITS (%d)", unit, maxCombinedTextureImageUnits); + } + + return false; + } + + if (textureUnitType[unit] != TEXTURE_UNKNOWN) + { + if (mSamplersPS[i].textureType != textureUnitType[unit]) + { + if (infoLog) + { + infoLog->append("Samplers of conflicting types refer to the same texture image unit (%d).", unit); + } + + return false; + } + } + else + { + textureUnitType[unit] = mSamplersPS[i].textureType; + } + } + } + + for (unsigned int i = 0; i < mUsedVertexSamplerRange; ++i) + { + if (mSamplersVS[i].active) + { + unsigned int unit = mSamplersVS[i].logicalTextureUnit; + + if (unit >= maxCombinedTextureImageUnits) + { + if (infoLog) + { + infoLog->append("Sampler uniform (%d) exceeds IMPLEMENTATION_MAX_COMBINED_TEXTURE_IMAGE_UNITS (%d)", unit, maxCombinedTextureImageUnits); + } + + return false; + } + + if (textureUnitType[unit] != TEXTURE_UNKNOWN) + { + if (mSamplersVS[i].textureType != textureUnitType[unit]) + { + if (infoLog) + { + infoLog->append("Samplers of conflicting types refer to the same texture image unit (%d).", unit); + } + + return false; + } + } + else + { + textureUnitType[unit] = mSamplersVS[i].textureType; + } + } + } + + return true; +} + +ProgramBinary::Sampler::Sampler() : active(false), logicalTextureUnit(0), textureType(TEXTURE_2D) +{ +} + +struct AttributeSorter +{ + AttributeSorter(const int (&semanticIndices)[MAX_VERTEX_ATTRIBS]) + : originalIndices(semanticIndices) + { + for (int i = 0; i < MAX_VERTEX_ATTRIBS; i++) + { + indices[i] = i; + } + + std::sort(&indices[0], &indices[MAX_VERTEX_ATTRIBS], *this); + } + + bool operator()(int a, int b) + { + return originalIndices[a] == -1 ? false : originalIndices[a] < originalIndices[b]; + } + + int indices[MAX_VERTEX_ATTRIBS]; + const int (&originalIndices)[MAX_VERTEX_ATTRIBS]; +}; + +void ProgramBinary::sortAttributesByLayout(rx::TranslatedAttribute attributes[MAX_VERTEX_ATTRIBS], int sortedSemanticIndices[MAX_VERTEX_ATTRIBS]) const +{ + AttributeSorter sorter(mSemanticIndex); + + int oldIndices[MAX_VERTEX_ATTRIBS]; + rx::TranslatedAttribute oldTranslatedAttributes[MAX_VERTEX_ATTRIBS]; + + for (int i = 0; i < MAX_VERTEX_ATTRIBS; i++) + { + oldIndices[i] = mSemanticIndex[i]; + oldTranslatedAttributes[i] = attributes[i]; + } + + for (int i = 0; i < MAX_VERTEX_ATTRIBS; i++) + { + int oldIndex = sorter.indices[i]; + sortedSemanticIndices[i] = oldIndices[oldIndex]; + attributes[i] = oldTranslatedAttributes[oldIndex]; + } +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/ProgramBinary.h b/Source/ThirdParty/ANGLE/src/libGLESv2/ProgramBinary.h new file mode 100644 index 00000000000..2386c0bd6f4 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/ProgramBinary.h @@ -0,0 +1,174 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Program.h: Defines the gl::Program class. Implements GL program objects +// and related functionality. [OpenGL ES 2.0.24] section 2.10.3 page 28. + +#ifndef LIBGLESV2_PROGRAM_BINARY_H_ +#define LIBGLESV2_PROGRAM_BINARY_H_ + +#define GL_APICALL +#include +#include + +#include +#include + +#include "common/RefCountObject.h" +#include "angletypes.h" +#include "libGLESv2/mathutil.h" +#include "libGLESv2/Uniform.h" +#include "libGLESv2/Shader.h" +#include "libGLESv2/Constants.h" + +namespace rx +{ +class ShaderExecutable; +class Renderer; +struct TranslatedAttribute; +} + +namespace gl +{ +class FragmentShader; +class VertexShader; +class InfoLog; +class AttributeBindings; +struct Varying; + +// Struct used for correlating uniforms/elements of uniform arrays to handles +struct UniformLocation +{ + UniformLocation() + { + } + + UniformLocation(const std::string &name, unsigned int element, unsigned int index); + + std::string name; + unsigned int element; + unsigned int index; +}; + +// This is the result of linking a program. It is the state that would be passed to ProgramBinary. +class ProgramBinary : public RefCountObject +{ + public: + explicit ProgramBinary(rx::Renderer *renderer); + ~ProgramBinary(); + + rx::ShaderExecutable *getPixelExecutable(); + rx::ShaderExecutable *getVertexExecutable(); + rx::ShaderExecutable *getGeometryExecutable(); + + GLuint getAttributeLocation(const char *name); + int getSemanticIndex(int attributeIndex); + + GLint getSamplerMapping(SamplerType type, unsigned int samplerIndex); + TextureType getSamplerTextureType(SamplerType type, unsigned int samplerIndex); + GLint getUsedSamplerRange(SamplerType type); + bool usesPointSize() const; + bool usesPointSpriteEmulation() const; + bool usesGeometryShader() const; + + GLint getUniformLocation(std::string name); + bool setUniform1fv(GLint location, GLsizei count, const GLfloat *v); + bool setUniform2fv(GLint location, GLsizei count, const GLfloat *v); + bool setUniform3fv(GLint location, GLsizei count, const GLfloat *v); + bool setUniform4fv(GLint location, GLsizei count, const GLfloat *v); + bool setUniformMatrix2fv(GLint location, GLsizei count, const GLfloat *value); + bool setUniformMatrix3fv(GLint location, GLsizei count, const GLfloat *value); + bool setUniformMatrix4fv(GLint location, GLsizei count, const GLfloat *value); + bool setUniform1iv(GLint location, GLsizei count, const GLint *v); + bool setUniform2iv(GLint location, GLsizei count, const GLint *v); + bool setUniform3iv(GLint location, GLsizei count, const GLint *v); + bool setUniform4iv(GLint location, GLsizei count, const GLint *v); + + bool getUniformfv(GLint location, GLsizei *bufSize, GLfloat *params); + bool getUniformiv(GLint location, GLsizei *bufSize, GLint *params); + + void dirtyAllUniforms(); + void applyUniforms(); + + bool load(InfoLog &infoLog, const void *binary, GLsizei length); + bool save(void* binary, GLsizei bufSize, GLsizei *length); + GLint getLength(); + + bool link(InfoLog &infoLog, const AttributeBindings &attributeBindings, FragmentShader *fragmentShader, VertexShader *vertexShader); + void getAttachedShaders(GLsizei maxCount, GLsizei *count, GLuint *shaders); + + void getActiveAttribute(GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) const; + GLint getActiveAttributeCount() const; + GLint getActiveAttributeMaxLength() const; + + void getActiveUniform(GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) const; + GLint getActiveUniformCount() const; + GLint getActiveUniformMaxLength() const; + + void validate(InfoLog &infoLog); + bool validateSamplers(InfoLog *infoLog); + bool isValidated() const; + + unsigned int getSerial() const; + + void sortAttributesByLayout(rx::TranslatedAttribute attributes[gl::MAX_VERTEX_ATTRIBS], int sortedSemanticIndices[MAX_VERTEX_ATTRIBS]) const; + + static std::string decorateAttribute(const std::string &name); // Prepend an underscore + + private: + DISALLOW_COPY_AND_ASSIGN(ProgramBinary); + + int packVaryings(InfoLog &infoLog, const Varying *packing[][4], FragmentShader *fragmentShader); + bool linkVaryings(InfoLog &infoLog, int registers, const Varying *packing[][4], + std::string& pixelHLSL, std::string& vertexHLSL, + FragmentShader *fragmentShader, VertexShader *vertexShader); + + bool linkAttributes(InfoLog &infoLog, const AttributeBindings &attributeBindings, FragmentShader *fragmentShader, VertexShader *vertexShader); + + bool linkUniforms(InfoLog &infoLog, const sh::ActiveUniforms &vertexUniforms, const sh::ActiveUniforms &fragmentUniforms); + bool defineUniform(GLenum shader, const sh::Uniform &constant, InfoLog &infoLog); + + std::string generateGeometryShaderHLSL(int registers, const Varying *packing[][4], FragmentShader *fragmentShader, VertexShader *vertexShader) const; + std::string generatePointSpriteHLSL(int registers, const Varying *packing[][4], FragmentShader *fragmentShader, VertexShader *vertexShader) const; + + rx::Renderer *const mRenderer; + + rx::ShaderExecutable *mPixelExecutable; + rx::ShaderExecutable *mVertexExecutable; + rx::ShaderExecutable *mGeometryExecutable; + + Attribute mLinkedAttribute[MAX_VERTEX_ATTRIBS]; + int mSemanticIndex[MAX_VERTEX_ATTRIBS]; + + struct Sampler + { + Sampler(); + + bool active; + GLint logicalTextureUnit; + TextureType textureType; + }; + + Sampler mSamplersPS[MAX_TEXTURE_IMAGE_UNITS]; + Sampler mSamplersVS[IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS]; + GLuint mUsedVertexSamplerRange; + GLuint mUsedPixelSamplerRange; + bool mUsesPointSize; + + UniformArray mUniforms; + typedef std::vector UniformIndex; + UniformIndex mUniformIndex; + + bool mValidated; + + const unsigned int mSerial; + + static unsigned int issueSerial(); + static unsigned int mCurrentSerial; +}; +} + +#endif // LIBGLESV2_PROGRAM_BINARY_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Query.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/Query.cpp new file mode 100644 index 00000000000..bd987954f1f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Query.cpp @@ -0,0 +1,52 @@ +#include "precompiled.h" +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Query.cpp: Implements the gl::Query class + +#include "libGLESv2/Query.h" +#include "libGLESv2/renderer/QueryImpl.h" +#include "libGLESv2/renderer/Renderer.h" + +namespace gl +{ + +Query::Query(rx::Renderer *renderer, GLenum type, GLuint id) : RefCountObject(id) +{ + mQuery = renderer->createQuery(type); +} + +Query::~Query() +{ + delete mQuery; +} + +void Query::begin() +{ + mQuery->begin(); +} + +void Query::end() +{ + mQuery->end(); +} + +GLuint Query::getResult() +{ + return mQuery->getResult(); +} + +GLboolean Query::isResultAvailable() +{ + return mQuery->isResultAvailable(); +} + +GLenum Query::getType() const +{ + return mQuery->getType(); +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Query.h b/Source/ThirdParty/ANGLE/src/libGLESv2/Query.h new file mode 100644 index 00000000000..e9b95b729b6 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Query.h @@ -0,0 +1,49 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Query.h: Defines the gl::Query class + +#ifndef LIBGLESV2_QUERY_H_ +#define LIBGLESV2_QUERY_H_ + +#define GL_APICALL +#include + +#include "common/angleutils.h" +#include "common/RefCountObject.h" + +namespace rx +{ +class Renderer; +class QueryImpl; +} + +namespace gl +{ + +class Query : public RefCountObject +{ + public: + Query(rx::Renderer *renderer, GLenum type, GLuint id); + virtual ~Query(); + + void begin(); + void end(); + + GLuint getResult(); + GLboolean isResultAvailable(); + + GLenum getType() const; + + private: + DISALLOW_COPY_AND_ASSIGN(Query); + + rx::QueryImpl *mQuery; +}; + +} + +#endif // LIBGLESV2_QUERY_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/README b/Source/ThirdParty/ANGLE/src/libGLESv2/README new file mode 100644 index 00000000000..527d3f52935 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/README @@ -0,0 +1 @@ +This directory's contents are not synced from the ANGLE project because no platform in WebKit needs them yet. \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Renderbuffer.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/Renderbuffer.cpp new file mode 100644 index 00000000000..127513741c2 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Renderbuffer.cpp @@ -0,0 +1,485 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Renderbuffer.cpp: the gl::Renderbuffer class and its derived classes +// Colorbuffer, Depthbuffer and Stencilbuffer. Implements GL renderbuffer +// objects and related functionality. [OpenGL ES 2.0.24] section 4.4.3 page 108. + +#include "libGLESv2/Renderbuffer.h" +#include "libGLESv2/renderer/RenderTarget.h" + +#include "libGLESv2/Texture.h" +#include "libGLESv2/renderer/Renderer.h" +#include "libGLESv2/utilities.h" + +namespace gl +{ +unsigned int RenderbufferStorage::mCurrentSerial = 1; + +RenderbufferInterface::RenderbufferInterface() +{ +} + +// The default case for classes inherited from RenderbufferInterface is not to +// need to do anything upon the reference count to the parent Renderbuffer incrementing +// or decrementing. +void RenderbufferInterface::addProxyRef(const Renderbuffer *proxy) +{ +} + +void RenderbufferInterface::releaseProxy(const Renderbuffer *proxy) +{ +} + +GLuint RenderbufferInterface::getRedSize() const +{ + return gl::GetRedSize(getActualFormat()); +} + +GLuint RenderbufferInterface::getGreenSize() const +{ + return gl::GetGreenSize(getActualFormat()); +} + +GLuint RenderbufferInterface::getBlueSize() const +{ + return gl::GetBlueSize(getActualFormat()); +} + +GLuint RenderbufferInterface::getAlphaSize() const +{ + return gl::GetAlphaSize(getActualFormat()); +} + +GLuint RenderbufferInterface::getDepthSize() const +{ + return gl::GetDepthSize(getActualFormat()); +} + +GLuint RenderbufferInterface::getStencilSize() const +{ + return gl::GetStencilSize(getActualFormat()); +} + +///// RenderbufferTexture2D Implementation //////// + +RenderbufferTexture2D::RenderbufferTexture2D(Texture2D *texture, GLenum target) : mTarget(target) +{ + mTexture2D.set(texture); +} + +RenderbufferTexture2D::~RenderbufferTexture2D() +{ + mTexture2D.set(NULL); +} + +// Textures need to maintain their own reference count for references via +// Renderbuffers acting as proxies. Here, we notify the texture of a reference. +void RenderbufferTexture2D::addProxyRef(const Renderbuffer *proxy) +{ + mTexture2D->addProxyRef(proxy); +} + +void RenderbufferTexture2D::releaseProxy(const Renderbuffer *proxy) +{ + mTexture2D->releaseProxy(proxy); +} + +rx::RenderTarget *RenderbufferTexture2D::getRenderTarget() +{ + return mTexture2D->getRenderTarget(mTarget); +} + +rx::RenderTarget *RenderbufferTexture2D::getDepthStencil() +{ + return mTexture2D->getDepthStencil(mTarget); +} + +GLsizei RenderbufferTexture2D::getWidth() const +{ + return mTexture2D->getWidth(0); +} + +GLsizei RenderbufferTexture2D::getHeight() const +{ + return mTexture2D->getHeight(0); +} + +GLenum RenderbufferTexture2D::getInternalFormat() const +{ + return mTexture2D->getInternalFormat(0); +} + +GLenum RenderbufferTexture2D::getActualFormat() const +{ + return mTexture2D->getActualFormat(0); +} + +GLsizei RenderbufferTexture2D::getSamples() const +{ + return 0; +} + +unsigned int RenderbufferTexture2D::getSerial() const +{ + return mTexture2D->getRenderTargetSerial(mTarget); +} + +///// RenderbufferTextureCubeMap Implementation //////// + +RenderbufferTextureCubeMap::RenderbufferTextureCubeMap(TextureCubeMap *texture, GLenum target) : mTarget(target) +{ + mTextureCubeMap.set(texture); +} + +RenderbufferTextureCubeMap::~RenderbufferTextureCubeMap() +{ + mTextureCubeMap.set(NULL); +} + +// Textures need to maintain their own reference count for references via +// Renderbuffers acting as proxies. Here, we notify the texture of a reference. +void RenderbufferTextureCubeMap::addProxyRef(const Renderbuffer *proxy) +{ + mTextureCubeMap->addProxyRef(proxy); +} + +void RenderbufferTextureCubeMap::releaseProxy(const Renderbuffer *proxy) +{ + mTextureCubeMap->releaseProxy(proxy); +} + +rx::RenderTarget *RenderbufferTextureCubeMap::getRenderTarget() +{ + return mTextureCubeMap->getRenderTarget(mTarget); +} + +rx::RenderTarget *RenderbufferTextureCubeMap::getDepthStencil() +{ + return NULL; +} + +GLsizei RenderbufferTextureCubeMap::getWidth() const +{ + return mTextureCubeMap->getWidth(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0); +} + +GLsizei RenderbufferTextureCubeMap::getHeight() const +{ + return mTextureCubeMap->getHeight(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0); +} + +GLenum RenderbufferTextureCubeMap::getInternalFormat() const +{ + return mTextureCubeMap->getInternalFormat(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0); +} + +GLenum RenderbufferTextureCubeMap::getActualFormat() const +{ + return mTextureCubeMap->getActualFormat(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0); +} + +GLsizei RenderbufferTextureCubeMap::getSamples() const +{ + return 0; +} + +unsigned int RenderbufferTextureCubeMap::getSerial() const +{ + return mTextureCubeMap->getRenderTargetSerial(mTarget); +} + +////// Renderbuffer Implementation ////// + +Renderbuffer::Renderbuffer(rx::Renderer *renderer, GLuint id, RenderbufferInterface *instance) : RefCountObject(id) +{ + ASSERT(instance != NULL); + mInstance = instance; +} + +Renderbuffer::~Renderbuffer() +{ + delete mInstance; +} + +// The RenderbufferInterface contained in this Renderbuffer may need to maintain +// its own reference count, so we pass it on here. +void Renderbuffer::addRef() const +{ + mInstance->addProxyRef(this); + + RefCountObject::addRef(); +} + +void Renderbuffer::release() const +{ + mInstance->releaseProxy(this); + + RefCountObject::release(); +} + +rx::RenderTarget *Renderbuffer::getRenderTarget() +{ + return mInstance->getRenderTarget(); +} + +rx::RenderTarget *Renderbuffer::getDepthStencil() +{ + return mInstance->getDepthStencil(); +} + +GLsizei Renderbuffer::getWidth() const +{ + return mInstance->getWidth(); +} + +GLsizei Renderbuffer::getHeight() const +{ + return mInstance->getHeight(); +} + +GLenum Renderbuffer::getInternalFormat() const +{ + return mInstance->getInternalFormat(); +} + +GLenum Renderbuffer::getActualFormat() const +{ + return mInstance->getActualFormat(); +} + +GLuint Renderbuffer::getRedSize() const +{ + return mInstance->getRedSize(); +} + +GLuint Renderbuffer::getGreenSize() const +{ + return mInstance->getGreenSize(); +} + +GLuint Renderbuffer::getBlueSize() const +{ + return mInstance->getBlueSize(); +} + +GLuint Renderbuffer::getAlphaSize() const +{ + return mInstance->getAlphaSize(); +} + +GLuint Renderbuffer::getDepthSize() const +{ + return mInstance->getDepthSize(); +} + +GLuint Renderbuffer::getStencilSize() const +{ + return mInstance->getStencilSize(); +} + +GLsizei Renderbuffer::getSamples() const +{ + return mInstance->getSamples(); +} + +unsigned int Renderbuffer::getSerial() const +{ + return mInstance->getSerial(); +} + +void Renderbuffer::setStorage(RenderbufferStorage *newStorage) +{ + ASSERT(newStorage != NULL); + + delete mInstance; + mInstance = newStorage; +} + +RenderbufferStorage::RenderbufferStorage() : mSerial(issueSerial()) +{ + mWidth = 0; + mHeight = 0; + mInternalFormat = GL_RGBA4; + mActualFormat = GL_RGBA8_OES; + mSamples = 0; +} + +RenderbufferStorage::~RenderbufferStorage() +{ +} + +rx::RenderTarget *RenderbufferStorage::getRenderTarget() +{ + return NULL; +} + +rx::RenderTarget *RenderbufferStorage::getDepthStencil() +{ + return NULL; +} + +GLsizei RenderbufferStorage::getWidth() const +{ + return mWidth; +} + +GLsizei RenderbufferStorage::getHeight() const +{ + return mHeight; +} + +GLenum RenderbufferStorage::getInternalFormat() const +{ + return mInternalFormat; +} + +GLenum RenderbufferStorage::getActualFormat() const +{ + return mActualFormat; +} + +GLsizei RenderbufferStorage::getSamples() const +{ + return mSamples; +} + +unsigned int RenderbufferStorage::getSerial() const +{ + return mSerial; +} + +unsigned int RenderbufferStorage::issueSerial() +{ + return mCurrentSerial++; +} + +unsigned int RenderbufferStorage::issueCubeSerials() +{ + unsigned int firstSerial = mCurrentSerial; + mCurrentSerial += 6; + return firstSerial; +} + +Colorbuffer::Colorbuffer(rx::Renderer *renderer, rx::SwapChain *swapChain) +{ + mRenderTarget = renderer->createRenderTarget(swapChain, false); + + if (mRenderTarget) + { + mWidth = mRenderTarget->getWidth(); + mHeight = mRenderTarget->getHeight(); + mInternalFormat = mRenderTarget->getInternalFormat(); + mActualFormat = mRenderTarget->getActualFormat(); + mSamples = mRenderTarget->getSamples(); + } +} + +Colorbuffer::Colorbuffer(rx::Renderer *renderer, int width, int height, GLenum format, GLsizei samples) : mRenderTarget(NULL) +{ + mRenderTarget = renderer->createRenderTarget(width, height, format, samples, false); + + if (mRenderTarget) + { + mWidth = width; + mHeight = height; + mInternalFormat = format; + mActualFormat = mRenderTarget->getActualFormat(); + mSamples = mRenderTarget->getSamples(); + } +} + +Colorbuffer::~Colorbuffer() +{ + if (mRenderTarget) + { + delete mRenderTarget; + } +} + +rx::RenderTarget *Colorbuffer::getRenderTarget() +{ + if (mRenderTarget) + { + return mRenderTarget; + } + + return NULL; +} + +DepthStencilbuffer::DepthStencilbuffer(rx::Renderer *renderer, rx::SwapChain *swapChain) +{ + mDepthStencil = renderer->createRenderTarget(swapChain, true); + if (mDepthStencil) + { + mWidth = mDepthStencil->getWidth(); + mHeight = mDepthStencil->getHeight(); + mInternalFormat = mDepthStencil->getInternalFormat(); + mSamples = mDepthStencil->getSamples(); + mActualFormat = mDepthStencil->getActualFormat(); + } +} + +DepthStencilbuffer::DepthStencilbuffer(rx::Renderer *renderer, int width, int height, GLsizei samples) +{ + + mDepthStencil = renderer->createRenderTarget(width, height, GL_DEPTH24_STENCIL8_OES, samples, true); + + mWidth = mDepthStencil->getWidth(); + mHeight = mDepthStencil->getHeight(); + mInternalFormat = GL_DEPTH24_STENCIL8_OES; + mActualFormat = mDepthStencil->getActualFormat(); + mSamples = mDepthStencil->getSamples(); +} + +DepthStencilbuffer::~DepthStencilbuffer() +{ + if (mDepthStencil) + { + delete mDepthStencil; + } +} + +rx::RenderTarget *DepthStencilbuffer::getDepthStencil() +{ + if (mDepthStencil) + { + return mDepthStencil; + } + + return NULL; +} + +Depthbuffer::Depthbuffer(rx::Renderer *renderer, int width, int height, GLsizei samples) : DepthStencilbuffer(renderer, width, height, samples) +{ + if (mDepthStencil) + { + mInternalFormat = GL_DEPTH_COMPONENT16; // If the renderbuffer parameters are queried, the calling function + // will expect one of the valid renderbuffer formats for use in + // glRenderbufferStorage + } +} + +Depthbuffer::~Depthbuffer() +{ +} + +Stencilbuffer::Stencilbuffer(rx::Renderer *renderer, int width, int height, GLsizei samples) : DepthStencilbuffer(renderer, width, height, samples) +{ + if (mDepthStencil) + { + mInternalFormat = GL_STENCIL_INDEX8; // If the renderbuffer parameters are queried, the calling function + // will expect one of the valid renderbuffer formats for use in + // glRenderbufferStorage + } +} + +Stencilbuffer::~Stencilbuffer() +{ +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Renderbuffer.h b/Source/ThirdParty/ANGLE/src/libGLESv2/Renderbuffer.h new file mode 100644 index 00000000000..eca2f3a780a --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Renderbuffer.h @@ -0,0 +1,261 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Renderbuffer.h: Defines the wrapper class gl::Renderbuffer, as well as the +// class hierarchy used to store its contents: RenderbufferStorage, Colorbuffer, +// DepthStencilbuffer, Depthbuffer and Stencilbuffer. Implements GL renderbuffer +// objects and related functionality. [OpenGL ES 2.0.24] section 4.4.3 page 108. + +#ifndef LIBGLESV2_RENDERBUFFER_H_ +#define LIBGLESV2_RENDERBUFFER_H_ + +#define GL_APICALL +#include + +#include "common/angleutils.h" +#include "common/RefCountObject.h" + +namespace rx +{ +class Renderer; +class SwapChain; +class RenderTarget; +} + +namespace gl +{ +class Texture2D; +class TextureCubeMap; +class Renderbuffer; +class Colorbuffer; +class DepthStencilbuffer; + +class RenderbufferInterface +{ + public: + RenderbufferInterface(); + + virtual ~RenderbufferInterface() {}; + + virtual void addProxyRef(const Renderbuffer *proxy); + virtual void releaseProxy(const Renderbuffer *proxy); + + virtual rx::RenderTarget *getRenderTarget() = 0; + virtual rx::RenderTarget *getDepthStencil() = 0; + + virtual GLsizei getWidth() const = 0; + virtual GLsizei getHeight() const = 0; + virtual GLenum getInternalFormat() const = 0; + virtual GLenum getActualFormat() const = 0; + virtual GLsizei getSamples() const = 0; + + GLuint getRedSize() const; + GLuint getGreenSize() const; + GLuint getBlueSize() const; + GLuint getAlphaSize() const; + GLuint getDepthSize() const; + GLuint getStencilSize() const; + + virtual unsigned int getSerial() const = 0; + + private: + DISALLOW_COPY_AND_ASSIGN(RenderbufferInterface); +}; + +class RenderbufferTexture2D : public RenderbufferInterface +{ + public: + RenderbufferTexture2D(Texture2D *texture, GLenum target); + + virtual ~RenderbufferTexture2D(); + + void addProxyRef(const Renderbuffer *proxy); + void releaseProxy(const Renderbuffer *proxy); + + rx::RenderTarget *getRenderTarget(); + rx::RenderTarget *getDepthStencil(); + + virtual GLsizei getWidth() const; + virtual GLsizei getHeight() const; + virtual GLenum getInternalFormat() const; + virtual GLenum getActualFormat() const; + virtual GLsizei getSamples() const; + + virtual unsigned int getSerial() const; + + private: + DISALLOW_COPY_AND_ASSIGN(RenderbufferTexture2D); + + BindingPointer mTexture2D; + GLenum mTarget; +}; + +class RenderbufferTextureCubeMap : public RenderbufferInterface +{ + public: + RenderbufferTextureCubeMap(TextureCubeMap *texture, GLenum target); + + virtual ~RenderbufferTextureCubeMap(); + + void addProxyRef(const Renderbuffer *proxy); + void releaseProxy(const Renderbuffer *proxy); + + rx::RenderTarget *getRenderTarget(); + rx::RenderTarget *getDepthStencil(); + + virtual GLsizei getWidth() const; + virtual GLsizei getHeight() const; + virtual GLenum getInternalFormat() const; + virtual GLenum getActualFormat() const; + virtual GLsizei getSamples() const; + + virtual unsigned int getSerial() const; + + private: + DISALLOW_COPY_AND_ASSIGN(RenderbufferTextureCubeMap); + + BindingPointer mTextureCubeMap; + GLenum mTarget; +}; + +// A class derived from RenderbufferStorage is created whenever glRenderbufferStorage +// is called. The specific concrete type depends on whether the internal format is +// colour depth, stencil or packed depth/stencil. +class RenderbufferStorage : public RenderbufferInterface +{ + public: + RenderbufferStorage(); + + virtual ~RenderbufferStorage() = 0; + + virtual rx::RenderTarget *getRenderTarget(); + virtual rx::RenderTarget *getDepthStencil(); + + virtual GLsizei getWidth() const; + virtual GLsizei getHeight() const; + virtual GLenum getInternalFormat() const; + virtual GLenum getActualFormat() const; + virtual GLsizei getSamples() const; + + virtual unsigned int getSerial() const; + + static unsigned int issueSerial(); + static unsigned int issueCubeSerials(); + + protected: + GLsizei mWidth; + GLsizei mHeight; + GLenum mInternalFormat; + GLenum mActualFormat; + GLsizei mSamples; + + private: + DISALLOW_COPY_AND_ASSIGN(RenderbufferStorage); + + const unsigned int mSerial; + + static unsigned int mCurrentSerial; +}; + +// Renderbuffer implements the GL renderbuffer object. +// It's only a proxy for a RenderbufferInterface instance; the internal object +// can change whenever glRenderbufferStorage is called. +class Renderbuffer : public RefCountObject +{ + public: + Renderbuffer(rx::Renderer *renderer, GLuint id, RenderbufferInterface *storage); + + virtual ~Renderbuffer(); + + // These functions from RefCountObject are overloaded here because + // Textures need to maintain their own count of references to them via + // Renderbuffers/RenderbufferTextures. These functions invoke those + // reference counting functions on the RenderbufferInterface. + void addRef() const; + void release() const; + + rx::RenderTarget *getRenderTarget(); + rx::RenderTarget *getDepthStencil(); + + GLsizei getWidth() const; + GLsizei getHeight() const; + GLenum getInternalFormat() const; + GLenum getActualFormat() const; + GLuint getRedSize() const; + GLuint getGreenSize() const; + GLuint getBlueSize() const; + GLuint getAlphaSize() const; + GLuint getDepthSize() const; + GLuint getStencilSize() const; + GLsizei getSamples() const; + + unsigned int getSerial() const; + + void setStorage(RenderbufferStorage *newStorage); + + private: + DISALLOW_COPY_AND_ASSIGN(Renderbuffer); + + RenderbufferInterface *mInstance; +}; + +class Colorbuffer : public RenderbufferStorage +{ + public: + Colorbuffer(rx::Renderer *renderer, rx::SwapChain *swapChain); + Colorbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLenum format, GLsizei samples); + + virtual ~Colorbuffer(); + + virtual rx::RenderTarget *getRenderTarget(); + + private: + DISALLOW_COPY_AND_ASSIGN(Colorbuffer); + + rx::RenderTarget *mRenderTarget; +}; + +class DepthStencilbuffer : public RenderbufferStorage +{ + public: + DepthStencilbuffer(rx::Renderer *renderer, rx::SwapChain *swapChain); + DepthStencilbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLsizei samples); + + ~DepthStencilbuffer(); + + virtual rx::RenderTarget *getDepthStencil(); + + protected: + rx::RenderTarget *mDepthStencil; + + private: + DISALLOW_COPY_AND_ASSIGN(DepthStencilbuffer); +}; + +class Depthbuffer : public DepthStencilbuffer +{ + public: + Depthbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLsizei samples); + + virtual ~Depthbuffer(); + + private: + DISALLOW_COPY_AND_ASSIGN(Depthbuffer); +}; + +class Stencilbuffer : public DepthStencilbuffer +{ + public: + Stencilbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLsizei samples); + + virtual ~Stencilbuffer(); + + private: + DISALLOW_COPY_AND_ASSIGN(Stencilbuffer); +}; +} + +#endif // LIBGLESV2_RENDERBUFFER_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/ResourceManager.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/ResourceManager.cpp new file mode 100644 index 00000000000..58dd44fd955 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/ResourceManager.cpp @@ -0,0 +1,322 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// ResourceManager.cpp: Implements the gl::ResourceManager class, which tracks and +// retrieves objects which may be shared by multiple Contexts. + +#include "libGLESv2/ResourceManager.h" + +#include "libGLESv2/Buffer.h" +#include "libGLESv2/Program.h" +#include "libGLESv2/Renderbuffer.h" +#include "libGLESv2/Shader.h" +#include "libGLESv2/Texture.h" + +namespace gl +{ +ResourceManager::ResourceManager(rx::Renderer *renderer) +{ + mRefCount = 1; + mRenderer = renderer; +} + +ResourceManager::~ResourceManager() +{ + while (!mBufferMap.empty()) + { + deleteBuffer(mBufferMap.begin()->first); + } + + while (!mProgramMap.empty()) + { + deleteProgram(mProgramMap.begin()->first); + } + + while (!mShaderMap.empty()) + { + deleteShader(mShaderMap.begin()->first); + } + + while (!mRenderbufferMap.empty()) + { + deleteRenderbuffer(mRenderbufferMap.begin()->first); + } + + while (!mTextureMap.empty()) + { + deleteTexture(mTextureMap.begin()->first); + } +} + +void ResourceManager::addRef() +{ + mRefCount++; +} + +void ResourceManager::release() +{ + if (--mRefCount == 0) + { + delete this; + } +} + +// Returns an unused buffer name +GLuint ResourceManager::createBuffer() +{ + GLuint handle = mBufferHandleAllocator.allocate(); + + mBufferMap[handle] = NULL; + + return handle; +} + +// Returns an unused shader/program name +GLuint ResourceManager::createShader(GLenum type) +{ + GLuint handle = mProgramShaderHandleAllocator.allocate(); + + if (type == GL_VERTEX_SHADER) + { + mShaderMap[handle] = new VertexShader(this, mRenderer, handle); + } + else if (type == GL_FRAGMENT_SHADER) + { + mShaderMap[handle] = new FragmentShader(this, mRenderer, handle); + } + else UNREACHABLE(); + + return handle; +} + +// Returns an unused program/shader name +GLuint ResourceManager::createProgram() +{ + GLuint handle = mProgramShaderHandleAllocator.allocate(); + + mProgramMap[handle] = new Program(mRenderer, this, handle); + + return handle; +} + +// Returns an unused texture name +GLuint ResourceManager::createTexture() +{ + GLuint handle = mTextureHandleAllocator.allocate(); + + mTextureMap[handle] = NULL; + + return handle; +} + +// Returns an unused renderbuffer name +GLuint ResourceManager::createRenderbuffer() +{ + GLuint handle = mRenderbufferHandleAllocator.allocate(); + + mRenderbufferMap[handle] = NULL; + + return handle; +} + +void ResourceManager::deleteBuffer(GLuint buffer) +{ + BufferMap::iterator bufferObject = mBufferMap.find(buffer); + + if (bufferObject != mBufferMap.end()) + { + mBufferHandleAllocator.release(bufferObject->first); + if (bufferObject->second) bufferObject->second->release(); + mBufferMap.erase(bufferObject); + } +} + +void ResourceManager::deleteShader(GLuint shader) +{ + ShaderMap::iterator shaderObject = mShaderMap.find(shader); + + if (shaderObject != mShaderMap.end()) + { + if (shaderObject->second->getRefCount() == 0) + { + mProgramShaderHandleAllocator.release(shaderObject->first); + delete shaderObject->second; + mShaderMap.erase(shaderObject); + } + else + { + shaderObject->second->flagForDeletion(); + } + } +} + +void ResourceManager::deleteProgram(GLuint program) +{ + ProgramMap::iterator programObject = mProgramMap.find(program); + + if (programObject != mProgramMap.end()) + { + if (programObject->second->getRefCount() == 0) + { + mProgramShaderHandleAllocator.release(programObject->first); + delete programObject->second; + mProgramMap.erase(programObject); + } + else + { + programObject->second->flagForDeletion(); + } + } +} + +void ResourceManager::deleteTexture(GLuint texture) +{ + TextureMap::iterator textureObject = mTextureMap.find(texture); + + if (textureObject != mTextureMap.end()) + { + mTextureHandleAllocator.release(textureObject->first); + if (textureObject->second) textureObject->second->release(); + mTextureMap.erase(textureObject); + } +} + +void ResourceManager::deleteRenderbuffer(GLuint renderbuffer) +{ + RenderbufferMap::iterator renderbufferObject = mRenderbufferMap.find(renderbuffer); + + if (renderbufferObject != mRenderbufferMap.end()) + { + mRenderbufferHandleAllocator.release(renderbufferObject->first); + if (renderbufferObject->second) renderbufferObject->second->release(); + mRenderbufferMap.erase(renderbufferObject); + } +} + +Buffer *ResourceManager::getBuffer(unsigned int handle) +{ + BufferMap::iterator buffer = mBufferMap.find(handle); + + if (buffer == mBufferMap.end()) + { + return NULL; + } + else + { + return buffer->second; + } +} + +Shader *ResourceManager::getShader(unsigned int handle) +{ + ShaderMap::iterator shader = mShaderMap.find(handle); + + if (shader == mShaderMap.end()) + { + return NULL; + } + else + { + return shader->second; + } +} + +Texture *ResourceManager::getTexture(unsigned int handle) +{ + if (handle == 0) return NULL; + + TextureMap::iterator texture = mTextureMap.find(handle); + + if (texture == mTextureMap.end()) + { + return NULL; + } + else + { + return texture->second; + } +} + +Program *ResourceManager::getProgram(unsigned int handle) +{ + ProgramMap::iterator program = mProgramMap.find(handle); + + if (program == mProgramMap.end()) + { + return NULL; + } + else + { + return program->second; + } +} + +Renderbuffer *ResourceManager::getRenderbuffer(unsigned int handle) +{ + RenderbufferMap::iterator renderbuffer = mRenderbufferMap.find(handle); + + if (renderbuffer == mRenderbufferMap.end()) + { + return NULL; + } + else + { + return renderbuffer->second; + } +} + +void ResourceManager::setRenderbuffer(GLuint handle, Renderbuffer *buffer) +{ + mRenderbufferMap[handle] = buffer; +} + +void ResourceManager::checkBufferAllocation(unsigned int buffer) +{ + if (buffer != 0 && !getBuffer(buffer)) + { + Buffer *bufferObject = new Buffer(mRenderer, buffer); + mBufferMap[buffer] = bufferObject; + bufferObject->addRef(); + } +} + +void ResourceManager::checkTextureAllocation(GLuint texture, TextureType type) +{ + if (!getTexture(texture) && texture != 0) + { + Texture *textureObject; + + if (type == TEXTURE_2D) + { + textureObject = new Texture2D(mRenderer, texture); + } + else if (type == TEXTURE_CUBE) + { + textureObject = new TextureCubeMap(mRenderer, texture); + } + else + { + UNREACHABLE(); + return; + } + + mTextureMap[texture] = textureObject; + textureObject->addRef(); + } +} + +void ResourceManager::checkRenderbufferAllocation(GLuint renderbuffer) +{ + if (renderbuffer != 0 && !getRenderbuffer(renderbuffer)) + { + Renderbuffer *renderbufferObject = new Renderbuffer(mRenderer, renderbuffer, new Colorbuffer(mRenderer, 0, 0, GL_RGBA4, 0)); + mRenderbufferMap[renderbuffer] = renderbufferObject; + renderbufferObject->addRef(); + } +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/ResourceManager.h b/Source/ThirdParty/ANGLE/src/libGLESv2/ResourceManager.h new file mode 100644 index 00000000000..e99c77c35d2 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/ResourceManager.h @@ -0,0 +1,108 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// ResourceManager.h : Defines the ResourceManager class, which tracks objects +// shared by multiple GL contexts. + +#ifndef LIBGLESV2_RESOURCEMANAGER_H_ +#define LIBGLESV2_RESOURCEMANAGER_H_ + +#define GL_APICALL +#include + +#ifdef _MSC_VER +#include +#else +#include +#endif + +#include "common/angleutils.h" +#include "libGLESv2/angletypes.h" +#include "libGLESv2/HandleAllocator.h" + +namespace rx +{ +class Renderer; +} + +namespace gl +{ +class Buffer; +class Shader; +class Program; +class Texture; +class Renderbuffer; + +class ResourceManager +{ + public: + explicit ResourceManager(rx::Renderer *renderer); + ~ResourceManager(); + + void addRef(); + void release(); + + GLuint createBuffer(); + GLuint createShader(GLenum type); + GLuint createProgram(); + GLuint createTexture(); + GLuint createRenderbuffer(); + + void deleteBuffer(GLuint buffer); + void deleteShader(GLuint shader); + void deleteProgram(GLuint program); + void deleteTexture(GLuint texture); + void deleteRenderbuffer(GLuint renderbuffer); + + Buffer *getBuffer(GLuint handle); + Shader *getShader(GLuint handle); + Program *getProgram(GLuint handle); + Texture *getTexture(GLuint handle); + Renderbuffer *getRenderbuffer(GLuint handle); + + void setRenderbuffer(GLuint handle, Renderbuffer *renderbuffer); + + void checkBufferAllocation(unsigned int buffer); + void checkTextureAllocation(GLuint texture, TextureType type); + void checkRenderbufferAllocation(GLuint renderbuffer); + + private: + DISALLOW_COPY_AND_ASSIGN(ResourceManager); + + std::size_t mRefCount; + rx::Renderer *mRenderer; + +#ifndef HASH_MAP +# ifdef _MSC_VER +# define HASH_MAP stdext::hash_map +# else +# define HASH_MAP std::unordered_map +# endif +#endif + + typedef HASH_MAP BufferMap; + BufferMap mBufferMap; + HandleAllocator mBufferHandleAllocator; + + typedef HASH_MAP ShaderMap; + ShaderMap mShaderMap; + + typedef HASH_MAP ProgramMap; + ProgramMap mProgramMap; + HandleAllocator mProgramShaderHandleAllocator; + + typedef HASH_MAP TextureMap; + TextureMap mTextureMap; + HandleAllocator mTextureHandleAllocator; + + typedef HASH_MAP RenderbufferMap; + RenderbufferMap mRenderbufferMap; + HandleAllocator mRenderbufferHandleAllocator; +}; + +} + +#endif // LIBGLESV2_RESOURCEMANAGER_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Shader.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/Shader.cpp new file mode 100644 index 00000000000..7dfdd0ba3a7 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Shader.cpp @@ -0,0 +1,622 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Shader.cpp: Implements the gl::Shader class and its derived classes +// VertexShader and FragmentShader. Implements GL shader objects and related +// functionality. [OpenGL ES 2.0.24] section 2.10 page 24 and section 3.8 page 84. + +#include "libGLESv2/Shader.h" + +#include "GLSLANG/ShaderLang.h" +#include "libGLESv2/utilities.h" +#include "libGLESv2/renderer/Renderer.h" +#include "libGLESv2/Constants.h" +#include "libGLESv2/ResourceManager.h" + +namespace gl +{ +void *Shader::mFragmentCompiler = NULL; +void *Shader::mVertexCompiler = NULL; + +Shader::Shader(ResourceManager *manager, const rx::Renderer *renderer, GLuint handle) + : mHandle(handle), mRenderer(renderer), mResourceManager(manager) +{ + mSource = NULL; + mHlsl = NULL; + mInfoLog = NULL; + + uncompile(); + initializeCompiler(); + + mRefCount = 0; + mDeleteStatus = false; +} + +Shader::~Shader() +{ + delete[] mSource; + delete[] mHlsl; + delete[] mInfoLog; +} + +GLuint Shader::getHandle() const +{ + return mHandle; +} + +void Shader::setSource(GLsizei count, const char **string, const GLint *length) +{ + delete[] mSource; + int totalLength = 0; + + for (int i = 0; i < count; i++) + { + if (length && length[i] >= 0) + { + totalLength += length[i]; + } + else + { + totalLength += (int)strlen(string[i]); + } + } + + mSource = new char[totalLength + 1]; + char *code = mSource; + + for (int i = 0; i < count; i++) + { + int stringLength; + + if (length && length[i] >= 0) + { + stringLength = length[i]; + } + else + { + stringLength = (int)strlen(string[i]); + } + + strncpy(code, string[i], stringLength); + code += stringLength; + } + + mSource[totalLength] = '\0'; +} + +int Shader::getInfoLogLength() const +{ + if (!mInfoLog) + { + return 0; + } + else + { + return strlen(mInfoLog) + 1; + } +} + +void Shader::getInfoLog(GLsizei bufSize, GLsizei *length, char *infoLog) +{ + int index = 0; + + if (bufSize > 0) + { + if (mInfoLog) + { + index = std::min(bufSize - 1, (int)strlen(mInfoLog)); + memcpy(infoLog, mInfoLog, index); + } + + infoLog[index] = '\0'; + } + + if (length) + { + *length = index; + } +} + +int Shader::getSourceLength() const +{ + if (!mSource) + { + return 0; + } + else + { + return strlen(mSource) + 1; + } +} + +int Shader::getTranslatedSourceLength() const +{ + if (!mHlsl) + { + return 0; + } + else + { + return strlen(mHlsl) + 1; + } +} + +void Shader::getSourceImpl(char *source, GLsizei bufSize, GLsizei *length, char *buffer) +{ + int index = 0; + + if (bufSize > 0) + { + if (source) + { + index = std::min(bufSize - 1, (int)strlen(source)); + memcpy(buffer, source, index); + } + + buffer[index] = '\0'; + } + + if (length) + { + *length = index; + } +} + +void Shader::getSource(GLsizei bufSize, GLsizei *length, char *buffer) +{ + getSourceImpl(mSource, bufSize, length, buffer); +} + +void Shader::getTranslatedSource(GLsizei bufSize, GLsizei *length, char *buffer) +{ + getSourceImpl(mHlsl, bufSize, length, buffer); +} + +const sh::ActiveUniforms &Shader::getUniforms() +{ + return mActiveUniforms; +} + +bool Shader::isCompiled() +{ + return mHlsl != NULL; +} + +const char *Shader::getHLSL() +{ + return mHlsl; +} + +void Shader::addRef() +{ + mRefCount++; +} + +void Shader::release() +{ + mRefCount--; + + if (mRefCount == 0 && mDeleteStatus) + { + mResourceManager->deleteShader(mHandle); + } +} + +unsigned int Shader::getRefCount() const +{ + return mRefCount; +} + +bool Shader::isFlaggedForDeletion() const +{ + return mDeleteStatus; +} + +void Shader::flagForDeletion() +{ + mDeleteStatus = true; +} + +// Perform a one-time initialization of the shader compiler (or after being destructed by releaseCompiler) +void Shader::initializeCompiler() +{ + if (!mFragmentCompiler) + { + int result = ShInitialize(); + + if (result) + { + ShShaderOutput hlslVersion = (mRenderer->getMajorShaderModel() >= 4) ? SH_HLSL11_OUTPUT : SH_HLSL9_OUTPUT; + + ShBuiltInResources resources; + ShInitBuiltInResources(&resources); + + resources.MaxVertexAttribs = MAX_VERTEX_ATTRIBS; + resources.MaxVertexUniformVectors = mRenderer->getMaxVertexUniformVectors(); + resources.MaxVaryingVectors = mRenderer->getMaxVaryingVectors(); + resources.MaxVertexTextureImageUnits = mRenderer->getMaxVertexTextureImageUnits(); + resources.MaxCombinedTextureImageUnits = mRenderer->getMaxCombinedTextureImageUnits(); + resources.MaxTextureImageUnits = MAX_TEXTURE_IMAGE_UNITS; + resources.MaxFragmentUniformVectors = mRenderer->getMaxFragmentUniformVectors(); + resources.MaxDrawBuffers = mRenderer->getMaxRenderTargets(); + resources.OES_standard_derivatives = mRenderer->getDerivativeInstructionSupport(); + resources.EXT_draw_buffers = mRenderer->getMaxRenderTargets() > 1; + // resources.OES_EGL_image_external = mRenderer->getShareHandleSupport() ? 1 : 0; // TODO: commented out until the extension is actually supported. + resources.FragmentPrecisionHigh = 1; // Shader Model 2+ always supports FP24 (s16e7) which corresponds to highp + resources.EXT_frag_depth = 1; // Shader Model 2+ always supports explicit depth output + + mFragmentCompiler = ShConstructCompiler(SH_FRAGMENT_SHADER, SH_GLES2_SPEC, hlslVersion, &resources); + mVertexCompiler = ShConstructCompiler(SH_VERTEX_SHADER, SH_GLES2_SPEC, hlslVersion, &resources); + } + } +} + +void Shader::releaseCompiler() +{ + ShDestruct(mFragmentCompiler); + ShDestruct(mVertexCompiler); + + mFragmentCompiler = NULL; + mVertexCompiler = NULL; + + ShFinalize(); +} + +void Shader::parseVaryings() +{ + if (mHlsl) + { + const char *input = strstr(mHlsl, "// Varyings") + 12; + + while(true) + { + char varyingType[256]; + char varyingName[256]; + + int matches = sscanf(input, "static %255s %255s", varyingType, varyingName); + + if (matches != 2) + { + break; + } + + char *array = strstr(varyingName, "["); + int size = 1; + + if (array) + { + size = atoi(array + 1); + *array = '\0'; + } + + mVaryings.push_back(Varying(parseType(varyingType), varyingName, size, array != NULL)); + + input = strstr(input, ";") + 2; + } + + mUsesMultipleRenderTargets = strstr(mHlsl, "GL_USES_MRT") != NULL; + mUsesFragColor = strstr(mHlsl, "GL_USES_FRAG_COLOR") != NULL; + mUsesFragData = strstr(mHlsl, "GL_USES_FRAG_DATA") != NULL; + mUsesFragCoord = strstr(mHlsl, "GL_USES_FRAG_COORD") != NULL; + mUsesFrontFacing = strstr(mHlsl, "GL_USES_FRONT_FACING") != NULL; + mUsesPointSize = strstr(mHlsl, "GL_USES_POINT_SIZE") != NULL; + mUsesPointCoord = strstr(mHlsl, "GL_USES_POINT_COORD") != NULL; + mUsesDepthRange = strstr(mHlsl, "GL_USES_DEPTH_RANGE") != NULL; + mUsesFragDepth = strstr(mHlsl, "GL_USES_FRAG_DEPTH") != NULL; + } +} + +void Shader::resetVaryingsRegisterAssignment() +{ + for (VaryingList::iterator var = mVaryings.begin(); var != mVaryings.end(); var++) + { + var->reg = -1; + var->col = -1; + } +} + +// initialize/clean up previous state +void Shader::uncompile() +{ + // set by compileToHLSL + delete[] mHlsl; + mHlsl = NULL; + delete[] mInfoLog; + mInfoLog = NULL; + + // set by parseVaryings + mVaryings.clear(); + + mUsesMultipleRenderTargets = false; + mUsesFragColor = false; + mUsesFragData = false; + mUsesFragCoord = false; + mUsesFrontFacing = false; + mUsesPointSize = false; + mUsesPointCoord = false; + mUsesDepthRange = false; + mUsesFragDepth = false; + + mActiveUniforms.clear(); +} + +void Shader::compileToHLSL(void *compiler) +{ + // ensure we don't pass a NULL source to the compiler + const char *source = "\0"; + if (mSource) + { + source = mSource; + } + + // ensure the compiler is loaded + initializeCompiler(); + + int compileOptions = SH_OBJECT_CODE; + std::string sourcePath; + if (perfActive()) + { + sourcePath = getTempPath(); + writeFile(sourcePath.c_str(), source, strlen(source)); + compileOptions |= SH_LINE_DIRECTIVES; + } + + int result; + if (sourcePath.empty()) + { + result = ShCompile(compiler, &source, 1, compileOptions); + } + else + { + const char* sourceStrings[2] = + { + sourcePath.c_str(), + source + }; + + result = ShCompile(compiler, sourceStrings, 2, compileOptions | SH_SOURCE_PATH); + } + + if (result) + { + size_t objCodeLen = 0; + ShGetInfo(compiler, SH_OBJECT_CODE_LENGTH, &objCodeLen); + mHlsl = new char[objCodeLen]; + ShGetObjectCode(compiler, mHlsl); + + void *activeUniforms; + ShGetInfoPointer(compiler, SH_ACTIVE_UNIFORMS_ARRAY, &activeUniforms); + mActiveUniforms = *(sh::ActiveUniforms*)activeUniforms; + } + else + { + size_t infoLogLen = 0; + ShGetInfo(compiler, SH_INFO_LOG_LENGTH, &infoLogLen); + mInfoLog = new char[infoLogLen]; + ShGetInfoLog(compiler, mInfoLog); + + TRACE("\n%s", mInfoLog); + } +} + +GLenum Shader::parseType(const std::string &type) +{ + if (type == "float") + { + return GL_FLOAT; + } + else if (type == "float2") + { + return GL_FLOAT_VEC2; + } + else if (type == "float3") + { + return GL_FLOAT_VEC3; + } + else if (type == "float4") + { + return GL_FLOAT_VEC4; + } + else if (type == "float2x2") + { + return GL_FLOAT_MAT2; + } + else if (type == "float3x3") + { + return GL_FLOAT_MAT3; + } + else if (type == "float4x4") + { + return GL_FLOAT_MAT4; + } + else UNREACHABLE(); + + return GL_NONE; +} + +// true if varying x has a higher priority in packing than y +bool Shader::compareVarying(const Varying &x, const Varying &y) +{ + if(x.type == y.type) + { + return x.size > y.size; + } + + switch (x.type) + { + case GL_FLOAT_MAT4: return true; + case GL_FLOAT_MAT2: + switch(y.type) + { + case GL_FLOAT_MAT4: return false; + case GL_FLOAT_MAT2: return true; + case GL_FLOAT_VEC4: return true; + case GL_FLOAT_MAT3: return true; + case GL_FLOAT_VEC3: return true; + case GL_FLOAT_VEC2: return true; + case GL_FLOAT: return true; + default: UNREACHABLE(); + } + break; + case GL_FLOAT_VEC4: + switch(y.type) + { + case GL_FLOAT_MAT4: return false; + case GL_FLOAT_MAT2: return false; + case GL_FLOAT_VEC4: return true; + case GL_FLOAT_MAT3: return true; + case GL_FLOAT_VEC3: return true; + case GL_FLOAT_VEC2: return true; + case GL_FLOAT: return true; + default: UNREACHABLE(); + } + break; + case GL_FLOAT_MAT3: + switch(y.type) + { + case GL_FLOAT_MAT4: return false; + case GL_FLOAT_MAT2: return false; + case GL_FLOAT_VEC4: return false; + case GL_FLOAT_MAT3: return true; + case GL_FLOAT_VEC3: return true; + case GL_FLOAT_VEC2: return true; + case GL_FLOAT: return true; + default: UNREACHABLE(); + } + break; + case GL_FLOAT_VEC3: + switch(y.type) + { + case GL_FLOAT_MAT4: return false; + case GL_FLOAT_MAT2: return false; + case GL_FLOAT_VEC4: return false; + case GL_FLOAT_MAT3: return false; + case GL_FLOAT_VEC3: return true; + case GL_FLOAT_VEC2: return true; + case GL_FLOAT: return true; + default: UNREACHABLE(); + } + break; + case GL_FLOAT_VEC2: + switch(y.type) + { + case GL_FLOAT_MAT4: return false; + case GL_FLOAT_MAT2: return false; + case GL_FLOAT_VEC4: return false; + case GL_FLOAT_MAT3: return false; + case GL_FLOAT_VEC3: return false; + case GL_FLOAT_VEC2: return true; + case GL_FLOAT: return true; + default: UNREACHABLE(); + } + break; + case GL_FLOAT: return false; + default: UNREACHABLE(); + } + + return false; +} + +VertexShader::VertexShader(ResourceManager *manager, const rx::Renderer *renderer, GLuint handle) + : Shader(manager, renderer, handle) +{ +} + +VertexShader::~VertexShader() +{ +} + +GLenum VertexShader::getType() +{ + return GL_VERTEX_SHADER; +} + +void VertexShader::uncompile() +{ + Shader::uncompile(); + + // set by ParseAttributes + mAttributes.clear(); +} + +void VertexShader::compile() +{ + uncompile(); + + compileToHLSL(mVertexCompiler); + parseAttributes(); + parseVaryings(); +} + +int VertexShader::getSemanticIndex(const std::string &attributeName) +{ + if (!attributeName.empty()) + { + int semanticIndex = 0; + for (AttributeArray::iterator attribute = mAttributes.begin(); attribute != mAttributes.end(); attribute++) + { + if (attribute->name == attributeName) + { + return semanticIndex; + } + + semanticIndex += VariableRowCount(attribute->type); + } + } + + return -1; +} + +void VertexShader::parseAttributes() +{ + const char *hlsl = getHLSL(); + if (hlsl) + { + const char *input = strstr(hlsl, "// Attributes") + 14; + + while(true) + { + char attributeType[256]; + char attributeName[256]; + + int matches = sscanf(input, "static %255s _%255s", attributeType, attributeName); + + if (matches != 2) + { + break; + } + + mAttributes.push_back(Attribute(parseType(attributeType), attributeName)); + + input = strstr(input, ";") + 2; + } + } +} + +FragmentShader::FragmentShader(ResourceManager *manager, const rx::Renderer *renderer, GLuint handle) + : Shader(manager, renderer, handle) +{ +} + +FragmentShader::~FragmentShader() +{ +} + +GLenum FragmentShader::getType() +{ + return GL_FRAGMENT_SHADER; +} + +void FragmentShader::compile() +{ + uncompile(); + + compileToHLSL(mFragmentCompiler); + parseVaryings(); + mVaryings.sort(compareVarying); +} +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Shader.h b/Source/ThirdParty/ANGLE/src/libGLESv2/Shader.h new file mode 100644 index 00000000000..2afe2976c3a --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Shader.h @@ -0,0 +1,184 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Shader.h: Defines the abstract gl::Shader class and its concrete derived +// classes VertexShader and FragmentShader. Implements GL shader objects and +// related functionality. [OpenGL ES 2.0.24] section 2.10 page 24 and section +// 3.8 page 84. + +#ifndef LIBGLESV2_SHADER_H_ +#define LIBGLESV2_SHADER_H_ + +#define GL_APICALL +#include +#include +#include +#include + +#include "compiler/Uniform.h" +#include "common/angleutils.h" + +namespace rx +{ +class Renderer; +} + +namespace gl +{ +class ResourceManager; + +struct Varying +{ + Varying(GLenum type, const std::string &name, int size, bool array) + : type(type), name(name), size(size), array(array), reg(-1), col(-1) + { + } + + GLenum type; + std::string name; + int size; // Number of 'type' elements + bool array; + + int reg; // First varying register, assigned during link + int col; // First register element, assigned during link +}; + +typedef std::list VaryingList; + +class Shader +{ + friend class ProgramBinary; + + public: + Shader(ResourceManager *manager, const rx::Renderer *renderer, GLuint handle); + + virtual ~Shader(); + + virtual GLenum getType() = 0; + GLuint getHandle() const; + + void deleteSource(); + void setSource(GLsizei count, const char **string, const GLint *length); + int getInfoLogLength() const; + void getInfoLog(GLsizei bufSize, GLsizei *length, char *infoLog); + int getSourceLength() const; + void getSource(GLsizei bufSize, GLsizei *length, char *buffer); + int getTranslatedSourceLength() const; + void getTranslatedSource(GLsizei bufSize, GLsizei *length, char *buffer); + const sh::ActiveUniforms &getUniforms(); + + virtual void compile() = 0; + virtual void uncompile(); + bool isCompiled(); + const char *getHLSL(); + + void addRef(); + void release(); + unsigned int getRefCount() const; + bool isFlaggedForDeletion() const; + void flagForDeletion(); + + static void releaseCompiler(); + + protected: + void parseVaryings(); + void resetVaryingsRegisterAssignment(); + + void compileToHLSL(void *compiler); + + void getSourceImpl(char *source, GLsizei bufSize, GLsizei *length, char *buffer); + + static GLenum parseType(const std::string &type); + static bool compareVarying(const Varying &x, const Varying &y); + + const rx::Renderer *const mRenderer; + + VaryingList mVaryings; + + bool mUsesMultipleRenderTargets; + bool mUsesFragColor; + bool mUsesFragData; + bool mUsesFragCoord; + bool mUsesFrontFacing; + bool mUsesPointSize; + bool mUsesPointCoord; + bool mUsesDepthRange; + bool mUsesFragDepth; + + static void *mFragmentCompiler; + static void *mVertexCompiler; + + private: + DISALLOW_COPY_AND_ASSIGN(Shader); + + void initializeCompiler(); + + const GLuint mHandle; + unsigned int mRefCount; // Number of program objects this shader is attached to + bool mDeleteStatus; // Flag to indicate that the shader can be deleted when no longer in use + + char *mSource; + char *mHlsl; + char *mInfoLog; + sh::ActiveUniforms mActiveUniforms; + + ResourceManager *mResourceManager; +}; + +struct Attribute +{ + Attribute() : type(GL_NONE), name("") + { + } + + Attribute(GLenum type, const std::string &name) : type(type), name(name) + { + } + + GLenum type; + std::string name; +}; + +typedef std::vector AttributeArray; + +class VertexShader : public Shader +{ + friend class ProgramBinary; + + public: + VertexShader(ResourceManager *manager, const rx::Renderer *renderer, GLuint handle); + + ~VertexShader(); + + virtual GLenum getType(); + virtual void compile(); + virtual void uncompile(); + int getSemanticIndex(const std::string &attributeName); + + private: + DISALLOW_COPY_AND_ASSIGN(VertexShader); + + void parseAttributes(); + + AttributeArray mAttributes; +}; + +class FragmentShader : public Shader +{ + public: + FragmentShader(ResourceManager *manager,const rx::Renderer *renderer, GLuint handle); + + ~FragmentShader(); + + virtual GLenum getType(); + virtual void compile(); + + private: + DISALLOW_COPY_AND_ASSIGN(FragmentShader); +}; +} + +#endif // LIBGLESV2_SHADER_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Texture.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/Texture.cpp new file mode 100644 index 00000000000..ae83037845f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Texture.cpp @@ -0,0 +1,1495 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Texture.cpp: Implements the gl::Texture class and its derived classes +// Texture2D and TextureCubeMap. Implements GL texture objects and related +// functionality. [OpenGL ES 2.0.24] section 3.7 page 63. + +#include "libGLESv2/Texture.h" + +#include "libGLESv2/main.h" +#include "libGLESv2/mathutil.h" +#include "libGLESv2/utilities.h" +#include "libGLESv2/renderer/Blit.h" +#include "libGLESv2/Renderbuffer.h" +#include "libGLESv2/renderer/Image.h" +#include "libGLESv2/renderer/Renderer.h" +#include "libGLESv2/renderer/TextureStorage.h" +#include "libEGL/Surface.h" + +namespace gl +{ + +Texture::Texture(rx::Renderer *renderer, GLuint id) : RefCountObject(id) +{ + mRenderer = renderer; + + mSamplerState.minFilter = GL_NEAREST_MIPMAP_LINEAR; + mSamplerState.magFilter = GL_LINEAR; + mSamplerState.wrapS = GL_REPEAT; + mSamplerState.wrapT = GL_REPEAT; + mSamplerState.maxAnisotropy = 1.0f; + mSamplerState.lodOffset = 0; + mUsage = GL_NONE; + + mDirtyImages = true; + + mImmutable = false; +} + +Texture::~Texture() +{ +} + +// Returns true on successful filter state update (valid enum parameter) +bool Texture::setMinFilter(GLenum filter) +{ + switch (filter) + { + case GL_NEAREST: + case GL_LINEAR: + case GL_NEAREST_MIPMAP_NEAREST: + case GL_LINEAR_MIPMAP_NEAREST: + case GL_NEAREST_MIPMAP_LINEAR: + case GL_LINEAR_MIPMAP_LINEAR: + mSamplerState.minFilter = filter; + return true; + default: + return false; + } +} + +// Returns true on successful filter state update (valid enum parameter) +bool Texture::setMagFilter(GLenum filter) +{ + switch (filter) + { + case GL_NEAREST: + case GL_LINEAR: + mSamplerState.magFilter = filter; + return true; + default: + return false; + } +} + +// Returns true on successful wrap state update (valid enum parameter) +bool Texture::setWrapS(GLenum wrap) +{ + switch (wrap) + { + case GL_REPEAT: + case GL_CLAMP_TO_EDGE: + case GL_MIRRORED_REPEAT: + mSamplerState.wrapS = wrap; + return true; + default: + return false; + } +} + +// Returns true on successful wrap state update (valid enum parameter) +bool Texture::setWrapT(GLenum wrap) +{ + switch (wrap) + { + case GL_REPEAT: + case GL_CLAMP_TO_EDGE: + case GL_MIRRORED_REPEAT: + mSamplerState.wrapT = wrap; + return true; + default: + return false; + } +} + +// Returns true on successful max anisotropy update (valid anisotropy value) +bool Texture::setMaxAnisotropy(float textureMaxAnisotropy, float contextMaxAnisotropy) +{ + textureMaxAnisotropy = std::min(textureMaxAnisotropy, contextMaxAnisotropy); + if (textureMaxAnisotropy < 1.0f) + { + return false; + } + + mSamplerState.maxAnisotropy = textureMaxAnisotropy; + + return true; +} + +// Returns true on successful usage state update (valid enum parameter) +bool Texture::setUsage(GLenum usage) +{ + switch (usage) + { + case GL_NONE: + case GL_FRAMEBUFFER_ATTACHMENT_ANGLE: + mUsage = usage; + return true; + default: + return false; + } +} + +GLenum Texture::getMinFilter() const +{ + return mSamplerState.minFilter; +} + +GLenum Texture::getMagFilter() const +{ + return mSamplerState.magFilter; +} + +GLenum Texture::getWrapS() const +{ + return mSamplerState.wrapS; +} + +GLenum Texture::getWrapT() const +{ + return mSamplerState.wrapT; +} + +float Texture::getMaxAnisotropy() const +{ + return mSamplerState.maxAnisotropy; +} + +int Texture::getLodOffset() +{ + rx::TextureStorageInterface *texture = getStorage(false); + return texture ? texture->getLodOffset() : 0; +} + +void Texture::getSamplerState(SamplerState *sampler) +{ + *sampler = mSamplerState; + sampler->lodOffset = getLodOffset(); +} + +GLenum Texture::getUsage() const +{ + return mUsage; +} + +bool Texture::isMipmapFiltered() const +{ + switch (mSamplerState.minFilter) + { + case GL_NEAREST: + case GL_LINEAR: + return false; + case GL_NEAREST_MIPMAP_NEAREST: + case GL_LINEAR_MIPMAP_NEAREST: + case GL_NEAREST_MIPMAP_LINEAR: + case GL_LINEAR_MIPMAP_LINEAR: + return true; + default: UNREACHABLE(); + return false; + } +} + +void Texture::setImage(GLint unpackAlignment, const void *pixels, rx::Image *image) +{ + if (pixels != NULL) + { + image->loadData(0, 0, image->getWidth(), image->getHeight(), unpackAlignment, pixels); + mDirtyImages = true; + } +} + +void Texture::setCompressedImage(GLsizei imageSize, const void *pixels, rx::Image *image) +{ + if (pixels != NULL) + { + image->loadCompressedData(0, 0, image->getWidth(), image->getHeight(), pixels); + mDirtyImages = true; + } +} + +bool Texture::subImage(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels, rx::Image *image) +{ + if (pixels != NULL) + { + image->loadData(xoffset, yoffset, width, height, unpackAlignment, pixels); + mDirtyImages = true; + } + + return true; +} + +bool Texture::subImageCompressed(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels, rx::Image *image) +{ + if (pixels != NULL) + { + image->loadCompressedData(xoffset, yoffset, width, height, pixels); + mDirtyImages = true; + } + + return true; +} + +rx::TextureStorageInterface *Texture::getNativeTexture() +{ + // ensure the underlying texture is created + + rx::TextureStorageInterface *storage = getStorage(false); + if (storage) + { + updateTexture(); + } + + return storage; +} + +bool Texture::hasDirtyImages() const +{ + return mDirtyImages; +} + +void Texture::resetDirty() +{ + mDirtyImages = false; +} + +unsigned int Texture::getTextureSerial() +{ + rx::TextureStorageInterface *texture = getStorage(false); + return texture ? texture->getTextureSerial() : 0; +} + +unsigned int Texture::getRenderTargetSerial(GLenum target) +{ + rx::TextureStorageInterface *texture = getStorage(true); + return texture ? texture->getRenderTargetSerial(target) : 0; +} + +bool Texture::isImmutable() const +{ + return mImmutable; +} + +GLint Texture::creationLevels(GLsizei width, GLsizei height) const +{ + if ((isPow2(width) && isPow2(height)) || mRenderer->getNonPower2TextureSupport()) + { + return 0; // Maximum number of levels + } + else + { + // OpenGL ES 2.0 without GL_OES_texture_npot does not permit NPOT mipmaps. + return 1; + } +} + +GLint Texture::creationLevels(GLsizei size) const +{ + return creationLevels(size, size); +} + +Texture2D::Texture2D(rx::Renderer *renderer, GLuint id) : Texture(renderer, id) +{ + mTexStorage = NULL; + mSurface = NULL; + mColorbufferProxy = NULL; + mProxyRefs = 0; + + for (int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; ++i) + { + mImageArray[i] = renderer->createImage(); + } +} + +Texture2D::~Texture2D() +{ + mColorbufferProxy = NULL; + + delete mTexStorage; + mTexStorage = NULL; + + if (mSurface) + { + mSurface->setBoundTexture(NULL); + mSurface = NULL; + } + + for (int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; ++i) + { + delete mImageArray[i]; + } +} + +// We need to maintain a count of references to renderbuffers acting as +// proxies for this texture, so that we do not attempt to use a pointer +// to a renderbuffer proxy which has been deleted. +void Texture2D::addProxyRef(const Renderbuffer *proxy) +{ + mProxyRefs++; +} + +void Texture2D::releaseProxy(const Renderbuffer *proxy) +{ + if (mProxyRefs > 0) + mProxyRefs--; + + if (mProxyRefs == 0) + mColorbufferProxy = NULL; +} + +GLenum Texture2D::getTarget() const +{ + return GL_TEXTURE_2D; +} + +GLsizei Texture2D::getWidth(GLint level) const +{ + if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS) + return mImageArray[level]->getWidth(); + else + return 0; +} + +GLsizei Texture2D::getHeight(GLint level) const +{ + if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS) + return mImageArray[level]->getHeight(); + else + return 0; +} + +GLenum Texture2D::getInternalFormat(GLint level) const +{ + if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS) + return mImageArray[level]->getInternalFormat(); + else + return GL_NONE; +} + +GLenum Texture2D::getActualFormat(GLint level) const +{ + if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS) + return mImageArray[level]->getActualFormat(); + else + return D3DFMT_UNKNOWN; +} + +void Texture2D::redefineImage(GLint level, GLint internalformat, GLsizei width, GLsizei height) +{ + releaseTexImage(); + + // If there currently is a corresponding storage texture image, it has these parameters + const int storageWidth = std::max(1, mImageArray[0]->getWidth() >> level); + const int storageHeight = std::max(1, mImageArray[0]->getHeight() >> level); + const int storageFormat = mImageArray[0]->getInternalFormat(); + + mImageArray[level]->redefine(mRenderer, internalformat, width, height, false); + + if (mTexStorage) + { + const int storageLevels = mTexStorage->levelCount(); + + if ((level >= storageLevels && storageLevels != 0) || + width != storageWidth || + height != storageHeight || + internalformat != storageFormat) // Discard mismatched storage + { + for (int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) + { + mImageArray[i]->markDirty(); + } + + delete mTexStorage; + mTexStorage = NULL; + mDirtyImages = true; + } + } +} + +void Texture2D::setImage(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels) +{ + GLint internalformat = ConvertSizedInternalFormat(format, type); + redefineImage(level, internalformat, width, height); + + Texture::setImage(unpackAlignment, pixels, mImageArray[level]); +} + +void Texture2D::bindTexImage(egl::Surface *surface) +{ + releaseTexImage(); + + GLint internalformat = surface->getFormat(); + + mImageArray[0]->redefine(mRenderer, internalformat, surface->getWidth(), surface->getHeight(), true); + + delete mTexStorage; + mTexStorage = new rx::TextureStorageInterface2D(mRenderer, surface->getSwapChain()); + + mDirtyImages = true; + mSurface = surface; + mSurface->setBoundTexture(this); +} + +void Texture2D::releaseTexImage() +{ + if (mSurface) + { + mSurface->setBoundTexture(NULL); + mSurface = NULL; + + if (mTexStorage) + { + delete mTexStorage; + mTexStorage = NULL; + } + + for (int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) + { + mImageArray[i]->redefine(mRenderer, GL_NONE, 0, 0, true); + } + } +} + +void Texture2D::setCompressedImage(GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei imageSize, const void *pixels) +{ + // compressed formats don't have separate sized internal formats-- we can just use the compressed format directly + redefineImage(level, format, width, height); + + Texture::setCompressedImage(imageSize, pixels, mImageArray[level]); +} + +void Texture2D::commitRect(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height) +{ + if (level < levelCount()) + { + rx::Image *image = mImageArray[level]; + if (image->updateSurface(mTexStorage, level, xoffset, yoffset, width, height)) + { + image->markClean(); + } + } +} + +void Texture2D::subImage(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels) +{ + if (Texture::subImage(xoffset, yoffset, width, height, format, type, unpackAlignment, pixels, mImageArray[level])) + { + commitRect(level, xoffset, yoffset, width, height); + } +} + +void Texture2D::subImageCompressed(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels) +{ + if (Texture::subImageCompressed(xoffset, yoffset, width, height, format, imageSize, pixels, mImageArray[level])) + { + commitRect(level, xoffset, yoffset, width, height); + } +} + +void Texture2D::copyImage(GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source) +{ + GLint internalformat = ConvertSizedInternalFormat(format, GL_UNSIGNED_BYTE); + redefineImage(level, internalformat, width, height); + + if (!mImageArray[level]->isRenderableFormat()) + { + mImageArray[level]->copy(0, 0, x, y, width, height, source); + mDirtyImages = true; + } + else + { + if (!mTexStorage || !mTexStorage->isRenderTarget()) + { + convertToRenderTarget(); + } + + mImageArray[level]->markClean(); + + if (width != 0 && height != 0 && level < levelCount()) + { + gl::Rectangle sourceRect; + sourceRect.x = x; + sourceRect.width = width; + sourceRect.y = y; + sourceRect.height = height; + + mRenderer->copyImage(source, sourceRect, format, 0, 0, mTexStorage, level); + } + } +} + +void Texture2D::copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source) +{ + if (xoffset + width > mImageArray[level]->getWidth() || yoffset + height > mImageArray[level]->getHeight()) + { + return gl::error(GL_INVALID_VALUE); + } + + if (!mImageArray[level]->isRenderableFormat() || (!mTexStorage && !isSamplerComplete())) + { + mImageArray[level]->copy(xoffset, yoffset, x, y, width, height, source); + mDirtyImages = true; + } + else + { + if (!mTexStorage || !mTexStorage->isRenderTarget()) + { + convertToRenderTarget(); + } + + updateTexture(); + + if (level < levelCount()) + { + gl::Rectangle sourceRect; + sourceRect.x = x; + sourceRect.width = width; + sourceRect.y = y; + sourceRect.height = height; + + mRenderer->copyImage(source, sourceRect, + gl::ExtractFormat(mImageArray[0]->getInternalFormat()), + xoffset, yoffset, mTexStorage, level); + } + } +} + +void Texture2D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + delete mTexStorage; + mTexStorage = new rx::TextureStorageInterface2D(mRenderer, levels, internalformat, mUsage, false, width, height); + mImmutable = true; + + for (int level = 0; level < levels; level++) + { + mImageArray[level]->redefine(mRenderer, internalformat, width, height, true); + width = std::max(1, width >> 1); + height = std::max(1, height >> 1); + } + + for (int level = levels; level < IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++) + { + mImageArray[level]->redefine(mRenderer, GL_NONE, 0, 0, true); + } + + if (mTexStorage->isManaged()) + { + int levels = levelCount(); + + for (int level = 0; level < levels; level++) + { + mImageArray[level]->setManagedSurface(mTexStorage, level); + } + } +} + +// Tests for 2D texture sampling completeness. [OpenGL ES 2.0.24] section 3.8.2 page 85. +bool Texture2D::isSamplerComplete() const +{ + GLsizei width = mImageArray[0]->getWidth(); + GLsizei height = mImageArray[0]->getHeight(); + + if (width <= 0 || height <= 0) + { + return false; + } + + bool mipmapping = isMipmapFiltered(); + bool filtering, renderable; + + if ((IsFloat32Format(getInternalFormat(0)) && !mRenderer->getFloat32TextureSupport(&filtering, &renderable)) || + (IsFloat16Format(getInternalFormat(0)) && !mRenderer->getFloat16TextureSupport(&filtering, &renderable))) + { + if (mSamplerState.magFilter != GL_NEAREST || + (mSamplerState.minFilter != GL_NEAREST && mSamplerState.minFilter != GL_NEAREST_MIPMAP_NEAREST)) + { + return false; + } + } + + bool npotSupport = mRenderer->getNonPower2TextureSupport(); + + if (!npotSupport) + { + if ((mSamplerState.wrapS != GL_CLAMP_TO_EDGE && !isPow2(width)) || + (mSamplerState.wrapT != GL_CLAMP_TO_EDGE && !isPow2(height))) + { + return false; + } + } + + if (mipmapping) + { + if (!npotSupport) + { + if (!isPow2(width) || !isPow2(height)) + { + return false; + } + } + + if (!isMipmapComplete()) + { + return false; + } + } + + return true; +} + +// Tests for 2D texture (mipmap) completeness. [OpenGL ES 2.0.24] section 3.7.10 page 81. +bool Texture2D::isMipmapComplete() const +{ + if (isImmutable()) + { + return true; + } + + GLsizei width = mImageArray[0]->getWidth(); + GLsizei height = mImageArray[0]->getHeight(); + + if (width <= 0 || height <= 0) + { + return false; + } + + int q = log2(std::max(width, height)); + + for (int level = 1; level <= q; level++) + { + if (mImageArray[level]->getInternalFormat() != mImageArray[0]->getInternalFormat()) + { + return false; + } + + if (mImageArray[level]->getWidth() != std::max(1, width >> level)) + { + return false; + } + + if (mImageArray[level]->getHeight() != std::max(1, height >> level)) + { + return false; + } + } + + return true; +} + +bool Texture2D::isCompressed(GLint level) const +{ + return IsCompressed(getInternalFormat(level)); +} + +bool Texture2D::isDepth(GLint level) const +{ + return IsDepthTexture(getInternalFormat(level)); +} + +// Constructs a native texture resource from the texture images +void Texture2D::createTexture() +{ + GLsizei width = mImageArray[0]->getWidth(); + GLsizei height = mImageArray[0]->getHeight(); + + if (!(width > 0 && height > 0)) + return; // do not attempt to create native textures for nonexistant data + + GLint levels = creationLevels(width, height); + GLenum internalformat = mImageArray[0]->getInternalFormat(); + + delete mTexStorage; + mTexStorage = new rx::TextureStorageInterface2D(mRenderer, levels, internalformat, mUsage, false, width, height); + + if (mTexStorage->isManaged()) + { + int levels = levelCount(); + + for (int level = 0; level < levels; level++) + { + mImageArray[level]->setManagedSurface(mTexStorage, level); + } + } + + mDirtyImages = true; +} + +void Texture2D::updateTexture() +{ + bool mipmapping = (isMipmapFiltered() && isMipmapComplete()); + + int levels = (mipmapping ? levelCount() : 1); + + for (int level = 0; level < levels; level++) + { + rx::Image *image = mImageArray[level]; + + if (image->isDirty()) + { + commitRect(level, 0, 0, mImageArray[level]->getWidth(), mImageArray[level]->getHeight()); + } + } +} + +void Texture2D::convertToRenderTarget() +{ + rx::TextureStorageInterface2D *newTexStorage = NULL; + + if (mImageArray[0]->getWidth() != 0 && mImageArray[0]->getHeight() != 0) + { + GLsizei width = mImageArray[0]->getWidth(); + GLsizei height = mImageArray[0]->getHeight(); + GLint levels = mTexStorage != NULL ? mTexStorage->levelCount() : creationLevels(width, height); + GLenum internalformat = mImageArray[0]->getInternalFormat(); + + newTexStorage = new rx::TextureStorageInterface2D(mRenderer, levels, internalformat, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, true, width, height); + + if (mTexStorage != NULL) + { + if (!mRenderer->copyToRenderTarget(newTexStorage, mTexStorage)) + { + delete newTexStorage; + return gl::error(GL_OUT_OF_MEMORY); + } + } + } + + delete mTexStorage; + mTexStorage = newTexStorage; + + mDirtyImages = true; +} + +void Texture2D::generateMipmaps() +{ + if (!mRenderer->getNonPower2TextureSupport()) + { + if (!isPow2(mImageArray[0]->getWidth()) || !isPow2(mImageArray[0]->getHeight())) + { + return gl::error(GL_INVALID_OPERATION); + } + } + + // Purge array levels 1 through q and reset them to represent the generated mipmap levels. + unsigned int q = log2(std::max(mImageArray[0]->getWidth(), mImageArray[0]->getHeight())); + for (unsigned int i = 1; i <= q; i++) + { + redefineImage(i, mImageArray[0]->getInternalFormat(), + std::max(mImageArray[0]->getWidth() >> i, 1), + std::max(mImageArray[0]->getHeight() >> i, 1)); + } + + if (mTexStorage && mTexStorage->isRenderTarget()) + { + for (unsigned int i = 1; i <= q; i++) + { + mTexStorage->generateMipmap(i); + + mImageArray[i]->markClean(); + } + } + else + { + for (unsigned int i = 1; i <= q; i++) + { + mRenderer->generateMipmap(mImageArray[i], mImageArray[i - 1]); + } + } +} + +Renderbuffer *Texture2D::getRenderbuffer(GLenum target) +{ + if (target != GL_TEXTURE_2D) + { + return gl::error(GL_INVALID_OPERATION, (Renderbuffer *)NULL); + } + + if (mColorbufferProxy == NULL) + { + mColorbufferProxy = new Renderbuffer(mRenderer, id(), new RenderbufferTexture2D(this, target)); + } + + return mColorbufferProxy; +} + +rx::RenderTarget *Texture2D::getRenderTarget(GLenum target) +{ + ASSERT(target == GL_TEXTURE_2D); + + // ensure the underlying texture is created + if (getStorage(true) == NULL) + { + return NULL; + } + + updateTexture(); + + // ensure this is NOT a depth texture + if (isDepth(0)) + { + return NULL; + } + + return mTexStorage->getRenderTarget(); +} + +rx::RenderTarget *Texture2D::getDepthStencil(GLenum target) +{ + ASSERT(target == GL_TEXTURE_2D); + + // ensure the underlying texture is created + if (getStorage(true) == NULL) + { + return NULL; + } + + updateTexture(); + + // ensure this is actually a depth texture + if (!isDepth(0)) + { + return NULL; + } + return mTexStorage->getRenderTarget(); +} + +int Texture2D::levelCount() +{ + return mTexStorage ? mTexStorage->levelCount() : 0; +} + +rx::TextureStorageInterface *Texture2D::getStorage(bool renderTarget) +{ + if (!mTexStorage || (renderTarget && !mTexStorage->isRenderTarget())) + { + if (renderTarget) + { + convertToRenderTarget(); + } + else + { + createTexture(); + } + } + + return mTexStorage; +} + +TextureCubeMap::TextureCubeMap(rx::Renderer *renderer, GLuint id) : Texture(renderer, id) +{ + mTexStorage = NULL; + for (int i = 0; i < 6; i++) + { + mFaceProxies[i] = NULL; + mFaceProxyRefs[i] = 0; + + for (int j = 0; j < IMPLEMENTATION_MAX_TEXTURE_LEVELS; ++j) + { + mImageArray[i][j] = renderer->createImage(); + } + } +} + +TextureCubeMap::~TextureCubeMap() +{ + for (int i = 0; i < 6; i++) + { + mFaceProxies[i] = NULL; + + for (int j = 0; j < IMPLEMENTATION_MAX_TEXTURE_LEVELS; ++j) + { + delete mImageArray[i][j]; + } + } + + delete mTexStorage; + mTexStorage = NULL; +} + +// We need to maintain a count of references to renderbuffers acting as +// proxies for this texture, so that the texture is not deleted while +// proxy references still exist. If the reference count drops to zero, +// we set our proxy pointer NULL, so that a new attempt at referencing +// will cause recreation. +void TextureCubeMap::addProxyRef(const Renderbuffer *proxy) +{ + for (int i = 0; i < 6; i++) + { + if (mFaceProxies[i] == proxy) + mFaceProxyRefs[i]++; + } +} + +void TextureCubeMap::releaseProxy(const Renderbuffer *proxy) +{ + for (int i = 0; i < 6; i++) + { + if (mFaceProxies[i] == proxy) + { + if (mFaceProxyRefs[i] > 0) + mFaceProxyRefs[i]--; + + if (mFaceProxyRefs[i] == 0) + mFaceProxies[i] = NULL; + } + } +} + +GLenum TextureCubeMap::getTarget() const +{ + return GL_TEXTURE_CUBE_MAP; +} + +GLsizei TextureCubeMap::getWidth(GLenum target, GLint level) const +{ + if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS) + return mImageArray[faceIndex(target)][level]->getWidth(); + else + return 0; +} + +GLsizei TextureCubeMap::getHeight(GLenum target, GLint level) const +{ + if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS) + return mImageArray[faceIndex(target)][level]->getHeight(); + else + return 0; +} + +GLenum TextureCubeMap::getInternalFormat(GLenum target, GLint level) const +{ + if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS) + return mImageArray[faceIndex(target)][level]->getInternalFormat(); + else + return GL_NONE; +} + +GLenum TextureCubeMap::getActualFormat(GLenum target, GLint level) const +{ + if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS) + return mImageArray[faceIndex(target)][level]->getActualFormat(); + else + return D3DFMT_UNKNOWN; +} + +void TextureCubeMap::setImagePosX(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels) +{ + setImage(0, level, width, height, format, type, unpackAlignment, pixels); +} + +void TextureCubeMap::setImageNegX(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels) +{ + setImage(1, level, width, height, format, type, unpackAlignment, pixels); +} + +void TextureCubeMap::setImagePosY(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels) +{ + setImage(2, level, width, height, format, type, unpackAlignment, pixels); +} + +void TextureCubeMap::setImageNegY(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels) +{ + setImage(3, level, width, height, format, type, unpackAlignment, pixels); +} + +void TextureCubeMap::setImagePosZ(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels) +{ + setImage(4, level, width, height, format, type, unpackAlignment, pixels); +} + +void TextureCubeMap::setImageNegZ(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels) +{ + setImage(5, level, width, height, format, type, unpackAlignment, pixels); +} + +void TextureCubeMap::setCompressedImage(GLenum face, GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei imageSize, const void *pixels) +{ + // compressed formats don't have separate sized internal formats-- we can just use the compressed format directly + redefineImage(faceIndex(face), level, format, width, height); + + Texture::setCompressedImage(imageSize, pixels, mImageArray[faceIndex(face)][level]); +} + +void TextureCubeMap::commitRect(int face, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height) +{ + if (level < levelCount()) + { + rx::Image *image = mImageArray[face][level]; + if (image->updateSurface(mTexStorage, face, level, xoffset, yoffset, width, height)) + image->markClean(); + } +} + +void TextureCubeMap::subImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels) +{ + if (Texture::subImage(xoffset, yoffset, width, height, format, type, unpackAlignment, pixels, mImageArray[faceIndex(target)][level])) + { + commitRect(faceIndex(target), level, xoffset, yoffset, width, height); + } +} + +void TextureCubeMap::subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels) +{ + if (Texture::subImageCompressed(xoffset, yoffset, width, height, format, imageSize, pixels, mImageArray[faceIndex(target)][level])) + { + commitRect(faceIndex(target), level, xoffset, yoffset, width, height); + } +} + +// Tests for cube map sampling completeness. [OpenGL ES 2.0.24] section 3.8.2 page 86. +bool TextureCubeMap::isSamplerComplete() const +{ + int size = mImageArray[0][0]->getWidth(); + + bool mipmapping = isMipmapFiltered(); + bool filtering, renderable; + + if ((gl::ExtractType(getInternalFormat(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0)) == GL_FLOAT && !mRenderer->getFloat32TextureSupport(&filtering, &renderable)) || + (gl::ExtractType(getInternalFormat(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0) == GL_HALF_FLOAT_OES) && !mRenderer->getFloat16TextureSupport(&filtering, &renderable))) + { + if (mSamplerState.magFilter != GL_NEAREST || + (mSamplerState.minFilter != GL_NEAREST && mSamplerState.minFilter != GL_NEAREST_MIPMAP_NEAREST)) + { + return false; + } + } + + if (!isPow2(size) && !mRenderer->getNonPower2TextureSupport()) + { + if (mSamplerState.wrapS != GL_CLAMP_TO_EDGE || mSamplerState.wrapT != GL_CLAMP_TO_EDGE || mipmapping) + { + return false; + } + } + + if (!mipmapping) + { + if (!isCubeComplete()) + { + return false; + } + } + else + { + if (!isMipmapCubeComplete()) // Also tests for isCubeComplete() + { + return false; + } + } + + return true; +} + +// Tests for cube texture completeness. [OpenGL ES 2.0.24] section 3.7.10 page 81. +bool TextureCubeMap::isCubeComplete() const +{ + if (mImageArray[0][0]->getWidth() <= 0 || mImageArray[0][0]->getHeight() != mImageArray[0][0]->getWidth()) + { + return false; + } + + for (unsigned int face = 1; face < 6; face++) + { + if (mImageArray[face][0]->getWidth() != mImageArray[0][0]->getWidth() || + mImageArray[face][0]->getWidth() != mImageArray[0][0]->getHeight() || + mImageArray[face][0]->getInternalFormat() != mImageArray[0][0]->getInternalFormat()) + { + return false; + } + } + + return true; +} + +bool TextureCubeMap::isMipmapCubeComplete() const +{ + if (isImmutable()) + { + return true; + } + + if (!isCubeComplete()) + { + return false; + } + + GLsizei size = mImageArray[0][0]->getWidth(); + + int q = log2(size); + + for (int face = 0; face < 6; face++) + { + for (int level = 1; level <= q; level++) + { + if (mImageArray[face][level]->getInternalFormat() != mImageArray[0][0]->getInternalFormat()) + { + return false; + } + + if (mImageArray[face][level]->getWidth() != std::max(1, size >> level)) + { + return false; + } + } + } + + return true; +} + +bool TextureCubeMap::isCompressed(GLenum target, GLint level) const +{ + return IsCompressed(getInternalFormat(target, level)); +} + +// Constructs a native texture resource from the texture images, or returns an existing one +void TextureCubeMap::createTexture() +{ + GLsizei size = mImageArray[0][0]->getWidth(); + + if (!(size > 0)) + return; // do not attempt to create native textures for nonexistant data + + GLint levels = creationLevels(size); + GLenum internalformat = mImageArray[0][0]->getInternalFormat(); + + delete mTexStorage; + mTexStorage = new rx::TextureStorageInterfaceCube(mRenderer, levels, internalformat, mUsage, false, size); + + if (mTexStorage->isManaged()) + { + int levels = levelCount(); + + for (int face = 0; face < 6; face++) + { + for (int level = 0; level < levels; level++) + { + mImageArray[face][level]->setManagedSurface(mTexStorage, face, level); + } + } + } + + mDirtyImages = true; +} + +void TextureCubeMap::updateTexture() +{ + bool mipmapping = isMipmapFiltered() && isMipmapCubeComplete(); + + for (int face = 0; face < 6; face++) + { + int levels = (mipmapping ? levelCount() : 1); + + for (int level = 0; level < levels; level++) + { + rx::Image *image = mImageArray[face][level]; + + if (image->isDirty()) + { + commitRect(face, level, 0, 0, image->getWidth(), image->getHeight()); + } + } + } +} + +void TextureCubeMap::convertToRenderTarget() +{ + rx::TextureStorageInterfaceCube *newTexStorage = NULL; + + if (mImageArray[0][0]->getWidth() != 0) + { + GLsizei size = mImageArray[0][0]->getWidth(); + GLint levels = mTexStorage != NULL ? mTexStorage->levelCount() : creationLevels(size); + GLenum internalformat = mImageArray[0][0]->getInternalFormat(); + + newTexStorage = new rx::TextureStorageInterfaceCube(mRenderer, levels, internalformat, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, true, size); + + if (mTexStorage != NULL) + { + if (!mRenderer->copyToRenderTarget(newTexStorage, mTexStorage)) + { + delete newTexStorage; + return gl::error(GL_OUT_OF_MEMORY); + } + } + } + + delete mTexStorage; + mTexStorage = newTexStorage; + + mDirtyImages = true; +} + +void TextureCubeMap::setImage(int faceIndex, GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels) +{ + GLint internalformat = ConvertSizedInternalFormat(format, type); + redefineImage(faceIndex, level, internalformat, width, height); + + Texture::setImage(unpackAlignment, pixels, mImageArray[faceIndex][level]); +} + +unsigned int TextureCubeMap::faceIndex(GLenum face) +{ + META_ASSERT(GL_TEXTURE_CUBE_MAP_NEGATIVE_X - GL_TEXTURE_CUBE_MAP_POSITIVE_X == 1); + META_ASSERT(GL_TEXTURE_CUBE_MAP_POSITIVE_Y - GL_TEXTURE_CUBE_MAP_POSITIVE_X == 2); + META_ASSERT(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y - GL_TEXTURE_CUBE_MAP_POSITIVE_X == 3); + META_ASSERT(GL_TEXTURE_CUBE_MAP_POSITIVE_Z - GL_TEXTURE_CUBE_MAP_POSITIVE_X == 4); + META_ASSERT(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z - GL_TEXTURE_CUBE_MAP_POSITIVE_X == 5); + + return face - GL_TEXTURE_CUBE_MAP_POSITIVE_X; +} + +void TextureCubeMap::redefineImage(int face, GLint level, GLint internalformat, GLsizei width, GLsizei height) +{ + // If there currently is a corresponding storage texture image, it has these parameters + const int storageWidth = std::max(1, mImageArray[0][0]->getWidth() >> level); + const int storageHeight = std::max(1, mImageArray[0][0]->getHeight() >> level); + const int storageFormat = mImageArray[0][0]->getInternalFormat(); + + mImageArray[face][level]->redefine(mRenderer, internalformat, width, height, false); + + if (mTexStorage) + { + const int storageLevels = mTexStorage->levelCount(); + + if ((level >= storageLevels && storageLevels != 0) || + width != storageWidth || + height != storageHeight || + internalformat != storageFormat) // Discard mismatched storage + { + for (int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) + { + for (int f = 0; f < 6; f++) + { + mImageArray[f][i]->markDirty(); + } + } + + delete mTexStorage; + mTexStorage = NULL; + + mDirtyImages = true; + } + } +} + +void TextureCubeMap::copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source) +{ + unsigned int faceindex = faceIndex(target); + GLint internalformat = gl::ConvertSizedInternalFormat(format, GL_UNSIGNED_BYTE); + redefineImage(faceindex, level, internalformat, width, height); + + if (!mImageArray[faceindex][level]->isRenderableFormat()) + { + mImageArray[faceindex][level]->copy(0, 0, x, y, width, height, source); + mDirtyImages = true; + } + else + { + if (!mTexStorage || !mTexStorage->isRenderTarget()) + { + convertToRenderTarget(); + } + + mImageArray[faceindex][level]->markClean(); + + ASSERT(width == height); + + if (width > 0 && level < levelCount()) + { + gl::Rectangle sourceRect; + sourceRect.x = x; + sourceRect.width = width; + sourceRect.y = y; + sourceRect.height = height; + + mRenderer->copyImage(source, sourceRect, format, 0, 0, mTexStorage, target, level); + } + } +} + +void TextureCubeMap::copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source) +{ + GLsizei size = mImageArray[faceIndex(target)][level]->getWidth(); + + if (xoffset + width > size || yoffset + height > size) + { + return gl::error(GL_INVALID_VALUE); + } + + unsigned int faceindex = faceIndex(target); + + if (!mImageArray[faceindex][level]->isRenderableFormat() || (!mTexStorage && !isSamplerComplete())) + { + mImageArray[faceindex][level]->copy(0, 0, x, y, width, height, source); + mDirtyImages = true; + } + else + { + if (!mTexStorage || !mTexStorage->isRenderTarget()) + { + convertToRenderTarget(); + } + + updateTexture(); + + if (level < levelCount()) + { + gl::Rectangle sourceRect; + sourceRect.x = x; + sourceRect.width = width; + sourceRect.y = y; + sourceRect.height = height; + + mRenderer->copyImage(source, sourceRect, gl::ExtractFormat(mImageArray[0][0]->getInternalFormat()), + xoffset, yoffset, mTexStorage, target, level); + } + } +} + +void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size) +{ + delete mTexStorage; + mTexStorage = new rx::TextureStorageInterfaceCube(mRenderer, levels, internalformat, mUsage, false, size); + mImmutable = true; + + for (int level = 0; level < levels; level++) + { + for (int face = 0; face < 6; face++) + { + mImageArray[face][level]->redefine(mRenderer, internalformat, size, size, true); + size = std::max(1, size >> 1); + } + } + + for (int level = levels; level < IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++) + { + for (int face = 0; face < 6; face++) + { + mImageArray[face][level]->redefine(mRenderer, GL_NONE, 0, 0, true); + } + } + + if (mTexStorage->isManaged()) + { + int levels = levelCount(); + + for (int face = 0; face < 6; face++) + { + for (int level = 0; level < levels; level++) + { + mImageArray[face][level]->setManagedSurface(mTexStorage, face, level); + } + } + } +} + +void TextureCubeMap::generateMipmaps() +{ + if (!isCubeComplete()) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!mRenderer->getNonPower2TextureSupport()) + { + if (!isPow2(mImageArray[0][0]->getWidth())) + { + return gl::error(GL_INVALID_OPERATION); + } + } + + // Purge array levels 1 through q and reset them to represent the generated mipmap levels. + unsigned int q = log2(mImageArray[0][0]->getWidth()); + for (unsigned int f = 0; f < 6; f++) + { + for (unsigned int i = 1; i <= q; i++) + { + redefineImage(f, i, mImageArray[f][0]->getInternalFormat(), + std::max(mImageArray[f][0]->getWidth() >> i, 1), + std::max(mImageArray[f][0]->getWidth() >> i, 1)); + } + } + + if (mTexStorage && mTexStorage->isRenderTarget()) + { + for (unsigned int f = 0; f < 6; f++) + { + for (unsigned int i = 1; i <= q; i++) + { + mTexStorage->generateMipmap(f, i); + + mImageArray[f][i]->markClean(); + } + } + } + else + { + for (unsigned int f = 0; f < 6; f++) + { + for (unsigned int i = 1; i <= q; i++) + { + mRenderer->generateMipmap(mImageArray[f][i], mImageArray[f][i - 1]); + } + } + } +} + +Renderbuffer *TextureCubeMap::getRenderbuffer(GLenum target) +{ + if (!IsCubemapTextureTarget(target)) + { + return gl::error(GL_INVALID_OPERATION, (Renderbuffer *)NULL); + } + + unsigned int face = faceIndex(target); + + if (mFaceProxies[face] == NULL) + { + mFaceProxies[face] = new Renderbuffer(mRenderer, id(), new RenderbufferTextureCubeMap(this, target)); + } + + return mFaceProxies[face]; +} + +rx::RenderTarget *TextureCubeMap::getRenderTarget(GLenum target) +{ + ASSERT(IsCubemapTextureTarget(target)); + + // ensure the underlying texture is created + if (getStorage(true) == NULL) + { + return NULL; + } + + updateTexture(); + + return mTexStorage->getRenderTarget(target); +} + +int TextureCubeMap::levelCount() +{ + return mTexStorage ? mTexStorage->levelCount() - getLodOffset() : 0; +} + +rx::TextureStorageInterface *TextureCubeMap::getStorage(bool renderTarget) +{ + if (!mTexStorage || (renderTarget && !mTexStorage->isRenderTarget())) + { + if (renderTarget) + { + convertToRenderTarget(); + } + else + { + createTexture(); + } + } + + return mTexStorage; +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Texture.h b/Source/ThirdParty/ANGLE/src/libGLESv2/Texture.h new file mode 100644 index 00000000000..4f5fab28d01 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Texture.h @@ -0,0 +1,275 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Texture.h: Defines the abstract gl::Texture class and its concrete derived +// classes Texture2D and TextureCubeMap. Implements GL texture objects and +// related functionality. [OpenGL ES 2.0.24] section 3.7 page 63. + +#ifndef LIBGLESV2_TEXTURE_H_ +#define LIBGLESV2_TEXTURE_H_ + +#include + +#define GL_APICALL +#include + +#include "common/debug.h" +#include "common/RefCountObject.h" +#include "libGLESv2/angletypes.h" + +namespace egl +{ +class Surface; +} + +namespace rx +{ +class Renderer; +class TextureStorageInterface; +class TextureStorageInterface2D; +class TextureStorageInterfaceCube; +class RenderTarget; +class Image; +} + +namespace gl +{ +class Framebuffer; +class Renderbuffer; + +enum +{ + // These are the maximums the implementation can support + // The actual GL caps are limited by the device caps + // and should be queried from the Context + IMPLEMENTATION_MAX_TEXTURE_SIZE = 16384, + IMPLEMENTATION_MAX_CUBE_MAP_TEXTURE_SIZE = 16384, + + IMPLEMENTATION_MAX_TEXTURE_LEVELS = 15 // 1+log2 of MAX_TEXTURE_SIZE +}; + +class Texture : public RefCountObject +{ + public: + Texture(rx::Renderer *renderer, GLuint id); + + virtual ~Texture(); + + virtual void addProxyRef(const Renderbuffer *proxy) = 0; + virtual void releaseProxy(const Renderbuffer *proxy) = 0; + + virtual GLenum getTarget() const = 0; + + bool setMinFilter(GLenum filter); + bool setMagFilter(GLenum filter); + bool setWrapS(GLenum wrap); + bool setWrapT(GLenum wrap); + bool setMaxAnisotropy(float textureMaxAnisotropy, float contextMaxAnisotropy); + bool setUsage(GLenum usage); + + GLenum getMinFilter() const; + GLenum getMagFilter() const; + GLenum getWrapS() const; + GLenum getWrapT() const; + float getMaxAnisotropy() const; + int getLodOffset(); + void getSamplerState(SamplerState *sampler); + GLenum getUsage() const; + bool isMipmapFiltered() const; + + virtual bool isSamplerComplete() const = 0; + + rx::TextureStorageInterface *getNativeTexture(); + virtual Renderbuffer *getRenderbuffer(GLenum target) = 0; + + virtual void generateMipmaps() = 0; + virtual void copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source) = 0; + + bool hasDirtyParameters() const; + bool hasDirtyImages() const; + void resetDirty(); + unsigned int getTextureSerial(); + unsigned int getRenderTargetSerial(GLenum target); + + bool isImmutable() const; + + static const GLuint INCOMPLETE_TEXTURE_ID = static_cast(-1); // Every texture takes an id at creation time. The value is arbitrary because it is never registered with the resource manager. + + protected: + void setImage(GLint unpackAlignment, const void *pixels, rx::Image *image); + bool subImage(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels, rx::Image *image); + void setCompressedImage(GLsizei imageSize, const void *pixels, rx::Image *image); + bool subImageCompressed(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels, rx::Image *image); + + GLint creationLevels(GLsizei width, GLsizei height) const; + GLint creationLevels(GLsizei size) const; + + virtual void createTexture() = 0; + virtual void updateTexture() = 0; + virtual void convertToRenderTarget() = 0; + virtual rx::RenderTarget *getRenderTarget(GLenum target) = 0; + + virtual int levelCount() = 0; + + rx::Renderer *mRenderer; + + SamplerState mSamplerState; + GLenum mUsage; + + bool mDirtyImages; + + bool mImmutable; + + private: + DISALLOW_COPY_AND_ASSIGN(Texture); + + virtual rx::TextureStorageInterface *getStorage(bool renderTarget) = 0; +}; + +class Texture2D : public Texture +{ + public: + Texture2D(rx::Renderer *renderer, GLuint id); + + ~Texture2D(); + + void addProxyRef(const Renderbuffer *proxy); + void releaseProxy(const Renderbuffer *proxy); + + virtual GLenum getTarget() const; + + GLsizei getWidth(GLint level) const; + GLsizei getHeight(GLint level) const; + GLenum getInternalFormat(GLint level) const; + GLenum getActualFormat(GLint level) const; + bool isCompressed(GLint level) const; + bool isDepth(GLint level) const; + + void setImage(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels); + void setCompressedImage(GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei imageSize, const void *pixels); + void subImage(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels); + void subImageCompressed(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels); + void copyImage(GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source); + virtual void copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source); + void storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + + virtual bool isSamplerComplete() const; + virtual void bindTexImage(egl::Surface *surface); + virtual void releaseTexImage(); + + virtual void generateMipmaps(); + + virtual Renderbuffer *getRenderbuffer(GLenum target); + + protected: + friend class RenderbufferTexture2D; + virtual rx::RenderTarget *getRenderTarget(GLenum target); + virtual rx::RenderTarget *getDepthStencil(GLenum target); + virtual int levelCount(); + + private: + DISALLOW_COPY_AND_ASSIGN(Texture2D); + + virtual void createTexture(); + virtual void updateTexture(); + virtual void convertToRenderTarget(); + virtual rx::TextureStorageInterface *getStorage(bool renderTarget); + + bool isMipmapComplete() const; + + void redefineImage(GLint level, GLint internalformat, GLsizei width, GLsizei height); + void commitRect(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height); + + rx::Image *mImageArray[IMPLEMENTATION_MAX_TEXTURE_LEVELS]; + + rx::TextureStorageInterface2D *mTexStorage; + egl::Surface *mSurface; + + // A specific internal reference count is kept for colorbuffer proxy references, + // because, as the renderbuffer acting as proxy will maintain a binding pointer + // back to this texture, there would be a circular reference if we used a binding + // pointer here. This reference count will cause the pointer to be set to NULL if + // the count drops to zero, but will not cause deletion of the Renderbuffer. + Renderbuffer *mColorbufferProxy; + unsigned int mProxyRefs; +}; + +class TextureCubeMap : public Texture +{ + public: + TextureCubeMap(rx::Renderer *renderer, GLuint id); + + ~TextureCubeMap(); + + void addProxyRef(const Renderbuffer *proxy); + void releaseProxy(const Renderbuffer *proxy); + + virtual GLenum getTarget() const; + + GLsizei getWidth(GLenum target, GLint level) const; + GLsizei getHeight(GLenum target, GLint level) const; + GLenum getInternalFormat(GLenum target, GLint level) const; + GLenum getActualFormat(GLenum target, GLint level) const; + bool isCompressed(GLenum target, GLint level) const; + + void setImagePosX(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels); + void setImageNegX(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels); + void setImagePosY(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels); + void setImageNegY(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels); + void setImagePosZ(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels); + void setImageNegZ(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels); + + void setCompressedImage(GLenum face, GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei imageSize, const void *pixels); + + void subImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels); + void subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels); + void copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source); + virtual void copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source); + void storage(GLsizei levels, GLenum internalformat, GLsizei size); + + virtual bool isSamplerComplete() const; + + virtual void generateMipmaps(); + + virtual Renderbuffer *getRenderbuffer(GLenum target); + + static unsigned int faceIndex(GLenum face); + + protected: + friend class RenderbufferTextureCubeMap; + virtual rx::RenderTarget *getRenderTarget(GLenum target); + virtual int levelCount(); + + private: + DISALLOW_COPY_AND_ASSIGN(TextureCubeMap); + + virtual void createTexture(); + virtual void updateTexture(); + virtual void convertToRenderTarget(); + virtual rx::TextureStorageInterface *getStorage(bool renderTarget); + + bool isCubeComplete() const; + bool isMipmapCubeComplete() const; + + void setImage(int faceIndex, GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels); + void commitRect(int faceIndex, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height); + void redefineImage(int faceIndex, GLint level, GLint internalformat, GLsizei width, GLsizei height); + + rx::Image *mImageArray[6][IMPLEMENTATION_MAX_TEXTURE_LEVELS]; + + rx::TextureStorageInterfaceCube *mTexStorage; + + // A specific internal reference count is kept for colorbuffer proxy references, + // because, as the renderbuffer acting as proxy will maintain a binding pointer + // back to this texture, there would be a circular reference if we used a binding + // pointer here. This reference count will cause the pointer to be set to NULL if + // the count drops to zero, but will not cause deletion of the Renderbuffer. + Renderbuffer *mFaceProxies[6]; + unsigned int *mFaceProxyRefs[6]; +}; +} + +#endif // LIBGLESV2_TEXTURE_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Uniform.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/Uniform.cpp new file mode 100644 index 00000000000..5424e271b5c --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Uniform.cpp @@ -0,0 +1,43 @@ +#include "precompiled.h" +// +// Copyright (c) 2010-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#include "libGLESv2/Uniform.h" + +#include "libGLESv2/utilities.h" + +namespace gl +{ + +Uniform::Uniform(GLenum type, GLenum precision, const std::string &name, unsigned int arraySize) + : type(type), precision(precision), name(name), arraySize(arraySize) +{ + int bytes = gl::UniformInternalSize(type) * elementCount(); + data = new unsigned char[bytes]; + memset(data, 0, bytes); + dirty = true; + + psRegisterIndex = -1; + vsRegisterIndex = -1; + registerCount = VariableRowCount(type) * elementCount(); +} + +Uniform::~Uniform() +{ + delete[] data; +} + +bool Uniform::isArray() const +{ + return arraySize > 0; +} + +unsigned int Uniform::elementCount() const +{ + return arraySize > 0 ? arraySize : 1; +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Uniform.h b/Source/ThirdParty/ANGLE/src/libGLESv2/Uniform.h new file mode 100644 index 00000000000..8ab0fbe2341 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Uniform.h @@ -0,0 +1,48 @@ +// +// Copyright (c) 2010-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef LIBGLESV2_UNIFORM_H_ +#define LIBGLESV2_UNIFORM_H_ + +#include +#include + +#define GL_APICALL +#include + +#include "common/debug.h" + +namespace gl +{ + +// Helper struct representing a single shader uniform +struct Uniform +{ + Uniform(GLenum type, GLenum precision, const std::string &name, unsigned int arraySize); + + ~Uniform(); + + bool isArray() const; + unsigned int elementCount() const; + + const GLenum type; + const GLenum precision; + const std::string name; + const unsigned int arraySize; + + unsigned char *data; + bool dirty; + + int psRegisterIndex; + int vsRegisterIndex; + unsigned int registerCount; +}; + +typedef std::vector UniformArray; + +} + +#endif // LIBGLESV2_UNIFORM_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/angletypes.h b/Source/ThirdParty/ANGLE/src/libGLESv2/angletypes.h new file mode 100644 index 00000000000..b2f0cad2659 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/angletypes.h @@ -0,0 +1,129 @@ +// +// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// angletypes.h : Defines a variety of structures and enum types that are used throughout libGLESv2 + +#ifndef LIBGLESV2_ANGLETYPES_H_ +#define LIBGLESV2_ANGLETYPES_H_ + +namespace gl +{ + +enum TextureType +{ + TEXTURE_2D, + TEXTURE_CUBE, + + TEXTURE_TYPE_COUNT, + TEXTURE_UNKNOWN +}; + +enum SamplerType +{ + SAMPLER_PIXEL, + SAMPLER_VERTEX +}; + +struct Color +{ + float red; + float green; + float blue; + float alpha; +}; + +struct Rectangle +{ + int x; + int y; + int width; + int height; +}; + +struct RasterizerState +{ + bool cullFace; + GLenum cullMode; + GLenum frontFace; + + bool polygonOffsetFill; + GLfloat polygonOffsetFactor; + GLfloat polygonOffsetUnits; + + bool pointDrawMode; + bool multiSample; +}; + +struct BlendState +{ + bool blend; + GLenum sourceBlendRGB; + GLenum destBlendRGB; + GLenum sourceBlendAlpha; + GLenum destBlendAlpha; + GLenum blendEquationRGB; + GLenum blendEquationAlpha; + + bool colorMaskRed; + bool colorMaskGreen; + bool colorMaskBlue; + bool colorMaskAlpha; + + bool sampleAlphaToCoverage; + + bool dither; +}; + +struct DepthStencilState +{ + bool depthTest; + GLenum depthFunc; + bool depthMask; + + bool stencilTest; + GLenum stencilFunc; + GLuint stencilMask; + GLenum stencilFail; + GLenum stencilPassDepthFail; + GLenum stencilPassDepthPass; + GLuint stencilWritemask; + GLenum stencilBackFunc; + GLuint stencilBackMask; + GLenum stencilBackFail; + GLenum stencilBackPassDepthFail; + GLenum stencilBackPassDepthPass; + GLuint stencilBackWritemask; +}; + +struct SamplerState +{ + GLenum minFilter; + GLenum magFilter; + GLenum wrapS; + GLenum wrapT; + float maxAnisotropy; + int lodOffset; +}; + +struct ClearParameters +{ + GLbitfield mask; + + Color colorClearValue; + bool colorMaskRed; + bool colorMaskGreen; + bool colorMaskBlue; + bool colorMaskAlpha; + + float depthClearValue; + + GLint stencilClearValue; + GLuint stencilWriteMask; +}; + +} + +#endif // LIBGLESV2_ANGLETYPES_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/constants.h b/Source/ThirdParty/ANGLE/src/libGLESv2/constants.h new file mode 100644 index 00000000000..9f24d66a7dc --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/constants.h @@ -0,0 +1,34 @@ +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Contants.h: Defines some implementation specific and gl constants + +#ifndef LIBGLESV2_CONSTANTS_H_ +#define LIBGLESV2_CONSTANTS_H_ + +namespace gl +{ + +enum +{ + MAX_VERTEX_ATTRIBS = 16, + MAX_TEXTURE_IMAGE_UNITS = 16, + + // Implementation upper limits, real maximums depend on the hardware + IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 16, + IMPLEMENTATION_MAX_COMBINED_TEXTURE_IMAGE_UNITS = MAX_TEXTURE_IMAGE_UNITS + IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS, + + IMPLEMENTATION_MAX_VARYING_VECTORS = 32, + IMPLEMENTATION_MAX_DRAW_BUFFERS = 8 +}; + +const float ALIASED_LINE_WIDTH_RANGE_MIN = 1.0f; +const float ALIASED_LINE_WIDTH_RANGE_MAX = 1.0f; +const float ALIASED_POINT_SIZE_RANGE_MIN = 1.0f; + +} + +#endif // LIBGLESV2_CONSTANTS_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.cpp new file mode 100644 index 00000000000..1e7cf9d0cfa --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.cpp @@ -0,0 +1,7106 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// libGLESv2.cpp: Implements the exported OpenGL ES 2.0 functions. + +#include "common/version.h" + +#include "libGLESv2/main.h" +#include "libGLESv2/utilities.h" +#include "libGLESv2/Buffer.h" +#include "libGLESv2/Fence.h" +#include "libGLESv2/Framebuffer.h" +#include "libGLESv2/Renderbuffer.h" +#include "libGLESv2/Program.h" +#include "libGLESv2/ProgramBinary.h" +#include "libGLESv2/Texture.h" +#include "libGLESv2/Query.h" +#include "libGLESv2/Context.h" + +bool validImageSize(GLint level, GLsizei width, GLsizei height) +{ + if (level < 0 || width < 0 || height < 0) + { + return false; + } + + if (gl::getContext() && gl::getContext()->supportsNonPower2Texture()) + { + return true; + } + + if (level == 0) + { + return true; + } + + if (gl::isPow2(width) && gl::isPow2(height)) + { + return true; + } + + return false; +} + +// Verify that format/type are one of the combinations from table 3.4. +bool checkTextureFormatType(GLenum format, GLenum type) +{ + // validate by itself (used as secondary key below) + switch (format) + { + case GL_RGBA: + case GL_BGRA_EXT: + case GL_RGB: + case GL_ALPHA: + case GL_LUMINANCE: + case GL_LUMINANCE_ALPHA: + case GL_DEPTH_COMPONENT: + case GL_DEPTH_STENCIL_OES: + break; + default: + return gl::error(GL_INVALID_ENUM, false); + } + + // invalid -> sets INVALID_ENUM + // invalid + combination -> sets INVALID_OPERATION + switch (type) + { + case GL_UNSIGNED_BYTE: + switch (format) + { + case GL_RGBA: + case GL_BGRA_EXT: + case GL_RGB: + case GL_ALPHA: + case GL_LUMINANCE: + case GL_LUMINANCE_ALPHA: + return true; + default: + return gl::error(GL_INVALID_OPERATION, false); + } + + case GL_FLOAT: + case GL_HALF_FLOAT_OES: + switch (format) + { + case GL_RGBA: + case GL_RGB: + case GL_ALPHA: + case GL_LUMINANCE: + case GL_LUMINANCE_ALPHA: + return true; + default: + return gl::error(GL_INVALID_OPERATION, false); + } + + case GL_UNSIGNED_SHORT_4_4_4_4: + case GL_UNSIGNED_SHORT_5_5_5_1: + switch (format) + { + case GL_RGBA: + return true; + default: + return gl::error(GL_INVALID_OPERATION, false); + } + + case GL_UNSIGNED_SHORT_5_6_5: + switch (format) + { + case GL_RGB: + return true; + default: + return gl::error(GL_INVALID_OPERATION, false); + } + + case GL_UNSIGNED_SHORT: + case GL_UNSIGNED_INT: + switch (format) + { + case GL_DEPTH_COMPONENT: + return true; + default: + return gl::error(GL_INVALID_OPERATION, false); + } + + case GL_UNSIGNED_INT_24_8_OES: + switch (format) + { + case GL_DEPTH_STENCIL_OES: + return true; + default: + return gl::error(GL_INVALID_OPERATION, false); + } + + default: + return gl::error(GL_INVALID_ENUM, false); + } +} + +bool validateSubImageParams2D(bool compressed, GLsizei width, GLsizei height, + GLint xoffset, GLint yoffset, GLint level, GLenum format, GLenum type, + gl::Texture2D *texture) +{ + if (!texture) + { + return gl::error(GL_INVALID_OPERATION, false); + } + + if (compressed != texture->isCompressed(level)) + { + return gl::error(GL_INVALID_OPERATION, false); + } + + if (format != GL_NONE) + { + GLenum internalformat = gl::ConvertSizedInternalFormat(format, type); + if (internalformat != texture->getInternalFormat(level)) + { + return gl::error(GL_INVALID_OPERATION, false); + } + } + + if (compressed) + { + if ((width % 4 != 0 && width != texture->getWidth(0)) || + (height % 4 != 0 && height != texture->getHeight(0))) + { + return gl::error(GL_INVALID_OPERATION, false); + } + } + + if (xoffset + width > texture->getWidth(level) || + yoffset + height > texture->getHeight(level)) + { + return gl::error(GL_INVALID_VALUE, false); + } + + return true; +} + +bool validateSubImageParamsCube(bool compressed, GLsizei width, GLsizei height, + GLint xoffset, GLint yoffset, GLenum target, GLint level, GLenum format, GLenum type, + gl::TextureCubeMap *texture) +{ + if (!texture) + { + return gl::error(GL_INVALID_OPERATION, false); + } + + if (compressed != texture->isCompressed(target, level)) + { + return gl::error(GL_INVALID_OPERATION, false); + } + + if (format != GL_NONE) + { + GLenum internalformat = gl::ConvertSizedInternalFormat(format, type); + if (internalformat != texture->getInternalFormat(target, level)) + { + return gl::error(GL_INVALID_OPERATION, false); + } + } + + if (compressed) + { + if ((width % 4 != 0 && width != texture->getWidth(target, 0)) || + (height % 4 != 0 && height != texture->getHeight(target, 0))) + { + return gl::error(GL_INVALID_OPERATION, false); + } + } + + if (xoffset + width > texture->getWidth(target, level) || + yoffset + height > texture->getHeight(target, level)) + { + return gl::error(GL_INVALID_VALUE, false); + } + + return true; +} + +// check for combinations of format and type that are valid for ReadPixels +bool validReadFormatType(GLenum format, GLenum type) +{ + switch (format) + { + case GL_RGBA: + switch (type) + { + case GL_UNSIGNED_BYTE: + break; + default: + return false; + } + break; + case GL_BGRA_EXT: + switch (type) + { + case GL_UNSIGNED_BYTE: + case GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT: + case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT: + break; + default: + return false; + } + break; + default: + return false; + } + return true; +} + +extern "C" +{ + +void __stdcall glActiveTexture(GLenum texture) +{ + EVENT("(GLenum texture = 0x%X)", texture); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (texture < GL_TEXTURE0 || texture > GL_TEXTURE0 + context->getMaximumCombinedTextureImageUnits() - 1) + { + return gl::error(GL_INVALID_ENUM); + } + + context->setActiveSampler(texture - GL_TEXTURE0); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glAttachShader(GLuint program, GLuint shader) +{ + EVENT("(GLuint program = %d, GLuint shader = %d)", program, shader); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Program *programObject = context->getProgram(program); + gl::Shader *shaderObject = context->getShader(shader); + + if (!programObject) + { + if (context->getShader(program)) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_VALUE); + } + } + + if (!shaderObject) + { + if (context->getProgram(shader)) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_VALUE); + } + } + + if (!programObject->attachShader(shaderObject)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glBeginQueryEXT(GLenum target, GLuint id) +{ + EVENT("(GLenum target = 0x%X, GLuint %d)", target, id); + + try + { + switch (target) + { + case GL_ANY_SAMPLES_PASSED_EXT: + case GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + if (id == 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->beginQuery(target, id); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glBindAttribLocation(GLuint program, GLuint index, const GLchar* name) +{ + EVENT("(GLuint program = %d, GLuint index = %d, const GLchar* name = 0x%0.8p)", program, index, name); + + try + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Program *programObject = context->getProgram(program); + + if (!programObject) + { + if (context->getShader(program)) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_VALUE); + } + } + + if (strncmp(name, "gl_", 3) == 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + programObject->bindAttributeLocation(index, name); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glBindBuffer(GLenum target, GLuint buffer) +{ + EVENT("(GLenum target = 0x%X, GLuint buffer = %d)", target, buffer); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + switch (target) + { + case GL_ARRAY_BUFFER: + context->bindArrayBuffer(buffer); + return; + case GL_ELEMENT_ARRAY_BUFFER: + context->bindElementArrayBuffer(buffer); + return; + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + EVENT("(GLenum target = 0x%X, GLuint framebuffer = %d)", target, framebuffer); + + try + { + if (target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER_ANGLE && target != GL_READ_FRAMEBUFFER_ANGLE) + { + return gl::error(GL_INVALID_ENUM); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (target == GL_READ_FRAMEBUFFER_ANGLE || target == GL_FRAMEBUFFER) + { + context->bindReadFramebuffer(framebuffer); + } + + if (target == GL_DRAW_FRAMEBUFFER_ANGLE || target == GL_FRAMEBUFFER) + { + context->bindDrawFramebuffer(framebuffer); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + EVENT("(GLenum target = 0x%X, GLuint renderbuffer = %d)", target, renderbuffer); + + try + { + if (target != GL_RENDERBUFFER) + { + return gl::error(GL_INVALID_ENUM); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->bindRenderbuffer(renderbuffer); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glBindTexture(GLenum target, GLuint texture) +{ + EVENT("(GLenum target = 0x%X, GLuint texture = %d)", target, texture); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Texture *textureObject = context->getTexture(texture); + + if (textureObject && textureObject->getTarget() != target && texture != 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + switch (target) + { + case GL_TEXTURE_2D: + context->bindTexture2D(texture); + return; + case GL_TEXTURE_CUBE_MAP: + context->bindTextureCubeMap(texture); + return; + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) +{ + EVENT("(GLclampf red = %f, GLclampf green = %f, GLclampf blue = %f, GLclampf alpha = %f)", + red, green, blue, alpha); + + try + { + gl::Context* context = gl::getNonLostContext(); + + if (context) + { + context->setBlendColor(gl::clamp01(red), gl::clamp01(green), gl::clamp01(blue), gl::clamp01(alpha)); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glBlendEquation(GLenum mode) +{ + glBlendEquationSeparate(mode, mode); +} + +void __stdcall glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + EVENT("(GLenum modeRGB = 0x%X, GLenum modeAlpha = 0x%X)", modeRGB, modeAlpha); + + try + { + switch (modeRGB) + { + case GL_FUNC_ADD: + case GL_FUNC_SUBTRACT: + case GL_FUNC_REVERSE_SUBTRACT: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + switch (modeAlpha) + { + case GL_FUNC_ADD: + case GL_FUNC_SUBTRACT: + case GL_FUNC_REVERSE_SUBTRACT: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setBlendEquation(modeRGB, modeAlpha); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + glBlendFuncSeparate(sfactor, dfactor, sfactor, dfactor); +} + +void __stdcall glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + EVENT("(GLenum srcRGB = 0x%X, GLenum dstRGB = 0x%X, GLenum srcAlpha = 0x%X, GLenum dstAlpha = 0x%X)", + srcRGB, dstRGB, srcAlpha, dstAlpha); + + try + { + switch (srcRGB) + { + case GL_ZERO: + case GL_ONE: + case GL_SRC_COLOR: + case GL_ONE_MINUS_SRC_COLOR: + case GL_DST_COLOR: + case GL_ONE_MINUS_DST_COLOR: + case GL_SRC_ALPHA: + case GL_ONE_MINUS_SRC_ALPHA: + case GL_DST_ALPHA: + case GL_ONE_MINUS_DST_ALPHA: + case GL_CONSTANT_COLOR: + case GL_ONE_MINUS_CONSTANT_COLOR: + case GL_CONSTANT_ALPHA: + case GL_ONE_MINUS_CONSTANT_ALPHA: + case GL_SRC_ALPHA_SATURATE: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + switch (dstRGB) + { + case GL_ZERO: + case GL_ONE: + case GL_SRC_COLOR: + case GL_ONE_MINUS_SRC_COLOR: + case GL_DST_COLOR: + case GL_ONE_MINUS_DST_COLOR: + case GL_SRC_ALPHA: + case GL_ONE_MINUS_SRC_ALPHA: + case GL_DST_ALPHA: + case GL_ONE_MINUS_DST_ALPHA: + case GL_CONSTANT_COLOR: + case GL_ONE_MINUS_CONSTANT_COLOR: + case GL_CONSTANT_ALPHA: + case GL_ONE_MINUS_CONSTANT_ALPHA: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + switch (srcAlpha) + { + case GL_ZERO: + case GL_ONE: + case GL_SRC_COLOR: + case GL_ONE_MINUS_SRC_COLOR: + case GL_DST_COLOR: + case GL_ONE_MINUS_DST_COLOR: + case GL_SRC_ALPHA: + case GL_ONE_MINUS_SRC_ALPHA: + case GL_DST_ALPHA: + case GL_ONE_MINUS_DST_ALPHA: + case GL_CONSTANT_COLOR: + case GL_ONE_MINUS_CONSTANT_COLOR: + case GL_CONSTANT_ALPHA: + case GL_ONE_MINUS_CONSTANT_ALPHA: + case GL_SRC_ALPHA_SATURATE: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + switch (dstAlpha) + { + case GL_ZERO: + case GL_ONE: + case GL_SRC_COLOR: + case GL_ONE_MINUS_SRC_COLOR: + case GL_DST_COLOR: + case GL_ONE_MINUS_DST_COLOR: + case GL_SRC_ALPHA: + case GL_ONE_MINUS_SRC_ALPHA: + case GL_DST_ALPHA: + case GL_ONE_MINUS_DST_ALPHA: + case GL_CONSTANT_COLOR: + case GL_ONE_MINUS_CONSTANT_COLOR: + case GL_CONSTANT_ALPHA: + case GL_ONE_MINUS_CONSTANT_ALPHA: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + bool constantColorUsed = (srcRGB == GL_CONSTANT_COLOR || srcRGB == GL_ONE_MINUS_CONSTANT_COLOR || + dstRGB == GL_CONSTANT_COLOR || dstRGB == GL_ONE_MINUS_CONSTANT_COLOR); + + bool constantAlphaUsed = (srcRGB == GL_CONSTANT_ALPHA || srcRGB == GL_ONE_MINUS_CONSTANT_ALPHA || + dstRGB == GL_CONSTANT_ALPHA || dstRGB == GL_ONE_MINUS_CONSTANT_ALPHA); + + if (constantColorUsed && constantAlphaUsed) + { + ERR("Simultaneous use of GL_CONSTANT_ALPHA/GL_ONE_MINUS_CONSTANT_ALPHA and GL_CONSTANT_COLOR/GL_ONE_MINUS_CONSTANT_COLOR invalid under WebGL"); + return gl::error(GL_INVALID_OPERATION); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setBlendFactors(srcRGB, dstRGB, srcAlpha, dstAlpha); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage) +{ + EVENT("(GLenum target = 0x%X, GLsizeiptr size = %d, const GLvoid* data = 0x%0.8p, GLenum usage = %d)", + target, size, data, usage); + + try + { + if (size < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + switch (usage) + { + case GL_STREAM_DRAW: + case GL_STATIC_DRAW: + case GL_DYNAMIC_DRAW: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Buffer *buffer; + + switch (target) + { + case GL_ARRAY_BUFFER: + buffer = context->getArrayBuffer(); + break; + case GL_ELEMENT_ARRAY_BUFFER: + buffer = context->getElementArrayBuffer(); + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + if (!buffer) + { + return gl::error(GL_INVALID_OPERATION); + } + + buffer->bufferData(data, size, usage); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data) +{ + EVENT("(GLenum target = 0x%X, GLintptr offset = %d, GLsizeiptr size = %d, const GLvoid* data = 0x%0.8p)", + target, offset, size, data); + + try + { + if (size < 0 || offset < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + if (data == NULL) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Buffer *buffer; + + switch (target) + { + case GL_ARRAY_BUFFER: + buffer = context->getArrayBuffer(); + break; + case GL_ELEMENT_ARRAY_BUFFER: + buffer = context->getElementArrayBuffer(); + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + if (!buffer) + { + return gl::error(GL_INVALID_OPERATION); + } + + if ((size_t)size + offset > buffer->size()) + { + return gl::error(GL_INVALID_VALUE); + } + + buffer->bufferSubData(data, size, offset); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +GLenum __stdcall glCheckFramebufferStatus(GLenum target) +{ + EVENT("(GLenum target = 0x%X)", target); + + try + { + if (target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER_ANGLE && target != GL_READ_FRAMEBUFFER_ANGLE) + { + return gl::error(GL_INVALID_ENUM, 0); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Framebuffer *framebuffer = NULL; + if (target == GL_READ_FRAMEBUFFER_ANGLE) + { + framebuffer = context->getReadFramebuffer(); + } + else + { + framebuffer = context->getDrawFramebuffer(); + } + + return framebuffer->completeness(); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, 0); + } + + return 0; +} + +void __stdcall glClear(GLbitfield mask) +{ + EVENT("(GLbitfield mask = %X)", mask); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->clear(mask); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) +{ + EVENT("(GLclampf red = %f, GLclampf green = %f, GLclampf blue = %f, GLclampf alpha = %f)", + red, green, blue, alpha); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setClearColor(red, green, blue, alpha); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glClearDepthf(GLclampf depth) +{ + EVENT("(GLclampf depth = %f)", depth); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setClearDepth(depth); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glClearStencil(GLint s) +{ + EVENT("(GLint s = %d)", s); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setClearStencil(s); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + EVENT("(GLboolean red = %d, GLboolean green = %d, GLboolean blue = %d, GLboolean alpha = %d)", + red, green, blue, alpha); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setColorMask(red == GL_TRUE, green == GL_TRUE, blue == GL_TRUE, alpha == GL_TRUE); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glCompileShader(GLuint shader) +{ + EVENT("(GLuint shader = %d)", shader); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Shader *shaderObject = context->getShader(shader); + + if (!shaderObject) + { + if (context->getProgram(shader)) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_VALUE); + } + } + + shaderObject->compile(); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, + GLint border, GLsizei imageSize, const GLvoid* data) +{ + EVENT("(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, GLsizei width = %d, " + "GLsizei height = %d, GLint border = %d, GLsizei imageSize = %d, const GLvoid* data = 0x%0.8p)", + target, level, internalformat, width, height, border, imageSize, data); + + try + { + if (!validImageSize(level, width, height) || border != 0 || imageSize < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + switch (internalformat) + { + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: + case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + if (border != 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (width != 1 && width != 2 && width % 4 != 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (height != 1 && height != 2 && height % 4 != 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (level > context->getMaximumTextureLevel()) + { + return gl::error(GL_INVALID_VALUE); + } + + switch (target) + { + case GL_TEXTURE_2D: + if (width > (context->getMaximumTextureDimension() >> level) || + height > (context->getMaximumTextureDimension() >> level)) + { + return gl::error(GL_INVALID_VALUE); + } + break; + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + if (width != height) + { + return gl::error(GL_INVALID_VALUE); + } + + if (width > (context->getMaximumCubeTextureDimension() >> level) || + height > (context->getMaximumCubeTextureDimension() >> level)) + { + return gl::error(GL_INVALID_VALUE); + } + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + switch (internalformat) { + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + if (!context->supportsDXT1Textures()) + { + return gl::error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed + } + break; + case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: + if (!context->supportsDXT3Textures()) + { + return gl::error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed + } + break; + case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: + if (!context->supportsDXT5Textures()) + { + return gl::error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed + } + break; + default: UNREACHABLE(); + } + + if (imageSize != gl::ComputeCompressedSize(width, height, internalformat)) + { + return gl::error(GL_INVALID_VALUE); + } + + if (target == GL_TEXTURE_2D) + { + gl::Texture2D *texture = context->getTexture2D(); + + if (!texture) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (texture->isImmutable()) + { + return gl::error(GL_INVALID_OPERATION); + } + + texture->setCompressedImage(level, internalformat, width, height, imageSize, data); + } + else + { + gl::TextureCubeMap *texture = context->getTextureCubeMap(); + + if (!texture) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (texture->isImmutable()) + { + return gl::error(GL_INVALID_OPERATION); + } + + switch (target) + { + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + texture->setCompressedImage(target, level, internalformat, width, height, imageSize, data); + break; + default: UNREACHABLE(); + } + } + } + + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, + GLenum format, GLsizei imageSize, const GLvoid* data) +{ + EVENT("(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, " + "GLsizei width = %d, GLsizei height = %d, GLenum format = 0x%X, " + "GLsizei imageSize = %d, const GLvoid* data = 0x%0.8p)", + target, level, xoffset, yoffset, width, height, format, imageSize, data); + + try + { + if (!gl::IsInternalTextureTarget(target)) + { + return gl::error(GL_INVALID_ENUM); + } + + if (xoffset < 0 || yoffset < 0 || !validImageSize(level, width, height) || imageSize < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + switch (format) + { + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: + case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + if (width == 0 || height == 0 || data == NULL) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (level > context->getMaximumTextureLevel()) + { + return gl::error(GL_INVALID_VALUE); + } + + switch (format) { + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + if (!context->supportsDXT1Textures()) + { + return gl::error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed + } + break; + case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: + if (!context->supportsDXT3Textures()) + { + return gl::error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed + } + break; + case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: + if (!context->supportsDXT5Textures()) + { + return gl::error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed + } + break; + default: UNREACHABLE(); + } + + if (imageSize != gl::ComputeCompressedSize(width, height, format)) + { + return gl::error(GL_INVALID_VALUE); + } + + if (xoffset % 4 != 0 || yoffset % 4 != 0) + { + return gl::error(GL_INVALID_OPERATION); // we wait to check the offsets until this point, because the multiple-of-four restriction + // does not exist unless DXT textures are supported. + } + + if (target == GL_TEXTURE_2D) + { + gl::Texture2D *texture = context->getTexture2D(); + if (validateSubImageParams2D(true, width, height, xoffset, yoffset, level, format, GL_NONE, texture)) + { + texture->subImageCompressed(level, xoffset, yoffset, width, height, format, imageSize, data); + } + } + else if (gl::IsCubemapTextureTarget(target)) + { + gl::TextureCubeMap *texture = context->getTextureCubeMap(); + if (validateSubImageParamsCube(true, width, height, xoffset, yoffset, target, level, format, GL_NONE, texture)) + { + texture->subImageCompressed(target, level, xoffset, yoffset, width, height, format, imageSize, data); + } + } + else + { + UNREACHABLE(); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + EVENT("(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, " + "GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d, GLint border = %d)", + target, level, internalformat, x, y, width, height, border); + + try + { + if (!validImageSize(level, width, height)) + { + return gl::error(GL_INVALID_VALUE); + } + + if (border != 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (level > context->getMaximumTextureLevel()) + { + return gl::error(GL_INVALID_VALUE); + } + + switch (target) + { + case GL_TEXTURE_2D: + if (width > (context->getMaximumTextureDimension() >> level) || + height > (context->getMaximumTextureDimension() >> level)) + { + return gl::error(GL_INVALID_VALUE); + } + break; + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + if (width != height) + { + return gl::error(GL_INVALID_VALUE); + } + + if (width > (context->getMaximumCubeTextureDimension() >> level) || + height > (context->getMaximumCubeTextureDimension() >> level)) + { + return gl::error(GL_INVALID_VALUE); + } + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + gl::Framebuffer *framebuffer = context->getReadFramebuffer(); + + if (framebuffer->completeness() != GL_FRAMEBUFFER_COMPLETE) + { + return gl::error(GL_INVALID_FRAMEBUFFER_OPERATION); + } + + if (context->getReadFramebufferHandle() != 0 && framebuffer->getSamples() != 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + gl::Renderbuffer *source = framebuffer->getReadColorbuffer(); + GLenum colorbufferFormat = source->getInternalFormat(); + + // [OpenGL ES 2.0.24] table 3.9 + switch (internalformat) + { + case GL_ALPHA: + if (colorbufferFormat != GL_ALPHA8_EXT && + colorbufferFormat != GL_RGBA4 && + colorbufferFormat != GL_RGB5_A1 && + colorbufferFormat != GL_BGRA8_EXT && + colorbufferFormat != GL_RGBA8_OES) + { + return gl::error(GL_INVALID_OPERATION); + } + break; + case GL_LUMINANCE: + case GL_RGB: + if (colorbufferFormat != GL_RGB565 && + colorbufferFormat != GL_RGB8_OES && + colorbufferFormat != GL_RGBA4 && + colorbufferFormat != GL_RGB5_A1 && + colorbufferFormat != GL_BGRA8_EXT && + colorbufferFormat != GL_RGBA8_OES) + { + return gl::error(GL_INVALID_OPERATION); + } + break; + case GL_LUMINANCE_ALPHA: + case GL_RGBA: + if (colorbufferFormat != GL_RGBA4 && + colorbufferFormat != GL_RGB5_A1 && + colorbufferFormat != GL_BGRA8_EXT && + colorbufferFormat != GL_RGBA8_OES) + { + return gl::error(GL_INVALID_OPERATION); + } + break; + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + if (context->supportsDXT1Textures()) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: + if (context->supportsDXT3Textures()) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: + if (context->supportsDXT5Textures()) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_DEPTH_COMPONENT: + case GL_DEPTH_COMPONENT16: + case GL_DEPTH_COMPONENT32_OES: + case GL_DEPTH_STENCIL_OES: + case GL_DEPTH24_STENCIL8_OES: + if (context->supportsDepthTextures()) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_ENUM); + } + default: + return gl::error(GL_INVALID_ENUM); + } + + if (target == GL_TEXTURE_2D) + { + gl::Texture2D *texture = context->getTexture2D(); + + if (!texture) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (texture->isImmutable()) + { + return gl::error(GL_INVALID_OPERATION); + } + + texture->copyImage(level, internalformat, x, y, width, height, framebuffer); + } + else if (gl::IsCubemapTextureTarget(target)) + { + gl::TextureCubeMap *texture = context->getTextureCubeMap(); + + if (!texture) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (texture->isImmutable()) + { + return gl::error(GL_INVALID_OPERATION); + } + + texture->copyImage(target, level, internalformat, x, y, width, height, framebuffer); + } + else UNREACHABLE(); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + EVENT("(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, " + "GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d)", + target, level, xoffset, yoffset, x, y, width, height); + + try + { + if (!gl::IsInternalTextureTarget(target)) + { + return gl::error(GL_INVALID_ENUM); + } + + if (level < 0 || xoffset < 0 || yoffset < 0 || width < 0 || height < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + if (std::numeric_limits::max() - xoffset < width || std::numeric_limits::max() - yoffset < height) + { + return gl::error(GL_INVALID_VALUE); + } + + if (width == 0 || height == 0) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (level > context->getMaximumTextureLevel()) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Framebuffer *framebuffer = context->getReadFramebuffer(); + + if (framebuffer->completeness() != GL_FRAMEBUFFER_COMPLETE) + { + return gl::error(GL_INVALID_FRAMEBUFFER_OPERATION); + } + + if (context->getReadFramebufferHandle() != 0 && framebuffer->getSamples() != 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + gl::Renderbuffer *source = framebuffer->getReadColorbuffer(); + GLenum colorbufferFormat = source->getInternalFormat(); + gl::Texture *texture = NULL; + GLenum textureFormat = GL_RGBA; + + if (target == GL_TEXTURE_2D) + { + gl::Texture2D *tex2d = context->getTexture2D(); + + if (!validateSubImageParams2D(false, width, height, xoffset, yoffset, level, GL_NONE, GL_NONE, tex2d)) + { + return; // error already registered by validateSubImageParams + } + textureFormat = gl::ExtractFormat(tex2d->getInternalFormat(level)); + texture = tex2d; + } + else if (gl::IsCubemapTextureTarget(target)) + { + gl::TextureCubeMap *texcube = context->getTextureCubeMap(); + + if (!validateSubImageParamsCube(false, width, height, xoffset, yoffset, target, level, GL_NONE, GL_NONE, texcube)) + { + return; // error already registered by validateSubImageParams + } + textureFormat = gl::ExtractFormat(texcube->getInternalFormat(target, level)); + texture = texcube; + } + else UNREACHABLE(); + + // [OpenGL ES 2.0.24] table 3.9 + switch (textureFormat) + { + case GL_ALPHA: + if (colorbufferFormat != GL_ALPHA8_EXT && + colorbufferFormat != GL_RGBA4 && + colorbufferFormat != GL_RGB5_A1 && + colorbufferFormat != GL_RGBA8_OES) + { + return gl::error(GL_INVALID_OPERATION); + } + break; + case GL_LUMINANCE: + case GL_RGB: + if (colorbufferFormat != GL_RGB565 && + colorbufferFormat != GL_RGB8_OES && + colorbufferFormat != GL_RGBA4 && + colorbufferFormat != GL_RGB5_A1 && + colorbufferFormat != GL_RGBA8_OES) + { + return gl::error(GL_INVALID_OPERATION); + } + break; + case GL_LUMINANCE_ALPHA: + case GL_RGBA: + if (colorbufferFormat != GL_RGBA4 && + colorbufferFormat != GL_RGB5_A1 && + colorbufferFormat != GL_RGBA8_OES) + { + return gl::error(GL_INVALID_OPERATION); + } + break; + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: + case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: + return gl::error(GL_INVALID_OPERATION); + case GL_DEPTH_COMPONENT: + case GL_DEPTH_STENCIL_OES: + return gl::error(GL_INVALID_OPERATION); + default: + return gl::error(GL_INVALID_OPERATION); + } + + texture->copySubImage(target, level, xoffset, yoffset, x, y, width, height, framebuffer); + } + } + + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +GLuint __stdcall glCreateProgram(void) +{ + EVENT("()"); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + return context->createProgram(); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, 0); + } + + return 0; +} + +GLuint __stdcall glCreateShader(GLenum type) +{ + EVENT("(GLenum type = 0x%X)", type); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + switch (type) + { + case GL_FRAGMENT_SHADER: + case GL_VERTEX_SHADER: + return context->createShader(type); + default: + return gl::error(GL_INVALID_ENUM, 0); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, 0); + } + + return 0; +} + +void __stdcall glCullFace(GLenum mode) +{ + EVENT("(GLenum mode = 0x%X)", mode); + + try + { + switch (mode) + { + case GL_FRONT: + case GL_BACK: + case GL_FRONT_AND_BACK: + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setCullMode(mode); + } + } + break; + default: + return gl::error(GL_INVALID_ENUM); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDeleteBuffers(GLsizei n, const GLuint* buffers) +{ + EVENT("(GLsizei n = %d, const GLuint* buffers = 0x%0.8p)", n, buffers); + + try + { + if (n < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + for (int i = 0; i < n; i++) + { + context->deleteBuffer(buffers[i]); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDeleteFencesNV(GLsizei n, const GLuint* fences) +{ + EVENT("(GLsizei n = %d, const GLuint* fences = 0x%0.8p)", n, fences); + + try + { + if (n < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + for (int i = 0; i < n; i++) + { + context->deleteFence(fences[i]); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers) +{ + EVENT("(GLsizei n = %d, const GLuint* framebuffers = 0x%0.8p)", n, framebuffers); + + try + { + if (n < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + for (int i = 0; i < n; i++) + { + if (framebuffers[i] != 0) + { + context->deleteFramebuffer(framebuffers[i]); + } + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDeleteProgram(GLuint program) +{ + EVENT("(GLuint program = %d)", program); + + try + { + if (program == 0) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (!context->getProgram(program)) + { + if(context->getShader(program)) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_VALUE); + } + } + + context->deleteProgram(program); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDeleteQueriesEXT(GLsizei n, const GLuint *ids) +{ + EVENT("(GLsizei n = %d, const GLuint *ids = 0x%0.8p)", n, ids); + + try + { + if (n < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + for (int i = 0; i < n; i++) + { + context->deleteQuery(ids[i]); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers) +{ + EVENT("(GLsizei n = %d, const GLuint* renderbuffers = 0x%0.8p)", n, renderbuffers); + + try + { + if (n < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + for (int i = 0; i < n; i++) + { + context->deleteRenderbuffer(renderbuffers[i]); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDeleteShader(GLuint shader) +{ + EVENT("(GLuint shader = %d)", shader); + + try + { + if (shader == 0) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (!context->getShader(shader)) + { + if(context->getProgram(shader)) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_VALUE); + } + } + + context->deleteShader(shader); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDeleteTextures(GLsizei n, const GLuint* textures) +{ + EVENT("(GLsizei n = %d, const GLuint* textures = 0x%0.8p)", n, textures); + + try + { + if (n < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + for (int i = 0; i < n; i++) + { + if (textures[i] != 0) + { + context->deleteTexture(textures[i]); + } + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDepthFunc(GLenum func) +{ + EVENT("(GLenum func = 0x%X)", func); + + try + { + switch (func) + { + case GL_NEVER: + case GL_ALWAYS: + case GL_LESS: + case GL_LEQUAL: + case GL_EQUAL: + case GL_GREATER: + case GL_GEQUAL: + case GL_NOTEQUAL: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setDepthFunc(func); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDepthMask(GLboolean flag) +{ + EVENT("(GLboolean flag = %d)", flag); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setDepthMask(flag != GL_FALSE); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDepthRangef(GLclampf zNear, GLclampf zFar) +{ + EVENT("(GLclampf zNear = %f, GLclampf zFar = %f)", zNear, zFar); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setDepthRange(zNear, zFar); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDetachShader(GLuint program, GLuint shader) +{ + EVENT("(GLuint program = %d, GLuint shader = %d)", program, shader); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + + gl::Program *programObject = context->getProgram(program); + gl::Shader *shaderObject = context->getShader(shader); + + if (!programObject) + { + gl::Shader *shaderByProgramHandle; + shaderByProgramHandle = context->getShader(program); + if (!shaderByProgramHandle) + { + return gl::error(GL_INVALID_VALUE); + } + else + { + return gl::error(GL_INVALID_OPERATION); + } + } + + if (!shaderObject) + { + gl::Program *programByShaderHandle = context->getProgram(shader); + if (!programByShaderHandle) + { + return gl::error(GL_INVALID_VALUE); + } + else + { + return gl::error(GL_INVALID_OPERATION); + } + } + + if (!programObject->detachShader(shaderObject)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDisable(GLenum cap) +{ + EVENT("(GLenum cap = 0x%X)", cap); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + switch (cap) + { + case GL_CULL_FACE: context->setCullFace(false); break; + case GL_POLYGON_OFFSET_FILL: context->setPolygonOffsetFill(false); break; + case GL_SAMPLE_ALPHA_TO_COVERAGE: context->setSampleAlphaToCoverage(false); break; + case GL_SAMPLE_COVERAGE: context->setSampleCoverage(false); break; + case GL_SCISSOR_TEST: context->setScissorTest(false); break; + case GL_STENCIL_TEST: context->setStencilTest(false); break; + case GL_DEPTH_TEST: context->setDepthTest(false); break; + case GL_BLEND: context->setBlend(false); break; + case GL_DITHER: context->setDither(false); break; + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDisableVertexAttribArray(GLuint index) +{ + EVENT("(GLuint index = %d)", index); + + try + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setEnableVertexAttribArray(index, false); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + EVENT("(GLenum mode = 0x%X, GLint first = %d, GLsizei count = %d)", mode, first, count); + + try + { + if (count < 0 || first < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->drawArrays(mode, first, count, 0); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei primcount) +{ + EVENT("(GLenum mode = 0x%X, GLint first = %d, GLsizei count = %d, GLsizei primcount = %d)", mode, first, count, primcount); + + try + { + if (count < 0 || first < 0 || primcount < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + if (primcount > 0) + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->drawArrays(mode, first, count, primcount); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices) +{ + EVENT("(GLenum mode = 0x%X, GLsizei count = %d, GLenum type = 0x%X, const GLvoid* indices = 0x%0.8p)", + mode, count, type, indices); + + try + { + if (count < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + switch (type) + { + case GL_UNSIGNED_BYTE: + case GL_UNSIGNED_SHORT: + break; + case GL_UNSIGNED_INT: + if (!context->supports32bitIndices()) + { + return gl::error(GL_INVALID_ENUM); + } + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + context->drawElements(mode, count, type, indices, 0); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount) +{ + EVENT("(GLenum mode = 0x%X, GLsizei count = %d, GLenum type = 0x%X, const GLvoid* indices = 0x%0.8p, GLsizei primcount = %d)", + mode, count, type, indices, primcount); + + try + { + if (count < 0 || primcount < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + if (primcount > 0) + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + switch (type) + { + case GL_UNSIGNED_BYTE: + case GL_UNSIGNED_SHORT: + break; + case GL_UNSIGNED_INT: + if (!context->supports32bitIndices()) + { + return gl::error(GL_INVALID_ENUM); + } + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + context->drawElements(mode, count, type, indices, primcount); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glEnable(GLenum cap) +{ + EVENT("(GLenum cap = 0x%X)", cap); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + switch (cap) + { + case GL_CULL_FACE: context->setCullFace(true); break; + case GL_POLYGON_OFFSET_FILL: context->setPolygonOffsetFill(true); break; + case GL_SAMPLE_ALPHA_TO_COVERAGE: context->setSampleAlphaToCoverage(true); break; + case GL_SAMPLE_COVERAGE: context->setSampleCoverage(true); break; + case GL_SCISSOR_TEST: context->setScissorTest(true); break; + case GL_STENCIL_TEST: context->setStencilTest(true); break; + case GL_DEPTH_TEST: context->setDepthTest(true); break; + case GL_BLEND: context->setBlend(true); break; + case GL_DITHER: context->setDither(true); break; + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glEnableVertexAttribArray(GLuint index) +{ + EVENT("(GLuint index = %d)", index); + + try + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setEnableVertexAttribArray(index, true); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glEndQueryEXT(GLenum target) +{ + EVENT("GLenum target = 0x%X)", target); + + try + { + switch (target) + { + case GL_ANY_SAMPLES_PASSED_EXT: + case GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->endQuery(target); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glFinishFenceNV(GLuint fence) +{ + EVENT("(GLuint fence = %d)", fence); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Fence* fenceObject = context->getFence(fence); + + if (fenceObject == NULL) + { + return gl::error(GL_INVALID_OPERATION); + } + + fenceObject->finishFence(); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glFinish(void) +{ + EVENT("()"); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->sync(true); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glFlush(void) +{ + EVENT("()"); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->sync(false); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + EVENT("(GLenum target = 0x%X, GLenum attachment = 0x%X, GLenum renderbuffertarget = 0x%X, " + "GLuint renderbuffer = %d)", target, attachment, renderbuffertarget, renderbuffer); + + try + { + if ((target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER_ANGLE && target != GL_READ_FRAMEBUFFER_ANGLE) + || (renderbuffertarget != GL_RENDERBUFFER && renderbuffer != 0)) + { + return gl::error(GL_INVALID_ENUM); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Framebuffer *framebuffer = NULL; + GLuint framebufferHandle = 0; + if (target == GL_READ_FRAMEBUFFER_ANGLE) + { + framebuffer = context->getReadFramebuffer(); + framebufferHandle = context->getReadFramebufferHandle(); + } + else + { + framebuffer = context->getDrawFramebuffer(); + framebufferHandle = context->getDrawFramebufferHandle(); + } + + if (!framebuffer || (framebufferHandle == 0 && renderbuffer != 0)) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (attachment >= GL_COLOR_ATTACHMENT0_EXT && attachment <= GL_COLOR_ATTACHMENT15_EXT) + { + const unsigned int colorAttachment = (attachment - GL_COLOR_ATTACHMENT0_EXT); + + if (colorAttachment >= context->getMaximumRenderTargets()) + { + return gl::error(GL_INVALID_VALUE); + } + + framebuffer->setColorbuffer(colorAttachment, GL_RENDERBUFFER, renderbuffer); + } + else + { + switch (attachment) + { + case GL_DEPTH_ATTACHMENT: + framebuffer->setDepthbuffer(GL_RENDERBUFFER, renderbuffer); + break; + case GL_STENCIL_ATTACHMENT: + framebuffer->setStencilbuffer(GL_RENDERBUFFER, renderbuffer); + break; + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + EVENT("(GLenum target = 0x%X, GLenum attachment = 0x%X, GLenum textarget = 0x%X, " + "GLuint texture = %d, GLint level = %d)", target, attachment, textarget, texture, level); + + try + { + if (target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER_ANGLE && target != GL_READ_FRAMEBUFFER_ANGLE) + { + return gl::error(GL_INVALID_ENUM); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (attachment >= GL_COLOR_ATTACHMENT0_EXT && attachment <= GL_COLOR_ATTACHMENT15_EXT) + { + const unsigned int colorAttachment = (attachment - GL_COLOR_ATTACHMENT0_EXT); + + if (colorAttachment >= context->getMaximumRenderTargets()) + { + return gl::error(GL_INVALID_VALUE); + } + } + else + { + switch (attachment) + { + case GL_DEPTH_ATTACHMENT: + case GL_STENCIL_ATTACHMENT: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + } + + if (texture == 0) + { + textarget = GL_NONE; + } + else + { + gl::Texture *tex = context->getTexture(texture); + + if (tex == NULL) + { + return gl::error(GL_INVALID_OPERATION); + } + + switch (textarget) + { + case GL_TEXTURE_2D: + { + if (tex->getTarget() != GL_TEXTURE_2D) + { + return gl::error(GL_INVALID_OPERATION); + } + gl::Texture2D *tex2d = static_cast(tex); + if (tex2d->isCompressed(0)) + { + return gl::error(GL_INVALID_OPERATION); + } + break; + } + + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + { + if (tex->getTarget() != GL_TEXTURE_CUBE_MAP) + { + return gl::error(GL_INVALID_OPERATION); + } + gl::TextureCubeMap *texcube = static_cast(tex); + if (texcube->isCompressed(textarget, level)) + { + return gl::error(GL_INVALID_OPERATION); + } + break; + } + + default: + return gl::error(GL_INVALID_ENUM); + } + + if (level != 0) + { + return gl::error(GL_INVALID_VALUE); + } + } + + gl::Framebuffer *framebuffer = NULL; + GLuint framebufferHandle = 0; + if (target == GL_READ_FRAMEBUFFER_ANGLE) + { + framebuffer = context->getReadFramebuffer(); + framebufferHandle = context->getReadFramebufferHandle(); + } + else + { + framebuffer = context->getDrawFramebuffer(); + framebufferHandle = context->getDrawFramebufferHandle(); + } + + if (framebufferHandle == 0 || !framebuffer) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (attachment >= GL_COLOR_ATTACHMENT0_EXT && attachment <= GL_COLOR_ATTACHMENT15_EXT) + { + const unsigned int colorAttachment = (attachment - GL_COLOR_ATTACHMENT0_EXT); + + if (colorAttachment >= context->getMaximumRenderTargets()) + { + return gl::error(GL_INVALID_VALUE); + } + + framebuffer->setColorbuffer(colorAttachment, textarget, texture); + } + else + { + switch (attachment) + { + case GL_DEPTH_ATTACHMENT: framebuffer->setDepthbuffer(textarget, texture); break; + case GL_STENCIL_ATTACHMENT: framebuffer->setStencilbuffer(textarget, texture); break; + } + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glFrontFace(GLenum mode) +{ + EVENT("(GLenum mode = 0x%X)", mode); + + try + { + switch (mode) + { + case GL_CW: + case GL_CCW: + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setFrontFace(mode); + } + } + break; + default: + return gl::error(GL_INVALID_ENUM); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGenBuffers(GLsizei n, GLuint* buffers) +{ + EVENT("(GLsizei n = %d, GLuint* buffers = 0x%0.8p)", n, buffers); + + try + { + if (n < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + for (int i = 0; i < n; i++) + { + buffers[i] = context->createBuffer(); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGenerateMipmap(GLenum target) +{ + EVENT("(GLenum target = 0x%X)", target); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + switch (target) + { + case GL_TEXTURE_2D: + { + gl::Texture2D *tex2d = context->getTexture2D(); + + if (tex2d->isCompressed(0)) + { + return gl::error(GL_INVALID_OPERATION); + } + if (tex2d->isDepth(0)) + { + return gl::error(GL_INVALID_OPERATION); + } + + tex2d->generateMipmaps(); + break; + } + + case GL_TEXTURE_CUBE_MAP: + { + gl::TextureCubeMap *texcube = context->getTextureCubeMap(); + + if (texcube->isCompressed(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0)) + { + return gl::error(GL_INVALID_OPERATION); + } + + texcube->generateMipmaps(); + break; + } + + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGenFencesNV(GLsizei n, GLuint* fences) +{ + EVENT("(GLsizei n = %d, GLuint* fences = 0x%0.8p)", n, fences); + + try + { + if (n < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + for (int i = 0; i < n; i++) + { + fences[i] = context->createFence(); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGenFramebuffers(GLsizei n, GLuint* framebuffers) +{ + EVENT("(GLsizei n = %d, GLuint* framebuffers = 0x%0.8p)", n, framebuffers); + + try + { + if (n < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + for (int i = 0; i < n; i++) + { + framebuffers[i] = context->createFramebuffer(); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGenQueriesEXT(GLsizei n, GLuint* ids) +{ + EVENT("(GLsizei n = %d, GLuint* ids = 0x%0.8p)", n, ids); + + try + { + if (n < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + for (int i = 0; i < n; i++) + { + ids[i] = context->createQuery(); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGenRenderbuffers(GLsizei n, GLuint* renderbuffers) +{ + EVENT("(GLsizei n = %d, GLuint* renderbuffers = 0x%0.8p)", n, renderbuffers); + + try + { + if (n < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + for (int i = 0; i < n; i++) + { + renderbuffers[i] = context->createRenderbuffer(); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGenTextures(GLsizei n, GLuint* textures) +{ + EVENT("(GLsizei n = %d, GLuint* textures = 0x%0.8p)", n, textures); + + try + { + if (n < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + for (int i = 0; i < n; i++) + { + textures[i] = context->createTexture(); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + EVENT("(GLuint program = %d, GLuint index = %d, GLsizei bufsize = %d, GLsizei *length = 0x%0.8p, " + "GLint *size = 0x%0.8p, GLenum *type = %0.8p, GLchar *name = %0.8p)", + program, index, bufsize, length, size, type, name); + + try + { + if (bufsize < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Program *programObject = context->getProgram(program); + + if (!programObject) + { + if (context->getShader(program)) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_VALUE); + } + } + + if (index >= (GLuint)programObject->getActiveAttributeCount()) + { + return gl::error(GL_INVALID_VALUE); + } + + programObject->getActiveAttribute(index, bufsize, length, size, type, name); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name) +{ + EVENT("(GLuint program = %d, GLuint index = %d, GLsizei bufsize = %d, " + "GLsizei* length = 0x%0.8p, GLint* size = 0x%0.8p, GLenum* type = 0x%0.8p, GLchar* name = 0x%0.8p)", + program, index, bufsize, length, size, type, name); + + try + { + if (bufsize < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Program *programObject = context->getProgram(program); + + if (!programObject) + { + if (context->getShader(program)) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_VALUE); + } + } + + if (index >= (GLuint)programObject->getActiveUniformCount()) + { + return gl::error(GL_INVALID_VALUE); + } + + programObject->getActiveUniform(index, bufsize, length, size, type, name); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) +{ + EVENT("(GLuint program = %d, GLsizei maxcount = %d, GLsizei* count = 0x%0.8p, GLuint* shaders = 0x%0.8p)", + program, maxcount, count, shaders); + + try + { + if (maxcount < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Program *programObject = context->getProgram(program); + + if (!programObject) + { + if (context->getShader(program)) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_VALUE); + } + } + + return programObject->getAttachedShaders(maxcount, count, shaders); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +int __stdcall glGetAttribLocation(GLuint program, const GLchar* name) +{ + EVENT("(GLuint program = %d, const GLchar* name = %s)", program, name); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + + gl::Program *programObject = context->getProgram(program); + + if (!programObject) + { + if (context->getShader(program)) + { + return gl::error(GL_INVALID_OPERATION, -1); + } + else + { + return gl::error(GL_INVALID_VALUE, -1); + } + } + + gl::ProgramBinary *programBinary = programObject->getProgramBinary(); + if (!programObject->isLinked() || !programBinary) + { + return gl::error(GL_INVALID_OPERATION, -1); + } + + return programBinary->getAttributeLocation(name); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, -1); + } + + return -1; +} + +void __stdcall glGetBooleanv(GLenum pname, GLboolean* params) +{ + EVENT("(GLenum pname = 0x%X, GLboolean* params = 0x%0.8p)", pname, params); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (!(context->getBooleanv(pname, params))) + { + GLenum nativeType; + unsigned int numParams = 0; + if (!context->getQueryParameterInfo(pname, &nativeType, &numParams)) + return gl::error(GL_INVALID_ENUM); + + if (numParams == 0) + return; // it is known that the pname is valid, but there are no parameters to return + + if (nativeType == GL_FLOAT) + { + GLfloat *floatParams = NULL; + floatParams = new GLfloat[numParams]; + + context->getFloatv(pname, floatParams); + + for (unsigned int i = 0; i < numParams; ++i) + { + if (floatParams[i] == 0.0f) + params[i] = GL_FALSE; + else + params[i] = GL_TRUE; + } + + delete [] floatParams; + } + else if (nativeType == GL_INT) + { + GLint *intParams = NULL; + intParams = new GLint[numParams]; + + context->getIntegerv(pname, intParams); + + for (unsigned int i = 0; i < numParams; ++i) + { + if (intParams[i] == 0) + params[i] = GL_FALSE; + else + params[i] = GL_TRUE; + } + + delete [] intParams; + } + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params) +{ + EVENT("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint* params = 0x%0.8p)", target, pname, params); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Buffer *buffer; + + switch (target) + { + case GL_ARRAY_BUFFER: + buffer = context->getArrayBuffer(); + break; + case GL_ELEMENT_ARRAY_BUFFER: + buffer = context->getElementArrayBuffer(); + break; + default: return gl::error(GL_INVALID_ENUM); + } + + if (!buffer) + { + // A null buffer means that "0" is bound to the requested buffer target + return gl::error(GL_INVALID_OPERATION); + } + + switch (pname) + { + case GL_BUFFER_USAGE: + *params = buffer->usage(); + break; + case GL_BUFFER_SIZE: + *params = buffer->size(); + break; + default: return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +GLenum __stdcall glGetError(void) +{ + EVENT("()"); + + gl::Context *context = gl::getContext(); + + if (context) + { + return context->getError(); + } + + return GL_NO_ERROR; +} + +void __stdcall glGetFenceivNV(GLuint fence, GLenum pname, GLint *params) +{ + EVENT("(GLuint fence = %d, GLenum pname = 0x%X, GLint *params = 0x%0.8p)", fence, pname, params); + + try + { + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Fence *fenceObject = context->getFence(fence); + + if (fenceObject == NULL) + { + return gl::error(GL_INVALID_OPERATION); + } + + fenceObject->getFenceiv(pname, params); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetFloatv(GLenum pname, GLfloat* params) +{ + EVENT("(GLenum pname = 0x%X, GLfloat* params = 0x%0.8p)", pname, params); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (!(context->getFloatv(pname, params))) + { + GLenum nativeType; + unsigned int numParams = 0; + if (!context->getQueryParameterInfo(pname, &nativeType, &numParams)) + return gl::error(GL_INVALID_ENUM); + + if (numParams == 0) + return; // it is known that the pname is valid, but that there are no parameters to return. + + if (nativeType == GL_BOOL) + { + GLboolean *boolParams = NULL; + boolParams = new GLboolean[numParams]; + + context->getBooleanv(pname, boolParams); + + for (unsigned int i = 0; i < numParams; ++i) + { + if (boolParams[i] == GL_FALSE) + params[i] = 0.0f; + else + params[i] = 1.0f; + } + + delete [] boolParams; + } + else if (nativeType == GL_INT) + { + GLint *intParams = NULL; + intParams = new GLint[numParams]; + + context->getIntegerv(pname, intParams); + + for (unsigned int i = 0; i < numParams; ++i) + { + params[i] = (GLfloat)intParams[i]; + } + + delete [] intParams; + } + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params) +{ + EVENT("(GLenum target = 0x%X, GLenum attachment = 0x%X, GLenum pname = 0x%X, GLint* params = 0x%0.8p)", + target, attachment, pname, params); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER_ANGLE && target != GL_READ_FRAMEBUFFER_ANGLE) + { + return gl::error(GL_INVALID_ENUM); + } + + gl::Framebuffer *framebuffer = NULL; + if (target == GL_READ_FRAMEBUFFER_ANGLE) + { + if(context->getReadFramebufferHandle() == 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + framebuffer = context->getReadFramebuffer(); + } + else + { + if (context->getDrawFramebufferHandle() == 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + framebuffer = context->getDrawFramebuffer(); + } + + GLenum attachmentType; + GLuint attachmentHandle; + + if (attachment >= GL_COLOR_ATTACHMENT0_EXT && attachment <= GL_COLOR_ATTACHMENT15_EXT) + { + const unsigned int colorAttachment = (attachment - GL_COLOR_ATTACHMENT0_EXT); + + if (colorAttachment >= context->getMaximumRenderTargets()) + { + return gl::error(GL_INVALID_ENUM); + } + + attachmentType = framebuffer->getColorbufferType(colorAttachment); + attachmentHandle = framebuffer->getColorbufferHandle(colorAttachment); + } + else + { + switch (attachment) + { + case GL_DEPTH_ATTACHMENT: + attachmentType = framebuffer->getDepthbufferType(); + attachmentHandle = framebuffer->getDepthbufferHandle(); + break; + case GL_STENCIL_ATTACHMENT: + attachmentType = framebuffer->getStencilbufferType(); + attachmentHandle = framebuffer->getStencilbufferHandle(); + break; + default: return gl::error(GL_INVALID_ENUM); + } + } + + GLenum attachmentObjectType; // Type category + if (attachmentType == GL_NONE || attachmentType == GL_RENDERBUFFER) + { + attachmentObjectType = attachmentType; + } + else if (gl::IsInternalTextureTarget(attachmentType)) + { + attachmentObjectType = GL_TEXTURE; + } + else + { + UNREACHABLE(); + return; + } + + switch (pname) + { + case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: + *params = attachmentObjectType; + break; + case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: + if (attachmentObjectType == GL_RENDERBUFFER || attachmentObjectType == GL_TEXTURE) + { + *params = attachmentHandle; + } + else + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: + if (attachmentObjectType == GL_TEXTURE) + { + *params = 0; // FramebufferTexture2D will not allow level to be set to anything else in GL ES 2.0 + } + else + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: + if (attachmentObjectType == GL_TEXTURE) + { + if (gl::IsCubemapTextureTarget(attachmentType)) + { + *params = attachmentType; + } + else + { + *params = 0; + } + } + else + { + return gl::error(GL_INVALID_ENUM); + } + break; + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +GLenum __stdcall glGetGraphicsResetStatusEXT(void) +{ + EVENT("()"); + + try + { + gl::Context *context = gl::getContext(); + + if (context) + { + return context->getResetStatus(); + } + + return GL_NO_ERROR; + } + catch(std::bad_alloc&) + { + return GL_OUT_OF_MEMORY; + } +} + +void __stdcall glGetIntegerv(GLenum pname, GLint* params) +{ + EVENT("(GLenum pname = 0x%X, GLint* params = 0x%0.8p)", pname, params); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (!(context->getIntegerv(pname, params))) + { + GLenum nativeType; + unsigned int numParams = 0; + if (!context->getQueryParameterInfo(pname, &nativeType, &numParams)) + return gl::error(GL_INVALID_ENUM); + + if (numParams == 0) + return; // it is known that pname is valid, but there are no parameters to return + + if (nativeType == GL_BOOL) + { + GLboolean *boolParams = NULL; + boolParams = new GLboolean[numParams]; + + context->getBooleanv(pname, boolParams); + + for (unsigned int i = 0; i < numParams; ++i) + { + if (boolParams[i] == GL_FALSE) + params[i] = 0; + else + params[i] = 1; + } + + delete [] boolParams; + } + else if (nativeType == GL_FLOAT) + { + GLfloat *floatParams = NULL; + floatParams = new GLfloat[numParams]; + + context->getFloatv(pname, floatParams); + + for (unsigned int i = 0; i < numParams; ++i) + { + if (pname == GL_DEPTH_RANGE || pname == GL_COLOR_CLEAR_VALUE || pname == GL_DEPTH_CLEAR_VALUE || pname == GL_BLEND_COLOR) + { + params[i] = (GLint)(((GLfloat)(0xFFFFFFFF) * floatParams[i] - 1.0f) / 2.0f); + } + else + params[i] = (GLint)(floatParams[i] > 0.0f ? floor(floatParams[i] + 0.5) : ceil(floatParams[i] - 0.5)); + } + + delete [] floatParams; + } + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetProgramiv(GLuint program, GLenum pname, GLint* params) +{ + EVENT("(GLuint program = %d, GLenum pname = %d, GLint* params = 0x%0.8p)", program, pname, params); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Program *programObject = context->getProgram(program); + + if (!programObject) + { + return gl::error(GL_INVALID_VALUE); + } + + switch (pname) + { + case GL_DELETE_STATUS: + *params = programObject->isFlaggedForDeletion(); + return; + case GL_LINK_STATUS: + *params = programObject->isLinked(); + return; + case GL_VALIDATE_STATUS: + *params = programObject->isValidated(); + return; + case GL_INFO_LOG_LENGTH: + *params = programObject->getInfoLogLength(); + return; + case GL_ATTACHED_SHADERS: + *params = programObject->getAttachedShadersCount(); + return; + case GL_ACTIVE_ATTRIBUTES: + *params = programObject->getActiveAttributeCount(); + return; + case GL_ACTIVE_ATTRIBUTE_MAX_LENGTH: + *params = programObject->getActiveAttributeMaxLength(); + return; + case GL_ACTIVE_UNIFORMS: + *params = programObject->getActiveUniformCount(); + return; + case GL_ACTIVE_UNIFORM_MAX_LENGTH: + *params = programObject->getActiveUniformMaxLength(); + return; + case GL_PROGRAM_BINARY_LENGTH_OES: + *params = programObject->getProgramBinaryLength(); + return; + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog) +{ + EVENT("(GLuint program = %d, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, GLchar* infolog = 0x%0.8p)", + program, bufsize, length, infolog); + + try + { + if (bufsize < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Program *programObject = context->getProgram(program); + + if (!programObject) + { + return gl::error(GL_INVALID_VALUE); + } + + programObject->getInfoLog(bufsize, length, infolog); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetQueryivEXT(GLenum target, GLenum pname, GLint *params) +{ + EVENT("GLenum target = 0x%X, GLenum pname = 0x%X, GLint *params = 0x%0.8p)", target, pname, params); + + try + { + switch (pname) + { + case GL_CURRENT_QUERY_EXT: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + params[0] = context->getActiveQuery(target); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params) +{ + EVENT("(GLuint id = %d, GLenum pname = 0x%X, GLuint *params = 0x%0.8p)", id, pname, params); + + try + { + switch (pname) + { + case GL_QUERY_RESULT_EXT: + case GL_QUERY_RESULT_AVAILABLE_EXT: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Query *queryObject = context->getQuery(id, false, GL_NONE); + + if (!queryObject) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (context->getActiveQuery(queryObject->getType()) == id) + { + return gl::error(GL_INVALID_OPERATION); + } + + switch(pname) + { + case GL_QUERY_RESULT_EXT: + params[0] = queryObject->getResult(); + break; + case GL_QUERY_RESULT_AVAILABLE_EXT: + params[0] = queryObject->isResultAvailable(); + break; + default: + ASSERT(false); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params) +{ + EVENT("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint* params = 0x%0.8p)", target, pname, params); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (target != GL_RENDERBUFFER) + { + return gl::error(GL_INVALID_ENUM); + } + + if (context->getRenderbufferHandle() == 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + gl::Renderbuffer *renderbuffer = context->getRenderbuffer(context->getRenderbufferHandle()); + + switch (pname) + { + case GL_RENDERBUFFER_WIDTH: *params = renderbuffer->getWidth(); break; + case GL_RENDERBUFFER_HEIGHT: *params = renderbuffer->getHeight(); break; + case GL_RENDERBUFFER_INTERNAL_FORMAT: *params = renderbuffer->getInternalFormat(); break; + case GL_RENDERBUFFER_RED_SIZE: *params = renderbuffer->getRedSize(); break; + case GL_RENDERBUFFER_GREEN_SIZE: *params = renderbuffer->getGreenSize(); break; + case GL_RENDERBUFFER_BLUE_SIZE: *params = renderbuffer->getBlueSize(); break; + case GL_RENDERBUFFER_ALPHA_SIZE: *params = renderbuffer->getAlphaSize(); break; + case GL_RENDERBUFFER_DEPTH_SIZE: *params = renderbuffer->getDepthSize(); break; + case GL_RENDERBUFFER_STENCIL_SIZE: *params = renderbuffer->getStencilSize(); break; + case GL_RENDERBUFFER_SAMPLES_ANGLE: + if (context->getMaxSupportedSamples() != 0) + { + *params = renderbuffer->getSamples(); + } + else + { + return gl::error(GL_INVALID_ENUM); + } + break; + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetShaderiv(GLuint shader, GLenum pname, GLint* params) +{ + EVENT("(GLuint shader = %d, GLenum pname = %d, GLint* params = 0x%0.8p)", shader, pname, params); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Shader *shaderObject = context->getShader(shader); + + if (!shaderObject) + { + return gl::error(GL_INVALID_VALUE); + } + + switch (pname) + { + case GL_SHADER_TYPE: + *params = shaderObject->getType(); + return; + case GL_DELETE_STATUS: + *params = shaderObject->isFlaggedForDeletion(); + return; + case GL_COMPILE_STATUS: + *params = shaderObject->isCompiled() ? GL_TRUE : GL_FALSE; + return; + case GL_INFO_LOG_LENGTH: + *params = shaderObject->getInfoLogLength(); + return; + case GL_SHADER_SOURCE_LENGTH: + *params = shaderObject->getSourceLength(); + return; + case GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE: + *params = shaderObject->getTranslatedSourceLength(); + return; + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog) +{ + EVENT("(GLuint shader = %d, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, GLchar* infolog = 0x%0.8p)", + shader, bufsize, length, infolog); + + try + { + if (bufsize < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Shader *shaderObject = context->getShader(shader); + + if (!shaderObject) + { + return gl::error(GL_INVALID_VALUE); + } + + shaderObject->getInfoLog(bufsize, length, infolog); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) +{ + EVENT("(GLenum shadertype = 0x%X, GLenum precisiontype = 0x%X, GLint* range = 0x%0.8p, GLint* precision = 0x%0.8p)", + shadertype, precisiontype, range, precision); + + try + { + switch (shadertype) + { + case GL_VERTEX_SHADER: + case GL_FRAGMENT_SHADER: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + switch (precisiontype) + { + case GL_LOW_FLOAT: + case GL_MEDIUM_FLOAT: + case GL_HIGH_FLOAT: + // Assume IEEE 754 precision + range[0] = 127; + range[1] = 127; + *precision = 23; + break; + case GL_LOW_INT: + case GL_MEDIUM_INT: + case GL_HIGH_INT: + // Some (most) hardware only supports single-precision floating-point numbers, + // which can accurately represent integers up to +/-16777216 + range[0] = 24; + range[1] = 24; + *precision = 0; + break; + default: + return gl::error(GL_INVALID_ENUM); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source) +{ + EVENT("(GLuint shader = %d, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, GLchar* source = 0x%0.8p)", + shader, bufsize, length, source); + + try + { + if (bufsize < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Shader *shaderObject = context->getShader(shader); + + if (!shaderObject) + { + return gl::error(GL_INVALID_OPERATION); + } + + shaderObject->getSource(bufsize, length, source); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetTranslatedShaderSourceANGLE(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source) +{ + EVENT("(GLuint shader = %d, GLsizei bufsize = %d, GLsizei* length = 0x%0.8p, GLchar* source = 0x%0.8p)", + shader, bufsize, length, source); + + try + { + if (bufsize < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Shader *shaderObject = context->getShader(shader); + + if (!shaderObject) + { + return gl::error(GL_INVALID_OPERATION); + } + + shaderObject->getTranslatedSource(bufsize, length, source); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +const GLubyte* __stdcall glGetString(GLenum name) +{ + EVENT("(GLenum name = 0x%X)", name); + + try + { + gl::Context *context = gl::getNonLostContext(); + + switch (name) + { + case GL_VENDOR: + return (GLubyte*)"Google Inc."; + case GL_RENDERER: + return (GLubyte*)((context != NULL) ? context->getRendererString() : "ANGLE"); + case GL_VERSION: + return (GLubyte*)"OpenGL ES 2.0 (ANGLE " VERSION_STRING ")"; + case GL_SHADING_LANGUAGE_VERSION: + return (GLubyte*)"OpenGL ES GLSL ES 1.00 (ANGLE " VERSION_STRING ")"; + case GL_EXTENSIONS: + return (GLubyte*)((context != NULL) ? context->getExtensionString() : ""); + default: + return gl::error(GL_INVALID_ENUM, (GLubyte*)NULL); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, (GLubyte*)NULL); + } +} + +void __stdcall glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params) +{ + EVENT("(GLenum target = 0x%X, GLenum pname = 0x%X, GLfloat* params = 0x%0.8p)", target, pname, params); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Texture *texture; + + switch (target) + { + case GL_TEXTURE_2D: + texture = context->getTexture2D(); + break; + case GL_TEXTURE_CUBE_MAP: + texture = context->getTextureCubeMap(); + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + switch (pname) + { + case GL_TEXTURE_MAG_FILTER: + *params = (GLfloat)texture->getMagFilter(); + break; + case GL_TEXTURE_MIN_FILTER: + *params = (GLfloat)texture->getMinFilter(); + break; + case GL_TEXTURE_WRAP_S: + *params = (GLfloat)texture->getWrapS(); + break; + case GL_TEXTURE_WRAP_T: + *params = (GLfloat)texture->getWrapT(); + break; + case GL_TEXTURE_IMMUTABLE_FORMAT_EXT: + *params = (GLfloat)(texture->isImmutable() ? GL_TRUE : GL_FALSE); + break; + case GL_TEXTURE_USAGE_ANGLE: + *params = (GLfloat)texture->getUsage(); + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + if (!context->supportsTextureFilterAnisotropy()) + { + return gl::error(GL_INVALID_ENUM); + } + *params = (GLfloat)texture->getMaxAnisotropy(); + break; + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetTexParameteriv(GLenum target, GLenum pname, GLint* params) +{ + EVENT("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint* params = 0x%0.8p)", target, pname, params); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Texture *texture; + + switch (target) + { + case GL_TEXTURE_2D: + texture = context->getTexture2D(); + break; + case GL_TEXTURE_CUBE_MAP: + texture = context->getTextureCubeMap(); + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + switch (pname) + { + case GL_TEXTURE_MAG_FILTER: + *params = texture->getMagFilter(); + break; + case GL_TEXTURE_MIN_FILTER: + *params = texture->getMinFilter(); + break; + case GL_TEXTURE_WRAP_S: + *params = texture->getWrapS(); + break; + case GL_TEXTURE_WRAP_T: + *params = texture->getWrapT(); + break; + case GL_TEXTURE_IMMUTABLE_FORMAT_EXT: + *params = texture->isImmutable() ? GL_TRUE : GL_FALSE; + break; + case GL_TEXTURE_USAGE_ANGLE: + *params = texture->getUsage(); + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + if (!context->supportsTextureFilterAnisotropy()) + { + return gl::error(GL_INVALID_ENUM); + } + *params = (GLint)texture->getMaxAnisotropy(); + break; + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, GLfloat* params) +{ + EVENT("(GLuint program = %d, GLint location = %d, GLsizei bufSize = %d, GLfloat* params = 0x%0.8p)", + program, location, bufSize, params); + + try + { + if (bufSize < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (program == 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Program *programObject = context->getProgram(program); + + if (!programObject || !programObject->isLinked()) + { + return gl::error(GL_INVALID_OPERATION); + } + + gl::ProgramBinary *programBinary = programObject->getProgramBinary(); + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->getUniformfv(location, &bufSize, params)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetUniformfv(GLuint program, GLint location, GLfloat* params) +{ + EVENT("(GLuint program = %d, GLint location = %d, GLfloat* params = 0x%0.8p)", program, location, params); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (program == 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Program *programObject = context->getProgram(program); + + if (!programObject || !programObject->isLinked()) + { + return gl::error(GL_INVALID_OPERATION); + } + + gl::ProgramBinary *programBinary = programObject->getProgramBinary(); + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->getUniformfv(location, NULL, params)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint* params) +{ + EVENT("(GLuint program = %d, GLint location = %d, GLsizei bufSize = %d, GLint* params = 0x%0.8p)", + program, location, bufSize, params); + + try + { + if (bufSize < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (program == 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Program *programObject = context->getProgram(program); + + if (!programObject || !programObject->isLinked()) + { + return gl::error(GL_INVALID_OPERATION); + } + + gl::ProgramBinary *programBinary = programObject->getProgramBinary(); + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->getUniformiv(location, &bufSize, params)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetUniformiv(GLuint program, GLint location, GLint* params) +{ + EVENT("(GLuint program = %d, GLint location = %d, GLint* params = 0x%0.8p)", program, location, params); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (program == 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Program *programObject = context->getProgram(program); + + if (!programObject || !programObject->isLinked()) + { + return gl::error(GL_INVALID_OPERATION); + } + + gl::ProgramBinary *programBinary = programObject->getProgramBinary(); + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->getUniformiv(location, NULL, params)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +int __stdcall glGetUniformLocation(GLuint program, const GLchar* name) +{ + EVENT("(GLuint program = %d, const GLchar* name = 0x%0.8p)", program, name); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (strstr(name, "gl_") == name) + { + return -1; + } + + if (context) + { + gl::Program *programObject = context->getProgram(program); + + if (!programObject) + { + if (context->getShader(program)) + { + return gl::error(GL_INVALID_OPERATION, -1); + } + else + { + return gl::error(GL_INVALID_VALUE, -1); + } + } + + gl::ProgramBinary *programBinary = programObject->getProgramBinary(); + if (!programObject->isLinked() || !programBinary) + { + return gl::error(GL_INVALID_OPERATION, -1); + } + + return programBinary->getUniformLocation(name); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, -1); + } + + return -1; +} + +void __stdcall glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params) +{ + EVENT("(GLuint index = %d, GLenum pname = 0x%X, GLfloat* params = 0x%0.8p)", index, pname, params); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + const gl::VertexAttribute &attribState = context->getVertexAttribState(index); + + switch (pname) + { + case GL_VERTEX_ATTRIB_ARRAY_ENABLED: + *params = (GLfloat)(attribState.mArrayEnabled ? GL_TRUE : GL_FALSE); + break; + case GL_VERTEX_ATTRIB_ARRAY_SIZE: + *params = (GLfloat)attribState.mSize; + break; + case GL_VERTEX_ATTRIB_ARRAY_STRIDE: + *params = (GLfloat)attribState.mStride; + break; + case GL_VERTEX_ATTRIB_ARRAY_TYPE: + *params = (GLfloat)attribState.mType; + break; + case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: + *params = (GLfloat)(attribState.mNormalized ? GL_TRUE : GL_FALSE); + break; + case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: + *params = (GLfloat)attribState.mBoundBuffer.id(); + break; + case GL_CURRENT_VERTEX_ATTRIB: + for (int i = 0; i < 4; ++i) + { + params[i] = attribState.mCurrentValue[i]; + } + break; + case GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: + *params = (GLfloat)attribState.mDivisor; + break; + default: return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params) +{ + EVENT("(GLuint index = %d, GLenum pname = 0x%X, GLint* params = 0x%0.8p)", index, pname, params); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + const gl::VertexAttribute &attribState = context->getVertexAttribState(index); + + switch (pname) + { + case GL_VERTEX_ATTRIB_ARRAY_ENABLED: + *params = (attribState.mArrayEnabled ? GL_TRUE : GL_FALSE); + break; + case GL_VERTEX_ATTRIB_ARRAY_SIZE: + *params = attribState.mSize; + break; + case GL_VERTEX_ATTRIB_ARRAY_STRIDE: + *params = attribState.mStride; + break; + case GL_VERTEX_ATTRIB_ARRAY_TYPE: + *params = attribState.mType; + break; + case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: + *params = (attribState.mNormalized ? GL_TRUE : GL_FALSE); + break; + case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: + *params = attribState.mBoundBuffer.id(); + break; + case GL_CURRENT_VERTEX_ATTRIB: + for (int i = 0; i < 4; ++i) + { + float currentValue = attribState.mCurrentValue[i]; + params[i] = (GLint)(currentValue > 0.0f ? floor(currentValue + 0.5f) : ceil(currentValue - 0.5f)); + } + break; + case GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: + *params = (GLint)attribState.mDivisor; + break; + default: return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer) +{ + EVENT("(GLuint index = %d, GLenum pname = 0x%X, GLvoid** pointer = 0x%0.8p)", index, pname, pointer); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + if (pname != GL_VERTEX_ATTRIB_ARRAY_POINTER) + { + return gl::error(GL_INVALID_ENUM); + } + + *pointer = const_cast(context->getVertexAttribPointer(index)); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glHint(GLenum target, GLenum mode) +{ + EVENT("(GLenum target = 0x%X, GLenum mode = 0x%X)", target, mode); + + try + { + switch (mode) + { + case GL_FASTEST: + case GL_NICEST: + case GL_DONT_CARE: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + gl::Context *context = gl::getNonLostContext(); + switch (target) + { + case GL_GENERATE_MIPMAP_HINT: + if (context) context->setGenerateMipmapHint(mode); + break; + case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES: + if (context) context->setFragmentShaderDerivativeHint(mode); + break; + default: + return gl::error(GL_INVALID_ENUM); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +GLboolean __stdcall glIsBuffer(GLuint buffer) +{ + EVENT("(GLuint buffer = %d)", buffer); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context && buffer) + { + gl::Buffer *bufferObject = context->getBuffer(buffer); + + if (bufferObject) + { + return GL_TRUE; + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, GL_FALSE); + } + + return GL_FALSE; +} + +GLboolean __stdcall glIsEnabled(GLenum cap) +{ + EVENT("(GLenum cap = 0x%X)", cap); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + switch (cap) + { + case GL_CULL_FACE: return context->isCullFaceEnabled(); + case GL_POLYGON_OFFSET_FILL: return context->isPolygonOffsetFillEnabled(); + case GL_SAMPLE_ALPHA_TO_COVERAGE: return context->isSampleAlphaToCoverageEnabled(); + case GL_SAMPLE_COVERAGE: return context->isSampleCoverageEnabled(); + case GL_SCISSOR_TEST: return context->isScissorTestEnabled(); + case GL_STENCIL_TEST: return context->isStencilTestEnabled(); + case GL_DEPTH_TEST: return context->isDepthTestEnabled(); + case GL_BLEND: return context->isBlendEnabled(); + case GL_DITHER: return context->isDitherEnabled(); + default: + return gl::error(GL_INVALID_ENUM, false); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, false); + } + + return false; +} + +GLboolean __stdcall glIsFenceNV(GLuint fence) +{ + EVENT("(GLuint fence = %d)", fence); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Fence *fenceObject = context->getFence(fence); + + if (fenceObject == NULL) + { + return GL_FALSE; + } + + return fenceObject->isFence(); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, GL_FALSE); + } + + return GL_FALSE; +} + +GLboolean __stdcall glIsFramebuffer(GLuint framebuffer) +{ + EVENT("(GLuint framebuffer = %d)", framebuffer); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context && framebuffer) + { + gl::Framebuffer *framebufferObject = context->getFramebuffer(framebuffer); + + if (framebufferObject) + { + return GL_TRUE; + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, GL_FALSE); + } + + return GL_FALSE; +} + +GLboolean __stdcall glIsProgram(GLuint program) +{ + EVENT("(GLuint program = %d)", program); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context && program) + { + gl::Program *programObject = context->getProgram(program); + + if (programObject) + { + return GL_TRUE; + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, GL_FALSE); + } + + return GL_FALSE; +} + +GLboolean __stdcall glIsQueryEXT(GLuint id) +{ + EVENT("(GLuint id = %d)", id); + + try + { + if (id == 0) + { + return GL_FALSE; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Query *queryObject = context->getQuery(id, false, GL_NONE); + + if (queryObject) + { + return GL_TRUE; + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, GL_FALSE); + } + + return GL_FALSE; +} + +GLboolean __stdcall glIsRenderbuffer(GLuint renderbuffer) +{ + EVENT("(GLuint renderbuffer = %d)", renderbuffer); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context && renderbuffer) + { + gl::Renderbuffer *renderbufferObject = context->getRenderbuffer(renderbuffer); + + if (renderbufferObject) + { + return GL_TRUE; + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, GL_FALSE); + } + + return GL_FALSE; +} + +GLboolean __stdcall glIsShader(GLuint shader) +{ + EVENT("(GLuint shader = %d)", shader); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context && shader) + { + gl::Shader *shaderObject = context->getShader(shader); + + if (shaderObject) + { + return GL_TRUE; + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, GL_FALSE); + } + + return GL_FALSE; +} + +GLboolean __stdcall glIsTexture(GLuint texture) +{ + EVENT("(GLuint texture = %d)", texture); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context && texture) + { + gl::Texture *textureObject = context->getTexture(texture); + + if (textureObject) + { + return GL_TRUE; + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, GL_FALSE); + } + + return GL_FALSE; +} + +void __stdcall glLineWidth(GLfloat width) +{ + EVENT("(GLfloat width = %f)", width); + + try + { + if (width <= 0.0f) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setLineWidth(width); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glLinkProgram(GLuint program) +{ + EVENT("(GLuint program = %d)", program); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Program *programObject = context->getProgram(program); + + if (!programObject) + { + if (context->getShader(program)) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_VALUE); + } + } + + context->linkProgram(program); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glPixelStorei(GLenum pname, GLint param) +{ + EVENT("(GLenum pname = 0x%X, GLint param = %d)", pname, param); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + switch (pname) + { + case GL_UNPACK_ALIGNMENT: + if (param != 1 && param != 2 && param != 4 && param != 8) + { + return gl::error(GL_INVALID_VALUE); + } + + context->setUnpackAlignment(param); + break; + + case GL_PACK_ALIGNMENT: + if (param != 1 && param != 2 && param != 4 && param != 8) + { + return gl::error(GL_INVALID_VALUE); + } + + context->setPackAlignment(param); + break; + + case GL_PACK_REVERSE_ROW_ORDER_ANGLE: + context->setPackReverseRowOrder(param != 0); + break; + + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glPolygonOffset(GLfloat factor, GLfloat units) +{ + EVENT("(GLfloat factor = %f, GLfloat units = %f)", factor, units); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setPolygonOffsetParams(factor, units); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, GLsizei bufSize, + GLvoid *data) +{ + EVENT("(GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d, " + "GLenum format = 0x%X, GLenum type = 0x%X, GLsizei bufSize = 0x%d, GLvoid *data = 0x%0.8p)", + x, y, width, height, format, type, bufSize, data); + + try + { + if (width < 0 || height < 0 || bufSize < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + GLenum currentFormat, currentType; + + // Failure in getCurrentReadFormatType indicates that no color attachment is currently bound, + // and attempting to read back if that's the case is an error. The error will be registered + // by getCurrentReadFormat. + if (!context->getCurrentReadFormatType(¤tFormat, ¤tType)) + return; + + if (!(currentFormat == format && currentType == type) && !validReadFormatType(format, type)) + { + return gl::error(GL_INVALID_OPERATION); + } + + context->readPixels(x, y, width, height, format, type, &bufSize, data); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, GLvoid* pixels) +{ + EVENT("(GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d, " + "GLenum format = 0x%X, GLenum type = 0x%X, GLvoid* pixels = 0x%0.8p)", + x, y, width, height, format, type, pixels); + + try + { + if (width < 0 || height < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + GLenum currentFormat, currentType; + + // Failure in getCurrentReadFormatType indicates that no color attachment is currently bound, + // and attempting to read back if that's the case is an error. The error will be registered + // by getCurrentReadFormat. + if (!context->getCurrentReadFormatType(¤tFormat, ¤tType)) + return; + + if (!(currentFormat == format && currentType == type) && !validReadFormatType(format, type)) + { + return gl::error(GL_INVALID_OPERATION); + } + + context->readPixels(x, y, width, height, format, type, NULL, pixels); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glReleaseShaderCompiler(void) +{ + EVENT("()"); + + try + { + gl::Shader::releaseCompiler(); + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glRenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + EVENT("(GLenum target = 0x%X, GLsizei samples = %d, GLenum internalformat = 0x%X, GLsizei width = %d, GLsizei height = %d)", + target, samples, internalformat, width, height); + + try + { + switch (target) + { + case GL_RENDERBUFFER: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + if (!gl::IsColorRenderable(internalformat) && !gl::IsDepthRenderable(internalformat) && !gl::IsStencilRenderable(internalformat)) + { + return gl::error(GL_INVALID_ENUM); + } + + if (width < 0 || height < 0 || samples < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (width > context->getMaximumRenderbufferDimension() || + height > context->getMaximumRenderbufferDimension() || + samples > context->getMaxSupportedSamples()) + { + return gl::error(GL_INVALID_VALUE); + } + + GLuint handle = context->getRenderbufferHandle(); + if (handle == 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + switch (internalformat) + { + case GL_DEPTH_COMPONENT16: + case GL_RGBA4: + case GL_RGB5_A1: + case GL_RGB565: + case GL_RGB8_OES: + case GL_RGBA8_OES: + case GL_STENCIL_INDEX8: + case GL_DEPTH24_STENCIL8_OES: + context->setRenderbufferStorage(width, height, internalformat, samples); + break; + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + glRenderbufferStorageMultisampleANGLE(target, 0, internalformat, width, height); +} + +void __stdcall glSampleCoverage(GLclampf value, GLboolean invert) +{ + EVENT("(GLclampf value = %f, GLboolean invert = %d)", value, invert); + + try + { + gl::Context* context = gl::getNonLostContext(); + + if (context) + { + context->setSampleCoverageParams(gl::clamp01(value), invert == GL_TRUE); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glSetFenceNV(GLuint fence, GLenum condition) +{ + EVENT("(GLuint fence = %d, GLenum condition = 0x%X)", fence, condition); + + try + { + if (condition != GL_ALL_COMPLETED_NV) + { + return gl::error(GL_INVALID_ENUM); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Fence *fenceObject = context->getFence(fence); + + if (fenceObject == NULL) + { + return gl::error(GL_INVALID_OPERATION); + } + + fenceObject->setFence(condition); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + EVENT("(GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d)", x, y, width, height); + + try + { + if (width < 0 || height < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context* context = gl::getNonLostContext(); + + if (context) + { + context->setScissorParams(x, y, width, height); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length) +{ + EVENT("(GLsizei n = %d, const GLuint* shaders = 0x%0.8p, GLenum binaryformat = 0x%X, " + "const GLvoid* binary = 0x%0.8p, GLsizei length = %d)", + n, shaders, binaryformat, binary, length); + + try + { + // No binary shader formats are supported. + return gl::error(GL_INVALID_ENUM); + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glShaderSource(GLuint shader, GLsizei count, const GLchar** string, const GLint* length) +{ + EVENT("(GLuint shader = %d, GLsizei count = %d, const GLchar** string = 0x%0.8p, const GLint* length = 0x%0.8p)", + shader, count, string, length); + + try + { + if (count < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Shader *shaderObject = context->getShader(shader); + + if (!shaderObject) + { + if (context->getProgram(shader)) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_VALUE); + } + } + + shaderObject->setSource(count, string, length); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + glStencilFuncSeparate(GL_FRONT_AND_BACK, func, ref, mask); +} + +void __stdcall glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + EVENT("(GLenum face = 0x%X, GLenum func = 0x%X, GLint ref = %d, GLuint mask = %d)", face, func, ref, mask); + + try + { + switch (face) + { + case GL_FRONT: + case GL_BACK: + case GL_FRONT_AND_BACK: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + switch (func) + { + case GL_NEVER: + case GL_ALWAYS: + case GL_LESS: + case GL_LEQUAL: + case GL_EQUAL: + case GL_GEQUAL: + case GL_GREATER: + case GL_NOTEQUAL: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (face == GL_FRONT || face == GL_FRONT_AND_BACK) + { + context->setStencilParams(func, ref, mask); + } + + if (face == GL_BACK || face == GL_FRONT_AND_BACK) + { + context->setStencilBackParams(func, ref, mask); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glStencilMask(GLuint mask) +{ + glStencilMaskSeparate(GL_FRONT_AND_BACK, mask); +} + +void __stdcall glStencilMaskSeparate(GLenum face, GLuint mask) +{ + EVENT("(GLenum face = 0x%X, GLuint mask = %d)", face, mask); + + try + { + switch (face) + { + case GL_FRONT: + case GL_BACK: + case GL_FRONT_AND_BACK: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (face == GL_FRONT || face == GL_FRONT_AND_BACK) + { + context->setStencilWritemask(mask); + } + + if (face == GL_BACK || face == GL_FRONT_AND_BACK) + { + context->setStencilBackWritemask(mask); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + glStencilOpSeparate(GL_FRONT_AND_BACK, fail, zfail, zpass); +} + +void __stdcall glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass) +{ + EVENT("(GLenum face = 0x%X, GLenum fail = 0x%X, GLenum zfail = 0x%X, GLenum zpas = 0x%Xs)", + face, fail, zfail, zpass); + + try + { + switch (face) + { + case GL_FRONT: + case GL_BACK: + case GL_FRONT_AND_BACK: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + switch (fail) + { + case GL_ZERO: + case GL_KEEP: + case GL_REPLACE: + case GL_INCR: + case GL_DECR: + case GL_INVERT: + case GL_INCR_WRAP: + case GL_DECR_WRAP: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + switch (zfail) + { + case GL_ZERO: + case GL_KEEP: + case GL_REPLACE: + case GL_INCR: + case GL_DECR: + case GL_INVERT: + case GL_INCR_WRAP: + case GL_DECR_WRAP: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + switch (zpass) + { + case GL_ZERO: + case GL_KEEP: + case GL_REPLACE: + case GL_INCR: + case GL_DECR: + case GL_INVERT: + case GL_INCR_WRAP: + case GL_DECR_WRAP: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (face == GL_FRONT || face == GL_FRONT_AND_BACK) + { + context->setStencilOperations(fail, zfail, zpass); + } + + if (face == GL_BACK || face == GL_FRONT_AND_BACK) + { + context->setStencilBackOperations(fail, zfail, zpass); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +GLboolean __stdcall glTestFenceNV(GLuint fence) +{ + EVENT("(GLuint fence = %d)", fence); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Fence *fenceObject = context->getFence(fence); + + if (fenceObject == NULL) + { + return gl::error(GL_INVALID_OPERATION, GL_TRUE); + } + + return fenceObject->testFence(); + } + } + catch(std::bad_alloc&) + { + gl::error(GL_OUT_OF_MEMORY); + } + + return GL_TRUE; +} + +void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLint border, GLenum format, GLenum type, const GLvoid* pixels) +{ + EVENT("(GLenum target = 0x%X, GLint level = %d, GLint internalformat = %d, GLsizei width = %d, GLsizei height = %d, " + "GLint border = %d, GLenum format = 0x%X, GLenum type = 0x%X, const GLvoid* pixels = 0x%0.8p)", + target, level, internalformat, width, height, border, format, type, pixels); + + try + { + if (!validImageSize(level, width, height)) + { + return gl::error(GL_INVALID_VALUE); + } + + if (internalformat != GLint(format)) + { + return gl::error(GL_INVALID_OPERATION); + } + + // validate by itself (used as secondary key below) + switch (type) + { + case GL_UNSIGNED_BYTE: + case GL_UNSIGNED_SHORT_5_6_5: + case GL_UNSIGNED_SHORT_4_4_4_4: + case GL_UNSIGNED_SHORT_5_5_5_1: + case GL_UNSIGNED_SHORT: + case GL_UNSIGNED_INT: + case GL_UNSIGNED_INT_24_8_OES: + case GL_HALF_FLOAT_OES: + case GL_FLOAT: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + // validate + combinations + // - invalid -> sets INVALID_ENUM + // - invalid + combination -> sets INVALID_OPERATION + switch (format) + { + case GL_ALPHA: + case GL_LUMINANCE: + case GL_LUMINANCE_ALPHA: + switch (type) + { + case GL_UNSIGNED_BYTE: + case GL_FLOAT: + case GL_HALF_FLOAT_OES: + break; + default: + return gl::error(GL_INVALID_OPERATION); + } + break; + case GL_RGB: + switch (type) + { + case GL_UNSIGNED_BYTE: + case GL_UNSIGNED_SHORT_5_6_5: + case GL_FLOAT: + case GL_HALF_FLOAT_OES: + break; + default: + return gl::error(GL_INVALID_OPERATION); + } + break; + case GL_RGBA: + switch (type) + { + case GL_UNSIGNED_BYTE: + case GL_UNSIGNED_SHORT_4_4_4_4: + case GL_UNSIGNED_SHORT_5_5_5_1: + case GL_FLOAT: + case GL_HALF_FLOAT_OES: + break; + default: + return gl::error(GL_INVALID_OPERATION); + } + break; + case GL_BGRA_EXT: + switch (type) + { + case GL_UNSIGNED_BYTE: + break; + default: + return gl::error(GL_INVALID_OPERATION); + } + break; + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: // error cases for compressed textures are handled below + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: + case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: + break; + case GL_DEPTH_COMPONENT: + switch (type) + { + case GL_UNSIGNED_SHORT: + case GL_UNSIGNED_INT: + break; + default: + return gl::error(GL_INVALID_OPERATION); + } + break; + case GL_DEPTH_STENCIL_OES: + switch (type) + { + case GL_UNSIGNED_INT_24_8_OES: + break; + default: + return gl::error(GL_INVALID_OPERATION); + } + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + if (border != 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (level > context->getMaximumTextureLevel()) + { + return gl::error(GL_INVALID_VALUE); + } + + switch (target) + { + case GL_TEXTURE_2D: + if (width > (context->getMaximumTextureDimension() >> level) || + height > (context->getMaximumTextureDimension() >> level)) + { + return gl::error(GL_INVALID_VALUE); + } + break; + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + if (width != height) + { + return gl::error(GL_INVALID_VALUE); + } + + if (width > (context->getMaximumCubeTextureDimension() >> level) || + height > (context->getMaximumCubeTextureDimension() >> level)) + { + return gl::error(GL_INVALID_VALUE); + } + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + switch (format) { + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + if (context->supportsDXT1Textures()) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: + if (context->supportsDXT3Textures()) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: + if (context->supportsDXT5Textures()) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_DEPTH_COMPONENT: + case GL_DEPTH_STENCIL_OES: + if (!context->supportsDepthTextures()) + { + return gl::error(GL_INVALID_VALUE); + } + if (target != GL_TEXTURE_2D) + { + return gl::error(GL_INVALID_OPERATION); + } + // OES_depth_texture supports loading depth data and multiple levels, + // but ANGLE_depth_texture does not + if (pixels != NULL || level != 0) + { + return gl::error(GL_INVALID_OPERATION); + } + break; + default: + break; + } + + if (type == GL_FLOAT) + { + if (!context->supportsFloat32Textures()) + { + return gl::error(GL_INVALID_ENUM); + } + } + else if (type == GL_HALF_FLOAT_OES) + { + if (!context->supportsFloat16Textures()) + { + return gl::error(GL_INVALID_ENUM); + } + } + + if (target == GL_TEXTURE_2D) + { + gl::Texture2D *texture = context->getTexture2D(); + + if (!texture) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (texture->isImmutable()) + { + return gl::error(GL_INVALID_OPERATION); + } + + texture->setImage(level, width, height, format, type, context->getUnpackAlignment(), pixels); + } + else + { + gl::TextureCubeMap *texture = context->getTextureCubeMap(); + + if (!texture) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (texture->isImmutable()) + { + return gl::error(GL_INVALID_OPERATION); + } + + switch (target) + { + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + texture->setImagePosX(level, width, height, format, type, context->getUnpackAlignment(), pixels); + break; + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + texture->setImageNegX(level, width, height, format, type, context->getUnpackAlignment(), pixels); + break; + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + texture->setImagePosY(level, width, height, format, type, context->getUnpackAlignment(), pixels); + break; + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + texture->setImageNegY(level, width, height, format, type, context->getUnpackAlignment(), pixels); + break; + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + texture->setImagePosZ(level, width, height, format, type, context->getUnpackAlignment(), pixels); + break; + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + texture->setImageNegZ(level, width, height, format, type, context->getUnpackAlignment(), pixels); + break; + default: UNREACHABLE(); + } + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + EVENT("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint param = %f)", target, pname, param); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Texture *texture; + + switch (target) + { + case GL_TEXTURE_2D: + texture = context->getTexture2D(); + break; + case GL_TEXTURE_CUBE_MAP: + texture = context->getTextureCubeMap(); + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + switch (pname) + { + case GL_TEXTURE_WRAP_S: + if (!texture->setWrapS((GLenum)param)) + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_TEXTURE_WRAP_T: + if (!texture->setWrapT((GLenum)param)) + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_TEXTURE_MIN_FILTER: + if (!texture->setMinFilter((GLenum)param)) + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_TEXTURE_MAG_FILTER: + if (!texture->setMagFilter((GLenum)param)) + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_TEXTURE_USAGE_ANGLE: + if (!texture->setUsage((GLenum)param)) + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + if (!context->supportsTextureFilterAnisotropy()) + { + return gl::error(GL_INVALID_ENUM); + } + if (!texture->setMaxAnisotropy((float)param, context->getTextureMaxAnisotropy())) + { + return gl::error(GL_INVALID_VALUE); + } + break; + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params) +{ + glTexParameterf(target, pname, (GLfloat)*params); +} + +void __stdcall glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + EVENT("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint param = %d)", target, pname, param); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Texture *texture; + + switch (target) + { + case GL_TEXTURE_2D: + texture = context->getTexture2D(); + break; + case GL_TEXTURE_CUBE_MAP: + texture = context->getTextureCubeMap(); + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + switch (pname) + { + case GL_TEXTURE_WRAP_S: + if (!texture->setWrapS((GLenum)param)) + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_TEXTURE_WRAP_T: + if (!texture->setWrapT((GLenum)param)) + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_TEXTURE_MIN_FILTER: + if (!texture->setMinFilter((GLenum)param)) + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_TEXTURE_MAG_FILTER: + if (!texture->setMagFilter((GLenum)param)) + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_TEXTURE_USAGE_ANGLE: + if (!texture->setUsage((GLenum)param)) + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + if (!context->supportsTextureFilterAnisotropy()) + { + return gl::error(GL_INVALID_ENUM); + } + if (!texture->setMaxAnisotropy((float)param, context->getTextureMaxAnisotropy())) + { + return gl::error(GL_INVALID_VALUE); + } + break; + default: + return gl::error(GL_INVALID_ENUM); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glTexParameteriv(GLenum target, GLenum pname, const GLint* params) +{ + glTexParameteri(target, pname, *params); +} + +void __stdcall glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + EVENT("(GLenum target = 0x%X, GLsizei levels = %d, GLenum internalformat = 0x%X, GLsizei width = %d, GLsizei height = %d)", + target, levels, internalformat, width, height); + + try + { + if (target != GL_TEXTURE_2D && target != GL_TEXTURE_CUBE_MAP) + { + return gl::error(GL_INVALID_ENUM); + } + + if (width < 1 || height < 1 || levels < 1) + { + return gl::error(GL_INVALID_VALUE); + } + + if (target == GL_TEXTURE_CUBE_MAP && width != height) + { + return gl::error(GL_INVALID_VALUE); + } + + if (levels != 1 && levels != gl::log2(std::max(width, height)) + 1) + { + return gl::error(GL_INVALID_OPERATION); + } + + GLenum format = gl::ExtractFormat(internalformat); + GLenum type = gl::ExtractType(internalformat); + + if (format == GL_NONE || type == GL_NONE) + { + return gl::error(GL_INVALID_ENUM); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + switch (target) + { + case GL_TEXTURE_2D: + if (width > context->getMaximumTextureDimension() || + height > context->getMaximumTextureDimension()) + { + return gl::error(GL_INVALID_VALUE); + } + break; + case GL_TEXTURE_CUBE_MAP: + if (width > context->getMaximumCubeTextureDimension() || + height > context->getMaximumCubeTextureDimension()) + { + return gl::error(GL_INVALID_VALUE); + } + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + if (levels != 1 && !context->supportsNonPower2Texture()) + { + if (!gl::isPow2(width) || !gl::isPow2(height)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + + switch (internalformat) + { + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + if (!context->supportsDXT1Textures()) + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: + if (!context->supportsDXT3Textures()) + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: + if (!context->supportsDXT5Textures()) + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_RGBA32F_EXT: + case GL_RGB32F_EXT: + case GL_ALPHA32F_EXT: + case GL_LUMINANCE32F_EXT: + case GL_LUMINANCE_ALPHA32F_EXT: + if (!context->supportsFloat32Textures()) + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_RGBA16F_EXT: + case GL_RGB16F_EXT: + case GL_ALPHA16F_EXT: + case GL_LUMINANCE16F_EXT: + case GL_LUMINANCE_ALPHA16F_EXT: + if (!context->supportsFloat16Textures()) + { + return gl::error(GL_INVALID_ENUM); + } + break; + case GL_DEPTH_COMPONENT16: + case GL_DEPTH_COMPONENT32_OES: + case GL_DEPTH24_STENCIL8_OES: + if (!context->supportsDepthTextures()) + { + return gl::error(GL_INVALID_ENUM); + } + if (target != GL_TEXTURE_2D) + { + return gl::error(GL_INVALID_OPERATION); + } + // ANGLE_depth_texture only supports 1-level textures + if (levels != 1) + { + return gl::error(GL_INVALID_OPERATION); + } + break; + default: + break; + } + + if (target == GL_TEXTURE_2D) + { + gl::Texture2D *texture = context->getTexture2D(); + + if (!texture || texture->id() == 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (texture->isImmutable()) + { + return gl::error(GL_INVALID_OPERATION); + } + + texture->storage(levels, internalformat, width, height); + } + else if (target == GL_TEXTURE_CUBE_MAP) + { + gl::TextureCubeMap *texture = context->getTextureCubeMap(); + + if (!texture || texture->id() == 0) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (texture->isImmutable()) + { + return gl::error(GL_INVALID_OPERATION); + } + + texture->storage(levels, internalformat, width); + } + else UNREACHABLE(); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, + GLenum format, GLenum type, const GLvoid* pixels) +{ + EVENT("(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, " + "GLsizei width = %d, GLsizei height = %d, GLenum format = 0x%X, GLenum type = 0x%X, " + "const GLvoid* pixels = 0x%0.8p)", + target, level, xoffset, yoffset, width, height, format, type, pixels); + + try + { + if (!gl::IsInternalTextureTarget(target)) + { + return gl::error(GL_INVALID_ENUM); + } + + if (level < 0 || xoffset < 0 || yoffset < 0 || width < 0 || height < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + if (std::numeric_limits::max() - xoffset < width || std::numeric_limits::max() - yoffset < height) + { + return gl::error(GL_INVALID_VALUE); + } + + if (!checkTextureFormatType(format, type)) + { + return; // error is set by helper function + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (level > context->getMaximumTextureLevel()) + { + return gl::error(GL_INVALID_VALUE); + } + + if (format == GL_FLOAT) + { + if (!context->supportsFloat32Textures()) + { + return gl::error(GL_INVALID_ENUM); + } + } + else if (format == GL_HALF_FLOAT_OES) + { + if (!context->supportsFloat16Textures()) + { + return gl::error(GL_INVALID_ENUM); + } + } + else if (gl::IsDepthTexture(format)) + { + if (!context->supportsDepthTextures()) + { + return gl::error(GL_INVALID_ENUM); + } + if (target != GL_TEXTURE_2D) + { + return gl::error(GL_INVALID_OPERATION); + } + // OES_depth_texture supports loading depth data, but ANGLE_depth_texture does not + return gl::error(GL_INVALID_OPERATION); + } + + if (width == 0 || height == 0 || pixels == NULL) + { + return; + } + + if (target == GL_TEXTURE_2D) + { + gl::Texture2D *texture = context->getTexture2D(); + if (validateSubImageParams2D(false, width, height, xoffset, yoffset, level, format, type, texture)) + { + texture->subImage(level, xoffset, yoffset, width, height, format, type, context->getUnpackAlignment(), pixels); + } + } + else if (gl::IsCubemapTextureTarget(target)) + { + gl::TextureCubeMap *texture = context->getTextureCubeMap(); + if (validateSubImageParamsCube(false, width, height, xoffset, yoffset, target, level, format, type, texture)) + { + texture->subImage(target, level, xoffset, yoffset, width, height, format, type, context->getUnpackAlignment(), pixels); + } + } + else + { + UNREACHABLE(); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glUniform1f(GLint location, GLfloat x) +{ + glUniform1fv(location, 1, &x); +} + +void __stdcall glUniform1fv(GLint location, GLsizei count, const GLfloat* v) +{ + EVENT("(GLint location = %d, GLsizei count = %d, const GLfloat* v = 0x%0.8p)", location, count, v); + + try + { + if (count < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + if (location == -1) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::ProgramBinary *programBinary = context->getCurrentProgramBinary(); + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->setUniform1fv(location, count, v)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glUniform1i(GLint location, GLint x) +{ + glUniform1iv(location, 1, &x); +} + +void __stdcall glUniform1iv(GLint location, GLsizei count, const GLint* v) +{ + EVENT("(GLint location = %d, GLsizei count = %d, const GLint* v = 0x%0.8p)", location, count, v); + + try + { + if (count < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + if (location == -1) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::ProgramBinary *programBinary = context->getCurrentProgramBinary(); + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->setUniform1iv(location, count, v)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glUniform2f(GLint location, GLfloat x, GLfloat y) +{ + GLfloat xy[2] = {x, y}; + + glUniform2fv(location, 1, (GLfloat*)&xy); +} + +void __stdcall glUniform2fv(GLint location, GLsizei count, const GLfloat* v) +{ + EVENT("(GLint location = %d, GLsizei count = %d, const GLfloat* v = 0x%0.8p)", location, count, v); + + try + { + if (count < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + if (location == -1) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::ProgramBinary *programBinary = context->getCurrentProgramBinary(); + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->setUniform2fv(location, count, v)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glUniform2i(GLint location, GLint x, GLint y) +{ + GLint xy[4] = {x, y}; + + glUniform2iv(location, 1, (GLint*)&xy); +} + +void __stdcall glUniform2iv(GLint location, GLsizei count, const GLint* v) +{ + EVENT("(GLint location = %d, GLsizei count = %d, const GLint* v = 0x%0.8p)", location, count, v); + + try + { + if (count < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + if (location == -1) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::ProgramBinary *programBinary = context->getCurrentProgramBinary(); + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->setUniform2iv(location, count, v)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) +{ + GLfloat xyz[3] = {x, y, z}; + + glUniform3fv(location, 1, (GLfloat*)&xyz); +} + +void __stdcall glUniform3fv(GLint location, GLsizei count, const GLfloat* v) +{ + EVENT("(GLint location = %d, GLsizei count = %d, const GLfloat* v = 0x%0.8p)", location, count, v); + + try + { + if (count < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + if (location == -1) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::ProgramBinary *programBinary = context->getCurrentProgramBinary(); + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->setUniform3fv(location, count, v)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glUniform3i(GLint location, GLint x, GLint y, GLint z) +{ + GLint xyz[3] = {x, y, z}; + + glUniform3iv(location, 1, (GLint*)&xyz); +} + +void __stdcall glUniform3iv(GLint location, GLsizei count, const GLint* v) +{ + EVENT("(GLint location = %d, GLsizei count = %d, const GLint* v = 0x%0.8p)", location, count, v); + + try + { + if (count < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + if (location == -1) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::ProgramBinary *programBinary = context->getCurrentProgramBinary(); + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->setUniform3iv(location, count, v)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + GLfloat xyzw[4] = {x, y, z, w}; + + glUniform4fv(location, 1, (GLfloat*)&xyzw); +} + +void __stdcall glUniform4fv(GLint location, GLsizei count, const GLfloat* v) +{ + EVENT("(GLint location = %d, GLsizei count = %d, const GLfloat* v = 0x%0.8p)", location, count, v); + + try + { + if (count < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + if (location == -1) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::ProgramBinary *programBinary = context->getCurrentProgramBinary(); + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->setUniform4fv(location, count, v)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w) +{ + GLint xyzw[4] = {x, y, z, w}; + + glUniform4iv(location, 1, (GLint*)&xyzw); +} + +void __stdcall glUniform4iv(GLint location, GLsizei count, const GLint* v) +{ + EVENT("(GLint location = %d, GLsizei count = %d, const GLint* v = 0x%0.8p)", location, count, v); + + try + { + if (count < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + if (location == -1) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::ProgramBinary *programBinary = context->getCurrentProgramBinary(); + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->setUniform4iv(location, count, v)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) +{ + EVENT("(GLint location = %d, GLsizei count = %d, GLboolean transpose = %d, const GLfloat* value = 0x%0.8p)", + location, count, transpose, value); + + try + { + if (count < 0 || transpose != GL_FALSE) + { + return gl::error(GL_INVALID_VALUE); + } + + if (location == -1) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::ProgramBinary *programBinary = context->getCurrentProgramBinary(); + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->setUniformMatrix2fv(location, count, value)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) +{ + EVENT("(GLint location = %d, GLsizei count = %d, GLboolean transpose = %d, const GLfloat* value = 0x%0.8p)", + location, count, transpose, value); + + try + { + if (count < 0 || transpose != GL_FALSE) + { + return gl::error(GL_INVALID_VALUE); + } + + if (location == -1) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::ProgramBinary *programBinary = context->getCurrentProgramBinary(); + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->setUniformMatrix3fv(location, count, value)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) +{ + EVENT("(GLint location = %d, GLsizei count = %d, GLboolean transpose = %d, const GLfloat* value = 0x%0.8p)", + location, count, transpose, value); + + try + { + if (count < 0 || transpose != GL_FALSE) + { + return gl::error(GL_INVALID_VALUE); + } + + if (location == -1) + { + return; + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::ProgramBinary *programBinary = context->getCurrentProgramBinary(); + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->setUniformMatrix4fv(location, count, value)) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glUseProgram(GLuint program) +{ + EVENT("(GLuint program = %d)", program); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Program *programObject = context->getProgram(program); + + if (!programObject && program != 0) + { + if (context->getShader(program)) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_VALUE); + } + } + + if (program != 0 && !programObject->isLinked()) + { + return gl::error(GL_INVALID_OPERATION); + } + + context->useProgram(program); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glValidateProgram(GLuint program) +{ + EVENT("(GLuint program = %d)", program); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Program *programObject = context->getProgram(program); + + if (!programObject) + { + if (context->getShader(program)) + { + return gl::error(GL_INVALID_OPERATION); + } + else + { + return gl::error(GL_INVALID_VALUE); + } + } + + programObject->validate(); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glVertexAttrib1f(GLuint index, GLfloat x) +{ + EVENT("(GLuint index = %d, GLfloat x = %f)", index, x); + + try + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + GLfloat vals[4] = { x, 0, 0, 1 }; + context->setVertexAttrib(index, vals); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glVertexAttrib1fv(GLuint index, const GLfloat* values) +{ + EVENT("(GLuint index = %d, const GLfloat* values = 0x%0.8p)", index, values); + + try + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + GLfloat vals[4] = { values[0], 0, 0, 1 }; + context->setVertexAttrib(index, vals); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + EVENT("(GLuint index = %d, GLfloat x = %f, GLfloat y = %f)", index, x, y); + + try + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + GLfloat vals[4] = { x, y, 0, 1 }; + context->setVertexAttrib(index, vals); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glVertexAttrib2fv(GLuint index, const GLfloat* values) +{ + EVENT("(GLuint index = %d, const GLfloat* values = 0x%0.8p)", index, values); + + try + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + GLfloat vals[4] = { values[0], values[1], 0, 1 }; + context->setVertexAttrib(index, vals); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + EVENT("(GLuint index = %d, GLfloat x = %f, GLfloat y = %f, GLfloat z = %f)", index, x, y, z); + + try + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + GLfloat vals[4] = { x, y, z, 1 }; + context->setVertexAttrib(index, vals); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glVertexAttrib3fv(GLuint index, const GLfloat* values) +{ + EVENT("(GLuint index = %d, const GLfloat* values = 0x%0.8p)", index, values); + + try + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + GLfloat vals[4] = { values[0], values[1], values[2], 1 }; + context->setVertexAttrib(index, vals); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + EVENT("(GLuint index = %d, GLfloat x = %f, GLfloat y = %f, GLfloat z = %f, GLfloat w = %f)", index, x, y, z, w); + + try + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + GLfloat vals[4] = { x, y, z, w }; + context->setVertexAttrib(index, vals); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glVertexAttrib4fv(GLuint index, const GLfloat* values) +{ + EVENT("(GLuint index = %d, const GLfloat* values = 0x%0.8p)", index, values); + + try + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setVertexAttrib(index, values); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glVertexAttribDivisorANGLE(GLuint index, GLuint divisor) +{ + EVENT("(GLuint index = %d, GLuint divisor = %d)", index, divisor); + + try + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setVertexAttribDivisor(index, divisor); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr) +{ + EVENT("(GLuint index = %d, GLint size = %d, GLenum type = 0x%X, " + "GLboolean normalized = %d, GLsizei stride = %d, const GLvoid* ptr = 0x%0.8p)", + index, size, type, normalized, stride, ptr); + + try + { + if (index >= gl::MAX_VERTEX_ATTRIBS) + { + return gl::error(GL_INVALID_VALUE); + } + + if (size < 1 || size > 4) + { + return gl::error(GL_INVALID_VALUE); + } + + switch (type) + { + case GL_BYTE: + case GL_UNSIGNED_BYTE: + case GL_SHORT: + case GL_UNSIGNED_SHORT: + case GL_FIXED: + case GL_FLOAT: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + if (stride < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setVertexAttribState(index, context->getArrayBuffer(), size, type, (normalized == GL_TRUE), stride, ptr); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + EVENT("(GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d)", x, y, width, height); + + try + { + if (width < 0 || height < 0) + { + return gl::error(GL_INVALID_VALUE); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + context->setViewportParams(x, y, width, height); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glBlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, + GLbitfield mask, GLenum filter) +{ + EVENT("(GLint srcX0 = %d, GLint srcY0 = %d, GLint srcX1 = %d, GLint srcY1 = %d, " + "GLint dstX0 = %d, GLint dstY0 = %d, GLint dstX1 = %d, GLint dstY1 = %d, " + "GLbitfield mask = 0x%X, GLenum filter = 0x%X)", + srcX0, srcY0, srcX1, srcX1, dstX0, dstY0, dstX1, dstY1, mask, filter); + + try + { + switch (filter) + { + case GL_NEAREST: + break; + default: + return gl::error(GL_INVALID_ENUM); + } + + if ((mask & ~(GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)) != 0) + { + return gl::error(GL_INVALID_VALUE); + } + + if (srcX1 - srcX0 != dstX1 - dstX0 || srcY1 - srcY0 != dstY1 - dstY0) + { + ERR("Scaling and flipping in BlitFramebufferANGLE not supported by this implementation"); + return gl::error(GL_INVALID_OPERATION); + } + + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (context->getReadFramebufferHandle() == context->getDrawFramebufferHandle()) + { + ERR("Blits with the same source and destination framebuffer are not supported by this implementation."); + return gl::error(GL_INVALID_OPERATION); + } + + context->blitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, + GLint border, GLenum format, GLenum type, const GLvoid* pixels) +{ + EVENT("(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, " + "GLsizei width = %d, GLsizei height = %d, GLsizei depth = %d, GLint border = %d, " + "GLenum format = 0x%X, GLenum type = 0x%x, const GLvoid* pixels = 0x%0.8p)", + target, level, internalformat, width, height, depth, border, format, type, pixels); + + try + { + UNIMPLEMENTED(); // FIXME + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei *length, + GLenum *binaryFormat, void *binary) +{ + EVENT("(GLenum program = 0x%X, bufSize = %d, length = 0x%0.8p, binaryFormat = 0x%0.8p, binary = 0x%0.8p)", + program, bufSize, length, binaryFormat, binary); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Program *programObject = context->getProgram(program); + + if (!programObject || !programObject->isLinked()) + { + return gl::error(GL_INVALID_OPERATION); + } + + gl::ProgramBinary *programBinary = programObject->getProgramBinary(); + + if (!programBinary) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (!programBinary->save(binary, bufSize, length)) + { + return gl::error(GL_INVALID_OPERATION); + } + + *binaryFormat = GL_PROGRAM_BINARY_ANGLE; + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glProgramBinaryOES(GLuint program, GLenum binaryFormat, + const void *binary, GLint length) +{ + EVENT("(GLenum program = 0x%X, binaryFormat = 0x%x, binary = 0x%0.8p, length = %d)", + program, binaryFormat, binary, length); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (binaryFormat != GL_PROGRAM_BINARY_ANGLE) + { + return gl::error(GL_INVALID_ENUM); + } + + gl::Program *programObject = context->getProgram(program); + + if (!programObject) + { + return gl::error(GL_INVALID_OPERATION); + } + + context->setProgramBinary(program, binary, length); + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +void __stdcall glDrawBuffersEXT(GLsizei n, const GLenum *bufs) +{ + EVENT("(GLenum n = %d, bufs = 0x%0.8p)", n, bufs); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + if (n < 0 || (unsigned int)n > context->getMaximumRenderTargets()) + { + return gl::error(GL_INVALID_VALUE); + } + + if (context->getDrawFramebufferHandle() == 0) + { + if (n != 1) + { + return gl::error(GL_INVALID_OPERATION); + } + + if (bufs[0] != GL_NONE && bufs[0] != GL_BACK) + { + return gl::error(GL_INVALID_OPERATION); + } + } + else + { + for (int colorAttachment = 0; colorAttachment < n; colorAttachment++) + { + const GLenum attachment = GL_COLOR_ATTACHMENT0_EXT + colorAttachment; + if (bufs[colorAttachment] != GL_NONE && bufs[colorAttachment] != attachment) + { + return gl::error(GL_INVALID_OPERATION); + } + } + } + + gl::Framebuffer *framebuffer = context->getDrawFramebuffer(); + + for (int colorAttachment = 0; colorAttachment < n; colorAttachment++) + { + framebuffer->setDrawBufferState(colorAttachment, bufs[colorAttachment]); + } + + for (int colorAttachment = n; colorAttachment < (int)context->getMaximumRenderTargets(); colorAttachment++) + { + framebuffer->setDrawBufferState(colorAttachment, GL_NONE); + } + } + } + catch (std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY); + } +} + +__eglMustCastToProperFunctionPointerType __stdcall glGetProcAddress(const char *procname) +{ + struct Extension + { + const char *name; + __eglMustCastToProperFunctionPointerType address; + }; + + static const Extension glExtensions[] = + { + {"glTexImage3DOES", (__eglMustCastToProperFunctionPointerType)glTexImage3DOES}, + {"glBlitFramebufferANGLE", (__eglMustCastToProperFunctionPointerType)glBlitFramebufferANGLE}, + {"glRenderbufferStorageMultisampleANGLE", (__eglMustCastToProperFunctionPointerType)glRenderbufferStorageMultisampleANGLE}, + {"glDeleteFencesNV", (__eglMustCastToProperFunctionPointerType)glDeleteFencesNV}, + {"glGenFencesNV", (__eglMustCastToProperFunctionPointerType)glGenFencesNV}, + {"glIsFenceNV", (__eglMustCastToProperFunctionPointerType)glIsFenceNV}, + {"glTestFenceNV", (__eglMustCastToProperFunctionPointerType)glTestFenceNV}, + {"glGetFenceivNV", (__eglMustCastToProperFunctionPointerType)glGetFenceivNV}, + {"glFinishFenceNV", (__eglMustCastToProperFunctionPointerType)glFinishFenceNV}, + {"glSetFenceNV", (__eglMustCastToProperFunctionPointerType)glSetFenceNV}, + {"glGetTranslatedShaderSourceANGLE", (__eglMustCastToProperFunctionPointerType)glGetTranslatedShaderSourceANGLE}, + {"glTexStorage2DEXT", (__eglMustCastToProperFunctionPointerType)glTexStorage2DEXT}, + {"glGetGraphicsResetStatusEXT", (__eglMustCastToProperFunctionPointerType)glGetGraphicsResetStatusEXT}, + {"glReadnPixelsEXT", (__eglMustCastToProperFunctionPointerType)glReadnPixelsEXT}, + {"glGetnUniformfvEXT", (__eglMustCastToProperFunctionPointerType)glGetnUniformfvEXT}, + {"glGetnUniformivEXT", (__eglMustCastToProperFunctionPointerType)glGetnUniformivEXT}, + {"glGenQueriesEXT", (__eglMustCastToProperFunctionPointerType)glGenQueriesEXT}, + {"glDeleteQueriesEXT", (__eglMustCastToProperFunctionPointerType)glDeleteQueriesEXT}, + {"glIsQueryEXT", (__eglMustCastToProperFunctionPointerType)glIsQueryEXT}, + {"glBeginQueryEXT", (__eglMustCastToProperFunctionPointerType)glBeginQueryEXT}, + {"glEndQueryEXT", (__eglMustCastToProperFunctionPointerType)glEndQueryEXT}, + {"glGetQueryivEXT", (__eglMustCastToProperFunctionPointerType)glGetQueryivEXT}, + {"glGetQueryObjectuivEXT", (__eglMustCastToProperFunctionPointerType)glGetQueryObjectuivEXT}, + {"glDrawBuffersEXT", (__eglMustCastToProperFunctionPointerType)glDrawBuffersEXT}, + {"glVertexAttribDivisorANGLE", (__eglMustCastToProperFunctionPointerType)glVertexAttribDivisorANGLE}, + {"glDrawArraysInstancedANGLE", (__eglMustCastToProperFunctionPointerType)glDrawArraysInstancedANGLE}, + {"glDrawElementsInstancedANGLE", (__eglMustCastToProperFunctionPointerType)glDrawElementsInstancedANGLE}, + {"glGetProgramBinaryOES", (__eglMustCastToProperFunctionPointerType)glGetProgramBinaryOES}, + {"glProgramBinaryOES", (__eglMustCastToProperFunctionPointerType)glProgramBinaryOES}, }; + + for (unsigned int ext = 0; ext < ArraySize(glExtensions); ext++) + { + if (strcmp(procname, glExtensions[ext].name) == 0) + { + return (__eglMustCastToProperFunctionPointerType)glExtensions[ext].address; + } + } + + return NULL; +} + +// Non-public functions used by EGL + +bool __stdcall glBindTexImage(egl::Surface *surface) +{ + EVENT("(egl::Surface* surface = 0x%0.8p)", + surface); + + try + { + gl::Context *context = gl::getNonLostContext(); + + if (context) + { + gl::Texture2D *textureObject = context->getTexture2D(); + + if (textureObject->isImmutable()) + { + return false; + } + + if (textureObject) + { + textureObject->bindTexImage(surface); + } + } + } + catch(std::bad_alloc&) + { + return gl::error(GL_OUT_OF_MEMORY, false); + } + + return true; +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.def b/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.def new file mode 100644 index 00000000000..71398b31422 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.def @@ -0,0 +1,185 @@ +LIBRARY libGLESv2 +EXPORTS + glActiveTexture @1 + glAttachShader @2 + glBindAttribLocation @3 + glBindBuffer @4 + glBindFramebuffer @5 + glBindRenderbuffer @6 + glBindTexture @7 + glBlendColor @8 + glBlendEquation @9 + glBlendEquationSeparate @10 + glBlendFunc @11 + glBlendFuncSeparate @12 + glBufferData @13 + glBufferSubData @14 + glCheckFramebufferStatus @15 + glClear @16 + glClearColor @17 + glClearDepthf @18 + glClearStencil @19 + glColorMask @20 + glCompileShader @21 + glCompressedTexImage2D @22 + glCompressedTexSubImage2D @23 + glCopyTexImage2D @24 + glCopyTexSubImage2D @25 + glCreateProgram @26 + glCreateShader @27 + glCullFace @28 + glDeleteBuffers @29 + glDeleteFramebuffers @30 + glDeleteProgram @32 + glDeleteRenderbuffers @33 + glDeleteShader @34 + glDeleteTextures @31 + glDepthFunc @36 + glDepthMask @37 + glDepthRangef @38 + glDetachShader @35 + glDisable @39 + glDisableVertexAttribArray @40 + glDrawArrays @41 + glDrawElements @42 + glEnable @43 + glEnableVertexAttribArray @44 + glFinish @45 + glFlush @46 + glFramebufferRenderbuffer @47 + glFramebufferTexture2D @48 + glFrontFace @49 + glGenBuffers @50 + glGenFramebuffers @52 + glGenRenderbuffers @53 + glGenTextures @54 + glGenerateMipmap @51 + glGetActiveAttrib @55 + glGetActiveUniform @56 + glGetAttachedShaders @57 + glGetAttribLocation @58 + glGetBooleanv @59 + glGetBufferParameteriv @60 + glGetError @61 + glGetFloatv @62 + glGetFramebufferAttachmentParameteriv @63 + glGetIntegerv @64 + glGetProgramInfoLog @66 + glGetProgramiv @65 + glGetRenderbufferParameteriv @67 + glGetShaderInfoLog @69 + glGetShaderPrecisionFormat @70 + glGetShaderSource @71 + glGetShaderiv @68 + glGetString @72 + glGetTexParameterfv @73 + glGetTexParameteriv @74 + glGetUniformLocation @77 + glGetUniformfv @75 + glGetUniformiv @76 + glGetVertexAttribPointerv @80 + glGetVertexAttribfv @78 + glGetVertexAttribiv @79 + glHint @81 + glIsBuffer @82 + glIsEnabled @83 + glIsFramebuffer @84 + glIsProgram @85 + glIsRenderbuffer @86 + glIsShader @87 + glIsTexture @88 + glLineWidth @89 + glLinkProgram @90 + glPixelStorei @91 + glPolygonOffset @92 + glReadPixels @93 + glReleaseShaderCompiler @94 + glRenderbufferStorage @95 + glSampleCoverage @96 + glScissor @97 + glShaderBinary @98 + glShaderSource @99 + glStencilFunc @100 + glStencilFuncSeparate @101 + glStencilMask @102 + glStencilMaskSeparate @103 + glStencilOp @104 + glStencilOpSeparate @105 + glTexImage2D @106 + glTexParameterf @107 + glTexParameterfv @108 + glTexParameteri @109 + glTexParameteriv @110 + glTexSubImage2D @111 + glUniform1f @112 + glUniform1fv @113 + glUniform1i @114 + glUniform1iv @115 + glUniform2f @116 + glUniform2fv @117 + glUniform2i @118 + glUniform2iv @119 + glUniform3f @120 + glUniform3fv @121 + glUniform3i @122 + glUniform3iv @123 + glUniform4f @124 + glUniform4fv @125 + glUniform4i @126 + glUniform4iv @127 + glUniformMatrix2fv @128 + glUniformMatrix3fv @129 + glUniformMatrix4fv @130 + glUseProgram @131 + glValidateProgram @132 + glVertexAttrib1f @133 + glVertexAttrib1fv @134 + glVertexAttrib2f @135 + glVertexAttrib2fv @136 + glVertexAttrib3f @137 + glVertexAttrib3fv @138 + glVertexAttrib4f @139 + glVertexAttrib4fv @140 + glVertexAttribPointer @141 + glViewport @142 + + ; Extensions + glTexImage3DOES @143 + glBlitFramebufferANGLE @149 + glRenderbufferStorageMultisampleANGLE @150 + glDeleteFencesNV @151 + glFinishFenceNV @152 + glGenFencesNV @153 + glGetFenceivNV @154 + glIsFenceNV @155 + glSetFenceNV @156 + glTestFenceNV @157 + glGetTranslatedShaderSourceANGLE @159 + glTexStorage2DEXT @160 + glGetGraphicsResetStatusEXT @161 + glReadnPixelsEXT @162 + glGetnUniformfvEXT @163 + glGetnUniformivEXT @164 + glGenQueriesEXT @165 + glDeleteQueriesEXT @166 + glIsQueryEXT @167 + glBeginQueryEXT @168 + glEndQueryEXT @169 + glGetQueryivEXT @170 + glGetQueryObjectuivEXT @171 + glVertexAttribDivisorANGLE @172 + glDrawArraysInstancedANGLE @173 + glDrawElementsInstancedANGLE @174 + glProgramBinaryOES @175 + glGetProgramBinaryOES @176 + glDrawBuffersEXT @179 + + ; EGL dependencies + glCreateContext @144 NONAME + glDestroyContext @145 NONAME + glMakeCurrent @146 NONAME + glGetCurrentContext @147 NONAME + glGetProcAddress @148 NONAME + glBindTexImage @158 NONAME + glCreateRenderer @177 NONAME + glDestroyRenderer @178 NONAME \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.rc b/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.rc new file mode 100644 index 00000000000..0ad21e440e7 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.rc @@ -0,0 +1,102 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include +#include "../common/version.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "#include ""../common/version.h""\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION + PRODUCTVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "FileDescription", "ANGLE libGLESv2 Dynamic Link Library" + VALUE "FileVersion", VERSION_STRING + VALUE "InternalName", "libGLESv2" + VALUE "LegalCopyright", "Copyright (C) 2011 Google Inc." + VALUE "OriginalFilename", "libGLESv2.dll" + VALUE "PrivateBuild", VERSION_STRING + VALUE "ProductName", "ANGLE libGLESv2 Dynamic Link Library" + VALUE "ProductVersion", VERSION_STRING + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.vcxproj b/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.vcxproj new file mode 100644 index 00000000000..ddcd9ed842a --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.vcxproj @@ -0,0 +1,423 @@ +锘 + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {B5871A7A-968C-42E3-A33B-981E6F448E78} + libGLESv2 + Win32Proj + + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(IncludePath) + $(LibraryPath) + $(IncludePath) + $(LibraryPath) + $(IncludePath) + $(IncludePath) + $(LibraryPath) + $(LibraryPath) + + + + Disabled + $(ProjectDir);$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBGLESV2_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + Use + Level4 + true + EditAndContinue + 4100;4127;4189;4239;4244;4245;4512;4702;%(DisableSpecificWarnings) + precompiled.h + $(ExternalCompilerOptions) %(AdditionalOptions) + + + d3d9.lib;dxguid.lib;%(AdditionalDependencies) + libGLESv2.def + true + Windows + + + MachineX86 + + + %40echo on +mkdir "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libGLESv2.dll" "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" +%40echo off + + + + + + MaxSpeed + AnySuitable + $(ProjectDir);$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + ANGLE_DISABLE_TRACE;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBGLESV2_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions) + MultiThreaded + Use + Level4 + true + ProgramDatabase + 4100;4127;4189;4239;4244;4245;4512;4702;4718;%(DisableSpecificWarnings) + precompiled.h + $(ExternalCompilerOptions) %(AdditionalOptions) + + + d3d9.lib;dxguid.lib;%(AdditionalDependencies) + false + libGLESv2.def + true + Windows + true + true + + + MachineX86 + + + %40echo on +mkdir "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libGLESv2.dll" "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" +%40echo off + + + + + + X64 + + + Disabled + $(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBGLESV2_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + Use + Level4 + 4100;4127;4189;4239;4244;4245;4512;4702;4718;%(DisableSpecificWarnings) + ProgramDatabase + true + precompiled.h + $(ExternalCompilerOptions) %(AdditionalOptions) + + + d3d9.lib;dxguid.lib;%(AdditionalDependencies) + libGLESv2.def + true + Windows + + + MachineX64 + + + %40echo on +mkdir "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libGLESv2.dll" "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" +%40echo off + + + + + + X64 + + + MaxSpeed + AnySuitable + $(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBGLESV2_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions) + MultiThreaded + Use + Level4 + 4100;4127;4189;4239;4244;4245;4512;4702;4718;%(DisableSpecificWarnings) + ProgramDatabase + true + precompiled.h + $(ExternalCompilerOptions) %(AdditionalOptions) + + + d3d9.lib;dxguid.lib;%(AdditionalDependencies) + false + libGLESv2.def + true + Windows + true + true + + + MachineX64 + + + %40echo on +mkdir "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libGLESv2.dll" "$(ProjectDir)..\..\lib\$(Configuration)\" +copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" +%40echo off + + + + + + NotUsing + NotUsing + NotUsing + NotUsing + + + + + NotUsing + NotUsing + NotUsing + NotUsing + + + + + + + + + Create + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {fbe32df3-0fb0-4f2f-a424-2c21bd7bc325} + + + {5b3a6db8-1e7e-40d7-92b9-da8aae619fad} + + + {5620f0e4-6c43-49bc-a178-b804e1a0c3a7} + false + true + false + true + true + + + + + + \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.vcxproj.filters b/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.vcxproj.filters new file mode 100644 index 00000000000..09839113ac3 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.vcxproj.filters @@ -0,0 +1,509 @@ +锘 + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {dc1dac40-3563-41be-9e2d-c2588d8670fb} + + + {b0005d2f-9b4a-4659-a270-138811174f73} + + + {562e469d-1abb-44bc-b7fa-55eefbf75acc} + + + {6dc0306f-6396-4e80-9ef9-09b58aa53c4d} + + + {6332705b-1999-4292-a38b-dd47329734aa} + + + {93a76964-77a3-4b20-a6f5-e14e762d4e14} + + + {3877f35e-845c-4e95-b9a5-c7d8b9f307c5} + + + {2d70fd60-6dea-489f-ac09-16890d325669} + + + {60e14f04-2cf2-4a07-b3ef-7c68a82ba2d9} + + + {72db61d3-e081-4b58-bc63-a04a8a70585f} + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\Renderer + + + Source Files\Renderer + + + Source Files\Renderer + + + Third Party\MurmurHash + + + Source Files\Renderer + + + Source Files\Renderer + + + Renderer + + + Source Files\Renderer + + + Source Files\Renderer + + + Source Files\Renderer + + + Source Files + + + Source Files\Renderer + + + Source Files\Renderer11 + + + Source Files\Renderer11 + + + Source Files\Renderer11 + + + Source Files\Renderer11 + + + Source Files\Renderer11 + + + Source Files\Renderer11 + + + Source Files\Renderer11 + + + Source Files\Renderer11 + + + Source Files\Renderer11 + + + Source Files\Renderer11 + + + Source Files\Renderer11 + + + Source Files\Renderer11 + + + Source Files\Renderer9 + + + Source Files\Renderer9 + + + Source Files\Renderer9 + + + Source Files\Renderer9 + + + Source Files\Renderer9 + + + Source Files\Renderer9 + + + Source Files\Renderer9 + + + Source Files\Renderer9 + + + Source Files\Renderer9 + + + Source Files\Renderer9 + + + Source Files\Renderer9 + + + Source Files\Renderer9 + + + Source Files\Renderer9 + + + Source Files\Renderer11 + + + Source Files\Renderer11 + + + Source Files\Renderer9 + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Third Party\MurmurHash + + + Header Files + + + Shaders\Compiled + + + Shaders\Compiled + + + Shaders\Compiled + + + Shaders\Compiled + + + Shaders\Compiled + + + Shaders\Compiled + + + Shaders\Compiled + + + Shaders\Compiled + + + Shaders\Compiled + + + Shaders\Compiled + + + Shaders\Compiled + + + Shaders\Compiled + + + Shaders\Compiled + + + Header Files + + + Header Files + + + Header Files\Renderer + + + Header Files\Renderer + + + Header Files\Renderer + + + Header Files\Renderer + + + Header Files\Renderer + + + Header Files\Renderer + + + Header Files\Renderer + + + Header Files\Renderer + + + Header Files\Renderer + + + Header Files\Renderer + + + Header Files\Renderer + + + Header Files\Renderer + + + Header Files\Renderer + + + Header Files\Renderer + + + Header Files\Renderer + + + Header Files\Renderer11 + + + Header Files\Renderer11 + + + Header Files\Renderer11 + + + Header Files\Renderer11 + + + Header Files\Renderer11 + + + Header Files\Renderer11 + + + Header Files\Renderer11 + + + Header Files\Renderer11 + + + Header Files\Renderer11 + + + Header Files\Renderer9 + + + Header Files\Renderer9 + + + Header Files\Renderer9 + + + Header Files\Renderer9 + + + Header Files\Renderer9 + + + Header Files\Renderer9 + + + Header Files\Renderer9 + + + Header Files\Renderer9 + + + Header Files\Renderer9 + + + Header Files\Renderer9 + + + Header Files\Renderer9 + + + Header Files\Renderer9 + + + Header Files\Renderer11 + + + Header Files\Renderer11 + + + Header Files\Renderer11 + + + Header Files\Renderer\Renderer9 + + + Header Files\Renderer\Renderer11 + + + Header Files\Renderer9 + + + Header Files\Renderer9 + + + Header Files\Renderer11 + + + Header Files\Renderer11 + + + Header Files\Renderer9 + + + Header Files + + + Header Files + + + + + Shaders + + + Shaders + + + Shaders + + + Shaders + + + Shaders + + + + + + + \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/main.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/main.cpp new file mode 100644 index 00000000000..6d7a241340f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/main.cpp @@ -0,0 +1,155 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// main.cpp: DLL entry point and management of thread-local data. + +#include "libGLESv2/main.h" + +#include "libGLESv2/Context.h" + +static DWORD currentTLS = TLS_OUT_OF_INDEXES; + +extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) +{ + switch (reason) + { + case DLL_PROCESS_ATTACH: + { + currentTLS = TlsAlloc(); + + if (currentTLS == TLS_OUT_OF_INDEXES) + { + return FALSE; + } + } + // Fall throught to initialize index + case DLL_THREAD_ATTACH: + { + gl::Current *current = (gl::Current*)LocalAlloc(LPTR, sizeof(gl::Current)); + + if (current) + { + TlsSetValue(currentTLS, current); + + current->context = NULL; + current->display = NULL; + } + } + break; + case DLL_THREAD_DETACH: + { + void *current = TlsGetValue(currentTLS); + + if (current) + { + LocalFree((HLOCAL)current); + } + } + break; + case DLL_PROCESS_DETACH: + { + void *current = TlsGetValue(currentTLS); + + if (current) + { + LocalFree((HLOCAL)current); + } + + TlsFree(currentTLS); + } + break; + default: + break; + } + + return TRUE; +} + +namespace gl +{ +void makeCurrent(Context *context, egl::Display *display, egl::Surface *surface) +{ + Current *current = (Current*)TlsGetValue(currentTLS); + + current->context = context; + current->display = display; + + if (context && display && surface) + { + context->makeCurrent(surface); + } +} + +Context *getContext() +{ + Current *current = (Current*)TlsGetValue(currentTLS); + + return current->context; +} + +Context *getNonLostContext() +{ + Context *context = getContext(); + + if (context) + { + if (context->isContextLost()) + { + gl::error(GL_OUT_OF_MEMORY); + return NULL; + } + else + { + return context; + } + } + return NULL; +} + +egl::Display *getDisplay() +{ + Current *current = (Current*)TlsGetValue(currentTLS); + + return current->display; +} + +// Records an error code +void error(GLenum errorCode) +{ + gl::Context *context = glGetCurrentContext(); + + if (context) + { + switch (errorCode) + { + case GL_INVALID_ENUM: + context->recordInvalidEnum(); + TRACE("\t! Error generated: invalid enum\n"); + break; + case GL_INVALID_VALUE: + context->recordInvalidValue(); + TRACE("\t! Error generated: invalid value\n"); + break; + case GL_INVALID_OPERATION: + context->recordInvalidOperation(); + TRACE("\t! Error generated: invalid operation\n"); + break; + case GL_OUT_OF_MEMORY: + context->recordOutOfMemory(); + TRACE("\t! Error generated: out of memory\n"); + break; + case GL_INVALID_FRAMEBUFFER_OPERATION: + context->recordInvalidFramebufferOperation(); + TRACE("\t! Error generated: invalid framebuffer operation\n"); + break; + default: UNREACHABLE(); + } + } +} + +} + diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/main.h b/Source/ThirdParty/ANGLE/src/libGLESv2/main.h new file mode 100644 index 00000000000..196afaeab67 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/main.h @@ -0,0 +1,68 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// main.h: Management of thread-local data. + +#ifndef LIBGLESV2_MAIN_H_ +#define LIBGLESV2_MAIN_H_ + +#include "common/debug.h" +#include "common/system.h" + +namespace egl +{ +class Display; +class Surface; +} + +namespace gl +{ +class Context; + +struct Current +{ + Context *context; + egl::Display *display; +}; + +void makeCurrent(Context *context, egl::Display *display, egl::Surface *surface); + +Context *getContext(); +Context *getNonLostContext(); +egl::Display *getDisplay(); + +void error(GLenum errorCode); + +template +const T &error(GLenum errorCode, const T &returnValue) +{ + error(errorCode); + + return returnValue; +} + +} + +namespace rx +{ +class Renderer; +} + +extern "C" +{ +// Exported functions for use by EGL +gl::Context *glCreateContext(const gl::Context *shareContext, rx::Renderer *renderer, bool notifyResets, bool robustAccess); +void glDestroyContext(gl::Context *context); +void glMakeCurrent(gl::Context *context, egl::Display *display, egl::Surface *surface); +gl::Context *glGetCurrentContext(); +rx::Renderer *glCreateRenderer(egl::Display *display, HDC hDc, EGLNativeDisplayType displayId); +void glDestroyRenderer(rx::Renderer *renderer); + +__eglMustCastToProperFunctionPointerType __stdcall glGetProcAddress(const char *procname); +bool __stdcall glBindTexImage(egl::Surface *surface); +} + +#endif // LIBGLESV2_MAIN_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/mathutil.h b/Source/ThirdParty/ANGLE/src/libGLESv2/mathutil.h new file mode 100644 index 00000000000..bb48b94eaf7 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/mathutil.h @@ -0,0 +1,161 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// mathutil.h: Math and bit manipulation functions. + +#ifndef LIBGLESV2_MATHUTIL_H_ +#define LIBGLESV2_MATHUTIL_H_ + +#include + +#include "common/system.h" +#include "common/debug.h" + +namespace gl +{ +struct Vector4 +{ + Vector4() {} + Vector4(float x, float y, float z, float w) : x(x), y(y), z(z), w(w) {} + + float x; + float y; + float z; + float w; +}; + +inline bool isPow2(int x) +{ + return (x & (x - 1)) == 0 && (x != 0); +} + +inline int log2(int x) +{ + int r = 0; + while ((x >> r) > 1) r++; + return r; +} + +inline unsigned int ceilPow2(unsigned int x) +{ + if (x != 0) x--; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + x++; + + return x; +} + +template +inline T clamp(T x, MIN min, MAX max) +{ + // Since NaNs fail all comparison tests, a NaN value will default to min + return x > min ? (x > max ? max : x) : min; +} + +inline float clamp01(float x) +{ + return clamp(x, 0.0f, 1.0f); +} + +template +inline unsigned int unorm(float x) +{ + const unsigned int max = 0xFFFFFFFF >> (32 - n); + + if (x > 1) + { + return max; + } + else if (x < 0) + { + return 0; + } + else + { + return (unsigned int)(max * x + 0.5f); + } +} + +inline bool supportsSSE2() +{ + static bool checked = false; + static bool supports = false; + + if (checked) + { + return supports; + } + + int info[4]; + __cpuid(info, 0); + + if (info[0] >= 1) + { + __cpuid(info, 1); + + supports = (info[3] >> 26) & 1; + } + + checked = true; + + return supports; +} + +inline unsigned short float32ToFloat16(float fp32) +{ + unsigned int fp32i = (unsigned int&)fp32; + unsigned int sign = (fp32i & 0x80000000) >> 16; + unsigned int abs = fp32i & 0x7FFFFFFF; + + if(abs > 0x47FFEFFF) // Infinity + { + return sign | 0x7FFF; + } + else if(abs < 0x38800000) // Denormal + { + unsigned int mantissa = (abs & 0x007FFFFF) | 0x00800000; + int e = 113 - (abs >> 23); + + if(e < 24) + { + abs = mantissa >> e; + } + else + { + abs = 0; + } + + return sign | (abs + 0x00000FFF + ((abs >> 13) & 1)) >> 13; + } + else + { + return sign | (abs + 0xC8000000 + 0x00000FFF + ((abs >> 13) & 1)) >> 13; + } +} + +float float16ToFloat32(unsigned short h); + +} + +namespace rx +{ + +struct Range +{ + Range() {} + Range(int lo, int hi) : start(lo), end(hi) { ASSERT(lo <= hi); } + + int start; + int end; +}; + +} + +#endif // LIBGLESV2_MATHUTIL_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/precompiled.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/precompiled.cpp new file mode 100644 index 00000000000..2621cd6ce3e --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/precompiled.cpp @@ -0,0 +1,9 @@ +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// precompiled.cpp: Precompiled header source file for libGLESv2. + +#include "precompiled.h" diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/precompiled.h b/Source/ThirdParty/ANGLE/src/libGLESv2/precompiled.h new file mode 100644 index 00000000000..a850d57e68e --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/precompiled.h @@ -0,0 +1,42 @@ +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// precompiled.h: Precompiled header file for libGLESv2. + +#define GL_APICALL +#include +#include + +#define EGLAPI +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include // for std::min and std::max +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#ifdef _MSC_VER +#include +#endif diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Blit.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Blit.cpp new file mode 100644 index 00000000000..2a3ce39c632 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Blit.cpp @@ -0,0 +1,595 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Blit.cpp: Surface copy utility class. + +#include "libGLESv2/renderer/Blit.h" + +#include "libGLESv2/main.h" +#include "libGLESv2/renderer/renderer9_utils.h" +#include "libGLESv2/renderer/TextureStorage9.h" +#include "libGLESv2/renderer/RenderTarget9.h" +#include "libGLESv2/renderer/Renderer9.h" +#include "libGLESv2/Framebuffer.h" +#include "libGLESv2/Renderbuffer.h" + +namespace +{ +#include "libGLESv2/renderer/shaders/compiled/standardvs.h" +#include "libGLESv2/renderer/shaders/compiled/flipyvs.h" +#include "libGLESv2/renderer/shaders/compiled/passthroughps.h" +#include "libGLESv2/renderer/shaders/compiled/luminanceps.h" +#include "libGLESv2/renderer/shaders/compiled/componentmaskps.h" + +const BYTE* const g_shaderCode[] = +{ + g_vs20_standardvs, + g_vs20_flipyvs, + g_ps20_passthroughps, + g_ps20_luminanceps, + g_ps20_componentmaskps +}; + +const size_t g_shaderSize[] = +{ + sizeof(g_vs20_standardvs), + sizeof(g_vs20_flipyvs), + sizeof(g_ps20_passthroughps), + sizeof(g_ps20_luminanceps), + sizeof(g_ps20_componentmaskps) +}; +} + +namespace rx +{ +Blit::Blit(rx::Renderer9 *renderer) + : mRenderer(renderer), mQuadVertexBuffer(NULL), mQuadVertexDeclaration(NULL), mSavedStateBlock(NULL), mSavedRenderTarget(NULL), mSavedDepthStencil(NULL) +{ + initGeometry(); + memset(mCompiledShaders, 0, sizeof(mCompiledShaders)); +} + +Blit::~Blit() +{ + if (mSavedStateBlock) mSavedStateBlock->Release(); + if (mQuadVertexBuffer) mQuadVertexBuffer->Release(); + if (mQuadVertexDeclaration) mQuadVertexDeclaration->Release(); + + for (int i = 0; i < SHADER_COUNT; i++) + { + if (mCompiledShaders[i]) + { + mCompiledShaders[i]->Release(); + } + } +} + +void Blit::initGeometry() +{ + static const float quad[] = + { + -1, -1, + -1, 1, + 1, -1, + 1, 1 + }; + + IDirect3DDevice9 *device = mRenderer->getDevice(); + + HRESULT result = device->CreateVertexBuffer(sizeof(quad), D3DUSAGE_WRITEONLY, 0, D3DPOOL_DEFAULT, &mQuadVertexBuffer, NULL); + + if (FAILED(result)) + { + ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY); + return gl::error(GL_OUT_OF_MEMORY); + } + + void *lockPtr = NULL; + result = mQuadVertexBuffer->Lock(0, 0, &lockPtr, 0); + + if (FAILED(result) || lockPtr == NULL) + { + ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY); + return gl::error(GL_OUT_OF_MEMORY); + } + + memcpy(lockPtr, quad, sizeof(quad)); + mQuadVertexBuffer->Unlock(); + + static const D3DVERTEXELEMENT9 elements[] = + { + { 0, 0, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 }, + D3DDECL_END() + }; + + result = device->CreateVertexDeclaration(elements, &mQuadVertexDeclaration); + + if (FAILED(result)) + { + ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY); + return gl::error(GL_OUT_OF_MEMORY); + } +} + +template +bool Blit::setShader(ShaderId source, const char *profile, + D3DShaderType *(rx::Renderer9::*createShader)(const DWORD *, size_t length), + HRESULT (WINAPI IDirect3DDevice9::*setShader)(D3DShaderType*)) +{ + IDirect3DDevice9 *device = mRenderer->getDevice(); + + D3DShaderType *shader; + + if (mCompiledShaders[source] != NULL) + { + shader = static_cast(mCompiledShaders[source]); + } + else + { + const BYTE* shaderCode = g_shaderCode[source]; + size_t shaderSize = g_shaderSize[source]; + + shader = (mRenderer->*createShader)(reinterpret_cast(shaderCode), shaderSize); + if (!shader) + { + ERR("Failed to create shader for blit operation"); + return false; + } + + mCompiledShaders[source] = shader; + } + + HRESULT hr = (device->*setShader)(shader); + + if (FAILED(hr)) + { + ERR("Failed to set shader for blit operation"); + return false; + } + + return true; +} + +bool Blit::setVertexShader(ShaderId shader) +{ + return setShader(shader, "vs_2_0", &rx::Renderer9::createVertexShader, &IDirect3DDevice9::SetVertexShader); +} + +bool Blit::setPixelShader(ShaderId shader) +{ + return setShader(shader, "ps_2_0", &rx::Renderer9::createPixelShader, &IDirect3DDevice9::SetPixelShader); +} + +RECT Blit::getSurfaceRect(IDirect3DSurface9 *surface) const +{ + D3DSURFACE_DESC desc; + surface->GetDesc(&desc); + + RECT rect; + rect.left = 0; + rect.top = 0; + rect.right = desc.Width; + rect.bottom = desc.Height; + + return rect; +} + +bool Blit::boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest) +{ + IDirect3DTexture9 *texture = copySurfaceToTexture(source, getSurfaceRect(source)); + if (!texture) + { + return false; + } + + IDirect3DDevice9 *device = mRenderer->getDevice(); + + saveState(); + + device->SetTexture(0, texture); + device->SetRenderTarget(0, dest); + + setVertexShader(SHADER_VS_STANDARD); + setPixelShader(SHADER_PS_PASSTHROUGH); + + setCommonBlitState(); + device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); + device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); + + setViewport(getSurfaceRect(dest), 0, 0); + + render(); + + texture->Release(); + + restoreState(); + + return true; +} + +bool Blit::copy(gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, TextureStorageInterface2D *storage, GLint level) +{ + RenderTarget9 *renderTarget = NULL; + IDirect3DSurface9 *source = NULL; + gl::Renderbuffer *colorbuffer = framebuffer->getColorbuffer(0); + + if (colorbuffer) + { + renderTarget = RenderTarget9::makeRenderTarget9(colorbuffer->getRenderTarget()); + } + + if (renderTarget) + { + source = renderTarget->getSurface(); + } + + if (!source) + { + ERR("Failed to retrieve the render target."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + TextureStorage9_2D *storage9 = TextureStorage9_2D::makeTextureStorage9_2D(storage->getStorageInstance()); + IDirect3DSurface9 *destSurface = storage9->getSurfaceLevel(level, true); + bool result = false; + + if (destSurface) + { + result = copy(source, sourceRect, destFormat, xoffset, yoffset, destSurface); + destSurface->Release(); + } + + source->Release(); + return result; +} + +bool Blit::copy(gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, TextureStorageInterfaceCube *storage, GLenum target, GLint level) +{ + RenderTarget9 *renderTarget = NULL; + IDirect3DSurface9 *source = NULL; + gl::Renderbuffer *colorbuffer = framebuffer->getColorbuffer(0); + + if (colorbuffer) + { + renderTarget = RenderTarget9::makeRenderTarget9(colorbuffer->getRenderTarget()); + } + + if (renderTarget) + { + source = renderTarget->getSurface(); + } + + if (!source) + { + ERR("Failed to retrieve the render target."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + TextureStorage9_Cube *storage9 = TextureStorage9_Cube::makeTextureStorage9_Cube(storage->getStorageInstance()); + IDirect3DSurface9 *destSurface = storage9->getCubeMapSurface(target, level, true); + bool result = false; + + if (destSurface) + { + result = copy(source, sourceRect, destFormat, xoffset, yoffset, destSurface); + destSurface->Release(); + } + + source->Release(); + return result; +} + +bool Blit::copy(IDirect3DSurface9 *source, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, IDirect3DSurface9 *dest) +{ + if (!dest) + { + return false; + } + + IDirect3DDevice9 *device = mRenderer->getDevice(); + + D3DSURFACE_DESC sourceDesc; + D3DSURFACE_DESC destDesc; + source->GetDesc(&sourceDesc); + dest->GetDesc(&destDesc); + + if (sourceDesc.Format == destDesc.Format && destDesc.Usage & D3DUSAGE_RENDERTARGET && + d3d9_gl::IsFormatChannelEquivalent(destDesc.Format, destFormat)) // Can use StretchRect + { + RECT destRect = {xoffset, yoffset, xoffset + (sourceRect.right - sourceRect.left), yoffset + (sourceRect.bottom - sourceRect.top)}; + HRESULT result = device->StretchRect(source, &sourceRect, dest, &destRect, D3DTEXF_POINT); + + if (FAILED(result)) + { + ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY); + return gl::error(GL_OUT_OF_MEMORY, false); + } + } + else + { + return formatConvert(source, sourceRect, destFormat, xoffset, yoffset, dest); + } + return true; +} + +bool Blit::formatConvert(IDirect3DSurface9 *source, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, IDirect3DSurface9 *dest) +{ + IDirect3DTexture9 *texture = copySurfaceToTexture(source, sourceRect); + if (!texture) + { + return false; + } + + IDirect3DDevice9 *device = mRenderer->getDevice(); + + saveState(); + + device->SetTexture(0, texture); + device->SetRenderTarget(0, dest); + + setViewport(sourceRect, xoffset, yoffset); + + setCommonBlitState(); + if (setFormatConvertShaders(destFormat)) + { + render(); + } + + texture->Release(); + + restoreState(); + + return true; +} + +bool Blit::setFormatConvertShaders(GLenum destFormat) +{ + bool okay = setVertexShader(SHADER_VS_STANDARD); + + switch (destFormat) + { + default: UNREACHABLE(); + case GL_RGBA: + case GL_BGRA_EXT: + case GL_RGB: + case GL_ALPHA: + okay = okay && setPixelShader(SHADER_PS_COMPONENTMASK); + break; + + case GL_LUMINANCE: + case GL_LUMINANCE_ALPHA: + okay = okay && setPixelShader(SHADER_PS_LUMINANCE); + break; + } + + if (!okay) + { + return false; + } + + enum { X = 0, Y = 1, Z = 2, W = 3 }; + + // The meaning of this constant depends on the shader that was selected. + // See the shader assembly code above for details. + float psConst0[4] = { 0, 0, 0, 0 }; + + switch (destFormat) + { + default: UNREACHABLE(); + case GL_RGBA: + case GL_BGRA_EXT: + psConst0[X] = 1; + psConst0[Z] = 1; + break; + + case GL_RGB: + psConst0[X] = 1; + psConst0[W] = 1; + break; + + case GL_ALPHA: + psConst0[Z] = 1; + break; + + case GL_LUMINANCE: + psConst0[Y] = 1; + break; + + case GL_LUMINANCE_ALPHA: + psConst0[X] = 1; + break; + } + + mRenderer->getDevice()->SetPixelShaderConstantF(0, psConst0, 1); + + return true; +} + +IDirect3DTexture9 *Blit::copySurfaceToTexture(IDirect3DSurface9 *surface, const RECT &sourceRect) +{ + if (!surface) + { + return NULL; + } + + IDirect3DDevice9 *device = mRenderer->getDevice(); + + D3DSURFACE_DESC sourceDesc; + surface->GetDesc(&sourceDesc); + + // Copy the render target into a texture + IDirect3DTexture9 *texture; + HRESULT result = device->CreateTexture(sourceRect.right - sourceRect.left, sourceRect.bottom - sourceRect.top, 1, D3DUSAGE_RENDERTARGET, sourceDesc.Format, D3DPOOL_DEFAULT, &texture, NULL); + + if (FAILED(result)) + { + ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY); + return gl::error(GL_OUT_OF_MEMORY, (IDirect3DTexture9*)NULL); + } + + IDirect3DSurface9 *textureSurface; + result = texture->GetSurfaceLevel(0, &textureSurface); + + if (FAILED(result)) + { + ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY); + texture->Release(); + return gl::error(GL_OUT_OF_MEMORY, (IDirect3DTexture9*)NULL); + } + + mRenderer->endScene(); + result = device->StretchRect(surface, &sourceRect, textureSurface, NULL, D3DTEXF_NONE); + + textureSurface->Release(); + + if (FAILED(result)) + { + ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY); + texture->Release(); + return gl::error(GL_OUT_OF_MEMORY, (IDirect3DTexture9*)NULL); + } + + return texture; +} + +void Blit::setViewport(const RECT &sourceRect, GLint xoffset, GLint yoffset) +{ + IDirect3DDevice9 *device = mRenderer->getDevice(); + + D3DVIEWPORT9 vp; + vp.X = xoffset; + vp.Y = yoffset; + vp.Width = sourceRect.right - sourceRect.left; + vp.Height = sourceRect.bottom - sourceRect.top; + vp.MinZ = 0.0f; + vp.MaxZ = 1.0f; + device->SetViewport(&vp); + + float halfPixelAdjust[4] = { -1.0f/vp.Width, 1.0f/vp.Height, 0, 0 }; + device->SetVertexShaderConstantF(0, halfPixelAdjust, 1); +} + +void Blit::setCommonBlitState() +{ + IDirect3DDevice9 *device = mRenderer->getDevice(); + + device->SetDepthStencilSurface(NULL); + + device->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID); + device->SetRenderState(D3DRS_ALPHATESTENABLE, FALSE); + device->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE); + device->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); + device->SetRenderState(D3DRS_CLIPPLANEENABLE, 0); + device->SetRenderState(D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_ALPHA | D3DCOLORWRITEENABLE_BLUE | D3DCOLORWRITEENABLE_GREEN | D3DCOLORWRITEENABLE_RED); + device->SetRenderState(D3DRS_SRGBWRITEENABLE, FALSE); + device->SetRenderState(D3DRS_SCISSORTESTENABLE, FALSE); + + device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_POINT); + device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT); + device->SetSamplerState(0, D3DSAMP_SRGBTEXTURE, FALSE); + device->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP); + device->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP); + + RECT scissorRect = {0}; // Scissoring is disabled for flipping, but we need this to capture and restore the old rectangle + device->SetScissorRect(&scissorRect); + + for(int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++) + { + device->SetStreamSourceFreq(i, 1); + } +} + +void Blit::render() +{ + IDirect3DDevice9 *device = mRenderer->getDevice(); + + HRESULT hr = device->SetStreamSource(0, mQuadVertexBuffer, 0, 2 * sizeof(float)); + hr = device->SetVertexDeclaration(mQuadVertexDeclaration); + + mRenderer->startScene(); + hr = device->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2); +} + +void Blit::saveState() +{ + IDirect3DDevice9 *device = mRenderer->getDevice(); + + HRESULT hr; + + device->GetDepthStencilSurface(&mSavedDepthStencil); + device->GetRenderTarget(0, &mSavedRenderTarget); + + if (mSavedStateBlock == NULL) + { + hr = device->BeginStateBlock(); + ASSERT(SUCCEEDED(hr) || hr == D3DERR_OUTOFVIDEOMEMORY || hr == E_OUTOFMEMORY); + + setCommonBlitState(); + + static const float dummyConst[4] = { 0, 0, 0, 0 }; + + device->SetVertexShader(NULL); + device->SetVertexShaderConstantF(0, dummyConst, 1); + device->SetPixelShader(NULL); + device->SetPixelShaderConstantF(0, dummyConst, 1); + + D3DVIEWPORT9 dummyVp; + dummyVp.X = 0; + dummyVp.Y = 0; + dummyVp.Width = 1; + dummyVp.Height = 1; + dummyVp.MinZ = 0; + dummyVp.MaxZ = 1; + + device->SetViewport(&dummyVp); + + device->SetTexture(0, NULL); + + device->SetStreamSource(0, mQuadVertexBuffer, 0, 0); + + device->SetVertexDeclaration(mQuadVertexDeclaration); + + hr = device->EndStateBlock(&mSavedStateBlock); + ASSERT(SUCCEEDED(hr) || hr == D3DERR_OUTOFVIDEOMEMORY || hr == E_OUTOFMEMORY); + } + + ASSERT(mSavedStateBlock != NULL); + + if (mSavedStateBlock != NULL) + { + hr = mSavedStateBlock->Capture(); + ASSERT(SUCCEEDED(hr)); + } +} + +void Blit::restoreState() +{ + IDirect3DDevice9 *device = mRenderer->getDevice(); + + device->SetDepthStencilSurface(mSavedDepthStencil); + if (mSavedDepthStencil != NULL) + { + mSavedDepthStencil->Release(); + mSavedDepthStencil = NULL; + } + + device->SetRenderTarget(0, mSavedRenderTarget); + if (mSavedRenderTarget != NULL) + { + mSavedRenderTarget->Release(); + mSavedRenderTarget = NULL; + } + + ASSERT(mSavedStateBlock != NULL); + + if (mSavedStateBlock != NULL) + { + mSavedStateBlock->Apply(); + } +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Blit.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Blit.h new file mode 100644 index 00000000000..3718028e662 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Blit.h @@ -0,0 +1,94 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Blit.cpp: Surface copy utility class. + +#ifndef LIBGLESV2_BLIT_H_ +#define LIBGLESV2_BLIT_H_ + +#include "common/angleutils.h" + +namespace gl +{ +class Framebuffer; +} + +namespace rx +{ +class Renderer9; +class TextureStorageInterface2D; +class TextureStorageInterfaceCube; + +class Blit +{ + public: + explicit Blit(Renderer9 *renderer); + ~Blit(); + + // Copy from source surface to dest surface. + // sourceRect, xoffset, yoffset are in D3D coordinates (0,0 in upper-left) + bool copy(gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, TextureStorageInterface2D *storage, GLint level); + bool copy(gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, TextureStorageInterfaceCube *storage, GLenum target, GLint level); + + // Copy from source surface to dest surface. + // sourceRect, xoffset, yoffset are in D3D coordinates (0,0 in upper-left) + // source is interpreted as RGBA and destFormat specifies the desired result format. For example, if destFormat = GL_RGB, the alpha channel will be forced to 0. + bool formatConvert(IDirect3DSurface9 *source, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, IDirect3DSurface9 *dest); + + // 2x2 box filter sample from source to dest. + // Requires that source is RGB(A) and dest has the same format as source. + bool boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest); + + private: + rx::Renderer9 *mRenderer; + + IDirect3DVertexBuffer9 *mQuadVertexBuffer; + IDirect3DVertexDeclaration9 *mQuadVertexDeclaration; + + void initGeometry(); + + bool setFormatConvertShaders(GLenum destFormat); + + bool copy(IDirect3DSurface9 *source, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, IDirect3DSurface9 *dest); + IDirect3DTexture9 *copySurfaceToTexture(IDirect3DSurface9 *surface, const RECT &sourceRect); + void setViewport(const RECT &sourceRect, GLint xoffset, GLint yoffset); + void setCommonBlitState(); + RECT getSurfaceRect(IDirect3DSurface9 *surface) const; + + // This enum is used to index mCompiledShaders and mShaderSource. + enum ShaderId + { + SHADER_VS_STANDARD, + SHADER_VS_FLIPY, + SHADER_PS_PASSTHROUGH, + SHADER_PS_LUMINANCE, + SHADER_PS_COMPONENTMASK, + SHADER_COUNT + }; + + // This actually contains IDirect3DVertexShader9 or IDirect3DPixelShader9 casted to IUnknown. + IUnknown *mCompiledShaders[SHADER_COUNT]; + + template + bool setShader(ShaderId source, const char *profile, + D3DShaderType *(Renderer9::*createShader)(const DWORD *, size_t length), + HRESULT (WINAPI IDirect3DDevice9::*setShader)(D3DShaderType*)); + + bool setVertexShader(ShaderId shader); + bool setPixelShader(ShaderId shader); + void render(); + + void saveState(); + void restoreState(); + IDirect3DStateBlock9 *mSavedStateBlock; + IDirect3DSurface9 *mSavedRenderTarget; + IDirect3DSurface9 *mSavedDepthStencil; + + DISALLOW_COPY_AND_ASSIGN(Blit); +}; +} + +#endif // LIBGLESV2_BLIT_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage.cpp new file mode 100644 index 00000000000..a49b7bab842 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage.cpp @@ -0,0 +1,40 @@ +#include "precompiled.h" +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// BufferStorage.cpp Defines the abstract BufferStorage class. + +#include "libGLESv2/renderer/BufferStorage.h" + +namespace rx +{ + +unsigned int BufferStorage::mNextSerial = 1; + +BufferStorage::BufferStorage() +{ + updateSerial(); +} + +BufferStorage::~BufferStorage() +{ +} + +unsigned int BufferStorage::getSerial() const +{ + return mSerial; +} + +void BufferStorage::updateSerial() +{ + mSerial = mNextSerial++; +} + +void BufferStorage::markBufferUsage() +{ +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage.h new file mode 100644 index 00000000000..ace1a11bae0 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage.h @@ -0,0 +1,44 @@ +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// BufferStorage.h Defines the abstract BufferStorage class. + +#ifndef LIBGLESV2_RENDERER_BUFFERSTORAGE_H_ +#define LIBGLESV2_RENDERER_BUFFERSTORAGE_H_ + +#include "common/angleutils.h" + +namespace rx +{ + +class BufferStorage +{ + public: + BufferStorage(); + virtual ~BufferStorage(); + + // The data returned is only guaranteed valid until next non-const method. + virtual void *getData() = 0; + virtual void setData(const void* data, unsigned int size, unsigned int offset) = 0; + virtual void clear() = 0; + virtual unsigned int getSize() const = 0; + virtual bool supportsDirectBinding() const = 0; + virtual void markBufferUsage(); + unsigned int getSerial() const; + + protected: + void updateSerial(); + + private: + DISALLOW_COPY_AND_ASSIGN(BufferStorage); + + unsigned int mSerial; + static unsigned int mNextSerial; +}; + +} + +#endif // LIBGLESV2_RENDERER_BUFFERSTORAGE_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage11.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage11.cpp new file mode 100644 index 00000000000..3647d8a8985 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage11.cpp @@ -0,0 +1,358 @@ +#include "precompiled.h" +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// BufferStorage11.cpp Defines the BufferStorage11 class. + +#include "libGLESv2/renderer/BufferStorage11.h" +#include "libGLESv2/main.h" +#include "libGLESv2/renderer/Renderer11.h" + +namespace rx +{ + +BufferStorage11::BufferStorage11(Renderer11 *renderer) +{ + mRenderer = renderer; + + mStagingBuffer = NULL; + mStagingBufferSize = 0; + + mBuffer = NULL; + mBufferSize = 0; + + mSize = 0; + + mResolvedData = NULL; + mResolvedDataSize = 0; + mResolvedDataValid = false; + + mReadUsageCount = 0; + mWriteUsageCount = 0; +} + +BufferStorage11::~BufferStorage11() +{ + if (mStagingBuffer) + { + mStagingBuffer->Release(); + mStagingBuffer = NULL; + } + + if (mBuffer) + { + mBuffer->Release(); + mBuffer = NULL; + } + + if (mResolvedData) + { + free(mResolvedData); + mResolvedData = NULL; + } +} + +BufferStorage11 *BufferStorage11::makeBufferStorage11(BufferStorage *bufferStorage) +{ + ASSERT(HAS_DYNAMIC_TYPE(BufferStorage11*, bufferStorage)); + return static_cast(bufferStorage); +} + +void *BufferStorage11::getData() +{ + if (!mResolvedDataValid) + { + ID3D11Device *device = mRenderer->getDevice(); + ID3D11DeviceContext *context = mRenderer->getDeviceContext(); + HRESULT result; + + if (!mStagingBuffer || mStagingBufferSize < mBufferSize) + { + if (mStagingBuffer) + { + mStagingBuffer->Release(); + mStagingBuffer = NULL; + mStagingBufferSize = 0; + } + + D3D11_BUFFER_DESC bufferDesc; + bufferDesc.ByteWidth = mSize; + bufferDesc.Usage = D3D11_USAGE_STAGING; + bufferDesc.BindFlags = 0; + bufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE; + bufferDesc.MiscFlags = 0; + bufferDesc.StructureByteStride = 0; + + result = device->CreateBuffer(&bufferDesc, NULL, &mStagingBuffer); + if (FAILED(result)) + { + return gl::error(GL_OUT_OF_MEMORY, (void*)NULL); + } + + mStagingBufferSize = bufferDesc.ByteWidth; + } + + if (!mResolvedData || mResolvedDataSize < mBufferSize) + { + free(mResolvedData); + mResolvedData = malloc(mSize); + mResolvedDataSize = mSize; + } + + D3D11_BOX srcBox; + srcBox.left = 0; + srcBox.right = mSize; + srcBox.top = 0; + srcBox.bottom = 1; + srcBox.front = 0; + srcBox.back = 1; + + context->CopySubresourceRegion(mStagingBuffer, 0, 0, 0, 0, mBuffer, 0, &srcBox); + + D3D11_MAPPED_SUBRESOURCE mappedResource; + result = context->Map(mStagingBuffer, 0, D3D11_MAP_READ, 0, &mappedResource); + if (FAILED(result)) + { + return gl::error(GL_OUT_OF_MEMORY, (void*)NULL); + } + + memcpy(mResolvedData, mappedResource.pData, mSize); + + context->Unmap(mStagingBuffer, 0); + + mResolvedDataValid = true; + } + + mReadUsageCount = 0; + + return mResolvedData; +} + +void BufferStorage11::setData(const void* data, unsigned int size, unsigned int offset) +{ + ID3D11Device *device = mRenderer->getDevice(); + ID3D11DeviceContext *context = mRenderer->getDeviceContext(); + HRESULT result; + + unsigned int requiredBufferSize = size + offset; + unsigned int requiredStagingSize = size; + bool directInitialization = offset == 0 && (!mBuffer || mBufferSize < size + offset); + + if (!directInitialization) + { + if (!mStagingBuffer || mStagingBufferSize < requiredStagingSize) + { + if (mStagingBuffer) + { + mStagingBuffer->Release(); + mStagingBuffer = NULL; + mStagingBufferSize = 0; + } + + D3D11_BUFFER_DESC bufferDesc; + bufferDesc.ByteWidth = size; + bufferDesc.Usage = D3D11_USAGE_STAGING; + bufferDesc.BindFlags = 0; + bufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE; + bufferDesc.MiscFlags = 0; + bufferDesc.StructureByteStride = 0; + + if (data) + { + D3D11_SUBRESOURCE_DATA initialData; + initialData.pSysMem = data; + initialData.SysMemPitch = size; + initialData.SysMemSlicePitch = 0; + + result = device->CreateBuffer(&bufferDesc, &initialData, &mStagingBuffer); + } + else + { + result = device->CreateBuffer(&bufferDesc, NULL, &mStagingBuffer); + } + + if (FAILED(result)) + { + return gl::error(GL_OUT_OF_MEMORY); + } + + mStagingBufferSize = size; + } + else if (data) + { + D3D11_MAPPED_SUBRESOURCE mappedResource; + result = context->Map(mStagingBuffer, 0, D3D11_MAP_WRITE, 0, &mappedResource); + if (FAILED(result)) + { + return gl::error(GL_OUT_OF_MEMORY); + } + + memcpy(mappedResource.pData, data, size); + + context->Unmap(mStagingBuffer, 0); + } + } + + if (!mBuffer || mBufferSize < size + offset) + { + D3D11_BUFFER_DESC bufferDesc; + bufferDesc.ByteWidth = requiredBufferSize; + bufferDesc.Usage = D3D11_USAGE_DEFAULT; + bufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER | D3D11_BIND_INDEX_BUFFER; + bufferDesc.CPUAccessFlags = 0; + bufferDesc.MiscFlags = 0; + bufferDesc.StructureByteStride = 0; + + if (directInitialization) + { + // Since the data will fill the entire buffer (being larger than the initial size and having + // no offset), the buffer can be initialized with the data so no staging buffer is required + + // No longer need the old buffer + if (mBuffer) + { + mBuffer->Release(); + mBuffer = NULL; + mBufferSize = 0; + } + + if (data) + { + D3D11_SUBRESOURCE_DATA initialData; + initialData.pSysMem = data; + initialData.SysMemPitch = size; + initialData.SysMemSlicePitch = 0; + + result = device->CreateBuffer(&bufferDesc, &initialData, &mBuffer); + } + else + { + result = device->CreateBuffer(&bufferDesc, NULL, &mBuffer); + } + + if (FAILED(result)) + { + return gl::error(GL_OUT_OF_MEMORY); + } + } + else if (mBuffer && offset > 0) + { + // If offset is greater than zero and the buffer is non-null, need to preserve the data from + // the old buffer up to offset + ID3D11Buffer *newBuffer = NULL; + + result = device->CreateBuffer(&bufferDesc, NULL, &newBuffer); + if (FAILED(result)) + { + return gl::error(GL_OUT_OF_MEMORY); + } + + D3D11_BOX srcBox; + srcBox.left = 0; + srcBox.right = std::min(offset, mBufferSize); + srcBox.top = 0; + srcBox.bottom = 1; + srcBox.front = 0; + srcBox.back = 1; + + context->CopySubresourceRegion(newBuffer, 0, 0, 0, 0, mBuffer, 0, &srcBox); + + mBuffer->Release(); + mBuffer = newBuffer; + } + else + { + // Simple case, nothing needs to be copied from the old buffer to the new one, just create + // a new buffer + + // No longer need the old buffer + if (mBuffer) + { + mBuffer->Release(); + mBuffer = NULL; + mBufferSize = 0; + } + + // Create a new buffer for data storage + result = device->CreateBuffer(&bufferDesc, NULL, &mBuffer); + if (FAILED(result)) + { + return gl::error(GL_OUT_OF_MEMORY); + } + } + + updateSerial(); + mBufferSize = bufferDesc.ByteWidth; + } + + if (!directInitialization) + { + ASSERT(mStagingBuffer && mStagingBufferSize >= requiredStagingSize); + + // Data is already put into the staging buffer, copy it over to the data buffer + D3D11_BOX srcBox; + srcBox.left = 0; + srcBox.right = size; + srcBox.top = 0; + srcBox.bottom = 1; + srcBox.front = 0; + srcBox.back = 1; + + context->CopySubresourceRegion(mBuffer, 0, offset, 0, 0, mStagingBuffer, 0, &srcBox); + } + + mSize = std::max(mSize, offset + size); + + mWriteUsageCount = 0; + + mResolvedDataValid = false; +} + +void BufferStorage11::clear() +{ + mResolvedDataValid = false; + mSize = 0; +} + +unsigned int BufferStorage11::getSize() const +{ + return mSize; +} + +bool BufferStorage11::supportsDirectBinding() const +{ + return true; +} + +void BufferStorage11::markBufferUsage() +{ + mReadUsageCount++; + mWriteUsageCount++; + + static const unsigned int usageLimit = 5; + + if (mReadUsageCount > usageLimit && mResolvedData) + { + free(mResolvedData); + mResolvedData = NULL; + mResolvedDataSize = 0; + mResolvedDataValid = false; + } + + if (mReadUsageCount > usageLimit && mWriteUsageCount > usageLimit && mStagingBuffer) + { + mStagingBuffer->Release(); + mStagingBuffer = NULL; + mStagingBufferSize = 0; + } +} + +ID3D11Buffer *BufferStorage11::getBuffer() const +{ + return mBuffer; +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage11.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage11.h new file mode 100644 index 00000000000..b62348b0c93 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage11.h @@ -0,0 +1,56 @@ +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// BufferStorage11.h Defines the BufferStorage11 class. + +#ifndef LIBGLESV2_RENDERER_BUFFERSTORAGE11_H_ +#define LIBGLESV2_RENDERER_BUFFERSTORAGE11_H_ + +#include "libGLESv2/renderer/BufferStorage.h" + +namespace rx +{ +class Renderer11; + +class BufferStorage11 : public BufferStorage +{ + public: + explicit BufferStorage11(Renderer11 *renderer); + virtual ~BufferStorage11(); + + static BufferStorage11 *makeBufferStorage11(BufferStorage *bufferStorage); + + virtual void *getData(); + virtual void setData(const void* data, unsigned int size, unsigned int offset); + virtual void clear(); + virtual unsigned int getSize() const; + virtual bool supportsDirectBinding() const; + virtual void markBufferUsage(); + + ID3D11Buffer *getBuffer() const; + + private: + Renderer11 *mRenderer; + + ID3D11Buffer *mStagingBuffer; + unsigned int mStagingBufferSize; + + ID3D11Buffer *mBuffer; + unsigned int mBufferSize; + + unsigned int mSize; + + void *mResolvedData; + unsigned int mResolvedDataSize; + bool mResolvedDataValid; + + unsigned int mReadUsageCount; + unsigned int mWriteUsageCount; +}; + +} + +#endif // LIBGLESV2_RENDERER_BUFFERSTORAGE11_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage9.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage9.cpp new file mode 100644 index 00000000000..e69e7a8921e --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage9.cpp @@ -0,0 +1,78 @@ +#include "precompiled.h" +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// BufferStorage9.cpp Defines the BufferStorage9 class. + +#include "libGLESv2/renderer/BufferStorage9.h" +#include "common/debug.h" + +namespace rx +{ + +BufferStorage9::BufferStorage9() +{ + mMemory = NULL; + mAllocatedSize = 0; + mSize = 0; +} + +BufferStorage9::~BufferStorage9() +{ + delete[] mMemory; +} + +BufferStorage9 *BufferStorage9::makeBufferStorage9(BufferStorage *bufferStorage) +{ + ASSERT(HAS_DYNAMIC_TYPE(BufferStorage9*, bufferStorage)); + return static_cast(bufferStorage); +} + +void *BufferStorage9::getData() +{ + return mMemory; +} + +void BufferStorage9::setData(const void* data, unsigned int size, unsigned int offset) +{ + if (!mMemory || offset + size > mAllocatedSize) + { + unsigned int newAllocatedSize = offset + size; + void *newMemory = new char[newAllocatedSize]; + + if (offset > 0 && mMemory && mAllocatedSize > 0) + { + memcpy(newMemory, mMemory, std::min(offset, mAllocatedSize)); + } + + delete[] mMemory; + mMemory = newMemory; + mAllocatedSize = newAllocatedSize; + } + + mSize = std::max(mSize, offset + size); + if (data) + { + memcpy(reinterpret_cast(mMemory) + offset, data, size); + } +} + +void BufferStorage9::clear() +{ + mSize = 0; +} + +unsigned int BufferStorage9::getSize() const +{ + return mSize; +} + +bool BufferStorage9::supportsDirectBinding() const +{ + return false; +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage9.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage9.h new file mode 100644 index 00000000000..3e803969bc3 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/BufferStorage9.h @@ -0,0 +1,42 @@ +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// BufferStorage9.h Defines the BufferStorage9 class. + +#ifndef LIBGLESV2_RENDERER_BUFFERSTORAGE9_H_ +#define LIBGLESV2_RENDERER_BUFFERSTORAGE9_H_ + +#include "libGLESv2/renderer/BufferStorage.h" + +namespace rx +{ + +class BufferStorage9 : public BufferStorage +{ + public: + BufferStorage9(); + virtual ~BufferStorage9(); + + static BufferStorage9 *makeBufferStorage9(BufferStorage *bufferStorage); + + virtual void *getData(); + virtual void setData(const void* data, unsigned int size, unsigned int offset); + virtual void clear(); + virtual unsigned int getSize() const; + virtual bool supportsDirectBinding() const; + + private: + DISALLOW_COPY_AND_ASSIGN(BufferStorage9); + + void *mMemory; + unsigned int mAllocatedSize; + + unsigned int mSize; +}; + +} + +#endif // LIBGLESV2_RENDERER_BUFFERSTORAGE9_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Fence11.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Fence11.cpp new file mode 100644 index 00000000000..9d11c9a0fc8 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Fence11.cpp @@ -0,0 +1,134 @@ +#include "precompiled.h" +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Fence11.cpp: Defines the rx::Fence11 class which implements rx::FenceImpl. + +#include "libGLESv2/renderer/Fence11.h" +#include "libGLESv2/main.h" +#include "libGLESv2/renderer/Renderer11.h" + +namespace rx +{ + +Fence11::Fence11(rx::Renderer11 *renderer) +{ + mRenderer = renderer; + mQuery = NULL; +} + +Fence11::~Fence11() +{ + if (mQuery) + { + mQuery->Release(); + mQuery = NULL; + } +} + +GLboolean Fence11::isFence() +{ + // GL_NV_fence spec: + // A name returned by GenFencesNV, but not yet set via SetFenceNV, is not the name of an existing fence. + return mQuery != NULL; +} + +void Fence11::setFence(GLenum condition) +{ + if (!mQuery) + { + D3D11_QUERY_DESC queryDesc; + queryDesc.Query = D3D11_QUERY_EVENT; + queryDesc.MiscFlags = 0; + + if (FAILED(mRenderer->getDevice()->CreateQuery(&queryDesc, &mQuery))) + { + return gl::error(GL_OUT_OF_MEMORY); + } + } + + mRenderer->getDeviceContext()->End(mQuery); + + setCondition(condition); + setStatus(GL_FALSE); +} + +GLboolean Fence11::testFence() +{ + if (mQuery == NULL) + { + return gl::error(GL_INVALID_OPERATION, GL_TRUE); + } + + HRESULT result = mRenderer->getDeviceContext()->GetData(mQuery, NULL, 0, 0); + + if (mRenderer->isDeviceLost()) + { + return gl::error(GL_OUT_OF_MEMORY, GL_TRUE); + } + + ASSERT(result == S_OK || result == S_FALSE); + setStatus(result == S_OK); + return getStatus(); +} + +void Fence11::finishFence() +{ + if (mQuery == NULL) + { + return gl::error(GL_INVALID_OPERATION); + } + + while (!testFence()) + { + Sleep(0); + } +} + +void Fence11::getFenceiv(GLenum pname, GLint *params) +{ + if (mQuery == NULL) + { + return gl::error(GL_INVALID_OPERATION); + } + + switch (pname) + { + case GL_FENCE_STATUS_NV: + { + // GL_NV_fence spec: + // Once the status of a fence has been finished (via FinishFenceNV) or tested and the returned status is TRUE (via either TestFenceNV + // or GetFenceivNV querying the FENCE_STATUS_NV), the status remains TRUE until the next SetFenceNV of the fence. + if (getStatus()) + { + params[0] = GL_TRUE; + return; + } + + HRESULT result = mRenderer->getDeviceContext()->GetData(mQuery, NULL, 0, D3D11_ASYNC_GETDATA_DONOTFLUSH); + + if (mRenderer->isDeviceLost()) + { + params[0] = GL_TRUE; + return gl::error(GL_OUT_OF_MEMORY); + } + + ASSERT(result == S_OK || result == S_FALSE); + setStatus(result == S_OK); + params[0] = getStatus(); + + break; + } + case GL_FENCE_CONDITION_NV: + params[0] = getCondition(); + break; + default: + return gl::error(GL_INVALID_ENUM); + break; + } +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Fence11.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Fence11.h new file mode 100644 index 00000000000..a5398bca149 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Fence11.h @@ -0,0 +1,39 @@ +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Fence11.h: Defines the rx::Fence11 class which implements rx::FenceImpl. + +#ifndef LIBGLESV2_RENDERER_Fence11_H_ +#define LIBGLESV2_RENDERER_Fence11_H_ + +#include "libGLESv2/renderer/FenceImpl.h" + +namespace rx +{ +class Renderer11; + +class Fence11 : public FenceImpl +{ + public: + explicit Fence11(rx::Renderer11 *renderer); + virtual ~Fence11(); + + GLboolean isFence(); + void setFence(GLenum condition); + GLboolean testFence(); + void finishFence(); + void getFenceiv(GLenum pname, GLint *params); + + private: + DISALLOW_COPY_AND_ASSIGN(Fence11); + + rx::Renderer11 *mRenderer; + ID3D11Query *mQuery; +}; + +} + +#endif // LIBGLESV2_RENDERER_FENCE11_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Fence9.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Fence9.cpp new file mode 100644 index 00000000000..86064d7e52b --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Fence9.cpp @@ -0,0 +1,135 @@ +#include "precompiled.h" +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Fence9.cpp: Defines the rx::Fence9 class. + +#include "libGLESv2/renderer/Fence9.h" +#include "libGLESv2/main.h" +#include "libGLESv2/renderer/renderer9_utils.h" +#include "libGLESv2/renderer/Renderer9.h" + +namespace rx +{ + +Fence9::Fence9(rx::Renderer9 *renderer) +{ + mRenderer = renderer; + mQuery = NULL; +} + +Fence9::~Fence9() +{ + if (mQuery) + { + mRenderer->freeEventQuery(mQuery); + mQuery = NULL; + } +} + +GLboolean Fence9::isFence() +{ + // GL_NV_fence spec: + // A name returned by GenFencesNV, but not yet set via SetFenceNV, is not the name of an existing fence. + return mQuery != NULL; +} + +void Fence9::setFence(GLenum condition) +{ + if (!mQuery) + { + mQuery = mRenderer->allocateEventQuery(); + if (!mQuery) + { + return gl::error(GL_OUT_OF_MEMORY); + } + } + + HRESULT result = mQuery->Issue(D3DISSUE_END); + ASSERT(SUCCEEDED(result)); + + setCondition(condition); + setStatus(GL_FALSE); +} + +GLboolean Fence9::testFence() +{ + if (mQuery == NULL) + { + return gl::error(GL_INVALID_OPERATION, GL_TRUE); + } + + HRESULT result = mQuery->GetData(NULL, 0, D3DGETDATA_FLUSH); + + if (d3d9::isDeviceLostError(result)) + { + mRenderer->notifyDeviceLost(); + return gl::error(GL_OUT_OF_MEMORY, GL_TRUE); + } + + ASSERT(result == S_OK || result == S_FALSE); + setStatus(result == S_OK); + return getStatus(); +} + +void Fence9::finishFence() +{ + if (mQuery == NULL) + { + return gl::error(GL_INVALID_OPERATION); + } + + while (!testFence()) + { + Sleep(0); + } +} + +void Fence9::getFenceiv(GLenum pname, GLint *params) +{ + if (mQuery == NULL) + { + return gl::error(GL_INVALID_OPERATION); + } + + switch (pname) + { + case GL_FENCE_STATUS_NV: + { + // GL_NV_fence spec: + // Once the status of a fence has been finished (via FinishFenceNV) or tested and the returned status is TRUE (via either TestFenceNV + // or GetFenceivNV querying the FENCE_STATUS_NV), the status remains TRUE until the next SetFenceNV of the fence. + if (getStatus()) + { + params[0] = GL_TRUE; + return; + } + + HRESULT result = mQuery->GetData(NULL, 0, 0); + + if (d3d9::isDeviceLostError(result)) + { + params[0] = GL_TRUE; + mRenderer->notifyDeviceLost(); + return gl::error(GL_OUT_OF_MEMORY); + } + + ASSERT(result == S_OK || result == S_FALSE); + setStatus(result == S_OK); + params[0] = getStatus(); + + break; + } + case GL_FENCE_CONDITION_NV: + params[0] = getCondition(); + break; + default: + return gl::error(GL_INVALID_ENUM); + break; + } +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Fence9.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Fence9.h new file mode 100644 index 00000000000..9f17641e519 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Fence9.h @@ -0,0 +1,39 @@ +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Fence9.h: Defines the rx::Fence9 class which implements rx::FenceImpl. + +#ifndef LIBGLESV2_RENDERER_FENCE9_H_ +#define LIBGLESV2_RENDERER_FENCE9_H_ + +#include "libGLESv2/renderer/FenceImpl.h" + +namespace rx +{ +class Renderer9; + +class Fence9 : public FenceImpl +{ + public: + explicit Fence9(rx::Renderer9 *renderer); + virtual ~Fence9(); + + GLboolean isFence(); + void setFence(GLenum condition); + GLboolean testFence(); + void finishFence(); + void getFenceiv(GLenum pname, GLint *params); + + private: + DISALLOW_COPY_AND_ASSIGN(Fence9); + + rx::Renderer9 *mRenderer; + IDirect3DQuery9 *mQuery; +}; + +} + +#endif // LIBGLESV2_RENDERER_FENCE9_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/FenceImpl.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/FenceImpl.h new file mode 100644 index 00000000000..d7f2102a2e9 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/FenceImpl.h @@ -0,0 +1,45 @@ +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// FenceImpl.h: Defines the rx::FenceImpl class. + +#ifndef LIBGLESV2_RENDERER_FENCEIMPL_H_ +#define LIBGLESV2_RENDERER_FENCEIMPL_H_ + +#include "common/angleutils.h" + +namespace rx +{ + +class FenceImpl +{ + public: + FenceImpl() : mStatus(GL_FALSE), mCondition(GL_NONE) { }; + virtual ~FenceImpl() { }; + + virtual GLboolean isFence() = 0; + virtual void setFence(GLenum condition) = 0; + virtual GLboolean testFence() = 0; + virtual void finishFence() = 0; + virtual void getFenceiv(GLenum pname, GLint *params) = 0; + + protected: + void setStatus(GLboolean status) { mStatus = status; } + GLboolean getStatus() const { return mStatus; } + + void setCondition(GLuint condition) { mCondition = condition; } + GLuint getCondition() const { return mCondition; } + + private: + DISALLOW_COPY_AND_ASSIGN(FenceImpl); + + GLboolean mStatus; + GLenum mCondition; +}; + +} + +#endif // LIBGLESV2_RENDERER_FENCEIMPL_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image.cpp new file mode 100644 index 00000000000..57239ef74ff --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image.cpp @@ -0,0 +1,548 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Image.h: Implements the rx::Image class, an abstract base class for the +// renderer-specific classes which will define the interface to the underlying +// surfaces or resources. + +#include "libGLESv2/renderer/Image.h" + +namespace rx +{ + +Image::Image() +{ + mWidth = 0; + mHeight = 0; + mInternalFormat = GL_NONE; + mActualFormat = GL_NONE; +} + +void Image::loadAlphaDataToBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned char *source = NULL; + unsigned char *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = static_cast(input) + y * inputPitch; + dest = static_cast(output) + y * outputPitch; + for (int x = 0; x < width; x++) + { + dest[4 * x + 0] = 0; + dest[4 * x + 1] = 0; + dest[4 * x + 2] = 0; + dest[4 * x + 3] = source[x]; + } + } +} + +void Image::loadAlphaDataToNative(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned char *source = NULL; + unsigned char *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = static_cast(input) + y * inputPitch; + dest = static_cast(output) + y * outputPitch; + memcpy(dest, source, width); + } +} + +void Image::loadAlphaFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const float *source = NULL; + float *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = reinterpret_cast(static_cast(output) + y * outputPitch); + for (int x = 0; x < width; x++) + { + dest[4 * x + 0] = 0; + dest[4 * x + 1] = 0; + dest[4 * x + 2] = 0; + dest[4 * x + 3] = source[x]; + } + } +} + +void Image::loadAlphaHalfFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned short *source = NULL; + unsigned short *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = reinterpret_cast(static_cast(output) + y * outputPitch); + for (int x = 0; x < width; x++) + { + dest[4 * x + 0] = 0; + dest[4 * x + 1] = 0; + dest[4 * x + 2] = 0; + dest[4 * x + 3] = source[x]; + } + } +} + +void Image::loadLuminanceDataToNativeOrBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output, bool native) +{ + const unsigned char *source = NULL; + unsigned char *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = static_cast(input) + y * inputPitch; + dest = static_cast(output) + y * outputPitch; + + if (!native) // BGRA8 destination format + { + for (int x = 0; x < width; x++) + { + dest[4 * x + 0] = source[x]; + dest[4 * x + 1] = source[x]; + dest[4 * x + 2] = source[x]; + dest[4 * x + 3] = 0xFF; + } + } + else // L8 destination format + { + memcpy(dest, source, width); + } + } +} + +void Image::loadLuminanceFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const float *source = NULL; + float *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = reinterpret_cast(static_cast(output) + y * outputPitch); + for (int x = 0; x < width; x++) + { + dest[4 * x + 0] = source[x]; + dest[4 * x + 1] = source[x]; + dest[4 * x + 2] = source[x]; + dest[4 * x + 3] = 1.0f; + } + } +} + +void Image::loadLuminanceFloatDataToRGB(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const float *source = NULL; + float *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = reinterpret_cast(static_cast(output) + y * outputPitch); + for (int x = 0; x < width; x++) + { + dest[3 * x + 0] = source[x]; + dest[3 * x + 1] = source[x]; + dest[3 * x + 2] = source[x]; + } + } +} + +void Image::loadLuminanceHalfFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned short *source = NULL; + unsigned short *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = reinterpret_cast(static_cast(output) + y * outputPitch); + for (int x = 0; x < width; x++) + { + dest[4 * x + 0] = source[x]; + dest[4 * x + 1] = source[x]; + dest[4 * x + 2] = source[x]; + dest[4 * x + 3] = 0x3C00; // SEEEEEMMMMMMMMMM, S = 0, E = 15, M = 0: 16bit flpt representation of 1 + } + } +} + +void Image::loadLuminanceAlphaDataToNativeOrBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output, bool native) +{ + const unsigned char *source = NULL; + unsigned char *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = static_cast(input) + y * inputPitch; + dest = static_cast(output) + y * outputPitch; + + if (!native) // BGRA8 destination format + { + for (int x = 0; x < width; x++) + { + dest[4 * x + 0] = source[2*x+0]; + dest[4 * x + 1] = source[2*x+0]; + dest[4 * x + 2] = source[2*x+0]; + dest[4 * x + 3] = source[2*x+1]; + } + } + else + { + memcpy(dest, source, width * 2); + } + } +} + +void Image::loadLuminanceAlphaFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const float *source = NULL; + float *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = reinterpret_cast(static_cast(output) + y * outputPitch); + for (int x = 0; x < width; x++) + { + dest[4 * x + 0] = source[2*x+0]; + dest[4 * x + 1] = source[2*x+0]; + dest[4 * x + 2] = source[2*x+0]; + dest[4 * x + 3] = source[2*x+1]; + } + } +} + +void Image::loadLuminanceAlphaHalfFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned short *source = NULL; + unsigned short *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = reinterpret_cast(static_cast(output) + y * outputPitch); + for (int x = 0; x < width; x++) + { + dest[4 * x + 0] = source[2*x+0]; + dest[4 * x + 1] = source[2*x+0]; + dest[4 * x + 2] = source[2*x+0]; + dest[4 * x + 3] = source[2*x+1]; + } + } +} + +void Image::loadRGBUByteDataToBGRX(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned char *source = NULL; + unsigned char *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = static_cast(input) + y * inputPitch; + dest = static_cast(output) + y * outputPitch; + for (int x = 0; x < width; x++) + { + dest[4 * x + 0] = source[x * 3 + 2]; + dest[4 * x + 1] = source[x * 3 + 1]; + dest[4 * x + 2] = source[x * 3 + 0]; + dest[4 * x + 3] = 0xFF; + } + } +} + +void Image::loadRGBUByteDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned char *source = NULL; + unsigned char *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = static_cast(input) + y * inputPitch; + dest = static_cast(output) + y * outputPitch; + for (int x = 0; x < width; x++) + { + dest[4 * x + 0] = source[x * 3 + 0]; + dest[4 * x + 1] = source[x * 3 + 1]; + dest[4 * x + 2] = source[x * 3 + 2]; + dest[4 * x + 3] = 0xFF; + } + } +} + +void Image::loadRGB565DataToBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned short *source = NULL; + unsigned char *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = static_cast(output) + y * outputPitch; + for (int x = 0; x < width; x++) + { + unsigned short rgba = source[x]; + dest[4 * x + 0] = ((rgba & 0x001F) << 3) | ((rgba & 0x001F) >> 2); + dest[4 * x + 1] = ((rgba & 0x07E0) >> 3) | ((rgba & 0x07E0) >> 9); + dest[4 * x + 2] = ((rgba & 0xF800) >> 8) | ((rgba & 0xF800) >> 13); + dest[4 * x + 3] = 0xFF; + } + } +} + +void Image::loadRGB565DataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned short *source = NULL; + unsigned char *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = static_cast(output) + y * outputPitch; + for (int x = 0; x < width; x++) + { + unsigned short rgba = source[x]; + dest[4 * x + 0] = ((rgba & 0xF800) >> 8) | ((rgba & 0xF800) >> 13); + dest[4 * x + 1] = ((rgba & 0x07E0) >> 3) | ((rgba & 0x07E0) >> 9); + dest[4 * x + 2] = ((rgba & 0x001F) << 3) | ((rgba & 0x001F) >> 2); + dest[4 * x + 3] = 0xFF; + } + } +} + +void Image::loadRGBFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const float *source = NULL; + float *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = reinterpret_cast(static_cast(output) + y * outputPitch); + for (int x = 0; x < width; x++) + { + dest[4 * x + 0] = source[x * 3 + 0]; + dest[4 * x + 1] = source[x * 3 + 1]; + dest[4 * x + 2] = source[x * 3 + 2]; + dest[4 * x + 3] = 1.0f; + } + } +} + +void Image::loadRGBFloatDataToNative(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const float *source = NULL; + float *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = reinterpret_cast(static_cast(output) + y * outputPitch); + memcpy(dest, source, width * 12); + } +} + +void Image::loadRGBHalfFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned short *source = NULL; + unsigned short *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = reinterpret_cast(static_cast(output) + y * outputPitch); + for (int x = 0; x < width; x++) + { + dest[4 * x + 0] = source[x * 3 + 0]; + dest[4 * x + 1] = source[x * 3 + 1]; + dest[4 * x + 2] = source[x * 3 + 2]; + dest[4 * x + 3] = 0x3C00; // SEEEEEMMMMMMMMMM, S = 0, E = 15, M = 0: 16bit flpt representation of 1 + } + } +} + +void Image::loadRGBAUByteDataToBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned int *source = NULL; + unsigned int *dest = NULL; + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = reinterpret_cast(static_cast(output) + y * outputPitch); + + for (int x = 0; x < width; x++) + { + unsigned int rgba = source[x]; + dest[x] = (_rotl(rgba, 16) & 0x00ff00ff) | (rgba & 0xff00ff00); + } + } +} + +void Image::loadRGBAUByteDataToNative(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned int *source = NULL; + unsigned int *dest = NULL; + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = reinterpret_cast(static_cast(output) + y * outputPitch); + + memcpy(dest, source, width * 4); + } +} + +void Image::loadRGBA4444DataToBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned short *source = NULL; + unsigned char *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = static_cast(output) + y * outputPitch; + for (int x = 0; x < width; x++) + { + unsigned short rgba = source[x]; + dest[4 * x + 0] = ((rgba & 0x00F0) << 0) | ((rgba & 0x00F0) >> 4); + dest[4 * x + 1] = ((rgba & 0x0F00) >> 4) | ((rgba & 0x0F00) >> 8); + dest[4 * x + 2] = ((rgba & 0xF000) >> 8) | ((rgba & 0xF000) >> 12); + dest[4 * x + 3] = ((rgba & 0x000F) << 4) | ((rgba & 0x000F) >> 0); + } + } +} + +void Image::loadRGBA4444DataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned short *source = NULL; + unsigned char *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = static_cast(output) + y * outputPitch; + for (int x = 0; x < width; x++) + { + unsigned short rgba = source[x]; + dest[4 * x + 0] = ((rgba & 0xF000) >> 8) | ((rgba & 0xF000) >> 12); + dest[4 * x + 1] = ((rgba & 0x0F00) >> 4) | ((rgba & 0x0F00) >> 8); + dest[4 * x + 2] = ((rgba & 0x00F0) << 0) | ((rgba & 0x00F0) >> 4); + dest[4 * x + 3] = ((rgba & 0x000F) << 4) | ((rgba & 0x000F) >> 0); + } + } +} + +void Image::loadRGBA5551DataToBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned short *source = NULL; + unsigned char *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = static_cast(output) + y * outputPitch; + for (int x = 0; x < width; x++) + { + unsigned short rgba = source[x]; + dest[4 * x + 0] = ((rgba & 0x003E) << 2) | ((rgba & 0x003E) >> 3); + dest[4 * x + 1] = ((rgba & 0x07C0) >> 3) | ((rgba & 0x07C0) >> 8); + dest[4 * x + 2] = ((rgba & 0xF800) >> 8) | ((rgba & 0xF800) >> 13); + dest[4 * x + 3] = (rgba & 0x0001) ? 0xFF : 0; + } + } +} + +void Image::loadRGBA5551DataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned short *source = NULL; + unsigned char *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = static_cast(output) + y * outputPitch; + for (int x = 0; x < width; x++) + { + unsigned short rgba = source[x]; + dest[4 * x + 0] = ((rgba & 0xF800) >> 8) | ((rgba & 0xF800) >> 13); + dest[4 * x + 1] = ((rgba & 0x07C0) >> 3) | ((rgba & 0x07C0) >> 8); + dest[4 * x + 2] = ((rgba & 0x003E) << 2) | ((rgba & 0x003E) >> 3); + dest[4 * x + 3] = (rgba & 0x0001) ? 0xFF : 0; + } + } +} + +void Image::loadRGBAFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const float *source = NULL; + float *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = reinterpret_cast(static_cast(output) + y * outputPitch); + memcpy(dest, source, width * 16); + } +} + +void Image::loadRGBAHalfFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned char *source = NULL; + unsigned char *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = static_cast(input) + y * inputPitch; + dest = static_cast(output) + y * outputPitch; + memcpy(dest, source, width * 8); + } +} + +void Image::loadBGRADataToBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned char *source = NULL; + unsigned char *dest = NULL; + + for (int y = 0; y < height; y++) + { + source = static_cast(input) + y * inputPitch; + dest = static_cast(output) + y * outputPitch; + memcpy(dest, source, width*4); + } +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image.h new file mode 100644 index 00000000000..454e83e21e6 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image.h @@ -0,0 +1,131 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Image.h: Defines the rx::Image class, an abstract base class for the +// renderer-specific classes which will define the interface to the underlying +// surfaces or resources. + +#ifndef LIBGLESV2_RENDERER_IMAGE_H_ +#define LIBGLESV2_RENDERER_IMAGE_H_ + +#include "common/debug.h" + +namespace gl +{ +class Framebuffer; +} + +namespace rx +{ +class Renderer; +class TextureStorageInterface2D; +class TextureStorageInterfaceCube; + +class Image +{ + public: + Image(); + virtual ~Image() {}; + + GLsizei getWidth() const { return mWidth; } + GLsizei getHeight() const { return mHeight; } + GLenum getInternalFormat() const { return mInternalFormat; } + GLenum getActualFormat() const { return mActualFormat; } + + void markDirty() {mDirty = true;} + void markClean() {mDirty = false;} + virtual bool isDirty() const = 0; + + virtual void setManagedSurface(TextureStorageInterface2D *storage, int level) {}; + virtual void setManagedSurface(TextureStorageInterfaceCube *storage, int face, int level) {}; + virtual bool updateSurface(TextureStorageInterface2D *storage, int level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height) = 0; + virtual bool updateSurface(TextureStorageInterfaceCube *storage, int face, int level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height) = 0; + + virtual bool redefine(Renderer *renderer, GLint internalformat, GLsizei width, GLsizei height, bool forceRelease) = 0; + + virtual bool isRenderableFormat() const = 0; + + virtual void loadData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, + GLint unpackAlignment, const void *input) = 0; + virtual void loadCompressedData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, + const void *input) = 0; + + virtual void copy(GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source) = 0; + + static void loadAlphaDataToBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadAlphaDataToNative(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadAlphaDataToBGRASSE2(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadAlphaFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadAlphaHalfFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadLuminanceDataToNativeOrBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output, bool native); + static void loadLuminanceFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadLuminanceFloatDataToRGB(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadLuminanceHalfFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadLuminanceAlphaDataToNativeOrBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output, bool native); + static void loadLuminanceAlphaFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadLuminanceAlphaHalfFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGBUByteDataToBGRX(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGBUByteDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGB565DataToBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGB565DataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGBFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGBFloatDataToNative(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGBHalfFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGBAUByteDataToBGRASSE2(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGBAUByteDataToBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGBAUByteDataToNative(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGBA4444DataToBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGBA4444DataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGBA5551DataToBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGBA5551DataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGBAFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadRGBAHalfFloatDataToRGBA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + static void loadBGRADataToBGRA(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output); + + protected: + GLsizei mWidth; + GLsizei mHeight; + GLint mInternalFormat; + GLenum mActualFormat; + + bool mDirty; + + private: + DISALLOW_COPY_AND_ASSIGN(Image); +}; + +} + +#endif // LIBGLESV2_RENDERER_IMAGE_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image11.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image11.cpp new file mode 100644 index 00000000000..8c78c7d750b --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image11.cpp @@ -0,0 +1,457 @@ +#include "precompiled.h" +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Image11.h: Implements the rx::Image11 class, which acts as the interface to +// the actual underlying resources of a Texture + +#include "libGLESv2/renderer/Renderer11.h" +#include "libGLESv2/renderer/Image11.h" +#include "libGLESv2/renderer/TextureStorage11.h" +#include "libGLESv2/Framebuffer.h" +#include "libGLESv2/Renderbuffer.h" + +#include "libGLESv2/main.h" +#include "libGLESv2/utilities.h" +#include "libGLESv2/renderer/renderer11_utils.h" +#include "libGLESv2/renderer/generatemip.h" + +namespace rx +{ + +Image11::Image11() +{ + mStagingTexture = NULL; + mRenderer = NULL; + mDXGIFormat = DXGI_FORMAT_UNKNOWN; +} + +Image11::~Image11() +{ + if (mStagingTexture) + { + mStagingTexture->Release(); + } +} + +Image11 *Image11::makeImage11(Image *img) +{ + ASSERT(HAS_DYNAMIC_TYPE(rx::Image11*, img)); + return static_cast(img); +} + +void Image11::generateMipmap(Image11 *dest, Image11 *src) +{ + ASSERT(src->getDXGIFormat() == dest->getDXGIFormat()); + ASSERT(src->getWidth() == 1 || src->getWidth() / 2 == dest->getWidth()); + ASSERT(src->getHeight() == 1 || src->getHeight() / 2 == dest->getHeight()); + + D3D11_MAPPED_SUBRESOURCE destMapped, srcMapped; + dest->map(&destMapped); + src->map(&srcMapped); + + const unsigned char *sourceData = reinterpret_cast(srcMapped.pData); + unsigned char *destData = reinterpret_cast(destMapped.pData); + + if (sourceData && destData) + { + switch (src->getDXGIFormat()) + { + case DXGI_FORMAT_R8G8B8A8_UNORM: + case DXGI_FORMAT_B8G8R8A8_UNORM: + GenerateMip(src->getWidth(), src->getHeight(), sourceData, srcMapped.RowPitch, destData, destMapped.RowPitch); + break; + case DXGI_FORMAT_A8_UNORM: + GenerateMip(src->getWidth(), src->getHeight(), sourceData, srcMapped.RowPitch, destData, destMapped.RowPitch); + break; + case DXGI_FORMAT_R8_UNORM: + GenerateMip(src->getWidth(), src->getHeight(), sourceData, srcMapped.RowPitch, destData, destMapped.RowPitch); + break; + case DXGI_FORMAT_R32G32B32A32_FLOAT: + GenerateMip(src->getWidth(), src->getHeight(), sourceData, srcMapped.RowPitch, destData, destMapped.RowPitch); + break; + case DXGI_FORMAT_R32G32B32_FLOAT: + GenerateMip(src->getWidth(), src->getHeight(), sourceData, srcMapped.RowPitch, destData, destMapped.RowPitch); + break; + case DXGI_FORMAT_R16G16B16A16_FLOAT: + GenerateMip(src->getWidth(), src->getHeight(), sourceData, srcMapped.RowPitch, destData, destMapped.RowPitch); + break; + case DXGI_FORMAT_R8G8_UNORM: + GenerateMip(src->getWidth(), src->getHeight(), sourceData, srcMapped.RowPitch, destData, destMapped.RowPitch); + break; + case DXGI_FORMAT_R16_FLOAT: + GenerateMip(src->getWidth(), src->getHeight(), sourceData, srcMapped.RowPitch, destData, destMapped.RowPitch); + break; + case DXGI_FORMAT_R16G16_FLOAT: + GenerateMip(src->getWidth(), src->getHeight(), sourceData, srcMapped.RowPitch, destData, destMapped.RowPitch); + break; + case DXGI_FORMAT_R32_FLOAT: + GenerateMip(src->getWidth(), src->getHeight(), sourceData, srcMapped.RowPitch, destData, destMapped.RowPitch); + break; + case DXGI_FORMAT_R32G32_FLOAT: + GenerateMip(src->getWidth(), src->getHeight(), sourceData, srcMapped.RowPitch, destData, destMapped.RowPitch); + break; + default: + UNREACHABLE(); + break; + } + + dest->unmap(); + src->unmap(); + } + + dest->markDirty(); +} + +bool Image11::isDirty() const +{ + return (mStagingTexture && mDirty); +} + +bool Image11::updateSurface(TextureStorageInterface2D *storage, int level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height) +{ + TextureStorage11_2D *storage11 = TextureStorage11_2D::makeTextureStorage11_2D(storage->getStorageInstance()); + return storage11->updateSubresourceLevel(getStagingTexture(), getStagingSubresource(), level, 0, xoffset, yoffset, width, height); +} + +bool Image11::updateSurface(TextureStorageInterfaceCube *storage, int face, int level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height) +{ + TextureStorage11_Cube *storage11 = TextureStorage11_Cube::makeTextureStorage11_Cube(storage->getStorageInstance()); + return storage11->updateSubresourceLevel(getStagingTexture(), getStagingSubresource(), level, face, xoffset, yoffset, width, height); +} + +bool Image11::redefine(Renderer *renderer, GLint internalformat, GLsizei width, GLsizei height, bool forceRelease) +{ + if (mWidth != width || + mHeight != height || + mInternalFormat != internalformat || + forceRelease) + { + mRenderer = Renderer11::makeRenderer11(renderer); + + mWidth = width; + mHeight = height; + mInternalFormat = internalformat; + // compute the d3d format that will be used + mDXGIFormat = gl_d3d11::ConvertTextureFormat(internalformat); + mActualFormat = d3d11_gl::ConvertTextureInternalFormat(mDXGIFormat); + + if (mStagingTexture) + { + mStagingTexture->Release(); + mStagingTexture = NULL; + } + + return true; + } + + return false; +} + +bool Image11::isRenderableFormat() const +{ + return TextureStorage11::IsTextureFormatRenderable(mDXGIFormat); +} + +DXGI_FORMAT Image11::getDXGIFormat() const +{ + // this should only happen if the image hasn't been redefined first + // which would be a bug by the caller + ASSERT(mDXGIFormat != DXGI_FORMAT_UNKNOWN); + + return mDXGIFormat; +} + +// Store the pixel rectangle designated by xoffset,yoffset,width,height with pixels stored as format/type at input +// into the target pixel rectangle. +void Image11::loadData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, + GLint unpackAlignment, const void *input) +{ + D3D11_MAPPED_SUBRESOURCE mappedImage; + HRESULT result = map(&mappedImage); + if (FAILED(result)) + { + ERR("Could not map image for loading."); + return; + } + + GLsizei inputPitch = gl::ComputePitch(width, mInternalFormat, unpackAlignment); + size_t pixelSize = d3d11::ComputePixelSizeBits(mDXGIFormat) / 8; + void* offsetMappedData = (void*)((BYTE *)mappedImage.pData + (yoffset * mappedImage.RowPitch + xoffset * pixelSize)); + + switch (mInternalFormat) + { + case GL_ALPHA8_EXT: + loadAlphaDataToNative(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_LUMINANCE8_EXT: + loadLuminanceDataToNativeOrBGRA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData, false); + break; + case GL_ALPHA32F_EXT: + loadAlphaFloatDataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_LUMINANCE32F_EXT: + loadLuminanceFloatDataToRGB(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_ALPHA16F_EXT: + loadAlphaHalfFloatDataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_LUMINANCE16F_EXT: + loadLuminanceHalfFloatDataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_LUMINANCE8_ALPHA8_EXT: + loadLuminanceAlphaDataToNativeOrBGRA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData, false); + break; + case GL_LUMINANCE_ALPHA32F_EXT: + loadLuminanceAlphaFloatDataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_LUMINANCE_ALPHA16F_EXT: + loadLuminanceAlphaHalfFloatDataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_RGB8_OES: + loadRGBUByteDataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_RGB565: + loadRGB565DataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_RGBA8_OES: + loadRGBAUByteDataToNative(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_RGBA4: + loadRGBA4444DataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_RGB5_A1: + loadRGBA5551DataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_BGRA8_EXT: + loadBGRADataToBGRA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_RGB32F_EXT: + loadRGBFloatDataToNative(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_RGB16F_EXT: + loadRGBHalfFloatDataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_RGBA32F_EXT: + loadRGBAFloatDataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + case GL_RGBA16F_EXT: + loadRGBAHalfFloatDataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData); + break; + default: UNREACHABLE(); + } + + unmap(); +} + +void Image11::loadCompressedData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, + const void *input) +{ + ASSERT(xoffset % 4 == 0); + ASSERT(yoffset % 4 == 0); + + D3D11_MAPPED_SUBRESOURCE mappedImage; + HRESULT result = map(&mappedImage); + if (FAILED(result)) + { + ERR("Could not map image for loading."); + return; + } + + // Size computation assumes a 4x4 block compressed texture format + size_t blockSize = d3d11::ComputeBlockSizeBits(mDXGIFormat) / 8; + void* offsetMappedData = (void*)((BYTE *)mappedImage.pData + ((yoffset / 4) * mappedImage.RowPitch + (xoffset / 4) * blockSize)); + + GLsizei inputSize = gl::ComputeCompressedSize(width, height, mInternalFormat); + GLsizei inputPitch = gl::ComputeCompressedPitch(width, mInternalFormat); + int rows = inputSize / inputPitch; + for (int i = 0; i < rows; ++i) + { + memcpy((void*)((BYTE*)offsetMappedData + i * mappedImage.RowPitch), (void*)((BYTE*)input + i * inputPitch), inputPitch); + } + + unmap(); +} + +void Image11::copy(GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source) +{ + gl::Renderbuffer *colorbuffer = source->getReadColorbuffer(); + + if (colorbuffer && colorbuffer->getActualFormat() == (GLuint)mActualFormat) + { + // No conversion needed-- use copyback fastpath + ID3D11Texture2D *colorBufferTexture = NULL; + unsigned int subresourceIndex = 0; + + if (mRenderer->getRenderTargetResource(colorbuffer, &subresourceIndex, &colorBufferTexture)) + { + D3D11_TEXTURE2D_DESC textureDesc; + colorBufferTexture->GetDesc(&textureDesc); + + ID3D11Device *device = mRenderer->getDevice(); + ID3D11DeviceContext *deviceContext = mRenderer->getDeviceContext(); + + ID3D11Texture2D* srcTex = NULL; + if (textureDesc.SampleDesc.Count > 1) + { + D3D11_TEXTURE2D_DESC resolveDesc; + resolveDesc.Width = textureDesc.Width; + resolveDesc.Height = textureDesc.Height; + resolveDesc.MipLevels = 1; + resolveDesc.ArraySize = 1; + resolveDesc.Format = textureDesc.Format; + resolveDesc.SampleDesc.Count = 1; + resolveDesc.SampleDesc.Quality = 0; + resolveDesc.Usage = D3D11_USAGE_DEFAULT; + resolveDesc.BindFlags = 0; + resolveDesc.CPUAccessFlags = 0; + resolveDesc.MiscFlags = 0; + + HRESULT result = device->CreateTexture2D(&resolveDesc, NULL, &srcTex); + if (FAILED(result)) + { + ERR("Failed to create resolve texture for Image11::copy, HRESULT: 0x%X.", result); + return; + } + + deviceContext->ResolveSubresource(srcTex, 0, colorBufferTexture, subresourceIndex, textureDesc.Format); + subresourceIndex = 0; + } + else + { + srcTex = colorBufferTexture; + srcTex->AddRef(); + } + + D3D11_BOX srcBox; + srcBox.left = x; + srcBox.right = x + width; + srcBox.top = y; + srcBox.bottom = y + height; + srcBox.front = 0; + srcBox.back = 1; + + deviceContext->CopySubresourceRegion(mStagingTexture, 0, xoffset, yoffset, 0, srcTex, subresourceIndex, &srcBox); + + srcTex->Release(); + colorBufferTexture->Release(); + } + } + else + { + // This format requires conversion, so we must copy the texture to staging and manually convert via readPixels + D3D11_MAPPED_SUBRESOURCE mappedImage; + HRESULT result = map(&mappedImage); + + // determine the offset coordinate into the destination buffer + GLsizei rowOffset = gl::ComputePixelSize(mActualFormat) * xoffset; + void *dataOffset = static_cast(mappedImage.pData) + mappedImage.RowPitch * yoffset + rowOffset; + + mRenderer->readPixels(source, x, y, width, height, gl::ExtractFormat(mInternalFormat), + gl::ExtractType(mInternalFormat), mappedImage.RowPitch, false, 4, dataOffset); + + unmap(); + } +} + +ID3D11Texture2D *Image11::getStagingTexture() +{ + createStagingTexture(); + + return mStagingTexture; +} + +unsigned int Image11::getStagingSubresource() +{ + createStagingTexture(); + + return mStagingSubresource; +} + +void Image11::createStagingTexture() +{ + if (mStagingTexture) + { + return; + } + + ID3D11Texture2D *newTexture = NULL; + int lodOffset = 1; + const DXGI_FORMAT dxgiFormat = getDXGIFormat(); + ASSERT(!d3d11::IsDepthStencilFormat(dxgiFormat)); // We should never get here for depth textures + + if (mWidth != 0 && mHeight != 0) + { + GLsizei width = mWidth; + GLsizei height = mHeight; + + // adjust size if needed for compressed textures + gl::MakeValidSize(false, d3d11::IsCompressed(dxgiFormat), &width, &height, &lodOffset); + ID3D11Device *device = mRenderer->getDevice(); + + D3D11_TEXTURE2D_DESC desc; + desc.Width = width; + desc.Height = height; + desc.MipLevels = lodOffset + 1; + desc.ArraySize = 1; + desc.Format = dxgiFormat; + desc.SampleDesc.Count = 1; + desc.SampleDesc.Quality = 0; + desc.Usage = D3D11_USAGE_STAGING; + desc.BindFlags = 0; + desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + desc.MiscFlags = 0; + + HRESULT result = device->CreateTexture2D(&desc, NULL, &newTexture); + + if (FAILED(result)) + { + ASSERT(result == E_OUTOFMEMORY); + ERR("Creating image failed."); + return gl::error(GL_OUT_OF_MEMORY); + } + } + + mStagingTexture = newTexture; + mStagingSubresource = D3D11CalcSubresource(lodOffset, 0, lodOffset + 1); + mDirty = false; +} + +HRESULT Image11::map(D3D11_MAPPED_SUBRESOURCE *map) +{ + createStagingTexture(); + + HRESULT result = E_FAIL; + + if (mStagingTexture) + { + ID3D11DeviceContext *deviceContext = mRenderer->getDeviceContext(); + result = deviceContext->Map(mStagingTexture, mStagingSubresource, D3D11_MAP_WRITE, 0, map); + + // this can fail if the device is removed (from TDR) + if (d3d11::isDeviceLostError(result)) + { + mRenderer->notifyDeviceLost(); + } + else if (SUCCEEDED(result)) + { + mDirty = true; + } + } + + return result; +} + +void Image11::unmap() +{ + if (mStagingTexture) + { + ID3D11DeviceContext *deviceContext = mRenderer->getDeviceContext(); + deviceContext->Unmap(mStagingTexture, mStagingSubresource); + } +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image11.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image11.h new file mode 100644 index 00000000000..4d5f1c17803 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image11.h @@ -0,0 +1,76 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Image11.h: Defines the rx::Image11 class, which acts as the interface to +// the actual underlying resources of a Texture + +#ifndef LIBGLESV2_RENDERER_IMAGE11_H_ +#define LIBGLESV2_RENDERER_IMAGE11_H_ + +#include "libGLESv2/renderer/Image.h" + +#include "common/debug.h" + +namespace gl +{ +class Framebuffer; +} + +namespace rx +{ +class Renderer; +class Renderer11; +class TextureStorageInterface2D; +class TextureStorageInterfaceCube; + +class Image11 : public Image +{ + public: + Image11(); + virtual ~Image11(); + + static Image11 *makeImage11(Image *img); + + static void generateMipmap(Image11 *dest, Image11 *src); + + virtual bool isDirty() const; + + virtual bool updateSurface(TextureStorageInterface2D *storage, int level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height); + virtual bool updateSurface(TextureStorageInterfaceCube *storage, int face, int level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height); + + virtual bool redefine(Renderer *renderer, GLint internalformat, GLsizei width, GLsizei height, bool forceRelease); + + virtual bool isRenderableFormat() const; + DXGI_FORMAT getDXGIFormat() const; + + virtual void loadData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, + GLint unpackAlignment, const void *input); + virtual void loadCompressedData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, + const void *input); + + virtual void copy(GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source); + + protected: + HRESULT map(D3D11_MAPPED_SUBRESOURCE *map); + void unmap(); + + private: + DISALLOW_COPY_AND_ASSIGN(Image11); + + ID3D11Texture2D *getStagingTexture(); + unsigned int getStagingSubresource(); + void createStagingTexture(); + + Renderer11 *mRenderer; + + DXGI_FORMAT mDXGIFormat; + ID3D11Texture2D *mStagingTexture; + unsigned int mStagingSubresource; +}; + +} + +#endif // LIBGLESV2_RENDERER_IMAGE11_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image9.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image9.cpp new file mode 100644 index 00000000000..b3dcc59b6bd --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image9.cpp @@ -0,0 +1,732 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Image9.cpp: Implements the rx::Image9 class, which acts as the interface to +// the actual underlying surfaces of a Texture. + +#include "libGLESv2/renderer/Image9.h" + +#include "libGLESv2/main.h" +#include "libGLESv2/Framebuffer.h" +#include "libGLESv2/Renderbuffer.h" +#include "libGLESv2/renderer/Renderer9.h" +#include "libGLESv2/renderer/RenderTarget9.h" +#include "libGLESv2/renderer/TextureStorage9.h" + +#include "libGLESv2/renderer/renderer9_utils.h" +#include "libGLESv2/renderer/generatemip.h" + +namespace rx +{ + +Image9::Image9() +{ + mSurface = NULL; + mRenderer = NULL; + + mD3DPool = D3DPOOL_SYSTEMMEM; + mD3DFormat = D3DFMT_UNKNOWN; +} + +Image9::~Image9() +{ + if (mSurface) + { + mSurface->Release(); + } +} + +void Image9::generateMip(IDirect3DSurface9 *destSurface, IDirect3DSurface9 *sourceSurface) +{ + D3DSURFACE_DESC destDesc; + HRESULT result = destSurface->GetDesc(&destDesc); + ASSERT(SUCCEEDED(result)); + + D3DSURFACE_DESC sourceDesc; + result = sourceSurface->GetDesc(&sourceDesc); + ASSERT(SUCCEEDED(result)); + + ASSERT(sourceDesc.Format == destDesc.Format); + ASSERT(sourceDesc.Width == 1 || sourceDesc.Width / 2 == destDesc.Width); + ASSERT(sourceDesc.Height == 1 || sourceDesc.Height / 2 == destDesc.Height); + + D3DLOCKED_RECT sourceLocked = {0}; + result = sourceSurface->LockRect(&sourceLocked, NULL, D3DLOCK_READONLY); + ASSERT(SUCCEEDED(result)); + + D3DLOCKED_RECT destLocked = {0}; + result = destSurface->LockRect(&destLocked, NULL, 0); + ASSERT(SUCCEEDED(result)); + + const unsigned char *sourceData = reinterpret_cast(sourceLocked.pBits); + unsigned char *destData = reinterpret_cast(destLocked.pBits); + + if (sourceData && destData) + { + switch (sourceDesc.Format) + { + case D3DFMT_L8: + GenerateMip(sourceDesc.Width, sourceDesc.Height, sourceData, sourceLocked.Pitch, destData, destLocked.Pitch); + break; + case D3DFMT_A8L8: + GenerateMip(sourceDesc.Width, sourceDesc.Height, sourceData, sourceLocked.Pitch, destData, destLocked.Pitch); + break; + case D3DFMT_A8R8G8B8: + case D3DFMT_X8R8G8B8: + GenerateMip(sourceDesc.Width, sourceDesc.Height, sourceData, sourceLocked.Pitch, destData, destLocked.Pitch); + break; + case D3DFMT_A16B16G16R16F: + GenerateMip(sourceDesc.Width, sourceDesc.Height, sourceData, sourceLocked.Pitch, destData, destLocked.Pitch); + break; + case D3DFMT_A32B32G32R32F: + GenerateMip(sourceDesc.Width, sourceDesc.Height, sourceData, sourceLocked.Pitch, destData, destLocked.Pitch); + break; + default: + UNREACHABLE(); + break; + } + + destSurface->UnlockRect(); + sourceSurface->UnlockRect(); + } +} + +Image9 *Image9::makeImage9(Image *img) +{ + ASSERT(HAS_DYNAMIC_TYPE(rx::Image9*, img)); + return static_cast(img); +} + +void Image9::generateMipmap(Image9 *dest, Image9 *source) +{ + IDirect3DSurface9 *sourceSurface = source->getSurface(); + if (sourceSurface == NULL) + return gl::error(GL_OUT_OF_MEMORY); + + IDirect3DSurface9 *destSurface = dest->getSurface(); + generateMip(destSurface, sourceSurface); + + dest->markDirty(); +} + +void Image9::copyLockableSurfaces(IDirect3DSurface9 *dest, IDirect3DSurface9 *source) +{ + D3DLOCKED_RECT sourceLock = {0}; + D3DLOCKED_RECT destLock = {0}; + + source->LockRect(&sourceLock, NULL, 0); + dest->LockRect(&destLock, NULL, 0); + + if (sourceLock.pBits && destLock.pBits) + { + D3DSURFACE_DESC desc; + source->GetDesc(&desc); + + int rows = d3d9::IsCompressedFormat(desc.Format) ? desc.Height / 4 : desc.Height; + int bytes = d3d9::ComputeRowSize(desc.Format, desc.Width); + ASSERT(bytes <= sourceLock.Pitch && bytes <= destLock.Pitch); + + for(int i = 0; i < rows; i++) + { + memcpy((char*)destLock.pBits + destLock.Pitch * i, (char*)sourceLock.pBits + sourceLock.Pitch * i, bytes); + } + + source->UnlockRect(); + dest->UnlockRect(); + } + else UNREACHABLE(); +} + +bool Image9::redefine(rx::Renderer *renderer, GLint internalformat, GLsizei width, GLsizei height, bool forceRelease) +{ + if (mWidth != width || + mHeight != height || + mInternalFormat != internalformat || + forceRelease) + { + mRenderer = Renderer9::makeRenderer9(renderer); + + mWidth = width; + mHeight = height; + mInternalFormat = internalformat; + // compute the d3d format that will be used + mD3DFormat = mRenderer->ConvertTextureInternalFormat(internalformat); + mActualFormat = d3d9_gl::GetEquivalentFormat(mD3DFormat); + + if (mSurface) + { + mSurface->Release(); + mSurface = NULL; + } + + return true; + } + + return false; +} + +void Image9::createSurface() +{ + if(mSurface) + { + return; + } + + IDirect3DTexture9 *newTexture = NULL; + IDirect3DSurface9 *newSurface = NULL; + const D3DPOOL poolToUse = D3DPOOL_SYSTEMMEM; + const D3DFORMAT d3dFormat = getD3DFormat(); + ASSERT(d3dFormat != D3DFMT_INTZ); // We should never get here for depth textures + + if (mWidth != 0 && mHeight != 0) + { + int levelToFetch = 0; + GLsizei requestWidth = mWidth; + GLsizei requestHeight = mHeight; + gl::MakeValidSize(true, gl::IsCompressed(mInternalFormat), &requestWidth, &requestHeight, &levelToFetch); + + IDirect3DDevice9 *device = mRenderer->getDevice(); + + HRESULT result = device->CreateTexture(requestWidth, requestHeight, levelToFetch + 1, 0, d3dFormat, + poolToUse, &newTexture, NULL); + + if (FAILED(result)) + { + ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY); + ERR("Creating image surface failed."); + return gl::error(GL_OUT_OF_MEMORY); + } + + newTexture->GetSurfaceLevel(levelToFetch, &newSurface); + newTexture->Release(); + } + + mSurface = newSurface; + mDirty = false; + mD3DPool = poolToUse; +} + +HRESULT Image9::lock(D3DLOCKED_RECT *lockedRect, const RECT *rect) +{ + createSurface(); + + HRESULT result = D3DERR_INVALIDCALL; + + if (mSurface) + { + result = mSurface->LockRect(lockedRect, rect, 0); + ASSERT(SUCCEEDED(result)); + + mDirty = true; + } + + return result; +} + +void Image9::unlock() +{ + if (mSurface) + { + HRESULT result = mSurface->UnlockRect(); + ASSERT(SUCCEEDED(result)); + } +} + +bool Image9::isRenderableFormat() const +{ + return TextureStorage9::IsTextureFormatRenderable(getD3DFormat()); +} + +D3DFORMAT Image9::getD3DFormat() const +{ + // this should only happen if the image hasn't been redefined first + // which would be a bug by the caller + ASSERT(mD3DFormat != D3DFMT_UNKNOWN); + + return mD3DFormat; +} + +IDirect3DSurface9 *Image9::getSurface() +{ + createSurface(); + + return mSurface; +} + +void Image9::setManagedSurface(TextureStorageInterface2D *storage, int level) +{ + TextureStorage9_2D *storage9 = TextureStorage9_2D::makeTextureStorage9_2D(storage->getStorageInstance()); + setManagedSurface(storage9->getSurfaceLevel(level, false)); +} + +void Image9::setManagedSurface(TextureStorageInterfaceCube *storage, int face, int level) +{ + TextureStorage9_Cube *storage9 = TextureStorage9_Cube::makeTextureStorage9_Cube(storage->getStorageInstance()); + setManagedSurface(storage9->getCubeMapSurface(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, level, false)); +} + +void Image9::setManagedSurface(IDirect3DSurface9 *surface) +{ + D3DSURFACE_DESC desc; + surface->GetDesc(&desc); + ASSERT(desc.Pool == D3DPOOL_MANAGED); + + if ((GLsizei)desc.Width == mWidth && (GLsizei)desc.Height == mHeight) + { + if (mSurface) + { + copyLockableSurfaces(surface, mSurface); + mSurface->Release(); + } + + mSurface = surface; + mD3DPool = desc.Pool; + } +} + +bool Image9::updateSurface(TextureStorageInterface2D *storage, int level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height) +{ + ASSERT(getSurface() != NULL); + TextureStorage9_2D *storage9 = TextureStorage9_2D::makeTextureStorage9_2D(storage->getStorageInstance()); + return updateSurface(storage9->getSurfaceLevel(level, true), xoffset, yoffset, width, height); +} + +bool Image9::updateSurface(TextureStorageInterfaceCube *storage, int face, int level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height) +{ + ASSERT(getSurface() != NULL); + TextureStorage9_Cube *storage9 = TextureStorage9_Cube::makeTextureStorage9_Cube(storage->getStorageInstance()); + return updateSurface(storage9->getCubeMapSurface(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, level, true), xoffset, yoffset, width, height); +} + +bool Image9::updateSurface(IDirect3DSurface9 *destSurface, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height) +{ + if (!destSurface) + return false; + + IDirect3DSurface9 *sourceSurface = getSurface(); + + if (sourceSurface && sourceSurface != destSurface) + { + RECT rect; + rect.left = xoffset; + rect.top = yoffset; + rect.right = xoffset + width; + rect.bottom = yoffset + height; + + POINT point = {rect.left, rect.top}; + + IDirect3DDevice9 *device = mRenderer->getDevice(); + + if (mD3DPool == D3DPOOL_MANAGED) + { + D3DSURFACE_DESC desc; + sourceSurface->GetDesc(&desc); + + IDirect3DSurface9 *surf = 0; + HRESULT result = device->CreateOffscreenPlainSurface(desc.Width, desc.Height, desc.Format, D3DPOOL_SYSTEMMEM, &surf, NULL); + + if (SUCCEEDED(result)) + { + copyLockableSurfaces(surf, sourceSurface); + result = device->UpdateSurface(surf, &rect, destSurface, &point); + ASSERT(SUCCEEDED(result)); + surf->Release(); + } + } + else + { + // UpdateSurface: source must be SYSTEMMEM, dest must be DEFAULT pools + HRESULT result = device->UpdateSurface(sourceSurface, &rect, destSurface, &point); + ASSERT(SUCCEEDED(result)); + } + } + + destSurface->Release(); + return true; +} + +// Store the pixel rectangle designated by xoffset,yoffset,width,height with pixels stored as format/type at input +// into the target pixel rectangle. +void Image9::loadData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, + GLint unpackAlignment, const void *input) +{ + RECT lockRect = + { + xoffset, yoffset, + xoffset + width, yoffset + height + }; + + D3DLOCKED_RECT locked; + HRESULT result = lock(&locked, &lockRect); + if (FAILED(result)) + { + return; + } + + + GLsizei inputPitch = gl::ComputePitch(width, mInternalFormat, unpackAlignment); + + switch (mInternalFormat) + { + case GL_ALPHA8_EXT: + if (gl::supportsSSE2()) + { + loadAlphaDataToBGRASSE2(width, height, inputPitch, input, locked.Pitch, locked.pBits); + } + else + { + loadAlphaDataToBGRA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + } + break; + case GL_LUMINANCE8_EXT: + loadLuminanceDataToNativeOrBGRA(width, height, inputPitch, input, locked.Pitch, locked.pBits, getD3DFormat() == D3DFMT_L8); + break; + case GL_ALPHA32F_EXT: + loadAlphaFloatDataToRGBA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + break; + case GL_LUMINANCE32F_EXT: + loadLuminanceFloatDataToRGBA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + break; + case GL_ALPHA16F_EXT: + loadAlphaHalfFloatDataToRGBA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + break; + case GL_LUMINANCE16F_EXT: + loadLuminanceHalfFloatDataToRGBA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + break; + case GL_LUMINANCE8_ALPHA8_EXT: + loadLuminanceAlphaDataToNativeOrBGRA(width, height, inputPitch, input, locked.Pitch, locked.pBits, getD3DFormat() == D3DFMT_A8L8); + break; + case GL_LUMINANCE_ALPHA32F_EXT: + loadLuminanceAlphaFloatDataToRGBA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + break; + case GL_LUMINANCE_ALPHA16F_EXT: + loadLuminanceAlphaHalfFloatDataToRGBA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + break; + case GL_RGB8_OES: + loadRGBUByteDataToBGRX(width, height, inputPitch, input, locked.Pitch, locked.pBits); + break; + case GL_RGB565: + loadRGB565DataToBGRA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + break; + case GL_RGBA8_OES: + if (gl::supportsSSE2()) + { + loadRGBAUByteDataToBGRASSE2(width, height, inputPitch, input, locked.Pitch, locked.pBits); + } + else + { + loadRGBAUByteDataToBGRA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + } + break; + case GL_RGBA4: + loadRGBA4444DataToBGRA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + break; + case GL_RGB5_A1: + loadRGBA5551DataToBGRA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + break; + case GL_BGRA8_EXT: + loadBGRADataToBGRA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + break; + // float textures are converted to RGBA, not BGRA, as they're stored that way in D3D + case GL_RGB32F_EXT: + loadRGBFloatDataToRGBA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + break; + case GL_RGB16F_EXT: + loadRGBHalfFloatDataToRGBA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + break; + case GL_RGBA32F_EXT: + loadRGBAFloatDataToRGBA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + break; + case GL_RGBA16F_EXT: + loadRGBAHalfFloatDataToRGBA(width, height, inputPitch, input, locked.Pitch, locked.pBits); + break; + default: UNREACHABLE(); + } + + unlock(); +} + +void Image9::loadCompressedData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, + const void *input) +{ + ASSERT(xoffset % 4 == 0); + ASSERT(yoffset % 4 == 0); + + RECT lockRect = { + xoffset, yoffset, + xoffset + width, yoffset + height + }; + + D3DLOCKED_RECT locked; + HRESULT result = lock(&locked, &lockRect); + if (FAILED(result)) + { + return; + } + + GLsizei inputSize = gl::ComputeCompressedSize(width, height, mInternalFormat); + GLsizei inputPitch = gl::ComputeCompressedPitch(width, mInternalFormat); + int rows = inputSize / inputPitch; + for (int i = 0; i < rows; ++i) + { + memcpy((void*)((BYTE*)locked.pBits + i * locked.Pitch), (void*)((BYTE*)input + i * inputPitch), inputPitch); + } + + unlock(); +} + +// This implements glCopyTex[Sub]Image2D for non-renderable internal texture formats and incomplete textures +void Image9::copy(GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source) +{ + RenderTarget9 *renderTarget = NULL; + IDirect3DSurface9 *surface = NULL; + gl::Renderbuffer *colorbuffer = source->getColorbuffer(0); + + if (colorbuffer) + { + renderTarget = RenderTarget9::makeRenderTarget9(colorbuffer->getRenderTarget()); + } + + if (renderTarget) + { + surface = renderTarget->getSurface(); + } + + if (!surface) + { + ERR("Failed to retrieve the render target."); + return gl::error(GL_OUT_OF_MEMORY); + } + + IDirect3DDevice9 *device = mRenderer->getDevice(); + + IDirect3DSurface9 *renderTargetData = NULL; + D3DSURFACE_DESC description; + surface->GetDesc(&description); + + HRESULT result = device->CreateOffscreenPlainSurface(description.Width, description.Height, description.Format, D3DPOOL_SYSTEMMEM, &renderTargetData, NULL); + + if (FAILED(result)) + { + ERR("Could not create matching destination surface."); + surface->Release(); + return gl::error(GL_OUT_OF_MEMORY); + } + + result = device->GetRenderTargetData(surface, renderTargetData); + + if (FAILED(result)) + { + ERR("GetRenderTargetData unexpectedly failed."); + renderTargetData->Release(); + surface->Release(); + return gl::error(GL_OUT_OF_MEMORY); + } + + RECT sourceRect = {x, y, x + width, y + height}; + RECT destRect = {xoffset, yoffset, xoffset + width, yoffset + height}; + + D3DLOCKED_RECT sourceLock = {0}; + result = renderTargetData->LockRect(&sourceLock, &sourceRect, 0); + + if (FAILED(result)) + { + ERR("Failed to lock the source surface (rectangle might be invalid)."); + renderTargetData->Release(); + surface->Release(); + return gl::error(GL_OUT_OF_MEMORY); + } + + D3DLOCKED_RECT destLock = {0}; + result = lock(&destLock, &destRect); + + if (FAILED(result)) + { + ERR("Failed to lock the destination surface (rectangle might be invalid)."); + renderTargetData->UnlockRect(); + renderTargetData->Release(); + surface->Release(); + return gl::error(GL_OUT_OF_MEMORY); + } + + if (destLock.pBits && sourceLock.pBits) + { + unsigned char *source = (unsigned char*)sourceLock.pBits; + unsigned char *dest = (unsigned char*)destLock.pBits; + + switch (description.Format) + { + case D3DFMT_X8R8G8B8: + case D3DFMT_A8R8G8B8: + switch(getD3DFormat()) + { + case D3DFMT_X8R8G8B8: + case D3DFMT_A8R8G8B8: + for(int y = 0; y < height; y++) + { + memcpy(dest, source, 4 * width); + + source += sourceLock.Pitch; + dest += destLock.Pitch; + } + break; + case D3DFMT_L8: + for(int y = 0; y < height; y++) + { + for(int x = 0; x < width; x++) + { + dest[x] = source[x * 4 + 2]; + } + + source += sourceLock.Pitch; + dest += destLock.Pitch; + } + break; + case D3DFMT_A8L8: + for(int y = 0; y < height; y++) + { + for(int x = 0; x < width; x++) + { + dest[x * 2 + 0] = source[x * 4 + 2]; + dest[x * 2 + 1] = source[x * 4 + 3]; + } + + source += sourceLock.Pitch; + dest += destLock.Pitch; + } + break; + default: + UNREACHABLE(); + } + break; + case D3DFMT_R5G6B5: + switch(getD3DFormat()) + { + case D3DFMT_X8R8G8B8: + for(int y = 0; y < height; y++) + { + for(int x = 0; x < width; x++) + { + unsigned short rgb = ((unsigned short*)source)[x]; + unsigned char red = (rgb & 0xF800) >> 8; + unsigned char green = (rgb & 0x07E0) >> 3; + unsigned char blue = (rgb & 0x001F) << 3; + dest[x + 0] = blue | (blue >> 5); + dest[x + 1] = green | (green >> 6); + dest[x + 2] = red | (red >> 5); + dest[x + 3] = 0xFF; + } + + source += sourceLock.Pitch; + dest += destLock.Pitch; + } + break; + case D3DFMT_L8: + for(int y = 0; y < height; y++) + { + for(int x = 0; x < width; x++) + { + unsigned char red = source[x * 2 + 1] & 0xF8; + dest[x] = red | (red >> 5); + } + + source += sourceLock.Pitch; + dest += destLock.Pitch; + } + break; + default: + UNREACHABLE(); + } + break; + case D3DFMT_A1R5G5B5: + switch(getD3DFormat()) + { + case D3DFMT_X8R8G8B8: + for(int y = 0; y < height; y++) + { + for(int x = 0; x < width; x++) + { + unsigned short argb = ((unsigned short*)source)[x]; + unsigned char red = (argb & 0x7C00) >> 7; + unsigned char green = (argb & 0x03E0) >> 2; + unsigned char blue = (argb & 0x001F) << 3; + dest[x + 0] = blue | (blue >> 5); + dest[x + 1] = green | (green >> 5); + dest[x + 2] = red | (red >> 5); + dest[x + 3] = 0xFF; + } + + source += sourceLock.Pitch; + dest += destLock.Pitch; + } + break; + case D3DFMT_A8R8G8B8: + for(int y = 0; y < height; y++) + { + for(int x = 0; x < width; x++) + { + unsigned short argb = ((unsigned short*)source)[x]; + unsigned char red = (argb & 0x7C00) >> 7; + unsigned char green = (argb & 0x03E0) >> 2; + unsigned char blue = (argb & 0x001F) << 3; + unsigned char alpha = (signed short)argb >> 15; + dest[x + 0] = blue | (blue >> 5); + dest[x + 1] = green | (green >> 5); + dest[x + 2] = red | (red >> 5); + dest[x + 3] = alpha; + } + + source += sourceLock.Pitch; + dest += destLock.Pitch; + } + break; + case D3DFMT_L8: + for(int y = 0; y < height; y++) + { + for(int x = 0; x < width; x++) + { + unsigned char red = source[x * 2 + 1] & 0x7C; + dest[x] = (red << 1) | (red >> 4); + } + + source += sourceLock.Pitch; + dest += destLock.Pitch; + } + break; + case D3DFMT_A8L8: + for(int y = 0; y < height; y++) + { + for(int x = 0; x < width; x++) + { + unsigned char red = source[x * 2 + 1] & 0x7C; + dest[x * 2 + 0] = (red << 1) | (red >> 4); + dest[x * 2 + 1] = (signed char)source[x * 2 + 1] >> 7; + } + + source += sourceLock.Pitch; + dest += destLock.Pitch; + } + break; + default: + UNREACHABLE(); + } + break; + default: + UNREACHABLE(); + } + } + + unlock(); + renderTargetData->UnlockRect(); + + renderTargetData->Release(); + surface->Release(); + + mDirty = true; +} + +} \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image9.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image9.h new file mode 100644 index 00000000000..2fbbca31243 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image9.h @@ -0,0 +1,79 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Image9.h: Defines the rx::Image9 class, which acts as the interface to +// the actual underlying surfaces of a Texture. + +#ifndef LIBGLESV2_RENDERER_IMAGE9_H_ +#define LIBGLESV2_RENDERER_IMAGE9_H_ + +#include "libGLESv2/renderer/Image.h" +#include "common/debug.h" + +namespace gl +{ +class Framebuffer; +} + +namespace rx +{ +class Renderer; +class Renderer9; +class TextureStorageInterface2D; +class TextureStorageInterfaceCube; + +class Image9 : public Image +{ + public: + Image9(); + ~Image9(); + + static Image9 *makeImage9(Image *img); + + static void generateMipmap(Image9 *dest, Image9 *source); + static void generateMip(IDirect3DSurface9 *destSurface, IDirect3DSurface9 *sourceSurface); + static void copyLockableSurfaces(IDirect3DSurface9 *dest, IDirect3DSurface9 *source); + + virtual bool redefine(Renderer *renderer, GLint internalformat, GLsizei width, GLsizei height, bool forceRelease); + + virtual bool isRenderableFormat() const; + D3DFORMAT getD3DFormat() const; + + virtual bool isDirty() const {return mSurface && mDirty;} + IDirect3DSurface9 *getSurface(); + + virtual void setManagedSurface(TextureStorageInterface2D *storage, int level); + virtual void setManagedSurface(TextureStorageInterfaceCube *storage, int face, int level); + virtual bool updateSurface(TextureStorageInterface2D *storage, int level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height); + virtual bool updateSurface(TextureStorageInterfaceCube *storage, int face, int level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height); + + virtual void loadData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, + GLint unpackAlignment, const void *input); + virtual void loadCompressedData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, + const void *input); + + virtual void copy(GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source); + + private: + DISALLOW_COPY_AND_ASSIGN(Image9); + + void createSurface(); + void setManagedSurface(IDirect3DSurface9 *surface); + bool updateSurface(IDirect3DSurface9 *dest, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height); + + HRESULT lock(D3DLOCKED_RECT *lockedRect, const RECT *rect); + void unlock(); + + Renderer9 *mRenderer; + + D3DPOOL mD3DPool; // can only be D3DPOOL_SYSTEMMEM or D3DPOOL_MANAGED since it needs to be lockable. + D3DFORMAT mD3DFormat; + + IDirect3DSurface9 *mSurface; +}; +} + +#endif // LIBGLESV2_RENDERER_IMAGE9_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ImageSSE2.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ImageSSE2.cpp new file mode 100644 index 00000000000..b2a90ca9611 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ImageSSE2.cpp @@ -0,0 +1,100 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// ImageSSE2.cpp: Implements SSE2-based functions of rx::Image class. It's +// in a separated file for GCC, which can enable SSE usage only per-file, +// not for code blocks that use SSE2 explicitly. + +#include "libGLESv2/Texture.h" +#include "libGLESv2/renderer/Image.h" + +namespace rx +{ + +void Image::loadRGBAUByteDataToBGRASSE2(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned int *source = NULL; + unsigned int *dest = NULL; + __m128i brMask = _mm_set1_epi32(0x00ff00ff); + + for (int y = 0; y < height; y++) + { + source = reinterpret_cast(static_cast(input) + y * inputPitch); + dest = reinterpret_cast(static_cast(output) + y * outputPitch); + int x = 0; + + // Make output writes aligned + for (x = 0; ((reinterpret_cast(&dest[x]) & 15) != 0) && x < width; x++) + { + unsigned int rgba = source[x]; + dest[x] = (_rotl(rgba, 16) & 0x00ff00ff) | (rgba & 0xff00ff00); + } + + for (; x + 3 < width; x += 4) + { + __m128i sourceData = _mm_loadu_si128(reinterpret_cast(&source[x])); + // Mask out g and a, which don't change + __m128i gaComponents = _mm_andnot_si128(brMask, sourceData); + // Mask out b and r + __m128i brComponents = _mm_and_si128(sourceData, brMask); + // Swap b and r + __m128i brSwapped = _mm_shufflehi_epi16(_mm_shufflelo_epi16(brComponents, _MM_SHUFFLE(2, 3, 0, 1)), _MM_SHUFFLE(2, 3, 0, 1)); + __m128i result = _mm_or_si128(gaComponents, brSwapped); + _mm_store_si128(reinterpret_cast<__m128i*>(&dest[x]), result); + } + + // Perform leftover writes + for (; x < width; x++) + { + unsigned int rgba = source[x]; + dest[x] = (_rotl(rgba, 16) & 0x00ff00ff) | (rgba & 0xff00ff00); + } + } +} + +void Image::loadAlphaDataToBGRASSE2(GLsizei width, GLsizei height, + int inputPitch, const void *input, size_t outputPitch, void *output) +{ + const unsigned char *source = NULL; + unsigned int *dest = NULL; + __m128i zeroWide = _mm_setzero_si128(); + + for (int y = 0; y < height; y++) + { + source = static_cast(input) + y * inputPitch; + dest = reinterpret_cast(static_cast(output) + y * outputPitch); + + int x; + // Make output writes aligned + for (x = 0; ((reinterpret_cast(&dest[x]) & 0xF) != 0 && x < width); x++) + { + dest[x] = static_cast(source[x]) << 24; + } + + for (; x + 7 < width; x += 8) + { + __m128i sourceData = _mm_loadl_epi64(reinterpret_cast(&source[x])); + // Interleave each byte to 16bit, make the lower byte to zero + sourceData = _mm_unpacklo_epi8(zeroWide, sourceData); + // Interleave each 16bit to 32bit, make the lower 16bit to zero + __m128i lo = _mm_unpacklo_epi16(zeroWide, sourceData); + __m128i hi = _mm_unpackhi_epi16(zeroWide, sourceData); + + _mm_store_si128(reinterpret_cast<__m128i*>(&dest[x]), lo); + _mm_store_si128(reinterpret_cast<__m128i*>(&dest[x + 4]), hi); + } + + // Handle the remainder + for (; x < width; x++) + { + dest[x] = static_cast(source[x]) << 24; + } + } +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer.cpp new file mode 100644 index 00000000000..3d5d7a7c955 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer.cpp @@ -0,0 +1,203 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// IndexBuffer.cpp: Defines the abstract IndexBuffer class and IndexBufferInterface +// class with derivations, classes that perform graphics API agnostic index buffer operations. + +#include "libGLESv2/renderer/IndexBuffer.h" +#include "libGLESv2/renderer/Renderer.h" + +namespace rx +{ + +unsigned int IndexBuffer::mNextSerial = 1; + +IndexBuffer::IndexBuffer() +{ + updateSerial(); +} + +IndexBuffer::~IndexBuffer() +{ +} + +unsigned int IndexBuffer::getSerial() const +{ + return mSerial; +} + +void IndexBuffer::updateSerial() +{ + mSerial = mNextSerial++; +} + + +IndexBufferInterface::IndexBufferInterface(Renderer *renderer, bool dynamic) : mRenderer(renderer) +{ + mIndexBuffer = renderer->createIndexBuffer(); + + mDynamic = dynamic; + mWritePosition = 0; +} + +IndexBufferInterface::~IndexBufferInterface() +{ + if (mIndexBuffer) + { + delete mIndexBuffer; + } +} + +GLenum IndexBufferInterface::getIndexType() const +{ + return mIndexBuffer->getIndexType(); +} + +unsigned int IndexBufferInterface::getBufferSize() const +{ + return mIndexBuffer->getBufferSize(); +} + +unsigned int IndexBufferInterface::getSerial() const +{ + return mIndexBuffer->getSerial(); +} + +int IndexBufferInterface::mapBuffer(unsigned int size, void** outMappedMemory) +{ + if (!mIndexBuffer->mapBuffer(mWritePosition, size, outMappedMemory)) + { + *outMappedMemory = NULL; + return -1; + } + + int oldWritePos = static_cast(mWritePosition); + mWritePosition += size; + + return oldWritePos; +} + +bool IndexBufferInterface::unmapBuffer() +{ + return mIndexBuffer->unmapBuffer(); +} + +IndexBuffer * IndexBufferInterface::getIndexBuffer() const +{ + return mIndexBuffer; +} + +unsigned int IndexBufferInterface::getWritePosition() const +{ + return mWritePosition; +} + +void IndexBufferInterface::setWritePosition(unsigned int writePosition) +{ + mWritePosition = writePosition; +} + +bool IndexBufferInterface::discard() +{ + return mIndexBuffer->discard(); +} + +bool IndexBufferInterface::setBufferSize(unsigned int bufferSize, GLenum indexType) +{ + if (mIndexBuffer->getBufferSize() == 0) + { + return mIndexBuffer->initialize(bufferSize, indexType, mDynamic); + } + else + { + return mIndexBuffer->setSize(bufferSize, indexType); + } +} + +StreamingIndexBufferInterface::StreamingIndexBufferInterface(Renderer *renderer) : IndexBufferInterface(renderer, true) +{ +} + +StreamingIndexBufferInterface::~StreamingIndexBufferInterface() +{ +} + +bool StreamingIndexBufferInterface::reserveBufferSpace(unsigned int size, GLenum indexType) +{ + bool result = true; + unsigned int curBufferSize = getBufferSize(); + unsigned int writePos = getWritePosition(); + if (size > curBufferSize) + { + result = setBufferSize(std::max(size, 2 * curBufferSize), indexType); + setWritePosition(0); + } + else if (writePos + size > curBufferSize || writePos + size < writePos) + { + if (!discard()) + { + return false; + } + setWritePosition(0); + } + + return result; +} + + +StaticIndexBufferInterface::StaticIndexBufferInterface(Renderer *renderer) : IndexBufferInterface(renderer, false) +{ +} + +StaticIndexBufferInterface::~StaticIndexBufferInterface() +{ +} + +bool StaticIndexBufferInterface::reserveBufferSpace(unsigned int size, GLenum indexType) +{ + unsigned int curSize = getBufferSize(); + if (curSize == 0) + { + return setBufferSize(size, indexType); + } + else if (curSize >= size && indexType == getIndexType()) + { + return true; + } + else + { + ERR("Static index buffers can't be resized"); + UNREACHABLE(); + return false; + } +} + +unsigned int StaticIndexBufferInterface::lookupRange(intptr_t offset, GLsizei count, unsigned int *minIndex, unsigned int *maxIndex) +{ + IndexRange range = {offset, count}; + + std::map::iterator res = mCache.find(range); + + if (res == mCache.end()) + { + return -1; + } + + *minIndex = res->second.minIndex; + *maxIndex = res->second.maxIndex; + return res->second.streamOffset; +} + +void StaticIndexBufferInterface::addRange(intptr_t offset, GLsizei count, unsigned int minIndex, unsigned int maxIndex, unsigned int streamOffset) +{ + IndexRange indexRange = {offset, count}; + IndexResult indexResult = {minIndex, maxIndex, streamOffset}; + mCache[indexRange] = indexResult; +} + +} + diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer.h new file mode 100644 index 00000000000..1afbd626fa3 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer.h @@ -0,0 +1,137 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// IndexBuffer.h: Defines the abstract IndexBuffer class and IndexBufferInterface +// class with derivations, classes that perform graphics API agnostic index buffer operations. + +#ifndef LIBGLESV2_RENDERER_INDEXBUFFER_H_ +#define LIBGLESV2_RENDERER_INDEXBUFFER_H_ + +#include "common/angleutils.h" + +namespace rx +{ +class Renderer; + +class IndexBuffer +{ + public: + IndexBuffer(); + virtual ~IndexBuffer(); + + virtual bool initialize(unsigned int bufferSize, GLenum indexType, bool dynamic) = 0; + + virtual bool mapBuffer(unsigned int offset, unsigned int size, void** outMappedMemory) = 0; + virtual bool unmapBuffer() = 0; + + virtual bool discard() = 0; + + virtual GLenum getIndexType() const = 0; + virtual unsigned int getBufferSize() const = 0; + virtual bool setSize(unsigned int bufferSize, GLenum indexType) = 0; + + unsigned int getSerial() const; + + protected: + void updateSerial(); + + private: + DISALLOW_COPY_AND_ASSIGN(IndexBuffer); + + unsigned int mSerial; + static unsigned int mNextSerial; +}; + +class IndexBufferInterface +{ + public: + IndexBufferInterface(Renderer *renderer, bool dynamic); + virtual ~IndexBufferInterface(); + + virtual bool reserveBufferSpace(unsigned int size, GLenum indexType) = 0; + + GLenum getIndexType() const; + unsigned int getBufferSize() const; + + unsigned int getSerial() const; + + int mapBuffer(unsigned int size, void** outMappedMemory); + bool unmapBuffer(); + + IndexBuffer *getIndexBuffer() const; + + protected: + unsigned int getWritePosition() const; + void setWritePosition(unsigned int writePosition); + + bool discard(); + + bool setBufferSize(unsigned int bufferSize, GLenum indexType); + + private: + DISALLOW_COPY_AND_ASSIGN(IndexBufferInterface); + + rx::Renderer *const mRenderer; + + IndexBuffer* mIndexBuffer; + + unsigned int mWritePosition; + bool mDynamic; +}; + +class StreamingIndexBufferInterface : public IndexBufferInterface +{ + public: + StreamingIndexBufferInterface(Renderer *renderer); + ~StreamingIndexBufferInterface(); + + virtual bool reserveBufferSpace(unsigned int size, GLenum indexType); +}; + +class StaticIndexBufferInterface : public IndexBufferInterface +{ + public: + explicit StaticIndexBufferInterface(Renderer *renderer); + ~StaticIndexBufferInterface(); + + virtual bool reserveBufferSpace(unsigned int size, GLenum indexType); + + unsigned int lookupRange(intptr_t offset, GLsizei count, unsigned int *minIndex, unsigned int *maxIndex); // Returns the offset into the index buffer, or -1 if not found + void addRange(intptr_t offset, GLsizei count, unsigned int minIndex, unsigned int maxIndex, unsigned int streamOffset); + + private: + struct IndexRange + { + intptr_t offset; + GLsizei count; + + bool operator<(const IndexRange& rhs) const + { + if (offset != rhs.offset) + { + return offset < rhs.offset; + } + if (count != rhs.count) + { + return count < rhs.count; + } + return false; + } + }; + + struct IndexResult + { + unsigned int minIndex; + unsigned int maxIndex; + unsigned int streamOffset; + }; + + std::map mCache; +}; + +} + +#endif // LIBGLESV2_RENDERER_INDEXBUFFER_H_ \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer11.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer11.cpp new file mode 100644 index 00000000000..2a442ecd1ac --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer11.cpp @@ -0,0 +1,182 @@ +#include "precompiled.h" +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// IndexBuffer11.cpp: Defines the D3D11 IndexBuffer implementation. + +#include "libGLESv2/renderer/IndexBuffer11.h" +#include "libGLESv2/renderer/Renderer11.h" + +namespace rx +{ + +IndexBuffer11::IndexBuffer11(Renderer11 *const renderer) : mRenderer(renderer) +{ + mBuffer = NULL; + mBufferSize = 0; + mDynamicUsage = false; +} + +IndexBuffer11::~IndexBuffer11() +{ + if (mBuffer) + { + mBuffer->Release(); + mBuffer = NULL; + } +} + +bool IndexBuffer11::initialize(unsigned int bufferSize, GLenum indexType, bool dynamic) +{ + if (mBuffer) + { + mBuffer->Release(); + mBuffer = NULL; + } + + updateSerial(); + + if (bufferSize > 0) + { + ID3D11Device* dxDevice = mRenderer->getDevice(); + + D3D11_BUFFER_DESC bufferDesc; + bufferDesc.ByteWidth = bufferSize; + bufferDesc.Usage = D3D11_USAGE_DYNAMIC; + bufferDesc.BindFlags = D3D11_BIND_INDEX_BUFFER; + bufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + bufferDesc.MiscFlags = 0; + bufferDesc.StructureByteStride = 0; + + HRESULT result = dxDevice->CreateBuffer(&bufferDesc, NULL, &mBuffer); + if (FAILED(result)) + { + return false; + } + } + + mBufferSize = bufferSize; + mIndexType = indexType; + mDynamicUsage = dynamic; + + return true; +} + +IndexBuffer11 *IndexBuffer11::makeIndexBuffer11(IndexBuffer *indexBuffer) +{ + ASSERT(HAS_DYNAMIC_TYPE(IndexBuffer11*, indexBuffer)); + return static_cast(indexBuffer); +} + +bool IndexBuffer11::mapBuffer(unsigned int offset, unsigned int size, void** outMappedMemory) +{ + if (mBuffer) + { + if (offset + size > mBufferSize) + { + ERR("Index buffer map range is not inside the buffer."); + return false; + } + + ID3D11DeviceContext *dxContext = mRenderer->getDeviceContext(); + + D3D11_MAPPED_SUBRESOURCE mappedResource; + HRESULT result = dxContext->Map(mBuffer, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mappedResource); + if (FAILED(result)) + { + ERR("Index buffer map failed with error 0x%08x", result); + return false; + } + + *outMappedMemory = reinterpret_cast(mappedResource.pData) + offset; + return true; + } + else + { + ERR("Index buffer not initialized."); + return false; + } +} + +bool IndexBuffer11::unmapBuffer() +{ + if (mBuffer) + { + ID3D11DeviceContext *dxContext = mRenderer->getDeviceContext(); + dxContext->Unmap(mBuffer, 0); + return true; + } + else + { + ERR("Index buffer not initialized."); + return false; + } +} + +GLenum IndexBuffer11::getIndexType() const +{ + return mIndexType; +} + +unsigned int IndexBuffer11::getBufferSize() const +{ + return mBufferSize; +} + +bool IndexBuffer11::setSize(unsigned int bufferSize, GLenum indexType) +{ + if (bufferSize > mBufferSize || indexType != mIndexType) + { + return initialize(bufferSize, indexType, mDynamicUsage); + } + else + { + return true; + } +} + +bool IndexBuffer11::discard() +{ + if (mBuffer) + { + ID3D11DeviceContext *dxContext = mRenderer->getDeviceContext(); + + D3D11_MAPPED_SUBRESOURCE mappedResource; + HRESULT result = dxContext->Map(mBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource); + if (FAILED(result)) + { + ERR("Index buffer map failed with error 0x%08x", result); + return false; + } + + dxContext->Unmap(mBuffer, 0); + + return true; + } + else + { + ERR("Index buffer not initialized."); + return false; + } +} + +DXGI_FORMAT IndexBuffer11::getIndexFormat() const +{ + switch (mIndexType) + { + case GL_UNSIGNED_BYTE: return DXGI_FORMAT_R16_UINT; + case GL_UNSIGNED_SHORT: return DXGI_FORMAT_R16_UINT; + case GL_UNSIGNED_INT: return DXGI_FORMAT_R32_UINT; + default: UNREACHABLE(); return DXGI_FORMAT_UNKNOWN; + } +} + +ID3D11Buffer *IndexBuffer11::getBuffer() const +{ + return mBuffer; +} + +} \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer11.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer11.h new file mode 100644 index 00000000000..39a61946ad6 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer11.h @@ -0,0 +1,53 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// IndexBuffer11.h: Defines the D3D11 IndexBuffer implementation. + +#ifndef LIBGLESV2_RENDERER_INDEXBUFFER11_H_ +#define LIBGLESV2_RENDERER_INDEXBUFFER11_H_ + +#include "libGLESv2/renderer/IndexBuffer.h" + +namespace rx +{ +class Renderer11; + +class IndexBuffer11 : public IndexBuffer +{ + public: + explicit IndexBuffer11(Renderer11 *const renderer); + virtual ~IndexBuffer11(); + + virtual bool initialize(unsigned int bufferSize, GLenum indexType, bool dynamic); + + static IndexBuffer11 *makeIndexBuffer11(IndexBuffer *indexBuffer); + + virtual bool mapBuffer(unsigned int offset, unsigned int size, void** outMappedMemory); + virtual bool unmapBuffer(); + + virtual GLenum getIndexType() const; + virtual unsigned int getBufferSize() const; + virtual bool setSize(unsigned int bufferSize, GLenum indexType); + + virtual bool discard(); + + DXGI_FORMAT getIndexFormat() const; + ID3D11Buffer *getBuffer() const; + + private: + DISALLOW_COPY_AND_ASSIGN(IndexBuffer11); + + rx::Renderer11 *const mRenderer; + + ID3D11Buffer *mBuffer; + unsigned int mBufferSize; + GLenum mIndexType; + bool mDynamicUsage; +}; + +} + +#endif // LIBGLESV2_RENDERER_INDEXBUFFER11_H_ \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer9.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer9.cpp new file mode 100644 index 00000000000..c6d83c5dca7 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer9.cpp @@ -0,0 +1,207 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Indexffer9.cpp: Defines the D3D9 IndexBuffer implementation. + +#include "libGLESv2/renderer/IndexBuffer9.h" +#include "libGLESv2/renderer/Renderer9.h" + +namespace rx +{ + +IndexBuffer9::IndexBuffer9(Renderer9 *const renderer) : mRenderer(renderer) +{ + mIndexBuffer = NULL; + mBufferSize = 0; + mIndexType = 0; + mDynamic = false; +} + +IndexBuffer9::~IndexBuffer9() +{ + if (mIndexBuffer) + { + mIndexBuffer->Release(); + mIndexBuffer = NULL; + } +} + +bool IndexBuffer9::initialize(unsigned int bufferSize, GLenum indexType, bool dynamic) +{ + if (mIndexBuffer) + { + mIndexBuffer->Release(); + mIndexBuffer = NULL; + } + + updateSerial(); + + if (bufferSize > 0) + { + D3DFORMAT format; + if (indexType == GL_UNSIGNED_SHORT || indexType == GL_UNSIGNED_BYTE) + { + format = D3DFMT_INDEX16; + } + else if (indexType == GL_UNSIGNED_INT) + { + if (mRenderer->get32BitIndexSupport()) + { + format = D3DFMT_INDEX32; + } + else + { + ERR("Attempted to create a 32-bit index buffer but renderer does not support 32-bit indices."); + return false; + } + } + else + { + ERR("Invalid index type %u.", indexType); + return false; + } + + DWORD usageFlags = D3DUSAGE_WRITEONLY; + if (dynamic) + { + usageFlags |= D3DUSAGE_DYNAMIC; + } + + HRESULT result = mRenderer->createIndexBuffer(bufferSize, usageFlags, format, &mIndexBuffer); + if (FAILED(result)) + { + ERR("Failed to create an index buffer of size %u, result: 0x%08x.", mBufferSize, result); + return false; + } + } + + mBufferSize = bufferSize; + mIndexType = indexType; + mDynamic = dynamic; + + return true; +} + +IndexBuffer9 *IndexBuffer9::makeIndexBuffer9(IndexBuffer *indexBuffer) +{ + ASSERT(HAS_DYNAMIC_TYPE(IndexBuffer9*, indexBuffer)); + return static_cast(indexBuffer); +} + +bool IndexBuffer9::mapBuffer(unsigned int offset, unsigned int size, void** outMappedMemory) +{ + if (mIndexBuffer) + { + DWORD lockFlags = mDynamic ? D3DLOCK_NOOVERWRITE : 0; + + void *mapPtr = NULL; + HRESULT result = mIndexBuffer->Lock(offset, size, &mapPtr, lockFlags); + if (FAILED(result)) + { + ERR("Index buffer lock failed with error 0x%08x", result); + return false; + } + + *outMappedMemory = mapPtr; + return true; + } + else + { + ERR("Index buffer not initialized."); + return false; + } +} + +bool IndexBuffer9::unmapBuffer() +{ + if (mIndexBuffer) + { + HRESULT result = mIndexBuffer->Unlock(); + if (FAILED(result)) + { + ERR("Index buffer unlock failed with error 0x%08x", result); + return false; + } + + return true; + } + else + { + ERR("Index buffer not initialized."); + return false; + } +} + +GLenum IndexBuffer9::getIndexType() const +{ + return mIndexType; +} + +unsigned int IndexBuffer9::getBufferSize() const +{ + return mBufferSize; +} + +bool IndexBuffer9::setSize(unsigned int bufferSize, GLenum indexType) +{ + if (bufferSize > mBufferSize || indexType != mIndexType) + { + return initialize(bufferSize, indexType, mDynamic); + } + else + { + return true; + } +} + +bool IndexBuffer9::discard() +{ + if (mIndexBuffer) + { + void *dummy; + HRESULT result; + + result = mIndexBuffer->Lock(0, 1, &dummy, D3DLOCK_DISCARD); + if (FAILED(result)) + { + ERR("Discard lock failed with error 0x%08x", result); + return false; + } + + result = mIndexBuffer->Unlock(); + if (FAILED(result)) + { + ERR("Discard unlock failed with error 0x%08x", result); + return false; + } + + return true; + } + else + { + ERR("Index buffer not initialized."); + return false; + } +} + +D3DFORMAT IndexBuffer9::getIndexFormat() const +{ + switch (mIndexType) + { + case GL_UNSIGNED_BYTE: return D3DFMT_INDEX16; + case GL_UNSIGNED_SHORT: return D3DFMT_INDEX16; + case GL_UNSIGNED_INT: return D3DFMT_INDEX32; + default: UNREACHABLE(); return D3DFMT_UNKNOWN; + } +} + +IDirect3DIndexBuffer9 * IndexBuffer9::getBuffer() const +{ + return mIndexBuffer; +} + +} \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer9.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer9.h new file mode 100644 index 00000000000..68018675324 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer9.h @@ -0,0 +1,53 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Indexffer9.h: Defines the D3D9 IndexBuffer implementation. + +#ifndef LIBGLESV2_RENDERER_INDEXBUFFER9_H_ +#define LIBGLESV2_RENDERER_INDEXBUFFER9_H_ + +#include "libGLESv2/renderer/IndexBuffer.h" + +namespace rx +{ +class Renderer9; + +class IndexBuffer9 : public IndexBuffer +{ + public: + explicit IndexBuffer9(Renderer9 *const renderer); + virtual ~IndexBuffer9(); + + virtual bool initialize(unsigned int bufferSize, GLenum indexType, bool dynamic); + + static IndexBuffer9 *makeIndexBuffer9(IndexBuffer *indexBuffer); + + virtual bool mapBuffer(unsigned int offset, unsigned int size, void** outMappedMemory); + virtual bool unmapBuffer(); + + virtual GLenum getIndexType() const; + virtual unsigned int getBufferSize() const; + virtual bool setSize(unsigned int bufferSize, GLenum indexType); + + virtual bool discard(); + + D3DFORMAT getIndexFormat() const; + IDirect3DIndexBuffer9 *getBuffer() const; + + private: + DISALLOW_COPY_AND_ASSIGN(IndexBuffer9); + + rx::Renderer9 *const mRenderer; + + IDirect3DIndexBuffer9 *mIndexBuffer; + unsigned int mBufferSize; + GLenum mIndexType; + bool mDynamic; +}; + +} + +#endif // LIBGLESV2_RENDERER_INDEXBUFFER9_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexDataManager.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexDataManager.cpp new file mode 100644 index 00000000000..84b79b41095 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexDataManager.cpp @@ -0,0 +1,316 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// IndexDataManager.cpp: Defines the IndexDataManager, a class that +// runs the Buffer translation process for index buffers. + +#include "libGLESv2/renderer/IndexDataManager.h" +#include "libGLESv2/renderer/BufferStorage.h" + +#include "libGLESv2/Buffer.h" +#include "libGLESv2/main.h" +#include "libGLESv2/renderer/IndexBuffer.h" + +namespace rx +{ + +IndexDataManager::IndexDataManager(Renderer *renderer) : mRenderer(renderer) +{ + mStreamingBufferShort = new StreamingIndexBufferInterface(mRenderer); + if (!mStreamingBufferShort->reserveBufferSpace(INITIAL_INDEX_BUFFER_SIZE, GL_UNSIGNED_SHORT)) + { + delete mStreamingBufferShort; + mStreamingBufferShort = NULL; + } + + mStreamingBufferInt = new StreamingIndexBufferInterface(mRenderer); + if (!mStreamingBufferInt->reserveBufferSpace(INITIAL_INDEX_BUFFER_SIZE, GL_UNSIGNED_INT)) + { + delete mStreamingBufferInt; + mStreamingBufferInt = NULL; + } + + if (!mStreamingBufferShort) + { + // Make sure both buffers are deleted. + delete mStreamingBufferInt; + mStreamingBufferInt = NULL; + + ERR("Failed to allocate the streaming index buffer(s)."); + } + + mCountingBuffer = NULL; +} + +IndexDataManager::~IndexDataManager() +{ + delete mStreamingBufferShort; + delete mStreamingBufferInt; + delete mCountingBuffer; +} + +static unsigned int indexTypeSize(GLenum type) +{ + switch (type) + { + case GL_UNSIGNED_INT: return sizeof(GLuint); + case GL_UNSIGNED_SHORT: return sizeof(GLushort); + case GL_UNSIGNED_BYTE: return sizeof(GLubyte); + default: UNREACHABLE(); return sizeof(GLushort); + } +} + +static void convertIndices(GLenum type, const void *input, GLsizei count, void *output) +{ + if (type == GL_UNSIGNED_BYTE) + { + const GLubyte *in = static_cast(input); + GLushort *out = static_cast(output); + + for (GLsizei i = 0; i < count; i++) + { + out[i] = in[i]; + } + } + else if (type == GL_UNSIGNED_INT) + { + memcpy(output, input, count * sizeof(GLuint)); + } + else if (type == GL_UNSIGNED_SHORT) + { + memcpy(output, input, count * sizeof(GLushort)); + } + else UNREACHABLE(); +} + +template +static void computeRange(const IndexType *indices, GLsizei count, GLuint *minIndex, GLuint *maxIndex) +{ + *minIndex = indices[0]; + *maxIndex = indices[0]; + + for (GLsizei i = 0; i < count; i++) + { + if (*minIndex > indices[i]) *minIndex = indices[i]; + if (*maxIndex < indices[i]) *maxIndex = indices[i]; + } +} + +static void computeRange(GLenum type, const GLvoid *indices, GLsizei count, GLuint *minIndex, GLuint *maxIndex) +{ + if (type == GL_UNSIGNED_BYTE) + { + computeRange(static_cast(indices), count, minIndex, maxIndex); + } + else if (type == GL_UNSIGNED_INT) + { + computeRange(static_cast(indices), count, minIndex, maxIndex); + } + else if (type == GL_UNSIGNED_SHORT) + { + computeRange(static_cast(indices), count, minIndex, maxIndex); + } + else UNREACHABLE(); +} + +GLenum IndexDataManager::prepareIndexData(GLenum type, GLsizei count, gl::Buffer *buffer, const GLvoid *indices, TranslatedIndexData *translated) +{ + if (!mStreamingBufferShort) + { + return GL_OUT_OF_MEMORY; + } + + GLenum destinationIndexType = (type == GL_UNSIGNED_INT) ? GL_UNSIGNED_INT : GL_UNSIGNED_SHORT; + intptr_t offset = reinterpret_cast(indices); + bool alignedOffset = false; + + BufferStorage *storage = NULL; + + if (buffer != NULL) + { + storage = buffer->getStorage(); + + switch (type) + { + case GL_UNSIGNED_BYTE: alignedOffset = (offset % sizeof(GLubyte) == 0); break; + case GL_UNSIGNED_SHORT: alignedOffset = (offset % sizeof(GLushort) == 0); break; + case GL_UNSIGNED_INT: alignedOffset = (offset % sizeof(GLuint) == 0); break; + default: UNREACHABLE(); alignedOffset = false; + } + + if (indexTypeSize(type) * count + offset > storage->getSize()) + { + return GL_INVALID_OPERATION; + } + + indices = static_cast(storage->getData()) + offset; + } + + StreamingIndexBufferInterface *streamingBuffer = (type == GL_UNSIGNED_INT) ? mStreamingBufferInt : mStreamingBufferShort; + + StaticIndexBufferInterface *staticBuffer = buffer ? buffer->getStaticIndexBuffer() : NULL; + IndexBufferInterface *indexBuffer = streamingBuffer; + bool directStorage = alignedOffset && storage && storage->supportsDirectBinding() && + destinationIndexType == type; + UINT streamOffset = 0; + + if (directStorage) + { + indexBuffer = streamingBuffer; + streamOffset = offset; + storage->markBufferUsage(); + computeRange(type, indices, count, &translated->minIndex, &translated->maxIndex); + } + else if (staticBuffer && staticBuffer->getBufferSize() != 0 && staticBuffer->getIndexType() == type && alignedOffset) + { + indexBuffer = staticBuffer; + streamOffset = staticBuffer->lookupRange(offset, count, &translated->minIndex, &translated->maxIndex); + + if (streamOffset == -1) + { + streamOffset = (offset / indexTypeSize(type)) * indexTypeSize(destinationIndexType); + computeRange(type, indices, count, &translated->minIndex, &translated->maxIndex); + staticBuffer->addRange(offset, count, translated->minIndex, translated->maxIndex, streamOffset); + } + } + else + { + int convertCount = count; + + if (staticBuffer) + { + if (staticBuffer->getBufferSize() == 0 && alignedOffset) + { + indexBuffer = staticBuffer; + convertCount = storage->getSize() / indexTypeSize(type); + } + else + { + buffer->invalidateStaticData(); + staticBuffer = NULL; + } + } + + if (!indexBuffer) + { + ERR("No valid index buffer."); + return GL_INVALID_OPERATION; + } + + unsigned int bufferSizeRequired = convertCount * indexTypeSize(destinationIndexType); + indexBuffer->reserveBufferSpace(bufferSizeRequired, type); + + void* output = NULL; + streamOffset = indexBuffer->mapBuffer(bufferSizeRequired, &output); + if (streamOffset == -1 || output == NULL) + { + ERR("Failed to map index buffer."); + return GL_OUT_OF_MEMORY; + } + + convertIndices(type, staticBuffer ? storage->getData() : indices, convertCount, output); + + if (!indexBuffer->unmapBuffer()) + { + ERR("Failed to unmap index buffer."); + return GL_OUT_OF_MEMORY; + } + + computeRange(type, indices, count, &translated->minIndex, &translated->maxIndex); + + if (staticBuffer) + { + streamOffset = (offset / indexTypeSize(type)) * indexTypeSize(destinationIndexType); + staticBuffer->addRange(offset, count, translated->minIndex, translated->maxIndex, streamOffset); + } + } + + translated->storage = directStorage ? storage : NULL; + translated->indexBuffer = indexBuffer->getIndexBuffer(); + translated->serial = directStorage ? storage->getSerial() : indexBuffer->getSerial(); + translated->startIndex = streamOffset / indexTypeSize(destinationIndexType); + translated->startOffset = streamOffset; + + if (buffer) + { + buffer->promoteStaticUsage(count * indexTypeSize(type)); + } + + return GL_NO_ERROR; +} + +StaticIndexBufferInterface *IndexDataManager::getCountingIndices(GLsizei count) +{ + if (count <= 65536) // 16-bit indices + { + const unsigned int spaceNeeded = count * sizeof(unsigned short); + + if (!mCountingBuffer || mCountingBuffer->getBufferSize() < spaceNeeded) + { + delete mCountingBuffer; + mCountingBuffer = new StaticIndexBufferInterface(mRenderer); + mCountingBuffer->reserveBufferSpace(spaceNeeded, GL_UNSIGNED_SHORT); + + void* mappedMemory = NULL; + if (mCountingBuffer->mapBuffer(spaceNeeded, &mappedMemory) == -1 || mappedMemory == NULL) + { + ERR("Failed to map counting buffer."); + return NULL; + } + + unsigned short *data = reinterpret_cast(mappedMemory); + for(int i = 0; i < count; i++) + { + data[i] = i; + } + + if (!mCountingBuffer->unmapBuffer()) + { + ERR("Failed to unmap counting buffer."); + return NULL; + } + } + } + else if (mStreamingBufferInt) // 32-bit indices supported + { + const unsigned int spaceNeeded = count * sizeof(unsigned int); + + if (!mCountingBuffer || mCountingBuffer->getBufferSize() < spaceNeeded) + { + delete mCountingBuffer; + mCountingBuffer = new StaticIndexBufferInterface(mRenderer); + mCountingBuffer->reserveBufferSpace(spaceNeeded, GL_UNSIGNED_INT); + + void* mappedMemory = NULL; + if (mCountingBuffer->mapBuffer(spaceNeeded, &mappedMemory) == -1 || mappedMemory == NULL) + { + ERR("Failed to map counting buffer."); + return NULL; + } + + unsigned int *data = reinterpret_cast(mappedMemory); + for(int i = 0; i < count; i++) + { + data[i] = i; + } + + if (!mCountingBuffer->unmapBuffer()) + { + ERR("Failed to unmap counting buffer."); + return NULL; + } + } + } + else + { + return NULL; + } + + return mCountingBuffer; +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexDataManager.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexDataManager.h new file mode 100644 index 00000000000..0e77c81d1bb --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexDataManager.h @@ -0,0 +1,66 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// IndexDataManager.h: Defines the IndexDataManager, a class that +// runs the Buffer translation process for index buffers. + +#ifndef LIBGLESV2_INDEXDATAMANAGER_H_ +#define LIBGLESV2_INDEXDATAMANAGER_H_ + +#include "common/angleutils.h" + +namespace +{ + enum { INITIAL_INDEX_BUFFER_SIZE = 4096 * sizeof(GLuint) }; +} + +namespace gl +{ +class Buffer; +} + +namespace rx +{ +class StaticIndexBufferInterface; +class StreamingIndexBufferInterface; +class IndexBuffer; +class BufferStorage; +class Renderer; + +struct TranslatedIndexData +{ + unsigned int minIndex; + unsigned int maxIndex; + unsigned int startIndex; + unsigned int startOffset; // In bytes + + IndexBuffer *indexBuffer; + BufferStorage *storage; + unsigned int serial; +}; + +class IndexDataManager +{ + public: + explicit IndexDataManager(Renderer *renderer); + virtual ~IndexDataManager(); + + GLenum prepareIndexData(GLenum type, GLsizei count, gl::Buffer *arrayElementBuffer, const GLvoid *indices, TranslatedIndexData *translated); + StaticIndexBufferInterface *getCountingIndices(GLsizei count); + + private: + DISALLOW_COPY_AND_ASSIGN(IndexDataManager); + + Renderer *const mRenderer; + + StreamingIndexBufferInterface *mStreamingBufferShort; + StreamingIndexBufferInterface *mStreamingBufferInt; + StaticIndexBufferInterface *mCountingBuffer; +}; + +} + +#endif // LIBGLESV2_INDEXDATAMANAGER_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/InputLayoutCache.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/InputLayoutCache.cpp new file mode 100644 index 00000000000..0402bb35ac9 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/InputLayoutCache.cpp @@ -0,0 +1,166 @@ +#include "precompiled.h" +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// InputLayoutCache.cpp: Defines InputLayoutCache, a class that builds and caches +// D3D11 input layouts. + +#include "libGLESv2/renderer/InputLayoutCache.h" +#include "libGLESv2/renderer/VertexBuffer11.h" +#include "libGLESv2/renderer/BufferStorage11.h" +#include "libGLESv2/renderer/ShaderExecutable11.h" +#include "libGLESv2/ProgramBinary.h" +#include "libGLESv2/Context.h" +#include "libGLESv2/renderer/VertexDataManager.h" + +#include "third_party/murmurhash/MurmurHash3.h" + +namespace rx +{ + +const unsigned int InputLayoutCache::kMaxInputLayouts = 1024; + +InputLayoutCache::InputLayoutCache() : mInputLayoutMap(kMaxInputLayouts, hashInputLayout, compareInputLayouts) +{ + mCounter = 0; + mDevice = NULL; + mDeviceContext = NULL; +} + +InputLayoutCache::~InputLayoutCache() +{ + clear(); +} + +void InputLayoutCache::initialize(ID3D11Device *device, ID3D11DeviceContext *context) +{ + clear(); + mDevice = device; + mDeviceContext = context; +} + +void InputLayoutCache::clear() +{ + for (InputLayoutMap::iterator i = mInputLayoutMap.begin(); i != mInputLayoutMap.end(); i++) + { + i->second.inputLayout->Release(); + } + mInputLayoutMap.clear(); +} + +GLenum InputLayoutCache::applyVertexBuffers(TranslatedAttribute attributes[gl::MAX_VERTEX_ATTRIBS], + gl::ProgramBinary *programBinary) +{ + int sortedSemanticIndices[gl::MAX_VERTEX_ATTRIBS]; + programBinary->sortAttributesByLayout(attributes, sortedSemanticIndices); + + if (!mDevice || !mDeviceContext) + { + ERR("InputLayoutCache is not initialized."); + return GL_INVALID_OPERATION; + } + + InputLayoutKey ilKey = { 0 }; + + ID3D11Buffer *vertexBuffers[gl::MAX_VERTEX_ATTRIBS] = { NULL }; + UINT vertexStrides[gl::MAX_VERTEX_ATTRIBS] = { 0 }; + UINT vertexOffsets[gl::MAX_VERTEX_ATTRIBS] = { 0 }; + + static const char* semanticName = "TEXCOORD"; + + for (unsigned int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++) + { + if (attributes[i].active) + { + VertexBuffer11 *vertexBuffer = VertexBuffer11::makeVertexBuffer11(attributes[i].vertexBuffer); + BufferStorage11 *bufferStorage = attributes[i].storage ? BufferStorage11::makeBufferStorage11(attributes[i].storage) : NULL; + + D3D11_INPUT_CLASSIFICATION inputClass = attributes[i].divisor > 0 ? D3D11_INPUT_PER_INSTANCE_DATA : D3D11_INPUT_PER_VERTEX_DATA; + + // Record the type of the associated vertex shader vector in our key + // This will prevent mismatched vertex shaders from using the same input layout + GLint attributeSize; + programBinary->getActiveAttribute(ilKey.elementCount, 0, NULL, &attributeSize, &ilKey.glslElementType[ilKey.elementCount], NULL); + + ilKey.elements[ilKey.elementCount].SemanticName = semanticName; + ilKey.elements[ilKey.elementCount].SemanticIndex = sortedSemanticIndices[i]; + ilKey.elements[ilKey.elementCount].Format = attributes[i].attribute->mArrayEnabled ? vertexBuffer->getDXGIFormat(*attributes[i].attribute) : DXGI_FORMAT_R32G32B32A32_FLOAT; + ilKey.elements[ilKey.elementCount].InputSlot = i; + ilKey.elements[ilKey.elementCount].AlignedByteOffset = 0; + ilKey.elements[ilKey.elementCount].InputSlotClass = inputClass; + ilKey.elements[ilKey.elementCount].InstanceDataStepRate = attributes[i].divisor; + ilKey.elementCount++; + + vertexBuffers[i] = bufferStorage ? bufferStorage->getBuffer() : vertexBuffer->getBuffer(); + vertexStrides[i] = attributes[i].stride; + vertexOffsets[i] = attributes[i].offset; + } + } + + ID3D11InputLayout *inputLayout = NULL; + + InputLayoutMap::iterator i = mInputLayoutMap.find(ilKey); + if (i != mInputLayoutMap.end()) + { + inputLayout = i->second.inputLayout; + i->second.lastUsedTime = mCounter++; + } + else + { + ShaderExecutable11 *shader = ShaderExecutable11::makeShaderExecutable11(programBinary->getVertexExecutable()); + + HRESULT result = mDevice->CreateInputLayout(ilKey.elements, ilKey.elementCount, shader->getFunction(), shader->getLength(), &inputLayout); + if (FAILED(result)) + { + ERR("Failed to crate input layout, result: 0x%08x", result); + return GL_INVALID_OPERATION; + } + + if (mInputLayoutMap.size() >= kMaxInputLayouts) + { + TRACE("Overflowed the limit of %u input layouts, removing the least recently used " + "to make room.", kMaxInputLayouts); + + InputLayoutMap::iterator leastRecentlyUsed = mInputLayoutMap.begin(); + for (InputLayoutMap::iterator i = mInputLayoutMap.begin(); i != mInputLayoutMap.end(); i++) + { + if (i->second.lastUsedTime < leastRecentlyUsed->second.lastUsedTime) + { + leastRecentlyUsed = i; + } + } + leastRecentlyUsed->second.inputLayout->Release(); + mInputLayoutMap.erase(leastRecentlyUsed); + } + + InputLayoutCounterPair inputCounterPair; + inputCounterPair.inputLayout = inputLayout; + inputCounterPair.lastUsedTime = mCounter++; + + mInputLayoutMap.insert(std::make_pair(ilKey, inputCounterPair)); + } + + mDeviceContext->IASetInputLayout(inputLayout); + mDeviceContext->IASetVertexBuffers(0, gl::MAX_VERTEX_ATTRIBS, vertexBuffers, vertexStrides, vertexOffsets); + + return GL_NO_ERROR; +} + +std::size_t InputLayoutCache::hashInputLayout(const InputLayoutKey &inputLayout) +{ + static const unsigned int seed = 0xDEADBEEF; + + std::size_t hash = 0; + MurmurHash3_x86_32(&inputLayout, sizeof(InputLayoutKey), seed, &hash); + return hash; +} + +bool InputLayoutCache::compareInputLayouts(const InputLayoutKey &a, const InputLayoutKey &b) +{ + return memcmp(&a, &b, sizeof(InputLayoutKey)) == 0; +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/InputLayoutCache.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/InputLayoutCache.h new file mode 100644 index 00000000000..d95f39fae43 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/InputLayoutCache.h @@ -0,0 +1,74 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// InputLayoutCache.h: Defines InputLayoutCache, a class that builds and caches +// D3D11 input layouts. + +#ifndef LIBGLESV2_RENDERER_INPUTLAYOUTCACHE_H_ +#define LIBGLESV2_RENDERER_INPUTLAYOUTCACHE_H_ + +#include "libGLESv2/Constants.h" +#include "common/angleutils.h" + +namespace gl +{ +class ProgramBinary; +} + +namespace rx +{ +struct TranslatedAttribute; + +class InputLayoutCache +{ + public: + InputLayoutCache(); + virtual ~InputLayoutCache(); + + void initialize(ID3D11Device *device, ID3D11DeviceContext *context); + void clear(); + + GLenum applyVertexBuffers(TranslatedAttribute attributes[gl::MAX_VERTEX_ATTRIBS], + gl::ProgramBinary *programBinary); + + private: + DISALLOW_COPY_AND_ASSIGN(InputLayoutCache); + + struct InputLayoutKey + { + unsigned int elementCount; + D3D11_INPUT_ELEMENT_DESC elements[gl::MAX_VERTEX_ATTRIBS]; + GLenum glslElementType[gl::MAX_VERTEX_ATTRIBS]; + }; + + struct InputLayoutCounterPair + { + ID3D11InputLayout *inputLayout; + unsigned long long lastUsedTime; + }; + + static std::size_t hashInputLayout(const InputLayoutKey &inputLayout); + static bool compareInputLayouts(const InputLayoutKey &a, const InputLayoutKey &b); + + typedef std::size_t (*InputLayoutHashFunction)(const InputLayoutKey &); + typedef bool (*InputLayoutEqualityFunction)(const InputLayoutKey &, const InputLayoutKey &); + typedef std::unordered_map InputLayoutMap; + InputLayoutMap mInputLayoutMap; + + static const unsigned int kMaxInputLayouts; + + unsigned long long mCounter; + + ID3D11Device *mDevice; + ID3D11DeviceContext *mDeviceContext; +}; + +} + +#endif // LIBGLESV2_RENDERER_INPUTLAYOUTCACHE_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Query11.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Query11.cpp new file mode 100644 index 00000000000..13210fc9291 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Query11.cpp @@ -0,0 +1,122 @@ +#include "precompiled.h" +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Query11.cpp: Defines the rx::Query11 class which implements rx::QueryImpl. + +#include "libGLESv2/renderer/Query11.h" +#include "libGLESv2/renderer/Renderer11.h" +#include "libGLESv2/main.h" + +namespace rx +{ + +Query11::Query11(rx::Renderer11 *renderer, GLenum type) : QueryImpl(type) +{ + mRenderer = renderer; + mQuery = NULL; +} + +Query11::~Query11() +{ + if (mQuery) + { + mQuery->Release(); + mQuery = NULL; + } +} + +void Query11::begin() +{ + if (mQuery == NULL) + { + D3D11_QUERY_DESC queryDesc; + queryDesc.Query = D3D11_QUERY_OCCLUSION; + queryDesc.MiscFlags = 0; + + if (FAILED(mRenderer->getDevice()->CreateQuery(&queryDesc, &mQuery))) + { + return gl::error(GL_OUT_OF_MEMORY); + } + } + + mRenderer->getDeviceContext()->Begin(mQuery); +} + +void Query11::end() +{ + if (mQuery == NULL) + { + return gl::error(GL_INVALID_OPERATION); + } + + mRenderer->getDeviceContext()->End(mQuery); + + mStatus = GL_FALSE; + mResult = GL_FALSE; +} + +GLuint Query11::getResult() +{ + if (mQuery != NULL) + { + while (!testQuery()) + { + Sleep(0); + // explicitly check for device loss, some drivers seem to return S_FALSE + // if the device is lost + if (mRenderer->testDeviceLost(true)) + { + return gl::error(GL_OUT_OF_MEMORY, 0); + } + } + } + + return mResult; +} + +GLboolean Query11::isResultAvailable() +{ + if (mQuery != NULL) + { + testQuery(); + } + + return mStatus; +} + +GLboolean Query11::testQuery() +{ + if (mQuery != NULL && mStatus != GL_TRUE) + { + UINT64 numPixels = 0; + HRESULT result = mRenderer->getDeviceContext()->GetData(mQuery, &numPixels, sizeof(UINT64), 0); + if (result == S_OK) + { + mStatus = GL_TRUE; + + switch (getType()) + { + case GL_ANY_SAMPLES_PASSED_EXT: + case GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT: + mResult = (numPixels > 0) ? GL_TRUE : GL_FALSE; + break; + default: + UNREACHABLE(); + } + } + else if (mRenderer->testDeviceLost(true)) + { + return gl::error(GL_OUT_OF_MEMORY, GL_TRUE); + } + + return mStatus; + } + + return GL_TRUE; // prevent blocking when query is null +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Query11.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Query11.h new file mode 100644 index 00000000000..0a03de77ca3 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Query11.h @@ -0,0 +1,40 @@ +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Query11.h: Defines the rx::Query11 class which implements rx::QueryImpl. + +#ifndef LIBGLESV2_RENDERER_QUERY11_H_ +#define LIBGLESV2_RENDERER_QUERY11_H_ + +#include "libGLESv2/renderer/QueryImpl.h" + +namespace rx +{ +class Renderer11; + +class Query11 : public QueryImpl +{ + public: + Query11(rx::Renderer11 *renderer, GLenum type); + virtual ~Query11(); + + void begin(); + void end(); + GLuint getResult(); + GLboolean isResultAvailable(); + + private: + DISALLOW_COPY_AND_ASSIGN(Query11); + + GLboolean testQuery(); + + rx::Renderer11 *mRenderer; + ID3D11Query *mQuery; +}; + +} + +#endif // LIBGLESV2_RENDERER_QUERY11_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Query9.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Query9.cpp new file mode 100644 index 00000000000..ef694267dd1 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Query9.cpp @@ -0,0 +1,125 @@ +#include "precompiled.h" +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Query9.cpp: Defines the rx::Query9 class which implements rx::QueryImpl. + + +#include "libGLESv2/renderer/Query9.h" +#include "libGLESv2/main.h" +#include "libGLESv2/renderer/renderer9_utils.h" +#include "libGLESv2/renderer/Renderer9.h" + +namespace rx +{ + +Query9::Query9(rx::Renderer9 *renderer, GLenum type) : QueryImpl(type) +{ + mRenderer = renderer; + mQuery = NULL; +} + +Query9::~Query9() +{ + if (mQuery) + { + mQuery->Release(); + mQuery = NULL; + } +} + +void Query9::begin() +{ + if (mQuery == NULL) + { + if (FAILED(mRenderer->getDevice()->CreateQuery(D3DQUERYTYPE_OCCLUSION, &mQuery))) + { + return gl::error(GL_OUT_OF_MEMORY); + } + } + + HRESULT result = mQuery->Issue(D3DISSUE_BEGIN); + ASSERT(SUCCEEDED(result)); +} + +void Query9::end() +{ + if (mQuery == NULL) + { + return gl::error(GL_INVALID_OPERATION); + } + + HRESULT result = mQuery->Issue(D3DISSUE_END); + ASSERT(SUCCEEDED(result)); + + mStatus = GL_FALSE; + mResult = GL_FALSE; +} + +GLuint Query9::getResult() +{ + if (mQuery != NULL) + { + while (!testQuery()) + { + Sleep(0); + // explicitly check for device loss + // some drivers seem to return S_FALSE even if the device is lost + // instead of D3DERR_DEVICELOST like they should + if (mRenderer->testDeviceLost(true)) + { + return gl::error(GL_OUT_OF_MEMORY, 0); + } + } + } + + return mResult; +} + +GLboolean Query9::isResultAvailable() +{ + if (mQuery != NULL) + { + testQuery(); + } + + return mStatus; +} + +GLboolean Query9::testQuery() +{ + if (mQuery != NULL && mStatus != GL_TRUE) + { + DWORD numPixels = 0; + + HRESULT hres = mQuery->GetData(&numPixels, sizeof(DWORD), D3DGETDATA_FLUSH); + if (hres == S_OK) + { + mStatus = GL_TRUE; + + switch (getType()) + { + case GL_ANY_SAMPLES_PASSED_EXT: + case GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT: + mResult = (numPixels > 0) ? GL_TRUE : GL_FALSE; + break; + default: + ASSERT(false); + } + } + else if (d3d9::isDeviceLostError(hres)) + { + mRenderer->notifyDeviceLost(); + return gl::error(GL_OUT_OF_MEMORY, GL_TRUE); + } + + return mStatus; + } + + return GL_TRUE; // prevent blocking when query is null +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Query9.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Query9.h new file mode 100644 index 00000000000..47eef89336e --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Query9.h @@ -0,0 +1,40 @@ +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Query9.h: Defines the rx::Query9 class which implements rx::QueryImpl. + +#ifndef LIBGLESV2_RENDERER_QUERY9_H_ +#define LIBGLESV2_RENDERER_QUERY9_H_ + +#include "libGLESv2/renderer/QueryImpl.h" + +namespace rx +{ +class Renderer9; + +class Query9 : public QueryImpl +{ + public: + Query9(rx::Renderer9 *renderer, GLenum type); + virtual ~Query9(); + + void begin(); + void end(); + GLuint getResult(); + GLboolean isResultAvailable(); + + private: + DISALLOW_COPY_AND_ASSIGN(Query9); + + GLboolean testQuery(); + + rx::Renderer9 *mRenderer; + IDirect3DQuery9 *mQuery; +}; + +} + +#endif // LIBGLESV2_RENDERER_QUERY9_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/QueryImpl.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/QueryImpl.h new file mode 100644 index 00000000000..a874047b0c2 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/QueryImpl.h @@ -0,0 +1,42 @@ +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// QueryImpl.h: Defines the abstract rx::QueryImpl class. + +#ifndef LIBGLESV2_RENDERER_QUERYIMPL_H_ +#define LIBGLESV2_RENDERER_QUERYIMPL_H_ + +#include "common/angleutils.h" + +namespace rx +{ + +class QueryImpl +{ + public: + explicit QueryImpl(GLenum type) : mType(type), mStatus(GL_FALSE), mResult(0) { } + virtual ~QueryImpl() { } + + virtual void begin() = 0; + virtual void end() = 0; + virtual GLuint getResult() = 0; + virtual GLboolean isResultAvailable() = 0; + + GLenum getType() const { return mType; } + + protected: + GLuint mResult; + GLboolean mStatus; + + private: + DISALLOW_COPY_AND_ASSIGN(QueryImpl); + + GLenum mType; +}; + +} + +#endif // LIBGLESV2_RENDERER_QUERYIMPL_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderStateCache.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderStateCache.cpp new file mode 100644 index 00000000000..b3111af72be --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderStateCache.cpp @@ -0,0 +1,406 @@ +#include "precompiled.h" +// +// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// RenderStateCache.cpp: Defines rx::RenderStateCache, a cache of Direct3D render +// state objects. + +#include "libGLESv2/renderer/RenderStateCache.h" +#include "libGLESv2/renderer/renderer11_utils.h" + +#include "common/debug.h" +#include "third_party/murmurhash/MurmurHash3.h" + +namespace rx +{ + +// MSDN's documentation of ID3D11Device::CreateBlendState, ID3D11Device::CreateRasterizerState, +// ID3D11Device::CreateDepthStencilState and ID3D11Device::CreateSamplerState claims the maximum +// number of unique states of each type an application can create is 4096 +const unsigned int RenderStateCache::kMaxBlendStates = 4096; +const unsigned int RenderStateCache::kMaxRasterizerStates = 4096; +const unsigned int RenderStateCache::kMaxDepthStencilStates = 4096; +const unsigned int RenderStateCache::kMaxSamplerStates = 4096; + +RenderStateCache::RenderStateCache() : mDevice(NULL), mCounter(0), + mBlendStateCache(kMaxBlendStates, hashBlendState, compareBlendStates), + mRasterizerStateCache(kMaxRasterizerStates, hashRasterizerState, compareRasterizerStates), + mDepthStencilStateCache(kMaxDepthStencilStates, hashDepthStencilState, compareDepthStencilStates), + mSamplerStateCache(kMaxSamplerStates, hashSamplerState, compareSamplerStates) +{ +} + +RenderStateCache::~RenderStateCache() +{ + clear(); +} + +void RenderStateCache::initialize(ID3D11Device *device) +{ + clear(); + mDevice = device; +} + +void RenderStateCache::clear() +{ + for (BlendStateMap::iterator i = mBlendStateCache.begin(); i != mBlendStateCache.end(); i++) + { + i->second.first->Release(); + } + mBlendStateCache.clear(); + + for (RasterizerStateMap::iterator i = mRasterizerStateCache.begin(); i != mRasterizerStateCache.end(); i++) + { + i->second.first->Release(); + } + mRasterizerStateCache.clear(); + + for (DepthStencilStateMap::iterator i = mDepthStencilStateCache.begin(); i != mDepthStencilStateCache.end(); i++) + { + i->second.first->Release(); + } + mDepthStencilStateCache.clear(); + + for (SamplerStateMap::iterator i = mSamplerStateCache.begin(); i != mSamplerStateCache.end(); i++) + { + i->second.first->Release(); + } + mSamplerStateCache.clear(); +} + +std::size_t RenderStateCache::hashBlendState(const gl::BlendState &blendState) +{ + static const unsigned int seed = 0xABCDEF98; + + std::size_t hash = 0; + MurmurHash3_x86_32(&blendState, sizeof(gl::BlendState), seed, &hash); + return hash; +} + +bool RenderStateCache::compareBlendStates(const gl::BlendState &a, const gl::BlendState &b) +{ + return memcmp(&a, &b, sizeof(gl::BlendState)) == 0; +} + +ID3D11BlendState *RenderStateCache::getBlendState(const gl::BlendState &blendState) +{ + if (!mDevice) + { + ERR("RenderStateCache is not initialized."); + return NULL; + } + + BlendStateMap::iterator i = mBlendStateCache.find(blendState); + if (i != mBlendStateCache.end()) + { + BlendStateCounterPair &state = i->second; + state.second = mCounter++; + return state.first; + } + else + { + if (mBlendStateCache.size() >= kMaxBlendStates) + { + TRACE("Overflowed the limit of %u blend states, removing the least recently used " + "to make room.", kMaxBlendStates); + + BlendStateMap::iterator leastRecentlyUsed = mBlendStateCache.begin(); + for (BlendStateMap::iterator i = mBlendStateCache.begin(); i != mBlendStateCache.end(); i++) + { + if (i->second.second < leastRecentlyUsed->second.second) + { + leastRecentlyUsed = i; + } + } + leastRecentlyUsed->second.first->Release(); + mBlendStateCache.erase(leastRecentlyUsed); + } + + // Create a new blend state and insert it into the cache + D3D11_BLEND_DESC blendDesc = { 0 }; + blendDesc.AlphaToCoverageEnable = blendState.sampleAlphaToCoverage; + blendDesc.IndependentBlendEnable = FALSE; + + for (unsigned int i = 0; i < D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT; i++) + { + D3D11_RENDER_TARGET_BLEND_DESC &rtBlend = blendDesc.RenderTarget[i]; + + rtBlend.BlendEnable = blendState.blend; + if (blendState.blend) + { + rtBlend.SrcBlend = gl_d3d11::ConvertBlendFunc(blendState.sourceBlendRGB, false); + rtBlend.DestBlend = gl_d3d11::ConvertBlendFunc(blendState.destBlendRGB, false); + rtBlend.BlendOp = gl_d3d11::ConvertBlendOp(blendState.blendEquationRGB); + + rtBlend.SrcBlendAlpha = gl_d3d11::ConvertBlendFunc(blendState.sourceBlendAlpha, true); + rtBlend.DestBlendAlpha = gl_d3d11::ConvertBlendFunc(blendState.destBlendAlpha, true); + rtBlend.BlendOpAlpha = gl_d3d11::ConvertBlendOp(blendState.blendEquationAlpha); + } + + rtBlend.RenderTargetWriteMask = gl_d3d11::ConvertColorMask(blendState.colorMaskRed, + blendState.colorMaskGreen, + blendState.colorMaskBlue, + blendState.colorMaskAlpha); + } + + ID3D11BlendState *dx11BlendState = NULL; + HRESULT result = mDevice->CreateBlendState(&blendDesc, &dx11BlendState); + if (FAILED(result) || !dx11BlendState) + { + ERR("Unable to create a ID3D11BlendState, HRESULT: 0x%X.", result); + return NULL; + } + + mBlendStateCache.insert(std::make_pair(blendState, std::make_pair(dx11BlendState, mCounter++))); + + return dx11BlendState; + } +} + +std::size_t RenderStateCache::hashRasterizerState(const RasterizerStateKey &rasterState) +{ + static const unsigned int seed = 0xABCDEF98; + + std::size_t hash = 0; + MurmurHash3_x86_32(&rasterState, sizeof(RasterizerStateKey), seed, &hash); + return hash; +} + +bool RenderStateCache::compareRasterizerStates(const RasterizerStateKey &a, const RasterizerStateKey &b) +{ + return memcmp(&a, &b, sizeof(RasterizerStateKey)) == 0; +} + +ID3D11RasterizerState *RenderStateCache::getRasterizerState(const gl::RasterizerState &rasterState, + bool scissorEnabled, unsigned int depthSize) +{ + if (!mDevice) + { + ERR("RenderStateCache is not initialized."); + return NULL; + } + + RasterizerStateKey key; + key.rasterizerState = rasterState; + key.scissorEnabled = scissorEnabled; + key.depthSize = depthSize; + + RasterizerStateMap::iterator i = mRasterizerStateCache.find(key); + if (i != mRasterizerStateCache.end()) + { + RasterizerStateCounterPair &state = i->second; + state.second = mCounter++; + return state.first; + } + else + { + if (mRasterizerStateCache.size() >= kMaxRasterizerStates) + { + TRACE("Overflowed the limit of %u rasterizer states, removing the least recently used " + "to make room.", kMaxRasterizerStates); + + RasterizerStateMap::iterator leastRecentlyUsed = mRasterizerStateCache.begin(); + for (RasterizerStateMap::iterator i = mRasterizerStateCache.begin(); i != mRasterizerStateCache.end(); i++) + { + if (i->second.second < leastRecentlyUsed->second.second) + { + leastRecentlyUsed = i; + } + } + leastRecentlyUsed->second.first->Release(); + mRasterizerStateCache.erase(leastRecentlyUsed); + } + + D3D11_CULL_MODE cullMode = gl_d3d11::ConvertCullMode(rasterState.cullFace, rasterState.cullMode); + + // Disable culling if drawing points + if (rasterState.pointDrawMode) + { + cullMode = D3D11_CULL_NONE; + } + + D3D11_RASTERIZER_DESC rasterDesc; + rasterDesc.FillMode = D3D11_FILL_SOLID; + rasterDesc.CullMode = cullMode; + rasterDesc.FrontCounterClockwise = (rasterState.frontFace == GL_CCW) ? FALSE: TRUE; + rasterDesc.DepthBias = ldexp(rasterState.polygonOffsetUnits, -static_cast(depthSize)); + rasterDesc.DepthBiasClamp = 0.0f; // MSDN documentation of DepthBiasClamp implies a value of zero will preform no clamping, must be tested though. + rasterDesc.SlopeScaledDepthBias = rasterState.polygonOffsetFactor; + rasterDesc.DepthClipEnable = TRUE; + rasterDesc.ScissorEnable = scissorEnabled ? TRUE : FALSE; + rasterDesc.MultisampleEnable = rasterState.multiSample; + rasterDesc.AntialiasedLineEnable = FALSE; + + ID3D11RasterizerState *dx11RasterizerState = NULL; + HRESULT result = mDevice->CreateRasterizerState(&rasterDesc, &dx11RasterizerState); + if (FAILED(result) || !dx11RasterizerState) + { + ERR("Unable to create a ID3D11RasterizerState, HRESULT: 0x%X.", result); + return NULL; + } + + mRasterizerStateCache.insert(std::make_pair(key, std::make_pair(dx11RasterizerState, mCounter++))); + + return dx11RasterizerState; + } +} + +std::size_t RenderStateCache::hashDepthStencilState(const gl::DepthStencilState &dsState) +{ + static const unsigned int seed = 0xABCDEF98; + + std::size_t hash = 0; + MurmurHash3_x86_32(&dsState, sizeof(gl::DepthStencilState), seed, &hash); + return hash; +} + +bool RenderStateCache::compareDepthStencilStates(const gl::DepthStencilState &a, const gl::DepthStencilState &b) +{ + return memcmp(&a, &b, sizeof(gl::DepthStencilState)) == 0; +} + +ID3D11DepthStencilState *RenderStateCache::getDepthStencilState(const gl::DepthStencilState &dsState) +{ + if (!mDevice) + { + ERR("RenderStateCache is not initialized."); + return NULL; + } + + DepthStencilStateMap::iterator i = mDepthStencilStateCache.find(dsState); + if (i != mDepthStencilStateCache.end()) + { + DepthStencilStateCounterPair &state = i->second; + state.second = mCounter++; + return state.first; + } + else + { + if (mDepthStencilStateCache.size() >= kMaxDepthStencilStates) + { + TRACE("Overflowed the limit of %u depth stencil states, removing the least recently used " + "to make room.", kMaxDepthStencilStates); + + DepthStencilStateMap::iterator leastRecentlyUsed = mDepthStencilStateCache.begin(); + for (DepthStencilStateMap::iterator i = mDepthStencilStateCache.begin(); i != mDepthStencilStateCache.end(); i++) + { + if (i->second.second < leastRecentlyUsed->second.second) + { + leastRecentlyUsed = i; + } + } + leastRecentlyUsed->second.first->Release(); + mDepthStencilStateCache.erase(leastRecentlyUsed); + } + + D3D11_DEPTH_STENCIL_DESC dsDesc = { 0 }; + dsDesc.DepthEnable = dsState.depthTest ? TRUE : FALSE; + dsDesc.DepthWriteMask = gl_d3d11::ConvertDepthMask(dsState.depthMask); + dsDesc.DepthFunc = gl_d3d11::ConvertComparison(dsState.depthFunc); + dsDesc.StencilEnable = dsState.stencilTest ? TRUE : FALSE; + dsDesc.StencilReadMask = gl_d3d11::ConvertStencilMask(dsState.stencilMask); + dsDesc.StencilWriteMask = gl_d3d11::ConvertStencilMask(dsState.stencilWritemask); + dsDesc.FrontFace.StencilFailOp = gl_d3d11::ConvertStencilOp(dsState.stencilFail); + dsDesc.FrontFace.StencilDepthFailOp = gl_d3d11::ConvertStencilOp(dsState.stencilPassDepthFail); + dsDesc.FrontFace.StencilPassOp = gl_d3d11::ConvertStencilOp(dsState.stencilPassDepthPass); + dsDesc.FrontFace.StencilFunc = gl_d3d11::ConvertComparison(dsState.stencilFunc); + dsDesc.BackFace.StencilFailOp = gl_d3d11::ConvertStencilOp(dsState.stencilBackFail); + dsDesc.BackFace.StencilDepthFailOp = gl_d3d11::ConvertStencilOp(dsState.stencilBackPassDepthFail); + dsDesc.BackFace.StencilPassOp = gl_d3d11::ConvertStencilOp(dsState.stencilBackPassDepthPass); + dsDesc.BackFace.StencilFunc = gl_d3d11::ConvertComparison(dsState.stencilBackFunc); + + ID3D11DepthStencilState *dx11DepthStencilState = NULL; + HRESULT result = mDevice->CreateDepthStencilState(&dsDesc, &dx11DepthStencilState); + if (FAILED(result) || !dx11DepthStencilState) + { + ERR("Unable to create a ID3D11DepthStencilState, HRESULT: 0x%X.", result); + return NULL; + } + + mDepthStencilStateCache.insert(std::make_pair(dsState, std::make_pair(dx11DepthStencilState, mCounter++))); + + return dx11DepthStencilState; + } +} + +std::size_t RenderStateCache::hashSamplerState(const gl::SamplerState &samplerState) +{ + static const unsigned int seed = 0xABCDEF98; + + std::size_t hash = 0; + MurmurHash3_x86_32(&samplerState, sizeof(gl::SamplerState), seed, &hash); + return hash; +} + +bool RenderStateCache::compareSamplerStates(const gl::SamplerState &a, const gl::SamplerState &b) +{ + return memcmp(&a, &b, sizeof(gl::SamplerState)) == 0; +} + +ID3D11SamplerState *RenderStateCache::getSamplerState(const gl::SamplerState &samplerState) +{ + if (!mDevice) + { + ERR("RenderStateCache is not initialized."); + return NULL; + } + + SamplerStateMap::iterator i = mSamplerStateCache.find(samplerState); + if (i != mSamplerStateCache.end()) + { + SamplerStateCounterPair &state = i->second; + state.second = mCounter++; + return state.first; + } + else + { + if (mSamplerStateCache.size() >= kMaxSamplerStates) + { + TRACE("Overflowed the limit of %u sampler states, removing the least recently used " + "to make room.", kMaxSamplerStates); + + SamplerStateMap::iterator leastRecentlyUsed = mSamplerStateCache.begin(); + for (SamplerStateMap::iterator i = mSamplerStateCache.begin(); i != mSamplerStateCache.end(); i++) + { + if (i->second.second < leastRecentlyUsed->second.second) + { + leastRecentlyUsed = i; + } + } + leastRecentlyUsed->second.first->Release(); + mSamplerStateCache.erase(leastRecentlyUsed); + } + + D3D11_SAMPLER_DESC samplerDesc; + samplerDesc.Filter = gl_d3d11::ConvertFilter(samplerState.minFilter, samplerState.magFilter, samplerState.maxAnisotropy); + samplerDesc.AddressU = gl_d3d11::ConvertTextureWrap(samplerState.wrapS); + samplerDesc.AddressV = gl_d3d11::ConvertTextureWrap(samplerState.wrapT); + samplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP; + samplerDesc.MipLODBias = static_cast(samplerState.lodOffset); + samplerDesc.MaxAnisotropy = samplerState.maxAnisotropy; + samplerDesc.ComparisonFunc = D3D11_COMPARISON_NEVER; + samplerDesc.BorderColor[0] = 0.0f; + samplerDesc.BorderColor[1] = 0.0f; + samplerDesc.BorderColor[2] = 0.0f; + samplerDesc.BorderColor[3] = 0.0f; + samplerDesc.MinLOD = gl_d3d11::ConvertMinLOD(samplerState.minFilter, samplerState.lodOffset); + samplerDesc.MaxLOD = gl_d3d11::ConvertMaxLOD(samplerState.minFilter, samplerState.lodOffset); + + ID3D11SamplerState *dx11SamplerState = NULL; + HRESULT result = mDevice->CreateSamplerState(&samplerDesc, &dx11SamplerState); + if (FAILED(result) || !dx11SamplerState) + { + ERR("Unable to create a ID3D11DepthStencilState, HRESULT: 0x%X.", result); + return NULL; + } + + mSamplerStateCache.insert(std::make_pair(samplerState, std::make_pair(dx11SamplerState, mCounter++))); + + return dx11SamplerState; + } +} + +} \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderStateCache.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderStateCache.h new file mode 100644 index 00000000000..f8b5111de48 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderStateCache.h @@ -0,0 +1,101 @@ +// +// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// RenderStateCache.h: Defines rx::RenderStateCache, a cache of Direct3D render +// state objects. + +#ifndef LIBGLESV2_RENDERER_RENDERSTATECACHE_H_ +#define LIBGLESV2_RENDERER_RENDERSTATECACHE_H_ + +#include "libGLESv2/angletypes.h" +#include "common/angleutils.h" + +namespace rx +{ + +class RenderStateCache +{ + public: + RenderStateCache(); + virtual ~RenderStateCache(); + + void initialize(ID3D11Device *device); + void clear(); + + // Increments refcount on the returned blend state, Release() must be called. + ID3D11BlendState *getBlendState(const gl::BlendState &blendState); + ID3D11RasterizerState *getRasterizerState(const gl::RasterizerState &rasterState, + bool scissorEnabled, unsigned int depthSize); + ID3D11DepthStencilState *getDepthStencilState(const gl::DepthStencilState &dsState); + ID3D11SamplerState *getSamplerState(const gl::SamplerState &samplerState); + + private: + DISALLOW_COPY_AND_ASSIGN(RenderStateCache); + + unsigned long long mCounter; + + // Blend state cache + static std::size_t hashBlendState(const gl::BlendState &blendState); + static bool compareBlendStates(const gl::BlendState &a, const gl::BlendState &b); + static const unsigned int kMaxBlendStates; + + typedef std::size_t (*BlendStateHashFunction)(const gl::BlendState &); + typedef bool (*BlendStateEqualityFunction)(const gl::BlendState &, const gl::BlendState &); + typedef std::pair BlendStateCounterPair; + typedef std::unordered_map BlendStateMap; + BlendStateMap mBlendStateCache; + + // Rasterizer state cache + struct RasterizerStateKey + { + gl::RasterizerState rasterizerState; + bool scissorEnabled; + unsigned int depthSize; + }; + static std::size_t hashRasterizerState(const RasterizerStateKey &rasterState); + static bool compareRasterizerStates(const RasterizerStateKey &a, const RasterizerStateKey &b); + static const unsigned int kMaxRasterizerStates; + + typedef std::size_t (*RasterizerStateHashFunction)(const RasterizerStateKey &); + typedef bool (*RasterizerStateEqualityFunction)(const RasterizerStateKey &, const RasterizerStateKey &); + typedef std::pair RasterizerStateCounterPair; + typedef std::unordered_map RasterizerStateMap; + RasterizerStateMap mRasterizerStateCache; + + // Depth stencil state cache + static std::size_t hashDepthStencilState(const gl::DepthStencilState &dsState); + static bool compareDepthStencilStates(const gl::DepthStencilState &a, const gl::DepthStencilState &b); + static const unsigned int kMaxDepthStencilStates; + + typedef std::size_t (*DepthStencilStateHashFunction)(const gl::DepthStencilState &); + typedef bool (*DepthStencilStateEqualityFunction)(const gl::DepthStencilState &, const gl::DepthStencilState &); + typedef std::pair DepthStencilStateCounterPair; + typedef std::unordered_map DepthStencilStateMap; + DepthStencilStateMap mDepthStencilStateCache; + + // Sample state cache + static std::size_t hashSamplerState(const gl::SamplerState &samplerState); + static bool compareSamplerStates(const gl::SamplerState &a, const gl::SamplerState &b); + static const unsigned int kMaxSamplerStates; + + typedef std::size_t (*SamplerStateHashFunction)(const gl::SamplerState &); + typedef bool (*SamplerStateEqualityFunction)(const gl::SamplerState &, const gl::SamplerState &); + typedef std::pair SamplerStateCounterPair; + typedef std::unordered_map SamplerStateMap; + SamplerStateMap mSamplerStateCache; + + ID3D11Device *mDevice; +}; + +} + +#endif // LIBGLESV2_RENDERER_RENDERSTATECACHE_H_ \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget.h new file mode 100644 index 00000000000..80de39f4f76 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget.h @@ -0,0 +1,56 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// RenderTarget.h: Defines an abstract wrapper class to manage IDirect3DSurface9 +// and ID3D11View objects belonging to renderbuffers. + +#ifndef LIBGLESV2_RENDERER_RENDERTARGET_H_ +#define LIBGLESV2_RENDERER_RENDERTARGET_H_ + +#include "common/angleutils.h" + +namespace rx +{ +class RenderTarget +{ + public: + RenderTarget() + { + mWidth = 0; + mHeight = 0; + mInternalFormat = GL_NONE; + mActualFormat = GL_NONE; + mSamples = 0; + } + + virtual ~RenderTarget() {}; + + GLsizei getWidth() { return mWidth; } + GLsizei getHeight() { return mHeight; } + GLenum getInternalFormat() { return mInternalFormat; } + GLenum getActualFormat() { return mActualFormat; } + GLsizei getSamples() { return mSamples; } + + struct Desc { + GLsizei width; + GLsizei height; + GLenum format; + }; + + protected: + GLsizei mWidth; + GLsizei mHeight; + GLenum mInternalFormat; + GLenum mActualFormat; + GLsizei mSamples; + + private: + DISALLOW_COPY_AND_ASSIGN(RenderTarget); +}; + +} + +#endif // LIBGLESV2_RENDERTARGET_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget11.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget11.cpp new file mode 100644 index 00000000000..cf226de17b1 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget11.cpp @@ -0,0 +1,378 @@ +#include "precompiled.h" +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// RenderTarget11.cpp: Implements a DX11-specific wrapper for ID3D11View pointers +// retained by Renderbuffers. + +#include "libGLESv2/renderer/RenderTarget11.h" +#include "libGLESv2/renderer/Renderer11.h" + +#include "libGLESv2/renderer/renderer11_utils.h" +#include "libGLESv2/main.h" + +namespace rx +{ + +static unsigned int getRTVSubresourceIndex(ID3D11Texture2D *texture, ID3D11RenderTargetView *view) +{ + D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; + view->GetDesc(&rtvDesc); + + D3D11_TEXTURE2D_DESC texDesc; + texture->GetDesc(&texDesc); + + unsigned int mipSlice = 0; + unsigned int arraySlice = 0; + unsigned int mipLevels = texDesc.MipLevels; + + switch (rtvDesc.ViewDimension) + { + case D3D11_RTV_DIMENSION_TEXTURE1D: + mipSlice = rtvDesc.Texture1D.MipSlice; + arraySlice = 0; + break; + + case D3D11_RTV_DIMENSION_TEXTURE1DARRAY: + mipSlice = rtvDesc.Texture1DArray.MipSlice; + arraySlice = rtvDesc.Texture1DArray.FirstArraySlice; + break; + + case D3D11_RTV_DIMENSION_TEXTURE2D: + mipSlice = rtvDesc.Texture2D.MipSlice; + arraySlice = 0; + break; + + case D3D11_RTV_DIMENSION_TEXTURE2DARRAY: + mipSlice = rtvDesc.Texture2DArray.MipSlice; + arraySlice = rtvDesc.Texture2DArray.FirstArraySlice; + break; + + case D3D11_RTV_DIMENSION_TEXTURE2DMS: + mipSlice = 0; + arraySlice = 0; + break; + + case D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY: + mipSlice = 0; + arraySlice = rtvDesc.Texture2DMSArray.FirstArraySlice; + break; + + case D3D11_RTV_DIMENSION_TEXTURE3D: + mipSlice = rtvDesc.Texture3D.MipSlice; + arraySlice = 0; + break; + + case D3D11_RTV_DIMENSION_UNKNOWN: + case D3D11_RTV_DIMENSION_BUFFER: + UNIMPLEMENTED(); + break; + + default: + UNREACHABLE(); + break; + } + + return D3D11CalcSubresource(mipSlice, arraySlice, mipLevels); +} + +static unsigned int getDSVSubresourceIndex(ID3D11Texture2D *texture, ID3D11DepthStencilView *view) +{ + D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc; + view->GetDesc(&dsvDesc); + + D3D11_TEXTURE2D_DESC texDesc; + texture->GetDesc(&texDesc); + + unsigned int mipSlice = 0; + unsigned int arraySlice = 0; + unsigned int mipLevels = texDesc.MipLevels; + + switch (dsvDesc.ViewDimension) + { + case D3D11_DSV_DIMENSION_TEXTURE1D: + mipSlice = dsvDesc.Texture1D.MipSlice; + arraySlice = 0; + break; + + case D3D11_DSV_DIMENSION_TEXTURE1DARRAY: + mipSlice = dsvDesc.Texture1DArray.MipSlice; + arraySlice = dsvDesc.Texture1DArray.FirstArraySlice; + break; + + case D3D11_DSV_DIMENSION_TEXTURE2D: + mipSlice = dsvDesc.Texture2D.MipSlice; + arraySlice = 0; + break; + + case D3D11_DSV_DIMENSION_TEXTURE2DARRAY: + mipSlice = dsvDesc.Texture2DArray.MipSlice; + arraySlice = dsvDesc.Texture2DArray.FirstArraySlice; + break; + + case D3D11_DSV_DIMENSION_TEXTURE2DMS: + mipSlice = 0; + arraySlice = 0; + break; + + case D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY: + mipSlice = 0; + arraySlice = dsvDesc.Texture2DMSArray.FirstArraySlice; + break; + + case D3D11_RTV_DIMENSION_UNKNOWN: + UNIMPLEMENTED(); + break; + + default: + UNREACHABLE(); + break; + } + + return D3D11CalcSubresource(mipSlice, arraySlice, mipLevels); +} + +RenderTarget11::RenderTarget11(Renderer *renderer, ID3D11RenderTargetView *rtv, ID3D11Texture2D *tex, ID3D11ShaderResourceView *srv, GLsizei width, GLsizei height) +{ + mRenderer = Renderer11::makeRenderer11(renderer); + mTexture = tex; + mRenderTarget = rtv; + mDepthStencil = NULL; + mShaderResource = srv; + mSubresourceIndex = 0; + + if (mRenderTarget && mTexture) + { + D3D11_RENDER_TARGET_VIEW_DESC desc; + mRenderTarget->GetDesc(&desc); + + D3D11_TEXTURE2D_DESC texDesc; + mTexture->GetDesc(&texDesc); + + mSubresourceIndex = getRTVSubresourceIndex(mTexture, mRenderTarget); + mWidth = width; + mHeight = height; + mSamples = (texDesc.SampleDesc.Count > 1) ? texDesc.SampleDesc.Count : 0; + + mInternalFormat = d3d11_gl::ConvertTextureInternalFormat(desc.Format); + mActualFormat = d3d11_gl::ConvertTextureInternalFormat(desc.Format); + } +} + +RenderTarget11::RenderTarget11(Renderer *renderer, ID3D11DepthStencilView *dsv, ID3D11Texture2D *tex, ID3D11ShaderResourceView *srv, GLsizei width, GLsizei height) +{ + mRenderer = Renderer11::makeRenderer11(renderer); + mTexture = tex; + mRenderTarget = NULL; + mDepthStencil = dsv; + mShaderResource = srv; + mSubresourceIndex = 0; + + if (mDepthStencil && mTexture) + { + D3D11_DEPTH_STENCIL_VIEW_DESC desc; + mDepthStencil->GetDesc(&desc); + + D3D11_TEXTURE2D_DESC texDesc; + mTexture->GetDesc(&texDesc); + + mSubresourceIndex = getDSVSubresourceIndex(mTexture, mDepthStencil); + mWidth = width; + mHeight = height; + mSamples = (texDesc.SampleDesc.Count > 1) ? texDesc.SampleDesc.Count : 0; + + mInternalFormat = d3d11_gl::ConvertTextureInternalFormat(desc.Format); + mActualFormat = d3d11_gl::ConvertTextureInternalFormat(desc.Format); + } +} + +RenderTarget11::RenderTarget11(Renderer *renderer, GLsizei width, GLsizei height, GLenum format, GLsizei samples, bool depth) +{ + mRenderer = Renderer11::makeRenderer11(renderer); + mTexture = NULL; + mRenderTarget = NULL; + mDepthStencil = NULL; + mShaderResource = NULL; + + DXGI_FORMAT requestedFormat = gl_d3d11::ConvertRenderbufferFormat(format); + + int supportedSamples = mRenderer->getNearestSupportedSamples(requestedFormat, samples); + if (supportedSamples < 0) + { + gl::error(GL_OUT_OF_MEMORY); + return; + } + + if (width > 0 && height > 0) + { + // Create texture resource + D3D11_TEXTURE2D_DESC desc; + desc.Width = width; + desc.Height = height; + desc.MipLevels = 1; + desc.ArraySize = 1; + desc.Format = requestedFormat; + desc.SampleDesc.Count = (supportedSamples == 0) ? 1 : supportedSamples; + desc.SampleDesc.Quality = 0; + desc.Usage = D3D11_USAGE_DEFAULT; + desc.CPUAccessFlags = 0; + desc.MiscFlags = 0; + desc.BindFlags = (depth ? D3D11_BIND_DEPTH_STENCIL : (D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE)); + + ID3D11Device *device = mRenderer->getDevice(); + HRESULT result = device->CreateTexture2D(&desc, NULL, &mTexture); + + if (result == E_OUTOFMEMORY) + { + gl::error(GL_OUT_OF_MEMORY); + return; + } + ASSERT(SUCCEEDED(result)); + + if (depth) + { + D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc; + dsvDesc.Format = requestedFormat; + dsvDesc.ViewDimension = (supportedSamples == 0) ? D3D11_DSV_DIMENSION_TEXTURE2D : D3D11_DSV_DIMENSION_TEXTURE2DMS; + dsvDesc.Texture2D.MipSlice = 0; + dsvDesc.Flags = 0; + result = device->CreateDepthStencilView(mTexture, &dsvDesc, &mDepthStencil); + + if (result == E_OUTOFMEMORY) + { + mTexture->Release(); + mTexture = NULL; + gl::error(GL_OUT_OF_MEMORY); + } + ASSERT(SUCCEEDED(result)); + } + else + { + D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; + rtvDesc.Format = requestedFormat; + rtvDesc.ViewDimension = (supportedSamples == 0) ? D3D11_RTV_DIMENSION_TEXTURE2D : D3D11_RTV_DIMENSION_TEXTURE2DMS; + rtvDesc.Texture2D.MipSlice = 0; + result = device->CreateRenderTargetView(mTexture, &rtvDesc, &mRenderTarget); + + if (result == E_OUTOFMEMORY) + { + mTexture->Release(); + mTexture = NULL; + gl::error(GL_OUT_OF_MEMORY); + return; + } + ASSERT(SUCCEEDED(result)); + + D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc; + srvDesc.Format = requestedFormat; + srvDesc.ViewDimension = (supportedSamples == 0) ? D3D11_SRV_DIMENSION_TEXTURE2D : D3D11_SRV_DIMENSION_TEXTURE2DMS; + srvDesc.Texture2D.MostDetailedMip = 0; + srvDesc.Texture2D.MipLevels = 1; + result = device->CreateShaderResourceView(mTexture, &srvDesc, &mShaderResource); + + if (result == E_OUTOFMEMORY) + { + mTexture->Release(); + mTexture = NULL; + mRenderTarget->Release(); + mRenderTarget = NULL; + gl::error(GL_OUT_OF_MEMORY); + return; + } + ASSERT(SUCCEEDED(result)); + } + } + + mWidth = width; + mHeight = height; + mInternalFormat = format; + mSamples = supportedSamples; + mActualFormat = d3d11_gl::ConvertTextureInternalFormat(requestedFormat); + mSubresourceIndex = D3D11CalcSubresource(0, 0, 1); +} + +RenderTarget11::~RenderTarget11() +{ + if (mTexture) + { + mTexture->Release(); + mTexture = NULL; + } + + if (mRenderTarget) + { + mRenderTarget->Release(); + mRenderTarget = NULL; + } + + if (mDepthStencil) + { + mDepthStencil->Release(); + mDepthStencil = NULL; + } + + if (mShaderResource) + { + mShaderResource->Release(); + mShaderResource = NULL; + } +} + +RenderTarget11 *RenderTarget11::makeRenderTarget11(RenderTarget *target) +{ + ASSERT(HAS_DYNAMIC_TYPE(rx::RenderTarget11*, target)); + return static_cast(target); +} + +ID3D11Texture2D *RenderTarget11::getTexture() const +{ + if (mTexture) + { + mTexture->AddRef(); + } + + return mTexture; +} + +// Adds reference, caller must call Release +ID3D11RenderTargetView *RenderTarget11::getRenderTargetView() const +{ + if (mRenderTarget) + { + mRenderTarget->AddRef(); + } + + return mRenderTarget; +} + +// Adds reference, caller must call Release +ID3D11DepthStencilView *RenderTarget11::getDepthStencilView() const +{ + if (mDepthStencil) + { + mDepthStencil->AddRef(); + } + + return mDepthStencil; +} + +// Adds reference, caller must call Release +ID3D11ShaderResourceView *RenderTarget11::getShaderResourceView() const +{ + if (mShaderResource) + { + mShaderResource->AddRef(); + } + + return mShaderResource; +} + +unsigned int RenderTarget11::getSubresourceIndex() const +{ + return mSubresourceIndex; +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget11.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget11.h new file mode 100644 index 00000000000..dc697cf0e33 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget11.h @@ -0,0 +1,58 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// RenderTarget11.h: Defines a DX11-specific wrapper for ID3D11View pointers +// retained by Renderbuffers. + +#ifndef LIBGLESV2_RENDERER_RENDERTARGET11_H_ +#define LIBGLESV2_RENDERER_RENDERTARGET11_H_ + +#include "libGLESv2/renderer/RenderTarget.h" + +namespace rx +{ +class Renderer; +class Renderer11; + +class RenderTarget11 : public RenderTarget +{ + public: + RenderTarget11(Renderer *renderer, ID3D11RenderTargetView *rtv, ID3D11Texture2D *tex, ID3D11ShaderResourceView *srv, GLsizei width, GLsizei height); + RenderTarget11(Renderer *renderer, ID3D11DepthStencilView *dsv, ID3D11Texture2D *tex, ID3D11ShaderResourceView *srv, GLsizei width, GLsizei height); + RenderTarget11(Renderer *renderer, GLsizei width, GLsizei height, GLenum format, GLsizei samples, bool depth); + virtual ~RenderTarget11(); + + static RenderTarget11 *makeRenderTarget11(RenderTarget *renderTarget); + + // Adds reference, caller must call Release + ID3D11Texture2D *getTexture() const; + + // Adds reference, caller must call Release + ID3D11RenderTargetView *getRenderTargetView() const; + + // Adds reference, caller must call Release + ID3D11DepthStencilView *getDepthStencilView() const; + + // Adds reference, caller must call Release + ID3D11ShaderResourceView *getShaderResourceView() const; + + unsigned int getSubresourceIndex() const; + + private: + DISALLOW_COPY_AND_ASSIGN(RenderTarget11); + + unsigned int mSubresourceIndex; + ID3D11Texture2D *mTexture; + ID3D11RenderTargetView *mRenderTarget; + ID3D11DepthStencilView *mDepthStencil; + ID3D11ShaderResourceView *mShaderResource; + + Renderer11 *mRenderer; +}; + +} + +#endif LIBGLESV2_RENDERER_RENDERTARGET11_H_ \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget9.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget9.cpp new file mode 100644 index 00000000000..a84c7090599 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget9.cpp @@ -0,0 +1,113 @@ +#include "precompiled.h" +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// RenderTarget9.cpp: Implements a D3D9-specific wrapper for IDirect3DSurface9 +// pointers retained by renderbuffers. + +#include "libGLESv2/renderer/RenderTarget9.h" +#include "libGLESv2/renderer/Renderer9.h" + +#include "libGLESv2/renderer/renderer9_utils.h" +#include "libGLESv2/main.h" + +namespace rx +{ + +RenderTarget9::RenderTarget9(Renderer *renderer, IDirect3DSurface9 *surface) +{ + mRenderer = Renderer9::makeRenderer9(renderer); + mRenderTarget = surface; + + if (mRenderTarget) + { + D3DSURFACE_DESC description; + mRenderTarget->GetDesc(&description); + + mWidth = description.Width; + mHeight = description.Height; + + mInternalFormat = d3d9_gl::GetEquivalentFormat(description.Format); + mActualFormat = d3d9_gl::GetEquivalentFormat(description.Format); + mSamples = d3d9_gl::GetSamplesFromMultisampleType(description.MultiSampleType); + } +} + +RenderTarget9::RenderTarget9(Renderer *renderer, GLsizei width, GLsizei height, GLenum format, GLsizei samples) +{ + mRenderer = Renderer9::makeRenderer9(renderer); + mRenderTarget = NULL; + + D3DFORMAT requestedFormat = gl_d3d9::ConvertRenderbufferFormat(format); + int supportedSamples = mRenderer->getNearestSupportedSamples(requestedFormat, samples); + + if (supportedSamples == -1) + { + gl::error(GL_OUT_OF_MEMORY); + + return; + } + + HRESULT result = D3DERR_INVALIDCALL; + + if (width > 0 && height > 0) + { + if (requestedFormat == D3DFMT_D24S8) + { + result = mRenderer->getDevice()->CreateDepthStencilSurface(width, height, requestedFormat, + gl_d3d9::GetMultisampleTypeFromSamples(supportedSamples), + 0, FALSE, &mRenderTarget, NULL); + } + else + { + result = mRenderer->getDevice()->CreateRenderTarget(width, height, requestedFormat, + gl_d3d9::GetMultisampleTypeFromSamples(supportedSamples), + 0, FALSE, &mRenderTarget, NULL); + } + + if (result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY) + { + gl::error(GL_OUT_OF_MEMORY); + + return; + } + + ASSERT(SUCCEEDED(result)); + } + + mWidth = width; + mHeight = height; + mInternalFormat = format; + mSamples = supportedSamples; + mActualFormat = d3d9_gl::GetEquivalentFormat(requestedFormat); +} + +RenderTarget9::~RenderTarget9() +{ + if (mRenderTarget) + { + mRenderTarget->Release(); + } +} + +RenderTarget9 *RenderTarget9::makeRenderTarget9(RenderTarget *target) +{ + ASSERT(HAS_DYNAMIC_TYPE(rx::RenderTarget9*, target)); + return static_cast(target); +} + +IDirect3DSurface9 *RenderTarget9::getSurface() +{ + // Caller is responsible for releasing the returned surface reference. + if (mRenderTarget) + { + mRenderTarget->AddRef(); + } + + return mRenderTarget; +} + +} \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget9.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget9.h new file mode 100644 index 00000000000..faf8ad1c6d2 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget9.h @@ -0,0 +1,40 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// RenderTarget9.h: Defines a D3D9-specific wrapper for IDirect3DSurface9 pointers +// retained by Renderbuffers. + +#ifndef LIBGLESV2_RENDERER_RENDERTARGET9_H_ +#define LIBGLESV2_RENDERER_RENDERTARGET9_H_ + +#include "libGLESv2/renderer/RenderTarget.h" + +namespace rx +{ +class Renderer; +class Renderer9; + +class RenderTarget9 : public RenderTarget +{ + public: + RenderTarget9(Renderer *renderer, IDirect3DSurface9 *surface); + RenderTarget9(Renderer *renderer, GLsizei width, GLsizei height, GLenum format, GLsizei samples); + virtual ~RenderTarget9(); + + static RenderTarget9 *makeRenderTarget9(RenderTarget *renderTarget); + IDirect3DSurface9 *getSurface(); + + private: + DISALLOW_COPY_AND_ASSIGN(RenderTarget9); + + IDirect3DSurface9 *mRenderTarget; + + Renderer9 *mRenderer; +}; + +} + +#endif // LIBGLESV2_RENDERER_RENDERTARGET9_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer.cpp new file mode 100644 index 00000000000..6138e6d926b --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer.cpp @@ -0,0 +1,220 @@ +#include "precompiled.h" +// +// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Renderer.cpp: Implements EGL dependencies for creating and destroying Renderer instances. + +#include +#include "libGLESv2/main.h" +#include "libGLESv2/Program.h" +#include "libGLESv2/renderer/Renderer.h" +#include "libGLESv2/renderer/Renderer9.h" +#include "libGLESv2/renderer/Renderer11.h" +#include "libGLESv2/utilities.h" + +#if !defined(ANGLE_ENABLE_D3D11) +// Enables use of the Direct3D 11 API for a default display, when available +#define ANGLE_ENABLE_D3D11 0 +#endif + +namespace rx +{ + +Renderer::Renderer(egl::Display *display) : mDisplay(display) +{ + mD3dCompilerModule = NULL; + mD3DCompileFunc = NULL; +} + +Renderer::~Renderer() +{ + if (mD3dCompilerModule) + { + FreeLibrary(mD3dCompilerModule); + mD3dCompilerModule = NULL; + } +} + +bool Renderer::initializeCompiler() +{ +#if defined(ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES) + // Find a D3DCompiler module that had already been loaded based on a predefined list of versions. + static TCHAR* d3dCompilerNames[] = ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES; + + for (size_t i = 0; i < ArraySize(d3dCompilerNames); ++i) + { + if (GetModuleHandleEx(0, d3dCompilerNames[i], &mD3dCompilerModule)) + { + break; + } + } +#else + // Load the version of the D3DCompiler DLL associated with the Direct3D version ANGLE was built with. + mD3dCompilerModule = LoadLibrary(D3DCOMPILER_DLL); +#endif // ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES + + if (!mD3dCompilerModule) + { + ERR("No D3D compiler module found - aborting!\n"); + return false; + } + + mD3DCompileFunc = reinterpret_cast(GetProcAddress(mD3dCompilerModule, "D3DCompile")); + ASSERT(mD3DCompileFunc); + + return mD3DCompileFunc != NULL; +} + +// Compiles HLSL code into executable binaries +ShaderBlob *Renderer::compileToBinary(gl::InfoLog &infoLog, const char *hlsl, const char *profile, UINT optimizationFlags, bool alternateFlags) +{ + if (!hlsl) + { + return NULL; + } + + HRESULT result = S_OK; + UINT flags = 0; + std::string sourceText; + if (gl::perfActive()) + { + flags |= D3DCOMPILE_DEBUG; + +#ifdef NDEBUG + flags |= optimizationFlags; +#else + flags |= D3DCOMPILE_SKIP_OPTIMIZATION; +#endif + + std::string sourcePath = getTempPath(); + sourceText = std::string("#line 2 \"") + sourcePath + std::string("\"\n\n") + std::string(hlsl); + writeFile(sourcePath.c_str(), sourceText.c_str(), sourceText.size()); + } + else + { + flags |= optimizationFlags; + sourceText = hlsl; + } + + // Sometimes D3DCompile will fail with the default compilation flags for complicated shaders when it would otherwise pass with alternative options. + // Try the default flags first and if compilation fails, try some alternatives. + const static UINT extraFlags[] = + { + 0, + D3DCOMPILE_AVOID_FLOW_CONTROL, + D3DCOMPILE_PREFER_FLOW_CONTROL + }; + + const static char * const extraFlagNames[] = + { + "default", + "avoid flow control", + "prefer flow control" + }; + + int attempts = alternateFlags ? ArraySize(extraFlags) : 1; + pD3DCompile compileFunc = reinterpret_cast(mD3DCompileFunc); + for (int i = 0; i < attempts; ++i) + { + ID3DBlob *errorMessage = NULL; + ID3DBlob *binary = NULL; + + result = compileFunc(hlsl, strlen(hlsl), gl::g_fakepath, NULL, NULL, + "main", profile, flags | extraFlags[i], 0, &binary, &errorMessage); + if (errorMessage) + { + const char *message = (const char*)errorMessage->GetBufferPointer(); + + infoLog.appendSanitized(message); + TRACE("\n%s", hlsl); + TRACE("\n%s", message); + + errorMessage->Release(); + errorMessage = NULL; + } + + if (SUCCEEDED(result)) + { + return (ShaderBlob*)binary; + } + else + { + if (result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY) + { + return gl::error(GL_OUT_OF_MEMORY, (ShaderBlob*) NULL); + } + + infoLog.append("Warning: D3D shader compilation failed with "); + infoLog.append(extraFlagNames[i]); + infoLog.append(" flags."); + if (i + 1 < attempts) + { + infoLog.append(" Retrying with "); + infoLog.append(extraFlagNames[i + 1]); + infoLog.append(".\n"); + } + } + } + + return NULL; +} + +} + +extern "C" +{ + +rx::Renderer *glCreateRenderer(egl::Display *display, HDC hDc, EGLNativeDisplayType displayId) +{ + rx::Renderer *renderer = NULL; + EGLint status = EGL_BAD_ALLOC; + + if (ANGLE_ENABLE_D3D11 || + displayId == EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE || + displayId == EGL_D3D11_ONLY_DISPLAY_ANGLE) + { + renderer = new rx::Renderer11(display, hDc); + + if (renderer) + { + status = renderer->initialize(); + } + + if (status == EGL_SUCCESS) + { + return renderer; + } + else if (displayId == EGL_D3D11_ONLY_DISPLAY_ANGLE) + { + return NULL; + } + + // Failed to create a D3D11 renderer, try creating a D3D9 renderer + delete renderer; + } + + bool softwareDevice = (displayId == EGL_SOFTWARE_DISPLAY_ANGLE); + renderer = new rx::Renderer9(display, hDc, softwareDevice); + + if (renderer) + { + status = renderer->initialize(); + } + + if (status == EGL_SUCCESS) + { + return renderer; + } + + return NULL; +} + +void glDestroyRenderer(rx::Renderer *renderer) +{ + delete renderer; +} + +} \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer.h new file mode 100644 index 00000000000..04e877ba9e7 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer.h @@ -0,0 +1,244 @@ +// +// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Renderer.h: Defines a back-end specific class that hides the details of the +// implementation-specific renderer. + +#ifndef LIBGLESV2_RENDERER_RENDERER_H_ +#define LIBGLESV2_RENDERER_RENDERER_H_ + +#include "libGLESv2/Uniform.h" +#include "libGLESv2/angletypes.h" + +#if !defined(ANGLE_COMPILE_OPTIMIZATION_LEVEL) +#define ANGLE_COMPILE_OPTIMIZATION_LEVEL D3DCOMPILE_OPTIMIZATION_LEVEL3 +#endif + +const int versionWindowsVista = MAKEWORD(0x00, 0x06); +const int versionWindows7 = MAKEWORD(0x01, 0x06); + +// Return the version of the operating system in a format suitable for ordering +// comparison. +inline int getComparableOSVersion() +{ + DWORD version = GetVersion(); + int majorVersion = LOBYTE(LOWORD(version)); + int minorVersion = HIBYTE(LOWORD(version)); + return MAKEWORD(minorVersion, majorVersion); +} + +namespace egl +{ +class Display; +} + +namespace gl +{ +class InfoLog; +class ProgramBinary; +class VertexAttribute; +class Buffer; +class Texture; +class Framebuffer; +} + +namespace rx +{ +class TextureStorageInterface2D; +class TextureStorageInterfaceCube; +class VertexBuffer; +class IndexBuffer; +class QueryImpl; +class FenceImpl; +class BufferStorage; +class Blit; +struct TranslatedIndexData; +class ShaderExecutable; +class SwapChain; +class RenderTarget; +class Image; +class TextureStorage; + +typedef void * ShaderBlob; +typedef void (*pCompileFunc)(); + +struct ConfigDesc +{ + GLenum renderTargetFormat; + GLenum depthStencilFormat; + GLint multiSample; + bool fastConfig; +}; + +struct dx_VertexConstants +{ + float depthRange[4]; + float viewAdjust[4]; +}; + +struct dx_PixelConstants +{ + float depthRange[4]; + float viewCoords[4]; + float depthFront[4]; +}; + +enum ShaderType +{ + SHADER_VERTEX, + SHADER_PIXEL, + SHADER_GEOMETRY +}; + +class Renderer +{ + public: + explicit Renderer(egl::Display *display); + virtual ~Renderer(); + + virtual EGLint initialize() = 0; + virtual bool resetDevice() = 0; + + virtual int generateConfigs(ConfigDesc **configDescList) = 0; + virtual void deleteConfigs(ConfigDesc *configDescList) = 0; + + virtual void sync(bool block) = 0; + + virtual SwapChain *createSwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat) = 0; + + virtual void setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &sampler) = 0; + virtual void setTexture(gl::SamplerType type, int index, gl::Texture *texture) = 0; + + virtual void setRasterizerState(const gl::RasterizerState &rasterState) = 0; + virtual void setBlendState(const gl::BlendState &blendState, const gl::Color &blendColor, + unsigned int sampleMask) = 0; + virtual void setDepthStencilState(const gl::DepthStencilState &depthStencilState, int stencilRef, + int stencilBackRef, bool frontFaceCCW) = 0; + + virtual void setScissorRectangle(const gl::Rectangle &scissor, bool enabled) = 0; + virtual bool setViewport(const gl::Rectangle &viewport, float zNear, float zFar, GLenum drawMode, GLenum frontFace, + bool ignoreViewport) = 0; + + virtual bool applyRenderTarget(gl::Framebuffer *frameBuffer) = 0; + virtual void applyShaders(gl::ProgramBinary *programBinary) = 0; + virtual void applyUniforms(gl::ProgramBinary *programBinary, gl::UniformArray *uniformArray) = 0; + virtual bool applyPrimitiveType(GLenum primitiveType, GLsizei elementCount) = 0; + virtual GLenum applyVertexBuffer(gl::ProgramBinary *programBinary, gl::VertexAttribute vertexAttributes[], GLint first, GLsizei count, GLsizei instances) = 0; + virtual GLenum applyIndexBuffer(const GLvoid *indices, gl::Buffer *elementArrayBuffer, GLsizei count, GLenum mode, GLenum type, TranslatedIndexData *indexInfo) = 0; + + virtual void drawArrays(GLenum mode, GLsizei count, GLsizei instances) = 0; + virtual void drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, gl::Buffer *elementArrayBuffer, const TranslatedIndexData &indexInfo, GLsizei instances) = 0; + + virtual void clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer) = 0; + + virtual void markAllStateDirty() = 0; + + // lost device + virtual void notifyDeviceLost() = 0; + virtual bool isDeviceLost() = 0; + virtual bool testDeviceLost(bool notify) = 0; + virtual bool testDeviceResettable() = 0; + + // Renderer capabilities + virtual DWORD getAdapterVendor() const = 0; + virtual std::string getRendererDescription() const = 0; + virtual GUID getAdapterIdentifier() const = 0; + + virtual bool getBGRATextureSupport() const = 0; + virtual bool getDXT1TextureSupport() = 0; + virtual bool getDXT3TextureSupport() = 0; + virtual bool getDXT5TextureSupport() = 0; + virtual bool getEventQuerySupport() = 0; + virtual bool getFloat32TextureSupport(bool *filtering, bool *renderable) = 0; + virtual bool getFloat16TextureSupport(bool *filtering, bool *renderable) = 0; + virtual bool getLuminanceTextureSupport() = 0; + virtual bool getLuminanceAlphaTextureSupport() = 0; + bool getVertexTextureSupport() const { return getMaxVertexTextureImageUnits() > 0; } + virtual unsigned int getMaxVertexTextureImageUnits() const = 0; + virtual unsigned int getMaxCombinedTextureImageUnits() const = 0; + virtual unsigned int getReservedVertexUniformVectors() const = 0; + virtual unsigned int getReservedFragmentUniformVectors() const = 0; + virtual unsigned int getMaxVertexUniformVectors() const = 0; + virtual unsigned int getMaxFragmentUniformVectors() const = 0; + virtual unsigned int getMaxVaryingVectors() const = 0; + virtual bool getNonPower2TextureSupport() const = 0; + virtual bool getDepthTextureSupport() const = 0; + virtual bool getOcclusionQuerySupport() const = 0; + virtual bool getInstancingSupport() const = 0; + virtual bool getTextureFilterAnisotropySupport() const = 0; + virtual float getTextureMaxAnisotropy() const = 0; + virtual bool getShareHandleSupport() const = 0; + virtual bool getDerivativeInstructionSupport() const = 0; + virtual bool getPostSubBufferSupport() const = 0; + + virtual int getMajorShaderModel() const = 0; + virtual float getMaxPointSize() const = 0; + virtual int getMaxViewportDimension() const = 0; + virtual int getMaxTextureWidth() const = 0; + virtual int getMaxTextureHeight() const = 0; + virtual bool get32BitIndexSupport() const = 0; + virtual int getMinSwapInterval() const = 0; + virtual int getMaxSwapInterval() const = 0; + + virtual GLsizei getMaxSupportedSamples() const = 0; + + virtual unsigned int getMaxRenderTargets() const = 0; + + // Pixel operations + virtual bool copyToRenderTarget(TextureStorageInterface2D *dest, TextureStorageInterface2D *source) = 0; + virtual bool copyToRenderTarget(TextureStorageInterfaceCube *dest, TextureStorageInterfaceCube *source) = 0; + + virtual bool copyImage(gl::Framebuffer *framebuffer, const gl::Rectangle &sourceRect, GLenum destFormat, + GLint xoffset, GLint yoffset, TextureStorageInterface2D *storage, GLint level) = 0; + virtual bool copyImage(gl::Framebuffer *framebuffer, const gl::Rectangle &sourceRect, GLenum destFormat, + GLint xoffset, GLint yoffset, TextureStorageInterfaceCube *storage, GLenum target, GLint level) = 0; + + virtual bool blitRect(gl::Framebuffer *readTarget, const gl::Rectangle &readRect, gl::Framebuffer *drawTarget, const gl::Rectangle &drawRect, + bool blitRenderTarget, bool blitDepthStencil) = 0; + virtual void readPixels(gl::Framebuffer *framebuffer, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, + GLsizei outputPitch, bool packReverseRowOrder, GLint packAlignment, void* pixels) = 0; + + // RenderTarget creation + virtual RenderTarget *createRenderTarget(SwapChain *swapChain, bool depth) = 0; + virtual RenderTarget *createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth) = 0; + + // Shader operations + virtual ShaderExecutable *loadExecutable(const void *function, size_t length, rx::ShaderType type) = 0; + virtual ShaderExecutable *compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, rx::ShaderType type) = 0; + + // Image operations + virtual Image *createImage() = 0; + virtual void generateMipmap(Image *dest, Image *source) = 0; + virtual TextureStorage *createTextureStorage2D(SwapChain *swapChain) = 0; + virtual TextureStorage *createTextureStorage2D(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height) = 0; + virtual TextureStorage *createTextureStorageCube(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size) = 0; + + // Buffer creation + virtual VertexBuffer *createVertexBuffer() = 0; + virtual IndexBuffer *createIndexBuffer() = 0; + virtual BufferStorage *createBufferStorage() = 0; + + // Query and Fence creation + virtual QueryImpl *createQuery(GLenum type) = 0; + virtual FenceImpl *createFence() = 0; + + virtual bool getLUID(LUID *adapterLuid) const = 0; + + protected: + bool initializeCompiler(); + ShaderBlob *compileToBinary(gl::InfoLog &infoLog, const char *hlsl, const char *profile, UINT optimizationFlags, bool alternateFlags); + + egl::Display *mDisplay; + + private: + DISALLOW_COPY_AND_ASSIGN(Renderer); + + HMODULE mD3dCompilerModule; + pCompileFunc mD3DCompileFunc; +}; + +} +#endif // LIBGLESV2_RENDERER_RENDERER_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer11.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer11.cpp new file mode 100644 index 00000000000..e544b40cc6b --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer11.cpp @@ -0,0 +1,3527 @@ +#include "precompiled.h" +// +// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Renderer11.cpp: Implements a back-end specific class for the D3D11 renderer. + +#include "libGLESv2/main.h" +#include "libGLESv2/utilities.h" +#include "libGLESv2/Buffer.h" +#include "libGLESv2/ProgramBinary.h" +#include "libGLESv2/Framebuffer.h" +#include "libGLESv2/RenderBuffer.h" +#include "libGLESv2/renderer/Renderer11.h" +#include "libGLESv2/renderer/RenderTarget11.h" +#include "libGLESv2/renderer/renderer11_utils.h" +#include "libGLESv2/renderer/ShaderExecutable11.h" +#include "libGLESv2/renderer/SwapChain11.h" +#include "libGLESv2/renderer/Image11.h" +#include "libGLESv2/renderer/VertexBuffer11.h" +#include "libGLESv2/renderer/IndexBuffer11.h" +#include "libGLESv2/renderer/BufferStorage11.h" +#include "libGLESv2/renderer/VertexDataManager.h" +#include "libGLESv2/renderer/IndexDataManager.h" +#include "libGLESv2/renderer/TextureStorage11.h" +#include "libGLESv2/renderer/Query11.h" +#include "libGLESv2/renderer/Fence11.h" + +#include "libGLESv2/renderer/shaders/compiled/passthrough11vs.h" +#include "libGLESv2/renderer/shaders/compiled/passthroughrgba11ps.h" +#include "libGLESv2/renderer/shaders/compiled/passthroughrgb11ps.h" +#include "libGLESv2/renderer/shaders/compiled/passthroughlum11ps.h" +#include "libGLESv2/renderer/shaders/compiled/passthroughlumalpha11ps.h" + +#include "libGLESv2/renderer/shaders/compiled/clear11vs.h" +#include "libGLESv2/renderer/shaders/compiled/clearsingle11ps.h" +#include "libGLESv2/renderer/shaders/compiled/clearmultiple11ps.h" + +#include "libEGL/Display.h" + +#ifdef _DEBUG +// this flag enables suppressing some spurious warnings that pop up in certain WebGL samples +// and conformance tests. to enable all warnings, remove this define. +#define ANGLE_SUPPRESS_D3D11_HAZARD_WARNINGS 1 +#endif + +namespace rx +{ +static const DXGI_FORMAT RenderTargetFormats[] = + { + DXGI_FORMAT_B8G8R8A8_UNORM, + DXGI_FORMAT_R8G8B8A8_UNORM + }; + +static const DXGI_FORMAT DepthStencilFormats[] = + { + DXGI_FORMAT_UNKNOWN, + DXGI_FORMAT_D24_UNORM_S8_UINT, + DXGI_FORMAT_D16_UNORM + }; + +enum +{ + MAX_TEXTURE_IMAGE_UNITS_VTF_SM4 = 16 +}; + +Renderer11::Renderer11(egl::Display *display, HDC hDc) : Renderer(display), mDc(hDc) +{ + mVertexDataManager = NULL; + mIndexDataManager = NULL; + + mLineLoopIB = NULL; + mTriangleFanIB = NULL; + + mCopyResourcesInitialized = false; + mCopyVB = NULL; + mCopySampler = NULL; + mCopyIL = NULL; + mCopyVS = NULL; + mCopyRGBAPS = NULL; + mCopyRGBPS = NULL; + mCopyLumPS = NULL; + mCopyLumAlphaPS = NULL; + + mClearResourcesInitialized = false; + mClearVB = NULL; + mClearIL = NULL; + mClearVS = NULL; + mClearSinglePS = NULL; + mClearMultiplePS = NULL; + mClearScissorRS = NULL; + mClearNoScissorRS = NULL; + + mSyncQuery = NULL; + + mD3d11Module = NULL; + mDxgiModule = NULL; + + mDeviceLost = false; + + mMaxSupportedSamples = 0; + + mDevice = NULL; + mDeviceContext = NULL; + mDxgiAdapter = NULL; + mDxgiFactory = NULL; + + mDriverConstantBufferVS = NULL; + mDriverConstantBufferPS = NULL; + + mBGRATextureSupport = false; + + mIsGeometryShaderActive = false; +} + +Renderer11::~Renderer11() +{ + release(); +} + +Renderer11 *Renderer11::makeRenderer11(Renderer *renderer) +{ + ASSERT(HAS_DYNAMIC_TYPE(rx::Renderer11*, renderer)); + return static_cast(renderer); +} + +#ifndef __d3d11_1_h__ +#define D3D11_MESSAGE_ID_DEVICE_DRAW_RENDERTARGETVIEW_NOT_SET ((D3D11_MESSAGE_ID)3146081) +#endif + +EGLint Renderer11::initialize() +{ + if (!initializeCompiler()) + { + return EGL_NOT_INITIALIZED; + } + + mDxgiModule = LoadLibrary(TEXT("dxgi.dll")); + mD3d11Module = LoadLibrary(TEXT("d3d11.dll")); + + if (mD3d11Module == NULL || mDxgiModule == NULL) + { + ERR("Could not load D3D11 or DXGI library - aborting!\n"); + return EGL_NOT_INITIALIZED; + } + + // create the D3D11 device + ASSERT(mDevice == NULL); + PFN_D3D11_CREATE_DEVICE D3D11CreateDevice = (PFN_D3D11_CREATE_DEVICE)GetProcAddress(mD3d11Module, "D3D11CreateDevice"); + + if (D3D11CreateDevice == NULL) + { + ERR("Could not retrieve D3D11CreateDevice address - aborting!\n"); + return EGL_NOT_INITIALIZED; + } + + D3D_FEATURE_LEVEL featureLevels[] = + { + D3D_FEATURE_LEVEL_11_0, + D3D_FEATURE_LEVEL_10_1, + D3D_FEATURE_LEVEL_10_0, + }; + + HRESULT result = S_OK; + +#ifdef _DEBUG + result = D3D11CreateDevice(NULL, + D3D_DRIVER_TYPE_HARDWARE, + NULL, + D3D11_CREATE_DEVICE_DEBUG, + featureLevels, + ArraySize(featureLevels), + D3D11_SDK_VERSION, + &mDevice, + &mFeatureLevel, + &mDeviceContext); + + if (!mDevice || FAILED(result)) + { + ERR("Failed creating Debug D3D11 device - falling back to release runtime.\n"); + } + + if (!mDevice || FAILED(result)) +#endif + { + result = D3D11CreateDevice(NULL, + D3D_DRIVER_TYPE_HARDWARE, + NULL, + 0, + featureLevels, + ArraySize(featureLevels), + D3D11_SDK_VERSION, + &mDevice, + &mFeatureLevel, + &mDeviceContext); + + if (!mDevice || FAILED(result)) + { + ERR("Could not create D3D11 device - aborting!\n"); + return EGL_NOT_INITIALIZED; // Cleanup done by destructor through glDestroyRenderer + } + } + + IDXGIDevice *dxgiDevice = NULL; + result = mDevice->QueryInterface(__uuidof(IDXGIDevice), (void**)&dxgiDevice); + + if (FAILED(result)) + { + ERR("Could not query DXGI device - aborting!\n"); + return EGL_NOT_INITIALIZED; + } + + result = dxgiDevice->GetParent(__uuidof(IDXGIAdapter), (void**)&mDxgiAdapter); + + if (FAILED(result)) + { + ERR("Could not retrieve DXGI adapter - aborting!\n"); + return EGL_NOT_INITIALIZED; + } + + dxgiDevice->Release(); + + mDxgiAdapter->GetDesc(&mAdapterDescription); + memset(mDescription, 0, sizeof(mDescription)); + wcstombs(mDescription, mAdapterDescription.Description, sizeof(mDescription) - 1); + + result = mDxgiAdapter->GetParent(__uuidof(IDXGIFactory), (void**)&mDxgiFactory); + + if (!mDxgiFactory || FAILED(result)) + { + ERR("Could not create DXGI factory - aborting!\n"); + return EGL_NOT_INITIALIZED; + } + + // Disable some spurious D3D11 debug warnings to prevent them from flooding the output log +#if defined(ANGLE_SUPPRESS_D3D11_HAZARD_WARNINGS) && defined(_DEBUG) + ID3D11InfoQueue *infoQueue; + result = mDevice->QueryInterface(__uuidof(ID3D11InfoQueue), (void **)&infoQueue); + + if (SUCCEEDED(result)) + { + D3D11_MESSAGE_ID hideMessages[] = + { + D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD, + D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD, + D3D11_MESSAGE_ID_DEVICE_DRAW_RENDERTARGETVIEW_NOT_SET + }; + + D3D11_INFO_QUEUE_FILTER filter = {0}; + filter.DenyList.NumIDs = ArraySize(hideMessages); + filter.DenyList.pIDList = hideMessages; + + infoQueue->AddStorageFilterEntries(&filter); + + infoQueue->Release(); + } +#endif + + unsigned int maxSupportedSamples = 0; + unsigned int rtFormatCount = ArraySize(RenderTargetFormats); + unsigned int dsFormatCount = ArraySize(DepthStencilFormats); + for (unsigned int i = 0; i < rtFormatCount + dsFormatCount; ++i) + { + DXGI_FORMAT format = (i < rtFormatCount) ? RenderTargetFormats[i] : DepthStencilFormats[i - rtFormatCount]; + if (format != DXGI_FORMAT_UNKNOWN) + { + UINT formatSupport; + result = mDevice->CheckFormatSupport(format, &formatSupport); + if (SUCCEEDED(result) && (formatSupport & D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET)) + { + MultisampleSupportInfo supportInfo; + + for (unsigned int j = 1; j <= D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT; j++) + { + result = mDevice->CheckMultisampleQualityLevels(format, j, &supportInfo.qualityLevels[j - 1]); + if (SUCCEEDED(result) && supportInfo.qualityLevels[j - 1] > 0) + { + maxSupportedSamples = std::max(j, maxSupportedSamples); + } + else + { + supportInfo.qualityLevels[j - 1] = 0; + } + } + + mMultisampleSupportMap.insert(std::make_pair(format, supportInfo)); + } + } + } + mMaxSupportedSamples = maxSupportedSamples; + + initializeDevice(); + + // BGRA texture support is optional in feature levels 10 and 10_1 + UINT formatSupport; + result = mDevice->CheckFormatSupport(DXGI_FORMAT_B8G8R8A8_UNORM, &formatSupport); + if (FAILED(result)) + { + ERR("Error checking BGRA format support: 0x%08X", result); + } + else + { + const int flags = (D3D11_FORMAT_SUPPORT_TEXTURE2D | D3D11_FORMAT_SUPPORT_RENDER_TARGET); + mBGRATextureSupport = (formatSupport & flags) == flags; + } + + // Check floating point texture support + static const unsigned int requiredTextureFlags = D3D11_FORMAT_SUPPORT_TEXTURE2D | D3D11_FORMAT_SUPPORT_TEXTURECUBE; + static const unsigned int requiredRenderableFlags = D3D11_FORMAT_SUPPORT_RENDER_TARGET; + static const unsigned int requiredFilterFlags = D3D11_FORMAT_SUPPORT_SHADER_SAMPLE; + + DXGI_FORMAT float16Formats[] = + { + DXGI_FORMAT_R16_FLOAT, + DXGI_FORMAT_R16G16_FLOAT, + DXGI_FORMAT_R16G16B16A16_FLOAT, + }; + + DXGI_FORMAT float32Formats[] = + { + DXGI_FORMAT_R32_FLOAT, + DXGI_FORMAT_R32G32_FLOAT, + DXGI_FORMAT_R32G32B32_FLOAT, + DXGI_FORMAT_R32G32B32A32_FLOAT, + }; + + mFloat16TextureSupport = true; + mFloat16FilterSupport = true; + mFloat16RenderSupport = true; + for (unsigned int i = 0; i < ArraySize(float16Formats); i++) + { + if (SUCCEEDED(mDevice->CheckFormatSupport(float16Formats[i], &formatSupport))) + { + mFloat16TextureSupport = mFloat16TextureSupport && (formatSupport & requiredTextureFlags) == requiredTextureFlags; + mFloat16FilterSupport = mFloat16FilterSupport && (formatSupport & requiredFilterFlags) == requiredFilterFlags; + mFloat16RenderSupport = mFloat16RenderSupport && (formatSupport & requiredRenderableFlags) == requiredRenderableFlags; + } + else + { + mFloat16TextureSupport = false; + mFloat16RenderSupport = false; + mFloat16FilterSupport = false; + } + } + + mFloat32TextureSupport = true; + mFloat32FilterSupport = true; + mFloat32RenderSupport = true; + for (unsigned int i = 0; i < ArraySize(float32Formats); i++) + { + if (SUCCEEDED(mDevice->CheckFormatSupport(float32Formats[i], &formatSupport))) + { + mFloat32TextureSupport = mFloat32TextureSupport && (formatSupport & requiredTextureFlags) == requiredTextureFlags; + mFloat32FilterSupport = mFloat32FilterSupport && (formatSupport & requiredFilterFlags) == requiredFilterFlags; + mFloat32RenderSupport = mFloat32RenderSupport && (formatSupport & requiredRenderableFlags) == requiredRenderableFlags; + } + else + { + mFloat32TextureSupport = false; + mFloat32FilterSupport = false; + mFloat32RenderSupport = false; + } + } + + // Check compressed texture support + const unsigned int requiredCompressedTextureFlags = D3D11_FORMAT_SUPPORT_TEXTURE2D; + + if (SUCCEEDED(mDevice->CheckFormatSupport(DXGI_FORMAT_BC1_UNORM, &formatSupport))) + { + mDXT1TextureSupport = (formatSupport & requiredCompressedTextureFlags) == requiredCompressedTextureFlags; + } + else + { + mDXT1TextureSupport = false; + } + + if (SUCCEEDED(mDevice->CheckFormatSupport(DXGI_FORMAT_BC3_UNORM, &formatSupport))) + { + mDXT3TextureSupport = (formatSupport & requiredCompressedTextureFlags) == requiredCompressedTextureFlags; + } + else + { + mDXT3TextureSupport = false; + } + + if (SUCCEEDED(mDevice->CheckFormatSupport(DXGI_FORMAT_BC5_UNORM, &formatSupport))) + { + mDXT5TextureSupport = (formatSupport & requiredCompressedTextureFlags) == requiredCompressedTextureFlags; + } + else + { + mDXT5TextureSupport = false; + } + + // Check depth texture support + DXGI_FORMAT depthTextureFormats[] = + { + DXGI_FORMAT_D16_UNORM, + DXGI_FORMAT_D24_UNORM_S8_UINT, + }; + + static const unsigned int requiredDepthTextureFlags = D3D11_FORMAT_SUPPORT_DEPTH_STENCIL | + D3D11_FORMAT_SUPPORT_TEXTURE2D; + + mDepthTextureSupport = true; + for (unsigned int i = 0; i < ArraySize(depthTextureFormats); i++) + { + if (SUCCEEDED(mDevice->CheckFormatSupport(depthTextureFormats[i], &formatSupport))) + { + mDepthTextureSupport = mDepthTextureSupport && ((formatSupport & requiredDepthTextureFlags) == requiredDepthTextureFlags); + } + else + { + mDepthTextureSupport = false; + } + } + + return EGL_SUCCESS; +} + +// do any one-time device initialization +// NOTE: this is also needed after a device lost/reset +// to reset the scene status and ensure the default states are reset. +void Renderer11::initializeDevice() +{ + mStateCache.initialize(mDevice); + mInputLayoutCache.initialize(mDevice, mDeviceContext); + + ASSERT(!mVertexDataManager && !mIndexDataManager); + mVertexDataManager = new VertexDataManager(this); + mIndexDataManager = new IndexDataManager(this); + + markAllStateDirty(); +} + +int Renderer11::generateConfigs(ConfigDesc **configDescList) +{ + unsigned int numRenderFormats = ArraySize(RenderTargetFormats); + unsigned int numDepthFormats = ArraySize(DepthStencilFormats); + (*configDescList) = new ConfigDesc[numRenderFormats * numDepthFormats]; + int numConfigs = 0; + + for (unsigned int formatIndex = 0; formatIndex < numRenderFormats; formatIndex++) + { + for (unsigned int depthStencilIndex = 0; depthStencilIndex < numDepthFormats; depthStencilIndex++) + { + DXGI_FORMAT renderTargetFormat = RenderTargetFormats[formatIndex]; + + UINT formatSupport = 0; + HRESULT result = mDevice->CheckFormatSupport(renderTargetFormat, &formatSupport); + + if (SUCCEEDED(result) && (formatSupport & D3D11_FORMAT_SUPPORT_RENDER_TARGET)) + { + DXGI_FORMAT depthStencilFormat = DepthStencilFormats[depthStencilIndex]; + + bool depthStencilFormatOK = true; + + if (depthStencilFormat != DXGI_FORMAT_UNKNOWN) + { + UINT formatSupport = 0; + result = mDevice->CheckFormatSupport(depthStencilFormat, &formatSupport); + depthStencilFormatOK = SUCCEEDED(result) && (formatSupport & D3D11_FORMAT_SUPPORT_DEPTH_STENCIL); + } + + if (depthStencilFormatOK) + { + ConfigDesc newConfig; + newConfig.renderTargetFormat = d3d11_gl::ConvertBackBufferFormat(renderTargetFormat); + newConfig.depthStencilFormat = d3d11_gl::ConvertDepthStencilFormat(depthStencilFormat); + newConfig.multiSample = 0; // FIXME: enumerate multi-sampling + newConfig.fastConfig = true; // Assume all DX11 format conversions to be fast + + (*configDescList)[numConfigs++] = newConfig; + } + } + } + } + + return numConfigs; +} + +void Renderer11::deleteConfigs(ConfigDesc *configDescList) +{ + delete [] (configDescList); +} + +void Renderer11::sync(bool block) +{ + if (block) + { + HRESULT result; + + if (!mSyncQuery) + { + D3D11_QUERY_DESC queryDesc; + queryDesc.Query = D3D11_QUERY_EVENT; + queryDesc.MiscFlags = 0; + + result = mDevice->CreateQuery(&queryDesc, &mSyncQuery); + ASSERT(SUCCEEDED(result)); + } + + mDeviceContext->End(mSyncQuery); + mDeviceContext->Flush(); + + do + { + result = mDeviceContext->GetData(mSyncQuery, NULL, 0, D3D11_ASYNC_GETDATA_DONOTFLUSH); + + // Keep polling, but allow other threads to do something useful first + Sleep(0); + + if (testDeviceLost(true)) + { + return; + } + } + while (result == S_FALSE); + } + else + { + mDeviceContext->Flush(); + } +} + +SwapChain *Renderer11::createSwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat) +{ + return new rx::SwapChain11(this, window, shareHandle, backBufferFormat, depthBufferFormat); +} + +void Renderer11::setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &samplerState) +{ + if (type == gl::SAMPLER_PIXEL) + { + if (index < 0 || index >= gl::MAX_TEXTURE_IMAGE_UNITS) + { + ERR("Pixel shader sampler index %i is not valid.", index); + return; + } + + if (mForceSetPixelSamplerStates[index] || memcmp(&samplerState, &mCurPixelSamplerStates[index], sizeof(gl::SamplerState)) != 0) + { + ID3D11SamplerState *dxSamplerState = mStateCache.getSamplerState(samplerState); + + if (!dxSamplerState) + { + ERR("NULL sampler state returned by RenderStateCache::getSamplerState, setting the default" + "sampler state for pixel shaders at slot %i.", index); + } + + mDeviceContext->PSSetSamplers(index, 1, &dxSamplerState); + + mCurPixelSamplerStates[index] = samplerState; + } + + mForceSetPixelSamplerStates[index] = false; + } + else if (type == gl::SAMPLER_VERTEX) + { + if (index < 0 || index >= (int)getMaxVertexTextureImageUnits()) + { + ERR("Vertex shader sampler index %i is not valid.", index); + return; + } + + if (mForceSetVertexSamplerStates[index] || memcmp(&samplerState, &mCurVertexSamplerStates[index], sizeof(gl::SamplerState)) != 0) + { + ID3D11SamplerState *dxSamplerState = mStateCache.getSamplerState(samplerState); + + if (!dxSamplerState) + { + ERR("NULL sampler state returned by RenderStateCache::getSamplerState, setting the default" + "sampler state for vertex shaders at slot %i.", index); + } + + mDeviceContext->VSSetSamplers(index, 1, &dxSamplerState); + + mCurVertexSamplerStates[index] = samplerState; + } + + mForceSetVertexSamplerStates[index] = false; + } + else UNREACHABLE(); +} + +void Renderer11::setTexture(gl::SamplerType type, int index, gl::Texture *texture) +{ + ID3D11ShaderResourceView *textureSRV = NULL; + unsigned int serial = 0; + bool forceSetTexture = false; + + if (texture) + { + TextureStorageInterface *texStorage = texture->getNativeTexture(); + if (texStorage) + { + TextureStorage11 *storage11 = TextureStorage11::makeTextureStorage11(texStorage->getStorageInstance()); + textureSRV = storage11->getSRV(); + } + + // If we get NULL back from getSRV here, something went wrong in the texture class and we're unexpectedly + // missing the shader resource view + ASSERT(textureSRV != NULL); + + serial = texture->getTextureSerial(); + forceSetTexture = texture->hasDirtyImages(); + } + + if (type == gl::SAMPLER_PIXEL) + { + if (index < 0 || index >= gl::MAX_TEXTURE_IMAGE_UNITS) + { + ERR("Pixel shader sampler index %i is not valid.", index); + return; + } + + if (forceSetTexture || mCurPixelTextureSerials[index] != serial) + { + mDeviceContext->PSSetShaderResources(index, 1, &textureSRV); + } + + mCurPixelTextureSerials[index] = serial; + } + else if (type == gl::SAMPLER_VERTEX) + { + if (index < 0 || index >= (int)getMaxVertexTextureImageUnits()) + { + ERR("Vertex shader sampler index %i is not valid.", index); + return; + } + + if (forceSetTexture || mCurVertexTextureSerials[index] != serial) + { + mDeviceContext->VSSetShaderResources(index, 1, &textureSRV); + } + + mCurVertexTextureSerials[index] = serial; + } + else UNREACHABLE(); +} + +void Renderer11::setRasterizerState(const gl::RasterizerState &rasterState) +{ + if (mForceSetRasterState || memcmp(&rasterState, &mCurRasterState, sizeof(gl::RasterizerState)) != 0) + { + ID3D11RasterizerState *dxRasterState = mStateCache.getRasterizerState(rasterState, mScissorEnabled, + mCurDepthSize); + if (!dxRasterState) + { + ERR("NULL rasterizer state returned by RenderStateCache::getRasterizerState, setting the default" + "rasterizer state."); + } + + mDeviceContext->RSSetState(dxRasterState); + + mCurRasterState = rasterState; + } + + mForceSetRasterState = false; +} + +void Renderer11::setBlendState(const gl::BlendState &blendState, const gl::Color &blendColor, + unsigned int sampleMask) +{ + if (mForceSetBlendState || + memcmp(&blendState, &mCurBlendState, sizeof(gl::BlendState)) != 0 || + memcmp(&blendColor, &mCurBlendColor, sizeof(gl::Color)) != 0 || + sampleMask != mCurSampleMask) + { + ID3D11BlendState *dxBlendState = mStateCache.getBlendState(blendState); + if (!dxBlendState) + { + ERR("NULL blend state returned by RenderStateCache::getBlendState, setting the default " + "blend state."); + } + + float blendColors[4] = {0.0f}; + if (blendState.sourceBlendRGB != GL_CONSTANT_ALPHA && blendState.sourceBlendRGB != GL_ONE_MINUS_CONSTANT_ALPHA && + blendState.destBlendRGB != GL_CONSTANT_ALPHA && blendState.destBlendRGB != GL_ONE_MINUS_CONSTANT_ALPHA) + { + blendColors[0] = blendColor.red; + blendColors[1] = blendColor.green; + blendColors[2] = blendColor.blue; + blendColors[3] = blendColor.alpha; + } + else + { + blendColors[0] = blendColor.alpha; + blendColors[1] = blendColor.alpha; + blendColors[2] = blendColor.alpha; + blendColors[3] = blendColor.alpha; + } + + mDeviceContext->OMSetBlendState(dxBlendState, blendColors, sampleMask); + + mCurBlendState = blendState; + mCurBlendColor = blendColor; + mCurSampleMask = sampleMask; + } + + mForceSetBlendState = false; +} + +void Renderer11::setDepthStencilState(const gl::DepthStencilState &depthStencilState, int stencilRef, + int stencilBackRef, bool frontFaceCCW) +{ + if (mForceSetDepthStencilState || + memcmp(&depthStencilState, &mCurDepthStencilState, sizeof(gl::DepthStencilState)) != 0 || + stencilRef != mCurStencilRef || stencilBackRef != mCurStencilBackRef) + { + if (depthStencilState.stencilWritemask != depthStencilState.stencilBackWritemask || + stencilRef != stencilBackRef || + depthStencilState.stencilMask != depthStencilState.stencilBackMask) + { + ERR("Separate front/back stencil writemasks, reference values, or stencil mask values are " + "invalid under WebGL."); + return gl::error(GL_INVALID_OPERATION); + } + + ID3D11DepthStencilState *dxDepthStencilState = mStateCache.getDepthStencilState(depthStencilState); + if (!dxDepthStencilState) + { + ERR("NULL depth stencil state returned by RenderStateCache::getDepthStencilState, " + "setting the default depth stencil state."); + } + + mDeviceContext->OMSetDepthStencilState(dxDepthStencilState, static_cast(stencilRef)); + + mCurDepthStencilState = depthStencilState; + mCurStencilRef = stencilRef; + mCurStencilBackRef = stencilBackRef; + } + + mForceSetDepthStencilState = false; +} + +void Renderer11::setScissorRectangle(const gl::Rectangle &scissor, bool enabled) +{ + if (mForceSetScissor || memcmp(&scissor, &mCurScissor, sizeof(gl::Rectangle)) != 0 || + enabled != mScissorEnabled) + { + if (enabled) + { + D3D11_RECT rect; + rect.left = std::max(0, scissor.x); + rect.top = std::max(0, scissor.y); + rect.right = scissor.x + std::max(0, scissor.width); + rect.bottom = scissor.y + std::max(0, scissor.height); + + mDeviceContext->RSSetScissorRects(1, &rect); + } + + if (enabled != mScissorEnabled) + { + mForceSetRasterState = true; + } + + mCurScissor = scissor; + mScissorEnabled = enabled; + } + + mForceSetScissor = false; +} + +bool Renderer11::setViewport(const gl::Rectangle &viewport, float zNear, float zFar, GLenum drawMode, GLenum frontFace, + bool ignoreViewport) +{ + gl::Rectangle actualViewport = viewport; + float actualZNear = gl::clamp01(zNear); + float actualZFar = gl::clamp01(zFar); + if (ignoreViewport) + { + actualViewport.x = 0; + actualViewport.y = 0; + actualViewport.width = mRenderTargetDesc.width; + actualViewport.height = mRenderTargetDesc.height; + actualZNear = 0.0f; + actualZFar = 1.0f; + } + + // Get D3D viewport bounds, which depends on the feature level + const Range& viewportBounds = getViewportBounds(); + + // Clamp width and height first to the gl maximum, then clamp further if we extend past the D3D maximum bounds + D3D11_VIEWPORT dxViewport; + dxViewport.TopLeftX = gl::clamp(actualViewport.x, viewportBounds.start, viewportBounds.end); + dxViewport.TopLeftY = gl::clamp(actualViewport.y, viewportBounds.start, viewportBounds.end); + dxViewport.Width = gl::clamp(actualViewport.width, 0, getMaxViewportDimension()); + dxViewport.Height = gl::clamp(actualViewport.height, 0, getMaxViewportDimension()); + dxViewport.Width = std::min((int)dxViewport.Width, viewportBounds.end - static_cast(dxViewport.TopLeftX)); + dxViewport.Height = std::min((int)dxViewport.Height, viewportBounds.end - static_cast(dxViewport.TopLeftY)); + dxViewport.MinDepth = actualZNear; + dxViewport.MaxDepth = actualZFar; + + if (dxViewport.Width <= 0 || dxViewport.Height <= 0) + { + return false; // Nothing to render + } + + bool viewportChanged = mForceSetViewport || memcmp(&actualViewport, &mCurViewport, sizeof(gl::Rectangle)) != 0 || + actualZNear != mCurNear || actualZFar != mCurFar; + + if (viewportChanged) + { + mDeviceContext->RSSetViewports(1, &dxViewport); + + mCurViewport = actualViewport; + mCurNear = actualZNear; + mCurFar = actualZFar; + + mPixelConstants.viewCoords[0] = actualViewport.width * 0.5f; + mPixelConstants.viewCoords[1] = actualViewport.height * 0.5f; + mPixelConstants.viewCoords[2] = actualViewport.x + (actualViewport.width * 0.5f); + mPixelConstants.viewCoords[3] = actualViewport.y + (actualViewport.height * 0.5f); + + mPixelConstants.depthFront[0] = (actualZFar - actualZNear) * 0.5f; + mPixelConstants.depthFront[1] = (actualZNear + actualZFar) * 0.5f; + + mVertexConstants.depthRange[0] = actualZNear; + mVertexConstants.depthRange[1] = actualZFar; + mVertexConstants.depthRange[2] = actualZFar - actualZNear; + + mPixelConstants.depthRange[0] = actualZNear; + mPixelConstants.depthRange[1] = actualZFar; + mPixelConstants.depthRange[2] = actualZFar - actualZNear; + } + + mForceSetViewport = false; + return true; +} + +bool Renderer11::applyPrimitiveType(GLenum mode, GLsizei count) +{ + D3D11_PRIMITIVE_TOPOLOGY primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED; + + switch (mode) + { + case GL_POINTS: primitiveTopology = D3D11_PRIMITIVE_TOPOLOGY_POINTLIST; break; + case GL_LINES: primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_LINELIST; break; + case GL_LINE_LOOP: primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP; break; + case GL_LINE_STRIP: primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP; break; + case GL_TRIANGLES: primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST; break; + case GL_TRIANGLE_STRIP: primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP; break; + // emulate fans via rewriting index buffer + case GL_TRIANGLE_FAN: primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST; break; + default: + return gl::error(GL_INVALID_ENUM, false); + } + + mDeviceContext->IASetPrimitiveTopology(primitiveTopology); + + return count > 0; +} + +bool Renderer11::applyRenderTarget(gl::Framebuffer *framebuffer) +{ + // Get the color render buffer and serial + // Also extract the render target dimensions and view + unsigned int renderTargetWidth = 0; + unsigned int renderTargetHeight = 0; + GLenum renderTargetFormat = 0; + unsigned int renderTargetSerials[gl::IMPLEMENTATION_MAX_DRAW_BUFFERS] = {0}; + ID3D11RenderTargetView* framebufferRTVs[gl::IMPLEMENTATION_MAX_DRAW_BUFFERS] = {NULL}; + bool missingColorRenderTarget = true; + + for (unsigned int colorAttachment = 0; colorAttachment < gl::IMPLEMENTATION_MAX_DRAW_BUFFERS; colorAttachment++) + { + const GLenum drawBufferState = framebuffer->getDrawBufferState(colorAttachment); + + if (framebuffer->getColorbufferType(colorAttachment) != GL_NONE && drawBufferState != GL_NONE) + { + // the draw buffer must be either "none", "back" for the default buffer or the same index as this color (in order) + ASSERT(drawBufferState == GL_BACK || drawBufferState == (GL_COLOR_ATTACHMENT0_EXT + colorAttachment)); + + gl::Renderbuffer *colorbuffer = framebuffer->getColorbuffer(colorAttachment); + + if (!colorbuffer) + { + ERR("render target pointer unexpectedly null."); + return false; + } + + // check for zero-sized default framebuffer, which is a special case. + // in this case we do not wish to modify any state and just silently return false. + // this will not report any gl error but will cause the calling method to return. + if (colorbuffer->getWidth() == 0 || colorbuffer->getHeight() == 0) + { + return false; + } + + renderTargetSerials[colorAttachment] = colorbuffer->getSerial(); + + // Extract the render target dimensions and view + RenderTarget11 *renderTarget = RenderTarget11::makeRenderTarget11(colorbuffer->getRenderTarget()); + if (!renderTarget) + { + ERR("render target pointer unexpectedly null."); + return false; + } + + framebufferRTVs[colorAttachment] = renderTarget->getRenderTargetView(); + if (!framebufferRTVs[colorAttachment]) + { + ERR("render target view pointer unexpectedly null."); + return false; + } + + if (missingColorRenderTarget) + { + renderTargetWidth = colorbuffer->getWidth(); + renderTargetHeight = colorbuffer->getHeight(); + renderTargetFormat = colorbuffer->getActualFormat(); + missingColorRenderTarget = false; + } + } + } + + // Get the depth stencil render buffer and serials + gl::Renderbuffer *depthStencil = NULL; + unsigned int depthbufferSerial = 0; + unsigned int stencilbufferSerial = 0; + if (framebuffer->getDepthbufferType() != GL_NONE) + { + depthStencil = framebuffer->getDepthbuffer(); + if (!depthStencil) + { + ERR("Depth stencil pointer unexpectedly null."); + SafeRelease(framebufferRTVs); + return false; + } + + depthbufferSerial = depthStencil->getSerial(); + } + else if (framebuffer->getStencilbufferType() != GL_NONE) + { + depthStencil = framebuffer->getStencilbuffer(); + if (!depthStencil) + { + ERR("Depth stencil pointer unexpectedly null."); + SafeRelease(framebufferRTVs); + return false; + } + + stencilbufferSerial = depthStencil->getSerial(); + } + + // Extract the depth stencil sizes and view + unsigned int depthSize = 0; + unsigned int stencilSize = 0; + ID3D11DepthStencilView* framebufferDSV = NULL; + if (depthStencil) + { + RenderTarget11 *depthStencilRenderTarget = RenderTarget11::makeRenderTarget11(depthStencil->getDepthStencil()); + if (!depthStencilRenderTarget) + { + ERR("render target pointer unexpectedly null."); + SafeRelease(framebufferRTVs); + return false; + } + + framebufferDSV = depthStencilRenderTarget->getDepthStencilView(); + if (!framebufferDSV) + { + ERR("depth stencil view pointer unexpectedly null."); + SafeRelease(framebufferRTVs); + return false; + } + + // If there is no render buffer, the width, height and format values come from + // the depth stencil + if (missingColorRenderTarget) + { + renderTargetWidth = depthStencil->getWidth(); + renderTargetHeight = depthStencil->getHeight(); + renderTargetFormat = depthStencil->getActualFormat(); + } + + depthSize = depthStencil->getDepthSize(); + stencilSize = depthStencil->getStencilSize(); + } + + // Apply the render target and depth stencil + if (!mRenderTargetDescInitialized || !mDepthStencilInitialized || + memcmp(renderTargetSerials, mAppliedRenderTargetSerials, sizeof(renderTargetSerials)) != 0 || + depthbufferSerial != mAppliedDepthbufferSerial || + stencilbufferSerial != mAppliedStencilbufferSerial) + { + mDeviceContext->OMSetRenderTargets(getMaxRenderTargets(), framebufferRTVs, framebufferDSV); + + mRenderTargetDesc.width = renderTargetWidth; + mRenderTargetDesc.height = renderTargetHeight; + mRenderTargetDesc.format = renderTargetFormat; + mForceSetViewport = true; + mForceSetScissor = true; + + if (!mDepthStencilInitialized || depthSize != mCurDepthSize) + { + mCurDepthSize = depthSize; + mForceSetRasterState = true; + } + + mCurStencilSize = stencilSize; + + for (unsigned int rtIndex = 0; rtIndex < gl::IMPLEMENTATION_MAX_DRAW_BUFFERS; rtIndex++) + { + mAppliedRenderTargetSerials[rtIndex] = renderTargetSerials[rtIndex]; + } + mAppliedDepthbufferSerial = depthbufferSerial; + mAppliedStencilbufferSerial = stencilbufferSerial; + mRenderTargetDescInitialized = true; + mDepthStencilInitialized = true; + } + + SafeRelease(framebufferRTVs); + SafeRelease(framebufferDSV); + + return true; +} + +GLenum Renderer11::applyVertexBuffer(gl::ProgramBinary *programBinary, gl::VertexAttribute vertexAttributes[], GLint first, GLsizei count, GLsizei instances) +{ + TranslatedAttribute attributes[gl::MAX_VERTEX_ATTRIBS]; + GLenum err = mVertexDataManager->prepareVertexData(vertexAttributes, programBinary, first, count, attributes, instances); + if (err != GL_NO_ERROR) + { + return err; + } + + return mInputLayoutCache.applyVertexBuffers(attributes, programBinary); +} + +GLenum Renderer11::applyIndexBuffer(const GLvoid *indices, gl::Buffer *elementArrayBuffer, GLsizei count, GLenum mode, GLenum type, TranslatedIndexData *indexInfo) +{ + GLenum err = mIndexDataManager->prepareIndexData(type, count, elementArrayBuffer, indices, indexInfo); + + if (err == GL_NO_ERROR) + { + if (indexInfo->storage) + { + if (indexInfo->serial != mAppliedStorageIBSerial || indexInfo->startOffset != mAppliedIBOffset) + { + BufferStorage11 *storage = BufferStorage11::makeBufferStorage11(indexInfo->storage); + IndexBuffer11* indexBuffer = IndexBuffer11::makeIndexBuffer11(indexInfo->indexBuffer); + + mDeviceContext->IASetIndexBuffer(storage->getBuffer(), indexBuffer->getIndexFormat(), indexInfo->startOffset); + + mAppliedIBSerial = 0; + mAppliedStorageIBSerial = storage->getSerial(); + mAppliedIBOffset = indexInfo->startOffset; + } + } + else if (indexInfo->serial != mAppliedIBSerial || indexInfo->startOffset != mAppliedIBOffset) + { + IndexBuffer11* indexBuffer = IndexBuffer11::makeIndexBuffer11(indexInfo->indexBuffer); + + mDeviceContext->IASetIndexBuffer(indexBuffer->getBuffer(), indexBuffer->getIndexFormat(), indexInfo->startOffset); + + mAppliedIBSerial = indexInfo->serial; + mAppliedStorageIBSerial = 0; + mAppliedIBOffset = indexInfo->startOffset; + } + } + + return err; +} + +void Renderer11::drawArrays(GLenum mode, GLsizei count, GLsizei instances) +{ + if (mode == GL_LINE_LOOP) + { + drawLineLoop(count, GL_NONE, NULL, 0, NULL); + } + else if (mode == GL_TRIANGLE_FAN) + { + drawTriangleFan(count, GL_NONE, NULL, 0, NULL, instances); + } + else if (instances > 0) + { + mDeviceContext->DrawInstanced(count, instances, 0, 0); + } + else + { + mDeviceContext->Draw(count, 0); + } +} + +void Renderer11::drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, gl::Buffer *elementArrayBuffer, const TranslatedIndexData &indexInfo, GLsizei instances) +{ + if (mode == GL_LINE_LOOP) + { + drawLineLoop(count, type, indices, indexInfo.minIndex, elementArrayBuffer); + } + else if (mode == GL_TRIANGLE_FAN) + { + drawTriangleFan(count, type, indices, indexInfo.minIndex, elementArrayBuffer, instances); + } + else if (instances > 0) + { + mDeviceContext->DrawIndexedInstanced(count, instances, 0, -static_cast(indexInfo.minIndex), 0); + } + else + { + mDeviceContext->DrawIndexed(count, 0, -static_cast(indexInfo.minIndex)); + } +} + +void Renderer11::drawLineLoop(GLsizei count, GLenum type, const GLvoid *indices, int minIndex, gl::Buffer *elementArrayBuffer) +{ + // Get the raw indices for an indexed draw + if (type != GL_NONE && elementArrayBuffer) + { + gl::Buffer *indexBuffer = elementArrayBuffer; + BufferStorage *storage = indexBuffer->getStorage(); + intptr_t offset = reinterpret_cast(indices); + indices = static_cast(storage->getData()) + offset; + } + + if (!mLineLoopIB) + { + mLineLoopIB = new StreamingIndexBufferInterface(this); + if (!mLineLoopIB->reserveBufferSpace(INITIAL_INDEX_BUFFER_SIZE, GL_UNSIGNED_INT)) + { + delete mLineLoopIB; + mLineLoopIB = NULL; + + ERR("Could not create a 32-bit looping index buffer for GL_LINE_LOOP."); + return gl::error(GL_OUT_OF_MEMORY); + } + } + + if (static_cast(count + 1) > (std::numeric_limits::max() / sizeof(unsigned int))) + { + ERR("Could not create a 32-bit looping index buffer for GL_LINE_LOOP, too many indices required."); + return gl::error(GL_OUT_OF_MEMORY); + } + + const unsigned int spaceNeeded = (count + 1) * sizeof(unsigned int); + if (!mLineLoopIB->reserveBufferSpace(spaceNeeded, GL_UNSIGNED_INT)) + { + ERR("Could not reserve enough space in looping index buffer for GL_LINE_LOOP."); + return gl::error(GL_OUT_OF_MEMORY); + } + + void* mappedMemory = NULL; + int offset = mLineLoopIB->mapBuffer(spaceNeeded, &mappedMemory); + if (offset == -1 || mappedMemory == NULL) + { + ERR("Could not map index buffer for GL_LINE_LOOP."); + return gl::error(GL_OUT_OF_MEMORY); + } + + unsigned int *data = reinterpret_cast(mappedMemory); + unsigned int indexBufferOffset = static_cast(offset); + + switch (type) + { + case GL_NONE: // Non-indexed draw + for (int i = 0; i < count; i++) + { + data[i] = i; + } + data[count] = 0; + break; + case GL_UNSIGNED_BYTE: + for (int i = 0; i < count; i++) + { + data[i] = static_cast(indices)[i]; + } + data[count] = static_cast(indices)[0]; + break; + case GL_UNSIGNED_SHORT: + for (int i = 0; i < count; i++) + { + data[i] = static_cast(indices)[i]; + } + data[count] = static_cast(indices)[0]; + break; + case GL_UNSIGNED_INT: + for (int i = 0; i < count; i++) + { + data[i] = static_cast(indices)[i]; + } + data[count] = static_cast(indices)[0]; + break; + default: UNREACHABLE(); + } + + if (!mLineLoopIB->unmapBuffer()) + { + ERR("Could not unmap index buffer for GL_LINE_LOOP."); + return gl::error(GL_OUT_OF_MEMORY); + } + + if (mAppliedIBSerial != mLineLoopIB->getSerial() || mAppliedIBOffset != indexBufferOffset) + { + IndexBuffer11 *indexBuffer = IndexBuffer11::makeIndexBuffer11(mLineLoopIB->getIndexBuffer()); + + mDeviceContext->IASetIndexBuffer(indexBuffer->getBuffer(), indexBuffer->getIndexFormat(), indexBufferOffset); + mAppliedIBSerial = mLineLoopIB->getSerial(); + mAppliedStorageIBSerial = 0; + mAppliedIBOffset = indexBufferOffset; + } + + mDeviceContext->DrawIndexed(count + 1, 0, -minIndex); +} + +void Renderer11::drawTriangleFan(GLsizei count, GLenum type, const GLvoid *indices, int minIndex, gl::Buffer *elementArrayBuffer, int instances) +{ + // Get the raw indices for an indexed draw + if (type != GL_NONE && elementArrayBuffer) + { + gl::Buffer *indexBuffer = elementArrayBuffer; + BufferStorage *storage = indexBuffer->getStorage(); + intptr_t offset = reinterpret_cast(indices); + indices = static_cast(storage->getData()) + offset; + } + + if (!mTriangleFanIB) + { + mTriangleFanIB = new StreamingIndexBufferInterface(this); + if (!mTriangleFanIB->reserveBufferSpace(INITIAL_INDEX_BUFFER_SIZE, GL_UNSIGNED_INT)) + { + delete mTriangleFanIB; + mTriangleFanIB = NULL; + + ERR("Could not create a scratch index buffer for GL_TRIANGLE_FAN."); + return gl::error(GL_OUT_OF_MEMORY); + } + } + + const unsigned int numTris = count - 2; + + if (numTris * 3 > (std::numeric_limits::max() / sizeof(unsigned int))) + { + ERR("Could not create a scratch index buffer for GL_TRIANGLE_FAN, too many indices required."); + return gl::error(GL_OUT_OF_MEMORY); + } + + const unsigned int spaceNeeded = (numTris * 3) * sizeof(unsigned int); + if (!mTriangleFanIB->reserveBufferSpace(spaceNeeded, GL_UNSIGNED_INT)) + { + ERR("Could not reserve enough space in scratch index buffer for GL_TRIANGLE_FAN."); + return gl::error(GL_OUT_OF_MEMORY); + } + + void* mappedMemory = NULL; + int offset = mTriangleFanIB->mapBuffer(spaceNeeded, &mappedMemory); + if (offset == -1 || mappedMemory == NULL) + { + ERR("Could not map scratch index buffer for GL_TRIANGLE_FAN."); + return gl::error(GL_OUT_OF_MEMORY); + } + + unsigned int *data = reinterpret_cast(mappedMemory); + unsigned int indexBufferOffset = static_cast(offset); + + switch (type) + { + case GL_NONE: // Non-indexed draw + for (unsigned int i = 0; i < numTris; i++) + { + data[i*3 + 0] = 0; + data[i*3 + 1] = i + 1; + data[i*3 + 2] = i + 2; + } + break; + case GL_UNSIGNED_BYTE: + for (unsigned int i = 0; i < numTris; i++) + { + data[i*3 + 0] = static_cast(indices)[0]; + data[i*3 + 1] = static_cast(indices)[i + 1]; + data[i*3 + 2] = static_cast(indices)[i + 2]; + } + break; + case GL_UNSIGNED_SHORT: + for (unsigned int i = 0; i < numTris; i++) + { + data[i*3 + 0] = static_cast(indices)[0]; + data[i*3 + 1] = static_cast(indices)[i + 1]; + data[i*3 + 2] = static_cast(indices)[i + 2]; + } + break; + case GL_UNSIGNED_INT: + for (unsigned int i = 0; i < numTris; i++) + { + data[i*3 + 0] = static_cast(indices)[0]; + data[i*3 + 1] = static_cast(indices)[i + 1]; + data[i*3 + 2] = static_cast(indices)[i + 2]; + } + break; + default: UNREACHABLE(); + } + + if (!mTriangleFanIB->unmapBuffer()) + { + ERR("Could not unmap scratch index buffer for GL_TRIANGLE_FAN."); + return gl::error(GL_OUT_OF_MEMORY); + } + + if (mAppliedIBSerial != mTriangleFanIB->getSerial() || mAppliedIBOffset != indexBufferOffset) + { + IndexBuffer11 *indexBuffer = IndexBuffer11::makeIndexBuffer11(mTriangleFanIB->getIndexBuffer()); + + mDeviceContext->IASetIndexBuffer(indexBuffer->getBuffer(), indexBuffer->getIndexFormat(), indexBufferOffset); + mAppliedIBSerial = mTriangleFanIB->getSerial(); + mAppliedStorageIBSerial = 0; + mAppliedIBOffset = indexBufferOffset; + } + + if (instances > 0) + { + mDeviceContext->DrawIndexedInstanced(numTris * 3, instances, 0, -minIndex, 0); + } + else + { + mDeviceContext->DrawIndexed(numTris * 3, 0, -minIndex); + } +} + +void Renderer11::applyShaders(gl::ProgramBinary *programBinary) +{ + unsigned int programBinarySerial = programBinary->getSerial(); + const bool updateProgramState = (programBinarySerial != mAppliedProgramBinarySerial); + + if (updateProgramState) + { + ShaderExecutable *vertexExe = programBinary->getVertexExecutable(); + ShaderExecutable *pixelExe = programBinary->getPixelExecutable(); + + ID3D11VertexShader *vertexShader = NULL; + if (vertexExe) vertexShader = ShaderExecutable11::makeShaderExecutable11(vertexExe)->getVertexShader(); + + ID3D11PixelShader *pixelShader = NULL; + if (pixelExe) pixelShader = ShaderExecutable11::makeShaderExecutable11(pixelExe)->getPixelShader(); + + mDeviceContext->PSSetShader(pixelShader, NULL, 0); + mDeviceContext->VSSetShader(vertexShader, NULL, 0); + + programBinary->dirtyAllUniforms(); + + mAppliedProgramBinarySerial = programBinarySerial; + } + + // Only use the geometry shader currently for point sprite drawing + const bool usesGeometryShader = (programBinary->usesGeometryShader() && mCurRasterState.pointDrawMode); + + if (updateProgramState || usesGeometryShader != mIsGeometryShaderActive) + { + if (usesGeometryShader) + { + ShaderExecutable *geometryExe = programBinary->getGeometryExecutable(); + ID3D11GeometryShader *geometryShader = ShaderExecutable11::makeShaderExecutable11(geometryExe)->getGeometryShader(); + mDeviceContext->GSSetShader(geometryShader, NULL, 0); + } + else + { + mDeviceContext->GSSetShader(NULL, NULL, 0); + } + + mIsGeometryShaderActive = usesGeometryShader; + } +} + +void Renderer11::applyUniforms(gl::ProgramBinary *programBinary, gl::UniformArray *uniformArray) +{ + ShaderExecutable11 *vertexExecutable = ShaderExecutable11::makeShaderExecutable11(programBinary->getVertexExecutable()); + ShaderExecutable11 *pixelExecutable = ShaderExecutable11::makeShaderExecutable11(programBinary->getPixelExecutable()); + + unsigned int totalRegisterCountVS = 0; + unsigned int totalRegisterCountPS = 0; + + bool vertexUniformsDirty = false; + bool pixelUniformsDirty = false; + + for (gl::UniformArray::const_iterator uniform_iterator = uniformArray->begin(); uniform_iterator != uniformArray->end(); uniform_iterator++) + { + const gl::Uniform *uniform = *uniform_iterator; + + if (uniform->vsRegisterIndex >= 0) + { + totalRegisterCountVS += uniform->registerCount; + vertexUniformsDirty = vertexUniformsDirty || uniform->dirty; + } + + if (uniform->psRegisterIndex >= 0) + { + totalRegisterCountPS += uniform->registerCount; + pixelUniformsDirty = pixelUniformsDirty || uniform->dirty; + } + } + + ID3D11Buffer *vertexConstantBuffer = vertexExecutable->getConstantBuffer(mDevice, totalRegisterCountVS); + ID3D11Buffer *pixelConstantBuffer = pixelExecutable->getConstantBuffer(mDevice, totalRegisterCountPS); + + float (*mapVS)[4] = NULL; + float (*mapPS)[4] = NULL; + + if (totalRegisterCountVS > 0 && vertexUniformsDirty) + { + D3D11_MAPPED_SUBRESOURCE map = {0}; + HRESULT result = mDeviceContext->Map(vertexConstantBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &map); + ASSERT(SUCCEEDED(result)); + mapVS = (float(*)[4])map.pData; + } + + if (totalRegisterCountPS > 0 && pixelUniformsDirty) + { + D3D11_MAPPED_SUBRESOURCE map = {0}; + HRESULT result = mDeviceContext->Map(pixelConstantBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &map); + ASSERT(SUCCEEDED(result)); + mapPS = (float(*)[4])map.pData; + } + + for (gl::UniformArray::iterator uniform_iterator = uniformArray->begin(); uniform_iterator != uniformArray->end(); uniform_iterator++) + { + gl::Uniform *uniform = *uniform_iterator; + + if (uniform->type != GL_SAMPLER_2D && uniform->type != GL_SAMPLER_CUBE) + { + if (uniform->vsRegisterIndex >= 0 && mapVS) + { + memcpy(mapVS + uniform->vsRegisterIndex, uniform->data, uniform->registerCount * sizeof(float[4])); + } + + if (uniform->psRegisterIndex >= 0 && mapPS) + { + memcpy(mapPS + uniform->psRegisterIndex, uniform->data, uniform->registerCount * sizeof(float[4])); + } + } + + uniform->dirty = false; + } + + if (mapVS) + { + mDeviceContext->Unmap(vertexConstantBuffer, 0); + } + + if (mapPS) + { + mDeviceContext->Unmap(pixelConstantBuffer, 0); + } + + mDeviceContext->VSSetConstantBuffers(0, 1, &vertexConstantBuffer); + mDeviceContext->PSSetConstantBuffers(0, 1, &pixelConstantBuffer); + + // Driver uniforms + if (!mDriverConstantBufferVS) + { + D3D11_BUFFER_DESC constantBufferDescription = {0}; + constantBufferDescription.ByteWidth = sizeof(dx_VertexConstants); + constantBufferDescription.Usage = D3D11_USAGE_DEFAULT; + constantBufferDescription.BindFlags = D3D11_BIND_CONSTANT_BUFFER; + constantBufferDescription.CPUAccessFlags = 0; + constantBufferDescription.MiscFlags = 0; + constantBufferDescription.StructureByteStride = 0; + + HRESULT result = mDevice->CreateBuffer(&constantBufferDescription, NULL, &mDriverConstantBufferVS); + ASSERT(SUCCEEDED(result)); + + mDeviceContext->VSSetConstantBuffers(1, 1, &mDriverConstantBufferVS); + } + + if (!mDriverConstantBufferPS) + { + D3D11_BUFFER_DESC constantBufferDescription = {0}; + constantBufferDescription.ByteWidth = sizeof(dx_PixelConstants); + constantBufferDescription.Usage = D3D11_USAGE_DEFAULT; + constantBufferDescription.BindFlags = D3D11_BIND_CONSTANT_BUFFER; + constantBufferDescription.CPUAccessFlags = 0; + constantBufferDescription.MiscFlags = 0; + constantBufferDescription.StructureByteStride = 0; + + HRESULT result = mDevice->CreateBuffer(&constantBufferDescription, NULL, &mDriverConstantBufferPS); + ASSERT(SUCCEEDED(result)); + + mDeviceContext->PSSetConstantBuffers(1, 1, &mDriverConstantBufferPS); + } + + if (memcmp(&mVertexConstants, &mAppliedVertexConstants, sizeof(dx_VertexConstants)) != 0) + { + mDeviceContext->UpdateSubresource(mDriverConstantBufferVS, 0, NULL, &mVertexConstants, 16, 0); + memcpy(&mAppliedVertexConstants, &mVertexConstants, sizeof(dx_VertexConstants)); + } + + if (memcmp(&mPixelConstants, &mAppliedPixelConstants, sizeof(dx_PixelConstants)) != 0) + { + mDeviceContext->UpdateSubresource(mDriverConstantBufferPS, 0, NULL, &mPixelConstants, 16, 0); + memcpy(&mAppliedPixelConstants, &mPixelConstants, sizeof(dx_PixelConstants)); + } + + // needed for the point sprite geometry shader + mDeviceContext->GSSetConstantBuffers(0, 1, &mDriverConstantBufferPS); +} + +void Renderer11::clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer) +{ + bool alphaUnmasked = (gl::GetAlphaSize(mRenderTargetDesc.format) == 0) || clearParams.colorMaskAlpha; + bool needMaskedColorClear = (clearParams.mask & GL_COLOR_BUFFER_BIT) && + !(clearParams.colorMaskRed && clearParams.colorMaskGreen && + clearParams.colorMaskBlue && alphaUnmasked); + + unsigned int stencilUnmasked = 0x0; + if (frameBuffer->hasStencil()) + { + unsigned int stencilSize = gl::GetStencilSize(frameBuffer->getStencilbuffer()->getActualFormat()); + stencilUnmasked = (0x1 << stencilSize) - 1; + } + bool needMaskedStencilClear = (clearParams.mask & GL_STENCIL_BUFFER_BIT) && + (clearParams.stencilWriteMask & stencilUnmasked) != stencilUnmasked; + + bool needScissoredClear = mScissorEnabled && (mCurScissor.x > 0 || mCurScissor.y > 0 || + mCurScissor.x + mCurScissor.width < mRenderTargetDesc.width || + mCurScissor.y + mCurScissor.height < mRenderTargetDesc.height); + + if (needMaskedColorClear || needMaskedStencilClear || needScissoredClear) + { + maskedClear(clearParams, frameBuffer->usingExtendedDrawBuffers()); + } + else + { + if (clearParams.mask & GL_COLOR_BUFFER_BIT) + { + for (unsigned int colorAttachment = 0; colorAttachment < gl::IMPLEMENTATION_MAX_DRAW_BUFFERS; colorAttachment++) + { + if (frameBuffer->isEnabledColorAttachment(colorAttachment)) + { + gl::Renderbuffer *renderbufferObject = frameBuffer->getColorbuffer(colorAttachment); + if (renderbufferObject) + { + RenderTarget11 *renderTarget = RenderTarget11::makeRenderTarget11(renderbufferObject->getRenderTarget()); + if (!renderTarget) + { + ERR("render target pointer unexpectedly null."); + return; + } + + ID3D11RenderTargetView *framebufferRTV = renderTarget->getRenderTargetView(); + if (!framebufferRTV) + { + ERR("render target view pointer unexpectedly null."); + return; + } + + const float clearValues[4] = { clearParams.colorClearValue.red, + clearParams.colorClearValue.green, + clearParams.colorClearValue.blue, + clearParams.colorClearValue.alpha }; + mDeviceContext->ClearRenderTargetView(framebufferRTV, clearValues); + + framebufferRTV->Release(); + } + } + } + } + if (clearParams.mask & GL_DEPTH_BUFFER_BIT || clearParams.mask & GL_STENCIL_BUFFER_BIT) + { + gl::Renderbuffer *renderbufferObject = frameBuffer->getDepthOrStencilbuffer(); + if (renderbufferObject) + { + RenderTarget11 *renderTarget = RenderTarget11::makeRenderTarget11(renderbufferObject->getDepthStencil()); + if (!renderTarget) + { + ERR("render target pointer unexpectedly null."); + return; + } + + ID3D11DepthStencilView *framebufferDSV = renderTarget->getDepthStencilView(); + if (!framebufferDSV) + { + ERR("depth stencil view pointer unexpectedly null."); + return; + } + + UINT clearFlags = 0; + if (clearParams.mask & GL_DEPTH_BUFFER_BIT) + { + clearFlags |= D3D11_CLEAR_DEPTH; + } + if (clearParams.mask & GL_STENCIL_BUFFER_BIT) + { + clearFlags |= D3D11_CLEAR_STENCIL; + } + + float depthClear = gl::clamp01(clearParams.depthClearValue); + UINT8 stencilClear = clearParams.stencilClearValue & 0x000000FF; + + mDeviceContext->ClearDepthStencilView(framebufferDSV, clearFlags, depthClear, stencilClear); + + framebufferDSV->Release(); + } + } + } +} + +void Renderer11::maskedClear(const gl::ClearParameters &clearParams, bool usingExtendedDrawBuffers) +{ + HRESULT result; + + if (!mClearResourcesInitialized) + { + ASSERT(!mClearVB && !mClearVS && !mClearSinglePS && !mClearMultiplePS && !mClearScissorRS && !mClearNoScissorRS); + + D3D11_BUFFER_DESC vbDesc; + vbDesc.ByteWidth = sizeof(d3d11::PositionDepthColorVertex) * 4; + vbDesc.Usage = D3D11_USAGE_DYNAMIC; + vbDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER; + vbDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + vbDesc.MiscFlags = 0; + vbDesc.StructureByteStride = 0; + + result = mDevice->CreateBuffer(&vbDesc, NULL, &mClearVB); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mClearVB, "Renderer11 masked clear vertex buffer"); + + D3D11_INPUT_ELEMENT_DESC quadLayout[] = + { + { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, + { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 }, + }; + + result = mDevice->CreateInputLayout(quadLayout, 2, g_VS_Clear, sizeof(g_VS_Clear), &mClearIL); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mClearIL, "Renderer11 masked clear input layout"); + + result = mDevice->CreateVertexShader(g_VS_Clear, sizeof(g_VS_Clear), NULL, &mClearVS); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mClearVS, "Renderer11 masked clear vertex shader"); + + result = mDevice->CreatePixelShader(g_PS_ClearSingle, sizeof(g_PS_ClearSingle), NULL, &mClearSinglePS); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mClearSinglePS, "Renderer11 masked clear pixel shader (1 RT)"); + + result = mDevice->CreatePixelShader(g_PS_ClearMultiple, sizeof(g_PS_ClearMultiple), NULL, &mClearMultiplePS); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mClearMultiplePS, "Renderer11 masked clear pixel shader (MRT)"); + + D3D11_RASTERIZER_DESC rsScissorDesc; + rsScissorDesc.FillMode = D3D11_FILL_SOLID; + rsScissorDesc.CullMode = D3D11_CULL_NONE; + rsScissorDesc.FrontCounterClockwise = FALSE; + rsScissorDesc.DepthBias = 0; + rsScissorDesc.DepthBiasClamp = 0.0f; + rsScissorDesc.SlopeScaledDepthBias = 0.0f; + rsScissorDesc.DepthClipEnable = FALSE; + rsScissorDesc.ScissorEnable = TRUE; + rsScissorDesc.MultisampleEnable = FALSE; + rsScissorDesc.AntialiasedLineEnable = FALSE; + + result = mDevice->CreateRasterizerState(&rsScissorDesc, &mClearScissorRS); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mClearScissorRS, "Renderer11 masked clear scissor rasterizer state"); + + D3D11_RASTERIZER_DESC rsNoScissorDesc; + rsNoScissorDesc.FillMode = D3D11_FILL_SOLID; + rsNoScissorDesc.CullMode = D3D11_CULL_NONE; + rsNoScissorDesc.FrontCounterClockwise = FALSE; + rsNoScissorDesc.DepthBias = 0; + rsNoScissorDesc.DepthBiasClamp = 0.0f; + rsNoScissorDesc.SlopeScaledDepthBias = 0.0f; + rsNoScissorDesc.DepthClipEnable = FALSE; + rsNoScissorDesc.ScissorEnable = FALSE; + rsNoScissorDesc.MultisampleEnable = FALSE; + rsNoScissorDesc.AntialiasedLineEnable = FALSE; + + result = mDevice->CreateRasterizerState(&rsNoScissorDesc, &mClearNoScissorRS); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mClearNoScissorRS, "Renderer11 masked clear no scissor rasterizer state"); + + mClearResourcesInitialized = true; + } + + // Prepare the depth stencil state to write depth values if the depth should be cleared + // and stencil values if the stencil should be cleared + gl::DepthStencilState glDSState; + glDSState.depthTest = (clearParams.mask & GL_DEPTH_BUFFER_BIT) != 0; + glDSState.depthFunc = GL_ALWAYS; + glDSState.depthMask = (clearParams.mask & GL_DEPTH_BUFFER_BIT) != 0; + glDSState.stencilTest = (clearParams.mask & GL_STENCIL_BUFFER_BIT) != 0; + glDSState.stencilFunc = GL_ALWAYS; + glDSState.stencilMask = 0; + glDSState.stencilFail = GL_REPLACE; + glDSState.stencilPassDepthFail = GL_REPLACE; + glDSState.stencilPassDepthPass = GL_REPLACE; + glDSState.stencilWritemask = clearParams.stencilWriteMask; + glDSState.stencilBackFunc = GL_ALWAYS; + glDSState.stencilBackMask = 0; + glDSState.stencilBackFail = GL_REPLACE; + glDSState.stencilBackPassDepthFail = GL_REPLACE; + glDSState.stencilBackPassDepthPass = GL_REPLACE; + glDSState.stencilBackWritemask = clearParams.stencilWriteMask; + + int stencilClear = clearParams.stencilClearValue & 0x000000FF; + + ID3D11DepthStencilState *dsState = mStateCache.getDepthStencilState(glDSState); + + // Prepare the blend state to use a write mask if the color buffer should be cleared + gl::BlendState glBlendState; + glBlendState.blend = false; + glBlendState.sourceBlendRGB = GL_ONE; + glBlendState.destBlendRGB = GL_ZERO; + glBlendState.sourceBlendAlpha = GL_ONE; + glBlendState.destBlendAlpha = GL_ZERO; + glBlendState.blendEquationRGB = GL_FUNC_ADD; + glBlendState.blendEquationAlpha = GL_FUNC_ADD; + glBlendState.colorMaskRed = (clearParams.mask & GL_COLOR_BUFFER_BIT) ? clearParams.colorMaskRed : false; + glBlendState.colorMaskGreen = (clearParams.mask & GL_COLOR_BUFFER_BIT) ? clearParams.colorMaskGreen : false; + glBlendState.colorMaskBlue = (clearParams.mask & GL_COLOR_BUFFER_BIT) ? clearParams.colorMaskBlue : false; + glBlendState.colorMaskAlpha = (clearParams.mask & GL_COLOR_BUFFER_BIT) ? clearParams.colorMaskAlpha : false; + glBlendState.sampleAlphaToCoverage = false; + glBlendState.dither = false; + + static const float blendFactors[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; + static const UINT sampleMask = 0xFFFFFFFF; + + ID3D11BlendState *blendState = mStateCache.getBlendState(glBlendState); + + // Set the vertices + D3D11_MAPPED_SUBRESOURCE mappedResource; + result = mDeviceContext->Map(mClearVB, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource); + if (FAILED(result)) + { + ERR("Failed to map masked clear vertex buffer, HRESULT: 0x%X.", result); + return; + } + + d3d11::PositionDepthColorVertex *vertices = reinterpret_cast(mappedResource.pData); + + float depthClear = gl::clamp01(clearParams.depthClearValue); + d3d11::SetPositionDepthColorVertex(&vertices[0], -1.0f, 1.0f, depthClear, clearParams.colorClearValue); + d3d11::SetPositionDepthColorVertex(&vertices[1], -1.0f, -1.0f, depthClear, clearParams.colorClearValue); + d3d11::SetPositionDepthColorVertex(&vertices[2], 1.0f, 1.0f, depthClear, clearParams.colorClearValue); + d3d11::SetPositionDepthColorVertex(&vertices[3], 1.0f, -1.0f, depthClear, clearParams.colorClearValue); + + mDeviceContext->Unmap(mClearVB, 0); + + // Apply state + mDeviceContext->OMSetBlendState(blendState, blendFactors, sampleMask); + mDeviceContext->OMSetDepthStencilState(dsState, stencilClear); + mDeviceContext->RSSetState(mScissorEnabled ? mClearScissorRS : mClearNoScissorRS); + + // Apply shaders + ID3D11PixelShader *pixelShader = usingExtendedDrawBuffers ? mClearMultiplePS : mClearSinglePS; + + mDeviceContext->IASetInputLayout(mClearIL); + mDeviceContext->VSSetShader(mClearVS, NULL, 0); + mDeviceContext->PSSetShader(pixelShader, NULL, 0); + mDeviceContext->GSSetShader(NULL, NULL, 0); + + // Apply vertex buffer + static UINT stride = sizeof(d3d11::PositionDepthColorVertex); + static UINT startIdx = 0; + mDeviceContext->IASetVertexBuffers(0, 1, &mClearVB, &stride, &startIdx); + mDeviceContext->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); + + // Draw the clear quad + mDeviceContext->Draw(4, 0); + + // Clean up + markAllStateDirty(); +} + +void Renderer11::markAllStateDirty() +{ + for (unsigned int rtIndex = 0; rtIndex < gl::IMPLEMENTATION_MAX_DRAW_BUFFERS; rtIndex++) + { + mAppliedRenderTargetSerials[rtIndex] = 0; + } + mAppliedDepthbufferSerial = 0; + mAppliedStencilbufferSerial = 0; + mDepthStencilInitialized = false; + mRenderTargetDescInitialized = false; + + for (int i = 0; i < gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS; i++) + { + mForceSetVertexSamplerStates[i] = true; + mCurVertexTextureSerials[i] = 0; + } + for (int i = 0; i < gl::MAX_TEXTURE_IMAGE_UNITS; i++) + { + mForceSetPixelSamplerStates[i] = true; + mCurPixelTextureSerials[i] = 0; + } + + mForceSetBlendState = true; + mForceSetRasterState = true; + mForceSetDepthStencilState = true; + mForceSetScissor = true; + mForceSetViewport = true; + + mAppliedIBSerial = 0; + mAppliedStorageIBSerial = 0; + mAppliedIBOffset = 0; + + mAppliedProgramBinarySerial = 0; + memset(&mAppliedVertexConstants, 0, sizeof(dx_VertexConstants)); + memset(&mAppliedPixelConstants, 0, sizeof(dx_PixelConstants)); +} + +void Renderer11::releaseDeviceResources() +{ + mStateCache.clear(); + mInputLayoutCache.clear(); + + delete mVertexDataManager; + mVertexDataManager = NULL; + + delete mIndexDataManager; + mIndexDataManager = NULL; + + delete mLineLoopIB; + mLineLoopIB = NULL; + + delete mTriangleFanIB; + mTriangleFanIB = NULL; + + SafeRelease(mCopyVB); + SafeRelease(mCopySampler); + SafeRelease(mCopyIL); + SafeRelease(mCopyIL); + SafeRelease(mCopyVS); + SafeRelease(mCopyRGBAPS); + SafeRelease(mCopyRGBPS); + SafeRelease(mCopyLumPS); + SafeRelease(mCopyLumAlphaPS); + + mCopyResourcesInitialized = false; + + SafeRelease(mClearVB); + SafeRelease(mClearIL); + SafeRelease(mClearVS); + SafeRelease(mClearSinglePS); + SafeRelease(mClearMultiplePS); + SafeRelease(mClearScissorRS); + SafeRelease(mClearNoScissorRS); + + mClearResourcesInitialized = false; + + SafeRelease(mDriverConstantBufferVS); + SafeRelease(mDriverConstantBufferPS); + SafeRelease(mSyncQuery); +} + +void Renderer11::notifyDeviceLost() +{ + mDeviceLost = true; + mDisplay->notifyDeviceLost(); +} + +bool Renderer11::isDeviceLost() +{ + return mDeviceLost; +} + +// set notify to true to broadcast a message to all contexts of the device loss +bool Renderer11::testDeviceLost(bool notify) +{ + bool isLost = false; + + // GetRemovedReason is used to test if the device is removed + HRESULT result = mDevice->GetDeviceRemovedReason(); + isLost = d3d11::isDeviceLostError(result); + + if (isLost) + { + // Log error if this is a new device lost event + if (mDeviceLost == false) + { + ERR("The D3D11 device was removed: 0x%08X", result); + } + + // ensure we note the device loss -- + // we'll probably get this done again by notifyDeviceLost + // but best to remember it! + // Note that we don't want to clear the device loss status here + // -- this needs to be done by resetDevice + mDeviceLost = true; + if (notify) + { + notifyDeviceLost(); + } + } + + return isLost; +} + +bool Renderer11::testDeviceResettable() +{ + // determine if the device is resettable by creating a dummy device + PFN_D3D11_CREATE_DEVICE D3D11CreateDevice = (PFN_D3D11_CREATE_DEVICE)GetProcAddress(mD3d11Module, "D3D11CreateDevice"); + + if (D3D11CreateDevice == NULL) + { + return false; + } + + D3D_FEATURE_LEVEL featureLevels[] = + { + D3D_FEATURE_LEVEL_11_0, + D3D_FEATURE_LEVEL_10_1, + D3D_FEATURE_LEVEL_10_0, + }; + + ID3D11Device* dummyDevice; + D3D_FEATURE_LEVEL dummyFeatureLevel; + ID3D11DeviceContext* dummyContext; + + HRESULT result = D3D11CreateDevice(NULL, + D3D_DRIVER_TYPE_HARDWARE, + NULL, + #if defined(_DEBUG) + D3D11_CREATE_DEVICE_DEBUG, + #else + 0, + #endif + featureLevels, + ArraySize(featureLevels), + D3D11_SDK_VERSION, + &dummyDevice, + &dummyFeatureLevel, + &dummyContext); + + if (!mDevice || FAILED(result)) + { + return false; + } + + dummyContext->Release(); + dummyDevice->Release(); + + return true; +} + +void Renderer11::release() +{ + releaseDeviceResources(); + + if (mDxgiFactory) + { + mDxgiFactory->Release(); + mDxgiFactory = NULL; + } + + if (mDxgiAdapter) + { + mDxgiAdapter->Release(); + mDxgiAdapter = NULL; + } + + if (mDeviceContext) + { + mDeviceContext->ClearState(); + mDeviceContext->Flush(); + mDeviceContext->Release(); + mDeviceContext = NULL; + } + + if (mDevice) + { + mDevice->Release(); + mDevice = NULL; + } + + if (mD3d11Module) + { + FreeLibrary(mD3d11Module); + mD3d11Module = NULL; + } + + if (mDxgiModule) + { + FreeLibrary(mDxgiModule); + mDxgiModule = NULL; + } +} + +bool Renderer11::resetDevice() +{ + // recreate everything + release(); + EGLint result = initialize(); + + if (result != EGL_SUCCESS) + { + ERR("Could not reinitialize D3D11 device: %08X", result); + return false; + } + + mDeviceLost = false; + + return true; +} + +DWORD Renderer11::getAdapterVendor() const +{ + return mAdapterDescription.VendorId; +} + +std::string Renderer11::getRendererDescription() const +{ + std::ostringstream rendererString; + + rendererString << mDescription; + rendererString << " Direct3D11"; + + rendererString << " vs_" << getMajorShaderModel() << "_" << getMinorShaderModel(); + rendererString << " ps_" << getMajorShaderModel() << "_" << getMinorShaderModel(); + + return rendererString.str(); +} + +GUID Renderer11::getAdapterIdentifier() const +{ + // Use the adapter LUID as our adapter ID + // This number is local to a machine is only guaranteed to be unique between restarts + META_ASSERT(sizeof(LUID) <= sizeof(GUID)); + GUID adapterId = {0}; + memcpy(&adapterId, &mAdapterDescription.AdapterLuid, sizeof(LUID)); + return adapterId; +} + +bool Renderer11::getBGRATextureSupport() const +{ + return mBGRATextureSupport; +} + +bool Renderer11::getDXT1TextureSupport() +{ + return mDXT1TextureSupport; +} + +bool Renderer11::getDXT3TextureSupport() +{ + return mDXT3TextureSupport; +} + +bool Renderer11::getDXT5TextureSupport() +{ + return mDXT5TextureSupport; +} + +bool Renderer11::getDepthTextureSupport() const +{ + return mDepthTextureSupport; +} + +bool Renderer11::getFloat32TextureSupport(bool *filtering, bool *renderable) +{ + *renderable = mFloat32RenderSupport; + *filtering = mFloat32FilterSupport; + return mFloat32TextureSupport; +} + +bool Renderer11::getFloat16TextureSupport(bool *filtering, bool *renderable) +{ + *renderable = mFloat16RenderSupport; + *filtering = mFloat16FilterSupport; + return mFloat16TextureSupport; +} + +bool Renderer11::getLuminanceTextureSupport() +{ + return false; +} + +bool Renderer11::getLuminanceAlphaTextureSupport() +{ + return false; +} + +bool Renderer11::getTextureFilterAnisotropySupport() const +{ + return true; +} + +float Renderer11::getTextureMaxAnisotropy() const +{ + switch (mFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: + return D3D11_MAX_MAXANISOTROPY; + case D3D_FEATURE_LEVEL_10_1: + case D3D_FEATURE_LEVEL_10_0: + return D3D10_MAX_MAXANISOTROPY; + default: UNREACHABLE(); + return 0; + } +} + +bool Renderer11::getEventQuerySupport() +{ + return true; +} + +Range Renderer11::getViewportBounds() const +{ + switch (mFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: + return Range(D3D11_VIEWPORT_BOUNDS_MIN, D3D11_VIEWPORT_BOUNDS_MAX); + case D3D_FEATURE_LEVEL_10_1: + case D3D_FEATURE_LEVEL_10_0: + return Range(D3D10_VIEWPORT_BOUNDS_MIN, D3D10_VIEWPORT_BOUNDS_MAX); + default: UNREACHABLE(); + return Range(0, 0); + } +} + +unsigned int Renderer11::getMaxVertexTextureImageUnits() const +{ + META_ASSERT(MAX_TEXTURE_IMAGE_UNITS_VTF_SM4 <= gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS); + switch (mFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: + case D3D_FEATURE_LEVEL_10_1: + case D3D_FEATURE_LEVEL_10_0: + return MAX_TEXTURE_IMAGE_UNITS_VTF_SM4; + default: UNREACHABLE(); + return 0; + } +} + +unsigned int Renderer11::getMaxCombinedTextureImageUnits() const +{ + return gl::MAX_TEXTURE_IMAGE_UNITS + getMaxVertexTextureImageUnits(); +} + +unsigned int Renderer11::getReservedVertexUniformVectors() const +{ + return 0; // Driver uniforms are stored in a separate constant buffer +} + +unsigned int Renderer11::getReservedFragmentUniformVectors() const +{ + return 0; // Driver uniforms are stored in a separate constant buffer +} + +unsigned int Renderer11::getMaxVertexUniformVectors() const +{ + META_ASSERT(MAX_VERTEX_UNIFORM_VECTORS_D3D11 <= D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT); + ASSERT(mFeatureLevel >= D3D_FEATURE_LEVEL_10_0); + return MAX_VERTEX_UNIFORM_VECTORS_D3D11; +} + +unsigned int Renderer11::getMaxFragmentUniformVectors() const +{ + META_ASSERT(MAX_FRAGMENT_UNIFORM_VECTORS_D3D11 <= D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT); + ASSERT(mFeatureLevel >= D3D_FEATURE_LEVEL_10_0); + return MAX_FRAGMENT_UNIFORM_VECTORS_D3D11; +} + +unsigned int Renderer11::getMaxVaryingVectors() const +{ + META_ASSERT(gl::IMPLEMENTATION_MAX_VARYING_VECTORS == D3D11_VS_OUTPUT_REGISTER_COUNT); + switch (mFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: + return D3D11_VS_OUTPUT_REGISTER_COUNT; + case D3D_FEATURE_LEVEL_10_1: + case D3D_FEATURE_LEVEL_10_0: + return D3D10_VS_OUTPUT_REGISTER_COUNT; + default: UNREACHABLE(); + return 0; + } +} + +bool Renderer11::getNonPower2TextureSupport() const +{ + switch (mFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: + case D3D_FEATURE_LEVEL_10_1: + case D3D_FEATURE_LEVEL_10_0: + return true; + default: UNREACHABLE(); + return false; + } +} + +bool Renderer11::getOcclusionQuerySupport() const +{ + switch (mFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: + case D3D_FEATURE_LEVEL_10_1: + case D3D_FEATURE_LEVEL_10_0: + return true; + default: UNREACHABLE(); + return false; + } +} + +bool Renderer11::getInstancingSupport() const +{ + switch (mFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: + case D3D_FEATURE_LEVEL_10_1: + case D3D_FEATURE_LEVEL_10_0: + return true; + default: UNREACHABLE(); + return false; + } +} + +bool Renderer11::getShareHandleSupport() const +{ + // We only currently support share handles with BGRA surfaces, because + // chrome needs BGRA. Once chrome fixes this, we should always support them. + // PIX doesn't seem to support using share handles, so disable them. + return getBGRATextureSupport() && !gl::perfActive(); +} + +bool Renderer11::getDerivativeInstructionSupport() const +{ + switch (mFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: + case D3D_FEATURE_LEVEL_10_1: + case D3D_FEATURE_LEVEL_10_0: + return true; + default: UNREACHABLE(); + return false; + } +} + +bool Renderer11::getPostSubBufferSupport() const +{ + // D3D11 does not support present with dirty rectangles until D3D11.1 and DXGI 1.2. + return false; +} + +int Renderer11::getMajorShaderModel() const +{ + switch (mFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: return D3D11_SHADER_MAJOR_VERSION; // 5 + case D3D_FEATURE_LEVEL_10_1: return D3D10_1_SHADER_MAJOR_VERSION; // 4 + case D3D_FEATURE_LEVEL_10_0: return D3D10_SHADER_MAJOR_VERSION; // 4 + default: UNREACHABLE(); return 0; + } +} + +int Renderer11::getMinorShaderModel() const +{ + switch (mFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: return D3D11_SHADER_MINOR_VERSION; // 0 + case D3D_FEATURE_LEVEL_10_1: return D3D10_1_SHADER_MINOR_VERSION; // 1 + case D3D_FEATURE_LEVEL_10_0: return D3D10_SHADER_MINOR_VERSION; // 0 + default: UNREACHABLE(); return 0; + } +} + +float Renderer11::getMaxPointSize() const +{ + // choose a reasonable maximum. we enforce this in the shader. + // (nb: on a Radeon 2600xt, DX9 reports a 256 max point size) + return 1024.0f; +} + +int Renderer11::getMaxViewportDimension() const +{ + // Maximum viewport size must be at least as large as the largest render buffer (or larger). + // In our case return the maximum texture size, which is the maximum render buffer size. + META_ASSERT(D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION * 2 - 1 <= D3D11_VIEWPORT_BOUNDS_MAX); + META_ASSERT(D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION * 2 - 1 <= D3D10_VIEWPORT_BOUNDS_MAX); + + switch (mFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: + return D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION; // 16384 + case D3D_FEATURE_LEVEL_10_1: + case D3D_FEATURE_LEVEL_10_0: + return D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION; // 8192 + default: UNREACHABLE(); + return 0; + } +} + +int Renderer11::getMaxTextureWidth() const +{ + switch (mFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION; // 16384 + case D3D_FEATURE_LEVEL_10_1: + case D3D_FEATURE_LEVEL_10_0: return D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION; // 8192 + default: UNREACHABLE(); return 0; + } +} + +int Renderer11::getMaxTextureHeight() const +{ + switch (mFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION; // 16384 + case D3D_FEATURE_LEVEL_10_1: + case D3D_FEATURE_LEVEL_10_0: return D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION; // 8192 + default: UNREACHABLE(); return 0; + } +} + +bool Renderer11::get32BitIndexSupport() const +{ + switch (mFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: + case D3D_FEATURE_LEVEL_10_1: + case D3D_FEATURE_LEVEL_10_0: return D3D10_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP >= 32; // true + default: UNREACHABLE(); return false; + } +} + +int Renderer11::getMinSwapInterval() const +{ + return 0; +} + +int Renderer11::getMaxSwapInterval() const +{ + return 4; +} + +int Renderer11::getMaxSupportedSamples() const +{ + return mMaxSupportedSamples; +} + +int Renderer11::getNearestSupportedSamples(DXGI_FORMAT format, unsigned int requested) const +{ + if (requested == 0) + { + return 0; + } + + MultisampleSupportMap::const_iterator iter = mMultisampleSupportMap.find(format); + if (iter != mMultisampleSupportMap.end()) + { + const MultisampleSupportInfo& info = iter->second; + for (unsigned int i = requested - 1; i < D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT; i++) + { + if (info.qualityLevels[i] > 0) + { + return i + 1; + } + } + } + + return -1; +} + +unsigned int Renderer11::getMaxRenderTargets() const +{ + META_ASSERT(D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT <= gl::IMPLEMENTATION_MAX_DRAW_BUFFERS); + META_ASSERT(D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT <= gl::IMPLEMENTATION_MAX_DRAW_BUFFERS); + + switch (mFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: + return D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT; // 8 + case D3D_FEATURE_LEVEL_10_1: + case D3D_FEATURE_LEVEL_10_0: + return D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT; // 8 + default: + UNREACHABLE(); + return 1; + } +} + +bool Renderer11::copyToRenderTarget(TextureStorageInterface2D *dest, TextureStorageInterface2D *source) +{ + if (source && dest) + { + TextureStorage11_2D *source11 = TextureStorage11_2D::makeTextureStorage11_2D(source->getStorageInstance()); + TextureStorage11_2D *dest11 = TextureStorage11_2D::makeTextureStorage11_2D(dest->getStorageInstance()); + + mDeviceContext->CopyResource(dest11->getBaseTexture(), source11->getBaseTexture()); + return true; + } + + return false; +} + +bool Renderer11::copyToRenderTarget(TextureStorageInterfaceCube *dest, TextureStorageInterfaceCube *source) +{ + if (source && dest) + { + TextureStorage11_Cube *source11 = TextureStorage11_Cube::makeTextureStorage11_Cube(source->getStorageInstance()); + TextureStorage11_Cube *dest11 = TextureStorage11_Cube::makeTextureStorage11_Cube(dest->getStorageInstance()); + + mDeviceContext->CopyResource(dest11->getBaseTexture(), source11->getBaseTexture()); + return true; + } + + return false; +} + +bool Renderer11::copyImage(gl::Framebuffer *framebuffer, const gl::Rectangle &sourceRect, GLenum destFormat, + GLint xoffset, GLint yoffset, TextureStorageInterface2D *storage, GLint level) +{ + gl::Renderbuffer *colorbuffer = framebuffer->getReadColorbuffer(); + if (!colorbuffer) + { + ERR("Failed to retrieve the color buffer from the frame buffer."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + RenderTarget11 *sourceRenderTarget = RenderTarget11::makeRenderTarget11(colorbuffer->getRenderTarget()); + if (!sourceRenderTarget) + { + ERR("Failed to retrieve the render target from the frame buffer."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + ID3D11ShaderResourceView *source = sourceRenderTarget->getShaderResourceView(); + if (!source) + { + ERR("Failed to retrieve the render target view from the render target."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + TextureStorage11_2D *storage11 = TextureStorage11_2D::makeTextureStorage11_2D(storage->getStorageInstance()); + if (!storage11) + { + source->Release(); + ERR("Failed to retrieve the texture storage from the destination."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + RenderTarget11 *destRenderTarget = RenderTarget11::makeRenderTarget11(storage11->getRenderTarget(level)); + if (!destRenderTarget) + { + source->Release(); + ERR("Failed to retrieve the render target from the destination storage."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + ID3D11RenderTargetView *dest = destRenderTarget->getRenderTargetView(); + if (!dest) + { + source->Release(); + ERR("Failed to retrieve the render target view from the destination render target."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + gl::Rectangle destRect; + destRect.x = xoffset; + destRect.y = yoffset; + destRect.width = sourceRect.width; + destRect.height = sourceRect.height; + + bool ret = copyTexture(source, sourceRect, sourceRenderTarget->getWidth(), sourceRenderTarget->getHeight(), + dest, destRect, destRenderTarget->getWidth(), destRenderTarget->getHeight(), destFormat); + + source->Release(); + dest->Release(); + + return ret; +} + +bool Renderer11::copyImage(gl::Framebuffer *framebuffer, const gl::Rectangle &sourceRect, GLenum destFormat, + GLint xoffset, GLint yoffset, TextureStorageInterfaceCube *storage, GLenum target, GLint level) +{ + gl::Renderbuffer *colorbuffer = framebuffer->getReadColorbuffer(); + if (!colorbuffer) + { + ERR("Failed to retrieve the color buffer from the frame buffer."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + RenderTarget11 *sourceRenderTarget = RenderTarget11::makeRenderTarget11(colorbuffer->getRenderTarget()); + if (!sourceRenderTarget) + { + ERR("Failed to retrieve the render target from the frame buffer."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + ID3D11ShaderResourceView *source = sourceRenderTarget->getShaderResourceView(); + if (!source) + { + ERR("Failed to retrieve the render target view from the render target."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + TextureStorage11_Cube *storage11 = TextureStorage11_Cube::makeTextureStorage11_Cube(storage->getStorageInstance()); + if (!storage11) + { + source->Release(); + ERR("Failed to retrieve the texture storage from the destination."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + RenderTarget11 *destRenderTarget = RenderTarget11::makeRenderTarget11(storage11->getRenderTarget(target, level)); + if (!destRenderTarget) + { + source->Release(); + ERR("Failed to retrieve the render target from the destination storage."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + ID3D11RenderTargetView *dest = destRenderTarget->getRenderTargetView(); + if (!dest) + { + source->Release(); + ERR("Failed to retrieve the render target view from the destination render target."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + gl::Rectangle destRect; + destRect.x = xoffset; + destRect.y = yoffset; + destRect.width = sourceRect.width; + destRect.height = sourceRect.height; + + bool ret = copyTexture(source, sourceRect, sourceRenderTarget->getWidth(), sourceRenderTarget->getHeight(), + dest, destRect, destRenderTarget->getWidth(), destRenderTarget->getHeight(), destFormat); + + source->Release(); + dest->Release(); + + return ret; +} + +bool Renderer11::copyTexture(ID3D11ShaderResourceView *source, const gl::Rectangle &sourceArea, unsigned int sourceWidth, unsigned int sourceHeight, + ID3D11RenderTargetView *dest, const gl::Rectangle &destArea, unsigned int destWidth, unsigned int destHeight, GLenum destFormat) +{ + HRESULT result; + + if (!mCopyResourcesInitialized) + { + ASSERT(!mCopyVB && !mCopySampler && !mCopyIL && !mCopyVS && !mCopyRGBAPS && !mCopyRGBPS && !mCopyLumPS && !mCopyLumAlphaPS); + + D3D11_BUFFER_DESC vbDesc; + vbDesc.ByteWidth = sizeof(d3d11::PositionTexCoordVertex) * 4; + vbDesc.Usage = D3D11_USAGE_DYNAMIC; + vbDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER; + vbDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + vbDesc.MiscFlags = 0; + vbDesc.StructureByteStride = 0; + + result = mDevice->CreateBuffer(&vbDesc, NULL, &mCopyVB); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mCopyVB, "Renderer11 copy texture vertex buffer"); + + D3D11_SAMPLER_DESC samplerDesc; + samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR; + samplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP; + samplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP; + samplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP; + samplerDesc.MipLODBias = 0.0f; + samplerDesc.MaxAnisotropy = 0; + samplerDesc.ComparisonFunc = D3D11_COMPARISON_NEVER; + samplerDesc.BorderColor[0] = 0.0f; + samplerDesc.BorderColor[1] = 0.0f; + samplerDesc.BorderColor[2] = 0.0f; + samplerDesc.BorderColor[3] = 0.0f; + samplerDesc.MinLOD = 0.0f; + samplerDesc.MaxLOD = 0.0f; + + result = mDevice->CreateSamplerState(&samplerDesc, &mCopySampler); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mCopySampler, "Renderer11 copy sampler"); + + D3D11_INPUT_ELEMENT_DESC quadLayout[] = + { + { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, + { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 8, D3D11_INPUT_PER_VERTEX_DATA, 0 }, + }; + + result = mDevice->CreateInputLayout(quadLayout, 2, g_VS_Passthrough, sizeof(g_VS_Passthrough), &mCopyIL); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mCopyIL, "Renderer11 copy texture input layout"); + + result = mDevice->CreateVertexShader(g_VS_Passthrough, sizeof(g_VS_Passthrough), NULL, &mCopyVS); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mCopyVS, "Renderer11 copy texture vertex shader"); + + result = mDevice->CreatePixelShader(g_PS_PassthroughRGBA, sizeof(g_PS_PassthroughRGBA), NULL, &mCopyRGBAPS); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mCopyRGBAPS, "Renderer11 copy texture RGBA pixel shader"); + + result = mDevice->CreatePixelShader(g_PS_PassthroughRGB, sizeof(g_PS_PassthroughRGB), NULL, &mCopyRGBPS); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mCopyRGBPS, "Renderer11 copy texture RGB pixel shader"); + + result = mDevice->CreatePixelShader(g_PS_PassthroughLum, sizeof(g_PS_PassthroughLum), NULL, &mCopyLumPS); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mCopyLumPS, "Renderer11 copy texture luminance pixel shader"); + + result = mDevice->CreatePixelShader(g_PS_PassthroughLumAlpha, sizeof(g_PS_PassthroughLumAlpha), NULL, &mCopyLumAlphaPS); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mCopyLumAlphaPS, "Renderer11 copy texture luminance alpha pixel shader"); + + mCopyResourcesInitialized = true; + } + + // Verify the source and destination area sizes + if (sourceArea.x < 0 || sourceArea.x + sourceArea.width > static_cast(sourceWidth) || + sourceArea.y < 0 || sourceArea.y + sourceArea.height > static_cast(sourceHeight) || + destArea.x < 0 || destArea.x + destArea.width > static_cast(destWidth) || + destArea.y < 0 || destArea.y + destArea.height > static_cast(destHeight)) + { + return gl::error(GL_INVALID_VALUE, false); + } + + // Set vertices + D3D11_MAPPED_SUBRESOURCE mappedResource; + result = mDeviceContext->Map(mCopyVB, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource); + if (FAILED(result)) + { + ERR("Failed to map vertex buffer for texture copy, HRESULT: 0x%X.", result); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + d3d11::PositionTexCoordVertex *vertices = static_cast(mappedResource.pData); + + // Create a quad in homogeneous coordinates + float x1 = (destArea.x / float(destWidth)) * 2.0f - 1.0f; + float y1 = ((destHeight - destArea.y - destArea.height) / float(destHeight)) * 2.0f - 1.0f; + float x2 = ((destArea.x + destArea.width) / float(destWidth)) * 2.0f - 1.0f; + float y2 = ((destHeight - destArea.y) / float(destHeight)) * 2.0f - 1.0f; + + float u1 = sourceArea.x / float(sourceWidth); + float v1 = sourceArea.y / float(sourceHeight); + float u2 = (sourceArea.x + sourceArea.width) / float(sourceWidth); + float v2 = (sourceArea.y + sourceArea.height) / float(sourceHeight); + + d3d11::SetPositionTexCoordVertex(&vertices[0], x1, y1, u1, v2); + d3d11::SetPositionTexCoordVertex(&vertices[1], x1, y2, u1, v1); + d3d11::SetPositionTexCoordVertex(&vertices[2], x2, y1, u2, v2); + d3d11::SetPositionTexCoordVertex(&vertices[3], x2, y2, u2, v1); + + mDeviceContext->Unmap(mCopyVB, 0); + + static UINT stride = sizeof(d3d11::PositionTexCoordVertex); + static UINT startIdx = 0; + mDeviceContext->IASetVertexBuffers(0, 1, &mCopyVB, &stride, &startIdx); + + // Apply state + mDeviceContext->OMSetBlendState(NULL, NULL, 0xFFFFFFF); + mDeviceContext->OMSetDepthStencilState(NULL, 0xFFFFFFFF); + mDeviceContext->RSSetState(NULL); + + // Apply shaders + mDeviceContext->IASetInputLayout(mCopyIL); + mDeviceContext->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); + mDeviceContext->VSSetShader(mCopyVS, NULL, 0); + + ID3D11PixelShader *ps = NULL; + switch(destFormat) + { + case GL_RGBA: ps = mCopyRGBAPS; break; + case GL_RGB: ps = mCopyRGBPS; break; + case GL_ALPHA: ps = mCopyRGBAPS; break; + case GL_BGRA_EXT: ps = mCopyRGBAPS; break; + case GL_LUMINANCE: ps = mCopyLumPS; break; + case GL_LUMINANCE_ALPHA: ps = mCopyLumAlphaPS; break; + default: UNREACHABLE(); ps = NULL; break; + } + + mDeviceContext->PSSetShader(ps, NULL, 0); + mDeviceContext->GSSetShader(NULL, NULL, 0); + + // Unset the currently bound shader resource to avoid conflicts + static ID3D11ShaderResourceView *const nullSRV = NULL; + mDeviceContext->PSSetShaderResources(0, 1, &nullSRV); + + // Apply render target + setOneTimeRenderTarget(dest); + + // Set the viewport + D3D11_VIEWPORT viewport; + viewport.TopLeftX = 0; + viewport.TopLeftY = 0; + viewport.Width = destWidth; + viewport.Height = destHeight; + viewport.MinDepth = 0.0f; + viewport.MaxDepth = 1.0f; + mDeviceContext->RSSetViewports(1, &viewport); + + // Apply textures + mDeviceContext->PSSetShaderResources(0, 1, &source); + mDeviceContext->PSSetSamplers(0, 1, &mCopySampler); + + // Draw the quad + mDeviceContext->Draw(4, 0); + + // Unbind textures and render targets and vertex buffer + mDeviceContext->PSSetShaderResources(0, 1, &nullSRV); + + unapplyRenderTargets(); + + UINT zero = 0; + ID3D11Buffer *const nullBuffer = NULL; + mDeviceContext->IASetVertexBuffers(0, 1, &nullBuffer, &zero, &zero); + + markAllStateDirty(); + + return true; +} + +void Renderer11::unapplyRenderTargets() +{ + setOneTimeRenderTarget(NULL); +} + +void Renderer11::setOneTimeRenderTarget(ID3D11RenderTargetView *renderTargetView) +{ + ID3D11RenderTargetView *rtvArray[gl::IMPLEMENTATION_MAX_DRAW_BUFFERS] = {NULL}; + + rtvArray[0] = renderTargetView; + + mDeviceContext->OMSetRenderTargets(getMaxRenderTargets(), rtvArray, NULL); + + // Do not preserve the serial for this one-time-use render target + for (unsigned int rtIndex = 0; rtIndex < gl::IMPLEMENTATION_MAX_DRAW_BUFFERS; rtIndex++) + { + mAppliedRenderTargetSerials[rtIndex] = 0; + } +} + +RenderTarget *Renderer11::createRenderTarget(SwapChain *swapChain, bool depth) +{ + SwapChain11 *swapChain11 = SwapChain11::makeSwapChain11(swapChain); + RenderTarget11 *renderTarget = NULL; + + if (depth) + { + // Note: depth stencil may be NULL for 0 sized surfaces + renderTarget = new RenderTarget11(this, swapChain11->getDepthStencil(), + swapChain11->getDepthStencilTexture(), NULL, + swapChain11->getWidth(), swapChain11->getHeight()); + } + else + { + // Note: render target may be NULL for 0 sized surfaces + renderTarget = new RenderTarget11(this, swapChain11->getRenderTarget(), + swapChain11->getOffscreenTexture(), + swapChain11->getRenderTargetShaderResource(), + swapChain11->getWidth(), swapChain11->getHeight()); + } + return renderTarget; +} + +RenderTarget *Renderer11::createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth) +{ + RenderTarget11 *renderTarget = new RenderTarget11(this, width, height, format, samples, depth); + return renderTarget; +} + +ShaderExecutable *Renderer11::loadExecutable(const void *function, size_t length, rx::ShaderType type) +{ + ShaderExecutable11 *executable = NULL; + + switch (type) + { + case rx::SHADER_VERTEX: + { + ID3D11VertexShader *vshader = NULL; + HRESULT result = mDevice->CreateVertexShader(function, length, NULL, &vshader); + ASSERT(SUCCEEDED(result)); + + if (vshader) + { + executable = new ShaderExecutable11(function, length, vshader); + } + } + break; + case rx::SHADER_PIXEL: + { + ID3D11PixelShader *pshader = NULL; + HRESULT result = mDevice->CreatePixelShader(function, length, NULL, &pshader); + ASSERT(SUCCEEDED(result)); + + if (pshader) + { + executable = new ShaderExecutable11(function, length, pshader); + } + } + break; + case rx::SHADER_GEOMETRY: + { + ID3D11GeometryShader *gshader = NULL; + HRESULT result = mDevice->CreateGeometryShader(function, length, NULL, &gshader); + ASSERT(SUCCEEDED(result)); + + if (gshader) + { + executable = new ShaderExecutable11(function, length, gshader); + } + } + break; + default: + UNREACHABLE(); + break; + } + + return executable; +} + +ShaderExecutable *Renderer11::compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, rx::ShaderType type) +{ + const char *profile = NULL; + + switch (type) + { + case rx::SHADER_VERTEX: + profile = "vs_4_0"; + break; + case rx::SHADER_PIXEL: + profile = "ps_4_0"; + break; + case rx::SHADER_GEOMETRY: + profile = "gs_4_0"; + break; + default: + UNREACHABLE(); + return NULL; + } + + ID3DBlob *binary = (ID3DBlob*)compileToBinary(infoLog, shaderHLSL, profile, D3DCOMPILE_OPTIMIZATION_LEVEL0, false); + if (!binary) + return NULL; + + ShaderExecutable *executable = loadExecutable((DWORD *)binary->GetBufferPointer(), binary->GetBufferSize(), type); + binary->Release(); + + return executable; +} + +VertexBuffer *Renderer11::createVertexBuffer() +{ + return new VertexBuffer11(this); +} + +IndexBuffer *Renderer11::createIndexBuffer() +{ + return new IndexBuffer11(this); +} + +BufferStorage *Renderer11::createBufferStorage() +{ + return new BufferStorage11(this); +} + +QueryImpl *Renderer11::createQuery(GLenum type) +{ + return new Query11(this, type); +} + +FenceImpl *Renderer11::createFence() +{ + return new Fence11(this); +} + +bool Renderer11::getRenderTargetResource(gl::Renderbuffer *colorbuffer, unsigned int *subresourceIndex, ID3D11Texture2D **resource) +{ + ASSERT(colorbuffer != NULL); + + RenderTarget11 *renderTarget = RenderTarget11::makeRenderTarget11(colorbuffer->getRenderTarget()); + if (renderTarget) + { + *subresourceIndex = renderTarget->getSubresourceIndex(); + + ID3D11RenderTargetView *colorBufferRTV = renderTarget->getRenderTargetView(); + if (colorBufferRTV) + { + ID3D11Resource *textureResource = NULL; + colorBufferRTV->GetResource(&textureResource); + colorBufferRTV->Release(); + + if (textureResource) + { + HRESULT result = textureResource->QueryInterface(IID_ID3D11Texture2D, (void**)resource); + textureResource->Release(); + + if (SUCCEEDED(result)) + { + return true; + } + else + { + ERR("Failed to extract the ID3D11Texture2D from the render target resource, " + "HRESULT: 0x%X.", result); + } + } + } + } + + return false; +} + +bool Renderer11::blitRect(gl::Framebuffer *readTarget, const gl::Rectangle &readRect, gl::Framebuffer *drawTarget, const gl::Rectangle &drawRect, + bool blitRenderTarget, bool blitDepthStencil) +{ + if (blitRenderTarget) + { + gl::Renderbuffer *readBuffer = readTarget->getReadColorbuffer(); + + if (!readBuffer) + { + ERR("Failed to retrieve the read buffer from the read framebuffer."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + RenderTarget *readRenderTarget = readBuffer->getRenderTarget(); + + for (unsigned int colorAttachment = 0; colorAttachment < gl::IMPLEMENTATION_MAX_DRAW_BUFFERS; colorAttachment++) + { + if (drawTarget->isEnabledColorAttachment(colorAttachment)) + { + gl::Renderbuffer *drawBuffer = drawTarget->getColorbuffer(colorAttachment); + + if (!drawBuffer) + { + ERR("Failed to retrieve the draw buffer from the draw framebuffer."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + RenderTarget *drawRenderTarget = drawBuffer->getRenderTarget(); + + if (!blitRenderbufferRect(readRect, drawRect, readRenderTarget, drawRenderTarget, false)) + { + return false; + } + } + } + } + + if (blitDepthStencil) + { + gl::Renderbuffer *readBuffer = readTarget->getDepthOrStencilbuffer(); + gl::Renderbuffer *drawBuffer = drawTarget->getDepthOrStencilbuffer(); + + if (!readBuffer) + { + ERR("Failed to retrieve the read depth-stencil buffer from the read framebuffer."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + if (!drawBuffer) + { + ERR("Failed to retrieve the draw depth-stencil buffer from the draw framebuffer."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + RenderTarget *readRenderTarget = readBuffer->getDepthStencil(); + RenderTarget *drawRenderTarget = drawBuffer->getDepthStencil(); + + if (!blitRenderbufferRect(readRect, drawRect, readRenderTarget, drawRenderTarget, true)) + { + return false; + } + } + + return true; +} + +void Renderer11::readPixels(gl::Framebuffer *framebuffer, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, + GLsizei outputPitch, bool packReverseRowOrder, GLint packAlignment, void* pixels) +{ + ID3D11Texture2D *colorBufferTexture = NULL; + unsigned int subresourceIndex = 0; + + gl::Renderbuffer *colorbuffer = framebuffer->getReadColorbuffer(); + + if (colorbuffer && getRenderTargetResource(colorbuffer, &subresourceIndex, &colorBufferTexture)) + { + gl::Rectangle area; + area.x = x; + area.y = y; + area.width = width; + area.height = height; + + readTextureData(colorBufferTexture, subresourceIndex, area, format, type, outputPitch, + packReverseRowOrder, packAlignment, pixels); + + colorBufferTexture->Release(); + colorBufferTexture = NULL; + } +} + +Image *Renderer11::createImage() +{ + return new Image11(); +} + +void Renderer11::generateMipmap(Image *dest, Image *src) +{ + Image11 *dest11 = Image11::makeImage11(dest); + Image11 *src11 = Image11::makeImage11(src); + Image11::generateMipmap(dest11, src11); +} + +TextureStorage *Renderer11::createTextureStorage2D(SwapChain *swapChain) +{ + SwapChain11 *swapChain11 = SwapChain11::makeSwapChain11(swapChain); + return new TextureStorage11_2D(this, swapChain11); +} + +TextureStorage *Renderer11::createTextureStorage2D(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height) +{ + return new TextureStorage11_2D(this, levels, internalformat, usage, forceRenderable, width, height); +} + +TextureStorage *Renderer11::createTextureStorageCube(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size) +{ + return new TextureStorage11_Cube(this, levels, internalformat, usage, forceRenderable, size); +} + +static inline unsigned int getFastPixelCopySize(DXGI_FORMAT sourceFormat, GLenum destFormat, GLenum destType) +{ + if (sourceFormat == DXGI_FORMAT_A8_UNORM && + destFormat == GL_ALPHA && + destType == GL_UNSIGNED_BYTE) + { + return 1; + } + else if (sourceFormat == DXGI_FORMAT_R8G8B8A8_UNORM && + destFormat == GL_RGBA && + destType == GL_UNSIGNED_BYTE) + { + return 4; + } + else if (sourceFormat == DXGI_FORMAT_B8G8R8A8_UNORM && + destFormat == GL_BGRA_EXT && + destType == GL_UNSIGNED_BYTE) + { + return 4; + } + else if (sourceFormat == DXGI_FORMAT_R16G16B16A16_FLOAT && + destFormat == GL_RGBA && + destType == GL_HALF_FLOAT_OES) + { + return 8; + } + else if (sourceFormat == DXGI_FORMAT_R32G32B32_FLOAT && + destFormat == GL_RGB && + destType == GL_FLOAT) + { + return 12; + } + else if (sourceFormat == DXGI_FORMAT_R32G32B32A32_FLOAT && + destFormat == GL_RGBA && + destType == GL_FLOAT) + { + return 16; + } + else + { + return 0; + } +} + +static inline void readPixelColor(const unsigned char *data, DXGI_FORMAT format, unsigned int x, + unsigned int y, int inputPitch, gl::Color *outColor) +{ + switch (format) + { + case DXGI_FORMAT_R8G8B8A8_UNORM: + { + unsigned int rgba = *reinterpret_cast(data + 4 * x + y * inputPitch); + outColor->red = (rgba & 0x000000FF) * (1.0f / 0x000000FF); + outColor->green = (rgba & 0x0000FF00) * (1.0f / 0x0000FF00); + outColor->blue = (rgba & 0x00FF0000) * (1.0f / 0x00FF0000); + outColor->alpha = (rgba & 0xFF000000) * (1.0f / 0xFF000000); + } + break; + + case DXGI_FORMAT_A8_UNORM: + { + outColor->red = 0.0f; + outColor->green = 0.0f; + outColor->blue = 0.0f; + outColor->alpha = *(data + x + y * inputPitch) / 255.0f; + } + break; + + case DXGI_FORMAT_R32G32B32A32_FLOAT: + { + outColor->red = *(reinterpret_cast(data + 16 * x + y * inputPitch) + 0); + outColor->green = *(reinterpret_cast(data + 16 * x + y * inputPitch) + 1); + outColor->blue = *(reinterpret_cast(data + 16 * x + y * inputPitch) + 2); + outColor->alpha = *(reinterpret_cast(data + 16 * x + y * inputPitch) + 3); + } + break; + + case DXGI_FORMAT_R32G32B32_FLOAT: + { + outColor->red = *(reinterpret_cast(data + 12 * x + y * inputPitch) + 0); + outColor->green = *(reinterpret_cast(data + 12 * x + y * inputPitch) + 1); + outColor->blue = *(reinterpret_cast(data + 12 * x + y * inputPitch) + 2); + outColor->alpha = 1.0f; + } + break; + + case DXGI_FORMAT_R16G16B16A16_FLOAT: + { + outColor->red = gl::float16ToFloat32(*(reinterpret_cast(data + 8 * x + y * inputPitch) + 0)); + outColor->green = gl::float16ToFloat32(*(reinterpret_cast(data + 8 * x + y * inputPitch) + 1)); + outColor->blue = gl::float16ToFloat32(*(reinterpret_cast(data + 8 * x + y * inputPitch) + 2)); + outColor->alpha = gl::float16ToFloat32(*(reinterpret_cast(data + 8 * x + y * inputPitch) + 3)); + } + break; + + case DXGI_FORMAT_B8G8R8A8_UNORM: + { + unsigned int bgra = *reinterpret_cast(data + 4 * x + y * inputPitch); + outColor->red = (bgra & 0x00FF0000) * (1.0f / 0x00FF0000); + outColor->blue = (bgra & 0x000000FF) * (1.0f / 0x000000FF); + outColor->green = (bgra & 0x0000FF00) * (1.0f / 0x0000FF00); + outColor->alpha = (bgra & 0xFF000000) * (1.0f / 0xFF000000); + } + break; + + case DXGI_FORMAT_R8_UNORM: + { + outColor->red = *(data + x + y * inputPitch) / 255.0f; + outColor->green = 0.0f; + outColor->blue = 0.0f; + outColor->alpha = 1.0f; + } + break; + + case DXGI_FORMAT_R8G8_UNORM: + { + unsigned short rg = *reinterpret_cast(data + 2 * x + y * inputPitch); + + outColor->red = (rg & 0xFF00) * (1.0f / 0xFF00); + outColor->green = (rg & 0x00FF) * (1.0f / 0x00FF); + outColor->blue = 0.0f; + outColor->alpha = 1.0f; + } + break; + + case DXGI_FORMAT_R16_FLOAT: + { + outColor->red = gl::float16ToFloat32(*reinterpret_cast(data + 2 * x + y * inputPitch)); + outColor->green = 0.0f; + outColor->blue = 0.0f; + outColor->alpha = 1.0f; + } + break; + + case DXGI_FORMAT_R16G16_FLOAT: + { + outColor->red = gl::float16ToFloat32(*(reinterpret_cast(data + 4 * x + y * inputPitch) + 0)); + outColor->green = gl::float16ToFloat32(*(reinterpret_cast(data + 4 * x + y * inputPitch) + 1)); + outColor->blue = 0.0f; + outColor->alpha = 1.0f; + } + break; + + default: + ERR("ReadPixelColor not implemented for DXGI format %u.", format); + UNIMPLEMENTED(); + break; + } +} + +static inline void writePixelColor(const gl::Color &color, GLenum format, GLenum type, unsigned int x, + unsigned int y, int outputPitch, void *outData) +{ + unsigned char* byteData = reinterpret_cast(outData); + unsigned short* shortData = reinterpret_cast(outData); + + switch (format) + { + case GL_RGBA: + switch (type) + { + case GL_UNSIGNED_BYTE: + byteData[4 * x + y * outputPitch + 0] = static_cast(255 * color.red + 0.5f); + byteData[4 * x + y * outputPitch + 1] = static_cast(255 * color.green + 0.5f); + byteData[4 * x + y * outputPitch + 2] = static_cast(255 * color.blue + 0.5f); + byteData[4 * x + y * outputPitch + 3] = static_cast(255 * color.alpha + 0.5f); + break; + + default: + ERR("WritePixelColor not implemented for format GL_RGBA and type 0x%X.", type); + UNIMPLEMENTED(); + break; + } + break; + + case GL_BGRA_EXT: + switch (type) + { + case GL_UNSIGNED_BYTE: + byteData[4 * x + y * outputPitch + 0] = static_cast(255 * color.blue + 0.5f); + byteData[4 * x + y * outputPitch + 1] = static_cast(255 * color.green + 0.5f); + byteData[4 * x + y * outputPitch + 2] = static_cast(255 * color.red + 0.5f); + byteData[4 * x + y * outputPitch + 3] = static_cast(255 * color.alpha + 0.5f); + break; + + case GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT: + // According to the desktop GL spec in the "Transfer of Pixel Rectangles" section + // this type is packed as follows: + // 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 + // -------------------------------------------------------------------------------- + // | 4th | 3rd | 2nd | 1st component | + // -------------------------------------------------------------------------------- + // in the case of BGRA_EXT, B is the first component, G the second, and so forth. + shortData[x + y * outputPitch / sizeof(unsigned short)] = + (static_cast(15 * color.alpha + 0.5f) << 12) | + (static_cast(15 * color.red + 0.5f) << 8) | + (static_cast(15 * color.green + 0.5f) << 4) | + (static_cast(15 * color.blue + 0.5f) << 0); + break; + + case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT: + // According to the desktop GL spec in the "Transfer of Pixel Rectangles" section + // this type is packed as follows: + // 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 + // -------------------------------------------------------------------------------- + // | 4th | 3rd | 2nd | 1st component | + // -------------------------------------------------------------------------------- + // in the case of BGRA_EXT, B is the first component, G the second, and so forth. + shortData[x + y * outputPitch / sizeof(unsigned short)] = + (static_cast( color.alpha + 0.5f) << 15) | + (static_cast(31 * color.red + 0.5f) << 10) | + (static_cast(31 * color.green + 0.5f) << 5) | + (static_cast(31 * color.blue + 0.5f) << 0); + break; + + default: + ERR("WritePixelColor not implemented for format GL_BGRA_EXT and type 0x%X.", type); + UNIMPLEMENTED(); + break; + } + break; + + case GL_RGB: + switch (type) + { + case GL_UNSIGNED_SHORT_5_6_5: + shortData[x + y * outputPitch / sizeof(unsigned short)] = + (static_cast(31 * color.blue + 0.5f) << 0) | + (static_cast(63 * color.green + 0.5f) << 5) | + (static_cast(31 * color.red + 0.5f) << 11); + break; + + case GL_UNSIGNED_BYTE: + byteData[3 * x + y * outputPitch + 0] = static_cast(255 * color.red + 0.5f); + byteData[3 * x + y * outputPitch + 1] = static_cast(255 * color.green + 0.5f); + byteData[3 * x + y * outputPitch + 2] = static_cast(255 * color.blue + 0.5f); + break; + + default: + ERR("WritePixelColor not implemented for format GL_RGB and type 0x%X.", type); + UNIMPLEMENTED(); + break; + } + break; + + default: + ERR("WritePixelColor not implemented for format 0x%X.", format); + UNIMPLEMENTED(); + break; + } +} + +void Renderer11::readTextureData(ID3D11Texture2D *texture, unsigned int subResource, const gl::Rectangle &area, + GLenum format, GLenum type, GLsizei outputPitch, bool packReverseRowOrder, + GLint packAlignment, void *pixels) +{ + D3D11_TEXTURE2D_DESC textureDesc; + texture->GetDesc(&textureDesc); + + D3D11_TEXTURE2D_DESC stagingDesc; + stagingDesc.Width = area.width; + stagingDesc.Height = area.height; + stagingDesc.MipLevels = 1; + stagingDesc.ArraySize = 1; + stagingDesc.Format = textureDesc.Format; + stagingDesc.SampleDesc.Count = 1; + stagingDesc.SampleDesc.Quality = 0; + stagingDesc.Usage = D3D11_USAGE_STAGING; + stagingDesc.BindFlags = 0; + stagingDesc.CPUAccessFlags = D3D11_CPU_ACCESS_READ; + stagingDesc.MiscFlags = 0; + + ID3D11Texture2D* stagingTex = NULL; + HRESULT result = mDevice->CreateTexture2D(&stagingDesc, NULL, &stagingTex); + if (FAILED(result)) + { + ERR("Failed to create staging texture for readPixels, HRESULT: 0x%X.", result); + return; + } + + ID3D11Texture2D* srcTex = NULL; + if (textureDesc.SampleDesc.Count > 1) + { + D3D11_TEXTURE2D_DESC resolveDesc; + resolveDesc.Width = textureDesc.Width; + resolveDesc.Height = textureDesc.Height; + resolveDesc.MipLevels = 1; + resolveDesc.ArraySize = 1; + resolveDesc.Format = textureDesc.Format; + resolveDesc.SampleDesc.Count = 1; + resolveDesc.SampleDesc.Quality = 0; + resolveDesc.Usage = D3D11_USAGE_DEFAULT; + resolveDesc.BindFlags = 0; + resolveDesc.CPUAccessFlags = 0; + resolveDesc.MiscFlags = 0; + + result = mDevice->CreateTexture2D(&resolveDesc, NULL, &srcTex); + if (FAILED(result)) + { + ERR("Failed to create resolve texture for readPixels, HRESULT: 0x%X.", result); + stagingTex->Release(); + return; + } + + mDeviceContext->ResolveSubresource(srcTex, 0, texture, subResource, textureDesc.Format); + subResource = 0; + } + else + { + srcTex = texture; + srcTex->AddRef(); + } + + D3D11_BOX srcBox; + srcBox.left = area.x; + srcBox.right = area.x + area.width; + srcBox.top = area.y; + srcBox.bottom = area.y + area.height; + srcBox.front = 0; + srcBox.back = 1; + + mDeviceContext->CopySubresourceRegion(stagingTex, 0, 0, 0, 0, srcTex, subResource, &srcBox); + + srcTex->Release(); + srcTex = NULL; + + D3D11_MAPPED_SUBRESOURCE mapping; + mDeviceContext->Map(stagingTex, 0, D3D11_MAP_READ, 0, &mapping); + + unsigned char *source; + int inputPitch; + if (packReverseRowOrder) + { + source = static_cast(mapping.pData) + mapping.RowPitch * (area.height - 1); + inputPitch = -static_cast(mapping.RowPitch); + } + else + { + source = static_cast(mapping.pData); + inputPitch = static_cast(mapping.RowPitch); + } + + unsigned int fastPixelSize = getFastPixelCopySize(textureDesc.Format, format, type); + if (fastPixelSize != 0) + { + unsigned char *dest = static_cast(pixels); + for (int j = 0; j < area.height; j++) + { + memcpy(dest + j * outputPitch, source + j * inputPitch, area.width * fastPixelSize); + } + } + else if (textureDesc.Format == DXGI_FORMAT_B8G8R8A8_UNORM && + format == GL_RGBA && + type == GL_UNSIGNED_BYTE) + { + // Fast path for swapping red with blue + unsigned char *dest = static_cast(pixels); + + for (int j = 0; j < area.height; j++) + { + for (int i = 0; i < area.width; i++) + { + unsigned int argb = *(unsigned int*)(source + 4 * i + j * inputPitch); + *(unsigned int*)(dest + 4 * i + j * outputPitch) = + (argb & 0xFF00FF00) | // Keep alpha and green + (argb & 0x00FF0000) >> 16 | // Move red to blue + (argb & 0x000000FF) << 16; // Move blue to red + } + } + } + else + { + gl::Color pixelColor; + for (int j = 0; j < area.height; j++) + { + for (int i = 0; i < area.width; i++) + { + readPixelColor(source, textureDesc.Format, i, j, inputPitch, &pixelColor); + writePixelColor(pixelColor, format, type, i, j, outputPitch, pixels); + } + } + } + + mDeviceContext->Unmap(stagingTex, 0); + + stagingTex->Release(); + stagingTex = NULL; +} + +bool Renderer11::blitRenderbufferRect(const gl::Rectangle &readRect, const gl::Rectangle &drawRect, RenderTarget *readRenderTarget, + RenderTarget *drawRenderTarget, bool wholeBufferCopy) +{ + ASSERT(readRect.width == drawRect.width && readRect.height == drawRect.height); + + RenderTarget11 *readRenderTarget11 = RenderTarget11::makeRenderTarget11(readRenderTarget); + if (!readRenderTarget) + { + ERR("Failed to retrieve the read render target from the read framebuffer."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + ID3D11Texture2D *readTexture = NULL; + unsigned int readSubresource = 0; + if (readRenderTarget->getSamples() > 0) + { + ID3D11Texture2D *unresolvedTexture = readRenderTarget11->getTexture(); + + readTexture = resolveMultisampledTexture(unresolvedTexture, readRenderTarget11->getSubresourceIndex()); + readSubresource = 0; + + unresolvedTexture->Release(); + } + else + { + readTexture = readRenderTarget11->getTexture(); + readSubresource = readRenderTarget11->getSubresourceIndex(); + } + + if (!readTexture) + { + ERR("Failed to retrieve the read render target view from the read render target."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + RenderTarget11 *drawRenderTarget11 = RenderTarget11::makeRenderTarget11(drawRenderTarget); + if (!drawRenderTarget) + { + readTexture->Release(); + ERR("Failed to retrieve the draw render target from the draw framebuffer."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + ID3D11Texture2D *drawTexture = drawRenderTarget11->getTexture(); + unsigned int drawSubresource = drawRenderTarget11->getSubresourceIndex(); + + D3D11_BOX readBox; + readBox.left = readRect.x; + readBox.right = readRect.x + readRect.width; + readBox.top = readRect.y; + readBox.bottom = readRect.y + readRect.height; + readBox.front = 0; + readBox.back = 1; + + // D3D11 needs depth-stencil CopySubresourceRegions to have a NULL pSrcBox + // We also require complete framebuffer copies for depth-stencil blit. + D3D11_BOX *pSrcBox = wholeBufferCopy ? NULL : &readBox; + + mDeviceContext->CopySubresourceRegion(drawTexture, drawSubresource, drawRect.x, drawRect.y, 0, + readTexture, readSubresource, pSrcBox); + + readTexture->Release(); + drawTexture->Release(); + + return true; +} + +ID3D11Texture2D *Renderer11::resolveMultisampledTexture(ID3D11Texture2D *source, unsigned int subresource) +{ + D3D11_TEXTURE2D_DESC textureDesc; + source->GetDesc(&textureDesc); + + if (textureDesc.SampleDesc.Count > 1) + { + D3D11_TEXTURE2D_DESC resolveDesc; + resolveDesc.Width = textureDesc.Width; + resolveDesc.Height = textureDesc.Height; + resolveDesc.MipLevels = 1; + resolveDesc.ArraySize = 1; + resolveDesc.Format = textureDesc.Format; + resolveDesc.SampleDesc.Count = 1; + resolveDesc.SampleDesc.Quality = 0; + resolveDesc.Usage = textureDesc.Usage; + resolveDesc.BindFlags = textureDesc.BindFlags; + resolveDesc.CPUAccessFlags = 0; + resolveDesc.MiscFlags = 0; + + ID3D11Texture2D *resolveTexture = NULL; + HRESULT result = mDevice->CreateTexture2D(&resolveDesc, NULL, &resolveTexture); + if (FAILED(result)) + { + ERR("Failed to create a multisample resolve texture, HRESULT: 0x%X.", result); + return NULL; + } + + mDeviceContext->ResolveSubresource(resolveTexture, 0, source, subresource, textureDesc.Format); + return resolveTexture; + } + else + { + source->AddRef(); + return source; + } +} + +bool Renderer11::getLUID(LUID *adapterLuid) const +{ + adapterLuid->HighPart = 0; + adapterLuid->LowPart = 0; + + if (!mDxgiAdapter) + { + return false; + } + + DXGI_ADAPTER_DESC adapterDesc; + if (FAILED(mDxgiAdapter->GetDesc(&adapterDesc))) + { + return false; + } + + *adapterLuid = adapterDesc.AdapterLuid; + return true; +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer11.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer11.h new file mode 100644 index 00000000000..b3b742cd5eb --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer11.h @@ -0,0 +1,351 @@ +// +// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Renderer11.h: Defines a back-end specific class for the D3D11 renderer. + +#ifndef LIBGLESV2_RENDERER_RENDERER11_H_ +#define LIBGLESV2_RENDERER_RENDERER11_H_ + +#include "common/angleutils.h" +#include "libGLESv2/angletypes.h" +#include "libGLESv2/mathutil.h" + +#include "libGLESv2/renderer/Renderer.h" +#include "libGLESv2/renderer/RenderStateCache.h" +#include "libGLESv2/renderer/InputLayoutCache.h" +#include "libGLESv2/renderer/RenderTarget.h" + +namespace gl +{ +class Renderbuffer; +} + +namespace rx +{ + +class VertexDataManager; +class IndexDataManager; +class StreamingIndexBufferInterface; + +enum +{ + MAX_VERTEX_UNIFORM_VECTORS_D3D11 = 1024, + MAX_FRAGMENT_UNIFORM_VECTORS_D3D11 = 1024 +}; + +class Renderer11 : public Renderer +{ + public: + Renderer11(egl::Display *display, HDC hDc); + virtual ~Renderer11(); + + static Renderer11 *makeRenderer11(Renderer *renderer); + + virtual EGLint initialize(); + virtual bool resetDevice(); + + virtual int generateConfigs(ConfigDesc **configDescList); + virtual void deleteConfigs(ConfigDesc *configDescList); + + virtual void sync(bool block); + + virtual SwapChain *createSwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat); + + virtual void setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &sampler); + virtual void setTexture(gl::SamplerType type, int index, gl::Texture *texture); + + virtual void setRasterizerState(const gl::RasterizerState &rasterState); + virtual void setBlendState(const gl::BlendState &blendState, const gl::Color &blendColor, + unsigned int sampleMask); + virtual void setDepthStencilState(const gl::DepthStencilState &depthStencilState, int stencilRef, + int stencilBackRef, bool frontFaceCCW); + + virtual void setScissorRectangle(const gl::Rectangle &scissor, bool enabled); + virtual bool setViewport(const gl::Rectangle &viewport, float zNear, float zFar, GLenum drawMode, GLenum frontFace, + bool ignoreViewport); + + virtual bool applyPrimitiveType(GLenum mode, GLsizei count); + virtual bool applyRenderTarget(gl::Framebuffer *frameBuffer); + virtual void applyShaders(gl::ProgramBinary *programBinary); + virtual void applyUniforms(gl::ProgramBinary *programBinary, gl::UniformArray *uniformArray); + virtual GLenum applyVertexBuffer(gl::ProgramBinary *programBinary, gl::VertexAttribute vertexAttributes[], GLint first, GLsizei count, GLsizei instances); + virtual GLenum applyIndexBuffer(const GLvoid *indices, gl::Buffer *elementArrayBuffer, GLsizei count, GLenum mode, GLenum type, TranslatedIndexData *indexInfo); + + virtual void drawArrays(GLenum mode, GLsizei count, GLsizei instances); + virtual void drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, gl::Buffer *elementArrayBuffer, const TranslatedIndexData &indexInfo, GLsizei instances); + + virtual void clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer); + + virtual void markAllStateDirty(); + + // lost device + void notifyDeviceLost(); + virtual bool isDeviceLost(); + virtual bool testDeviceLost(bool notify); + virtual bool testDeviceResettable(); + + // Renderer capabilities + virtual DWORD getAdapterVendor() const; + virtual std::string getRendererDescription() const; + virtual GUID getAdapterIdentifier() const; + + virtual bool getBGRATextureSupport() const; + virtual bool getDXT1TextureSupport(); + virtual bool getDXT3TextureSupport(); + virtual bool getDXT5TextureSupport(); + virtual bool getEventQuerySupport(); + virtual bool getFloat32TextureSupport(bool *filtering, bool *renderable); + virtual bool getFloat16TextureSupport(bool *filtering, bool *renderable); + virtual bool getLuminanceTextureSupport(); + virtual bool getLuminanceAlphaTextureSupport(); + virtual unsigned int getMaxVertexTextureImageUnits() const; + virtual unsigned int getMaxCombinedTextureImageUnits() const; + virtual unsigned int getReservedVertexUniformVectors() const; + virtual unsigned int getReservedFragmentUniformVectors() const; + virtual unsigned int getMaxVertexUniformVectors() const; + virtual unsigned int getMaxFragmentUniformVectors() const; + virtual unsigned int getMaxVaryingVectors() const; + virtual bool getNonPower2TextureSupport() const; + virtual bool getDepthTextureSupport() const; + virtual bool getOcclusionQuerySupport() const; + virtual bool getInstancingSupport() const; + virtual bool getTextureFilterAnisotropySupport() const; + virtual float getTextureMaxAnisotropy() const; + virtual bool getShareHandleSupport() const; + virtual bool getDerivativeInstructionSupport() const; + virtual bool getPostSubBufferSupport() const; + + virtual int getMajorShaderModel() const; + virtual float getMaxPointSize() const; + virtual int getMaxViewportDimension() const; + virtual int getMaxTextureWidth() const; + virtual int getMaxTextureHeight() const; + virtual bool get32BitIndexSupport() const; + virtual int getMinSwapInterval() const; + virtual int getMaxSwapInterval() const; + + virtual GLsizei getMaxSupportedSamples() const; + int getNearestSupportedSamples(DXGI_FORMAT format, unsigned int requested) const; + + virtual unsigned int getMaxRenderTargets() const; + + // Pixel operations + virtual bool copyToRenderTarget(TextureStorageInterface2D *dest, TextureStorageInterface2D *source); + virtual bool copyToRenderTarget(TextureStorageInterfaceCube *dest, TextureStorageInterfaceCube *source); + + virtual bool copyImage(gl::Framebuffer *framebuffer, const gl::Rectangle &sourceRect, GLenum destFormat, + GLint xoffset, GLint yoffset, TextureStorageInterface2D *storage, GLint level); + virtual bool copyImage(gl::Framebuffer *framebuffer, const gl::Rectangle &sourceRect, GLenum destFormat, + GLint xoffset, GLint yoffset, TextureStorageInterfaceCube *storage, GLenum target, GLint level); + + bool copyTexture(ID3D11ShaderResourceView *source, const gl::Rectangle &sourceArea, unsigned int sourceWidth, unsigned int sourceHeight, + ID3D11RenderTargetView *dest, const gl::Rectangle &destArea, unsigned int destWidth, unsigned int destHeight, GLenum destFormat); + + virtual bool blitRect(gl::Framebuffer *readTarget, const gl::Rectangle &readRect, gl::Framebuffer *drawTarget, const gl::Rectangle &drawRect, + bool blitRenderTarget, bool blitDepthStencil); + virtual void readPixels(gl::Framebuffer *framebuffer, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, + GLsizei outputPitch, bool packReverseRowOrder, GLint packAlignment, void* pixels); + + // RenderTarget creation + virtual RenderTarget *createRenderTarget(SwapChain *swapChain, bool depth); + virtual RenderTarget *createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth); + + // Shader operations + virtual ShaderExecutable *loadExecutable(const void *function, size_t length, rx::ShaderType type); + virtual ShaderExecutable *compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, rx::ShaderType type); + + // Image operations + virtual Image *createImage(); + virtual void generateMipmap(Image *dest, Image *source); + virtual TextureStorage *createTextureStorage2D(SwapChain *swapChain); + virtual TextureStorage *createTextureStorage2D(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height); + virtual TextureStorage *createTextureStorageCube(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size); + + // Buffer creation + virtual VertexBuffer *createVertexBuffer(); + virtual IndexBuffer *createIndexBuffer(); + virtual BufferStorage *createBufferStorage(); + + // Query and Fence creation + virtual QueryImpl *createQuery(GLenum type); + virtual FenceImpl *createFence(); + + // D3D11-renderer specific methods + ID3D11Device *getDevice() { return mDevice; } + ID3D11DeviceContext *getDeviceContext() { return mDeviceContext; }; + IDXGIFactory *getDxgiFactory() { return mDxgiFactory; }; + + bool getRenderTargetResource(gl::Renderbuffer *colorbuffer, unsigned int *subresourceIndex, ID3D11Texture2D **resource); + void unapplyRenderTargets(); + void setOneTimeRenderTarget(ID3D11RenderTargetView *renderTargetView); + + virtual bool getLUID(LUID *adapterLuid) const; + + private: + DISALLOW_COPY_AND_ASSIGN(Renderer11); + + void drawLineLoop(GLsizei count, GLenum type, const GLvoid *indices, int minIndex, gl::Buffer *elementArrayBuffer); + void drawTriangleFan(GLsizei count, GLenum type, const GLvoid *indices, int minIndex, gl::Buffer *elementArrayBuffer, int instances); + + void readTextureData(ID3D11Texture2D *texture, unsigned int subResource, const gl::Rectangle &area, + GLenum format, GLenum type, GLsizei outputPitch, bool packReverseRowOrder, + GLint packAlignment, void *pixels); + + void maskedClear(const gl::ClearParameters &clearParams, bool usingExtendedDrawBuffers); + rx::Range getViewportBounds() const; + + bool blitRenderbufferRect(const gl::Rectangle &readRect, const gl::Rectangle &drawRect, RenderTarget *readRenderTarget, + RenderTarget *drawRenderTarget, bool wholeBufferCopy); + ID3D11Texture2D *resolveMultisampledTexture(ID3D11Texture2D *source, unsigned int subresource); + + HMODULE mD3d11Module; + HMODULE mDxgiModule; + HDC mDc; + + bool mDeviceLost; + + void initializeDevice(); + void releaseDeviceResources(); + int getMinorShaderModel() const; + void release(); + + RenderStateCache mStateCache; + + // Support flags + bool mFloat16TextureSupport; + bool mFloat16FilterSupport; + bool mFloat16RenderSupport; + + bool mFloat32TextureSupport; + bool mFloat32FilterSupport; + bool mFloat32RenderSupport; + + bool mDXT1TextureSupport; + bool mDXT3TextureSupport; + bool mDXT5TextureSupport; + + bool mDepthTextureSupport; + + // Multisample format support + struct MultisampleSupportInfo + { + unsigned int qualityLevels[D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT]; + }; + + typedef std::unordered_map MultisampleSupportMap; + MultisampleSupportMap mMultisampleSupportMap; + + unsigned int mMaxSupportedSamples; + + // current render target states + unsigned int mAppliedRenderTargetSerials[gl::IMPLEMENTATION_MAX_DRAW_BUFFERS]; + unsigned int mAppliedDepthbufferSerial; + unsigned int mAppliedStencilbufferSerial; + bool mDepthStencilInitialized; + bool mRenderTargetDescInitialized; + rx::RenderTarget::Desc mRenderTargetDesc; + unsigned int mCurDepthSize; + unsigned int mCurStencilSize; + + // Currently applied sampler states + bool mForceSetVertexSamplerStates[gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS]; + gl::SamplerState mCurVertexSamplerStates[gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS]; + + bool mForceSetPixelSamplerStates[gl::MAX_TEXTURE_IMAGE_UNITS]; + gl::SamplerState mCurPixelSamplerStates[gl::MAX_TEXTURE_IMAGE_UNITS]; + + // Currently applied textures + unsigned int mCurVertexTextureSerials[gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS]; + unsigned int mCurPixelTextureSerials[gl::MAX_TEXTURE_IMAGE_UNITS]; + + // Currently applied blend state + bool mForceSetBlendState; + gl::BlendState mCurBlendState; + gl::Color mCurBlendColor; + unsigned int mCurSampleMask; + + // Currently applied rasterizer state + bool mForceSetRasterState; + gl::RasterizerState mCurRasterState; + + // Currently applied depth stencil state + bool mForceSetDepthStencilState; + gl::DepthStencilState mCurDepthStencilState; + int mCurStencilRef; + int mCurStencilBackRef; + + // Currently applied scissor rectangle + bool mForceSetScissor; + bool mScissorEnabled; + gl::Rectangle mCurScissor; + + // Currently applied viewport + bool mForceSetViewport; + gl::Rectangle mCurViewport; + float mCurNear; + float mCurFar; + + unsigned int mAppliedIBSerial; + unsigned int mAppliedStorageIBSerial; + unsigned int mAppliedIBOffset; + + unsigned int mAppliedProgramBinarySerial; + bool mIsGeometryShaderActive; + + dx_VertexConstants mVertexConstants; + dx_VertexConstants mAppliedVertexConstants; + ID3D11Buffer *mDriverConstantBufferVS; + + dx_PixelConstants mPixelConstants; + dx_PixelConstants mAppliedPixelConstants; + ID3D11Buffer *mDriverConstantBufferPS; + + // Vertex, index and input layouts + VertexDataManager *mVertexDataManager; + IndexDataManager *mIndexDataManager; + InputLayoutCache mInputLayoutCache; + + StreamingIndexBufferInterface *mLineLoopIB; + StreamingIndexBufferInterface *mTriangleFanIB; + + // Texture copy resources + bool mCopyResourcesInitialized; + ID3D11Buffer *mCopyVB; + ID3D11SamplerState *mCopySampler; + ID3D11InputLayout *mCopyIL; + ID3D11VertexShader *mCopyVS; + ID3D11PixelShader *mCopyRGBAPS; + ID3D11PixelShader *mCopyRGBPS; + ID3D11PixelShader *mCopyLumPS; + ID3D11PixelShader *mCopyLumAlphaPS; + + // Masked clear resources + bool mClearResourcesInitialized; + ID3D11Buffer *mClearVB; + ID3D11InputLayout *mClearIL; + ID3D11VertexShader *mClearVS; + ID3D11PixelShader *mClearSinglePS; + ID3D11PixelShader *mClearMultiplePS; + ID3D11RasterizerState *mClearScissorRS; + ID3D11RasterizerState *mClearNoScissorRS; + + // Sync query + ID3D11Query *mSyncQuery; + + ID3D11Device *mDevice; + D3D_FEATURE_LEVEL mFeatureLevel; + ID3D11DeviceContext *mDeviceContext; + IDXGIAdapter *mDxgiAdapter; + DXGI_ADAPTER_DESC mAdapterDescription; + char mDescription[128]; + IDXGIFactory *mDxgiFactory; + + // Cached device caps + bool mBGRATextureSupport; +}; + +} +#endif // LIBGLESV2_RENDERER_RENDERER11_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer9.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer9.cpp new file mode 100644 index 00000000000..4aecd4aef17 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer9.cpp @@ -0,0 +1,3216 @@ +#include "precompiled.h" +// +// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Renderer9.cpp: Implements a back-end specific class for the D3D9 renderer. + +#include "libGLESv2/main.h" +#include "libGLESv2/Buffer.h" +#include "libGLESv2/Texture.h" +#include "libGLESv2/Framebuffer.h" +#include "libGLESv2/Renderbuffer.h" +#include "libGLESv2/ProgramBinary.h" +#include "libGLESv2/renderer/IndexDataManager.h" +#include "libGLESv2/renderer/Renderer9.h" +#include "libGLESv2/renderer/renderer9_utils.h" +#include "libGLESv2/renderer/ShaderExecutable9.h" +#include "libGLESv2/renderer/SwapChain9.h" +#include "libGLESv2/renderer/TextureStorage9.h" +#include "libGLESv2/renderer/Image9.h" +#include "libGLESv2/renderer/Blit.h" +#include "libGLESv2/renderer/RenderTarget9.h" +#include "libGLESv2/renderer/VertexBuffer9.h" +#include "libGLESv2/renderer/IndexBuffer9.h" +#include "libGLESv2/renderer/BufferStorage9.h" +#include "libGLESv2/renderer/Query9.h" +#include "libGLESv2/renderer/Fence9.h" + +#include "libEGL/Display.h" + +// Can also be enabled by defining FORCE_REF_RAST in the project's predefined macros +#define REF_RAST 0 + +// The "Debug This Pixel..." feature in PIX often fails when using the +// D3D9Ex interfaces. In order to get debug pixel to work on a Vista/Win 7 +// machine, define "ANGLE_ENABLE_D3D9EX=0" in your project file. +#if !defined(ANGLE_ENABLE_D3D9EX) +// Enables use of the IDirect3D9Ex interface, when available +#define ANGLE_ENABLE_D3D9EX 1 +#endif // !defined(ANGLE_ENABLE_D3D9EX) + +namespace rx +{ +static const D3DFORMAT RenderTargetFormats[] = + { + D3DFMT_A1R5G5B5, + // D3DFMT_A2R10G10B10, // The color_ramp conformance test uses ReadPixels with UNSIGNED_BYTE causing it to think that rendering skipped a colour value. + D3DFMT_A8R8G8B8, + D3DFMT_R5G6B5, + // D3DFMT_X1R5G5B5, // Has no compatible OpenGL ES renderbuffer format + D3DFMT_X8R8G8B8 + }; + +static const D3DFORMAT DepthStencilFormats[] = + { + D3DFMT_UNKNOWN, + // D3DFMT_D16_LOCKABLE, + D3DFMT_D32, + // D3DFMT_D15S1, + D3DFMT_D24S8, + D3DFMT_D24X8, + // D3DFMT_D24X4S4, + D3DFMT_D16, + // D3DFMT_D32F_LOCKABLE, + // D3DFMT_D24FS8 + }; + +enum +{ + MAX_VERTEX_CONSTANT_VECTORS_D3D9 = 256, + MAX_PIXEL_CONSTANT_VECTORS_SM2 = 32, + MAX_PIXEL_CONSTANT_VECTORS_SM3 = 224, + MAX_VARYING_VECTORS_SM2 = 8, + MAX_VARYING_VECTORS_SM3 = 10, + + MAX_TEXTURE_IMAGE_UNITS_VTF_SM3 = 4 +}; + +Renderer9::Renderer9(egl::Display *display, HDC hDc, bool softwareDevice) : Renderer(display), mDc(hDc), mSoftwareDevice(softwareDevice) +{ + mD3d9Module = NULL; + + mD3d9 = NULL; + mD3d9Ex = NULL; + mDevice = NULL; + mDeviceEx = NULL; + mDeviceWindow = NULL; + mBlit = NULL; + + mAdapter = D3DADAPTER_DEFAULT; + + #if REF_RAST == 1 || defined(FORCE_REF_RAST) + mDeviceType = D3DDEVTYPE_REF; + #else + mDeviceType = D3DDEVTYPE_HAL; + #endif + + mDeviceLost = false; + + mMaxSupportedSamples = 0; + + mMaskedClearSavedState = NULL; + + mVertexDataManager = NULL; + mIndexDataManager = NULL; + mLineLoopIB = NULL; + + mMaxNullColorbufferLRU = 0; + for (int i = 0; i < NUM_NULL_COLORBUFFER_CACHE_ENTRIES; i++) + { + mNullColorbufferCache[i].lruCount = 0; + mNullColorbufferCache[i].width = 0; + mNullColorbufferCache[i].height = 0; + mNullColorbufferCache[i].buffer = NULL; + } +} + +Renderer9::~Renderer9() +{ + releaseDeviceResources(); + + if (mDevice) + { + // If the device is lost, reset it first to prevent leaving the driver in an unstable state + if (testDeviceLost(false)) + { + resetDevice(); + } + + mDevice->Release(); + mDevice = NULL; + } + + if (mDeviceEx) + { + mDeviceEx->Release(); + mDeviceEx = NULL; + } + + if (mD3d9) + { + mD3d9->Release(); + mD3d9 = NULL; + } + + if (mDeviceWindow) + { + DestroyWindow(mDeviceWindow); + mDeviceWindow = NULL; + } + + if (mD3d9Ex) + { + mD3d9Ex->Release(); + mD3d9Ex = NULL; + } + + if (mD3d9Module) + { + mD3d9Module = NULL; + } + + while (!mMultiSampleSupport.empty()) + { + delete [] mMultiSampleSupport.begin()->second; + mMultiSampleSupport.erase(mMultiSampleSupport.begin()); + } +} + +Renderer9 *Renderer9::makeRenderer9(Renderer *renderer) +{ + ASSERT(HAS_DYNAMIC_TYPE(rx::Renderer9*, renderer)); + return static_cast(renderer); +} + +EGLint Renderer9::initialize() +{ + if (!initializeCompiler()) + { + return EGL_NOT_INITIALIZED; + } + + if (mSoftwareDevice) + { + mD3d9Module = GetModuleHandle(TEXT("swiftshader_d3d9.dll")); + } + else + { + mD3d9Module = GetModuleHandle(TEXT("d3d9.dll")); + } + + if (mD3d9Module == NULL) + { + ERR("No D3D9 module found - aborting!\n"); + return EGL_NOT_INITIALIZED; + } + + typedef HRESULT (WINAPI *Direct3DCreate9ExFunc)(UINT, IDirect3D9Ex**); + Direct3DCreate9ExFunc Direct3DCreate9ExPtr = reinterpret_cast(GetProcAddress(mD3d9Module, "Direct3DCreate9Ex")); + + // Use Direct3D9Ex if available. Among other things, this version is less + // inclined to report a lost context, for example when the user switches + // desktop. Direct3D9Ex is available in Windows Vista and later if suitable drivers are available. + if (ANGLE_ENABLE_D3D9EX && Direct3DCreate9ExPtr && SUCCEEDED(Direct3DCreate9ExPtr(D3D_SDK_VERSION, &mD3d9Ex))) + { + ASSERT(mD3d9Ex); + mD3d9Ex->QueryInterface(IID_IDirect3D9, reinterpret_cast(&mD3d9)); + ASSERT(mD3d9); + } + else + { + mD3d9 = Direct3DCreate9(D3D_SDK_VERSION); + } + + if (!mD3d9) + { + ERR("Could not create D3D9 device - aborting!\n"); + return EGL_NOT_INITIALIZED; + } + + if (mDc != NULL) + { + // UNIMPLEMENTED(); // FIXME: Determine which adapter index the device context corresponds to + } + + HRESULT result; + + // Give up on getting device caps after about one second. + for (int i = 0; i < 10; ++i) + { + result = mD3d9->GetDeviceCaps(mAdapter, mDeviceType, &mDeviceCaps); + if (SUCCEEDED(result)) + { + break; + } + else if (result == D3DERR_NOTAVAILABLE) + { + Sleep(100); // Give the driver some time to initialize/recover + } + else if (FAILED(result)) // D3DERR_OUTOFVIDEOMEMORY, E_OUTOFMEMORY, D3DERR_INVALIDDEVICE, or another error we can't recover from + { + ERR("failed to get device caps (0x%x)\n", result); + return EGL_NOT_INITIALIZED; + } + } + + if (mDeviceCaps.PixelShaderVersion < D3DPS_VERSION(2, 0)) + { + ERR("Renderer does not support PS 2.0. aborting!\n"); + return EGL_NOT_INITIALIZED; + } + + // When DirectX9 is running with an older DirectX8 driver, a StretchRect from a regular texture to a render target texture is not supported. + // This is required by Texture2D::convertToRenderTarget. + if ((mDeviceCaps.DevCaps2 & D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES) == 0) + { + ERR("Renderer does not support stretctrect from textures!\n"); + return EGL_NOT_INITIALIZED; + } + + mD3d9->GetAdapterIdentifier(mAdapter, 0, &mAdapterIdentifier); + + // ATI cards on XP have problems with non-power-of-two textures. + mSupportsNonPower2Textures = !(mDeviceCaps.TextureCaps & D3DPTEXTURECAPS_POW2) && + !(mDeviceCaps.TextureCaps & D3DPTEXTURECAPS_CUBEMAP_POW2) && + !(mDeviceCaps.TextureCaps & D3DPTEXTURECAPS_NONPOW2CONDITIONAL) && + !(getComparableOSVersion() < versionWindowsVista && mAdapterIdentifier.VendorId == VENDOR_ID_AMD); + + // Must support a minimum of 2:1 anisotropy for max anisotropy to be considered supported, per the spec + mSupportsTextureFilterAnisotropy = ((mDeviceCaps.RasterCaps & D3DPRASTERCAPS_ANISOTROPY) && (mDeviceCaps.MaxAnisotropy >= 2)); + + mMinSwapInterval = 4; + mMaxSwapInterval = 0; + + if (mDeviceCaps.PresentationIntervals & D3DPRESENT_INTERVAL_IMMEDIATE) + { + mMinSwapInterval = std::min(mMinSwapInterval, 0); + mMaxSwapInterval = std::max(mMaxSwapInterval, 0); + } + if (mDeviceCaps.PresentationIntervals & D3DPRESENT_INTERVAL_ONE) + { + mMinSwapInterval = std::min(mMinSwapInterval, 1); + mMaxSwapInterval = std::max(mMaxSwapInterval, 1); + } + if (mDeviceCaps.PresentationIntervals & D3DPRESENT_INTERVAL_TWO) + { + mMinSwapInterval = std::min(mMinSwapInterval, 2); + mMaxSwapInterval = std::max(mMaxSwapInterval, 2); + } + if (mDeviceCaps.PresentationIntervals & D3DPRESENT_INTERVAL_THREE) + { + mMinSwapInterval = std::min(mMinSwapInterval, 3); + mMaxSwapInterval = std::max(mMaxSwapInterval, 3); + } + if (mDeviceCaps.PresentationIntervals & D3DPRESENT_INTERVAL_FOUR) + { + mMinSwapInterval = std::min(mMinSwapInterval, 4); + mMaxSwapInterval = std::max(mMaxSwapInterval, 4); + } + + int max = 0; + for (unsigned int i = 0; i < ArraySize(RenderTargetFormats); ++i) + { + bool *multisampleArray = new bool[D3DMULTISAMPLE_16_SAMPLES + 1]; + getMultiSampleSupport(RenderTargetFormats[i], multisampleArray); + mMultiSampleSupport[RenderTargetFormats[i]] = multisampleArray; + + for (int j = D3DMULTISAMPLE_16_SAMPLES; j >= 0; --j) + { + if (multisampleArray[j] && j != D3DMULTISAMPLE_NONMASKABLE && j > max) + { + max = j; + } + } + } + + for (unsigned int i = 0; i < ArraySize(DepthStencilFormats); ++i) + { + if (DepthStencilFormats[i] == D3DFMT_UNKNOWN) + continue; + + bool *multisampleArray = new bool[D3DMULTISAMPLE_16_SAMPLES + 1]; + getMultiSampleSupport(DepthStencilFormats[i], multisampleArray); + mMultiSampleSupport[DepthStencilFormats[i]] = multisampleArray; + + for (int j = D3DMULTISAMPLE_16_SAMPLES; j >= 0; --j) + { + if (multisampleArray[j] && j != D3DMULTISAMPLE_NONMASKABLE && j > max) + { + max = j; + } + } + } + + mMaxSupportedSamples = max; + + static const TCHAR windowName[] = TEXT("AngleHiddenWindow"); + static const TCHAR className[] = TEXT("STATIC"); + + mDeviceWindow = CreateWindowEx(WS_EX_NOACTIVATE, className, windowName, WS_DISABLED | WS_POPUP, 0, 0, 1, 1, HWND_MESSAGE, NULL, GetModuleHandle(NULL), NULL); + + D3DPRESENT_PARAMETERS presentParameters = getDefaultPresentParameters(); + DWORD behaviorFlags = D3DCREATE_FPU_PRESERVE | D3DCREATE_NOWINDOWCHANGES; + + result = mD3d9->CreateDevice(mAdapter, mDeviceType, mDeviceWindow, behaviorFlags | D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_PUREDEVICE, &presentParameters, &mDevice); + if (result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY || result == D3DERR_DEVICELOST) + { + return EGL_BAD_ALLOC; + } + + if (FAILED(result)) + { + result = mD3d9->CreateDevice(mAdapter, mDeviceType, mDeviceWindow, behaviorFlags | D3DCREATE_SOFTWARE_VERTEXPROCESSING, &presentParameters, &mDevice); + + if (FAILED(result)) + { + ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY || result == D3DERR_NOTAVAILABLE || result == D3DERR_DEVICELOST); + return EGL_BAD_ALLOC; + } + } + + if (mD3d9Ex) + { + result = mDevice->QueryInterface(IID_IDirect3DDevice9Ex, (void**) &mDeviceEx); + ASSERT(SUCCEEDED(result)); + } + + mVertexShaderCache.initialize(mDevice); + mPixelShaderCache.initialize(mDevice); + + // Check occlusion query support + IDirect3DQuery9 *occlusionQuery = NULL; + if (SUCCEEDED(mDevice->CreateQuery(D3DQUERYTYPE_OCCLUSION, &occlusionQuery)) && occlusionQuery) + { + occlusionQuery->Release(); + mOcclusionQuerySupport = true; + } + else + { + mOcclusionQuerySupport = false; + } + + // Check event query support + IDirect3DQuery9 *eventQuery = NULL; + if (SUCCEEDED(mDevice->CreateQuery(D3DQUERYTYPE_EVENT, &eventQuery)) && eventQuery) + { + eventQuery->Release(); + mEventQuerySupport = true; + } + else + { + mEventQuerySupport = false; + } + + D3DDISPLAYMODE currentDisplayMode; + mD3d9->GetAdapterDisplayMode(mAdapter, ¤tDisplayMode); + + // Check vertex texture support + // Only Direct3D 10 ready devices support all the necessary vertex texture formats. + // We test this using D3D9 by checking support for the R16F format. + mVertexTextureSupport = mDeviceCaps.PixelShaderVersion >= D3DPS_VERSION(3, 0) && + SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, + D3DUSAGE_QUERY_VERTEXTEXTURE, D3DRTYPE_TEXTURE, D3DFMT_R16F)); + + // Check depth texture support + // we use INTZ for depth textures in Direct3D9 + // we also want NULL texture support to ensure the we can make depth-only FBOs + // see http://aras-p.info/texts/D3D9GPUHacks.html + mDepthTextureSupport = SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, + D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_TEXTURE, D3DFMT_INTZ)) && + SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, + D3DUSAGE_RENDERTARGET, D3DRTYPE_SURFACE, D3DFMT_NULL)); + + // Check 32 bit floating point texture support + mFloat32FilterSupport = SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, D3DUSAGE_QUERY_FILTER, + D3DRTYPE_TEXTURE, D3DFMT_A32B32G32R32F)) && + SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, D3DUSAGE_QUERY_FILTER, + D3DRTYPE_CUBETEXTURE, D3DFMT_A32B32G32R32F)); + + mFloat32RenderSupport = SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, D3DUSAGE_RENDERTARGET, + D3DRTYPE_TEXTURE, D3DFMT_A32B32G32R32F)) && + SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, D3DUSAGE_RENDERTARGET, + D3DRTYPE_CUBETEXTURE, D3DFMT_A32B32G32R32F)); + + if (!mFloat32FilterSupport && !mFloat32RenderSupport) + { + mFloat32TextureSupport = SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, 0, + D3DRTYPE_TEXTURE, D3DFMT_A32B32G32R32F)) && + SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, 0, + D3DRTYPE_CUBETEXTURE, D3DFMT_A32B32G32R32F)); + } + else + { + mFloat32TextureSupport = true; + } + + // Check 16 bit floating point texture support + mFloat16FilterSupport = SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, D3DUSAGE_QUERY_FILTER, + D3DRTYPE_TEXTURE, D3DFMT_A16B16G16R16F)) && + SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, D3DUSAGE_QUERY_FILTER, + D3DRTYPE_CUBETEXTURE, D3DFMT_A16B16G16R16F)); + + mFloat16RenderSupport = SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, D3DUSAGE_RENDERTARGET, + D3DRTYPE_TEXTURE, D3DFMT_A16B16G16R16F)) && + SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, D3DUSAGE_RENDERTARGET, + D3DRTYPE_CUBETEXTURE, D3DFMT_A16B16G16R16F)); + + if (!mFloat16FilterSupport && !mFloat16RenderSupport) + { + mFloat16TextureSupport = SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, 0, + D3DRTYPE_TEXTURE, D3DFMT_A16B16G16R16F)) && + SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, 0, + D3DRTYPE_CUBETEXTURE, D3DFMT_A16B16G16R16F)); + } + else + { + mFloat16TextureSupport = true; + } + + // Check DXT texture support + mDXT1TextureSupport = SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, 0, D3DRTYPE_TEXTURE, D3DFMT_DXT1)); + mDXT3TextureSupport = SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, 0, D3DRTYPE_TEXTURE, D3DFMT_DXT3)); + mDXT5TextureSupport = SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, 0, D3DRTYPE_TEXTURE, D3DFMT_DXT5)); + + // Check luminance[alpha] texture support + mLuminanceTextureSupport = SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, 0, D3DRTYPE_TEXTURE, D3DFMT_L8)); + mLuminanceAlphaTextureSupport = SUCCEEDED(mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, 0, D3DRTYPE_TEXTURE, D3DFMT_A8L8)); + + initializeDevice(); + + return EGL_SUCCESS; +} + +// do any one-time device initialization +// NOTE: this is also needed after a device lost/reset +// to reset the scene status and ensure the default states are reset. +void Renderer9::initializeDevice() +{ + // Permanent non-default states + mDevice->SetRenderState(D3DRS_POINTSPRITEENABLE, TRUE); + mDevice->SetRenderState(D3DRS_LASTPIXEL, FALSE); + + if (mDeviceCaps.PixelShaderVersion >= D3DPS_VERSION(3, 0)) + { + mDevice->SetRenderState(D3DRS_POINTSIZE_MAX, (DWORD&)mDeviceCaps.MaxPointSize); + } + else + { + mDevice->SetRenderState(D3DRS_POINTSIZE_MAX, 0x3F800000); // 1.0f + } + + markAllStateDirty(); + + mSceneStarted = false; + + ASSERT(!mBlit && !mVertexDataManager && !mIndexDataManager); + mBlit = new Blit(this); + mVertexDataManager = new rx::VertexDataManager(this); + mIndexDataManager = new rx::IndexDataManager(this); +} + +D3DPRESENT_PARAMETERS Renderer9::getDefaultPresentParameters() +{ + D3DPRESENT_PARAMETERS presentParameters = {0}; + + // The default swap chain is never actually used. Surface will create a new swap chain with the proper parameters. + presentParameters.AutoDepthStencilFormat = D3DFMT_UNKNOWN; + presentParameters.BackBufferCount = 1; + presentParameters.BackBufferFormat = D3DFMT_UNKNOWN; + presentParameters.BackBufferWidth = 1; + presentParameters.BackBufferHeight = 1; + presentParameters.EnableAutoDepthStencil = FALSE; + presentParameters.Flags = 0; + presentParameters.hDeviceWindow = mDeviceWindow; + presentParameters.MultiSampleQuality = 0; + presentParameters.MultiSampleType = D3DMULTISAMPLE_NONE; + presentParameters.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT; + presentParameters.SwapEffect = D3DSWAPEFFECT_DISCARD; + presentParameters.Windowed = TRUE; + + return presentParameters; +} + +int Renderer9::generateConfigs(ConfigDesc **configDescList) +{ + D3DDISPLAYMODE currentDisplayMode; + mD3d9->GetAdapterDisplayMode(mAdapter, ¤tDisplayMode); + + unsigned int numRenderFormats = ArraySize(RenderTargetFormats); + unsigned int numDepthFormats = ArraySize(DepthStencilFormats); + (*configDescList) = new ConfigDesc[numRenderFormats * numDepthFormats]; + int numConfigs = 0; + + for (unsigned int formatIndex = 0; formatIndex < numRenderFormats; formatIndex++) + { + D3DFORMAT renderTargetFormat = RenderTargetFormats[formatIndex]; + + HRESULT result = mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, D3DUSAGE_RENDERTARGET, D3DRTYPE_SURFACE, renderTargetFormat); + + if (SUCCEEDED(result)) + { + for (unsigned int depthStencilIndex = 0; depthStencilIndex < numDepthFormats; depthStencilIndex++) + { + D3DFORMAT depthStencilFormat = DepthStencilFormats[depthStencilIndex]; + HRESULT result = D3D_OK; + + if(depthStencilFormat != D3DFMT_UNKNOWN) + { + result = mD3d9->CheckDeviceFormat(mAdapter, mDeviceType, currentDisplayMode.Format, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, depthStencilFormat); + } + + if (SUCCEEDED(result)) + { + if(depthStencilFormat != D3DFMT_UNKNOWN) + { + result = mD3d9->CheckDepthStencilMatch(mAdapter, mDeviceType, currentDisplayMode.Format, renderTargetFormat, depthStencilFormat); + } + + if (SUCCEEDED(result)) + { + ConfigDesc newConfig; + newConfig.renderTargetFormat = d3d9_gl::ConvertBackBufferFormat(renderTargetFormat); + newConfig.depthStencilFormat = d3d9_gl::ConvertDepthStencilFormat(depthStencilFormat); + newConfig.multiSample = 0; // FIXME: enumerate multi-sampling + newConfig.fastConfig = (currentDisplayMode.Format == renderTargetFormat); + + (*configDescList)[numConfigs++] = newConfig; + } + } + } + } + } + + return numConfigs; +} + +void Renderer9::deleteConfigs(ConfigDesc *configDescList) +{ + delete [] (configDescList); +} + +void Renderer9::startScene() +{ + if (!mSceneStarted) + { + long result = mDevice->BeginScene(); + if (SUCCEEDED(result)) { + // This is defensive checking against the device being + // lost at unexpected times. + mSceneStarted = true; + } + } +} + +void Renderer9::endScene() +{ + if (mSceneStarted) + { + // EndScene can fail if the device was lost, for example due + // to a TDR during a draw call. + mDevice->EndScene(); + mSceneStarted = false; + } +} + +void Renderer9::sync(bool block) +{ + HRESULT result; + + IDirect3DQuery9* query = allocateEventQuery(); + if (!query) + { + return; + } + + result = query->Issue(D3DISSUE_END); + ASSERT(SUCCEEDED(result)); + + do + { + result = query->GetData(NULL, 0, D3DGETDATA_FLUSH); + + if(block && result == S_FALSE) + { + // Keep polling, but allow other threads to do something useful first + Sleep(0); + // explicitly check for device loss + // some drivers seem to return S_FALSE even if the device is lost + // instead of D3DERR_DEVICELOST like they should + if (testDeviceLost(false)) + { + result = D3DERR_DEVICELOST; + } + } + } + while(block && result == S_FALSE); + + freeEventQuery(query); + + if (d3d9::isDeviceLostError(result)) + { + notifyDeviceLost(); + } +} + +SwapChain *Renderer9::createSwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat) +{ + return new rx::SwapChain9(this, window, shareHandle, backBufferFormat, depthBufferFormat); +} + +IDirect3DQuery9* Renderer9::allocateEventQuery() +{ + IDirect3DQuery9 *query = NULL; + + if (mEventQueryPool.empty()) + { + HRESULT result = mDevice->CreateQuery(D3DQUERYTYPE_EVENT, &query); + ASSERT(SUCCEEDED(result)); + } + else + { + query = mEventQueryPool.back(); + mEventQueryPool.pop_back(); + } + + return query; +} + +void Renderer9::freeEventQuery(IDirect3DQuery9* query) +{ + if (mEventQueryPool.size() > 1000) + { + query->Release(); + } + else + { + mEventQueryPool.push_back(query); + } +} + +IDirect3DVertexShader9 *Renderer9::createVertexShader(const DWORD *function, size_t length) +{ + return mVertexShaderCache.create(function, length); +} + +IDirect3DPixelShader9 *Renderer9::createPixelShader(const DWORD *function, size_t length) +{ + return mPixelShaderCache.create(function, length); +} + +HRESULT Renderer9::createVertexBuffer(UINT Length, DWORD Usage, IDirect3DVertexBuffer9 **ppVertexBuffer) +{ + D3DPOOL Pool = getBufferPool(Usage); + return mDevice->CreateVertexBuffer(Length, Usage, 0, Pool, ppVertexBuffer, NULL); +} + +VertexBuffer *Renderer9::createVertexBuffer() +{ + return new VertexBuffer9(this); +} + +HRESULT Renderer9::createIndexBuffer(UINT Length, DWORD Usage, D3DFORMAT Format, IDirect3DIndexBuffer9 **ppIndexBuffer) +{ + D3DPOOL Pool = getBufferPool(Usage); + return mDevice->CreateIndexBuffer(Length, Usage, Format, Pool, ppIndexBuffer, NULL); +} + +IndexBuffer *Renderer9::createIndexBuffer() +{ + return new IndexBuffer9(this); +} + +BufferStorage *Renderer9::createBufferStorage() +{ + return new BufferStorage9(); +} + +QueryImpl *Renderer9::createQuery(GLenum type) +{ + return new Query9(this, type); +} + +FenceImpl *Renderer9::createFence() +{ + return new Fence9(this); +} + +void Renderer9::setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &samplerState) +{ + bool *forceSetSamplers = (type == gl::SAMPLER_PIXEL) ? mForceSetPixelSamplerStates : mForceSetVertexSamplerStates; + gl::SamplerState *appliedSamplers = (type == gl::SAMPLER_PIXEL) ? mCurPixelSamplerStates: mCurVertexSamplerStates; + + if (forceSetSamplers[index] || memcmp(&samplerState, &appliedSamplers[index], sizeof(gl::SamplerState)) != 0) + { + int d3dSamplerOffset = (type == gl::SAMPLER_PIXEL) ? 0 : D3DVERTEXTEXTURESAMPLER0; + int d3dSampler = index + d3dSamplerOffset; + + mDevice->SetSamplerState(d3dSampler, D3DSAMP_ADDRESSU, gl_d3d9::ConvertTextureWrap(samplerState.wrapS)); + mDevice->SetSamplerState(d3dSampler, D3DSAMP_ADDRESSV, gl_d3d9::ConvertTextureWrap(samplerState.wrapT)); + + mDevice->SetSamplerState(d3dSampler, D3DSAMP_MAGFILTER, gl_d3d9::ConvertMagFilter(samplerState.magFilter, samplerState.maxAnisotropy)); + D3DTEXTUREFILTERTYPE d3dMinFilter, d3dMipFilter; + gl_d3d9::ConvertMinFilter(samplerState.minFilter, &d3dMinFilter, &d3dMipFilter, samplerState.maxAnisotropy); + mDevice->SetSamplerState(d3dSampler, D3DSAMP_MINFILTER, d3dMinFilter); + mDevice->SetSamplerState(d3dSampler, D3DSAMP_MIPFILTER, d3dMipFilter); + mDevice->SetSamplerState(d3dSampler, D3DSAMP_MAXMIPLEVEL, samplerState.lodOffset); + if (mSupportsTextureFilterAnisotropy) + { + mDevice->SetSamplerState(d3dSampler, D3DSAMP_MAXANISOTROPY, (DWORD)samplerState.maxAnisotropy); + } + } + + forceSetSamplers[index] = false; + appliedSamplers[index] = samplerState; +} + +void Renderer9::setTexture(gl::SamplerType type, int index, gl::Texture *texture) +{ + int d3dSamplerOffset = (type == gl::SAMPLER_PIXEL) ? 0 : D3DVERTEXTEXTURESAMPLER0; + int d3dSampler = index + d3dSamplerOffset; + IDirect3DBaseTexture9 *d3dTexture = NULL; + unsigned int serial = 0; + bool forceSetTexture = false; + + unsigned int *appliedSerials = (type == gl::SAMPLER_PIXEL) ? mCurPixelTextureSerials : mCurVertexTextureSerials; + + if (texture) + { + TextureStorageInterface *texStorage = texture->getNativeTexture(); + if (texStorage) + { + TextureStorage9 *storage9 = TextureStorage9::makeTextureStorage9(texStorage->getStorageInstance()); + d3dTexture = storage9->getBaseTexture(); + } + // If we get NULL back from getBaseTexture here, something went wrong + // in the texture class and we're unexpectedly missing the d3d texture + ASSERT(d3dTexture != NULL); + + serial = texture->getTextureSerial(); + forceSetTexture = texture->hasDirtyImages(); + } + + if (forceSetTexture || appliedSerials[index] != serial) + { + mDevice->SetTexture(d3dSampler, d3dTexture); + } + + appliedSerials[index] = serial; +} + +void Renderer9::setRasterizerState(const gl::RasterizerState &rasterState) +{ + bool rasterStateChanged = mForceSetRasterState || memcmp(&rasterState, &mCurRasterState, sizeof(gl::RasterizerState)) != 0; + + if (rasterStateChanged) + { + // Set the cull mode + if (rasterState.cullFace) + { + mDevice->SetRenderState(D3DRS_CULLMODE, gl_d3d9::ConvertCullMode(rasterState.cullMode, rasterState.frontFace)); + } + else + { + mDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); + } + + if (rasterState.polygonOffsetFill) + { + if (mCurDepthSize > 0) + { + mDevice->SetRenderState(D3DRS_SLOPESCALEDEPTHBIAS, *(DWORD*)&rasterState.polygonOffsetFactor); + + float depthBias = ldexp(rasterState.polygonOffsetUnits, -static_cast(mCurDepthSize)); + mDevice->SetRenderState(D3DRS_DEPTHBIAS, *(DWORD*)&depthBias); + } + } + else + { + mDevice->SetRenderState(D3DRS_SLOPESCALEDEPTHBIAS, 0); + mDevice->SetRenderState(D3DRS_DEPTHBIAS, 0); + } + + mCurRasterState = rasterState; + } + + mForceSetRasterState = false; +} + +void Renderer9::setBlendState(const gl::BlendState &blendState, const gl::Color &blendColor, unsigned int sampleMask) +{ + bool blendStateChanged = mForceSetBlendState || memcmp(&blendState, &mCurBlendState, sizeof(gl::BlendState)) != 0; + bool blendColorChanged = mForceSetBlendState || memcmp(&blendColor, &mCurBlendColor, sizeof(gl::Color)) != 0; + bool sampleMaskChanged = mForceSetBlendState || sampleMask != mCurSampleMask; + + if (blendStateChanged || blendColorChanged) + { + if (blendState.blend) + { + mDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); + + if (blendState.sourceBlendRGB != GL_CONSTANT_ALPHA && blendState.sourceBlendRGB != GL_ONE_MINUS_CONSTANT_ALPHA && + blendState.destBlendRGB != GL_CONSTANT_ALPHA && blendState.destBlendRGB != GL_ONE_MINUS_CONSTANT_ALPHA) + { + mDevice->SetRenderState(D3DRS_BLENDFACTOR, gl_d3d9::ConvertColor(blendColor)); + } + else + { + mDevice->SetRenderState(D3DRS_BLENDFACTOR, D3DCOLOR_RGBA(gl::unorm<8>(blendColor.alpha), + gl::unorm<8>(blendColor.alpha), + gl::unorm<8>(blendColor.alpha), + gl::unorm<8>(blendColor.alpha))); + } + + mDevice->SetRenderState(D3DRS_SRCBLEND, gl_d3d9::ConvertBlendFunc(blendState.sourceBlendRGB)); + mDevice->SetRenderState(D3DRS_DESTBLEND, gl_d3d9::ConvertBlendFunc(blendState.destBlendRGB)); + mDevice->SetRenderState(D3DRS_BLENDOP, gl_d3d9::ConvertBlendOp(blendState.blendEquationRGB)); + + if (blendState.sourceBlendRGB != blendState.sourceBlendAlpha || + blendState.destBlendRGB != blendState.destBlendAlpha || + blendState.blendEquationRGB != blendState.blendEquationAlpha) + { + mDevice->SetRenderState(D3DRS_SEPARATEALPHABLENDENABLE, TRUE); + + mDevice->SetRenderState(D3DRS_SRCBLENDALPHA, gl_d3d9::ConvertBlendFunc(blendState.sourceBlendAlpha)); + mDevice->SetRenderState(D3DRS_DESTBLENDALPHA, gl_d3d9::ConvertBlendFunc(blendState.destBlendAlpha)); + mDevice->SetRenderState(D3DRS_BLENDOPALPHA, gl_d3d9::ConvertBlendOp(blendState.blendEquationAlpha)); + } + else + { + mDevice->SetRenderState(D3DRS_SEPARATEALPHABLENDENABLE, FALSE); + } + } + else + { + mDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE); + } + + if (blendState.sampleAlphaToCoverage) + { + FIXME("Sample alpha to coverage is unimplemented."); + } + + // Set the color mask + bool zeroColorMaskAllowed = getAdapterVendor() != VENDOR_ID_AMD; + // Apparently some ATI cards have a bug where a draw with a zero color + // write mask can cause later draws to have incorrect results. Instead, + // set a nonzero color write mask but modify the blend state so that no + // drawing is done. + // http://code.google.com/p/angleproject/issues/detail?id=169 + + DWORD colorMask = gl_d3d9::ConvertColorMask(blendState.colorMaskRed, blendState.colorMaskGreen, + blendState.colorMaskBlue, blendState.colorMaskAlpha); + if (colorMask == 0 && !zeroColorMaskAllowed) + { + // Enable green channel, but set blending so nothing will be drawn. + mDevice->SetRenderState(D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_GREEN); + mDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); + + mDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO); + mDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE); + mDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD); + } + else + { + mDevice->SetRenderState(D3DRS_COLORWRITEENABLE, colorMask); + } + + mDevice->SetRenderState(D3DRS_DITHERENABLE, blendState.dither ? TRUE : FALSE); + + mCurBlendState = blendState; + mCurBlendColor = blendColor; + } + + if (sampleMaskChanged) + { + // Set the multisample mask + mDevice->SetRenderState(D3DRS_MULTISAMPLEANTIALIAS, TRUE); + mDevice->SetRenderState(D3DRS_MULTISAMPLEMASK, static_cast(sampleMask)); + + mCurSampleMask = sampleMask; + } + + mForceSetBlendState = false; +} + +void Renderer9::setDepthStencilState(const gl::DepthStencilState &depthStencilState, int stencilRef, + int stencilBackRef, bool frontFaceCCW) +{ + bool depthStencilStateChanged = mForceSetDepthStencilState || + memcmp(&depthStencilState, &mCurDepthStencilState, sizeof(gl::DepthStencilState)) != 0; + bool stencilRefChanged = mForceSetDepthStencilState || stencilRef != mCurStencilRef || + stencilBackRef != mCurStencilBackRef; + bool frontFaceCCWChanged = mForceSetDepthStencilState || frontFaceCCW != mCurFrontFaceCCW; + + if (depthStencilStateChanged) + { + if (depthStencilState.depthTest) + { + mDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE); + mDevice->SetRenderState(D3DRS_ZFUNC, gl_d3d9::ConvertComparison(depthStencilState.depthFunc)); + } + else + { + mDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); + } + + mCurDepthStencilState = depthStencilState; + } + + if (depthStencilStateChanged || stencilRefChanged || frontFaceCCWChanged) + { + if (depthStencilState.stencilTest && mCurStencilSize > 0) + { + mDevice->SetRenderState(D3DRS_STENCILENABLE, TRUE); + mDevice->SetRenderState(D3DRS_TWOSIDEDSTENCILMODE, TRUE); + + // FIXME: Unsupported by D3D9 + const D3DRENDERSTATETYPE D3DRS_CCW_STENCILREF = D3DRS_STENCILREF; + const D3DRENDERSTATETYPE D3DRS_CCW_STENCILMASK = D3DRS_STENCILMASK; + const D3DRENDERSTATETYPE D3DRS_CCW_STENCILWRITEMASK = D3DRS_STENCILWRITEMASK; + if (depthStencilState.stencilWritemask != depthStencilState.stencilBackWritemask || + stencilRef != stencilBackRef || + depthStencilState.stencilMask != depthStencilState.stencilBackMask) + { + ERR("Separate front/back stencil writemasks, reference values, or stencil mask values are invalid under WebGL."); + return gl::error(GL_INVALID_OPERATION); + } + + // get the maximum size of the stencil ref + unsigned int maxStencil = (1 << mCurStencilSize) - 1; + + mDevice->SetRenderState(frontFaceCCW ? D3DRS_STENCILWRITEMASK : D3DRS_CCW_STENCILWRITEMASK, + depthStencilState.stencilWritemask); + mDevice->SetRenderState(frontFaceCCW ? D3DRS_STENCILFUNC : D3DRS_CCW_STENCILFUNC, + gl_d3d9::ConvertComparison(depthStencilState.stencilFunc)); + + mDevice->SetRenderState(frontFaceCCW ? D3DRS_STENCILREF : D3DRS_CCW_STENCILREF, + (stencilRef < (int)maxStencil) ? stencilRef : maxStencil); + mDevice->SetRenderState(frontFaceCCW ? D3DRS_STENCILMASK : D3DRS_CCW_STENCILMASK, + depthStencilState.stencilMask); + + mDevice->SetRenderState(frontFaceCCW ? D3DRS_STENCILFAIL : D3DRS_CCW_STENCILFAIL, + gl_d3d9::ConvertStencilOp(depthStencilState.stencilFail)); + mDevice->SetRenderState(frontFaceCCW ? D3DRS_STENCILZFAIL : D3DRS_CCW_STENCILZFAIL, + gl_d3d9::ConvertStencilOp(depthStencilState.stencilPassDepthFail)); + mDevice->SetRenderState(frontFaceCCW ? D3DRS_STENCILPASS : D3DRS_CCW_STENCILPASS, + gl_d3d9::ConvertStencilOp(depthStencilState.stencilPassDepthPass)); + + mDevice->SetRenderState(!frontFaceCCW ? D3DRS_STENCILWRITEMASK : D3DRS_CCW_STENCILWRITEMASK, + depthStencilState.stencilBackWritemask); + mDevice->SetRenderState(!frontFaceCCW ? D3DRS_STENCILFUNC : D3DRS_CCW_STENCILFUNC, + gl_d3d9::ConvertComparison(depthStencilState.stencilBackFunc)); + + mDevice->SetRenderState(!frontFaceCCW ? D3DRS_STENCILREF : D3DRS_CCW_STENCILREF, + (stencilBackRef < (int)maxStencil) ? stencilBackRef : maxStencil); + mDevice->SetRenderState(!frontFaceCCW ? D3DRS_STENCILMASK : D3DRS_CCW_STENCILMASK, + depthStencilState.stencilBackMask); + + mDevice->SetRenderState(!frontFaceCCW ? D3DRS_STENCILFAIL : D3DRS_CCW_STENCILFAIL, + gl_d3d9::ConvertStencilOp(depthStencilState.stencilBackFail)); + mDevice->SetRenderState(!frontFaceCCW ? D3DRS_STENCILZFAIL : D3DRS_CCW_STENCILZFAIL, + gl_d3d9::ConvertStencilOp(depthStencilState.stencilBackPassDepthFail)); + mDevice->SetRenderState(!frontFaceCCW ? D3DRS_STENCILPASS : D3DRS_CCW_STENCILPASS, + gl_d3d9::ConvertStencilOp(depthStencilState.stencilBackPassDepthPass)); + } + else + { + mDevice->SetRenderState(D3DRS_STENCILENABLE, FALSE); + } + + mDevice->SetRenderState(D3DRS_ZWRITEENABLE, depthStencilState.depthMask ? TRUE : FALSE); + + mCurStencilRef = stencilRef; + mCurStencilBackRef = stencilBackRef; + mCurFrontFaceCCW = frontFaceCCW; + } + + mForceSetDepthStencilState = false; +} + +void Renderer9::setScissorRectangle(const gl::Rectangle &scissor, bool enabled) +{ + bool scissorChanged = mForceSetScissor || + memcmp(&scissor, &mCurScissor, sizeof(gl::Rectangle)) != 0 || + enabled != mScissorEnabled; + + if (scissorChanged) + { + if (enabled) + { + RECT rect; + rect.left = gl::clamp(scissor.x, 0, static_cast(mRenderTargetDesc.width)); + rect.top = gl::clamp(scissor.y, 0, static_cast(mRenderTargetDesc.height)); + rect.right = gl::clamp(scissor.x + scissor.width, 0, static_cast(mRenderTargetDesc.width)); + rect.bottom = gl::clamp(scissor.y + scissor.height, 0, static_cast(mRenderTargetDesc.height)); + mDevice->SetScissorRect(&rect); + } + + mDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, enabled ? TRUE : FALSE); + + mScissorEnabled = enabled; + mCurScissor = scissor; + } + + mForceSetScissor = false; +} + +bool Renderer9::setViewport(const gl::Rectangle &viewport, float zNear, float zFar, GLenum drawMode, GLenum frontFace, + bool ignoreViewport) +{ + gl::Rectangle actualViewport = viewport; + float actualZNear = gl::clamp01(zNear); + float actualZFar = gl::clamp01(zFar); + if (ignoreViewport) + { + actualViewport.x = 0; + actualViewport.y = 0; + actualViewport.width = mRenderTargetDesc.width; + actualViewport.height = mRenderTargetDesc.height; + actualZNear = 0.0f; + actualZFar = 1.0f; + } + + D3DVIEWPORT9 dxViewport; + dxViewport.X = gl::clamp(actualViewport.x, 0, static_cast(mRenderTargetDesc.width)); + dxViewport.Y = gl::clamp(actualViewport.y, 0, static_cast(mRenderTargetDesc.height)); + dxViewport.Width = gl::clamp(actualViewport.width, 0, static_cast(mRenderTargetDesc.width) - static_cast(dxViewport.X)); + dxViewport.Height = gl::clamp(actualViewport.height, 0, static_cast(mRenderTargetDesc.height) - static_cast(dxViewport.Y)); + dxViewport.MinZ = actualZNear; + dxViewport.MaxZ = actualZFar; + + if (dxViewport.Width <= 0 || dxViewport.Height <= 0) + { + return false; // Nothing to render + } + + bool viewportChanged = mForceSetViewport || memcmp(&actualViewport, &mCurViewport, sizeof(gl::Rectangle)) != 0 || + actualZNear != mCurNear || actualZFar != mCurFar; + if (viewportChanged) + { + mDevice->SetViewport(&dxViewport); + + mCurViewport = actualViewport; + mCurNear = actualZNear; + mCurFar = actualZFar; + + dx_VertexConstants vc = {0}; + dx_PixelConstants pc = {0}; + + vc.viewAdjust[0] = (float)((actualViewport.width - (int)dxViewport.Width) + 2 * (actualViewport.x - (int)dxViewport.X) - 1) / dxViewport.Width; + vc.viewAdjust[1] = (float)((actualViewport.height - (int)dxViewport.Height) + 2 * (actualViewport.y - (int)dxViewport.Y) - 1) / dxViewport.Height; + vc.viewAdjust[2] = (float)actualViewport.width / dxViewport.Width; + vc.viewAdjust[3] = (float)actualViewport.height / dxViewport.Height; + + pc.viewCoords[0] = actualViewport.width * 0.5f; + pc.viewCoords[1] = actualViewport.height * 0.5f; + pc.viewCoords[2] = actualViewport.x + (actualViewport.width * 0.5f); + pc.viewCoords[3] = actualViewport.y + (actualViewport.height * 0.5f); + + pc.depthFront[0] = (actualZFar - actualZNear) * 0.5f; + pc.depthFront[1] = (actualZNear + actualZFar) * 0.5f; + pc.depthFront[2] = !gl::IsTriangleMode(drawMode) ? 0.0f : (frontFace == GL_CCW ? 1.0f : -1.0f);; + + vc.depthRange[0] = actualZNear; + vc.depthRange[1] = actualZFar; + vc.depthRange[2] = actualZFar - actualZNear; + + pc.depthRange[0] = actualZNear; + pc.depthRange[1] = actualZFar; + pc.depthRange[2] = actualZFar - actualZNear; + + if (memcmp(&vc, &mVertexConstants, sizeof(dx_VertexConstants)) != 0) + { + mVertexConstants = vc; + mDxUniformsDirty = true; + } + + if (memcmp(&pc, &mPixelConstants, sizeof(dx_PixelConstants)) != 0) + { + mPixelConstants = pc; + mDxUniformsDirty = true; + } + } + + mForceSetViewport = false; + return true; +} + +bool Renderer9::applyPrimitiveType(GLenum mode, GLsizei count) +{ + switch (mode) + { + case GL_POINTS: + mPrimitiveType = D3DPT_POINTLIST; + mPrimitiveCount = count; + break; + case GL_LINES: + mPrimitiveType = D3DPT_LINELIST; + mPrimitiveCount = count / 2; + break; + case GL_LINE_LOOP: + mPrimitiveType = D3DPT_LINESTRIP; + mPrimitiveCount = count - 1; // D3D doesn't support line loops, so we draw the last line separately + break; + case GL_LINE_STRIP: + mPrimitiveType = D3DPT_LINESTRIP; + mPrimitiveCount = count - 1; + break; + case GL_TRIANGLES: + mPrimitiveType = D3DPT_TRIANGLELIST; + mPrimitiveCount = count / 3; + break; + case GL_TRIANGLE_STRIP: + mPrimitiveType = D3DPT_TRIANGLESTRIP; + mPrimitiveCount = count - 2; + break; + case GL_TRIANGLE_FAN: + mPrimitiveType = D3DPT_TRIANGLEFAN; + mPrimitiveCount = count - 2; + break; + default: + return gl::error(GL_INVALID_ENUM, false); + } + + return mPrimitiveCount > 0; +} + + +gl::Renderbuffer *Renderer9::getNullColorbuffer(gl::Renderbuffer *depthbuffer) +{ + if (!depthbuffer) + { + ERR("Unexpected null depthbuffer for depth-only FBO."); + return NULL; + } + + GLsizei width = depthbuffer->getWidth(); + GLsizei height = depthbuffer->getHeight(); + + // search cached nullcolorbuffers + for (int i = 0; i < NUM_NULL_COLORBUFFER_CACHE_ENTRIES; i++) + { + if (mNullColorbufferCache[i].buffer != NULL && + mNullColorbufferCache[i].width == width && + mNullColorbufferCache[i].height == height) + { + mNullColorbufferCache[i].lruCount = ++mMaxNullColorbufferLRU; + return mNullColorbufferCache[i].buffer; + } + } + + gl::Renderbuffer *nullbuffer = new gl::Renderbuffer(this, 0, new gl::Colorbuffer(this, width, height, GL_NONE, 0)); + + // add nullbuffer to the cache + NullColorbufferCacheEntry *oldest = &mNullColorbufferCache[0]; + for (int i = 1; i < NUM_NULL_COLORBUFFER_CACHE_ENTRIES; i++) + { + if (mNullColorbufferCache[i].lruCount < oldest->lruCount) + { + oldest = &mNullColorbufferCache[i]; + } + } + + delete oldest->buffer; + oldest->buffer = nullbuffer; + oldest->lruCount = ++mMaxNullColorbufferLRU; + oldest->width = width; + oldest->height = height; + + return nullbuffer; +} + +bool Renderer9::applyRenderTarget(gl::Framebuffer *framebuffer) +{ + // if there is no color attachment we must synthesize a NULL colorattachment + // to keep the D3D runtime happy. This should only be possible if depth texturing. + gl::Renderbuffer *renderbufferObject = NULL; + if (framebuffer->getColorbufferType(0) != GL_NONE) + { + renderbufferObject = framebuffer->getColorbuffer(0); + } + else + { + renderbufferObject = getNullColorbuffer(framebuffer->getDepthbuffer()); + } + if (!renderbufferObject) + { + ERR("unable to locate renderbuffer for FBO."); + return false; + } + + bool renderTargetChanged = false; + unsigned int renderTargetSerial = renderbufferObject->getSerial(); + if (renderTargetSerial != mAppliedRenderTargetSerial) + { + // Apply the render target on the device + IDirect3DSurface9 *renderTargetSurface = NULL; + + RenderTarget *renderTarget = renderbufferObject->getRenderTarget(); + if (renderTarget) + { + renderTargetSurface = RenderTarget9::makeRenderTarget9(renderTarget)->getSurface(); + } + + if (!renderTargetSurface) + { + ERR("render target pointer unexpectedly null."); + return false; // Context must be lost + } + + mDevice->SetRenderTarget(0, renderTargetSurface); + renderTargetSurface->Release(); + + mAppliedRenderTargetSerial = renderTargetSerial; + renderTargetChanged = true; + } + + gl::Renderbuffer *depthStencil = NULL; + unsigned int depthbufferSerial = 0; + unsigned int stencilbufferSerial = 0; + if (framebuffer->getDepthbufferType() != GL_NONE) + { + depthStencil = framebuffer->getDepthbuffer(); + if (!depthStencil) + { + ERR("Depth stencil pointer unexpectedly null."); + return false; + } + + depthbufferSerial = depthStencil->getSerial(); + } + else if (framebuffer->getStencilbufferType() != GL_NONE) + { + depthStencil = framebuffer->getStencilbuffer(); + if (!depthStencil) + { + ERR("Depth stencil pointer unexpectedly null."); + return false; + } + + stencilbufferSerial = depthStencil->getSerial(); + } + + if (depthbufferSerial != mAppliedDepthbufferSerial || + stencilbufferSerial != mAppliedStencilbufferSerial || + !mDepthStencilInitialized) + { + unsigned int depthSize = 0; + unsigned int stencilSize = 0; + + // Apply the depth stencil on the device + if (depthStencil) + { + IDirect3DSurface9 *depthStencilSurface = NULL; + RenderTarget *depthStencilRenderTarget = depthStencil->getDepthStencil(); + + if (depthStencilRenderTarget) + { + depthStencilSurface = RenderTarget9::makeRenderTarget9(depthStencilRenderTarget)->getSurface(); + } + + if (!depthStencilSurface) + { + ERR("depth stencil pointer unexpectedly null."); + return false; // Context must be lost + } + + mDevice->SetDepthStencilSurface(depthStencilSurface); + depthStencilSurface->Release(); + + depthSize = depthStencil->getDepthSize(); + stencilSize = depthStencil->getStencilSize(); + } + else + { + mDevice->SetDepthStencilSurface(NULL); + } + + if (!mDepthStencilInitialized || depthSize != mCurDepthSize) + { + mCurDepthSize = depthSize; + mForceSetRasterState = true; + } + + if (!mDepthStencilInitialized || stencilSize != mCurStencilSize) + { + mCurStencilSize = stencilSize; + mForceSetDepthStencilState = true; + } + + mAppliedDepthbufferSerial = depthbufferSerial; + mAppliedStencilbufferSerial = stencilbufferSerial; + mDepthStencilInitialized = true; + } + + if (renderTargetChanged || !mRenderTargetDescInitialized) + { + mForceSetScissor = true; + mForceSetViewport = true; + + mRenderTargetDesc.width = renderbufferObject->getWidth(); + mRenderTargetDesc.height = renderbufferObject->getHeight(); + mRenderTargetDesc.format = renderbufferObject->getActualFormat(); + mRenderTargetDescInitialized = true; + } + + return true; +} + +GLenum Renderer9::applyVertexBuffer(gl::ProgramBinary *programBinary, gl::VertexAttribute vertexAttributes[], GLint first, GLsizei count, GLsizei instances) +{ + TranslatedAttribute attributes[gl::MAX_VERTEX_ATTRIBS]; + GLenum err = mVertexDataManager->prepareVertexData(vertexAttributes, programBinary, first, count, attributes, instances); + if (err != GL_NO_ERROR) + { + return err; + } + + return mVertexDeclarationCache.applyDeclaration(mDevice, attributes, programBinary, instances, &mRepeatDraw); +} + +// Applies the indices and element array bindings to the Direct3D 9 device +GLenum Renderer9::applyIndexBuffer(const GLvoid *indices, gl::Buffer *elementArrayBuffer, GLsizei count, GLenum mode, GLenum type, TranslatedIndexData *indexInfo) +{ + GLenum err = mIndexDataManager->prepareIndexData(type, count, elementArrayBuffer, indices, indexInfo); + + if (err == GL_NO_ERROR) + { + // Directly binding the storage buffer is not supported for d3d9 + ASSERT(indexInfo->storage == NULL); + + if (indexInfo->serial != mAppliedIBSerial) + { + IndexBuffer9* indexBuffer = IndexBuffer9::makeIndexBuffer9(indexInfo->indexBuffer); + + mDevice->SetIndices(indexBuffer->getBuffer()); + mAppliedIBSerial = indexInfo->serial; + } + } + + return err; +} + +void Renderer9::drawArrays(GLenum mode, GLsizei count, GLsizei instances) +{ + startScene(); + + if (mode == GL_LINE_LOOP) + { + drawLineLoop(count, GL_NONE, NULL, 0, NULL); + } + else if (instances > 0) + { + StaticIndexBufferInterface *countingIB = mIndexDataManager->getCountingIndices(count); + if (countingIB) + { + if (mAppliedIBSerial != countingIB->getSerial()) + { + IndexBuffer9 *indexBuffer = IndexBuffer9::makeIndexBuffer9(countingIB->getIndexBuffer()); + + mDevice->SetIndices(indexBuffer->getBuffer()); + mAppliedIBSerial = countingIB->getSerial(); + } + + for (int i = 0; i < mRepeatDraw; i++) + { + mDevice->DrawIndexedPrimitive(mPrimitiveType, 0, 0, count, 0, mPrimitiveCount); + } + } + else + { + ERR("Could not create a counting index buffer for glDrawArraysInstanced."); + return gl::error(GL_OUT_OF_MEMORY); + } + } + else // Regular case + { + mDevice->DrawPrimitive(mPrimitiveType, 0, mPrimitiveCount); + } +} + +void Renderer9::drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, gl::Buffer *elementArrayBuffer, const TranslatedIndexData &indexInfo, GLsizei /*instances*/) +{ + startScene(); + + if (mode == GL_POINTS) + { + drawIndexedPoints(count, type, indices, elementArrayBuffer); + } + else if (mode == GL_LINE_LOOP) + { + drawLineLoop(count, type, indices, indexInfo.minIndex, elementArrayBuffer); + } + else + { + for (int i = 0; i < mRepeatDraw; i++) + { + GLsizei vertexCount = indexInfo.maxIndex - indexInfo.minIndex + 1; + mDevice->DrawIndexedPrimitive(mPrimitiveType, -(INT)indexInfo.minIndex, indexInfo.minIndex, vertexCount, indexInfo.startIndex, mPrimitiveCount); + } + } +} + +void Renderer9::drawLineLoop(GLsizei count, GLenum type, const GLvoid *indices, int minIndex, gl::Buffer *elementArrayBuffer) +{ + // Get the raw indices for an indexed draw + if (type != GL_NONE && elementArrayBuffer) + { + gl::Buffer *indexBuffer = elementArrayBuffer; + BufferStorage *storage = indexBuffer->getStorage(); + intptr_t offset = reinterpret_cast(indices); + indices = static_cast(storage->getData()) + offset; + } + + UINT startIndex = 0; + + if (get32BitIndexSupport()) + { + if (!mLineLoopIB) + { + mLineLoopIB = new StreamingIndexBufferInterface(this); + if (!mLineLoopIB->reserveBufferSpace(INITIAL_INDEX_BUFFER_SIZE, GL_UNSIGNED_INT)) + { + delete mLineLoopIB; + mLineLoopIB = NULL; + + ERR("Could not create a 32-bit looping index buffer for GL_LINE_LOOP."); + return gl::error(GL_OUT_OF_MEMORY); + } + } + + if (static_cast(count + 1) > (std::numeric_limits::max() / sizeof(unsigned int))) + { + ERR("Could not create a 32-bit looping index buffer for GL_LINE_LOOP, too many indices required."); + return gl::error(GL_OUT_OF_MEMORY); + } + + const unsigned int spaceNeeded = (count + 1) * sizeof(unsigned int); + if (!mLineLoopIB->reserveBufferSpace(spaceNeeded, GL_UNSIGNED_INT)) + { + ERR("Could not reserve enough space in looping index buffer for GL_LINE_LOOP."); + return gl::error(GL_OUT_OF_MEMORY); + } + + void* mappedMemory = NULL; + int offset = mLineLoopIB->mapBuffer(spaceNeeded, &mappedMemory); + if (offset == -1 || mappedMemory == NULL) + { + ERR("Could not map index buffer for GL_LINE_LOOP."); + return gl::error(GL_OUT_OF_MEMORY); + } + + startIndex = static_cast(offset) / 4; + unsigned int *data = reinterpret_cast(mappedMemory); + + switch (type) + { + case GL_NONE: // Non-indexed draw + for (int i = 0; i < count; i++) + { + data[i] = i; + } + data[count] = 0; + break; + case GL_UNSIGNED_BYTE: + for (int i = 0; i < count; i++) + { + data[i] = static_cast(indices)[i]; + } + data[count] = static_cast(indices)[0]; + break; + case GL_UNSIGNED_SHORT: + for (int i = 0; i < count; i++) + { + data[i] = static_cast(indices)[i]; + } + data[count] = static_cast(indices)[0]; + break; + case GL_UNSIGNED_INT: + for (int i = 0; i < count; i++) + { + data[i] = static_cast(indices)[i]; + } + data[count] = static_cast(indices)[0]; + break; + default: UNREACHABLE(); + } + + if (!mLineLoopIB->unmapBuffer()) + { + ERR("Could not unmap index buffer for GL_LINE_LOOP."); + return gl::error(GL_OUT_OF_MEMORY); + } + } + else + { + if (!mLineLoopIB) + { + mLineLoopIB = new StreamingIndexBufferInterface(this); + if (!mLineLoopIB->reserveBufferSpace(INITIAL_INDEX_BUFFER_SIZE, GL_UNSIGNED_SHORT)) + { + delete mLineLoopIB; + mLineLoopIB = NULL; + + ERR("Could not create a 16-bit looping index buffer for GL_LINE_LOOP."); + return gl::error(GL_OUT_OF_MEMORY); + } + } + + if (static_cast(count + 1) > (std::numeric_limits::max() / sizeof(unsigned short))) + { + ERR("Could not create a 16-bit looping index buffer for GL_LINE_LOOP, too many indices required."); + return gl::error(GL_OUT_OF_MEMORY); + } + + const int spaceNeeded = (count + 1) * sizeof(unsigned short); + if (!mLineLoopIB->reserveBufferSpace(spaceNeeded, GL_UNSIGNED_SHORT)) + { + ERR("Could not reserve enough space in looping index buffer for GL_LINE_LOOP."); + return gl::error(GL_OUT_OF_MEMORY); + } + + void* mappedMemory = NULL; + int offset = mLineLoopIB->mapBuffer(spaceNeeded, &mappedMemory); + if (offset == -1 || mappedMemory == NULL) + { + ERR("Could not map index buffer for GL_LINE_LOOP."); + return gl::error(GL_OUT_OF_MEMORY); + } + + startIndex = static_cast(offset) / 2; + unsigned short *data = reinterpret_cast(mappedMemory); + + switch (type) + { + case GL_NONE: // Non-indexed draw + for (int i = 0; i < count; i++) + { + data[i] = i; + } + data[count] = 0; + break; + case GL_UNSIGNED_BYTE: + for (int i = 0; i < count; i++) + { + data[i] = static_cast(indices)[i]; + } + data[count] = static_cast(indices)[0]; + break; + case GL_UNSIGNED_SHORT: + for (int i = 0; i < count; i++) + { + data[i] = static_cast(indices)[i]; + } + data[count] = static_cast(indices)[0]; + break; + case GL_UNSIGNED_INT: + for (int i = 0; i < count; i++) + { + data[i] = static_cast(indices)[i]; + } + data[count] = static_cast(indices)[0]; + break; + default: UNREACHABLE(); + } + + if (!mLineLoopIB->unmapBuffer()) + { + ERR("Could not unmap index buffer for GL_LINE_LOOP."); + return gl::error(GL_OUT_OF_MEMORY); + } + } + + if (mAppliedIBSerial != mLineLoopIB->getSerial()) + { + IndexBuffer9 *indexBuffer = IndexBuffer9::makeIndexBuffer9(mLineLoopIB->getIndexBuffer()); + + mDevice->SetIndices(indexBuffer->getBuffer()); + mAppliedIBSerial = mLineLoopIB->getSerial(); + } + + mDevice->DrawIndexedPrimitive(D3DPT_LINESTRIP, -minIndex, minIndex, count, startIndex, count); +} + +template +static void drawPoints(IDirect3DDevice9* device, GLsizei count, const GLvoid *indices) +{ + for (int i = 0; i < count; i++) + { + unsigned int indexValue = static_cast(static_cast(indices)[i]); + device->DrawPrimitive(D3DPT_POINTLIST, indexValue, 1); + } +} + +void Renderer9::drawIndexedPoints(GLsizei count, GLenum type, const GLvoid *indices, gl::Buffer *elementArrayBuffer) +{ + // Drawing index point lists is unsupported in d3d9, fall back to a regular DrawPrimitive call + // for each individual point. This call is not expected to happen often. + + if (elementArrayBuffer) + { + BufferStorage *storage = elementArrayBuffer->getStorage(); + intptr_t offset = reinterpret_cast(indices); + indices = static_cast(storage->getData()) + offset; + } + + switch (type) + { + case GL_UNSIGNED_BYTE: drawPoints(mDevice, count, indices); break; + case GL_UNSIGNED_SHORT: drawPoints(mDevice, count, indices); break; + case GL_UNSIGNED_INT: drawPoints(mDevice, count, indices); break; + default: UNREACHABLE(); + } +} + +void Renderer9::applyShaders(gl::ProgramBinary *programBinary) +{ + unsigned int programBinarySerial = programBinary->getSerial(); + if (programBinarySerial != mAppliedProgramBinarySerial) + { + ShaderExecutable *vertexExe = programBinary->getVertexExecutable(); + ShaderExecutable *pixelExe = programBinary->getPixelExecutable(); + + IDirect3DVertexShader9 *vertexShader = NULL; + if (vertexExe) vertexShader = ShaderExecutable9::makeShaderExecutable9(vertexExe)->getVertexShader(); + + IDirect3DPixelShader9 *pixelShader = NULL; + if (pixelExe) pixelShader = ShaderExecutable9::makeShaderExecutable9(pixelExe)->getPixelShader(); + + mDevice->SetPixelShader(pixelShader); + mDevice->SetVertexShader(vertexShader); + programBinary->dirtyAllUniforms(); + mDxUniformsDirty = true; + + mAppliedProgramBinarySerial = programBinarySerial; + } +} + +void Renderer9::applyUniforms(gl::ProgramBinary *programBinary, gl::UniformArray *uniformArray) +{ + for (std::vector::const_iterator ub = uniformArray->begin(), ue = uniformArray->end(); ub != ue; ++ub) + { + gl::Uniform *targetUniform = *ub; + + if (targetUniform->dirty) + { + GLfloat *f = (GLfloat*)targetUniform->data; + GLint *i = (GLint*)targetUniform->data; + + switch (targetUniform->type) + { + case GL_SAMPLER_2D: + case GL_SAMPLER_CUBE: + break; + case GL_BOOL: + case GL_BOOL_VEC2: + case GL_BOOL_VEC3: + case GL_BOOL_VEC4: + applyUniformnbv(targetUniform, i); + break; + case GL_FLOAT: + case GL_FLOAT_VEC2: + case GL_FLOAT_VEC3: + case GL_FLOAT_VEC4: + case GL_FLOAT_MAT2: + case GL_FLOAT_MAT3: + case GL_FLOAT_MAT4: + applyUniformnfv(targetUniform, f); + break; + case GL_INT: + case GL_INT_VEC2: + case GL_INT_VEC3: + case GL_INT_VEC4: + applyUniformniv(targetUniform, i); + break; + default: + UNREACHABLE(); + } + + targetUniform->dirty = false; + } + } + + // Driver uniforms + if (mDxUniformsDirty) + { + mDevice->SetVertexShaderConstantF(0, (float*)&mVertexConstants, sizeof(dx_VertexConstants) / sizeof(float[4])); + mDevice->SetPixelShaderConstantF(0, (float*)&mPixelConstants, sizeof(dx_PixelConstants) / sizeof(float[4])); + mDxUniformsDirty = false; + } +} + +void Renderer9::applyUniformnfv(gl::Uniform *targetUniform, const GLfloat *v) +{ + if (targetUniform->psRegisterIndex >= 0) + { + mDevice->SetPixelShaderConstantF(targetUniform->psRegisterIndex, v, targetUniform->registerCount); + } + + if (targetUniform->vsRegisterIndex >= 0) + { + mDevice->SetVertexShaderConstantF(targetUniform->vsRegisterIndex, v, targetUniform->registerCount); + } +} + +void Renderer9::applyUniformniv(gl::Uniform *targetUniform, const GLint *v) +{ + ASSERT(targetUniform->registerCount <= MAX_VERTEX_CONSTANT_VECTORS_D3D9); + GLfloat vector[MAX_VERTEX_CONSTANT_VECTORS_D3D9][4]; + + for (unsigned int i = 0; i < targetUniform->registerCount; i++) + { + vector[i][0] = (GLfloat)v[4 * i + 0]; + vector[i][1] = (GLfloat)v[4 * i + 1]; + vector[i][2] = (GLfloat)v[4 * i + 2]; + vector[i][3] = (GLfloat)v[4 * i + 3]; + } + + applyUniformnfv(targetUniform, (GLfloat*)vector); +} + +void Renderer9::applyUniformnbv(gl::Uniform *targetUniform, const GLint *v) +{ + ASSERT(targetUniform->registerCount <= MAX_VERTEX_CONSTANT_VECTORS_D3D9); + GLfloat vector[MAX_VERTEX_CONSTANT_VECTORS_D3D9][4]; + + for (unsigned int i = 0; i < targetUniform->registerCount; i++) + { + vector[i][0] = (v[4 * i + 0] == GL_FALSE) ? 0.0f : 1.0f; + vector[i][1] = (v[4 * i + 1] == GL_FALSE) ? 0.0f : 1.0f; + vector[i][2] = (v[4 * i + 2] == GL_FALSE) ? 0.0f : 1.0f; + vector[i][3] = (v[4 * i + 3] == GL_FALSE) ? 0.0f : 1.0f; + } + + applyUniformnfv(targetUniform, (GLfloat*)vector); +} + +void Renderer9::clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer) +{ + D3DCOLOR color = D3DCOLOR_ARGB(gl::unorm<8>(clearParams.colorClearValue.alpha), + gl::unorm<8>(clearParams.colorClearValue.red), + gl::unorm<8>(clearParams.colorClearValue.green), + gl::unorm<8>(clearParams.colorClearValue.blue)); + float depth = gl::clamp01(clearParams.depthClearValue); + int stencil = clearParams.stencilClearValue & 0x000000FF; + + unsigned int stencilUnmasked = 0x0; + if ((clearParams.mask & GL_STENCIL_BUFFER_BIT) && frameBuffer->hasStencil()) + { + unsigned int stencilSize = gl::GetStencilSize(frameBuffer->getStencilbuffer()->getActualFormat()); + stencilUnmasked = (0x1 << stencilSize) - 1; + } + + bool alphaUnmasked = (gl::GetAlphaSize(mRenderTargetDesc.format) == 0) || clearParams.colorMaskAlpha; + + const bool needMaskedStencilClear = (clearParams.mask & GL_STENCIL_BUFFER_BIT) && + (clearParams.stencilWriteMask & stencilUnmasked) != stencilUnmasked; + const bool needMaskedColorClear = (clearParams.mask & GL_COLOR_BUFFER_BIT) && + !(clearParams.colorMaskRed && clearParams.colorMaskGreen && + clearParams.colorMaskBlue && alphaUnmasked); + + if (needMaskedColorClear || needMaskedStencilClear) + { + // State which is altered in all paths from this point to the clear call is saved. + // State which is altered in only some paths will be flagged dirty in the case that + // that path is taken. + HRESULT hr; + if (mMaskedClearSavedState == NULL) + { + hr = mDevice->BeginStateBlock(); + ASSERT(SUCCEEDED(hr) || hr == D3DERR_OUTOFVIDEOMEMORY || hr == E_OUTOFMEMORY); + + mDevice->SetRenderState(D3DRS_ZWRITEENABLE, FALSE); + mDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS); + mDevice->SetRenderState(D3DRS_ZENABLE, FALSE); + mDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); + mDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID); + mDevice->SetRenderState(D3DRS_ALPHATESTENABLE, FALSE); + mDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE); + mDevice->SetRenderState(D3DRS_CLIPPLANEENABLE, 0); + mDevice->SetRenderState(D3DRS_COLORWRITEENABLE, 0); + mDevice->SetRenderState(D3DRS_STENCILENABLE, FALSE); + mDevice->SetPixelShader(NULL); + mDevice->SetVertexShader(NULL); + mDevice->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE); + mDevice->SetStreamSource(0, NULL, 0, 0); + mDevice->SetRenderState(D3DRS_SEPARATEALPHABLENDENABLE, TRUE); + mDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); + mDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TFACTOR); + mDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1); + mDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR); + mDevice->SetRenderState(D3DRS_TEXTUREFACTOR, color); + mDevice->SetRenderState(D3DRS_MULTISAMPLEMASK, 0xFFFFFFFF); + + for(int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++) + { + mDevice->SetStreamSourceFreq(i, 1); + } + + hr = mDevice->EndStateBlock(&mMaskedClearSavedState); + ASSERT(SUCCEEDED(hr) || hr == D3DERR_OUTOFVIDEOMEMORY || hr == E_OUTOFMEMORY); + } + + ASSERT(mMaskedClearSavedState != NULL); + + if (mMaskedClearSavedState != NULL) + { + hr = mMaskedClearSavedState->Capture(); + ASSERT(SUCCEEDED(hr)); + } + + mDevice->SetRenderState(D3DRS_ZWRITEENABLE, FALSE); + mDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS); + mDevice->SetRenderState(D3DRS_ZENABLE, FALSE); + mDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); + mDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID); + mDevice->SetRenderState(D3DRS_ALPHATESTENABLE, FALSE); + mDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE); + mDevice->SetRenderState(D3DRS_CLIPPLANEENABLE, 0); + + if (clearParams.mask & GL_COLOR_BUFFER_BIT) + { + mDevice->SetRenderState(D3DRS_COLORWRITEENABLE, + gl_d3d9::ConvertColorMask(clearParams.colorMaskRed, + clearParams.colorMaskGreen, + clearParams.colorMaskBlue, + clearParams.colorMaskAlpha)); + } + else + { + mDevice->SetRenderState(D3DRS_COLORWRITEENABLE, 0); + } + + if (stencilUnmasked != 0x0 && (clearParams.mask & GL_STENCIL_BUFFER_BIT)) + { + mDevice->SetRenderState(D3DRS_STENCILENABLE, TRUE); + mDevice->SetRenderState(D3DRS_TWOSIDEDSTENCILMODE, FALSE); + mDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_ALWAYS); + mDevice->SetRenderState(D3DRS_STENCILREF, stencil); + mDevice->SetRenderState(D3DRS_STENCILWRITEMASK, clearParams.stencilWriteMask); + mDevice->SetRenderState(D3DRS_STENCILFAIL, D3DSTENCILOP_REPLACE); + mDevice->SetRenderState(D3DRS_STENCILZFAIL, D3DSTENCILOP_REPLACE); + mDevice->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_REPLACE); + } + else + { + mDevice->SetRenderState(D3DRS_STENCILENABLE, FALSE); + } + + mDevice->SetPixelShader(NULL); + mDevice->SetVertexShader(NULL); + mDevice->SetFVF(D3DFVF_XYZRHW); + mDevice->SetRenderState(D3DRS_SEPARATEALPHABLENDENABLE, TRUE); + mDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); + mDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TFACTOR); + mDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1); + mDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR); + mDevice->SetRenderState(D3DRS_TEXTUREFACTOR, color); + mDevice->SetRenderState(D3DRS_MULTISAMPLEMASK, 0xFFFFFFFF); + + for(int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++) + { + mDevice->SetStreamSourceFreq(i, 1); + } + + float quad[4][4]; // A quadrilateral covering the target, aligned to match the edges + quad[0][0] = -0.5f; + quad[0][1] = mRenderTargetDesc.height - 0.5f; + quad[0][2] = 0.0f; + quad[0][3] = 1.0f; + + quad[1][0] = mRenderTargetDesc.width - 0.5f; + quad[1][1] = mRenderTargetDesc.height - 0.5f; + quad[1][2] = 0.0f; + quad[1][3] = 1.0f; + + quad[2][0] = -0.5f; + quad[2][1] = -0.5f; + quad[2][2] = 0.0f; + quad[2][3] = 1.0f; + + quad[3][0] = mRenderTargetDesc.width - 0.5f; + quad[3][1] = -0.5f; + quad[3][2] = 0.0f; + quad[3][3] = 1.0f; + + startScene(); + mDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, quad, sizeof(float[4])); + + if (clearParams.mask & GL_DEPTH_BUFFER_BIT) + { + mDevice->SetRenderState(D3DRS_ZENABLE, TRUE); + mDevice->SetRenderState(D3DRS_ZWRITEENABLE, TRUE); + mDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER, color, depth, stencil); + } + + if (mMaskedClearSavedState != NULL) + { + mMaskedClearSavedState->Apply(); + } + } + else if (clearParams.mask) + { + DWORD dxClearFlags = 0; + if (clearParams.mask & GL_COLOR_BUFFER_BIT) + { + dxClearFlags |= D3DCLEAR_TARGET; + } + if (clearParams.mask & GL_DEPTH_BUFFER_BIT) + { + dxClearFlags |= D3DCLEAR_ZBUFFER; + } + if (clearParams.mask & GL_STENCIL_BUFFER_BIT) + { + dxClearFlags |= D3DCLEAR_STENCIL; + } + + mDevice->Clear(0, NULL, dxClearFlags, color, depth, stencil); + } +} + +void Renderer9::markAllStateDirty() +{ + mAppliedRenderTargetSerial = 0; + mAppliedDepthbufferSerial = 0; + mAppliedStencilbufferSerial = 0; + mDepthStencilInitialized = false; + mRenderTargetDescInitialized = false; + + mForceSetDepthStencilState = true; + mForceSetRasterState = true; + mForceSetScissor = true; + mForceSetViewport = true; + mForceSetBlendState = true; + + for (unsigned int i = 0; i < gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS; i++) + { + mForceSetVertexSamplerStates[i] = true; + mCurVertexTextureSerials[i] = 0; + } + for (unsigned int i = 0; i < gl::MAX_TEXTURE_IMAGE_UNITS; i++) + { + mForceSetPixelSamplerStates[i] = true; + mCurPixelTextureSerials[i] = 0; + } + + mAppliedIBSerial = 0; + mAppliedProgramBinarySerial = 0; + mDxUniformsDirty = true; + + mVertexDeclarationCache.markStateDirty(); +} + +void Renderer9::releaseDeviceResources() +{ + while (!mEventQueryPool.empty()) + { + mEventQueryPool.back()->Release(); + mEventQueryPool.pop_back(); + } + + if (mMaskedClearSavedState) + { + mMaskedClearSavedState->Release(); + mMaskedClearSavedState = NULL; + } + + mVertexShaderCache.clear(); + mPixelShaderCache.clear(); + + delete mBlit; + mBlit = NULL; + + delete mVertexDataManager; + mVertexDataManager = NULL; + + delete mIndexDataManager; + mIndexDataManager = NULL; + + delete mLineLoopIB; + mLineLoopIB = NULL; + + for (int i = 0; i < NUM_NULL_COLORBUFFER_CACHE_ENTRIES; i++) + { + delete mNullColorbufferCache[i].buffer; + mNullColorbufferCache[i].buffer = NULL; + } + +} + + +void Renderer9::notifyDeviceLost() +{ + mDeviceLost = true; + mDisplay->notifyDeviceLost(); +} + +bool Renderer9::isDeviceLost() +{ + return mDeviceLost; +} + +// set notify to true to broadcast a message to all contexts of the device loss +bool Renderer9::testDeviceLost(bool notify) +{ + HRESULT status = S_OK; + + if (mDeviceEx) + { + status = mDeviceEx->CheckDeviceState(NULL); + } + else if (mDevice) + { + status = mDevice->TestCooperativeLevel(); + } + else + { + // No device yet, so no reset required + } + + bool isLost = FAILED(status) || d3d9::isDeviceLostError(status); + + if (isLost) + { + // ensure we note the device loss -- + // we'll probably get this done again by notifyDeviceLost + // but best to remember it! + // Note that we don't want to clear the device loss status here + // -- this needs to be done by resetDevice + mDeviceLost = true; + if (notify) + { + notifyDeviceLost(); + } + } + + return isLost; +} + +bool Renderer9::testDeviceResettable() +{ + HRESULT status = D3D_OK; + + if (mDeviceEx) + { + status = mDeviceEx->CheckDeviceState(NULL); + } + else if (mDevice) + { + status = mDevice->TestCooperativeLevel(); + } + + // On D3D9Ex, DEVICELOST represents a hung device that needs to be restarted + // DEVICEREMOVED indicates the device has been stopped and must be recreated + switch (status) + { + case D3DERR_DEVICENOTRESET: + case D3DERR_DEVICEHUNG: + return true; + case D3DERR_DEVICELOST: + return (mDeviceEx != NULL); + case D3DERR_DEVICEREMOVED: + UNIMPLEMENTED(); + return false; + default: + return false; + } +} + +bool Renderer9::resetDevice() +{ + releaseDeviceResources(); + + D3DPRESENT_PARAMETERS presentParameters = getDefaultPresentParameters(); + + HRESULT result = D3D_OK; + bool lost = testDeviceLost(false); + int attempts = 3; + + while (lost && attempts > 0) + { + if (mDeviceEx) + { + Sleep(500); // Give the graphics driver some CPU time + result = mDeviceEx->ResetEx(&presentParameters, NULL); + } + else + { + result = mDevice->TestCooperativeLevel(); + while (result == D3DERR_DEVICELOST) + { + Sleep(100); // Give the graphics driver some CPU time + result = mDevice->TestCooperativeLevel(); + } + + if (result == D3DERR_DEVICENOTRESET) + { + result = mDevice->Reset(&presentParameters); + } + } + + lost = testDeviceLost(false); + attempts --; + } + + if (FAILED(result)) + { + ERR("Reset/ResetEx failed multiple times: 0x%08X", result); + return false; + } + + // reset device defaults + initializeDevice(); + mDeviceLost = false; + + return true; +} + +DWORD Renderer9::getAdapterVendor() const +{ + return mAdapterIdentifier.VendorId; +} + +std::string Renderer9::getRendererDescription() const +{ + std::ostringstream rendererString; + + rendererString << mAdapterIdentifier.Description; + if (getShareHandleSupport()) + { + rendererString << " Direct3D9Ex"; + } + else + { + rendererString << " Direct3D9"; + } + + rendererString << " vs_" << D3DSHADER_VERSION_MAJOR(mDeviceCaps.VertexShaderVersion) << "_" << D3DSHADER_VERSION_MINOR(mDeviceCaps.VertexShaderVersion); + rendererString << " ps_" << D3DSHADER_VERSION_MAJOR(mDeviceCaps.PixelShaderVersion) << "_" << D3DSHADER_VERSION_MINOR(mDeviceCaps.PixelShaderVersion); + + return rendererString.str(); +} + +GUID Renderer9::getAdapterIdentifier() const +{ + return mAdapterIdentifier.DeviceIdentifier; +} + +void Renderer9::getMultiSampleSupport(D3DFORMAT format, bool *multiSampleArray) +{ + for (int multiSampleIndex = 0; multiSampleIndex <= D3DMULTISAMPLE_16_SAMPLES; multiSampleIndex++) + { + HRESULT result = mD3d9->CheckDeviceMultiSampleType(mAdapter, mDeviceType, format, + TRUE, (D3DMULTISAMPLE_TYPE)multiSampleIndex, NULL); + + multiSampleArray[multiSampleIndex] = SUCCEEDED(result); + } +} + +bool Renderer9::getBGRATextureSupport() const +{ + // DirectX 9 always supports BGRA + return true; +} + +bool Renderer9::getDXT1TextureSupport() +{ + return mDXT1TextureSupport; +} + +bool Renderer9::getDXT3TextureSupport() +{ + return mDXT3TextureSupport; +} + +bool Renderer9::getDXT5TextureSupport() +{ + return mDXT5TextureSupport; +} + +bool Renderer9::getDepthTextureSupport() const +{ + return mDepthTextureSupport; +} + +bool Renderer9::getFloat32TextureSupport(bool *filtering, bool *renderable) +{ + *filtering = mFloat32FilterSupport; + *renderable = mFloat32RenderSupport; + return mFloat32TextureSupport; +} + +bool Renderer9::getFloat16TextureSupport(bool *filtering, bool *renderable) +{ + *filtering = mFloat16FilterSupport; + *renderable = mFloat16RenderSupport; + return mFloat16TextureSupport; +} + +bool Renderer9::getLuminanceTextureSupport() +{ + return mLuminanceTextureSupport; +} + +bool Renderer9::getLuminanceAlphaTextureSupport() +{ + return mLuminanceAlphaTextureSupport; +} + +bool Renderer9::getTextureFilterAnisotropySupport() const +{ + return mSupportsTextureFilterAnisotropy; +} + +float Renderer9::getTextureMaxAnisotropy() const +{ + if (mSupportsTextureFilterAnisotropy) + { + return static_cast(mDeviceCaps.MaxAnisotropy); + } + return 1.0f; +} + +bool Renderer9::getEventQuerySupport() +{ + return mEventQuerySupport; +} + +unsigned int Renderer9::getMaxVertexTextureImageUnits() const +{ + META_ASSERT(MAX_TEXTURE_IMAGE_UNITS_VTF_SM3 <= gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS); + return mVertexTextureSupport ? MAX_TEXTURE_IMAGE_UNITS_VTF_SM3 : 0; +} + +unsigned int Renderer9::getMaxCombinedTextureImageUnits() const +{ + return gl::MAX_TEXTURE_IMAGE_UNITS + getMaxVertexTextureImageUnits(); +} + +unsigned int Renderer9::getReservedVertexUniformVectors() const +{ + return 2; // dx_ViewAdjust and dx_DepthRange. +} + +unsigned int Renderer9::getReservedFragmentUniformVectors() const +{ + return 3; // dx_ViewCoords, dx_DepthFront and dx_DepthRange. +} + +unsigned int Renderer9::getMaxVertexUniformVectors() const +{ + return MAX_VERTEX_CONSTANT_VECTORS_D3D9 - getReservedVertexUniformVectors(); +} + +unsigned int Renderer9::getMaxFragmentUniformVectors() const +{ + const int maxPixelConstantVectors = (getMajorShaderModel() >= 3) ? MAX_PIXEL_CONSTANT_VECTORS_SM3 : MAX_PIXEL_CONSTANT_VECTORS_SM2; + + return maxPixelConstantVectors - getReservedFragmentUniformVectors(); +} + +unsigned int Renderer9::getMaxVaryingVectors() const +{ + return (getMajorShaderModel() >= 3) ? MAX_VARYING_VECTORS_SM3 : MAX_VARYING_VECTORS_SM2; +} + +bool Renderer9::getNonPower2TextureSupport() const +{ + return mSupportsNonPower2Textures; +} + +bool Renderer9::getOcclusionQuerySupport() const +{ + return mOcclusionQuerySupport; +} + +bool Renderer9::getInstancingSupport() const +{ + return mDeviceCaps.PixelShaderVersion >= D3DPS_VERSION(3, 0); +} + +bool Renderer9::getShareHandleSupport() const +{ + // PIX doesn't seem to support using share handles, so disable them. + return (mD3d9Ex != NULL) && !gl::perfActive(); +} + +bool Renderer9::getDerivativeInstructionSupport() const +{ + return (mDeviceCaps.PS20Caps.Caps & D3DPS20CAPS_GRADIENTINSTRUCTIONS) != 0; +} + +bool Renderer9::getPostSubBufferSupport() const +{ + return true; +} + +int Renderer9::getMajorShaderModel() const +{ + return D3DSHADER_VERSION_MAJOR(mDeviceCaps.PixelShaderVersion); +} + +float Renderer9::getMaxPointSize() const +{ + // Point size clamped at 1.0f for SM2 + return getMajorShaderModel() == 3 ? mDeviceCaps.MaxPointSize : 1.0f; +} + +int Renderer9::getMaxViewportDimension() const +{ + int maxTextureDimension = std::min(std::min(getMaxTextureWidth(), getMaxTextureHeight()), + (int)gl::IMPLEMENTATION_MAX_TEXTURE_SIZE); + return maxTextureDimension; +} + +int Renderer9::getMaxTextureWidth() const +{ + return (int)mDeviceCaps.MaxTextureWidth; +} + +int Renderer9::getMaxTextureHeight() const +{ + return (int)mDeviceCaps.MaxTextureHeight; +} + +bool Renderer9::get32BitIndexSupport() const +{ + return mDeviceCaps.MaxVertexIndex >= (1 << 16); +} + +DWORD Renderer9::getCapsDeclTypes() const +{ + return mDeviceCaps.DeclTypes; +} + +int Renderer9::getMinSwapInterval() const +{ + return mMinSwapInterval; +} + +int Renderer9::getMaxSwapInterval() const +{ + return mMaxSwapInterval; +} + +int Renderer9::getMaxSupportedSamples() const +{ + return mMaxSupportedSamples; +} + +int Renderer9::getNearestSupportedSamples(D3DFORMAT format, int requested) const +{ + if (requested == 0) + { + return requested; + } + + std::map::const_iterator itr = mMultiSampleSupport.find(format); + if (itr == mMultiSampleSupport.end()) + { + if (format == D3DFMT_UNKNOWN) + return 0; + return -1; + } + + for (int i = requested; i <= D3DMULTISAMPLE_16_SAMPLES; ++i) + { + if (itr->second[i] && i != D3DMULTISAMPLE_NONMASKABLE) + { + return i; + } + } + + return -1; +} + +unsigned int Renderer9::getMaxRenderTargets() const +{ + // we do not support MRT in d3d9 + return 1; +} + +D3DFORMAT Renderer9::ConvertTextureInternalFormat(GLint internalformat) +{ + switch (internalformat) + { + case GL_DEPTH_COMPONENT16: + case GL_DEPTH_COMPONENT32_OES: + case GL_DEPTH24_STENCIL8_OES: + return D3DFMT_INTZ; + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + return D3DFMT_DXT1; + case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: + return D3DFMT_DXT3; + case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: + return D3DFMT_DXT5; + case GL_RGBA32F_EXT: + case GL_RGB32F_EXT: + case GL_ALPHA32F_EXT: + case GL_LUMINANCE32F_EXT: + case GL_LUMINANCE_ALPHA32F_EXT: + return D3DFMT_A32B32G32R32F; + case GL_RGBA16F_EXT: + case GL_RGB16F_EXT: + case GL_ALPHA16F_EXT: + case GL_LUMINANCE16F_EXT: + case GL_LUMINANCE_ALPHA16F_EXT: + return D3DFMT_A16B16G16R16F; + case GL_LUMINANCE8_EXT: + if (getLuminanceTextureSupport()) + { + return D3DFMT_L8; + } + break; + case GL_LUMINANCE8_ALPHA8_EXT: + if (getLuminanceAlphaTextureSupport()) + { + return D3DFMT_A8L8; + } + break; + case GL_RGB8_OES: + case GL_RGB565: + return D3DFMT_X8R8G8B8; + } + + return D3DFMT_A8R8G8B8; +} + +bool Renderer9::copyToRenderTarget(TextureStorageInterface2D *dest, TextureStorageInterface2D *source) +{ + bool result = false; + + if (source && dest) + { + TextureStorage9_2D *source9 = TextureStorage9_2D::makeTextureStorage9_2D(source->getStorageInstance()); + TextureStorage9_2D *dest9 = TextureStorage9_2D::makeTextureStorage9_2D(dest->getStorageInstance()); + + int levels = source9->levelCount(); + for (int i = 0; i < levels; ++i) + { + IDirect3DSurface9 *srcSurf = source9->getSurfaceLevel(i, false); + IDirect3DSurface9 *dstSurf = dest9->getSurfaceLevel(i, false); + + result = copyToRenderTarget(dstSurf, srcSurf, source9->isManaged()); + + if (srcSurf) srcSurf->Release(); + if (dstSurf) dstSurf->Release(); + + if (!result) + return false; + } + } + + return result; +} + +bool Renderer9::copyToRenderTarget(TextureStorageInterfaceCube *dest, TextureStorageInterfaceCube *source) +{ + bool result = false; + + if (source && dest) + { + TextureStorage9_Cube *source9 = TextureStorage9_Cube::makeTextureStorage9_Cube(source->getStorageInstance()); + TextureStorage9_Cube *dest9 = TextureStorage9_Cube::makeTextureStorage9_Cube(dest->getStorageInstance()); + int levels = source9->levelCount(); + for (int f = 0; f < 6; f++) + { + for (int i = 0; i < levels; i++) + { + IDirect3DSurface9 *srcSurf = source9->getCubeMapSurface(GL_TEXTURE_CUBE_MAP_POSITIVE_X + f, i, false); + IDirect3DSurface9 *dstSurf = dest9->getCubeMapSurface(GL_TEXTURE_CUBE_MAP_POSITIVE_X + f, i, true); + + result = copyToRenderTarget(dstSurf, srcSurf, source9->isManaged()); + + if (srcSurf) srcSurf->Release(); + if (dstSurf) dstSurf->Release(); + + if (!result) + return false; + } + } + } + + return result; +} + +D3DPOOL Renderer9::getBufferPool(DWORD usage) const +{ + if (mD3d9Ex != NULL) + { + return D3DPOOL_DEFAULT; + } + else + { + if (!(usage & D3DUSAGE_DYNAMIC)) + { + return D3DPOOL_MANAGED; + } + } + + return D3DPOOL_DEFAULT; +} + +bool Renderer9::copyImage(gl::Framebuffer *framebuffer, const gl::Rectangle &sourceRect, GLenum destFormat, + GLint xoffset, GLint yoffset, TextureStorageInterface2D *storage, GLint level) +{ + RECT rect; + rect.left = sourceRect.x; + rect.top = sourceRect.y; + rect.right = sourceRect.x + sourceRect.width; + rect.bottom = sourceRect.y + sourceRect.height; + + return mBlit->copy(framebuffer, rect, destFormat, xoffset, yoffset, storage, level); +} + +bool Renderer9::copyImage(gl::Framebuffer *framebuffer, const gl::Rectangle &sourceRect, GLenum destFormat, + GLint xoffset, GLint yoffset, TextureStorageInterfaceCube *storage, GLenum target, GLint level) +{ + RECT rect; + rect.left = sourceRect.x; + rect.top = sourceRect.y; + rect.right = sourceRect.x + sourceRect.width; + rect.bottom = sourceRect.y + sourceRect.height; + + return mBlit->copy(framebuffer, rect, destFormat, xoffset, yoffset, storage, target, level); +} + +bool Renderer9::blitRect(gl::Framebuffer *readFramebuffer, const gl::Rectangle &readRect, gl::Framebuffer *drawFramebuffer, const gl::Rectangle &drawRect, + bool blitRenderTarget, bool blitDepthStencil) +{ + endScene(); + + if (blitRenderTarget) + { + gl::Renderbuffer *readBuffer = readFramebuffer->getColorbuffer(0); + gl::Renderbuffer *drawBuffer = drawFramebuffer->getColorbuffer(0); + RenderTarget9 *readRenderTarget = NULL; + RenderTarget9 *drawRenderTarget = NULL; + IDirect3DSurface9* readSurface = NULL; + IDirect3DSurface9* drawSurface = NULL; + + if (readBuffer) + { + readRenderTarget = RenderTarget9::makeRenderTarget9(readBuffer->getRenderTarget()); + } + if (drawBuffer) + { + drawRenderTarget = RenderTarget9::makeRenderTarget9(drawBuffer->getRenderTarget()); + } + + if (readRenderTarget) + { + readSurface = readRenderTarget->getSurface(); + } + if (drawRenderTarget) + { + drawSurface = drawRenderTarget->getSurface(); + } + + if (!readSurface || !drawSurface) + { + ERR("Failed to retrieve the render target."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + RECT srcRect; + srcRect.left = readRect.x; + srcRect.right = readRect.x + readRect.width; + srcRect.top = readRect.y; + srcRect.bottom = readRect.y + readRect.height; + + RECT dstRect; + dstRect.left = drawRect.x; + dstRect.right = drawRect.x + drawRect.width; + dstRect.top = drawRect.y; + dstRect.bottom = drawRect.y + drawRect.height; + + HRESULT result = mDevice->StretchRect(readSurface, &srcRect, drawSurface, &dstRect, D3DTEXF_NONE); + + readSurface->Release(); + drawSurface->Release(); + + if (FAILED(result)) + { + ERR("BlitFramebufferANGLE failed: StretchRect returned %x.", result); + return false; + } + } + + if (blitDepthStencil) + { + gl::Renderbuffer *readBuffer = readFramebuffer->getDepthOrStencilbuffer(); + gl::Renderbuffer *drawBuffer = drawFramebuffer->getDepthOrStencilbuffer(); + RenderTarget9 *readDepthStencil = NULL; + RenderTarget9 *drawDepthStencil = NULL; + IDirect3DSurface9* readSurface = NULL; + IDirect3DSurface9* drawSurface = NULL; + + if (readBuffer) + { + readDepthStencil = RenderTarget9::makeRenderTarget9(readBuffer->getDepthStencil()); + } + if (drawBuffer) + { + drawDepthStencil = RenderTarget9::makeRenderTarget9(drawBuffer->getDepthStencil()); + } + + if (readDepthStencil) + { + readSurface = readDepthStencil->getSurface(); + } + if (drawDepthStencil) + { + drawSurface = drawDepthStencil->getSurface(); + } + + if (!readSurface || !drawSurface) + { + ERR("Failed to retrieve the render target."); + return gl::error(GL_OUT_OF_MEMORY, false); + } + + HRESULT result = mDevice->StretchRect(readSurface, NULL, drawSurface, NULL, D3DTEXF_NONE); + + readSurface->Release(); + drawSurface->Release(); + + if (FAILED(result)) + { + ERR("BlitFramebufferANGLE failed: StretchRect returned %x.", result); + return false; + } + } + + return true; +} + +void Renderer9::readPixels(gl::Framebuffer *framebuffer, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, + GLsizei outputPitch, bool packReverseRowOrder, GLint packAlignment, void* pixels) +{ + RenderTarget9 *renderTarget = NULL; + IDirect3DSurface9 *surface = NULL; + gl::Renderbuffer *colorbuffer = framebuffer->getColorbuffer(0); + + if (colorbuffer) + { + renderTarget = RenderTarget9::makeRenderTarget9(colorbuffer->getRenderTarget()); + } + + if (renderTarget) + { + surface = renderTarget->getSurface(); + } + + if (!surface) + { + // context must be lost + return; + } + + D3DSURFACE_DESC desc; + surface->GetDesc(&desc); + + if (desc.MultiSampleType != D3DMULTISAMPLE_NONE) + { + UNIMPLEMENTED(); // FIXME: Requires resolve using StretchRect into non-multisampled render target + surface->Release(); + return gl::error(GL_OUT_OF_MEMORY); + } + + HRESULT result; + IDirect3DSurface9 *systemSurface = NULL; + bool directToPixels = !packReverseRowOrder && packAlignment <= 4 && getShareHandleSupport() && + x == 0 && y == 0 && UINT(width) == desc.Width && UINT(height) == desc.Height && + desc.Format == D3DFMT_A8R8G8B8 && format == GL_BGRA_EXT && type == GL_UNSIGNED_BYTE; + if (directToPixels) + { + // Use the pixels ptr as a shared handle to write directly into client's memory + result = mDevice->CreateOffscreenPlainSurface(desc.Width, desc.Height, desc.Format, + D3DPOOL_SYSTEMMEM, &systemSurface, &pixels); + if (FAILED(result)) + { + // Try again without the shared handle + directToPixels = false; + } + } + + if (!directToPixels) + { + result = mDevice->CreateOffscreenPlainSurface(desc.Width, desc.Height, desc.Format, + D3DPOOL_SYSTEMMEM, &systemSurface, NULL); + if (FAILED(result)) + { + ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY); + surface->Release(); + return gl::error(GL_OUT_OF_MEMORY); + } + } + + result = mDevice->GetRenderTargetData(surface, systemSurface); + surface->Release(); + surface = NULL; + + if (FAILED(result)) + { + systemSurface->Release(); + + // It turns out that D3D will sometimes produce more error + // codes than those documented. + if (d3d9::isDeviceLostError(result)) + { + notifyDeviceLost(); + return gl::error(GL_OUT_OF_MEMORY); + } + else + { + UNREACHABLE(); + return; + } + + } + + if (directToPixels) + { + systemSurface->Release(); + return; + } + + RECT rect; + rect.left = gl::clamp(x, 0L, static_cast(desc.Width)); + rect.top = gl::clamp(y, 0L, static_cast(desc.Height)); + rect.right = gl::clamp(x + width, 0L, static_cast(desc.Width)); + rect.bottom = gl::clamp(y + height, 0L, static_cast(desc.Height)); + + D3DLOCKED_RECT lock; + result = systemSurface->LockRect(&lock, &rect, D3DLOCK_READONLY); + + if (FAILED(result)) + { + UNREACHABLE(); + systemSurface->Release(); + + return; // No sensible error to generate + } + + unsigned char *dest = (unsigned char*)pixels; + unsigned short *dest16 = (unsigned short*)pixels; + + unsigned char *source; + int inputPitch; + if (packReverseRowOrder) + { + source = ((unsigned char*)lock.pBits) + lock.Pitch * (rect.bottom - rect.top - 1); + inputPitch = -lock.Pitch; + } + else + { + source = (unsigned char*)lock.pBits; + inputPitch = lock.Pitch; + } + + unsigned int fastPixelSize = 0; + + if (desc.Format == D3DFMT_A8R8G8B8 && + format == GL_BGRA_EXT && + type == GL_UNSIGNED_BYTE) + { + fastPixelSize = 4; + } + else if ((desc.Format == D3DFMT_A4R4G4B4 && + format == GL_BGRA_EXT && + type == GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT) || + (desc.Format == D3DFMT_A1R5G5B5 && + format == GL_BGRA_EXT && + type == GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT)) + { + fastPixelSize = 2; + } + else if (desc.Format == D3DFMT_A16B16G16R16F && + format == GL_RGBA && + type == GL_HALF_FLOAT_OES) + { + fastPixelSize = 8; + } + else if (desc.Format == D3DFMT_A32B32G32R32F && + format == GL_RGBA && + type == GL_FLOAT) + { + fastPixelSize = 16; + } + + for (int j = 0; j < rect.bottom - rect.top; j++) + { + if (fastPixelSize != 0) + { + // Fast path for formats which require no translation: + // D3DFMT_A8R8G8B8 to BGRA/UNSIGNED_BYTE + // D3DFMT_A4R4G4B4 to BGRA/UNSIGNED_SHORT_4_4_4_4_REV_EXT + // D3DFMT_A1R5G5B5 to BGRA/UNSIGNED_SHORT_1_5_5_5_REV_EXT + // D3DFMT_A16B16G16R16F to RGBA/HALF_FLOAT_OES + // D3DFMT_A32B32G32R32F to RGBA/FLOAT + // + // Note that buffers with no alpha go through the slow path below. + memcpy(dest + j * outputPitch, + source + j * inputPitch, + (rect.right - rect.left) * fastPixelSize); + continue; + } + else if (desc.Format == D3DFMT_A8R8G8B8 && + format == GL_RGBA && + type == GL_UNSIGNED_BYTE) + { + // Fast path for swapping red with blue + for (int i = 0; i < rect.right - rect.left; i++) + { + unsigned int argb = *(unsigned int*)(source + 4 * i + j * inputPitch); + *(unsigned int*)(dest + 4 * i + j * outputPitch) = + (argb & 0xFF00FF00) | // Keep alpha and green + (argb & 0x00FF0000) >> 16 | // Move red to blue + (argb & 0x000000FF) << 16; // Move blue to red + } + continue; + } + + for (int i = 0; i < rect.right - rect.left; i++) + { + float r; + float g; + float b; + float a; + + switch (desc.Format) + { + case D3DFMT_R5G6B5: + { + unsigned short rgb = *(unsigned short*)(source + 2 * i + j * inputPitch); + + a = 1.0f; + b = (rgb & 0x001F) * (1.0f / 0x001F); + g = (rgb & 0x07E0) * (1.0f / 0x07E0); + r = (rgb & 0xF800) * (1.0f / 0xF800); + } + break; + case D3DFMT_A1R5G5B5: + { + unsigned short argb = *(unsigned short*)(source + 2 * i + j * inputPitch); + + a = (argb & 0x8000) ? 1.0f : 0.0f; + b = (argb & 0x001F) * (1.0f / 0x001F); + g = (argb & 0x03E0) * (1.0f / 0x03E0); + r = (argb & 0x7C00) * (1.0f / 0x7C00); + } + break; + case D3DFMT_A8R8G8B8: + { + unsigned int argb = *(unsigned int*)(source + 4 * i + j * inputPitch); + + a = (argb & 0xFF000000) * (1.0f / 0xFF000000); + b = (argb & 0x000000FF) * (1.0f / 0x000000FF); + g = (argb & 0x0000FF00) * (1.0f / 0x0000FF00); + r = (argb & 0x00FF0000) * (1.0f / 0x00FF0000); + } + break; + case D3DFMT_X8R8G8B8: + { + unsigned int xrgb = *(unsigned int*)(source + 4 * i + j * inputPitch); + + a = 1.0f; + b = (xrgb & 0x000000FF) * (1.0f / 0x000000FF); + g = (xrgb & 0x0000FF00) * (1.0f / 0x0000FF00); + r = (xrgb & 0x00FF0000) * (1.0f / 0x00FF0000); + } + break; + case D3DFMT_A2R10G10B10: + { + unsigned int argb = *(unsigned int*)(source + 4 * i + j * inputPitch); + + a = (argb & 0xC0000000) * (1.0f / 0xC0000000); + b = (argb & 0x000003FF) * (1.0f / 0x000003FF); + g = (argb & 0x000FFC00) * (1.0f / 0x000FFC00); + r = (argb & 0x3FF00000) * (1.0f / 0x3FF00000); + } + break; + case D3DFMT_A32B32G32R32F: + { + // float formats in D3D are stored rgba, rather than the other way round + r = *((float*)(source + 16 * i + j * inputPitch) + 0); + g = *((float*)(source + 16 * i + j * inputPitch) + 1); + b = *((float*)(source + 16 * i + j * inputPitch) + 2); + a = *((float*)(source + 16 * i + j * inputPitch) + 3); + } + break; + case D3DFMT_A16B16G16R16F: + { + // float formats in D3D are stored rgba, rather than the other way round + r = gl::float16ToFloat32(*((unsigned short*)(source + 8 * i + j * inputPitch) + 0)); + g = gl::float16ToFloat32(*((unsigned short*)(source + 8 * i + j * inputPitch) + 1)); + b = gl::float16ToFloat32(*((unsigned short*)(source + 8 * i + j * inputPitch) + 2)); + a = gl::float16ToFloat32(*((unsigned short*)(source + 8 * i + j * inputPitch) + 3)); + } + break; + default: + UNIMPLEMENTED(); // FIXME + UNREACHABLE(); + return; + } + + switch (format) + { + case GL_RGBA: + switch (type) + { + case GL_UNSIGNED_BYTE: + dest[4 * i + j * outputPitch + 0] = (unsigned char)(255 * r + 0.5f); + dest[4 * i + j * outputPitch + 1] = (unsigned char)(255 * g + 0.5f); + dest[4 * i + j * outputPitch + 2] = (unsigned char)(255 * b + 0.5f); + dest[4 * i + j * outputPitch + 3] = (unsigned char)(255 * a + 0.5f); + break; + default: UNREACHABLE(); + } + break; + case GL_BGRA_EXT: + switch (type) + { + case GL_UNSIGNED_BYTE: + dest[4 * i + j * outputPitch + 0] = (unsigned char)(255 * b + 0.5f); + dest[4 * i + j * outputPitch + 1] = (unsigned char)(255 * g + 0.5f); + dest[4 * i + j * outputPitch + 2] = (unsigned char)(255 * r + 0.5f); + dest[4 * i + j * outputPitch + 3] = (unsigned char)(255 * a + 0.5f); + break; + case GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT: + // According to the desktop GL spec in the "Transfer of Pixel Rectangles" section + // this type is packed as follows: + // 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 + // -------------------------------------------------------------------------------- + // | 4th | 3rd | 2nd | 1st component | + // -------------------------------------------------------------------------------- + // in the case of BGRA_EXT, B is the first component, G the second, and so forth. + dest16[i + j * outputPitch / sizeof(unsigned short)] = + ((unsigned short)(15 * a + 0.5f) << 12)| + ((unsigned short)(15 * r + 0.5f) << 8) | + ((unsigned short)(15 * g + 0.5f) << 4) | + ((unsigned short)(15 * b + 0.5f) << 0); + break; + case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT: + // According to the desktop GL spec in the "Transfer of Pixel Rectangles" section + // this type is packed as follows: + // 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 + // -------------------------------------------------------------------------------- + // | 4th | 3rd | 2nd | 1st component | + // -------------------------------------------------------------------------------- + // in the case of BGRA_EXT, B is the first component, G the second, and so forth. + dest16[i + j * outputPitch / sizeof(unsigned short)] = + ((unsigned short)( a + 0.5f) << 15) | + ((unsigned short)(31 * r + 0.5f) << 10) | + ((unsigned short)(31 * g + 0.5f) << 5) | + ((unsigned short)(31 * b + 0.5f) << 0); + break; + default: UNREACHABLE(); + } + break; + case GL_RGB: + switch (type) + { + case GL_UNSIGNED_SHORT_5_6_5: + dest16[i + j * outputPitch / sizeof(unsigned short)] = + ((unsigned short)(31 * b + 0.5f) << 0) | + ((unsigned short)(63 * g + 0.5f) << 5) | + ((unsigned short)(31 * r + 0.5f) << 11); + break; + case GL_UNSIGNED_BYTE: + dest[3 * i + j * outputPitch + 0] = (unsigned char)(255 * r + 0.5f); + dest[3 * i + j * outputPitch + 1] = (unsigned char)(255 * g + 0.5f); + dest[3 * i + j * outputPitch + 2] = (unsigned char)(255 * b + 0.5f); + break; + default: UNREACHABLE(); + } + break; + default: UNREACHABLE(); + } + } + } + + systemSurface->UnlockRect(); + + systemSurface->Release(); +} + +RenderTarget *Renderer9::createRenderTarget(SwapChain *swapChain, bool depth) +{ + SwapChain9 *swapChain9 = SwapChain9::makeSwapChain9(swapChain); + IDirect3DSurface9 *surface = NULL; + if (depth) + { + surface = swapChain9->getDepthStencil(); + } + else + { + surface = swapChain9->getRenderTarget(); + } + + RenderTarget9 *renderTarget = new RenderTarget9(this, surface); + + return renderTarget; +} + +RenderTarget *Renderer9::createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth) +{ + RenderTarget9 *renderTarget = new RenderTarget9(this, width, height, format, samples); + return renderTarget; +} + +ShaderExecutable *Renderer9::loadExecutable(const void *function, size_t length, rx::ShaderType type) +{ + ShaderExecutable9 *executable = NULL; + + switch (type) + { + case rx::SHADER_VERTEX: + { + IDirect3DVertexShader9 *vshader = createVertexShader((DWORD*)function, length); + if (vshader) + { + executable = new ShaderExecutable9(function, length, vshader); + } + } + break; + case rx::SHADER_PIXEL: + { + IDirect3DPixelShader9 *pshader = createPixelShader((DWORD*)function, length); + if (pshader) + { + executable = new ShaderExecutable9(function, length, pshader); + } + } + break; + default: + UNREACHABLE(); + break; + } + + return executable; +} + +ShaderExecutable *Renderer9::compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, rx::ShaderType type) +{ + const char *profile = NULL; + + switch (type) + { + case rx::SHADER_VERTEX: + profile = getMajorShaderModel() >= 3 ? "vs_3_0" : "vs_2_0"; + break; + case rx::SHADER_PIXEL: + profile = getMajorShaderModel() >= 3 ? "ps_3_0" : "ps_2_0"; + break; + default: + UNREACHABLE(); + return NULL; + } + + ID3DBlob *binary = (ID3DBlob*)compileToBinary(infoLog, shaderHLSL, profile, ANGLE_COMPILE_OPTIMIZATION_LEVEL, true); + if (!binary) + return NULL; + + ShaderExecutable *executable = loadExecutable(binary->GetBufferPointer(), binary->GetBufferSize(), type); + binary->Release(); + + return executable; +} + +bool Renderer9::boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest) +{ + return mBlit->boxFilter(source, dest); +} + +D3DPOOL Renderer9::getTexturePool(DWORD usage) const +{ + if (mD3d9Ex != NULL) + { + return D3DPOOL_DEFAULT; + } + else + { + if (!(usage & (D3DUSAGE_DEPTHSTENCIL | D3DUSAGE_RENDERTARGET))) + { + return D3DPOOL_MANAGED; + } + } + + return D3DPOOL_DEFAULT; +} + +bool Renderer9::copyToRenderTarget(IDirect3DSurface9 *dest, IDirect3DSurface9 *source, bool fromManaged) +{ + if (source && dest) + { + HRESULT result = D3DERR_OUTOFVIDEOMEMORY; + + if (fromManaged) + { + D3DSURFACE_DESC desc; + source->GetDesc(&desc); + + IDirect3DSurface9 *surf = 0; + result = mDevice->CreateOffscreenPlainSurface(desc.Width, desc.Height, desc.Format, D3DPOOL_SYSTEMMEM, &surf, NULL); + + if (SUCCEEDED(result)) + { + Image9::copyLockableSurfaces(surf, source); + result = mDevice->UpdateSurface(surf, NULL, dest, NULL); + surf->Release(); + } + } + else + { + endScene(); + result = mDevice->StretchRect(source, NULL, dest, NULL, D3DTEXF_NONE); + } + + if (FAILED(result)) + { + ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY); + return false; + } + } + + return true; +} + +Image *Renderer9::createImage() +{ + return new Image9(); +} + +void Renderer9::generateMipmap(Image *dest, Image *src) +{ + Image9 *src9 = Image9::makeImage9(src); + Image9 *dst9 = Image9::makeImage9(dest); + Image9::generateMipmap(dst9, src9); +} + +TextureStorage *Renderer9::createTextureStorage2D(SwapChain *swapChain) +{ + SwapChain9 *swapChain9 = SwapChain9::makeSwapChain9(swapChain); + return new TextureStorage9_2D(this, swapChain9); +} + +TextureStorage *Renderer9::createTextureStorage2D(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height) +{ + return new TextureStorage9_2D(this, levels, internalformat, usage, forceRenderable, width, height); +} + +TextureStorage *Renderer9::createTextureStorageCube(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size) +{ + return new TextureStorage9_Cube(this, levels, internalformat, usage, forceRenderable, size); +} + +bool Renderer9::getLUID(LUID *adapterLuid) const +{ + adapterLuid->HighPart = 0; + adapterLuid->LowPart = 0; + + if (mD3d9Ex) + { + mD3d9Ex->GetAdapterLUID(mAdapter, adapterLuid); + return true; + } + + return false; +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer9.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer9.h new file mode 100644 index 00000000000..2873e611461 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer9.h @@ -0,0 +1,349 @@ +// +// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Renderer9.h: Defines a back-end specific class for the D3D9 renderer. + +#ifndef LIBGLESV2_RENDERER_RENDERER9_H_ +#define LIBGLESV2_RENDERER_RENDERER9_H_ + +#include "common/angleutils.h" +#include "libGLESv2/mathutil.h" +#include "libGLESv2/renderer/ShaderCache.h" +#include "libGLESv2/renderer/VertexDeclarationCache.h" +#include "libGLESv2/renderer/Renderer.h" +#include "libGLESv2/renderer/RenderTarget.h" + +namespace gl +{ +class Renderbuffer; +} + +namespace rx +{ +class VertexDataManager; +class IndexDataManager; +class StreamingIndexBufferInterface; +struct TranslatedAttribute; + +class Renderer9 : public Renderer +{ + public: + Renderer9(egl::Display *display, HDC hDc, bool softwareDevice); + virtual ~Renderer9(); + + static Renderer9 *makeRenderer9(Renderer *renderer); + + virtual EGLint initialize(); + virtual bool resetDevice(); + + virtual int generateConfigs(ConfigDesc **configDescList); + virtual void deleteConfigs(ConfigDesc *configDescList); + + void startScene(); + void endScene(); + + virtual void sync(bool block); + + virtual SwapChain *createSwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat); + + IDirect3DQuery9* allocateEventQuery(); + void freeEventQuery(IDirect3DQuery9* query); + + // resource creation + IDirect3DVertexShader9 *createVertexShader(const DWORD *function, size_t length); + IDirect3DPixelShader9 *createPixelShader(const DWORD *function, size_t length); + HRESULT createVertexBuffer(UINT Length, DWORD Usage, IDirect3DVertexBuffer9 **ppVertexBuffer); + HRESULT createIndexBuffer(UINT Length, DWORD Usage, D3DFORMAT Format, IDirect3DIndexBuffer9 **ppIndexBuffer); +#if 0 + void *createTexture2D(); + void *createTextureCube(); + void *createQuery(); + void *createIndexBuffer(); + void *createVertexbuffer(); + + // state setup + void applyShaders(); + void applyConstants(); +#endif + virtual void setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &sampler); + virtual void setTexture(gl::SamplerType type, int index, gl::Texture *texture); + + virtual void setRasterizerState(const gl::RasterizerState &rasterState); + virtual void setBlendState(const gl::BlendState &blendState, const gl::Color &blendColor, + unsigned int sampleMask); + virtual void setDepthStencilState(const gl::DepthStencilState &depthStencilState, int stencilRef, + int stencilBackRef, bool frontFaceCCW); + + virtual void setScissorRectangle(const gl::Rectangle &scissor, bool enabled); + virtual bool setViewport(const gl::Rectangle &viewport, float zNear, float zFar, GLenum drawMode, GLenum frontFace, + bool ignoreViewport); + + virtual bool applyRenderTarget(gl::Framebuffer *frameBuffer); + virtual void applyShaders(gl::ProgramBinary *programBinary); + virtual void applyUniforms(gl::ProgramBinary *programBinary, gl::UniformArray *uniformArray); + virtual bool applyPrimitiveType(GLenum primitiveType, GLsizei elementCount); + virtual GLenum applyVertexBuffer(gl::ProgramBinary *programBinary, gl::VertexAttribute vertexAttributes[], GLint first, GLsizei count, GLsizei instances); + virtual GLenum applyIndexBuffer(const GLvoid *indices, gl::Buffer *elementArrayBuffer, GLsizei count, GLenum mode, GLenum type, TranslatedIndexData *indexInfo); + + virtual void drawArrays(GLenum mode, GLsizei count, GLsizei instances); + virtual void drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, gl::Buffer *elementArrayBuffer, const TranslatedIndexData &indexInfo, GLsizei instances); + + virtual void clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer); + + virtual void markAllStateDirty(); + + // lost device + void notifyDeviceLost(); + virtual bool isDeviceLost(); + virtual bool testDeviceLost(bool notify); + virtual bool testDeviceResettable(); + + // Renderer capabilities + IDirect3DDevice9 *getDevice() { return mDevice; } + virtual DWORD getAdapterVendor() const; + virtual std::string getRendererDescription() const; + virtual GUID getAdapterIdentifier() const; + + virtual bool getBGRATextureSupport() const; + virtual bool getDXT1TextureSupport(); + virtual bool getDXT3TextureSupport(); + virtual bool getDXT5TextureSupport(); + virtual bool getEventQuerySupport(); + virtual bool getFloat32TextureSupport(bool *filtering, bool *renderable); + virtual bool getFloat16TextureSupport(bool *filtering, bool *renderable); + virtual bool getLuminanceTextureSupport(); + virtual bool getLuminanceAlphaTextureSupport(); + virtual unsigned int getMaxVertexTextureImageUnits() const; + virtual unsigned int getMaxCombinedTextureImageUnits() const; + virtual unsigned int getReservedVertexUniformVectors() const; + virtual unsigned int getReservedFragmentUniformVectors() const; + virtual unsigned int getMaxVertexUniformVectors() const; + virtual unsigned int getMaxFragmentUniformVectors() const; + virtual unsigned int getMaxVaryingVectors() const; + virtual bool getNonPower2TextureSupport() const; + virtual bool getDepthTextureSupport() const; + virtual bool getOcclusionQuerySupport() const; + virtual bool getInstancingSupport() const; + virtual bool getTextureFilterAnisotropySupport() const; + virtual float getTextureMaxAnisotropy() const; + virtual bool getShareHandleSupport() const; + virtual bool getDerivativeInstructionSupport() const; + virtual bool getPostSubBufferSupport() const; + + virtual int getMajorShaderModel() const; + virtual float getMaxPointSize() const; + virtual int getMaxViewportDimension() const; + virtual int getMaxTextureWidth() const; + virtual int getMaxTextureHeight() const; + virtual bool get32BitIndexSupport() const; + DWORD getCapsDeclTypes() const; + virtual int getMinSwapInterval() const; + virtual int getMaxSwapInterval() const; + + virtual GLsizei getMaxSupportedSamples() const; + int getNearestSupportedSamples(D3DFORMAT format, int requested) const; + + virtual unsigned int getMaxRenderTargets() const; + + D3DFORMAT ConvertTextureInternalFormat(GLint internalformat); + + // Pixel operations + virtual bool copyToRenderTarget(TextureStorageInterface2D *dest, TextureStorageInterface2D *source); + virtual bool copyToRenderTarget(TextureStorageInterfaceCube *dest, TextureStorageInterfaceCube *source); + + virtual bool copyImage(gl::Framebuffer *framebuffer, const gl::Rectangle &sourceRect, GLenum destFormat, + GLint xoffset, GLint yoffset, TextureStorageInterface2D *storage, GLint level); + virtual bool copyImage(gl::Framebuffer *framebuffer, const gl::Rectangle &sourceRect, GLenum destFormat, + GLint xoffset, GLint yoffset, TextureStorageInterfaceCube *storage, GLenum target, GLint level); + + virtual bool blitRect(gl::Framebuffer *readTarget, const gl::Rectangle &readRect, gl::Framebuffer *drawTarget, const gl::Rectangle &drawRect, + bool blitRenderTarget, bool blitDepthStencil); + virtual void readPixels(gl::Framebuffer *framebuffer, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, + GLsizei outputPitch, bool packReverseRowOrder, GLint packAlignment, void* pixels); + + // RenderTarget creation + virtual RenderTarget *createRenderTarget(SwapChain *swapChain, bool depth); + virtual RenderTarget *createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth); + + // Shader operations + virtual ShaderExecutable *loadExecutable(const void *function, size_t length, rx::ShaderType type); + virtual ShaderExecutable *compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, rx::ShaderType type); + + // Image operations + virtual Image *createImage(); + virtual void generateMipmap(Image *dest, Image *source); + virtual TextureStorage *createTextureStorage2D(SwapChain *swapChain); + virtual TextureStorage *createTextureStorage2D(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height); + virtual TextureStorage *createTextureStorageCube(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size); + + // Buffer creation + virtual VertexBuffer *createVertexBuffer(); + virtual IndexBuffer *createIndexBuffer(); + virtual BufferStorage *createBufferStorage(); + + // Query and Fence creation + virtual QueryImpl *createQuery(GLenum type); + virtual FenceImpl *createFence(); + + // D3D9-renderer specific methods + bool boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest); + + D3DPOOL getTexturePool(DWORD usage) const; + + virtual bool getLUID(LUID *adapterLuid) const; + + private: + DISALLOW_COPY_AND_ASSIGN(Renderer9); + + void applyUniformnfv(gl::Uniform *targetUniform, const GLfloat *v); + void applyUniformniv(gl::Uniform *targetUniform, const GLint *v); + void applyUniformnbv(gl::Uniform *targetUniform, const GLint *v); + + void drawLineLoop(GLsizei count, GLenum type, const GLvoid *indices, int minIndex, gl::Buffer *elementArrayBuffer); + void drawIndexedPoints(GLsizei count, GLenum type, const GLvoid *indices, gl::Buffer *elementArrayBuffer); + + void getMultiSampleSupport(D3DFORMAT format, bool *multiSampleArray); + bool copyToRenderTarget(IDirect3DSurface9 *dest, IDirect3DSurface9 *source, bool fromManaged); + gl::Renderbuffer *getNullColorbuffer(gl::Renderbuffer *depthbuffer); + + D3DPOOL getBufferPool(DWORD usage) const; + + HMODULE mD3d9Module; + HDC mDc; + + void initializeDevice(); + D3DPRESENT_PARAMETERS getDefaultPresentParameters(); + void releaseDeviceResources(); + + UINT mAdapter; + D3DDEVTYPE mDeviceType; + bool mSoftwareDevice; // FIXME: Deprecate + IDirect3D9 *mD3d9; // Always valid after successful initialization. + IDirect3D9Ex *mD3d9Ex; // Might be null if D3D9Ex is not supported. + IDirect3DDevice9 *mDevice; + IDirect3DDevice9Ex *mDeviceEx; // Might be null if D3D9Ex is not supported. + + Blit *mBlit; + + HWND mDeviceWindow; + + bool mDeviceLost; + D3DCAPS9 mDeviceCaps; + D3DADAPTER_IDENTIFIER9 mAdapterIdentifier; + + D3DPRIMITIVETYPE mPrimitiveType; + int mPrimitiveCount; + GLsizei mRepeatDraw; + + bool mSceneStarted; + bool mSupportsNonPower2Textures; + bool mSupportsTextureFilterAnisotropy; + int mMinSwapInterval; + int mMaxSwapInterval; + + bool mOcclusionQuerySupport; + bool mEventQuerySupport; + bool mVertexTextureSupport; + + bool mDepthTextureSupport; + + bool mFloat32TextureSupport; + bool mFloat32FilterSupport; + bool mFloat32RenderSupport; + + bool mFloat16TextureSupport; + bool mFloat16FilterSupport; + bool mFloat16RenderSupport; + + bool mDXT1TextureSupport; + bool mDXT3TextureSupport; + bool mDXT5TextureSupport; + + bool mLuminanceTextureSupport; + bool mLuminanceAlphaTextureSupport; + + std::map mMultiSampleSupport; + GLsizei mMaxSupportedSamples; + + // current render target states + unsigned int mAppliedRenderTargetSerial; + unsigned int mAppliedDepthbufferSerial; + unsigned int mAppliedStencilbufferSerial; + bool mDepthStencilInitialized; + bool mRenderTargetDescInitialized; + rx::RenderTarget::Desc mRenderTargetDesc; + unsigned int mCurStencilSize; + unsigned int mCurDepthSize; + + IDirect3DStateBlock9 *mMaskedClearSavedState; + + // previously set render states + bool mForceSetDepthStencilState; + gl::DepthStencilState mCurDepthStencilState; + int mCurStencilRef; + int mCurStencilBackRef; + bool mCurFrontFaceCCW; + + bool mForceSetRasterState; + gl::RasterizerState mCurRasterState; + + bool mForceSetScissor; + gl::Rectangle mCurScissor; + bool mScissorEnabled; + + bool mForceSetViewport; + gl::Rectangle mCurViewport; + float mCurNear; + float mCurFar; + + bool mForceSetBlendState; + gl::BlendState mCurBlendState; + gl::Color mCurBlendColor; + GLuint mCurSampleMask; + + // Currently applied sampler states + bool mForceSetVertexSamplerStates[gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS]; + gl::SamplerState mCurVertexSamplerStates[gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS]; + + bool mForceSetPixelSamplerStates[gl::MAX_TEXTURE_IMAGE_UNITS]; + gl::SamplerState mCurPixelSamplerStates[gl::MAX_TEXTURE_IMAGE_UNITS]; + + // Currently applied textures + unsigned int mCurVertexTextureSerials[gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS]; + unsigned int mCurPixelTextureSerials[gl::MAX_TEXTURE_IMAGE_UNITS]; + + unsigned int mAppliedIBSerial; + unsigned int mAppliedProgramBinarySerial; + + rx::dx_VertexConstants mVertexConstants; + rx::dx_PixelConstants mPixelConstants; + bool mDxUniformsDirty; + + // A pool of event queries that are currently unused. + std::vector mEventQueryPool; + VertexShaderCache mVertexShaderCache; + PixelShaderCache mPixelShaderCache; + + VertexDataManager *mVertexDataManager; + VertexDeclarationCache mVertexDeclarationCache; + + IndexDataManager *mIndexDataManager; + StreamingIndexBufferInterface *mLineLoopIB; + + enum { NUM_NULL_COLORBUFFER_CACHE_ENTRIES = 12 }; + struct NullColorbufferCacheEntry + { + UINT lruCount; + int width; + int height; + gl::Renderbuffer *buffer; + } mNullColorbufferCache[NUM_NULL_COLORBUFFER_CACHE_ENTRIES]; + UINT mMaxNullColorbufferLRU; + +}; + +} +#endif // LIBGLESV2_RENDERER_RENDERER9_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderCache.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderCache.h new file mode 100644 index 00000000000..4391ac271a3 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderCache.h @@ -0,0 +1,110 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// ShaderCache: Defines rx::ShaderCache, a cache of Direct3D shader objects +// keyed by their byte code. + +#ifndef LIBGLESV2_RENDERER_SHADER_CACHE_H_ +#define LIBGLESV2_RENDERER_SHADER_CACHE_H_ + +#include "common/debug.h" + +namespace rx +{ +template +class ShaderCache +{ + public: + ShaderCache() : mDevice(NULL) + { + } + + ~ShaderCache() + { + // Call clear while the device is still valid. + ASSERT(mMap.empty()); + } + + void initialize(IDirect3DDevice9* device) + { + mDevice = device; + } + + ShaderObject *create(const DWORD *function, size_t length) + { + std::string key(reinterpret_cast(function), length); + typename Map::iterator it = mMap.find(key); + if (it != mMap.end()) + { + it->second->AddRef(); + return it->second; + } + + ShaderObject *shader; + HRESULT result = createShader(function, &shader); + if (FAILED(result)) + { + return NULL; + } + + // Random eviction policy. + if (mMap.size() >= kMaxMapSize) + { + mMap.begin()->second->Release(); + mMap.erase(mMap.begin()); + } + + shader->AddRef(); + mMap[key] = shader; + + return shader; + } + + void clear() + { + for (typename Map::iterator it = mMap.begin(); it != mMap.end(); ++it) + { + it->second->Release(); + } + + mMap.clear(); + } + + private: + DISALLOW_COPY_AND_ASSIGN(ShaderCache); + + const static size_t kMaxMapSize = 100; + + HRESULT createShader(const DWORD *function, IDirect3DVertexShader9 **shader) + { + return mDevice->CreateVertexShader(function, shader); + } + + HRESULT createShader(const DWORD *function, IDirect3DPixelShader9 **shader) + { + return mDevice->CreatePixelShader(function, shader); + } + +#ifndef HASH_MAP +# ifdef _MSC_VER +# define HASH_MAP stdext::hash_map +# else +# define HASH_MAP std::unordered_map +# endif +#endif + + typedef HASH_MAP Map; + Map mMap; + + IDirect3DDevice9 *mDevice; +}; + +typedef ShaderCache VertexShaderCache; +typedef ShaderCache PixelShaderCache; + +} + +#endif // LIBGLESV2_RENDERER_SHADER_CACHE_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderExecutable.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderExecutable.h new file mode 100644 index 00000000000..293e340845e --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderExecutable.h @@ -0,0 +1,51 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// ShaderExecutable.h: Defines a renderer-agnostic class to contain shader +// executable implementation details. + +#ifndef LIBGLESV2_RENDERER_SHADEREXECUTABLE_H_ +#define LIBGLESV2_RENDERER_SHADEREXECUTABLE_H_ + +#include "common/angleutils.h" + +namespace rx +{ + +class ShaderExecutable +{ + public: + ShaderExecutable(const void *function, size_t length) : mLength(length) + { + mFunction = new char[length]; + memcpy(mFunction, function, length); + } + + virtual ~ShaderExecutable() + { + delete[] mFunction; + } + + void *getFunction() const + { + return mFunction; + } + + size_t getLength() const + { + return mLength; + } + + private: + DISALLOW_COPY_AND_ASSIGN(ShaderExecutable); + + void *mFunction; + const size_t mLength; +}; + +} + +#endif // LIBGLESV2_RENDERER_SHADEREXECUTABLE9_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderExecutable11.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderExecutable11.cpp new file mode 100644 index 00000000000..e1eb5603348 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderExecutable11.cpp @@ -0,0 +1,109 @@ +#include "precompiled.h" +// +// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// ShaderExecutable11.cpp: Implements a D3D11-specific class to contain shader +// executable implementation details. + +#include "libGLESv2/renderer/ShaderExecutable11.h" + +#include "common/debug.h" + +namespace rx +{ + +ShaderExecutable11::ShaderExecutable11(const void *function, size_t length, ID3D11PixelShader *executable) + : ShaderExecutable(function, length) +{ + mPixelExecutable = executable; + mVertexExecutable = NULL; + mGeometryExecutable = NULL; + + mConstantBuffer = NULL; +} + +ShaderExecutable11::ShaderExecutable11(const void *function, size_t length, ID3D11VertexShader *executable) + : ShaderExecutable(function, length) +{ + mVertexExecutable = executable; + mPixelExecutable = NULL; + mGeometryExecutable = NULL; + + mConstantBuffer = NULL; +} + +ShaderExecutable11::ShaderExecutable11(const void *function, size_t length, ID3D11GeometryShader *executable) + : ShaderExecutable(function, length) +{ + mGeometryExecutable = executable; + mVertexExecutable = NULL; + mPixelExecutable = NULL; + + mConstantBuffer = NULL; +} + +ShaderExecutable11::~ShaderExecutable11() +{ + if (mVertexExecutable) + { + mVertexExecutable->Release(); + } + if (mPixelExecutable) + { + mPixelExecutable->Release(); + } + if (mGeometryExecutable) + { + mGeometryExecutable->Release(); + } + + if (mConstantBuffer) + { + mConstantBuffer->Release(); + } +} + +ShaderExecutable11 *ShaderExecutable11::makeShaderExecutable11(ShaderExecutable *executable) +{ + ASSERT(HAS_DYNAMIC_TYPE(ShaderExecutable11*, executable)); + return static_cast(executable); +} + +ID3D11VertexShader *ShaderExecutable11::getVertexShader() const +{ + return mVertexExecutable; +} + +ID3D11PixelShader *ShaderExecutable11::getPixelShader() const +{ + return mPixelExecutable; +} + +ID3D11GeometryShader *ShaderExecutable11::getGeometryShader() const +{ + return mGeometryExecutable; +} + +ID3D11Buffer *ShaderExecutable11::getConstantBuffer(ID3D11Device *device, unsigned int registerCount) +{ + if (!mConstantBuffer && registerCount > 0) + { + D3D11_BUFFER_DESC constantBufferDescription = {0}; + constantBufferDescription.ByteWidth = registerCount * sizeof(float[4]); + constantBufferDescription.Usage = D3D11_USAGE_DYNAMIC; + constantBufferDescription.BindFlags = D3D11_BIND_CONSTANT_BUFFER; + constantBufferDescription.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + constantBufferDescription.MiscFlags = 0; + constantBufferDescription.StructureByteStride = 0; + + HRESULT result = device->CreateBuffer(&constantBufferDescription, NULL, &mConstantBuffer); + ASSERT(SUCCEEDED(result)); + } + + return mConstantBuffer; +} + +} \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderExecutable11.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderExecutable11.h new file mode 100644 index 00000000000..c6ec1cf7d2c --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderExecutable11.h @@ -0,0 +1,47 @@ +// +// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// ShaderExecutable11.h: Defines a D3D11-specific class to contain shader +// executable implementation details. + +#ifndef LIBGLESV2_RENDERER_SHADEREXECUTABLE11_H_ +#define LIBGLESV2_RENDERER_SHADEREXECUTABLE11_H_ + +#include "libGLESv2/renderer/ShaderExecutable.h" + +namespace rx +{ + +class ShaderExecutable11 : public ShaderExecutable +{ + public: + ShaderExecutable11(const void *function, size_t length, ID3D11PixelShader *executable); + ShaderExecutable11(const void *function, size_t length, ID3D11VertexShader *executable); + ShaderExecutable11(const void *function, size_t length, ID3D11GeometryShader *executable); + + virtual ~ShaderExecutable11(); + + static ShaderExecutable11 *makeShaderExecutable11(ShaderExecutable *executable); + + ID3D11PixelShader *getPixelShader() const; + ID3D11VertexShader *getVertexShader() const; + ID3D11GeometryShader *getGeometryShader() const; + + ID3D11Buffer *getConstantBuffer(ID3D11Device *device, unsigned int registerCount); + + private: + DISALLOW_COPY_AND_ASSIGN(ShaderExecutable11); + + ID3D11PixelShader *mPixelExecutable; + ID3D11VertexShader *mVertexExecutable; + ID3D11GeometryShader *mGeometryExecutable; + + ID3D11Buffer *mConstantBuffer; +}; + +} + +#endif // LIBGLESV2_RENDERER_SHADEREXECUTABLE11_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderExecutable9.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderExecutable9.cpp new file mode 100644 index 00000000000..98868a3fbf3 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderExecutable9.cpp @@ -0,0 +1,60 @@ +#include "precompiled.h" +// +// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// ShaderExecutable9.cpp: Implements a D3D9-specific class to contain shader +// executable implementation details. + +#include "libGLESv2/renderer/ShaderExecutable9.h" + +#include "common/debug.h" + +namespace rx +{ + +ShaderExecutable9::ShaderExecutable9(const void *function, size_t length, IDirect3DPixelShader9 *executable) + : ShaderExecutable(function, length) +{ + mPixelExecutable = executable; + mVertexExecutable = NULL; +} + +ShaderExecutable9::ShaderExecutable9(const void *function, size_t length, IDirect3DVertexShader9 *executable) + : ShaderExecutable(function, length) +{ + mVertexExecutable = executable; + mPixelExecutable = NULL; +} + +ShaderExecutable9::~ShaderExecutable9() +{ + if (mVertexExecutable) + { + mVertexExecutable->Release(); + } + if (mPixelExecutable) + { + mPixelExecutable->Release(); + } +} + +ShaderExecutable9 *ShaderExecutable9::makeShaderExecutable9(ShaderExecutable *executable) +{ + ASSERT(HAS_DYNAMIC_TYPE(ShaderExecutable9*, executable)); + return static_cast(executable); +} + +IDirect3DVertexShader9 *ShaderExecutable9::getVertexShader() const +{ + return mVertexExecutable; +} + +IDirect3DPixelShader9 *ShaderExecutable9::getPixelShader() const +{ + return mPixelExecutable; +} + +} \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderExecutable9.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderExecutable9.h new file mode 100644 index 00000000000..fa1e6c2844a --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/ShaderExecutable9.h @@ -0,0 +1,39 @@ +// +// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// ShaderExecutable9.h: Defines a D3D9-specific class to contain shader +// executable implementation details. + +#ifndef LIBGLESV2_RENDERER_SHADEREXECUTABLE9_H_ +#define LIBGLESV2_RENDERER_SHADEREXECUTABLE9_H_ + +#include "libGLESv2/renderer/ShaderExecutable.h" + +namespace rx +{ + +class ShaderExecutable9 : public ShaderExecutable +{ + public: + ShaderExecutable9(const void *function, size_t length, IDirect3DPixelShader9 *executable); + ShaderExecutable9(const void *function, size_t length, IDirect3DVertexShader9 *executable); + virtual ~ShaderExecutable9(); + + static ShaderExecutable9 *makeShaderExecutable9(ShaderExecutable *executable); + + IDirect3DPixelShader9 *getPixelShader() const; + IDirect3DVertexShader9 *getVertexShader() const; + + private: + DISALLOW_COPY_AND_ASSIGN(ShaderExecutable9); + + IDirect3DPixelShader9 *mPixelExecutable; + IDirect3DVertexShader9 *mVertexExecutable; +}; + +} + +#endif // LIBGLESV2_RENDERER_SHADEREXECUTABLE9_H_ \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain.h new file mode 100644 index 00000000000..14c0515fc86 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain.h @@ -0,0 +1,44 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// SwapChain.h: Defines a back-end specific class that hides the details of the +// implementation-specific swapchain. + +#ifndef LIBGLESV2_RENDERER_SWAPCHAIN_H_ +#define LIBGLESV2_RENDERER_SWAPCHAIN_H_ + +#include "common/angleutils.h" + +namespace rx +{ + +class SwapChain +{ + public: + SwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat) + : mWindow(window), mShareHandle(shareHandle), mBackBufferFormat(backBufferFormat), mDepthBufferFormat(depthBufferFormat) + { + } + + virtual ~SwapChain() {}; + + virtual EGLint resize(EGLint backbufferWidth, EGLint backbufferSize) = 0; + virtual EGLint reset(EGLint backbufferWidth, EGLint backbufferHeight, EGLint swapInterval) = 0; + virtual EGLint swapRect(EGLint x, EGLint y, EGLint width, EGLint height) = 0; + virtual void recreate() = 0; + + virtual HANDLE getShareHandle() {return mShareHandle;}; + + protected: + const HWND mWindow; // Window that the surface is created for. + const GLenum mBackBufferFormat; + const GLenum mDepthBufferFormat; + + HANDLE mShareHandle; +}; + +} +#endif // LIBGLESV2_RENDERER_SWAPCHAIN_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain11.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain11.cpp new file mode 100644 index 00000000000..87422be727f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain11.cpp @@ -0,0 +1,767 @@ +#include "precompiled.h" +// +// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// SwapChain11.cpp: Implements a back-end specific class for the D3D11 swap chain. + +#include "libGLESv2/renderer/SwapChain11.h" + +#include "libGLESv2/renderer/renderer11_utils.h" +#include "libGLESv2/renderer/Renderer11.h" +#include "libGLESv2/renderer/shaders/compiled/passthrough11vs.h" +#include "libGLESv2/renderer/shaders/compiled/passthroughrgba11ps.h" + +namespace rx +{ + +SwapChain11::SwapChain11(Renderer11 *renderer, HWND window, HANDLE shareHandle, + GLenum backBufferFormat, GLenum depthBufferFormat) + : mRenderer(renderer), SwapChain(window, shareHandle, backBufferFormat, depthBufferFormat) +{ + mSwapChain = NULL; + mBackBufferTexture = NULL; + mBackBufferRTView = NULL; + mOffscreenTexture = NULL; + mOffscreenRTView = NULL; + mOffscreenSRView = NULL; + mDepthStencilTexture = NULL; + mDepthStencilDSView = NULL; + mQuadVB = NULL; + mPassThroughSampler = NULL; + mPassThroughIL = NULL; + mPassThroughVS = NULL; + mPassThroughPS = NULL; + mWidth = -1; + mHeight = -1; + mSwapInterval = 0; + mAppCreatedShareHandle = mShareHandle != NULL; + mPassThroughResourcesInit = false; +} + +SwapChain11::~SwapChain11() +{ + release(); +} + +void SwapChain11::release() +{ + if (mSwapChain) + { + mSwapChain->Release(); + mSwapChain = NULL; + } + + if (mBackBufferTexture) + { + mBackBufferTexture->Release(); + mBackBufferTexture = NULL; + } + + if (mBackBufferRTView) + { + mBackBufferRTView->Release(); + mBackBufferRTView = NULL; + } + + if (mOffscreenTexture) + { + mOffscreenTexture->Release(); + mOffscreenTexture = NULL; + } + + if (mOffscreenRTView) + { + mOffscreenRTView->Release(); + mOffscreenRTView = NULL; + } + + if (mOffscreenSRView) + { + mOffscreenSRView->Release(); + mOffscreenSRView = NULL; + } + + if (mDepthStencilTexture) + { + mDepthStencilTexture->Release(); + mDepthStencilTexture = NULL; + } + + if (mDepthStencilDSView) + { + mDepthStencilDSView->Release(); + mDepthStencilDSView = NULL; + } + + if (mQuadVB) + { + mQuadVB->Release(); + mQuadVB = NULL; + } + + if (mPassThroughSampler) + { + mPassThroughSampler->Release(); + mPassThroughSampler = NULL; + } + + if (mPassThroughIL) + { + mPassThroughIL->Release(); + mPassThroughIL = NULL; + } + + if (mPassThroughVS) + { + mPassThroughVS->Release(); + mPassThroughVS = NULL; + } + + if (mPassThroughPS) + { + mPassThroughPS->Release(); + mPassThroughPS = NULL; + } + + if (!mAppCreatedShareHandle) + { + mShareHandle = NULL; + } +} + +void SwapChain11::releaseOffscreenTexture() +{ + if (mOffscreenTexture) + { + mOffscreenTexture->Release(); + mOffscreenTexture = NULL; + } + + if (mOffscreenRTView) + { + mOffscreenRTView->Release(); + mOffscreenRTView = NULL; + } + + if (mOffscreenSRView) + { + mOffscreenSRView->Release(); + mOffscreenSRView = NULL; + } + + if (mDepthStencilTexture) + { + mDepthStencilTexture->Release(); + mDepthStencilTexture = NULL; + } + + if (mDepthStencilDSView) + { + mDepthStencilDSView->Release(); + mDepthStencilDSView = NULL; + } +} + +EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHeight) +{ + ID3D11Device *device = mRenderer->getDevice(); + + ASSERT(device != NULL); + + // D3D11 does not allow zero size textures + ASSERT(backbufferWidth >= 1); + ASSERT(backbufferHeight >= 1); + + // Preserve the render target content + ID3D11Texture2D *previousOffscreenTexture = mOffscreenTexture; + if (previousOffscreenTexture) + { + previousOffscreenTexture->AddRef(); + } + const int previousWidth = mWidth; + const int previousHeight = mHeight; + + releaseOffscreenTexture(); + + // If the app passed in a share handle, open the resource + // See EGL_ANGLE_d3d_share_handle_client_buffer + if (mAppCreatedShareHandle) + { + ID3D11Resource *tempResource11; + HRESULT result = device->OpenSharedResource(mShareHandle, __uuidof(ID3D11Resource), (void**)&tempResource11); + + if (FAILED(result)) + { + ERR("Failed to open the swap chain pbuffer share handle: %08lX", result); + release(); + return EGL_BAD_PARAMETER; + } + + result = tempResource11->QueryInterface(__uuidof(ID3D11Texture2D), (void**)&mOffscreenTexture); + tempResource11->Release(); + + if (FAILED(result)) + { + ERR("Failed to query texture2d interface in pbuffer share handle: %08lX", result); + release(); + return EGL_BAD_PARAMETER; + } + + // Validate offscreen texture parameters + D3D11_TEXTURE2D_DESC offscreenTextureDesc = {0}; + mOffscreenTexture->GetDesc(&offscreenTextureDesc); + + if (offscreenTextureDesc.Width != (UINT)backbufferWidth + || offscreenTextureDesc.Height != (UINT)backbufferHeight + || offscreenTextureDesc.Format != gl_d3d11::ConvertRenderbufferFormat(mBackBufferFormat) + || offscreenTextureDesc.MipLevels != 1 + || offscreenTextureDesc.ArraySize != 1) + { + ERR("Invalid texture parameters in the shared offscreen texture pbuffer"); + release(); + return EGL_BAD_PARAMETER; + } + } + else + { + const bool useSharedResource = !mWindow && mRenderer->getShareHandleSupport(); + + D3D11_TEXTURE2D_DESC offscreenTextureDesc = {0}; + offscreenTextureDesc.Width = backbufferWidth; + offscreenTextureDesc.Height = backbufferHeight; + offscreenTextureDesc.Format = gl_d3d11::ConvertRenderbufferFormat(mBackBufferFormat); + offscreenTextureDesc.MipLevels = 1; + offscreenTextureDesc.ArraySize = 1; + offscreenTextureDesc.SampleDesc.Count = 1; + offscreenTextureDesc.SampleDesc.Quality = 0; + offscreenTextureDesc.Usage = D3D11_USAGE_DEFAULT; + offscreenTextureDesc.BindFlags = D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE; + offscreenTextureDesc.CPUAccessFlags = 0; + offscreenTextureDesc.MiscFlags = useSharedResource ? D3D11_RESOURCE_MISC_SHARED : 0; + + HRESULT result = device->CreateTexture2D(&offscreenTextureDesc, NULL, &mOffscreenTexture); + + if (FAILED(result)) + { + ERR("Could not create offscreen texture: %08lX", result); + release(); + + if (d3d11::isDeviceLostError(result)) + { + return EGL_CONTEXT_LOST; + } + else + { + return EGL_BAD_ALLOC; + } + } + + d3d11::SetDebugName(mOffscreenTexture, "Offscreen texture"); + + // EGL_ANGLE_surface_d3d_texture_2d_share_handle requires that we store a share handle for the client + if (useSharedResource) + { + IDXGIResource *offscreenTextureResource = NULL; + result = mOffscreenTexture->QueryInterface(__uuidof(IDXGIResource), (void**)&offscreenTextureResource); + + // Fall back to no share handle on failure + if (FAILED(result)) + { + ERR("Could not query offscreen texture resource: %08lX", result); + } + else + { + result = offscreenTextureResource->GetSharedHandle(&mShareHandle); + + if (FAILED(result)) + { + mShareHandle = NULL; + ERR("Could not get offscreen texture shared handle: %08lX", result); + } + } + } + } + + HRESULT result = device->CreateRenderTargetView(mOffscreenTexture, NULL, &mOffscreenRTView); + + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mOffscreenRTView, "Offscreen render target"); + + result = device->CreateShaderResourceView(mOffscreenTexture, NULL, &mOffscreenSRView); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mOffscreenSRView, "Offscreen shader resource"); + + if (mDepthBufferFormat != GL_NONE) + { + D3D11_TEXTURE2D_DESC depthStencilDesc = {0}; + depthStencilDesc.Width = backbufferWidth; + depthStencilDesc.Height = backbufferHeight; + depthStencilDesc.Format = gl_d3d11::ConvertRenderbufferFormat(mDepthBufferFormat); + depthStencilDesc.MipLevels = 1; + depthStencilDesc.ArraySize = 1; + depthStencilDesc.SampleDesc.Count = 1; + depthStencilDesc.SampleDesc.Quality = 0; + depthStencilDesc.Usage = D3D11_USAGE_DEFAULT; + depthStencilDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL; + depthStencilDesc.CPUAccessFlags = 0; + depthStencilDesc.MiscFlags = 0; + + result = device->CreateTexture2D(&depthStencilDesc, NULL, &mDepthStencilTexture); + if (FAILED(result)) + { + ERR("Could not create depthstencil surface for new swap chain: 0x%08X", result); + release(); + + if (d3d11::isDeviceLostError(result)) + { + return EGL_CONTEXT_LOST; + } + else + { + return EGL_BAD_ALLOC; + } + } + d3d11::SetDebugName(mDepthStencilTexture, "Depth stencil texture"); + + result = device->CreateDepthStencilView(mDepthStencilTexture, NULL, &mDepthStencilDSView); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mDepthStencilDSView, "Depth stencil view"); + } + + mWidth = backbufferWidth; + mHeight = backbufferHeight; + + if (previousOffscreenTexture != NULL) + { + D3D11_BOX sourceBox = {0}; + sourceBox.left = 0; + sourceBox.right = std::min(previousWidth, mWidth); + sourceBox.top = std::max(previousHeight - mHeight, 0); + sourceBox.bottom = previousHeight; + sourceBox.front = 0; + sourceBox.back = 1; + + ID3D11DeviceContext *deviceContext = mRenderer->getDeviceContext(); + const int yoffset = std::max(mHeight - previousHeight, 0); + deviceContext->CopySubresourceRegion(mOffscreenTexture, 0, 0, yoffset, 0, previousOffscreenTexture, 0, &sourceBox); + + previousOffscreenTexture->Release(); + + if (mSwapChain) + { + swapRect(0, 0, mWidth, mHeight); + } + } + + return EGL_SUCCESS; +} + +EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight) +{ + ID3D11Device *device = mRenderer->getDevice(); + + if (device == NULL) + { + return EGL_BAD_ACCESS; + } + + // Can only call resize if we have already created our swap buffer and resources + ASSERT(mSwapChain && mBackBufferTexture && mBackBufferRTView); + + if (mBackBufferTexture) + { + mBackBufferTexture->Release(); + mBackBufferTexture = NULL; + } + + if (mBackBufferRTView) + { + mBackBufferRTView->Release(); + mBackBufferRTView = NULL; + } + + // Resize swap chain + DXGI_FORMAT backbufferDXGIFormat = gl_d3d11::ConvertRenderbufferFormat(mBackBufferFormat); + HRESULT result = mSwapChain->ResizeBuffers(2, backbufferWidth, backbufferHeight, backbufferDXGIFormat, 0); + + if (FAILED(result)) + { + ERR("Error resizing swap chain buffers: 0x%08X", result); + release(); + + if (d3d11::isDeviceLostError(result)) + { + return EGL_CONTEXT_LOST; + } + else + { + return EGL_BAD_ALLOC; + } + } + + result = mSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&mBackBufferTexture); + ASSERT(SUCCEEDED(result)); + if (SUCCEEDED(result)) + { + d3d11::SetDebugName(mBackBufferTexture, "Back buffer texture"); + } + + result = device->CreateRenderTargetView(mBackBufferTexture, NULL, &mBackBufferRTView); + ASSERT(SUCCEEDED(result)); + if (SUCCEEDED(result)) + { + d3d11::SetDebugName(mBackBufferRTView, "Back buffer render target"); + } + + return resetOffscreenTexture(backbufferWidth, backbufferHeight); +} + +EGLint SwapChain11::reset(int backbufferWidth, int backbufferHeight, EGLint swapInterval) +{ + ID3D11Device *device = mRenderer->getDevice(); + + if (device == NULL) + { + return EGL_BAD_ACCESS; + } + + // Release specific resources to free up memory for the new render target, while the + // old render target still exists for the purpose of preserving its contents. + if (mSwapChain) + { + mSwapChain->Release(); + mSwapChain = NULL; + } + + if (mBackBufferTexture) + { + mBackBufferTexture->Release(); + mBackBufferTexture = NULL; + } + + if (mBackBufferRTView) + { + mBackBufferRTView->Release(); + mBackBufferRTView = NULL; + } + + mSwapInterval = static_cast(swapInterval); + if (mSwapInterval > 4) + { + // IDXGISwapChain::Present documentation states that valid sync intervals are in the [0,4] range + return EGL_BAD_PARAMETER; + } + + // EGL allows creating a surface with 0x0 dimension, however, DXGI does not like 0x0 swapchains + if (backbufferWidth < 1 || backbufferHeight < 1) + { + releaseOffscreenTexture(); + return EGL_SUCCESS; + } + + if (mWindow) + { + // We cannot create a swap chain for an HWND that is owned by a different process + DWORD currentProcessId = GetCurrentProcessId(); + DWORD wndProcessId; + GetWindowThreadProcessId(mWindow, &wndProcessId); + + if (currentProcessId != wndProcessId) + { + ERR("Could not create swap chain, window owned by different process"); + release(); + return EGL_BAD_NATIVE_WINDOW; + } + + IDXGIFactory *factory = mRenderer->getDxgiFactory(); + + DXGI_SWAP_CHAIN_DESC swapChainDesc = {0}; + swapChainDesc.BufferCount = 2; + swapChainDesc.BufferDesc.Format = gl_d3d11::ConvertRenderbufferFormat(mBackBufferFormat); + swapChainDesc.BufferDesc.Width = backbufferWidth; + swapChainDesc.BufferDesc.Height = backbufferHeight; + swapChainDesc.BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED; + swapChainDesc.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED; + swapChainDesc.BufferDesc.RefreshRate.Numerator = 0; + swapChainDesc.BufferDesc.RefreshRate.Denominator = 1; + swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + swapChainDesc.Flags = 0; + swapChainDesc.OutputWindow = mWindow; + swapChainDesc.SampleDesc.Count = 1; + swapChainDesc.SampleDesc.Quality = 0; + swapChainDesc.Windowed = TRUE; + + HRESULT result = factory->CreateSwapChain(device, &swapChainDesc, &mSwapChain); + + if (FAILED(result)) + { + ERR("Could not create additional swap chains or offscreen surfaces: %08lX", result); + release(); + + if (d3d11::isDeviceLostError(result)) + { + return EGL_CONTEXT_LOST; + } + else + { + return EGL_BAD_ALLOC; + } + } + + result = mSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&mBackBufferTexture); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mBackBufferTexture, "Back buffer texture"); + + result = device->CreateRenderTargetView(mBackBufferTexture, NULL, &mBackBufferRTView); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mBackBufferRTView, "Back buffer render target"); + } + + // If we are resizing the swap chain, we don't wish to recreate all the static resources + if (!mPassThroughResourcesInit) + { + mPassThroughResourcesInit = true; + initPassThroughResources(); + } + + return resetOffscreenTexture(backbufferWidth, backbufferHeight); +} + +void SwapChain11::initPassThroughResources() +{ + ID3D11Device *device = mRenderer->getDevice(); + + ASSERT(device != NULL); + + // Make sure our resources are all not allocated, when we create + ASSERT(mQuadVB == NULL && mPassThroughSampler == NULL); + ASSERT(mPassThroughIL == NULL && mPassThroughVS == NULL && mPassThroughPS == NULL); + + D3D11_BUFFER_DESC vbDesc; + vbDesc.ByteWidth = sizeof(d3d11::PositionTexCoordVertex) * 4; + vbDesc.Usage = D3D11_USAGE_DYNAMIC; + vbDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER; + vbDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + vbDesc.MiscFlags = 0; + vbDesc.StructureByteStride = 0; + + HRESULT result = device->CreateBuffer(&vbDesc, NULL, &mQuadVB); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mQuadVB, "Swap chain quad vertex buffer"); + + D3D11_SAMPLER_DESC samplerDesc; + samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_POINT; + samplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP; + samplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP; + samplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP; + samplerDesc.MipLODBias = 0.0f; + samplerDesc.MaxAnisotropy = 0; + samplerDesc.ComparisonFunc = D3D11_COMPARISON_NEVER; + samplerDesc.BorderColor[0] = 0.0f; + samplerDesc.BorderColor[1] = 0.0f; + samplerDesc.BorderColor[2] = 0.0f; + samplerDesc.BorderColor[3] = 0.0f; + samplerDesc.MinLOD = 0; + samplerDesc.MaxLOD = D3D11_FLOAT32_MAX; + + result = device->CreateSamplerState(&samplerDesc, &mPassThroughSampler); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mPassThroughSampler, "Swap chain pass through sampler"); + + D3D11_INPUT_ELEMENT_DESC quadLayout[] = + { + { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, + { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 8, D3D11_INPUT_PER_VERTEX_DATA, 0 }, + }; + + result = device->CreateInputLayout(quadLayout, 2, g_VS_Passthrough, sizeof(g_VS_Passthrough), &mPassThroughIL); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mPassThroughIL, "Swap chain pass through layout"); + + result = device->CreateVertexShader(g_VS_Passthrough, sizeof(g_VS_Passthrough), NULL, &mPassThroughVS); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mPassThroughVS, "Swap chain pass through vertex shader"); + + result = device->CreatePixelShader(g_PS_PassthroughRGBA, sizeof(g_PS_PassthroughRGBA), NULL, &mPassThroughPS); + ASSERT(SUCCEEDED(result)); + d3d11::SetDebugName(mPassThroughPS, "Swap chain pass through pixel shader"); +} + +// parameters should be validated/clamped by caller +EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height) +{ + if (!mSwapChain) + { + return EGL_SUCCESS; + } + + ID3D11Device *device = mRenderer->getDevice(); + ID3D11DeviceContext *deviceContext = mRenderer->getDeviceContext(); + + // Set vertices + D3D11_MAPPED_SUBRESOURCE mappedResource; + HRESULT result = deviceContext->Map(mQuadVB, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource); + if (FAILED(result)) + { + return EGL_BAD_ACCESS; + } + + d3d11::PositionTexCoordVertex *vertices = static_cast(mappedResource.pData); + + // Create a quad in homogeneous coordinates + float x1 = (x / float(mWidth)) * 2.0f - 1.0f; + float y1 = (y / float(mHeight)) * 2.0f - 1.0f; + float x2 = ((x + width) / float(mWidth)) * 2.0f - 1.0f; + float y2 = ((y + height) / float(mHeight)) * 2.0f - 1.0f; + + float u1 = x / float(mWidth); + float v1 = y / float(mHeight); + float u2 = (x + width) / float(mWidth); + float v2 = (y + height) / float(mHeight); + + d3d11::SetPositionTexCoordVertex(&vertices[0], x1, y1, u1, v1); + d3d11::SetPositionTexCoordVertex(&vertices[1], x1, y2, u1, v2); + d3d11::SetPositionTexCoordVertex(&vertices[2], x2, y1, u2, v1); + d3d11::SetPositionTexCoordVertex(&vertices[3], x2, y2, u2, v2); + + deviceContext->Unmap(mQuadVB, 0); + + static UINT stride = sizeof(d3d11::PositionTexCoordVertex); + static UINT startIdx = 0; + deviceContext->IASetVertexBuffers(0, 1, &mQuadVB, &stride, &startIdx); + + // Apply state + deviceContext->OMSetDepthStencilState(NULL, 0xFFFFFFFF); + + static const float blendFactor[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; + deviceContext->OMSetBlendState(NULL, blendFactor, 0xFFFFFFF); + + deviceContext->RSSetState(NULL); + + // Apply shaders + deviceContext->IASetInputLayout(mPassThroughIL); + deviceContext->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); + deviceContext->VSSetShader(mPassThroughVS, NULL, 0); + deviceContext->PSSetShader(mPassThroughPS, NULL, 0); + deviceContext->GSSetShader(NULL, NULL, 0); + + // Apply render targets + mRenderer->setOneTimeRenderTarget(mBackBufferRTView); + + // Set the viewport + D3D11_VIEWPORT viewport; + viewport.TopLeftX = 0; + viewport.TopLeftY = 0; + viewport.Width = mWidth; + viewport.Height = mHeight; + viewport.MinDepth = 0.0f; + viewport.MaxDepth = 1.0f; + deviceContext->RSSetViewports(1, &viewport); + + // Apply textures + deviceContext->PSSetShaderResources(0, 1, &mOffscreenSRView); + deviceContext->PSSetSamplers(0, 1, &mPassThroughSampler); + + // Draw + deviceContext->Draw(4, 0); + result = mSwapChain->Present(mSwapInterval, 0); + + if (result == DXGI_ERROR_DEVICE_REMOVED) + { + HRESULT removedReason = device->GetDeviceRemovedReason(); + ERR("Present failed: the D3D11 device was removed: 0x%08X", removedReason); + return EGL_CONTEXT_LOST; + } + else if (result == DXGI_ERROR_DEVICE_RESET) + { + ERR("Present failed: the D3D11 device was reset from a bad command."); + return EGL_CONTEXT_LOST; + } + else if (FAILED(result)) + { + ERR("Present failed with error code 0x%08X", result); + } + + // Unbind + static ID3D11ShaderResourceView *const nullSRV = NULL; + deviceContext->PSSetShaderResources(0, 1, &nullSRV); + + mRenderer->unapplyRenderTargets(); + mRenderer->markAllStateDirty(); + + return EGL_SUCCESS; +} + +// Increments refcount on texture. +// caller must Release() the returned texture +ID3D11Texture2D *SwapChain11::getOffscreenTexture() +{ + if (mOffscreenTexture) + { + mOffscreenTexture->AddRef(); + } + + return mOffscreenTexture; +} + +// Increments refcount on view. +// caller must Release() the returned view +ID3D11RenderTargetView *SwapChain11::getRenderTarget() +{ + if (mOffscreenRTView) + { + mOffscreenRTView->AddRef(); + } + + return mOffscreenRTView; +} + +// Increments refcount on view. +// caller must Release() the returned view +ID3D11ShaderResourceView *SwapChain11::getRenderTargetShaderResource() +{ + if (mOffscreenSRView) + { + mOffscreenSRView->AddRef(); + } + + return mOffscreenSRView; +} + +// Increments refcount on view. +// caller must Release() the returned view +ID3D11DepthStencilView *SwapChain11::getDepthStencil() +{ + if (mDepthStencilDSView) + { + mDepthStencilDSView->AddRef(); + } + + return mDepthStencilDSView; +} + +ID3D11Texture2D *SwapChain11::getDepthStencilTexture() +{ + if (mDepthStencilTexture) + { + mDepthStencilTexture->AddRef(); + } + + return mDepthStencilTexture; +} + +SwapChain11 *SwapChain11::makeSwapChain11(SwapChain *swapChain) +{ + ASSERT(HAS_DYNAMIC_TYPE(rx::SwapChain11*, swapChain)); + return static_cast(swapChain); +} + +void SwapChain11::recreate() +{ + // possibly should use this method instead of reset +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain11.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain11.h new file mode 100644 index 00000000000..800104602e3 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain11.h @@ -0,0 +1,78 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// SwapChain11.h: Defines a back-end specific class for the D3D11 swap chain. + +#ifndef LIBGLESV2_RENDERER_SWAPCHAIN11_H_ +#define LIBGLESV2_RENDERER_SWAPCHAIN11_H_ + +#include "common/angleutils.h" +#include "libGLESv2/renderer/SwapChain.h" + +namespace rx +{ +class Renderer11; + +class SwapChain11 : public SwapChain +{ + public: + SwapChain11(Renderer11 *renderer, HWND window, HANDLE shareHandle, + GLenum backBufferFormat, GLenum depthBufferFormat); + virtual ~SwapChain11(); + + EGLint resize(EGLint backbufferWidth, EGLint backbufferHeight); + virtual EGLint reset(EGLint backbufferWidth, EGLint backbufferHeight, EGLint swapInterval); + virtual EGLint swapRect(EGLint x, EGLint y, EGLint width, EGLint height); + virtual void recreate(); + + virtual ID3D11Texture2D *getOffscreenTexture(); + virtual ID3D11RenderTargetView *getRenderTarget(); + virtual ID3D11ShaderResourceView *getRenderTargetShaderResource(); + + virtual ID3D11Texture2D *getDepthStencilTexture(); + virtual ID3D11DepthStencilView *getDepthStencil(); + + EGLint getWidth() const { return mWidth; } + EGLint getHeight() const { return mHeight; } + + static SwapChain11 *makeSwapChain11(SwapChain *swapChain); + + private: + DISALLOW_COPY_AND_ASSIGN(SwapChain11); + + void release(); + void initPassThroughResources(); + void releaseOffscreenTexture(); + EGLint resetOffscreenTexture(int backbufferWidth, int backbufferHeight); + + Renderer11 *mRenderer; + EGLint mHeight; + EGLint mWidth; + bool mAppCreatedShareHandle; + unsigned int mSwapInterval; + bool mPassThroughResourcesInit; + + IDXGISwapChain *mSwapChain; + + ID3D11Texture2D *mBackBufferTexture; + ID3D11RenderTargetView *mBackBufferRTView; + + ID3D11Texture2D *mOffscreenTexture; + ID3D11RenderTargetView *mOffscreenRTView; + ID3D11ShaderResourceView *mOffscreenSRView; + + ID3D11Texture2D *mDepthStencilTexture; + ID3D11DepthStencilView *mDepthStencilDSView; + + ID3D11Buffer *mQuadVB; + ID3D11SamplerState *mPassThroughSampler; + ID3D11InputLayout *mPassThroughIL; + ID3D11VertexShader *mPassThroughVS; + ID3D11PixelShader *mPassThroughPS; +}; + +} +#endif // LIBGLESV2_RENDERER_SWAPCHAIN11_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain9.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain9.cpp new file mode 100644 index 00000000000..0324d0199be --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain9.cpp @@ -0,0 +1,434 @@ +#include "precompiled.h" +// +// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// SwapChain9.cpp: Implements a back-end specific class for the D3D9 swap chain. + +#include "libGLESv2/renderer/SwapChain9.h" +#include "libGLESv2/renderer/renderer9_utils.h" +#include "libGLESv2/renderer/Renderer9.h" + +namespace rx +{ + +SwapChain9::SwapChain9(Renderer9 *renderer, HWND window, HANDLE shareHandle, + GLenum backBufferFormat, GLenum depthBufferFormat) + : mRenderer(renderer), SwapChain(window, shareHandle, backBufferFormat, depthBufferFormat) +{ + mSwapChain = NULL; + mBackBuffer = NULL; + mDepthStencil = NULL; + mRenderTarget = NULL; + mOffscreenTexture = NULL; + mWidth = -1; + mHeight = -1; + mSwapInterval = -1; +} + +SwapChain9::~SwapChain9() +{ + release(); +} + +void SwapChain9::release() +{ + if (mSwapChain) + { + mSwapChain->Release(); + mSwapChain = NULL; + } + + if (mBackBuffer) + { + mBackBuffer->Release(); + mBackBuffer = NULL; + } + + if (mDepthStencil) + { + mDepthStencil->Release(); + mDepthStencil = NULL; + } + + if (mRenderTarget) + { + mRenderTarget->Release(); + mRenderTarget = NULL; + } + + if (mOffscreenTexture) + { + mOffscreenTexture->Release(); + mOffscreenTexture = NULL; + } + + if (mWindow) + mShareHandle = NULL; +} + +static DWORD convertInterval(EGLint interval) +{ + switch(interval) + { + case 0: return D3DPRESENT_INTERVAL_IMMEDIATE; + case 1: return D3DPRESENT_INTERVAL_ONE; + case 2: return D3DPRESENT_INTERVAL_TWO; + case 3: return D3DPRESENT_INTERVAL_THREE; + case 4: return D3DPRESENT_INTERVAL_FOUR; + default: UNREACHABLE(); + } + + return D3DPRESENT_INTERVAL_DEFAULT; +} + +EGLint SwapChain9::resize(int backbufferWidth, int backbufferHeight) +{ + // D3D9 does not support resizing swap chains without recreating them + return reset(backbufferWidth, backbufferHeight, mSwapInterval); +} + +EGLint SwapChain9::reset(int backbufferWidth, int backbufferHeight, EGLint swapInterval) +{ + IDirect3DDevice9 *device = mRenderer->getDevice(); + + if (device == NULL) + { + return EGL_BAD_ACCESS; + } + + // Evict all non-render target textures to system memory and release all resources + // before reallocating them to free up as much video memory as possible. + device->EvictManagedResources(); + + HRESULT result; + + // Release specific resources to free up memory for the new render target, while the + // old render target still exists for the purpose of preserving its contents. + if (mSwapChain) + { + mSwapChain->Release(); + mSwapChain = NULL; + } + + if (mBackBuffer) + { + mBackBuffer->Release(); + mBackBuffer = NULL; + } + + if (mOffscreenTexture) + { + mOffscreenTexture->Release(); + mOffscreenTexture = NULL; + } + + if (mDepthStencil) + { + mDepthStencil->Release(); + mDepthStencil = NULL; + } + + HANDLE *pShareHandle = NULL; + if (!mWindow && mRenderer->getShareHandleSupport()) + { + pShareHandle = &mShareHandle; + } + + result = device->CreateTexture(backbufferWidth, backbufferHeight, 1, D3DUSAGE_RENDERTARGET, + gl_d3d9::ConvertRenderbufferFormat(mBackBufferFormat), D3DPOOL_DEFAULT, + &mOffscreenTexture, pShareHandle); + if (FAILED(result)) + { + ERR("Could not create offscreen texture: %08lX", result); + release(); + + if (d3d9::isDeviceLostError(result)) + { + return EGL_CONTEXT_LOST; + } + else + { + return EGL_BAD_ALLOC; + } + } + + IDirect3DSurface9 *oldRenderTarget = mRenderTarget; + + result = mOffscreenTexture->GetSurfaceLevel(0, &mRenderTarget); + ASSERT(SUCCEEDED(result)); + + if (oldRenderTarget) + { + RECT rect = + { + 0, 0, + mWidth, mHeight + }; + + if (rect.right > static_cast(backbufferWidth)) + { + rect.right = backbufferWidth; + } + + if (rect.bottom > static_cast(backbufferHeight)) + { + rect.bottom = backbufferHeight; + } + + mRenderer->endScene(); + + result = device->StretchRect(oldRenderTarget, &rect, mRenderTarget, &rect, D3DTEXF_NONE); + ASSERT(SUCCEEDED(result)); + + oldRenderTarget->Release(); + } + + if (mWindow) + { + D3DPRESENT_PARAMETERS presentParameters = {0}; + presentParameters.AutoDepthStencilFormat = gl_d3d9::ConvertRenderbufferFormat(mDepthBufferFormat); + presentParameters.BackBufferCount = 1; + presentParameters.BackBufferFormat = gl_d3d9::ConvertRenderbufferFormat(mBackBufferFormat); + presentParameters.EnableAutoDepthStencil = FALSE; + presentParameters.Flags = 0; + presentParameters.hDeviceWindow = mWindow; + presentParameters.MultiSampleQuality = 0; // FIXME: Unimplemented + presentParameters.MultiSampleType = D3DMULTISAMPLE_NONE; // FIXME: Unimplemented + presentParameters.PresentationInterval = convertInterval(swapInterval); + presentParameters.SwapEffect = D3DSWAPEFFECT_DISCARD; + presentParameters.Windowed = TRUE; + presentParameters.BackBufferWidth = backbufferWidth; + presentParameters.BackBufferHeight = backbufferHeight; + + // http://crbug.com/140239 + // http://crbug.com/143434 + // + // Some AMD/Intel switchable systems / drivers appear to round swap chain surfaces to a multiple of 64 pixels in width + // when using the integrated Intel. This rounds the width up rather than down. + // + // Some non-switchable AMD GPUs / drivers do not respect the source rectangle to Present. Therefore, when the vendor ID + // is not Intel, the back buffer width must be exactly the same width as the window or horizontal scaling will occur. + if (mRenderer->getAdapterVendor() == VENDOR_ID_INTEL) + { + presentParameters.BackBufferWidth = (presentParameters.BackBufferWidth + 63) / 64 * 64; + } + + result = device->CreateAdditionalSwapChain(&presentParameters, &mSwapChain); + + if (FAILED(result)) + { + ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY || result == D3DERR_INVALIDCALL || result == D3DERR_DEVICELOST); + + ERR("Could not create additional swap chains or offscreen surfaces: %08lX", result); + release(); + + if (d3d9::isDeviceLostError(result)) + { + return EGL_CONTEXT_LOST; + } + else + { + return EGL_BAD_ALLOC; + } + } + + result = mSwapChain->GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, &mBackBuffer); + ASSERT(SUCCEEDED(result)); + InvalidateRect(mWindow, NULL, FALSE); + } + + if (mDepthBufferFormat != GL_NONE) + { + result = device->CreateDepthStencilSurface(backbufferWidth, backbufferHeight, + gl_d3d9::ConvertRenderbufferFormat(mDepthBufferFormat), + D3DMULTISAMPLE_NONE, 0, FALSE, &mDepthStencil, NULL); + + if (FAILED(result)) + { + ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY || result == D3DERR_INVALIDCALL); + + ERR("Could not create depthstencil surface for new swap chain: 0x%08X", result); + release(); + + if (d3d9::isDeviceLostError(result)) + { + return EGL_CONTEXT_LOST; + } + else + { + return EGL_BAD_ALLOC; + } + } + } + + mWidth = backbufferWidth; + mHeight = backbufferHeight; + mSwapInterval = swapInterval; + + return EGL_SUCCESS; +} + +// parameters should be validated/clamped by caller +EGLint SwapChain9::swapRect(EGLint x, EGLint y, EGLint width, EGLint height) +{ + if (!mSwapChain) + { + return EGL_SUCCESS; + } + + IDirect3DDevice9 *device = mRenderer->getDevice(); + + // Disable all pipeline operations + device->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); + device->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID); + device->SetRenderState(D3DRS_ALPHATESTENABLE, FALSE); + device->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE); + device->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); + device->SetRenderState(D3DRS_STENCILENABLE, FALSE); + device->SetRenderState(D3DRS_CLIPPLANEENABLE, 0); + device->SetRenderState(D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_ALPHA | D3DCOLORWRITEENABLE_BLUE | D3DCOLORWRITEENABLE_GREEN | D3DCOLORWRITEENABLE_RED); + device->SetRenderState(D3DRS_SRGBWRITEENABLE, FALSE); + device->SetRenderState(D3DRS_SCISSORTESTENABLE, FALSE); + device->SetPixelShader(NULL); + device->SetVertexShader(NULL); + + device->SetRenderTarget(0, mBackBuffer); + device->SetDepthStencilSurface(NULL); + + device->SetTexture(0, mOffscreenTexture); + device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); + device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); + device->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_DISABLE); + device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_POINT); + device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT); + device->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP); + device->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP); + device->SetFVF(D3DFVF_XYZRHW | D3DFVF_TEX1); + + D3DVIEWPORT9 viewport = {0, 0, mWidth, mHeight, 0.0f, 1.0f}; + device->SetViewport(&viewport); + + float x1 = x - 0.5f; + float y1 = (mHeight - y - height) - 0.5f; + float x2 = (x + width) - 0.5f; + float y2 = (mHeight - y) - 0.5f; + + float u1 = x / float(mWidth); + float v1 = y / float(mHeight); + float u2 = (x + width) / float(mWidth); + float v2 = (y + height) / float(mHeight); + + float quad[4][6] = {{x1, y1, 0.0f, 1.0f, u1, v2}, + {x2, y1, 0.0f, 1.0f, u2, v2}, + {x2, y2, 0.0f, 1.0f, u2, v1}, + {x1, y2, 0.0f, 1.0f, u1, v1}}; // x, y, z, rhw, u, v + + mRenderer->startScene(); + device->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, quad, 6 * sizeof(float)); + mRenderer->endScene(); + + device->SetTexture(0, NULL); + + RECT rect = + { + x, mHeight - y - height, + x + width, mHeight - y + }; + + HRESULT result = mSwapChain->Present(&rect, &rect, NULL, NULL, 0); + + mRenderer->markAllStateDirty(); + + if (d3d9::isDeviceLostError(result)) + { + return EGL_CONTEXT_LOST; + } + + if (result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY || result == D3DERR_DRIVERINTERNALERROR) + { + return EGL_BAD_ALLOC; + } + + ASSERT(SUCCEEDED(result)); + + return EGL_SUCCESS; +} + +// Increments refcount on surface. +// caller must Release() the returned surface +IDirect3DSurface9 *SwapChain9::getRenderTarget() +{ + if (mRenderTarget) + { + mRenderTarget->AddRef(); + } + + return mRenderTarget; +} + +// Increments refcount on surface. +// caller must Release() the returned surface +IDirect3DSurface9 *SwapChain9::getDepthStencil() +{ + if (mDepthStencil) + { + mDepthStencil->AddRef(); + } + + return mDepthStencil; +} + +// Increments refcount on texture. +// caller must Release() the returned texture +IDirect3DTexture9 *SwapChain9::getOffscreenTexture() +{ + if (mOffscreenTexture) + { + mOffscreenTexture->AddRef(); + } + + return mOffscreenTexture; +} + +SwapChain9 *SwapChain9::makeSwapChain9(SwapChain *swapChain) +{ + ASSERT(HAS_DYNAMIC_TYPE(rx::SwapChain9*, swapChain)); + return static_cast(swapChain); +} + +void SwapChain9::recreate() +{ + if (!mSwapChain) + { + return; + } + + IDirect3DDevice9 *device = mRenderer->getDevice(); + if (device == NULL) + { + return; + } + + D3DPRESENT_PARAMETERS presentParameters; + HRESULT result = mSwapChain->GetPresentParameters(&presentParameters); + ASSERT(SUCCEEDED(result)); + + IDirect3DSwapChain9* newSwapChain = NULL; + result = device->CreateAdditionalSwapChain(&presentParameters, &newSwapChain); + if (FAILED(result)) + { + return; + } + + mSwapChain->Release(); + mSwapChain = newSwapChain; + + mBackBuffer->Release(); + result = mSwapChain->GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, &mBackBuffer); + ASSERT(SUCCEEDED(result)); +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain9.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain9.h new file mode 100644 index 00000000000..16a62bd86f6 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain9.h @@ -0,0 +1,55 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// SwapChain9.h: Defines a back-end specific class for the D3D9 swap chain. + +#ifndef LIBGLESV2_RENDERER_SWAPCHAIN9_H_ +#define LIBGLESV2_RENDERER_SWAPCHAIN9_H_ + +#include "common/angleutils.h" +#include "libGLESv2/renderer/SwapChain.h" + +namespace rx +{ +class Renderer9; + +class SwapChain9 : public SwapChain +{ + public: + SwapChain9(Renderer9 *renderer, HWND window, HANDLE shareHandle, + GLenum backBufferFormat, GLenum depthBufferFormat); + virtual ~SwapChain9(); + + EGLint resize(EGLint backbufferWidth, EGLint backbufferHeight); + virtual EGLint reset(EGLint backbufferWidth, EGLint backbufferHeight, EGLint swapInterval); + virtual EGLint swapRect(EGLint x, EGLint y, EGLint width, EGLint height); + virtual void recreate(); + + virtual IDirect3DSurface9 *getRenderTarget(); + virtual IDirect3DSurface9 *getDepthStencil(); + virtual IDirect3DTexture9 *getOffscreenTexture(); + + static SwapChain9 *makeSwapChain9(SwapChain *swapChain); + + private: + DISALLOW_COPY_AND_ASSIGN(SwapChain9); + + void release(); + + Renderer9 *mRenderer; + EGLint mHeight; + EGLint mWidth; + EGLint mSwapInterval; + + IDirect3DSwapChain9 *mSwapChain; + IDirect3DSurface9 *mBackBuffer; + IDirect3DSurface9 *mRenderTarget; + IDirect3DSurface9 *mDepthStencil; + IDirect3DTexture9* mOffscreenTexture; +}; + +} +#endif // LIBGLESV2_RENDERER_SWAPCHAIN9_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage.cpp new file mode 100644 index 00000000000..00b316f1cc5 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage.cpp @@ -0,0 +1,122 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// TextureStorage.cpp: Implements the abstract rx::TextureStorageInterface class and its concrete derived +// classes TextureStorageInterface2D and TextureStorageInterfaceCube, which act as the interface to the +// GPU-side texture. + +#include "libGLESv2/renderer/TextureStorage.h" +#include "libGLESv2/renderer/Renderer.h" +#include "libGLESv2/Renderbuffer.h" +#include "libGLESv2/Texture.h" + +#include "common/debug.h" + +namespace rx +{ +unsigned int TextureStorageInterface::mCurrentTextureSerial = 1; + +TextureStorageInterface::TextureStorageInterface() + : mTextureSerial(issueTextureSerial()), + mInstance(NULL) +{ +} + +TextureStorageInterface::~TextureStorageInterface() +{ + delete mInstance; +} + +bool TextureStorageInterface::isRenderTarget() const +{ + return mInstance->isRenderTarget(); +} + + +bool TextureStorageInterface::isManaged() const +{ + return mInstance->isManaged(); +} + +unsigned int TextureStorageInterface::getTextureSerial() const +{ + return mTextureSerial; +} + +unsigned int TextureStorageInterface::issueTextureSerial() +{ + return mCurrentTextureSerial++; +} + +int TextureStorageInterface::getLodOffset() const +{ + return mInstance->getLodOffset(); +} + + +int TextureStorageInterface::levelCount() +{ + return mInstance->levelCount(); +} + +TextureStorageInterface2D::TextureStorageInterface2D(Renderer *renderer, SwapChain *swapchain) + : mRenderTargetSerial(gl::RenderbufferStorage::issueSerial()) +{ + mInstance = renderer->createTextureStorage2D(swapchain); +} + +TextureStorageInterface2D::TextureStorageInterface2D(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height) + : mRenderTargetSerial(gl::RenderbufferStorage::issueSerial()) +{ + mInstance = renderer->createTextureStorage2D(levels, internalformat, usage, forceRenderable, width, height); +} + +TextureStorageInterface2D::~TextureStorageInterface2D() +{ +} + +RenderTarget *TextureStorageInterface2D::getRenderTarget() const +{ + return mInstance->getRenderTarget(); +} + +void TextureStorageInterface2D::generateMipmap(int level) +{ + mInstance->generateMipmap(level); +} + +unsigned int TextureStorageInterface2D::getRenderTargetSerial(GLenum target) const +{ + return mRenderTargetSerial; +} + +TextureStorageInterfaceCube::TextureStorageInterfaceCube(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size) + : mFirstRenderTargetSerial(gl::RenderbufferStorage::issueCubeSerials()) +{ + mInstance = renderer->createTextureStorageCube(levels, internalformat, usage, forceRenderable, size); +} + +TextureStorageInterfaceCube::~TextureStorageInterfaceCube() +{ +} + +RenderTarget *TextureStorageInterfaceCube::getRenderTarget(GLenum faceTarget) const +{ + return mInstance->getRenderTarget(faceTarget); +} + +void TextureStorageInterfaceCube::generateMipmap(int face, int level) +{ + mInstance->generateMipmap(face, level); +} + +unsigned int TextureStorageInterfaceCube::getRenderTargetSerial(GLenum target) const +{ + return mFirstRenderTargetSerial + gl::TextureCubeMap::faceIndex(target); +} + +} \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage.h new file mode 100644 index 00000000000..edddb75f3fc --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage.h @@ -0,0 +1,110 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// TextureStorage.h: Defines the abstract rx::TextureStorageInterface class and its concrete derived +// classes TextureStorageInterface2D and TextureStorageInterfaceCube, which act as the interface to the +// GPU-side texture. + +#ifndef LIBGLESV2_RENDERER_TEXTURESTORAGE_H_ +#define LIBGLESV2_RENDERER_TEXTURESTORAGE_H_ + +#include "common/debug.h" + +namespace rx +{ +class Renderer; +class SwapChain; +class RenderTarget; +class Blit; + +class TextureStorage +{ + public: + TextureStorage() {}; + virtual ~TextureStorage() {}; + + virtual int getLodOffset() const = 0; + virtual bool isRenderTarget() const = 0; + virtual bool isManaged() const = 0; + virtual int levelCount() = 0; + + virtual RenderTarget *getRenderTarget() = 0; + virtual RenderTarget *getRenderTarget(GLenum faceTarget) = 0; + virtual void generateMipmap(int level) = 0; + virtual void generateMipmap(int face, int level) = 0; + + private: + DISALLOW_COPY_AND_ASSIGN(TextureStorage); + +}; + +class TextureStorageInterface +{ + public: + TextureStorageInterface(); + virtual ~TextureStorageInterface(); + + TextureStorage *getStorageInstance() { return mInstance; } + + unsigned int getTextureSerial() const; + virtual unsigned int getRenderTargetSerial(GLenum target) const = 0; + + virtual int getLodOffset() const; + virtual bool isRenderTarget() const; + virtual bool isManaged() const; + virtual int levelCount(); + + protected: + TextureStorage *mInstance; + + private: + DISALLOW_COPY_AND_ASSIGN(TextureStorageInterface); + + const unsigned int mTextureSerial; + static unsigned int issueTextureSerial(); + + static unsigned int mCurrentTextureSerial; +}; + +class TextureStorageInterface2D : public TextureStorageInterface +{ + public: + TextureStorageInterface2D(Renderer *renderer, SwapChain *swapchain); + TextureStorageInterface2D(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height); + virtual ~TextureStorageInterface2D(); + + void generateMipmap(int level); + RenderTarget *getRenderTarget() const; + + virtual unsigned int getRenderTargetSerial(GLenum target) const; + + private: + DISALLOW_COPY_AND_ASSIGN(TextureStorageInterface2D); + + const unsigned int mRenderTargetSerial; +}; + +class TextureStorageInterfaceCube : public TextureStorageInterface +{ + public: + TextureStorageInterfaceCube(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size); + virtual ~TextureStorageInterfaceCube(); + + void generateMipmap(int face, int level); + RenderTarget *getRenderTarget(GLenum faceTarget) const; + + virtual unsigned int getRenderTargetSerial(GLenum target) const; + + private: + DISALLOW_COPY_AND_ASSIGN(TextureStorageInterfaceCube); + + const unsigned int mFirstRenderTargetSerial; +}; + +} + +#endif // LIBGLESV2_RENDERER_TEXTURESTORAGE_H_ + diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage11.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage11.cpp new file mode 100644 index 00000000000..667dbff1752 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage11.cpp @@ -0,0 +1,676 @@ +#include "precompiled.h" +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// TextureStorage11.cpp: Implements the abstract rx::TextureStorage11 class and its concrete derived +// classes TextureStorage11_2D and TextureStorage11_Cube, which act as the interface to the D3D11 texture. + +#include "libGLESv2/renderer/TextureStorage11.h" + +#include "libGLESv2/renderer/Renderer11.h" +#include "libGLESv2/renderer/RenderTarget11.h" +#include "libGLESv2/renderer/SwapChain11.h" +#include "libGLESv2/renderer/renderer11_utils.h" + +#include "libGLESv2/utilities.h" +#include "libGLESv2/main.h" + +namespace rx +{ + +TextureStorage11::TextureStorage11(Renderer *renderer, UINT bindFlags) + : mBindFlags(bindFlags), + mLodOffset(0), + mMipLevels(0), + mTexture(NULL), + mTextureFormat(DXGI_FORMAT_UNKNOWN), + mShaderResourceFormat(DXGI_FORMAT_UNKNOWN), + mRenderTargetFormat(DXGI_FORMAT_UNKNOWN), + mDepthStencilFormat(DXGI_FORMAT_UNKNOWN), + mSRV(NULL), + mTextureWidth(0), + mTextureHeight(0) +{ + mRenderer = Renderer11::makeRenderer11(renderer); +} + +TextureStorage11::~TextureStorage11() +{ +} + +TextureStorage11 *TextureStorage11::makeTextureStorage11(TextureStorage *storage) +{ + ASSERT(HAS_DYNAMIC_TYPE(TextureStorage11*, storage)); + return static_cast(storage); +} + +DWORD TextureStorage11::GetTextureBindFlags(DXGI_FORMAT format, GLenum glusage, bool forceRenderable) +{ + UINT bindFlags = D3D11_BIND_SHADER_RESOURCE; + + if (d3d11::IsDepthStencilFormat(format)) + { + bindFlags |= D3D11_BIND_DEPTH_STENCIL; + } + else if(forceRenderable || (TextureStorage11::IsTextureFormatRenderable(format) && (glusage == GL_FRAMEBUFFER_ATTACHMENT_ANGLE))) + { + bindFlags |= D3D11_BIND_RENDER_TARGET; + } + return bindFlags; +} + +bool TextureStorage11::IsTextureFormatRenderable(DXGI_FORMAT format) +{ + switch(format) + { + case DXGI_FORMAT_R8G8B8A8_UNORM: + case DXGI_FORMAT_A8_UNORM: + case DXGI_FORMAT_R32G32B32A32_FLOAT: + case DXGI_FORMAT_R32G32B32_FLOAT: + case DXGI_FORMAT_R16G16B16A16_FLOAT: + case DXGI_FORMAT_B8G8R8A8_UNORM: + case DXGI_FORMAT_R8_UNORM: + case DXGI_FORMAT_R8G8_UNORM: + case DXGI_FORMAT_R16_FLOAT: + case DXGI_FORMAT_R16G16_FLOAT: + return true; + case DXGI_FORMAT_BC1_UNORM: + case DXGI_FORMAT_BC2_UNORM: + case DXGI_FORMAT_BC3_UNORM: + return false; + default: + UNREACHABLE(); + return false; + } +} + +UINT TextureStorage11::getBindFlags() const +{ + return mBindFlags; +} + +ID3D11Texture2D *TextureStorage11::getBaseTexture() const +{ + return mTexture; +} + +int TextureStorage11::getLodOffset() const +{ + return mLodOffset; +} + +bool TextureStorage11::isRenderTarget() const +{ + return (mBindFlags & (D3D11_BIND_RENDER_TARGET | D3D11_BIND_DEPTH_STENCIL)) != 0; +} + +bool TextureStorage11::isManaged() const +{ + return false; +} + +int TextureStorage11::levelCount() +{ + int levels = 0; + if (getBaseTexture()) + { + levels = mMipLevels - getLodOffset(); + } + return levels; +} + +UINT TextureStorage11::getSubresourceIndex(int level, int faceIndex) +{ + UINT index = 0; + if (getBaseTexture()) + { + index = D3D11CalcSubresource(level, faceIndex, mMipLevels); + } + return index; +} + +bool TextureStorage11::updateSubresourceLevel(ID3D11Texture2D *srcTexture, unsigned int sourceSubresource, + int level, int face, GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height) +{ + if (srcTexture) + { + // Round up the width and height to the nearest multiple of dimension alignment + unsigned int dimensionAlignment = d3d11::GetTextureFormatDimensionAlignment(mTextureFormat); + width = width + dimensionAlignment - 1 - (width - 1) % dimensionAlignment; + height = height + dimensionAlignment - 1 - (height - 1) % dimensionAlignment; + + D3D11_BOX srcBox; + srcBox.left = xoffset; + srcBox.top = yoffset; + srcBox.right = xoffset + width; + srcBox.bottom = yoffset + height; + srcBox.front = 0; + srcBox.back = 1; + + ID3D11DeviceContext *context = mRenderer->getDeviceContext(); + + ASSERT(getBaseTexture()); + context->CopySubresourceRegion(getBaseTexture(), getSubresourceIndex(level + mLodOffset, face), + xoffset, yoffset, 0, srcTexture, sourceSubresource, &srcBox); + return true; + } + + return false; +} + +void TextureStorage11::generateMipmapLayer(RenderTarget11 *source, RenderTarget11 *dest) +{ + if (source && dest) + { + ID3D11ShaderResourceView *sourceSRV = source->getShaderResourceView(); + ID3D11RenderTargetView *destRTV = dest->getRenderTargetView(); + + if (sourceSRV && destRTV) + { + gl::Rectangle sourceArea; + sourceArea.x = 0; + sourceArea.y = 0; + sourceArea.width = source->getWidth(); + sourceArea.height = source->getHeight(); + + gl::Rectangle destArea; + destArea.x = 0; + destArea.y = 0; + destArea.width = dest->getWidth(); + destArea.height = dest->getHeight(); + + mRenderer->copyTexture(sourceSRV, sourceArea, source->getWidth(), source->getHeight(), + destRTV, destArea, dest->getWidth(), dest->getHeight(), + GL_RGBA); + } + + if (sourceSRV) + { + sourceSRV->Release(); + } + if (destRTV) + { + destRTV->Release(); + } + } +} + +TextureStorage11_2D::TextureStorage11_2D(Renderer *renderer, SwapChain11 *swapchain) + : TextureStorage11(renderer, D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE) +{ + mTexture = swapchain->getOffscreenTexture(); + mSRV = swapchain->getRenderTargetShaderResource(); + + for (unsigned int i = 0; i < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) + { + mRenderTarget[i] = NULL; + } + + D3D11_TEXTURE2D_DESC texDesc; + mTexture->GetDesc(&texDesc); + mMipLevels = texDesc.MipLevels; + mTextureFormat = texDesc.Format; + mTextureWidth = texDesc.Width; + mTextureHeight = texDesc.Height; + + D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc; + mSRV->GetDesc(&srvDesc); + mShaderResourceFormat = srvDesc.Format; + + ID3D11RenderTargetView* offscreenRTV = swapchain->getRenderTarget(); + D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; + offscreenRTV->GetDesc(&rtvDesc); + mRenderTargetFormat = rtvDesc.Format; + offscreenRTV->Release(); + + mDepthStencilFormat = DXGI_FORMAT_UNKNOWN; +} + +TextureStorage11_2D::TextureStorage11_2D(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height) + : TextureStorage11(renderer, GetTextureBindFlags(gl_d3d11::ConvertTextureFormat(internalformat), usage, forceRenderable)) +{ + for (unsigned int i = 0; i < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) + { + mRenderTarget[i] = NULL; + } + + DXGI_FORMAT convertedFormat = gl_d3d11::ConvertTextureFormat(internalformat); + if (d3d11::IsDepthStencilFormat(convertedFormat)) + { + mTextureFormat = d3d11::GetDepthTextureFormat(convertedFormat); + mShaderResourceFormat = d3d11::GetDepthShaderResourceFormat(convertedFormat); + mDepthStencilFormat = convertedFormat; + mRenderTargetFormat = DXGI_FORMAT_UNKNOWN; + } + else + { + mTextureFormat = convertedFormat; + mShaderResourceFormat = convertedFormat; + mDepthStencilFormat = DXGI_FORMAT_UNKNOWN; + mRenderTargetFormat = convertedFormat; + } + + // if the width or height is not positive this should be treated as an incomplete texture + // we handle that here by skipping the d3d texture creation + if (width > 0 && height > 0) + { + // adjust size if needed for compressed textures + gl::MakeValidSize(false, gl::IsCompressed(internalformat), &width, &height, &mLodOffset); + + ID3D11Device *device = mRenderer->getDevice(); + + D3D11_TEXTURE2D_DESC desc; + desc.Width = width; // Compressed texture size constraints? + desc.Height = height; + desc.MipLevels = (levels > 0) ? levels + mLodOffset : 0; + desc.ArraySize = 1; + desc.Format = mTextureFormat; + desc.SampleDesc.Count = 1; + desc.SampleDesc.Quality = 0; + desc.Usage = D3D11_USAGE_DEFAULT; + desc.BindFlags = getBindFlags(); + desc.CPUAccessFlags = 0; + desc.MiscFlags = 0; + + HRESULT result = device->CreateTexture2D(&desc, NULL, &mTexture); + + // this can happen from windows TDR + if (d3d11::isDeviceLostError(result)) + { + mRenderer->notifyDeviceLost(); + gl::error(GL_OUT_OF_MEMORY); + } + else if (FAILED(result)) + { + ASSERT(result == E_OUTOFMEMORY); + ERR("Creating image failed."); + gl::error(GL_OUT_OF_MEMORY); + } + else + { + mTexture->GetDesc(&desc); + mMipLevels = desc.MipLevels; + mTextureWidth = desc.Width; + mTextureHeight = desc.Height; + } + } +} + +TextureStorage11_2D::~TextureStorage11_2D() +{ + if (mTexture) + { + mTexture->Release(); + mTexture = NULL; + } + + if (mSRV) + { + mSRV->Release(); + mSRV = NULL; + } + + for (unsigned int i = 0; i < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) + { + delete mRenderTarget[i]; + mRenderTarget[i] = NULL; + } +} + +TextureStorage11_2D *TextureStorage11_2D::makeTextureStorage11_2D(TextureStorage *storage) +{ + ASSERT(HAS_DYNAMIC_TYPE(TextureStorage11_2D*, storage)); + return static_cast(storage); +} + +RenderTarget *TextureStorage11_2D::getRenderTarget(int level) +{ + if (level >= 0 && level < static_cast(mMipLevels)) + { + if (!mRenderTarget[level]) + { + ID3D11Device *device = mRenderer->getDevice(); + HRESULT result; + + D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc; + srvDesc.Format = mShaderResourceFormat; + srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; + srvDesc.Texture2D.MostDetailedMip = level; + srvDesc.Texture2D.MipLevels = 1; + + ID3D11ShaderResourceView *srv; + result = device->CreateShaderResourceView(mTexture, &srvDesc, &srv); + + if (result == E_OUTOFMEMORY) + { + return gl::error(GL_OUT_OF_MEMORY, static_cast(NULL)); + } + ASSERT(SUCCEEDED(result)); + + if (mRenderTargetFormat != DXGI_FORMAT_UNKNOWN) + { + D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; + rtvDesc.Format = mRenderTargetFormat; + rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; + rtvDesc.Texture2D.MipSlice = level; + + ID3D11RenderTargetView *rtv; + result = device->CreateRenderTargetView(mTexture, &rtvDesc, &rtv); + + if (result == E_OUTOFMEMORY) + { + srv->Release(); + return gl::error(GL_OUT_OF_MEMORY, static_cast(NULL)); + } + ASSERT(SUCCEEDED(result)); + + // RenderTarget11 expects to be the owner of the resources it is given but TextureStorage11 + // also needs to keep a reference to the texture. + mTexture->AddRef(); + + mRenderTarget[level] = new RenderTarget11(mRenderer, rtv, mTexture, srv, + std::max(mTextureWidth >> level, 1U), + std::max(mTextureHeight >> level, 1U)); + } + else if (mDepthStencilFormat != DXGI_FORMAT_UNKNOWN) + { + D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc; + dsvDesc.Format = mDepthStencilFormat; + dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D; + dsvDesc.Texture2D.MipSlice = level; + dsvDesc.Flags = 0; + + ID3D11DepthStencilView *dsv; + result = device->CreateDepthStencilView(mTexture, &dsvDesc, &dsv); + + if (result == E_OUTOFMEMORY) + { + srv->Release(); + return gl::error(GL_OUT_OF_MEMORY, static_cast(NULL)); + } + ASSERT(SUCCEEDED(result)); + + // RenderTarget11 expects to be the owner of the resources it is given but TextureStorage11 + // also needs to keep a reference to the texture. + mTexture->AddRef(); + + mRenderTarget[level] = new RenderTarget11(mRenderer, dsv, mTexture, srv, + std::max(mTextureWidth >> level, 1U), + std::max(mTextureHeight >> level, 1U)); + } + else + { + UNREACHABLE(); + } + } + + return mRenderTarget[level]; + } + else + { + return NULL; + } +} + +ID3D11ShaderResourceView *TextureStorage11_2D::getSRV() +{ + if (!mSRV) + { + ID3D11Device *device = mRenderer->getDevice(); + + D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc; + srvDesc.Format = mShaderResourceFormat; + srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; + srvDesc.Texture2D.MipLevels = (mMipLevels == 0 ? -1 : mMipLevels); + srvDesc.Texture2D.MostDetailedMip = 0; + + HRESULT result = device->CreateShaderResourceView(mTexture, &srvDesc, &mSRV); + + if (result == E_OUTOFMEMORY) + { + return gl::error(GL_OUT_OF_MEMORY, static_cast(NULL)); + } + ASSERT(SUCCEEDED(result)); + } + + return mSRV; +} + +void TextureStorage11_2D::generateMipmap(int level) +{ + RenderTarget11 *source = RenderTarget11::makeRenderTarget11(getRenderTarget(level - 1)); + RenderTarget11 *dest = RenderTarget11::makeRenderTarget11(getRenderTarget(level)); + + generateMipmapLayer(source, dest); +} + +TextureStorage11_Cube::TextureStorage11_Cube(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size) + : TextureStorage11(renderer, GetTextureBindFlags(gl_d3d11::ConvertTextureFormat(internalformat), usage, forceRenderable)) +{ + for (unsigned int i = 0; i < 6; i++) + { + for (unsigned int j = 0; j < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; j++) + { + mRenderTarget[i][j] = NULL; + } + } + + DXGI_FORMAT convertedFormat = gl_d3d11::ConvertTextureFormat(internalformat); + if (d3d11::IsDepthStencilFormat(convertedFormat)) + { + mTextureFormat = d3d11::GetDepthTextureFormat(convertedFormat); + mShaderResourceFormat = d3d11::GetDepthShaderResourceFormat(convertedFormat); + mDepthStencilFormat = convertedFormat; + mRenderTargetFormat = DXGI_FORMAT_UNKNOWN; + } + else + { + mTextureFormat = convertedFormat; + mShaderResourceFormat = convertedFormat; + mDepthStencilFormat = DXGI_FORMAT_UNKNOWN; + mRenderTargetFormat = convertedFormat; + } + + // if the size is not positive this should be treated as an incomplete texture + // we handle that here by skipping the d3d texture creation + if (size > 0) + { + // adjust size if needed for compressed textures + int height = size; + gl::MakeValidSize(false, gl::IsCompressed(internalformat), &size, &height, &mLodOffset); + + ID3D11Device *device = mRenderer->getDevice(); + + D3D11_TEXTURE2D_DESC desc; + desc.Width = size; + desc.Height = size; + desc.MipLevels = (levels > 0) ? levels + mLodOffset : 0; + desc.ArraySize = 6; + desc.Format = mTextureFormat; + desc.SampleDesc.Count = 1; + desc.SampleDesc.Quality = 0; + desc.Usage = D3D11_USAGE_DEFAULT; + desc.BindFlags = getBindFlags(); + desc.CPUAccessFlags = 0; + desc.MiscFlags = D3D11_RESOURCE_MISC_TEXTURECUBE; + + HRESULT result = device->CreateTexture2D(&desc, NULL, &mTexture); + + if (FAILED(result)) + { + ASSERT(result == E_OUTOFMEMORY); + ERR("Creating image failed."); + gl::error(GL_OUT_OF_MEMORY); + } + else + { + mTexture->GetDesc(&desc); + mMipLevels = desc.MipLevels; + mTextureWidth = desc.Width; + mTextureHeight = desc.Height; + } + } +} + +TextureStorage11_Cube::~TextureStorage11_Cube() +{ + if (mTexture) + { + mTexture->Release(); + mTexture = NULL; + } + + if (mSRV) + { + mSRV->Release(); + mSRV = NULL; + } + + for (unsigned int i = 0; i < 6; i++) + { + for (unsigned int j = 0; j < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; j++) + { + delete mRenderTarget[i][j]; + mRenderTarget[i][j] = NULL; + } + } +} + +TextureStorage11_Cube *TextureStorage11_Cube::makeTextureStorage11_Cube(TextureStorage *storage) +{ + ASSERT(HAS_DYNAMIC_TYPE(TextureStorage11_Cube*, storage)); + return static_cast(storage); +} + +RenderTarget *TextureStorage11_Cube::getRenderTarget(GLenum faceTarget, int level) +{ + unsigned int faceIdx = gl::TextureCubeMap::faceIndex(faceTarget); + if (level >= 0 && level < static_cast(mMipLevels)) + { + if (!mRenderTarget[faceIdx][level]) + { + ID3D11Device *device = mRenderer->getDevice(); + HRESULT result; + + D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc; + srvDesc.Format = mShaderResourceFormat; + srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURECUBE; + srvDesc.Texture2DArray.MostDetailedMip = level; + srvDesc.Texture2DArray.MipLevels = 1; + srvDesc.Texture2DArray.FirstArraySlice = faceIdx; + srvDesc.Texture2DArray.ArraySize = 1; + + ID3D11ShaderResourceView *srv; + result = device->CreateShaderResourceView(mTexture, &srvDesc, &srv); + + if (result == E_OUTOFMEMORY) + { + return gl::error(GL_OUT_OF_MEMORY, static_cast(NULL)); + } + ASSERT(SUCCEEDED(result)); + + if (mRenderTargetFormat != DXGI_FORMAT_UNKNOWN) + { + D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; + rtvDesc.Format = mRenderTargetFormat; + rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY; + rtvDesc.Texture2DArray.MipSlice = level; + rtvDesc.Texture2DArray.FirstArraySlice = faceIdx; + rtvDesc.Texture2DArray.ArraySize = 1; + + ID3D11RenderTargetView *rtv; + result = device->CreateRenderTargetView(mTexture, &rtvDesc, &rtv); + + if (result == E_OUTOFMEMORY) + { + srv->Release(); + return gl::error(GL_OUT_OF_MEMORY, static_cast(NULL)); + } + ASSERT(SUCCEEDED(result)); + + // RenderTarget11 expects to be the owner of the resources it is given but TextureStorage11 + // also needs to keep a reference to the texture. + mTexture->AddRef(); + + mRenderTarget[faceIdx][level] = new RenderTarget11(mRenderer, rtv, mTexture, srv, + std::max(mTextureWidth >> level, 1U), + std::max(mTextureHeight >> level, 1U)); + } + else if (mDepthStencilFormat != DXGI_FORMAT_UNKNOWN) + { + D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc; + dsvDesc.Format = mRenderTargetFormat; + dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DARRAY; + dsvDesc.Texture2DArray.MipSlice = level; + dsvDesc.Texture2DArray.FirstArraySlice = faceIdx; + dsvDesc.Texture2DArray.ArraySize = 1; + + ID3D11DepthStencilView *dsv; + result = device->CreateDepthStencilView(mTexture, &dsvDesc, &dsv); + + if (result == E_OUTOFMEMORY) + { + srv->Release(); + return gl::error(GL_OUT_OF_MEMORY, static_cast(NULL)); + } + ASSERT(SUCCEEDED(result)); + + // RenderTarget11 expects to be the owner of the resources it is given but TextureStorage11 + // also needs to keep a reference to the texture. + mTexture->AddRef(); + + mRenderTarget[faceIdx][level] = new RenderTarget11(mRenderer, dsv, mTexture, srv, + std::max(mTextureWidth >> level, 1U), + std::max(mTextureHeight >> level, 1U)); + } + else + { + UNREACHABLE(); + } + } + + return mRenderTarget[faceIdx][level]; + } + else + { + return NULL; + } +} + +ID3D11ShaderResourceView *TextureStorage11_Cube::getSRV() +{ + if (!mSRV) + { + ID3D11Device *device = mRenderer->getDevice(); + + D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc; + srvDesc.Format = mShaderResourceFormat; + srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURECUBE; + srvDesc.TextureCube.MipLevels = (mMipLevels == 0 ? -1 : mMipLevels); + srvDesc.TextureCube.MostDetailedMip = 0; + + HRESULT result = device->CreateShaderResourceView(mTexture, &srvDesc, &mSRV); + + if (result == E_OUTOFMEMORY) + { + return gl::error(GL_OUT_OF_MEMORY, static_cast(NULL)); + } + ASSERT(SUCCEEDED(result)); + } + + return mSRV; +} + +void TextureStorage11_Cube::generateMipmap(int face, int level) +{ + RenderTarget11 *source = RenderTarget11::makeRenderTarget11(getRenderTarget(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, level - 1)); + RenderTarget11 *dest = RenderTarget11::makeRenderTarget11(getRenderTarget(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, level)); + + generateMipmapLayer(source, dest); +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage11.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage11.h new file mode 100644 index 00000000000..3c5ded05b88 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage11.h @@ -0,0 +1,120 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// TextureStorage11.h: Defines the abstract rx::TextureStorage11 class and its concrete derived +// classes TextureStorage11_2D and TextureStorage11_Cube, which act as the interface to the D3D11 texture. + +#ifndef LIBGLESV2_RENDERER_TEXTURESTORAGE11_H_ +#define LIBGLESV2_RENDERER_TEXTURESTORAGE11_H_ + +#include "libGLESv2/Texture.h" +#include "libGLESv2/renderer/TextureStorage.h" + +namespace rx +{ +class RenderTarget; +class RenderTarget11; +class Renderer; +class Renderer11; +class SwapChain11; + +class TextureStorage11 : public TextureStorage +{ + public: + TextureStorage11(Renderer *renderer, UINT bindFlags); + virtual ~TextureStorage11(); + + static TextureStorage11 *makeTextureStorage11(TextureStorage *storage); + + static DWORD GetTextureBindFlags(DXGI_FORMAT d3dfmt, GLenum glusage, bool forceRenderable); + static bool IsTextureFormatRenderable(DXGI_FORMAT format); + + UINT getBindFlags() const; + + virtual ID3D11Texture2D *getBaseTexture() const; + virtual ID3D11ShaderResourceView *getSRV() = 0; + virtual RenderTarget *getRenderTarget() { return getRenderTarget(0); } + virtual RenderTarget *getRenderTarget(int level) { return NULL; } + virtual RenderTarget *getRenderTarget(GLenum faceTarget) { return getRenderTarget(faceTarget, 0); } + virtual RenderTarget *getRenderTarget(GLenum faceTarget, int level) { return NULL; } + + virtual void generateMipmap(int level) {}; + virtual void generateMipmap(int face, int level) {}; + + virtual int getLodOffset() const; + virtual bool isRenderTarget() const; + virtual bool isManaged() const; + virtual int levelCount(); + UINT getSubresourceIndex(int level, int faceTarget); + + bool updateSubresourceLevel(ID3D11Texture2D *texture, unsigned int sourceSubresource, int level, + int faceTarget, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height); + + protected: + void generateMipmapLayer(RenderTarget11 *source, RenderTarget11 *dest); + + Renderer11 *mRenderer; + int mLodOffset; + unsigned int mMipLevels; + + ID3D11Texture2D *mTexture; + DXGI_FORMAT mTextureFormat; + DXGI_FORMAT mShaderResourceFormat; + DXGI_FORMAT mRenderTargetFormat; + DXGI_FORMAT mDepthStencilFormat; + unsigned int mTextureWidth; + unsigned int mTextureHeight; + + ID3D11ShaderResourceView *mSRV; + + private: + DISALLOW_COPY_AND_ASSIGN(TextureStorage11); + + const UINT mBindFlags; +}; + +class TextureStorage11_2D : public TextureStorage11 +{ + public: + TextureStorage11_2D(Renderer *renderer, SwapChain11 *swapchain); + TextureStorage11_2D(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height); + virtual ~TextureStorage11_2D(); + + static TextureStorage11_2D *makeTextureStorage11_2D(TextureStorage *storage); + + virtual ID3D11ShaderResourceView *getSRV(); + virtual RenderTarget *getRenderTarget(int level); + + virtual void generateMipmap(int level); + + private: + DISALLOW_COPY_AND_ASSIGN(TextureStorage11_2D); + + RenderTarget11 *mRenderTarget[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS]; +}; + +class TextureStorage11_Cube : public TextureStorage11 +{ + public: + TextureStorage11_Cube(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size); + virtual ~TextureStorage11_Cube(); + + static TextureStorage11_Cube *makeTextureStorage11_Cube(TextureStorage *storage); + + virtual ID3D11ShaderResourceView *getSRV(); + virtual RenderTarget *getRenderTarget(GLenum faceTarget, int level); + + virtual void generateMipmap(int face, int level); + + private: + DISALLOW_COPY_AND_ASSIGN(TextureStorage11_Cube); + + RenderTarget11 *mRenderTarget[6][gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS]; +}; + +} + +#endif // LIBGLESV2_RENDERER_TEXTURESTORAGE11_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage9.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage9.cpp new file mode 100644 index 00000000000..8aa74a7cba1 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage9.cpp @@ -0,0 +1,328 @@ +#include "precompiled.h" +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// TextureStorage9.cpp: Implements the abstract rx::TextureStorage9 class and its concrete derived +// classes TextureStorage9_2D and TextureStorage9_Cube, which act as the interface to the +// D3D9 texture. + +#include "libGLESv2/main.h" +#include "libGLESv2/renderer/Renderer9.h" +#include "libGLESv2/renderer/TextureStorage9.h" +#include "libGLESv2/renderer/SwapChain9.h" +#include "libGLESv2/renderer/RenderTarget9.h" +#include "libGLESv2/renderer/renderer9_utils.h" +#include "libGLESv2/Texture.h" + +namespace rx +{ +TextureStorage9::TextureStorage9(Renderer *renderer, DWORD usage) + : mLodOffset(0), + mRenderer(Renderer9::makeRenderer9(renderer)), + mD3DUsage(usage), + mD3DPool(mRenderer->getTexturePool(usage)) +{ +} + +TextureStorage9::~TextureStorage9() +{ +} + +TextureStorage9 *TextureStorage9::makeTextureStorage9(TextureStorage *storage) +{ + ASSERT(HAS_DYNAMIC_TYPE(TextureStorage9*, storage)); + return static_cast(storage); +} + +DWORD TextureStorage9::GetTextureUsage(D3DFORMAT d3dfmt, GLenum glusage, bool forceRenderable) +{ + DWORD d3dusage = 0; + + if (d3dfmt == D3DFMT_INTZ) + { + d3dusage |= D3DUSAGE_DEPTHSTENCIL; + } + else if(forceRenderable || (TextureStorage9::IsTextureFormatRenderable(d3dfmt) && (glusage == GL_FRAMEBUFFER_ATTACHMENT_ANGLE))) + { + d3dusage |= D3DUSAGE_RENDERTARGET; + } + return d3dusage; +} + +bool TextureStorage9::IsTextureFormatRenderable(D3DFORMAT format) +{ + if (format == D3DFMT_INTZ) + { + return true; + } + switch(format) + { + case D3DFMT_L8: + case D3DFMT_A8L8: + case D3DFMT_DXT1: + case D3DFMT_DXT3: + case D3DFMT_DXT5: + return false; + case D3DFMT_A8R8G8B8: + case D3DFMT_X8R8G8B8: + case D3DFMT_A16B16G16R16F: + case D3DFMT_A32B32G32R32F: + return true; + default: + UNREACHABLE(); + } + + return false; +} + +bool TextureStorage9::isRenderTarget() const +{ + return (mD3DUsage & (D3DUSAGE_RENDERTARGET | D3DUSAGE_DEPTHSTENCIL)) != 0; +} + +bool TextureStorage9::isManaged() const +{ + return (mD3DPool == D3DPOOL_MANAGED); +} + +D3DPOOL TextureStorage9::getPool() const +{ + return mD3DPool; +} + +DWORD TextureStorage9::getUsage() const +{ + return mD3DUsage; +} + +int TextureStorage9::getLodOffset() const +{ + return mLodOffset; +} + +int TextureStorage9::levelCount() +{ + return getBaseTexture() ? getBaseTexture()->GetLevelCount() - getLodOffset() : 0; +} + +TextureStorage9_2D::TextureStorage9_2D(Renderer *renderer, SwapChain9 *swapchain) : TextureStorage9(renderer, D3DUSAGE_RENDERTARGET) +{ + IDirect3DTexture9 *surfaceTexture = swapchain->getOffscreenTexture(); + mTexture = surfaceTexture; + mRenderTarget = NULL; + + initializeRenderTarget(); +} + +TextureStorage9_2D::TextureStorage9_2D(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height) + : TextureStorage9(renderer, GetTextureUsage(Renderer9::makeRenderer9(renderer)->ConvertTextureInternalFormat(internalformat), usage, forceRenderable)) +{ + mTexture = NULL; + mRenderTarget = NULL; + // if the width or height is not positive this should be treated as an incomplete texture + // we handle that here by skipping the d3d texture creation + if (width > 0 && height > 0) + { + IDirect3DDevice9 *device = mRenderer->getDevice(); + gl::MakeValidSize(false, gl::IsCompressed(internalformat), &width, &height, &mLodOffset); + HRESULT result = device->CreateTexture(width, height, levels ? levels + mLodOffset : 0, getUsage(), + mRenderer->ConvertTextureInternalFormat(internalformat), getPool(), &mTexture, NULL); + + if (FAILED(result)) + { + ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY); + gl::error(GL_OUT_OF_MEMORY); + } + } + + initializeRenderTarget(); +} + +TextureStorage9_2D::~TextureStorage9_2D() +{ + if (mTexture) + { + mTexture->Release(); + } + + delete mRenderTarget; +} + +TextureStorage9_2D *TextureStorage9_2D::makeTextureStorage9_2D(TextureStorage *storage) +{ + ASSERT(HAS_DYNAMIC_TYPE(TextureStorage9_2D*, storage)); + return static_cast(storage); +} + +// Increments refcount on surface. +// caller must Release() the returned surface +IDirect3DSurface9 *TextureStorage9_2D::getSurfaceLevel(int level, bool dirty) +{ + IDirect3DSurface9 *surface = NULL; + + if (mTexture) + { + HRESULT result = mTexture->GetSurfaceLevel(level + mLodOffset, &surface); + ASSERT(SUCCEEDED(result)); + + // With managed textures the driver needs to be informed of updates to the lower mipmap levels + if (level + mLodOffset != 0 && isManaged() && dirty) + { + mTexture->AddDirtyRect(NULL); + } + } + + return surface; +} + +RenderTarget *TextureStorage9_2D::getRenderTarget() +{ + return mRenderTarget; +} + +void TextureStorage9_2D::generateMipmap(int level) +{ + IDirect3DSurface9 *upper = getSurfaceLevel(level - 1, false); + IDirect3DSurface9 *lower = getSurfaceLevel(level, true); + + if (upper != NULL && lower != NULL) + { + mRenderer->boxFilter(upper, lower); + } + + if (upper != NULL) upper->Release(); + if (lower != NULL) lower->Release(); +} + +IDirect3DBaseTexture9 *TextureStorage9_2D::getBaseTexture() const +{ + return mTexture; +} + +void TextureStorage9_2D::initializeRenderTarget() +{ + ASSERT(mRenderTarget == NULL); + + if (mTexture != NULL && isRenderTarget()) + { + IDirect3DSurface9 *surface = getSurfaceLevel(0, false); + + mRenderTarget = new RenderTarget9(mRenderer, surface); + } +} + +TextureStorage9_Cube::TextureStorage9_Cube(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size) + : TextureStorage9(renderer, GetTextureUsage(Renderer9::makeRenderer9(renderer)->ConvertTextureInternalFormat(internalformat), usage, forceRenderable)) +{ + mTexture = NULL; + for (int i = 0; i < 6; ++i) + { + mRenderTarget[i] = NULL; + } + + // if the size is not positive this should be treated as an incomplete texture + // we handle that here by skipping the d3d texture creation + if (size > 0) + { + IDirect3DDevice9 *device = mRenderer->getDevice(); + int height = size; + gl::MakeValidSize(false, gl::IsCompressed(internalformat), &size, &height, &mLodOffset); + HRESULT result = device->CreateCubeTexture(size, levels ? levels + mLodOffset : 0, getUsage(), + mRenderer->ConvertTextureInternalFormat(internalformat), getPool(), &mTexture, NULL); + + if (FAILED(result)) + { + ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY); + gl::error(GL_OUT_OF_MEMORY); + } + } + + initializeRenderTarget(); +} + +TextureStorage9_Cube::~TextureStorage9_Cube() +{ + if (mTexture) + { + mTexture->Release(); + } + + for (int i = 0; i < 6; ++i) + { + delete mRenderTarget[i]; + } +} + +TextureStorage9_Cube *TextureStorage9_Cube::makeTextureStorage9_Cube(TextureStorage *storage) +{ + ASSERT(HAS_DYNAMIC_TYPE(TextureStorage9_Cube*, storage)); + return static_cast(storage); +} + +// Increments refcount on surface. +// caller must Release() the returned surface +IDirect3DSurface9 *TextureStorage9_Cube::getCubeMapSurface(GLenum faceTarget, int level, bool dirty) +{ + IDirect3DSurface9 *surface = NULL; + + if (mTexture) + { + D3DCUBEMAP_FACES face = gl_d3d9::ConvertCubeFace(faceTarget); + HRESULT result = mTexture->GetCubeMapSurface(face, level + mLodOffset, &surface); + ASSERT(SUCCEEDED(result)); + + // With managed textures the driver needs to be informed of updates to the lower mipmap levels + if (level != 0 && isManaged() && dirty) + { + mTexture->AddDirtyRect(face, NULL); + } + } + + return surface; +} + +RenderTarget *TextureStorage9_Cube::getRenderTarget(GLenum faceTarget) +{ + return mRenderTarget[gl::TextureCubeMap::faceIndex(faceTarget)]; +} + +void TextureStorage9_Cube::generateMipmap(int face, int level) +{ + IDirect3DSurface9 *upper = getCubeMapSurface(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, level - 1, false); + IDirect3DSurface9 *lower = getCubeMapSurface(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, level, true); + + if (upper != NULL && lower != NULL) + { + mRenderer->boxFilter(upper, lower); + } + + if (upper != NULL) upper->Release(); + if (lower != NULL) lower->Release(); +} + +IDirect3DBaseTexture9 *TextureStorage9_Cube::getBaseTexture() const +{ + return mTexture; +} + +void TextureStorage9_Cube::initializeRenderTarget() +{ + if (mTexture != NULL && isRenderTarget()) + { + IDirect3DSurface9 *surface = NULL; + + for (int i = 0; i < 6; ++i) + { + ASSERT(mRenderTarget[i] == NULL); + + surface = getCubeMapSurface(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, false); + + mRenderTarget[i] = new RenderTarget9(mRenderer, surface); + } + } +} + +} \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage9.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage9.h new file mode 100644 index 00000000000..86f551a1315 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage9.h @@ -0,0 +1,109 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// TextureStorage9.h: Defines the abstract rx::TextureStorage9 class and its concrete derived +// classes TextureStorage9_2D and TextureStorage9_Cube, which act as the interface to the +// D3D9 texture. + +#ifndef LIBGLESV2_RENDERER_TEXTURESTORAGE9_H_ +#define LIBGLESV2_RENDERER_TEXTURESTORAGE9_H_ + +#include "libGLESv2/renderer/TextureStorage.h" +#include "common/debug.h" + +namespace rx +{ +class Renderer9; +class SwapChain9; +class RenderTarget; +class RenderTarget9; +class Blit; + +class TextureStorage9 : public TextureStorage +{ + public: + TextureStorage9(Renderer *renderer, DWORD usage); + virtual ~TextureStorage9(); + + static TextureStorage9 *makeTextureStorage9(TextureStorage *storage); + + static DWORD GetTextureUsage(D3DFORMAT d3dfmt, GLenum glusage, bool forceRenderable); + static bool IsTextureFormatRenderable(D3DFORMAT format); + + D3DPOOL getPool() const; + DWORD getUsage() const; + + virtual IDirect3DBaseTexture9 *getBaseTexture() const = 0; + virtual RenderTarget *getRenderTarget() { return NULL; } + virtual RenderTarget *getRenderTarget(GLenum faceTarget) { return NULL; } + virtual void generateMipmap(int level) {}; + virtual void generateMipmap(int face, int level) {}; + + virtual int getLodOffset() const; + virtual bool isRenderTarget() const; + virtual bool isManaged() const; + virtual int levelCount(); + + protected: + int mLodOffset; + Renderer9 *mRenderer; + + private: + DISALLOW_COPY_AND_ASSIGN(TextureStorage9); + + const DWORD mD3DUsage; + const D3DPOOL mD3DPool; +}; + +class TextureStorage9_2D : public TextureStorage9 +{ + public: + TextureStorage9_2D(Renderer *renderer, SwapChain9 *swapchain); + TextureStorage9_2D(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height); + virtual ~TextureStorage9_2D(); + + static TextureStorage9_2D *makeTextureStorage9_2D(TextureStorage *storage); + + IDirect3DSurface9 *getSurfaceLevel(int level, bool dirty); + virtual RenderTarget *getRenderTarget(); + virtual IDirect3DBaseTexture9 *getBaseTexture() const; + virtual void generateMipmap(int level); + + private: + DISALLOW_COPY_AND_ASSIGN(TextureStorage9_2D); + + void initializeRenderTarget(); + + IDirect3DTexture9 *mTexture; + RenderTarget9 *mRenderTarget; +}; + +class TextureStorage9_Cube : public TextureStorage9 +{ + public: + TextureStorage9_Cube(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size); + virtual ~TextureStorage9_Cube(); + + static TextureStorage9_Cube *makeTextureStorage9_Cube(TextureStorage *storage); + + IDirect3DSurface9 *getCubeMapSurface(GLenum faceTarget, int level, bool dirty); + virtual RenderTarget *getRenderTarget(GLenum faceTarget); + virtual IDirect3DBaseTexture9 *getBaseTexture() const; + virtual void generateMipmap(int face, int level); + + private: + DISALLOW_COPY_AND_ASSIGN(TextureStorage9_Cube); + + void initializeRenderTarget(); + + IDirect3DCubeTexture9 *mTexture; + RenderTarget9 *mRenderTarget[6]; +}; + +} + +#endif // LIBGLESV2_RENDERER_TEXTURESTORAGE9_H_ + diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer.cpp new file mode 100644 index 00000000000..a8589465575 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer.cpp @@ -0,0 +1,245 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// VertexBuffer.cpp: Defines the abstract VertexBuffer class and VertexBufferInterface +// class with derivations, classes that perform graphics API agnostic vertex buffer operations. + +#include "libGLESv2/renderer/VertexBuffer.h" +#include "libGLESv2/renderer/Renderer.h" +#include "libGLESv2/Context.h" + +namespace rx +{ + +unsigned int VertexBuffer::mNextSerial = 1; + +VertexBuffer::VertexBuffer() +{ + updateSerial(); +} + +VertexBuffer::~VertexBuffer() +{ +} + +void VertexBuffer::updateSerial() +{ + mSerial = mNextSerial++; +} + +unsigned int VertexBuffer::getSerial() const +{ + return mSerial; +} + +VertexBufferInterface::VertexBufferInterface(rx::Renderer *renderer, bool dynamic) : mRenderer(renderer) +{ + mDynamic = dynamic; + mWritePosition = 0; + mReservedSpace = 0; + + mVertexBuffer = renderer->createVertexBuffer(); +} + +VertexBufferInterface::~VertexBufferInterface() +{ + delete mVertexBuffer; +} + +unsigned int VertexBufferInterface::getSerial() const +{ + return mVertexBuffer->getSerial(); +} + +unsigned int VertexBufferInterface::getBufferSize() const +{ + return mVertexBuffer->getBufferSize(); +} + +bool VertexBufferInterface::setBufferSize(unsigned int size) +{ + if (mVertexBuffer->getBufferSize() == 0) + { + return mVertexBuffer->initialize(size, mDynamic); + } + else + { + return mVertexBuffer->setBufferSize(size); + } +} + +unsigned int VertexBufferInterface::getWritePosition() const +{ + return mWritePosition; +} + +void VertexBufferInterface::setWritePosition(unsigned int writePosition) +{ + mWritePosition = writePosition; +} + +bool VertexBufferInterface::discard() +{ + return mVertexBuffer->discard(); +} + +int VertexBufferInterface::storeVertexAttributes(const gl::VertexAttribute &attrib, GLint start, GLsizei count, GLsizei instances) +{ + if (!reserveSpace(mReservedSpace)) + { + return -1; + } + mReservedSpace = 0; + + if (!mVertexBuffer->storeVertexAttributes(attrib, start, count, instances, mWritePosition)) + { + return -1; + } + + int oldWritePos = static_cast(mWritePosition); + mWritePosition += mVertexBuffer->getSpaceRequired(attrib, count, instances); + + return oldWritePos; +} + +int VertexBufferInterface::storeRawData(const void* data, unsigned int size) +{ + if (!reserveSpace(mReservedSpace)) + { + return -1; + } + mReservedSpace = 0; + + if (!mVertexBuffer->storeRawData(data, size, mWritePosition)) + { + return -1; + } + + int oldWritePos = static_cast(mWritePosition); + mWritePosition += size; + + return oldWritePos; +} + +bool VertexBufferInterface::reserveVertexSpace(const gl::VertexAttribute &attribute, GLsizei count, GLsizei instances) +{ + unsigned int requiredSpace = mVertexBuffer->getSpaceRequired(attribute, count, instances); + + // Protect against integer overflow + if (mReservedSpace + requiredSpace < mReservedSpace) + { + return false; + } + + mReservedSpace += requiredSpace; + return true; +} + +bool VertexBufferInterface::reserveRawDataSpace(unsigned int size) +{ + // Protect against integer overflow + if (mReservedSpace + size < mReservedSpace) + { + return false; + } + + mReservedSpace += size; + return true; +} + +VertexBuffer* VertexBufferInterface::getVertexBuffer() const +{ + return mVertexBuffer; +} + + +StreamingVertexBufferInterface::StreamingVertexBufferInterface(rx::Renderer *renderer, std::size_t initialSize) : VertexBufferInterface(renderer, true) +{ + setBufferSize(initialSize); +} + +StreamingVertexBufferInterface::~StreamingVertexBufferInterface() +{ +} + +bool StreamingVertexBufferInterface::reserveSpace(unsigned int size) +{ + bool result = true; + unsigned int curBufferSize = getBufferSize(); + if (size > curBufferSize) + { + result = setBufferSize(std::max(size, 3 * curBufferSize / 2)); + setWritePosition(0); + } + else if (getWritePosition() + size > curBufferSize) + { + if (!discard()) + { + return false; + } + setWritePosition(0); + } + + return result; +} + +StaticVertexBufferInterface::StaticVertexBufferInterface(rx::Renderer *renderer) : VertexBufferInterface(renderer, false) +{ +} + +StaticVertexBufferInterface::~StaticVertexBufferInterface() +{ +} + +int StaticVertexBufferInterface::lookupAttribute(const gl::VertexAttribute &attribute) +{ + for (unsigned int element = 0; element < mCache.size(); element++) + { + if (mCache[element].type == attribute.mType && + mCache[element].size == attribute.mSize && + mCache[element].stride == attribute.stride() && + mCache[element].normalized == attribute.mNormalized) + { + if (mCache[element].attributeOffset == attribute.mOffset % attribute.stride()) + { + return mCache[element].streamOffset; + } + } + } + + return -1; +} + +bool StaticVertexBufferInterface::reserveSpace(unsigned int size) +{ + unsigned int curSize = getBufferSize(); + if (curSize == 0) + { + setBufferSize(size); + return true; + } + else if (curSize >= size) + { + return true; + } + else + { + UNREACHABLE(); // Static vertex buffers can't be resized + return false; + } +} + +int StaticVertexBufferInterface::storeVertexAttributes(const gl::VertexAttribute &attrib, GLint start, GLsizei count, GLsizei instances) +{ + int attributeOffset = attrib.mOffset % attrib.stride(); + VertexElement element = { attrib.mType, attrib.mSize, attrib.stride(), attrib.mNormalized, attributeOffset, getWritePosition() }; + mCache.push_back(element); + + return VertexBufferInterface::storeVertexAttributes(attrib, start, count, instances); +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer.h new file mode 100644 index 00000000000..c474b05cc54 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer.h @@ -0,0 +1,138 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// VertexBuffer.h: Defines the abstract VertexBuffer class and VertexBufferInterface +// class with derivations, classes that perform graphics API agnostic vertex buffer operations. + +#ifndef LIBGLESV2_RENDERER_VERTEXBUFFER_H_ +#define LIBGLESV2_RENDERER_VERTEXBUFFER_H_ + +#include "common/angleutils.h" + +namespace gl +{ +class VertexAttribute; +} + +namespace rx +{ +class Renderer; + +class VertexBuffer +{ + public: + VertexBuffer(); + virtual ~VertexBuffer(); + + virtual bool initialize(unsigned int size, bool dynamicUsage) = 0; + + virtual bool storeVertexAttributes(const gl::VertexAttribute &attrib, GLint start, GLsizei count, + GLsizei instances, unsigned int offset) = 0; + virtual bool storeRawData(const void* data, unsigned int size, unsigned int offset) = 0; + + virtual unsigned int getSpaceRequired(const gl::VertexAttribute &attrib, GLsizei count, + GLsizei instances) const = 0; + + virtual bool requiresConversion(const gl::VertexAttribute &attrib) const = 0; + + virtual unsigned int getBufferSize() const = 0; + virtual bool setBufferSize(unsigned int size) = 0; + virtual bool discard() = 0; + + unsigned int getSerial() const; + + protected: + void updateSerial(); + + private: + DISALLOW_COPY_AND_ASSIGN(VertexBuffer); + + unsigned int mSerial; + static unsigned int mNextSerial; +}; + +class VertexBufferInterface +{ + public: + VertexBufferInterface(rx::Renderer *renderer, bool dynamic); + virtual ~VertexBufferInterface(); + + bool reserveVertexSpace(const gl::VertexAttribute &attribute, GLsizei count, GLsizei instances); + bool reserveRawDataSpace(unsigned int size); + + unsigned int getBufferSize() const; + + unsigned int getSerial() const; + + virtual int storeVertexAttributes(const gl::VertexAttribute &attrib, GLint start, GLsizei count, GLsizei instances); + virtual int storeRawData(const void* data, unsigned int size); + + VertexBuffer* getVertexBuffer() const; + + protected: + virtual bool reserveSpace(unsigned int size) = 0; + + unsigned int getWritePosition() const; + void setWritePosition(unsigned int writePosition); + + bool discard(); + + bool setBufferSize(unsigned int size); + + private: + DISALLOW_COPY_AND_ASSIGN(VertexBufferInterface); + + rx::Renderer *const mRenderer; + + VertexBuffer* mVertexBuffer; + + unsigned int mWritePosition; + unsigned int mReservedSpace; + bool mDynamic; +}; + +class StreamingVertexBufferInterface : public VertexBufferInterface +{ + public: + StreamingVertexBufferInterface(rx::Renderer *renderer, std::size_t initialSize); + ~StreamingVertexBufferInterface(); + + protected: + bool reserveSpace(unsigned int size); +}; + +class StaticVertexBufferInterface : public VertexBufferInterface +{ + public: + explicit StaticVertexBufferInterface(rx::Renderer *renderer); + ~StaticVertexBufferInterface(); + + int storeVertexAttributes(const gl::VertexAttribute &attrib, GLint start, GLsizei count, GLsizei instances); + + // Returns the offset into the vertex buffer, or -1 if not found + int lookupAttribute(const gl::VertexAttribute &attribute); + + protected: + bool reserveSpace(unsigned int size); + + private: + struct VertexElement + { + GLenum type; + GLint size; + GLsizei stride; + bool normalized; + int attributeOffset; + + unsigned int streamOffset; + }; + + std::vector mCache; +}; + +} + +#endif // LIBGLESV2_RENDERER_VERTEXBUFFER_H_ \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer11.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer11.cpp new file mode 100644 index 00000000000..92c8755e229 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer11.cpp @@ -0,0 +1,418 @@ +#include "precompiled.h" +// +// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// VertexBuffer11.cpp: Defines the D3D11 VertexBuffer implementation. + +#include "libGLESv2/renderer/VertexBuffer11.h" +#include "libGLESv2/renderer/BufferStorage.h" + +#include "libGLESv2/Buffer.h" +#include "libGLESv2/renderer/Renderer11.h" +#include "libGLESv2/Context.h" + +namespace rx +{ + +VertexBuffer11::VertexBuffer11(rx::Renderer11 *const renderer) : mRenderer(renderer) +{ + mBuffer = NULL; + mBufferSize = 0; + mDynamicUsage = false; +} + +VertexBuffer11::~VertexBuffer11() +{ + if (mBuffer) + { + mBuffer->Release(); + mBuffer = NULL; + } +} + +bool VertexBuffer11::initialize(unsigned int size, bool dynamicUsage) +{ + if (mBuffer) + { + mBuffer->Release(); + mBuffer = NULL; + } + + updateSerial(); + + if (size > 0) + { + ID3D11Device* dxDevice = mRenderer->getDevice(); + + D3D11_BUFFER_DESC bufferDesc; + bufferDesc.ByteWidth = size; + bufferDesc.Usage = D3D11_USAGE_DYNAMIC; + bufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER; + bufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + bufferDesc.MiscFlags = 0; + bufferDesc.StructureByteStride = 0; + + HRESULT result = dxDevice->CreateBuffer(&bufferDesc, NULL, &mBuffer); + if (FAILED(result)) + { + return false; + } + } + + mBufferSize = size; + mDynamicUsage = dynamicUsage; + return true; +} + +VertexBuffer11 *VertexBuffer11::makeVertexBuffer11(VertexBuffer *vetexBuffer) +{ + ASSERT(HAS_DYNAMIC_TYPE(VertexBuffer11*, vetexBuffer)); + return static_cast(vetexBuffer); +} + +bool VertexBuffer11::storeVertexAttributes(const gl::VertexAttribute &attrib, GLint start, GLsizei count, + GLsizei instances, unsigned int offset) +{ + if (mBuffer) + { + gl::Buffer *buffer = attrib.mBoundBuffer.get(); + + int inputStride = attrib.stride(); + const VertexConverter &converter = getVertexConversion(attrib); + + ID3D11DeviceContext *dxContext = mRenderer->getDeviceContext(); + + D3D11_MAPPED_SUBRESOURCE mappedResource; + HRESULT result = dxContext->Map(mBuffer, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mappedResource); + if (FAILED(result)) + { + ERR("Vertex buffer map failed with error 0x%08x", result); + return false; + } + + char* output = reinterpret_cast(mappedResource.pData) + offset; + + const char *input = NULL; + if (buffer) + { + BufferStorage *storage = buffer->getStorage(); + input = static_cast(storage->getData()) + static_cast(attrib.mOffset); + } + else + { + input = static_cast(attrib.mPointer); + } + + if (instances == 0 || attrib.mDivisor == 0) + { + input += inputStride * start; + } + + converter.conversionFunc(input, inputStride, count, output); + + dxContext->Unmap(mBuffer, 0); + + return true; + } + else + { + ERR("Vertex buffer not initialized."); + return false; + } +} + +bool VertexBuffer11::storeRawData(const void* data, unsigned int size, unsigned int offset) +{ + if (mBuffer) + { + ID3D11DeviceContext *dxContext = mRenderer->getDeviceContext(); + + D3D11_MAPPED_SUBRESOURCE mappedResource; + HRESULT result = dxContext->Map(mBuffer, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mappedResource); + if (FAILED(result)) + { + ERR("Vertex buffer map failed with error 0x%08x", result); + return false; + } + + char* bufferData = static_cast(mappedResource.pData); + memcpy(bufferData + offset, data, size); + + dxContext->Unmap(mBuffer, 0); + + return true; + } + else + { + ERR("Vertex buffer not initialized."); + return false; + } +} + +unsigned int VertexBuffer11::getSpaceRequired(const gl::VertexAttribute &attrib, GLsizei count, + GLsizei instances) const +{ + unsigned int elementSize = getVertexConversion(attrib).outputElementSize; + + if (instances == 0 || attrib.mDivisor == 0) + { + return elementSize * count; + } + else + { + return elementSize * ((instances + attrib.mDivisor - 1) / attrib.mDivisor); + } +} + +bool VertexBuffer11::requiresConversion(const gl::VertexAttribute &attrib) const +{ + return !getVertexConversion(attrib).identity; +} + +unsigned int VertexBuffer11::getBufferSize() const +{ + return mBufferSize; +} + +bool VertexBuffer11::setBufferSize(unsigned int size) +{ + if (size > mBufferSize) + { + return initialize(size, mDynamicUsage); + } + else + { + return true; + } +} + +bool VertexBuffer11::discard() +{ + if (mBuffer) + { + ID3D11DeviceContext *dxContext = mRenderer->getDeviceContext(); + + D3D11_MAPPED_SUBRESOURCE mappedResource; + HRESULT result = dxContext->Map(mBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource); + if (FAILED(result)) + { + ERR("Vertex buffer map failed with error 0x%08x", result); + return false; + } + + dxContext->Unmap(mBuffer, 0); + + return true; + } + else + { + ERR("Vertex buffer not initialized."); + return false; + } +} + +unsigned int VertexBuffer11::getVertexSize(const gl::VertexAttribute &attrib) const +{ + return getVertexConversion(attrib).outputElementSize; +} + +DXGI_FORMAT VertexBuffer11::getDXGIFormat(const gl::VertexAttribute &attrib) const +{ + return getVertexConversion(attrib).dxgiFormat; +} + +ID3D11Buffer *VertexBuffer11::getBuffer() const +{ + return mBuffer; +} + +template +static void copyVertexData(const void *input, unsigned int stride, unsigned int count, void *output) +{ + unsigned int attribSize = sizeof(T) * componentCount; + + if (attribSize == stride && !widen) + { + memcpy(output, input, count * attribSize); + } + else + { + unsigned int outputStride = widen ? 4 : componentCount; + T defaultVal = normalized ? std::numeric_limits::max() : T(1); + + for (unsigned int i = 0; i < count; i++) + { + const T *offsetInput = reinterpret_cast(reinterpret_cast(input) + i * stride); + T *offsetOutput = reinterpret_cast(output) + i * outputStride; + + for (unsigned int j = 0; j < componentCount; j++) + { + offsetOutput[j] = offsetInput[j]; + } + + if (widen) + { + offsetOutput[3] = defaultVal; + } + } + } +} + +template +static void copyFixedVertexData(const void* input, unsigned int stride, unsigned int count, void* output) +{ + static const float divisor = 1.0f / (1 << 16); + + for (unsigned int i = 0; i < count; i++) + { + const GLfixed* offsetInput = reinterpret_cast(reinterpret_cast(input) + stride * i); + float* offsetOutput = reinterpret_cast(output) + i * componentCount; + + for (unsigned int j = 0; j < componentCount; j++) + { + offsetOutput[j] = static_cast(offsetInput[j]) * divisor; + } + } +} + +template +static void copyToFloatVertexData(const void* input, unsigned int stride, unsigned int count, void* output) +{ + typedef std::numeric_limits NL; + + for (unsigned int i = 0; i < count; i++) + { + const T *offsetInput = reinterpret_cast(reinterpret_cast(input) + stride * i); + float *offsetOutput = reinterpret_cast(output) + i * componentCount; + + for (unsigned int j = 0; j < componentCount; j++) + { + if (normalized) + { + if (NL::is_signed) + { + const float divisor = 1.0f / (2 * static_cast(NL::max()) + 1); + offsetOutput[j] = (2 * static_cast(offsetInput[j]) + 1) * divisor; + } + else + { + offsetOutput[j] = static_cast(offsetInput[j]) / NL::max(); + } + } + else + { + offsetOutput[j] = static_cast(offsetInput[j]); + } + } + } +} + +const VertexBuffer11::VertexConverter VertexBuffer11::mPossibleTranslations[NUM_GL_VERTEX_ATTRIB_TYPES][2][4] = +{ + { // GL_BYTE + { // unnormalized + { ©ToFloatVertexData, false, DXGI_FORMAT_R32_FLOAT, 4 }, + { ©ToFloatVertexData, false, DXGI_FORMAT_R32G32_FLOAT, 8 }, + { ©ToFloatVertexData, false, DXGI_FORMAT_R32G32B32_FLOAT, 12 }, + { ©ToFloatVertexData, false, DXGI_FORMAT_R32G32B32A32_FLOAT, 16 }, + }, + { // normalized + { ©VertexData, true, DXGI_FORMAT_R8_SNORM, 1 }, + { ©VertexData, true, DXGI_FORMAT_R8G8_SNORM, 2 }, + { ©VertexData, false, DXGI_FORMAT_R8G8B8A8_SNORM, 4 }, + { ©VertexData, true, DXGI_FORMAT_R8G8B8A8_SNORM, 4 }, + }, + }, + { // GL_UNSIGNED_BYTE + { // unnormalized + { ©ToFloatVertexData, false, DXGI_FORMAT_R32_FLOAT, 4 }, + { ©ToFloatVertexData, false, DXGI_FORMAT_R32G32_FLOAT, 8 }, + { ©ToFloatVertexData, false, DXGI_FORMAT_R32G32B32_FLOAT, 12 }, + { ©ToFloatVertexData, false, DXGI_FORMAT_R32G32B32A32_FLOAT, 16 }, + }, + { // normalized + { ©VertexData, true, DXGI_FORMAT_R8_UNORM, 1 }, + { ©VertexData, true, DXGI_FORMAT_R8G8_UNORM, 2 }, + { ©VertexData, false, DXGI_FORMAT_R8G8B8A8_UNORM, 4 }, + { ©VertexData, true, DXGI_FORMAT_R8G8B8A8_UNORM, 4 }, + }, + }, + { // GL_SHORT + { // unnormalized + { ©ToFloatVertexData, false, DXGI_FORMAT_R32_FLOAT, 4 }, + { ©ToFloatVertexData, false, DXGI_FORMAT_R32G32_FLOAT, 8 }, + { ©ToFloatVertexData, false, DXGI_FORMAT_R32G32B32_FLOAT, 12 }, + { ©ToFloatVertexData, false, DXGI_FORMAT_R32G32B32A32_FLOAT, 16 }, + }, + { // normalized + { ©VertexData, true, DXGI_FORMAT_R16_SNORM, 2 }, + { ©VertexData, true, DXGI_FORMAT_R16G16_SNORM, 4 }, + { ©VertexData, false, DXGI_FORMAT_R16G16B16A16_SNORM, 8 }, + { ©VertexData, true, DXGI_FORMAT_R16G16B16A16_SNORM, 8 }, + }, + }, + { // GL_UNSIGNED_SHORT + { // unnormalized + { ©ToFloatVertexData, false, DXGI_FORMAT_R32_FLOAT, 4 }, + { ©ToFloatVertexData, false, DXGI_FORMAT_R32G32_FLOAT, 8 }, + { ©ToFloatVertexData, false, DXGI_FORMAT_R32G32B32_FLOAT, 12 }, + { ©ToFloatVertexData, false, DXGI_FORMAT_R32G32B32A32_FLOAT, 16 }, + }, + { // normalized + { ©VertexData, true, DXGI_FORMAT_R16_UNORM, 2 }, + { ©VertexData, true, DXGI_FORMAT_R16G16_UNORM, 4 }, + { ©VertexData, false, DXGI_FORMAT_R16G16B16A16_UNORM, 8 }, + { ©VertexData, true, DXGI_FORMAT_R16G16B16A16_UNORM, 8 }, + }, + }, + { // GL_FIXED + { // unnormalized + { ©FixedVertexData<1>, false, DXGI_FORMAT_R32_FLOAT, 4 }, + { ©FixedVertexData<2>, false, DXGI_FORMAT_R32G32_FLOAT, 8 }, + { ©FixedVertexData<3>, false, DXGI_FORMAT_R32G32B32_FLOAT, 12 }, + { ©FixedVertexData<4>, false, DXGI_FORMAT_R32G32B32A32_FLOAT, 16 }, + }, + { // normalized + { ©FixedVertexData<1>, false, DXGI_FORMAT_R32_FLOAT, 4 }, + { ©FixedVertexData<2>, false, DXGI_FORMAT_R32G32_FLOAT, 8 }, + { ©FixedVertexData<3>, false, DXGI_FORMAT_R32G32B32_FLOAT, 12 }, + { ©FixedVertexData<4>, false, DXGI_FORMAT_R32G32B32A32_FLOAT, 16 }, + }, + }, + { // GL_FLOAT + { // unnormalized + { ©VertexData, true, DXGI_FORMAT_R32_FLOAT, 4 }, + { ©VertexData, true, DXGI_FORMAT_R32G32_FLOAT, 8 }, + { ©VertexData, true, DXGI_FORMAT_R32G32B32_FLOAT, 12 }, + { ©VertexData, true, DXGI_FORMAT_R32G32B32A32_FLOAT, 16 }, + }, + { // normalized + { ©VertexData, true, DXGI_FORMAT_R32_FLOAT, 4 }, + { ©VertexData, true, DXGI_FORMAT_R32G32_FLOAT, 8 }, + { ©VertexData, true, DXGI_FORMAT_R32G32B32_FLOAT, 12 }, + { ©VertexData, true, DXGI_FORMAT_R32G32B32A32_FLOAT, 16 }, + }, + }, +}; + +const VertexBuffer11::VertexConverter &VertexBuffer11::getVertexConversion(const gl::VertexAttribute &attribute) +{ + unsigned int typeIndex = 0; + switch (attribute.mType) + { + case GL_BYTE: typeIndex = 0; break; + case GL_UNSIGNED_BYTE: typeIndex = 1; break; + case GL_SHORT: typeIndex = 2; break; + case GL_UNSIGNED_SHORT: typeIndex = 3; break; + case GL_FIXED: typeIndex = 4; break; + case GL_FLOAT: typeIndex = 5; break; + default: UNREACHABLE(); break; + } + + return mPossibleTranslations[typeIndex][attribute.mNormalized ? 1 : 0][attribute.mSize - 1]; +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer11.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer11.h new file mode 100644 index 00000000000..75e025075e4 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer11.h @@ -0,0 +1,73 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// VertexBuffer11.h: Defines the D3D11 VertexBuffer implementation. + +#ifndef LIBGLESV2_RENDERER_VERTEXBUFFER11_H_ +#define LIBGLESV2_RENDERER_VERTEXBUFFER11_H_ + +#include "libGLESv2/renderer/VertexBuffer.h" + +namespace rx +{ +class Renderer11; + +class VertexBuffer11 : public VertexBuffer +{ + public: + explicit VertexBuffer11(rx::Renderer11 *const renderer); + virtual ~VertexBuffer11(); + + virtual bool initialize(unsigned int size, bool dynamicUsage); + + static VertexBuffer11 *makeVertexBuffer11(VertexBuffer *vetexBuffer); + + virtual bool storeVertexAttributes(const gl::VertexAttribute &attrib, GLint start, GLsizei count, GLsizei instances, + unsigned int offset); + virtual bool storeRawData(const void* data, unsigned int size, unsigned int offset); + + virtual unsigned int getSpaceRequired(const gl::VertexAttribute &attrib, GLsizei count, GLsizei instances) const; + + virtual bool requiresConversion(const gl::VertexAttribute &attrib) const; + + virtual unsigned int getBufferSize() const; + virtual bool setBufferSize(unsigned int size); + virtual bool discard(); + + unsigned int getVertexSize(const gl::VertexAttribute &attrib) const; + DXGI_FORMAT getDXGIFormat(const gl::VertexAttribute &attrib) const; + + ID3D11Buffer *getBuffer() const; + + private: + DISALLOW_COPY_AND_ASSIGN(VertexBuffer11); + + rx::Renderer11 *const mRenderer; + + ID3D11Buffer *mBuffer; + unsigned int mBufferSize; + bool mDynamicUsage; + + typedef void (*VertexConversionFunction)(const void *, unsigned int, unsigned int, void *); + struct VertexConverter + { + VertexConversionFunction conversionFunc; + bool identity; + DXGI_FORMAT dxgiFormat; + unsigned int outputElementSize; + }; + + enum { NUM_GL_VERTEX_ATTRIB_TYPES = 6 }; + + // This table is used to generate mAttributeTypes. + static const VertexConverter mPossibleTranslations[NUM_GL_VERTEX_ATTRIB_TYPES][2][4]; // [GL types as enumerated by typeIndex()][normalized][size - 1] + + static const VertexConverter &getVertexConversion(const gl::VertexAttribute &attribute); +}; + +} + +#endif // LIBGLESV2_RENDERER_VERTEXBUFFER11_H_ \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer9.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer9.cpp new file mode 100644 index 00000000000..76dc73e391a --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer9.cpp @@ -0,0 +1,486 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// VertexBuffer9.cpp: Defines the D3D9 VertexBuffer implementation. + +#include "libGLESv2/renderer/VertexBuffer9.h" +#include "libGLESv2/renderer/vertexconversion.h" +#include "libGLESv2/renderer/BufferStorage.h" +#include "libGLESv2/Context.h" +#include "libGLESv2/renderer/Renderer9.h" + +#include "libGLESv2/Buffer.h" + +namespace rx +{ + +bool VertexBuffer9::mTranslationsInitialized = false; +VertexBuffer9::FormatConverter VertexBuffer9::mFormatConverters[NUM_GL_VERTEX_ATTRIB_TYPES][2][4]; + +VertexBuffer9::VertexBuffer9(rx::Renderer9 *const renderer) : mRenderer(renderer) +{ + mVertexBuffer = NULL; + mBufferSize = 0; + mDynamicUsage = false; + + if (!mTranslationsInitialized) + { + initializeTranslations(renderer->getCapsDeclTypes()); + mTranslationsInitialized = true; + } +} + +VertexBuffer9::~VertexBuffer9() +{ + if (mVertexBuffer) + { + mVertexBuffer->Release(); + mVertexBuffer = NULL; + } +} + +bool VertexBuffer9::initialize(unsigned int size, bool dynamicUsage) +{ + if (mVertexBuffer) + { + mVertexBuffer->Release(); + mVertexBuffer = NULL; + } + + updateSerial(); + + if (size > 0) + { + DWORD flags = D3DUSAGE_WRITEONLY; + if (dynamicUsage) + { + flags |= D3DUSAGE_DYNAMIC; + } + + HRESULT result = mRenderer->createVertexBuffer(size, flags, &mVertexBuffer); + + if (FAILED(result)) + { + ERR("Out of memory allocating a vertex buffer of size %lu.", size); + return false; + } + } + + mBufferSize = size; + mDynamicUsage = dynamicUsage; + return true; +} + +VertexBuffer9 *VertexBuffer9::makeVertexBuffer9(VertexBuffer *vertexBuffer) +{ + ASSERT(HAS_DYNAMIC_TYPE(VertexBuffer9*, vertexBuffer)); + return static_cast(vertexBuffer); +} + +bool VertexBuffer9::storeVertexAttributes(const gl::VertexAttribute &attrib, GLint start, GLsizei count, + GLsizei instances, unsigned int offset) +{ + if (mVertexBuffer) + { + gl::Buffer *buffer = attrib.mBoundBuffer.get(); + + int inputStride = attrib.stride(); + int elementSize = attrib.typeSize(); + const FormatConverter &converter = formatConverter(attrib); + + DWORD lockFlags = mDynamicUsage ? D3DLOCK_NOOVERWRITE : 0; + + void *mapPtr = NULL; + HRESULT result = mVertexBuffer->Lock(offset, spaceRequired(attrib, count, instances), &mapPtr, lockFlags); + + if (FAILED(result)) + { + ERR("Lock failed with error 0x%08x", result); + return false; + } + + const char *input = NULL; + if (buffer) + { + BufferStorage *storage = buffer->getStorage(); + input = static_cast(storage->getData()) + static_cast(attrib.mOffset); + } + else + { + input = static_cast(attrib.mPointer); + } + + if (instances == 0 || attrib.mDivisor == 0) + { + input += inputStride * start; + } + + if (converter.identity && inputStride == elementSize) + { + memcpy(mapPtr, input, count * inputStride); + } + else + { + converter.convertArray(input, inputStride, count, mapPtr); + } + + mVertexBuffer->Unlock(); + + return true; + } + else + { + ERR("Vertex buffer not initialized."); + return false; + } +} + +bool VertexBuffer9::storeRawData(const void* data, unsigned int size, unsigned int offset) +{ + if (mVertexBuffer) + { + DWORD lockFlags = mDynamicUsage ? D3DLOCK_NOOVERWRITE : 0; + + void *mapPtr = NULL; + HRESULT result = mVertexBuffer->Lock(offset, size, &mapPtr, lockFlags); + + if (FAILED(result)) + { + ERR("Lock failed with error 0x%08x", result); + return false; + } + + memcpy(mapPtr, data, size); + + mVertexBuffer->Unlock(); + + return true; + } + else + { + ERR("Vertex buffer not initialized."); + return false; + } +} + +unsigned int VertexBuffer9::getSpaceRequired(const gl::VertexAttribute &attrib, GLsizei count, GLsizei instances) const +{ + return spaceRequired(attrib, count, instances); +} + +bool VertexBuffer9::requiresConversion(const gl::VertexAttribute &attrib) const +{ + return formatConverter(attrib).identity; +} + +unsigned int VertexBuffer9::getVertexSize(const gl::VertexAttribute &attrib) const +{ + return spaceRequired(attrib, 1, 0); +} + +D3DDECLTYPE VertexBuffer9::getDeclType(const gl::VertexAttribute &attrib) const +{ + return formatConverter(attrib).d3dDeclType; +} + +unsigned int VertexBuffer9::getBufferSize() const +{ + return mBufferSize; +} + +bool VertexBuffer9::setBufferSize(unsigned int size) +{ + if (size > mBufferSize) + { + return initialize(size, mDynamicUsage); + } + else + { + return true; + } +} + +bool VertexBuffer9::discard() +{ + if (mVertexBuffer) + { + void *dummy; + HRESULT result; + + result = mVertexBuffer->Lock(0, 1, &dummy, D3DLOCK_DISCARD); + if (FAILED(result)) + { + ERR("Discard lock failed with error 0x%08x", result); + return false; + } + + result = mVertexBuffer->Unlock(); + if (FAILED(result)) + { + ERR("Discard unlock failed with error 0x%08x", result); + return false; + } + + return true; + } + else + { + ERR("Vertex buffer not initialized."); + return false; + } +} + +IDirect3DVertexBuffer9 * VertexBuffer9::getBuffer() const +{ + return mVertexBuffer; +} + +// Mapping from OpenGL-ES vertex attrib type to D3D decl type: +// +// BYTE SHORT (Cast) +// BYTE-norm FLOAT (Normalize) (can't be exactly represented as SHORT-norm) +// UNSIGNED_BYTE UBYTE4 (Identity) or SHORT (Cast) +// UNSIGNED_BYTE-norm UBYTE4N (Identity) or FLOAT (Normalize) +// SHORT SHORT (Identity) +// SHORT-norm SHORT-norm (Identity) or FLOAT (Normalize) +// UNSIGNED_SHORT FLOAT (Cast) +// UNSIGNED_SHORT-norm USHORT-norm (Identity) or FLOAT (Normalize) +// FIXED (not in WebGL) FLOAT (FixedToFloat) +// FLOAT FLOAT (Identity) + +// GLToCType maps from GL type (as GLenum) to the C typedef. +template struct GLToCType { }; + +template <> struct GLToCType { typedef GLbyte type; }; +template <> struct GLToCType { typedef GLubyte type; }; +template <> struct GLToCType { typedef GLshort type; }; +template <> struct GLToCType { typedef GLushort type; }; +template <> struct GLToCType { typedef GLuint type; }; +template <> struct GLToCType { typedef GLfloat type; }; + +// This differs from D3DDECLTYPE in that it is unsized. (Size expansion is applied last.) +enum D3DVertexType +{ + D3DVT_FLOAT, + D3DVT_SHORT, + D3DVT_SHORT_NORM, + D3DVT_UBYTE, + D3DVT_UBYTE_NORM, + D3DVT_USHORT_NORM +}; + +// D3DToCType maps from D3D vertex type (as enum D3DVertexType) to the corresponding C type. +template struct D3DToCType { }; + +template <> struct D3DToCType { typedef float type; }; +template <> struct D3DToCType { typedef short type; }; +template <> struct D3DToCType { typedef short type; }; +template <> struct D3DToCType { typedef unsigned char type; }; +template <> struct D3DToCType { typedef unsigned char type; }; +template <> struct D3DToCType { typedef unsigned short type; }; + +// Encode the type/size combinations that D3D permits. For each type/size it expands to a widener that will provide the appropriate final size. +template struct WidenRule { }; + +template struct WidenRule : NoWiden { }; +template struct WidenRule : WidenToEven { }; +template struct WidenRule : WidenToEven { }; +template struct WidenRule : WidenToFour { }; +template struct WidenRule : WidenToFour { }; +template struct WidenRule : WidenToEven { }; + +// VertexTypeFlags encodes the D3DCAPS9::DeclType flag and vertex declaration flag for each D3D vertex type & size combination. +template struct VertexTypeFlags { }; + +template +struct VertexTypeFlagsHelper +{ + enum { capflag = _capflag }; + enum { declflag = _declflag }; +}; + +template <> struct VertexTypeFlags : VertexTypeFlagsHelper<0, D3DDECLTYPE_FLOAT1> { }; +template <> struct VertexTypeFlags : VertexTypeFlagsHelper<0, D3DDECLTYPE_FLOAT2> { }; +template <> struct VertexTypeFlags : VertexTypeFlagsHelper<0, D3DDECLTYPE_FLOAT3> { }; +template <> struct VertexTypeFlags : VertexTypeFlagsHelper<0, D3DDECLTYPE_FLOAT4> { }; +template <> struct VertexTypeFlags : VertexTypeFlagsHelper<0, D3DDECLTYPE_SHORT2> { }; +template <> struct VertexTypeFlags : VertexTypeFlagsHelper<0, D3DDECLTYPE_SHORT4> { }; +template <> struct VertexTypeFlags : VertexTypeFlagsHelper { }; +template <> struct VertexTypeFlags : VertexTypeFlagsHelper { }; +template <> struct VertexTypeFlags : VertexTypeFlagsHelper { }; +template <> struct VertexTypeFlags : VertexTypeFlagsHelper { }; +template <> struct VertexTypeFlags : VertexTypeFlagsHelper { }; +template <> struct VertexTypeFlags : VertexTypeFlagsHelper { }; + + +// VertexTypeMapping maps GL type & normalized flag to preferred and fallback D3D vertex types (as D3DVertexType enums). +template struct VertexTypeMapping { }; + +template +struct VertexTypeMappingBase +{ + enum { preferred = Preferred }; + enum { fallback = Fallback }; +}; + +template <> struct VertexTypeMapping : VertexTypeMappingBase { }; // Cast +template <> struct VertexTypeMapping : VertexTypeMappingBase { }; // Normalize +template <> struct VertexTypeMapping : VertexTypeMappingBase { }; // Identity, Cast +template <> struct VertexTypeMapping : VertexTypeMappingBase { }; // Identity, Normalize +template <> struct VertexTypeMapping : VertexTypeMappingBase { }; // Identity +template <> struct VertexTypeMapping : VertexTypeMappingBase { }; // Cast, Normalize +template <> struct VertexTypeMapping : VertexTypeMappingBase { }; // Cast +template <> struct VertexTypeMapping : VertexTypeMappingBase { }; // Cast, Normalize +template struct VertexTypeMapping : VertexTypeMappingBase { }; // FixedToFloat +template struct VertexTypeMapping : VertexTypeMappingBase { }; // Identity + + +// Given a GL type & norm flag and a D3D type, ConversionRule provides the type conversion rule (Cast, Normalize, Identity, FixedToFloat). +// The conversion rules themselves are defined in vertexconversion.h. + +// Almost all cases are covered by Cast (including those that are actually Identity since Cast knows it's an identity mapping). +template +struct ConversionRule : Cast::type, typename D3DToCType::type> { }; + +// All conversions from normalized types to float use the Normalize operator. +template struct ConversionRule : Normalize::type> { }; + +// Use a full specialization for this so that it preferentially matches ahead of the generic normalize-to-float rules. +template <> struct ConversionRule : FixedToFloat { }; +template <> struct ConversionRule : FixedToFloat { }; + +// A 2-stage construction is used for DefaultVertexValues because float must use SimpleDefaultValues (i.e. 0/1) +// whether it is normalized or not. +template struct DefaultVertexValuesStage2 { }; + +template struct DefaultVertexValuesStage2 : NormalizedDefaultValues { }; +template struct DefaultVertexValuesStage2 : SimpleDefaultValues { }; + +// Work out the default value rule for a D3D type (expressed as the C type) and +template struct DefaultVertexValues : DefaultVertexValuesStage2 { }; +template struct DefaultVertexValues : SimpleDefaultValues { }; + +// Policy rules for use with Converter, to choose whether to use the preferred or fallback conversion. +// The fallback conversion produces an output that all D3D9 devices must support. +template struct UsePreferred { enum { type = T::preferred }; }; +template struct UseFallback { enum { type = T::fallback }; }; + +// Converter ties it all together. Given an OpenGL type/norm/size and choice of preferred/fallback conversion, +// it provides all the members of the appropriate VertexDataConverter, the D3DCAPS9::DeclTypes flag in cap flag +// and the D3DDECLTYPE member needed for the vertex declaration in declflag. +template class PreferenceRule> +struct Converter + : VertexDataConverter::type, + WidenRule >::type, size>, + ConversionRule >::type>, + DefaultVertexValues >::type>::type, normalized > > +{ +private: + enum { d3dtype = PreferenceRule< VertexTypeMapping >::type }; + enum { d3dsize = WidenRule::finalWidth }; + +public: + enum { capflag = VertexTypeFlags::capflag }; + enum { declflag = VertexTypeFlags::declflag }; +}; + +// Initialize a TranslationInfo +#define TRANSLATION(type, norm, size, preferred) \ + { \ + Converter::identity, \ + Converter::finalSize, \ + Converter::convertArray, \ + static_cast(Converter::declflag) \ + } + +#define TRANSLATION_FOR_TYPE_NORM_SIZE(type, norm, size) \ + { \ + Converter::capflag, \ + TRANSLATION(type, norm, size, UsePreferred), \ + TRANSLATION(type, norm, size, UseFallback) \ + } + +#define TRANSLATIONS_FOR_TYPE(type) \ + { \ + { TRANSLATION_FOR_TYPE_NORM_SIZE(type, false, 1), TRANSLATION_FOR_TYPE_NORM_SIZE(type, false, 2), TRANSLATION_FOR_TYPE_NORM_SIZE(type, false, 3), TRANSLATION_FOR_TYPE_NORM_SIZE(type, false, 4) }, \ + { TRANSLATION_FOR_TYPE_NORM_SIZE(type, true, 1), TRANSLATION_FOR_TYPE_NORM_SIZE(type, true, 2), TRANSLATION_FOR_TYPE_NORM_SIZE(type, true, 3), TRANSLATION_FOR_TYPE_NORM_SIZE(type, true, 4) }, \ + } + +#define TRANSLATIONS_FOR_TYPE_NO_NORM(type) \ + { \ + { TRANSLATION_FOR_TYPE_NORM_SIZE(type, false, 1), TRANSLATION_FOR_TYPE_NORM_SIZE(type, false, 2), TRANSLATION_FOR_TYPE_NORM_SIZE(type, false, 3), TRANSLATION_FOR_TYPE_NORM_SIZE(type, false, 4) }, \ + { TRANSLATION_FOR_TYPE_NORM_SIZE(type, false, 1), TRANSLATION_FOR_TYPE_NORM_SIZE(type, false, 2), TRANSLATION_FOR_TYPE_NORM_SIZE(type, false, 3), TRANSLATION_FOR_TYPE_NORM_SIZE(type, false, 4) }, \ + } + +const VertexBuffer9::TranslationDescription VertexBuffer9::mPossibleTranslations[NUM_GL_VERTEX_ATTRIB_TYPES][2][4] = // [GL types as enumerated by typeIndex()][normalized][size-1] +{ + TRANSLATIONS_FOR_TYPE(GL_BYTE), + TRANSLATIONS_FOR_TYPE(GL_UNSIGNED_BYTE), + TRANSLATIONS_FOR_TYPE(GL_SHORT), + TRANSLATIONS_FOR_TYPE(GL_UNSIGNED_SHORT), + TRANSLATIONS_FOR_TYPE_NO_NORM(GL_FIXED), + TRANSLATIONS_FOR_TYPE_NO_NORM(GL_FLOAT) +}; + +void VertexBuffer9::initializeTranslations(DWORD declTypes) +{ + for (unsigned int i = 0; i < NUM_GL_VERTEX_ATTRIB_TYPES; i++) + { + for (unsigned int j = 0; j < 2; j++) + { + for (unsigned int k = 0; k < 4; k++) + { + if (mPossibleTranslations[i][j][k].capsFlag == 0 || (declTypes & mPossibleTranslations[i][j][k].capsFlag) != 0) + { + mFormatConverters[i][j][k] = mPossibleTranslations[i][j][k].preferredConversion; + } + else + { + mFormatConverters[i][j][k] = mPossibleTranslations[i][j][k].fallbackConversion; + } + } + } + } +} + +unsigned int VertexBuffer9::typeIndex(GLenum type) +{ + switch (type) + { + case GL_BYTE: return 0; + case GL_UNSIGNED_BYTE: return 1; + case GL_SHORT: return 2; + case GL_UNSIGNED_SHORT: return 3; + case GL_FIXED: return 4; + case GL_FLOAT: return 5; + + default: UNREACHABLE(); return 5; + } +} + +const VertexBuffer9::FormatConverter &VertexBuffer9::formatConverter(const gl::VertexAttribute &attribute) +{ + return mFormatConverters[typeIndex(attribute.mType)][attribute.mNormalized][attribute.mSize - 1]; +} + +unsigned int VertexBuffer9::spaceRequired(const gl::VertexAttribute &attrib, std::size_t count, GLsizei instances) +{ + unsigned int elementSize = formatConverter(attrib).outputElementSize; + + if (instances == 0 || attrib.mDivisor == 0) + { + return elementSize * count; + } + else + { + return elementSize * ((instances + attrib.mDivisor - 1) / attrib.mDivisor); + } +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer9.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer9.h new file mode 100644 index 00000000000..f771635bda8 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer9.h @@ -0,0 +1,90 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// VertexBuffer9.h: Defines the D3D9 VertexBuffer implementation. + +#ifndef LIBGLESV2_RENDERER_VERTEXBUFFER9_H_ +#define LIBGLESV2_RENDERER_VERTEXBUFFER9_H_ + +#include "libGLESv2/renderer/VertexBuffer.h" + +namespace rx +{ +class Renderer9; + +class VertexBuffer9 : public VertexBuffer +{ + public: + explicit VertexBuffer9(rx::Renderer9 *const renderer); + virtual ~VertexBuffer9(); + + virtual bool initialize(unsigned int size, bool dynamicUsage); + + static VertexBuffer9 *makeVertexBuffer9(VertexBuffer *vertexBuffer); + + virtual bool storeVertexAttributes(const gl::VertexAttribute &attrib, GLint start, GLsizei count, GLsizei instances, + unsigned int offset); + virtual bool storeRawData(const void* data, unsigned int size, unsigned int offset); + + virtual unsigned int getSpaceRequired(const gl::VertexAttribute &attrib, GLsizei count, GLsizei instances) const; + + virtual bool requiresConversion(const gl::VertexAttribute &attrib) const; + + unsigned int getVertexSize(const gl::VertexAttribute &attrib) const; + D3DDECLTYPE getDeclType(const gl::VertexAttribute &attrib) const; + + virtual unsigned int getBufferSize() const; + virtual bool setBufferSize(unsigned int size); + virtual bool discard(); + + IDirect3DVertexBuffer9 *getBuffer() const; + + private: + DISALLOW_COPY_AND_ASSIGN(VertexBuffer9); + + rx::Renderer9 *const mRenderer; + + IDirect3DVertexBuffer9 *mVertexBuffer; + unsigned int mBufferSize; + bool mDynamicUsage; + + // Attribute format conversion + enum { NUM_GL_VERTEX_ATTRIB_TYPES = 6 }; + + struct FormatConverter + { + bool identity; + std::size_t outputElementSize; + void (*convertArray)(const void *in, std::size_t stride, std::size_t n, void *out); + D3DDECLTYPE d3dDeclType; + }; + + static bool mTranslationsInitialized; + static void initializeTranslations(DWORD declTypes); + + // [GL types as enumerated by typeIndex()][normalized][size - 1] + static FormatConverter mFormatConverters[NUM_GL_VERTEX_ATTRIB_TYPES][2][4]; + + struct TranslationDescription + { + DWORD capsFlag; + FormatConverter preferredConversion; + FormatConverter fallbackConversion; + }; + + // This table is used to generate mFormatConverters. + // [GL types as enumerated by typeIndex()][normalized][size - 1] + static const TranslationDescription mPossibleTranslations[NUM_GL_VERTEX_ATTRIB_TYPES][2][4]; + + static unsigned int typeIndex(GLenum type); + static const FormatConverter &formatConverter(const gl::VertexAttribute &attribute); + + static unsigned int spaceRequired(const gl::VertexAttribute &attrib, std::size_t count, GLsizei instances); +}; + +} + +#endif // LIBGLESV2_RENDERER_VERTEXBUFFER9_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDataManager.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDataManager.cpp new file mode 100644 index 00000000000..fd869b10c4f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDataManager.cpp @@ -0,0 +1,267 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// VertexDataManager.h: Defines the VertexDataManager, a class that +// runs the Buffer translation process. + +#include "libGLESv2/renderer/VertexDataManager.h" +#include "libGLESv2/renderer/BufferStorage.h" + +#include "libGLESv2/Buffer.h" +#include "libGLESv2/ProgramBinary.h" +#include "libGLESv2/Context.h" +#include "libGLESv2/renderer/VertexBuffer.h" + +namespace +{ + enum { INITIAL_STREAM_BUFFER_SIZE = 1024*1024 }; + // This has to be at least 4k or else it fails on ATI cards. + enum { CONSTANT_VERTEX_BUFFER_SIZE = 4096 }; +} + +namespace rx +{ + +static int elementsInBuffer(const gl::VertexAttribute &attribute, int size) +{ + int stride = attribute.stride(); + return (size - attribute.mOffset % stride + (stride - attribute.typeSize())) / stride; +} + +VertexDataManager::VertexDataManager(Renderer *renderer) : mRenderer(renderer) +{ + for (int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++) + { + mCurrentValue[i][0] = std::numeric_limits::quiet_NaN(); + mCurrentValue[i][1] = std::numeric_limits::quiet_NaN(); + mCurrentValue[i][2] = std::numeric_limits::quiet_NaN(); + mCurrentValue[i][3] = std::numeric_limits::quiet_NaN(); + mCurrentValueBuffer[i] = NULL; + mCurrentValueOffsets[i] = 0; + } + + mStreamingBuffer = new StreamingVertexBufferInterface(renderer, INITIAL_STREAM_BUFFER_SIZE); + + if (!mStreamingBuffer) + { + ERR("Failed to allocate the streaming vertex buffer."); + } +} + +VertexDataManager::~VertexDataManager() +{ + delete mStreamingBuffer; + + for (int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++) + { + delete mCurrentValueBuffer[i]; + } +} + +static bool directStoragePossible(VertexBufferInterface* vb, const gl::VertexAttribute& attrib) +{ + gl::Buffer *buffer = attrib.mBoundBuffer.get(); + BufferStorage *storage = buffer ? buffer->getStorage() : NULL; + + const bool isAligned = (attrib.stride() % 4 == 0) && (attrib.mOffset % 4 == 0); + + return storage && storage->supportsDirectBinding() && !vb->getVertexBuffer()->requiresConversion(attrib) && isAligned; +} + +GLenum VertexDataManager::prepareVertexData(const gl::VertexAttribute attribs[], gl::ProgramBinary *programBinary, GLint start, GLsizei count, TranslatedAttribute *translated, GLsizei instances) +{ + if (!mStreamingBuffer) + { + return GL_OUT_OF_MEMORY; + } + + for (int attributeIndex = 0; attributeIndex < gl::MAX_VERTEX_ATTRIBS; attributeIndex++) + { + translated[attributeIndex].active = (programBinary->getSemanticIndex(attributeIndex) != -1); + } + + // Invalidate static buffers that don't contain matching attributes + for (int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++) + { + if (translated[i].active && attribs[i].mArrayEnabled) + { + gl::Buffer *buffer = attribs[i].mBoundBuffer.get(); + StaticVertexBufferInterface *staticBuffer = buffer ? buffer->getStaticVertexBuffer() : NULL; + + if (staticBuffer && staticBuffer->getBufferSize() > 0 && staticBuffer->lookupAttribute(attribs[i]) == -1 && + !directStoragePossible(staticBuffer, attribs[i])) + { + buffer->invalidateStaticData(); + } + } + } + + // Reserve the required space in the buffers + for (int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++) + { + if (translated[i].active && attribs[i].mArrayEnabled) + { + gl::Buffer *buffer = attribs[i].mBoundBuffer.get(); + StaticVertexBufferInterface *staticBuffer = buffer ? buffer->getStaticVertexBuffer() : NULL; + VertexBufferInterface *vertexBuffer = staticBuffer ? staticBuffer : static_cast(mStreamingBuffer); + + if (!directStoragePossible(vertexBuffer, attribs[i])) + { + if (staticBuffer) + { + if (staticBuffer->getBufferSize() == 0) + { + int totalCount = elementsInBuffer(attribs[i], buffer->size()); + if (!staticBuffer->reserveVertexSpace(attribs[i], totalCount, 0)) + { + return GL_OUT_OF_MEMORY; + } + } + } + else + { + if (!mStreamingBuffer->reserveVertexSpace(attribs[i], count, instances)) + { + return GL_OUT_OF_MEMORY; + } + } + } + } + } + + // Perform the vertex data translations + for (int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++) + { + if (translated[i].active) + { + if (attribs[i].mArrayEnabled) + { + gl::Buffer *buffer = attribs[i].mBoundBuffer.get(); + + if (!buffer && attribs[i].mPointer == NULL) + { + // This is an application error that would normally result in a crash, but we catch it and return an error + ERR("An enabled vertex array has no buffer and no pointer."); + return GL_INVALID_OPERATION; + } + + StaticVertexBufferInterface *staticBuffer = buffer ? buffer->getStaticVertexBuffer() : NULL; + VertexBufferInterface *vertexBuffer = staticBuffer ? staticBuffer : static_cast(mStreamingBuffer); + + BufferStorage *storage = buffer ? buffer->getStorage() : NULL; + bool directStorage = directStoragePossible(vertexBuffer, attribs[i]); + + std::size_t streamOffset = -1; + unsigned int outputElementSize = 0; + + if (directStorage) + { + outputElementSize = attribs[i].stride(); + streamOffset = attribs[i].mOffset + outputElementSize * start; + storage->markBufferUsage(); + } + else if (staticBuffer) + { + streamOffset = staticBuffer->lookupAttribute(attribs[i]); + outputElementSize = staticBuffer->getVertexBuffer()->getSpaceRequired(attribs[i], 1, 0); + + if (streamOffset == -1) + { + // Convert the entire buffer + int totalCount = elementsInBuffer(attribs[i], storage->getSize()); + int startIndex = attribs[i].mOffset / attribs[i].stride(); + + streamOffset = staticBuffer->storeVertexAttributes(attribs[i], -startIndex, totalCount, 0); + } + + if (streamOffset != -1) + { + streamOffset += (attribs[i].mOffset / attribs[i].stride()) * outputElementSize; + + if (instances == 0 || attribs[i].mDivisor == 0) + { + streamOffset += start * outputElementSize; + } + } + } + else + { + outputElementSize = mStreamingBuffer->getVertexBuffer()->getSpaceRequired(attribs[i], 1, 0); + streamOffset = mStreamingBuffer->storeVertexAttributes(attribs[i], start, count, instances); + } + + if (streamOffset == -1) + { + return GL_OUT_OF_MEMORY; + } + + translated[i].storage = directStorage ? storage : NULL; + translated[i].vertexBuffer = vertexBuffer->getVertexBuffer(); + translated[i].serial = directStorage ? storage->getSerial() : vertexBuffer->getSerial(); + translated[i].divisor = attribs[i].mDivisor; + + translated[i].attribute = &attribs[i]; + translated[i].stride = outputElementSize; + translated[i].offset = streamOffset; + } + else + { + if (!mCurrentValueBuffer[i]) + { + mCurrentValueBuffer[i] = new StreamingVertexBufferInterface(mRenderer, CONSTANT_VERTEX_BUFFER_SIZE); + } + + StreamingVertexBufferInterface *buffer = mCurrentValueBuffer[i]; + + if (mCurrentValue[i][0] != attribs[i].mCurrentValue[0] || + mCurrentValue[i][1] != attribs[i].mCurrentValue[1] || + mCurrentValue[i][2] != attribs[i].mCurrentValue[2] || + mCurrentValue[i][3] != attribs[i].mCurrentValue[3]) + { + unsigned int requiredSpace = sizeof(float) * 4; + if (!buffer->reserveRawDataSpace(requiredSpace)) + { + return GL_OUT_OF_MEMORY; + } + int streamOffset = buffer->storeRawData(attribs[i].mCurrentValue, requiredSpace); + if (streamOffset == -1) + { + return GL_OUT_OF_MEMORY; + } + + mCurrentValueOffsets[i] = streamOffset; + } + + translated[i].storage = NULL; + translated[i].vertexBuffer = mCurrentValueBuffer[i]->getVertexBuffer(); + translated[i].serial = mCurrentValueBuffer[i]->getSerial(); + translated[i].divisor = 0; + + translated[i].attribute = &attribs[i]; + translated[i].stride = 0; + translated[i].offset = mCurrentValueOffsets[i]; + } + } + } + + for (int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++) + { + if (translated[i].active && attribs[i].mArrayEnabled) + { + gl::Buffer *buffer = attribs[i].mBoundBuffer.get(); + + if (buffer) + { + buffer->promoteStaticUsage(count * attribs[i].typeSize()); + } + } + } + + return GL_NO_ERROR; +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDataManager.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDataManager.h new file mode 100644 index 00000000000..28387e6baf2 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDataManager.h @@ -0,0 +1,65 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// VertexDataManager.h: Defines the VertexDataManager, a class that +// runs the Buffer translation process. + +#ifndef LIBGLESV2_RENDERER_VERTEXDATAMANAGER_H_ +#define LIBGLESV2_RENDERER_VERTEXDATAMANAGER_H_ + +#include "libGLESv2/Constants.h" +#include "common/angleutils.h" + +namespace gl +{ +class VertexAttribute; +class ProgramBinary; +} + +namespace rx +{ +class BufferStorage; +class StreamingVertexBufferInterface; +class VertexBuffer; +class Renderer; + +struct TranslatedAttribute +{ + bool active; + + const gl::VertexAttribute *attribute; + UINT offset; + UINT stride; // 0 means not to advance the read pointer at all + + VertexBuffer *vertexBuffer; + BufferStorage *storage; + unsigned int serial; + unsigned int divisor; +}; + +class VertexDataManager +{ + public: + VertexDataManager(rx::Renderer *renderer); + virtual ~VertexDataManager(); + + GLenum prepareVertexData(const gl::VertexAttribute attribs[], gl::ProgramBinary *programBinary, GLint start, GLsizei count, TranslatedAttribute *outAttribs, GLsizei instances); + + private: + DISALLOW_COPY_AND_ASSIGN(VertexDataManager); + + rx::Renderer *const mRenderer; + + StreamingVertexBufferInterface *mStreamingBuffer; + + float mCurrentValue[gl::MAX_VERTEX_ATTRIBS][4]; + StreamingVertexBufferInterface *mCurrentValueBuffer[gl::MAX_VERTEX_ATTRIBS]; + std::size_t mCurrentValueOffsets[gl::MAX_VERTEX_ATTRIBS]; +}; + +} + +#endif // LIBGLESV2_RENDERER_VERTEXDATAMANAGER_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDeclarationCache.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDeclarationCache.cpp new file mode 100644 index 00000000000..9b83a6476eb --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDeclarationCache.cpp @@ -0,0 +1,217 @@ +#include "precompiled.h" +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// VertexDeclarationCache.cpp: Implements a helper class to construct and cache vertex declarations. + +#include "libGLESv2/ProgramBinary.h" +#include "libGLESv2/Context.h" +#include "libGLESv2/renderer/VertexBuffer9.h" +#include "libGLESv2/renderer/VertexDeclarationCache.h" + +namespace rx +{ + +VertexDeclarationCache::VertexDeclarationCache() : mMaxLru(0) +{ + for (int i = 0; i < NUM_VERTEX_DECL_CACHE_ENTRIES; i++) + { + mVertexDeclCache[i].vertexDeclaration = NULL; + mVertexDeclCache[i].lruCount = 0; + } + + for (int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++) + { + mAppliedVBs[i].serial = 0; + } + + mLastSetVDecl = NULL; + mInstancingEnabled = true; +} + +VertexDeclarationCache::~VertexDeclarationCache() +{ + for (int i = 0; i < NUM_VERTEX_DECL_CACHE_ENTRIES; i++) + { + if (mVertexDeclCache[i].vertexDeclaration) + { + mVertexDeclCache[i].vertexDeclaration->Release(); + } + } +} + +GLenum VertexDeclarationCache::applyDeclaration(IDirect3DDevice9 *device, TranslatedAttribute attributes[], gl::ProgramBinary *programBinary, GLsizei instances, GLsizei *repeatDraw) +{ + *repeatDraw = 1; + + int indexedAttribute = gl::MAX_VERTEX_ATTRIBS; + int instancedAttribute = gl::MAX_VERTEX_ATTRIBS; + + if (instances > 0) + { + // Find an indexed attribute to be mapped to D3D stream 0 + for (int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++) + { + if (attributes[i].active) + { + if (indexedAttribute == gl::MAX_VERTEX_ATTRIBS && attributes[i].divisor == 0) + { + indexedAttribute = i; + } + else if (instancedAttribute == gl::MAX_VERTEX_ATTRIBS && attributes[i].divisor != 0) + { + instancedAttribute = i; + } + if (indexedAttribute != gl::MAX_VERTEX_ATTRIBS && instancedAttribute != gl::MAX_VERTEX_ATTRIBS) + break; // Found both an indexed and instanced attribute + } + } + + if (indexedAttribute == gl::MAX_VERTEX_ATTRIBS) + { + return GL_INVALID_OPERATION; + } + } + + D3DVERTEXELEMENT9 elements[gl::MAX_VERTEX_ATTRIBS + 1]; + D3DVERTEXELEMENT9 *element = &elements[0]; + + for (int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++) + { + if (attributes[i].active) + { + // Directly binding the storage buffer is not supported for d3d9 + ASSERT(attributes[i].storage == NULL); + + int stream = i; + + if (instances > 0) + { + // Due to a bug on ATI cards we can't enable instancing when none of the attributes are instanced. + if (instancedAttribute == gl::MAX_VERTEX_ATTRIBS) + { + *repeatDraw = instances; + } + else + { + if (i == indexedAttribute) + { + stream = 0; + } + else if (i == 0) + { + stream = indexedAttribute; + } + + UINT frequency = 1; + + if (attributes[i].divisor == 0) + { + frequency = D3DSTREAMSOURCE_INDEXEDDATA | instances; + } + else + { + frequency = D3DSTREAMSOURCE_INSTANCEDATA | attributes[i].divisor; + } + + device->SetStreamSourceFreq(stream, frequency); + mInstancingEnabled = true; + } + } + + VertexBuffer9 *vertexBuffer = VertexBuffer9::makeVertexBuffer9(attributes[i].vertexBuffer); + + if (mAppliedVBs[stream].serial != attributes[i].serial || + mAppliedVBs[stream].stride != attributes[i].stride || + mAppliedVBs[stream].offset != attributes[i].offset) + { + device->SetStreamSource(stream, vertexBuffer->getBuffer(), attributes[i].offset, attributes[i].stride); + mAppliedVBs[stream].serial = attributes[i].serial; + mAppliedVBs[stream].stride = attributes[i].stride; + mAppliedVBs[stream].offset = attributes[i].offset; + } + + element->Stream = stream; + element->Offset = 0; + element->Type = attributes[i].attribute->mArrayEnabled ? vertexBuffer->getDeclType(*attributes[i].attribute) : D3DDECLTYPE_FLOAT4; + element->Method = D3DDECLMETHOD_DEFAULT; + element->Usage = D3DDECLUSAGE_TEXCOORD; + element->UsageIndex = programBinary->getSemanticIndex(i); + element++; + } + } + + if (instances == 0 || instancedAttribute == gl::MAX_VERTEX_ATTRIBS) + { + if (mInstancingEnabled) + { + for (int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++) + { + device->SetStreamSourceFreq(i, 1); + } + + mInstancingEnabled = false; + } + } + + static const D3DVERTEXELEMENT9 end = D3DDECL_END(); + *(element++) = end; + + for (int i = 0; i < NUM_VERTEX_DECL_CACHE_ENTRIES; i++) + { + VertexDeclCacheEntry *entry = &mVertexDeclCache[i]; + if (memcmp(entry->cachedElements, elements, (element - elements) * sizeof(D3DVERTEXELEMENT9)) == 0 && entry->vertexDeclaration) + { + entry->lruCount = ++mMaxLru; + if(entry->vertexDeclaration != mLastSetVDecl) + { + device->SetVertexDeclaration(entry->vertexDeclaration); + mLastSetVDecl = entry->vertexDeclaration; + } + + return GL_NO_ERROR; + } + } + + VertexDeclCacheEntry *lastCache = mVertexDeclCache; + + for (int i = 0; i < NUM_VERTEX_DECL_CACHE_ENTRIES; i++) + { + if (mVertexDeclCache[i].lruCount < lastCache->lruCount) + { + lastCache = &mVertexDeclCache[i]; + } + } + + if (lastCache->vertexDeclaration != NULL) + { + lastCache->vertexDeclaration->Release(); + lastCache->vertexDeclaration = NULL; + // mLastSetVDecl is set to the replacement, so we don't have to worry + // about it. + } + + memcpy(lastCache->cachedElements, elements, (element - elements) * sizeof(D3DVERTEXELEMENT9)); + device->CreateVertexDeclaration(elements, &lastCache->vertexDeclaration); + device->SetVertexDeclaration(lastCache->vertexDeclaration); + mLastSetVDecl = lastCache->vertexDeclaration; + lastCache->lruCount = ++mMaxLru; + + return GL_NO_ERROR; +} + +void VertexDeclarationCache::markStateDirty() +{ + for (int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++) + { + mAppliedVBs[i].serial = 0; + } + + mLastSetVDecl = NULL; + mInstancingEnabled = true; // Forces it to be disabled when not used +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDeclarationCache.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDeclarationCache.h new file mode 100644 index 00000000000..3fc024a9bab --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDeclarationCache.h @@ -0,0 +1,58 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// VertexDeclarationCache.h: Defines a helper class to construct and cache vertex declarations. + +#ifndef LIBGLESV2_RENDERER_VERTEXDECLARATIONCACHE_H_ +#define LIBGLESV2_RENDERER_VERTEXDECLARATIONCACHE_H_ + +#include "libGLESv2/renderer/VertexDataManager.h" + +namespace gl +{ +class VertexDataManager; +} + +namespace rx +{ + +class VertexDeclarationCache +{ + public: + VertexDeclarationCache(); + ~VertexDeclarationCache(); + + GLenum applyDeclaration(IDirect3DDevice9 *device, TranslatedAttribute attributes[], gl::ProgramBinary *programBinary, GLsizei instances, GLsizei *repeatDraw); + + void markStateDirty(); + + private: + UINT mMaxLru; + + enum { NUM_VERTEX_DECL_CACHE_ENTRIES = 32 }; + + struct VBData + { + unsigned int serial; + unsigned int stride; + unsigned int offset; + }; + + VBData mAppliedVBs[gl::MAX_VERTEX_ATTRIBS]; + IDirect3DVertexDeclaration9 *mLastSetVDecl; + bool mInstancingEnabled; + + struct VertexDeclCacheEntry + { + D3DVERTEXELEMENT9 cachedElements[gl::MAX_VERTEX_ATTRIBS + 1]; + UINT lruCount; + IDirect3DVertexDeclaration9 *vertexDeclaration; + } mVertexDeclCache[NUM_VERTEX_DECL_CACHE_ENTRIES]; +}; + +} + +#endif // LIBGLESV2_RENDERER_VERTEXDECLARATIONCACHE_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/generatemip.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/generatemip.h new file mode 100644 index 00000000000..8e1973605b8 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/generatemip.h @@ -0,0 +1,203 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// generatemip.h: Defines the GenerateMip function, templated on the format +// type of the image for which mip levels are being generated. + +#ifndef LIBGLESV2_RENDERER_GENERATEMIP_H_ +#define LIBGLESV2_RENDERER_GENERATEMIP_H_ + +#include "libGLESv2/mathutil.h" + +namespace rx +{ +struct L8 +{ + unsigned char L; + + static void average(L8 *dst, const L8 *src1, const L8 *src2) + { + dst->L = ((src1->L ^ src2->L) >> 1) + (src1->L & src2->L); + } +}; + +typedef L8 R8; // R8 type is functionally equivalent for mip purposes +typedef L8 A8; // A8 type is functionally equivalent for mip purposes + +struct A8L8 +{ + unsigned char L; + unsigned char A; + + static void average(A8L8 *dst, const A8L8 *src1, const A8L8 *src2) + { + *(unsigned short*)dst = (((*(unsigned short*)src1 ^ *(unsigned short*)src2) & 0xFEFE) >> 1) + (*(unsigned short*)src1 & *(unsigned short*)src2); + } +}; + +typedef A8L8 R8G8; // R8G8 type is functionally equivalent for mip purposes + +struct A8R8G8B8 +{ + unsigned char B; + unsigned char G; + unsigned char R; + unsigned char A; + + static void average(A8R8G8B8 *dst, const A8R8G8B8 *src1, const A8R8G8B8 *src2) + { + *(unsigned int*)dst = (((*(unsigned int*)src1 ^ *(unsigned int*)src2) & 0xFEFEFEFE) >> 1) + (*(unsigned int*)src1 & *(unsigned int*)src2); + } +}; + +typedef A8R8G8B8 R8G8B8A8; // R8G8B8A8 type is functionally equivalent for mip purposes + +struct A16B16G16R16F +{ + unsigned short R; + unsigned short G; + unsigned short B; + unsigned short A; + + static void average(A16B16G16R16F *dst, const A16B16G16R16F *src1, const A16B16G16R16F *src2) + { + dst->R = gl::float32ToFloat16((gl::float16ToFloat32(src1->R) + gl::float16ToFloat32(src2->R)) * 0.5f); + dst->G = gl::float32ToFloat16((gl::float16ToFloat32(src1->G) + gl::float16ToFloat32(src2->G)) * 0.5f); + dst->B = gl::float32ToFloat16((gl::float16ToFloat32(src1->B) + gl::float16ToFloat32(src2->B)) * 0.5f); + dst->A = gl::float32ToFloat16((gl::float16ToFloat32(src1->A) + gl::float16ToFloat32(src2->A)) * 0.5f); + } +}; + +struct R16F +{ + unsigned short R; + + static void average(R16F *dst, const R16F *src1, const R16F *src2) + { + dst->R = gl::float32ToFloat16((gl::float16ToFloat32(src1->R) + gl::float16ToFloat32(src2->R)) * 0.5f); + } +}; + +struct R16G16F +{ + unsigned short R; + unsigned short G; + + static void average(R16G16F *dst, const R16G16F *src1, const R16G16F *src2) + { + dst->R = gl::float32ToFloat16((gl::float16ToFloat32(src1->R) + gl::float16ToFloat32(src2->R)) * 0.5f); + dst->G = gl::float32ToFloat16((gl::float16ToFloat32(src1->G) + gl::float16ToFloat32(src2->G)) * 0.5f); + } +}; + +struct A32B32G32R32F +{ + float R; + float G; + float B; + float A; + + static void average(A32B32G32R32F *dst, const A32B32G32R32F *src1, const A32B32G32R32F *src2) + { + dst->R = (src1->R + src2->R) * 0.5f; + dst->G = (src1->G + src2->G) * 0.5f; + dst->B = (src1->B + src2->B) * 0.5f; + dst->A = (src1->A + src2->A) * 0.5f; + } +}; + +struct R32F +{ + float R; + + static void average(R32F *dst, const R32F *src1, const R32F *src2) + { + dst->R = (src1->R + src2->R) * 0.5f; + } +}; + +struct R32G32F +{ + float R; + float G; + + static void average(R32G32F *dst, const R32G32F *src1, const R32G32F *src2) + { + dst->R = (src1->R + src2->R) * 0.5f; + dst->G = (src1->G + src2->G) * 0.5f; + } +}; + +struct R32G32B32F +{ + float R; + float G; + float B; + + static void average(R32G32B32F *dst, const R32G32B32F *src1, const R32G32B32F *src2) + { + dst->R = (src1->R + src2->R) * 0.5f; + dst->G = (src1->G + src2->G) * 0.5f; + dst->B = (src1->B + src2->B) * 0.5f; + } +}; + +template +static void GenerateMip(unsigned int sourceWidth, unsigned int sourceHeight, + const unsigned char *sourceData, int sourcePitch, + unsigned char *destData, int destPitch) +{ + unsigned int mipWidth = std::max(1U, sourceWidth >> 1); + unsigned int mipHeight = std::max(1U, sourceHeight >> 1); + + if (sourceHeight == 1) + { + ASSERT(sourceWidth != 1); + + const T *src = (const T*)sourceData; + T *dst = (T*)destData; + + for (unsigned int x = 0; x < mipWidth; x++) + { + T::average(&dst[x], &src[x * 2], &src[x * 2 + 1]); + } + } + else if (sourceWidth == 1) + { + ASSERT(sourceHeight != 1); + + for (unsigned int y = 0; y < mipHeight; y++) + { + const T *src0 = (const T*)(sourceData + y * 2 * sourcePitch); + const T *src1 = (const T*)(sourceData + y * 2 * sourcePitch + sourcePitch); + T *dst = (T*)(destData + y * destPitch); + + T::average(dst, src0, src1); + } + } + else + { + for (unsigned int y = 0; y < mipHeight; y++) + { + const T *src0 = (const T*)(sourceData + y * 2 * sourcePitch); + const T *src1 = (const T*)(sourceData + y * 2 * sourcePitch + sourcePitch); + T *dst = (T*)(destData + y * destPitch); + + for (unsigned int x = 0; x < mipWidth; x++) + { + T tmp0; + T tmp1; + + T::average(&tmp0, &src0[x * 2], &src0[x * 2 + 1]); + T::average(&tmp1, &src1[x * 2], &src1[x * 2 + 1]); + T::average(&dst[x], &tmp0, &tmp1); + } + } + } +} +} + +#endif // LIBGLESV2_RENDERER_GENERATEMIP_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer11_utils.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer11_utils.cpp new file mode 100644 index 00000000000..5f01dc12ed9 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer11_utils.cpp @@ -0,0 +1,688 @@ +#include "precompiled.h" +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// renderer11_utils.cpp: Conversion functions and other utility routines +// specific to the D3D11 renderer. + +#include "libGLESv2/renderer/renderer11_utils.h" + +#include "common/debug.h" + +namespace gl_d3d11 +{ + +D3D11_BLEND ConvertBlendFunc(GLenum glBlend, bool isAlpha) +{ + D3D11_BLEND d3dBlend = D3D11_BLEND_ZERO; + + switch (glBlend) + { + case GL_ZERO: d3dBlend = D3D11_BLEND_ZERO; break; + case GL_ONE: d3dBlend = D3D11_BLEND_ONE; break; + case GL_SRC_COLOR: d3dBlend = (isAlpha ? D3D11_BLEND_SRC_ALPHA : D3D11_BLEND_SRC_COLOR); break; + case GL_ONE_MINUS_SRC_COLOR: d3dBlend = (isAlpha ? D3D11_BLEND_INV_SRC_ALPHA : D3D11_BLEND_INV_SRC_COLOR); break; + case GL_DST_COLOR: d3dBlend = (isAlpha ? D3D11_BLEND_DEST_ALPHA : D3D11_BLEND_DEST_COLOR); break; + case GL_ONE_MINUS_DST_COLOR: d3dBlend = (isAlpha ? D3D11_BLEND_INV_DEST_ALPHA : D3D11_BLEND_INV_DEST_COLOR); break; + case GL_SRC_ALPHA: d3dBlend = D3D11_BLEND_SRC_ALPHA; break; + case GL_ONE_MINUS_SRC_ALPHA: d3dBlend = D3D11_BLEND_INV_SRC_ALPHA; break; + case GL_DST_ALPHA: d3dBlend = D3D11_BLEND_DEST_ALPHA; break; + case GL_ONE_MINUS_DST_ALPHA: d3dBlend = D3D11_BLEND_INV_DEST_ALPHA; break; + case GL_CONSTANT_COLOR: d3dBlend = D3D11_BLEND_BLEND_FACTOR; break; + case GL_ONE_MINUS_CONSTANT_COLOR: d3dBlend = D3D11_BLEND_INV_BLEND_FACTOR; break; + case GL_CONSTANT_ALPHA: d3dBlend = D3D11_BLEND_BLEND_FACTOR; break; + case GL_ONE_MINUS_CONSTANT_ALPHA: d3dBlend = D3D11_BLEND_INV_BLEND_FACTOR; break; + case GL_SRC_ALPHA_SATURATE: d3dBlend = D3D11_BLEND_SRC_ALPHA_SAT; break; + default: UNREACHABLE(); + } + + return d3dBlend; +} + +D3D11_BLEND_OP ConvertBlendOp(GLenum glBlendOp) +{ + D3D11_BLEND_OP d3dBlendOp = D3D11_BLEND_OP_ADD; + + switch (glBlendOp) + { + case GL_FUNC_ADD: d3dBlendOp = D3D11_BLEND_OP_ADD; break; + case GL_FUNC_SUBTRACT: d3dBlendOp = D3D11_BLEND_OP_SUBTRACT; break; + case GL_FUNC_REVERSE_SUBTRACT: d3dBlendOp = D3D11_BLEND_OP_REV_SUBTRACT; break; + default: UNREACHABLE(); + } + + return d3dBlendOp; +} + +UINT8 ConvertColorMask(bool red, bool green, bool blue, bool alpha) +{ + UINT8 mask = 0; + if (red) + { + mask |= D3D11_COLOR_WRITE_ENABLE_RED; + } + if (green) + { + mask |= D3D11_COLOR_WRITE_ENABLE_GREEN; + } + if (blue) + { + mask |= D3D11_COLOR_WRITE_ENABLE_BLUE; + } + if (alpha) + { + mask |= D3D11_COLOR_WRITE_ENABLE_ALPHA; + } + return mask; +} + +D3D11_CULL_MODE ConvertCullMode(bool cullEnabled, GLenum cullMode) +{ + D3D11_CULL_MODE cull = D3D11_CULL_NONE; + + if (cullEnabled) + { + switch (cullMode) + { + case GL_FRONT: cull = D3D11_CULL_FRONT; break; + case GL_BACK: cull = D3D11_CULL_BACK; break; + case GL_FRONT_AND_BACK: cull = D3D11_CULL_NONE; break; + default: UNREACHABLE(); + } + } + else + { + cull = D3D11_CULL_NONE; + } + + return cull; +} + +D3D11_COMPARISON_FUNC ConvertComparison(GLenum comparison) +{ + D3D11_COMPARISON_FUNC d3dComp = D3D11_COMPARISON_NEVER; + switch (comparison) + { + case GL_NEVER: d3dComp = D3D11_COMPARISON_NEVER; break; + case GL_ALWAYS: d3dComp = D3D11_COMPARISON_ALWAYS; break; + case GL_LESS: d3dComp = D3D11_COMPARISON_LESS; break; + case GL_LEQUAL: d3dComp = D3D11_COMPARISON_LESS_EQUAL; break; + case GL_EQUAL: d3dComp = D3D11_COMPARISON_EQUAL; break; + case GL_GREATER: d3dComp = D3D11_COMPARISON_GREATER; break; + case GL_GEQUAL: d3dComp = D3D11_COMPARISON_GREATER_EQUAL; break; + case GL_NOTEQUAL: d3dComp = D3D11_COMPARISON_NOT_EQUAL; break; + default: UNREACHABLE(); + } + + return d3dComp; +} + +D3D11_DEPTH_WRITE_MASK ConvertDepthMask(bool depthWriteEnabled) +{ + return depthWriteEnabled ? D3D11_DEPTH_WRITE_MASK_ALL : D3D11_DEPTH_WRITE_MASK_ZERO; +} + +UINT8 ConvertStencilMask(GLuint stencilmask) +{ + return static_cast(stencilmask); +} + +D3D11_STENCIL_OP ConvertStencilOp(GLenum stencilOp) +{ + D3D11_STENCIL_OP d3dStencilOp = D3D11_STENCIL_OP_KEEP; + + switch (stencilOp) + { + case GL_ZERO: d3dStencilOp = D3D11_STENCIL_OP_ZERO; break; + case GL_KEEP: d3dStencilOp = D3D11_STENCIL_OP_KEEP; break; + case GL_REPLACE: d3dStencilOp = D3D11_STENCIL_OP_REPLACE; break; + case GL_INCR: d3dStencilOp = D3D11_STENCIL_OP_INCR_SAT; break; + case GL_DECR: d3dStencilOp = D3D11_STENCIL_OP_DECR_SAT; break; + case GL_INVERT: d3dStencilOp = D3D11_STENCIL_OP_INVERT; break; + case GL_INCR_WRAP: d3dStencilOp = D3D11_STENCIL_OP_INCR; break; + case GL_DECR_WRAP: d3dStencilOp = D3D11_STENCIL_OP_DECR; break; + default: UNREACHABLE(); + } + + return d3dStencilOp; +} + +D3D11_FILTER ConvertFilter(GLenum minFilter, GLenum magFilter, float maxAnisotropy) +{ + if (maxAnisotropy > 1.0f) + { + return D3D11_ENCODE_ANISOTROPIC_FILTER(false); + } + else + { + D3D11_FILTER_TYPE dxMin = D3D11_FILTER_TYPE_POINT; + D3D11_FILTER_TYPE dxMip = D3D11_FILTER_TYPE_POINT; + switch (minFilter) + { + case GL_NEAREST: dxMin = D3D11_FILTER_TYPE_POINT; dxMip = D3D11_FILTER_TYPE_POINT; break; + case GL_LINEAR: dxMin = D3D11_FILTER_TYPE_LINEAR; dxMip = D3D11_FILTER_TYPE_POINT; break; + case GL_NEAREST_MIPMAP_NEAREST: dxMin = D3D11_FILTER_TYPE_POINT; dxMip = D3D11_FILTER_TYPE_POINT; break; + case GL_LINEAR_MIPMAP_NEAREST: dxMin = D3D11_FILTER_TYPE_LINEAR; dxMip = D3D11_FILTER_TYPE_POINT; break; + case GL_NEAREST_MIPMAP_LINEAR: dxMin = D3D11_FILTER_TYPE_POINT; dxMip = D3D11_FILTER_TYPE_LINEAR; break; + case GL_LINEAR_MIPMAP_LINEAR: dxMin = D3D11_FILTER_TYPE_LINEAR; dxMip = D3D11_FILTER_TYPE_LINEAR; break; + default: UNREACHABLE(); + } + + D3D11_FILTER_TYPE dxMag = D3D11_FILTER_TYPE_POINT; + switch (magFilter) + { + case GL_NEAREST: dxMag = D3D11_FILTER_TYPE_POINT; break; + case GL_LINEAR: dxMag = D3D11_FILTER_TYPE_LINEAR; break; + default: UNREACHABLE(); + } + + return D3D11_ENCODE_BASIC_FILTER(dxMin, dxMag, dxMip, false); + } +} + +D3D11_TEXTURE_ADDRESS_MODE ConvertTextureWrap(GLenum wrap) +{ + switch (wrap) + { + case GL_REPEAT: return D3D11_TEXTURE_ADDRESS_WRAP; + case GL_CLAMP_TO_EDGE: return D3D11_TEXTURE_ADDRESS_CLAMP; + case GL_MIRRORED_REPEAT: return D3D11_TEXTURE_ADDRESS_MIRROR; + default: UNREACHABLE(); + } + + return D3D11_TEXTURE_ADDRESS_WRAP; +} + +FLOAT ConvertMinLOD(GLenum minFilter, unsigned int lodOffset) +{ + return (minFilter == GL_NEAREST || minFilter == GL_LINEAR) ? static_cast(lodOffset) : -FLT_MAX; +} + +FLOAT ConvertMaxLOD(GLenum minFilter, unsigned int lodOffset) +{ + return (minFilter == GL_NEAREST || minFilter == GL_LINEAR) ? static_cast(lodOffset) : FLT_MAX; +} + +} + +namespace d3d11_gl +{ + +GLenum ConvertBackBufferFormat(DXGI_FORMAT format) +{ + switch (format) + { + case DXGI_FORMAT_R8G8B8A8_UNORM: return GL_RGBA8_OES; + case DXGI_FORMAT_B8G8R8A8_UNORM: return GL_BGRA8_EXT; + default: + UNREACHABLE(); + } + + return GL_RGBA8_OES; +} + +GLenum ConvertDepthStencilFormat(DXGI_FORMAT format) +{ + switch (format) + { + case DXGI_FORMAT_UNKNOWN: return GL_NONE; + case DXGI_FORMAT_D16_UNORM: return GL_DEPTH_COMPONENT16; + case DXGI_FORMAT_D24_UNORM_S8_UINT: return GL_DEPTH24_STENCIL8_OES; + default: + UNREACHABLE(); + } + + return GL_DEPTH24_STENCIL8_OES; +} + +GLenum ConvertRenderbufferFormat(DXGI_FORMAT format) +{ + switch (format) + { + case DXGI_FORMAT_B8G8R8A8_UNORM: + return GL_BGRA8_EXT; + case DXGI_FORMAT_R8G8B8A8_UNORM: + return GL_RGBA8_OES; + case DXGI_FORMAT_D16_UNORM: + return GL_DEPTH_COMPONENT16; + case DXGI_FORMAT_D24_UNORM_S8_UINT: + return GL_DEPTH24_STENCIL8_OES; + default: + UNREACHABLE(); + } + + return GL_RGBA8_OES; +} + +GLenum ConvertTextureInternalFormat(DXGI_FORMAT format) +{ + switch (format) + { + case DXGI_FORMAT_R8G8B8A8_UNORM: + return GL_RGBA8_OES; + case DXGI_FORMAT_A8_UNORM: + return GL_ALPHA8_EXT; + case DXGI_FORMAT_BC1_UNORM: + return GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; + case DXGI_FORMAT_BC2_UNORM: + return GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE; + case DXGI_FORMAT_BC3_UNORM: + return GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE; + case DXGI_FORMAT_R32G32B32A32_FLOAT: + return GL_RGBA32F_EXT; + case DXGI_FORMAT_R32G32B32_FLOAT: + return GL_RGB32F_EXT; + case DXGI_FORMAT_R16G16B16A16_FLOAT: + return GL_RGBA16F_EXT; + case DXGI_FORMAT_B8G8R8A8_UNORM: + return GL_BGRA8_EXT; + case DXGI_FORMAT_R8_UNORM: + return GL_R8_EXT; + case DXGI_FORMAT_R8G8_UNORM: + return GL_RG8_EXT; + case DXGI_FORMAT_R16_FLOAT: + return GL_R16F_EXT; + case DXGI_FORMAT_R16G16_FLOAT: + return GL_RG16F_EXT; + case DXGI_FORMAT_D16_UNORM: + return GL_DEPTH_COMPONENT16; + case DXGI_FORMAT_D24_UNORM_S8_UINT: + return GL_DEPTH24_STENCIL8_OES; + case DXGI_FORMAT_UNKNOWN: + return GL_NONE; + default: + UNREACHABLE(); + } + + return GL_RGBA8_OES; +} + +} + +namespace gl_d3d11 +{ + +DXGI_FORMAT ConvertRenderbufferFormat(GLenum format) +{ + switch (format) + { + case GL_RGBA4: + case GL_RGB5_A1: + case GL_RGBA8_OES: + case GL_RGB565: + case GL_RGB8_OES: + return DXGI_FORMAT_R8G8B8A8_UNORM; + case GL_BGRA8_EXT: + return DXGI_FORMAT_B8G8R8A8_UNORM; + case GL_DEPTH_COMPONENT16: + return DXGI_FORMAT_D16_UNORM; + case GL_STENCIL_INDEX8: + case GL_DEPTH24_STENCIL8_OES: + return DXGI_FORMAT_D24_UNORM_S8_UINT; + default: + UNREACHABLE(); + } + + return DXGI_FORMAT_R8G8B8A8_UNORM; +} + +DXGI_FORMAT ConvertTextureFormat(GLenum internalformat) +{ + switch (internalformat) + { + case GL_RGB565: + case GL_RGBA4: + case GL_RGB5_A1: + case GL_RGB8_OES: + case GL_RGBA8_OES: + case GL_LUMINANCE8_EXT: + case GL_LUMINANCE8_ALPHA8_EXT: + return DXGI_FORMAT_R8G8B8A8_UNORM; + case GL_ALPHA8_EXT: + return DXGI_FORMAT_A8_UNORM; + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + return DXGI_FORMAT_BC1_UNORM; + case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: + return DXGI_FORMAT_BC2_UNORM; + case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: + return DXGI_FORMAT_BC3_UNORM; + case GL_RGBA32F_EXT: + case GL_ALPHA32F_EXT: + case GL_LUMINANCE_ALPHA32F_EXT: + return DXGI_FORMAT_R32G32B32A32_FLOAT; + case GL_RGB32F_EXT: + case GL_LUMINANCE32F_EXT: + return DXGI_FORMAT_R32G32B32_FLOAT; + case GL_RGBA16F_EXT: + case GL_ALPHA16F_EXT: + case GL_LUMINANCE_ALPHA16F_EXT: + case GL_RGB16F_EXT: + case GL_LUMINANCE16F_EXT: + return DXGI_FORMAT_R16G16B16A16_FLOAT; + case GL_BGRA8_EXT: + return DXGI_FORMAT_B8G8R8A8_UNORM; + case GL_R8_EXT: + return DXGI_FORMAT_R8_UNORM; + case GL_RG8_EXT: + return DXGI_FORMAT_R8G8_UNORM; + case GL_R16F_EXT: + return DXGI_FORMAT_R16_FLOAT; + case GL_RG16F_EXT: + return DXGI_FORMAT_R16G16_FLOAT; + case GL_DEPTH_COMPONENT16: + return DXGI_FORMAT_D16_UNORM; + case GL_DEPTH_COMPONENT32_OES: + case GL_DEPTH24_STENCIL8_OES: + return DXGI_FORMAT_D24_UNORM_S8_UINT; + case GL_NONE: + return DXGI_FORMAT_UNKNOWN; + default: + UNREACHABLE(); + } + + return DXGI_FORMAT_R8G8B8A8_UNORM; +} + +} + +namespace d3d11 +{ + +void SetPositionTexCoordVertex(PositionTexCoordVertex* vertex, float x, float y, float u, float v) +{ + vertex->x = x; + vertex->y = y; + vertex->u = u; + vertex->v = v; +} + +void SetPositionDepthColorVertex(PositionDepthColorVertex* vertex, float x, float y, float z, + const gl::Color &color) +{ + vertex->x = x; + vertex->y = y; + vertex->z = z; + vertex->r = color.red; + vertex->g = color.green; + vertex->b = color.blue; + vertex->a = color.alpha; +} + +size_t ComputePixelSizeBits(DXGI_FORMAT format) +{ + switch (format) + { + case DXGI_FORMAT_R1_UNORM: + return 1; + + case DXGI_FORMAT_A8_UNORM: + case DXGI_FORMAT_R8_SINT: + case DXGI_FORMAT_R8_SNORM: + case DXGI_FORMAT_R8_TYPELESS: + case DXGI_FORMAT_R8_UINT: + case DXGI_FORMAT_R8_UNORM: + return 8; + + case DXGI_FORMAT_B5G5R5A1_UNORM: + case DXGI_FORMAT_B5G6R5_UNORM: + case DXGI_FORMAT_D16_UNORM: + case DXGI_FORMAT_R16_FLOAT: + case DXGI_FORMAT_R16_SINT: + case DXGI_FORMAT_R16_SNORM: + case DXGI_FORMAT_R16_TYPELESS: + case DXGI_FORMAT_R16_UINT: + case DXGI_FORMAT_R16_UNORM: + case DXGI_FORMAT_R8G8_SINT: + case DXGI_FORMAT_R8G8_SNORM: + case DXGI_FORMAT_R8G8_TYPELESS: + case DXGI_FORMAT_R8G8_UINT: + case DXGI_FORMAT_R8G8_UNORM: + return 16; + + case DXGI_FORMAT_B8G8R8X8_TYPELESS: + case DXGI_FORMAT_B8G8R8X8_UNORM: + case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB: + case DXGI_FORMAT_D24_UNORM_S8_UINT: + case DXGI_FORMAT_D32_FLOAT: + case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: + case DXGI_FORMAT_G8R8_G8B8_UNORM: + case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM: + case DXGI_FORMAT_R10G10B10A2_TYPELESS: + case DXGI_FORMAT_R10G10B10A2_UINT: + case DXGI_FORMAT_R10G10B10A2_UNORM: + case DXGI_FORMAT_R11G11B10_FLOAT: + case DXGI_FORMAT_R16G16_FLOAT: + case DXGI_FORMAT_R16G16_SINT: + case DXGI_FORMAT_R16G16_SNORM: + case DXGI_FORMAT_R16G16_TYPELESS: + case DXGI_FORMAT_R16G16_UINT: + case DXGI_FORMAT_R16G16_UNORM: + case DXGI_FORMAT_R24_UNORM_X8_TYPELESS: + case DXGI_FORMAT_R24G8_TYPELESS: + case DXGI_FORMAT_R32_FLOAT: + case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS: + case DXGI_FORMAT_R32_SINT: + case DXGI_FORMAT_R32_TYPELESS: + case DXGI_FORMAT_R32_UINT: + case DXGI_FORMAT_R8G8_B8G8_UNORM: + case DXGI_FORMAT_R8G8B8A8_SINT: + case DXGI_FORMAT_R8G8B8A8_SNORM: + case DXGI_FORMAT_R8G8B8A8_TYPELESS: + case DXGI_FORMAT_R8G8B8A8_UINT: + case DXGI_FORMAT_R8G8B8A8_UNORM: + case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: + case DXGI_FORMAT_B8G8R8A8_TYPELESS: + case DXGI_FORMAT_B8G8R8A8_UNORM: + case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB: + case DXGI_FORMAT_R9G9B9E5_SHAREDEXP: + case DXGI_FORMAT_X24_TYPELESS_G8_UINT: + case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT: + return 32; + + case DXGI_FORMAT_R16G16B16A16_FLOAT: + case DXGI_FORMAT_R16G16B16A16_SINT: + case DXGI_FORMAT_R16G16B16A16_SNORM: + case DXGI_FORMAT_R16G16B16A16_TYPELESS: + case DXGI_FORMAT_R16G16B16A16_UINT: + case DXGI_FORMAT_R16G16B16A16_UNORM: + case DXGI_FORMAT_R32G32_FLOAT: + case DXGI_FORMAT_R32G32_SINT: + case DXGI_FORMAT_R32G32_TYPELESS: + case DXGI_FORMAT_R32G32_UINT: + case DXGI_FORMAT_R32G8X24_TYPELESS: + return 64; + + case DXGI_FORMAT_R32G32B32_FLOAT: + case DXGI_FORMAT_R32G32B32_SINT: + case DXGI_FORMAT_R32G32B32_TYPELESS: + case DXGI_FORMAT_R32G32B32_UINT: + return 96; + + case DXGI_FORMAT_R32G32B32A32_FLOAT: + case DXGI_FORMAT_R32G32B32A32_SINT: + case DXGI_FORMAT_R32G32B32A32_TYPELESS: + case DXGI_FORMAT_R32G32B32A32_UINT: + return 128; + + case DXGI_FORMAT_BC1_TYPELESS: + case DXGI_FORMAT_BC1_UNORM: + case DXGI_FORMAT_BC1_UNORM_SRGB: + case DXGI_FORMAT_BC4_SNORM: + case DXGI_FORMAT_BC4_TYPELESS: + case DXGI_FORMAT_BC4_UNORM: + return 4; + + case DXGI_FORMAT_BC2_TYPELESS: + case DXGI_FORMAT_BC2_UNORM: + case DXGI_FORMAT_BC2_UNORM_SRGB: + case DXGI_FORMAT_BC3_TYPELESS: + case DXGI_FORMAT_BC3_UNORM: + case DXGI_FORMAT_BC3_UNORM_SRGB: + case DXGI_FORMAT_BC5_SNORM: + case DXGI_FORMAT_BC5_TYPELESS: + case DXGI_FORMAT_BC5_UNORM: + case DXGI_FORMAT_BC6H_SF16: + case DXGI_FORMAT_BC6H_TYPELESS: + case DXGI_FORMAT_BC6H_UF16: + case DXGI_FORMAT_BC7_TYPELESS: + case DXGI_FORMAT_BC7_UNORM: + case DXGI_FORMAT_BC7_UNORM_SRGB: + return 8; + + default: + return 0; + } +} + +size_t ComputeBlockSizeBits(DXGI_FORMAT format) +{ + switch (format) + { + case DXGI_FORMAT_BC1_TYPELESS: + case DXGI_FORMAT_BC1_UNORM: + case DXGI_FORMAT_BC1_UNORM_SRGB: + case DXGI_FORMAT_BC4_SNORM: + case DXGI_FORMAT_BC4_TYPELESS: + case DXGI_FORMAT_BC4_UNORM: + case DXGI_FORMAT_BC2_TYPELESS: + case DXGI_FORMAT_BC2_UNORM: + case DXGI_FORMAT_BC2_UNORM_SRGB: + case DXGI_FORMAT_BC3_TYPELESS: + case DXGI_FORMAT_BC3_UNORM: + case DXGI_FORMAT_BC3_UNORM_SRGB: + case DXGI_FORMAT_BC5_SNORM: + case DXGI_FORMAT_BC5_TYPELESS: + case DXGI_FORMAT_BC5_UNORM: + case DXGI_FORMAT_BC6H_SF16: + case DXGI_FORMAT_BC6H_TYPELESS: + case DXGI_FORMAT_BC6H_UF16: + case DXGI_FORMAT_BC7_TYPELESS: + case DXGI_FORMAT_BC7_UNORM: + case DXGI_FORMAT_BC7_UNORM_SRGB: + return ComputePixelSizeBits(format) * 16; + default: + UNREACHABLE(); + return 0; + } +} + +bool IsCompressed(DXGI_FORMAT format) +{ + switch (format) + { + case DXGI_FORMAT_BC1_TYPELESS: + case DXGI_FORMAT_BC1_UNORM: + case DXGI_FORMAT_BC1_UNORM_SRGB: + case DXGI_FORMAT_BC4_SNORM: + case DXGI_FORMAT_BC4_TYPELESS: + case DXGI_FORMAT_BC4_UNORM: + case DXGI_FORMAT_BC2_TYPELESS: + case DXGI_FORMAT_BC2_UNORM: + case DXGI_FORMAT_BC2_UNORM_SRGB: + case DXGI_FORMAT_BC3_TYPELESS: + case DXGI_FORMAT_BC3_UNORM: + case DXGI_FORMAT_BC3_UNORM_SRGB: + case DXGI_FORMAT_BC5_SNORM: + case DXGI_FORMAT_BC5_TYPELESS: + case DXGI_FORMAT_BC5_UNORM: + case DXGI_FORMAT_BC6H_SF16: + case DXGI_FORMAT_BC6H_TYPELESS: + case DXGI_FORMAT_BC6H_UF16: + case DXGI_FORMAT_BC7_TYPELESS: + case DXGI_FORMAT_BC7_UNORM: + case DXGI_FORMAT_BC7_UNORM_SRGB: + return true; + case DXGI_FORMAT_UNKNOWN: + UNREACHABLE(); + return false; + default: + return false; + } +} + +unsigned int GetTextureFormatDimensionAlignment(DXGI_FORMAT format) +{ + switch (format) + { + case DXGI_FORMAT_BC1_TYPELESS: + case DXGI_FORMAT_BC1_UNORM: + case DXGI_FORMAT_BC1_UNORM_SRGB: + case DXGI_FORMAT_BC4_SNORM: + case DXGI_FORMAT_BC4_TYPELESS: + case DXGI_FORMAT_BC4_UNORM: + case DXGI_FORMAT_BC2_TYPELESS: + case DXGI_FORMAT_BC2_UNORM: + case DXGI_FORMAT_BC2_UNORM_SRGB: + case DXGI_FORMAT_BC3_TYPELESS: + case DXGI_FORMAT_BC3_UNORM: + case DXGI_FORMAT_BC3_UNORM_SRGB: + case DXGI_FORMAT_BC5_SNORM: + case DXGI_FORMAT_BC5_TYPELESS: + case DXGI_FORMAT_BC5_UNORM: + case DXGI_FORMAT_BC6H_SF16: + case DXGI_FORMAT_BC6H_TYPELESS: + case DXGI_FORMAT_BC6H_UF16: + case DXGI_FORMAT_BC7_TYPELESS: + case DXGI_FORMAT_BC7_UNORM: + case DXGI_FORMAT_BC7_UNORM_SRGB: + return 4; + case DXGI_FORMAT_UNKNOWN: + UNREACHABLE(); + return 1; + default: + return 1; + } +} + +bool IsDepthStencilFormat(DXGI_FORMAT format) +{ + switch (format) + { + case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: + case DXGI_FORMAT_D32_FLOAT: + case DXGI_FORMAT_D24_UNORM_S8_UINT: + case DXGI_FORMAT_D16_UNORM: + return true; + default: + return false; + } +} + +DXGI_FORMAT GetDepthTextureFormat(DXGI_FORMAT format) +{ + switch (format) + { + case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: return DXGI_FORMAT_R32G8X24_TYPELESS; + case DXGI_FORMAT_D32_FLOAT: return DXGI_FORMAT_R32_TYPELESS; + case DXGI_FORMAT_D24_UNORM_S8_UINT: return DXGI_FORMAT_R24G8_TYPELESS; + case DXGI_FORMAT_D16_UNORM: return DXGI_FORMAT_R16_TYPELESS; + default: UNREACHABLE(); return DXGI_FORMAT_UNKNOWN; + } +} + +DXGI_FORMAT GetDepthShaderResourceFormat(DXGI_FORMAT format) +{ + switch (format) + { + case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: return DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS; + case DXGI_FORMAT_D32_FLOAT: return DXGI_FORMAT_R32_UINT; + case DXGI_FORMAT_D24_UNORM_S8_UINT: return DXGI_FORMAT_R24_UNORM_X8_TYPELESS; + case DXGI_FORMAT_D16_UNORM: return DXGI_FORMAT_R16_UNORM; + default: UNREACHABLE(); return DXGI_FORMAT_UNKNOWN; + } +} + +HRESULT SetDebugName(ID3D11DeviceChild *resource, const char *name) +{ +#if defined(_DEBUG) + return resource->SetPrivateData(WKPDID_D3DDebugObjectName, strlen(name), name); +#else + return S_OK; +#endif +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer11_utils.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer11_utils.h new file mode 100644 index 00000000000..1bc48c1a135 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer11_utils.h @@ -0,0 +1,95 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// renderer11_utils.h: Conversion functions and other utility routines +// specific to the D3D11 renderer. + +#ifndef LIBGLESV2_RENDERER_RENDERER11_UTILS_H +#define LIBGLESV2_RENDERER_RENDERER11_UTILS_H + +#include "libGLESv2/angletypes.h" + +namespace gl_d3d11 +{ + +D3D11_BLEND ConvertBlendFunc(GLenum glBlend, bool isAlpha); +D3D11_BLEND_OP ConvertBlendOp(GLenum glBlendOp); +UINT8 ConvertColorMask(bool maskRed, bool maskGreen, bool maskBlue, bool maskAlpha); + +D3D11_CULL_MODE ConvertCullMode(bool cullEnabled, GLenum cullMode); + +D3D11_COMPARISON_FUNC ConvertComparison(GLenum comparison); +D3D11_DEPTH_WRITE_MASK ConvertDepthMask(bool depthWriteEnabled); +UINT8 ConvertStencilMask(GLuint stencilmask); +D3D11_STENCIL_OP ConvertStencilOp(GLenum stencilOp); + +D3D11_FILTER ConvertFilter(GLenum minFilter, GLenum magFilter, float maxAnisotropy); +D3D11_TEXTURE_ADDRESS_MODE ConvertTextureWrap(GLenum wrap); +FLOAT ConvertMinLOD(GLenum minFilter, unsigned int lodOffset); +FLOAT ConvertMaxLOD(GLenum minFilter, unsigned int lodOffset); + +DXGI_FORMAT ConvertRenderbufferFormat(GLenum format); +DXGI_FORMAT ConvertTextureFormat(GLenum format); +} + +namespace d3d11_gl +{ + +GLenum ConvertBackBufferFormat(DXGI_FORMAT format); +GLenum ConvertDepthStencilFormat(DXGI_FORMAT format); +GLenum ConvertRenderbufferFormat(DXGI_FORMAT format); +GLenum ConvertTextureInternalFormat(DXGI_FORMAT format); + +} + +namespace d3d11 +{ + +struct PositionTexCoordVertex +{ + float x, y; + float u, v; +}; +void SetPositionTexCoordVertex(PositionTexCoordVertex* vertex, float x, float y, float u, float v); + +struct PositionDepthColorVertex +{ + float x, y, z; + float r, g, b, a; +}; +void SetPositionDepthColorVertex(PositionDepthColorVertex* vertex, float x, float y, float z, + const gl::Color &color); + +size_t ComputePixelSizeBits(DXGI_FORMAT format); +size_t ComputeBlockSizeBits(DXGI_FORMAT format); + +bool IsCompressed(DXGI_FORMAT format); +unsigned int GetTextureFormatDimensionAlignment(DXGI_FORMAT format); + +bool IsDepthStencilFormat(DXGI_FORMAT format); +DXGI_FORMAT GetDepthTextureFormat(DXGI_FORMAT format); +DXGI_FORMAT GetDepthShaderResourceFormat(DXGI_FORMAT format); + +HRESULT SetDebugName(ID3D11DeviceChild *resource, const char *name); + +inline bool isDeviceLostError(HRESULT errorCode) +{ + switch (errorCode) + { + case DXGI_ERROR_DEVICE_HUNG: + case DXGI_ERROR_DEVICE_REMOVED: + case DXGI_ERROR_DEVICE_RESET: + case DXGI_ERROR_DRIVER_INTERNAL_ERROR: + case DXGI_ERROR_NOT_CURRENTLY_AVAILABLE: + return true; + default: + return false; + } +} + +} + +#endif // LIBGLESV2_RENDERER_RENDERER11_UTILS_H diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer9_utils.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer9_utils.cpp new file mode 100644 index 00000000000..da75d465e3c --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer9_utils.cpp @@ -0,0 +1,500 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// renderer9_utils.cpp: Conversion functions and other utility routines +// specific to the D3D9 renderer. + +#include "libGLESv2/renderer/renderer9_utils.h" +#include "libGLESv2/mathutil.h" +#include "libGLESv2/Context.h" + +#include "common/debug.h" + +namespace gl_d3d9 +{ + +D3DCMPFUNC ConvertComparison(GLenum comparison) +{ + D3DCMPFUNC d3dComp = D3DCMP_ALWAYS; + switch (comparison) + { + case GL_NEVER: d3dComp = D3DCMP_NEVER; break; + case GL_ALWAYS: d3dComp = D3DCMP_ALWAYS; break; + case GL_LESS: d3dComp = D3DCMP_LESS; break; + case GL_LEQUAL: d3dComp = D3DCMP_LESSEQUAL; break; + case GL_EQUAL: d3dComp = D3DCMP_EQUAL; break; + case GL_GREATER: d3dComp = D3DCMP_GREATER; break; + case GL_GEQUAL: d3dComp = D3DCMP_GREATEREQUAL; break; + case GL_NOTEQUAL: d3dComp = D3DCMP_NOTEQUAL; break; + default: UNREACHABLE(); + } + + return d3dComp; +} + +D3DCOLOR ConvertColor(gl::Color color) +{ + return D3DCOLOR_RGBA(gl::unorm<8>(color.red), + gl::unorm<8>(color.green), + gl::unorm<8>(color.blue), + gl::unorm<8>(color.alpha)); +} + +D3DBLEND ConvertBlendFunc(GLenum blend) +{ + D3DBLEND d3dBlend = D3DBLEND_ZERO; + + switch (blend) + { + case GL_ZERO: d3dBlend = D3DBLEND_ZERO; break; + case GL_ONE: d3dBlend = D3DBLEND_ONE; break; + case GL_SRC_COLOR: d3dBlend = D3DBLEND_SRCCOLOR; break; + case GL_ONE_MINUS_SRC_COLOR: d3dBlend = D3DBLEND_INVSRCCOLOR; break; + case GL_DST_COLOR: d3dBlend = D3DBLEND_DESTCOLOR; break; + case GL_ONE_MINUS_DST_COLOR: d3dBlend = D3DBLEND_INVDESTCOLOR; break; + case GL_SRC_ALPHA: d3dBlend = D3DBLEND_SRCALPHA; break; + case GL_ONE_MINUS_SRC_ALPHA: d3dBlend = D3DBLEND_INVSRCALPHA; break; + case GL_DST_ALPHA: d3dBlend = D3DBLEND_DESTALPHA; break; + case GL_ONE_MINUS_DST_ALPHA: d3dBlend = D3DBLEND_INVDESTALPHA; break; + case GL_CONSTANT_COLOR: d3dBlend = D3DBLEND_BLENDFACTOR; break; + case GL_ONE_MINUS_CONSTANT_COLOR: d3dBlend = D3DBLEND_INVBLENDFACTOR; break; + case GL_CONSTANT_ALPHA: d3dBlend = D3DBLEND_BLENDFACTOR; break; + case GL_ONE_MINUS_CONSTANT_ALPHA: d3dBlend = D3DBLEND_INVBLENDFACTOR; break; + case GL_SRC_ALPHA_SATURATE: d3dBlend = D3DBLEND_SRCALPHASAT; break; + default: UNREACHABLE(); + } + + return d3dBlend; +} + +D3DBLENDOP ConvertBlendOp(GLenum blendOp) +{ + D3DBLENDOP d3dBlendOp = D3DBLENDOP_ADD; + + switch (blendOp) + { + case GL_FUNC_ADD: d3dBlendOp = D3DBLENDOP_ADD; break; + case GL_FUNC_SUBTRACT: d3dBlendOp = D3DBLENDOP_SUBTRACT; break; + case GL_FUNC_REVERSE_SUBTRACT: d3dBlendOp = D3DBLENDOP_REVSUBTRACT; break; + default: UNREACHABLE(); + } + + return d3dBlendOp; +} + +D3DSTENCILOP ConvertStencilOp(GLenum stencilOp) +{ + D3DSTENCILOP d3dStencilOp = D3DSTENCILOP_KEEP; + + switch (stencilOp) + { + case GL_ZERO: d3dStencilOp = D3DSTENCILOP_ZERO; break; + case GL_KEEP: d3dStencilOp = D3DSTENCILOP_KEEP; break; + case GL_REPLACE: d3dStencilOp = D3DSTENCILOP_REPLACE; break; + case GL_INCR: d3dStencilOp = D3DSTENCILOP_INCRSAT; break; + case GL_DECR: d3dStencilOp = D3DSTENCILOP_DECRSAT; break; + case GL_INVERT: d3dStencilOp = D3DSTENCILOP_INVERT; break; + case GL_INCR_WRAP: d3dStencilOp = D3DSTENCILOP_INCR; break; + case GL_DECR_WRAP: d3dStencilOp = D3DSTENCILOP_DECR; break; + default: UNREACHABLE(); + } + + return d3dStencilOp; +} + +D3DTEXTUREADDRESS ConvertTextureWrap(GLenum wrap) +{ + D3DTEXTUREADDRESS d3dWrap = D3DTADDRESS_WRAP; + + switch (wrap) + { + case GL_REPEAT: d3dWrap = D3DTADDRESS_WRAP; break; + case GL_CLAMP_TO_EDGE: d3dWrap = D3DTADDRESS_CLAMP; break; + case GL_MIRRORED_REPEAT: d3dWrap = D3DTADDRESS_MIRROR; break; + default: UNREACHABLE(); + } + + return d3dWrap; +} + +D3DCULL ConvertCullMode(GLenum cullFace, GLenum frontFace) +{ + D3DCULL cull = D3DCULL_CCW; + switch (cullFace) + { + case GL_FRONT: + cull = (frontFace == GL_CCW ? D3DCULL_CW : D3DCULL_CCW); + break; + case GL_BACK: + cull = (frontFace == GL_CCW ? D3DCULL_CCW : D3DCULL_CW); + break; + case GL_FRONT_AND_BACK: + cull = D3DCULL_NONE; // culling will be handled during draw + break; + default: UNREACHABLE(); + } + + return cull; +} + +D3DCUBEMAP_FACES ConvertCubeFace(GLenum cubeFace) +{ + D3DCUBEMAP_FACES face = D3DCUBEMAP_FACE_POSITIVE_X; + + switch (cubeFace) + { + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + face = D3DCUBEMAP_FACE_POSITIVE_X; + break; + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + face = D3DCUBEMAP_FACE_NEGATIVE_X; + break; + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + face = D3DCUBEMAP_FACE_POSITIVE_Y; + break; + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + face = D3DCUBEMAP_FACE_NEGATIVE_Y; + break; + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + face = D3DCUBEMAP_FACE_POSITIVE_Z; + break; + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + face = D3DCUBEMAP_FACE_NEGATIVE_Z; + break; + default: UNREACHABLE(); + } + + return face; +} + +DWORD ConvertColorMask(bool red, bool green, bool blue, bool alpha) +{ + return (red ? D3DCOLORWRITEENABLE_RED : 0) | + (green ? D3DCOLORWRITEENABLE_GREEN : 0) | + (blue ? D3DCOLORWRITEENABLE_BLUE : 0) | + (alpha ? D3DCOLORWRITEENABLE_ALPHA : 0); +} + +D3DTEXTUREFILTERTYPE ConvertMagFilter(GLenum magFilter, float maxAnisotropy) +{ + if (maxAnisotropy > 1.0f) + { + return D3DTEXF_ANISOTROPIC; + } + + D3DTEXTUREFILTERTYPE d3dMagFilter = D3DTEXF_POINT; + switch (magFilter) + { + case GL_NEAREST: d3dMagFilter = D3DTEXF_POINT; break; + case GL_LINEAR: d3dMagFilter = D3DTEXF_LINEAR; break; + default: UNREACHABLE(); + } + + return d3dMagFilter; +} + +void ConvertMinFilter(GLenum minFilter, D3DTEXTUREFILTERTYPE *d3dMinFilter, D3DTEXTUREFILTERTYPE *d3dMipFilter, float maxAnisotropy) +{ + switch (minFilter) + { + case GL_NEAREST: + *d3dMinFilter = D3DTEXF_POINT; + *d3dMipFilter = D3DTEXF_NONE; + break; + case GL_LINEAR: + *d3dMinFilter = D3DTEXF_LINEAR; + *d3dMipFilter = D3DTEXF_NONE; + break; + case GL_NEAREST_MIPMAP_NEAREST: + *d3dMinFilter = D3DTEXF_POINT; + *d3dMipFilter = D3DTEXF_POINT; + break; + case GL_LINEAR_MIPMAP_NEAREST: + *d3dMinFilter = D3DTEXF_LINEAR; + *d3dMipFilter = D3DTEXF_POINT; + break; + case GL_NEAREST_MIPMAP_LINEAR: + *d3dMinFilter = D3DTEXF_POINT; + *d3dMipFilter = D3DTEXF_LINEAR; + break; + case GL_LINEAR_MIPMAP_LINEAR: + *d3dMinFilter = D3DTEXF_LINEAR; + *d3dMipFilter = D3DTEXF_LINEAR; + break; + default: + *d3dMinFilter = D3DTEXF_POINT; + *d3dMipFilter = D3DTEXF_NONE; + UNREACHABLE(); + } + + if (maxAnisotropy > 1.0f) + { + *d3dMinFilter = D3DTEXF_ANISOTROPIC; + } +} + +D3DFORMAT ConvertRenderbufferFormat(GLenum format) +{ + switch (format) + { + case GL_NONE: return D3DFMT_NULL; + case GL_RGBA4: + case GL_RGB5_A1: + case GL_RGBA8_OES: return D3DFMT_A8R8G8B8; + case GL_RGB565: return D3DFMT_R5G6B5; + case GL_RGB8_OES: return D3DFMT_X8R8G8B8; + case GL_DEPTH_COMPONENT16: + case GL_STENCIL_INDEX8: + case GL_DEPTH24_STENCIL8_OES: return D3DFMT_D24S8; + default: UNREACHABLE(); return D3DFMT_A8R8G8B8; + } +} + +D3DMULTISAMPLE_TYPE GetMultisampleTypeFromSamples(GLsizei samples) +{ + if (samples <= 1) + return D3DMULTISAMPLE_NONE; + else + return (D3DMULTISAMPLE_TYPE)samples; +} + +} + +namespace d3d9_gl +{ + +unsigned int GetStencilSize(D3DFORMAT stencilFormat) +{ + if (stencilFormat == D3DFMT_INTZ) + { + return 8; + } + switch(stencilFormat) + { + case D3DFMT_D24FS8: + case D3DFMT_D24S8: + return 8; + case D3DFMT_D24X4S4: + return 4; + case D3DFMT_D15S1: + return 1; + case D3DFMT_D16_LOCKABLE: + case D3DFMT_D32: + case D3DFMT_D24X8: + case D3DFMT_D32F_LOCKABLE: + case D3DFMT_D16: + return 0; + //case D3DFMT_D32_LOCKABLE: return 0; // DirectX 9Ex only + //case D3DFMT_S8_LOCKABLE: return 8; // DirectX 9Ex only + default: + return 0; + } +} + +unsigned int GetAlphaSize(D3DFORMAT colorFormat) +{ + switch (colorFormat) + { + case D3DFMT_A16B16G16R16F: + return 16; + case D3DFMT_A32B32G32R32F: + return 32; + case D3DFMT_A2R10G10B10: + return 2; + case D3DFMT_A8R8G8B8: + return 8; + case D3DFMT_A1R5G5B5: + return 1; + case D3DFMT_X8R8G8B8: + case D3DFMT_R5G6B5: + return 0; + default: + return 0; + } +} + +GLsizei GetSamplesFromMultisampleType(D3DMULTISAMPLE_TYPE type) +{ + if (type == D3DMULTISAMPLE_NONMASKABLE) + return 0; + else + return type; +} + +bool IsFormatChannelEquivalent(D3DFORMAT d3dformat, GLenum format) +{ + switch (d3dformat) + { + case D3DFMT_L8: + return (format == GL_LUMINANCE); + case D3DFMT_A8L8: + return (format == GL_LUMINANCE_ALPHA); + case D3DFMT_DXT1: + return (format == GL_COMPRESSED_RGBA_S3TC_DXT1_EXT || format == GL_COMPRESSED_RGB_S3TC_DXT1_EXT); + case D3DFMT_DXT3: + return (format == GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE); + case D3DFMT_DXT5: + return (format == GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE); + case D3DFMT_A8R8G8B8: + case D3DFMT_A16B16G16R16F: + case D3DFMT_A32B32G32R32F: + return (format == GL_RGBA || format == GL_BGRA_EXT); + case D3DFMT_X8R8G8B8: + return (format == GL_RGB); + default: + if (d3dformat == D3DFMT_INTZ && gl::IsDepthTexture(format)) + return true; + return false; + } +} + +GLenum ConvertBackBufferFormat(D3DFORMAT format) +{ + switch (format) + { + case D3DFMT_A4R4G4B4: return GL_RGBA4; + case D3DFMT_A8R8G8B8: return GL_RGBA8_OES; + case D3DFMT_A1R5G5B5: return GL_RGB5_A1; + case D3DFMT_R5G6B5: return GL_RGB565; + case D3DFMT_X8R8G8B8: return GL_RGB8_OES; + default: + UNREACHABLE(); + } + + return GL_RGBA4; +} + +GLenum ConvertDepthStencilFormat(D3DFORMAT format) +{ + if (format == D3DFMT_INTZ) + { + return GL_DEPTH24_STENCIL8_OES; + } + switch (format) + { + case D3DFMT_D16: + case D3DFMT_D24X8: + return GL_DEPTH_COMPONENT16; + case D3DFMT_D24S8: + return GL_DEPTH24_STENCIL8_OES; + case D3DFMT_UNKNOWN: + return GL_NONE; + default: + UNREACHABLE(); + } + + return GL_DEPTH24_STENCIL8_OES; +} + +GLenum ConvertRenderTargetFormat(D3DFORMAT format) +{ + if (format == D3DFMT_INTZ) + { + return GL_DEPTH24_STENCIL8_OES; + } + + switch (format) + { + case D3DFMT_A4R4G4B4: return GL_RGBA4; + case D3DFMT_A8R8G8B8: return GL_RGBA8_OES; + case D3DFMT_A1R5G5B5: return GL_RGB5_A1; + case D3DFMT_R5G6B5: return GL_RGB565; + case D3DFMT_X8R8G8B8: return GL_RGB8_OES; + case D3DFMT_D16: + case D3DFMT_D24X8: + return GL_DEPTH_COMPONENT16; + case D3DFMT_D24S8: + return GL_DEPTH24_STENCIL8_OES; + case D3DFMT_UNKNOWN: + return GL_NONE; + default: + UNREACHABLE(); + } + + return GL_RGBA4; +} + +GLenum GetEquivalentFormat(D3DFORMAT format) +{ + if (format == D3DFMT_INTZ) + return GL_DEPTH24_STENCIL8_OES; + if (format == D3DFMT_NULL) + return GL_NONE; + + switch (format) + { + case D3DFMT_A4R4G4B4: return GL_RGBA4; + case D3DFMT_A8R8G8B8: return GL_RGBA8_OES; + case D3DFMT_A1R5G5B5: return GL_RGB5_A1; + case D3DFMT_R5G6B5: return GL_RGB565; + case D3DFMT_X8R8G8B8: return GL_RGB8_OES; + case D3DFMT_D16: return GL_DEPTH_COMPONENT16; + case D3DFMT_D24S8: return GL_DEPTH24_STENCIL8_OES; + case D3DFMT_UNKNOWN: return GL_NONE; + case D3DFMT_DXT1: return GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; + case D3DFMT_DXT3: return GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE; + case D3DFMT_DXT5: return GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE; + case D3DFMT_A32B32G32R32F: return GL_RGBA32F_EXT; + case D3DFMT_A16B16G16R16F: return GL_RGBA16F_EXT; + case D3DFMT_L8: return GL_LUMINANCE8_EXT; + case D3DFMT_A8L8: return GL_LUMINANCE8_ALPHA8_EXT; + default: UNREACHABLE(); + return GL_NONE; + } +} + +} + +namespace d3d9 +{ + +bool IsCompressedFormat(D3DFORMAT surfaceFormat) +{ + switch(surfaceFormat) + { + case D3DFMT_DXT1: + case D3DFMT_DXT2: + case D3DFMT_DXT3: + case D3DFMT_DXT4: + case D3DFMT_DXT5: + return true; + default: + return false; + } +} + +size_t ComputeRowSize(D3DFORMAT format, unsigned int width) +{ + if (format == D3DFMT_INTZ) + { + return 4 * width; + } + switch (format) + { + case D3DFMT_L8: + return 1 * width; + case D3DFMT_A8L8: + return 2 * width; + case D3DFMT_X8R8G8B8: + case D3DFMT_A8R8G8B8: + return 4 * width; + case D3DFMT_A16B16G16R16F: + return 8 * width; + case D3DFMT_A32B32G32R32F: + return 16 * width; + case D3DFMT_DXT1: + return 8 * ((width + 3) / 4); + case D3DFMT_DXT3: + case D3DFMT_DXT5: + return 16 * ((width + 3) / 4); + default: + UNREACHABLE(); + return 0; + } +} + +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer9_utils.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer9_utils.h new file mode 100644 index 00000000000..bf6cdf1ea65 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer9_utils.h @@ -0,0 +1,74 @@ +// +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// renderer9_utils.h: Conversion functions and other utility routines +// specific to the D3D9 renderer + +#ifndef LIBGLESV2_RENDERER_RENDERER9_UTILS_H +#define LIBGLESV2_RENDERER_RENDERER9_UTILS_H + +#include "libGLESv2/utilities.h" + +const D3DFORMAT D3DFMT_INTZ = ((D3DFORMAT)(MAKEFOURCC('I','N','T','Z'))); +const D3DFORMAT D3DFMT_NULL = ((D3DFORMAT)(MAKEFOURCC('N','U','L','L'))); + +namespace gl_d3d9 +{ + +D3DCMPFUNC ConvertComparison(GLenum comparison); +D3DCOLOR ConvertColor(gl::Color color); +D3DBLEND ConvertBlendFunc(GLenum blend); +D3DBLENDOP ConvertBlendOp(GLenum blendOp); +D3DSTENCILOP ConvertStencilOp(GLenum stencilOp); +D3DTEXTUREADDRESS ConvertTextureWrap(GLenum wrap); +D3DCULL ConvertCullMode(GLenum cullFace, GLenum frontFace); +D3DCUBEMAP_FACES ConvertCubeFace(GLenum cubeFace); +DWORD ConvertColorMask(bool red, bool green, bool blue, bool alpha); +D3DTEXTUREFILTERTYPE ConvertMagFilter(GLenum magFilter, float maxAnisotropy); +void ConvertMinFilter(GLenum minFilter, D3DTEXTUREFILTERTYPE *d3dMinFilter, D3DTEXTUREFILTERTYPE *d3dMipFilter, float maxAnisotropy); +D3DFORMAT ConvertRenderbufferFormat(GLenum format); +D3DMULTISAMPLE_TYPE GetMultisampleTypeFromSamples(GLsizei samples); + +} + +namespace d3d9_gl +{ + +GLuint GetAlphaSize(D3DFORMAT colorFormat); +GLuint GetStencilSize(D3DFORMAT stencilFormat); + +GLsizei GetSamplesFromMultisampleType(D3DMULTISAMPLE_TYPE type); + +bool IsFormatChannelEquivalent(D3DFORMAT d3dformat, GLenum format); +GLenum ConvertBackBufferFormat(D3DFORMAT format); +GLenum ConvertDepthStencilFormat(D3DFORMAT format); +GLenum ConvertRenderTargetFormat(D3DFORMAT format); +GLenum GetEquivalentFormat(D3DFORMAT format); + +} + +namespace d3d9 +{ +bool IsCompressedFormat(D3DFORMAT format); +size_t ComputeRowSize(D3DFORMAT format, unsigned int width); + +inline bool isDeviceLostError(HRESULT errorCode) +{ + switch (errorCode) + { + case D3DERR_DRIVERINTERNALERROR: + case D3DERR_DEVICELOST: + case D3DERR_DEVICEHUNG: + case D3DERR_DEVICEREMOVED: + return true; + default: + return false; + } +} + +} + +#endif // LIBGLESV2_RENDERER_RENDERER9_UTILS_H diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/Blit.ps b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/Blit.ps new file mode 100644 index 00000000000..dcb3bd0e76b Binary files /dev/null and b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/Blit.ps differ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/Blit.vs b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/Blit.vs new file mode 100644 index 00000000000..3a36980b935 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/Blit.vs @@ -0,0 +1,43 @@ +// +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +struct VS_OUTPUT +{ + float4 position : POSITION; + float4 texcoord : TEXCOORD0; +}; + +uniform float4 halfPixelSize : c0; + +// Standard Vertex Shader +// Input 0 is the homogenous position. +// Outputs the homogenous position as-is. +// Outputs a tex coord with (0,0) in the upper-left corner of the screen and (1,1) in the bottom right. +// C0.X must be negative half-pixel width, C0.Y must be half-pixel height. C0.ZW must be 0. +VS_OUTPUT standardvs(in float4 position : POSITION) +{ + VS_OUTPUT Out; + + Out.position = position + halfPixelSize; + Out.texcoord = position * float4(0.5, -0.5, 1.0, 1.0) + float4(0.5, 0.5, 0, 0); + + return Out; +}; + +// Flip Y Vertex Shader +// Input 0 is the homogenous position. +// Outputs the homogenous position as-is. +// Outputs a tex coord with (0,1) in the upper-left corner of the screen and (1,0) in the bottom right. +// C0.XY must be the half-pixel width and height. C0.ZW must be 0. +VS_OUTPUT flipyvs(in float4 position : POSITION) +{ + VS_OUTPUT Out; + + Out.position = position + halfPixelSize; + Out.texcoord = position * float4(0.5, 0.5, 1.0, 1.0) + float4(0.5, 0.5, 0, 0); + + return Out; +}; diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/Clear11.hlsl b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/Clear11.hlsl new file mode 100644 index 00000000000..042ac699b66 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/Clear11.hlsl @@ -0,0 +1,38 @@ +void VS_Clear( in float3 inPosition : POSITION, in float4 inColor : COLOR, + out float4 outPosition : SV_POSITION, out float4 outColor : COLOR) +{ + outPosition = float4(inPosition, 1.0f); + outColor = inColor; +} + +// Assume we are in SM4+, which has 8 color outputs +struct PS_OutputMultiple +{ + float4 color0 : SV_TARGET0; + float4 color1 : SV_TARGET1; + float4 color2 : SV_TARGET2; + float4 color3 : SV_TARGET3; + float4 color4 : SV_TARGET4; + float4 color5 : SV_TARGET5; + float4 color6 : SV_TARGET6; + float4 color7 : SV_TARGET7; +}; + +PS_OutputMultiple PS_ClearMultiple(in float4 inPosition : SV_POSITION, in float4 inColor : COLOR) +{ + PS_OutputMultiple outColor; + outColor.color0 = inColor; + outColor.color1 = inColor; + outColor.color2 = inColor; + outColor.color3 = inColor; + outColor.color4 = inColor; + outColor.color5 = inColor; + outColor.color6 = inColor; + outColor.color7 = inColor; + return outColor; +} + +float4 PS_ClearSingle(in float4 inPosition : SV_Position, in float4 inColor : COLOR) : SV_Target0 +{ + return inColor; +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/Passthrough11.hlsl b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/Passthrough11.hlsl new file mode 100644 index 00000000000..43b7801efc1 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/Passthrough11.hlsl @@ -0,0 +1,29 @@ +Texture2D Texture : register(t0); +SamplerState Sampler : register(s0); + +void VS_Passthrough( in float2 inPosition : POSITION, in float2 inTexCoord : TEXCOORD0, + out float4 outPosition : SV_POSITION, out float2 outTexCoord : TEXCOORD0) +{ + outPosition = float4(inPosition, 0.0f, 1.0f); + outTexCoord = inTexCoord; +} + +float4 PS_PassthroughRGBA(in float4 inPosition : SV_POSITION, in float2 inTexCoord : TEXCOORD0) : SV_TARGET0 +{ + return Texture.Sample(Sampler, inTexCoord).rgba; +} + +float4 PS_PassthroughRGB(in float4 inPosition : SV_POSITION, in float2 inTexCoord : TEXCOORD0) : SV_TARGET0 +{ + return float4(Texture.Sample(Sampler, inTexCoord).rgb, 1.0f); +} + +float4 PS_PassthroughLum(in float4 inPosition : SV_POSITION, in float2 inTexCoord : TEXCOORD0) : SV_TARGET0 +{ + return float4(Texture.Sample(Sampler, inTexCoord).rrr, 1.0f); +} + +float4 PS_PassthroughLumAlpha(in float4 inPosition : SV_POSITION, in float2 inTexCoord : TEXCOORD0) : SV_TARGET0 +{ + return Texture.Sample(Sampler, inTexCoord).rrra; +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clear11vs.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clear11vs.h new file mode 100644 index 00000000000..1afb1e2d6bf --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clear11vs.h @@ -0,0 +1,133 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// +// fxc /E VS_Clear /T vs_4_0 /Fh compiled/clear11vs.h Clear11.hlsl +// +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// POSITION 0 xyz 0 NONE float xyz +// COLOR 0 xyzw 1 NONE float xyzw +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_POSITION 0 xyzw 0 POS float xyzw +// COLOR 0 xyzw 1 NONE float xyzw +// +vs_4_0 +dcl_input v0.xyz +dcl_input v1.xyzw +dcl_output_siv o0.xyzw, position +dcl_output o1.xyzw +mov o0.xyz, v0.xyzx +mov o0.w, l(1.000000) +mov o1.xyzw, v1.xyzw +ret +// Approximately 4 instruction slots used +#endif + +const BYTE g_VS_Clear[] = +{ + 68, 88, 66, 67, 109, 138, + 105, 83, 86, 190, 83, 125, + 72, 102, 194, 136, 46, 69, + 17, 121, 1, 0, 0, 0, + 48, 2, 0, 0, 5, 0, + 0, 0, 52, 0, 0, 0, + 140, 0, 0, 0, 220, 0, + 0, 0, 48, 1, 0, 0, + 180, 1, 0, 0, 82, 68, + 69, 70, 80, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 4, + 254, 255, 0, 1, 0, 0, + 28, 0, 0, 0, 77, 105, + 99, 114, 111, 115, 111, 102, + 116, 32, 40, 82, 41, 32, + 72, 76, 83, 76, 32, 83, + 104, 97, 100, 101, 114, 32, + 67, 111, 109, 112, 105, 108, + 101, 114, 32, 57, 46, 50, + 57, 46, 57, 53, 50, 46, + 51, 49, 49, 49, 0, 171, + 171, 171, 73, 83, 71, 78, + 72, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 7, 7, 0, 0, + 65, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 15, 15, 0, 0, + 80, 79, 83, 73, 84, 73, + 79, 78, 0, 67, 79, 76, + 79, 82, 0, 171, 79, 83, + 71, 78, 76, 0, 0, 0, + 2, 0, 0, 0, 8, 0, + 0, 0, 56, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 0, 68, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 15, 0, + 0, 0, 83, 86, 95, 80, + 79, 83, 73, 84, 73, 79, + 78, 0, 67, 79, 76, 79, + 82, 0, 171, 171, 83, 72, + 68, 82, 124, 0, 0, 0, + 64, 0, 1, 0, 31, 0, + 0, 0, 95, 0, 0, 3, + 114, 16, 16, 0, 0, 0, + 0, 0, 95, 0, 0, 3, + 242, 16, 16, 0, 1, 0, + 0, 0, 103, 0, 0, 4, + 242, 32, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 242, 32, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 114, 32, + 16, 0, 0, 0, 0, 0, + 70, 18, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 5, + 130, 32, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 54, 0, + 0, 5, 242, 32, 16, 0, + 1, 0, 0, 0, 70, 30, + 16, 0, 1, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 116, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0 +}; diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clearmultiple11ps.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clearmultiple11ps.h new file mode 100644 index 00000000000..c600b472252 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clearmultiple11ps.h @@ -0,0 +1,199 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// +// fxc /E PS_ClearMultiple /T ps_4_0 /Fh compiled/clearmultiple11ps.h +// Clear11.hlsl +// +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_POSITION 0 xyzw 0 POS float +// COLOR 0 xyzw 1 NONE float xyzw +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// SV_TARGET 1 xyzw 1 TARGET float xyzw +// SV_TARGET 2 xyzw 2 TARGET float xyzw +// SV_TARGET 3 xyzw 3 TARGET float xyzw +// SV_TARGET 4 xyzw 4 TARGET float xyzw +// SV_TARGET 5 xyzw 5 TARGET float xyzw +// SV_TARGET 6 xyzw 6 TARGET float xyzw +// SV_TARGET 7 xyzw 7 TARGET float xyzw +// +ps_4_0 +dcl_input_ps linear v1.xyzw +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_output o2.xyzw +dcl_output o3.xyzw +dcl_output o4.xyzw +dcl_output o5.xyzw +dcl_output o6.xyzw +dcl_output o7.xyzw +mov o0.xyzw, v1.xyzw +mov o1.xyzw, v1.xyzw +mov o2.xyzw, v1.xyzw +mov o3.xyzw, v1.xyzw +mov o4.xyzw, v1.xyzw +mov o5.xyzw, v1.xyzw +mov o6.xyzw, v1.xyzw +mov o7.xyzw, v1.xyzw +ret +// Approximately 9 instruction slots used +#endif + +const BYTE g_PS_ClearMultiple[] = +{ + 68, 88, 66, 67, 146, 246, + 236, 240, 50, 40, 87, 55, + 73, 140, 251, 200, 8, 22, + 173, 117, 1, 0, 0, 0, + 88, 3, 0, 0, 5, 0, + 0, 0, 52, 0, 0, 0, + 140, 0, 0, 0, 224, 0, + 0, 0, 188, 1, 0, 0, + 220, 2, 0, 0, 82, 68, + 69, 70, 80, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 4, + 255, 255, 0, 1, 0, 0, + 28, 0, 0, 0, 77, 105, + 99, 114, 111, 115, 111, 102, + 116, 32, 40, 82, 41, 32, + 72, 76, 83, 76, 32, 83, + 104, 97, 100, 101, 114, 32, + 67, 111, 109, 112, 105, 108, + 101, 114, 32, 57, 46, 50, + 57, 46, 57, 53, 50, 46, + 51, 49, 49, 49, 0, 171, + 171, 171, 73, 83, 71, 78, + 76, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 15, 15, 0, 0, + 83, 86, 95, 80, 79, 83, + 73, 84, 73, 79, 78, 0, + 67, 79, 76, 79, 82, 0, + 171, 171, 79, 83, 71, 78, + 212, 0, 0, 0, 8, 0, + 0, 0, 8, 0, 0, 0, + 200, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 200, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 15, 0, 0, 0, + 200, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 2, 0, + 0, 0, 15, 0, 0, 0, + 200, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 3, 0, + 0, 0, 15, 0, 0, 0, + 200, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 4, 0, + 0, 0, 15, 0, 0, 0, + 200, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, + 200, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 6, 0, + 0, 0, 15, 0, 0, 0, + 200, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 7, 0, + 0, 0, 15, 0, 0, 0, + 83, 86, 95, 84, 65, 82, + 71, 69, 84, 0, 171, 171, + 83, 72, 68, 82, 24, 1, + 0, 0, 64, 0, 0, 0, + 70, 0, 0, 0, 98, 16, + 0, 3, 242, 16, 16, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 242, 32, 16, 0, + 0, 0, 0, 0, 101, 0, + 0, 3, 242, 32, 16, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 242, 32, 16, 0, + 2, 0, 0, 0, 101, 0, + 0, 3, 242, 32, 16, 0, + 3, 0, 0, 0, 101, 0, + 0, 3, 242, 32, 16, 0, + 4, 0, 0, 0, 101, 0, + 0, 3, 242, 32, 16, 0, + 5, 0, 0, 0, 101, 0, + 0, 3, 242, 32, 16, 0, + 6, 0, 0, 0, 101, 0, + 0, 3, 242, 32, 16, 0, + 7, 0, 0, 0, 54, 0, + 0, 5, 242, 32, 16, 0, + 0, 0, 0, 0, 70, 30, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 242, 32, + 16, 0, 1, 0, 0, 0, + 70, 30, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 242, 32, 16, 0, 2, 0, + 0, 0, 70, 30, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 242, 32, 16, 0, + 3, 0, 0, 0, 70, 30, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 242, 32, + 16, 0, 4, 0, 0, 0, + 70, 30, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 242, 32, 16, 0, 5, 0, + 0, 0, 70, 30, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 242, 32, 16, 0, + 6, 0, 0, 0, 70, 30, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 242, 32, + 16, 0, 7, 0, 0, 0, + 70, 30, 16, 0, 1, 0, + 0, 0, 62, 0, 0, 1, + 83, 84, 65, 84, 116, 0, + 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 +}; diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clearsingle11ps.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clearsingle11ps.h new file mode 100644 index 00000000000..0d9c651965a --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clearsingle11ps.h @@ -0,0 +1,113 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// +// fxc /E PS_ClearSingle /T ps_4_0 /Fh compiled/clearsingle11ps.h +// Clear11.hlsl +// +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_Position 0 xyzw 0 POS float +// COLOR 0 xyzw 1 NONE float xyzw +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_4_0 +dcl_input_ps linear v1.xyzw +dcl_output o0.xyzw +mov o0.xyzw, v1.xyzw +ret +// Approximately 2 instruction slots used +#endif + +const BYTE g_PS_ClearSingle[] = +{ + 68, 88, 66, 67, 11, 49, + 220, 157, 35, 106, 175, 161, + 180, 178, 147, 150, 134, 162, + 222, 79, 1, 0, 0, 0, + 208, 1, 0, 0, 5, 0, + 0, 0, 52, 0, 0, 0, + 140, 0, 0, 0, 224, 0, + 0, 0, 20, 1, 0, 0, + 84, 1, 0, 0, 82, 68, + 69, 70, 80, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 4, + 255, 255, 0, 1, 0, 0, + 28, 0, 0, 0, 77, 105, + 99, 114, 111, 115, 111, 102, + 116, 32, 40, 82, 41, 32, + 72, 76, 83, 76, 32, 83, + 104, 97, 100, 101, 114, 32, + 67, 111, 109, 112, 105, 108, + 101, 114, 32, 57, 46, 50, + 57, 46, 57, 53, 50, 46, + 51, 49, 49, 49, 0, 171, + 171, 171, 73, 83, 71, 78, + 76, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 15, 15, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 67, 79, 76, 79, 82, 0, + 171, 171, 79, 83, 71, 78, + 44, 0, 0, 0, 1, 0, + 0, 0, 8, 0, 0, 0, + 32, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 83, 86, 95, 84, 97, 114, + 103, 101, 116, 0, 171, 171, + 83, 72, 68, 82, 56, 0, + 0, 0, 64, 0, 0, 0, + 14, 0, 0, 0, 98, 16, + 0, 3, 242, 16, 16, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 242, 32, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 242, 32, 16, 0, + 0, 0, 0, 0, 70, 30, + 16, 0, 1, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 116, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0 +}; diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/componentmaskps.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/componentmaskps.h new file mode 100644 index 00000000000..493535d87be --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/componentmaskps.h @@ -0,0 +1,81 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// fxc /E componentmaskps /T ps_2_0 /Fh compiled/componentmaskps.h Blit.ps +// +// +// Parameters: +// +// float4 mode; +// sampler2D tex; +// +// +// Registers: +// +// Name Reg Size +// ------------ ----- ---- +// mode c0 1 +// tex s0 1 +// + + ps_2_0 + dcl t0.xy + dcl_2d s0 + texld r0, t0, s0 + mul r1.xyz, r0, c0.x + mad r1.w, r0.w, c0.z, c0.w + mov oC0, r1 + +// approximately 4 instruction slots used (1 texture, 3 arithmetic) +#endif + +const BYTE g_ps20_componentmaskps[] = +{ + 0, 2, 255, 255, 254, 255, + 43, 0, 67, 84, 65, 66, + 28, 0, 0, 0, 119, 0, + 0, 0, 0, 2, 255, 255, + 2, 0, 0, 0, 28, 0, + 0, 0, 0, 1, 0, 0, + 112, 0, 0, 0, 68, 0, + 0, 0, 2, 0, 0, 0, + 1, 0, 0, 0, 76, 0, + 0, 0, 0, 0, 0, 0, + 92, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 96, 0, 0, 0, 0, 0, + 0, 0, 109, 111, 100, 101, + 0, 171, 171, 171, 1, 0, + 3, 0, 1, 0, 4, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 116, 101, 120, 0, + 4, 0, 12, 0, 1, 0, + 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 112, 115, + 95, 50, 95, 48, 0, 77, + 105, 99, 114, 111, 115, 111, + 102, 116, 32, 40, 82, 41, + 32, 72, 76, 83, 76, 32, + 83, 104, 97, 100, 101, 114, + 32, 67, 111, 109, 112, 105, + 108, 101, 114, 32, 57, 46, + 50, 57, 46, 57, 53, 50, + 46, 51, 49, 49, 49, 0, + 31, 0, 0, 2, 0, 0, + 0, 128, 0, 0, 3, 176, + 31, 0, 0, 2, 0, 0, + 0, 144, 0, 8, 15, 160, + 66, 0, 0, 3, 0, 0, + 15, 128, 0, 0, 228, 176, + 0, 8, 228, 160, 5, 0, + 0, 3, 1, 0, 7, 128, + 0, 0, 228, 128, 0, 0, + 0, 160, 4, 0, 0, 4, + 1, 0, 8, 128, 0, 0, + 255, 128, 0, 0, 170, 160, + 0, 0, 255, 160, 1, 0, + 0, 2, 0, 8, 15, 128, + 1, 0, 228, 128, 255, 255, + 0, 0 +}; diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/flipyvs.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/flipyvs.h new file mode 100644 index 00000000000..f416641f263 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/flipyvs.h @@ -0,0 +1,69 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// fxc /E flipyvs /T vs_2_0 /Fh compiled/flipyvs.h Blit.vs +// +// +// Parameters: +// +// float4 halfPixelSize; +// +// +// Registers: +// +// Name Reg Size +// ------------- ----- ---- +// halfPixelSize c0 1 +// + + vs_2_0 + def c1, 0.5, 1, 0, 0 + dcl_position v0 + add oPos, v0, c0 + mad oT0, v0, c1.xxyy, c1.xxzz + +// approximately 2 instruction slots used +#endif + +const BYTE g_vs20_flipyvs[] = +{ + 0, 2, 254, 255, 254, 255, + 35, 0, 67, 84, 65, 66, + 28, 0, 0, 0, 87, 0, + 0, 0, 0, 2, 254, 255, + 1, 0, 0, 0, 28, 0, + 0, 0, 0, 1, 0, 0, + 80, 0, 0, 0, 48, 0, + 0, 0, 2, 0, 0, 0, + 1, 0, 0, 0, 64, 0, + 0, 0, 0, 0, 0, 0, + 104, 97, 108, 102, 80, 105, + 120, 101, 108, 83, 105, 122, + 101, 0, 171, 171, 1, 0, + 3, 0, 1, 0, 4, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 118, 115, 95, 50, + 95, 48, 0, 77, 105, 99, + 114, 111, 115, 111, 102, 116, + 32, 40, 82, 41, 32, 72, + 76, 83, 76, 32, 83, 104, + 97, 100, 101, 114, 32, 67, + 111, 109, 112, 105, 108, 101, + 114, 32, 57, 46, 50, 57, + 46, 57, 53, 50, 46, 51, + 49, 49, 49, 0, 81, 0, + 0, 5, 1, 0, 15, 160, + 0, 0, 0, 63, 0, 0, + 128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 0, + 0, 2, 0, 0, 0, 128, + 0, 0, 15, 144, 2, 0, + 0, 3, 0, 0, 15, 192, + 0, 0, 228, 144, 0, 0, + 228, 160, 4, 0, 0, 4, + 0, 0, 15, 224, 0, 0, + 228, 144, 1, 0, 80, 160, + 1, 0, 160, 160, 255, 255, + 0, 0 +}; diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/luminanceps.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/luminanceps.h new file mode 100644 index 00000000000..3f39d13b64f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/luminanceps.h @@ -0,0 +1,80 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// fxc /E luminanceps /T ps_2_0 /Fh compiled/luminanceps.h Blit.ps +// +// +// Parameters: +// +// float4 mode; +// sampler2D tex; +// +// +// Registers: +// +// Name Reg Size +// ------------ ----- ---- +// mode c0 1 +// tex s0 1 +// + + ps_2_0 + dcl t0.xy + dcl_2d s0 + texld r0, t0, s0 + mad r1.w, r0.w, c0.x, c0.y + mov r1.xyz, r0.x + mov oC0, r1 + +// approximately 4 instruction slots used (1 texture, 3 arithmetic) +#endif + +const BYTE g_ps20_luminanceps[] = +{ + 0, 2, 255, 255, 254, 255, + 43, 0, 67, 84, 65, 66, + 28, 0, 0, 0, 119, 0, + 0, 0, 0, 2, 255, 255, + 2, 0, 0, 0, 28, 0, + 0, 0, 0, 1, 0, 0, + 112, 0, 0, 0, 68, 0, + 0, 0, 2, 0, 0, 0, + 1, 0, 0, 0, 76, 0, + 0, 0, 0, 0, 0, 0, + 92, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 96, 0, 0, 0, 0, 0, + 0, 0, 109, 111, 100, 101, + 0, 171, 171, 171, 1, 0, + 3, 0, 1, 0, 4, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 116, 101, 120, 0, + 4, 0, 12, 0, 1, 0, + 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 112, 115, + 95, 50, 95, 48, 0, 77, + 105, 99, 114, 111, 115, 111, + 102, 116, 32, 40, 82, 41, + 32, 72, 76, 83, 76, 32, + 83, 104, 97, 100, 101, 114, + 32, 67, 111, 109, 112, 105, + 108, 101, 114, 32, 57, 46, + 50, 57, 46, 57, 53, 50, + 46, 51, 49, 49, 49, 0, + 31, 0, 0, 2, 0, 0, + 0, 128, 0, 0, 3, 176, + 31, 0, 0, 2, 0, 0, + 0, 144, 0, 8, 15, 160, + 66, 0, 0, 3, 0, 0, + 15, 128, 0, 0, 228, 176, + 0, 8, 228, 160, 4, 0, + 0, 4, 1, 0, 8, 128, + 0, 0, 255, 128, 0, 0, + 0, 160, 0, 0, 85, 160, + 1, 0, 0, 2, 1, 0, + 7, 128, 0, 0, 0, 128, + 1, 0, 0, 2, 0, 8, + 15, 128, 1, 0, 228, 128, + 255, 255, 0, 0 +}; diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthrough11vs.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthrough11vs.h new file mode 100644 index 00000000000..2b7415ce751 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthrough11vs.h @@ -0,0 +1,137 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// +// fxc /E VS_Passthrough /T vs_4_0 /Fh compiled/passthrough11vs.h +// Passthrough11.hlsl +// +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// POSITION 0 xy 0 NONE float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_POSITION 0 xyzw 0 POS float xyzw +// TEXCOORD 0 xy 1 NONE float xy +// +vs_4_0 +dcl_input v0.xy +dcl_input v1.xy +dcl_output_siv o0.xyzw, position +dcl_output o1.xy +mov o0.xy, v0.xyxx +mov o0.zw, l(0,0,0,1.000000) +mov o1.xy, v1.xyxx +ret +// Approximately 4 instruction slots used +#endif + +const BYTE g_VS_Passthrough[] = +{ + 68, 88, 66, 67, 117, 74, + 34, 79, 174, 226, 170, 74, + 110, 16, 237, 14, 67, 185, + 119, 167, 1, 0, 0, 0, + 68, 2, 0, 0, 5, 0, + 0, 0, 52, 0, 0, 0, + 140, 0, 0, 0, 224, 0, + 0, 0, 56, 1, 0, 0, + 200, 1, 0, 0, 82, 68, + 69, 70, 80, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 4, + 254, 255, 0, 1, 0, 0, + 28, 0, 0, 0, 77, 105, + 99, 114, 111, 115, 111, 102, + 116, 32, 40, 82, 41, 32, + 72, 76, 83, 76, 32, 83, + 104, 97, 100, 101, 114, 32, + 67, 111, 109, 112, 105, 108, + 101, 114, 32, 57, 46, 50, + 57, 46, 57, 53, 50, 46, + 51, 49, 49, 49, 0, 171, + 171, 171, 73, 83, 71, 78, + 76, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 0, 0, + 65, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 3, 0, 0, + 80, 79, 83, 73, 84, 73, + 79, 78, 0, 84, 69, 88, + 67, 79, 79, 82, 68, 0, + 171, 171, 79, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 12, 0, 0, + 83, 86, 95, 80, 79, 83, + 73, 84, 73, 79, 78, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 83, 72, 68, 82, 136, 0, + 0, 0, 64, 0, 1, 0, + 34, 0, 0, 0, 95, 0, + 0, 3, 50, 16, 16, 0, + 0, 0, 0, 0, 95, 0, + 0, 3, 50, 16, 16, 0, + 1, 0, 0, 0, 103, 0, + 0, 4, 242, 32, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 50, 32, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 50, 32, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 8, 194, 32, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 128, 63, + 54, 0, 0, 5, 50, 32, + 16, 0, 1, 0, 0, 0, + 70, 16, 16, 0, 1, 0, + 0, 0, 62, 0, 0, 1, + 83, 84, 65, 84, 116, 0, + 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 +}; diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughlum11ps.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughlum11ps.h new file mode 100644 index 00000000000..99e4ec47dc2 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughlum11ps.h @@ -0,0 +1,155 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// +// fxc /E PS_PassthroughLum /T ps_4_0 /Fh compiled/passthroughlum11ps.h +// Passthrough11.hlsl +// +// +// Resource Bindings: +// +// Name Type Format Dim Slot Elements +// ------------------------------ ---------- ------- ----------- ---- -------- +// Sampler sampler NA NA 0 1 +// Texture texture float4 2d 0 1 +// +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_POSITION 0 xyzw 0 POS float +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// +ps_4_0 +dcl_sampler s0, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 1 +sample r0.xyzw, v1.xyxx, t0.xyzw, s0 +mov o0.xyz, r0.xxxx +mov o0.w, l(1.000000) +ret +// Approximately 4 instruction slots used +#endif + +const BYTE g_PS_PassthroughLum[] = +{ + 68, 88, 66, 67, 97, 41, + 37, 154, 0, 174, 137, 157, + 76, 219, 230, 26, 227, 174, + 187, 66, 1, 0, 0, 0, + 128, 2, 0, 0, 5, 0, + 0, 0, 52, 0, 0, 0, + 220, 0, 0, 0, 52, 1, + 0, 0, 104, 1, 0, 0, + 4, 2, 0, 0, 82, 68, + 69, 70, 160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 28, 0, 0, 0, 0, 4, + 255, 255, 0, 1, 0, 0, + 108, 0, 0, 0, 92, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0, + 100, 0, 0, 0, 2, 0, + 0, 0, 5, 0, 0, 0, + 4, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 1, 0, 0, 0, 13, 0, + 0, 0, 83, 97, 109, 112, + 108, 101, 114, 0, 84, 101, + 120, 116, 117, 114, 101, 0, + 77, 105, 99, 114, 111, 115, + 111, 102, 116, 32, 40, 82, + 41, 32, 72, 76, 83, 76, + 32, 83, 104, 97, 100, 101, + 114, 32, 67, 111, 109, 112, + 105, 108, 101, 114, 32, 57, + 46, 50, 57, 46, 57, 53, + 50, 46, 51, 49, 49, 49, + 0, 171, 171, 171, 73, 83, + 71, 78, 80, 0, 0, 0, + 2, 0, 0, 0, 8, 0, + 0, 0, 56, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 0, 68, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 3, 3, + 0, 0, 83, 86, 95, 80, + 79, 83, 73, 84, 73, 79, + 78, 0, 84, 69, 88, 67, + 79, 79, 82, 68, 0, 171, + 171, 171, 79, 83, 71, 78, + 44, 0, 0, 0, 1, 0, + 0, 0, 8, 0, 0, 0, + 32, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 83, 86, 95, 84, 65, 82, + 71, 69, 84, 0, 171, 171, + 83, 72, 68, 82, 148, 0, + 0, 0, 64, 0, 0, 0, + 37, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 98, 16, 0, 3, + 50, 16, 16, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 242, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 1, 0, 0, 0, 69, 0, + 0, 9, 242, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 1, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 114, 32, 16, 0, + 0, 0, 0, 0, 6, 0, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 5, 130, 32, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 62, 0, 0, 1, + 83, 84, 65, 84, 116, 0, + 0, 0, 4, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 +}; diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughlumalpha11ps.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughlumalpha11ps.h new file mode 100644 index 00000000000..4110999e700 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughlumalpha11ps.h @@ -0,0 +1,151 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// +// fxc /E PS_PassthroughLumAlpha /T ps_4_0 /Fh +// compiled/passthroughlumalpha11ps.h Passthrough11.hlsl +// +// +// Resource Bindings: +// +// Name Type Format Dim Slot Elements +// ------------------------------ ---------- ------- ----------- ---- -------- +// Sampler sampler NA NA 0 1 +// Texture texture float4 2d 0 1 +// +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_POSITION 0 xyzw 0 POS float +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// +ps_4_0 +dcl_sampler s0, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 1 +sample r0.xyzw, v1.xyxx, t0.xyzw, s0 +mov o0.xyzw, r0.xxxw +ret +// Approximately 3 instruction slots used +#endif + +const BYTE g_PS_PassthroughLumAlpha[] = +{ + 68, 88, 66, 67, 197, 72, + 251, 236, 53, 107, 182, 146, + 196, 219, 130, 187, 140, 159, + 211, 123, 1, 0, 0, 0, + 108, 2, 0, 0, 5, 0, + 0, 0, 52, 0, 0, 0, + 220, 0, 0, 0, 52, 1, + 0, 0, 104, 1, 0, 0, + 240, 1, 0, 0, 82, 68, + 69, 70, 160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 28, 0, 0, 0, 0, 4, + 255, 255, 0, 1, 0, 0, + 108, 0, 0, 0, 92, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0, + 100, 0, 0, 0, 2, 0, + 0, 0, 5, 0, 0, 0, + 4, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 1, 0, 0, 0, 13, 0, + 0, 0, 83, 97, 109, 112, + 108, 101, 114, 0, 84, 101, + 120, 116, 117, 114, 101, 0, + 77, 105, 99, 114, 111, 115, + 111, 102, 116, 32, 40, 82, + 41, 32, 72, 76, 83, 76, + 32, 83, 104, 97, 100, 101, + 114, 32, 67, 111, 109, 112, + 105, 108, 101, 114, 32, 57, + 46, 50, 57, 46, 57, 53, + 50, 46, 51, 49, 49, 49, + 0, 171, 171, 171, 73, 83, + 71, 78, 80, 0, 0, 0, + 2, 0, 0, 0, 8, 0, + 0, 0, 56, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 0, 68, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 3, 3, + 0, 0, 83, 86, 95, 80, + 79, 83, 73, 84, 73, 79, + 78, 0, 84, 69, 88, 67, + 79, 79, 82, 68, 0, 171, + 171, 171, 79, 83, 71, 78, + 44, 0, 0, 0, 1, 0, + 0, 0, 8, 0, 0, 0, + 32, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 83, 86, 95, 84, 65, 82, + 71, 69, 84, 0, 171, 171, + 83, 72, 68, 82, 128, 0, + 0, 0, 64, 0, 0, 0, + 32, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 98, 16, 0, 3, + 50, 16, 16, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 242, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 1, 0, 0, 0, 69, 0, + 0, 9, 242, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 1, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 242, 32, 16, 0, + 0, 0, 0, 0, 6, 12, + 16, 0, 0, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 116, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0 +}; diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughps.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughps.h new file mode 100644 index 00000000000..d6f236a9daf --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughps.h @@ -0,0 +1,63 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// fxc /E passthroughps /T ps_2_0 /Fh compiled/passthroughps.h Blit.ps +// +// +// Parameters: +// +// sampler2D tex; +// +// +// Registers: +// +// Name Reg Size +// ------------ ----- ---- +// tex s0 1 +// + + ps_2_0 + dcl t0.xy + dcl_2d s0 + texld r0, t0, s0 + mov oC0, r0 + +// approximately 2 instruction slots used (1 texture, 1 arithmetic) +#endif + +const BYTE g_ps20_passthroughps[] = +{ + 0, 2, 255, 255, 254, 255, + 32, 0, 67, 84, 65, 66, + 28, 0, 0, 0, 75, 0, + 0, 0, 0, 2, 255, 255, + 1, 0, 0, 0, 28, 0, + 0, 0, 0, 1, 0, 0, + 68, 0, 0, 0, 48, 0, + 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 52, 0, + 0, 0, 0, 0, 0, 0, + 116, 101, 120, 0, 4, 0, + 12, 0, 1, 0, 1, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 112, 115, 95, 50, + 95, 48, 0, 77, 105, 99, + 114, 111, 115, 111, 102, 116, + 32, 40, 82, 41, 32, 72, + 76, 83, 76, 32, 83, 104, + 97, 100, 101, 114, 32, 67, + 111, 109, 112, 105, 108, 101, + 114, 32, 57, 46, 50, 57, + 46, 57, 53, 50, 46, 51, + 49, 49, 49, 0, 31, 0, + 0, 2, 0, 0, 0, 128, + 0, 0, 3, 176, 31, 0, + 0, 2, 0, 0, 0, 144, + 0, 8, 15, 160, 66, 0, + 0, 3, 0, 0, 15, 128, + 0, 0, 228, 176, 0, 8, + 228, 160, 1, 0, 0, 2, + 0, 8, 15, 128, 0, 0, + 228, 128, 255, 255, 0, 0 +}; diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughrgb11ps.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughrgb11ps.h new file mode 100644 index 00000000000..a45b0c9280f --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughrgb11ps.h @@ -0,0 +1,155 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// +// fxc /E PS_PassthroughRGB /T ps_4_0 /Fh compiled/passthroughrgb11ps.h +// Passthrough11.hlsl +// +// +// Resource Bindings: +// +// Name Type Format Dim Slot Elements +// ------------------------------ ---------- ------- ----------- ---- -------- +// Sampler sampler NA NA 0 1 +// Texture texture float4 2d 0 1 +// +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_POSITION 0 xyzw 0 POS float +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// +ps_4_0 +dcl_sampler s0, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 1 +sample r0.xyzw, v1.xyxx, t0.xyzw, s0 +mov o0.xyz, r0.xyzx +mov o0.w, l(1.000000) +ret +// Approximately 4 instruction slots used +#endif + +const BYTE g_PS_PassthroughRGB[] = +{ + 68, 88, 66, 67, 253, 45, + 13, 34, 125, 194, 95, 149, + 1, 95, 194, 252, 118, 228, + 178, 200, 1, 0, 0, 0, + 128, 2, 0, 0, 5, 0, + 0, 0, 52, 0, 0, 0, + 220, 0, 0, 0, 52, 1, + 0, 0, 104, 1, 0, 0, + 4, 2, 0, 0, 82, 68, + 69, 70, 160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 28, 0, 0, 0, 0, 4, + 255, 255, 0, 1, 0, 0, + 108, 0, 0, 0, 92, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0, + 100, 0, 0, 0, 2, 0, + 0, 0, 5, 0, 0, 0, + 4, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 1, 0, 0, 0, 13, 0, + 0, 0, 83, 97, 109, 112, + 108, 101, 114, 0, 84, 101, + 120, 116, 117, 114, 101, 0, + 77, 105, 99, 114, 111, 115, + 111, 102, 116, 32, 40, 82, + 41, 32, 72, 76, 83, 76, + 32, 83, 104, 97, 100, 101, + 114, 32, 67, 111, 109, 112, + 105, 108, 101, 114, 32, 57, + 46, 50, 57, 46, 57, 53, + 50, 46, 51, 49, 49, 49, + 0, 171, 171, 171, 73, 83, + 71, 78, 80, 0, 0, 0, + 2, 0, 0, 0, 8, 0, + 0, 0, 56, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 0, 68, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 3, 3, + 0, 0, 83, 86, 95, 80, + 79, 83, 73, 84, 73, 79, + 78, 0, 84, 69, 88, 67, + 79, 79, 82, 68, 0, 171, + 171, 171, 79, 83, 71, 78, + 44, 0, 0, 0, 1, 0, + 0, 0, 8, 0, 0, 0, + 32, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 83, 86, 95, 84, 65, 82, + 71, 69, 84, 0, 171, 171, + 83, 72, 68, 82, 148, 0, + 0, 0, 64, 0, 0, 0, + 37, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 98, 16, 0, 3, + 50, 16, 16, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 242, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 1, 0, 0, 0, 69, 0, + 0, 9, 242, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 1, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 114, 32, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 5, 130, 32, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 62, 0, 0, 1, + 83, 84, 65, 84, 116, 0, + 0, 0, 4, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 +}; diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughrgba11ps.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughrgba11ps.h new file mode 100644 index 00000000000..d5b2bf712f7 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughrgba11ps.h @@ -0,0 +1,144 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// +// fxc /E PS_PassthroughRGBA /T ps_4_0 /Fh compiled/passthroughrgba11ps.h +// Passthrough11.hlsl +// +// +// Resource Bindings: +// +// Name Type Format Dim Slot Elements +// ------------------------------ ---------- ------- ----------- ---- -------- +// Sampler sampler NA NA 0 1 +// Texture texture float4 2d 0 1 +// +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_POSITION 0 xyzw 0 POS float +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// +ps_4_0 +dcl_sampler s0, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +sample o0.xyzw, v1.xyxx, t0.xyzw, s0 +ret +// Approximately 2 instruction slots used +#endif + +const BYTE g_PS_PassthroughRGBA[] = +{ + 68, 88, 66, 67, 152, 86, + 225, 107, 155, 83, 216, 13, + 154, 212, 144, 5, 82, 74, + 90, 98, 1, 0, 0, 0, + 80, 2, 0, 0, 5, 0, + 0, 0, 52, 0, 0, 0, + 220, 0, 0, 0, 52, 1, + 0, 0, 104, 1, 0, 0, + 212, 1, 0, 0, 82, 68, + 69, 70, 160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 28, 0, 0, 0, 0, 4, + 255, 255, 0, 1, 0, 0, + 108, 0, 0, 0, 92, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0, + 100, 0, 0, 0, 2, 0, + 0, 0, 5, 0, 0, 0, + 4, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 1, 0, 0, 0, 13, 0, + 0, 0, 83, 97, 109, 112, + 108, 101, 114, 0, 84, 101, + 120, 116, 117, 114, 101, 0, + 77, 105, 99, 114, 111, 115, + 111, 102, 116, 32, 40, 82, + 41, 32, 72, 76, 83, 76, + 32, 83, 104, 97, 100, 101, + 114, 32, 67, 111, 109, 112, + 105, 108, 101, 114, 32, 57, + 46, 50, 57, 46, 57, 53, + 50, 46, 51, 49, 49, 49, + 0, 171, 171, 171, 73, 83, + 71, 78, 80, 0, 0, 0, + 2, 0, 0, 0, 8, 0, + 0, 0, 56, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 0, 68, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 3, 3, + 0, 0, 83, 86, 95, 80, + 79, 83, 73, 84, 73, 79, + 78, 0, 84, 69, 88, 67, + 79, 79, 82, 68, 0, 171, + 171, 171, 79, 83, 71, 78, + 44, 0, 0, 0, 1, 0, + 0, 0, 8, 0, 0, 0, + 32, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 83, 86, 95, 84, 65, 82, + 71, 69, 84, 0, 171, 171, + 83, 72, 68, 82, 100, 0, + 0, 0, 64, 0, 0, 0, + 25, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 98, 16, 0, 3, + 50, 16, 16, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 242, 32, 16, 0, 0, 0, + 0, 0, 69, 0, 0, 9, + 242, 32, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 62, 0, 0, 1, + 83, 84, 65, 84, 116, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 +}; diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/standardvs.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/standardvs.h new file mode 100644 index 00000000000..2ff4c4b7091 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/standardvs.h @@ -0,0 +1,69 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// fxc /E standardvs /T vs_2_0 /Fh compiled/standardvs.h Blit.vs +// +// +// Parameters: +// +// float4 halfPixelSize; +// +// +// Registers: +// +// Name Reg Size +// ------------- ----- ---- +// halfPixelSize c0 1 +// + + vs_2_0 + def c1, 0.5, -0.5, 1, 0 + dcl_position v0 + add oPos, v0, c0 + mad oT0, v0, c1.xyzz, c1.xxww + +// approximately 2 instruction slots used +#endif + +const BYTE g_vs20_standardvs[] = +{ + 0, 2, 254, 255, 254, 255, + 35, 0, 67, 84, 65, 66, + 28, 0, 0, 0, 87, 0, + 0, 0, 0, 2, 254, 255, + 1, 0, 0, 0, 28, 0, + 0, 0, 0, 1, 0, 0, + 80, 0, 0, 0, 48, 0, + 0, 0, 2, 0, 0, 0, + 1, 0, 0, 0, 64, 0, + 0, 0, 0, 0, 0, 0, + 104, 97, 108, 102, 80, 105, + 120, 101, 108, 83, 105, 122, + 101, 0, 171, 171, 1, 0, + 3, 0, 1, 0, 4, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 118, 115, 95, 50, + 95, 48, 0, 77, 105, 99, + 114, 111, 115, 111, 102, 116, + 32, 40, 82, 41, 32, 72, + 76, 83, 76, 32, 83, 104, + 97, 100, 101, 114, 32, 67, + 111, 109, 112, 105, 108, 101, + 114, 32, 57, 46, 50, 57, + 46, 57, 53, 50, 46, 51, + 49, 49, 49, 0, 81, 0, + 0, 5, 1, 0, 15, 160, + 0, 0, 0, 63, 0, 0, + 0, 191, 0, 0, 128, 63, + 0, 0, 0, 0, 31, 0, + 0, 2, 0, 0, 0, 128, + 0, 0, 15, 144, 2, 0, + 0, 3, 0, 0, 15, 192, + 0, 0, 228, 144, 0, 0, + 228, 160, 4, 0, 0, 4, + 0, 0, 15, 224, 0, 0, + 228, 144, 1, 0, 164, 160, + 1, 0, 240, 160, 255, 255, + 0, 0 +}; diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/generate_shaders.bat b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/generate_shaders.bat new file mode 100644 index 00000000000..cf50070a53b --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/generate_shaders.bat @@ -0,0 +1,24 @@ +@ECHO OFF +REM +REM Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. +REM Use of this source code is governed by a BSD-style license that can be +REM found in the LICENSE file. +REM + +PATH %PATH%;%DXSDK_DIR%\Utilities\bin\x86 + +fxc /E standardvs /T vs_2_0 /Fh compiled/standardvs.h Blit.vs +fxc /E flipyvs /T vs_2_0 /Fh compiled/flipyvs.h Blit.vs +fxc /E passthroughps /T ps_2_0 /Fh compiled/passthroughps.h Blit.ps +fxc /E luminanceps /T ps_2_0 /Fh compiled/luminanceps.h Blit.ps +fxc /E componentmaskps /T ps_2_0 /Fh compiled/componentmaskps.h Blit.ps + +fxc /E VS_Passthrough /T vs_4_0 /Fh compiled/passthrough11vs.h Passthrough11.hlsl +fxc /E PS_PassthroughRGBA /T ps_4_0 /Fh compiled/passthroughrgba11ps.h Passthrough11.hlsl +fxc /E PS_PassthroughRGB /T ps_4_0 /Fh compiled/passthroughrgb11ps.h Passthrough11.hlsl +fxc /E PS_PassthroughLum /T ps_4_0 /Fh compiled/passthroughlum11ps.h Passthrough11.hlsl +fxc /E PS_PassthroughLumAlpha /T ps_4_0 /Fh compiled/passthroughlumalpha11ps.h Passthrough11.hlsl + +fxc /E VS_Clear /T vs_4_0 /Fh compiled/clear11vs.h Clear11.hlsl +fxc /E PS_ClearSingle /T ps_4_0 /Fh compiled/clearsingle11ps.h Clear11.hlsl +fxc /E PS_ClearMultiple /T ps_4_0 /Fh compiled/clearmultiple11ps.h Clear11.hlsl diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/vertexconversion.h b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/vertexconversion.h new file mode 100644 index 00000000000..590b9d48a38 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/vertexconversion.h @@ -0,0 +1,203 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// vertexconversion.h: A library of vertex conversion classes that can be used to build +// the FormatConverter objects used by the buffer conversion system. + +#ifndef LIBGLESV2_VERTEXCONVERSION_H_ +#define LIBGLESV2_VERTEXCONVERSION_H_ + +namespace rx +{ + +// Conversion types: +// static const bool identity: true if this is an identity transform, false otherwise +// static U convert(T): convert a single element from the input type to the output type +// typedef ... OutputType: the type produced by this conversion + +template +struct Identity +{ + static const bool identity = true; + + typedef T OutputType; + + static T convert(T x) + { + return x; + } +}; + +template +struct Cast +{ + static const bool identity = false; + + typedef ToT OutputType; + + static ToT convert(FromT x) + { + return static_cast(x); + } +}; + +template +struct Cast +{ + static const bool identity = true; + + typedef T OutputType; + + static T convert(T x) + { + return static_cast(x); + } +}; + +template +struct Normalize +{ + static const bool identity = false; + + typedef float OutputType; + + static float convert(T x) + { + typedef std::numeric_limits NL; + float f = static_cast(x); + + if (NL::is_signed) + { + // const float => VC2008 computes it at compile time + // static const float => VC2008 computes it the first time we get here, stores it to memory with static guard and all that. + const float divisor = 1.0f/(2*static_cast(NL::max())+1); + return (2*f+1)*divisor; + } + else + { + return f/NL::max(); + } + } +}; + +template +struct FixedToFloat +{ + static const bool identity = false; + + typedef float OutputType; + + static float convert(FromType x) + { + const float divisor = 1.0f / static_cast(static_cast(1) << ScaleBits); + return static_cast(x) * divisor; + } +}; + +// Widen types: +// static const unsigned int initialWidth: number of components before conversion +// static const unsigned int finalWidth: number of components after conversion + +// Float is supported at any size. +template +struct NoWiden +{ + static const std::size_t initialWidth = N; + static const std::size_t finalWidth = N; +}; + +// SHORT, norm-SHORT, norm-UNSIGNED_SHORT are supported but only with 2 or 4 components +template +struct WidenToEven +{ + static const std::size_t initialWidth = N; + static const std::size_t finalWidth = N+(N&1); +}; + +template +struct WidenToFour +{ + static const std::size_t initialWidth = N; + static const std::size_t finalWidth = 4; +}; + +// Most types have 0 and 1 that are just that. +template +struct SimpleDefaultValues +{ + static T zero() { return static_cast(0); } + static T one() { return static_cast(1); } +}; + +// But normalised types only store [0,1] or [-1,1] so 1.0 is represented by the max value. +template +struct NormalizedDefaultValues +{ + static T zero() { return static_cast(0); } + static T one() { return std::numeric_limits::max(); } +}; + +// Converter: +// static const bool identity: true if this is an identity transform (with no widening) +// static const std::size_t finalSize: number of bytes per output vertex +// static void convertArray(const void *in, std::size_t stride, std::size_t n, void *out): convert an array of vertices. Input may be strided, but output will be unstrided. + +template > +struct VertexDataConverter +{ + typedef typename Converter::OutputType OutputType; + typedef InT InputType; + + static const bool identity = (WidenRule::initialWidth == WidenRule::finalWidth) && Converter::identity; + static const std::size_t finalSize = WidenRule::finalWidth * sizeof(OutputType); + + static void convertArray(const InputType *in, std::size_t stride, std::size_t n, OutputType *out) + { + for (std::size_t i = 0; i < n; i++) + { + const InputType *ein = pointerAddBytes(in, i * stride); + + copyComponent(out, ein, 0, static_cast(DefaultValueRule::zero())); + copyComponent(out, ein, 1, static_cast(DefaultValueRule::zero())); + copyComponent(out, ein, 2, static_cast(DefaultValueRule::zero())); + copyComponent(out, ein, 3, static_cast(DefaultValueRule::one())); + + out += WidenRule::finalWidth; + } + } + + static void convertArray(const void *in, std::size_t stride, std::size_t n, void *out) + { + return convertArray(static_cast(in), stride, n, static_cast(out)); + } + + private: + // Advance the given pointer by a number of bytes (not pointed-to elements). + template + static T *pointerAddBytes(T *basePtr, std::size_t numBytes) + { + return reinterpret_cast(reinterpret_cast(basePtr) + numBytes); + } + + static void copyComponent(OutputType *out, const InputType *in, std::size_t elementindex, OutputType defaultvalue) + { + if (WidenRule::finalWidth > elementindex) + { + if (WidenRule::initialWidth > elementindex) + { + out[elementindex] = Converter::convert(in[elementindex]); + } + else + { + out[elementindex] = defaultvalue; + } + } + } +}; + +} + +#endif // LIBGLESV2_VERTEXCONVERSION_H_ diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/resource.h b/Source/ThirdParty/ANGLE/src/libGLESv2/resource.h new file mode 100644 index 00000000000..39adaad0dd6 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/resource.h @@ -0,0 +1,14 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by libGLESv2.rc + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/utilities.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/utilities.cpp new file mode 100644 index 00000000000..9809b9d8e82 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/utilities.cpp @@ -0,0 +1,746 @@ +#include "precompiled.h" +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// utilities.cpp: Conversion functions and other utility routines. + +#include "libGLESv2/utilities.h" +#include "libGLESv2/mathutil.h" + +namespace gl +{ + +int UniformComponentCount(GLenum type) +{ + switch (type) + { + case GL_BOOL: + case GL_FLOAT: + case GL_INT: + case GL_SAMPLER_2D: + case GL_SAMPLER_CUBE: + return 1; + case GL_BOOL_VEC2: + case GL_FLOAT_VEC2: + case GL_INT_VEC2: + return 2; + case GL_INT_VEC3: + case GL_FLOAT_VEC3: + case GL_BOOL_VEC3: + return 3; + case GL_BOOL_VEC4: + case GL_FLOAT_VEC4: + case GL_INT_VEC4: + case GL_FLOAT_MAT2: + return 4; + case GL_FLOAT_MAT3: + return 9; + case GL_FLOAT_MAT4: + return 16; + default: + UNREACHABLE(); + } + + return 0; +} + +GLenum UniformComponentType(GLenum type) +{ + switch(type) + { + case GL_BOOL: + case GL_BOOL_VEC2: + case GL_BOOL_VEC3: + case GL_BOOL_VEC4: + return GL_BOOL; + case GL_FLOAT: + case GL_FLOAT_VEC2: + case GL_FLOAT_VEC3: + case GL_FLOAT_VEC4: + case GL_FLOAT_MAT2: + case GL_FLOAT_MAT3: + case GL_FLOAT_MAT4: + return GL_FLOAT; + case GL_INT: + case GL_SAMPLER_2D: + case GL_SAMPLER_CUBE: + case GL_INT_VEC2: + case GL_INT_VEC3: + case GL_INT_VEC4: + return GL_INT; + default: + UNREACHABLE(); + } + + return GL_NONE; +} + +size_t UniformComponentSize(GLenum type) +{ + switch(type) + { + case GL_BOOL: return sizeof(GLint); + case GL_FLOAT: return sizeof(GLfloat); + case GL_INT: return sizeof(GLint); + default: UNREACHABLE(); + } + + return 0; +} + +size_t UniformInternalSize(GLenum type) +{ + // Expanded to 4-element vectors + return UniformComponentSize(UniformComponentType(type)) * VariableRowCount(type) * 4; +} + +size_t UniformExternalSize(GLenum type) +{ + return UniformComponentSize(UniformComponentType(type)) * UniformComponentCount(type); +} + +int VariableRowCount(GLenum type) +{ + switch (type) + { + case GL_NONE: + return 0; + case GL_BOOL: + case GL_FLOAT: + case GL_INT: + case GL_BOOL_VEC2: + case GL_FLOAT_VEC2: + case GL_INT_VEC2: + case GL_INT_VEC3: + case GL_FLOAT_VEC3: + case GL_BOOL_VEC3: + case GL_BOOL_VEC4: + case GL_FLOAT_VEC4: + case GL_INT_VEC4: + case GL_SAMPLER_2D: + case GL_SAMPLER_CUBE: + return 1; + case GL_FLOAT_MAT2: + return 2; + case GL_FLOAT_MAT3: + return 3; + case GL_FLOAT_MAT4: + return 4; + default: + UNREACHABLE(); + } + + return 0; +} + +int VariableColumnCount(GLenum type) +{ + switch (type) + { + case GL_NONE: + return 0; + case GL_BOOL: + case GL_FLOAT: + case GL_INT: + case GL_SAMPLER_2D: + case GL_SAMPLER_CUBE: + return 1; + case GL_BOOL_VEC2: + case GL_FLOAT_VEC2: + case GL_INT_VEC2: + case GL_FLOAT_MAT2: + return 2; + case GL_INT_VEC3: + case GL_FLOAT_VEC3: + case GL_BOOL_VEC3: + case GL_FLOAT_MAT3: + return 3; + case GL_BOOL_VEC4: + case GL_FLOAT_VEC4: + case GL_INT_VEC4: + case GL_FLOAT_MAT4: + return 4; + default: + UNREACHABLE(); + } + + return 0; +} + +int AllocateFirstFreeBits(unsigned int *bits, unsigned int allocationSize, unsigned int bitsSize) +{ + ASSERT(allocationSize <= bitsSize); + + unsigned int mask = std::numeric_limits::max() >> (std::numeric_limits::digits - allocationSize); + + for (unsigned int i = 0; i < bitsSize - allocationSize + 1; i++) + { + if ((*bits & mask) == 0) + { + *bits |= mask; + return i; + } + + mask <<= 1; + } + + return -1; +} + +GLsizei ComputePitch(GLsizei width, GLint internalformat, GLint alignment) +{ + ASSERT(alignment > 0 && isPow2(alignment)); + + GLsizei rawPitch = ComputePixelSize(internalformat) * width; + return (rawPitch + alignment - 1) & ~(alignment - 1); +} + +GLsizei ComputeCompressedPitch(GLsizei width, GLenum internalformat) +{ + return ComputeCompressedSize(width, 1, internalformat); +} + +GLsizei ComputeCompressedSize(GLsizei width, GLsizei height, GLenum internalformat) +{ + switch (internalformat) + { + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + return 8 * ((width + 3) / 4) * ((height + 3) / 4); + case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: + case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: + return 16 * ((width + 3) / 4) * ((height + 3) / 4); + default: + return 0; + } +} + +bool IsCompressed(GLenum format) +{ + if(format == GL_COMPRESSED_RGB_S3TC_DXT1_EXT || + format == GL_COMPRESSED_RGBA_S3TC_DXT1_EXT || + format == GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE || + format == GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE) + { + return true; + } + else + { + return false; + } +} + +bool IsDepthTexture(GLenum format) +{ + if (format == GL_DEPTH_COMPONENT || + format == GL_DEPTH_STENCIL_OES || + format == GL_DEPTH_COMPONENT16 || + format == GL_DEPTH_COMPONENT32_OES || + format == GL_DEPTH24_STENCIL8_OES) + { + return true; + } + + return false; +} + +bool IsStencilTexture(GLenum format) +{ + if (format == GL_DEPTH_STENCIL_OES || + format == GL_DEPTH24_STENCIL8_OES) + { + return true; + } + + return false; +} + +void MakeValidSize(bool isImage, bool isCompressed, GLsizei *requestWidth, GLsizei *requestHeight, int *levelOffset) +{ + int upsampleCount = 0; + + if (isCompressed) + { + // Don't expand the size of full textures that are at least 4x4 + // already. + if (isImage || *requestWidth < 4 || *requestHeight < 4) + { + while (*requestWidth % 4 != 0 || *requestHeight % 4 != 0) + { + *requestWidth <<= 1; + *requestHeight <<= 1; + upsampleCount++; + } + } + } + *levelOffset = upsampleCount; +} + +// Returns the size, in bytes, of a single texel in an Image +int ComputePixelSize(GLint internalformat) +{ + switch (internalformat) + { + case GL_ALPHA8_EXT: return sizeof(unsigned char); + case GL_LUMINANCE8_EXT: return sizeof(unsigned char); + case GL_ALPHA32F_EXT: return sizeof(float); + case GL_LUMINANCE32F_EXT: return sizeof(float); + case GL_ALPHA16F_EXT: return sizeof(unsigned short); + case GL_LUMINANCE16F_EXT: return sizeof(unsigned short); + case GL_LUMINANCE8_ALPHA8_EXT: return sizeof(unsigned char) * 2; + case GL_LUMINANCE_ALPHA32F_EXT: return sizeof(float) * 2; + case GL_LUMINANCE_ALPHA16F_EXT: return sizeof(unsigned short) * 2; + case GL_RGB8_OES: return sizeof(unsigned char) * 3; + case GL_RGB565: return sizeof(unsigned short); + case GL_RGB32F_EXT: return sizeof(float) * 3; + case GL_RGB16F_EXT: return sizeof(unsigned short) * 3; + case GL_RGBA8_OES: return sizeof(unsigned char) * 4; + case GL_RGBA4: return sizeof(unsigned short); + case GL_RGB5_A1: return sizeof(unsigned short); + case GL_RGBA32F_EXT: return sizeof(float) * 4; + case GL_RGBA16F_EXT: return sizeof(unsigned short) * 4; + case GL_BGRA8_EXT: return sizeof(unsigned char) * 4; + case GL_BGRA4_ANGLEX: return sizeof(unsigned short); + case GL_BGR5_A1_ANGLEX: return sizeof(unsigned short); + default: UNREACHABLE(); + } + + return 0; +} + +bool IsCubemapTextureTarget(GLenum target) +{ + return (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X && target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z); +} + +bool IsInternalTextureTarget(GLenum target) +{ + return target == GL_TEXTURE_2D || IsCubemapTextureTarget(target); +} + +GLint ConvertSizedInternalFormat(GLenum format, GLenum type) +{ + switch (format) + { + case GL_ALPHA: + switch (type) + { + case GL_UNSIGNED_BYTE: return GL_ALPHA8_EXT; + case GL_FLOAT: return GL_ALPHA32F_EXT; + case GL_HALF_FLOAT_OES: return GL_ALPHA16F_EXT; + default: UNIMPLEMENTED(); + } + break; + case GL_LUMINANCE: + switch (type) + { + case GL_UNSIGNED_BYTE: return GL_LUMINANCE8_EXT; + case GL_FLOAT: return GL_LUMINANCE32F_EXT; + case GL_HALF_FLOAT_OES: return GL_LUMINANCE16F_EXT; + default: UNIMPLEMENTED(); + } + break; + case GL_LUMINANCE_ALPHA: + switch (type) + { + case GL_UNSIGNED_BYTE: return GL_LUMINANCE8_ALPHA8_EXT; + case GL_FLOAT: return GL_LUMINANCE_ALPHA32F_EXT; + case GL_HALF_FLOAT_OES: return GL_LUMINANCE_ALPHA16F_EXT; + default: UNIMPLEMENTED(); + } + break; + case GL_RGB: + switch (type) + { + case GL_UNSIGNED_BYTE: return GL_RGB8_OES; + case GL_UNSIGNED_SHORT_5_6_5: return GL_RGB565; + case GL_FLOAT: return GL_RGB32F_EXT; + case GL_HALF_FLOAT_OES: return GL_RGB16F_EXT; + default: UNIMPLEMENTED(); + } + break; + case GL_RGBA: + switch (type) + { + case GL_UNSIGNED_BYTE: return GL_RGBA8_OES; + case GL_UNSIGNED_SHORT_4_4_4_4: return GL_RGBA4; + case GL_UNSIGNED_SHORT_5_5_5_1: return GL_RGB5_A1; + case GL_FLOAT: return GL_RGBA32F_EXT; + case GL_HALF_FLOAT_OES: return GL_RGBA16F_EXT; + break; + default: UNIMPLEMENTED(); + } + break; + case GL_BGRA_EXT: + switch (type) + { + case GL_UNSIGNED_BYTE: return GL_BGRA8_EXT; + case GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT: return GL_BGRA4_ANGLEX; + case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT: return GL_BGR5_A1_ANGLEX; + default: UNIMPLEMENTED(); + } + break; + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: + case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: + return format; + case GL_DEPTH_COMPONENT: + switch (type) + { + case GL_UNSIGNED_SHORT: return GL_DEPTH_COMPONENT16; + case GL_UNSIGNED_INT: return GL_DEPTH_COMPONENT32_OES; + default: UNIMPLEMENTED(); + } + break; + case GL_DEPTH_STENCIL_OES: + switch (type) + { + case GL_UNSIGNED_INT_24_8_OES: return GL_DEPTH24_STENCIL8_OES; + default: UNIMPLEMENTED(); + } + break; + default: + UNIMPLEMENTED(); + } + + return GL_NONE; +} + +GLenum ExtractFormat(GLenum internalformat) +{ + switch (internalformat) + { + case GL_RGB565: return GL_RGB; + case GL_RGBA4: return GL_RGBA; + case GL_RGB5_A1: return GL_RGBA; + case GL_RGB8_OES: return GL_RGB; + case GL_RGBA8_OES: return GL_RGBA; + case GL_LUMINANCE8_ALPHA8_EXT: return GL_LUMINANCE_ALPHA; + case GL_LUMINANCE8_EXT: return GL_LUMINANCE; + case GL_ALPHA8_EXT: return GL_ALPHA; + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: return GL_COMPRESSED_RGB_S3TC_DXT1_EXT; + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: return GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; + case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: return GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE; + case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: return GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE; + case GL_RGBA32F_EXT: return GL_RGBA; + case GL_RGB32F_EXT: return GL_RGB; + case GL_ALPHA32F_EXT: return GL_ALPHA; + case GL_LUMINANCE32F_EXT: return GL_LUMINANCE; + case GL_LUMINANCE_ALPHA32F_EXT: return GL_LUMINANCE_ALPHA; + case GL_RGBA16F_EXT: return GL_RGBA; + case GL_RGB16F_EXT: return GL_RGB; + case GL_ALPHA16F_EXT: return GL_ALPHA; + case GL_LUMINANCE16F_EXT: return GL_LUMINANCE; + case GL_LUMINANCE_ALPHA16F_EXT: return GL_LUMINANCE_ALPHA; + case GL_BGRA8_EXT: return GL_BGRA_EXT; + case GL_DEPTH_COMPONENT16: return GL_DEPTH_COMPONENT; + case GL_DEPTH_COMPONENT32_OES: return GL_DEPTH_COMPONENT; + case GL_DEPTH24_STENCIL8_OES: return GL_DEPTH_STENCIL_OES; + default: return GL_NONE; // Unsupported + } +} + +GLenum ExtractType(GLenum internalformat) +{ + switch (internalformat) + { + case GL_RGB565: return GL_UNSIGNED_SHORT_5_6_5; + case GL_RGBA4: return GL_UNSIGNED_SHORT_4_4_4_4; + case GL_RGB5_A1: return GL_UNSIGNED_SHORT_5_5_5_1; + case GL_RGB8_OES: return GL_UNSIGNED_BYTE; + case GL_RGBA8_OES: return GL_UNSIGNED_BYTE; + case GL_LUMINANCE8_ALPHA8_EXT: return GL_UNSIGNED_BYTE; + case GL_LUMINANCE8_EXT: return GL_UNSIGNED_BYTE; + case GL_ALPHA8_EXT: return GL_UNSIGNED_BYTE; + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: return GL_UNSIGNED_BYTE; + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: return GL_UNSIGNED_BYTE; + case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: return GL_UNSIGNED_BYTE; + case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: return GL_UNSIGNED_BYTE; + case GL_RGBA32F_EXT: return GL_FLOAT; + case GL_RGB32F_EXT: return GL_FLOAT; + case GL_ALPHA32F_EXT: return GL_FLOAT; + case GL_LUMINANCE32F_EXT: return GL_FLOAT; + case GL_LUMINANCE_ALPHA32F_EXT: return GL_FLOAT; + case GL_RGBA16F_EXT: return GL_HALF_FLOAT_OES; + case GL_RGB16F_EXT: return GL_HALF_FLOAT_OES; + case GL_ALPHA16F_EXT: return GL_HALF_FLOAT_OES; + case GL_LUMINANCE16F_EXT: return GL_HALF_FLOAT_OES; + case GL_LUMINANCE_ALPHA16F_EXT: return GL_HALF_FLOAT_OES; + case GL_BGRA8_EXT: return GL_UNSIGNED_BYTE; + case GL_DEPTH_COMPONENT16: return GL_UNSIGNED_SHORT; + case GL_DEPTH_COMPONENT32_OES: return GL_UNSIGNED_INT; + case GL_DEPTH24_STENCIL8_OES: return GL_UNSIGNED_INT_24_8_OES; + default: return GL_NONE; // Unsupported + } +} + +bool IsColorRenderable(GLenum internalformat) +{ + switch (internalformat) + { + case GL_RGBA4: + case GL_RGB5_A1: + case GL_RGB565: + case GL_RGB8_OES: + case GL_RGBA8_OES: + return true; + case GL_DEPTH_COMPONENT16: + case GL_STENCIL_INDEX8: + case GL_DEPTH24_STENCIL8_OES: + return false; + case GL_BGRA8_EXT: + return true; + default: + UNIMPLEMENTED(); + } + + return false; +} + +bool IsDepthRenderable(GLenum internalformat) +{ + switch (internalformat) + { + case GL_DEPTH_COMPONENT16: + case GL_DEPTH24_STENCIL8_OES: + return true; + case GL_STENCIL_INDEX8: + case GL_RGBA4: + case GL_RGB5_A1: + case GL_RGB565: + case GL_RGB8_OES: + case GL_RGBA8_OES: + return false; + default: + UNIMPLEMENTED(); + } + + return false; +} + +bool IsStencilRenderable(GLenum internalformat) +{ + switch (internalformat) + { + case GL_STENCIL_INDEX8: + case GL_DEPTH24_STENCIL8_OES: + return true; + case GL_RGBA4: + case GL_RGB5_A1: + case GL_RGB565: + case GL_RGB8_OES: + case GL_RGBA8_OES: + case GL_DEPTH_COMPONENT16: + return false; + default: + UNIMPLEMENTED(); + } + + return false; +} + +bool IsFloat32Format(GLint internalformat) +{ + switch (internalformat) + { + case GL_RGBA32F_EXT: + case GL_RGB32F_EXT: + case GL_ALPHA32F_EXT: + case GL_LUMINANCE32F_EXT: + case GL_LUMINANCE_ALPHA32F_EXT: + return true; + default: + return false; + } +} + +bool IsFloat16Format(GLint internalformat) +{ + switch (internalformat) + { + case GL_RGBA16F_EXT: + case GL_RGB16F_EXT: + case GL_ALPHA16F_EXT: + case GL_LUMINANCE16F_EXT: + case GL_LUMINANCE_ALPHA16F_EXT: + return true; + default: + return false; + } +} + +unsigned int GetAlphaSize(GLenum colorFormat) +{ + switch (colorFormat) + { + case GL_RGBA16F_EXT: + return 16; + case GL_RGBA32F_EXT: + return 32; + case GL_RGBA4: + return 4; + case GL_RGBA8_OES: + case GL_BGRA8_EXT: + return 8; + case GL_RGB5_A1: + return 1; + case GL_RGB8_OES: + case GL_RGB565: + case GL_RGB32F_EXT: + case GL_RGB16F_EXT: + return 0; + default: + return 0; + } +} + +unsigned int GetRedSize(GLenum colorFormat) +{ + switch (colorFormat) + { + case GL_RGBA16F_EXT: + case GL_RGB16F_EXT: + return 16; + case GL_RGBA32F_EXT: + case GL_RGB32F_EXT: + return 32; + case GL_RGBA4: + return 4; + case GL_RGBA8_OES: + case GL_BGRA8_EXT: + case GL_RGB8_OES: + return 8; + case GL_RGB5_A1: + case GL_RGB565: + return 5; + default: + return 0; + } +} + +unsigned int GetGreenSize(GLenum colorFormat) +{ + switch (colorFormat) + { + case GL_RGBA16F_EXT: + case GL_RGB16F_EXT: + return 16; + case GL_RGBA32F_EXT: + case GL_RGB32F_EXT: + return 32; + case GL_RGBA4: + return 4; + case GL_RGBA8_OES: + case GL_BGRA8_EXT: + case GL_RGB8_OES: + return 8; + case GL_RGB5_A1: + return 5; + case GL_RGB565: + return 6; + default: + return 0; + } +} + +unsigned int GetBlueSize(GLenum colorFormat) +{ + switch (colorFormat) + { + case GL_RGBA16F_EXT: + case GL_RGB16F_EXT: + return 16; + case GL_RGBA32F_EXT: + case GL_RGB32F_EXT: + return 32; + case GL_RGBA4: + return 4; + case GL_RGBA8_OES: + case GL_BGRA8_EXT: + case GL_RGB8_OES: + return 8; + case GL_RGB5_A1: + case GL_RGB565: + return 5; + default: + return 0; + } +} + +unsigned int GetDepthSize(GLenum depthFormat) +{ + switch (depthFormat) + { + case GL_DEPTH_COMPONENT16: return 16; + case GL_DEPTH_COMPONENT32_OES: return 32; + case GL_DEPTH24_STENCIL8_OES: return 24; + default: return 0; + } +} + +unsigned int GetStencilSize(GLenum stencilFormat) +{ + switch (stencilFormat) + { + case GL_DEPTH24_STENCIL8_OES: return 8; + default: return 0; + } +} + +bool IsTriangleMode(GLenum drawMode) +{ + switch (drawMode) + { + case GL_TRIANGLES: + case GL_TRIANGLE_FAN: + case GL_TRIANGLE_STRIP: + return true; + case GL_POINTS: + case GL_LINES: + case GL_LINE_LOOP: + case GL_LINE_STRIP: + return false; + default: UNREACHABLE(); + } + + return false; +} + +} + +std::string getTempPath() +{ + char path[MAX_PATH]; + DWORD pathLen = GetTempPathA(sizeof(path) / sizeof(path[0]), path); + if (pathLen == 0) + { + UNREACHABLE(); + return std::string(); + } + + UINT unique = GetTempFileNameA(path, "sh", 0, path); + if (unique == 0) + { + UNREACHABLE(); + return std::string(); + } + + return path; +} + +void writeFile(const char* path, const void* content, size_t size) +{ + FILE* file = fopen(path, "w"); + if (!file) + { + UNREACHABLE(); + return; + } + + fwrite(content, sizeof(char), size, file); + fclose(file); +} diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/utilities.h b/Source/ThirdParty/ANGLE/src/libGLESv2/utilities.h new file mode 100644 index 00000000000..7a107670860 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/utilities.h @@ -0,0 +1,66 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// utilities.h: Conversion functions and other utility routines. + +#ifndef LIBGLESV2_UTILITIES_H +#define LIBGLESV2_UTILITIES_H + +#define GL_APICALL +#include +#include + +#include + +namespace gl +{ + +struct Color; + +int UniformComponentCount(GLenum type); +GLenum UniformComponentType(GLenum type); +size_t UniformInternalSize(GLenum type); +size_t UniformExternalSize(GLenum type); +int VariableRowCount(GLenum type); +int VariableColumnCount(GLenum type); + +int AllocateFirstFreeBits(unsigned int *bits, unsigned int allocationSize, unsigned int bitsSize); + +void MakeValidSize(bool isImage, bool isCompressed, GLsizei *requestWidth, GLsizei *requestHeight, int *levelOffset); +int ComputePixelSize(GLint internalformat); +GLsizei ComputePitch(GLsizei width, GLint internalformat, GLint alignment); +GLsizei ComputeCompressedPitch(GLsizei width, GLenum format); +GLsizei ComputeCompressedSize(GLsizei width, GLsizei height, GLenum format); +bool IsCompressed(GLenum format); +bool IsDepthTexture(GLenum format); +bool IsStencilTexture(GLenum format); +bool IsCubemapTextureTarget(GLenum target); +bool IsInternalTextureTarget(GLenum target); +GLint ConvertSizedInternalFormat(GLenum format, GLenum type); +GLenum ExtractFormat(GLenum internalformat); +GLenum ExtractType(GLenum internalformat); + +bool IsColorRenderable(GLenum internalformat); +bool IsDepthRenderable(GLenum internalformat); +bool IsStencilRenderable(GLenum internalformat); + +bool IsFloat32Format(GLint internalformat); +bool IsFloat16Format(GLint internalformat); + +GLuint GetAlphaSize(GLenum colorFormat); +GLuint GetRedSize(GLenum colorFormat); +GLuint GetGreenSize(GLenum colorFormat); +GLuint GetBlueSize(GLenum colorFormat); +GLuint GetDepthSize(GLenum depthFormat); +GLuint GetStencilSize(GLenum stencilFormat); +bool IsTriangleMode(GLenum drawMode); + +} + +std::string getTempPath(); +void writeFile(const char* path, const void* data, size_t size); + +#endif // LIBGLESV2_UTILITIES_H diff --git a/Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp b/Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp new file mode 100644 index 00000000000..288f5529ade --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2012 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "third_party/compiler/ArrayBoundsClamper.h" + +// The built-in 'clamp' instruction only accepts floats and returns a float. I +// iterated a few times with our driver team who examined the output from our +// compiler - they said the multiple casts generates more code than a single +// function call. An inline ternary operator might have been better, but since +// the index value might be an expression itself, we'd have to make temporary +// variables to avoid evaluating the expression multiple times. And making +// temporary variables was difficult because ANGLE would then need to make more +// brutal changes to the expression tree. + +const char* kIntClampBegin = "// BEGIN: Generated code for array bounds clamping\n\n"; +const char* kIntClampEnd = "// END: Generated code for array bounds clamping\n\n"; +const char* kIntClampDefinition = "int webgl_int_clamp(int value, int minValue, int maxValue) { return ((value < minValue) ? minValue : ((value > maxValue) ? maxValue : value)); }\n\n"; + +namespace { + +class ArrayBoundsClamperMarker : public TIntermTraverser { +public: + ArrayBoundsClamperMarker() + : mNeedsClamp(false) + { + } + + virtual bool visitBinary(Visit visit, TIntermBinary* node) + { + if (node->getOp() == EOpIndexIndirect) + { + TIntermTyped* left = node->getLeft(); + if (left->isArray() || left->isVector() || left->isMatrix()) + { + node->setAddIndexClamp(); + mNeedsClamp = true; + } + } + return true; + } + + bool GetNeedsClamp() { return mNeedsClamp; } + +private: + bool mNeedsClamp; +}; + +} // anonymous namespace + +ArrayBoundsClamper::ArrayBoundsClamper() + : mClampingStrategy(SH_CLAMP_WITH_CLAMP_INTRINSIC) + , mArrayBoundsClampDefinitionNeeded(false) +{ +} + +void ArrayBoundsClamper::SetClampingStrategy(ShArrayIndexClampingStrategy clampingStrategy) +{ + mClampingStrategy = clampingStrategy; +} + +void ArrayBoundsClamper::MarkIndirectArrayBoundsForClamping(TIntermNode* root) +{ + ASSERT(root); + + ArrayBoundsClamperMarker clamper; + root->traverse(&clamper); + if (clamper.GetNeedsClamp()) + { + SetArrayBoundsClampDefinitionNeeded(); + } +} + +void ArrayBoundsClamper::OutputClampingFunctionDefinition(TInfoSinkBase& out) const +{ + if (!mArrayBoundsClampDefinitionNeeded) + { + return; + } + if (mClampingStrategy != SH_CLAMP_WITH_USER_DEFINED_INT_CLAMP_FUNCTION) + { + return; + } + out << kIntClampBegin << kIntClampDefinition << kIntClampEnd; +} diff --git a/Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.h b/Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.h new file mode 100644 index 00000000000..0d4e1a374ca --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.h @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2012 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef THIRD_PARTY_COMPILER_ARRAY_BOUNDS_CLAMPER_H_ +#define THIRD_PARTY_COMPILER_ARRAY_BOUNDS_CLAMPER_H_ + +#include "GLSLANG/ShaderLang.h" + +#include "compiler/InfoSink.h" +#include "compiler/intermediate.h" + +class ArrayBoundsClamper { +public: + ArrayBoundsClamper(); + + // Must be set before compiling any shaders to ensure consistency + // between the translated shaders and any necessary prequel. + void SetClampingStrategy(ShArrayIndexClampingStrategy clampingStrategy); + + // Marks nodes in the tree that index arrays indirectly as + // requiring clamping. + void MarkIndirectArrayBoundsForClamping(TIntermNode* root); + + // If necessary, output array clamp function source into the shader source. + void OutputClampingFunctionDefinition(TInfoSinkBase& out) const; + + void Cleanup() + { + mArrayBoundsClampDefinitionNeeded = false; + } + +private: + bool GetArrayBoundsClampDefinitionNeeded() const { return mArrayBoundsClampDefinitionNeeded; } + void SetArrayBoundsClampDefinitionNeeded() { mArrayBoundsClampDefinitionNeeded = true; } + + ShArrayIndexClampingStrategy mClampingStrategy; + bool mArrayBoundsClampDefinitionNeeded; +}; + +#endif // THIRD_PARTY_COMPILER_ARRAY_BOUNDS_CLAMPER_H_ diff --git a/Source/ThirdParty/ANGLE/src/third_party/compiler/LICENSE b/Source/ThirdParty/ANGLE/src/third_party/compiler/LICENSE new file mode 100644 index 00000000000..c2cb2125e91 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/third_party/compiler/LICENSE @@ -0,0 +1,22 @@ +Copyright (C) 2012 Apple Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY APPLE, INC. ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE, INC. OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Source/ThirdParty/ANGLE/src/third_party/compiler/README.angle b/Source/ThirdParty/ANGLE/src/third_party/compiler/README.angle new file mode 100644 index 00000000000..4fdf757ef4a --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/third_party/compiler/README.angle @@ -0,0 +1,12 @@ +Name: ANGLE array bounds clamper from WebKit +Short Name: WebKit +URL: http://webkit.org +Version: 0 +License: BSD +Security Critical: yes + +Description: +Implements clamping of array indexing expressions during shader translation. + +Local Modifications: +None diff --git a/Source/ThirdParty/ANGLE/src/third_party/murmurhash/LICENSE b/Source/ThirdParty/ANGLE/src/third_party/murmurhash/LICENSE new file mode 100644 index 00000000000..6a385f0f078 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/third_party/murmurhash/LICENSE @@ -0,0 +1,2 @@ +// MurmurHash3 was written by Austin Appleby, and is placed in the public +// domain. The author hereby disclaims copyright to this source code. \ No newline at end of file diff --git a/Source/ThirdParty/ANGLE/src/third_party/murmurhash/MurmurHash3.cpp b/Source/ThirdParty/ANGLE/src/third_party/murmurhash/MurmurHash3.cpp new file mode 100644 index 00000000000..14509766a63 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/third_party/murmurhash/MurmurHash3.cpp @@ -0,0 +1,334 @@ +//----------------------------------------------------------------------------- +// MurmurHash3 was written by Austin Appleby, and is placed in the public +// domain. The author hereby disclaims copyright to this source code. + +// Note - The x86 and x64 versions do _not_ produce the same results, as the +// algorithms are optimized for their respective platforms. You can still +// compile and run any of them on any platform, but your performance with the +// non-native version will be less than optimal. + +#include "MurmurHash3.h" + +//----------------------------------------------------------------------------- +// Platform-specific functions and macros + +// Microsoft Visual Studio + +#if defined(_MSC_VER) + +#define FORCE_INLINE __forceinline + +#include + +#define ROTL32(x,y) _rotl(x,y) +#define ROTL64(x,y) _rotl64(x,y) + +#define BIG_CONSTANT(x) (x) + +// Other compilers + +#else // defined(_MSC_VER) + +#define FORCE_INLINE __attribute__((always_inline)) + +inline uint32_t rotl32 ( uint32_t x, int8_t r ) +{ + return (x << r) | (x >> (32 - r)); +} + +inline uint64_t rotl64 ( uint64_t x, int8_t r ) +{ + return (x << r) | (x >> (64 - r)); +} + +#define ROTL32(x,y) rotl32(x,y) +#define ROTL64(x,y) rotl64(x,y) + +#define BIG_CONSTANT(x) (x##LLU) + +#endif // !defined(_MSC_VER) + +//----------------------------------------------------------------------------- +// Block read - if your platform needs to do endian-swapping or can only +// handle aligned reads, do the conversion here + +FORCE_INLINE uint32_t getblock ( const uint32_t * p, int i ) +{ + return p[i]; +} + +FORCE_INLINE uint64_t getblock ( const uint64_t * p, int i ) +{ + return p[i]; +} + +//----------------------------------------------------------------------------- +// Finalization mix - force all bits of a hash block to avalanche + +FORCE_INLINE uint32_t fmix ( uint32_t h ) +{ + h ^= h >> 16; + h *= 0x85ebca6b; + h ^= h >> 13; + h *= 0xc2b2ae35; + h ^= h >> 16; + + return h; +} + +//---------- + +FORCE_INLINE uint64_t fmix ( uint64_t k ) +{ + k ^= k >> 33; + k *= BIG_CONSTANT(0xff51afd7ed558ccd); + k ^= k >> 33; + k *= BIG_CONSTANT(0xc4ceb9fe1a85ec53); + k ^= k >> 33; + + return k; +} + +//----------------------------------------------------------------------------- + +void MurmurHash3_x86_32 ( const void * key, int len, + uint32_t seed, void * out ) +{ + const uint8_t * data = (const uint8_t*)key; + const int nblocks = len / 4; + + uint32_t h1 = seed; + + const uint32_t c1 = 0xcc9e2d51; + const uint32_t c2 = 0x1b873593; + + //---------- + // body + + const uint32_t * blocks = (const uint32_t *)(data + nblocks*4); + + for(int i = -nblocks; i; i++) + { + uint32_t k1 = getblock(blocks,i); + + k1 *= c1; + k1 = ROTL32(k1,15); + k1 *= c2; + + h1 ^= k1; + h1 = ROTL32(h1,13); + h1 = h1*5+0xe6546b64; + } + + //---------- + // tail + + const uint8_t * tail = (const uint8_t*)(data + nblocks*4); + + uint32_t k1 = 0; + + switch(len & 3) + { + case 3: k1 ^= tail[2] << 16; + case 2: k1 ^= tail[1] << 8; + case 1: k1 ^= tail[0]; + k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1; + }; + + //---------- + // finalization + + h1 ^= len; + + h1 = fmix(h1); + + *(uint32_t*)out = h1; +} + +//----------------------------------------------------------------------------- + +void MurmurHash3_x86_128 ( const void * key, const int len, + uint32_t seed, void * out ) +{ + const uint8_t * data = (const uint8_t*)key; + const int nblocks = len / 16; + + uint32_t h1 = seed; + uint32_t h2 = seed; + uint32_t h3 = seed; + uint32_t h4 = seed; + + const uint32_t c1 = 0x239b961b; + const uint32_t c2 = 0xab0e9789; + const uint32_t c3 = 0x38b34ae5; + const uint32_t c4 = 0xa1e38b93; + + //---------- + // body + + const uint32_t * blocks = (const uint32_t *)(data + nblocks*16); + + for(int i = -nblocks; i; i++) + { + uint32_t k1 = getblock(blocks,i*4+0); + uint32_t k2 = getblock(blocks,i*4+1); + uint32_t k3 = getblock(blocks,i*4+2); + uint32_t k4 = getblock(blocks,i*4+3); + + k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1; + + h1 = ROTL32(h1,19); h1 += h2; h1 = h1*5+0x561ccd1b; + + k2 *= c2; k2 = ROTL32(k2,16); k2 *= c3; h2 ^= k2; + + h2 = ROTL32(h2,17); h2 += h3; h2 = h2*5+0x0bcaa747; + + k3 *= c3; k3 = ROTL32(k3,17); k3 *= c4; h3 ^= k3; + + h3 = ROTL32(h3,15); h3 += h4; h3 = h3*5+0x96cd1c35; + + k4 *= c4; k4 = ROTL32(k4,18); k4 *= c1; h4 ^= k4; + + h4 = ROTL32(h4,13); h4 += h1; h4 = h4*5+0x32ac3b17; + } + + //---------- + // tail + + const uint8_t * tail = (const uint8_t*)(data + nblocks*16); + + uint32_t k1 = 0; + uint32_t k2 = 0; + uint32_t k3 = 0; + uint32_t k4 = 0; + + switch(len & 15) + { + case 15: k4 ^= tail[14] << 16; + case 14: k4 ^= tail[13] << 8; + case 13: k4 ^= tail[12] << 0; + k4 *= c4; k4 = ROTL32(k4,18); k4 *= c1; h4 ^= k4; + + case 12: k3 ^= tail[11] << 24; + case 11: k3 ^= tail[10] << 16; + case 10: k3 ^= tail[ 9] << 8; + case 9: k3 ^= tail[ 8] << 0; + k3 *= c3; k3 = ROTL32(k3,17); k3 *= c4; h3 ^= k3; + + case 8: k2 ^= tail[ 7] << 24; + case 7: k2 ^= tail[ 6] << 16; + case 6: k2 ^= tail[ 5] << 8; + case 5: k2 ^= tail[ 4] << 0; + k2 *= c2; k2 = ROTL32(k2,16); k2 *= c3; h2 ^= k2; + + case 4: k1 ^= tail[ 3] << 24; + case 3: k1 ^= tail[ 2] << 16; + case 2: k1 ^= tail[ 1] << 8; + case 1: k1 ^= tail[ 0] << 0; + k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1; + }; + + //---------- + // finalization + + h1 ^= len; h2 ^= len; h3 ^= len; h4 ^= len; + + h1 += h2; h1 += h3; h1 += h4; + h2 += h1; h3 += h1; h4 += h1; + + h1 = fmix(h1); + h2 = fmix(h2); + h3 = fmix(h3); + h4 = fmix(h4); + + h1 += h2; h1 += h3; h1 += h4; + h2 += h1; h3 += h1; h4 += h1; + + ((uint32_t*)out)[0] = h1; + ((uint32_t*)out)[1] = h2; + ((uint32_t*)out)[2] = h3; + ((uint32_t*)out)[3] = h4; +} + +//----------------------------------------------------------------------------- + +void MurmurHash3_x64_128 ( const void * key, const int len, + const uint32_t seed, void * out ) +{ + const uint8_t * data = (const uint8_t*)key; + const int nblocks = len / 16; + + uint64_t h1 = seed; + uint64_t h2 = seed; + + const uint64_t c1 = BIG_CONSTANT(0x87c37b91114253d5); + const uint64_t c2 = BIG_CONSTANT(0x4cf5ad432745937f); + + //---------- + // body + + const uint64_t * blocks = (const uint64_t *)(data); + + for(int i = 0; i < nblocks; i++) + { + uint64_t k1 = getblock(blocks,i*2+0); + uint64_t k2 = getblock(blocks,i*2+1); + + k1 *= c1; k1 = ROTL64(k1,31); k1 *= c2; h1 ^= k1; + + h1 = ROTL64(h1,27); h1 += h2; h1 = h1*5+0x52dce729; + + k2 *= c2; k2 = ROTL64(k2,33); k2 *= c1; h2 ^= k2; + + h2 = ROTL64(h2,31); h2 += h1; h2 = h2*5+0x38495ab5; + } + + //---------- + // tail + + const uint8_t * tail = (const uint8_t*)(data + nblocks*16); + + uint64_t k1 = 0; + uint64_t k2 = 0; + + switch(len & 15) + { + case 15: k2 ^= uint64_t(tail[14]) << 48; + case 14: k2 ^= uint64_t(tail[13]) << 40; + case 13: k2 ^= uint64_t(tail[12]) << 32; + case 12: k2 ^= uint64_t(tail[11]) << 24; + case 11: k2 ^= uint64_t(tail[10]) << 16; + case 10: k2 ^= uint64_t(tail[ 9]) << 8; + case 9: k2 ^= uint64_t(tail[ 8]) << 0; + k2 *= c2; k2 = ROTL64(k2,33); k2 *= c1; h2 ^= k2; + + case 8: k1 ^= uint64_t(tail[ 7]) << 56; + case 7: k1 ^= uint64_t(tail[ 6]) << 48; + case 6: k1 ^= uint64_t(tail[ 5]) << 40; + case 5: k1 ^= uint64_t(tail[ 4]) << 32; + case 4: k1 ^= uint64_t(tail[ 3]) << 24; + case 3: k1 ^= uint64_t(tail[ 2]) << 16; + case 2: k1 ^= uint64_t(tail[ 1]) << 8; + case 1: k1 ^= uint64_t(tail[ 0]) << 0; + k1 *= c1; k1 = ROTL64(k1,31); k1 *= c2; h1 ^= k1; + }; + + //---------- + // finalization + + h1 ^= len; h2 ^= len; + + h1 += h2; + h2 += h1; + + h1 = fmix(h1); + h2 = fmix(h2); + + h1 += h2; + h2 += h1; + + ((uint64_t*)out)[0] = h1; + ((uint64_t*)out)[1] = h2; +} + +//----------------------------------------------------------------------------- diff --git a/Source/ThirdParty/ANGLE/src/third_party/murmurhash/MurmurHash3.h b/Source/ThirdParty/ANGLE/src/third_party/murmurhash/MurmurHash3.h new file mode 100644 index 00000000000..1bdebec3c43 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/third_party/murmurhash/MurmurHash3.h @@ -0,0 +1,37 @@ +//----------------------------------------------------------------------------- +// MurmurHash3 was written by Austin Appleby, and is placed in the public +// domain. The author hereby disclaims copyright to this source code. + +#ifndef _MURMURHASH3_H_ +#define _MURMURHASH3_H_ + +//----------------------------------------------------------------------------- +// Platform-specific functions and macros + +// Microsoft Visual Studio + +#if defined(_MSC_VER) + +typedef unsigned char uint8_t; +typedef unsigned long uint32_t; +typedef unsigned __int64 uint64_t; + +// Other compilers + +#else // defined(_MSC_VER) + +#include + +#endif // !defined(_MSC_VER) + +//----------------------------------------------------------------------------- + +void MurmurHash3_x86_32 ( const void * key, int len, uint32_t seed, void * out ); + +void MurmurHash3_x86_128 ( const void * key, int len, uint32_t seed, void * out ); + +void MurmurHash3_x64_128 ( const void * key, int len, uint32_t seed, void * out ); + +//----------------------------------------------------------------------------- + +#endif // _MURMURHASH3_H_ \ No newline at end of file diff --git a/Source/ThirdParty/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj b/Source/ThirdParty/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..eada6024447 --- /dev/null +++ b/Source/ThirdParty/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXAggregateTarget section */ + 4024D162113D7D2400C7059E /* Test */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 4024D169113D7D4600C7059E /* Build configuration list for PBXAggregateTarget "Test" */; + buildPhases = ( + 4024D161113D7D2400C7059E /* ShellScript */, + ); + dependencies = ( + 4024D166113D7D3100C7059E /* PBXTargetDependency */, + ); + name = Test; + productName = TestAndBuild; + }; + 4024D1E9113D83FF00C7059E /* TestAndBuild */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 4024D1F0113D842B00C7059E /* Build configuration list for PBXAggregateTarget "TestAndBuild" */; + buildPhases = ( + ); + dependencies = ( + 4024D1ED113D840900C7059E /* PBXTargetDependency */, + 4024D1EF113D840D00C7059E /* PBXTargetDependency */, + ); + name = TestAndBuild; + productName = TestAndBuild; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 3B7EB1250E5AEE3500C7F239 /* widget.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3B7EB1230E5AEE3500C7F239 /* widget.cc */; }; + 3B7EB1260E5AEE3500C7F239 /* widget.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B7EB1240E5AEE3500C7F239 /* widget.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B7EB1280E5AEE4600C7F239 /* widget_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3B7EB1270E5AEE4600C7F239 /* widget_test.cc */; }; + 3B7EB1480E5AF3B400C7F239 /* Widget.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D07F2C80486CC7A007CD1D0 /* Widget.framework */; }; + 4024D188113D7D7800C7059E /* libgtest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4024D185113D7D5500C7059E /* libgtest.a */; }; + 4024D189113D7D7A00C7059E /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4024D183113D7D5500C7059E /* libgtest_main.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 3B07BDF00E3F3FAE00647869 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0; + remoteInfo = gTestExample; + }; + 4024D165113D7D3100C7059E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3B07BDE90E3F3F9E00647869; + remoteInfo = WidgetFrameworkTest; + }; + 4024D1EC113D840900C7059E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0; + remoteInfo = WidgetFramework; + }; + 4024D1EE113D840D00C7059E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4024D162113D7D2400C7059E; + remoteInfo = Test; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3B07BDEA0E3F3F9E00647869 /* WidgetFrameworkTest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = WidgetFrameworkTest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B7EB1230E5AEE3500C7F239 /* widget.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = widget.cc; sourceTree = ""; }; + 3B7EB1240E5AEE3500C7F239 /* widget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = widget.h; sourceTree = ""; }; + 3B7EB1270E5AEE4600C7F239 /* widget_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = widget_test.cc; sourceTree = ""; }; + 4024D183113D7D5500C7059E /* libgtest_main.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgtest_main.a; path = /usr/local/lib/libgtest_main.a; sourceTree = ""; }; + 4024D185113D7D5500C7059E /* libgtest.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgtest.a; path = /usr/local/lib/libgtest.a; sourceTree = ""; }; + 4024D1E2113D838200C7059E /* runtests.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = runtests.sh; sourceTree = ""; }; + 8D07F2C70486CC7A007CD1D0 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 8D07F2C80486CC7A007CD1D0 /* Widget.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Widget.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3B07BDE80E3F3F9E00647869 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4024D188113D7D7800C7059E /* libgtest.a in Frameworks */, + 4024D189113D7D7A00C7059E /* libgtest_main.a in Frameworks */, + 3B7EB1480E5AF3B400C7F239 /* Widget.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8D07F2C30486CC7A007CD1D0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 034768DDFF38A45A11DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + 3B07BDEA0E3F3F9E00647869 /* WidgetFrameworkTest */, + 8D07F2C80486CC7A007CD1D0 /* Widget.framework */, + ); + name = Products; + sourceTree = ""; + }; + 0867D691FE84028FC02AAC07 /* gTestExample */ = { + isa = PBXGroup; + children = ( + 4024D1E1113D836C00C7059E /* Scripts */, + 08FB77ACFE841707C02AAC07 /* Source */, + 089C1665FE841158C02AAC07 /* Resources */, + 3B07BE350E4094E400647869 /* Test */, + 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, + 034768DDFF38A45A11DB9C8B /* Products */, + ); + name = gTestExample; + sourceTree = ""; + }; + 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 4024D185113D7D5500C7059E /* libgtest.a */, + 4024D183113D7D5500C7059E /* libgtest_main.a */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; + 089C1665FE841158C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 8D07F2C70486CC7A007CD1D0 /* Info.plist */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77ACFE841707C02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 3B7EB1230E5AEE3500C7F239 /* widget.cc */, + 3B7EB1240E5AEE3500C7F239 /* widget.h */, + ); + name = Source; + sourceTree = ""; + }; + 3B07BE350E4094E400647869 /* Test */ = { + isa = PBXGroup; + children = ( + 3B7EB1270E5AEE4600C7F239 /* widget_test.cc */, + ); + name = Test; + sourceTree = ""; + }; + 4024D1E1113D836C00C7059E /* Scripts */ = { + isa = PBXGroup; + children = ( + 4024D1E2113D838200C7059E /* runtests.sh */, + ); + name = Scripts; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 8D07F2BD0486CC7A007CD1D0 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 3B7EB1260E5AEE3500C7F239 /* widget.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 3B07BDE90E3F3F9E00647869 /* WidgetFrameworkTest */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3B07BDF40E3F3FB600647869 /* Build configuration list for PBXNativeTarget "WidgetFrameworkTest" */; + buildPhases = ( + 3B07BDE70E3F3F9E00647869 /* Sources */, + 3B07BDE80E3F3F9E00647869 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 3B07BDF10E3F3FAE00647869 /* PBXTargetDependency */, + ); + name = WidgetFrameworkTest; + productName = gTestExampleTest; + productReference = 3B07BDEA0E3F3F9E00647869 /* WidgetFrameworkTest */; + productType = "com.apple.product-type.tool"; + }; + 8D07F2BC0486CC7A007CD1D0 /* WidgetFramework */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "WidgetFramework" */; + buildPhases = ( + 8D07F2C10486CC7A007CD1D0 /* Sources */, + 8D07F2C30486CC7A007CD1D0 /* Frameworks */, + 8D07F2BD0486CC7A007CD1D0 /* Headers */, + 8D07F2BF0486CC7A007CD1D0 /* Resources */, + 8D07F2C50486CC7A007CD1D0 /* Rez */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = WidgetFramework; + productInstallPath = "$(HOME)/Library/Frameworks"; + productName = gTestExample; + productReference = 8D07F2C80486CC7A007CD1D0 /* Widget.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "WidgetFramework" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 1; + mainGroup = 0867D691FE84028FC02AAC07 /* gTestExample */; + productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D07F2BC0486CC7A007CD1D0 /* WidgetFramework */, + 3B07BDE90E3F3F9E00647869 /* WidgetFrameworkTest */, + 4024D162113D7D2400C7059E /* Test */, + 4024D1E9113D83FF00C7059E /* TestAndBuild */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D07F2BF0486CC7A007CD1D0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXRezBuildPhase section */ + 8D07F2C50486CC7A007CD1D0 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXRezBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 4024D161113D7D2400C7059E /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/bash $SRCROOT/runtests.sh $BUILT_PRODUCTS_DIR/WidgetFrameworkTest\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3B07BDE70E3F3F9E00647869 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3B7EB1280E5AEE4600C7F239 /* widget_test.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8D07F2C10486CC7A007CD1D0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3B7EB1250E5AEE3500C7F239 /* widget.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 3B07BDF10E3F3FAE00647869 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8D07F2BC0486CC7A007CD1D0 /* WidgetFramework */; + targetProxy = 3B07BDF00E3F3FAE00647869 /* PBXContainerItemProxy */; + }; + 4024D166113D7D3100C7059E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3B07BDE90E3F3F9E00647869 /* WidgetFrameworkTest */; + targetProxy = 4024D165113D7D3100C7059E /* PBXContainerItemProxy */; + }; + 4024D1ED113D840900C7059E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8D07F2BC0486CC7A007CD1D0 /* WidgetFramework */; + targetProxy = 4024D1EC113D840900C7059E /* PBXContainerItemProxy */; + }; + 4024D1EF113D840D00C7059E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4024D162113D7D2400C7059E /* Test */; + targetProxy = 4024D1EE113D840D00C7059E /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 3B07BDEC0E3F3F9F00647869 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = WidgetFrameworkTest; + }; + name = Debug; + }; + 3B07BDED0E3F3F9F00647869 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = WidgetFrameworkTest; + }; + name = Release; + }; + 4024D163113D7D2400C7059E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = TestAndBuild; + }; + name = Debug; + }; + 4024D164113D7D2400C7059E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = TestAndBuild; + }; + name = Release; + }; + 4024D1EA113D83FF00C7059E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = TestAndBuild; + }; + name = Debug; + }; + 4024D1EB113D83FF00C7059E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = TestAndBuild; + }; + name = Release; + }; + 4FADC24308B4156D00ABE55E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "@loader_path/../Frameworks"; + PRODUCT_NAME = Widget; + }; + name = Debug; + }; + 4FADC24408B4156D00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "@loader_path/../Frameworks"; + PRODUCT_NAME = Widget; + }; + name = Release; + }; + 4FADC24708B4156D00ABE55E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_VERSION = 4.0; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + }; + name = Debug; + }; + 4FADC24808B4156D00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_VERSION = 4.0; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3B07BDF40E3F3FB600647869 /* Build configuration list for PBXNativeTarget "WidgetFrameworkTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3B07BDEC0E3F3F9F00647869 /* Debug */, + 3B07BDED0E3F3F9F00647869 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4024D169113D7D4600C7059E /* Build configuration list for PBXAggregateTarget "Test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4024D163113D7D2400C7059E /* Debug */, + 4024D164113D7D2400C7059E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4024D1F0113D842B00C7059E /* Build configuration list for PBXAggregateTarget "TestAndBuild" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4024D1EA113D83FF00C7059E /* Debug */, + 4024D1EB113D83FF00C7059E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "WidgetFramework" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC24308B4156D00ABE55E /* Debug */, + 4FADC24408B4156D00ABE55E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "WidgetFramework" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC24708B4156D00ABE55E /* Debug */, + 4FADC24808B4156D00ABE55E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/Source/ThirdParty/gtest/xcode/gtest.xcodeproj/project.pbxproj b/Source/ThirdParty/gtest/xcode/gtest.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..91f1351f000 --- /dev/null +++ b/Source/ThirdParty/gtest/xcode/gtest.xcodeproj/project.pbxproj @@ -0,0 +1,1171 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXAggregateTarget section */ + 3B238F5F0E828B5400846E11 /* Check */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 3B238FA30E828BB600846E11 /* Build configuration list for PBXAggregateTarget "Check" */; + buildPhases = ( + 3B238F5E0E828B5400846E11 /* ShellScript */, + ); + dependencies = ( + 40899F9D0FFA740F000B29AE /* PBXTargetDependency */, + 40C849F7101A43440083642A /* PBXTargetDependency */, + 4089A0980FFAD34A000B29AE /* PBXTargetDependency */, + 40C849F9101A43490083642A /* PBXTargetDependency */, + ); + name = Check; + productName = Check; + }; + 40C44ADC0E3798F4008FCC51 /* Version Info */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 40C44AE40E379905008FCC51 /* Build configuration list for PBXAggregateTarget "Version Info" */; + buildPhases = ( + 40C44ADB0E3798F4008FCC51 /* Generate Version.h */, + ); + comments = "The generation of Version.h must be performed in its own target. Since the Info.plist is preprocessed before any of the other build phases in gtest, the Version.h file would not be ready if included as a build phase of that target."; + dependencies = ( + ); + name = "Version Info"; + productName = Version.h; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 1A0A4C4514B7A3B500895135 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A0A4C4414B7A3B500895135 /* JavaScriptCore.framework */; }; + 224A12A30E9EADCC00BD17FD /* gtest-test-part.h in Headers */ = {isa = PBXBuildFile; fileRef = 224A12A20E9EADCC00BD17FD /* gtest-test-part.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3BF6F2A00E79B5AD000F2EEE /* gtest-type-util.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 3BF6F29F0E79B5AD000F2EEE /* gtest-type-util.h */; }; + 3BF6F2A50E79B616000F2EEE /* gtest-typed-test.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BF6F2A40E79B616000F2EEE /* gtest-typed-test.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 404884380E2F799B00CF7658 /* gtest-death-test.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883DB0E2F799B00CF7658 /* gtest-death-test.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 404884390E2F799B00CF7658 /* gtest-message.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883DC0E2F799B00CF7658 /* gtest-message.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4048843A0E2F799B00CF7658 /* gtest-spi.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883DD0E2F799B00CF7658 /* gtest-spi.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4048843B0E2F799B00CF7658 /* gtest.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883DE0E2F799B00CF7658 /* gtest.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4048843C0E2F799B00CF7658 /* gtest_pred_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883DF0E2F799B00CF7658 /* gtest_pred_impl.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4048843D0E2F799B00CF7658 /* gtest_prod.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883E00E2F799B00CF7658 /* gtest_prod.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 404884500E2F799B00CF7658 /* README in Resources */ = {isa = PBXBuildFile; fileRef = 404883F60E2F799B00CF7658 /* README */; }; + 404884A00E2F7BE600CF7658 /* gtest-death-test-internal.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E20E2F799B00CF7658 /* gtest-death-test-internal.h */; }; + 404884A10E2F7BE600CF7658 /* gtest-filepath.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E30E2F799B00CF7658 /* gtest-filepath.h */; }; + 404884A20E2F7BE600CF7658 /* gtest-internal.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E40E2F799B00CF7658 /* gtest-internal.h */; }; + 404884A30E2F7BE600CF7658 /* gtest-port.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E50E2F799B00CF7658 /* gtest-port.h */; }; + 404884A40E2F7BE600CF7658 /* gtest-string.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E60E2F799B00CF7658 /* gtest-string.h */; }; + 404884AC0E2F7CD900CF7658 /* CHANGES in Resources */ = {isa = PBXBuildFile; fileRef = 404884A90E2F7CD900CF7658 /* CHANGES */; }; + 404884AD0E2F7CD900CF7658 /* CONTRIBUTORS in Resources */ = {isa = PBXBuildFile; fileRef = 404884AA0E2F7CD900CF7658 /* CONTRIBUTORS */; }; + 404884AE0E2F7CD900CF7658 /* COPYING in Resources */ = {isa = PBXBuildFile; fileRef = 404884AB0E2F7CD900CF7658 /* COPYING */; }; + 40899F3A0FFA70D4000B29AE /* gtest-all.cc in Sources */ = {isa = PBXBuildFile; fileRef = 224A12A10E9EADA700BD17FD /* gtest-all.cc */; }; + 40899F500FFA7281000B29AE /* gtest-tuple.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 40899F4D0FFA7271000B29AE /* gtest-tuple.h */; }; + 40899F530FFA72A0000B29AE /* gtest_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3B238C120E7FE13C00846E11 /* gtest_unittest.cc */; }; + 4089A0440FFAD1BE000B29AE /* sample1.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4089A02C0FFACF7F000B29AE /* sample1.cc */; }; + 4089A0460FFAD1BE000B29AE /* sample1_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4089A02E0FFACF7F000B29AE /* sample1_unittest.cc */; }; + 40C848FF101A21150083642A /* gtest-all.cc in Sources */ = {isa = PBXBuildFile; fileRef = 224A12A10E9EADA700BD17FD /* gtest-all.cc */; }; + 40C84915101A21DF0083642A /* gtest_main.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4048840D0E2F799B00CF7658 /* gtest_main.cc */; }; + 40C84916101A235B0083642A /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C8490B101A217E0083642A /* libgtest_main.a */; }; + 40C84921101A23AD0083642A /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C8490B101A217E0083642A /* libgtest_main.a */; }; + 40C84978101A36540083642A /* libgtest_main.a in Resources */ = {isa = PBXBuildFile; fileRef = 40C8490B101A217E0083642A /* libgtest_main.a */; }; + 40C84980101A36850083642A /* gtest_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3B238C120E7FE13C00846E11 /* gtest_unittest.cc */; }; + 40C84982101A36850083642A /* libgtest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C848FA101A209C0083642A /* libgtest.a */; }; + 40C84983101A36850083642A /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C8490B101A217E0083642A /* libgtest_main.a */; }; + 40C8498F101A36A60083642A /* sample1.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4089A02C0FFACF7F000B29AE /* sample1.cc */; }; + 40C84990101A36A60083642A /* sample1_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4089A02E0FFACF7F000B29AE /* sample1_unittest.cc */; }; + 40C84992101A36A60083642A /* libgtest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C848FA101A209C0083642A /* libgtest.a */; }; + 40C84993101A36A60083642A /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C8490B101A217E0083642A /* libgtest_main.a */; }; + 40C849A2101A37050083642A /* gtest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4539C8FF0EC27F6400A70F4C /* gtest.framework */; }; + 40C849A4101A37150083642A /* gtest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4539C8FF0EC27F6400A70F4C /* gtest.framework */; }; + 4539C9340EC280AE00A70F4C /* gtest-param-test.h in Headers */ = {isa = PBXBuildFile; fileRef = 4539C9330EC280AE00A70F4C /* gtest-param-test.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4539C9380EC280E200A70F4C /* gtest-linked_ptr.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 4539C9350EC280E200A70F4C /* gtest-linked_ptr.h */; }; + 4539C9390EC280E200A70F4C /* gtest-param-util-generated.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 4539C9360EC280E200A70F4C /* gtest-param-util-generated.h */; }; + 4539C93A0EC280E200A70F4C /* gtest-param-util.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 4539C9370EC280E200A70F4C /* gtest-param-util.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 40899F9C0FFA740F000B29AE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40899F420FFA7184000B29AE; + remoteInfo = gtest_unittest; + }; + 4089A0970FFAD34A000B29AE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4089A0120FFACEFC000B29AE; + remoteInfo = sample1_unittest; + }; + 408BEC0F1046CFE900DEF522 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C848F9101A209C0083642A; + remoteInfo = "gtest-static"; + }; + 40C44AE50E379922008FCC51 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C44ADC0E3798F4008FCC51; + remoteInfo = Version.h; + }; + 40C8497C101A36850083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C848F9101A209C0083642A; + remoteInfo = "gtest-static"; + }; + 40C8497E101A36850083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C8490A101A217E0083642A; + remoteInfo = "gtest_main-static"; + }; + 40C8498B101A36A60083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C848F9101A209C0083642A; + remoteInfo = "gtest-static"; + }; + 40C8498D101A36A60083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C8490A101A217E0083642A; + remoteInfo = "gtest_main-static"; + }; + 40C8499B101A36DC0083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C8490A101A217E0083642A; + remoteInfo = "gtest_main-static"; + }; + 40C8499D101A36E50083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0; + remoteInfo = "gtest-framework"; + }; + 40C8499F101A36F10083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0; + remoteInfo = "gtest-framework"; + }; + 40C849F6101A43440083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C8497A101A36850083642A; + remoteInfo = "gtest_unittest-static"; + }; + 40C849F8101A43490083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C84989101A36A60083642A; + remoteInfo = "sample1_unittest-static"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 404884A50E2F7C0400CF7658 /* Copy Headers Internal */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = Headers/internal; + dstSubfolderSpec = 6; + files = ( + 404884A00E2F7BE600CF7658 /* gtest-death-test-internal.h in Copy Headers Internal */, + 404884A10E2F7BE600CF7658 /* gtest-filepath.h in Copy Headers Internal */, + 404884A20E2F7BE600CF7658 /* gtest-internal.h in Copy Headers Internal */, + 4539C9380EC280E200A70F4C /* gtest-linked_ptr.h in Copy Headers Internal */, + 4539C9390EC280E200A70F4C /* gtest-param-util-generated.h in Copy Headers Internal */, + 4539C93A0EC280E200A70F4C /* gtest-param-util.h in Copy Headers Internal */, + 404884A30E2F7BE600CF7658 /* gtest-port.h in Copy Headers Internal */, + 404884A40E2F7BE600CF7658 /* gtest-string.h in Copy Headers Internal */, + 40899F500FFA7281000B29AE /* gtest-tuple.h in Copy Headers Internal */, + 3BF6F2A00E79B5AD000F2EEE /* gtest-type-util.h in Copy Headers Internal */, + ); + name = "Copy Headers Internal"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1A0A4C4414B7A3B500895135 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = JavaScriptCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 224A12A10E9EADA700BD17FD /* gtest-all.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = "gtest-all.cc"; sourceTree = ""; }; + 224A12A20E9EADCC00BD17FD /* gtest-test-part.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = "gtest-test-part.h"; sourceTree = ""; }; + 3B238C120E7FE13C00846E11 /* gtest_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gtest_unittest.cc; sourceTree = ""; }; + 3B87D2100E96B92E000D1852 /* runtests.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = runtests.sh; sourceTree = ""; }; + 3BF6F29F0E79B5AD000F2EEE /* gtest-type-util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-type-util.h"; sourceTree = ""; }; + 3BF6F2A40E79B616000F2EEE /* gtest-typed-test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-typed-test.h"; sourceTree = ""; }; + 403EE37C0E377822004BD1E2 /* versiongenerate.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = versiongenerate.py; sourceTree = ""; }; + 404883DB0E2F799B00CF7658 /* gtest-death-test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-death-test.h"; sourceTree = ""; }; + 404883DC0E2F799B00CF7658 /* gtest-message.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-message.h"; sourceTree = ""; }; + 404883DD0E2F799B00CF7658 /* gtest-spi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-spi.h"; sourceTree = ""; }; + 404883DE0E2F799B00CF7658 /* gtest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gtest.h; sourceTree = ""; }; + 404883DF0E2F799B00CF7658 /* gtest_pred_impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gtest_pred_impl.h; sourceTree = ""; }; + 404883E00E2F799B00CF7658 /* gtest_prod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gtest_prod.h; sourceTree = ""; }; + 404883E20E2F799B00CF7658 /* gtest-death-test-internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-death-test-internal.h"; sourceTree = ""; }; + 404883E30E2F799B00CF7658 /* gtest-filepath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-filepath.h"; sourceTree = ""; }; + 404883E40E2F799B00CF7658 /* gtest-internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-internal.h"; sourceTree = ""; }; + 404883E50E2F799B00CF7658 /* gtest-port.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-port.h"; sourceTree = ""; }; + 404883E60E2F799B00CF7658 /* gtest-string.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-string.h"; sourceTree = ""; }; + 404883F60E2F799B00CF7658 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README; path = ../README; sourceTree = SOURCE_ROOT; }; + 4048840D0E2F799B00CF7658 /* gtest_main.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gtest_main.cc; sourceTree = ""; }; + 404884A90E2F7CD900CF7658 /* CHANGES */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CHANGES; path = ../CHANGES; sourceTree = SOURCE_ROOT; }; + 404884AA0E2F7CD900CF7658 /* CONTRIBUTORS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CONTRIBUTORS; path = ../CONTRIBUTORS; sourceTree = SOURCE_ROOT; }; + 404884AB0E2F7CD900CF7658 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = COPYING; path = ../COPYING; sourceTree = SOURCE_ROOT; }; + 40899F430FFA7184000B29AE /* gtest_unittest-framework */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "gtest_unittest-framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 40899F4D0FFA7271000B29AE /* gtest-tuple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-tuple.h"; sourceTree = ""; }; + 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = StaticLibraryTarget.xcconfig; sourceTree = ""; }; + 4089A0130FFACEFC000B29AE /* sample1_unittest-framework */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "sample1_unittest-framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4089A02C0FFACF7F000B29AE /* sample1.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sample1.cc; sourceTree = ""; }; + 4089A02D0FFACF7F000B29AE /* sample1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sample1.h; sourceTree = ""; }; + 4089A02E0FFACF7F000B29AE /* sample1_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sample1_unittest.cc; sourceTree = ""; }; + 40C848FA101A209C0083642A /* libgtest.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgtest.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 40C8490B101A217E0083642A /* libgtest_main.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgtest_main.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 40C84987101A36850083642A /* gtest_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = gtest_unittest; sourceTree = BUILT_PRODUCTS_DIR; }; + 40C84997101A36A60083642A /* sample1_unittest-static */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "sample1_unittest-static"; sourceTree = BUILT_PRODUCTS_DIR; }; + 40D4CDF10E30E07400294801 /* DebugProject.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugProject.xcconfig; sourceTree = ""; }; + 40D4CDF20E30E07400294801 /* FrameworkTarget.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FrameworkTarget.xcconfig; sourceTree = ""; }; + 40D4CDF30E30E07400294801 /* General.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = General.xcconfig; sourceTree = ""; }; + 40D4CDF40E30E07400294801 /* ReleaseProject.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ReleaseProject.xcconfig; sourceTree = ""; }; + 40D4CF510E30F5E200294801 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 44C48DFF14A4098F00A2D9C7 /* ProductionProject.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ProductionProject.xcconfig; sourceTree = ""; }; + 4539C8FF0EC27F6400A70F4C /* gtest.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = gtest.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 4539C9330EC280AE00A70F4C /* gtest-param-test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-param-test.h"; sourceTree = ""; }; + 4539C9350EC280E200A70F4C /* gtest-linked_ptr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-linked_ptr.h"; sourceTree = ""; }; + 4539C9360EC280E200A70F4C /* gtest-param-util-generated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-param-util-generated.h"; sourceTree = ""; }; + 4539C9370EC280E200A70F4C /* gtest-param-util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-param-util.h"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 40899F410FFA7184000B29AE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C849A4101A37150083642A /* gtest.framework in Frameworks */, + 40C84916101A235B0083642A /* libgtest_main.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4089A0110FFACEFC000B29AE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C849A2101A37050083642A /* gtest.framework in Frameworks */, + 40C84921101A23AD0083642A /* libgtest_main.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 40C84981101A36850083642A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C84982101A36850083642A /* libgtest.a in Frameworks */, + 40C84983101A36850083642A /* libgtest_main.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 40C84991101A36A60083642A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C84992101A36A60083642A /* libgtest.a in Frameworks */, + 40C84993101A36A60083642A /* libgtest_main.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 444D117214A2628F009FEC3F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A0A4C4514B7A3B500895135 /* JavaScriptCore.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 034768DDFF38A45A11DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + 40C84987101A36850083642A /* gtest_unittest */, + 40899F430FFA7184000B29AE /* gtest_unittest-framework */, + 4089A0130FFACEFC000B29AE /* sample1_unittest-framework */, + 40C84997101A36A60083642A /* sample1_unittest-static */, + 4539C8FF0EC27F6400A70F4C /* gtest.framework */, + 40C848FA101A209C0083642A /* libgtest.a */, + 40C8490B101A217E0083642A /* libgtest_main.a */, + ); + name = Products; + sourceTree = ""; + }; + 0867D691FE84028FC02AAC07 /* gtest */ = { + isa = PBXGroup; + children = ( + 40D4CDF00E30E07400294801 /* Config */, + 08FB77ACFE841707C02AAC07 /* Source */, + 40D4CF4E0E30F5E200294801 /* Resources */, + 403EE37B0E377822004BD1E2 /* Scripts */, + 1A0A4C4614B7A3BC00895135 /* Frameworks */, + 034768DDFF38A45A11DB9C8B /* Products */, + ); + name = gtest; + sourceTree = ""; + }; + 08FB77ACFE841707C02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 404884A90E2F7CD900CF7658 /* CHANGES */, + 404884AA0E2F7CD900CF7658 /* CONTRIBUTORS */, + 404884AB0E2F7CD900CF7658 /* COPYING */, + 404883D90E2F799B00CF7658 /* include */, + 404883F60E2F799B00CF7658 /* README */, + 4089A02F0FFACF84000B29AE /* samples */, + 404884070E2F799B00CF7658 /* src */, + 3B238BF00E7FE13B00846E11 /* test */, + ); + name = Source; + sourceTree = ""; + }; + 1A0A4C4614B7A3BC00895135 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1A0A4C4414B7A3B500895135 /* JavaScriptCore.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 3B238BF00E7FE13B00846E11 /* test */ = { + isa = PBXGroup; + children = ( + 3B238C120E7FE13C00846E11 /* gtest_unittest.cc */, + ); + name = test; + path = ../test; + sourceTree = SOURCE_ROOT; + }; + 403EE37B0E377822004BD1E2 /* Scripts */ = { + isa = PBXGroup; + children = ( + 3B87D2100E96B92E000D1852 /* runtests.sh */, + 403EE37C0E377822004BD1E2 /* versiongenerate.py */, + ); + path = Scripts; + sourceTree = ""; + }; + 404883D90E2F799B00CF7658 /* include */ = { + isa = PBXGroup; + children = ( + 404883DA0E2F799B00CF7658 /* gtest */, + ); + name = include; + path = ../include; + sourceTree = SOURCE_ROOT; + }; + 404883DA0E2F799B00CF7658 /* gtest */ = { + isa = PBXGroup; + children = ( + 404883E10E2F799B00CF7658 /* internal */, + 404883DB0E2F799B00CF7658 /* gtest-death-test.h */, + 404883DC0E2F799B00CF7658 /* gtest-message.h */, + 4539C9330EC280AE00A70F4C /* gtest-param-test.h */, + 404883DD0E2F799B00CF7658 /* gtest-spi.h */, + 224A12A20E9EADCC00BD17FD /* gtest-test-part.h */, + 3BF6F2A40E79B616000F2EEE /* gtest-typed-test.h */, + 404883DE0E2F799B00CF7658 /* gtest.h */, + 404883DF0E2F799B00CF7658 /* gtest_pred_impl.h */, + 404883E00E2F799B00CF7658 /* gtest_prod.h */, + ); + path = gtest; + sourceTree = ""; + }; + 404883E10E2F799B00CF7658 /* internal */ = { + isa = PBXGroup; + children = ( + 404883E20E2F799B00CF7658 /* gtest-death-test-internal.h */, + 404883E30E2F799B00CF7658 /* gtest-filepath.h */, + 404883E40E2F799B00CF7658 /* gtest-internal.h */, + 4539C9350EC280E200A70F4C /* gtest-linked_ptr.h */, + 4539C9360EC280E200A70F4C /* gtest-param-util-generated.h */, + 4539C9370EC280E200A70F4C /* gtest-param-util.h */, + 404883E50E2F799B00CF7658 /* gtest-port.h */, + 404883E60E2F799B00CF7658 /* gtest-string.h */, + 40899F4D0FFA7271000B29AE /* gtest-tuple.h */, + 3BF6F29F0E79B5AD000F2EEE /* gtest-type-util.h */, + ); + path = internal; + sourceTree = ""; + }; + 404884070E2F799B00CF7658 /* src */ = { + isa = PBXGroup; + children = ( + 224A12A10E9EADA700BD17FD /* gtest-all.cc */, + 4048840D0E2F799B00CF7658 /* gtest_main.cc */, + ); + name = src; + path = ../src; + sourceTree = SOURCE_ROOT; + }; + 4089A02F0FFACF84000B29AE /* samples */ = { + isa = PBXGroup; + children = ( + 4089A02C0FFACF7F000B29AE /* sample1.cc */, + 4089A02D0FFACF7F000B29AE /* sample1.h */, + 4089A02E0FFACF7F000B29AE /* sample1_unittest.cc */, + ); + name = samples; + path = ../samples; + sourceTree = SOURCE_ROOT; + }; + 40D4CDF00E30E07400294801 /* Config */ = { + isa = PBXGroup; + children = ( + 40D4CDF10E30E07400294801 /* DebugProject.xcconfig */, + 40D4CDF20E30E07400294801 /* FrameworkTarget.xcconfig */, + 40D4CDF30E30E07400294801 /* General.xcconfig */, + 44C48DFF14A4098F00A2D9C7 /* ProductionProject.xcconfig */, + 40D4CDF40E30E07400294801 /* ReleaseProject.xcconfig */, + 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */, + ); + path = Config; + sourceTree = ""; + }; + 40D4CF4E0E30F5E200294801 /* Resources */ = { + isa = PBXGroup; + children = ( + 40D4CF510E30F5E200294801 /* Info.plist */, + ); + path = Resources; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 8D07F2BD0486CC7A007CD1D0 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 404884380E2F799B00CF7658 /* gtest-death-test.h in Headers */, + 404884390E2F799B00CF7658 /* gtest-message.h in Headers */, + 4539C9340EC280AE00A70F4C /* gtest-param-test.h in Headers */, + 4048843A0E2F799B00CF7658 /* gtest-spi.h in Headers */, + 224A12A30E9EADCC00BD17FD /* gtest-test-part.h in Headers */, + 3BF6F2A50E79B616000F2EEE /* gtest-typed-test.h in Headers */, + 4048843B0E2F799B00CF7658 /* gtest.h in Headers */, + 4048843C0E2F799B00CF7658 /* gtest_pred_impl.h in Headers */, + 4048843D0E2F799B00CF7658 /* gtest_prod.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 40899F420FFA7184000B29AE /* gtest_unittest-framework */ = { + isa = PBXNativeTarget; + buildConfigurationList = 40899F4A0FFA71BC000B29AE /* Build configuration list for PBXNativeTarget "gtest_unittest-framework" */; + buildPhases = ( + 40899F400FFA7184000B29AE /* Sources */, + 40899F410FFA7184000B29AE /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 40C849A0101A36F10083642A /* PBXTargetDependency */, + ); + name = "gtest_unittest-framework"; + productName = gtest_unittest; + productReference = 40899F430FFA7184000B29AE /* gtest_unittest-framework */; + productType = "com.apple.product-type.tool"; + }; + 4089A0120FFACEFC000B29AE /* sample1_unittest-framework */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4089A0240FFACF01000B29AE /* Build configuration list for PBXNativeTarget "sample1_unittest-framework" */; + buildPhases = ( + 4089A0100FFACEFC000B29AE /* Sources */, + 4089A0110FFACEFC000B29AE /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 40C8499E101A36E50083642A /* PBXTargetDependency */, + ); + name = "sample1_unittest-framework"; + productName = sample1_unittest; + productReference = 4089A0130FFACEFC000B29AE /* sample1_unittest-framework */; + productType = "com.apple.product-type.tool"; + }; + 40C848F9101A209C0083642A /* gtest-static */ = { + isa = PBXNativeTarget; + buildConfigurationList = 40C84902101A212E0083642A /* Build configuration list for PBXNativeTarget "gtest-static" */; + buildPhases = ( + 40C848F7101A209C0083642A /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "gtest-static"; + productName = "gtest-static"; + productReference = 40C848FA101A209C0083642A /* libgtest.a */; + productType = "com.apple.product-type.library.static"; + }; + 40C8490A101A217E0083642A /* gtest_main-static */ = { + isa = PBXNativeTarget; + buildConfigurationList = 40C84912101A21D20083642A /* Build configuration list for PBXNativeTarget "gtest_main-static" */; + buildPhases = ( + 40C84908101A217E0083642A /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "gtest_main-static"; + productName = "gtest_main-static"; + productReference = 40C8490B101A217E0083642A /* libgtest_main.a */; + productType = "com.apple.product-type.library.static"; + }; + 40C8497A101A36850083642A /* gtest_unittest-static */ = { + isa = PBXNativeTarget; + buildConfigurationList = 40C84984101A36850083642A /* Build configuration list for PBXNativeTarget "gtest_unittest-static" */; + buildPhases = ( + 40C8497F101A36850083642A /* Sources */, + 40C84981101A36850083642A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 40C8497B101A36850083642A /* PBXTargetDependency */, + 40C8497D101A36850083642A /* PBXTargetDependency */, + ); + name = "gtest_unittest-static"; + productName = gtest_unittest; + productReference = 40C84987101A36850083642A /* gtest_unittest */; + productType = "com.apple.product-type.tool"; + }; + 40C84989101A36A60083642A /* sample1_unittest-static */ = { + isa = PBXNativeTarget; + buildConfigurationList = 40C84994101A36A60083642A /* Build configuration list for PBXNativeTarget "sample1_unittest-static" */; + buildPhases = ( + 40C8498E101A36A60083642A /* Sources */, + 40C84991101A36A60083642A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 40C8498A101A36A60083642A /* PBXTargetDependency */, + 40C8498C101A36A60083642A /* PBXTargetDependency */, + ); + name = "sample1_unittest-static"; + productName = sample1_unittest; + productReference = 40C84997101A36A60083642A /* sample1_unittest-static */; + productType = "com.apple.product-type.tool"; + }; + 8D07F2BC0486CC7A007CD1D0 /* gtest-framework */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "gtest-framework" */; + buildPhases = ( + 8D07F2C10486CC7A007CD1D0 /* Sources */, + 8D07F2BD0486CC7A007CD1D0 /* Headers */, + 404884A50E2F7C0400CF7658 /* Copy Headers Internal */, + 8D07F2BF0486CC7A007CD1D0 /* Resources */, + 444D117214A2628F009FEC3F /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 40C44AE60E379922008FCC51 /* PBXTargetDependency */, + 408BEC101046CFE900DEF522 /* PBXTargetDependency */, + 40C8499C101A36DC0083642A /* PBXTargetDependency */, + ); + name = "gtest-framework"; + productInstallPath = "$(HOME)/Library/Frameworks"; + productName = gtest; + productReference = 4539C8FF0EC27F6400A70F4C /* gtest.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "gtest" */; + compatibilityVersion = "Xcode 2.4"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + en, + ); + mainGroup = 0867D691FE84028FC02AAC07 /* gtest */; + productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D07F2BC0486CC7A007CD1D0 /* gtest-framework */, + 40C848F9101A209C0083642A /* gtest-static */, + 40C8490A101A217E0083642A /* gtest_main-static */, + 40899F420FFA7184000B29AE /* gtest_unittest-framework */, + 40C8497A101A36850083642A /* gtest_unittest-static */, + 4089A0120FFACEFC000B29AE /* sample1_unittest-framework */, + 40C84989101A36A60083642A /* sample1_unittest-static */, + 3B238F5F0E828B5400846E11 /* Check */, + 40C44ADC0E3798F4008FCC51 /* Version Info */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D07F2BF0486CC7A007CD1D0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 404884AC0E2F7CD900CF7658 /* CHANGES in Resources */, + 404884AD0E2F7CD900CF7658 /* CONTRIBUTORS in Resources */, + 404884AE0E2F7CD900CF7658 /* COPYING in Resources */, + 40C84978101A36540083642A /* libgtest_main.a in Resources */, + 404884500E2F799B00CF7658 /* README in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B238F5E0E828B5400846E11 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Remember, this \"Run Script\" build phase will be executed from $SRCROOT\n/bin/bash Scripts/runtests.sh"; + }; + 40C44ADB0E3798F4008FCC51 /* Generate Version.h */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/Scripts/versiongenerate.py", + "$(SRCROOT)/../configure.ac", + ); + name = "Generate Version.h"; + outputPaths = ( + "$(PROJECT_TEMP_DIR)/Version.h", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Remember, this \"Run Script\" build phase will be executed from $SRCROOT\n/usr/bin/python Scripts/versiongenerate.py ../ $PROJECT_TEMP_DIR"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 40899F400FFA7184000B29AE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 40899F530FFA72A0000B29AE /* gtest_unittest.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4089A0100FFACEFC000B29AE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4089A0440FFAD1BE000B29AE /* sample1.cc in Sources */, + 4089A0460FFAD1BE000B29AE /* sample1_unittest.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 40C848F7101A209C0083642A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C848FF101A21150083642A /* gtest-all.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 40C84908101A217E0083642A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C84915101A21DF0083642A /* gtest_main.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 40C8497F101A36850083642A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C84980101A36850083642A /* gtest_unittest.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 40C8498E101A36A60083642A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C8498F101A36A60083642A /* sample1.cc in Sources */, + 40C84990101A36A60083642A /* sample1_unittest.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8D07F2C10486CC7A007CD1D0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 40899F3A0FFA70D4000B29AE /* gtest-all.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 40899F9D0FFA740F000B29AE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40899F420FFA7184000B29AE /* gtest_unittest-framework */; + targetProxy = 40899F9C0FFA740F000B29AE /* PBXContainerItemProxy */; + }; + 4089A0980FFAD34A000B29AE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4089A0120FFACEFC000B29AE /* sample1_unittest-framework */; + targetProxy = 4089A0970FFAD34A000B29AE /* PBXContainerItemProxy */; + }; + 408BEC101046CFE900DEF522 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C848F9101A209C0083642A /* gtest-static */; + targetProxy = 408BEC0F1046CFE900DEF522 /* PBXContainerItemProxy */; + }; + 40C44AE60E379922008FCC51 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C44ADC0E3798F4008FCC51 /* Version Info */; + targetProxy = 40C44AE50E379922008FCC51 /* PBXContainerItemProxy */; + }; + 40C8497B101A36850083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C848F9101A209C0083642A /* gtest-static */; + targetProxy = 40C8497C101A36850083642A /* PBXContainerItemProxy */; + }; + 40C8497D101A36850083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C8490A101A217E0083642A /* gtest_main-static */; + targetProxy = 40C8497E101A36850083642A /* PBXContainerItemProxy */; + }; + 40C8498A101A36A60083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C848F9101A209C0083642A /* gtest-static */; + targetProxy = 40C8498B101A36A60083642A /* PBXContainerItemProxy */; + }; + 40C8498C101A36A60083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C8490A101A217E0083642A /* gtest_main-static */; + targetProxy = 40C8498D101A36A60083642A /* PBXContainerItemProxy */; + }; + 40C8499C101A36DC0083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C8490A101A217E0083642A /* gtest_main-static */; + targetProxy = 40C8499B101A36DC0083642A /* PBXContainerItemProxy */; + }; + 40C8499E101A36E50083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8D07F2BC0486CC7A007CD1D0 /* gtest-framework */; + targetProxy = 40C8499D101A36E50083642A /* PBXContainerItemProxy */; + }; + 40C849A0101A36F10083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8D07F2BC0486CC7A007CD1D0 /* gtest-framework */; + targetProxy = 40C8499F101A36F10083642A /* PBXContainerItemProxy */; + }; + 40C849F7101A43440083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C8497A101A36850083642A /* gtest_unittest-static */; + targetProxy = 40C849F6101A43440083642A /* PBXContainerItemProxy */; + }; + 40C849F9101A43490083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C84989101A36A60083642A /* sample1_unittest-static */; + targetProxy = 40C849F8101A43490083642A /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 3B238F600E828B5400846E11 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + PRODUCT_NAME = Check; + }; + name = Debug; + }; + 3B238F610E828B5400846E11 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + PRODUCT_NAME = Check; + ZERO_LINK = NO; + }; + name = Release; + }; + 40899F450FFA7185000B29AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "gtest_unittest-framework"; + }; + name = Debug; + }; + 40899F460FFA7185000B29AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "gtest_unittest-framework"; + }; + name = Release; + }; + 4089A0150FFACEFD000B29AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "sample1_unittest-framework"; + }; + name = Debug; + }; + 4089A0160FFACEFD000B29AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "sample1_unittest-framework"; + }; + name = Release; + }; + 40C44ADF0E3798F4008FCC51 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = gtest; + TARGET_NAME = gtest; + }; + name = Debug; + }; + 40C44AE00E3798F4008FCC51 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = gtest; + TARGET_NAME = gtest; + }; + name = Release; + }; + 40C848FB101A209D0083642A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */; + buildSettings = { + GCC_INLINES_ARE_PRIVATE_EXTERN = YES; + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + PRODUCT_NAME = gtest; + }; + name = Debug; + }; + 40C848FC101A209D0083642A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */; + buildSettings = { + GCC_INLINES_ARE_PRIVATE_EXTERN = YES; + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + PRODUCT_NAME = gtest; + }; + name = Release; + }; + 40C8490E101A217F0083642A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */; + buildSettings = { + PRODUCT_NAME = gtest_main; + }; + name = Debug; + }; + 40C8490F101A217F0083642A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */; + buildSettings = { + PRODUCT_NAME = gtest_main; + }; + name = Release; + }; + 40C84985101A36850083642A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = gtest_unittest; + }; + name = Debug; + }; + 40C84986101A36850083642A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = gtest_unittest; + }; + name = Release; + }; + 40C84995101A36A60083642A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "sample1_unittest-static"; + }; + name = Debug; + }; + 40C84996101A36A60083642A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "sample1_unittest-static"; + }; + name = Release; + }; + 44C48E0414A409DE00A2D9C7 /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 44C48DFF14A4098F00A2D9C7 /* ProductionProject.xcconfig */; + buildSettings = { + }; + name = Production; + }; + 44C48E0514A409DE00A2D9C7 /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40D4CDF20E30E07400294801 /* FrameworkTarget.xcconfig */; + buildSettings = { + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + INFOPLIST_FILE = Resources/Info.plist; + INFOPLIST_PREFIX_HEADER = "$(PROJECT_TEMP_DIR)/Version.h"; + INFOPLIST_PREPROCESS = YES; + PRODUCT_NAME = gtest; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Production; + }; + 44C48E0614A409DE00A2D9C7 /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */; + buildSettings = { + GCC_INLINES_ARE_PRIVATE_EXTERN = YES; + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + PRODUCT_NAME = gtest; + }; + name = Production; + }; + 44C48E0714A409DE00A2D9C7 /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */; + buildSettings = { + PRODUCT_NAME = gtest_main; + }; + name = Production; + }; + 44C48E0814A409DE00A2D9C7 /* Production */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "gtest_unittest-framework"; + }; + name = Production; + }; + 44C48E0914A409DE00A2D9C7 /* Production */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = gtest_unittest; + }; + name = Production; + }; + 44C48E0A14A409DE00A2D9C7 /* Production */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "sample1_unittest-framework"; + }; + name = Production; + }; + 44C48E0B14A409DE00A2D9C7 /* Production */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "sample1_unittest-static"; + }; + name = Production; + }; + 44C48E0C14A409DE00A2D9C7 /* Production */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + PRODUCT_NAME = Check; + ZERO_LINK = NO; + }; + name = Production; + }; + 44C48E0D14A409DE00A2D9C7 /* Production */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = gtest; + TARGET_NAME = gtest; + }; + name = Production; + }; + 4FADC24308B4156D00ABE55E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40D4CDF20E30E07400294801 /* FrameworkTarget.xcconfig */; + buildSettings = { + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + INFOPLIST_FILE = Resources/Info.plist; + INFOPLIST_PREFIX_HEADER = "$(PROJECT_TEMP_DIR)/Version.h"; + INFOPLIST_PREPROCESS = YES; + PRODUCT_NAME = gtest; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 4FADC24408B4156D00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40D4CDF20E30E07400294801 /* FrameworkTarget.xcconfig */; + buildSettings = { + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + INFOPLIST_FILE = Resources/Info.plist; + INFOPLIST_PREFIX_HEADER = "$(PROJECT_TEMP_DIR)/Version.h"; + INFOPLIST_PREPROCESS = YES; + PRODUCT_NAME = gtest; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 4FADC24708B4156D00ABE55E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40D4CDF10E30E07400294801 /* DebugProject.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + 4FADC24808B4156D00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40D4CDF40E30E07400294801 /* ReleaseProject.xcconfig */; + buildSettings = { + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3B238FA30E828BB600846E11 /* Build configuration list for PBXAggregateTarget "Check" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3B238F600E828B5400846E11 /* Debug */, + 3B238F610E828B5400846E11 /* Release */, + 44C48E0C14A409DE00A2D9C7 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 40899F4A0FFA71BC000B29AE /* Build configuration list for PBXNativeTarget "gtest_unittest-framework" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 40899F450FFA7185000B29AE /* Debug */, + 40899F460FFA7185000B29AE /* Release */, + 44C48E0814A409DE00A2D9C7 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 4089A0240FFACF01000B29AE /* Build configuration list for PBXNativeTarget "sample1_unittest-framework" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4089A0150FFACEFD000B29AE /* Debug */, + 4089A0160FFACEFD000B29AE /* Release */, + 44C48E0A14A409DE00A2D9C7 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 40C44AE40E379905008FCC51 /* Build configuration list for PBXAggregateTarget "Version Info" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 40C44ADF0E3798F4008FCC51 /* Debug */, + 40C44AE00E3798F4008FCC51 /* Release */, + 44C48E0D14A409DE00A2D9C7 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 40C84902101A212E0083642A /* Build configuration list for PBXNativeTarget "gtest-static" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 40C848FB101A209D0083642A /* Debug */, + 40C848FC101A209D0083642A /* Release */, + 44C48E0614A409DE00A2D9C7 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 40C84912101A21D20083642A /* Build configuration list for PBXNativeTarget "gtest_main-static" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 40C8490E101A217F0083642A /* Debug */, + 40C8490F101A217F0083642A /* Release */, + 44C48E0714A409DE00A2D9C7 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 40C84984101A36850083642A /* Build configuration list for PBXNativeTarget "gtest_unittest-static" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 40C84985101A36850083642A /* Debug */, + 40C84986101A36850083642A /* Release */, + 44C48E0914A409DE00A2D9C7 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 40C84994101A36A60083642A /* Build configuration list for PBXNativeTarget "sample1_unittest-static" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 40C84995101A36A60083642A /* Debug */, + 40C84996101A36A60083642A /* Release */, + 44C48E0B14A409DE00A2D9C7 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "gtest-framework" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC24308B4156D00ABE55E /* Debug */, + 4FADC24408B4156D00ABE55E /* Release */, + 44C48E0514A409DE00A2D9C7 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "gtest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC24708B4156D00ABE55E /* Debug */, + 4FADC24808B4156D00ABE55E /* Release */, + 44C48E0414A409DE00A2D9C7 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/Source/WTF/WTF.pri b/Source/WTF/WTF.pri index bb130f6a429..b4f7765ac5f 100644 --- a/Source/WTF/WTF.pri +++ b/Source/WTF/WTF.pri @@ -49,4 +49,4 @@ mac { } # MSVC is lacking stdint.h as well as inttypes.h. -win32-msvc*|win32-icc|wince*: INCLUDEPATH += $$ROOT_WEBKIT_DIR/Source/JavaScriptCore/os-win32 +win32-msvc2005|win32-msvc2008|win32-msvc2010|win32-msvc2012|win32-msvc2013|win32-icc|wince*: INCLUDEPATH += $$ROOT_WEBKIT_DIR/Source/JavaScriptCore/os-win32 diff --git a/Source/WTF/WTF.vcxproj/WTF.make b/Source/WTF/WTF.vcxproj/WTF.make new file mode 100644 index 00000000000..4ae0ee4cd3e --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTF.make @@ -0,0 +1,18 @@ +!IF defined(BUILDSTYLE) && "$(BUILDSTYLE)"=="DEBUG" +BUILDSTYLE=DebugSuffix +!ELSE +BUILDSTYLE=Production +!ENDIF + +install: + set OFFICIAL_BUILD=1 + set WebKit_Libraries=$(SRCROOT)\AppleInternal + set WebKit_OutputDir=$(OBJROOT) + set ProgramFilesAAS=Program Files (x86)\Common Files\Apple\Apple Application Support + set Path=%PATH%;$(SRCROOT)\%ProgramFilesAAS% + set ConfigurationBuildDir=$(OBJROOT)\$(BUILDSTYLE) + devenv "WTF.submit.sln" /clean $(BUILDSTYLE) + devenv "WTF.submit.sln" /build $(BUILDSTYLE) + xcopy "%ConfigurationBuildDir%\include\*" "$(DSTROOT)\AppleInternal\include\" /e/v/i/h/y + xcopy "%ConfigurationBuildDir%\lib32\*" "$(DSTROOT)\AppleInternal\lib32\" /e/v/i/h/y + xcopy "%ConfigurationBuildDir%\bin32\*" "$(DSTROOT)\%ProgramFilesAAS%" /e/v/i/h/y \ No newline at end of file diff --git a/Source/WTF/WTF.vcxproj/WTF.submit.sln b/Source/WTF/WTF.vcxproj/WTF.submit.sln new file mode 100644 index 00000000000..aa5a07d9dc9 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTF.submit.sln @@ -0,0 +1,36 @@ +锘 +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WTFGenerated", "WTFGenerated.vcxproj", "{F7366596-0520-4433-B8FF-D843E31E5199}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WTF", "WTF.vcxproj", "{8EF73779-BED3-45BB-816D-9FF58399AFA5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + DebugSuffix|Win32 = DebugSuffix|Win32 + Production|Win32 = Production|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F7366596-0520-4433-B8FF-D843E31E5199}.Debug|Win32.ActiveCfg = Debug|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.Debug|Win32.Build.0 = Debug|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.DebugSuffix|Win32.ActiveCfg = DebugSuffix|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.DebugSuffix|Win32.Build.0 = DebugSuffix|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.Production|Win32.ActiveCfg = Production|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.Production|Win32.Build.0 = Production|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.Release|Win32.ActiveCfg = Release|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.Release|Win32.Build.0 = Release|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Debug|Win32.ActiveCfg = Debug|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Debug|Win32.Build.0 = Debug|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.DebugSuffix|Win32.ActiveCfg = DebugSuffix|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.DebugSuffix|Win32.Build.0 = DebugSuffix|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Production|Win32.ActiveCfg = Production|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Production|Win32.Build.0 = Production|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Release|Win32.ActiveCfg = Release|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Source/WTF/WTF.vcxproj/WTF.vcxproj b/Source/WTF/WTF.vcxproj/WTF.vcxproj new file mode 100644 index 00000000000..15ed0962459 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTF.vcxproj @@ -0,0 +1,736 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {f7366596-0520-4433-b8ff-d843e31e5199} + + + + {8EF73779-BED3-45BB-816D-9FF58399AFA5} + Win32Proj + WTFvcproj + WTF + + + + DynamicLibrary + true + Unicode + + + DynamicLibrary + true + Unicode + + + DynamicLibrary + true + Unicode + + + DynamicLibrary + true + Unicode + + + DynamicLibrary + true + Unicode + + + DynamicLibrary + true + Unicode + + + DynamicLibrary + false + Unicode + + + DynamicLibrary + false + Unicode + + + DynamicLibrary + false + Unicode + + + DynamicLibrary + false + Unicode + + + DynamicLibrary + false + Unicode + + + DynamicLibrary + false + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WIN32;_LIB;%(PreprocessorDefinitions) + + + Windows + true + + + + $(OutDir)\$(ProjectName).lib + + + + + + + + + + + + + + + + + + $(OutDir)\$(TargetName).bsc + + + + + + + + + + + + + WIN32;_LIB;%(PreprocessorDefinitions) + + + Windows + true + + + + $(OutDir)\$(ProjectName).lib + + + + + + + + + + + + + + + + + + $(OutDir)\$(TargetName).bsc + + + + + + + + + + + + + WIN32;_LIB;%(PreprocessorDefinitions) + + + Windows + true + + + + $(OutDir)\$(ProjectName).lib + + + + + + + + + + + + + + + + + + $(OutDir)\$(TargetName).bsc + + + + + + + + + + + + + WIN32;_LIB;%(PreprocessorDefinitions) + + + Windows + true + + + + $(OutDir)\$(ProjectName).lib + + + + + + + + + + + + + + + + + + $(OutDir)\$(TargetName).bsc + + + + + + + + + + + + + WIN32;_LIB;%(PreprocessorDefinitions) + + + Windows + true + + + + + + + + + + + + + + + + + + + + $(OutDir)\$(TargetName).bsc + + + + + + + + + + + + + WIN32;_LIB;%(PreprocessorDefinitions) + + + Windows + true + + + + + + + + + + + + + + + + + + + + $(OutDir)\$(TargetName).bsc + + + + + + + + + + + Windows + true + true + true + + + + + + + + + + + Windows + true + true + true + + + + + + + + + + + Windows + true + true + true + + + + + + + + + + + Windows + true + true + true + + + + + + + + + + + Windows + true + true + true + + + + + + + + + + + Windows + true + true + true + + + + + + \ No newline at end of file diff --git a/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters b/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters new file mode 100644 index 00000000000..c0e4f722fe6 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters @@ -0,0 +1,707 @@ +锘 + + + + {b7d787cb-2b2b-4898-8d03-b94115e596d1} + + + {eaa36939-1976-495f-b9ed-90074ee4f2be} + + + {c59a3c5d-6352-441c-acf9-9bbe1957a0f8} + + + {5c8eb2f2-873f-4915-869c-d4713c7adca0} + + + {978a0e93-7937-4a85-9fd1-76319fbd9d78} + + + {d9afa800-d0b4-4284-a99d-334a5ce3d252} + + + {805e00d3-198a-44a5-8c0c-849ce6ca3252} + + + {da29baba-10a2-4a74-ab87-2fea5e1382da} + + + + + dtoa + + + dtoa + + + dtoa + + + dtoa + + + dtoa + + + dtoa + + + dtoa + + + dtoa + + + dtoa + + + text + + + text + + + text + + + text + + + text + + + text + + + text + + + win + + + win + + + threads\win + + + threads + + + wtf + + + wtf\unicode\icu + + + wtf\unicode + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + + + + + dtoa + + + dtoa + + + dtoa + + + dtoa + + + dtoa + + + dtoa + + + dtoa + + + dtoa + + + dtoa + + + dtoa + + + dtoa + + + text + + + text + + + text + + + text + + + text + + + text + + + text + + + text + + + text + + + text + + + text + + + text + + + text + + + text + + + text + + + threads + + + wtf + + + wtf + + + wtf\unicode\icu + + + wtf\unicode + + + wtf\unicode + + + wtf\unicode + + + wtf\unicode + + + wtf\unicode + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + wtf + + + + + wtf + + + + + + + \ No newline at end of file diff --git a/Source/WTF/WTF.vcxproj/WTFCFLite.props b/Source/WTF/WTF.vcxproj/WTFCFLite.props new file mode 100644 index 00000000000..d2cb6019128 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFCFLite.props @@ -0,0 +1,12 @@ +锘 + + + <_ProjectFileVersion>10.0.40219.1 + <_PropertySheetDisplayName>WebKitCFLite + + + + CFLite.lib;%(AdditionalDependencies) + + + diff --git a/Source/WTF/WTF.vcxproj/WTFCommon.props b/Source/WTF/WTF.vcxproj/WTFCommon.props new file mode 100644 index 00000000000..4dff43b8120 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFCommon.props @@ -0,0 +1,29 @@ +锘 + + + + + + + ../;../wtf/;../wtf/threads/;../wtf/unicode/;$(ConfigurationBuildDir)\include\private;$(ConfigurationBuildDir)\include\JavaScriptCore;$(WebKit_Libraries)\include\private;$(WebKit_Libraries)\include;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;__STD_C;_LIB;%(PreprocessorDefinitions) + ICUVersion.h;%(ForcedIncludeFiles) + %(DisableSpecificWarnings) + + + + + user32.lib;%(AdditionalDependencies) + $(OutDir)\$(ProjectName).lib + false + true + Windows + + + $(OutDir)\$(TargetName).bsc + + + winmm.lib;libicuuc$(DebugSuffix).lib;libicuin$(DebugSuffix).lib;%(AdditionalDependencies) + + + \ No newline at end of file diff --git a/Source/WTF/WTF.vcxproj/WTFCoreFoundation.props b/Source/WTF/WTF.vcxproj/WTFCoreFoundation.props new file mode 100644 index 00000000000..6335f2b12cf --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFCoreFoundation.props @@ -0,0 +1,10 @@ +锘 + + + + + + CoreFoundation$(DebugSuffix).lib;%(AdditionalDependencies) + + + diff --git a/Source/WTF/WTF.vcxproj/WTFDebug.props b/Source/WTF/WTF.vcxproj/WTFDebug.props new file mode 100644 index 00000000000..3255b164de6 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFDebug.props @@ -0,0 +1,15 @@ +锘 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WTF/WTF.vcxproj/WTFDebugWinCairo.props b/Source/WTF/WTF.vcxproj/WTFDebugWinCairo.props new file mode 100644 index 00000000000..41646b1d179 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFDebugWinCairo.props @@ -0,0 +1,15 @@ +锘 + + + + + + + + + + + + + + diff --git a/Source/WTF/WTF.vcxproj/WTFGenerated.make b/Source/WTF/WTF.vcxproj/WTFGenerated.make new file mode 100644 index 00000000000..81aaeca9893 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFGenerated.make @@ -0,0 +1,25 @@ +all: WTFHeaderDetection.h + touch "%ConfigurationBuildDir%\buildfailed" + bash build-generated-files.sh "%ConfigurationBuildDir%" "$(WEBKIT_LIBRARIES)" "$(DEBUGSUFFIX)" +!IF "$(OFFICIAL_BUILD)"!="1" + bash -c "python work-around-vs-dependency-tracking-bugs.py" +!ENDIF + copy-files.cmd + + -del "%ConfigurationBuildDir%\buildfailed" + +clean: + -del "%ConfigurationBuildDir%\buildfailed" + -del "%ConfigurationBuildDir%\include\private\wtf\WTFHeaderDetection.h" + copy-files.cmd clean + +# Header detection +WTFHeaderDetection.h: WTFGenerated.make + -mkdir "%ConfigurationBuildDir%\include\private\wtf + < "%ConfigurationBuildDir%\include\private\wtf\$@" +IF EXIST "$(WEBKIT_LIBRARIES)/include/AVFoundationCF/AVCFPlayerItemLegibleOutput.h" (echo #define __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ 1090 > "%ConfigurationBuildDir%\include\private\wtf\$@") +:DONE +<< + diff --git a/Source/WTF/WTF.vcxproj/WTFGenerated.vcxproj b/Source/WTF/WTF.vcxproj/WTFGenerated.vcxproj new file mode 100644 index 00000000000..182c9e2737a --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFGenerated.vcxproj @@ -0,0 +1,241 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + + + + + + + {F7366596-0520-4433-B8FF-D843E31E5199} + MakeFileProj + + + + Makefile + true + + + Makefile + true + + + Makefile + true + + + Makefile + true + + + Makefile + true + + + Makefile + true + + + Makefile + false + + + Makefile + false + + + Makefile + false + + + Makefile + false + + + Makefile + false + + + Makefile + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WTF/WTF.vcxproj/WTFGenerated.vcxproj.filters b/Source/WTF/WTF.vcxproj/WTFGenerated.vcxproj.filters new file mode 100644 index 00000000000..bfaf74c4196 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFGenerated.vcxproj.filters @@ -0,0 +1,9 @@ +锘 + + + + + + + + \ No newline at end of file diff --git a/Source/WTF/WTF.vcxproj/WTFGeneratedCommon.props b/Source/WTF/WTF.vcxproj/WTFGeneratedCommon.props new file mode 100644 index 00000000000..7fa4f58e5af --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFGeneratedCommon.props @@ -0,0 +1,15 @@ +锘 + + + + + + + + $(ConfigurationBuildDir)\lib32\ + + + + + + \ No newline at end of file diff --git a/Source/WTF/WTF.vcxproj/WTFGeneratedDebug.props b/Source/WTF/WTF.vcxproj/WTFGeneratedDebug.props new file mode 100644 index 00000000000..ec9d570a911 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFGeneratedDebug.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WTF/WTF.vcxproj/WTFGeneratedProduction.props b/Source/WTF/WTF.vcxproj/WTFGeneratedProduction.props new file mode 100644 index 00000000000..7b1fc518639 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFGeneratedProduction.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WTF/WTF.vcxproj/WTFGeneratedRelease.props b/Source/WTF/WTF.vcxproj/WTFGeneratedRelease.props new file mode 100644 index 00000000000..3317437db0b --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFGeneratedRelease.props @@ -0,0 +1,12 @@ +锘 + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WTF/WTF.vcxproj/WTFPostBuild.cmd b/Source/WTF/WTF.vcxproj/WTFPostBuild.cmd new file mode 100644 index 00000000000..26707cac614 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFPostBuild.cmd @@ -0,0 +1 @@ +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/WTF/WTF.vcxproj/WTFPreBuild.cmd b/Source/WTF/WTF.vcxproj/WTFPreBuild.cmd new file mode 100644 index 00000000000..a7707767487 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFPreBuild.cmd @@ -0,0 +1,6 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/WTF/WTF.vcxproj/WTFProduction.props b/Source/WTF/WTF.vcxproj/WTFProduction.props new file mode 100644 index 00000000000..65e829c46e8 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFProduction.props @@ -0,0 +1,14 @@ +锘 + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WTF/WTF.vcxproj/WTFRelease.props b/Source/WTF/WTF.vcxproj/WTFRelease.props new file mode 100644 index 00000000000..0491423ee78 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFRelease.props @@ -0,0 +1,14 @@ +锘 + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WTF/WTF.vcxproj/WTFReleaseWinCairo.props b/Source/WTF/WTF.vcxproj/WTFReleaseWinCairo.props new file mode 100644 index 00000000000..df784a1595f --- /dev/null +++ b/Source/WTF/WTF.vcxproj/WTFReleaseWinCairo.props @@ -0,0 +1,14 @@ +锘 + + + + + + + + + + + + + diff --git a/Source/WTF/WTF.vcxproj/build-generated-files.sh b/Source/WTF/WTF.vcxproj/build-generated-files.sh new file mode 100644 index 00000000000..9fd40e30b40 --- /dev/null +++ b/Source/WTF/WTF.vcxproj/build-generated-files.sh @@ -0,0 +1,11 @@ +#!/usr/bin/bash + +# Determine whether we have the versioned ICU 4.0 or the unversioned ICU 4.4 +UNVERSIONED_ICU_LIB_PATH=$(cygpath -u "${WEBKIT_LIBRARIES}/lib32/libicuuc${3}.lib") +ICUVERSION_H_PATH=$(cygpath -u "${CONFIGURATIONBUILDDIR}/include/private/ICUVersion.h") +if test \( ! -f "${ICUVERSION_H_PATH}" \) -o \( -f "${UNVERSIONED_ICU_LIB_PATH}" -a \( "${UNVERSIONED_ICU_LIB_PATH}" -nt "${ICUVERSION_H_PATH}" \) \) +then + mkdir -p "$(dirname "${ICUVERSION_H_PATH}")" + test ! -f "${UNVERSIONED_ICU_LIB_PATH}" + echo "#define U_DISABLE_RENAMING $?" > "${ICUVERSION_H_PATH}" +fi diff --git a/Source/WTF/WTF.vcxproj/copy-files.cmd b/Source/WTF/WTF.vcxproj/copy-files.cmd new file mode 100755 index 00000000000..4ce66eeba2b --- /dev/null +++ b/Source/WTF/WTF.vcxproj/copy-files.cmd @@ -0,0 +1,40 @@ +@echo off + +setlocal +REM limit path to DOS-only for this file to avoid confusion between DOS rmdir and Cygwin's variant +set PATH=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem +set PrivateHeadersDirectory=%CONFIGURATIONBUILDDIR%\include\private + +if "%1" EQU "clean" goto :clean +if "%1" EQU "rebuild" call :clean + +for %%d in ( + wtf + wtf\dtoa + wtf\text + wtf\threads + wtf\unicode + wtf\unicode\icu +) do ( + mkdir "%PrivateHeadersDirectory%\%%d" 2>NUL + xcopy /y /d ..\%%d\*.h "%PrivateHeadersDirectory%\%%d" >NUL +) + +echo Copying other files... +for %%f in ( + ..\JavaScriptCore\create_hash_table + wtf\text\AtomicString.cpp + wtf\text\StringBuilder.cpp + wtf\text\StringImpl.cpp + wtf\text\WTFString.cpp +) do ( + echo F | xcopy /y /d ..\%%f "%PrivateHeadersDirectory%\%%f" >NUL +) + +goto :EOF + +:clean + +echo Deleting copied files... +if exist "%PrivateHeadersDirectory%" rmdir /s /q "%PrivateHeadersDirectory%" >NUL +endlocal diff --git a/Source/WTF/WTF.vcxproj/work-around-vs-dependency-tracking-bugs.py b/Source/WTF/WTF.vcxproj/work-around-vs-dependency-tracking-bugs.py new file mode 100644 index 00000000000..51d650f7fbc --- /dev/null +++ b/Source/WTF/WTF.vcxproj/work-around-vs-dependency-tracking-bugs.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python + +import glob +import os +import re +import sys + + +# It's fragile to rely on the location of this script to find the top-level +# source directory. +TOP_LEVEL_DIRECTORY = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) +WEBKIT_LIBRARIES = os.environ['WEBKIT_LIBRARIES']; + +def main(): + react_to_vsprops_changes() + react_to_webkit1_interface_changes() + + +def react_to_vsprops_changes(): + vsprops_directory = os.path.join(WEBKIT_LIBRARIES, 'tools', 'vsprops') + newest_vsprops_time = mtime_of_newest_file_matching_glob(os.path.join(vsprops_directory, '*.props')) + + obj_directory = os.path.join(os.environ['CONFIGURATIONBUILDDIR'], 'obj32') + + # Visual Studio isn't smart enough to figure out it needs to rebuild these file types when + # .vsprops files change (even if we touch wtf/Platform.h below), so we delete them to force them + # to be rebuilt. + for extension in ('dep', 'manifest', 'pch', 'res'): + for filepath in glob.iglob(os.path.join(obj_directory, '*', '*.%s' % extension)): + delete_if_older_than(filepath, newest_vsprops_time) + + # Touch wtf/Platform.h so all files will be recompiled. This is necessary + # to pick up changes to preprocessor macros (e.g., ENABLE_*). + wtf_platform_h = os.path.join(TOP_LEVEL_DIRECTORY, 'Source', 'WTF', 'wtf', 'Platform.h') + touch_if_older_than(wtf_platform_h, newest_vsprops_time) + + +def react_to_webkit1_interface_changes(): + interfaces_directory = os.path.join(TOP_LEVEL_DIRECTORY, 'Source', 'WebKit', 'win', 'Interfaces') + newest_idl_time = mtime_of_newest_file_matching_glob(os.path.join(interfaces_directory, '*.idl')) + # WebKit.idl includes all the other IDL files, so needs to be rebuilt if any IDL file changes. + # But Visual Studio isn't smart enough to figure this out, so we touch WebKit.idl to ensure that + # it gets rebuilt. + touch_if_older_than(os.path.join(interfaces_directory, 'WebKit.idl'), newest_idl_time) + + +def mtime_of_newest_file_matching_glob(glob_pattern): + files = glob.glob(glob_pattern) + assert len(files), "Couldn't find any files matching glob %s" % glob_pattern + return max(map(os.path.getmtime, files)) + + +def delete_if_older_than(path, reference_time): + if os.path.getmtime(path) < reference_time: + print 'Deleting %s' % path + os.remove(path) + + +def touch_if_older_than(path, reference_time): + if os.path.getmtime(path) < reference_time: + print 'Touching %s' % path + os.utime(path, None) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/Source/WTF/WTF.xcodeproj/project.pbxproj b/Source/WTF/WTF.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..5789c3f4266 --- /dev/null +++ b/Source/WTF/WTF.xcodeproj/project.pbxproj @@ -0,0 +1,1359 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXAggregateTarget section */ + 65AFA16F1630B977003D723C /* Copy WTF Headers */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 65AFA2881630B977003D723C /* Build configuration list for PBXAggregateTarget "Copy WTF Headers" */; + buildPhases = ( + 65AFA1701630B977003D723C /* Copy WTF Headers */, + ); + dependencies = ( + ); + name = "Copy WTF Headers"; + productName = "Copy WTF Headers"; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 0F87105A16643F190090B0AD /* RawPointer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F87105916643F190090B0AD /* RawPointer.h */; }; + 0F9D3360165DBA73005AD387 /* FilePrintStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F9D335B165DBA73005AD387 /* FilePrintStream.cpp */; }; + 0F9D3361165DBA73005AD387 /* FilePrintStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F9D335C165DBA73005AD387 /* FilePrintStream.h */; }; + 0F9D3362165DBA73005AD387 /* PrintStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F9D335D165DBA73005AD387 /* PrintStream.cpp */; }; + 0F9D3363165DBA73005AD387 /* PrintStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F9D335E165DBA73005AD387 /* PrintStream.h */; }; + 0FC4488316FE9FE100844BE9 /* ProcessID.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC4488216FE9FE100844BE9 /* ProcessID.h */; }; + 0FC4EDE61696149600F65041 /* CommaPrinter.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC4EDE51696149600F65041 /* CommaPrinter.h */; }; + 0FD81AC5154FB22E00983E72 /* FastBitVector.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD81AC4154FB22E00983E72 /* FastBitVector.h */; settings = {ATTRIBUTES = (); }; }; + 0FDDBFA71666DFA300C55FEF /* StringPrintStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FDDBFA51666DFA300C55FEF /* StringPrintStream.cpp */; }; + 0FDDBFA81666DFA300C55FEF /* StringPrintStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FDDBFA61666DFA300C55FEF /* StringPrintStream.h */; }; + 143F611F1565F0F900DB514A /* RAMSize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 143F611D1565F0F900DB514A /* RAMSize.cpp */; }; + 143F61201565F0F900DB514A /* RAMSize.h in Headers */ = {isa = PBXBuildFile; fileRef = 143F611E1565F0F900DB514A /* RAMSize.h */; settings = {ATTRIBUTES = (); }; }; + 1469419216EAAF6D0024E146 /* RunLoopTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1469419016EAAF6D0024E146 /* RunLoopTimer.h */; settings = {ATTRIBUTES = (); }; }; + 1469419316EAAF6D0024E146 /* RunLoopTimerCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1469419116EAAF6D0024E146 /* RunLoopTimerCF.cpp */; }; + 1469419616EAAFF80024E146 /* SchedulePair.h in Headers */ = {isa = PBXBuildFile; fileRef = 1469419416EAAFF80024E146 /* SchedulePair.h */; settings = {ATTRIBUTES = (); }; }; + 1469419716EAAFF80024E146 /* SchedulePairMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1469419516EAAFF80024E146 /* SchedulePairMac.mm */; }; + 1469419916EAB0410024E146 /* SchedulePairCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1469419816EAB0410024E146 /* SchedulePairCF.cpp */; }; + 1469419C16EAB10A0024E146 /* AutodrainedPool.h in Headers */ = {isa = PBXBuildFile; fileRef = 1469419A16EAB10A0024E146 /* AutodrainedPool.h */; settings = {ATTRIBUTES = (); }; }; + 1469419D16EAB10A0024E146 /* AutodrainedPoolMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1469419B16EAB10A0024E146 /* AutodrainedPoolMac.mm */; }; + 149EF16316BBFE0D000A4331 /* TriState.h in Headers */ = {isa = PBXBuildFile; fileRef = 149EF16216BBFE0D000A4331 /* TriState.h */; settings = {ATTRIBUTES = (); }; }; + 14F3B0F715E45E4600210069 /* SaturatedArithmetic.h in Headers */ = {isa = PBXBuildFile; fileRef = 14F3B0F615E45E4600210069 /* SaturatedArithmetic.h */; settings = {ATTRIBUTES = (); }; }; + 1A1D8B9C173186CE00141DA4 /* FunctionDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A1D8B9B173186CE00141DA4 /* FunctionDispatcher.h */; }; + 1A1D8B9E1731879800141DA4 /* FunctionDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A1D8B9D1731879800141DA4 /* FunctionDispatcher.cpp */; }; + 1A6BB769162F300500DD16DB /* StreamBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A6BB768162F300500DD16DB /* StreamBuffer.h */; }; + 26147B0A15DDCCDC00DDB907 /* IntegerToStringConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 26147B0815DDCCDC00DDB907 /* IntegerToStringConversion.h */; }; + 2C05385415BC819000F21B96 /* GregorianDateTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C05385315BC819000F21B96 /* GregorianDateTime.h */; }; + 2CCD892A15C0390200285083 /* GregorianDateTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CCD892915C0390200285083 /* GregorianDateTime.cpp */; }; + 44F66008171AFAE600E4AD19 /* EnumClass.h in Headers */ = {isa = PBXBuildFile; fileRef = 44F66007171AFAA900E4AD19 /* EnumClass.h */; }; + 4F0321BC156AA8D1006EBAF6 /* BitArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F0321BB156AA8D1006EBAF6 /* BitArray.h */; }; + 7E29C33E15FFD79B00516D61 /* ObjcRuntimeExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E29C33D15FFD79B00516D61 /* ObjcRuntimeExtras.h */; }; + 8134013815B092FD001FF0B8 /* Base64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8134013615B092FD001FF0B8 /* Base64.cpp */; }; + 8134013915B092FD001FF0B8 /* Base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 8134013715B092FD001FF0B8 /* Base64.h */; }; + 974CFC8E16A4F327006D5404 /* WeakPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 974CFC8D16A4F327006D5404 /* WeakPtr.h */; }; + 9BC70F05176C379D00101DEC /* AtomicStringTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9BC70F04176C379D00101DEC /* AtomicStringTable.cpp */; }; + 9BD8F40B176C2B470002D865 /* AtomicStringTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BD8F40A176C2AD80002D865 /* AtomicStringTable.h */; }; + A876DBD8151816E500DADB95 /* Platform.h in Headers */ = {isa = PBXBuildFile; fileRef = A876DBD7151816E500DADB95 /* Platform.h */; }; + A8A4737F151A825B004123FF /* Alignment.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47254151A825A004123FF /* Alignment.h */; }; + A8A47381151A825B004123FF /* ArrayBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47256151A825A004123FF /* ArrayBuffer.cpp */; }; + A8A47382151A825B004123FF /* ArrayBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47257151A825A004123FF /* ArrayBuffer.h */; }; + A8A47383151A825B004123FF /* ArrayBufferView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47258151A825A004123FF /* ArrayBufferView.cpp */; }; + A8A47384151A825B004123FF /* ArrayBufferView.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47259151A825A004123FF /* ArrayBufferView.h */; }; + A8A47385151A825B004123FF /* ASCIICType.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4725A151A825A004123FF /* ASCIICType.h */; }; + A8A47386151A825B004123FF /* Assertions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A4725B151A825A004123FF /* Assertions.cpp */; }; + A8A47387151A825B004123FF /* Assertions.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4725C151A825A004123FF /* Assertions.h */; }; + A8A47388151A825B004123FF /* Atomics.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4725D151A825A004123FF /* Atomics.h */; }; + A8A47389151A825B004123FF /* AVLTree.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4725E151A825A004123FF /* AVLTree.h */; }; + A8A4738A151A825B004123FF /* Bitmap.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4725F151A825A004123FF /* Bitmap.h */; }; + A8A4738B151A825B004123FF /* BitVector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47260151A825A004123FF /* BitVector.cpp */; }; + A8A4738C151A825B004123FF /* BitVector.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47261151A825A004123FF /* BitVector.h */; }; + A8A4738E151A825B004123FF /* BlockStack.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47264151A825A004123FF /* BlockStack.h */; }; + A8A4738F151A825B004123FF /* BloomFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47265151A825A004123FF /* BloomFilter.h */; }; + A8A47390151A825B004123FF /* BoundsCheckedPointer.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47266151A825A004123FF /* BoundsCheckedPointer.h */; }; + A8A47391151A825B004123FF /* BumpPointerAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47267151A825A004123FF /* BumpPointerAllocator.h */; }; + A8A47394151A825B004123FF /* CheckedArithmetic.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4726A151A825A004123FF /* CheckedArithmetic.h */; }; + A8A47395151A825B004123FF /* CheckedBoolean.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4726B151A825A004123FF /* CheckedBoolean.h */; }; + A8A47398151A825B004123FF /* Compiler.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47270151A825A004123FF /* Compiler.h */; }; + A8A4739A151A825B004123FF /* CryptographicallyRandomNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47273151A825A004123FF /* CryptographicallyRandomNumber.cpp */; }; + A8A4739B151A825B004123FF /* CryptographicallyRandomNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47274151A825A004123FF /* CryptographicallyRandomNumber.h */; }; + A8A4739C151A825B004123FF /* CurrentTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47275151A825A004123FF /* CurrentTime.cpp */; }; + A8A4739D151A825B004123FF /* CurrentTime.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47276151A825A004123FF /* CurrentTime.h */; }; + A8A4739E151A825B004123FF /* DataLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47277151A825A004123FF /* DataLog.cpp */; }; + A8A4739F151A825B004123FF /* DataLog.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47278151A825A004123FF /* DataLog.h */; }; + A8A473A0151A825B004123FF /* DateMath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47279151A825A004123FF /* DateMath.cpp */; }; + A8A473A1151A825B004123FF /* DateMath.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4727A151A825A004123FF /* DateMath.h */; }; + A8A473A2151A825B004123FF /* DecimalNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A4727B151A825A004123FF /* DecimalNumber.cpp */; }; + A8A473A3151A825B004123FF /* DecimalNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4727C151A825A004123FF /* DecimalNumber.h */; }; + A8A473A4151A825B004123FF /* Decoder.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4727D151A825A004123FF /* Decoder.h */; }; + A8A473A5151A825B004123FF /* Deque.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4727E151A825A004123FF /* Deque.h */; }; + A8A473A6151A825B004123FF /* DisallowCType.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4727F151A825A004123FF /* DisallowCType.h */; }; + A8A473A7151A825B004123FF /* DoublyLinkedList.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47280151A825A004123FF /* DoublyLinkedList.h */; }; + A8A473A8151A825B004123FF /* bignum-dtoa.cc in Sources */ = {isa = PBXBuildFile; fileRef = A8A47282151A825A004123FF /* bignum-dtoa.cc */; }; + A8A473A9151A825B004123FF /* bignum-dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47283151A825A004123FF /* bignum-dtoa.h */; }; + A8A473AA151A825B004123FF /* bignum.cc in Sources */ = {isa = PBXBuildFile; fileRef = A8A47284151A825A004123FF /* bignum.cc */; }; + A8A473AB151A825B004123FF /* bignum.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47285151A825A004123FF /* bignum.h */; }; + A8A473AC151A825B004123FF /* cached-powers.cc in Sources */ = {isa = PBXBuildFile; fileRef = A8A47286151A825A004123FF /* cached-powers.cc */; }; + A8A473AD151A825B004123FF /* cached-powers.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47287151A825A004123FF /* cached-powers.h */; }; + A8A473AE151A825B004123FF /* diy-fp.cc in Sources */ = {isa = PBXBuildFile; fileRef = A8A47289151A825A004123FF /* diy-fp.cc */; }; + A8A473AF151A825B004123FF /* diy-fp.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4728A151A825A004123FF /* diy-fp.h */; }; + A8A473B0151A825B004123FF /* double-conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = A8A4728B151A825A004123FF /* double-conversion.cc */; }; + A8A473B1151A825B004123FF /* double-conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4728C151A825A004123FF /* double-conversion.h */; }; + A8A473B2151A825B004123FF /* double.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4728D151A825A004123FF /* double.h */; }; + A8A473B3151A825B004123FF /* fast-dtoa.cc in Sources */ = {isa = PBXBuildFile; fileRef = A8A4728E151A825A004123FF /* fast-dtoa.cc */; }; + A8A473B4151A825B004123FF /* fast-dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4728F151A825A004123FF /* fast-dtoa.h */; }; + A8A473B5151A825B004123FF /* fixed-dtoa.cc in Sources */ = {isa = PBXBuildFile; fileRef = A8A47290151A825A004123FF /* fixed-dtoa.cc */; }; + A8A473B6151A825B004123FF /* fixed-dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47291151A825A004123FF /* fixed-dtoa.h */; }; + A8A473B7151A825B004123FF /* strtod.cc in Sources */ = {isa = PBXBuildFile; fileRef = A8A47294151A825A004123FF /* strtod.cc */; }; + A8A473B8151A825B004123FF /* strtod.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47295151A825A004123FF /* strtod.h */; }; + A8A473B9151A825B004123FF /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47296151A825A004123FF /* utils.h */; }; + A8A473BA151A825B004123FF /* dtoa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47297151A825A004123FF /* dtoa.cpp */; }; + A8A473BB151A825B004123FF /* dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47298151A825A004123FF /* dtoa.h */; }; + A8A473BC151A825B004123FF /* DynamicAnnotations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47299151A825A004123FF /* DynamicAnnotations.cpp */; }; + A8A473BD151A825B004123FF /* DynamicAnnotations.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4729A151A825A004123FF /* DynamicAnnotations.h */; }; + A8A473C0151A825B004123FF /* Encoder.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4729E151A825A004123FF /* Encoder.h */; }; + A8A473C1151A825B004123FF /* ExportMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4729F151A825A004123FF /* ExportMacros.h */; }; + A8A473C2151A825B004123FF /* FastAllocBase.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472A0151A825A004123FF /* FastAllocBase.h */; }; + A8A473C3151A825B004123FF /* FastMalloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A472A1151A825A004123FF /* FastMalloc.cpp */; }; + A8A473C4151A825B004123FF /* FastMalloc.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472A2151A825A004123FF /* FastMalloc.h */; }; + A8A473C5151A825B004123FF /* FixedArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472A3151A825A004123FF /* FixedArray.h */; }; + A8A473C6151A825B004123FF /* Float32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472A4151A825A004123FF /* Float32Array.h */; }; + A8A473C7151A825B004123FF /* Float64Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472A5151A825A004123FF /* Float64Array.h */; }; + A8A473C8151A825B004123FF /* Forward.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472A6151A825A004123FF /* Forward.h */; }; + A8A473C9151A825B004123FF /* Functional.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472A7151A825A004123FF /* Functional.h */; }; + A8A473CA151A825B004123FF /* GetPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472A8151A825A004123FF /* GetPtr.h */; }; + A8A473D3151A825B004123FF /* HashCountedSet.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472B3151A825A004123FF /* HashCountedSet.h */; }; + A8A473D4151A825B004123FF /* HashFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472B4151A825A004123FF /* HashFunctions.h */; }; + A8A473D5151A825B004123FF /* HashIterators.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472B5151A825A004123FF /* HashIterators.h */; }; + A8A473D6151A825B004123FF /* HashMap.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472B6151A825A004123FF /* HashMap.h */; }; + A8A473D7151A825B004123FF /* HashSet.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472B7151A825A004123FF /* HashSet.h */; }; + A8A473D8151A825B004123FF /* HashTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A472B8151A825A004123FF /* HashTable.cpp */; }; + A8A473D9151A825B004123FF /* HashTable.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472B9151A825A004123FF /* HashTable.h */; }; + A8A473DA151A825B004123FF /* HashTraits.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472BA151A825A004123FF /* HashTraits.h */; }; + A8A473DB151A825B004123FF /* HexNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472BB151A825A004123FF /* HexNumber.h */; }; + A8A473DC151A825B004123FF /* InlineASM.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472BC151A825A004123FF /* InlineASM.h */; }; + A8A473DD151A825B004123FF /* Int8Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472BD151A825A004123FF /* Int8Array.h */; }; + A8A473DE151A825B004123FF /* Int16Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472BE151A825A004123FF /* Int16Array.h */; }; + A8A473DF151A825B004123FF /* Int32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472BF151A825A004123FF /* Int32Array.h */; }; + A8A473E0151A825B004123FF /* IntegralTypedArrayBase.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472C0151A825A004123FF /* IntegralTypedArrayBase.h */; }; + A8A473E1151A825B004123FF /* ListHashSet.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472C1151A825A004123FF /* ListHashSet.h */; }; + A8A473E3151A825B004123FF /* Locker.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472C3151A825A004123FF /* Locker.h */; }; + A8A473E4151A825B004123FF /* MainThreadMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = A8A472C5151A825A004123FF /* MainThreadMac.mm */; }; + A8A473E5151A825B004123FF /* MainThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A472C6151A825A004123FF /* MainThread.cpp */; }; + A8A473E6151A825B004123FF /* MainThread.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472C7151A825B004123FF /* MainThread.h */; }; + A8A473E8151A825B004123FF /* MathExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472C9151A825B004123FF /* MathExtras.h */; }; + A8A473E9151A825B004123FF /* MD5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A472CA151A825B004123FF /* MD5.cpp */; }; + A8A473EA151A825B004123FF /* MD5.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472CB151A825B004123FF /* MD5.h */; }; + A8A473EB151A825B004123FF /* MessageQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472CC151A825B004123FF /* MessageQueue.h */; }; + A8A473EC151A825B004123FF /* MetaAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A472CD151A825B004123FF /* MetaAllocator.cpp */; }; + A8A473ED151A825B004123FF /* MetaAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472CE151A825B004123FF /* MetaAllocator.h */; }; + A8A473EE151A825B004123FF /* MetaAllocatorHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472CF151A825B004123FF /* MetaAllocatorHandle.h */; }; + A8A473EF151A825B004123FF /* Noncopyable.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472D0151A825B004123FF /* Noncopyable.h */; }; + A8A473F0151A825B004123FF /* NonCopyingSort.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472D1151A825B004123FF /* NonCopyingSort.h */; }; + A8A473F1151A825B004123FF /* NotFound.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472D2151A825B004123FF /* NotFound.h */; }; + A8A473F2151A825B004123FF /* NullPtr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A472D3151A825B004123FF /* NullPtr.cpp */; }; + A8A473F3151A825B004123FF /* NullPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472D4151A825B004123FF /* NullPtr.h */; }; + A8A473F4151A825B004123FF /* NumberOfCores.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A472D5151A825B004123FF /* NumberOfCores.cpp */; }; + A8A473F5151A825B004123FF /* NumberOfCores.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472D6151A825B004123FF /* NumberOfCores.h */; }; + A8A473F6151A825B004123FF /* OSAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472D7151A825B004123FF /* OSAllocator.h */; }; + A8A473F7151A825B004123FF /* OSAllocatorPosix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A472D8151A825B004123FF /* OSAllocatorPosix.cpp */; }; + A8A473F9151A825B004123FF /* OSRandomSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A472DA151A825B004123FF /* OSRandomSource.cpp */; }; + A8A473FA151A825B004123FF /* OSRandomSource.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472DB151A825B004123FF /* OSRandomSource.h */; }; + A8A473FB151A825B004123FF /* OwnArrayPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472DC151A825B004123FF /* OwnArrayPtr.h */; }; + A8A473FC151A825B004123FF /* OwnPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472DD151A825B004123FF /* OwnPtr.h */; }; + A8A473FD151A825B004123FF /* OwnPtrCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472DE151A825B004123FF /* OwnPtrCommon.h */; }; + A8A473FE151A825B004123FF /* PackedIntVector.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472DF151A825B004123FF /* PackedIntVector.h */; }; + A8A473FF151A825B004123FF /* PageAllocation.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472E0151A825B004123FF /* PageAllocation.h */; }; + A8A47400151A825B004123FF /* PageAllocationAligned.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A472E1151A825B004123FF /* PageAllocationAligned.cpp */; }; + A8A47401151A825B004123FF /* PageAllocationAligned.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472E2151A825B004123FF /* PageAllocationAligned.h */; }; + A8A47402151A825B004123FF /* PageBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A472E3151A825B004123FF /* PageBlock.cpp */; }; + A8A47403151A825B004123FF /* PageBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472E4151A825B004123FF /* PageBlock.h */; }; + A8A47404151A825B004123FF /* PageReservation.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472E5151A825B004123FF /* PageReservation.h */; }; + A8A47405151A825B004123FF /* ParallelJobs.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472E6151A825B004123FF /* ParallelJobs.h */; }; + A8A47408151A825B004123FF /* ParallelJobsLibdispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472E9151A825B004123FF /* ParallelJobsLibdispatch.h */; }; + A8A4740A151A825B004123FF /* PassOwnArrayPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472EB151A825B004123FF /* PassOwnArrayPtr.h */; }; + A8A4740B151A825B004123FF /* PassOwnPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472EC151A825B004123FF /* PassOwnPtr.h */; }; + A8A4740C151A825B004123FF /* PassRefPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472ED151A825B004123FF /* PassRefPtr.h */; }; + A8A4740D151A825B004123FF /* PassTraits.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472EE151A825B004123FF /* PassTraits.h */; }; + A8A4740E151A825B004123FF /* Platform.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472EF151A825B004123FF /* Platform.h */; }; + A8A4740F151A825B004123FF /* PossiblyNull.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472F3151A825B004123FF /* PossiblyNull.h */; }; + A8A47414151A825B004123FF /* RandomNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A472FB151A825B004123FF /* RandomNumber.cpp */; }; + A8A47415151A825B004123FF /* RandomNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472FC151A825B004123FF /* RandomNumber.h */; }; + A8A47416151A825B004123FF /* RandomNumberSeed.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472FD151A825B004123FF /* RandomNumberSeed.h */; }; + A8A47417151A825B004123FF /* RedBlackTree.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472FE151A825B004123FF /* RedBlackTree.h */; }; + A8A47418151A825B004123FF /* RefCounted.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472FF151A825B004123FF /* RefCounted.h */; }; + A8A47419151A825B004123FF /* RefCountedArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47300151A825B004123FF /* RefCountedArray.h */; }; + A8A4741A151A825B004123FF /* RefCountedLeakCounter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47301151A825B004123FF /* RefCountedLeakCounter.cpp */; }; + A8A4741B151A825B004123FF /* RefCountedLeakCounter.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47302151A825B004123FF /* RefCountedLeakCounter.h */; }; + A8A4741C151A825B004123FF /* RefPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47303151A825B004123FF /* RefPtr.h */; }; + A8A4741D151A825B004123FF /* RefPtrHashMap.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47304151A825B004123FF /* RefPtrHashMap.h */; }; + A8A4741E151A825B004123FF /* RetainPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47305151A825B004123FF /* RetainPtr.h */; }; + A8A4741F151A825B004123FF /* SegmentedVector.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47306151A825B004123FF /* SegmentedVector.h */; }; + A8A47420151A825B004123FF /* SentinelLinkedList.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47307151A825B004123FF /* SentinelLinkedList.h */; }; + A8A47421151A825B004123FF /* SHA1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47308151A825B004123FF /* SHA1.cpp */; }; + A8A47422151A825B004123FF /* SHA1.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47309151A825B004123FF /* SHA1.h */; }; + A8A47423151A825B004123FF /* SimpleStats.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4730A151A825B004123FF /* SimpleStats.h */; }; + A8A47424151A825B004123FF /* SinglyLinkedList.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4730B151A825B004123FF /* SinglyLinkedList.h */; }; + A8A47425151A825B004123FF /* SizeLimits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A4730C151A825B004123FF /* SizeLimits.cpp */; }; + A8A47426151A825B004123FF /* Spectrum.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4730D151A825B004123FF /* Spectrum.h */; }; + A8A47427151A825B004123FF /* StackBounds.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A4730E151A825B004123FF /* StackBounds.cpp */; }; + A8A47428151A825B004123FF /* StackBounds.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4730F151A825B004123FF /* StackBounds.h */; }; + A8A47429151A825B004123FF /* StaticConstructors.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47310151A825B004123FF /* StaticConstructors.h */; }; + A8A4742A151A825B004123FF /* StdLibExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47311151A825B004123FF /* StdLibExtras.h */; }; + A8A4742C151A825B004123FF /* StringExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47313151A825B004123FF /* StringExtras.h */; }; + A8A4742D151A825B004123FF /* StringHasher.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47314151A825B004123FF /* StringHasher.h */; }; + A8A4742E151A825B004123FF /* TCPackedCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47315151A825B004123FF /* TCPackedCache.h */; }; + A8A4742F151A825B004123FF /* TCPageMap.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47316151A825B004123FF /* TCPageMap.h */; }; + A8A47430151A825B004123FF /* TCSpinLock.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47317151A825B004123FF /* TCSpinLock.h */; }; + A8A47431151A825B004123FF /* TCSystemAlloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47318151A825B004123FF /* TCSystemAlloc.cpp */; }; + A8A47432151A825B004123FF /* TCSystemAlloc.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47319151A825B004123FF /* TCSystemAlloc.h */; }; + A8A47433151A825B004123FF /* TemporaryChange.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4731A151A825B004123FF /* TemporaryChange.h */; }; + A8A47434151A825B004123FF /* ASCIIFastPath.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4731C151A825B004123FF /* ASCIIFastPath.h */; }; + A8A47435151A825B004123FF /* AtomicString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A4731D151A825B004123FF /* AtomicString.cpp */; }; + A8A47436151A825B004123FF /* AtomicString.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4731E151A825B004123FF /* AtomicString.h */; }; + A8A47437151A825B004123FF /* AtomicStringHash.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4731F151A825B004123FF /* AtomicStringHash.h */; }; + A8A47438151A825B004123FF /* AtomicStringImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47320151A825B004123FF /* AtomicStringImpl.h */; }; + A8A47439151A825B004123FF /* CString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47321151A825B004123FF /* CString.cpp */; }; + A8A4743A151A825B004123FF /* CString.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47322151A825B004123FF /* CString.h */; }; + A8A4743B151A825B004123FF /* StringBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47323151A825B004123FF /* StringBuffer.h */; }; + A8A4743C151A825B004123FF /* StringBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47324151A825B004123FF /* StringBuilder.cpp */; }; + A8A4743D151A825B004123FF /* StringBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47325151A825B004123FF /* StringBuilder.h */; }; + A8A4743E151A825B004123FF /* StringConcatenate.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47326151A825B004123FF /* StringConcatenate.h */; }; + A8A4743F151A825B004123FF /* StringHash.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47327151A825B004123FF /* StringHash.h */; }; + A8A47440151A825B004123FF /* StringImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47328151A825B004123FF /* StringImpl.cpp */; }; + A8A47441151A825B004123FF /* StringImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47329151A825B004123FF /* StringImpl.h */; }; + A8A47442151A825B004123FF /* StringOperators.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4732A151A825B004123FF /* StringOperators.h */; }; + A8A47443151A825B004123FF /* StringStatics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A4732B151A825B004123FF /* StringStatics.cpp */; }; + A8A47444151A825B004123FF /* TextPosition.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4732C151A825B004123FF /* TextPosition.h */; }; + A8A47445151A825B004123FF /* WTFString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A4732D151A825B004123FF /* WTFString.cpp */; }; + A8A47446151A825B004123FF /* WTFString.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4732E151A825B004123FF /* WTFString.h */; }; + A8A47447151A825B004123FF /* ThreadFunctionInvocation.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4732F151A825B004123FF /* ThreadFunctionInvocation.h */; }; + A8A47448151A825B004123FF /* ThreadIdentifierDataPthreads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47330151A825B004123FF /* ThreadIdentifierDataPthreads.cpp */; }; + A8A47449151A825B004123FF /* ThreadIdentifierDataPthreads.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47331151A825B004123FF /* ThreadIdentifierDataPthreads.h */; }; + A8A4744A151A825B004123FF /* Threading.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47332151A825B004123FF /* Threading.cpp */; }; + A8A4744B151A825B004123FF /* Threading.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47333151A825B004123FF /* Threading.h */; }; + A8A4744D151A825B004123FF /* ThreadingPrimitives.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47335151A825B004123FF /* ThreadingPrimitives.h */; }; + A8A4744E151A825B004123FF /* ThreadingPthreads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47336151A825B004123FF /* ThreadingPthreads.cpp */; }; + A8A47450151A825B004123FF /* ThreadRestrictionVerifier.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47338151A825B004123FF /* ThreadRestrictionVerifier.h */; }; + A8A47451151A825B004123FF /* BinarySemaphore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A4733A151A825B004123FF /* BinarySemaphore.cpp */; }; + A8A47452151A825B004123FF /* BinarySemaphore.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4733B151A825B004123FF /* BinarySemaphore.h */; }; + A8A47454151A825B004123FF /* ThreadSafeRefCounted.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4733E151A825B004123FF /* ThreadSafeRefCounted.h */; }; + A8A47455151A825B004123FF /* ThreadSpecific.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4733F151A825B004123FF /* ThreadSpecific.h */; }; + A8A47457151A825B004123FF /* TypedArrayBase.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47341151A825B004123FF /* TypedArrayBase.h */; }; + A8A47458151A825B004123FF /* TypeTraits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47342151A825B004123FF /* TypeTraits.cpp */; }; + A8A47459151A825B004123FF /* TypeTraits.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47343151A825B004123FF /* TypeTraits.h */; }; + A8A4745A151A825B004123FF /* Uint8Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47344151A825B004123FF /* Uint8Array.h */; }; + A8A4745B151A825B004123FF /* Uint8ClampedArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47345151A825B004123FF /* Uint8ClampedArray.h */; }; + A8A4745C151A825B004123FF /* Uint16Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47346151A825B004123FF /* Uint16Array.h */; }; + A8A4745D151A825B004123FF /* Uint32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47347151A825B004123FF /* Uint32Array.h */; }; + A8A4745E151A825B004123FF /* CharacterNames.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47349151A825B004123FF /* CharacterNames.h */; }; + A8A4745F151A825B004123FF /* Collator.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4734A151A825B004123FF /* Collator.h */; }; + A8A47460151A825B004123FF /* CollatorDefault.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A4734B151A825B004123FF /* CollatorDefault.cpp */; }; + A8A47463151A825B004123FF /* CollatorICU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47350151A825B004123FF /* CollatorICU.cpp */; }; + A8A47464151A825B004123FF /* UnicodeIcu.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47351151A825B004123FF /* UnicodeIcu.h */; }; + A8A47466151A825B004123FF /* ScriptCodesFromICU.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47354151A825B004123FF /* ScriptCodesFromICU.h */; }; + A8A47467151A825B004123FF /* Unicode.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47355151A825B004123FF /* Unicode.h */; }; + A8A47468151A825B004123FF /* UnicodeMacrosFromICU.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47356151A825B004123FF /* UnicodeMacrosFromICU.h */; }; + A8A47469151A825B004123FF /* UTF8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A47357151A825B004123FF /* UTF8.cpp */; }; + A8A4746A151A825B004123FF /* UTF8.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47358151A825B004123FF /* UTF8.h */; }; + A8A4746D151A825B004123FF /* UnionFind.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4735C151A825B004123FF /* UnionFind.h */; }; + A8A4747D151A825B004123FF /* ValueCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4736F151A825B004123FF /* ValueCheck.h */; }; + A8A4747E151A825B004123FF /* Vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47370151A825B004123FF /* Vector.h */; }; + A8A4747F151A825B004123FF /* VectorTraits.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47371151A825B004123FF /* VectorTraits.h */; }; + A8A47480151A825B004123FF /* VMTags.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47372151A825B004123FF /* VMTags.h */; }; + A8A47486151A825B004123FF /* WTFThreadData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A4737A151A825B004123FF /* WTFThreadData.cpp */; }; + A8A47487151A825B004123FF /* WTFThreadData.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4737B151A825B004123FF /* WTFThreadData.h */; }; + A8A4748C151A8264004123FF /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4748B151A8264004123FF /* config.h */; }; + B38FD7BD168953E80065C969 /* FeatureDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B38FD7BC168953E80065C969 /* FeatureDefines.h */; }; + CD5497AC15857D0300B5BC30 /* MediaTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD5497AA15857D0300B5BC30 /* MediaTime.cpp */; }; + CD5497AD15857D0300B5BC30 /* MediaTime.h in Headers */ = {isa = PBXBuildFile; fileRef = CD5497AB15857D0300B5BC30 /* MediaTime.h */; }; + EB95E1F0161A72410089A2F5 /* ByteOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = EB95E1EF161A72410089A2F5 /* ByteOrder.h */; }; + FEDACD3D1630F83F00C69634 /* StackStats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEDACD3B1630F83F00C69634 /* StackStats.cpp */; }; + FEDACD3E1630F83F00C69634 /* StackStats.h in Headers */ = {isa = PBXBuildFile; fileRef = FEDACD3C1630F83F00C69634 /* StackStats.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 65AFA28D1630B99E003D723C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5D247B5914689B8600E78B76 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 65AFA16F1630B977003D723C; + remoteInfo = "Copy Headers"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 0F87105916643F190090B0AD /* RawPointer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RawPointer.h; sourceTree = ""; }; + 0F9D335B165DBA73005AD387 /* FilePrintStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FilePrintStream.cpp; sourceTree = ""; }; + 0F9D335C165DBA73005AD387 /* FilePrintStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FilePrintStream.h; sourceTree = ""; }; + 0F9D335D165DBA73005AD387 /* PrintStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PrintStream.cpp; sourceTree = ""; }; + 0F9D335E165DBA73005AD387 /* PrintStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrintStream.h; sourceTree = ""; }; + 0FC4488216FE9FE100844BE9 /* ProcessID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessID.h; sourceTree = ""; }; + 0FC4EDE51696149600F65041 /* CommaPrinter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommaPrinter.h; sourceTree = ""; }; + 0FD81AC4154FB22E00983E72 /* FastBitVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastBitVector.h; sourceTree = ""; }; + 0FDDBFA51666DFA300C55FEF /* StringPrintStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringPrintStream.cpp; sourceTree = ""; }; + 0FDDBFA61666DFA300C55FEF /* StringPrintStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringPrintStream.h; sourceTree = ""; }; + 143F611D1565F0F900DB514A /* RAMSize.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RAMSize.cpp; sourceTree = ""; }; + 143F611E1565F0F900DB514A /* RAMSize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAMSize.h; sourceTree = ""; }; + 1469419016EAAF6D0024E146 /* RunLoopTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RunLoopTimer.h; sourceTree = ""; }; + 1469419116EAAF6D0024E146 /* RunLoopTimerCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RunLoopTimerCF.cpp; sourceTree = ""; }; + 1469419416EAAFF80024E146 /* SchedulePair.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SchedulePair.h; sourceTree = ""; }; + 1469419516EAAFF80024E146 /* SchedulePairMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SchedulePairMac.mm; sourceTree = ""; }; + 1469419816EAB0410024E146 /* SchedulePairCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SchedulePairCF.cpp; sourceTree = ""; }; + 1469419A16EAB10A0024E146 /* AutodrainedPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutodrainedPool.h; sourceTree = ""; }; + 1469419B16EAB10A0024E146 /* AutodrainedPoolMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AutodrainedPoolMac.mm; sourceTree = ""; }; + 149EF16216BBFE0D000A4331 /* TriState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TriState.h; sourceTree = ""; }; + 14F3B0F615E45E4600210069 /* SaturatedArithmetic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SaturatedArithmetic.h; sourceTree = ""; }; + 1A1D8B9B173186CE00141DA4 /* FunctionDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FunctionDispatcher.h; sourceTree = ""; }; + 1A1D8B9D1731879800141DA4 /* FunctionDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FunctionDispatcher.cpp; sourceTree = ""; }; + 1A3F6BE6174ADA2100B2EEA7 /* NeverDestroyed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NeverDestroyed.h; sourceTree = ""; }; + 1A6BB768162F300500DD16DB /* StreamBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StreamBuffer.h; sourceTree = ""; }; + 26147B0815DDCCDC00DDB907 /* IntegerToStringConversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntegerToStringConversion.h; sourceTree = ""; }; + 2C05385315BC819000F21B96 /* GregorianDateTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GregorianDateTime.h; sourceTree = ""; }; + 2CCD892915C0390200285083 /* GregorianDateTime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GregorianDateTime.cpp; sourceTree = ""; }; + 44DEE74A152274BB00C6EC37 /* iOS.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = iOS.xcconfig; sourceTree = ""; }; + 44F66007171AFAA900E4AD19 /* EnumClass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EnumClass.h; sourceTree = ""; }; + 4F0321BB156AA8D1006EBAF6 /* BitArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitArray.h; sourceTree = ""; }; + 5D247B6214689B8600E78B76 /* libWTF.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libWTF.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 5D247B6E14689C4700E78B76 /* Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = ""; }; + 5D247B7014689C4700E78B76 /* DebugRelease.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = ""; }; + 5D247B7314689C4700E78B76 /* WTF.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = WTF.xcconfig; sourceTree = ""; }; + 6541CAF41630DB26006D0DEC /* CopyWTFHeaders.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = CopyWTFHeaders.xcconfig; sourceTree = ""; }; + 7E29C33D15FFD79B00516D61 /* ObjcRuntimeExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjcRuntimeExtras.h; sourceTree = ""; }; + 8134013615B092FD001FF0B8 /* Base64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Base64.cpp; sourceTree = ""; }; + 8134013715B092FD001FF0B8 /* Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Base64.h; sourceTree = ""; }; + 974CFC8D16A4F327006D5404 /* WeakPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakPtr.h; sourceTree = ""; }; + 9BC70F04176C379D00101DEC /* AtomicStringTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AtomicStringTable.cpp; sourceTree = ""; }; + 9BD8F40A176C2AD80002D865 /* AtomicStringTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AtomicStringTable.h; sourceTree = ""; }; + A876DBD7151816E500DADB95 /* Platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Platform.h; sourceTree = ""; }; + A8A47254151A825A004123FF /* Alignment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Alignment.h; sourceTree = ""; }; + A8A47256151A825A004123FF /* ArrayBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArrayBuffer.cpp; sourceTree = ""; }; + A8A47257151A825A004123FF /* ArrayBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArrayBuffer.h; sourceTree = ""; }; + A8A47258151A825A004123FF /* ArrayBufferView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArrayBufferView.cpp; sourceTree = ""; }; + A8A47259151A825A004123FF /* ArrayBufferView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArrayBufferView.h; sourceTree = ""; }; + A8A4725A151A825A004123FF /* ASCIICType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASCIICType.h; sourceTree = ""; }; + A8A4725B151A825A004123FF /* Assertions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Assertions.cpp; sourceTree = ""; }; + A8A4725C151A825A004123FF /* Assertions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Assertions.h; sourceTree = ""; }; + A8A4725D151A825A004123FF /* Atomics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Atomics.h; sourceTree = ""; }; + A8A4725E151A825A004123FF /* AVLTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AVLTree.h; sourceTree = ""; }; + A8A4725F151A825A004123FF /* Bitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Bitmap.h; sourceTree = ""; }; + A8A47260151A825A004123FF /* BitVector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BitVector.cpp; sourceTree = ""; }; + A8A47261151A825A004123FF /* BitVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitVector.h; sourceTree = ""; }; + A8A47264151A825A004123FF /* BlockStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockStack.h; sourceTree = ""; }; + A8A47265151A825A004123FF /* BloomFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BloomFilter.h; sourceTree = ""; }; + A8A47266151A825A004123FF /* BoundsCheckedPointer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BoundsCheckedPointer.h; sourceTree = ""; }; + A8A47267151A825A004123FF /* BumpPointerAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BumpPointerAllocator.h; sourceTree = ""; }; + A8A4726A151A825A004123FF /* CheckedArithmetic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CheckedArithmetic.h; sourceTree = ""; }; + A8A4726B151A825A004123FF /* CheckedBoolean.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CheckedBoolean.h; sourceTree = ""; }; + A8A47270151A825A004123FF /* Compiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Compiler.h; sourceTree = ""; }; + A8A47273151A825A004123FF /* CryptographicallyRandomNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptographicallyRandomNumber.cpp; sourceTree = ""; }; + A8A47274151A825A004123FF /* CryptographicallyRandomNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptographicallyRandomNumber.h; sourceTree = ""; }; + A8A47275151A825A004123FF /* CurrentTime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CurrentTime.cpp; sourceTree = ""; }; + A8A47276151A825A004123FF /* CurrentTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CurrentTime.h; sourceTree = ""; }; + A8A47277151A825A004123FF /* DataLog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DataLog.cpp; sourceTree = ""; }; + A8A47278151A825A004123FF /* DataLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataLog.h; sourceTree = ""; }; + A8A47279151A825A004123FF /* DateMath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DateMath.cpp; sourceTree = ""; }; + A8A4727A151A825A004123FF /* DateMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateMath.h; sourceTree = ""; }; + A8A4727B151A825A004123FF /* DecimalNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DecimalNumber.cpp; sourceTree = ""; }; + A8A4727C151A825A004123FF /* DecimalNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DecimalNumber.h; sourceTree = ""; }; + A8A4727D151A825A004123FF /* Decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Decoder.h; sourceTree = ""; }; + A8A4727E151A825A004123FF /* Deque.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Deque.h; sourceTree = ""; }; + A8A4727F151A825A004123FF /* DisallowCType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DisallowCType.h; sourceTree = ""; }; + A8A47280151A825A004123FF /* DoublyLinkedList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DoublyLinkedList.h; sourceTree = ""; }; + A8A47282151A825A004123FF /* bignum-dtoa.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "bignum-dtoa.cc"; sourceTree = ""; }; + A8A47283151A825A004123FF /* bignum-dtoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "bignum-dtoa.h"; sourceTree = ""; }; + A8A47284151A825A004123FF /* bignum.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bignum.cc; sourceTree = ""; }; + A8A47285151A825A004123FF /* bignum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bignum.h; sourceTree = ""; }; + A8A47286151A825A004123FF /* cached-powers.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "cached-powers.cc"; sourceTree = ""; }; + A8A47287151A825A004123FF /* cached-powers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "cached-powers.h"; sourceTree = ""; }; + A8A47288151A825A004123FF /* COPYING */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + A8A47289151A825A004123FF /* diy-fp.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "diy-fp.cc"; sourceTree = ""; }; + A8A4728A151A825A004123FF /* diy-fp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "diy-fp.h"; sourceTree = ""; }; + A8A4728B151A825A004123FF /* double-conversion.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "double-conversion.cc"; sourceTree = ""; }; + A8A4728C151A825A004123FF /* double-conversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "double-conversion.h"; sourceTree = ""; }; + A8A4728D151A825A004123FF /* double.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = double.h; sourceTree = ""; }; + A8A4728E151A825A004123FF /* fast-dtoa.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "fast-dtoa.cc"; sourceTree = ""; }; + A8A4728F151A825A004123FF /* fast-dtoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "fast-dtoa.h"; sourceTree = ""; }; + A8A47290151A825A004123FF /* fixed-dtoa.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "fixed-dtoa.cc"; sourceTree = ""; }; + A8A47291151A825A004123FF /* fixed-dtoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "fixed-dtoa.h"; sourceTree = ""; }; + A8A47292151A825A004123FF /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + A8A47293151A825A004123FF /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; + A8A47294151A825A004123FF /* strtod.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strtod.cc; sourceTree = ""; }; + A8A47295151A825A004123FF /* strtod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strtod.h; sourceTree = ""; }; + A8A47296151A825A004123FF /* utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = ""; }; + A8A47297151A825A004123FF /* dtoa.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dtoa.cpp; sourceTree = ""; }; + A8A47298151A825A004123FF /* dtoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dtoa.h; sourceTree = ""; }; + A8A47299151A825A004123FF /* DynamicAnnotations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicAnnotations.cpp; sourceTree = ""; }; + A8A4729A151A825A004123FF /* DynamicAnnotations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicAnnotations.h; sourceTree = ""; }; + A8A4729E151A825A004123FF /* Encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Encoder.h; sourceTree = ""; }; + A8A4729F151A825A004123FF /* ExportMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExportMacros.h; sourceTree = ""; }; + A8A472A0151A825A004123FF /* FastAllocBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastAllocBase.h; sourceTree = ""; }; + A8A472A1151A825A004123FF /* FastMalloc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FastMalloc.cpp; sourceTree = ""; }; + A8A472A2151A825A004123FF /* FastMalloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastMalloc.h; sourceTree = ""; }; + A8A472A3151A825A004123FF /* FixedArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FixedArray.h; sourceTree = ""; }; + A8A472A4151A825A004123FF /* Float32Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Float32Array.h; sourceTree = ""; }; + A8A472A5151A825A004123FF /* Float64Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Float64Array.h; sourceTree = ""; }; + A8A472A6151A825A004123FF /* Forward.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Forward.h; sourceTree = ""; }; + A8A472A7151A825A004123FF /* Functional.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Functional.h; sourceTree = ""; }; + A8A472A8151A825A004123FF /* GetPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GetPtr.h; sourceTree = ""; }; + A8A472B3151A825A004123FF /* HashCountedSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashCountedSet.h; sourceTree = ""; }; + A8A472B4151A825A004123FF /* HashFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashFunctions.h; sourceTree = ""; }; + A8A472B5151A825A004123FF /* HashIterators.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashIterators.h; sourceTree = ""; }; + A8A472B6151A825A004123FF /* HashMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashMap.h; sourceTree = ""; }; + A8A472B7151A825A004123FF /* HashSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashSet.h; sourceTree = ""; }; + A8A472B8151A825A004123FF /* HashTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HashTable.cpp; sourceTree = ""; }; + A8A472B9151A825A004123FF /* HashTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashTable.h; sourceTree = ""; }; + A8A472BA151A825A004123FF /* HashTraits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashTraits.h; sourceTree = ""; }; + A8A472BB151A825A004123FF /* HexNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HexNumber.h; sourceTree = ""; }; + A8A472BC151A825A004123FF /* InlineASM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InlineASM.h; sourceTree = ""; }; + A8A472BD151A825A004123FF /* Int8Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Int8Array.h; sourceTree = ""; }; + A8A472BE151A825A004123FF /* Int16Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Int16Array.h; sourceTree = ""; }; + A8A472BF151A825A004123FF /* Int32Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Int32Array.h; sourceTree = ""; }; + A8A472C0151A825A004123FF /* IntegralTypedArrayBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntegralTypedArrayBase.h; sourceTree = ""; }; + A8A472C1151A825A004123FF /* ListHashSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ListHashSet.h; sourceTree = ""; }; + A8A472C3151A825A004123FF /* Locker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Locker.h; sourceTree = ""; }; + A8A472C5151A825A004123FF /* MainThreadMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MainThreadMac.mm; sourceTree = ""; }; + A8A472C6151A825A004123FF /* MainThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MainThread.cpp; sourceTree = ""; }; + A8A472C7151A825B004123FF /* MainThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainThread.h; sourceTree = ""; }; + A8A472C9151A825B004123FF /* MathExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathExtras.h; sourceTree = ""; }; + A8A472CA151A825B004123FF /* MD5.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MD5.cpp; sourceTree = ""; }; + A8A472CB151A825B004123FF /* MD5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MD5.h; sourceTree = ""; }; + A8A472CC151A825B004123FF /* MessageQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageQueue.h; sourceTree = ""; }; + A8A472CD151A825B004123FF /* MetaAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MetaAllocator.cpp; sourceTree = ""; }; + A8A472CE151A825B004123FF /* MetaAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MetaAllocator.h; sourceTree = ""; }; + A8A472CF151A825B004123FF /* MetaAllocatorHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MetaAllocatorHandle.h; sourceTree = ""; }; + A8A472D0151A825B004123FF /* Noncopyable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Noncopyable.h; sourceTree = ""; }; + A8A472D1151A825B004123FF /* NonCopyingSort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NonCopyingSort.h; sourceTree = ""; }; + A8A472D2151A825B004123FF /* NotFound.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotFound.h; sourceTree = ""; }; + A8A472D3151A825B004123FF /* NullPtr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NullPtr.cpp; sourceTree = ""; }; + A8A472D4151A825B004123FF /* NullPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NullPtr.h; sourceTree = ""; }; + A8A472D5151A825B004123FF /* NumberOfCores.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NumberOfCores.cpp; sourceTree = ""; }; + A8A472D6151A825B004123FF /* NumberOfCores.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumberOfCores.h; sourceTree = ""; }; + A8A472D7151A825B004123FF /* OSAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSAllocator.h; sourceTree = ""; }; + A8A472D8151A825B004123FF /* OSAllocatorPosix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OSAllocatorPosix.cpp; sourceTree = ""; }; + A8A472DA151A825B004123FF /* OSRandomSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OSRandomSource.cpp; sourceTree = ""; }; + A8A472DB151A825B004123FF /* OSRandomSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSRandomSource.h; sourceTree = ""; }; + A8A472DC151A825B004123FF /* OwnArrayPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OwnArrayPtr.h; sourceTree = ""; }; + A8A472DD151A825B004123FF /* OwnPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OwnPtr.h; sourceTree = ""; }; + A8A472DE151A825B004123FF /* OwnPtrCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OwnPtrCommon.h; sourceTree = ""; }; + A8A472DF151A825B004123FF /* PackedIntVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PackedIntVector.h; sourceTree = ""; }; + A8A472E0151A825B004123FF /* PageAllocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageAllocation.h; sourceTree = ""; }; + A8A472E1151A825B004123FF /* PageAllocationAligned.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageAllocationAligned.cpp; sourceTree = ""; }; + A8A472E2151A825B004123FF /* PageAllocationAligned.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageAllocationAligned.h; sourceTree = ""; }; + A8A472E3151A825B004123FF /* PageBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageBlock.cpp; sourceTree = ""; }; + A8A472E4151A825B004123FF /* PageBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageBlock.h; sourceTree = ""; }; + A8A472E5151A825B004123FF /* PageReservation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageReservation.h; sourceTree = ""; }; + A8A472E6151A825B004123FF /* ParallelJobs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParallelJobs.h; sourceTree = ""; }; + A8A472E9151A825B004123FF /* ParallelJobsLibdispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParallelJobsLibdispatch.h; sourceTree = ""; }; + A8A472EB151A825B004123FF /* PassOwnArrayPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PassOwnArrayPtr.h; sourceTree = ""; }; + A8A472EC151A825B004123FF /* PassOwnPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PassOwnPtr.h; sourceTree = ""; }; + A8A472ED151A825B004123FF /* PassRefPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PassRefPtr.h; sourceTree = ""; }; + A8A472EE151A825B004123FF /* PassTraits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PassTraits.h; sourceTree = ""; }; + A8A472EF151A825B004123FF /* Platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Platform.h; sourceTree = ""; }; + A8A472F3151A825B004123FF /* PossiblyNull.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PossiblyNull.h; sourceTree = ""; }; + A8A472FB151A825B004123FF /* RandomNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RandomNumber.cpp; sourceTree = ""; }; + A8A472FC151A825B004123FF /* RandomNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RandomNumber.h; sourceTree = ""; }; + A8A472FD151A825B004123FF /* RandomNumberSeed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RandomNumberSeed.h; sourceTree = ""; }; + A8A472FE151A825B004123FF /* RedBlackTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RedBlackTree.h; sourceTree = ""; }; + A8A472FF151A825B004123FF /* RefCounted.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RefCounted.h; sourceTree = ""; }; + A8A47300151A825B004123FF /* RefCountedArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RefCountedArray.h; sourceTree = ""; }; + A8A47301151A825B004123FF /* RefCountedLeakCounter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RefCountedLeakCounter.cpp; sourceTree = ""; }; + A8A47302151A825B004123FF /* RefCountedLeakCounter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RefCountedLeakCounter.h; sourceTree = ""; }; + A8A47303151A825B004123FF /* RefPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RefPtr.h; sourceTree = ""; }; + A8A47304151A825B004123FF /* RefPtrHashMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RefPtrHashMap.h; sourceTree = ""; }; + A8A47305151A825B004123FF /* RetainPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RetainPtr.h; sourceTree = ""; }; + A8A47306151A825B004123FF /* SegmentedVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SegmentedVector.h; sourceTree = ""; }; + A8A47307151A825B004123FF /* SentinelLinkedList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SentinelLinkedList.h; sourceTree = ""; }; + A8A47308151A825B004123FF /* SHA1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SHA1.cpp; sourceTree = ""; }; + A8A47309151A825B004123FF /* SHA1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SHA1.h; sourceTree = ""; }; + A8A4730A151A825B004123FF /* SimpleStats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleStats.h; sourceTree = ""; }; + A8A4730B151A825B004123FF /* SinglyLinkedList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SinglyLinkedList.h; sourceTree = ""; }; + A8A4730C151A825B004123FF /* SizeLimits.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SizeLimits.cpp; sourceTree = ""; }; + A8A4730D151A825B004123FF /* Spectrum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Spectrum.h; sourceTree = ""; }; + A8A4730E151A825B004123FF /* StackBounds.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StackBounds.cpp; sourceTree = ""; }; + A8A4730F151A825B004123FF /* StackBounds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StackBounds.h; sourceTree = ""; }; + A8A47310151A825B004123FF /* StaticConstructors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StaticConstructors.h; sourceTree = ""; }; + A8A47311151A825B004123FF /* StdLibExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StdLibExtras.h; sourceTree = ""; }; + A8A47313151A825B004123FF /* StringExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringExtras.h; sourceTree = ""; }; + A8A47314151A825B004123FF /* StringHasher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringHasher.h; sourceTree = ""; }; + A8A47315151A825B004123FF /* TCPackedCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TCPackedCache.h; sourceTree = ""; }; + A8A47316151A825B004123FF /* TCPageMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TCPageMap.h; sourceTree = ""; }; + A8A47317151A825B004123FF /* TCSpinLock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TCSpinLock.h; sourceTree = ""; }; + A8A47318151A825B004123FF /* TCSystemAlloc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TCSystemAlloc.cpp; sourceTree = ""; }; + A8A47319151A825B004123FF /* TCSystemAlloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TCSystemAlloc.h; sourceTree = ""; }; + A8A4731A151A825B004123FF /* TemporaryChange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemporaryChange.h; sourceTree = ""; }; + A8A4731C151A825B004123FF /* ASCIIFastPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASCIIFastPath.h; sourceTree = ""; }; + A8A4731D151A825B004123FF /* AtomicString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AtomicString.cpp; sourceTree = ""; }; + A8A4731E151A825B004123FF /* AtomicString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AtomicString.h; sourceTree = ""; }; + A8A4731F151A825B004123FF /* AtomicStringHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AtomicStringHash.h; sourceTree = ""; }; + A8A47320151A825B004123FF /* AtomicStringImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AtomicStringImpl.h; sourceTree = ""; }; + A8A47321151A825B004123FF /* CString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CString.cpp; sourceTree = ""; }; + A8A47322151A825B004123FF /* CString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CString.h; sourceTree = ""; }; + A8A47323151A825B004123FF /* StringBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringBuffer.h; sourceTree = ""; }; + A8A47324151A825B004123FF /* StringBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringBuilder.cpp; sourceTree = ""; }; + A8A47325151A825B004123FF /* StringBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringBuilder.h; sourceTree = ""; }; + A8A47326151A825B004123FF /* StringConcatenate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringConcatenate.h; sourceTree = ""; }; + A8A47327151A825B004123FF /* StringHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringHash.h; sourceTree = ""; }; + A8A47328151A825B004123FF /* StringImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringImpl.cpp; sourceTree = ""; }; + A8A47329151A825B004123FF /* StringImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringImpl.h; sourceTree = ""; }; + A8A4732A151A825B004123FF /* StringOperators.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringOperators.h; sourceTree = ""; }; + A8A4732B151A825B004123FF /* StringStatics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringStatics.cpp; sourceTree = ""; }; + A8A4732C151A825B004123FF /* TextPosition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextPosition.h; sourceTree = ""; }; + A8A4732D151A825B004123FF /* WTFString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WTFString.cpp; sourceTree = ""; }; + A8A4732E151A825B004123FF /* WTFString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WTFString.h; sourceTree = ""; }; + A8A4732F151A825B004123FF /* ThreadFunctionInvocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadFunctionInvocation.h; sourceTree = ""; }; + A8A47330151A825B004123FF /* ThreadIdentifierDataPthreads.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadIdentifierDataPthreads.cpp; sourceTree = ""; }; + A8A47331151A825B004123FF /* ThreadIdentifierDataPthreads.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadIdentifierDataPthreads.h; sourceTree = ""; }; + A8A47332151A825B004123FF /* Threading.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Threading.cpp; sourceTree = ""; }; + A8A47333151A825B004123FF /* Threading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Threading.h; sourceTree = ""; }; + A8A47335151A825B004123FF /* ThreadingPrimitives.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadingPrimitives.h; sourceTree = ""; }; + A8A47336151A825B004123FF /* ThreadingPthreads.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadingPthreads.cpp; sourceTree = ""; }; + A8A47338151A825B004123FF /* ThreadRestrictionVerifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadRestrictionVerifier.h; sourceTree = ""; }; + A8A4733A151A825B004123FF /* BinarySemaphore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BinarySemaphore.cpp; sourceTree = ""; }; + A8A4733B151A825B004123FF /* BinarySemaphore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BinarySemaphore.h; sourceTree = ""; }; + A8A4733E151A825B004123FF /* ThreadSafeRefCounted.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadSafeRefCounted.h; sourceTree = ""; }; + A8A4733F151A825B004123FF /* ThreadSpecific.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadSpecific.h; sourceTree = ""; }; + A8A47341151A825B004123FF /* TypedArrayBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TypedArrayBase.h; sourceTree = ""; }; + A8A47342151A825B004123FF /* TypeTraits.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TypeTraits.cpp; sourceTree = ""; }; + A8A47343151A825B004123FF /* TypeTraits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TypeTraits.h; sourceTree = ""; }; + A8A47344151A825B004123FF /* Uint8Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Uint8Array.h; sourceTree = ""; }; + A8A47345151A825B004123FF /* Uint8ClampedArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Uint8ClampedArray.h; sourceTree = ""; }; + A8A47346151A825B004123FF /* Uint16Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Uint16Array.h; sourceTree = ""; }; + A8A47347151A825B004123FF /* Uint32Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Uint32Array.h; sourceTree = ""; }; + A8A47349151A825B004123FF /* CharacterNames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CharacterNames.h; sourceTree = ""; }; + A8A4734A151A825B004123FF /* Collator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Collator.h; sourceTree = ""; }; + A8A4734B151A825B004123FF /* CollatorDefault.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CollatorDefault.cpp; sourceTree = ""; }; + A8A47350151A825B004123FF /* CollatorICU.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CollatorICU.cpp; sourceTree = ""; }; + A8A47351151A825B004123FF /* UnicodeIcu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnicodeIcu.h; sourceTree = ""; }; + A8A47354151A825B004123FF /* ScriptCodesFromICU.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptCodesFromICU.h; sourceTree = ""; }; + A8A47355151A825B004123FF /* Unicode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Unicode.h; sourceTree = ""; }; + A8A47356151A825B004123FF /* UnicodeMacrosFromICU.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnicodeMacrosFromICU.h; sourceTree = ""; }; + A8A47357151A825B004123FF /* UTF8.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UTF8.cpp; sourceTree = ""; }; + A8A47358151A825B004123FF /* UTF8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UTF8.h; sourceTree = ""; }; + A8A4735C151A825B004123FF /* UnionFind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnionFind.h; sourceTree = ""; }; + A8A4736F151A825B004123FF /* ValueCheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValueCheck.h; sourceTree = ""; }; + A8A47370151A825B004123FF /* Vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Vector.h; sourceTree = ""; }; + A8A47371151A825B004123FF /* VectorTraits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VectorTraits.h; sourceTree = ""; }; + A8A47372151A825B004123FF /* VMTags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VMTags.h; sourceTree = ""; }; + A8A4737A151A825B004123FF /* WTFThreadData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WTFThreadData.cpp; sourceTree = ""; }; + A8A4737B151A825B004123FF /* WTFThreadData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WTFThreadData.h; sourceTree = ""; }; + A8A4748B151A8264004123FF /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B38FD7BC168953E80065C969 /* FeatureDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FeatureDefines.h; sourceTree = ""; }; + CD5497AA15857D0300B5BC30 /* MediaTime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaTime.cpp; sourceTree = ""; }; + CD5497AB15857D0300B5BC30 /* MediaTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaTime.h; sourceTree = ""; }; + EB95E1EF161A72410089A2F5 /* ByteOrder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ByteOrder.h; sourceTree = ""; }; + FEDACD3B1630F83F00C69634 /* StackStats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StackStats.cpp; sourceTree = ""; }; + FEDACD3C1630F83F00C69634 /* StackStats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StackStats.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5D247B5F14689B8600E78B76 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5D247B5714689B8600E78B76 = { + isa = PBXGroup; + children = ( + 5D247B6D14689C4700E78B76 /* Configurations */, + 5D247B6314689B8600E78B76 /* Products */, + 5D247B7614689D7600E78B76 /* Source */, + ); + sourceTree = ""; + }; + 5D247B6314689B8600E78B76 /* Products */ = { + isa = PBXGroup; + children = ( + 5D247B6214689B8600E78B76 /* libWTF.a */, + ); + name = Products; + sourceTree = ""; + }; + 5D247B6D14689C4700E78B76 /* Configurations */ = { + isa = PBXGroup; + children = ( + 5D247B6E14689C4700E78B76 /* Base.xcconfig */, + 6541CAF41630DB26006D0DEC /* CopyWTFHeaders.xcconfig */, + 5D247B7014689C4700E78B76 /* DebugRelease.xcconfig */, + 44DEE74A152274BB00C6EC37 /* iOS.xcconfig */, + 5D247B7314689C4700E78B76 /* WTF.xcconfig */, + ); + path = Configurations; + sourceTree = ""; + }; + 5D247B7614689D7600E78B76 /* Source */ = { + isa = PBXGroup; + children = ( + A876DBD6151816E500DADB95 /* wtf */, + A8A4748B151A8264004123FF /* config.h */, + ); + name = Source; + sourceTree = ""; + }; + A876DBD6151816E500DADB95 /* wtf */ = { + isa = PBXGroup; + children = ( + A8A47281151A825A004123FF /* dtoa */, + A8A472C4151A825A004123FF /* mac */, + A8A4731B151A825B004123FF /* text */, + A8A47339151A825B004123FF /* threads */, + A8A47348151A825B004123FF /* unicode */, + A8A47254151A825A004123FF /* Alignment.h */, + A8A47256151A825A004123FF /* ArrayBuffer.cpp */, + A8A47257151A825A004123FF /* ArrayBuffer.h */, + A8A47258151A825A004123FF /* ArrayBufferView.cpp */, + A8A47259151A825A004123FF /* ArrayBufferView.h */, + A8A4725A151A825A004123FF /* ASCIICType.h */, + A8A4725B151A825A004123FF /* Assertions.cpp */, + A8A4725C151A825A004123FF /* Assertions.h */, + A8A4725D151A825A004123FF /* Atomics.h */, + 1469419A16EAB10A0024E146 /* AutodrainedPool.h */, + 1469419B16EAB10A0024E146 /* AutodrainedPoolMac.mm */, + A8A4725E151A825A004123FF /* AVLTree.h */, + 4F0321BB156AA8D1006EBAF6 /* BitArray.h */, + A8A4725F151A825A004123FF /* Bitmap.h */, + A8A47260151A825A004123FF /* BitVector.cpp */, + A8A47261151A825A004123FF /* BitVector.h */, + A8A47264151A825A004123FF /* BlockStack.h */, + A8A47265151A825A004123FF /* BloomFilter.h */, + A8A47266151A825A004123FF /* BoundsCheckedPointer.h */, + A8A47267151A825A004123FF /* BumpPointerAllocator.h */, + EB95E1EF161A72410089A2F5 /* ByteOrder.h */, + A8A4726A151A825A004123FF /* CheckedArithmetic.h */, + A8A4726B151A825A004123FF /* CheckedBoolean.h */, + 0FC4EDE51696149600F65041 /* CommaPrinter.h */, + A8A47270151A825A004123FF /* Compiler.h */, + A8A47273151A825A004123FF /* CryptographicallyRandomNumber.cpp */, + A8A47274151A825A004123FF /* CryptographicallyRandomNumber.h */, + A8A47275151A825A004123FF /* CurrentTime.cpp */, + A8A47276151A825A004123FF /* CurrentTime.h */, + A8A47277151A825A004123FF /* DataLog.cpp */, + A8A47278151A825A004123FF /* DataLog.h */, + A8A47279151A825A004123FF /* DateMath.cpp */, + A8A4727A151A825A004123FF /* DateMath.h */, + A8A4727B151A825A004123FF /* DecimalNumber.cpp */, + A8A4727C151A825A004123FF /* DecimalNumber.h */, + A8A4727D151A825A004123FF /* Decoder.h */, + A8A4727E151A825A004123FF /* Deque.h */, + A8A4727F151A825A004123FF /* DisallowCType.h */, + A8A47280151A825A004123FF /* DoublyLinkedList.h */, + A8A47297151A825A004123FF /* dtoa.cpp */, + A8A47298151A825A004123FF /* dtoa.h */, + A8A47299151A825A004123FF /* DynamicAnnotations.cpp */, + A8A4729A151A825A004123FF /* DynamicAnnotations.h */, + A8A4729E151A825A004123FF /* Encoder.h */, + 44F66007171AFAA900E4AD19 /* EnumClass.h */, + A8A4729F151A825A004123FF /* ExportMacros.h */, + A8A472A0151A825A004123FF /* FastAllocBase.h */, + 0FD81AC4154FB22E00983E72 /* FastBitVector.h */, + A8A472A1151A825A004123FF /* FastMalloc.cpp */, + A8A472A2151A825A004123FF /* FastMalloc.h */, + B38FD7BC168953E80065C969 /* FeatureDefines.h */, + 0F9D335B165DBA73005AD387 /* FilePrintStream.cpp */, + 0F9D335C165DBA73005AD387 /* FilePrintStream.h */, + A8A472A3151A825A004123FF /* FixedArray.h */, + A8A472A4151A825A004123FF /* Float32Array.h */, + A8A472A5151A825A004123FF /* Float64Array.h */, + A8A472A6151A825A004123FF /* Forward.h */, + A8A472A7151A825A004123FF /* Functional.h */, + 1A1D8B9D1731879800141DA4 /* FunctionDispatcher.cpp */, + 1A1D8B9B173186CE00141DA4 /* FunctionDispatcher.h */, + A8A472A8151A825A004123FF /* GetPtr.h */, + 2CCD892915C0390200285083 /* GregorianDateTime.cpp */, + 2C05385315BC819000F21B96 /* GregorianDateTime.h */, + A8A472B3151A825A004123FF /* HashCountedSet.h */, + A8A472B4151A825A004123FF /* HashFunctions.h */, + A8A472B5151A825A004123FF /* HashIterators.h */, + A8A472B6151A825A004123FF /* HashMap.h */, + A8A472B7151A825A004123FF /* HashSet.h */, + A8A472B8151A825A004123FF /* HashTable.cpp */, + A8A472B9151A825A004123FF /* HashTable.h */, + A8A472BA151A825A004123FF /* HashTraits.h */, + A8A472BB151A825A004123FF /* HexNumber.h */, + A8A472BC151A825A004123FF /* InlineASM.h */, + A8A472BE151A825A004123FF /* Int16Array.h */, + A8A472BF151A825A004123FF /* Int32Array.h */, + A8A472BD151A825A004123FF /* Int8Array.h */, + A8A472C0151A825A004123FF /* IntegralTypedArrayBase.h */, + A8A472C1151A825A004123FF /* ListHashSet.h */, + A8A472C3151A825A004123FF /* Locker.h */, + A8A472C6151A825A004123FF /* MainThread.cpp */, + A8A472C7151A825B004123FF /* MainThread.h */, + A8A472C9151A825B004123FF /* MathExtras.h */, + A8A472CA151A825B004123FF /* MD5.cpp */, + A8A472CB151A825B004123FF /* MD5.h */, + CD5497AA15857D0300B5BC30 /* MediaTime.cpp */, + CD5497AB15857D0300B5BC30 /* MediaTime.h */, + A8A472CC151A825B004123FF /* MessageQueue.h */, + A8A472CD151A825B004123FF /* MetaAllocator.cpp */, + A8A472CE151A825B004123FF /* MetaAllocator.h */, + A8A472CF151A825B004123FF /* MetaAllocatorHandle.h */, + 1A3F6BE6174ADA2100B2EEA7 /* NeverDestroyed.h */, + A8A472D0151A825B004123FF /* Noncopyable.h */, + A8A472D1151A825B004123FF /* NonCopyingSort.h */, + A8A472D2151A825B004123FF /* NotFound.h */, + A8A472D3151A825B004123FF /* NullPtr.cpp */, + A8A472D4151A825B004123FF /* NullPtr.h */, + A8A472D5151A825B004123FF /* NumberOfCores.cpp */, + A8A472D6151A825B004123FF /* NumberOfCores.h */, + 7E29C33D15FFD79B00516D61 /* ObjcRuntimeExtras.h */, + A8A472D7151A825B004123FF /* OSAllocator.h */, + A8A472D8151A825B004123FF /* OSAllocatorPosix.cpp */, + A8A472DA151A825B004123FF /* OSRandomSource.cpp */, + A8A472DB151A825B004123FF /* OSRandomSource.h */, + A8A472DC151A825B004123FF /* OwnArrayPtr.h */, + A8A472DD151A825B004123FF /* OwnPtr.h */, + A8A472DE151A825B004123FF /* OwnPtrCommon.h */, + A8A472DF151A825B004123FF /* PackedIntVector.h */, + A8A472E0151A825B004123FF /* PageAllocation.h */, + A8A472E1151A825B004123FF /* PageAllocationAligned.cpp */, + A8A472E2151A825B004123FF /* PageAllocationAligned.h */, + A8A472E3151A825B004123FF /* PageBlock.cpp */, + A8A472E4151A825B004123FF /* PageBlock.h */, + A8A472E5151A825B004123FF /* PageReservation.h */, + A8A472E6151A825B004123FF /* ParallelJobs.h */, + A8A472E9151A825B004123FF /* ParallelJobsLibdispatch.h */, + A8A472EB151A825B004123FF /* PassOwnArrayPtr.h */, + A8A472EC151A825B004123FF /* PassOwnPtr.h */, + A8A472ED151A825B004123FF /* PassRefPtr.h */, + A8A472EE151A825B004123FF /* PassTraits.h */, + A8A472EF151A825B004123FF /* Platform.h */, + A876DBD7151816E500DADB95 /* Platform.h */, + A8A472F3151A825B004123FF /* PossiblyNull.h */, + 0F9D335D165DBA73005AD387 /* PrintStream.cpp */, + 0F9D335E165DBA73005AD387 /* PrintStream.h */, + 0FC4488216FE9FE100844BE9 /* ProcessID.h */, + 143F611D1565F0F900DB514A /* RAMSize.cpp */, + 143F611E1565F0F900DB514A /* RAMSize.h */, + A8A472FB151A825B004123FF /* RandomNumber.cpp */, + A8A472FC151A825B004123FF /* RandomNumber.h */, + A8A472FD151A825B004123FF /* RandomNumberSeed.h */, + 0F87105916643F190090B0AD /* RawPointer.h */, + A8A472FE151A825B004123FF /* RedBlackTree.h */, + A8A472FF151A825B004123FF /* RefCounted.h */, + A8A47300151A825B004123FF /* RefCountedArray.h */, + A8A47301151A825B004123FF /* RefCountedLeakCounter.cpp */, + A8A47302151A825B004123FF /* RefCountedLeakCounter.h */, + A8A47303151A825B004123FF /* RefPtr.h */, + A8A47304151A825B004123FF /* RefPtrHashMap.h */, + A8A47305151A825B004123FF /* RetainPtr.h */, + 1469419016EAAF6D0024E146 /* RunLoopTimer.h */, + 1469419116EAAF6D0024E146 /* RunLoopTimerCF.cpp */, + 14F3B0F615E45E4600210069 /* SaturatedArithmetic.h */, + 1469419416EAAFF80024E146 /* SchedulePair.h */, + 1469419816EAB0410024E146 /* SchedulePairCF.cpp */, + 1469419516EAAFF80024E146 /* SchedulePairMac.mm */, + A8A47306151A825B004123FF /* SegmentedVector.h */, + A8A47307151A825B004123FF /* SentinelLinkedList.h */, + A8A47308151A825B004123FF /* SHA1.cpp */, + A8A47309151A825B004123FF /* SHA1.h */, + A8A4730A151A825B004123FF /* SimpleStats.h */, + A8A4730B151A825B004123FF /* SinglyLinkedList.h */, + A8A4730C151A825B004123FF /* SizeLimits.cpp */, + A8A4730D151A825B004123FF /* Spectrum.h */, + A8A4730E151A825B004123FF /* StackBounds.cpp */, + A8A4730F151A825B004123FF /* StackBounds.h */, + FEDACD3B1630F83F00C69634 /* StackStats.cpp */, + FEDACD3C1630F83F00C69634 /* StackStats.h */, + A8A47310151A825B004123FF /* StaticConstructors.h */, + A8A47311151A825B004123FF /* StdLibExtras.h */, + 1A6BB768162F300500DD16DB /* StreamBuffer.h */, + A8A47313151A825B004123FF /* StringExtras.h */, + A8A47314151A825B004123FF /* StringHasher.h */, + 0FDDBFA51666DFA300C55FEF /* StringPrintStream.cpp */, + 0FDDBFA61666DFA300C55FEF /* StringPrintStream.h */, + A8A47315151A825B004123FF /* TCPackedCache.h */, + A8A47316151A825B004123FF /* TCPageMap.h */, + A8A47317151A825B004123FF /* TCSpinLock.h */, + A8A47318151A825B004123FF /* TCSystemAlloc.cpp */, + A8A47319151A825B004123FF /* TCSystemAlloc.h */, + A8A4731A151A825B004123FF /* TemporaryChange.h */, + A8A4732F151A825B004123FF /* ThreadFunctionInvocation.h */, + A8A47330151A825B004123FF /* ThreadIdentifierDataPthreads.cpp */, + A8A47331151A825B004123FF /* ThreadIdentifierDataPthreads.h */, + A8A47332151A825B004123FF /* Threading.cpp */, + A8A47333151A825B004123FF /* Threading.h */, + A8A47335151A825B004123FF /* ThreadingPrimitives.h */, + A8A47336151A825B004123FF /* ThreadingPthreads.cpp */, + A8A47338151A825B004123FF /* ThreadRestrictionVerifier.h */, + A8A4733E151A825B004123FF /* ThreadSafeRefCounted.h */, + A8A4733F151A825B004123FF /* ThreadSpecific.h */, + 149EF16216BBFE0D000A4331 /* TriState.h */, + A8A47341151A825B004123FF /* TypedArrayBase.h */, + A8A47342151A825B004123FF /* TypeTraits.cpp */, + A8A47343151A825B004123FF /* TypeTraits.h */, + A8A47346151A825B004123FF /* Uint16Array.h */, + A8A47347151A825B004123FF /* Uint32Array.h */, + A8A47344151A825B004123FF /* Uint8Array.h */, + A8A47345151A825B004123FF /* Uint8ClampedArray.h */, + A8A4735C151A825B004123FF /* UnionFind.h */, + A8A4736F151A825B004123FF /* ValueCheck.h */, + A8A47370151A825B004123FF /* Vector.h */, + A8A47371151A825B004123FF /* VectorTraits.h */, + A8A47372151A825B004123FF /* VMTags.h */, + 974CFC8D16A4F327006D5404 /* WeakPtr.h */, + A8A4737A151A825B004123FF /* WTFThreadData.cpp */, + A8A4737B151A825B004123FF /* WTFThreadData.h */, + ); + path = wtf; + sourceTree = ""; + }; + A8A47281151A825A004123FF /* dtoa */ = { + isa = PBXGroup; + children = ( + A8A47288151A825A004123FF /* COPYING */, + A8A47292151A825A004123FF /* LICENSE */, + A8A47293151A825A004123FF /* README */, + A8A47282151A825A004123FF /* bignum-dtoa.cc */, + A8A47283151A825A004123FF /* bignum-dtoa.h */, + A8A47284151A825A004123FF /* bignum.cc */, + A8A47285151A825A004123FF /* bignum.h */, + A8A47286151A825A004123FF /* cached-powers.cc */, + A8A47287151A825A004123FF /* cached-powers.h */, + A8A47289151A825A004123FF /* diy-fp.cc */, + A8A4728A151A825A004123FF /* diy-fp.h */, + A8A4728B151A825A004123FF /* double-conversion.cc */, + A8A4728C151A825A004123FF /* double-conversion.h */, + A8A4728D151A825A004123FF /* double.h */, + A8A4728E151A825A004123FF /* fast-dtoa.cc */, + A8A4728F151A825A004123FF /* fast-dtoa.h */, + A8A47290151A825A004123FF /* fixed-dtoa.cc */, + A8A47291151A825A004123FF /* fixed-dtoa.h */, + A8A47294151A825A004123FF /* strtod.cc */, + A8A47295151A825A004123FF /* strtod.h */, + A8A47296151A825A004123FF /* utils.h */, + ); + path = dtoa; + sourceTree = ""; + }; + A8A472C4151A825A004123FF /* mac */ = { + isa = PBXGroup; + children = ( + A8A472C5151A825A004123FF /* MainThreadMac.mm */, + ); + path = mac; + sourceTree = ""; + }; + A8A4731B151A825B004123FF /* text */ = { + isa = PBXGroup; + children = ( + A8A4731C151A825B004123FF /* ASCIIFastPath.h */, + A8A4731D151A825B004123FF /* AtomicString.cpp */, + A8A4731E151A825B004123FF /* AtomicString.h */, + A8A4731F151A825B004123FF /* AtomicStringHash.h */, + A8A47320151A825B004123FF /* AtomicStringImpl.h */, + 9BC70F04176C379D00101DEC /* AtomicStringTable.cpp */, + 9BD8F40A176C2AD80002D865 /* AtomicStringTable.h */, + 8134013615B092FD001FF0B8 /* Base64.cpp */, + 8134013715B092FD001FF0B8 /* Base64.h */, + A8A47321151A825B004123FF /* CString.cpp */, + A8A47322151A825B004123FF /* CString.h */, + 26147B0815DDCCDC00DDB907 /* IntegerToStringConversion.h */, + A8A47323151A825B004123FF /* StringBuffer.h */, + A8A47324151A825B004123FF /* StringBuilder.cpp */, + A8A47325151A825B004123FF /* StringBuilder.h */, + A8A47326151A825B004123FF /* StringConcatenate.h */, + A8A47327151A825B004123FF /* StringHash.h */, + A8A47328151A825B004123FF /* StringImpl.cpp */, + A8A47329151A825B004123FF /* StringImpl.h */, + A8A4732A151A825B004123FF /* StringOperators.h */, + A8A4732B151A825B004123FF /* StringStatics.cpp */, + A8A4732C151A825B004123FF /* TextPosition.h */, + A8A4732D151A825B004123FF /* WTFString.cpp */, + A8A4732E151A825B004123FF /* WTFString.h */, + ); + path = text; + sourceTree = ""; + }; + A8A47339151A825B004123FF /* threads */ = { + isa = PBXGroup; + children = ( + A8A4733A151A825B004123FF /* BinarySemaphore.cpp */, + A8A4733B151A825B004123FF /* BinarySemaphore.h */, + ); + path = threads; + sourceTree = ""; + }; + A8A47348151A825B004123FF /* unicode */ = { + isa = PBXGroup; + children = ( + A8A4734F151A825B004123FF /* icu */, + A8A47349151A825B004123FF /* CharacterNames.h */, + A8A4734A151A825B004123FF /* Collator.h */, + A8A4734B151A825B004123FF /* CollatorDefault.cpp */, + A8A47354151A825B004123FF /* ScriptCodesFromICU.h */, + A8A47355151A825B004123FF /* Unicode.h */, + A8A47356151A825B004123FF /* UnicodeMacrosFromICU.h */, + A8A47357151A825B004123FF /* UTF8.cpp */, + A8A47358151A825B004123FF /* UTF8.h */, + ); + path = unicode; + sourceTree = ""; + }; + A8A4734F151A825B004123FF /* icu */ = { + isa = PBXGroup; + children = ( + A8A47350151A825B004123FF /* CollatorICU.cpp */, + A8A47351151A825B004123FF /* UnicodeIcu.h */, + ); + path = icu; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 5D247B6014689B8600E78B76 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A8A4737F151A825B004123FF /* Alignment.h in Headers */, + A8A47382151A825B004123FF /* ArrayBuffer.h in Headers */, + A8A47384151A825B004123FF /* ArrayBufferView.h in Headers */, + A8A47385151A825B004123FF /* ASCIICType.h in Headers */, + A8A47434151A825B004123FF /* ASCIIFastPath.h in Headers */, + A8A47387151A825B004123FF /* Assertions.h in Headers */, + A8A47388151A825B004123FF /* Atomics.h in Headers */, + A8A47436151A825B004123FF /* AtomicString.h in Headers */, + A8A47437151A825B004123FF /* AtomicStringHash.h in Headers */, + A8A47438151A825B004123FF /* AtomicStringImpl.h in Headers */, + 9BD8F40B176C2B470002D865 /* AtomicStringTable.h in Headers */, + 1469419C16EAB10A0024E146 /* AutodrainedPool.h in Headers */, + A8A47389151A825B004123FF /* AVLTree.h in Headers */, + 8134013915B092FD001FF0B8 /* Base64.h in Headers */, + A8A473A9151A825B004123FF /* bignum-dtoa.h in Headers */, + A8A473AB151A825B004123FF /* bignum.h in Headers */, + A8A47452151A825B004123FF /* BinarySemaphore.h in Headers */, + 4F0321BC156AA8D1006EBAF6 /* BitArray.h in Headers */, + A8A4738A151A825B004123FF /* Bitmap.h in Headers */, + A8A4738C151A825B004123FF /* BitVector.h in Headers */, + A8A4738E151A825B004123FF /* BlockStack.h in Headers */, + A8A4738F151A825B004123FF /* BloomFilter.h in Headers */, + A8A47390151A825B004123FF /* BoundsCheckedPointer.h in Headers */, + A8A47391151A825B004123FF /* BumpPointerAllocator.h in Headers */, + EB95E1F0161A72410089A2F5 /* ByteOrder.h in Headers */, + A8A473AD151A825B004123FF /* cached-powers.h in Headers */, + A8A4745E151A825B004123FF /* CharacterNames.h in Headers */, + A8A47394151A825B004123FF /* CheckedArithmetic.h in Headers */, + A8A47395151A825B004123FF /* CheckedBoolean.h in Headers */, + A8A4745F151A825B004123FF /* Collator.h in Headers */, + 0FC4EDE61696149600F65041 /* CommaPrinter.h in Headers */, + A8A47398151A825B004123FF /* Compiler.h in Headers */, + A8A4748C151A8264004123FF /* config.h in Headers */, + A8A4739B151A825B004123FF /* CryptographicallyRandomNumber.h in Headers */, + A8A4743A151A825B004123FF /* CString.h in Headers */, + A8A4739D151A825B004123FF /* CurrentTime.h in Headers */, + A8A4739F151A825B004123FF /* DataLog.h in Headers */, + A8A473A1151A825B004123FF /* DateMath.h in Headers */, + A8A473A3151A825B004123FF /* DecimalNumber.h in Headers */, + A8A473A4151A825B004123FF /* Decoder.h in Headers */, + A8A473A5151A825B004123FF /* Deque.h in Headers */, + A8A473A6151A825B004123FF /* DisallowCType.h in Headers */, + A8A473AF151A825B004123FF /* diy-fp.h in Headers */, + A8A473B1151A825B004123FF /* double-conversion.h in Headers */, + A8A473B2151A825B004123FF /* double.h in Headers */, + A8A473A7151A825B004123FF /* DoublyLinkedList.h in Headers */, + A8A473BB151A825B004123FF /* dtoa.h in Headers */, + A8A473BD151A825B004123FF /* DynamicAnnotations.h in Headers */, + A8A473C0151A825B004123FF /* Encoder.h in Headers */, + 44F66008171AFAE600E4AD19 /* EnumClass.h in Headers */, + A8A473C1151A825B004123FF /* ExportMacros.h in Headers */, + A8A473B4151A825B004123FF /* fast-dtoa.h in Headers */, + A8A473C2151A825B004123FF /* FastAllocBase.h in Headers */, + 0FD81AC5154FB22E00983E72 /* FastBitVector.h in Headers */, + A8A473C4151A825B004123FF /* FastMalloc.h in Headers */, + B38FD7BD168953E80065C969 /* FeatureDefines.h in Headers */, + 0F9D3361165DBA73005AD387 /* FilePrintStream.h in Headers */, + A8A473B6151A825B004123FF /* fixed-dtoa.h in Headers */, + A8A473C5151A825B004123FF /* FixedArray.h in Headers */, + A8A473C6151A825B004123FF /* Float32Array.h in Headers */, + A8A473C7151A825B004123FF /* Float64Array.h in Headers */, + A8A473C8151A825B004123FF /* Forward.h in Headers */, + A8A473C9151A825B004123FF /* Functional.h in Headers */, + 1A1D8B9C173186CE00141DA4 /* FunctionDispatcher.h in Headers */, + A8A473CA151A825B004123FF /* GetPtr.h in Headers */, + 2C05385415BC819000F21B96 /* GregorianDateTime.h in Headers */, + A8A473D3151A825B004123FF /* HashCountedSet.h in Headers */, + A8A473D4151A825B004123FF /* HashFunctions.h in Headers */, + A8A473D5151A825B004123FF /* HashIterators.h in Headers */, + A8A473D6151A825B004123FF /* HashMap.h in Headers */, + A8A473D7151A825B004123FF /* HashSet.h in Headers */, + A8A473D9151A825B004123FF /* HashTable.h in Headers */, + A8A473DA151A825B004123FF /* HashTraits.h in Headers */, + A8A473DB151A825B004123FF /* HexNumber.h in Headers */, + A8A473DC151A825B004123FF /* InlineASM.h in Headers */, + A8A473DE151A825B004123FF /* Int16Array.h in Headers */, + A8A473DF151A825B004123FF /* Int32Array.h in Headers */, + A8A473DD151A825B004123FF /* Int8Array.h in Headers */, + 26147B0A15DDCCDC00DDB907 /* IntegerToStringConversion.h in Headers */, + A8A473E0151A825B004123FF /* IntegralTypedArrayBase.h in Headers */, + A8A473E1151A825B004123FF /* ListHashSet.h in Headers */, + A8A473E3151A825B004123FF /* Locker.h in Headers */, + A8A473E6151A825B004123FF /* MainThread.h in Headers */, + A8A473E8151A825B004123FF /* MathExtras.h in Headers */, + A8A473EA151A825B004123FF /* MD5.h in Headers */, + CD5497AD15857D0300B5BC30 /* MediaTime.h in Headers */, + A8A473EB151A825B004123FF /* MessageQueue.h in Headers */, + A8A473ED151A825B004123FF /* MetaAllocator.h in Headers */, + A8A473EE151A825B004123FF /* MetaAllocatorHandle.h in Headers */, + A8A473EF151A825B004123FF /* Noncopyable.h in Headers */, + A8A473F0151A825B004123FF /* NonCopyingSort.h in Headers */, + A8A473F1151A825B004123FF /* NotFound.h in Headers */, + A8A473F3151A825B004123FF /* NullPtr.h in Headers */, + A8A473F5151A825B004123FF /* NumberOfCores.h in Headers */, + 7E29C33E15FFD79B00516D61 /* ObjcRuntimeExtras.h in Headers */, + A8A473F6151A825B004123FF /* OSAllocator.h in Headers */, + A8A473FA151A825B004123FF /* OSRandomSource.h in Headers */, + A8A473FB151A825B004123FF /* OwnArrayPtr.h in Headers */, + A8A473FC151A825B004123FF /* OwnPtr.h in Headers */, + A8A473FD151A825B004123FF /* OwnPtrCommon.h in Headers */, + A8A473FE151A825B004123FF /* PackedIntVector.h in Headers */, + A8A473FF151A825B004123FF /* PageAllocation.h in Headers */, + A8A47401151A825B004123FF /* PageAllocationAligned.h in Headers */, + A8A47403151A825B004123FF /* PageBlock.h in Headers */, + A8A47404151A825B004123FF /* PageReservation.h in Headers */, + A8A47405151A825B004123FF /* ParallelJobs.h in Headers */, + A8A47408151A825B004123FF /* ParallelJobsLibdispatch.h in Headers */, + A8A4740A151A825B004123FF /* PassOwnArrayPtr.h in Headers */, + A8A4740B151A825B004123FF /* PassOwnPtr.h in Headers */, + A8A4740C151A825B004123FF /* PassRefPtr.h in Headers */, + A8A4740D151A825B004123FF /* PassTraits.h in Headers */, + A876DBD8151816E500DADB95 /* Platform.h in Headers */, + A8A4740E151A825B004123FF /* Platform.h in Headers */, + A8A4740F151A825B004123FF /* PossiblyNull.h in Headers */, + 0F9D3363165DBA73005AD387 /* PrintStream.h in Headers */, + 0FC4488316FE9FE100844BE9 /* ProcessID.h in Headers */, + 143F61201565F0F900DB514A /* RAMSize.h in Headers */, + A8A47415151A825B004123FF /* RandomNumber.h in Headers */, + A8A47416151A825B004123FF /* RandomNumberSeed.h in Headers */, + 0F87105A16643F190090B0AD /* RawPointer.h in Headers */, + A8A47417151A825B004123FF /* RedBlackTree.h in Headers */, + A8A47418151A825B004123FF /* RefCounted.h in Headers */, + A8A47419151A825B004123FF /* RefCountedArray.h in Headers */, + A8A4741B151A825B004123FF /* RefCountedLeakCounter.h in Headers */, + A8A4741C151A825B004123FF /* RefPtr.h in Headers */, + A8A4741D151A825B004123FF /* RefPtrHashMap.h in Headers */, + A8A4741E151A825B004123FF /* RetainPtr.h in Headers */, + 1469419216EAAF6D0024E146 /* RunLoopTimer.h in Headers */, + 14F3B0F715E45E4600210069 /* SaturatedArithmetic.h in Headers */, + 1469419616EAAFF80024E146 /* SchedulePair.h in Headers */, + A8A47466151A825B004123FF /* ScriptCodesFromICU.h in Headers */, + A8A4741F151A825B004123FF /* SegmentedVector.h in Headers */, + A8A47420151A825B004123FF /* SentinelLinkedList.h in Headers */, + A8A47422151A825B004123FF /* SHA1.h in Headers */, + A8A47423151A825B004123FF /* SimpleStats.h in Headers */, + A8A47424151A825B004123FF /* SinglyLinkedList.h in Headers */, + A8A47426151A825B004123FF /* Spectrum.h in Headers */, + A8A47428151A825B004123FF /* StackBounds.h in Headers */, + FEDACD3E1630F83F00C69634 /* StackStats.h in Headers */, + A8A47429151A825B004123FF /* StaticConstructors.h in Headers */, + A8A4742A151A825B004123FF /* StdLibExtras.h in Headers */, + 1A6BB769162F300500DD16DB /* StreamBuffer.h in Headers */, + A8A4743B151A825B004123FF /* StringBuffer.h in Headers */, + A8A4743D151A825B004123FF /* StringBuilder.h in Headers */, + A8A4743E151A825B004123FF /* StringConcatenate.h in Headers */, + A8A4742C151A825B004123FF /* StringExtras.h in Headers */, + A8A4743F151A825B004123FF /* StringHash.h in Headers */, + A8A4742D151A825B004123FF /* StringHasher.h in Headers */, + A8A47441151A825B004123FF /* StringImpl.h in Headers */, + A8A47442151A825B004123FF /* StringOperators.h in Headers */, + 0FDDBFA81666DFA300C55FEF /* StringPrintStream.h in Headers */, + A8A473B8151A825B004123FF /* strtod.h in Headers */, + A8A4742E151A825B004123FF /* TCPackedCache.h in Headers */, + A8A4742F151A825B004123FF /* TCPageMap.h in Headers */, + A8A47430151A825B004123FF /* TCSpinLock.h in Headers */, + A8A47432151A825B004123FF /* TCSystemAlloc.h in Headers */, + A8A47433151A825B004123FF /* TemporaryChange.h in Headers */, + A8A47444151A825B004123FF /* TextPosition.h in Headers */, + A8A47447151A825B004123FF /* ThreadFunctionInvocation.h in Headers */, + A8A47449151A825B004123FF /* ThreadIdentifierDataPthreads.h in Headers */, + A8A4744B151A825B004123FF /* Threading.h in Headers */, + A8A4744D151A825B004123FF /* ThreadingPrimitives.h in Headers */, + A8A47450151A825B004123FF /* ThreadRestrictionVerifier.h in Headers */, + A8A47454151A825B004123FF /* ThreadSafeRefCounted.h in Headers */, + A8A47455151A825B004123FF /* ThreadSpecific.h in Headers */, + 149EF16316BBFE0D000A4331 /* TriState.h in Headers */, + A8A47457151A825B004123FF /* TypedArrayBase.h in Headers */, + A8A47459151A825B004123FF /* TypeTraits.h in Headers */, + A8A4745C151A825B004123FF /* Uint16Array.h in Headers */, + A8A4745D151A825B004123FF /* Uint32Array.h in Headers */, + A8A4745A151A825B004123FF /* Uint8Array.h in Headers */, + A8A4745B151A825B004123FF /* Uint8ClampedArray.h in Headers */, + A8A47467151A825B004123FF /* Unicode.h in Headers */, + A8A47464151A825B004123FF /* UnicodeIcu.h in Headers */, + A8A47468151A825B004123FF /* UnicodeMacrosFromICU.h in Headers */, + A8A4746D151A825B004123FF /* UnionFind.h in Headers */, + A8A4746A151A825B004123FF /* UTF8.h in Headers */, + A8A473B9151A825B004123FF /* utils.h in Headers */, + A8A4747D151A825B004123FF /* ValueCheck.h in Headers */, + A8A4747E151A825B004123FF /* Vector.h in Headers */, + A8A4747F151A825B004123FF /* VectorTraits.h in Headers */, + A8A47480151A825B004123FF /* VMTags.h in Headers */, + 974CFC8E16A4F327006D5404 /* WeakPtr.h in Headers */, + A8A47446151A825B004123FF /* WTFString.h in Headers */, + A8A47487151A825B004123FF /* WTFThreadData.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 5D247B6114689B8600E78B76 /* WTF */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5D247B6614689B8600E78B76 /* Build configuration list for PBXNativeTarget "WTF" */; + buildPhases = ( + 5D247B5E14689B8600E78B76 /* Sources */, + 5D247B5F14689B8600E78B76 /* Frameworks */, + 5D247B6014689B8600E78B76 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 65AFA28E1630B99E003D723C /* PBXTargetDependency */, + ); + name = WTF; + productName = WTF; + productReference = 5D247B6214689B8600E78B76 /* libWTF.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 5D247B5914689B8600E78B76 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0440; + }; + buildConfigurationList = 5D247B5C14689B8600E78B76 /* Build configuration list for PBXProject "WTF" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 5D247B5714689B8600E78B76; + productRefGroup = 5D247B6314689B8600E78B76 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 5D247B6114689B8600E78B76 /* WTF */, + 65AFA16F1630B977003D723C /* Copy WTF Headers */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + 65AFA1701630B977003D723C /* Copy WTF Headers */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy WTF Headers"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [[ \"${DEPLOYMENT_LOCATION}\" == \"NO\" ]]; then\n PRIVATE_HEADERS_PATH=\"${TARGET_BUILD_DIR%%/}${PRIVATE_HEADERS_FOLDER_PATH}\"\nelse\n PRIVATE_HEADERS_PATH=\"${DSTROOT%%/}${PRIVATE_HEADERS_FOLDER_PATH}\"\nfi;\n\nmkdir -p \"${PRIVATE_HEADERS_PATH}\"\nrsync -av --no-owner --no-group --prune-empty-dirs --exclude \".svn\" --exclude \"usr\" --exclude \"DerivedSources\" --include \"*/\" --include \"*.h\" --exclude \"*\" \"${SRCROOT}/wtf/\" \"${PRIVATE_HEADERS_PATH}\"\n\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5D247B5E14689B8600E78B76 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A8A47381151A825B004123FF /* ArrayBuffer.cpp in Sources */, + A8A47383151A825B004123FF /* ArrayBufferView.cpp in Sources */, + A8A47386151A825B004123FF /* Assertions.cpp in Sources */, + A8A47435151A825B004123FF /* AtomicString.cpp in Sources */, + 9BC70F05176C379D00101DEC /* AtomicStringTable.cpp in Sources */, + 1469419D16EAB10A0024E146 /* AutodrainedPoolMac.mm in Sources */, + 8134013815B092FD001FF0B8 /* Base64.cpp in Sources */, + A8A473A8151A825B004123FF /* bignum-dtoa.cc in Sources */, + A8A473AA151A825B004123FF /* bignum.cc in Sources */, + A8A47451151A825B004123FF /* BinarySemaphore.cpp in Sources */, + A8A4738B151A825B004123FF /* BitVector.cpp in Sources */, + A8A473AC151A825B004123FF /* cached-powers.cc in Sources */, + A8A47460151A825B004123FF /* CollatorDefault.cpp in Sources */, + A8A47463151A825B004123FF /* CollatorICU.cpp in Sources */, + A8A4739A151A825B004123FF /* CryptographicallyRandomNumber.cpp in Sources */, + A8A47439151A825B004123FF /* CString.cpp in Sources */, + A8A4739C151A825B004123FF /* CurrentTime.cpp in Sources */, + A8A4739E151A825B004123FF /* DataLog.cpp in Sources */, + A8A473A0151A825B004123FF /* DateMath.cpp in Sources */, + A8A473A2151A825B004123FF /* DecimalNumber.cpp in Sources */, + A8A473AE151A825B004123FF /* diy-fp.cc in Sources */, + A8A473B0151A825B004123FF /* double-conversion.cc in Sources */, + A8A473BA151A825B004123FF /* dtoa.cpp in Sources */, + A8A473BC151A825B004123FF /* DynamicAnnotations.cpp in Sources */, + A8A473B3151A825B004123FF /* fast-dtoa.cc in Sources */, + A8A473C3151A825B004123FF /* FastMalloc.cpp in Sources */, + 0F9D3360165DBA73005AD387 /* FilePrintStream.cpp in Sources */, + A8A473B5151A825B004123FF /* fixed-dtoa.cc in Sources */, + 1A1D8B9E1731879800141DA4 /* FunctionDispatcher.cpp in Sources */, + 2CCD892A15C0390200285083 /* GregorianDateTime.cpp in Sources */, + A8A473D8151A825B004123FF /* HashTable.cpp in Sources */, + A8A473E5151A825B004123FF /* MainThread.cpp in Sources */, + A8A473E4151A825B004123FF /* MainThreadMac.mm in Sources */, + A8A473E9151A825B004123FF /* MD5.cpp in Sources */, + CD5497AC15857D0300B5BC30 /* MediaTime.cpp in Sources */, + A8A473EC151A825B004123FF /* MetaAllocator.cpp in Sources */, + A8A473F2151A825B004123FF /* NullPtr.cpp in Sources */, + A8A473F4151A825B004123FF /* NumberOfCores.cpp in Sources */, + A8A473F7151A825B004123FF /* OSAllocatorPosix.cpp in Sources */, + A8A473F9151A825B004123FF /* OSRandomSource.cpp in Sources */, + A8A47400151A825B004123FF /* PageAllocationAligned.cpp in Sources */, + A8A47402151A825B004123FF /* PageBlock.cpp in Sources */, + 0F9D3362165DBA73005AD387 /* PrintStream.cpp in Sources */, + 143F611F1565F0F900DB514A /* RAMSize.cpp in Sources */, + A8A47414151A825B004123FF /* RandomNumber.cpp in Sources */, + A8A4741A151A825B004123FF /* RefCountedLeakCounter.cpp in Sources */, + 1469419316EAAF6D0024E146 /* RunLoopTimerCF.cpp in Sources */, + 1469419916EAB0410024E146 /* SchedulePairCF.cpp in Sources */, + 1469419716EAAFF80024E146 /* SchedulePairMac.mm in Sources */, + A8A47421151A825B004123FF /* SHA1.cpp in Sources */, + A8A47425151A825B004123FF /* SizeLimits.cpp in Sources */, + A8A47427151A825B004123FF /* StackBounds.cpp in Sources */, + FEDACD3D1630F83F00C69634 /* StackStats.cpp in Sources */, + A8A4743C151A825B004123FF /* StringBuilder.cpp in Sources */, + A8A47440151A825B004123FF /* StringImpl.cpp in Sources */, + 0FDDBFA71666DFA300C55FEF /* StringPrintStream.cpp in Sources */, + A8A47443151A825B004123FF /* StringStatics.cpp in Sources */, + A8A473B7151A825B004123FF /* strtod.cc in Sources */, + A8A47431151A825B004123FF /* TCSystemAlloc.cpp in Sources */, + A8A47448151A825B004123FF /* ThreadIdentifierDataPthreads.cpp in Sources */, + A8A4744A151A825B004123FF /* Threading.cpp in Sources */, + A8A4744E151A825B004123FF /* ThreadingPthreads.cpp in Sources */, + A8A47458151A825B004123FF /* TypeTraits.cpp in Sources */, + A8A47469151A825B004123FF /* UTF8.cpp in Sources */, + A8A47445151A825B004123FF /* WTFString.cpp in Sources */, + A8A47486151A825B004123FF /* WTFThreadData.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 65AFA28E1630B99E003D723C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 65AFA16F1630B977003D723C /* Copy WTF Headers */; + targetProxy = 65AFA28D1630B99E003D723C /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 5D247B6414689B8600E78B76 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5D247B7014689C4700E78B76 /* DebugRelease.xcconfig */; + buildSettings = { + DEAD_CODE_STRIPPING = "$(DEAD_CODE_STRIPPING_debug)"; + DEBUG_DEFINES = "$(DEBUG_DEFINES_debug)"; + GCC_OPTIMIZATION_LEVEL = "$(GCC_OPTIMIZATION_LEVEL_debug)"; + STRIP_INSTALLED_PRODUCT = "$(STRIP_INSTALLED_PRODUCT_debug)"; + }; + name = Debug; + }; + 5D247B6514689B8600E78B76 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5D247B7014689C4700E78B76 /* DebugRelease.xcconfig */; + buildSettings = { + }; + name = Release; + }; + 5D247B6714689B8600E78B76 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5D247B7314689C4700E78B76 /* WTF.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + 5D247B6814689B8600E78B76 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5D247B7314689C4700E78B76 /* WTF.xcconfig */; + buildSettings = { + }; + name = Release; + }; + 5D247B7414689CC900E78B76 /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5D247B6E14689C4700E78B76 /* Base.xcconfig */; + buildSettings = { + }; + name = Production; + }; + 5D247B7514689CC900E78B76 /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5D247B7314689C4700E78B76 /* WTF.xcconfig */; + buildSettings = { + }; + name = Production; + }; + 65AFA2891630B977003D723C /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6541CAF41630DB26006D0DEC /* CopyWTFHeaders.xcconfig */; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 65AFA28A1630B977003D723C /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6541CAF41630DB26006D0DEC /* CopyWTFHeaders.xcconfig */; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 65AFA28B1630B977003D723C /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6541CAF41630DB26006D0DEC /* CopyWTFHeaders.xcconfig */; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Production; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5D247B5C14689B8600E78B76 /* Build configuration list for PBXProject "WTF" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5D247B6414689B8600E78B76 /* Debug */, + 5D247B6514689B8600E78B76 /* Release */, + 5D247B7414689CC900E78B76 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 5D247B6614689B8600E78B76 /* Build configuration list for PBXNativeTarget "WTF" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5D247B6714689B8600E78B76 /* Debug */, + 5D247B6814689B8600E78B76 /* Release */, + 5D247B7514689CC900E78B76 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 65AFA2881630B977003D723C /* Build configuration list for PBXAggregateTarget "Copy WTF Headers" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 65AFA2891630B977003D723C /* Debug */, + 65AFA28A1630B977003D723C /* Release */, + 65AFA28B1630B977003D723C /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; +/* End XCConfigurationList section */ + }; + rootObject = 5D247B5914689B8600E78B76 /* Project object */; +} diff --git a/Source/WTF/wtf/AutodrainedPool.h b/Source/WTF/wtf/AutodrainedPool.h index 2448eea110c..6c74ccaeb92 100644 --- a/Source/WTF/wtf/AutodrainedPool.h +++ b/Source/WTF/wtf/AutodrainedPool.h @@ -31,7 +31,11 @@ #include +#ifdef Q_FORWARD_DECLARE_OBJC_CLASS +Q_FORWARD_DECLARE_OBJC_CLASS(NSAutoreleasePool); +#else OBJC_CLASS NSAutoreleasePool; +#endif namespace WTF { diff --git a/Source/WebCore/Resources/contextMenuCursor.png b/Source/WebCore/Resources/contextMenuCursor.png index 054b28761a7..ae100c7eaf5 100644 Binary files a/Source/WebCore/Resources/contextMenuCursor.png and b/Source/WebCore/Resources/contextMenuCursor.png differ diff --git a/Source/WebCore/Resources/deleteButton.png b/Source/WebCore/Resources/deleteButton.png index 9c4275ccaff..67e2240c571 100644 Binary files a/Source/WebCore/Resources/deleteButton.png and b/Source/WebCore/Resources/deleteButton.png differ diff --git a/Source/WebCore/Resources/deleteButton@2x.png b/Source/WebCore/Resources/deleteButton@2x.png index d8424545b20..e6046d4755c 100644 Binary files a/Source/WebCore/Resources/deleteButton@2x.png and b/Source/WebCore/Resources/deleteButton@2x.png differ diff --git a/Source/WebCore/Resources/deleteButtonPressed.png b/Source/WebCore/Resources/deleteButtonPressed.png index b96cc63eb8a..2dbd13df4fb 100644 Binary files a/Source/WebCore/Resources/deleteButtonPressed.png and b/Source/WebCore/Resources/deleteButtonPressed.png differ diff --git a/Source/WebCore/Resources/deleteButtonPressed@2x.png b/Source/WebCore/Resources/deleteButtonPressed@2x.png index 276420b0c7c..3c999a7db3b 100644 Binary files a/Source/WebCore/Resources/deleteButtonPressed@2x.png and b/Source/WebCore/Resources/deleteButtonPressed@2x.png differ diff --git a/Source/WebCore/Resources/inputSpeech.png b/Source/WebCore/Resources/inputSpeech.png index d5f7f1602d8..8a5c469da51 100644 Binary files a/Source/WebCore/Resources/inputSpeech.png and b/Source/WebCore/Resources/inputSpeech.png differ diff --git a/Source/WebCore/Resources/linkCursor.png b/Source/WebCore/Resources/linkCursor.png index 048c56763f4..e5e274936c0 100644 Binary files a/Source/WebCore/Resources/linkCursor.png and b/Source/WebCore/Resources/linkCursor.png differ diff --git a/Source/WebCore/Resources/missingImage.png b/Source/WebCore/Resources/missingImage.png index 3fead8b1c69..5c24d20c2c4 100644 Binary files a/Source/WebCore/Resources/missingImage.png and b/Source/WebCore/Resources/missingImage.png differ diff --git a/Source/WebCore/Resources/missingImage@2x.png b/Source/WebCore/Resources/missingImage@2x.png index 494fbbec34e..6573d174713 100644 Binary files a/Source/WebCore/Resources/missingImage@2x.png and b/Source/WebCore/Resources/missingImage@2x.png differ diff --git a/Source/WebCore/Resources/moveCursor.png b/Source/WebCore/Resources/moveCursor.png index f5c70f6e4e4..4ca8d703744 100644 Binary files a/Source/WebCore/Resources/moveCursor.png and b/Source/WebCore/Resources/moveCursor.png differ diff --git a/Source/WebCore/Resources/nullPlugin.png b/Source/WebCore/Resources/nullPlugin.png index 9471d54fa32..a4195f67d37 100644 Binary files a/Source/WebCore/Resources/nullPlugin.png and b/Source/WebCore/Resources/nullPlugin.png differ diff --git a/Source/WebCore/Resources/nullPlugin@2x.png b/Source/WebCore/Resources/nullPlugin@2x.png index fd9ce81b392..ccc40188a53 100644 Binary files a/Source/WebCore/Resources/nullPlugin@2x.png and b/Source/WebCore/Resources/nullPlugin@2x.png differ diff --git a/Source/WebCore/Resources/panIcon.png b/Source/WebCore/Resources/panIcon.png index f5c70f6e4e4..4ca8d703744 100644 Binary files a/Source/WebCore/Resources/panIcon.png and b/Source/WebCore/Resources/panIcon.png differ diff --git a/Source/WebCore/Resources/progressCursor.png b/Source/WebCore/Resources/progressCursor.png index 4fe74a4b804..25d70214320 100644 Binary files a/Source/WebCore/Resources/progressCursor.png and b/Source/WebCore/Resources/progressCursor.png differ diff --git a/Source/WebCore/Resources/textAreaResizeCorner.png b/Source/WebCore/Resources/textAreaResizeCorner.png index 4a4da15e1b9..66105dbcd3c 100644 Binary files a/Source/WebCore/Resources/textAreaResizeCorner.png and b/Source/WebCore/Resources/textAreaResizeCorner.png differ diff --git a/Source/WebCore/Resources/textAreaResizeCorner@2x.png b/Source/WebCore/Resources/textAreaResizeCorner@2x.png index 466aa5b7c6d..7d26fbc42f9 100644 Binary files a/Source/WebCore/Resources/textAreaResizeCorner@2x.png and b/Source/WebCore/Resources/textAreaResizeCorner@2x.png differ diff --git a/Source/WebCore/Resources/urlIcon.png b/Source/WebCore/Resources/urlIcon.png index afd1a56b2c1..53cb3545197 100644 Binary files a/Source/WebCore/Resources/urlIcon.png and b/Source/WebCore/Resources/urlIcon.png differ diff --git a/Source/WebCore/Resources/verticalTextCursor.png b/Source/WebCore/Resources/verticalTextCursor.png index 4472e971915..0f2877ccc32 100644 Binary files a/Source/WebCore/Resources/verticalTextCursor.png and b/Source/WebCore/Resources/verticalTextCursor.png differ diff --git a/Source/WebCore/Resources/zoomInCursor.png b/Source/WebCore/Resources/zoomInCursor.png index 7e8e752ca52..feec9bcbb5f 100644 Binary files a/Source/WebCore/Resources/zoomInCursor.png and b/Source/WebCore/Resources/zoomInCursor.png differ diff --git a/Source/WebCore/Resources/zoomOutCursor.png b/Source/WebCore/Resources/zoomOutCursor.png index 3b98234e3c8..f4a954e32be 100644 Binary files a/Source/WebCore/Resources/zoomOutCursor.png and b/Source/WebCore/Resources/zoomOutCursor.png differ diff --git a/Source/WebCore/Target.pri b/Source/WebCore/Target.pri index d1aad9f9b47..e525aa1fcb2 100644 --- a/Source/WebCore/Target.pri +++ b/Source/WebCore/Target.pri @@ -1122,7 +1122,6 @@ SOURCES += \ platform/text/TextCodecUTF8.cpp \ platform/text/TextCodecICU.cpp \ platform/text/TextEncoding.cpp \ - platform/text/TextEncodingDetectorICU.cpp \ platform/text/TextEncodingRegistry.cpp \ platform/text/TextStream.cpp \ platform/ThreadGlobalData.cpp \ @@ -2978,11 +2977,12 @@ mac { platform/text/cf/StringImplCF.cpp } -contains(QT_CONFIG,icu)|mac: SOURCES += platform/text/TextBreakIteratorICU.cpp use?(wchar_unicode): { SOURCES += platform/text/wchar/TextBreakIteratorWchar.cpp \ platform/text/TextEncodingDetectorNone.cpp - SOURCES -= platform/text/TextEncodingDetectorICU.cpp +} else { + SOURCES += platform/text/TextBreakIteratorICU.cpp \ + platform/text/TextEncodingDetectorICU.cpp } mac { diff --git a/Source/WebCore/WebCore.pri b/Source/WebCore/WebCore.pri index 7221acf4493..01893948ee7 100644 --- a/Source/WebCore/WebCore.pri +++ b/Source/WebCore/WebCore.pri @@ -121,11 +121,7 @@ enable?(XSLT) { QT *= xmlpatterns } } else:!mac:use?(LIBXML2) { - win32-msvc* { - LIBS += -llibxml2 - } else { - PKGCONFIG += libxml-2.0 - } + PKGCONFIG += libxml-2.0 } use?(ZLIB) { @@ -237,7 +233,7 @@ use?(GRAPHICS_SURFACE) { } have?(sqlite3) { - mac { + osx|contains(QT_CONFIG, no-pkg-config) { LIBS += -lsqlite3 } else { PKGCONFIG += sqlite3 diff --git a/Source/WebCore/WebCore.vcxproj/MigrateScripts b/Source/WebCore/WebCore.vcxproj/MigrateScripts new file mode 100644 index 00000000000..2a689787c8c --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/MigrateScripts @@ -0,0 +1,40 @@ +# Copyright (C) 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of +# its contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +.PHONY : all +all : \ + $(WEBKIT_OUTPUT)/CodeGenerator.pm \ + $(WEBKIT_OUTPUT)/IDLParser.pm \ + $(WEBKIT_OUTPUT)/generate-bindings.pl \ + $(WEBKIT_OUTPUT)/preprocessor.pm \ + $(WEBKIT_OUTPUT)/preprocess-idls.pl \ +# + +MIGRATE_CMD = cp $< $@ + +# Migrate generation scripts +$(WEBKIT_OUTPUT)/% : $(WEBCORE)/bindings/scripts/% + $(MIGRATE_CMD) diff --git a/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWin.vcxproj b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWin.vcxproj new file mode 100644 index 00000000000..ef1f126a27e --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWin.vcxproj @@ -0,0 +1,196 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + {E498CA9D-3BD2-4D52-8E37-C8DC76526325} + QuickTimeWin + Win32Proj + + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWin.vcxproj.filters b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWin.vcxproj.filters new file mode 100644 index 00000000000..801f7d7ef82 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWin.vcxproj.filters @@ -0,0 +1,76 @@ +锘 + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinCairoDebug.props b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinCairoDebug.props new file mode 100644 index 00000000000..ac239552587 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinCairoDebug.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinCairoRelease.props b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinCairoRelease.props new file mode 100644 index 00000000000..a8e2ba3e17d --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinCairoRelease.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinCommon.props b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinCommon.props new file mode 100644 index 00000000000..53335812039 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinCommon.props @@ -0,0 +1,18 @@ +锘 + + + <_ProjectFileVersion>10.0.40219.1 + + + + $(ProjectDir)..\..\;$(ProjectDir)..\..\Platform\;$(ProjectDir)..\..\ForwardingHeaders;$(WebKit_Libraries)\Include\JavaScriptCore;$(WebKit_Libraries)\include\private\JavaScriptCore;$(ConfigurationBuildDir)\Include\JavaScriptCore;$(ConfigurationBuildDir)\include\private\JavaScriptCore;$(ConfigurationBuildDir)\Include\WebCore\ForwardingHeaders;$(ConfigurationBuildDir)\Include;$(ConfigurationBuildDir)\Include\private;$(WebKit_Libraries)\QTInternalSDK\CIncludes;$(WebKit_Libraries)\QuickTime SDK\CIncludes;$(ProgramFiles)/QuickTime SDK/cincludes;$(WebKit_Libraries)\include\private;$(WebKit_Libraries)\include;%(AdditionalIncludeDirectories) + _USRDLL;QTMOVIEWIN_EXPORTS;TARGET_OS_WIN32;%(PreprocessorDefinitions) + 4819;%(DisableSpecificWarnings) + + + QTMLClient.lib;CVClient.lib;JavaScriptCore$(DebugSuffix).lib;WebKitSystemInterface$(DebugSuffix).lib;WTF$(DebugSuffix).lib;winmm.lib;Msimg32.lib;user32.lib;advapi32.lib;%(AdditionalDependencies) + $(WebKit_Libraries)\QTInternalSDK\Libraries;$(WebKit_Libraries)\QuickTime SDK\Libraries;$(ProgramFiles)\QuickTime SDK\Libraries;%(AdditionalLibraryDirectories) + LIBCMT;%(IgnoreSpecificDefaultLibraries) + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinDebug.props b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinDebug.props new file mode 100644 index 00000000000..17df02f4c86 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinDebug.props @@ -0,0 +1,12 @@ +锘 + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinPostBuild.cmd b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinPostBuild.cmd new file mode 100644 index 00000000000..3ed231d80c2 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinPostBuild.cmd @@ -0,0 +1,5 @@ +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\QTMovieWin" +xcopy /y /d "%PROJECTDIR%..\..\platform\graphics\win\QTMovie.h" "%CONFIGURATIONBUILDDIR%\include\QTMovieWin" +if exist "%WEBKIT_LIBRARIES%\tools\VersionStamper\VersionStamper.exe" "%WEBKIT_LIBRARIES%\tools\VersionStamper\VersionStamper.exe" --verbose "%TARGETPATH%" + +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinPreBuild.cmd b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinPreBuild.cmd new file mode 100644 index 00000000000..bfffcf1ea41 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinPreBuild.cmd @@ -0,0 +1,7 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c + +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinPreLink.cmd b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinPreLink.cmd new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinProduction.props b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinProduction.props new file mode 100644 index 00000000000..9520e396748 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinProduction.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinRelease.props b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinRelease.props new file mode 100644 index 00000000000..f2480f4eb39 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/QTMovieWin/QTMovieWinRelease.props @@ -0,0 +1,12 @@ +锘 + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCore.make b/Source/WebCore/WebCore.vcxproj/WebCore.make new file mode 100644 index 00000000000..dc7fbb26a8d --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCore.make @@ -0,0 +1,24 @@ +!IF "$(BUILDSTYLE)"=="DEBUG" +BUILDSTYLE=DebugSuffix +!ELSE +BUILDSTYLE=Production +!ENDIF + +install: + set OFFICIAL_BUILD=1 + set WebKit_Libraries=$(SRCROOT)\AppleInternal + set WebKit_OutputDir=$(OBJROOT) + set ProgramFilesAAS=Program Files (x86)\Common Files\Apple\Apple Application Support + set Path=%PATH%;$(SRCROOT)\%ProgramFilesAAS% + set ConfigurationBuildDir=$(OBJROOT)\$(BUILDSTYLE) + -mkdir 2>NUL "%ConfigurationBuildDir%\include\private" + xcopy "%WebKit_Libraries%\include\private\*" "%ConfigurationBuildDir%\include\private" /e/v/i/h/y + devenv "WebCore.submit.sln" /rebuild $(BUILDSTYLE) + xcopy "%ConfigurationBuildDir%\include\*" "$(DSTROOT)\AppleInternal\include\" /e/v/i/h/y + xcopy "%ConfigurationBuildDir%\lib32\*" "$(DSTROOT)\AppleInternal\lib32\" /e/v/i/h/y + xcopy "%ConfigurationBuildDir%\bin32\WebKit.resources\*" "$(DSTROOT)\%ProgramFilesAAS%\WebKit.resources" /e/v/i/h/y + xcopy "%ConfigurationBuildDir%\bin32\*.dll" "$(DSTROOT)\%ProgramFilesAAS%\" /e/v/i/h/y + xcopy "%ConfigurationBuildDir%\bin32\*.pdb" "$(DSTROOT)\%ProgramFilesAAS%\" /e/v/i/h/y + xcopy "%ConfigurationBuildDir%\obj32\WebCore\scripts\*" "$(DSTROOT)\AppleInternal\tools\scripts" /e/v/i/h/y + -mkdir "$(DSTROOT)\AppleInternal\Sources32\WebCore" + xcopy "%ConfigurationBuildDir%\obj32\WebCore\DerivedSources\*" "$(DSTROOT)\AppleInternal\Sources32\WebCore" /e/v/i/h/y diff --git a/Source/WebCore/WebCore.vcxproj/WebCore.submit.sln b/Source/WebCore/WebCore.vcxproj/WebCore.submit.sln new file mode 100644 index 00000000000..7929b013563 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCore.submit.sln @@ -0,0 +1,52 @@ +锘 +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebCoreGenerated", "WebCoreGenerated.vcxproj", "{A4159B6F-3106-4F75-9EDD-582307BDB96A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebCore", "WebCore.vcxproj", "{1C16337B-ACF3-4D03-AA90-851C5B5EADA6}" + ProjectSection(ProjectDependencies) = postProject + {E498CA9D-3BD2-4D52-8E37-C8DC76526325} = {E498CA9D-3BD2-4D52-8E37-C8DC76526325} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QTMovieWin", "QTMovieWin\QTMovieWin.vcxproj", "{E498CA9D-3BD2-4D52-8E37-C8DC76526325}" + ProjectSection(ProjectDependencies) = postProject + {A4159B6F-3106-4F75-9EDD-582307BDB96A} = {A4159B6F-3106-4F75-9EDD-582307BDB96A} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + DebugSuffix|Win32 = DebugSuffix|Win32 + Production|Win32 = Production|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Debug|Win32.ActiveCfg = Debug|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Debug|Win32.Build.0 = Debug|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.DebugSuffix|Win32.ActiveCfg = DebugSuffix|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.DebugSuffix|Win32.Build.0 = DebugSuffix|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Production|Win32.ActiveCfg = Production|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Production|Win32.Build.0 = Production|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Release|Win32.ActiveCfg = Release|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Release|Win32.Build.0 = Release|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug|Win32.ActiveCfg = Debug|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug|Win32.Build.0 = Debug|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.DebugSuffix|Win32.ActiveCfg = DebugSuffix|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.DebugSuffix|Win32.Build.0 = DebugSuffix|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Production|Win32.ActiveCfg = Production|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Production|Win32.Build.0 = Production|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release|Win32.ActiveCfg = Release|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release|Win32.Build.0 = Release|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Debug|Win32.ActiveCfg = Debug|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Debug|Win32.Build.0 = Debug|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.DebugSuffix|Win32.ActiveCfg = DebugSuffix|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.DebugSuffix|Win32.Build.0 = DebugSuffix|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Production|Win32.ActiveCfg = Production|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Production|Win32.Build.0 = Production|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Release|Win32.ActiveCfg = Release|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj b/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj new file mode 100644 index 00000000000..249fa55cd3f --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj @@ -0,0 +1,21400 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} + WebCore + Win32Proj + + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + + + %(ForcedIncludeFiles) + + + + + %(ForcedIncludeFiles) + + + + + %(ForcedIncludeFiles) + + + + + %(ForcedIncludeFiles) + + + + + %(ForcedIncludeFiles) + + + + + %(ForcedIncludeFiles) + + + + + + + + + + + + %(AdditionalIncludeDirectories) + + + + + + %(AdditionalIncludeDirectories) + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + + + + + + + + + + + + + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + true + true + true + true + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + + + + + + + + + + + + + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + Create + Create + Create + Create + Create + Create + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + Create + Create + Create + Create + Create + Create + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + 4819;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + + + + + + true + true + true + true + true + true + true + true + + + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + + + + + true + true + true + true + true + true + true + true + + + true + true + true + true + + + + + + + true + true + true + true + + + true + true + true + true + + + + + + true + true + true + true + true + true + true + true + + + true + true + true + true + + + + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + + + + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + + + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.xdc + + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + + + + + + + + + + + + + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + ICUVersion.h + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + + + + + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters b/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters new file mode 100644 index 00000000000..31cbc233848 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters @@ -0,0 +1,15787 @@ +锘 + + + + {955487e8-94ad-45c1-9cc8-cb88911e9d7c} + + + {4e4c1e1b-2f72-4cde-87a1-191167380678} + + + {29bef435-e88d-4a63-8702-9e01ebc5bc88} + + + {b300db1f-ceef-41fd-b53e-a17a696d8be1} + + + {c3be28d1-d746-4b55-80cc-4722318ffd95} + + + {c41ee9d5-bd36-4540-902c-93ad8bd2cc9d} + + + {c43ba5bd-6574-42f3-9da3-55f550747861} + + + {47f62e6e-87ae-4091-993d-d1d78f2c8ba9} + + + {614031cc-d79e-45b1-939e-dabeefe1fc9d} + + + {a595ffcf-fa22-48a9-91ad-c528a75a62e5} + + + {5e0e9582-b4b4-452d-a6de-7c6b31f614e7} + + + {3c5f7ba6-3ab9-4cf8-b83e-a805a4d3ddbb} + + + {1580a4b9-61ac-4973-ad08-00fd1815c8a9} + + + {2a59b945-58e4-441d-b353-301da2464956} + + + {ba6a9615-8a72-46b3-8dad-fb37827a6c2e} + + + {d529e33b-38d5-469a-a6d6-20de67cd030e} + + + {d6bde955-f9d6-47e6-82d7-defff954f8e9} + + + {8128d341-d200-4a29-ab9c-74339ed95486} + + + {c33e3e6e-4033-403c-8f2f-73b448c93b3a} + + + {e0fc2e3e-6432-4863-b135-477302156a2f} + + + {8a28d180-4971-401b-aefe-0429f7cb848b} + + + {dacee012-bb53-402e-b9f1-537139b6360d} + + + {637d6f99-cdea-4e5a-9bef-b000319b721a} + + + {6c4c06fb-f0ee-4c77-9532-589f4c2eb795} + + + {5021b1e7-1ca5-47d7-b7bc-6dafc9c14d1d} + + + {a28a9095-a45c-4c69-94e8-b9ab0da761d0} + + + {e4ddf68d-1286-4a5c-ba58-cdfb0d63add2} + + + {58bbf989-5b93-402c-9c55-8f27a510502f} + + + {fd16b52c-fcee-48fb-a378-1f1fd33f4ac2} + + + {cc11fefb-431a-425f-8c86-f398513d6049} + + + {1bde7fb1-8700-4722-9a4a-9208086fd5dd} + + + {8eae1271-a8cf-4673-93e3-76ddca568a42} + + + {094be5c3-de7d-4f6d-8146-d4b33c47787e} + + + {f647b0f9-cbc2-4110-9ef1-9b2f9aca553e} + + + {e6c5a07f-c30e-47a4-9287-8a798c4b42d2} + + + {c91f3466-678a-4723-8870-1f2c227001bd} + + + {a5a10e43-5543-4398-9e48-b54996b236f4} + + + {9d28bf49-73f5-4ca9-af7c-3c34593a7ee4} + + + {01103a94-3bc0-4c9b-aea5-09806606a461} + + + {dd8fdb8c-d8ed-4ca1-941b-2ae8d89afc93} + + + {61c8884b-2bc4-406a-9cff-90cdd2d668fd} + + + {b5903214-cbb2-4fad-9ff0-3930aaa733f6} + + + {f935d93c-734f-4f61-a31f-c3b960fc5aff} + + + {7190bf47-db40-4219-89e7-cff0b9d6516c} + + + {fbf318d0-9986-4791-9064-f136ca252824} + + + {1cf24180-b3c1-47c8-9f63-579db7c0f85f} + + + {e0b38a44-d48c-4008-965f-50b4c9c06565} + + + {bc6e8663-67f4-48d0-9ac8-c0b164b4476c} + + + {98840e47-e4fa-4a2a-b6b1-96bb9ea8b867} + + + {92ab636b-4f82-40f7-a0eb-03735fc0daca} + + + {2393cd66-3caa-41b1-9560-a93d0b034ba6} + + + {13669409-d7f7-42f5-a732-fd5d589929a6} + + + {c782556f-3126-47a5-93fb-5699f08cef66} + + + {e3978d3e-7866-4fb9-a9ee-e497d730cc6a} + + + {b6a6c844-b33e-4c80-9f26-076fc2a1f126} + + + {35a67667-1c77-4199-bdd3-a0627946846a} + + + {353b76ca-c49a-41da-88da-33dc422325ef} + + + {55d6bc25-56d0-47fb-89b6-46542eefd26e} + + + {a2285f4d-cc68-4deb-9e7c-dfe3787bd5f1} + + + {effbf199-d22c-430f-a4c0-df2b6a4ea067} + + + {76d4960a-59c1-42de-bc37-cf4dba01b7a3} + + + {7bf95243-bb51-49a0-8e4f-173242e5fc4e} + + + {aec0e264-5d63-49b1-9c2f-d1ecd64112df} + + + {1c23f162-df04-4868-8797-261db401eca8} + + + {be1ef5d9-e1d8-4bd5-be28-eb1e498ef1c2} + + + {b510b3f2-5701-430b-a941-7eebb52dac81} + + + {7f307654-5fd9-4fc8-9b64-d4afbdaf0e8c} + + + {76631c4f-10d3-4e45-b289-088cd8314a98} + + + {5208479d-ffff-4f5b-a98f-d87083ec9221} + + + {a61a5ce7-58be-4556-9184-4d0b239ff918} + + + {2e9214a5-3e1f-4d77-b11f-407a723c7d84} + + + {da715973-3844-4d73-85a2-6d6cd38543de} + + + {a31a66d6-8d48-4a27-b070-ec28228f36ce} + + + {929ab243-0986-4d0b-9ff0-f6706ae288e7} + + + {d3adb692-c090-4404-b2f9-77e4f3785668} + + + {d4cb7e8c-e901-4797-94cd-f6b1b9dfe2aa} + + + {baf9b8fe-d8aa-40fc-a4eb-ab038b66959d} + + + {8fe48833-bab8-4dd8-9a63-635b7a413b29} + + + {24ae8441-0b72-4855-af04-3ff5560ba326} + + + {87b981ca-470a-4e85-b1b7-e4e752674979} + + + {647695ab-7ca1-49a3-bfa8-1294849f9612} + + + {95216a70-a3b2-453c-a66f-a81cc1abefee} + + + {3b9b1819-1b31-4771-b12a-32c210f8476d} + + + {6815e299-d8de-4724-ba5d-f2706ceff334} + + + {41b26621-9c3e-4016-bd39-c5d6b971ad83} + + + {82ba9bb4-eaa0-4973-9bb3-a27667a1c167} + + + {6f39dedf-2d3a-414e-83fe-7bf64f911cfb} + + + {e5121f0f-9548-4aa4-b23c-23d197118a0d} + + + {8e29630e-9293-4240-921c-7e97c22828a6} + + + {57a93259-bc25-44d5-bf3b-07b2bed440bd} + + + {32abad78-e484-4ebb-b181-3a612bdf67f9} + + + {29348b9a-851e-43ab-b10b-653cc0d8902a} + + + {d8f7280f-8103-4245-88f8-e1aa6cb312df} + + + {70b0bcb3-8703-4b6e-81d2-e8aa9ef31af0} + + + {0977a226-d119-42ef-9cd6-c6413fd9e5cd} + + + {c2332ff9-436e-4c07-b692-fb4b9db40ffd} + + + {e27b348d-0b87-4e5f-b5b9-b99e283ea22b} + + + + + DerivedSources + + + DerivedSources + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\geolocation + + + Modules\geolocation + + + Modules\geolocation + + + Modules\geolocation + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\navigatorcontentutils + + + Modules\proximity + + + Modules\proximity + + + Modules\quota + + + Modules\quota + + + Modules\mediasource + + + Modules\mediasource + + + Modules\mediasource + + + Modules\mediasource + + + Modules\notifications + + + Modules\notifications + + + Modules\notifications + + + Modules\notifications + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\speech + + + Modules\speech + + + Modules\speech + + + Modules\speech + + + Modules\speech + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility\win + + + accessibility\win + + + accessibility\win + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page\win + + + page\win + + + page\win + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader\icon + + + loader\icon + + + loader\icon + + + loader\icon + + + loader\icon + + + loader\icon + + + loader\appcache + + + loader\appcache + + + loader\appcache + + + loader\appcache + + + loader\appcache + + + loader\appcache + + + loader\appcache + + + loader\appcache + + + loader\archive + + + loader\archive + + + loader\archive + + + loader\archive + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\ca + + + platform\graphics\ca + + + platform\graphics\ca\win + + + platform\graphics\ca\win + + + platform\graphics\ca\win + + + platform\graphics\ca\win + + + platform\graphics\ca\win + + + platform\graphics\ca\win + + + platform\graphics\ca\win + + + platform\graphics\avfoundation + + + platform\graphics\avfoundation\cf + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\win + + + platform\network\win + + + platform\network\curl + + + platform\network\curl + + + platform\network\curl + + + platform\network\curl + + + platform\network\curl + + + platform\network\curl + + + platform\network\curl + + + platform\network\curl + + + platform\sql + + + platform\sql + + + platform\sql + + + platform\sql + + + platform\sql + + + platform\sql + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text\cf + + + platform\text\cf + + + platform\text\cf + + + platform\text\cf + + + platform\text\win + + + platform\text\transcoder + + + platform\image-decoders\cairo + + + platform\image-decoders\gif + + + platform\image-decoders\gif + + + platform\image-decoders\jpeg + + + platform\image-decoders\png + + + platform\image-decoders\bmp + + + platform\image-decoders\bmp + + + platform\image-decoders\ico + + + platform\animation + + + platform\animation + + + platform\mock + + + platform\mock + + + platform\mock + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml\parser + + + xml\parser + + + xml\parser + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html\forms + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + bindings + + + bindings\generic + + + bindings\generic + + + bindings\generic + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins\win + + + plugins\win + + + plugins\win + + + plugins\win + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg\animation + + + rendering\svg\animation + + + rendering\svg\animation + + + rendering\svg\graphics + + + rendering\svg\graphics + + + rendering\svg\graphics\filters + + + rendering\svg\graphics\filters + + + rendering\svg\graphics\filters + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + history + + + history + + + history + + + history + + + history + + + history + + + storage + + + storage + + + storage + + + storage + + + storage + + + storage + + + storage + + + storage + + + storage + + + storage + + + storage + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + platform\graphics\cairo + + + editing + + + page + + + page + + + page + + + page + + + platform\cf + + + platform\cf + + + platform\cf + + + platform\cf + + + platform\cf\win + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + loader\archive\mhtml + + + loader\archive\mhtml + + + loader\archive\cf + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + + html\track + + + storage + + + html\track + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\parser + + + page + + + rendering\svg\graphics + + + inspector + + + rendering + + + html\parser + + + Modules\quota + + + Modules\quota + + + Modules\quota + + + workers + + + platform\graphics\ca\win + + + platform\image-decoders + + + platform\network\curl + + + platform\graphics\cg + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + accessibility + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\opengl + + + platform\graphics\opengl + + + platform\graphics\opengl + + + platform\graphics\opengl + + + platform\graphics\opengl + + + platform\graphics\opengl + + + page + + + platform\graphics\cg + + + bindings\js + + + platform\graphics\cairo + + + platform\graphics\cairo + + + html\canvas + + + platform\graphics\cairo + + + platform\graphics\opengl + + + platform\graphics\egl + + + + platform\graphics\avfoundation\cf + + + platform\graphics\avfoundation + + + platform\graphics\avfoundation\cf + + + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\filesystem + + + Modules\geolocation + + + Modules\geolocation + + + page + + + Modules\geolocation + + + Modules\geolocation + + + Modules\geolocation + + + Modules\geolocation + + + Modules\geolocation + + + Modules\geolocation + + + Modules\geolocation + + + Modules\geolocation + + + Modules\geolocation + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\indexeddb + + + Modules\navigatorcontentutils + + + Modules\proximity + + + Modules\proximity + + + Modules\proximity + + + Modules\quota + + + Modules\quota + + + Modules\quota + + + Modules\quota + + + Modules\quota + + + Modules\quota + + + Modules\quota + + + Modules\mediasource + + + Modules\mediasource + + + Modules\mediasource + + + Modules\mediasource + + + Modules\notifications + + + Modules\notifications + + + Modules\notifications + + + Modules\notifications + + + Modules\notifications + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\webdatabase + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\websockets + + + Modules\speech + + + Modules\speech + + + Modules\speech + + + Modules\speech + + + Modules\speech + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility + + + accessibility\win + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page\win + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader + + + loader\icon + + + loader\icon + + + loader\icon + + + loader\icon + + + loader\icon + + + loader\icon + + + loader\icon + + + loader\appcache + + + loader\appcache + + + loader\appcache + + + loader\appcache + + + loader\appcache + + + loader\appcache + + + loader\appcache + + + loader\archive + + + loader\archive + + + loader\archive + + + loader\archive + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + loader\cache + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\win + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\transforms + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\filters + + + platform\graphics\ca + + + platform\graphics\ca + + + platform\graphics\ca + + + platform\graphics\ca + + + platform\graphics\ca\win + + + platform\graphics\ca\win + + + platform\graphics\ca\win + + + platform\graphics\ca\win + + + platform\graphics\ca\win + + + platform\graphics\avfoundation + + + platform\graphics\avfoundation\cf + + + platform\graphics\avfoundation\cf + + + platform\graphics\avfoundation\cf + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network + + + platform\network\cf + + + platform\network\cf + + + platform\sql + + + platform\sql + + + platform\sql + + + platform\sql + + + platform\sql + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text + + + platform\text\transcoder + + + platform\animation + + + platform\animation + + + platform\animation + + + platform\animation + + + platform\mock + + + platform\mock + + + platform\mock + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\style + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml + + + xml\parser + + + xml\parser + + + xml\parser + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + dom + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + workers + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + editing + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html + + + html\forms + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\parser + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\shadow + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + bindings + + + bindings\generic + + + bindings\generic + + + bindings\generic + + + bindings\generic + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins + + + plugins\win + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg\animation + + + rendering\svg\animation + + + rendering\svg\animation + + + rendering\svg\graphics + + + rendering\svg\graphics + + + rendering\svg\graphics + + + rendering\svg\graphics\filters + + + rendering\svg\graphics\filters + + + rendering\svg\graphics\filters + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + rendering\svg\properties + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\yarr + + + ForwardingHeaders\yarr + + + ForwardingHeaders\yarr + + + ForwardingHeaders\profiler + + + ForwardingHeaders\profiler + + + ForwardingHeaders\heap + + + history + + + history + + + history + + + history + + + history + + + history + + + history + + + history + + + storage + + + storage + + + storage + + + storage + + + storage + + + storage + + + storage + + + storage + + + storage + + + storage + + + storage + + + storage + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + bridge + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + inspector + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + rendering\mathml + + + + editing + + + platform\network\cf + + + platform\graphics\cg + + + platform\network\cf + + + ForwardingHeaders\profiler + + + ForwardingHeaders\yarr + + + ForwardingHeaders\masm + + + ForwardingHeaders\heap + + + ForwardingHeaders\heap + + + ForwardingHeaders\heap + + + ForwardingHeaders\heap + + + ForwardingHeaders\heap + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\runtime + + + ForwardingHeaders\parser + + + ForwardingHeaders\parser + + + page + + + page + + + page + + + page + + + page + + + page + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + rendering\svg + + + platform\cf + + + platform\cf\win + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + page + + + loader\archive\mhtml + + + loader\archive\mhtml + + + loader\archive\cf + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + bindings\js + + + ForwardingHeaders\runtime + + + + html\track + + + storage + + + html\track + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\parser + + + rendering\svg\graphics + + + inspector + + + rendering + + + platform\image-decoders + + + platform\graphics\cg + + + html\track + + + loader\cache + + + platform + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + html\track + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + accessibility + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + html\canvas + + + platform\graphics + + + platform\graphics + + + platform\graphics + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\gpu + + + platform\graphics\opengl + + + platform\graphics\opengl + + + platform\graphics\opengl + + + platform\graphics\opengl + + + platform\graphics\opengl + + + platform\graphics\opengl + + + page + + + page + + + platform\graphics\cairo + + + html\canvas + + + platform\graphics\cairo + + + platform\graphics\egl + + + platform\graphics\avfoundation\cf + + + platform\graphics\avfoundation + + + platform\graphics\avfoundation\cf + + + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + css + + + xml + + + bindings\scripts + + + bindings\scripts + + + bindings\scripts + + + bindings\scripts + + + bindings\scripts + + + bindings\scripts + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + inspector\front-end + + + + + + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\win + + + platform\graphics\cg + + + platform\graphics\cg + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\cairo + + + platform\graphics\ca\win + + + platform\graphics\ca\win + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\cf + + + platform\network\curl + + + platform\network\curl + + + platform\network\curl + + + platform\network\curl + + + platform\network\curl + + + platform\network\curl + + + platform\image-decoders\gif + + + platform\image-decoders\gif + + + platform\image-decoders\jpeg + + + platform\image-decoders\png + + + platform\image-decoders\bmp + + + platform\image-decoders\bmp + + + platform\image-decoders\ico + + + rendering + + + rendering + + + rendering + + + rendering + + + + + plugins\win + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreCFNetwork.props b/Source/WebCore/WebCore.vcxproj/WebCoreCFNetwork.props new file mode 100644 index 00000000000..773a2584059 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreCFNetwork.props @@ -0,0 +1,11 @@ +锘 + + + <_ProjectFileVersion>10.0.40219.1 + + + + $(ProjectDir)..\platform\network\cf;%(AdditionalIncludeDirectories) + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreCG.props b/Source/WebCore/WebCore.vcxproj/WebCoreCG.props new file mode 100644 index 00000000000..8b8d4e563a7 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreCG.props @@ -0,0 +1,12 @@ +锘 + + + <_ProjectFileVersion>10.0.40219.1 + + + + $(ProjectDir)..\platform\graphics\cg;$(ProjectDir)..\svg\graphics\cg;%(AdditionalIncludeDirectories) + DISABLE_COREIMAGE;DISABLE_FRONTEND;DISABLE_IOSURFACE;DISABLE_RENDERSERVER;%(PreprocessorDefinitions) + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreCURL.props b/Source/WebCore/WebCore.vcxproj/WebCoreCURL.props new file mode 100644 index 00000000000..b88ab80a41b --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreCURL.props @@ -0,0 +1,12 @@ +锘 + + + <_ProjectFileVersion>10.0.40219.1 + + + + $(ProjectDir)..\platform\network\curl;%(AdditionalIncludeDirectories) + USE_WINDOWS_SSPI;USE_SSLEAY;HAVE_ZLIB;%(PreprocessorDefinitions) + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreCairo.props b/Source/WebCore/WebCore.vcxproj/WebCoreCairo.props new file mode 100644 index 00000000000..0a855df581f --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreCairo.props @@ -0,0 +1,11 @@ +锘 + + + <_ProjectFileVersion>10.0.40219.1 + + + + $(ProjectDir)..\platform\graphics\cairo;$(ProjectDir)..\platform\graphics\win\cairo;$(ProjectDir)..\svg\graphics\cairo;$(ProjectDir)..\platform\image-decoders;$(ProjectDir)..\platform\image-decoders\bmp;$(ProjectDir)..\platform\image-decoders\cairo;$(ProjectDir)..\platform\image-decoders\gif;$(ProjectDir)..\platform\image-decoders\ico;$(ProjectDir)..\platform\image-decoders\jpeg;$(ProjectDir)..\platform\image-decoders\png;$(ProjectDir)..\platform\image-decoders\webp;$(WebKit_Libraries)\include\cairo;%(AdditionalIncludeDirectories) + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreCommon.props b/Source/WebCore/WebCore.vcxproj/WebCoreCommon.props new file mode 100644 index 00000000000..7faaaebb9fd --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreCommon.props @@ -0,0 +1,17 @@ +锘 + + + <_ProjectFileVersion>10.0.40219.1 + .lib + $(ConfigurationBuildDir)\lib32\ + + + + $(ProjectDir)..;$(ProjectDir)..\Modules\filesystem;$(ProjectDir)..\Modules\geolocation;$(ProjectDir)..\Modules\indexeddb;$(ProjectDir)..\Modules\mediasource;$(ProjectDir)..\Modules\navigatorcontentutils;$(ProjectDir)..\Modules\speech;$(ProjectDir)..\Modules\proximity;$(ProjectDir)..\Modules\quota;$(ProjectDir)..\Modules\notifications;$(ProjectDir)..\Modules\webdatabase;$(ProjectDir)..\Modules\websockets;$(ProjectDir)..\accessibility;$(ProjectDir)..\accessibility\win;$(ProjectDir)..\bridge;$(ProjectDir)..\bridge\c;$(ProjectDir)..\bridge\jsc;$(ProjectDir)..\css;$(ProjectDir)..\editing;$(ProjectDir)..\fileapi;$(ProjectDir)..\rendering;$(ProjectDir)..\rendering\mathml;$(ProjectDir)..\rendering\style;$(ProjectDir)..\rendering\svg;$(ProjectDir)..\bindings;$(ProjectDir)..\bindings\generic;$(ProjectDir)..\bindings\js;$(ProjectDir)..\bindings\js\specialization;$(ProjectDir)..\dom;$(ProjectDir)..\dom\default;$(ProjectDir)..\history;$(ProjectDir)..\html;$(ProjectDir)..\html\canvas;$(ProjectDir)..\html\forms;$(ProjectDir)..\html\parser;$(ProjectDir)..\html\shadow;$(ProjectDir)..\html\track;$(ProjectDir)..\inspector;$(ProjectDir)..\loader;$(ProjectDir)..\loader\appcache;$(ProjectDir)..\loader\archive;$(ProjectDir)..\loader\archive\cf;$(ProjectDir)..\loader\cache;$(ProjectDir)..\loader\icon;$(ProjectDir)..\mathml;$(ProjectDir)..\page;$(ProjectDir)..\page\animation;$(ProjectDir)..\page\scrolling;$(ProjectDir)..\page\win;$(ProjectDir)..\platform;$(ProjectDir)..\platform\animation;$(ProjectDir)..\platform\mock;$(ProjectDir)..\platform\sql;$(ProjectDir)..\platform\win;$(ProjectDir)..\platform\network;$(ProjectDir)..\platform\network\win;$(ProjectDir)..\platform\cf;$(ProjectDir)..\platform\graphics;$(ProjectDir)..\platform\graphics\ca;$(ProjectDir)..\platform\graphics\cpu\arm\filters;$(ProjectDir)..\platform\graphics\filters;$(ProjectDir)..\platform\graphics\filters\arm;$(ProjectDir)..\platform\graphics\opentype;$(ProjectDir)..\platform\graphics\transforms;$(ProjectDir)..\platform\text;$(ProjectDir)..\platform\text\transcoder;$(ProjectDir)..\platform\graphics\win;$(ProjectDir)..\xml;$(ProjectDir)..\xml\parser;$(ConfigurationBuildDir)\obj32\WebCore\DerivedSources;$(ProjectDir)..\plugins;$(ProjectDir)..\plugins\win;$(ProjectDir)..\svg\animation;$(ProjectDir)..\svg\graphics;$(ProjectDir)..\svg\properties;$(ProjectDir)..\svg\graphics\filters;$(ProjectDir)..\svg;$(ProjectDir)..\testing;$(ProjectDir)..\wml;$(ProjectDir)..\storage;$(ProjectDir)..\websockets;$(ProjectDir)..\workers;$(ConfigurationBuildDir)\include;$(ConfigurationBuildDir)\include\private;$(ConfigurationBuildDir)\include\JavaScriptCore;$(ConfigurationBuildDir)\include\private\JavaScriptCore;$(ProjectDir)..\ForwardingHeaders;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;$(WebKit_Libraries)\include\private\JavaScriptCore;$(WebKit_Libraries)\include\sqlite;$(WebKit_Libraries)\include\JavaScriptCore;$(WebKit_Libraries)\include\zlib;%(AdditionalIncludeDirectories) + DISABLE_3D_RENDERING;WEBCORE_CONTEXT_MENUS;%(PreprocessorDefinitions) + Use + WebCorePrefix.h + WebCorePrefix.h;ICUVersion.h;%(ForcedIncludeFiles) + + + diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreDebug.props b/Source/WebCore/WebCore.vcxproj/WebCoreDebug.props new file mode 100644 index 00000000000..1bbee0158b6 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreDebug.props @@ -0,0 +1,16 @@ +锘 + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreDebugWinCairo.props b/Source/WebCore/WebCore.vcxproj/WebCoreDebugWinCairo.props new file mode 100644 index 00000000000..fc08d3acefb --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreDebugWinCairo.props @@ -0,0 +1,16 @@ +锘 + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreGenerated.make b/Source/WebCore/WebCore.vcxproj/WebCoreGenerated.make new file mode 100644 index 00000000000..a0fcf483fe0 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreGenerated.make @@ -0,0 +1,14 @@ +make: + if exist "%ConfigurationBuildDir%\buildfailed" grep XXWebCoreGeneratedXX "%ConfigurationBuildDir%\buildfailed" + if errorlevel 1 exit 1 + echo XXWebCoreGeneratedXX > "%ConfigurationBuildDir%\buildfailed" + + bash build-generated-files.sh "%ConfigurationBuildDir%" "%WebKit_Libraries%" windows + bash migrate-scripts.sh "%ConfigurationBuildDir%\obj32\WebCore\scripts" + cmd /C copyForwardingHeaders.cmd cg cf + cmd /C copyWebCoreResourceFiles.cmd + +clean: + if exist "%ConfigurationBuildDir%\obj32\WebCore\DerivedSources" del /s /q "%ConfigurationBuildDir%\obj32\WebCore\DerivedSources" + if exist "%ConfigurationBuildDir%\obj32\WebCore\scripts" del /s /q "%ConfigurationBuildDir%\obj32\WebCore\scripts" + if exist "%ConfigurationBuildDir%\buildfailed" del "%ConfigurationBuildDir%\buildfailed" diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreGenerated.vcxproj b/Source/WebCore/WebCore.vcxproj/WebCoreGenerated.vcxproj new file mode 100644 index 00000000000..4bbb36356de --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreGenerated.vcxproj @@ -0,0 +1,192 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + + + + + + + + + + {A4159B6F-3106-4F75-9EDD-582307BDB96A} + MakeFileProj + + + + Makefile + true + $(SolutionDir)$(Configuration)\ + + + Makefile + true + $(SolutionDir)$(Configuration)\ + + + Makefile + true + $(SolutionDir)$(Configuration)\ + + + Makefile + true + $(SolutionDir)$(Configuration)\ + + + Makefile + true + $(SolutionDir)$(Configuration)\ + + + Makefile + true + $(SolutionDir)$(Configuration)\ + + + Makefile + false + + + Makefile + false + + + Makefile + false + + + Makefile + false + + + Makefile + false + + + Makefile + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreGenerated.vcxproj.filters b/Source/WebCore/WebCore.vcxproj/WebCoreGenerated.vcxproj.filters new file mode 100644 index 00000000000..84ea926ab1d --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreGenerated.vcxproj.filters @@ -0,0 +1,12 @@ +锘 + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedCommon.props b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedCommon.props new file mode 100644 index 00000000000..4bd05922c96 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedCommon.props @@ -0,0 +1,11 @@ +锘 + + + + + + $(ConfigurationBuildDir)\lib32\ + + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedDebug.props b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedDebug.props new file mode 100644 index 00000000000..26b279434d9 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedDebug.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedDebugWinCairo.props b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedDebugWinCairo.props new file mode 100644 index 00000000000..caebb7b5930 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedDebugWinCairo.props @@ -0,0 +1,15 @@ +锘 + + + + + + + + + + + + + + diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedProduction.props b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedProduction.props new file mode 100644 index 00000000000..f05773b5cd1 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedProduction.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedRelease.props b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedRelease.props new file mode 100644 index 00000000000..614091b98f8 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedRelease.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedReleaseWinCairo.props b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedReleaseWinCairo.props new file mode 100644 index 00000000000..169f1dff873 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedReleaseWinCairo.props @@ -0,0 +1,14 @@ +锘 + + + + + + + + + + + + + diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedWinCairo.make b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedWinCairo.make new file mode 100644 index 00000000000..ddd4b8ee1f3 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedWinCairo.make @@ -0,0 +1,14 @@ +make: + if exist "%ConfigurationBuildDir%\buildfailed" grep XXWebCoreGeneratedXX "%ConfigurationBuildDir%\buildfailed" + if errorlevel 1 exit 1 + echo XXWebCoreGeneratedXX > "%ConfigurationBuildDir%\buildfailed" + + bash build-generated-files.sh "%ConfigurationBuildDir%" "%WebKit_Libraries%" cairo + bash migrate-scripts.sh "%ConfigurationBuildDir%\obj\WebCore\scripts" + cmd /C copyForwardingHeaders.cmd cairo curl + cmd /C copyWebCoreResourceFiles.cmd + +clean: + del /s /q "%ConfigurationBuildDir%\obj\WebCore\DerivedSources" + del /s /q "%ConfigurationBuildDir%\obj\WebCore\scripts" + if exist "%ConfigurationBuildDir%\buildfailed" del "%ConfigurationBuildDir%\buildfailed" diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedWinCairoCommon.props b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedWinCairoCommon.props new file mode 100644 index 00000000000..81f9dab8c0b --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreGeneratedWinCairoCommon.props @@ -0,0 +1,219 @@ +锘 + + + $(WEBKIT_OUTPUTDIR)\$(Configuration) + + + <_ProjectFileVersion>10.0.40219.1 + $(ConfigurationBuildDir)\bin\ + $(ConfigurationBuildDir)\obj\$(ProjectName)\ + false + %SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +nmake /nologo -f $(ProjectName)WinCairo.make + %SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +nmake /nologo -f $(ProjectName)WinCairo.make clean +nmake /nologo -f $(ProjectName)WinCairo.make + %SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% + +set PATH=$(VSInstallDir)\VC\bin;%PATH% + +REM VS2010 has a known bug where the clean command does not recognize environment variables properly unless explicitly set here +set CONFIGURATIONBUILDDIR=$(ConfigurationBuildDir) +nmake /nologo -f $(ProjectName)WinCairo.make clean + $(ProjectName)$(DebugSuffix) + + + + /bigobj /GS %(AdditionalOptions) + _WINDOWS;WINVER=0x502;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_HAS_EXCEPTIONS=0;BUILDING_$(ProjectName);WIN32;%(PreprocessorDefinitions) + WIN32;%(PreprocessorDefinitions) + x64 + false + false + Level4 + false + ProgramDatabase + 4018;4068;4099;4100;4127;4138;4146;4180;4189;4201;4244;4251;4267;4275;4288;4291;4305;4344;4355;4389;4396;4481;4503;4505;4510;4512;4610;4706;4800;4819;4951;4952;4996;6011;6031;6211;6246;6255;6387;%(DisableSpecificWarnings) + MultiThreadedDLL + false + false + false + + + $(IntDir)$(TargetName).pch + + + true + false + false + CompileAsCpp + + + /ignore:4221 %(AdditionalOptions) + true + + + true + $(OutDir)%(Filename).h + + + REM Do not edit from the Visual Studio IDE! Customize via a $(ProjectName)PostBuild.cmd file. +if not exist "$(ProjectDir)$(ProjectName)PostBuild.cmd" exit /b + +set CONFIGURATIONBUILDDIR=$(ConfigurationBuildDir) +set CONFIGURATIONNAME=$(ConfigurationName) +set INPUTDIR=$(InputDir) +set INPUTFILENAME=$(InputFileName) +set INPUTPATH=$(InputPath) +set INTDIR=$(IntDir) +set LIBRARYCONFIGSUFFIX=$(LibraryConfigSuffix) +set OUTDIR=$(OutDir) +set PLATFORMNAME=$(PlatformName) +set PROJECTDIR=$(ProjectDir) +set PROJECTFILENAME=$(ProjectFileName) +set PROJECTNAME=$(ProjectName) +set PROJECTPATH=$(ProjectPath) +set SOLUTIONDIR=$(SolutionDir) +set SOLUTIONFILENAME=$(SolutionFileName) +set SOLUTIONNAME=$(SolutionName) +set SOLUTIONPATH=$(SolutionPath) +set TARGETDIR=$(TargetDir) +set TARGETEXT=$(TargetExt) +set TARGETFILENAME=$(TargetFileName) +set TARGETPATH=$(TargetPath) +set DEBUGSUFFIX=$(DebugSuffix) + +REM If any of the above variables didn't exist previously and +REM were set to an empty string, set will set the errorlevel to 1, +REM which will cause the project-specific script to think the build +REM has failed. This cmd /c call will clear the errorlevel. +cmd /c + +"$(ProjectDir)$(ProjectName)PostBuild.cmd" + + + + REM Do not edit from the Visual Studio IDE! Customize via a $(ProjectName)PreBuild.cmd file. +if not exist "$(ProjectDir)$(ProjectName)PreBuild.cmd" exit /b + +set CONFIGURATIONBUILDDIR=$(ConfigurationBuildDir) +set CONFIGURATIONNAME=$(ConfigurationName) +set INPUTDIR=$(InputDir) +set INPUTFILENAME=$(InputFileName) +set INPUTPATH=$(InputPath) +set INTDIR=$(IntDir) +set LIBRARYCONFIGSUFFIX=$(LibraryConfigSuffix) +set OUTDIR=$(OutDir) +set PLATFORMNAME=$(PlatformName) +set PROJECTDIR=$(ProjectDir) +set PROJECTFILENAME=$(ProjectFileName) +set PROJECTNAME=$(ProjectName) +set PROJECTPATH=$(ProjectPath) +set SOLUTIONDIR=$(SolutionDir) +set SOLUTIONFILENAME=$(SolutionFileName) +set SOLUTIONNAME=$(SolutionName) +set SOLUTIONPATH=$(SolutionPath) +set TARGETDIR=$(TargetDir) +set TARGETEXT=$(TargetExt) +set TARGETFILENAME=$(TargetFileName) +set TARGETPATH=$(TargetPath) +set DEBUGSUFFIX=$(DebugSuffix) + +REM If any of the above variables didn't exist previously and +REM were set to an empty string, set will set the errorlevel to 1, +REM which will cause the project-specific script to think the build +REM has failed. This cmd /c call will clear the errorlevel. +cmd /c + +"$(ProjectDir)$(ProjectName)PreBuild.cmd" + + + + REM Do not edit from the Visual Studio IDE! Customize via a $(ProjectName)PreLink.cmd file. +if not exist "$(ProjectDir)$(ProjectName)PreLink.cmd" exit /b + +set CONFIGURATIONBUILDDIR=$(ConfigurationBuildDir) +set CONFIGURATIONNAME=$(ConfigurationName) +set INPUTDIR=$(InputDir) +set INPUTFILENAME=$(InputFileName) +set INPUTPATH=$(InputPath) +set INTDIR=$(IntDir) +set LIBRARYCONFIGSUFFIX=$(LibraryConfigSuffix) +set OUTDIR=$(OutDir) +set PLATFORMNAME=$(PlatformName) +set PROJECTDIR=$(ProjectDir) +set PROJECTFILENAME=$(ProjectFileName) +set PROJECTNAME=$(ProjectName) +set PROJECTPATH=$(ProjectPath) +set SOLUTIONDIR=$(SolutionDir) +set SOLUTIONFILENAME=$(SolutionFileName) +set SOLUTIONNAME=$(SolutionName) +set SOLUTIONPATH=$(SolutionPath) +set TARGETDIR=$(TargetDir) +set TARGETEXT=$(TargetExt) +set TARGETFILENAME=$(TargetFileName) +set TARGETPATH=$(TargetPath) +set DEBUGSUFFIX=$(DebugSuffix) + +REM If any of the above variables didn't exist previously and +REM were set to an empty string, set will set the errorlevel to 1, +REM which will cause the project-specific script to think the build +REM has failed. This cmd /c call will clear the errorlevel. +cmd /c + +"$(ProjectDir)$(ProjectName)PreLink.cmd" + + + + 0x0409 + $(IntDir)include;%(AdditionalIncludeDirectories) + + + + $(IntDir)lib;$(ConfigurationBuildDir)\lib;$(WEBKIT_LIBRARIES)\lib + PromptImmediately + false + false + false + Windows + 0 + 0 + 0 + 0 + + + Default + + + + + + + true + true + false + DefaultThreadingAttribute + $(ConfigurationBuildDir)\lib\$(TargetName).lib + + + + + $(IntDir)\$(TargetName)$(TargetExt).embed.manifest.res + + + false + + + $(IntDir)BuildLog.htm + + + + + $(CONFIGURATIONBUILDDIR) + true + + + diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreMediaQT.props b/Source/WebCore/WebCore.vcxproj/WebCoreMediaQT.props new file mode 100644 index 00000000000..8babb6a6fe5 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreMediaQT.props @@ -0,0 +1,11 @@ +锘 + + + <_ProjectFileVersion>10.0.40219.1 + + + + $(WebKit_Libraries)\include\CoreAudio;$(WebKit_Libraries)\include\AVFoundation;$(ProjectDir)..\platform\graphics\avfoundation;$(ProjectDir)..\platform\graphics\avfoundation\cf;%(AdditionalIncludeDirectories) + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCorePostBuild.cmd b/Source/WebCore/WebCore.vcxproj/WebCorePostBuild.cmd new file mode 100644 index 00000000000..26707cac614 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCorePostBuild.cmd @@ -0,0 +1 @@ +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/WebCore/WebCore.vcxproj/WebCorePreBuild.cmd b/Source/WebCore/WebCore.vcxproj/WebCorePreBuild.cmd new file mode 100644 index 00000000000..e4980ea8bf4 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCorePreBuild.cmd @@ -0,0 +1,12 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed" +set AngleHeadersDirectory=%CONFIGURATIONBUILDDIR%\include\private +mkdir "%AngleHeadersDirectory%" 2>NUL +xcopy /y /d /s "%ProjectDir%..\..\ThirdParty\ANGLE\include" "%AngleHeadersDirectory%" +xcopy /y /d "%AngleHeadersDirectory%\KHR\khrplatform.h" "%AngleHeadersDirectory%" +xcopy /y /d /s "%ProjectDir%..\platform\graphics\win\GL" "%AngleHeadersDirectory%" +exit /b diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreProduction.props b/Source/WebCore/WebCore.vcxproj/WebCoreProduction.props new file mode 100644 index 00000000000..b95f2389ad6 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreProduction.props @@ -0,0 +1,17 @@ +锘 + + + + + + + + + + + + + + + + diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreQuartzCore.props b/Source/WebCore/WebCore.vcxproj/WebCoreQuartzCore.props new file mode 100644 index 00000000000..9a8301b626b --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreQuartzCore.props @@ -0,0 +1,12 @@ +锘 + + + <_ProjectFileVersion>10.0.40219.1 + + + + $(ProjectDir)\..\platform\graphics\ca\win;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories) + QUARTZCORE_DLL;%(PreprocessorDefinitions) + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreRelease.props b/Source/WebCore/WebCore.vcxproj/WebCoreRelease.props new file mode 100644 index 00000000000..5b216fbd76f --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreRelease.props @@ -0,0 +1,16 @@ +锘 + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreReleaseWinCairo.props b/Source/WebCore/WebCore.vcxproj/WebCoreReleaseWinCairo.props new file mode 100644 index 00000000000..a977007c273 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreReleaseWinCairo.props @@ -0,0 +1,15 @@ +锘 + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj b/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj new file mode 100644 index 00000000000..dacfe1ba2d1 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj @@ -0,0 +1,841 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + {83414B15-1C0D-490B-990E-03F4D49170E4} + WebCore + Win32Proj + + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + 4065;4273;4565;4701;4702;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj.filters b/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj.filters new file mode 100644 index 00000000000..fde805105e8 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj.filters @@ -0,0 +1,85 @@ +锘 + + + + {cac64726-8325-4762-9878-fb677757854c} + + + {9b617e5f-fe52-4ccb-b2a7-42f94b76eb23} + + + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + testing + + + testing + + + testing + + + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + DerivedSources + + + testing + + + testing + + + testing + + + testing + + + testing + + + testing + + + + diff --git a/Source/WebCore/WebCore.vcxproj/build-generated-files.sh b/Source/WebCore/WebCore.vcxproj/build-generated-files.sh new file mode 100644 index 00000000000..2f233e1026f --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/build-generated-files.sh @@ -0,0 +1,63 @@ +#!/usr/bin/bash + +# Copyright (C) 2007 Apple Inc. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of Apple puter, Inc. ("Apple") nor the names of +# its contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +NUMCPUS=`../../../Tools/Scripts/num-cpus` + +XSRCROOT="`pwd`/.." +XSRCROOT=`realpath "$XSRCROOT"` +# Do a little dance to get the path into 8.3 form to make it safe for gnu make +# http://bugzilla.opendarwin.org/show_bug.cgi?id=8173 +XSRCROOT=`cygpath -m -s "$XSRCROOT"` +XSRCROOT=`cygpath -u "$XSRCROOT"` +export XSRCROOT +export SOURCE_ROOT=$XSRCROOT + +XDSTROOT="$1" +export XDSTROOT +# Do a little dance to get the path into 8.3 form to make it safe for gnu make +# http://bugzilla.opendarwin.org/show_bug.cgi?id=8173 +XDSTROOT=`cygpath -m -s "$XDSTROOT"` +XDSTROOT=`cygpath -u "$XDSTROOT"` +export XDSTROOT + +SDKROOT="$2" +export SDKROOT +# Do a little dance to get the path into 8.3 form to make it safe for gnu make +# http://bugzilla.opendarwin.org/show_bug.cgi?id=8173 +SDKROOT=`cygpath -m -s "$SDKROOT"` +SDKROOT=`cygpath -u "$SDKROOT"` +export SDKROOT + +export BUILT_PRODUCTS_DIR="$XDSTROOT/obj32/WebCore" + +mkdir -p "${BUILT_PRODUCTS_DIR}/DerivedSources" +cd "${BUILT_PRODUCTS_DIR}/DerivedSources" + +export WebCore="${XSRCROOT}" +export FEATURE_DEFINES=`$SDKROOT/tools/scripts/feature-defines.sh $SDKROOT $3` +make -f "$WebCore/DerivedSources.make" -j ${NUMCPUS} || exit 1 diff --git a/Source/WebCore/WebCore.vcxproj/copyForwardingHeaders.cmd b/Source/WebCore/WebCore.vcxproj/copyForwardingHeaders.cmd new file mode 100644 index 00000000000..e3e366b3ede --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/copyForwardingHeaders.cmd @@ -0,0 +1,95 @@ +rem %1 argument is used for graphics. It can be cg or cairo +rem %2 argument is used for network. It can be cf or curl + +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\WebCore" +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders" +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\bindings" +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\parser" +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\runtime" +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\masm" +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\profiler" +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\heap" +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\yarr" +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\WebCoreTestSupport" + +xcopy /y /d "%ProjectDir%..\config.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%CONFIGURATIONBUILDDIR%\obj32\WebCore\DerivedSources\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\Modules\filesystem\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\Modules\geolocation\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\Modules\mediasource\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\Modules\navigatorcontentutils\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\Modules\notifications\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\Modules\quota\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\Modules\webdatabase\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\Modules\websockets\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\accessibility\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\accessibility\win\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\inspector\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\loader\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\loader\appcache\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\loader\archive\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\loader\archive\cf\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\loader\cache\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\loader\icon\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\history\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\history\cf\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\html\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\html\forms\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\html\parser\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\html\track\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\css\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\animation\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\cf\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\cf\win\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\graphics\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\graphics\%1\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\graphics\filters\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\graphics\transforms\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\graphics\ca\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\graphics\ca\win\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\graphics\win\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\graphics\win\%1\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\graphics\opentype\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\mock\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\text\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\text\transcoder\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\win\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\network\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\network\%2\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\sql\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\platform\cairo\cairo\src\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\bindings\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\bindings\generic\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\bindings\js\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\page\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\page\animation\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\page\win\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\bridge\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\bridge\jsc\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\plugins\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\plugins\win\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\rendering\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\rendering\style\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\rendering\svg\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\editing\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\dom\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\xml\parser\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\xml\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\svg\animation\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\svg\graphics\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\svg\properties\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\svg\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\storage\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\workers\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore" +xcopy /y /d "%ProjectDir%..\ForwardingHeaders\bindings\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\bindings" +xcopy /y /d "%ProjectDir%..\ForwardingHeaders\parser\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\parser" +xcopy /y /d "%ProjectDir%..\ForwardingHeaders\runtime\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\runtime" +xcopy /y /d "%ProjectDir%..\ForwardingHeaders\masm\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\masm" +xcopy /y /d "%ProjectDir%..\ForwardingHeaders\profiler\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\profiler" +xcopy /y /d "%ProjectDir%..\ForwardingHeaders\heap\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\heap" +xcopy /y /d "%ProjectDir%..\ForwardingHeaders\yarr\*.h" "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\yarr" + +xcopy /y /d "%ProjectDir%..\testing\js\WebCoreTestSupport.h" "%CONFIGURATIONBUILDDIR%\include\WebCoreTestSupport" + +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/WebCore/WebCore.vcxproj/copyWebCoreResourceFiles.cmd b/Source/WebCore/WebCore.vcxproj/copyWebCoreResourceFiles.cmd new file mode 100644 index 00000000000..923b39738ca --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/copyWebCoreResourceFiles.cmd @@ -0,0 +1,6 @@ +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\bin32\WebKit.resources\inspector" +xcopy /y /d /s /exclude:xcopy.excludes "%ProjectDir%..\inspector\front-end\*" "%CONFIGURATIONBUILDDIR%\bin32\WebKit.resources\inspector" +xcopy /y /d /s /exclude:xcopy.excludes "%CONFIGURATIONBUILDDIR%\obj32\WebCore\DerivedSources\InspectorBackendCommands.js" "%CONFIGURATIONBUILDDIR%\bin32\WebKit.resources\inspector" +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\bin32\WebKit.resources\en.lproj" +xcopy /y /d /s /exclude:xcopy.excludes "%ProjectDir%..\English.lproj\localizedStrings.js" "%CONFIGURATIONBUILDDIR%\bin32\WebKit.resources\en.lproj" +xcopy /y /d /s /exclude:xcopy.excludes "%ProjectDir%..\English.lproj\Localizable.strings" "%CONFIGURATIONBUILDDIR%\bin32\WebKit.resources\en.lproj" diff --git a/Source/WebCore/WebCore.vcxproj/migrate-scripts.sh b/Source/WebCore/WebCore.vcxproj/migrate-scripts.sh new file mode 100644 index 00000000000..274018ab35d --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/migrate-scripts.sh @@ -0,0 +1,58 @@ +#!/usr/bin/bash + +# Copyright (C) 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of Apple puter, Inc. ("Apple") nor the names of +# its contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +NUMCPUPATH="../../Tools/Scripts/num-cpus" +if [ -x $NUMCPUPATH ]; then + NUMCPUS=`$NUMCPUPATH` +else + NUMCPUS=1 +fi + +mkdir -p "$1" + +XSRCROOT="`pwd`/.." +XSRCROOT=`realpath "$XSRCROOT"` +# Do a little dance to get the path into 8.3 form to make it safe for gnu make +# http://bugzilla.opendarwin.org/show_bug.cgi?id=8173 +XSRCROOT=`cygpath -m -s "$XSRCROOT"` +XSRCROOT=`cygpath -u "$XSRCROOT"` +export XSRCROOT +export SOURCE_ROOT=$XSRCROOT + +XDSTROOT="$1" +export XDSTROOT +# Do a little dance to get the path into 8.3 form to make it safe for gnu make +# http://bugzilla.opendarwin.org/show_bug.cgi?id=8173 +XDSTROOT=`cygpath -m -s "$XDSTROOT"` +XDSTROOT=`cygpath -u "$XDSTROOT"` +export XDSTROOT + +export WEBCORE=$XSRCROOT +export WEBKIT_OUTPUT=$XDSTROOT + +make -f "$WEBCORE/WebCore.vcxproj/MigrateScripts" -j ${NUMCPUS} || exit 1 diff --git a/Source/WebCore/WebCore.vcxproj/xcopy.excludes b/Source/WebCore/WebCore.vcxproj/xcopy.excludes new file mode 100644 index 00000000000..09eb2230a54 --- /dev/null +++ b/Source/WebCore/WebCore.vcxproj/xcopy.excludes @@ -0,0 +1 @@ +\.svn\ diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..5f1d39f1b8e --- /dev/null +++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj @@ -0,0 +1,27416 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXAggregateTarget section */ + 41816F7913859C550057AAA4 /* All */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 41816F8113859C640057AAA4 /* Build configuration list for PBXAggregateTarget "All" */; + buildPhases = ( + ); + dependencies = ( + 41816F8313859C7A0057AAA4 /* PBXTargetDependency */, + 41816F8513859C7D0057AAA4 /* PBXTargetDependency */, + E1BA671C1742CBF800C20251 /* PBXTargetDependency */, + ); + name = All; + productName = All; + }; + 5D87BB6411E3EBC100702B6F /* WebCoreExportFileGenerator Generator */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 5D87BB6C11E3EC0000702B6F /* Build configuration list for PBXAggregateTarget "WebCoreExportFileGenerator Generator" */; + buildPhases = ( + 5D87BB6311E3EBC100702B6F /* Generate Export File Generator */, + ); + dependencies = ( + ); + name = "WebCoreExportFileGenerator Generator"; + productName = "WebCoreExportFileGenerator Generator"; + }; + DD041FBE09D9DDBE0010AF2A /* Derived Sources */ = { + isa = PBXAggregateTarget; + buildConfigurationList = DD041FC109D9DDDC0010AF2A /* Build configuration list for PBXAggregateTarget "Derived Sources" */; + buildPhases = ( + DD041FBD09D9DDBE0010AF2A /* Generate Derived Sources */, + ); + dependencies = ( + 5D87BB8F11E3EE2B00702B6F /* PBXTargetDependency */, + ); + name = "Derived Sources"; + productName = "Derived Sources"; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 0014628A103CD1DE000B20DB /* OriginAccessEntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00146288103CD1DE000B20DB /* OriginAccessEntry.cpp */; }; + 0014628B103CD1DE000B20DB /* OriginAccessEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 00146289103CD1DE000B20DB /* OriginAccessEntry.h */; }; + 003F1FEA11E6AB43008258D9 /* UserContentTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 003F1FE911E6AB43008258D9 /* UserContentTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0081FEFF16B0A2B6008AAA7A /* PublicSuffixMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0081FEFE16B0A2B6008AAA7A /* PublicSuffixMac.mm */; }; + 0081FF0016B0A2D3008AAA7A /* PublicSuffix.h in Headers */ = {isa = PBXBuildFile; fileRef = 0081FEFD16B0A244008AAA7A /* PublicSuffix.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 00B9318713BA8DB30035A948 /* XMLDocumentParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00B9318113BA867F0035A948 /* XMLDocumentParser.cpp */; }; + 00B9318813BA8DBA0035A948 /* XMLDocumentParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 00B9318213BA867F0035A948 /* XMLDocumentParser.h */; }; + 00B9318913BA8DBC0035A948 /* XMLDocumentParserLibxml2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00B9318313BA867F0035A948 /* XMLDocumentParserLibxml2.cpp */; }; + 00B9318B13BA8DC90035A948 /* XMLDocumentParserScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00B9318513BA867F0035A948 /* XMLDocumentParserScope.cpp */; }; + 00B9318C13BA8DCC0035A948 /* XMLDocumentParserScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 00B9318613BA867F0035A948 /* XMLDocumentParserScope.h */; }; + 00C60E3F13D76D7E0092A275 /* MarkupTokenizerInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 00C60E3E13D76D7E0092A275 /* MarkupTokenizerInlines.h */; }; + 01D3CF8214BD0A3000FE9970 /* WebGLContextGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01D3CF7C14BD0A3000FE9970 /* WebGLContextGroup.cpp */; }; + 01D3CF8314BD0A3000FE9970 /* WebGLContextGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 01D3CF7D14BD0A3000FE9970 /* WebGLContextGroup.h */; }; + 01D3CF8414BD0A3000FE9970 /* WebGLContextObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01D3CF7E14BD0A3000FE9970 /* WebGLContextObject.cpp */; }; + 01D3CF8514BD0A3000FE9970 /* WebGLContextObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 01D3CF7F14BD0A3000FE9970 /* WebGLContextObject.h */; }; + 01D3CF8614BD0A3000FE9970 /* WebGLSharedObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01D3CF8014BD0A3000FE9970 /* WebGLSharedObject.cpp */; }; + 01D3CF8714BD0A3000FE9970 /* WebGLSharedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 01D3CF8114BD0A3000FE9970 /* WebGLSharedObject.h */; }; + 033A6A7C147E07D200509B36 /* HTMLPropertiesCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 033A6A7B147E07D200509B36 /* HTMLPropertiesCollection.h */; }; + 033A6A7E147E07E700509B36 /* HTMLPropertiesCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 033A6A7D147E07E700509B36 /* HTMLPropertiesCollection.cpp */; }; + 033A6A81147E088600509B36 /* JSHTMLPropertiesCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 033A6A80147E088600509B36 /* JSHTMLPropertiesCollection.cpp */; }; + 033A6A83147E08A600509B36 /* JSHTMLPropertiesCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 033A6A82147E08A600509B36 /* JSHTMLPropertiesCollection.h */; }; + 0562F9461573ECEB0031CA16 /* WebKitCSSSVGDocumentValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0562F9441573ECEB0031CA16 /* WebKitCSSSVGDocumentValue.cpp */; }; + 0562F9471573ECEB0031CA16 /* WebKitCSSSVGDocumentValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0562F9451573ECEB0031CA16 /* WebKitCSSSVGDocumentValue.h */; }; + 0562F9611573F88F0031CA16 /* PlatformLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0562F9601573F88F0031CA16 /* PlatformLayer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 05FD69E012845D4300B2BEB3 /* DOMTimeStamp.h in Headers */ = {isa = PBXBuildFile; fileRef = 05FD69DF12845D4300B2BEB3 /* DOMTimeStamp.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 06027CAD0B1CBFC000884B2D /* ContextMenuItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 06027CAC0B1CBFC000884B2D /* ContextMenuItem.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 06027CB30B1CC03D00884B2D /* ContextMenuItemMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 06027CB20B1CC03D00884B2D /* ContextMenuItemMac.mm */; }; + 062287840B4DB322000C34DF /* FocusDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 062287830B4DB322000C34DF /* FocusDirection.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 065AD4F50B0C2EDA005A2B1D /* ContextMenuClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 065AD4F20B0C2EDA005A2B1D /* ContextMenuClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 065AD4F60B0C2EDA005A2B1D /* ContextMenuController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 065AD4F30B0C2EDA005A2B1D /* ContextMenuController.cpp */; }; + 065AD4F70B0C2EDA005A2B1D /* ContextMenuController.h in Headers */ = {isa = PBXBuildFile; fileRef = 065AD4F40B0C2EDA005A2B1D /* ContextMenuController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0668E18B0ADD9624004128E0 /* PopupMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 0668E1890ADD9624004128E0 /* PopupMenu.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 066C772B0AB603B700238CC4 /* FileChooser.h in Headers */ = {isa = PBXBuildFile; fileRef = 066C772A0AB603B700238CC4 /* FileChooser.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 066C77300AB603FD00238CC4 /* RenderFileUploadControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 066C772E0AB603FD00238CC4 /* RenderFileUploadControl.cpp */; }; + 066C77310AB603FD00238CC4 /* RenderFileUploadControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 066C772F0AB603FD00238CC4 /* RenderFileUploadControl.h */; }; + 06E81ED70AB5D5E900C87837 /* LocalCurrentGraphicsContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 06E81ED60AB5D5E900C87837 /* LocalCurrentGraphicsContext.h */; }; + 06E81EEC0AB5DA9700C87837 /* LocalCurrentGraphicsContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = 06E81EEB0AB5DA9700C87837 /* LocalCurrentGraphicsContext.mm */; }; + 070334D31459FFAD008D8D45 /* TrackEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 070334D01459FFAC008D8D45 /* TrackEvent.cpp */; }; + 070334D71459FFD5008D8D45 /* TrackBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 070334D61459FFD5008D8D45 /* TrackBase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 070334D9145A006F008D8D45 /* TrackBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 070334D8145A006F008D8D45 /* TrackBase.cpp */; }; + 070334E9145A1F36008D8D45 /* JSTrackCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 070334E8145A1F35008D8D45 /* JSTrackCustom.cpp */; }; + 0707568B142262D600414161 /* HTMLTrackElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07075688142262D600414161 /* HTMLTrackElement.cpp */; }; + 0707568C142262D600414161 /* HTMLTrackElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 07075689142262D600414161 /* HTMLTrackElement.h */; }; + 070756941422668D00414161 /* JSTextTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0707568E1422668C00414161 /* JSTextTrack.cpp */; }; + 070756951422668D00414161 /* JSTextTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = 0707568F1422668C00414161 /* JSTextTrack.h */; }; + 070756D314239A4E00414161 /* JSHTMLTrackElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 070756D114239A4E00414161 /* JSHTMLTrackElement.cpp */; }; + 070756D414239A4F00414161 /* JSHTMLTrackElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 070756D214239A4E00414161 /* JSHTMLTrackElement.h */; }; + 070756DD14239B4E00414161 /* JSTextTrackCue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 070756D714239B4B00414161 /* JSTextTrackCue.cpp */; }; + 070756DE14239B4E00414161 /* JSTextTrackCue.h in Headers */ = {isa = PBXBuildFile; fileRef = 070756D814239B4B00414161 /* JSTextTrackCue.h */; }; + 070756DF14239B4E00414161 /* JSTextTrackCueList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 070756D914239B4C00414161 /* JSTextTrackCueList.cpp */; }; + 070756E014239B4E00414161 /* JSTextTrackCueList.h in Headers */ = {isa = PBXBuildFile; fileRef = 070756DA14239B4E00414161 /* JSTextTrackCueList.h */; }; + 0709FC4E1025DEE30059CDBA /* AccessibilitySlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 0709FC4D1025DEE30059CDBA /* AccessibilitySlider.h */; }; + 071A9EC2168FBC43002629F9 /* TextTrackCueGeneric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 071A9EC0168FB56C002629F9 /* TextTrackCueGeneric.cpp */; }; + 071A9EC3168FBC55002629F9 /* TextTrackCueGeneric.h in Headers */ = {isa = PBXBuildFile; fileRef = 071A9EC1168FB56C002629F9 /* TextTrackCueGeneric.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0720B0A014D3323500642955 /* GenericEventQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0720B09E14D3323500642955 /* GenericEventQueue.cpp */; }; + 0720B0A014D3323500642956 /* GestureEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0720B09F14D3323500642956 /* GestureEvent.cpp */; }; + 0720B0A114D3323500642955 /* GenericEventQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0720B09F14D3323500642955 /* GenericEventQueue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0720B0A114D3323500642957 /* GestureEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 0720B09F14D3323500642957 /* GestureEvent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 072C8B11131C518600A4FCE9 /* MediaPlayerPrivateAVFoundation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 076F0D0912B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.cpp */; }; + 072CA86116CB4DC3008AE131 /* CaptionUserPreferences.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 072CA86016CB4DC3008AE131 /* CaptionUserPreferences.cpp */; }; + 0735EE6A0F40C5E4004A2604 /* MediaPlayerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 0735EE690F40C5E4004A2604 /* MediaPlayerProxy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 07367DDF172CA67F00D861B9 /* InbandTextTrackPrivateLegacyAVFObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = 07367DDD172CA67F00D861B9 /* InbandTextTrackPrivateLegacyAVFObjC.h */; }; + 07367DE0172CA68200D861B9 /* InbandTextTrackPrivateLegacyAVFObjC.mm in Sources */ = {isa = PBXBuildFile; fileRef = 07367DDE172CA67F00D861B9 /* InbandTextTrackPrivateLegacyAVFObjC.mm */; }; + 0753860214489E9800B78452 /* CachedTextTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0753860014489E9800B78452 /* CachedTextTrack.cpp */; }; + 0753860314489E9800B78452 /* CachedTextTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = 0753860114489E9800B78452 /* CachedTextTrack.h */; }; + 076970861463AD8700F502CF /* TextTrackList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 076970841463AD8700F502CF /* TextTrackList.cpp */; }; + 076970871463AD8700F502CF /* TextTrackList.h in Headers */ = {isa = PBXBuildFile; fileRef = 076970851463AD8700F502CF /* TextTrackList.h */; }; + 076F0D0E12B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 076F0D0A12B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.h */; }; + 07846342145B151A00A58DF1 /* JSTrackEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07846340145B151A00A58DF1 /* JSTrackEvent.cpp */; }; + 07846343145B151A00A58DF1 /* JSTrackEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 07846341145B151A00A58DF1 /* JSTrackEvent.h */; }; + 07846385145B1B8E00A58DF1 /* JSTrackCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = 07846384145B1B8E00A58DF1 /* JSTrackCustom.h */; }; + 07941791166E855F009416C2 /* InbandTextTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0794178F166E855F009416C2 /* InbandTextTrack.cpp */; }; + 07941792166E855F009416C2 /* InbandTextTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = 07941790166E855F009416C2 /* InbandTextTrack.h */; }; + 07941794166EA04E009416C2 /* InbandTextTrackPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 07941793166EA04E009416C2 /* InbandTextTrackPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 079D0868162F20E800DB8658 /* CaptionUserPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 079D0867162F20E800DB8658 /* CaptionUserPreferences.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 079D086B162F21F900DB8658 /* CaptionUserPreferencesMediaAF.h in Headers */ = {isa = PBXBuildFile; fileRef = 079D0869162F21F900DB8658 /* CaptionUserPreferencesMediaAF.h */; }; + 079D086C162F21F900DB8658 /* CaptionUserPreferencesMediaAF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 079D086A162F21F900DB8658 /* CaptionUserPreferencesMediaAF.cpp */; }; + 07A6D1EB1491137700051D0C /* MediaFragmentURIParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07A6D1E91491137700051D0C /* MediaFragmentURIParser.cpp */; }; + 07A6D1EC1491137700051D0C /* MediaFragmentURIParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 07A6D1EA1491137700051D0C /* MediaFragmentURIParser.h */; }; + 07AA6B6B166D2C0700D45671 /* InbandTextTrackPrivateAVFObjC.mm in Sources */ = {isa = PBXBuildFile; fileRef = 07AA6B6A166D019500D45671 /* InbandTextTrackPrivateAVFObjC.mm */; }; + 07AA6B6C166D2C1300D45671 /* InbandTextTrackPrivateAVFObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = 07AA6B69166D019500D45671 /* InbandTextTrackPrivateAVFObjC.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 07B0113F1032242200FBDC33 /* AccessibilityMediaControls.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0113E1032242200FBDC33 /* AccessibilityMediaControls.h */; }; + 07B442D6166C70B000556CAD /* InbandTextTrackPrivateAVF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07B442D4166C70B000556CAD /* InbandTextTrackPrivateAVF.cpp */; }; + 07B442D7166C70B000556CAD /* InbandTextTrackPrivateAVF.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B442D5166C70B000556CAD /* InbandTextTrackPrivateAVF.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 07B5A2DB1464320A00A81ECE /* JSTextTrackList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07B5A2D91464320A00A81ECE /* JSTextTrackList.cpp */; }; + 07B5A2DC1464320A00A81ECE /* JSTextTrackList.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B5A2DA1464320A00A81ECE /* JSTextTrackList.h */; }; + 07B5A30D14687D7100A81ECE /* JSTextTrackListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07B5A30C14687D7100A81ECE /* JSTextTrackListCustom.cpp */; }; + 07BDD6EC1469B4C2009C9F85 /* JSTrackEventCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07B5A30A14687B8400A81ECE /* JSTrackEventCustom.cpp */; }; + 07CE77D516712A6A00C55A47 /* InbandTextTrackPrivateClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 07CE77D416712A6A00C55A47 /* InbandTextTrackPrivateClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 07E116B11489C9A100EC5ACE /* JSTextTrackCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07E116B01489C9A100EC5ACE /* JSTextTrackCustom.cpp */; }; + 07E117071489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07E117061489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp */; }; + 0806E57A12893045007CED32 /* SVGMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = 0806E57912893045007CED32 /* SVGMatrix.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 080E49261255F3BD00EFCA27 /* SVGTextLayoutEngineBaseline.h in Headers */ = {isa = PBXBuildFile; fileRef = 080E49221255F3BD00EFCA27 /* SVGTextLayoutEngineBaseline.h */; }; + 080E49281255F3BD00EFCA27 /* SVGTextLayoutEngineSpacing.h in Headers */ = {isa = PBXBuildFile; fileRef = 080E49241255F3BD00EFCA27 /* SVGTextLayoutEngineSpacing.h */; }; + 0810764412828556007C63BA /* SVGListProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 0810764312828556007C63BA /* SVGListProperty.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 081093DC1255F0E700ED9D29 /* SVGTextLayoutAttributesBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 081093DA1255F0E700ED9D29 /* SVGTextLayoutAttributesBuilder.h */; }; + 0813A4EA1284132600992511 /* SVGStaticPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 0813A4E91284132600992511 /* SVGStaticPropertyTearOff.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 081668D4125603BF006F25DE /* SVGTextChunkBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 081668D2125603BF006F25DE /* SVGTextChunkBuilder.h */; }; + 081668DA125603D5006F25DE /* SVGTextLayoutEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = 081668D8125603D5006F25DE /* SVGTextLayoutEngine.h */; }; + 081AA8DA1111237E002AB06E /* SVGElementRareData.h in Headers */ = {isa = PBXBuildFile; fileRef = 081AA8D91111237E002AB06E /* SVGElementRareData.h */; }; + 081DD49C13BA1A6000DC7627 /* SVGPropertyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 081DD49B13BA1A6000DC7627 /* SVGPropertyInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 081EBF3A0FD34F4100DA7559 /* SVGFilterBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 081EBF380FD34F4100DA7559 /* SVGFilterBuilder.cpp */; }; + 081EBF3B0FD34F4100DA7559 /* SVGFilterBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 081EBF390FD34F4100DA7559 /* SVGFilterBuilder.h */; }; + 0823D159127AD6AC000EBC95 /* SVGAnimatedInteger.h in Headers */ = {isa = PBXBuildFile; fileRef = 0823D158127AD6AC000EBC95 /* SVGAnimatedInteger.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 08250939128BD4D800E2ED8E /* SVGAnimatedTransformList.h in Headers */ = {isa = PBXBuildFile; fileRef = 08250938128BD4D800E2ED8E /* SVGAnimatedTransformList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 082DE42D1292621600D923DF /* SVGPathSegWithContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 082DE42C1292621600D923DF /* SVGPathSegWithContext.h */; }; + 083DAEA60F01A7FB00342754 /* RenderTextControlMultiLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 083DAEA20F01A7FB00342754 /* RenderTextControlMultiLine.cpp */; }; + 083DAEA70F01A7FB00342754 /* RenderTextControlMultiLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 083DAEA30F01A7FB00342754 /* RenderTextControlMultiLine.h */; }; + 083DAEA80F01A7FB00342754 /* RenderTextControlSingleLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 083DAEA40F01A7FB00342754 /* RenderTextControlSingleLine.cpp */; }; + 083DAEA90F01A7FB00342754 /* RenderTextControlSingleLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 083DAEA50F01A7FB00342754 /* RenderTextControlSingleLine.h */; }; + 0845680812B90DA600960A9F /* FontMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = 0845680712B90DA600960A9F /* FontMetrics.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 084A0829128D7867002DB1F1 /* SVGPathSegListPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 084A0828128D7867002DB1F1 /* SVGPathSegListPropertyTearOff.h */; }; + 084DB59B128008CC002A6D64 /* SVGAnimatedString.h in Headers */ = {isa = PBXBuildFile; fileRef = 084DB59A128008CC002A6D64 /* SVGAnimatedString.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 08525E631278C00100A84778 /* SVGAnimatedStaticPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 08525E621278C00100A84778 /* SVGAnimatedStaticPropertyTearOff.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0854B0151255E4E600B9CDD0 /* RenderSVGInline.h in Headers */ = {isa = PBXBuildFile; fileRef = 0854B0031255E4E600B9CDD0 /* RenderSVGInline.h */; }; + 0854B0171255E4E600B9CDD0 /* RenderSVGInlineText.h in Headers */ = {isa = PBXBuildFile; fileRef = 0854B0051255E4E600B9CDD0 /* RenderSVGInlineText.h */; }; + 0854B0191255E4E600B9CDD0 /* RenderSVGText.h in Headers */ = {isa = PBXBuildFile; fileRef = 0854B0071255E4E600B9CDD0 /* RenderSVGText.h */; }; + 0854B01B1255E4E600B9CDD0 /* RenderSVGTextPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 0854B0091255E4E600B9CDD0 /* RenderSVGTextPath.h */; }; + 0854B01D1255E4E600B9CDD0 /* RenderSVGTSpan.h in Headers */ = {isa = PBXBuildFile; fileRef = 0854B00B1255E4E600B9CDD0 /* RenderSVGTSpan.h */; }; + 0854B01F1255E4E600B9CDD0 /* SVGInlineFlowBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 0854B00D1255E4E600B9CDD0 /* SVGInlineFlowBox.h */; }; + 0854B0211255E4E600B9CDD0 /* SVGInlineTextBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 0854B00F1255E4E600B9CDD0 /* SVGInlineTextBox.h */; }; + 0854B0231255E4E600B9CDD0 /* SVGRootInlineBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 0854B0111255E4E600B9CDD0 /* SVGRootInlineBox.h */; }; + 0854B0251255E4E600B9CDD0 /* SVGTextQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = 0854B0131255E4E600B9CDD0 /* SVGTextQuery.h */; }; + 085797091278394C00A8EC5F /* SVGAnimatedBoolean.h in Headers */ = {isa = PBXBuildFile; fileRef = 085797081278394C00A8EC5F /* SVGAnimatedBoolean.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 085A15931289A8DD002710E3 /* SVGAnimatedTransformListPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 085A15921289A8DD002710E3 /* SVGAnimatedTransformListPropertyTearOff.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 085B92BA0EFDE73D00E6123C /* FormDataBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 085B92B80EFDE73D00E6123C /* FormDataBuilder.cpp */; }; + 085B92BB0EFDE73D00E6123C /* FormDataBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 085B92B90EFDE73D00E6123C /* FormDataBuilder.h */; settings = {ATTRIBUTES = (); }; }; + 085CD275138BB8E000907F2D /* SVGTextRunRenderingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 085CD274138BB8E000907F2D /* SVGTextRunRenderingContext.h */; }; + 0863951613B5FE5700BB344D /* SVGAnimatedPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 0863951413B5FE5700BB344D /* SVGAnimatedPath.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 08641D4712142F7D008DE9F6 /* RenderImageResourceStyleImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08641D4512142F7D008DE9F6 /* RenderImageResourceStyleImage.cpp */; }; + 08641D4812142F7D008DE9F6 /* RenderImageResourceStyleImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 08641D4612142F7D008DE9F6 /* RenderImageResourceStyleImage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 086BBD0F136039C2008B15D8 /* Glyph.h in Headers */ = {isa = PBXBuildFile; fileRef = 086BBD0E136039C2008B15D8 /* Glyph.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0873B86B136064EA00A522C2 /* GlyphPage.h in Headers */ = {isa = PBXBuildFile; fileRef = 0873B86A136064EA00A522C2 /* GlyphPage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 087558C513B4A57D00F49307 /* SurrogatePairAwareTextIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 087558C313B4A57D00F49307 /* SurrogatePairAwareTextIterator.cpp */; }; + 087558C613B4A57D00F49307 /* SurrogatePairAwareTextIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 087558C413B4A57D00F49307 /* SurrogatePairAwareTextIterator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 087B84961272CEC800A14417 /* SVGAnimatedAngle.h in Headers */ = {isa = PBXBuildFile; fileRef = 087B84951272CEC700A14417 /* SVGAnimatedAngle.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 087E0AF613606D0B00FA4BA8 /* SVGGlyph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 087E0AF413606D0B00FA4BA8 /* SVGGlyph.cpp */; }; + 087E0AF713606D0B00FA4BA8 /* SVGGlyph.h in Headers */ = {isa = PBXBuildFile; fileRef = 087E0AF513606D0B00FA4BA8 /* SVGGlyph.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0880F70E1282B46D00948505 /* SVGStaticListPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 0880F70D1282B46D00948505 /* SVGStaticListPropertyTearOff.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0885067F11DA045B00182B98 /* PaintInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0885067D11DA045B00182B98 /* PaintInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0885068011DA045B00182B98 /* PaintPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0885067E11DA045B00182B98 /* PaintPhase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 088A0E04126EF1DB00978F7A /* SVGAnimatedListPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 088A0DFB126EF1DB00978F7A /* SVGAnimatedListPropertyTearOff.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 088A0E05126EF1DB00978F7A /* SVGAnimatedProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 088A0DFC126EF1DB00978F7A /* SVGAnimatedProperty.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 088A0E06126EF1DB00978F7A /* SVGAnimatedPropertyDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 088A0DFD126EF1DB00978F7A /* SVGAnimatedPropertyDescription.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 088A0E07126EF1DB00978F7A /* SVGAnimatedPropertyMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 088A0DFE126EF1DB00978F7A /* SVGAnimatedPropertyMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 088A0E08126EF1DB00978F7A /* SVGAnimatedPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 088A0DFF126EF1DB00978F7A /* SVGAnimatedPropertyTearOff.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 088A0E09126EF1DB00978F7A /* SVGListPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 088A0E00126EF1DB00978F7A /* SVGListPropertyTearOff.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 088A0E0A126EF1DB00978F7A /* SVGProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 088A0E01126EF1DB00978F7A /* SVGProperty.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 088A0E0B126EF1DB00978F7A /* SVGPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 088A0E02126EF1DB00978F7A /* SVGPropertyTearOff.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 088A0E0C126EF1DB00978F7A /* SVGPropertyTraits.h in Headers */ = {isa = PBXBuildFile; fileRef = 088A0E03126EF1DB00978F7A /* SVGPropertyTraits.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 088C2F7A12390081003D65CE /* SVGTextLayoutAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 088C2F7612390080003D65CE /* SVGTextLayoutAttributes.h */; }; + 089021A9126EF5DE0092D5EA /* SVGAnimatedLength.h in Headers */ = {isa = PBXBuildFile; fileRef = 089021A8126EF5DE0092D5EA /* SVGAnimatedLength.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 089021AD126EF5E90092D5EA /* SVGAnimatedLengthList.h in Headers */ = {isa = PBXBuildFile; fileRef = 089021AC126EF5E90092D5EA /* SVGAnimatedLengthList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 089582550E857A7E00F82C83 /* ImageLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 089582530E857A7E00F82C83 /* ImageLoader.cpp */; }; + 089582560E857A7E00F82C83 /* ImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 089582540E857A7E00F82C83 /* ImageLoader.h */; }; + 089A8E07128D8B3D00E7A534 /* SVGAnimatedPathSegListPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 089A8E06128D8B3D00E7A534 /* SVGAnimatedPathSegListPropertyTearOff.h */; }; + 08A484770E5272C500C3FE76 /* ScriptElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08A484750E5272C500C3FE76 /* ScriptElement.cpp */; }; + 08A484780E5272C500C3FE76 /* ScriptElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 08A484760E5272C500C3FE76 /* ScriptElement.h */; }; + 08A48A6E0E86CF6D00E225DD /* JSSVGElementInstanceCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08A48A6D0E86CF6D00E225DD /* JSSVGElementInstanceCustom.cpp */; }; + 08B35B13127B6A7C005314DD /* SVGAnimatedNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 08B35B12127B6A7C005314DD /* SVGAnimatedNumber.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 08B35B17127B6A88005314DD /* SVGAnimatedNumberList.h in Headers */ = {isa = PBXBuildFile; fileRef = 08B35B16127B6A88005314DD /* SVGAnimatedNumberList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 08B5F25513B5FFF2002959EC /* SVGAnimatedPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0863951313B5FE5700BB344D /* SVGAnimatedPath.cpp */; }; + 08C7136E128956A3001B107E /* SVGTransformListPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 08C7136D128956A3001B107E /* SVGTransformListPropertyTearOff.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 08C7A2C710DC7462002D368B /* SVGNames.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 656581E909D1508D000E61D7 /* SVGNames.h */; }; + 08C859C01274575400A5728D /* SVGAnimatedRect.h in Headers */ = {isa = PBXBuildFile; fileRef = 08C859BF1274575300A5728D /* SVGAnimatedRect.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 08C925190FCC7C4A00480DEC /* FilterEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08C925170FCC7C4A00480DEC /* FilterEffect.cpp */; }; + 08C9251A0FCC7C4A00480DEC /* FilterEffect.h in Headers */ = {isa = PBXBuildFile; fileRef = 08C925180FCC7C4A00480DEC /* FilterEffect.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 08CA3D4412894A3800FFF260 /* SVGStaticPropertyWithParentTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 08CA3D4312894A3800FFF260 /* SVGStaticPropertyWithParentTearOff.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 08D46CE3127AD5FC0089694B /* SVGAnimatedEnumeration.h in Headers */ = {isa = PBXBuildFile; fileRef = 08D46CE2127AD5FC0089694B /* SVGAnimatedEnumeration.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 08E4FE460E2BD41400F4CAE0 /* JSSVGLengthCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08E4FE450E2BD41400F4CAE0 /* JSSVGLengthCustom.cpp */; }; + 08EDE19F12A50B8E00B95797 /* SVGRect.h in Headers */ = {isa = PBXBuildFile; fileRef = 08EDE19E12A50B8E00B95797 /* SVGRect.h */; }; + 08F0BFC31255C53C00075185 /* SVGTextChunk.h in Headers */ = {isa = PBXBuildFile; fileRef = 08F0BFBE1255C53C00075185 /* SVGTextChunk.h */; }; + 08F0BFC41255C53C00075185 /* SVGTextFragment.h in Headers */ = {isa = PBXBuildFile; fileRef = 08F0BFBF1255C53C00075185 /* SVGTextFragment.h */; }; + 08F0BFC61255C53C00075185 /* SVGTextMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = 08F0BFC11255C53C00075185 /* SVGTextMetrics.h */; }; + 08F2F0091213E61700DCEC48 /* RenderImageResource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08F2F0071213E61700DCEC48 /* RenderImageResource.cpp */; }; + 08F2F00A1213E61700DCEC48 /* RenderImageResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 08F2F0081213E61700DCEC48 /* RenderImageResource.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 08F859D41463F9CD0067D933 /* SVGImageCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08F859D21463F9CD0067D933 /* SVGImageCache.cpp */; }; + 08F859D41463F9CD0067D934 /* SVGImageForContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08F859D21463F9CD0067D934 /* SVGImageForContainer.cpp */; }; + 08F859D51463F9CD0067D933 /* SVGImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 08F859D31463F9CD0067D933 /* SVGImageCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 08F859D51463F9CD0067D934 /* SVGImageForContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 08F859D31463F9CD0067D934 /* SVGImageForContainer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 08FB17C113BC7E9100040086 /* SVGAttributeToPropertyMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08FB17C013BC7E9100040086 /* SVGAttributeToPropertyMap.cpp */; }; + 08FB3F8413BC754C0099FC18 /* SVGAttributeToPropertyMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 08FB3F8313BC754C0099FC18 /* SVGAttributeToPropertyMap.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 08FE0BC5127E2AC1000C4FB5 /* SVGAnimatedPreserveAspectRatio.h in Headers */ = {isa = PBXBuildFile; fileRef = 08FE0BC4127E2AC1000C4FB5 /* SVGAnimatedPreserveAspectRatio.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 08FF102012950F5A00F00276 /* SVGPathSegListPropertyTearOff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08FF101F12950F5900F00276 /* SVGPathSegListPropertyTearOff.cpp */; }; + 0A4844990CA44CB200B7BD48 /* SoftLinking.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A4844980CA44CB200B7BD48 /* SoftLinking.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0AFDAC3D10F5448C00E1F3D2 /* PluginViewBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AFDAC3C10F5448C00E1F3D2 /* PluginViewBase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0B8C56D40F28627F000502E1 /* HTTPHeaderMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0B8C56D30F28627F000502E1 /* HTTPHeaderMap.cpp */; }; + 0B9056190F2578BE0095FF6A /* DocumentThreadableLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0B9056150F2578BE0095FF6A /* DocumentThreadableLoader.cpp */; }; + 0B90561A0F2578BF0095FF6A /* DocumentThreadableLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B9056160F2578BE0095FF6A /* DocumentThreadableLoader.h */; settings = {ATTRIBUTES = (); }; }; + 0B90561B0F2578BF0095FF6A /* ThreadableLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B9056170F2578BE0095FF6A /* ThreadableLoader.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0B90561C0F2578BF0095FF6A /* ThreadableLoaderClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B9056180F2578BE0095FF6A /* ThreadableLoaderClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0B90561E0F257E930095FF6A /* ThreadableLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0B90561D0F257E930095FF6A /* ThreadableLoader.cpp */; }; + 0B9056F80F2685F30095FF6A /* WorkerThreadableLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0B9056F60F2685F30095FF6A /* WorkerThreadableLoader.cpp */; }; + 0B9056F90F2685F30095FF6A /* WorkerThreadableLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B9056F70F2685F30095FF6A /* WorkerThreadableLoader.h */; settings = {ATTRIBUTES = (); }; }; + 0BE030A20F3112FB003C1A46 /* RenderLineBoxList.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BE030A10F3112FB003C1A46 /* RenderLineBoxList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0C3F1F5A10C8871200D72CE1 /* WebGLUniformLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C3F1F5710C8871200D72CE1 /* WebGLUniformLocation.cpp */; }; + 0C3F1F5B10C8871200D72CE1 /* WebGLUniformLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C3F1F5810C8871200D72CE1 /* WebGLUniformLocation.h */; }; + 0C45342710CDBBFA00869157 /* JSWebGLUniformLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C45342510CDBBFA00869157 /* JSWebGLUniformLocation.cpp */; }; + 0C45342810CDBBFA00869157 /* JSWebGLUniformLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C45342610CDBBFA00869157 /* JSWebGLUniformLocation.h */; }; + 0F09087F1444FDB200028917 /* ScrollbarTheme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FE71415142189FC00DB33BA /* ScrollbarTheme.cpp */; }; + 0F11A54F0F39233100C37884 /* RenderSelectionInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F11A54E0F39233100C37884 /* RenderSelectionInfo.h */; }; + 0F13163E16ED0CC80035CC04 /* PlatformCAFilters.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F13163D16ED0CC80035CC04 /* PlatformCAFilters.h */; }; + 0F13164016ED0CDE0035CC04 /* PlatformCAFiltersMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F13163F16ED0CDE0035CC04 /* PlatformCAFiltersMac.mm */; }; + 0F15DA8A0F3AAEE70000CE47 /* AnimationControllerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F15DA890F3AAEE70000CE47 /* AnimationControllerPrivate.h */; }; + 0F29C16E1300C2E2002D794E /* AccessibilityAllInOne.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F29C16D1300C2E2002D794E /* AccessibilityAllInOne.cpp */; }; + 0F3DD44F12F5EA1B000D9190 /* ShadowBlur.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F3DD44D12F5EA1B000D9190 /* ShadowBlur.cpp */; }; + 0F3DD45012F5EA1B000D9190 /* ShadowBlur.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F3DD44E12F5EA1B000D9190 /* ShadowBlur.h */; }; + 0F3F0E59157030C3006DA57F /* RenderGeometryMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F3F0E57157030C3006DA57F /* RenderGeometryMap.cpp */; }; + 0F3F0E5A157030C3006DA57F /* RenderGeometryMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F3F0E58157030C3006DA57F /* RenderGeometryMap.h */; }; + 0F4E57171313276200CF85AF /* RenderSVGAllInOne.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F4E57161313276200CF85AF /* RenderSVGAllInOne.cpp */; }; + 0F56028F0E4B76580065B038 /* RenderMarquee.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F56028D0E4B76580065B038 /* RenderMarquee.h */; }; + 0F5602900E4B76580065B038 /* RenderMarquee.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F56028E0E4B76580065B038 /* RenderMarquee.cpp */; }; + 0F580B0C0F12A2690051D689 /* GraphicsLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F580B090F12A2690051D689 /* GraphicsLayer.cpp */; }; + 0F580B0D0F12A2690051D689 /* GraphicsLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F580B0A0F12A2690051D689 /* GraphicsLayer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F580B0E0F12A2690051D689 /* GraphicsLayerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F580B0B0F12A2690051D689 /* GraphicsLayerClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F580CFD0F12DE9B0051D689 /* RenderLayerCompositor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F580CF90F12DE9B0051D689 /* RenderLayerCompositor.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F580CFE0F12DE9B0051D689 /* RenderLayerCompositor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F580CFA0F12DE9B0051D689 /* RenderLayerCompositor.cpp */; }; + 0F580CFF0F12DE9B0051D689 /* RenderLayerBacking.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F580CFB0F12DE9B0051D689 /* RenderLayerBacking.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F580D000F12DE9B0051D689 /* RenderLayerBacking.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F580CFC0F12DE9B0051D689 /* RenderLayerBacking.cpp */; }; + 0F580FA31496939100FB5BD8 /* WebTiledBackingLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F580FA11496939100FB5BD8 /* WebTiledBackingLayer.h */; }; + 0F580FA41496939100FB5BD8 /* WebTiledBackingLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F580FA21496939100FB5BD8 /* WebTiledBackingLayer.mm */; }; + 0F580FAF149800D400FB5BD8 /* AnimationUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F580FAE149800D400FB5BD8 /* AnimationUtilities.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F5B7A5410F65D7A00376302 /* RenderEmbeddedObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F5B7A5210F65D7A00376302 /* RenderEmbeddedObject.cpp */; }; + 0F5B7A5510F65D7A00376302 /* RenderEmbeddedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5B7A5310F65D7A00376302 /* RenderEmbeddedObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F605AEC15F94848004DF0C0 /* ScrollingConstraints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F605AEA15F94848004DF0C0 /* ScrollingConstraints.cpp */; }; + 0F605AED15F94848004DF0C0 /* ScrollingConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F605AEB15F94848004DF0C0 /* ScrollingConstraints.h */; }; + 0FA24D79162DF91900A3F4C0 /* GraphicsLayerUpdater.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FA24D77162DF91900A3F4C0 /* GraphicsLayerUpdater.cpp */; }; + 0FA24D7A162DF91900A3F4C0 /* GraphicsLayerUpdater.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA24D78162DF91900A3F4C0 /* GraphicsLayerUpdater.h */; }; + 0FA88EBD16A8D1BD00F99984 /* ScrollingStateScrollingNodeMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FA88EBC16A8D1BD00F99984 /* ScrollingStateScrollingNodeMac.mm */; }; + 0FB8890A167D2FA10010CDA5 /* ScrollingTreeStickyNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB88908167D2FA10010CDA5 /* ScrollingTreeStickyNode.h */; }; + 0FB8890B167D2FA10010CDA5 /* ScrollingTreeStickyNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FB88909167D2FA10010CDA5 /* ScrollingTreeStickyNode.mm */; }; + 0FB8890E167D30160010CDA5 /* ScrollingStateStickyNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB8890C167D30160010CDA5 /* ScrollingStateStickyNode.cpp */; }; + 0FB8890F167D30160010CDA5 /* ScrollingStateStickyNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB8890D167D30160010CDA5 /* ScrollingStateStickyNode.h */; }; + 0FCF33240F2B9715004B6795 /* ColorCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCF33230F2B9715004B6795 /* ColorCG.cpp */; }; + 0FCF332C0F2B9A25004B6795 /* WebTiledLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FCF33280F2B9A25004B6795 /* WebTiledLayer.mm */; }; + 0FCF332D0F2B9A25004B6795 /* WebTiledLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCF33290F2B9A25004B6795 /* WebTiledLayer.h */; }; + 0FCF332E0F2B9A25004B6795 /* WebLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FCF332A0F2B9A25004B6795 /* WebLayer.mm */; }; + 0FCF332F0F2B9A25004B6795 /* WebLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCF332B0F2B9A25004B6795 /* WebLayer.h */; }; + 0FD3080E117CF7E700A791F7 /* RenderFrameBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FD3080C117CF7E700A791F7 /* RenderFrameBase.cpp */; }; + 0FD3080F117CF7E700A791F7 /* RenderFrameBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD3080D117CF7E700A791F7 /* RenderFrameBase.h */; }; + 0FD308D5117D168500A791F7 /* RenderIFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FD308D3117D168400A791F7 /* RenderIFrame.cpp */; }; + 0FD308D6117D168500A791F7 /* RenderIFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD308D4117D168400A791F7 /* RenderIFrame.h */; }; + 0FD723820EC8BD9300CA5DD7 /* FloatQuad.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD723800EC8BD9300CA5DD7 /* FloatQuad.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FD723830EC8BD9300CA5DD7 /* FloatQuad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FD723810EC8BD9300CA5DD7 /* FloatQuad.cpp */; }; + 0FE71405142170B800DB33BA /* ScrollbarThemeMock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FE71403142170B800DB33BA /* ScrollbarThemeMock.cpp */; }; + 0FE71406142170B800DB33BA /* ScrollbarThemeMock.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FE71404142170B800DB33BA /* ScrollbarThemeMock.h */; }; + 0FF5025B102BA9010066F39A /* DOMStyleMedia.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF50259102BA9010066F39A /* DOMStyleMedia.h */; }; + 0FF5025C102BA9010066F39A /* DOMStyleMedia.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FF5025A102BA9010066F39A /* DOMStyleMedia.mm */; }; + 0FF50263102BA92C0066F39A /* DOMStyleMediaInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF50262102BA92B0066F39A /* DOMStyleMediaInternal.h */; }; + 0FF50269102BA9430066F39A /* JSStyleMedia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF50267102BA9430066F39A /* JSStyleMedia.cpp */; }; + 0FF5026A102BA9430066F39A /* JSStyleMedia.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF50268102BA9430066F39A /* JSStyleMedia.h */; }; + 0FF50271102BA96A0066F39A /* StyleMedia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF5026E102BA9660066F39A /* StyleMedia.cpp */; }; + 0FF50272102BA96A0066F39A /* StyleMedia.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF5026F102BA96A0066F39A /* StyleMedia.h */; }; + 1059457315B42953004D37FD /* JSMicroDataItemValueCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1059457215B42953004D37FD /* JSMicroDataItemValueCustom.cpp */; }; + 1059457A15B42A43004D37FD /* JSMicroDataItemValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 1059457915B42A43004D37FD /* JSMicroDataItemValue.h */; }; + 1059459915B42AA0004D37FD /* PropertyNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = 1059459815B42AA0004D37FD /* PropertyNodeList.h */; }; + 1059459F15B42B1A004D37FD /* JSPropertyNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = 1059459E15B42B1A004D37FD /* JSPropertyNodeList.h */; }; + 10FB084B14E15C7E00A3DB98 /* PublicURLManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 10FB084A14E15C7E00A3DB98 /* PublicURLManager.h */; }; + 1400D7A817136EA70077CE05 /* ScriptWrappableInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 1400D7A717136EA70077CE05 /* ScriptWrappableInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1402645E0AFDC19B005919E2 /* LoggingMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1402645D0AFDC19B005919E2 /* LoggingMac.mm */; }; + 1403B99709EB13AF00797C7F /* DOMWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 1403B99509EB13AF00797C7F /* DOMWindow.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1403B99809EB13AF00797C7F /* DOMWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1403B99609EB13AF00797C7F /* DOMWindow.cpp */; }; + 1403BA0C09EB18C700797C7F /* JSDOMWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1403BA0B09EB18C700797C7F /* JSDOMWindow.cpp */; }; + 1403BA0F09EB18F900797C7F /* JSDOMWindow.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 1403BA0E09EB18F800797C7F /* JSDOMWindow.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14115B5209F84B7100CA4FC1 /* Node.h in Headers */ = {isa = PBXBuildFile; fileRef = 14115B5109F84B7100CA4FC1 /* Node.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14115B7209F84CD600CA4FC1 /* JSNodeFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14115B7009F84CD600CA4FC1 /* JSNodeFilter.cpp */; }; + 14115B7309F84CD600CA4FC1 /* JSNodeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 14115B7109F84CD600CA4FC1 /* JSNodeFilter.h */; }; + 1411DCB1164C39A800D49BC1 /* WidthCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 1411DCB0164C39A800D49BC1 /* WidthCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1419D2C50CEA6F6100FF507A /* TreeShared.h in Headers */ = {isa = PBXBuildFile; fileRef = 1419D2C40CEA6F6100FF507A /* TreeShared.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 141DC0481648348F00371E5A /* LayoutUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 141DC0471648348F00371E5A /* LayoutUnit.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 141DC04F164834B900371E5A /* LayoutBoxExtent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 141DC049164834B900371E5A /* LayoutBoxExtent.cpp */; }; + 141DC050164834B900371E5A /* LayoutBoxExtent.h in Headers */ = {isa = PBXBuildFile; fileRef = 141DC04A164834B900371E5A /* LayoutBoxExtent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 141DC051164834B900371E5A /* LayoutPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 141DC04B164834B900371E5A /* LayoutPoint.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 141DC052164834B900371E5A /* LayoutRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 141DC04C164834B900371E5A /* LayoutRect.cpp */; }; + 141DC053164834B900371E5A /* LayoutRect.h in Headers */ = {isa = PBXBuildFile; fileRef = 141DC04D164834B900371E5A /* LayoutRect.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 141DC054164834B900371E5A /* LayoutSize.h in Headers */ = {isa = PBXBuildFile; fileRef = 141DC04E164834B900371E5A /* LayoutSize.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 142011B60A003133008303F9 /* JSCSSStyleDeclaration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 142011B40A003133008303F9 /* JSCSSStyleDeclaration.cpp */; }; + 142011B70A003133008303F9 /* JSCSSStyleDeclaration.h in Headers */ = {isa = PBXBuildFile; fileRef = 142011B50A003133008303F9 /* JSCSSStyleDeclaration.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 142B97C913138943008BEF4B /* TextControlInnerElements.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 142B97C713138943008BEF4B /* TextControlInnerElements.cpp */; }; + 142B97CA13138943008BEF4B /* TextControlInnerElements.h in Headers */ = {isa = PBXBuildFile; fileRef = 142B97C813138943008BEF4B /* TextControlInnerElements.h */; }; + 1432E8470C51493800B1500F /* GCController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1432E8460C51493800B1500F /* GCController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1432E8490C51493F00B1500F /* GCController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1432E8480C51493F00B1500F /* GCController.cpp */; }; + 14476AA815DC4BB100305DB2 /* WritingMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 14476AA715DC4BB100305DB2 /* WritingMode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1449E24C107D4A8400B5793F /* JSCallbackData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1449E24A107D4A8400B5793F /* JSCallbackData.h */; }; + 1449E287107D4DB400B5793F /* JSCallbackData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1449E286107D4DB400B5793F /* JSCallbackData.cpp */; }; + 146CC115156988E400109E37 /* LengthBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 146CC113156988BD00109E37 /* LengthBox.cpp */; }; + 1477E7760BF4134A00152872 /* PageCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1477E7740BF4134A00152872 /* PageCache.cpp */; }; + 1477E7770BF4134A00152872 /* PageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 1477E7750BF4134A00152872 /* PageCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1479FAED109AE37500DED655 /* RenderRuby.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1479FAE5109AE37500DED655 /* RenderRuby.cpp */; }; + 1479FAEE109AE37500DED655 /* RenderRuby.h in Headers */ = {isa = PBXBuildFile; fileRef = 1479FAE6109AE37500DED655 /* RenderRuby.h */; }; + 1479FAEF109AE37500DED655 /* RenderRubyBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1479FAE7109AE37500DED655 /* RenderRubyBase.cpp */; }; + 1479FAF0109AE37500DED655 /* RenderRubyBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 1479FAE8109AE37500DED655 /* RenderRubyBase.h */; }; + 1479FAF1109AE37500DED655 /* RenderRubyRun.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1479FAE9109AE37500DED655 /* RenderRubyRun.cpp */; }; + 1479FAF2109AE37500DED655 /* RenderRubyRun.h in Headers */ = {isa = PBXBuildFile; fileRef = 1479FAEA109AE37500DED655 /* RenderRubyRun.h */; }; + 1479FAF3109AE37500DED655 /* RenderRubyText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1479FAEB109AE37500DED655 /* RenderRubyText.cpp */; }; + 1479FAF4109AE37500DED655 /* RenderRubyText.h in Headers */ = {isa = PBXBuildFile; fileRef = 1479FAEC109AE37500DED655 /* RenderRubyText.h */; }; + 148AFDA50AF58360008CC700 /* ExceptionHandlers.h in Headers */ = {isa = PBXBuildFile; fileRef = 148AFDA30AF58360008CC700 /* ExceptionHandlers.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 148AFDA60AF58360008CC700 /* ExceptionHandlers.mm in Sources */ = {isa = PBXBuildFile; fileRef = 148AFDA40AF58360008CC700 /* ExceptionHandlers.mm */; }; + 14947FFD12F80CD200A0F631 /* DocumentOrderedMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14947FFB12F80CD200A0F631 /* DocumentOrderedMap.cpp */; }; + 14947FFE12F80CD200A0F631 /* DocumentOrderedMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 14947FFC12F80CD200A0F631 /* DocumentOrderedMap.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14993BE50B2F2B1C0050497F /* FocusController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14993BE30B2F2B1C0050497F /* FocusController.cpp */; }; + 14993BE60B2F2B1C0050497F /* FocusController.h in Headers */ = {isa = PBXBuildFile; fileRef = 14993BE40B2F2B1C0050497F /* FocusController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14C9A5EA0B3D105F005A0232 /* Settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14C9A5E90B3D105F005A0232 /* Settings.cpp */; }; + 14CD8D82106B529000A46D23 /* JSSharedWorkerCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14CD8D81106B529000A46D23 /* JSSharedWorkerCustom.cpp */; }; + 14CF78A409F58CBF00EB3665 /* JSCSSValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14CF78A309F58CBF00EB3665 /* JSCSSValue.cpp */; }; + 14CF78A609F58CD800EB3665 /* JSCSSValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 14CF78A509F58CD800EB3665 /* JSCSSValue.h */; }; + 14CF7B3309F6ECD700EB3665 /* JSCSSRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14CF7B3109F6ECD700EB3665 /* JSCSSRule.cpp */; }; + 14CF7B3409F6ECD700EB3665 /* JSCSSRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 14CF7B3209F6ECD700EB3665 /* JSCSSRule.h */; }; + 14D64B5C134A5B6B00E58FDA /* TreeScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14D64B5A134A5B6B00E58FDA /* TreeScope.cpp */; }; + 14D64B5D134A5B6B00E58FDA /* TreeScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D64B5B134A5B6B00E58FDA /* TreeScope.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14D823520AF92A790004F057 /* Chrome.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D823500AF92A790004F057 /* Chrome.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14D8238B0AF92DF60004F057 /* Chrome.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14D8238A0AF92DF60004F057 /* Chrome.cpp */; }; + 14D824080AF93AEB0004F057 /* ChromeClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D824060AF93AEB0004F057 /* ChromeClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14DC0D3709FED073007B0235 /* JSNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14DC0D3509FED073007B0235 /* JSNode.cpp */; }; + 14DC0D3809FED073007B0235 /* JSNode.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 14DC0D3609FED073007B0235 /* JSNode.h */; settings = {ATTRIBUTES = (); }; }; + 14E0BC56136148A8002AD12E /* JSDOMTokenListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14E0BC55136148A8002AD12E /* JSDOMTokenListCustom.cpp */; }; + 14E8378409F85D1C00B85AE4 /* JSEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14E8378309F85D1C00B85AE4 /* JSEvent.cpp */; }; + 14E8378E09F85D4F00B85AE4 /* JSEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 14E8378D09F85D4F00B85AE4 /* JSEvent.h */; }; + 14FFE31D0AE1963300136BF5 /* HTMLFrameElementBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 14FFE31B0AE1963300136BF5 /* HTMLFrameElementBase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14FFE31E0AE1963300136BF5 /* HTMLFrameElementBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14FFE31C0AE1963300136BF5 /* HTMLFrameElementBase.cpp */; }; + 150B923915F08DC400E10986 /* WebKitCSSArrayFunctionValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 150B923715F08DC400E10986 /* WebKitCSSArrayFunctionValue.cpp */; }; + 150B923A15F08DC400E10986 /* WebKitCSSArrayFunctionValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 150B923815F08DC400E10986 /* WebKitCSSArrayFunctionValue.h */; }; + 15B3FC1915FB217800A81BCB /* CustomFilterArrayParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B3FC1715FB217800A81BCB /* CustomFilterArrayParameter.h */; }; + 15B8B7C81652C5220036EF55 /* JSWebKitCSSMixFunctionValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15B8B7C61652C5220036EF55 /* JSWebKitCSSMixFunctionValue.cpp */; }; + 15B8B7C91652C5220036EF55 /* JSWebKitCSSMixFunctionValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B8B7C71652C5220036EF55 /* JSWebKitCSSMixFunctionValue.h */; }; + 15C7708D100D3C6B005BA267 /* ValidityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 15C7708A100D3C6A005BA267 /* ValidityState.h */; }; + 15C7708E100D3C6B005BA267 /* ValidityState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15C7708B100D3C6A005BA267 /* ValidityState.cpp */; }; + 15C77093100D3CA8005BA267 /* JSValidityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 15C77091100D3CA8005BA267 /* JSValidityState.h */; }; + 15C77094100D3CA8005BA267 /* JSValidityState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15C77092100D3CA8005BA267 /* JSValidityState.cpp */; }; + 15C770A5100D41CD005BA267 /* DOMValidityState.mm in Sources */ = {isa = PBXBuildFile; fileRef = 15C770A3100D41CD005BA267 /* DOMValidityState.mm */; }; + 15C770A6100D41CD005BA267 /* DOMValidityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 15C770A4100D41CD005BA267 /* DOMValidityState.h */; }; + 15D17D21147231EB005EBCA6 /* InspectorFileSystemAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15D17D1E147231EB005EBCA6 /* InspectorFileSystemAgent.cpp */; }; + 15D17D22147231EB005EBCA6 /* InspectorFileSystemAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 15D17D1F147231EB005EBCA6 /* InspectorFileSystemAgent.h */; }; + 163E88F7118A39D200ED9231 /* SimpleFontDataCoreText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 163E88F5118A39D200ED9231 /* SimpleFontDataCoreText.cpp */; }; + 185BCF280F3279CE000EA262 /* ThreadTimers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 185BCF260F3279CE000EA262 /* ThreadTimers.cpp */; }; + 185BCF290F3279CE000EA262 /* ThreadTimers.h in Headers */ = {isa = PBXBuildFile; fileRef = 185BCF270F3279CE000EA262 /* ThreadTimers.h */; }; + 188604B30F2E654A000B6443 /* DOMTimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 188604B10F2E654A000B6443 /* DOMTimer.cpp */; }; + 188604B40F2E654A000B6443 /* DOMTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 188604B20F2E654A000B6443 /* DOMTimer.h */; }; + 18F831B80FD48C7800D8C56B /* WorkerLoaderProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 18F831B70FD48C7800D8C56B /* WorkerLoaderProxy.h */; }; + 1921327411C0E6BB00456238 /* SVGFEConvolveMatrixElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1921327111C0E6BB00456238 /* SVGFEConvolveMatrixElement.cpp */; }; + 1921327511C0E6BB00456238 /* SVGFEConvolveMatrixElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1921327211C0E6BB00456238 /* SVGFEConvolveMatrixElement.h */; }; + 197B180C1506353200E4ADA8 /* SVGRenderingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 197B180B150634C000E4ADA8 /* SVGRenderingContext.h */; }; + 19BFF64E11C0F2AC00B8C04D /* JSSVGFEConvolveMatrixElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 19BFF64911C0F2AC00B8C04D /* JSSVGFEConvolveMatrixElement.cpp */; }; + 19BFF64F11C0F2AC00B8C04D /* JSSVGFEConvolveMatrixElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 19BFF64A11C0F2AC00B8C04D /* JSSVGFEConvolveMatrixElement.h */; }; + 1A0D57360A5C77FE007EDD4C /* OverflowEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0D57340A5C77FE007EDD4C /* OverflowEvent.cpp */; }; + 1A0D57370A5C77FE007EDD4C /* OverflowEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A0D57350A5C77FE007EDD4C /* OverflowEvent.h */; }; + 1A0D57400A5C7867007EDD4C /* JSOverflowEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0D573E0A5C7867007EDD4C /* JSOverflowEvent.cpp */; }; + 1A0D57410A5C7867007EDD4C /* JSOverflowEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A0D573F0A5C7867007EDD4C /* JSOverflowEvent.h */; }; + 1A1414B513A0F0500019996C /* WebKitFontFamilyNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A1414B313A0F0500019996C /* WebKitFontFamilyNames.cpp */; }; + 1A1414B613A0F0500019996C /* WebKitFontFamilyNames.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 1A1414B413A0F0500019996C /* WebKitFontFamilyNames.h */; settings = {ATTRIBUTES = (); }; }; + 1A1D13800A5325520064BF5F /* DOMXPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A1D137E0A5325520064BF5F /* DOMXPath.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A1D13810A5325520064BF5F /* DOMXPath.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A1D137F0A5325520064BF5F /* DOMXPath.mm */; }; + 1A219B3B0DCA87AB0040E3A0 /* npfunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A219B3A0DCA87AB0040E3A0 /* npfunctions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A2246490CC98DDB00C05240 /* SQLiteDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2246430CC98DDB00C05240 /* SQLiteDatabase.cpp */; }; + 1A22464A0CC98DDB00C05240 /* SQLiteDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2246440CC98DDB00C05240 /* SQLiteDatabase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A22464B0CC98DDB00C05240 /* SQLiteStatement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2246450CC98DDB00C05240 /* SQLiteStatement.cpp */; }; + 1A22464C0CC98DDB00C05240 /* SQLiteStatement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2246460CC98DDB00C05240 /* SQLiteStatement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A22464D0CC98DDB00C05240 /* SQLiteTransaction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2246470CC98DDB00C05240 /* SQLiteTransaction.cpp */; }; + 1A22464E0CC98DDB00C05240 /* SQLiteTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2246480CC98DDB00C05240 /* SQLiteTransaction.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A2A68230B5BEDE70002A480 /* ProgressTracker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2A68210B5BEDE70002A480 /* ProgressTracker.cpp */; }; + 1A2A68240B5BEDE70002A480 /* ProgressTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2A68220B5BEDE70002A480 /* ProgressTracker.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A2AAC580DC2A3B100A20D9A /* ApplicationCacheStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2AAC560DC2A3B100A20D9A /* ApplicationCacheStorage.cpp */; }; + 1A2AAC590DC2A3B100A20D9A /* ApplicationCacheStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2AAC570DC2A3B100A20D9A /* ApplicationCacheStorage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A2C40AB0DEB55AA005AF19E /* JSTextCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2C40AA0DEB55AA005AF19E /* JSTextCustom.cpp */; }; + 1A2E6E590CC55213004A2062 /* SQLValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2E6E570CC55213004A2062 /* SQLValue.cpp */; }; + 1A2E6E5A0CC55213004A2062 /* SQLValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2E6E580CC55213004A2062 /* SQLValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A2E6E7A0CC556D5004A2062 /* SQLiteAuthorizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2E6E780CC556D5004A2062 /* SQLiteAuthorizer.cpp */; }; + 1A3586DF15264C450022A659 /* RenderMultiColumnFlowThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3586DD15264C450022A659 /* RenderMultiColumnFlowThread.cpp */; }; + 1A3586E015264C450022A659 /* RenderMultiColumnFlowThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A3586DE15264C450022A659 /* RenderMultiColumnFlowThread.h */; }; + 1A3586E115264F950022A659 /* SVGAnimatedIntegerOptionalInteger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 71E623CE151F72A60036E2F4 /* SVGAnimatedIntegerOptionalInteger.cpp */; }; + 1A3FF9C315265359002288A1 /* RenderNamedFlowThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC85F23E1519187300BC17BE /* RenderNamedFlowThread.cpp */; }; + 1A494BFA0A122F4400FDAFC1 /* JSHTMLElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A494BF80A122F4400FDAFC1 /* JSHTMLElement.cpp */; }; + 1A494BFB0A122F4400FDAFC1 /* JSHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A494BF90A122F4400FDAFC1 /* JSHTMLElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A494E340A12358B00FDAFC1 /* JSHTMLDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A494E320A12358A00FDAFC1 /* JSHTMLDocument.cpp */; }; + 1A494E350A12358B00FDAFC1 /* JSHTMLDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A494E330A12358B00FDAFC1 /* JSHTMLDocument.h */; }; + 1A494EDE0A123F4C00FDAFC1 /* JSDocumentFragment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A494EDC0A123F4C00FDAFC1 /* JSDocumentFragment.cpp */; }; + 1A494EDF0A123F4C00FDAFC1 /* JSDocumentFragment.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A494EDD0A123F4C00FDAFC1 /* JSDocumentFragment.h */; }; + 1A4A2DEF0A1B852A00C807F8 /* JSHTMLAnchorElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A4A2DEB0A1B852A00C807F8 /* JSHTMLAnchorElement.cpp */; }; + 1A4A2DF00A1B852A00C807F8 /* JSHTMLAnchorElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4A2DEC0A1B852A00C807F8 /* JSHTMLAnchorElement.h */; }; + 1A4A2DF10A1B852A00C807F8 /* JSHTMLAppletElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A4A2DED0A1B852A00C807F8 /* JSHTMLAppletElement.cpp */; }; + 1A4A2DF20A1B852A00C807F8 /* JSHTMLAppletElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4A2DEE0A1B852A00C807F8 /* JSHTMLAppletElement.h */; }; + 1A4A954D0B4EDCCB002D8C3C /* SharedBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A4A954B0B4EDCCB002D8C3C /* SharedBuffer.cpp */; }; + 1A4A954E0B4EDCCB002D8C3C /* SharedBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4A954C0B4EDCCB002D8C3C /* SharedBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A4A95520B4EDCFF002D8C3C /* SharedBufferMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A4A95510B4EDCFF002D8C3C /* SharedBufferMac.mm */; }; + 1A569CF70D7E2B82007C3983 /* c_class.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A569CC60D7E2B82007C3983 /* c_class.cpp */; }; + 1A569CF80D7E2B82007C3983 /* c_class.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CC70D7E2B82007C3983 /* c_class.h */; }; + 1A569CF90D7E2B82007C3983 /* c_instance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A569CC80D7E2B82007C3983 /* c_instance.cpp */; }; + 1A569CFA0D7E2B82007C3983 /* c_instance.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CC90D7E2B82007C3983 /* c_instance.h */; }; + 1A569CFB0D7E2B82007C3983 /* c_runtime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A569CCA0D7E2B82007C3983 /* c_runtime.cpp */; }; + 1A569CFC0D7E2B82007C3983 /* c_runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CCB0D7E2B82007C3983 /* c_runtime.h */; }; + 1A569CFD0D7E2B82007C3983 /* c_utility.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A569CCC0D7E2B82007C3983 /* c_utility.cpp */; }; + 1A569CFE0D7E2B82007C3983 /* c_utility.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CCD0D7E2B82007C3983 /* c_utility.h */; }; + 1A569D0A0D7E2B82007C3983 /* NP_jsobject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A569CDA0D7E2B82007C3983 /* NP_jsobject.cpp */; }; + 1A569D0B0D7E2B82007C3983 /* NP_jsobject.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CDB0D7E2B82007C3983 /* NP_jsobject.h */; }; + 1A569D0D0D7E2B82007C3983 /* npruntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A569CDD0D7E2B82007C3983 /* npruntime.cpp */; }; + 1A569D0F0D7E2B82007C3983 /* npruntime_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CDF0D7E2B82007C3983 /* npruntime_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A569D100D7E2B82007C3983 /* npruntime_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CE00D7E2B82007C3983 /* npruntime_internal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A569D110D7E2B82007C3983 /* npruntime_priv.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CE10D7E2B82007C3983 /* npruntime_priv.h */; }; + 1A569D120D7E2B82007C3983 /* objc_class.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CE30D7E2B82007C3983 /* objc_class.h */; }; + 1A569D130D7E2B82007C3983 /* objc_class.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A569CE40D7E2B82007C3983 /* objc_class.mm */; }; + 1A569D140D7E2B82007C3983 /* objc_header.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CE50D7E2B82007C3983 /* objc_header.h */; }; + 1A569D150D7E2B82007C3983 /* objc_instance.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CE60D7E2B82007C3983 /* objc_instance.h */; }; + 1A569D160D7E2B82007C3983 /* objc_instance.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A569CE70D7E2B82007C3983 /* objc_instance.mm */; }; + 1A569D170D7E2B82007C3983 /* objc_runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CE80D7E2B82007C3983 /* objc_runtime.h */; }; + 1A569D180D7E2B82007C3983 /* objc_runtime.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A569CE90D7E2B82007C3983 /* objc_runtime.mm */; }; + 1A569D190D7E2B82007C3983 /* objc_utility.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CEA0D7E2B82007C3983 /* objc_utility.h */; }; + 1A569D1A0D7E2B82007C3983 /* objc_utility.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A569CEB0D7E2B82007C3983 /* objc_utility.mm */; }; + 1A569D1B0D7E2B82007C3983 /* WebScriptObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CEC0D7E2B82007C3983 /* WebScriptObject.h */; }; + 1A569D1E0D7E2B82007C3983 /* runtime_array.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A569CEF0D7E2B82007C3983 /* runtime_array.cpp */; }; + 1A569D1F0D7E2B82007C3983 /* runtime_array.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CF00D7E2B82007C3983 /* runtime_array.h */; }; + 1A569D200D7E2B82007C3983 /* runtime_method.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A569CF10D7E2B82007C3983 /* runtime_method.cpp */; }; + 1A569D210D7E2B82007C3983 /* runtime_method.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CF20D7E2B82007C3983 /* runtime_method.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A569D220D7E2B82007C3983 /* runtime_object.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A569CF30D7E2B82007C3983 /* runtime_object.cpp */; }; + 1A569D230D7E2B82007C3983 /* runtime_object.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CF40D7E2B82007C3983 /* runtime_object.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A569D240D7E2B82007C3983 /* runtime_root.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A569CF50D7E2B82007C3983 /* runtime_root.cpp */; }; + 1A569D250D7E2B82007C3983 /* runtime_root.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A569CF60D7E2B82007C3983 /* runtime_root.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A71D57B0F33819000F9CE4E /* IdentifierRep.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A71D5790F33819000F9CE4E /* IdentifierRep.cpp */; }; + 1A71D57C0F33819000F9CE4E /* IdentifierRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A71D57A0F33819000F9CE4E /* IdentifierRep.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A750D5C0A90DEE1000FF215 /* JSTreeWalker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A750D5A0A90DEE1000FF215 /* JSTreeWalker.cpp */; }; + 1A750D5D0A90DEE1000FF215 /* JSTreeWalker.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A750D5B0A90DEE1000FF215 /* JSTreeWalker.h */; }; + 1A750D8D0A90E521000FF215 /* JSNodeIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A750D8B0A90E521000FF215 /* JSNodeIterator.cpp */; }; + 1A750D8E0A90E521000FF215 /* JSNodeIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A750D8C0A90E521000FF215 /* JSNodeIterator.h */; }; + 1A750DD40A90E729000FF215 /* JSNodeIteratorCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A750DD30A90E729000FF215 /* JSNodeIteratorCustom.cpp */; }; + 1A7629D50A07425100989F5B /* XPathGrammar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A7629D30A07425100989F5B /* XPathGrammar.cpp */; }; + 1A7629D60A07425100989F5B /* XPathGrammar.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A7629D40A07425100989F5B /* XPathGrammar.h */; }; + 1A762C730A074F2600989F5B /* JSXPathEvaluator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A762C6B0A074F2600989F5B /* JSXPathEvaluator.cpp */; }; + 1A762C740A074F2600989F5B /* JSXPathEvaluator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A762C6C0A074F2600989F5B /* JSXPathEvaluator.h */; }; + 1A762C750A074F2600989F5B /* JSXPathExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A762C6D0A074F2600989F5B /* JSXPathExpression.cpp */; }; + 1A762C760A074F2600989F5B /* JSXPathExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A762C6E0A074F2600989F5B /* JSXPathExpression.h */; }; + 1A762C770A074F2600989F5B /* JSXPathNSResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A762C6F0A074F2600989F5B /* JSXPathNSResolver.cpp */; }; + 1A762C780A074F2600989F5B /* JSXPathNSResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A762C700A074F2600989F5B /* JSXPathNSResolver.h */; }; + 1A762C790A074F2600989F5B /* JSXPathResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A762C710A074F2600989F5B /* JSXPathResult.cpp */; }; + 1A762C7A0A074F2600989F5B /* JSXPathResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A762C720A074F2600989F5B /* JSXPathResult.h */; }; + 1A7E3C291710997300367935 /* ThreadableLoaderClientWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A7E3C281710997300367935 /* ThreadableLoaderClientWrapper.h */; }; + 1A7FA6190DDA3B3A0028F8A5 /* NetworkStateNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A7FA6180DDA3B3A0028F8A5 /* NetworkStateNotifier.h */; }; + 1A7FA61B0DDA3BBE0028F8A5 /* NetworkStateNotifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A7FA61A0DDA3BBE0028F8A5 /* NetworkStateNotifier.cpp */; }; + 1A7FA6490DDA3CBA0028F8A5 /* NetworkStateNotifierMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A7FA6470DDA3CBA0028F8A5 /* NetworkStateNotifierMac.cpp */; }; + 1A7FA7CC0DDA4B770028F8A5 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A7FA7CB0DDA4B770028F8A5 /* SystemConfiguration.framework */; }; + 1A85B18F0A1B18A200D8C87C /* JSHTMLHtmlElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A85B18D0A1B18A200D8C87C /* JSHTMLHtmlElement.cpp */; }; + 1A85B1900A1B18A200D8C87C /* JSHTMLHtmlElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A85B18E0A1B18A200D8C87C /* JSHTMLHtmlElement.h */; }; + 1A85B1E60A1B240500D8C87C /* JSHTMLDirectoryElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A85B1E00A1B240500D8C87C /* JSHTMLDirectoryElement.cpp */; }; + 1A85B1E70A1B240500D8C87C /* JSHTMLDirectoryElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A85B1E10A1B240500D8C87C /* JSHTMLDirectoryElement.h */; }; + 1A85B1E80A1B240500D8C87C /* JSHTMLDListElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A85B1E20A1B240500D8C87C /* JSHTMLDListElement.cpp */; }; + 1A85B1E90A1B240500D8C87C /* JSHTMLDListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A85B1E30A1B240500D8C87C /* JSHTMLDListElement.h */; }; + 1A85B1EA0A1B240500D8C87C /* JSHTMLOListElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A85B1E40A1B240500D8C87C /* JSHTMLOListElement.cpp */; }; + 1A85B1EB0A1B240500D8C87C /* JSHTMLOListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A85B1E50A1B240500D8C87C /* JSHTMLOListElement.h */; }; + 1A85B2100A1B258700D8C87C /* JSHTMLUListElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A85B20E0A1B258700D8C87C /* JSHTMLUListElement.cpp */; }; + 1A85B2110A1B258700D8C87C /* JSHTMLUListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A85B20F0A1B258700D8C87C /* JSHTMLUListElement.h */; }; + 1A85B2B60A1B2AC700D8C87C /* JSHTMLDivElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A85B2B40A1B2AC700D8C87C /* JSHTMLDivElement.cpp */; }; + 1A85B2B70A1B2AC700D8C87C /* JSHTMLDivElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A85B2B50A1B2AC700D8C87C /* JSHTMLDivElement.h */; }; + 1A88A90417553CD7000C74F9 /* FileIconLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A88A90217553CD7000C74F9 /* FileIconLoader.cpp */; }; + 1A88A90517553CD7000C74F9 /* FileIconLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A88A90317553CD7000C74F9 /* FileIconLoader.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A8F6B020DB53006001DB794 /* SubstituteResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8F6B010DB53006001DB794 /* SubstituteResource.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A8F6BBC0DB55CDC001DB794 /* ApplicationCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A8F6BB10DB55CDC001DB794 /* ApplicationCache.cpp */; }; + 1A8F6BBD0DB55CDC001DB794 /* ApplicationCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8F6BB20DB55CDC001DB794 /* ApplicationCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A8F6BBE0DB55CDC001DB794 /* ApplicationCacheGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A8F6BB30DB55CDC001DB794 /* ApplicationCacheGroup.cpp */; }; + 1A8F6BBF0DB55CDC001DB794 /* ApplicationCacheGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8F6BB40DB55CDC001DB794 /* ApplicationCacheGroup.h */; settings = {ATTRIBUTES = (); }; }; + 1A8F6BC00DB55CDC001DB794 /* ApplicationCacheResource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A8F6BB50DB55CDC001DB794 /* ApplicationCacheResource.cpp */; }; + 1A8F6BC10DB55CDC001DB794 /* ApplicationCacheResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8F6BB60DB55CDC001DB794 /* ApplicationCacheResource.h */; }; + 1A8F6BC20DB55CDC001DB794 /* DOMApplicationCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A8F6BB70DB55CDC001DB794 /* DOMApplicationCache.cpp */; }; + 1A8F6BC30DB55CDC001DB794 /* DOMApplicationCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8F6BB80DB55CDC001DB794 /* DOMApplicationCache.h */; settings = {ATTRIBUTES = (); }; }; + 1A8F6BC50DB55CDC001DB794 /* ManifestParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A8F6BBA0DB55CDC001DB794 /* ManifestParser.cpp */; }; + 1A8F6BC60DB55CDC001DB794 /* ManifestParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8F6BBB0DB55CDC001DB794 /* ManifestParser.h */; }; + 1A927FD21416A15B003A83C8 /* npapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A927FCF1416A15B003A83C8 /* npapi.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A927FD31416A15B003A83C8 /* npruntime.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A927FD01416A15B003A83C8 /* npruntime.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A927FD41416A15B003A83C8 /* nptypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A927FD11416A15B003A83C8 /* nptypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A98956B0AA78F80005EF5EF /* KURLCFNet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A98956A0AA78F80005EF5EF /* KURLCFNet.cpp */; }; + 1AA21250163F0DA80000E63F /* AtomicStringCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AA2124F163F0DA80000E63F /* AtomicStringCF.cpp */; }; + 1AA7160A149BC4DB0016EC19 /* TileController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AA71608149BC4DA0016EC19 /* TileController.mm */; }; + 1AA7160B149BC4DB0016EC19 /* TileController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AA71609149BC4DB0016EC19 /* TileController.h */; }; + 1AA7161E149BF2FA0016EC19 /* WebTileLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AA7161C149BF2FA0016EC19 /* WebTileLayer.mm */; }; + 1AA84F04143BA7BD0051D153 /* ScrollElasticityController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AA84F02143BA7BD0051D153 /* ScrollElasticityController.mm */; }; + 1AA84F05143BA7BD0051D153 /* ScrollElasticityController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AA84F03143BA7BD0051D153 /* ScrollElasticityController.h */; }; + 1AA8799011CBE846003C664F /* PluginStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AA8798F11CBE846003C664F /* PluginStrategy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AAADDA314DB409F00AF64B3 /* ScrollingTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AAADDA114DB409F00AF64B3 /* ScrollingTree.cpp */; }; + 1AAADDA414DB409F00AF64B3 /* ScrollingTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AAADDA214DB409F00AF64B3 /* ScrollingTree.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AAADDE314DC8C8F00AF64B3 /* ScrollingTreeNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AAADDE114DC8C8F00AF64B3 /* ScrollingTreeNode.cpp */; }; + 1AAADDE414DC8C8F00AF64B3 /* ScrollingTreeNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AAADDE214DC8C8F00AF64B3 /* ScrollingTreeNode.h */; }; + 1AB09DB416AF5F6C008538E7 /* StorageStrategy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB09DB216AF5F6C008538E7 /* StorageStrategy.cpp */; }; + 1AB09DB516AF5F6C008538E7 /* StorageStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB09DB316AF5F6C008538E7 /* StorageStrategy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AB1AE7A0C051FDE00139F4F /* zoomInCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AB1AE780C051FDE00139F4F /* zoomInCursor.png */; }; + 1AB1AE7B0C051FDE00139F4F /* zoomOutCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AB1AE790C051FDE00139F4F /* zoomOutCursor.png */; }; + 1AB33DA512551E320024457A /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AB33DA412551E320024457A /* IOKit.framework */; }; + 1AB7FC680A8B92EC00D9D37B /* XPathEvaluator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7FC470A8B92EC00D9D37B /* XPathEvaluator.cpp */; }; + 1AB7FC690A8B92EC00D9D37B /* XPathEvaluator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7FC480A8B92EC00D9D37B /* XPathEvaluator.h */; }; + 1AB7FC6B0A8B92EC00D9D37B /* XPathExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7FC4A0A8B92EC00D9D37B /* XPathExpression.cpp */; }; + 1AB7FC6C0A8B92EC00D9D37B /* XPathExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7FC4B0A8B92EC00D9D37B /* XPathExpression.h */; }; + 1AB7FC6E0A8B92EC00D9D37B /* XPathExpressionNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7FC4D0A8B92EC00D9D37B /* XPathExpressionNode.cpp */; }; + 1AB7FC6F0A8B92EC00D9D37B /* XPathExpressionNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7FC4E0A8B92EC00D9D37B /* XPathExpressionNode.h */; }; + 1AB7FC700A8B92EC00D9D37B /* XPathFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7FC4F0A8B92EC00D9D37B /* XPathFunctions.cpp */; }; + 1AB7FC710A8B92EC00D9D37B /* XPathFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7FC500A8B92EC00D9D37B /* XPathFunctions.h */; }; + 1AB7FC750A8B92EC00D9D37B /* XPathNSResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7FC540A8B92EC00D9D37B /* XPathNSResolver.cpp */; }; + 1AB7FC760A8B92EC00D9D37B /* XPathNSResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7FC550A8B92EC00D9D37B /* XPathNSResolver.h */; }; + 1AB7FC780A8B92EC00D9D37B /* XPathParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7FC570A8B92EC00D9D37B /* XPathParser.cpp */; }; + 1AB7FC790A8B92EC00D9D37B /* XPathParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7FC580A8B92EC00D9D37B /* XPathParser.h */; }; + 1AB7FC7A0A8B92EC00D9D37B /* XPathPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7FC590A8B92EC00D9D37B /* XPathPath.cpp */; }; + 1AB7FC7B0A8B92EC00D9D37B /* XPathPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7FC5A0A8B92EC00D9D37B /* XPathPath.h */; }; + 1AB7FC7C0A8B92EC00D9D37B /* XPathPredicate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7FC5B0A8B92EC00D9D37B /* XPathPredicate.cpp */; }; + 1AB7FC7D0A8B92EC00D9D37B /* XPathPredicate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7FC5C0A8B92EC00D9D37B /* XPathPredicate.h */; }; + 1AB7FC7E0A8B92EC00D9D37B /* XPathResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7FC5D0A8B92EC00D9D37B /* XPathResult.cpp */; }; + 1AB7FC7F0A8B92EC00D9D37B /* XPathResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7FC5E0A8B92EC00D9D37B /* XPathResult.h */; }; + 1AB7FC810A8B92EC00D9D37B /* XPathStep.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7FC600A8B92EC00D9D37B /* XPathStep.cpp */; }; + 1AB7FC820A8B92EC00D9D37B /* XPathStep.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7FC610A8B92EC00D9D37B /* XPathStep.h */; }; + 1AB7FC830A8B92EC00D9D37B /* XPathUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7FC620A8B92EC00D9D37B /* XPathUtil.cpp */; }; + 1AB7FC840A8B92EC00D9D37B /* XPathUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7FC630A8B92EC00D9D37B /* XPathUtil.h */; }; + 1AB7FC850A8B92EC00D9D37B /* XPathValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7FC640A8B92EC00D9D37B /* XPathValue.cpp */; }; + 1AB7FC860A8B92EC00D9D37B /* XPathValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7FC650A8B92EC00D9D37B /* XPathValue.h */; }; + 1AB7FC870A8B92EC00D9D37B /* XPathVariableReference.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7FC660A8B92EC00D9D37B /* XPathVariableReference.cpp */; }; + 1AB7FC880A8B92EC00D9D37B /* XPathVariableReference.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7FC670A8B92EC00D9D37B /* XPathVariableReference.h */; }; + 1ABA76C911D20E47004C201C /* ColorData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E406F3FB1198307D009D59D6 /* ColorData.cpp */; }; + 1ABA76CA11D20E50004C201C /* CSSPropertyNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E41EA038119836DB00710BC5 /* CSSPropertyNames.cpp */; }; + 1ABA76CB11D20E57004C201C /* CSSValueKeywords.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E41EA0391198374900710BC5 /* CSSValueKeywords.cpp */; }; + 1ABC7109170E5E1B00F9A9D6 /* WorkerNavigatorStorageQuota.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ABC7108170E5E1B00F9A9D6 /* WorkerNavigatorStorageQuota.h */; }; + 1AC2260C0DB69F190089B669 /* JSDOMApplicationCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AC2260A0DB69F190089B669 /* JSDOMApplicationCache.cpp */; }; + 1AC2260D0DB69F190089B669 /* JSDOMApplicationCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AC2260B0DB69F190089B669 /* JSDOMApplicationCache.h */; }; + 1AC2D845171734A100652FC0 /* Storage.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E3F9C40DA059DC00250911 /* Storage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AC69593161A1E53003732CB /* GraphicsLayerFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AC69592161A1E53003732CB /* GraphicsLayerFactory.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1ACD1B630B029739007E5016 /* DOMCSSStyleDeclarationInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85E711440AC5D5340053270F /* DOMCSSStyleDeclarationInternal.h */; }; + 1ACE53DF0A8D18810022947D /* JSDOMParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACE53DD0A8D18810022947D /* JSDOMParser.cpp */; }; + 1ACE53E00A8D18810022947D /* JSDOMParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACE53DE0A8D18810022947D /* JSDOMParser.h */; }; + 1ACE53E70A8D18E70022947D /* DOMParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACE53E10A8D18E70022947D /* DOMParser.cpp */; }; + 1ACE53E80A8D18E70022947D /* DOMParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACE53E20A8D18E70022947D /* DOMParser.h */; }; + 1ACE53EA0A8D18E70022947D /* XMLSerializer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACE53E40A8D18E70022947D /* XMLSerializer.cpp */; }; + 1ACE53EB0A8D18E70022947D /* XMLSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACE53E50A8D18E70022947D /* XMLSerializer.h */; }; + 1ACE53F60A8D19470022947D /* JSXMLSerializer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACE53F40A8D19470022947D /* JSXMLSerializer.cpp */; }; + 1ACE53F70A8D19470022947D /* JSXMLSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACE53F50A8D19470022947D /* JSXMLSerializer.h */; }; + 1AD2316E0CD269E700C1F194 /* JSSQLTransactionCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD2316D0CD269E700C1F194 /* JSSQLTransactionCustom.cpp */; }; + 1AD8F81B11CAB9E900E93E54 /* PlatformStrategies.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD8F81911CAB9E900E93E54 /* PlatformStrategies.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AD8F81C11CAB9E900E93E54 /* PlatformStrategies.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD8F81A11CAB9E900E93E54 /* PlatformStrategies.cpp */; }; + 1ADA14100E1AE5D900023EE5 /* PluginMainThreadScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ADA140E0E1AE5D900023EE5 /* PluginMainThreadScheduler.cpp */; }; + 1ADA14110E1AE5D900023EE5 /* PluginMainThreadScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ADA140F0E1AE5D900023EE5 /* PluginMainThreadScheduler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AE2AA1E0A1CDAB400B42B25 /* JSHTMLAreaElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AA0A0A1CDAB300B42B25 /* JSHTMLAreaElement.cpp */; }; + 1AE2AA1F0A1CDAB400B42B25 /* JSHTMLAreaElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AA0B0A1CDAB300B42B25 /* JSHTMLAreaElement.h */; }; + 1AE2AA200A1CDAB400B42B25 /* JSHTMLBaseFontElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AA0C0A1CDAB300B42B25 /* JSHTMLBaseFontElement.cpp */; }; + 1AE2AA210A1CDAB400B42B25 /* JSHTMLBaseFontElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AA0D0A1CDAB300B42B25 /* JSHTMLBaseFontElement.h */; }; + 1AE2AA220A1CDAB400B42B25 /* JSHTMLBodyElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AA0E0A1CDAB300B42B25 /* JSHTMLBodyElement.cpp */; }; + 1AE2AA230A1CDAB400B42B25 /* JSHTMLBodyElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AA0F0A1CDAB300B42B25 /* JSHTMLBodyElement.h */; }; + 1AE2AA240A1CDAB400B42B25 /* JSHTMLBRElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AA100A1CDAB300B42B25 /* JSHTMLBRElement.cpp */; }; + 1AE2AA250A1CDAB400B42B25 /* JSHTMLBRElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AA110A1CDAB300B42B25 /* JSHTMLBRElement.h */; }; + 1AE2AA260A1CDAB400B42B25 /* JSHTMLFieldSetElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AA120A1CDAB300B42B25 /* JSHTMLFieldSetElement.cpp */; }; + 1AE2AA270A1CDAB400B42B25 /* JSHTMLFieldSetElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AA130A1CDAB300B42B25 /* JSHTMLFieldSetElement.h */; }; + 1AE2AA280A1CDAB400B42B25 /* JSHTMLFontElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AA140A1CDAB300B42B25 /* JSHTMLFontElement.cpp */; }; + 1AE2AA290A1CDAB400B42B25 /* JSHTMLFontElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AA150A1CDAB300B42B25 /* JSHTMLFontElement.h */; }; + 1AE2AA2E0A1CDAB400B42B25 /* JSHTMLHeadingElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AA1A0A1CDAB400B42B25 /* JSHTMLHeadingElement.cpp */; }; + 1AE2AA2F0A1CDAB400B42B25 /* JSHTMLHeadingElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AA1B0A1CDAB400B42B25 /* JSHTMLHeadingElement.h */; }; + 1AE2AA300A1CDAB400B42B25 /* JSHTMLHRElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AA1C0A1CDAB400B42B25 /* JSHTMLHRElement.cpp */; }; + 1AE2AA310A1CDAB400B42B25 /* JSHTMLHRElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AA1D0A1CDAB400B42B25 /* JSHTMLHRElement.h */; }; + 1AE2AA970A1CDD2D00B42B25 /* JSHTMLImageElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AA930A1CDD2D00B42B25 /* JSHTMLImageElement.cpp */; }; + 1AE2AA980A1CDD2D00B42B25 /* JSHTMLImageElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AA940A1CDD2D00B42B25 /* JSHTMLImageElement.h */; }; + 1AE2AB210A1CE63B00B42B25 /* JSHTMLLabelElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AB170A1CE63B00B42B25 /* JSHTMLLabelElement.cpp */; }; + 1AE2AB220A1CE63B00B42B25 /* JSHTMLLabelElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AB180A1CE63B00B42B25 /* JSHTMLLabelElement.h */; }; + 1AE2AB230A1CE63B00B42B25 /* JSHTMLLegendElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AB190A1CE63B00B42B25 /* JSHTMLLegendElement.cpp */; }; + 1AE2AB240A1CE63B00B42B25 /* JSHTMLLegendElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AB1A0A1CE63B00B42B25 /* JSHTMLLegendElement.h */; }; + 1AE2AB250A1CE63B00B42B25 /* JSHTMLLIElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AB1B0A1CE63B00B42B25 /* JSHTMLLIElement.cpp */; }; + 1AE2AB260A1CE63B00B42B25 /* JSHTMLLIElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AB1C0A1CE63B00B42B25 /* JSHTMLLIElement.h */; }; + 1AE2AB270A1CE63B00B42B25 /* JSHTMLMapElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AB1D0A1CE63B00B42B25 /* JSHTMLMapElement.cpp */; }; + 1AE2AB280A1CE63B00B42B25 /* JSHTMLMapElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AB1E0A1CE63B00B42B25 /* JSHTMLMapElement.h */; }; + 1AE2AB290A1CE63B00B42B25 /* JSHTMLModElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AB1F0A1CE63B00B42B25 /* JSHTMLModElement.cpp */; }; + 1AE2AB2A0A1CE63B00B42B25 /* JSHTMLModElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AB200A1CE63B00B42B25 /* JSHTMLModElement.h */; }; + 1AE2ABA60A1CE90500B42B25 /* JSHTMLParagraphElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AB9E0A1CE90500B42B25 /* JSHTMLParagraphElement.cpp */; }; + 1AE2ABA70A1CE90500B42B25 /* JSHTMLParagraphElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AB9F0A1CE90500B42B25 /* JSHTMLParagraphElement.h */; }; + 1AE2ABA80A1CE90500B42B25 /* JSHTMLParamElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2ABA00A1CE90500B42B25 /* JSHTMLParamElement.cpp */; }; + 1AE2ABA90A1CE90500B42B25 /* JSHTMLParamElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2ABA10A1CE90500B42B25 /* JSHTMLParamElement.h */; }; + 1AE2ABAA0A1CE90500B42B25 /* JSHTMLPreElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2ABA20A1CE90500B42B25 /* JSHTMLPreElement.cpp */; }; + 1AE2ABAB0A1CE90500B42B25 /* JSHTMLPreElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2ABA30A1CE90500B42B25 /* JSHTMLPreElement.h */; }; + 1AE2ABAC0A1CE90500B42B25 /* JSHTMLScriptElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2ABA40A1CE90500B42B25 /* JSHTMLScriptElement.cpp */; }; + 1AE2ABAD0A1CE90500B42B25 /* JSHTMLScriptElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2ABA50A1CE90500B42B25 /* JSHTMLScriptElement.h */; }; + 1AE2AE5B0A1D26F200B42B25 /* JSHTMLMenuElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AE590A1D26F200B42B25 /* JSHTMLMenuElement.cpp */; }; + 1AE2AE5C0A1D26F200B42B25 /* JSHTMLMenuElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AE5A0A1D26F200B42B25 /* JSHTMLMenuElement.h */; }; + 1AE2AEC70A1D297B00B42B25 /* JSHTMLQuoteElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AEC30A1D297B00B42B25 /* JSHTMLQuoteElement.cpp */; }; + 1AE2AEC80A1D297B00B42B25 /* JSHTMLQuoteElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AEC40A1D297B00B42B25 /* JSHTMLQuoteElement.h */; }; + 1AE82F8F0CAAFA9D002237AE /* JSDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE82F8D0CAAFA9D002237AE /* JSDatabase.cpp */; }; + 1AE82F900CAAFA9D002237AE /* JSDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE82F8E0CAAFA9D002237AE /* JSDatabase.h */; }; + 1AE82FEC0CAB07EE002237AE /* JSSQLResultSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE82FEA0CAB07EE002237AE /* JSSQLResultSet.cpp */; }; + 1AE82FED0CAB07EE002237AE /* JSSQLResultSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE82FEB0CAB07EE002237AE /* JSSQLResultSet.h */; }; + 1AEF4E67170E160300AB2799 /* CachedFontClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AEF4E66170E160300AB2799 /* CachedFontClient.h */; }; + 1AEF4E69170E174800AB2799 /* CachedSVGDocumentClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AEF4E68170E174800AB2799 /* CachedSVGDocumentClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AF326790D78B9440068F0C4 /* EditorClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF326770D78B9440068F0C4 /* EditorClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AF62EE614DA22A70041556C /* ScrollingCoordinatorMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AF62EE314DA22A70041556C /* ScrollingCoordinatorMac.mm */; }; + 1AF62EE714DA22A70041556C /* ScrollingCoordinator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AF62EE414DA22A70041556C /* ScrollingCoordinator.cpp */; }; + 1AF62EE814DA22A70041556C /* ScrollingCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF62EE514DA22A70041556C /* ScrollingCoordinator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AF62F2414DAFE910041556C /* ScrollingThreadMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AF62F2314DAFE910041556C /* ScrollingThreadMac.mm */; }; + 1AF62F2514DAFE9E0041556C /* ScrollingThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AF62F2014DAFE790041556C /* ScrollingThread.cpp */; }; + 1AF62F2614DAFEA10041556C /* ScrollingThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF62F2114DAFE790041556C /* ScrollingThread.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AF89A421518FDEA00E547B5 /* TiledBacking.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF89A411518FDEA00E547B5 /* TiledBacking.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AF8E11A1256592600230FF7 /* ProxyServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF8E1191256592600230FF7 /* ProxyServer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AF8E13312565A4400230FF7 /* ProxyServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AF8E13212565A4400230FF7 /* ProxyServer.cpp */; }; + 1AF8E1C3125673E000230FF7 /* ProxyServerCFNet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AF8E1C1125673E000230FF7 /* ProxyServerCFNet.cpp */; }; + 1AFE11990CBFFCC4003017FA /* JSSQLResultSetRowList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AFE11970CBFFCC4003017FA /* JSSQLResultSetRowList.cpp */; }; + 1AFE119A0CBFFCC4003017FA /* JSSQLResultSetRowList.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AFE11980CBFFCC4003017FA /* JSSQLResultSetRowList.h */; }; + 1C11CCB50AA6093700DADB20 /* DOMNotation.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85CA96E80A9624E900690CCF /* DOMNotation.h */; }; + 1C11CCB60AA6093700DADB20 /* DOMComment.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85089CD10A98C42700A275AA /* DOMComment.h */; }; + 1C11CCB70AA6093700DADB20 /* DOMNamedNodeMap.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 8518DD760A9CF31B0091B7A6 /* DOMNamedNodeMap.h */; }; + 1C11CCB80AA6093700DADB20 /* DOMHTMLOptionsCollection.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF2F990AA3CAE500AD64C5 /* DOMHTMLOptionsCollection.h */; }; + 1C11CCB90AA6093700DADB20 /* DOMEntityReference.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85089CD50A98C42800A275AA /* DOMEntityReference.h */; }; + 1C11CCBA0AA6093700DADB20 /* DOMHTMLCollection.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF2F8C0AA3C88100AD64C5 /* DOMHTMLCollection.h */; }; + 1C11CCBB0AA6093700DADB20 /* DOMHTMLFormElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF2C100AA341F600AD64C5 /* DOMHTMLFormElement.h */; }; + 1C11CCBC0AA6093700DADB20 /* DOMAttr.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85D389B00A991A7F00282145 /* DOMAttr.h */; }; + 1C11CCBD0AA6093700DADB20 /* DOMDocument.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85ACABAE0A9CAF8000671E90 /* DOMDocument.h */; }; + 1C11CCBE0AA6093700DADB20 /* DOMNodeList.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85ACAA890A9B759C00671E90 /* DOMNodeList.h */; }; + 1C11CCBF0AA6093700DADB20 /* DOMEntity.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85CA96B60A9621A600690CCF /* DOMEntity.h */; }; + 1C11CCC00AA6093700DADB20 /* DOMDocumentType.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85CA975A0A962E5400690CCF /* DOMDocumentType.h */; }; + 1C11CCC10AA6093700DADB20 /* DOMDOMImplementation.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 8518DCE70A9CC80C0091B7A6 /* DOMDOMImplementation.h */; }; + 1C11CCC20AA6093700DADB20 /* DOMText.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85ACA99A0A9B575900671E90 /* DOMText.h */; }; + 1C11CCC30AA6093700DADB20 /* DOMProcessingInstruction.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85F56A780A98CE3700ADB60A /* DOMProcessingInstruction.h */; }; + 1C11CCC40AA6093700DADB20 /* DOMElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85ACA9BE0A9B5FA500671E90 /* DOMElement.h */; }; + 1C11CCC50AA6093700DADB20 /* DOMCharacterData.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85ACA9840A9B520300671E90 /* DOMCharacterData.h */; }; + 1C11CCC60AA6093700DADB20 /* DOMDocumentFragment.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85089CD30A98C42800A275AA /* DOMDocumentFragment.h */; }; + 1C11CCC70AA6093700DADB20 /* DOMCDATASection.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85089CCF0A98C42700A275AA /* DOMCDATASection.h */; }; + 1C11CCC80AA6093700DADB20 /* DOMHTMLElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF2EEB0AA387CB00AD64C5 /* DOMHTMLElement.h */; }; + 1C26497A0D7E248A00BD10F2 /* DocumentLoaderMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C2649790D7E248A00BD10F2 /* DocumentLoaderMac.cpp */; }; + 1C26497C0D7E24EC00BD10F2 /* PageMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C26497B0D7E24EC00BD10F2 /* PageMac.cpp */; }; + 1C4C8F020AD85D87009475CE /* DeleteButtonController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C4C8F000AD85D87009475CE /* DeleteButtonController.h */; }; + 1C4C8F660AD8655D009475CE /* DeleteButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C4C8F640AD8655D009475CE /* DeleteButton.h */; }; + 1C5FAED10DCFD90100D58F78 /* JSJavaScriptCallFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C5FAECF0DCFD90100D58F78 /* JSJavaScriptCallFrame.cpp */; }; + 1C5FAED20DCFD90100D58F78 /* JSJavaScriptCallFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C5FAED00DCFD90100D58F78 /* JSJavaScriptCallFrame.h */; }; + 1C5FAEE70DCFDA6800D58F78 /* JSJavaScriptCallFrameCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C5FAEE60DCFDA6800D58F78 /* JSJavaScriptCallFrameCustom.cpp */; }; + 1C81B95A0E97330800266E07 /* InspectorController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C81B9560E97330800266E07 /* InspectorController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1C81B95B0E97330800266E07 /* InspectorController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C81B9570E97330800266E07 /* InspectorController.cpp */; }; + 1C81B95C0E97330800266E07 /* InspectorClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C81B9580E97330800266E07 /* InspectorClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1C81BA090E97348300266E07 /* JavaScriptCallFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C81BA030E97348300266E07 /* JavaScriptCallFrame.cpp */; }; + 1C81BA0A0E97348300266E07 /* JavaScriptCallFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C81BA040E97348300266E07 /* JavaScriptCallFrame.h */; }; + 1CA19E050DC255950065A994 /* EventLoopMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CA19E030DC255950065A994 /* EventLoopMac.mm */; }; + 1CA19E160DC255CA0065A994 /* EventLoop.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CA19E150DC255CA0065A994 /* EventLoop.h */; }; + 1CAF34810A6C405200ABE06E /* WebScriptObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CAF347E0A6C405200ABE06E /* WebScriptObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1CAF34820A6C405200ABE06E /* WebScriptObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CAF347F0A6C405200ABE06E /* WebScriptObject.mm */; }; + 1CAF34830A6C405200ABE06E /* WebScriptObjectPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CAF34800A6C405200ABE06E /* WebScriptObjectPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1CB4214A0AF2B2CA0085AD91 /* DOMDocumentInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85E711460AC5D5340053270F /* DOMDocumentInternal.h */; }; + 1CB4214B0AF2B2CA0085AD91 /* DOMElementInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85E711490AC5D5340053270F /* DOMElementInternal.h */; }; + 1CB4214C0AF2B2CA0085AD91 /* DOMHTMLElementInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85E711580AC5D5340053270F /* DOMHTMLElementInternal.h */; }; + 1CB4214D0AF2B2CA0085AD91 /* DOMRangeInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 8538F05A0AD722F1006A81D1 /* DOMRangeInternal.h */; }; + 1CCA732210ADD44A00FD440D /* DOMHTMLInputElementPrivate.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 1CCA732110ADD43E00FD440D /* DOMHTMLInputElementPrivate.h */; }; + 1CDC14050DD3934C006EACD3 /* localizedStrings.js in Resources */ = {isa = PBXBuildFile; fileRef = BCC64F5F0DCFB84E0081EF3B /* localizedStrings.js */; }; + 1CE83AC30ADAFFD7009354F6 /* DeleteButtonController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C4C8EFF0AD85D87009475CE /* DeleteButtonController.cpp */; }; + 1CE83AC40ADAFFD8009354F6 /* DeleteButton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C4C8F630AD8655D009475CE /* DeleteButton.cpp */; }; + 1CF6BDFA0E9BB26A0025E1CD /* ObjCEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CF6BDF80E9BB26A0025E1CD /* ObjCEventListener.h */; }; + 1CF6BDFB0E9BB26A0025E1CD /* ObjCEventListener.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CF6BDF90E9BB26A0025E1CD /* ObjCEventListener.mm */; }; + 1CF6BE140E9BB4670025E1CD /* ObjCNodeFilterCondition.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CF6BE120E9BB4670025E1CD /* ObjCNodeFilterCondition.mm */; }; + 1CF6BE150E9BB4670025E1CD /* ObjCNodeFilterCondition.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CF6BE130E9BB4670025E1CD /* ObjCNodeFilterCondition.h */; }; + 1CFAE3230A6D6A3F0032593D /* libobjc.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CFAE3220A6D6A3F0032593D /* libobjc.dylib */; }; + 1F3C3BEA135CAF3C00B8C1AC /* MediaControls.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1F3C3BE8135CAF3C00B8C1AC /* MediaControls.cpp */; }; + 1F3C3BEB135CAF3C00B8C1AC /* MediaControls.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F3C3BE9135CAF3C00B8C1AC /* MediaControls.h */; }; + 1F3F19531499CA7600A5AEA7 /* PODFreeListArena.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F3F19521499CA7600A5AEA7 /* PODFreeListArena.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1FAFBF1815A5FA6E00083A20 /* UTIUtilities.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1FAFBF1715A5FA5200083A20 /* UTIUtilities.mm */; }; + 1FAFBF1915A5FA7400083A20 /* UTIUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FAFBF1615A5FA5200083A20 /* UTIUtilities.h */; }; + 1FC40FB91655CCB60040F29E /* SubimageCacheWithTimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1FC40FB81655C5910040F29E /* SubimageCacheWithTimer.cpp */; }; + 1FC40FBA1655CCB90040F29E /* SubimageCacheWithTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FC40FB71655C5910040F29E /* SubimageCacheWithTimer.h */; }; + 209B456B16796A7E00E54E4E /* JSCryptoCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 209B456A16796A7E00E54E4E /* JSCryptoCustom.cpp */; }; + 20D629261253690B00081543 /* InspectorInstrumentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 20D629241253690B00081543 /* InspectorInstrumentation.cpp */; }; + 20D629271253690B00081543 /* InspectorInstrumentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 20D629251253690B00081543 /* InspectorInstrumentation.h */; }; + 227777601345DEA9008EA455 /* InspectorFrontendChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 2277775F1345DEA9008EA455 /* InspectorFrontendChannel.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 22885E641301AE4C00526E68 /* JSDOMImplementationCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 22885E631301AE4C00526E68 /* JSDOMImplementationCustom.cpp */; }; + 228C284510D82500009D0D0E /* ScriptWrappable.h in Headers */ = {isa = PBXBuildFile; fileRef = 228C284410D82500009D0D0E /* ScriptWrappable.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2292B27C1356669400CF11EF /* ImageBufferDataCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2292B27B1356669400CF11EF /* ImageBufferDataCG.cpp */; }; + 22BD9F7F1353625C009BD102 /* ImageBufferData.h in Headers */ = {isa = PBXBuildFile; fileRef = 22BD9F7D1353625C009BD102 /* ImageBufferData.h */; }; + 22BD9F81135364FE009BD102 /* ImageBufferDataCG.h in Headers */ = {isa = PBXBuildFile; fileRef = 22BD9F80135364FE009BD102 /* ImageBufferDataCG.h */; }; + 24D9129113CA951E00D21915 /* JSSVGAltGlyphDefElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24D9128F13CA951E00D21915 /* JSSVGAltGlyphDefElement.cpp */; }; + 24D9129213CA951E00D21915 /* JSSVGAltGlyphDefElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D9129013CA951E00D21915 /* JSSVGAltGlyphDefElement.h */; }; + 24D9129513CA956100D21915 /* JSSVGAltGlyphItemElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24D9129313CA956100D21915 /* JSSVGAltGlyphItemElement.cpp */; }; + 24D9129613CA956100D21915 /* JSSVGAltGlyphItemElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D9129413CA956100D21915 /* JSSVGAltGlyphItemElement.h */; }; + 24D9129813CA96DE00D21915 /* JSSVGGlyphRefElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24D9129713CA96DE00D21915 /* JSSVGGlyphRefElement.cpp */; }; + 24D9129A13CA971400D21915 /* JSSVGGlyphRefElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D9129913CA971400D21915 /* JSSVGGlyphRefElement.h */; }; + 24D912B013CA9A1F00D21915 /* SVGAltGlyphDefElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24D912AD13CA9A1F00D21915 /* SVGAltGlyphDefElement.cpp */; }; + 24D912B113CA9A1F00D21915 /* SVGAltGlyphDefElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D912AE13CA9A1F00D21915 /* SVGAltGlyphDefElement.h */; }; + 24D912B713CA9A6900D21915 /* SVGAltGlyphItemElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24D912B413CA9A6900D21915 /* SVGAltGlyphItemElement.cpp */; }; + 24D912B813CA9A6900D21915 /* SVGAltGlyphItemElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D912B513CA9A6900D21915 /* SVGAltGlyphItemElement.h */; }; + 24D912BD13CA9A9700D21915 /* SVGGlyphRefElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24D912BA13CA9A9700D21915 /* SVGGlyphRefElement.cpp */; }; + 24D912BE13CA9A9700D21915 /* SVGGlyphRefElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D912BB13CA9A9700D21915 /* SVGGlyphRefElement.h */; }; + 24F54EAC101FE914000AE741 /* ApplicationCacheHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24F54EAA101FE914000AE741 /* ApplicationCacheHost.cpp */; }; + 24F54EAD101FE914000AE741 /* ApplicationCacheHost.h in Headers */ = {isa = PBXBuildFile; fileRef = 24F54EAB101FE914000AE741 /* ApplicationCacheHost.h */; settings = {ATTRIBUTES = (); }; }; + 2542F4DA1166C25A00E89A86 /* UserGestureIndicator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2542F4D81166C25A00E89A86 /* UserGestureIndicator.cpp */; }; + 2542F4DB1166C25A00E89A86 /* UserGestureIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 2542F4D91166C25A00E89A86 /* UserGestureIndicator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 265541391489811C000DFC5D /* KeyEventCodesIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 265541371489811C000DFC5D /* KeyEventCodesIOS.h */; }; + 2655413A1489811C000DFC5D /* KeyEventIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 265541381489811C000DFC5D /* KeyEventIOS.mm */; }; + 265541521489B233000DFC5D /* CursorIOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2655414B1489AA2B000DFC5D /* CursorIOS.cpp */; }; + 269239951505E1AA009E57FC /* JSIDBVersionChangeEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 269239911505E1AA009E57FC /* JSIDBVersionChangeEvent.cpp */; }; + 269239961505E1AA009E57FC /* JSIDBVersionChangeEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 269239921505E1AA009E57FC /* JSIDBVersionChangeEvent.h */; }; + 26C17A3E1491D2D400D12BA2 /* FileSystemIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 26C17A3C1491D2D400D12BA2 /* FileSystemIOS.h */; }; + 26C17A3F1491D2D400D12BA2 /* FileSystemIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26C17A3D1491D2D400D12BA2 /* FileSystemIOS.mm */; }; + 26E98A10130A9FCA008EB7B2 /* TextCodecASCIIFastPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 26E98A0F130A9FCA008EB7B2 /* TextCodecASCIIFastPath.h */; }; + 26F40D4A14904A6300CA67C4 /* EventLoopIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26F40D4914904A6300CA67C4 /* EventLoopIOS.mm */; }; + 2917B5611473496C0052C9D0 /* LayerFlushScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2917B55E1473496C0052C9D0 /* LayerFlushScheduler.cpp */; }; + 2917B5621473496C0052C9D0 /* LayerFlushScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2917B55F1473496C0052C9D0 /* LayerFlushScheduler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2917B5631473496C0052C9D0 /* LayerFlushSchedulerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 2917B5601473496C0052C9D0 /* LayerFlushSchedulerClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2917B566147349950052C9D0 /* LayerFlushSchedulerMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2917B565147349950052C9D0 /* LayerFlushSchedulerMac.cpp */; }; + 2919A1E916B3376600787213 /* ContentFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2919A1E816B3376600787213 /* ContentFilter.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2919A1EB16B3378900787213 /* ContentFilterMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2919A1EA16B3378900787213 /* ContentFilterMac.mm */; }; + 2934940A16C02C0700901318 /* PlatformSpeechSynthesisVoice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2527CC9316BF92EC009DDAC0 /* PlatformSpeechSynthesisVoice.cpp */; }; + 2934940B16C02C0A00901318 /* PlatformSpeechSynthesisUtterance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2527CC9516BF95DD009DDAC0 /* PlatformSpeechSynthesisUtterance.cpp */; }; + 293EAE1F1356B2FE0067ACF9 /* RuntimeApplicationChecks.h in Headers */ = {isa = PBXBuildFile; fileRef = 293EAE1E1356B2FE0067ACF9 /* RuntimeApplicationChecks.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 293EAE211356B32E0067ACF9 /* RuntimeApplicationChecks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 293EAE201356B32E0067ACF9 /* RuntimeApplicationChecks.cpp */; }; + 29489FC712C00F0300D83F0F /* AccessibilityScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 29489FC512C00F0300D83F0F /* AccessibilityScrollView.h */; }; + 297BE3D516C03C08003316BD /* PlatformSpeechSynthesisUtterance.h in Headers */ = {isa = PBXBuildFile; fileRef = 2527CC9116BF8BA1009DDAC0 /* PlatformSpeechSynthesisUtterance.h */; }; + 297BE3D616C03C0B003316BD /* PlatformSpeechSynthesisVoice.h in Headers */ = {isa = PBXBuildFile; fileRef = 2527CC9216BF90B4009DDAC0 /* PlatformSpeechSynthesisVoice.h */; }; + 297BE3D716C03C0E003316BD /* PlatformSpeechSynthesizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 29E4D8DF16B0940F00C84704 /* PlatformSpeechSynthesizer.h */; }; + 297BE3D816C03CCE003316BD /* PlatformSpeechSynthesizerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29E4D8E016B0959800C84704 /* PlatformSpeechSynthesizerMac.mm */; }; + 297BE3DA16C043D8003316BD /* PlatformSpeechSynthesizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 297BE3D916C043D8003316BD /* PlatformSpeechSynthesizer.cpp */; }; + 29A309AC1561C99B00BBD8E5 /* RunLoopCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29A309AB1561C99B00BBD8E5 /* RunLoopCF.cpp */; }; + 29A8122B0FBB9C1D00510293 /* AccessibilityTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A8120D0FBB9C1D00510293 /* AccessibilityTable.h */; }; + 29A8122C0FBB9C1D00510293 /* AccessibilityList.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A8120E0FBB9C1D00510293 /* AccessibilityList.h */; }; + 29A8122E0FBB9C1D00510293 /* AccessibilityARIAGridCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A812100FBB9C1D00510293 /* AccessibilityARIAGridCell.h */; }; + 29A812310FBB9C1D00510293 /* AccessibilityTableRow.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A812130FBB9C1D00510293 /* AccessibilityTableRow.h */; }; + 29A812320FBB9C1D00510293 /* AccessibilityTableCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A812140FBB9C1D00510293 /* AccessibilityTableCell.h */; }; + 29A812330FBB9C1D00510293 /* AccessibilityARIAGridRow.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A812150FBB9C1D00510293 /* AccessibilityARIAGridRow.h */; }; + 29A812360FBB9C1D00510293 /* AccessibilityObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A812180FBB9C1D00510293 /* AccessibilityObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 29A812380FBB9C1D00510293 /* AXObjectCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A8121A0FBB9C1D00510293 /* AXObjectCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 29A812390FBB9C1D00510293 /* AccessibilityRenderObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A8121B0FBB9C1D00510293 /* AccessibilityRenderObject.h */; }; + 29A8123B0FBB9C1D00510293 /* AccessibilityImageMapLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A8121D0FBB9C1D00510293 /* AccessibilityImageMapLink.h */; }; + 29A8123F0FBB9C1D00510293 /* AccessibilityTableHeaderContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A812210FBB9C1D00510293 /* AccessibilityTableHeaderContainer.h */; }; + 29A812410FBB9C1D00510293 /* AccessibilityTableColumn.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A812230FBB9C1D00510293 /* AccessibilityTableColumn.h */; }; + 29A812420FBB9C1D00510293 /* AccessibilityListBoxOption.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A812240FBB9C1D00510293 /* AccessibilityListBoxOption.h */; }; + 29A812430FBB9C1D00510293 /* AccessibilityListBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A812250FBB9C1D00510293 /* AccessibilityListBox.h */; }; + 29A812480FBB9CA900510293 /* AccessibilityObjectMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29A812440FBB9CA900510293 /* AccessibilityObjectMac.mm */; }; + 29A812490FBB9CA900510293 /* WebAccessibilityObjectWrapperBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A812450FBB9CA900510293 /* WebAccessibilityObjectWrapperBase.h */; }; + 29A8124A0FBB9CA900510293 /* WebAccessibilityObjectWrapperBase.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29A812460FBB9CA900510293 /* WebAccessibilityObjectWrapperBase.mm */; }; + 29A8124B0FBB9CA900510293 /* AXObjectCacheMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29A812470FBB9CA900510293 /* AXObjectCacheMac.mm */; }; + 29ACB212143E7128006BCA5F /* AccessibilityMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 29ACB211143E7128006BCA5F /* AccessibilityMockObject.h */; }; + 29ACB214143E7498006BCA5F /* AccessibilityMockObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29ACB213143E7498006BCA5F /* AccessibilityMockObject.cpp */; }; + 29CD61DE146D02890068E82A /* WebKitCSSShaderValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 50B42157146976960087E604 /* WebKitCSSShaderValue.h */; }; + 29D7BCF61444AF580070619C /* AccessibilitySpinButton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29D7BCF51444AF580070619C /* AccessibilitySpinButton.cpp */; }; + 29D7BCFA1444AF7D0070619C /* AccessibilitySpinButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D7BCF91444AF7D0070619C /* AccessibilitySpinButton.h */; }; + 2B365C841525119E0091D27B /* RenderSVGEllipse.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B4235A015250F6000DBBCD8 /* RenderSVGEllipse.h */; }; + 2BE8E2C712A589EC00FAD550 /* HTMLMetaCharsetParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BE8E2C612A589EC00FAD550 /* HTMLMetaCharsetParser.h */; }; + 2BE8E2C912A58A0100FAD550 /* HTMLMetaCharsetParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2BE8E2C812A58A0100FAD550 /* HTMLMetaCharsetParser.cpp */; }; + 2D3A0E3613A7D76100E85AF0 /* SVGParsingError.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D3A0E3513A7D76100E85AF0 /* SVGParsingError.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2D481F00146B5C4C00AA7834 /* CrossfadeGeneratedImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D2FC0541460CD6F00263633 /* CrossfadeGeneratedImage.cpp */; }; + 2D481F02146B5C5500AA7834 /* CrossfadeGeneratedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D2FC0551460CD6F00263633 /* CrossfadeGeneratedImage.h */; }; + 2D481F03146B5C6500AA7834 /* GeneratorGeneratedImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D2FC0561460CD6F00263633 /* GeneratorGeneratedImage.cpp */; }; + 2D481F04146B5C6B00AA7834 /* GeneratorGeneratedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D2FC0571460CD6F00263633 /* GeneratorGeneratedImage.h */; }; + 2D5A592F152525230036EE51 /* ImageOrientation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8748D7412CC3F89001FBA41 /* ImageOrientation.cpp */; }; + 2D5A5931152525D00036EE51 /* ImageOrientation.h in Headers */ = {isa = PBXBuildFile; fileRef = A8748D6612CC3763001FBA41 /* ImageOrientation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2D5BC42716F882EE007048D0 /* SecurityPolicyViolationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D5BC42516F882BE007048D0 /* SecurityPolicyViolationEvent.h */; }; + 2D8287F616E4A0380086BD00 /* HitTestLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D8287F416E4A0380086BD00 /* HitTestLocation.cpp */; }; + 2D8287F716E4A0380086BD00 /* HitTestLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D8287F516E4A0380086BD00 /* HitTestLocation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2D8FEBDC143E3EF70072502B /* CSSCrossfadeValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D8FEBDA143E3EF70072502B /* CSSCrossfadeValue.cpp */; }; + 2D8FEBDD143E3EF70072502B /* CSSCrossfadeValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D8FEBDB143E3EF70072502B /* CSSCrossfadeValue.h */; }; + 2D9066060BE141D400956998 /* LayoutState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D9066040BE141D400956998 /* LayoutState.cpp */; }; + 2D9066070BE141D400956998 /* LayoutState.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D9066050BE141D400956998 /* LayoutState.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2D9A246E15B9BD0000D34527 /* DOMSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D9A246B15B9BBDD00D34527 /* DOMSecurityPolicy.h */; }; + 2D9A246F15B9BD2F00D34527 /* DOMSecurityPolicy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D9A246A15B9BBDD00D34527 /* DOMSecurityPolicy.cpp */; }; + 2D9A247315B9C2D100D34527 /* DOMDOMSecurityPolicy.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D9A247215B9C2C700D34527 /* DOMDOMSecurityPolicy.mm */; }; + 2D9A247415B9C2E300D34527 /* DOMDOMSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D9A247015B9C29500D34527 /* DOMDOMSecurityPolicy.h */; }; + 2D9A247515B9C2E300D34527 /* DOMDOMSecurityPolicyInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D9A247115B9C29500D34527 /* DOMDOMSecurityPolicyInternal.h */; }; + 2D9A247615B9C2F400D34527 /* DOMDOMSecurityPolicy.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 2D9A247015B9C29500D34527 /* DOMDOMSecurityPolicy.h */; }; + 2D9F0E1314FF1CBF00BA0FF7 /* linearSRGB.icc in Resources */ = {isa = PBXBuildFile; fileRef = 2D9F0E1214FF1CBF00BA0FF7 /* linearSRGB.icc */; }; + 2DF2E9D5166E39750035BEF2 /* ConsoleAPITypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DF2E9D4166E39740035BEF2 /* ConsoleAPITypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2E07753116B1BD13004D9936 /* MicroDataAttributeTokenList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E07753016B1BD13004D9936 /* MicroDataAttributeTokenList.cpp */; }; + 2E07753416B1BD4C004D9936 /* MicroDataAttributeTokenList.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E07753316B1BD4C004D9936 /* MicroDataAttributeTokenList.h */; }; + 2E0888D41148848A00AF4265 /* JSDOMFormData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E0888D21148848A00AF4265 /* JSDOMFormData.cpp */; }; + 2E0888D51148848A00AF4265 /* JSDOMFormData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E0888D31148848A00AF4265 /* JSDOMFormData.h */; }; + 2E0888E6114884E200AF4265 /* JSDOMFormDataCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E0888E5114884E200AF4265 /* JSDOMFormDataCustom.cpp */; }; + 2E2D99CD10E2BBDA00496337 /* JSBlob.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E2D99CB10E2BBDA00496337 /* JSBlob.cpp */; }; + 2E2D99CE10E2BBDA00496337 /* JSBlob.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E2D99CC10E2BBDA00496337 /* JSBlob.h */; }; + 2E2D99E710E2BC1C00496337 /* DOMBlob.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E2D99E510E2BC1C00496337 /* DOMBlob.h */; }; + 2E2D99E810E2BC1C00496337 /* DOMBlob.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E2D99E610E2BC1C00496337 /* DOMBlob.mm */; }; + 2E2D99EA10E2BC3800496337 /* DOMBlobInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E2D99E910E2BC3800496337 /* DOMBlobInternal.h */; }; + 2E2D99EB10E2BD3900496337 /* DOMBlob.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 2E2D99E510E2BC1C00496337 /* DOMBlob.h */; }; + 2E2D99EC10E2BD3900496337 /* DOMBlobInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 2E2D99E910E2BC3800496337 /* DOMBlobInternal.h */; }; + 2E37DFDA12DBAFB800A6B233 /* DOMURL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E37DFD712DBAFB800A6B233 /* DOMURL.cpp */; }; + 2E37DFDB12DBAFB800A6B233 /* DOMURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E37DFD812DBAFB800A6B233 /* DOMURL.h */; }; + 2E37E00512DBC5A400A6B233 /* JSDOMURL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E37E00312DBC5A400A6B233 /* JSDOMURL.cpp */; }; + 2E37E00612DBC5A400A6B233 /* JSDOMURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E37E00412DBC5A400A6B233 /* JSDOMURL.h */; }; + 2E3BBF071162DA1100B9409A /* UUID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E3BBF051162DA1100B9409A /* UUID.cpp */; }; + 2E3BBF081162DA1100B9409A /* UUID.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E3BBF061162DA1100B9409A /* UUID.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2E3BC0CA117D3E0800B9409A /* JSFileError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E3BC0C8117D3E0800B9409A /* JSFileError.cpp */; }; + 2E3BC0CB117D3E0800B9409A /* JSFileError.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E3BC0C9117D3E0800B9409A /* JSFileError.h */; }; + 2E3BC108117D479800B9409A /* DOMFileError.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E3BC106117D479800B9409A /* DOMFileError.h */; }; + 2E3BC109117D479800B9409A /* DOMFileError.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E3BC107117D479800B9409A /* DOMFileError.mm */; }; + 2E3BC10B117D47C800B9409A /* DOMFileErrorInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E3BC10A117D47C800B9409A /* DOMFileErrorInternal.h */; }; + 2E3FAA0911A36BF100576624 /* CrossThreadTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E3FAA0811A36BF100576624 /* CrossThreadTask.h */; }; + 2E4346450F546A8200B0F1BA /* Worker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E4346330F546A8200B0F1BA /* Worker.cpp */; }; + 2E4346460F546A8200B0F1BA /* Worker.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346340F546A8200B0F1BA /* Worker.h */; }; + 2E4346480F546A8200B0F1BA /* WorkerGlobalScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E4346360F546A8200B0F1BA /* WorkerGlobalScope.cpp */; }; + 2E4346490F546A8200B0F1BA /* WorkerGlobalScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346370F546A8200B0F1BA /* WorkerGlobalScope.h */; }; + 2E43464B0F546A8200B0F1BA /* WorkerGlobalScopeProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346390F546A8200B0F1BA /* WorkerGlobalScopeProxy.h */; }; + 2E43464C0F546A8200B0F1BA /* WorkerLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E43463A0F546A8200B0F1BA /* WorkerLocation.cpp */; }; + 2E43464D0F546A8200B0F1BA /* WorkerLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E43463B0F546A8200B0F1BA /* WorkerLocation.h */; }; + 2E43464F0F546A8200B0F1BA /* WorkerMessagingProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E43463D0F546A8200B0F1BA /* WorkerMessagingProxy.cpp */; }; + 2E4346500F546A8200B0F1BA /* WorkerMessagingProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E43463E0F546A8200B0F1BA /* WorkerMessagingProxy.h */; }; + 2E4346510F546A8200B0F1BA /* WorkerObjectProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E43463F0F546A8200B0F1BA /* WorkerObjectProxy.h */; }; + 2E4346520F546A8200B0F1BA /* WorkerRunLoop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E4346400F546A8200B0F1BA /* WorkerRunLoop.cpp */; }; + 2E4346530F546A8200B0F1BA /* WorkerRunLoop.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346410F546A8200B0F1BA /* WorkerRunLoop.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2E4346540F546A8200B0F1BA /* WorkerThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E4346420F546A8200B0F1BA /* WorkerThread.cpp */; }; + 2E4346550F546A8200B0F1BA /* WorkerThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346430F546A8200B0F1BA /* WorkerThread.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2E4346580F546A9900B0F1BA /* CrossThreadCopier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E4346560F546A9900B0F1BA /* CrossThreadCopier.cpp */; }; + 2E4346590F546A9900B0F1BA /* CrossThreadCopier.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346570F546A9900B0F1BA /* CrossThreadCopier.h */; }; + 2E7582EE12764F260062628B /* JSFileReaderCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E7582ED12764F260062628B /* JSFileReaderCustom.cpp */; }; + 2E75841D12779ADA0062628B /* FileReaderLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E75841A12779ADA0062628B /* FileReaderLoader.cpp */; }; + 2E75841E12779ADA0062628B /* FileReaderLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E75841B12779ADA0062628B /* FileReaderLoader.h */; }; + 2E75841F12779ADA0062628B /* FileReaderLoaderClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E75841C12779ADA0062628B /* FileReaderLoaderClient.h */; }; + 2E94F43B119207DA00B7F75D /* JSFileReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E94F439119207DA00B7F75D /* JSFileReader.cpp */; }; + 2E94F43C119207DA00B7F75D /* JSFileReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E94F43A119207DA00B7F75D /* JSFileReader.h */; }; + 2E97CCEA12939CB800C5C8FF /* DataView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E97CCE712939CB800C5C8FF /* DataView.cpp */; }; + 2E97CCEB12939CB800C5C8FF /* DataView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E97CCE812939CB800C5C8FF /* DataView.h */; }; + 2E97CCF71293A43A00C5C8FF /* JSDataViewCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E97CCF61293A43A00C5C8FF /* JSDataViewCustom.cpp */; }; + 2E97CE6F1293AD6B00C5C8FF /* JSDataView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E97CE6D1293AD6B00C5C8FF /* JSDataView.cpp */; }; + 2E97CE701293AD6B00C5C8FF /* JSDataView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E97CE6E1293AD6B00C5C8FF /* JSDataView.h */; }; + 2EA768040FE7126400AB9C8A /* WorkerScriptLoaderClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EA768030FE7126400AB9C8A /* WorkerScriptLoaderClient.h */; }; + 2EB4BCD2121F03E300EC4885 /* BlobResourceHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2EB4BCD0121F03E300EC4885 /* BlobResourceHandle.cpp */; }; + 2EB4BCD3121F03E300EC4885 /* BlobResourceHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EB4BCD1121F03E300EC4885 /* BlobResourceHandle.h */; }; + 2ECF7ADC10162B3800427DE7 /* JSErrorEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ECF7ADA10162B3800427DE7 /* JSErrorEvent.cpp */; }; + 2ECF7ADD10162B3800427DE7 /* JSErrorEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ECF7ADB10162B3800427DE7 /* JSErrorEvent.h */; }; + 2ECF7AE110162B5800427DE7 /* ErrorEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ECF7ADE10162B5800427DE7 /* ErrorEvent.cpp */; }; + 2ECF7AE210162B5800427DE7 /* ErrorEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ECF7ADF10162B5800427DE7 /* ErrorEvent.h */; }; + 2ED609BC1145B07100C8684E /* DOMFormData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ED609BA1145B07100C8684E /* DOMFormData.cpp */; }; + 2ED609BD1145B07100C8684E /* DOMFormData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ED609BB1145B07100C8684E /* DOMFormData.h */; }; + 2EDEF1F3121B0EFC00726DB2 /* BlobData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2EDEF1ED121B0EFC00726DB2 /* BlobData.cpp */; }; + 2EDEF1F4121B0EFC00726DB2 /* BlobData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EDEF1EE121B0EFC00726DB2 /* BlobData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2EDEF1F5121B0EFC00726DB2 /* BlobRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EDEF1EF121B0EFC00726DB2 /* BlobRegistry.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2EDEF1F6121B0EFC00726DB2 /* BlobRegistryImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2EDEF1F0121B0EFC00726DB2 /* BlobRegistryImpl.cpp */; }; + 2EDEF1F7121B0EFC00726DB2 /* BlobRegistryImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EDEF1F1121B0EFC00726DB2 /* BlobRegistryImpl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2EDEF1F8121B0EFC00726DB2 /* BlobStorageData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EDEF1F2121B0EFC00726DB2 /* BlobStorageData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2EDF369C122C94B4002F7D4E /* FileReaderSync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2EDF369A122C94B4002F7D4E /* FileReaderSync.cpp */; }; + 2EDF369D122C94B4002F7D4E /* FileReaderSync.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EDF369B122C94B4002F7D4E /* FileReaderSync.h */; }; + 2EDF369F122C94C8002F7D4E /* FileException.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EDF369E122C94C8002F7D4E /* FileException.h */; }; + 2EF1BFEA121C9F4200C27627 /* FileStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2EF1BFE8121C9F4200C27627 /* FileStream.cpp */; }; + 2EF1BFEB121C9F4200C27627 /* FileStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EF1BFE9121C9F4200C27627 /* FileStream.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2EF1BFF9121CB0CE00C27627 /* FileStreamClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EF1BFF8121CB0CE00C27627 /* FileStreamClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3106036F14327D2E00ABF4BA /* WebKitCSSFilterValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3106036C14327D2E00ABF4BA /* WebKitCSSFilterValue.cpp */; }; + 3106037014327D2E00ABF4BA /* WebKitCSSFilterValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 3106036D14327D2E00ABF4BA /* WebKitCSSFilterValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 310603741432819C00ABF4BA /* JSWebKitCSSFilterValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 310603721432819C00ABF4BA /* JSWebKitCSSFilterValue.cpp */; }; + 310603751432819C00ABF4BA /* JSWebKitCSSFilterValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 310603731432819C00ABF4BA /* JSWebKitCSSFilterValue.h */; }; + 31060379143281CD00ABF4BA /* DOMWebKitCSSFilterValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 31060376143281CD00ABF4BA /* DOMWebKitCSSFilterValue.h */; }; + 3106037A143281CD00ABF4BA /* DOMWebKitCSSFilterValue.mm in Sources */ = {isa = PBXBuildFile; fileRef = 31060377143281CD00ABF4BA /* DOMWebKitCSSFilterValue.mm */; }; + 3106037B143281CD00ABF4BA /* DOMWebKitCSSFilterValueInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 31060378143281CD00ABF4BA /* DOMWebKitCSSFilterValueInternal.h */; }; + 31288E720E3005D6003619AE /* WebKitCSSKeyframeRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31288E6E0E3005D6003619AE /* WebKitCSSKeyframeRule.cpp */; }; + 31288E730E3005D6003619AE /* WebKitCSSKeyframeRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 31288E6F0E3005D6003619AE /* WebKitCSSKeyframeRule.h */; }; + 31288E740E3005D6003619AE /* WebKitCSSKeyframesRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31288E700E3005D6003619AE /* WebKitCSSKeyframesRule.cpp */; }; + 31288E750E3005D6003619AE /* WebKitCSSKeyframesRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 31288E710E3005D6003619AE /* WebKitCSSKeyframesRule.h */; }; + 3128CA68147331520074C72A /* NotificationController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3128CA67147331520074C72A /* NotificationController.cpp */; }; + 3128CA6B147331630074C72A /* NotificationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3128CA6A147331630074C72A /* NotificationController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 312C0C41146DC6CC0016C911 /* Notification.h in Headers */ = {isa = PBXBuildFile; fileRef = 333F704F0FB49CA2008E12A6 /* Notification.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 312D67B11535691F00563D0D /* Dictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 312D67B01535691F00563D0D /* Dictionary.cpp */; }; + 31313F651443B35F006E2A90 /* FilterEffectRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31313F631443B35E006E2A90 /* FilterEffectRenderer.cpp */; }; + 31313F661443B35F006E2A90 /* FilterEffectRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 31313F641443B35E006E2A90 /* FilterEffectRenderer.h */; }; + 3138A9E51474434600B0ED12 /* StyleShader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3138A9E41474434600B0ED12 /* StyleShader.h */; }; + 316023F01532C40C00D50FF4 /* Dictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 316023EF1532C40C00D50FF4 /* Dictionary.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 31611E5A0E1C4DE000F6A579 /* JSWebKitCSSTransformValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31611E580E1C4DE000F6A579 /* JSWebKitCSSTransformValue.cpp */; }; + 31611E5B0E1C4DE000F6A579 /* JSWebKitCSSTransformValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 31611E590E1C4DE000F6A579 /* JSWebKitCSSTransformValue.h */; }; + 31611E610E1C4E1400F6A579 /* DOMWebKitCSSTransformValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 31611E5E0E1C4E1400F6A579 /* DOMWebKitCSSTransformValue.h */; }; + 31611E620E1C4E1400F6A579 /* DOMWebKitCSSTransformValue.mm in Sources */ = {isa = PBXBuildFile; fileRef = 31611E5F0E1C4E1400F6A579 /* DOMWebKitCSSTransformValue.mm */; }; + 31611E630E1C4E1400F6A579 /* DOMWebKitCSSTransformValueInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 31611E600E1C4E1400F6A579 /* DOMWebKitCSSTransformValueInternal.h */; }; + 3169379C14609C6C00C01362 /* DragSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 3169379A14609C5B00C01362 /* DragSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 316FE0710E6CCBEE00BF6088 /* JSWebKitCSSKeyframeRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316FE06D0E6CCBEE00BF6088 /* JSWebKitCSSKeyframeRule.cpp */; }; + 316FE0720E6CCBEE00BF6088 /* JSWebKitCSSKeyframeRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 316FE06E0E6CCBEE00BF6088 /* JSWebKitCSSKeyframeRule.h */; }; + 316FE0730E6CCBEE00BF6088 /* JSWebKitCSSKeyframesRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316FE06F0E6CCBEE00BF6088 /* JSWebKitCSSKeyframesRule.cpp */; }; + 316FE0740E6CCBEE00BF6088 /* JSWebKitCSSKeyframesRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 316FE0700E6CCBEE00BF6088 /* JSWebKitCSSKeyframesRule.h */; }; + 316FE07D0E6CCC2800BF6088 /* DOMWebKitCSSKeyframeRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 316FE0770E6CCC2800BF6088 /* DOMWebKitCSSKeyframeRule.h */; }; + 316FE07E0E6CCC2800BF6088 /* DOMWebKitCSSKeyframeRule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316FE0780E6CCC2800BF6088 /* DOMWebKitCSSKeyframeRule.mm */; }; + 316FE07F0E6CCC2800BF6088 /* DOMWebKitCSSKeyframeRuleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 316FE0790E6CCC2800BF6088 /* DOMWebKitCSSKeyframeRuleInternal.h */; }; + 316FE0800E6CCC2800BF6088 /* DOMWebKitCSSKeyframesRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 316FE07A0E6CCC2800BF6088 /* DOMWebKitCSSKeyframesRule.h */; }; + 316FE0810E6CCC2800BF6088 /* DOMWebKitCSSKeyframesRule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316FE07B0E6CCC2800BF6088 /* DOMWebKitCSSKeyframesRule.mm */; }; + 316FE0820E6CCC2800BF6088 /* DOMWebKitCSSKeyframesRuleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 316FE07C0E6CCC2800BF6088 /* DOMWebKitCSSKeyframesRuleInternal.h */; }; + 316FE1110E6E1DA700BF6088 /* AnimationBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316FE1070E6E1DA700BF6088 /* AnimationBase.cpp */; }; + 316FE1120E6E1DA700BF6088 /* AnimationBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 316FE1080E6E1DA700BF6088 /* AnimationBase.h */; }; + 316FE1130E6E1DA700BF6088 /* AnimationController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316FE1090E6E1DA700BF6088 /* AnimationController.cpp */; }; + 316FE1140E6E1DA700BF6088 /* AnimationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 316FE10A0E6E1DA700BF6088 /* AnimationController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 316FE1150E6E1DA700BF6088 /* CompositeAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316FE10B0E6E1DA700BF6088 /* CompositeAnimation.cpp */; }; + 316FE1160E6E1DA700BF6088 /* CompositeAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 316FE10C0E6E1DA700BF6088 /* CompositeAnimation.h */; }; + 316FE1170E6E1DA700BF6088 /* ImplicitAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316FE10D0E6E1DA700BF6088 /* ImplicitAnimation.cpp */; }; + 316FE1180E6E1DA700BF6088 /* ImplicitAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 316FE10E0E6E1DA700BF6088 /* ImplicitAnimation.h */; }; + 316FE1190E6E1DA700BF6088 /* KeyframeAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316FE10F0E6E1DA700BF6088 /* KeyframeAnimation.cpp */; }; + 316FE11A0E6E1DA700BF6088 /* KeyframeAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 316FE1100E6E1DA700BF6088 /* KeyframeAnimation.h */; }; + 31741AAD16636609008A5B7E /* SimulatedClickOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 31741AAB16635E45008A5B7E /* SimulatedClickOptions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 31955A86160D199000858025 /* RenderSnapshottedPlugIn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31E8D8BA160BC94B004CE8F5 /* RenderSnapshottedPlugIn.cpp */; }; + 31955A88160D199200858025 /* RenderSnapshottedPlugIn.h in Headers */ = {isa = PBXBuildFile; fileRef = 31E8D8BB160BC94C004CE8F5 /* RenderSnapshottedPlugIn.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 319AE063142D6B24006563A1 /* StyleFilterData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 319AE061142D6B24006563A1 /* StyleFilterData.cpp */; }; + 319AE064142D6B24006563A1 /* StyleFilterData.h in Headers */ = {isa = PBXBuildFile; fileRef = 319AE062142D6B24006563A1 /* StyleFilterData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 319FBD5F15D2F464009640A6 /* CachedImageClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 319FBD5D15D2F444009640A6 /* CachedImageClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 31C0FF210E4CEB6E007D6FE5 /* WebKitAnimationEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31C0FF1B0E4CEB6E007D6FE5 /* WebKitAnimationEvent.cpp */; }; + 31C0FF220E4CEB6E007D6FE5 /* WebKitAnimationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C0FF1C0E4CEB6E007D6FE5 /* WebKitAnimationEvent.h */; }; + 31C0FF240E4CEB6E007D6FE5 /* WebKitTransitionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31C0FF1E0E4CEB6E007D6FE5 /* WebKitTransitionEvent.cpp */; }; + 31C0FF250E4CEB6E007D6FE5 /* WebKitTransitionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C0FF1F0E4CEB6E007D6FE5 /* WebKitTransitionEvent.h */; }; + 31C0FF3D0E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31C0FF390E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.cpp */; }; + 31C0FF3E0E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C0FF3A0E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.h */; }; + 31C0FF3F0E4CEFAC007D6FE5 /* JSWebKitTransitionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31C0FF3B0E4CEFAC007D6FE5 /* JSWebKitTransitionEvent.cpp */; }; + 31C0FF400E4CEFAC007D6FE5 /* JSWebKitTransitionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C0FF3C0E4CEFAC007D6FE5 /* JSWebKitTransitionEvent.h */; }; + 31C0FF490E4CEFDD007D6FE5 /* DOMWebKitAnimationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C0FF430E4CEFDD007D6FE5 /* DOMWebKitAnimationEvent.h */; }; + 31C0FF4A0E4CEFDD007D6FE5 /* DOMWebKitAnimationEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 31C0FF440E4CEFDD007D6FE5 /* DOMWebKitAnimationEvent.mm */; }; + 31C0FF4B0E4CEFDD007D6FE5 /* DOMWebKitAnimationEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C0FF450E4CEFDD007D6FE5 /* DOMWebKitAnimationEventInternal.h */; }; + 31C0FF4C0E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C0FF460E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.h */; }; + 31C0FF4D0E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 31C0FF470E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.mm */; }; + 31C0FF4E0E4CEFDD007D6FE5 /* DOMWebKitTransitionEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C0FF480E4CEFDD007D6FE5 /* DOMWebKitTransitionEventInternal.h */; }; + 31D591B316697A6C00E6BF02 /* PlugInClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 31D591B116697A6C00E6BF02 /* PlugInClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 31EC1E2814FF60EE00C94662 /* JSNotificationPermissionCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31EC1E2614FF60EE00C94662 /* JSNotificationPermissionCallback.cpp */; }; + 31EC1E2914FF60EE00C94662 /* JSNotificationPermissionCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 31EC1E2714FF60EE00C94662 /* JSNotificationPermissionCallback.h */; }; + 31FB1A57120A5D0600DC02A0 /* DeviceMotionClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 31FB1A4F120A5D0600DC02A0 /* DeviceMotionClient.h */; }; + 31FB1A58120A5D0600DC02A0 /* DeviceMotionController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31FB1A50120A5D0600DC02A0 /* DeviceMotionController.cpp */; }; + 31FB1A59120A5D0600DC02A0 /* DeviceMotionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 31FB1A51120A5D0600DC02A0 /* DeviceMotionController.h */; }; + 31FB1A5A120A5D0600DC02A0 /* DeviceMotionData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31FB1A52120A5D0600DC02A0 /* DeviceMotionData.cpp */; }; + 31FB1A5B120A5D0600DC02A0 /* DeviceMotionData.h in Headers */ = {isa = PBXBuildFile; fileRef = 31FB1A53120A5D0600DC02A0 /* DeviceMotionData.h */; }; + 31FB1A5C120A5D0600DC02A0 /* DeviceMotionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31FB1A54120A5D0600DC02A0 /* DeviceMotionEvent.cpp */; }; + 31FB1A5D120A5D0600DC02A0 /* DeviceMotionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 31FB1A55120A5D0600DC02A0 /* DeviceMotionEvent.h */; }; + 31FB1A65120A5D3F00DC02A0 /* JSDeviceMotionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31FB1A63120A5D3F00DC02A0 /* JSDeviceMotionEvent.cpp */; }; + 31FB1A66120A5D3F00DC02A0 /* JSDeviceMotionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 31FB1A64120A5D3F00DC02A0 /* JSDeviceMotionEvent.h */; }; + 31FB1A6C120A5D6900DC02A0 /* JSDeviceMotionEventCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31FB1A6B120A5D6900DC02A0 /* JSDeviceMotionEventCustom.cpp */; }; + 31FE6DFA15004C2A0004EBC4 /* NotificationPermissionCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 31EC1DAC14FF26EA00C94662 /* NotificationPermissionCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3314ACEB10892086000F0E56 /* JSExceptionBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3314ACE910892086000F0E56 /* JSExceptionBase.cpp */; }; + 3314ACEC10892086000F0E56 /* JSExceptionBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 3314ACEA10892086000F0E56 /* JSExceptionBase.h */; }; + 33503C9A10179A74003B47E1 /* NotificationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 33503C9910179A74003B47E1 /* NotificationClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 33503CA310179AD7003B47E1 /* JSNotification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33503C9F10179AD7003B47E1 /* JSNotification.cpp */; }; + 33503CA410179AD7003B47E1 /* JSNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 33503CA010179AD7003B47E1 /* JSNotification.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 33503CA510179AD7003B47E1 /* JSNotificationCenter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33503CA110179AD7003B47E1 /* JSNotificationCenter.cpp */; }; + 33503CA610179AD7003B47E1 /* JSNotificationCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 33503CA210179AD7003B47E1 /* JSNotificationCenter.h */; }; + 33503CC71017A1B1003B47E1 /* Notification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33503CC61017A1B1003B47E1 /* Notification.cpp */; }; + 3390CA550FFC157B00921962 /* NotificationCenter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3390CA510FFC157B00921962 /* NotificationCenter.cpp */; }; + 3390CA560FFC157B00921962 /* NotificationCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3390CA520FFC157B00921962 /* NotificationCenter.h */; }; + 339B5B63131DAA3200F48D02 /* CookiesStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 339B5B62131DAA3200F48D02 /* CookiesStrategy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 33D0212D131DB37B004091A8 /* CookieStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = E13F01EA1270E10D00DFBA71 /* CookieStorage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 371941961566B37200A276D8 /* WebCoreNSCellExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = 371941941566B37200A276D8 /* WebCoreNSCellExtras.m */; }; + 371941971566B37200A276D8 /* WebCoreNSCellExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 371941951566B37200A276D8 /* WebCoreNSCellExtras.h */; }; + 371A67CB11C6C7DB00047B8B /* HyphenationCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 371A67CA11C6C7DB00047B8B /* HyphenationCF.cpp */; }; + 371E65CC13661EDC00BEEDB0 /* PageSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 371E65CB13661EDC00BEEDB0 /* PageSerializer.h */; }; + 371E65CE13661EED00BEEDB0 /* PageSerializer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 371E65CD13661EED00BEEDB0 /* PageSerializer.cpp */; }; + 371F4F400D25B9AF00ECE0D5 /* FontData.h in Headers */ = {isa = PBXBuildFile; fileRef = 371F4F3E0D25B9AF00ECE0D5 /* FontData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 371F4F410D25B9AF00ECE0D5 /* FontData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 371F4F3F0D25B9AF00ECE0D5 /* FontData.cpp */; }; + 371F4FFC0D25E7F300ECE0D5 /* SegmentedFontData.h in Headers */ = {isa = PBXBuildFile; fileRef = 371F4FFA0D25E7F300ECE0D5 /* SegmentedFontData.h */; }; + 371F4FFD0D25E7F300ECE0D5 /* SegmentedFontData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 371F4FFB0D25E7F300ECE0D5 /* SegmentedFontData.cpp */; }; + 371F51A10D262FA000ECE0D5 /* CSSSegmentedFontFace.h in Headers */ = {isa = PBXBuildFile; fileRef = 371F519F0D262FA000ECE0D5 /* CSSSegmentedFontFace.h */; }; + 371F51A20D262FA000ECE0D5 /* CSSSegmentedFontFace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 371F51A00D262FA000ECE0D5 /* CSSSegmentedFontFace.cpp */; }; + 371F53E90D2704F900ECE0D5 /* CSSUnicodeRangeValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 371F53E70D2704F900ECE0D5 /* CSSUnicodeRangeValue.h */; }; + 371F53EA0D2704F900ECE0D5 /* CSSUnicodeRangeValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 371F53E80D2704F900ECE0D5 /* CSSUnicodeRangeValue.cpp */; }; + 37202199106213C600F25C4B /* FontSmoothingMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 37202198106213C600F25C4B /* FontSmoothingMode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 372C00C4129611F1005C9575 /* TextBoundaries.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 372C00C3129611F1005C9575 /* TextBoundaries.cpp */; }; + 372C00D9129619F8005C9575 /* FindOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 372C00D8129619F8005C9575 /* FindOptions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3744570F0DB05FA500AE0992 /* SVGGlyphMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 3744570E0DB05FA500AE0992 /* SVGGlyphMap.h */; }; + 375CD232119D43C800A2A859 /* Hyphenation.h in Headers */ = {isa = PBXBuildFile; fileRef = 375CD231119D43C800A2A859 /* Hyphenation.h */; }; + 375CD23B119D44EA00A2A859 /* HyphenationMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 375CD239119D44EA00A2A859 /* HyphenationMac.mm */; }; + 376DCCE113B4F966002EBEFC /* TextRun.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 376DCCE013B4F966002EBEFC /* TextRun.cpp */; }; + 3774ABA50FA21EB400AD7DE9 /* OverlapTestRequestClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 3774ABA30FA21EB400AD7DE9 /* OverlapTestRequestClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 377A3A9015EFCE9B0059F5C7 /* BitmapImageCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 377A3A8F15EFCE9A0059F5C7 /* BitmapImageCG.cpp */; }; + 377C4CDF1014E9F600B9AE42 /* PlaceholderDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 377C4CDD1014E9F600B9AE42 /* PlaceholderDocument.h */; }; + 377C4CE01014E9F600B9AE42 /* PlaceholderDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 377C4CDE1014E9F600B9AE42 /* PlaceholderDocument.cpp */; }; + 3784C34B0E11AA34007D8D48 /* FontTraitsMask.h in Headers */ = {isa = PBXBuildFile; fileRef = 3784C34A0E11AA34007D8D48 /* FontTraitsMask.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 37919C230B7D188600A56998 /* PositionIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37919C210B7D188600A56998 /* PositionIterator.cpp */; }; + 37919C240B7D188600A56998 /* PositionIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 37919C220B7D188600A56998 /* PositionIterator.h */; settings = {ATTRIBUTES = (); }; }; + 379919961200DDF400EA041C /* WOFFFileFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 379919941200DDF400EA041C /* WOFFFileFormat.cpp */; }; + 379919971200DDF400EA041C /* WOFFFileFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 379919951200DDF400EA041C /* WOFFFileFormat.h */; }; + 379919B21200DE5000EA041C /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 379919B11200DE5000EA041C /* libz.dylib */; }; + 379E371613736A6600B9E919 /* QuotedPrintable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 379E371413736A6600B9E919 /* QuotedPrintable.cpp */; }; + 379E371713736A6600B9E919 /* QuotedPrintable.h in Headers */ = {isa = PBXBuildFile; fileRef = 379E371513736A6600B9E919 /* QuotedPrintable.h */; }; + 379E61C9126CA5C300B63E8D /* BaseButtonInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 379E61C5126CA5C300B63E8D /* BaseButtonInputType.cpp */; }; + 379E61CA126CA5C400B63E8D /* BaseButtonInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = 379E61C6126CA5C300B63E8D /* BaseButtonInputType.h */; }; + 379E61CB126CA5C400B63E8D /* BaseCheckableInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 379E61C7126CA5C300B63E8D /* BaseCheckableInputType.cpp */; }; + 379E61CC126CA5C400B63E8D /* BaseCheckableInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = 379E61C8126CA5C300B63E8D /* BaseCheckableInputType.h */; }; + 37ACCE420DA2980F0089E602 /* FontRenderingMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 37ACCE410DA2980F0089E602 /* FontRenderingMode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 37ACCF690DA414E70089E602 /* FontDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37ACCE620DA2AA960089E602 /* FontDescription.cpp */; }; + 37C2360B1097EDED00EF9F72 /* FontComplexTextMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37C2360A1097EDED00EF9F72 /* FontComplexTextMac.cpp */; }; + 37C236101097EE7700EF9F72 /* ComplexTextController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37C2360E1097EE7700EF9F72 /* ComplexTextController.cpp */; }; + 37C236111097EE7700EF9F72 /* ComplexTextController.h in Headers */ = {isa = PBXBuildFile; fileRef = 37C2360F1097EE7700EF9F72 /* ComplexTextController.h */; }; + 37C238221098C84200EF9F72 /* ComplexTextControllerCoreText.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37C238201098C84200EF9F72 /* ComplexTextControllerCoreText.mm */; }; + 37C28A6810F659CC008C7813 /* TypesettingFeatures.h in Headers */ = {isa = PBXBuildFile; fileRef = 37C28A6710F659CC008C7813 /* TypesettingFeatures.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 37C61F0112095C87007A3C67 /* AtomicStringKeyedMRUCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 37C61F0012095C87007A3C67 /* AtomicStringKeyedMRUCache.h */; }; + 37DDCD9413844FD50008B793 /* MIMEHeader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37DDCD9213844FD50008B793 /* MIMEHeader.cpp */; }; + 37DDCD9513844FD50008B793 /* MIMEHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 37DDCD9313844FD50008B793 /* MIMEHeader.h */; }; + 37DDCD9E13844FFA0008B793 /* Archive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37DDCD9D13844FFA0008B793 /* Archive.cpp */; }; + 37DDCDA51384501C0008B793 /* MHTMLArchive.h in Headers */ = {isa = PBXBuildFile; fileRef = 37DDCDA11384501C0008B793 /* MHTMLArchive.h */; }; + 37DDCDA71384501C0008B793 /* MHTMLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 37DDCDA31384501C0008B793 /* MHTMLParser.h */; }; + 37E3524B12450C5200BAF5D9 /* InputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37E3524A12450C5200BAF5D9 /* InputType.cpp */; }; + 37E3524D12450C6600BAF5D9 /* InputType.h in Headers */ = {isa = PBXBuildFile; fileRef = 37E3524C12450C6600BAF5D9 /* InputType.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 37F567CE165358F400DDE92B /* PopupOpeningObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 3772B09516535856000A49CA /* PopupOpeningObserver.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 37F818FD0D657606005E1F05 /* WebCoreURLResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 37F818FB0D657606005E1F05 /* WebCoreURLResponse.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 37F818FE0D657606005E1F05 /* WebCoreURLResponse.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37F818FC0D657606005E1F05 /* WebCoreURLResponse.mm */; }; + 37FD4298118368460093C029 /* TreeDepthLimit.h in Headers */ = {isa = PBXBuildFile; fileRef = 37FD4297118368460093C029 /* TreeDepthLimit.h */; }; + 3AB02D2A12D4F91600FBB694 /* StorageTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB02D2812D4F91600FBB694 /* StorageTracker.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3AB02D2B12D4F91600FBB694 /* StorageTracker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB02D2912D4F91600FBB694 /* StorageTracker.cpp */; }; + 3AC3680012EF7A09006A3D6F /* StorageTrackerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AC367FE12EF7A09006A3D6F /* StorageTrackerClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3AC648B2129E146500C3EB25 /* EditingBoundary.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AC648B1129E146500C3EB25 /* EditingBoundary.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3C244FEAA375AC633F88BE6F /* RenderLayerModelObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C244FE4A375AC633F88BE6F /* RenderLayerModelObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3C244FEBA375AC633F88BE6F /* RenderLayerModelObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C244FE5A375AC633F88BE6F /* RenderLayerModelObject.cpp */; }; + 3F2B33EB165AF15600E3987C /* DOMWebKitCSSViewportRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F2B33E6165AF15500E3987C /* DOMWebKitCSSViewportRule.h */; }; + 3F2B33EC165AF15600E3987C /* DOMWebKitCSSViewportRule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3F2B33E7165AF15500E3987C /* DOMWebKitCSSViewportRule.mm */; }; + 3F2B33ED165AF15600E3987C /* DOMWebKitCSSViewportRuleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F2B33E8165AF15500E3987C /* DOMWebKitCSSViewportRuleInternal.h */; }; + 3F2B33EE165AF15600E3987C /* JSWebKitCSSViewportRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3F2B33E9165AF15500E3987C /* JSWebKitCSSViewportRule.cpp */; }; + 3F2B33EF165AF15600E3987C /* JSWebKitCSSViewportRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F2B33EA165AF15500E3987C /* JSWebKitCSSViewportRule.h */; }; + 3FFFF9A8159D9A550020BBD5 /* WebKitCSSViewportRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FFFF9A6159D9A550020BBD5 /* WebKitCSSViewportRule.cpp */; }; + 3FFFF9A9159D9A550020BBD5 /* WebKitCSSViewportRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FFFF9A7159D9A550020BBD5 /* WebKitCSSViewportRule.h */; }; + 3FFFF9AD159D9B060020BBD5 /* ViewportStyleResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FFFF9AB159D9B060020BBD5 /* ViewportStyleResolver.cpp */; }; + 3FFFF9AE159D9B060020BBD5 /* ViewportStyleResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FFFF9AC159D9B060020BBD5 /* ViewportStyleResolver.h */; }; + 409EBDB116B7EE7100CBA3FC /* CSSFontFaceLoadEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 409EBDAE16B7EE2800CBA3FC /* CSSFontFaceLoadEvent.h */; }; + 409EBDB216B7EE7400CBA3FC /* CSSFontFaceLoadEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 409EBDAC16B7EE1C00CBA3FC /* CSSFontFaceLoadEvent.cpp */; }; + 409EBDB616B7EEA300CBA3FC /* FontLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 409EBDB516B7EEA300CBA3FC /* FontLoader.h */; }; + 409EBDC016B7F38E00CBA3FC /* JSFontLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 409EBDBF16B7F38E00CBA3FC /* JSFontLoader.h */; }; + 409EBDC316B7F3A600CBA3FC /* JSCSSFontFaceLoadEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 409EBDC216B7F3A600CBA3FC /* JSCSSFontFaceLoadEvent.h */; }; + 409EBDC516B7F3CA00CBA3FC /* JSCSSFontFaceLoadEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 409EBDC416B7F3CA00CBA3FC /* JSCSSFontFaceLoadEvent.cpp */; }; + 40ECAE7E16B8B67200C36103 /* JSDOMError.h in Headers */ = {isa = PBXBuildFile; fileRef = 40ECAE7D16B8B67200C36103 /* JSDOMError.h */; }; + 40ECAE8116B8B68A00C36103 /* JSDOMError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 40ECAE8016B8B68A00C36103 /* JSDOMError.cpp */; }; + 41002CCD0F66EDEF009E660D /* ScriptFunctionCall.h in Headers */ = {isa = PBXBuildFile; fileRef = 41002CCB0F66EDEF009E660D /* ScriptFunctionCall.h */; }; + 41002CCE0F66EDEF009E660D /* ScriptFunctionCall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41002CCC0F66EDEF009E660D /* ScriptFunctionCall.cpp */; }; + 410B7E721045FAB000D8224F /* JSMessageEventCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 410B7E711045FAB000D8224F /* JSMessageEventCustom.cpp */; }; + 411046410FA222A600BA436A /* ScriptEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 4110463F0FA222A600BA436A /* ScriptEventListener.h */; }; + 411046420FA222A600BA436A /* ScriptEventListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 411046400FA222A600BA436A /* ScriptEventListener.cpp */; }; + 4123081B138C429700BCCFCA /* WebCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93F19B1A08245E5A001E9ABC /* WebCore.framework */; }; + 41230913138C42FF00BCCFCA /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8216299029F4FB501000131 /* JavaScriptCore.framework */; }; + 4123E569127B3041000FEEA7 /* WindowEventContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 4123E567127B3041000FEEA7 /* WindowEventContext.h */; }; + 4123E56A127B3041000FEEA7 /* WindowEventContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4123E568127B3041000FEEA7 /* WindowEventContext.cpp */; }; + 4127D5370F8AAB1D00E424F5 /* ScriptState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4127D5360F8AAB1D00E424F5 /* ScriptState.cpp */; }; + 4138D3351244054800323D33 /* EventContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 4138D3331244054800323D33 /* EventContext.h */; }; + 4138D3361244054800323D33 /* EventContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4138D3341244054800323D33 /* EventContext.cpp */; }; + 415071571685067300C3C7B3 /* SelectorFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 415071551685067300C3C7B3 /* SelectorFilter.cpp */; }; + 415071581685067300C3C7B3 /* SelectorFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 415071561685067300C3C7B3 /* SelectorFilter.h */; }; + 4150F9F112B6E0E70008C860 /* SliderThumbElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4150F9EF12B6E0E70008C860 /* SliderThumbElement.h */; }; + 4150F9F212B6E0E70008C860 /* SliderThumbElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4150F9F012B6E0E70008C860 /* SliderThumbElement.cpp */; }; + 4157AF8012F1FB0400A8C6F5 /* MediaControlsApple.h in Headers */ = {isa = PBXBuildFile; fileRef = 4157AF7E12F1FB0400A8C6F5 /* MediaControlsApple.h */; }; + 4157AF8112F1FB0400A8C6F5 /* MediaControlsApple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4157AF7F12F1FB0400A8C6F5 /* MediaControlsApple.cpp */; }; + 4162A450101145AE00DFF3ED /* DedicatedWorkerGlobalScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4162A44D101145AE00DFF3ED /* DedicatedWorkerGlobalScope.cpp */; }; + 4162A451101145AE00DFF3ED /* DedicatedWorkerGlobalScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 4162A44E101145AE00DFF3ED /* DedicatedWorkerGlobalScope.h */; }; + 4162A454101145E300DFF3ED /* JSDedicatedWorkerGlobalScopeCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4162A453101145E300DFF3ED /* JSDedicatedWorkerGlobalScopeCustom.cpp */; }; + 4162A4571011464700DFF3ED /* JSDedicatedWorkerGlobalScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4162A4551011464700DFF3ED /* JSDedicatedWorkerGlobalScope.cpp */; }; + 4162A4581011464700DFF3ED /* JSDedicatedWorkerGlobalScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 4162A4561011464700DFF3ED /* JSDedicatedWorkerGlobalScope.h */; }; + 4167EBF5102962BA003D252A /* DefaultSharedWorkerRepository.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4167EBF3102962BA003D252A /* DefaultSharedWorkerRepository.cpp */; }; + 4167EBF6102962BA003D252A /* DefaultSharedWorkerRepository.h in Headers */ = {isa = PBXBuildFile; fileRef = 4167EBF4102962BA003D252A /* DefaultSharedWorkerRepository.h */; }; + 416E29A6102FA962007FC14E /* WorkerReportingProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 416E29A5102FA962007FC14E /* WorkerReportingProxy.h */; }; + 416E75BE0EDF8FD700360E1D /* ScriptCallStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 416E75BC0EDF8FD700360E1D /* ScriptCallStack.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 416E75BF0EDF8FD700360E1D /* ScriptCallStack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 416E75BD0EDF8FD700360E1D /* ScriptCallStack.cpp */; }; + 416E75CB0EDF90C700360E1D /* ScriptCallFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 416E75C90EDF90C700360E1D /* ScriptCallFrame.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 416E75CC0EDF90C700360E1D /* ScriptCallFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 416E75CA0EDF90C700360E1D /* ScriptCallFrame.cpp */; }; + 417253AA1354BBBC00360F2A /* MediaControlElements.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 417253A81354BBBC00360F2A /* MediaControlElements.cpp */; }; + 417253AB1354BBBC00360F2A /* MediaControlElements.h in Headers */ = {isa = PBXBuildFile; fileRef = 417253A91354BBBC00360F2A /* MediaControlElements.h */; }; + 417DA6D913734E6E007C57FB /* Internals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 417DA4CF13734326007C57FB /* Internals.cpp */; }; + 417DA6DA13734E6E007C57FB /* Internals.h in Headers */ = {isa = PBXBuildFile; fileRef = 417DA4CE13734326007C57FB /* Internals.h */; }; + 417DA71D13735DFA007C57FB /* JSInternals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 417DA71B13735DFA007C57FB /* JSInternals.cpp */; }; + 417DA71E13735DFA007C57FB /* JSInternals.h in Headers */ = {isa = PBXBuildFile; fileRef = 417DA71C13735DFA007C57FB /* JSInternals.h */; }; + 41815C1E138319830057AAA4 /* WebCoreTestSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41815C1C138319830057AAA4 /* WebCoreTestSupport.cpp */; }; + 41815C1F138319830057AAA4 /* WebCoreTestSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 41815C1D138319830057AAA4 /* WebCoreTestSupport.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 41885B9311B6FDA6003383BB /* FormSubmission.h in Headers */ = {isa = PBXBuildFile; fileRef = 41885B9111B6FDA6003383BB /* FormSubmission.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 41885B9411B6FDA6003383BB /* FormSubmission.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41885B9211B6FDA6003383BB /* FormSubmission.cpp */; }; + 418A06D0133C04D500CD379C /* EventDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 418A06CE133C04D500CD379C /* EventDispatcher.h */; }; + 418A06D1133C04D500CD379C /* EventDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 418A06CF133C04D500CD379C /* EventDispatcher.cpp */; }; + 418F88040FF957AE0080F045 /* JSAbstractWorker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 418F88020FF957AE0080F045 /* JSAbstractWorker.cpp */; }; + 418F88050FF957AF0080F045 /* JSAbstractWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = 418F88030FF957AE0080F045 /* JSAbstractWorker.h */; }; + 419BC2DE1685329900D64D6D /* VisitedLinkState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 419BC2DC1685329900D64D6D /* VisitedLinkState.cpp */; }; + 419BC2DF1685329900D64D6D /* VisitedLinkState.h in Headers */ = {isa = PBXBuildFile; fileRef = 419BC2DD1685329900D64D6D /* VisitedLinkState.h */; }; + 41A3D58E101C152D00316D07 /* DedicatedWorkerThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41A3D58C101C152D00316D07 /* DedicatedWorkerThread.cpp */; }; + 41A3D58F101C152D00316D07 /* DedicatedWorkerThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 41A3D58D101C152D00316D07 /* DedicatedWorkerThread.h */; }; + 41B8CD4516D04591000E8CC0 /* SelectorCheckerFastPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41B8CD4316D04591000E8CC0 /* SelectorCheckerFastPath.cpp */; }; + 41B8CD4616D04591000E8CC0 /* SelectorCheckerFastPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 41B8CD4416D04591000E8CC0 /* SelectorCheckerFastPath.h */; }; + 41BF700C0FE86F49005E8DEC /* MessagePortChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 41BF700A0FE86F49005E8DEC /* MessagePortChannel.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 41BF700F0FE86F61005E8DEC /* PlatformMessagePortChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41BF700D0FE86F61005E8DEC /* PlatformMessagePortChannel.cpp */; }; + 41BF70100FE86F61005E8DEC /* PlatformMessagePortChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 41BF700E0FE86F61005E8DEC /* PlatformMessagePortChannel.h */; }; + 41C760B10EDE03D300C1655F /* ScriptState.h in Headers */ = {isa = PBXBuildFile; fileRef = 41C760B00EDE03D300C1655F /* ScriptState.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 41D015CA0F4B5C71004A662F /* ContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 41D015C80F4B5C71004A662F /* ContentType.h */; }; + 41D015CB0F4B5C71004A662F /* ContentType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41D015C90F4B5C71004A662F /* ContentType.cpp */; }; + 41D07A7E0FF935CA0095EDCE /* JSSharedWorker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41D07A7C0FF935CA0095EDCE /* JSSharedWorker.cpp */; }; + 41D07A7F0FF935CA0095EDCE /* JSSharedWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = 41D07A7D0FF935CA0095EDCE /* JSSharedWorker.h */; }; + 41D168E710226E89009BC827 /* SharedWorkerGlobalScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41D168DF10226E89009BC827 /* SharedWorkerGlobalScope.cpp */; }; + 41D168E810226E89009BC827 /* SharedWorkerGlobalScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 41D168E010226E89009BC827 /* SharedWorkerGlobalScope.h */; }; + 41D168EA10226E89009BC827 /* SharedWorkerRepository.h in Headers */ = {isa = PBXBuildFile; fileRef = 41D168E210226E89009BC827 /* SharedWorkerRepository.h */; }; + 41D168ED10226E89009BC827 /* SharedWorkerThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41D168E510226E89009BC827 /* SharedWorkerThread.cpp */; }; + 41D168EE10226E89009BC827 /* SharedWorkerThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 41D168E610226E89009BC827 /* SharedWorkerThread.h */; }; + 41D1690510238B66009BC827 /* JSSharedWorkerGlobalScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41D1690310238B66009BC827 /* JSSharedWorkerGlobalScope.cpp */; }; + 41D1690610238B66009BC827 /* JSSharedWorkerGlobalScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 41D1690410238B66009BC827 /* JSSharedWorkerGlobalScope.h */; }; + 41E1B1D00FF5986900576B3B /* AbstractWorker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41E1B1CA0FF5986900576B3B /* AbstractWorker.cpp */; }; + 41E1B1D10FF5986900576B3B /* AbstractWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = 41E1B1CB0FF5986900576B3B /* AbstractWorker.h */; }; + 41E1B1D30FF5986900576B3B /* SharedWorker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41E1B1CD0FF5986900576B3B /* SharedWorker.cpp */; }; + 41E1B1D40FF5986900576B3B /* SharedWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = 41E1B1CE0FF5986900576B3B /* SharedWorker.h */; }; + 41F0618E0F5F069800A07EAC /* ConsoleMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F0618C0F5F069800A07EAC /* ConsoleMessage.h */; }; + 41F0618F0F5F069800A07EAC /* ConsoleMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41F0618D0F5F069800A07EAC /* ConsoleMessage.cpp */; }; + 41F062140F5F192600A07EAC /* InspectorDatabaseResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F062120F5F192600A07EAC /* InspectorDatabaseResource.h */; }; + 41F062150F5F192600A07EAC /* InspectorDatabaseResource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41F062130F5F192600A07EAC /* InspectorDatabaseResource.cpp */; }; + 41F066E40F64BCF600A07EAC /* ScriptObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F066E20F64BCF600A07EAC /* ScriptObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 41F066E50F64BCF600A07EAC /* ScriptObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41F066E30F64BCF600A07EAC /* ScriptObject.cpp */; }; + 41F1D21F0EF35C2A00DA8753 /* ScriptCachedFrameData.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F1D21D0EF35C2A00DA8753 /* ScriptCachedFrameData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 41F1D2200EF35C2A00DA8753 /* ScriptCachedFrameData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41F1D21E0EF35C2A00DA8753 /* ScriptCachedFrameData.cpp */; }; + 41F584C7104652CB009CAA64 /* JSMessagePortCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F584C6104652CB009CAA64 /* JSMessagePortCustom.h */; }; + 41FA303E1316C29C00C0BFC5 /* RenderMediaControls.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41FA303C1316C29C00C0BFC5 /* RenderMediaControls.cpp */; }; + 41FA303F1316C29C00C0BFC5 /* RenderMediaControls.h in Headers */ = {isa = PBXBuildFile; fileRef = 41FA303D1316C29C00C0BFC5 /* RenderMediaControls.h */; }; + 4306E4E614955543007F17AC /* KillRingNone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4306E4E514955543007F17AC /* KillRingNone.cpp */; }; + 43142E7A13B1E97700F1C871 /* SVGAnimatedRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43142E7913B1E97700F1C871 /* SVGAnimatedRect.cpp */; }; + 431A2F9C13B6F2B0007791E4 /* SVGAnimatedNumberOptionalNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 431A2F9A13B6F2B0007791E4 /* SVGAnimatedNumberOptionalNumber.h */; }; + 431A2F9D13B6F2B0007791E4 /* SVGAnimatedNumberOptionalNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 431A2F9B13B6F2B0007791E4 /* SVGAnimatedNumberOptionalNumber.cpp */; }; + 431A2FD713B7707A007791E4 /* SVGAnimatedLengthList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 431A2FD613B7707A007791E4 /* SVGAnimatedLengthList.cpp */; }; + 431A302113B89DCC007791E4 /* SVGAnimatedPreserveAspectRatio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 431A302013B89DCC007791E4 /* SVGAnimatedPreserveAspectRatio.cpp */; }; + 431A308813B8F978007791E4 /* SVGAnimatedBoolean.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 431A308713B8F978007791E4 /* SVGAnimatedBoolean.cpp */; }; + 4331AC7813B6870000A9E5AE /* SVGAnimatedNumberList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4331AC7713B6870000A9E5AE /* SVGAnimatedNumberList.cpp */; }; + 4358E87C1360A2EE00E4748C /* JSSVGFEDropShadowElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4358E87A1360A2EE00E4748C /* JSSVGFEDropShadowElement.cpp */; }; + 4358E87D1360A2EE00E4748C /* JSSVGFEDropShadowElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4358E87B1360A2EE00E4748C /* JSSVGFEDropShadowElement.h */; }; + 4358E8801360A31700E4748C /* FEDropShadow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4358E87E1360A31700E4748C /* FEDropShadow.cpp */; }; + 4358E8811360A31700E4748C /* FEDropShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = 4358E87F1360A31700E4748C /* FEDropShadow.h */; }; + 4358E8851360A33B00E4748C /* SVGFEDropShadowElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4358E8821360A33B00E4748C /* SVGFEDropShadowElement.cpp */; }; + 4358E8861360A33B00E4748C /* SVGFEDropShadowElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4358E8831360A33B00E4748C /* SVGFEDropShadowElement.h */; }; + 4362C7B913AC6F1A00344BEB /* SVGAnimatedAngle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4362C7B813AC6F1A00344BEB /* SVGAnimatedAngle.cpp */; }; + 436708C112D9CA4B00044234 /* RenderSVGBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367088212D9CA4A00044234 /* RenderSVGBlock.h */; }; + 436708C312D9CA4B00044234 /* RenderSVGContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367088412D9CA4A00044234 /* RenderSVGContainer.h */; }; + 436708C512D9CA4B00044234 /* RenderSVGGradientStop.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367088612D9CA4A00044234 /* RenderSVGGradientStop.h */; }; + 436708C712D9CA4B00044234 /* RenderSVGHiddenContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367088812D9CA4A00044234 /* RenderSVGHiddenContainer.h */; }; + 436708C912D9CA4B00044234 /* RenderSVGImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367088A12D9CA4A00044234 /* RenderSVGImage.h */; }; + 436708CB12D9CA4B00044234 /* RenderSVGModelObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367088C12D9CA4A00044234 /* RenderSVGModelObject.h */; }; + 436708CD12D9CA4B00044234 /* RenderSVGResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367088E12D9CA4A00044234 /* RenderSVGResource.h */; }; + 436708CF12D9CA4B00044234 /* RenderSVGResourceClipper.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367089012D9CA4A00044234 /* RenderSVGResourceClipper.h */; }; + 436708D112D9CA4B00044234 /* RenderSVGResourceContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367089212D9CA4A00044234 /* RenderSVGResourceContainer.h */; }; + 436708D312D9CA4B00044234 /* RenderSVGResourceFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367089412D9CA4A00044234 /* RenderSVGResourceFilter.h */; }; + 436708D512D9CA4B00044234 /* RenderSVGResourceFilterPrimitive.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367089612D9CA4A00044234 /* RenderSVGResourceFilterPrimitive.h */; }; + 436708D712D9CA4B00044234 /* RenderSVGResourceGradient.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367089812D9CA4A00044234 /* RenderSVGResourceGradient.h */; }; + 436708D912D9CA4B00044234 /* RenderSVGResourceLinearGradient.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367089A12D9CA4B00044234 /* RenderSVGResourceLinearGradient.h */; }; + 436708DB12D9CA4B00044234 /* RenderSVGResourceMarker.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367089C12D9CA4B00044234 /* RenderSVGResourceMarker.h */; }; + 436708DD12D9CA4B00044234 /* RenderSVGResourceMasker.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367089E12D9CA4B00044234 /* RenderSVGResourceMasker.h */; }; + 436708DF12D9CA4B00044234 /* RenderSVGResourcePattern.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708A012D9CA4B00044234 /* RenderSVGResourcePattern.h */; }; + 436708E112D9CA4B00044234 /* RenderSVGResourceRadialGradient.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708A212D9CA4B00044234 /* RenderSVGResourceRadialGradient.h */; }; + 436708E312D9CA4B00044234 /* RenderSVGResourceSolidColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708A412D9CA4B00044234 /* RenderSVGResourceSolidColor.h */; }; + 436708E512D9CA4B00044234 /* RenderSVGRoot.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708A612D9CA4B00044234 /* RenderSVGRoot.h */; }; + 436708E912D9CA4B00044234 /* RenderSVGTransformableContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708AA12D9CA4B00044234 /* RenderSVGTransformableContainer.h */; }; + 436708EB12D9CA4B00044234 /* RenderSVGViewportContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708AC12D9CA4B00044234 /* RenderSVGViewportContainer.h */; }; + 436708EE12D9CA4B00044234 /* SVGMarkerData.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708AF12D9CA4B00044234 /* SVGMarkerData.h */; }; + 436708F212D9CA4B00044234 /* SVGRenderSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708B312D9CA4B00044234 /* SVGRenderSupport.h */; }; + 436708F412D9CA4B00044234 /* SVGRenderTreeAsText.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708B512D9CA4B00044234 /* SVGRenderTreeAsText.h */; }; + 436708F612D9CA4B00044234 /* SVGResources.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708B712D9CA4B00044234 /* SVGResources.h */; }; + 436708F812D9CA4B00044234 /* SVGResourcesCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708B912D9CA4B00044234 /* SVGResourcesCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 436708FA12D9CA4B00044234 /* SVGResourcesCycleSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708BB12D9CA4B00044234 /* SVGResourcesCycleSolver.h */; }; + 4381763B13A697D4007D1187 /* SVGAnimatedLength.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4381763A13A697D4007D1187 /* SVGAnimatedLength.cpp */; }; + 439046D712DA25E800AF80A2 /* RenderMathMLBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046C312DA25E800AF80A2 /* RenderMathMLBlock.cpp */; }; + 439046D812DA25E800AF80A2 /* RenderMathMLBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046C412DA25E800AF80A2 /* RenderMathMLBlock.h */; }; + 439046D912DA25E800AF80A2 /* RenderMathMLFenced.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046C512DA25E800AF80A2 /* RenderMathMLFenced.cpp */; }; + 439046DA12DA25E800AF80A2 /* RenderMathMLFenced.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046C612DA25E800AF80A2 /* RenderMathMLFenced.h */; }; + 439046DB12DA25E800AF80A2 /* RenderMathMLFraction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046C712DA25E800AF80A2 /* RenderMathMLFraction.cpp */; }; + 439046DC12DA25E800AF80A2 /* RenderMathMLFraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046C812DA25E800AF80A2 /* RenderMathMLFraction.h */; }; + 439046DD12DA25E800AF80A2 /* RenderMathMLMath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046C912DA25E800AF80A2 /* RenderMathMLMath.cpp */; }; + 439046DE12DA25E800AF80A2 /* RenderMathMLMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046CA12DA25E800AF80A2 /* RenderMathMLMath.h */; }; + 439046DF12DA25E800AF80A2 /* RenderMathMLOperator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046CB12DA25E800AF80A2 /* RenderMathMLOperator.cpp */; }; + 439046E012DA25E800AF80A2 /* RenderMathMLOperator.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046CC12DA25E800AF80A2 /* RenderMathMLOperator.h */; }; + 439046E112DA25E800AF80A2 /* RenderMathMLRoot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046CD12DA25E800AF80A2 /* RenderMathMLRoot.cpp */; }; + 439046E212DA25E800AF80A2 /* RenderMathMLRoot.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046CE12DA25E800AF80A2 /* RenderMathMLRoot.h */; }; + 439046E312DA25E800AF80A2 /* RenderMathMLRow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046CF12DA25E800AF80A2 /* RenderMathMLRow.cpp */; }; + 439046E412DA25E800AF80A2 /* RenderMathMLRow.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046D012DA25E800AF80A2 /* RenderMathMLRow.h */; }; + 439046E512DA25E800AF80A2 /* RenderMathMLSquareRoot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046D112DA25E800AF80A2 /* RenderMathMLSquareRoot.cpp */; }; + 439046E612DA25E800AF80A2 /* RenderMathMLSquareRoot.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046D212DA25E800AF80A2 /* RenderMathMLSquareRoot.h */; }; + 439046E712DA25E800AF80A2 /* RenderMathMLSubSup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046D312DA25E800AF80A2 /* RenderMathMLSubSup.cpp */; }; + 439046E812DA25E800AF80A2 /* RenderMathMLSubSup.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046D412DA25E800AF80A2 /* RenderMathMLSubSup.h */; }; + 439046E912DA25E800AF80A2 /* RenderMathMLUnderOver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046D512DA25E800AF80A2 /* RenderMathMLUnderOver.cpp */; }; + 439046EA12DA25E800AF80A2 /* RenderMathMLUnderOver.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046D612DA25E800AF80A2 /* RenderMathMLUnderOver.h */; }; + 439D334313A6911C00C20F4F /* SVGAnimatedType.h in Headers */ = {isa = PBXBuildFile; fileRef = 439D334013A6911C00C20F4F /* SVGAnimatedType.h */; }; + 439D334413A6911C00C20F4F /* SVGAnimatedTypeAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 439D334113A6911C00C20F4F /* SVGAnimatedTypeAnimator.h */; }; + 439D334513A6911C00C20F4F /* SVGAnimatorFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 439D334213A6911C00C20F4F /* SVGAnimatorFactory.h */; }; + 43A0F0B113AC7D6D00A5F0A7 /* SVGAnimatedNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A0F0B013AC7D6D00A5F0A7 /* SVGAnimatedNumber.cpp */; }; + 43A0F0B613ACCCFF00A5F0A7 /* SVGAnimatedType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A0F0B513ACCCFF00A5F0A7 /* SVGAnimatedType.cpp */; }; + 43A625F813B3304000AC94B8 /* SVGAnimatedColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A625F613B3304000AC94B8 /* SVGAnimatedColor.h */; }; + 43A625F913B3304000AC94B8 /* SVGAnimatedColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A625F713B3304000AC94B8 /* SVGAnimatedColor.cpp */; }; + 43A6266713B3D11000AC94B8 /* SVGAnimatedString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6266613B3D11000AC94B8 /* SVGAnimatedString.cpp */; }; + 43B9336913B261B1004584BF /* SVGAnimatedPointList.h in Headers */ = {isa = PBXBuildFile; fileRef = 43B9336713B261B1004584BF /* SVGAnimatedPointList.h */; }; + 43B9336A13B261B1004584BF /* SVGAnimatedPointList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43B9336813B261B1004584BF /* SVGAnimatedPointList.cpp */; }; + 43C092BC12D9E4EE00A989C3 /* RenderSVGForeignObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 43C092BA12D9E4EE00A989C3 /* RenderSVGForeignObject.h */; }; + 43D2597713C816F400608559 /* ImageBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43D2597613C816F400608559 /* ImageBuffer.cpp */; }; + 43F6FD9613BCD0B100224052 /* SVGAnimatedInteger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43F6FD9513BCD0B100224052 /* SVGAnimatedInteger.cpp */; }; + 4415292E0E1AE8A000C4A2D0 /* HTMLPlugInImageElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4415292C0E1AE8A000C4A2D0 /* HTMLPlugInImageElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4415292F0E1AE8A000C4A2D0 /* HTMLPlugInImageElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4415292D0E1AE8A000C4A2D0 /* HTMLPlugInImageElement.cpp */; }; + 441B055C0CD77A2D007C1F18 /* DOMHTMLEmbedElementPrivate.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 4429AAFB0CB84E88007647C5 /* DOMHTMLEmbedElementPrivate.h */; }; + 441B055E0CD77A48007C1F18 /* DOMHTMLIFrameElementPrivate.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 4429AAFD0CB84EA5007647C5 /* DOMHTMLIFrameElementPrivate.h */; }; + 441B05600CD77A65007C1F18 /* DOMHTMLObjectElementPrivate.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 4429AAFF0CB84EC3007647C5 /* DOMHTMLObjectElementPrivate.h */; }; + 44311CD612E4E22D000A8D19 /* DOMDocumentFragmentPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 44311CD412E4E22D000A8D19 /* DOMDocumentFragmentPrivate.h */; }; + 44311CD712E4E22D000A8D19 /* DOMDocumentPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 44311CD512E4E22D000A8D19 /* DOMDocumentPrivate.h */; }; + 44311CD812E4E24B000A8D19 /* DOMDocumentPrivate.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 44311CD512E4E22D000A8D19 /* DOMDocumentPrivate.h */; }; + 44311CD912E4E257000A8D19 /* DOMDocumentFragmentPrivate.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 44311CD412E4E22D000A8D19 /* DOMDocumentFragmentPrivate.h */; }; + 44311F8212E4E66C000A8D19 /* DOMDocumentFragmentInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711450AC5D5340053270F /* DOMDocumentFragmentInternal.h */; }; + 447958041643B49A001E0A7F /* ParsedContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 447958031643B47B001E0A7F /* ParsedContentType.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 447958051643B4B2001E0A7F /* ParsedContentType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 447958021643B47B001E0A7F /* ParsedContentType.cpp */; }; + 448A29BF0A46D9CB0030759F /* JSHTMLOptionsCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 448A29BD0A46D9CB0030759F /* JSHTMLOptionsCollection.h */; }; + 448A29C00A46D9CB0030759F /* JSHTMLOptionsCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 448A29BE0A46D9CB0030759F /* JSHTMLOptionsCollection.cpp */; }; + 448AD27C0A48137A0023D179 /* JSHTMLOptionsCollectionCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 448AD27A0A4813790023D179 /* JSHTMLOptionsCollectionCustom.cpp */; }; + 4496E39D1398136C003EE32A /* JSSVGAnimateMotionElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4496E39B1398136C003EE32A /* JSSVGAnimateMotionElement.cpp */; }; + 4496E39E1398136C003EE32A /* JSSVGAnimateMotionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4496E39C1398136C003EE32A /* JSSVGAnimateMotionElement.h */; }; + 4496E3A0139813A5003EE32A /* JSSVGMPathElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4496E39F139813A5003EE32A /* JSSVGMPathElement.h */; }; + 4496E3A2139813CB003EE32A /* JSSVGMPathElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4496E3A1139813CB003EE32A /* JSSVGMPathElement.cpp */; }; + 449B19F50FA72ECE0015CA4A /* HTMLParserQuirks.h in Headers */ = {isa = PBXBuildFile; fileRef = 449B19F30FA72ECE0015CA4A /* HTMLParserQuirks.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 44A28AAC12DFB8AC00AE923B /* MathMLElementFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 44A28AAB12DFB8AC00AE923B /* MathMLElementFactory.h */; }; + 44A28AAF12DFB8BF00AE923B /* MathMLNames.h in Headers */ = {isa = PBXBuildFile; fileRef = 44A28AAE12DFB8BF00AE923B /* MathMLNames.h */; }; + 44DAB5B115A623580097C1E4 /* Extensions3DOpenGLCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 44DAB5AF15A623580097C1E4 /* Extensions3DOpenGLCommon.cpp */; }; + 44DAB5B215A623580097C1E4 /* Extensions3DOpenGLCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 44DAB5B015A623580097C1E4 /* Extensions3DOpenGLCommon.h */; }; + 45099C411370A7800058D513 /* IconURL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45099C401370A7800058D513 /* IconURL.cpp */; }; + 450CEBF015073BBE002BB149 /* LabelableElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 450CEBEE15073BBE002BB149 /* LabelableElement.cpp */; }; + 450CEBF115073BBE002BB149 /* LabelableElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 450CEBEF15073BBE002BB149 /* LabelableElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4512502215DCE37D002F84E2 /* SpinButtonElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4512502015DCE37D002F84E2 /* SpinButtonElement.cpp */; }; + 4512502315DCE37D002F84E2 /* SpinButtonElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4512502115DCE37D002F84E2 /* SpinButtonElement.h */; }; + 453EB637159C570400001BB7 /* DateTimeFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 453EB635159C570400001BB7 /* DateTimeFormat.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 45830D4D1679B4F800ACF8C3 /* AutoscrollController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45830D4B1679B4F800ACF8C3 /* AutoscrollController.cpp */; }; + 45830D4E1679B4F800ACF8C3 /* AutoscrollController.h in Headers */ = {isa = PBXBuildFile; fileRef = 45830D4C1679B4F800ACF8C3 /* AutoscrollController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 458FE4091589DF0B005609E6 /* RenderSearchField.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 458FE4071589DF0B005609E6 /* RenderSearchField.cpp */; }; + 458FE40A1589DF0B005609E6 /* RenderSearchField.h in Headers */ = {isa = PBXBuildFile; fileRef = 458FE4081589DF0B005609E6 /* RenderSearchField.h */; }; + 45BAC2B01360BBAB005DA258 /* IconURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 45BAC2AF1360BBAB005DA258 /* IconURL.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 45FEA5CF156DDE8C00654101 /* Decimal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45FEA5CD156DDE8C00654101 /* Decimal.cpp */; }; + 45FEA5D0156DDE8C00654101 /* Decimal.h in Headers */ = {isa = PBXBuildFile; fileRef = 45FEA5CE156DDE8C00654101 /* Decimal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 46700ED1127B96CB00F5D5D6 /* FileWriterSync.h in Headers */ = {isa = PBXBuildFile; fileRef = 46700ECF127B96CB00F5D5D6 /* FileWriterSync.h */; }; + 4689F1AF1267BAE100E8D380 /* FileMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 4689F1AE1267BAE100E8D380 /* FileMetadata.h */; }; + 46BC724F129B104C0071C07E /* FileWriterBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 46BC724C129B104C0071C07E /* FileWriterBase.h */; }; + 46BC7250129B104C0071C07E /* FileWriterBaseCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 46BC724D129B104C0071C07E /* FileWriterBaseCallback.h */; }; + 46BD16E30B279473001F0839 /* noneCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 46BD16E20B279473001F0839 /* noneCursor.png */; }; + 46D4F2490AF97E810035385A /* cellCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 46D4F2460AF97E810035385A /* cellCursor.png */; }; + 46D4F24B0AF97E810035385A /* verticalTextCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 46D4F2480AF97E810035385A /* verticalTextCursor.png */; }; + 46DA844E1224A0710060D006 /* JSFileWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 46DA844C1224A0710060D006 /* JSFileWriter.h */; }; + 46F9D5DD0B0D60170028EE36 /* aliasCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 46F9D5DA0B0D60170028EE36 /* aliasCursor.png */; }; + 46F9D5DF0B0D60170028EE36 /* progressCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 46F9D5DC0B0D60170028EE36 /* progressCursor.png */; }; + 490707E61219C04300D90E51 /* ANGLEWebKitBridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 490707E41219C04300D90E51 /* ANGLEWebKitBridge.cpp */; }; + 490707E71219C04300D90E51 /* ANGLEWebKitBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 490707E51219C04300D90E51 /* ANGLEWebKitBridge.h */; }; + 49140256168E02E8002D6C6A /* TimelineTraceEventProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49140254168E02B4002D6C6A /* TimelineTraceEventProcessor.cpp */; }; + 49140257168E02EC002D6C6A /* TimelineTraceEventProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 49140255168E02B4002D6C6A /* TimelineTraceEventProcessor.h */; }; + 49182B5215DCE6F000548418 /* PlatformInstrumentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49182B5015DCE6F000548418 /* PlatformInstrumentation.cpp */; }; + 49182B5315DCE6F000548418 /* PlatformInstrumentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 49182B5115DCE6F000548418 /* PlatformInstrumentation.h */; }; + 49291E4B134172C800E753DE /* ImageRenderingMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 49291E4A134172C800E753DE /* ImageRenderingMode.h */; }; + 493E5E0912D6420500020081 /* PlatformCALayerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 493E5E0812D6420500020081 /* PlatformCALayerClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4945BFD313CF809000CC3B38 /* TransformState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4945BFD113CF809000CC3B38 /* TransformState.cpp */; }; + 4945BFD413CF809000CC3B38 /* TransformState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4945BFD213CF809000CC3B38 /* TransformState.h */; }; + 49484FC1102CF23C00187DD3 /* CanvasGradient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49484FB3102CF23C00187DD3 /* CanvasGradient.cpp */; }; + 49484FC2102CF23C00187DD3 /* CanvasGradient.h in Headers */ = {isa = PBXBuildFile; fileRef = 49484FB4102CF23C00187DD3 /* CanvasGradient.h */; }; + 49484FC4102CF23C00187DD3 /* CanvasPattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49484FB6102CF23C00187DD3 /* CanvasPattern.cpp */; }; + 49484FC5102CF23C00187DD3 /* CanvasPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = 49484FB7102CF23C00187DD3 /* CanvasPattern.h */; }; + 49484FC5102CF23C00188DD3 /* CanvasProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 49484FB7102CF23C00188DD3 /* CanvasProxy.h */; }; + 49484FCA102CF23C00187DD3 /* CanvasRenderingContext2D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49484FBC102CF23C00187DD3 /* CanvasRenderingContext2D.cpp */; }; + 49484FCB102CF23C00187DD3 /* CanvasRenderingContext2D.h in Headers */ = {isa = PBXBuildFile; fileRef = 49484FBD102CF23C00187DD3 /* CanvasRenderingContext2D.h */; }; + 49484FCD102CF23C00187DD3 /* CanvasStyle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49484FBF102CF23C00187DD3 /* CanvasStyle.cpp */; }; + 49484FCE102CF23C00187DD3 /* CanvasStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 49484FC0102CF23C00187DD3 /* CanvasStyle.h */; }; + 494BC40D12AEDD9E00743BD2 /* TransformationMatrixCA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 494BC40C12AEDD9E00743BD2 /* TransformationMatrixCA.cpp */; }; + 494BD7950F55C8EE00747828 /* WebKitPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 494BD7930F55C8EE00747828 /* WebKitPoint.h */; }; + 494BD79D0F55C94C00747828 /* JSWebKitPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 494BD79B0F55C94C00747828 /* JSWebKitPoint.cpp */; }; + 494BD79E0F55C94C00747828 /* JSWebKitPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 494BD79C0F55C94C00747828 /* JSWebKitPoint.h */; }; + 4958782112A57DDF007238AC /* PlatformCAAnimationMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4958781F12A57DDF007238AC /* PlatformCAAnimationMac.mm */; }; + 4958782212A57DDF007238AC /* PlatformCALayerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4958782012A57DDF007238AC /* PlatformCALayerMac.mm */; }; + 4969B0F213D0B33F00DF3521 /* HitTestingTransformState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4969B0F013D0B33F00DF3521 /* HitTestingTransformState.cpp */; }; + 4969B0F313D0B33F00DF3521 /* HitTestingTransformState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4969B0F113D0B33F00DF3521 /* HitTestingTransformState.h */; }; + 4983913F0F1E767500C23782 /* JSWebKitCSSMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4983913D0F1E767500C23782 /* JSWebKitCSSMatrix.cpp */; }; + 498391400F1E767500C23782 /* JSWebKitCSSMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = 4983913E0F1E767500C23782 /* JSWebKitCSSMatrix.h */; }; + 498391500F1E76B400C23782 /* DOMWebKitCSSMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = 4983914D0F1E76B400C23782 /* DOMWebKitCSSMatrix.h */; }; + 498391510F1E76B400C23782 /* DOMWebKitCSSMatrix.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4983914E0F1E76B400C23782 /* DOMWebKitCSSMatrix.mm */; }; + 498391520F1E76B400C23782 /* DOMWebKitCSSMatrixInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4983914F0F1E76B400C23782 /* DOMWebKitCSSMatrixInternal.h */; }; + 498391580F1E776900C23782 /* WebKitCSSMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 498391550F1E776900C23782 /* WebKitCSSMatrix.cpp */; }; + 498391590F1E776900C23782 /* WebKitCSSMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = 498391560F1E776900C23782 /* WebKitCSSMatrix.h */; }; + 498770DB1242C535002226BA /* DrawingBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 498770C21242C535002226BA /* DrawingBuffer.cpp */; }; + 498770DC1242C535002226BA /* DrawingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 498770C31242C535002226BA /* DrawingBuffer.h */; }; + 498770E91242C535002226BA /* Shader.h in Headers */ = {isa = PBXBuildFile; fileRef = 498770D01242C535002226BA /* Shader.h */; }; + 498770F01242C535002226BA /* Texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 498770D71242C535002226BA /* Texture.cpp */; }; + 498770F11242C535002226BA /* Texture.h in Headers */ = {isa = PBXBuildFile; fileRef = 498770D81242C535002226BA /* Texture.h */; }; + 498770F21242C535002226BA /* TilingData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 498770D91242C535002226BA /* TilingData.cpp */; }; + 498770F31242C535002226BA /* TilingData.h in Headers */ = {isa = PBXBuildFile; fileRef = 498770DA1242C535002226BA /* TilingData.h */; }; + 498771531243F9FA002226BA /* DrawingBufferMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 498771521243F9FA002226BA /* DrawingBufferMac.mm */; }; + 4998AEC613F9D0EA0090B1AA /* RequestAnimationFrameCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 4998AEC413F9D0EA0090B1AA /* RequestAnimationFrameCallback.h */; }; + 4998AECD13F9D6C90090B1AA /* JSRequestAnimationFrameCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4998AECB13F9D6C90090B1AA /* JSRequestAnimationFrameCallback.cpp */; }; + 4998AECE13F9D6C90090B1AA /* JSRequestAnimationFrameCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 4998AECC13F9D6C90090B1AA /* JSRequestAnimationFrameCallback.h */; }; + 4998AED113FB224D0090B1AA /* ScriptedAnimationController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4998AECF13FB224D0090B1AA /* ScriptedAnimationController.cpp */; }; + 4998AED213FB224D0090B1AA /* ScriptedAnimationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4998AED013FB224D0090B1AA /* ScriptedAnimationController.h */; }; + 4998AED413FC417F0090B1AA /* JSRequestAnimationFrameCallbackCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4998AED313FC417F0090B1AA /* JSRequestAnimationFrameCallbackCustom.cpp */; }; + 499B3EC5128CCC4700E726C2 /* PlatformCALayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 499B3EC3128CCC4700E726C2 /* PlatformCALayer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 499B3ED6128CD31400E726C2 /* GraphicsLayerCA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 499B3ED4128CD31400E726C2 /* GraphicsLayerCA.cpp */; }; + 499B3ED7128CD31400E726C2 /* GraphicsLayerCA.h in Headers */ = {isa = PBXBuildFile; fileRef = 499B3ED5128CD31400E726C2 /* GraphicsLayerCA.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 499B3EDD128DB50200E726C2 /* PlatformCAAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 499B3EDC128DB50100E726C2 /* PlatformCAAnimation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49AE2D8E134EE50C0072920A /* CSSCalculationValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49AE2D8C134EE50C0072920A /* CSSCalculationValue.cpp */; }; + 49AE2D8F134EE50C0072920A /* CSSCalculationValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 49AE2D8D134EE50C0072920A /* CSSCalculationValue.h */; }; + 49AE2D96134EE5F90072920A /* CalculationValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49AE2D94134EE5F90072920A /* CalculationValue.cpp */; }; + 49AE2D97134EE5F90072920A /* CalculationValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 49AE2D95134EE5F90072920A /* CalculationValue.h */; }; + 49AF2D6914435D050016A784 /* DisplayRefreshMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 49AF2D6814435D050016A784 /* DisplayRefreshMonitor.h */; }; + 49AF2D6C14435D210016A784 /* DisplayRefreshMonitorMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49AF2D6B14435D210016A784 /* DisplayRefreshMonitorMac.cpp */; }; + 49B3760C15C6C6840059131D /* ArrayValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49B3760A15C6C6840059131D /* ArrayValue.cpp */; }; + 49B3760D15C6C6840059131D /* ArrayValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 49B3760B15C6C6840059131D /* ArrayValue.h */; }; + 49C7B9931042D2D30009D447 /* JSWebGLBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B9801042D2D30009D447 /* JSWebGLBuffer.cpp */; }; + 49C7B9941042D2D30009D447 /* JSWebGLBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9811042D2D30009D447 /* JSWebGLBuffer.h */; }; + 49C7B9951042D2D30009D447 /* JSInt8Array.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B9821042D2D30009D447 /* JSInt8Array.cpp */; }; + 49C7B9961042D2D30009D447 /* JSInt8Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9831042D2D30009D447 /* JSInt8Array.h */; }; + 49C7B9971042D2D30009D447 /* JSWebGLFramebuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B9841042D2D30009D447 /* JSWebGLFramebuffer.cpp */; }; + 49C7B9981042D2D30009D447 /* JSWebGLFramebuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9851042D2D30009D447 /* JSWebGLFramebuffer.h */; }; + 49C7B99B1042D2D30009D447 /* JSWebGLProgram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B9881042D2D30009D447 /* JSWebGLProgram.cpp */; }; + 49C7B99C1042D2D30009D447 /* JSWebGLProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9891042D2D30009D447 /* JSWebGLProgram.h */; }; + 49C7B99D1042D2D30009D447 /* JSWebGLRenderbuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B98A1042D2D30009D447 /* JSWebGLRenderbuffer.cpp */; }; + 49C7B99E1042D2D30009D447 /* JSWebGLRenderbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B98B1042D2D30009D447 /* JSWebGLRenderbuffer.h */; }; + 49C7B9A21042D2D30009D447 /* JSWebGLShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B98F1042D2D30009D447 /* JSWebGLShader.cpp */; }; + 49C7B9A31042D2D30009D447 /* JSWebGLShader.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9901042D2D30009D447 /* JSWebGLShader.h */; }; + 49C7B9A41042D2D30009D447 /* JSWebGLTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B9911042D2D30009D447 /* JSWebGLTexture.cpp */; }; + 49C7B9A51042D2D30009D447 /* JSWebGLTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9921042D2D30009D447 /* JSWebGLTexture.h */; }; + 49C7B9C81042D32F0009D447 /* WebGLBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B9A81042D32E0009D447 /* WebGLBuffer.cpp */; }; + 49C7B9C91042D32F0009D447 /* WebGLBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9A91042D32E0009D447 /* WebGLBuffer.h */; }; + 49C7B9CE1042D32F0009D447 /* WebGLFramebuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B9AE1042D32E0009D447 /* WebGLFramebuffer.cpp */; }; + 49C7B9CF1042D32F0009D447 /* WebGLFramebuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9AF1042D32E0009D447 /* WebGLFramebuffer.h */; }; + 49C7B9D41042D32F0009D447 /* WebGLObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B9B41042D32F0009D447 /* WebGLObject.cpp */; }; + 49C7B9D51042D32F0009D447 /* WebGLObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9B51042D32F0009D447 /* WebGLObject.h */; }; + 49C7B9D61042D32F0009D447 /* WebGLProgram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B9B61042D32F0009D447 /* WebGLProgram.cpp */; }; + 49C7B9D71042D32F0009D447 /* WebGLProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9B71042D32F0009D447 /* WebGLProgram.h */; }; + 49C7B9D91042D32F0009D447 /* WebGLRenderbuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B9B91042D32F0009D447 /* WebGLRenderbuffer.cpp */; }; + 49C7B9DA1042D32F0009D447 /* WebGLRenderbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9BA1042D32F0009D447 /* WebGLRenderbuffer.h */; }; + 49C7B9DC1042D32F0009D447 /* CanvasRenderingContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B9BC1042D32F0009D447 /* CanvasRenderingContext.cpp */; }; + 49C7B9DD1042D32F0009D447 /* CanvasRenderingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9BD1042D32F0009D447 /* CanvasRenderingContext.h */; }; + 49C7B9DF1042D32F0009D447 /* WebGLRenderingContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B9BF1042D32F0009D447 /* WebGLRenderingContext.cpp */; }; + 49C7B9E01042D32F0009D447 /* WebGLRenderingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9C01042D32F0009D447 /* WebGLRenderingContext.h */; }; + 49C7B9E21042D32F0009D447 /* WebGLShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B9C21042D32F0009D447 /* WebGLShader.cpp */; }; + 49C7B9E31042D32F0009D447 /* WebGLShader.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9C31042D32F0009D447 /* WebGLShader.h */; }; + 49C7B9E51042D32F0009D447 /* WebGLTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7B9C51042D32F0009D447 /* WebGLTexture.cpp */; }; + 49C7B9E61042D32F0009D447 /* WebGLTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9C61042D32F0009D447 /* WebGLTexture.h */; }; + 49C7B9FC1042D3650009D447 /* GraphicsContext3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C7B9FB1042D3650009D447 /* GraphicsContext3D.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49C7BA791042EFAE0009D447 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49C7BA781042EFAE0009D447 /* OpenGL.framework */; }; + 49C7BA8D1042F5B10009D447 /* JSDocumentCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C7BA8C1042F5B10009D447 /* JSDocumentCustom.cpp */; }; + 49D5DC2B0F423A73008F20FD /* Matrix3DTransformOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49D5DC270F423A73008F20FD /* Matrix3DTransformOperation.cpp */; }; + 49D5DC2C0F423A73008F20FD /* Matrix3DTransformOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 49D5DC280F423A73008F20FD /* Matrix3DTransformOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49D5DC2D0F423A73008F20FD /* PerspectiveTransformOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49D5DC290F423A73008F20FD /* PerspectiveTransformOperation.cpp */; }; + 49D5DC2E0F423A73008F20FD /* PerspectiveTransformOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 49D5DC2A0F423A73008F20FD /* PerspectiveTransformOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49E911C30EF86D47009D0CAF /* TransformationMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49E911B30EF86D47009D0CAF /* TransformationMatrix.cpp */; }; + 49E911C40EF86D47009D0CAF /* TransformationMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E911B40EF86D47009D0CAF /* TransformationMatrix.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49E911C50EF86D47009D0CAF /* IdentityTransformOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E911B50EF86D47009D0CAF /* IdentityTransformOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49E911C60EF86D47009D0CAF /* MatrixTransformOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49E911B60EF86D47009D0CAF /* MatrixTransformOperation.cpp */; }; + 49E911C70EF86D47009D0CAF /* MatrixTransformOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E911B70EF86D47009D0CAF /* MatrixTransformOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49E911C80EF86D47009D0CAF /* RotateTransformOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49E911B80EF86D47009D0CAF /* RotateTransformOperation.cpp */; }; + 49E911C90EF86D47009D0CAF /* RotateTransformOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E911B90EF86D47009D0CAF /* RotateTransformOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49E911CA0EF86D47009D0CAF /* ScaleTransformOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49E911BA0EF86D47009D0CAF /* ScaleTransformOperation.cpp */; }; + 49E911CB0EF86D47009D0CAF /* ScaleTransformOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E911BB0EF86D47009D0CAF /* ScaleTransformOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49E911CC0EF86D47009D0CAF /* SkewTransformOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49E911BC0EF86D47009D0CAF /* SkewTransformOperation.cpp */; }; + 49E911CD0EF86D47009D0CAF /* SkewTransformOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E911BD0EF86D47009D0CAF /* SkewTransformOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49E911CE0EF86D47009D0CAF /* TransformOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E911BE0EF86D47009D0CAF /* TransformOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49E911CF0EF86D47009D0CAF /* TransformOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49E911BF0EF86D47009D0CAF /* TransformOperations.cpp */; }; + 49E911D00EF86D47009D0CAF /* TransformOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E911C00EF86D47009D0CAF /* TransformOperations.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49E911D10EF86D47009D0CAF /* TranslateTransformOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49E911C10EF86D47009D0CAF /* TranslateTransformOperation.cpp */; }; + 49E911D20EF86D47009D0CAF /* TranslateTransformOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E911C20EF86D47009D0CAF /* TranslateTransformOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49E912AA0EFAC906009D0CAF /* Animation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49E912A50EFAC906009D0CAF /* Animation.cpp */; }; + 49E912AB0EFAC906009D0CAF /* Animation.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E912A60EFAC906009D0CAF /* Animation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49E912AC0EFAC906009D0CAF /* AnimationList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49E912A70EFAC906009D0CAF /* AnimationList.cpp */; }; + 49E912AD0EFAC906009D0CAF /* AnimationList.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E912A80EFAC906009D0CAF /* AnimationList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49E912AE0EFAC906009D0CAF /* TimingFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E912A90EFAC906009D0CAF /* TimingFunction.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49ECEB6D1499790D00CDD3A4 /* FilterOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49ECEB631499790D00CDD3A4 /* FilterOperation.cpp */; }; + 49ECEB6E1499790D00CDD3A4 /* FilterOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 49ECEB641499790D00CDD3A4 /* FilterOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49ECEB6F1499790D00CDD3A4 /* FilterOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49ECEB651499790D00CDD3A4 /* FilterOperations.cpp */; }; + 49ECEB701499790D00CDD3A4 /* FilterOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 49ECEB661499790D00CDD3A4 /* FilterOperations.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49EECF00105070C400099FAB /* JSArrayBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EECEF2105070C400099FAB /* JSArrayBuffer.cpp */; }; + 49EECF01105070C400099FAB /* JSArrayBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 49EECEF3105070C400099FAB /* JSArrayBuffer.h */; }; + 49EECF02105070C400099FAB /* JSFloat32Array.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EECEF4105070C400099FAB /* JSFloat32Array.cpp */; }; + 49EECF03105070C400099FAB /* JSFloat32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 49EECEF5105070C400099FAB /* JSFloat32Array.h */; }; + 49EECF04105070C400099FAB /* JSInt32Array.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EECEF6105070C400099FAB /* JSInt32Array.cpp */; }; + 49EECF05105070C400099FAB /* JSInt32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 49EECEF7105070C400099FAB /* JSInt32Array.h */; }; + 49EECF06105070C400099FAB /* JSInt16Array.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EECEF8105070C400099FAB /* JSInt16Array.cpp */; }; + 49EECF07105070C400099FAB /* JSInt16Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 49EECEF9105070C400099FAB /* JSInt16Array.h */; }; + 49EECF08105070C400099FAB /* JSUint8Array.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EECEFA105070C400099FAB /* JSUint8Array.cpp */; }; + 49EECF09105070C400099FAB /* JSUint8Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 49EECEFB105070C400099FAB /* JSUint8Array.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49EECF0A105070C400099FAB /* JSUint32Array.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EECEFC105070C400099FAB /* JSUint32Array.cpp */; }; + 49EECF0B105070C400099FAB /* JSUint32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 49EECEFD105070C400099FAB /* JSUint32Array.h */; }; + 49EECF0C105070C400099FAB /* JSUint16Array.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EECEFE105070C400099FAB /* JSUint16Array.cpp */; }; + 49EECF0D105070C400099FAB /* JSUint16Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 49EECEFF105070C400099FAB /* JSUint16Array.h */; }; + 49EECF1B105072F300099FAB /* JSArrayBufferView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EECF19105072F300099FAB /* JSArrayBufferView.cpp */; }; + 49EECF1C105072F300099FAB /* JSArrayBufferView.h in Headers */ = {isa = PBXBuildFile; fileRef = 49EECF1A105072F300099FAB /* JSArrayBufferView.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 49EED1421051969400099FAB /* JSCanvasRenderingContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EED13C1051969400099FAB /* JSCanvasRenderingContext.cpp */; }; + 49EED1431051969400099FAB /* JSCanvasRenderingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 49EED13D1051969400099FAB /* JSCanvasRenderingContext.h */; }; + 49EED1441051969400099FAB /* JSCanvasRenderingContext2D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EED13E1051969400099FAB /* JSCanvasRenderingContext2D.cpp */; }; + 49EED1451051969400099FAB /* JSCanvasRenderingContext2D.h in Headers */ = {isa = PBXBuildFile; fileRef = 49EED13F1051969400099FAB /* JSCanvasRenderingContext2D.h */; }; + 49EED1461051969400099FAB /* JSWebGLRenderingContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EED1401051969400099FAB /* JSWebGLRenderingContext.cpp */; }; + 49EED1471051969400099FAB /* JSWebGLRenderingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 49EED1411051969400099FAB /* JSWebGLRenderingContext.h */; }; + 49EED14E1051971A00099FAB /* JSCanvasRenderingContext2DCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EED14B1051971900099FAB /* JSCanvasRenderingContext2DCustom.cpp */; }; + 49EED14F1051971A00099FAB /* JSWebGLRenderingContextCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EED14C1051971A00099FAB /* JSWebGLRenderingContextCustom.cpp */; }; + 49EED1501051971A00099FAB /* JSCanvasRenderingContextCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EED14D1051971A00099FAB /* JSCanvasRenderingContextCustom.cpp */; }; + 49FC7A501444AF5F00A5D864 /* DisplayRefreshMonitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49FC7A4F1444AF5F00A5D864 /* DisplayRefreshMonitor.cpp */; }; + 49FFBF1D11C8550E006A7118 /* GraphicsContext3DMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49FFBF1C11C8550E006A7118 /* GraphicsContext3DMac.mm */; }; + 49FFBF3F11C93EE3006A7118 /* WebGLLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 49FFBF3D11C93EE3006A7118 /* WebGLLayer.h */; }; + 49FFBF4011C93EE3006A7118 /* WebGLLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49FFBF3E11C93EE3006A7118 /* WebGLLayer.mm */; }; + 4A0DA2FE129B241900AB61E1 /* FormAssociatedElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A0DA2FC129B241900AB61E1 /* FormAssociatedElement.cpp */; }; + 4A0DA2FF129B241900AB61E1 /* FormAssociatedElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A0DA2FD129B241900AB61E1 /* FormAssociatedElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4A1E719014E101E400626F9D /* JSHTMLContentElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A1E718E14E101E400626F9D /* JSHTMLContentElement.cpp */; }; + 4A1E719114E101E400626F9D /* JSHTMLContentElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A1E718F14E101E400626F9D /* JSHTMLContentElement.h */; }; + 4A1E71A614E106AC00626F9D /* JSShadowRoot.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A1E71A414E106AC00626F9D /* JSShadowRoot.h */; }; + 4A38BF5014FE1C0900612512 /* WebSocketDeflateFramer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A38BF4E14FE1C0900612512 /* WebSocketDeflateFramer.cpp */; }; + 4A38BF5114FE1C0900612512 /* WebSocketDeflateFramer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A38BF4F14FE1C0900612512 /* WebSocketDeflateFramer.h */; }; + 4A4F48A916B0DFC000EDBB29 /* DocumentRuleSets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A4F48A716B0DFC000EDBB29 /* DocumentRuleSets.cpp */; }; + 4A4F48AA16B0DFC000EDBB29 /* DocumentRuleSets.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A4F48A816B0DFC000EDBB29 /* DocumentRuleSets.h */; }; + 4A5A2ADB161E7E00005889DD /* WebSocketExtensionParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A5A2AD9161E7E00005889DD /* WebSocketExtensionParser.cpp */; }; + 4A5A2ADC161E7E00005889DD /* WebSocketExtensionParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A5A2ADA161E7E00005889DD /* WebSocketExtensionParser.h */; }; + 4A5CB1C516C3A5FD00AB2886 /* EventRetargeter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A5CB1C316C3A5FD00AB2886 /* EventRetargeter.cpp */; }; + 4A5CB1C616C3A5FD00AB2886 /* EventRetargeter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A5CB1C416C3A5FD00AB2886 /* EventRetargeter.h */; }; + 4A6A0C5B15232F2400B09C6E /* ComposedShadowTreeWalker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A6A0C5915232F2400B09C6E /* ComposedShadowTreeWalker.cpp */; }; + 4A6A0C5C15232F2400B09C6E /* ComposedShadowTreeWalker.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A6A0C5A15232F2400B09C6E /* ComposedShadowTreeWalker.h */; }; + 4A6E9FC313C17D1D0046A7F8 /* FontFeatureValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A6E9FC113C17D1D0046A7F8 /* FontFeatureValue.cpp */; }; + 4A6E9FC413C17D1D0046A7F8 /* FontFeatureValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A6E9FC213C17D1D0046A7F8 /* FontFeatureValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4A6E9FC713C17D570046A7F8 /* FontFeatureSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A6E9FC513C17D570046A7F8 /* FontFeatureSettings.cpp */; }; + 4A6E9FC813C17D570046A7F8 /* FontFeatureSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A6E9FC613C17D570046A7F8 /* FontFeatureSettings.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4A8C96EB0BE69032004EEFF0 /* FrameSelectionMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4A8C96EA0BE69032004EEFF0 /* FrameSelectionMac.mm */; }; + 4A9CC81716BB9AC600EC645A /* CSSDefaultStyleSheets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A9CC81516BB9AC600EC645A /* CSSDefaultStyleSheets.cpp */; }; + 4A9CC81816BB9AC600EC645A /* CSSDefaultStyleSheets.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A9CC81616BB9AC600EC645A /* CSSDefaultStyleSheets.h */; }; + 4A9CC82016BF9BB400EC645A /* InspectorCSSOMWrappers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A9CC81E16BF9BB400EC645A /* InspectorCSSOMWrappers.cpp */; }; + 4A9CC82116BF9BB400EC645A /* InspectorCSSOMWrappers.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A9CC81F16BF9BB400EC645A /* InspectorCSSOMWrappers.h */; }; + 4AAAB4C416D379B5001DA41B /* EventPathWalker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AAAB4C216D379B5001DA41B /* EventPathWalker.cpp */; }; + 4AAAB4C516D379B5001DA41B /* EventPathWalker.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AAAB4C316D379B5001DA41B /* EventPathWalker.h */; }; + 4ACBC0BE12713CBD0094F9B2 /* ClassList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4ACBC0BC12713CBD0094F9B2 /* ClassList.cpp */; }; + 4ACBC0BF12713CBD0094F9B2 /* ClassList.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ACBC0BD12713CBD0094F9B2 /* ClassList.h */; }; + 4ACBC0C312713CCA0094F9B2 /* DOMSettableTokenList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4ACBC0C012713CCA0094F9B2 /* DOMSettableTokenList.cpp */; }; + 4ACBC0C412713CCA0094F9B2 /* DOMSettableTokenList.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ACBC0C112713CCA0094F9B2 /* DOMSettableTokenList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4ACBC0CA12713D0A0094F9B2 /* JSDOMSettableTokenList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4ACBC0C812713D0A0094F9B2 /* JSDOMSettableTokenList.cpp */; }; + 4ACBC0CB12713D0A0094F9B2 /* JSDOMSettableTokenList.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ACBC0C912713D0A0094F9B2 /* JSDOMSettableTokenList.h */; }; + 4AD01008127E642A0015035F /* HTMLOutputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AD01005127E642A0015035F /* HTMLOutputElement.cpp */; }; + 4AD01009127E642A0015035F /* HTMLOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AD01006127E642A0015035F /* HTMLOutputElement.h */; }; + 4AD0173C127E82860015035F /* JSHTMLOutputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AD0173A127E82860015035F /* JSHTMLOutputElement.cpp */; }; + 4AD0173D127E82860015035F /* JSHTMLOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AD0173B127E82860015035F /* JSHTMLOutputElement.h */; }; + 4AF1AD3E13FD23A400AA9590 /* EventDispatchMediator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AF1AD3C13FD23A400AA9590 /* EventDispatchMediator.cpp */; }; + 4AF1AD3F13FD23A400AA9590 /* EventDispatchMediator.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AF1AD3D13FD23A400AA9590 /* EventDispatchMediator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4B2708C70AF19EE40065127F /* Pasteboard.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B2708C50AF19EE40065127F /* Pasteboard.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4B2709830AF2E5E00065127F /* PasteboardMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B2709810AF2E5E00065127F /* PasteboardMac.mm */; }; + 4B3043C70AE0370300A82647 /* Sound.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3043C60AE0370300A82647 /* Sound.h */; }; + 4B3043C90AE0371D00A82647 /* SoundMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B3043C80AE0371D00A82647 /* SoundMac.mm */; }; + 4B3043CC0AE0373B00A82647 /* Editor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B3043CA0AE0373B00A82647 /* Editor.cpp */; }; + 4B3043CD0AE0373B00A82647 /* Editor.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3043CB0AE0373B00A82647 /* Editor.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4B3480930EEF50D400AC1B41 /* ImageSourceCGMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B3480910EEF50D400AC1B41 /* ImageSourceCGMac.mm */; }; + 4B3480940EEF50D400AC1B41 /* ImageSourceCG.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3480920EEF50D400AC1B41 /* ImageSourceCG.h */; }; + 4B6FA6F40C39E48C00087011 /* SmartReplace.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B6FA6F20C39E48C00087011 /* SmartReplace.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4B6FA6F70C39E4A100087011 /* SmartReplaceCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B6FA6F60C39E4A100087011 /* SmartReplaceCF.cpp */; }; + 4B8AF4AA0B1CE02B00687690 /* ClipboardAccessPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B8AF4A90B1CE02B00687690 /* ClipboardAccessPolicy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4BAE95B10B2FA9CE00AED8A0 /* EditorDeleteAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BAE95B00B2FA9CE00AED8A0 /* EditorDeleteAction.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4D273CF91669420800259CA1 /* InspectorInputAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D273CF71669420800259CA1 /* InspectorInputAgent.cpp */; }; + 4D273CFA1669420800259CA1 /* InspectorInputAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D273CF81669420800259CA1 /* InspectorInputAgent.h */; }; + 4E1959210A39DABA00220FE5 /* MediaFeatureNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E19591F0A39DABA00220FE5 /* MediaFeatureNames.cpp */; }; + 4E1959220A39DABA00220FE5 /* MediaFeatureNames.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E1959200A39DABA00220FE5 /* MediaFeatureNames.h */; }; + 4E1959290A39DACC00220FE5 /* MediaQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E1959230A39DACC00220FE5 /* MediaQuery.cpp */; }; + 4E19592A0A39DACC00220FE5 /* MediaQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E1959240A39DACC00220FE5 /* MediaQuery.h */; }; + 4E19592B0A39DACC00220FE5 /* MediaQueryEvaluator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E1959250A39DACC00220FE5 /* MediaQueryEvaluator.cpp */; }; + 4E19592C0A39DACC00220FE5 /* MediaQueryEvaluator.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E1959260A39DACC00220FE5 /* MediaQueryEvaluator.h */; }; + 4E19592D0A39DACC00220FE5 /* MediaQueryExp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E1959270A39DACC00220FE5 /* MediaQueryExp.cpp */; }; + 4E19592E0A39DACC00220FE5 /* MediaQueryExp.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E1959280A39DACC00220FE5 /* MediaQueryExp.h */; }; + 4F1534DE11B532EC0021FD86 /* EditingBehavior.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F1534DD11B532EC0021FD86 /* EditingBehavior.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4F1534E011B533020021FD86 /* EditingBehaviorTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F1534DF11B533020021FD86 /* EditingBehaviorTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4F2D205412EAE7B3005C2874 /* InspectorAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F2D205212EAE7B3005C2874 /* InspectorAgent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4F2D205512EAE7B3005C2874 /* InspectorAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F2D205312EAE7B3005C2874 /* InspectorAgent.cpp */; }; + 4F3289B511A42AAB005ABE7E /* InspectorValues.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F3289B311A42AAB005ABE7E /* InspectorValues.cpp */; }; + 4F3289B611A42AAB005ABE7E /* InspectorValues.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F3289B411A42AAB005ABE7E /* InspectorValues.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4F4F5FFB11CBD2E100A186BF /* InspectorFrontend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F4F5FFA11CBD2D200A186BF /* InspectorFrontend.cpp */; }; + 4F6FDD641341DEDD001F8EE3 /* InspectorPageAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F6FDD621341DEDD001F8EE3 /* InspectorPageAgent.cpp */; }; + 4F6FDD651341DEDD001F8EE3 /* InspectorPageAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F6FDD631341DEDD001F8EE3 /* InspectorPageAgent.h */; }; + 4F707A9911EF679400ACDA69 /* InspectorBackendDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F707A9711EF679400ACDA69 /* InspectorBackendDispatcher.cpp */; }; + 4F707A9A11EF679400ACDA69 /* InspectorBackendDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F707A9811EF679400ACDA69 /* InspectorBackendDispatcher.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4FA3B90A125CD12200300BAD /* InspectorState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FA3B908125CD12100300BAD /* InspectorState.cpp */; }; + 4FA3B90B125CD12200300BAD /* InspectorState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FA3B909125CD12200300BAD /* InspectorState.h */; }; + 4FB390AD15EF61F3007AD51F /* GeneratedImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FB390AC15EF61F3007AD51F /* GeneratedImage.cpp */; }; + 4FD8D0F2119C718B002FA825 /* ScriptGCEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FD8D0F0119C718B002FA825 /* ScriptGCEvent.cpp */; }; + 4FD8D0F3119C718B002FA825 /* ScriptGCEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FD8D0F1119C718B002FA825 /* ScriptGCEvent.h */; }; + 4FFC022B1643B710004E1638 /* NodeRareData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FAB48661643A67E00F70C07 /* NodeRareData.cpp */; }; + 4FFC022D1643B726004E1638 /* ElementRareData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FAB48641643A66D00F70C07 /* ElementRareData.cpp */; }; + 501BAAA913950E2C00F7ACEB /* WindRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 501BAAA813950E2C00F7ACEB /* WindRule.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5038BC0714711CDB0095E0D1 /* WebKitCSSShaderValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5038BC0614711CDB0095E0D1 /* WebKitCSSShaderValue.cpp */; }; + 5038BE2F1472AD230095E0D1 /* StyleCachedShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5038BE2D1472AD230095E0D1 /* StyleCachedShader.cpp */; }; + 5038BE301472AD230095E0D1 /* StyleCachedShader.h in Headers */ = {isa = PBXBuildFile; fileRef = 5038BE2E1472AD230095E0D1 /* StyleCachedShader.h */; }; + 5038BE401472AD980095E0D1 /* CachedShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5038BE3E1472AD980095E0D1 /* CachedShader.cpp */; }; + 5038BE411472AD980095E0D1 /* CachedShader.h in Headers */ = {isa = PBXBuildFile; fileRef = 5038BE3F1472AD980095E0D1 /* CachedShader.h */; }; + 503D0CAA14B5B08700F32F57 /* CustomFilterProgram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 503D0CA714B5B08700F32F57 /* CustomFilterProgram.cpp */; }; + 503D0CAA14B5B08700F32F58 /* CustomFilterRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 503D0CA714B5B08700F32F58 /* CustomFilterRenderer.cpp */; }; + 503D0CAB14B5B08700F32F57 /* CustomFilterProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = 503D0CA814B5B08700F32F57 /* CustomFilterProgram.h */; settings = {ATTRIBUTES = (); }; }; + 503D0CAB14B5B08700F32F58 /* CustomFilterRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 503D0CA814B5B08700F32F58 /* CustomFilterRenderer.h */; settings = {ATTRIBUTES = (); }; }; + 503D0CAC14B5B08700F32F57 /* CustomFilterProgramClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 503D0CA914B5B08700F32F57 /* CustomFilterProgramClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 503D0CAE14B5B0BA00F32F57 /* StyleCustomFilterProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = 503D0CAD14B5B0BA00F32F57 /* StyleCustomFilterProgram.h */; settings = {ATTRIBUTES = (); }; }; + 5081E3C33CE580C16EF8B48B /* CachedResourceRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5081E3DF3CFC80C16EF8B48B /* CachedResourceRequest.cpp */; }; + 5081E3E03CFF80C16EF8B48B /* CachedResourceRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 5081E3E13D0280C16EF8B48B /* CachedResourceRequest.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 508CCA4F13CF106B003151F3 /* RenderFlowThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 508CCA4D13CF106B003151F3 /* RenderFlowThread.h */; }; + 508CCA5013CF106B003151F3 /* RenderFlowThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 508CCA4E13CF106B003151F3 /* RenderFlowThread.cpp */; }; + 5093334F163B0E4300099A60 /* CustomFilterParameterList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5093334D163B0E4300099A60 /* CustomFilterParameterList.cpp */; }; + 50933350163B0E4300099A60 /* CustomFilterParameterList.h in Headers */ = {isa = PBXBuildFile; fileRef = 5093334E163B0E4300099A60 /* CustomFilterParameterList.h */; }; + 50987C26157D676D00BDA835 /* CustomFilterGlobalContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50987C24157D676D00BDA835 /* CustomFilterGlobalContext.cpp */; }; + 50987C27157D676D00BDA835 /* CustomFilterGlobalContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 50987C25157D676D00BDA835 /* CustomFilterGlobalContext.h */; }; + 509CC9FB14C069ED00BBECBD /* CustomFilterParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 509CC9FA14C069ED00BBECBD /* CustomFilterParameter.h */; }; + 50ACE2CB14B5D79300446666 /* CustomFilterOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 50ACE2CA14B5D79300446666 /* CustomFilterOperation.h */; }; + 50CC089A14C6E99C0017AB51 /* CustomFilterNumberParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 50CC089914C6E99C0017AB51 /* CustomFilterNumberParameter.h */; }; + 50CC0A3914C6F5B10017AB51 /* CustomFilterOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50CC0A3814C6F5B10017AB51 /* CustomFilterOperation.cpp */; }; + 50D10D991545F5760096D288 /* RenderLayerFilterInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50D10D971545F5760096D288 /* RenderLayerFilterInfo.cpp */; }; + 50D10D9A1545F5760096D288 /* RenderLayerFilterInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D10D981545F5760096D288 /* RenderLayerFilterInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 50D32857163B313F0016111E /* ValidatedCustomFilterOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50D32855163B313F0016111E /* ValidatedCustomFilterOperation.cpp */; }; + 50D32858163B313F0016111E /* ValidatedCustomFilterOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D32856163B313F0016111E /* ValidatedCustomFilterOperation.h */; }; + 50D403C714768C9400D30BB5 /* FECustomFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50D403C514768C9400D30BB5 /* FECustomFilter.cpp */; }; + 50D403C814768C9400D30BB5 /* FECustomFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D403C614768C9400D30BB5 /* FECustomFilter.h */; }; + 50D405F9147D31F300D30BB5 /* CustomFilterMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50D405F7147D31F300D30BB5 /* CustomFilterMesh.cpp */; }; + 50D405FA147D31F300D30BB5 /* CustomFilterMesh.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D405F8147D31F300D30BB5 /* CustomFilterMesh.h */; }; + 50D40611147D49DE00D30BB5 /* CustomFilterCompiledProgram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50D4060F147D49DE00D30BB5 /* CustomFilterCompiledProgram.cpp */; }; + 50D40612147D49DE00D30BB5 /* CustomFilterCompiledProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D40610147D49DE00D30BB5 /* CustomFilterCompiledProgram.h */; }; + 50D88CB515BDFDAA001809F4 /* CustomFilterProgramInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50D88CB315BDFDAA001809F4 /* CustomFilterProgramInfo.cpp */; }; + 50D88CB615BDFDAA001809F4 /* CustomFilterProgramInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D88CB415BDFDAA001809F4 /* CustomFilterProgramInfo.h */; }; + 50E18CD816F9285800C65486 /* StyleCustomFilterProgram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50E18CD516F9285800C65486 /* StyleCustomFilterProgram.cpp */; }; + 50E18CD916F9285800C65486 /* StyleCustomFilterProgramCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50E18CD616F9285800C65486 /* StyleCustomFilterProgramCache.cpp */; }; + 50E18CDA16F9285800C65486 /* StyleCustomFilterProgramCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E18CD716F9285800C65486 /* StyleCustomFilterProgramCache.h */; }; + 510184690B08602A004A825F /* CachedPage.h in Headers */ = {isa = PBXBuildFile; fileRef = 510184670B08602A004A825F /* CachedPage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5101846A0B08602A004A825F /* CachedPage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 510184680B08602A004A825F /* CachedPage.cpp */; }; + 510D4A33103165EE0049EA54 /* SocketStreamErrorBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 510D4A2D103165EE0049EA54 /* SocketStreamErrorBase.cpp */; }; + 510D4A34103165EE0049EA54 /* SocketStreamErrorBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 510D4A2E103165EE0049EA54 /* SocketStreamErrorBase.h */; }; + 510D4A36103165EE0049EA54 /* SocketStreamHandleBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 510D4A30103165EE0049EA54 /* SocketStreamHandleBase.cpp */; }; + 510D4A37103165EE0049EA54 /* SocketStreamHandleBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 510D4A31103165EE0049EA54 /* SocketStreamHandleBase.h */; }; + 510D4A38103165EE0049EA54 /* SocketStreamHandleClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 510D4A32103165EE0049EA54 /* SocketStreamHandleClient.h */; }; + 5112935F3D54B4B52FAF973F /* InspectorHeapProfilerAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 511293613D6DB4B52FAF973F /* InspectorHeapProfilerAgent.cpp */; }; + 511293603D60B4B52FAF973F /* InspectorHeapProfilerAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 511293623D85B4B52FAF973F /* InspectorHeapProfilerAgent.h */; }; + 511F23190DC160DA004F0032 /* StorageThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 511F23150DC160DA004F0032 /* StorageThread.cpp */; }; + 511F231A0DC160DA004F0032 /* StorageThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 511F23160DC160DA004F0032 /* StorageThread.h */; }; + 5126E6BB0A2E3B12005C29FA /* IconDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5126E6B90A2E3B12005C29FA /* IconDatabase.cpp */; }; + 5126E6BC0A2E3B12005C29FA /* IconDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 5126E6BA0A2E3B12005C29FA /* IconDatabase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 512DD8E30D91E2B4000F89EE /* SharedBufferCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 512DD8E20D91E2B4000F89EE /* SharedBufferCF.cpp */; }; + 512DD8F40D91E6AF000F89EE /* LegacyWebArchive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 512DD8EA0D91E6AF000F89EE /* LegacyWebArchive.cpp */; }; + 512DD8F50D91E6AF000F89EE /* LegacyWebArchive.h in Headers */ = {isa = PBXBuildFile; fileRef = 512DD8EB0D91E6AF000F89EE /* LegacyWebArchive.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 512DD8F60D91E6AF000F89EE /* Archive.h in Headers */ = {isa = PBXBuildFile; fileRef = 512DD8EC0D91E6AF000F89EE /* Archive.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 512DD8F70D91E6AF000F89EE /* ArchiveResourceCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 512DD8ED0D91E6AF000F89EE /* ArchiveResourceCollection.cpp */; }; + 512DD8F80D91E6AF000F89EE /* ArchiveResourceCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 512DD8EE0D91E6AF000F89EE /* ArchiveResourceCollection.h */; }; + 512DD8FA0D91E6AF000F89EE /* ArchiveFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 512DD8F00D91E6AF000F89EE /* ArchiveFactory.cpp */; }; + 512DD8FB0D91E6AF000F89EE /* ArchiveResource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 512DD8F10D91E6AF000F89EE /* ArchiveResource.cpp */; }; + 512DD8FC0D91E6AF000F89EE /* ArchiveResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 512DD8F20D91E6AF000F89EE /* ArchiveResource.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 512DD8FD0D91E6AF000F89EE /* ArchiveFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 512DD8F30D91E6AF000F89EE /* ArchiveFactory.h */; }; + 51327D6011A33A2B004F9D65 /* SinkDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 51327D5E11A33A2B004F9D65 /* SinkDocument.h */; }; + 51327D6111A33A2B004F9D65 /* SinkDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51327D5F11A33A2B004F9D65 /* SinkDocument.cpp */; }; + 513F14530AB634C400094DDF /* IconLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 513F14510AB634C400094DDF /* IconLoader.cpp */; }; + 513F14540AB634C400094DDF /* IconLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 513F14520AB634C400094DDF /* IconLoader.h */; }; + 514B3F730C722047000530DF /* FileSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 514B3F720C722047000530DF /* FileSystem.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 514B3F760C722055000530DF /* FileSystemMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 514B3F750C722055000530DF /* FileSystemMac.mm */; }; + 514BC83F161CF04A004D52F4 /* ResourceBuffer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 514BC83D161CF043004D52F4 /* ResourceBuffer.mm */; }; + 514BC842161CF05C004D52F4 /* ResourceBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514BC840161CF05C004D52F4 /* ResourceBuffer.cpp */; }; + 514BC843161CF05C004D52F4 /* ResourceBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 514BC841161CF05C004D52F4 /* ResourceBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 514C76370CE9225E007EF3CD /* JSSQLError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514C76350CE9225E007EF3CD /* JSSQLError.cpp */; }; + 514C76380CE9225E007EF3CD /* JSSQLTransaction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514C76360CE9225E007EF3CD /* JSSQLTransaction.cpp */; }; + 514C764C0CE9234E007EF3CD /* AuthenticationMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C76420CE9234E007EF3CD /* AuthenticationMac.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 514C764D0CE9234E007EF3CD /* AuthenticationMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 514C76430CE9234E007EF3CD /* AuthenticationMac.mm */; }; + 514C764E0CE9234E007EF3CD /* FormDataStreamMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C76440CE9234E007EF3CD /* FormDataStreamMac.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 514C764F0CE9234E007EF3CD /* FormDataStreamMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 514C76450CE9234E007EF3CD /* FormDataStreamMac.mm */; }; + 514C76500CE9234E007EF3CD /* ResourceErrorMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 514C76460CE9234E007EF3CD /* ResourceErrorMac.mm */; }; + 514C76510CE9234E007EF3CD /* ResourceHandleMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 514C76470CE9234E007EF3CD /* ResourceHandleMac.mm */; }; + 514C76530CE9234E007EF3CD /* ResourceRequestMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 514C76490CE9234E007EF3CD /* ResourceRequestMac.mm */; }; + 514C76550CE9234F007EF3CD /* ResourceResponseMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 514C764B0CE9234E007EF3CD /* ResourceResponseMac.mm */; }; + 514C766D0CE923A1007EF3CD /* Credential.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514C76580CE923A1007EF3CD /* Credential.cpp */; }; + 514C766E0CE923A1007EF3CD /* Credential.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C76590CE923A1007EF3CD /* Credential.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 514C766F0CE923A1007EF3CD /* FormData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514C765A0CE923A1007EF3CD /* FormData.cpp */; }; + 514C76700CE923A1007EF3CD /* FormData.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C765B0CE923A1007EF3CD /* FormData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 514C76710CE923A1007EF3CD /* HTTPHeaderMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C765C0CE923A1007EF3CD /* HTTPHeaderMap.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 514C76720CE923A1007EF3CD /* HTTPParsers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514C765D0CE923A1007EF3CD /* HTTPParsers.cpp */; }; + 514C76730CE923A1007EF3CD /* HTTPParsers.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C765E0CE923A1007EF3CD /* HTTPParsers.h */; }; + 514C76740CE923A1007EF3CD /* ProtectionSpace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514C765F0CE923A1007EF3CD /* ProtectionSpace.cpp */; }; + 514C76750CE923A1007EF3CD /* ProtectionSpace.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C76600CE923A1007EF3CD /* ProtectionSpace.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 514C76780CE923A1007EF3CD /* ResourceHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514C76630CE923A1007EF3CD /* ResourceHandle.cpp */; }; + 514C76790CE923A1007EF3CD /* ResourceHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C76640CE923A1007EF3CD /* ResourceHandle.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 514C767A0CE923A1007EF3CD /* ResourceHandleClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C76650CE923A1007EF3CD /* ResourceHandleClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 514C767B0CE923A1007EF3CD /* ResourceHandleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C76660CE923A1007EF3CD /* ResourceHandleInternal.h */; }; + 514C767C0CE923A1007EF3CD /* ResourceRequestBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514C76670CE923A1007EF3CD /* ResourceRequestBase.cpp */; }; + 514C767D0CE923A1007EF3CD /* ResourceRequestBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C76680CE923A1007EF3CD /* ResourceRequestBase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 514C767E0CE923A1007EF3CD /* ResourceResponseBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514C76690CE923A1007EF3CD /* ResourceResponseBase.cpp */; }; + 514C767F0CE923A1007EF3CD /* ResourceResponseBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C766A0CE923A1007EF3CD /* ResourceResponseBase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 515788C11207852C00A37C4A /* VisitedLinkStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 515788C01207852C00A37C4A /* VisitedLinkStrategy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5160300B0CC4251200C8AC25 /* FileSystemPOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5160300A0CC4251200C8AC25 /* FileSystemPOSIX.cpp */; }; + 5160306C0CC4362300C8AC25 /* FileSystemCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5160306B0CC4362300C8AC25 /* FileSystemCF.cpp */; }; + 5160F4980B0AA75F00C1D2AF /* HistoryItemMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5160F4970B0AA75F00C1D2AF /* HistoryItemMac.mm */; }; + 5162C7F411F77EFB00612EFE /* SchemeRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5162C7F211F77EFA00612EFE /* SchemeRegistry.cpp */; }; + 5162C7F511F77EFB00612EFE /* SchemeRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 5162C7F311F77EFB00612EFE /* SchemeRegistry.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 516953971329A3C800B92D04 /* IconDatabaseBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 516953951329A3C800B92D04 /* IconDatabaseBase.cpp */; }; + 516953981329A3C800B92D04 /* IconDatabaseBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 516953961329A3C800B92D04 /* IconDatabaseBase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 516BB7940CE91E6800512F79 /* JSTreeWalkerCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 516BB7920CE91E6800512F79 /* JSTreeWalkerCustom.cpp */; }; + 51741D0F0B07259A00ED442C /* BackForwardList.h in Headers */ = {isa = PBXBuildFile; fileRef = 51741D0B0B07259A00ED442C /* BackForwardList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 51741D110B07259A00ED442C /* HistoryItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 51741D0D0B07259A00ED442C /* HistoryItem.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 51741D120B07259A00ED442C /* HistoryItem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51741D0E0B07259A00ED442C /* HistoryItem.cpp */; }; + 5174E20A10A1F44F00F95E6F /* PopStateEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5174E20810A1F44F00F95E6F /* PopStateEvent.h */; }; + 517FBA1E151AB17C00B57959 /* DOMWindowExtension.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517FBA17151AA71B00B57959 /* DOMWindowExtension.cpp */; }; + 5189F01D10B37BD900F3C739 /* JSPopStateEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5189F01B10B37BD900F3C739 /* JSPopStateEvent.cpp */; }; + 5189F01E10B37BD900F3C739 /* JSPopStateEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5189F01C10B37BD900F3C739 /* JSPopStateEvent.h */; }; + 5189F0DE10B46B0E00F3C739 /* PopStateEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5189F0DD10B46B0E00F3C739 /* PopStateEvent.cpp */; }; + 51A052331058774F00CC9E95 /* CredentialStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A052311058774F00CC9E95 /* CredentialStorage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 51A052341058774F00CC9E95 /* CredentialStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51A052321058774F00CC9E95 /* CredentialStorage.cpp */; }; + 51A052561058874000CC9E95 /* ProtectionSpaceHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A052551058874000CC9E95 /* ProtectionSpaceHash.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 51AA3F6F0BD5AA9E00892971 /* ResourceLoaderMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51AA3F6E0BD5AA9E00892971 /* ResourceLoaderMac.mm */; }; + 51ABAE1B103C18FF008C5260 /* SocketStreamError.h in Headers */ = {isa = PBXBuildFile; fileRef = 51ABAE1A103C18FF008C5260 /* SocketStreamError.h */; }; + 51ABAE1E103C1913008C5260 /* SocketStreamHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 51ABAE1C103C1913008C5260 /* SocketStreamHandle.h */; }; + 51ABAE1F103C1913008C5260 /* SocketStreamHandleCFNet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51ABAE1D103C1913008C5260 /* SocketStreamHandleCFNet.cpp */; }; + 51ABF64D16392E2800132A7A /* LoaderStrategy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51ABF64C16392E2800132A7A /* LoaderStrategy.cpp */; }; + 51AF503616F100F60095B2E8 /* ResourceLoaderTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 51AF503516F100F60095B2E8 /* ResourceLoaderTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 51B2417B0D931F3F00E83F5C /* LegacyWebArchiveMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51B2417A0D931F3F00E83F5C /* LegacyWebArchiveMac.mm */; }; + 51BE37E00DAEE00E001085FC /* StorageArea.h in Headers */ = {isa = PBXBuildFile; fileRef = 51BE37DE0DAEE00E001085FC /* StorageArea.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 51C0AA390F2AA10A001648C2 /* CachedFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 51C0AA380F2AA10A001648C2 /* CachedFrame.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 51C0AA410F2AA15E001648C2 /* CachedFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51C0AA400F2AA15E001648C2 /* CachedFrame.cpp */; }; + 51C81B890C4422F70019ECE3 /* FTPDirectoryParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51C81B870C4422F70019ECE3 /* FTPDirectoryParser.cpp */; }; + 51C81B8A0C4422F70019ECE3 /* FTPDirectoryParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 51C81B880C4422F70019ECE3 /* FTPDirectoryParser.h */; }; + 51CBFC990D10E483002DBF51 /* CachedFramePlatformData.h in Headers */ = {isa = PBXBuildFile; fileRef = 51CBFC980D10E483002DBF51 /* CachedFramePlatformData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 51D0C5160DAA90B7003B3831 /* JSStorageCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51D0C5150DAA90B7003B3831 /* JSStorageCustom.cpp */; }; + 51DCE8020CAC9F1C00488358 /* JSSQLResultSetRowListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51DCE8010CAC9F1C00488358 /* JSSQLResultSetRowListCustom.cpp */; }; + 51DF6D7E0B92A16D00C2DC85 /* ThreadCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = 51DF6D7D0B92A16D00C2DC85 /* ThreadCheck.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 51DF6D800B92A18E00C2DC85 /* ThreadCheck.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51DF6D7F0B92A18E00C2DC85 /* ThreadCheck.mm */; }; + 51E0BABB0DA5547100A9E417 /* StorageEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E0BAB90DA5547100A9E417 /* StorageEvent.h */; }; + 51E0BABC0DA5547100A9E417 /* StorageEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51E0BABA0DA5547100A9E417 /* StorageEvent.cpp */; }; + 51E0BAEA0DA55D4A00A9E417 /* JSStorageEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51E0BAE80DA55D4A00A9E417 /* JSStorageEvent.cpp */; }; + 51E0BAEB0DA55D4A00A9E417 /* JSStorageEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E0BAE90DA55D4A00A9E417 /* JSStorageEvent.h */; }; + 51E0BB380DA5ACB600A9E417 /* StorageMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E0BB360DA5ACB600A9E417 /* StorageMap.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 51E0BB390DA5ACB600A9E417 /* StorageMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51E0BB370DA5ACB600A9E417 /* StorageMap.cpp */; }; + 51E1ECBE0C91C90400DC255B /* IconDatabaseClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E1ECB80C91C90400DC255B /* IconDatabaseClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 51E1ECC00C91C90400DC255B /* IconRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51E1ECBA0C91C90400DC255B /* IconRecord.cpp */; }; + 51E1ECC10C91C90400DC255B /* IconRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E1ECBB0C91C90400DC255B /* IconRecord.h */; }; + 51E1ECC20C91C90400DC255B /* PageURLRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51E1ECBC0C91C90400DC255B /* PageURLRecord.cpp */; }; + 51E1ECC30C91C90400DC255B /* PageURLRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E1ECBD0C91C90400DC255B /* PageURLRecord.h */; }; + 51E3F9C70DA059DC00250911 /* Storage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51E3F9C50DA059DC00250911 /* Storage.cpp */; }; + 51E3F9D60DA05E1D00250911 /* JSStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51E3F9D40DA05E1D00250911 /* JSStorage.cpp */; }; + 51E4143416A6596300C633C7 /* ResourceHandleTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E4143216A6595100C633C7 /* ResourceHandleTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 51E6821016387302003BBF3C /* LoaderStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E6820F16387302003BBF3C /* LoaderStrategy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 51EC92650CE90DD400F90308 /* JSCustomSQLStatementErrorCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51EC925D0CE90DD400F90308 /* JSCustomSQLStatementErrorCallback.cpp */; }; + 51FA2D78152132B300C1BA0B /* DOMWindowExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 517FBA18151AA71B00B57959 /* DOMWindowExtension.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 51FB5504113E3E9100821176 /* JSCloseEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 51FB5502113E3E9100821176 /* JSCloseEvent.h */; }; + 51FB5505113E3E9100821176 /* JSCloseEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51FB5503113E3E9100821176 /* JSCloseEvent.cpp */; }; + 521D46F611AEC98100514613 /* KillRingMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 521D46F511AEC98100514613 /* KillRingMac.mm */; }; + 521D46F811AEC9B100514613 /* KillRing.h in Headers */ = {isa = PBXBuildFile; fileRef = 521D46F711AEC9B100514613 /* KillRing.h */; }; + 52B6C9C215E3F4DF00690B05 /* DOMNamedFlowCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52B6C9BD15E3F4DF00690B05 /* DOMNamedFlowCollection.cpp */; }; + 52B6C9C315E3F4DF00690B05 /* DOMNamedFlowCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 52B6C9BE15E3F4DF00690B05 /* DOMNamedFlowCollection.h */; }; + 52B6C9C515E3F4DF00690B05 /* NamedFlowCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52B6C9C015E3F4DF00690B05 /* NamedFlowCollection.cpp */; }; + 52B6C9C615E3F4DF00690B05 /* NamedFlowCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 52B6C9C115E3F4DF00690B05 /* NamedFlowCollection.h */; }; + 52CCA9E215E3F62C0053C77F /* JSDOMNamedFlowCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52CCA9E015E3F62C0053C77F /* JSDOMNamedFlowCollection.cpp */; }; + 52CCA9E315E3F62C0053C77F /* JSDOMNamedFlowCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 52CCA9E115E3F62C0053C77F /* JSDOMNamedFlowCollection.h */; }; + 52CCA9E815E3F64C0053C77F /* DOMDOMNamedFlowCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 52CCA9E515E3F64C0053C77F /* DOMDOMNamedFlowCollection.h */; }; + 52CCA9E915E3F64C0053C77F /* DOMDOMNamedFlowCollection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 52CCA9E615E3F64C0053C77F /* DOMDOMNamedFlowCollection.mm */; }; + 52CCA9EA15E3F64C0053C77F /* DOMDOMNamedFlowCollectionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 52CCA9E715E3F64C0053C77F /* DOMDOMNamedFlowCollectionInternal.h */; }; + 52F10865162B6DA4009AC81E /* MixedContentChecker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52F10862162B6D82009AC81E /* MixedContentChecker.cpp */; }; + 52F10866162B6DA8009AC81E /* MixedContentChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = 52F10863162B6D82009AC81E /* MixedContentChecker.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 52F52E1114A0134F00ACC397 /* NSScrollerImpDetails.mm in Sources */ = {isa = PBXBuildFile; fileRef = 52F52E1014A0134F00ACC397 /* NSScrollerImpDetails.mm */; }; + 5317612213C516690026E454 /* StyleFlexibleBoxData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5317612013C516690026E454 /* StyleFlexibleBoxData.cpp */; }; + 5317612313C516690026E454 /* StyleFlexibleBoxData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5317612113C516690026E454 /* StyleFlexibleBoxData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 53C8298D13D8D92700DE2DEB /* RenderFlexibleBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53C8298B13D8D92700DE2DEB /* RenderFlexibleBox.cpp */; }; + 53C8298E13D8D92700DE2DEB /* RenderFlexibleBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 53C8298C13D8D92700DE2DEB /* RenderFlexibleBox.h */; }; + 53E29E5E167A8A1900586D3D /* InternalSettingsGenerated.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53E29E5C167A8A1900586D3D /* InternalSettingsGenerated.cpp */; }; + 53E29E5F167A8A1900586D3D /* InternalSettingsGenerated.h in Headers */ = {isa = PBXBuildFile; fileRef = 53E29E5D167A8A1900586D3D /* InternalSettingsGenerated.h */; }; + 53ED3FDE167A88E7006762E6 /* JSInternalSettingsGenerated.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53ED3FDC167A88E7006762E6 /* JSInternalSettingsGenerated.cpp */; }; + 53ED3FDF167A88E7006762E6 /* JSInternalSettingsGenerated.h in Headers */ = {isa = PBXBuildFile; fileRef = 53ED3FDD167A88E7006762E6 /* JSInternalSettingsGenerated.h */; }; + 53EF766B16530A61004CBE49 /* SettingsMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 53EF766A16530A61004CBE49 /* SettingsMacros.h */; }; + 53EF766C16531994004CBE49 /* SettingsMacros.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 53EF766A16530A61004CBE49 /* SettingsMacros.h */; }; + 550A0BC9085F6039007353D6 /* QualifiedName.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 550A0BC7085F6039007353D6 /* QualifiedName.cpp */; }; + 550A0BCA085F6039007353D6 /* QualifiedName.h in Headers */ = {isa = PBXBuildFile; fileRef = 550A0BC8085F6039007353D6 /* QualifiedName.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 573D134714CE39FF0057ABCA /* InspectorTypeBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 573D134514CE39FF0057ABCA /* InspectorTypeBuilder.cpp */; }; + 578DA20E1520EB8C006141C1 /* InspectorFrontend.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F4F5FFC11CBD30100A186BF /* InspectorFrontend.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 578DA20F1520EBA3006141C1 /* InspectorTypeBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 573D134614CE39FF0057ABCA /* InspectorTypeBuilder.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 57B791A314C6A62900F202D1 /* ContentDistributor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57B7919F14C6A62900F202D1 /* ContentDistributor.cpp */; }; + 57B791A414C6A62900F202D1 /* ContentDistributor.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B791A014C6A62900F202D1 /* ContentDistributor.h */; }; + 57B791A914C6A63300F202D1 /* HTMLContentElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57B791A714C6A63300F202D1 /* HTMLContentElement.cpp */; }; + 57B791AA14C6A63300F202D1 /* HTMLContentElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B791A814C6A63300F202D1 /* HTMLContentElement.h */; }; + 57CF497414EE36D700ECFF14 /* InsertionPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57CF497214EE36D700ECFF14 /* InsertionPoint.cpp */; }; + 57CF497514EE36D700ECFF14 /* InsertionPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 57CF497314EE36D700ECFF14 /* InsertionPoint.h */; }; + 57CF4C8614F7597A00ECFF14 /* ElementShadow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57CF4C8414F7597A00ECFF14 /* ElementShadow.cpp */; }; + 57CF4C8714F7597A00ECFF14 /* ElementShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = 57CF4C8514F7597A00ECFF14 /* ElementShadow.h */; }; + 5905ADBF1302F3CE00F116DF /* XMLTreeViewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5905ADBD1302F3CE00F116DF /* XMLTreeViewer.cpp */; }; + 5905ADC01302F3CE00F116DF /* XMLTreeViewer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5905ADBE1302F3CE00F116DF /* XMLTreeViewer.h */; }; + 590E1B4911E4EF4B0069F784 /* DeviceOrientationData.h in Headers */ = {isa = PBXBuildFile; fileRef = 590E1B4811E4EF4B0069F784 /* DeviceOrientationData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 590E1B4B11E4EF700069F784 /* JSDeviceOrientationEventCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 590E1B4A11E4EF700069F784 /* JSDeviceOrientationEventCustom.cpp */; }; + 59102FBB14327D3B003C9D04 /* ContentSearchUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59102FB914327D3B003C9D04 /* ContentSearchUtils.cpp */; }; + 59102FBC14327D3B003C9D04 /* ContentSearchUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 59102FBA14327D3B003C9D04 /* ContentSearchUtils.h */; }; + 5913A24113D49EBA00F5B05C /* IdentifiersFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5913A23F13D49EBA00F5B05C /* IdentifiersFactory.cpp */; }; + 5913A24213D49EBA00F5B05C /* IdentifiersFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 5913A24013D49EBA00F5B05C /* IdentifiersFactory.h */; }; + 59309A1111F4AE5800250603 /* DeviceOrientationClientMock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59309A1011F4AE5800250603 /* DeviceOrientationClientMock.cpp */; }; + 59309A1311F4AE6A00250603 /* DeviceOrientationClientMock.h in Headers */ = {isa = PBXBuildFile; fileRef = 59309A1211F4AE6A00250603 /* DeviceOrientationClientMock.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 598365DD1355F557001B185D /* JSPositionCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 598365DC1355F53C001B185D /* JSPositionCallback.h */; }; + 598365DF1355F562001B185D /* JSPositionErrorCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 598365DE1355F562001B185D /* JSPositionErrorCallback.h */; }; + 598365E41355F604001B185D /* JSPositionCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 598365E31355F604001B185D /* JSPositionCallback.cpp */; }; + 598365E61355F60D001B185D /* JSPositionErrorCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 598365E51355F60D001B185D /* JSPositionErrorCallback.cpp */; }; + 599E759011055A1F00D904FA /* Bridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 599E758F11055A1F00D904FA /* Bridge.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 59A85EA2119D68D900DEF1EF /* DeviceOrientationEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59A85EA1119D68D900DEF1EF /* DeviceOrientationEvent.cpp */; }; + 59A85EA4119D68EC00DEF1EF /* DeviceOrientationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 59A85EA3119D68EC00DEF1EF /* DeviceOrientationEvent.h */; }; + 59A86006119DAF7F00DEF1EF /* JSDeviceOrientationEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59A86005119DAF7F00DEF1EF /* JSDeviceOrientationEvent.cpp */; }; + 59A86008119DAFA100DEF1EF /* JSDeviceOrientationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 59A86007119DAFA100DEF1EF /* JSDeviceOrientationEvent.h */; }; + 59A8F1D411A69508001AC34A /* DeviceOrientationController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59A8F1D311A69508001AC34A /* DeviceOrientationController.cpp */; }; + 59A8F1D611A69513001AC34A /* DeviceOrientationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 59A8F1D511A69513001AC34A /* DeviceOrientationController.h */; }; + 59A8F1D811A69520001AC34A /* DeviceOrientationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 59A8F1D711A69520001AC34A /* DeviceOrientationClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 59B597731108656B007159E8 /* BridgeJSC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59B597721108656B007159E8 /* BridgeJSC.cpp */; }; + 59B5977511086579007159E8 /* BridgeJSC.h in Headers */ = {isa = PBXBuildFile; fileRef = 59B5977411086579007159E8 /* BridgeJSC.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 59C27F05138D28C10079B7E2 /* NetworkResourcesData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59C27F04138D28C10079B7E2 /* NetworkResourcesData.cpp */; }; + 59C27F07138D28CF0079B7E2 /* NetworkResourcesData.h in Headers */ = {isa = PBXBuildFile; fileRef = 59C27F06138D28CF0079B7E2 /* NetworkResourcesData.h */; }; + 59C28045138DC2410079B7E2 /* XMLErrors.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59C28043138DC2410079B7E2 /* XMLErrors.cpp */; }; + 59C28046138DC2410079B7E2 /* XMLErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 59C28044138DC2410079B7E2 /* XMLErrors.h */; }; + 59D1C10411EB5DCF00B638C8 /* DeviceOrientationData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59D1C10311EB5DCF00B638C8 /* DeviceOrientationData.cpp */; }; + 5A574F24131DB93900471B88 /* RenderQuote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5A574F22131DB93900471B88 /* RenderQuote.cpp */; }; + 5A574F25131DB93900471B88 /* RenderQuote.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A574F23131DB93900471B88 /* RenderQuote.h */; }; + 5A574F28131DB96D00471B88 /* QuotesData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5A574F26131DB96D00471B88 /* QuotesData.cpp */; }; + 5A574F29131DB96D00471B88 /* QuotesData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A574F27131DB96D00471B88 /* QuotesData.h */; }; + 5B7A208D2E12979B4AE19DE6 /* RenderMathMLSpace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DBFCB0EBFF5CD77EBEB35395 /* RenderMathMLSpace.cpp */; }; + 5D21A80213ECE5DF00BB7064 /* WebVTTParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5D21A80013ECE5DF00BB7064 /* WebVTTParser.cpp */; }; + 5D21A80313ECE5DF00BB7064 /* WebVTTParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D21A80113ECE5DF00BB7064 /* WebVTTParser.h */; }; + 5D4F51DF132725480016F541 /* HTMLConverter.mm in Sources */ = {isa = PBXBuildFile; fileRef = C5392D341326AD0100043D35 /* HTMLConverter.mm */; }; + 5D874F130D161D3200796C3B /* NetscapePlugInStreamLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93E227DD0AF589AD00D48324 /* NetscapePlugInStreamLoader.cpp */; }; + 5D87BB8311E3ED8600702B6F /* ExportFileGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5D87BB8211E3ED8600702B6F /* ExportFileGenerator.cpp */; }; + 5D8C4DBF1428222C0026CE72 /* DisplaySleepDisabler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5D8C4DBD1428222C0026CE72 /* DisplaySleepDisabler.cpp */; }; + 5D8C4DC01428222C0026CE72 /* DisplaySleepDisabler.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D8C4DBE1428222C0026CE72 /* DisplaySleepDisabler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5D925B670F64D4DD00B847F0 /* ScrollBehavior.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5D925B650F64D4DD00B847F0 /* ScrollBehavior.cpp */; }; + 5D925B680F64D4DD00B847F0 /* ScrollBehavior.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D925B660F64D4DD00B847F0 /* ScrollBehavior.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5DA5E0FC102B953800088CF9 /* JSWebSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DA5E0FA102B953800088CF9 /* JSWebSocket.cpp */; }; + 5DA5E0FD102B953800088CF9 /* JSWebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA5E0FB102B953800088CF9 /* JSWebSocket.h */; }; + 5DA97ECD168E787B000E3676 /* SystemVersionMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA97ECB168E787B000E3676 /* SystemVersionMac.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5DA97ECE168E787B000E3676 /* SystemVersionMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5DA97ECC168E787B000E3676 /* SystemVersionMac.mm */; }; + 5DB1BC6A10715A6400EFAA49 /* TransformSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DB1BC6810715A6400EFAA49 /* TransformSource.h */; }; + 5DB1BC6B10715A6400EFAA49 /* TransformSourceLibxslt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DB1BC6910715A6400EFAA49 /* TransformSourceLibxslt.cpp */; }; + 5DC87EF011716DF2001C0E6D /* EmptyProtocolDefinitions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DC87EEF11716DF2001C0E6D /* EmptyProtocolDefinitions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5DF7F5C20F01F92A00526B4B /* CSSPropertyNames.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 656580EF09D12B20000E61D7 /* CSSPropertyNames.h */; }; + 5DFE8F560D16477B0076E937 /* ScheduledAction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCA378BA0D15F64200B793D6 /* ScheduledAction.cpp */; }; + 5DFE8F570D16477C0076E937 /* ScheduledAction.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA378BB0D15F64200B793D6 /* ScheduledAction.h */; }; + 5FC7DC26CFE2563200B85AE4 /* JSEventTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FC7DC26CFE2563200B85AE5 /* JSEventTarget.h */; }; + 626CDE0E1140424C001E5A68 /* SpatialNavigation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 626CDE0C1140424C001E5A68 /* SpatialNavigation.cpp */; }; + 626CDE0F1140424C001E5A68 /* SpatialNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 626CDE0D1140424C001E5A68 /* SpatialNavigation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 628D214C12131ED10055DCFC /* NetworkingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 628D214B12131ED10055DCFC /* NetworkingContext.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 628D214E12131EF40055DCFC /* FrameNetworkingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 628D214D12131EF40055DCFC /* FrameNetworkingContext.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 62C1217C11AB9E77003C462C /* SuspendableTimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62C1217A11AB9E76003C462C /* SuspendableTimer.cpp */; }; + 62C1217D11AB9E77003C462C /* SuspendableTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 62C1217B11AB9E77003C462C /* SuspendableTimer.h */; }; + 62CD32591157E57C0063B0A7 /* CustomEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CD32561157E57C0063B0A7 /* CustomEvent.cpp */; }; + 62CD325A1157E57C0063B0A7 /* CustomEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CD32571157E57C0063B0A7 /* CustomEvent.h */; }; + 63189AE30E83A33300012E41 /* NodeRareData.h in Headers */ = {isa = PBXBuildFile; fileRef = 63189AE20E83A33300012E41 /* NodeRareData.h */; settings = {ATTRIBUTES = (); }; }; + 63D7B32D0E78CD3F00F7617C /* NodeRenderStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 63D7B32C0E78CD3F00F7617C /* NodeRenderStyle.h */; }; + 63F5D4F70E8C4B7100C0BD04 /* ElementRareData.h in Headers */ = {isa = PBXBuildFile; fileRef = 637B7ADE0E8767B800E32194 /* ElementRareData.h */; }; + 650F53DC09D15DDA00C9B0C8 /* CSSGrammar.h in Headers */ = {isa = PBXBuildFile; fileRef = 650F53DB09D15DDA00C9B0C8 /* CSSGrammar.h */; }; + 650F53DD09D15DDF00C9B0C8 /* CSSGrammar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6565814409D13043000E61D7 /* CSSGrammar.cpp */; }; + 650FBF2A0D9AF047008FC292 /* SVGHKernElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 650FBF270D9AF046008FC292 /* SVGHKernElement.cpp */; }; + 650FBF2B0D9AF047008FC292 /* SVGHKernElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 650FBF280D9AF047008FC292 /* SVGHKernElement.h */; }; + 6515EC910D9723FF0063D49A /* JSSVGAltGlyphElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6515EC8F0D9723FF0063D49A /* JSSVGAltGlyphElement.cpp */; }; + 6515EC920D9723FF0063D49A /* JSSVGAltGlyphElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 6515EC900D9723FF0063D49A /* JSSVGAltGlyphElement.h */; }; + 652FBBBC0DE27CB60001D386 /* JSDOMWindowCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = 652FBBBB0DE27CB60001D386 /* JSDOMWindowCustom.h */; }; + 6550B69D099DF0270090D781 /* CDATASection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6550B693099DF0270090D781 /* CDATASection.cpp */; }; + 6550B69E099DF0270090D781 /* CDATASection.h in Headers */ = {isa = PBXBuildFile; fileRef = 6550B694099DF0270090D781 /* CDATASection.h */; }; + 6550B69F099DF0270090D781 /* CharacterData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6550B695099DF0270090D781 /* CharacterData.cpp */; }; + 6550B6A0099DF0270090D781 /* CharacterData.h in Headers */ = {isa = PBXBuildFile; fileRef = 6550B696099DF0270090D781 /* CharacterData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6550B6A1099DF0270090D781 /* Comment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6550B697099DF0270090D781 /* Comment.cpp */; }; + 6550B6A2099DF0270090D781 /* Comment.h in Headers */ = {isa = PBXBuildFile; fileRef = 6550B698099DF0270090D781 /* Comment.h */; }; + 6550B6A5099DF0270090D781 /* Text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6550B69B099DF0270090D781 /* Text.cpp */; }; + 6550B6A6099DF0270090D781 /* Text.h in Headers */ = {isa = PBXBuildFile; fileRef = 6550B69C099DF0270090D781 /* Text.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 65653F2D0D9727D200CA9723 /* SVGAltGlyphElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65653F2A0D9727D200CA9723 /* SVGAltGlyphElement.cpp */; }; + 65653F2E0D9727D200CA9723 /* SVGAltGlyphElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 65653F2B0D9727D200CA9723 /* SVGAltGlyphElement.h */; }; + 656580F409D12B20000E61D7 /* CSSPropertyNames.h in Headers */ = {isa = PBXBuildFile; fileRef = 656580EF09D12B20000E61D7 /* CSSPropertyNames.h */; settings = {ATTRIBUTES = (); }; }; + 6565815109D13043000E61D7 /* CSSValueKeywords.h in Headers */ = {isa = PBXBuildFile; fileRef = 6565814809D13043000E61D7 /* CSSValueKeywords.h */; }; + 656581B209D14EE6000E61D7 /* UserAgentStyleSheets.h in Headers */ = {isa = PBXBuildFile; fileRef = 656581AE09D14EE6000E61D7 /* UserAgentStyleSheets.h */; }; + 656581FE09D1508D000E61D7 /* SVGElementFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 656581E709D1508D000E61D7 /* SVGElementFactory.h */; }; + 6565820209D1508D000E61D7 /* XLinkNames.h in Headers */ = {isa = PBXBuildFile; fileRef = 656581EB09D1508D000E61D7 /* XLinkNames.h */; }; + 656D37320ADBA5DE00A4554D /* LoaderNSURLExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 656D371A0ADBA5DE00A4554D /* LoaderNSURLExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 656D37330ADBA5DE00A4554D /* LoaderNSURLExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = 656D371B0ADBA5DE00A4554D /* LoaderNSURLExtras.mm */; }; + 656D37360ADBA5DE00A4554D /* DocumentLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 656D371E0ADBA5DE00A4554D /* DocumentLoader.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 656D373A0ADBA5DE00A4554D /* FormState.h in Headers */ = {isa = PBXBuildFile; fileRef = 656D37220ADBA5DE00A4554D /* FormState.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 656D373B0ADBA5DE00A4554D /* FormState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 656D37230ADBA5DE00A4554D /* FormState.cpp */; }; + 656D373C0ADBA5DE00A4554D /* FrameLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 656D37240ADBA5DE00A4554D /* FrameLoader.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 656D373E0ADBA5DE00A4554D /* FrameLoaderClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 656D37260ADBA5DE00A4554D /* FrameLoaderClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 656D373F0ADBA5DE00A4554D /* ResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 656D37270ADBA5DE00A4554D /* ResourceLoader.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 656D37430ADBA5DE00A4554D /* NetscapePlugInStreamLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 656D372B0ADBA5DE00A4554D /* NetscapePlugInStreamLoader.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 656D37480ADBA5DE00A4554D /* SubresourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 656D37300ADBA5DE00A4554D /* SubresourceLoader.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6571DCC81385E6A400702DD0 /* MemoryPressureHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 657EDA071385CB97004E0645 /* MemoryPressureHandler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 657EDA081385CB97004E0645 /* MemoryPressureHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 657EDA061385CB97004E0645 /* MemoryPressureHandler.cpp */; }; + 657EDA0B1385CBD8004E0645 /* MemoryPressureHandlerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 657EDA0A1385CBD8004E0645 /* MemoryPressureHandlerMac.mm */; }; + 658436860AE01B7400E53753 /* FrameLoadRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 658436850AE01B7400E53753 /* FrameLoadRequest.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6593923709AE4346002C531F /* KURL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6593923509AE4346002C531F /* KURL.cpp */; }; + 6593923809AE4346002C531F /* KURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 6593923609AE4346002C531F /* KURL.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6593923A09AE435C002C531F /* KURLMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6593923909AE435C002C531F /* KURLMac.mm */; }; + 6596F2B30B8731DF001326BD /* DOMHTMLInputElementInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85E711640AC5D5350053270F /* DOMHTMLInputElementInternal.h */; }; + 6596F2C10B87325C001326BD /* DOMHTMLTextAreaElementInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85E7117F0AC5D5350053270F /* DOMHTMLTextAreaElementInternal.h */; }; + 659A7D130B6DB4D9001155B3 /* SubstituteData.h in Headers */ = {isa = PBXBuildFile; fileRef = 659A7D120B6DB4D9001155B3 /* SubstituteData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 659DDC8209E198BA001BF3C6 /* JSDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 659DDC8009E198BA001BF3C6 /* JSDocument.cpp */; }; + 659DDC8309E198BA001BF3C6 /* JSDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 659DDC8109E198BA001BF3C6 /* JSDocument.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 65A21468097A329100B9050A /* Page.h in Headers */ = {isa = PBXBuildFile; fileRef = 65A21467097A329100B9050A /* Page.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 65A21484097A3F5300B9050A /* FrameTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65A21482097A3F5300B9050A /* FrameTree.cpp */; }; + 65A21485097A3F5300B9050A /* FrameTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 65A21483097A3F5300B9050A /* FrameTree.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 65BF022E0974816300C43196 /* Frame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65BF02290974816300C43196 /* Frame.cpp */; }; + 65BF022F0974816300C43196 /* Frame.h in Headers */ = {isa = PBXBuildFile; fileRef = 65BF022A0974816300C43196 /* Frame.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 65BF02450974819000C43196 /* FrameMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65BF023C0974819000C43196 /* FrameMac.mm */; }; + 65C97AF308EA908800ACD273 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 65C97AF208EA908800ACD273 /* config.h */; }; + 65CBFEF90974F607001DAC25 /* FrameView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65CBFEF70974F607001DAC25 /* FrameView.cpp */; }; + 65CBFEFA0974F607001DAC25 /* FrameView.h in Headers */ = {isa = PBXBuildFile; fileRef = 65CBFEF80974F607001DAC25 /* FrameView.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 65DF31DA09D1C123000BE325 /* JSAttr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65DF31D809D1C122000BE325 /* JSAttr.cpp */; }; + 65DF31DB09D1C123000BE325 /* JSAttr.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF31D909D1C123000BE325 /* JSAttr.h */; }; + 65DF31F309D1CC60000BE325 /* JSCharacterData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65DF31DF09D1CC60000BE325 /* JSCharacterData.cpp */; }; + 65DF31F409D1CC60000BE325 /* JSCharacterData.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF31E009D1CC60000BE325 /* JSCharacterData.h */; }; + 65DF31F509D1CC60000BE325 /* JSDocumentType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65DF31E109D1CC60000BE325 /* JSDocumentType.cpp */; }; + 65DF31F609D1CC60000BE325 /* JSDocumentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF31E209D1CC60000BE325 /* JSDocumentType.h */; }; + 65DF31F709D1CC60000BE325 /* JSDOMImplementation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65DF31E309D1CC60000BE325 /* JSDOMImplementation.cpp */; }; + 65DF31F809D1CC60000BE325 /* JSDOMImplementation.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF31E409D1CC60000BE325 /* JSDOMImplementation.h */; }; + 65DF31F909D1CC60000BE325 /* JSElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65DF31E509D1CC60000BE325 /* JSElement.cpp */; }; + 65DF31FA09D1CC60000BE325 /* JSElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF31E609D1CC60000BE325 /* JSElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 65DF31FB09D1CC60000BE325 /* JSMutationEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65DF31E709D1CC60000BE325 /* JSMutationEvent.cpp */; }; + 65DF31FC09D1CC60000BE325 /* JSMutationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF31E809D1CC60000BE325 /* JSMutationEvent.h */; }; + 65DF31FD09D1CC60000BE325 /* JSNotation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65DF31E909D1CC60000BE325 /* JSNotation.cpp */; }; + 65DF31FE09D1CC60000BE325 /* JSNotation.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF31EA09D1CC60000BE325 /* JSNotation.h */; }; + 65DF31FF09D1CC60000BE325 /* JSProcessingInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65DF31EB09D1CC60000BE325 /* JSProcessingInstruction.cpp */; }; + 65DF320009D1CC60000BE325 /* JSProcessingInstruction.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF31EC09D1CC60000BE325 /* JSProcessingInstruction.h */; }; + 65DF320109D1CC60000BE325 /* JSRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65DF31ED09D1CC60000BE325 /* JSRange.cpp */; }; + 65DF320209D1CC60000BE325 /* JSRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF31EE09D1CC60000BE325 /* JSRange.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 65DF320309D1CC60000BE325 /* JSText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65DF31EF09D1CC60000BE325 /* JSText.cpp */; }; + 65DF320409D1CC60000BE325 /* JSText.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF31F009D1CC60000BE325 /* JSText.h */; }; + 65DF320509D1CC60000BE325 /* JSWheelEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65DF31F109D1CC60000BE325 /* JSWheelEvent.cpp */; }; + 65DF320609D1CC60000BE325 /* JSWheelEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF31F209D1CC60000BE325 /* JSWheelEvent.h */; }; + 65DF322F09D1DDBC000BE325 /* JSEntity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65DF322D09D1DDBC000BE325 /* JSEntity.cpp */; }; + 65DF323009D1DDBC000BE325 /* JSEntity.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF322E09D1DDBC000BE325 /* JSEntity.h */; }; + 65DF323909D1DE65000BE325 /* JSCanvasGradient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65DF323309D1DE65000BE325 /* JSCanvasGradient.cpp */; }; + 65DF323A09D1DE65000BE325 /* JSCanvasGradient.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF323409D1DE65000BE325 /* JSCanvasGradient.h */; }; + 65DF323B09D1DE65000BE325 /* JSCanvasPattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65DF323509D1DE65000BE325 /* JSCanvasPattern.cpp */; }; + 65DF323C09D1DE65000BE325 /* JSCanvasPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF323609D1DE65000BE325 /* JSCanvasPattern.h */; }; + 65DF323C09D1DE65001BE325 /* JSCanvasProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF323609D1DE65001BE325 /* JSCanvasProxy.h */; }; + 65DF326109D1E199000BE325 /* UserAgentStyleSheetsData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 656581AF09D14EE6000E61D7 /* UserAgentStyleSheetsData.cpp */; }; + 65E0E9441133C89F00B4CB10 /* JSDOMWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 65E0E9431133C89F00B4CB10 /* JSDOMWrapper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 65FEA86909833ADE00BED4AB /* Page.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65FEA86809833ADE00BED4AB /* Page.cpp */; }; + 6B3480940EEF50D400AC1B41 /* NativeImagePtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B3480920EEF50D400AC1B41 /* NativeImagePtr.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6C638895A96CCEE50C8C946C /* CachedResourceRequestInitiators.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C638893A96CCEE50C8C946C /* CachedResourceRequestInitiators.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6C638896A96CCEE50C8C946C /* CachedResourceRequestInitiators.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6C638894A96CCEE50C8C946C /* CachedResourceRequestInitiators.cpp */; }; + 6CDDE8D01770BB220016E072 /* RegionOversetState.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C70A81417707C49009A446E /* RegionOversetState.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6E21C6C01126338500A7BE02 /* GraphicsContext3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E21C6BF1126338500A7BE02 /* GraphicsContext3D.cpp */; }; + 6E21C6C21126339900A7BE02 /* GraphicsContext3DCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E21C6C11126339900A7BE02 /* GraphicsContext3DCG.cpp */; }; + 6E3FAD3814733F4000E42306 /* JSWebGLCompressedTextureS3TC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E3FAD3614733F4000E42306 /* JSWebGLCompressedTextureS3TC.cpp */; }; + 6E3FAD3814733F4000E42307 /* JSWebGLDepthTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E3FAD3614733F4000E42307 /* JSWebGLDepthTexture.cpp */; }; + 6E3FAD3814733F4010E42307 /* JSWebGLDebugRendererInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E3FAD3614733F4010E42307 /* JSWebGLDebugRendererInfo.cpp */; }; + 6E3FAD3814733F4020E42307 /* JSWebGLDebugShaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E3FAD3614733F4020E42307 /* JSWebGLDebugShaders.cpp */; }; + 6E3FAD3914733F4000E42306 /* JSWebGLCompressedTextureS3TC.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3FAD3714733F4000E42306 /* JSWebGLCompressedTextureS3TC.h */; }; + 6E3FAD3914733F4000E42307 /* JSWebGLDepthTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3FAD3714733F4000E42307 /* JSWebGLDepthTexture.h */; }; + 6E3FAD3914733F4011E42307 /* JSWebGLDebugRendererInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3FAD3714733F4011E42307 /* JSWebGLDebugRendererInfo.h */; }; + 6E3FAD3914733F4022E42307 /* JSWebGLDebugShaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3FAD3714733F4022E42307 /* JSWebGLDebugShaders.h */; }; + 6E3FAE8E14733FDB00E42306 /* WebGLCompressedTextureS3TC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E3FAE8C14733FDB00E42306 /* WebGLCompressedTextureS3TC.cpp */; }; + 6E3FAE8E14733FDB00E42307 /* WebGLDepthTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E3FAE8C14733FDB00E42307 /* WebGLDepthTexture.cpp */; }; + 6E3FAE8F14733FDB00E42306 /* WebGLCompressedTextureS3TC.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3FAE8D14733FDB00E42306 /* WebGLCompressedTextureS3TC.h */; }; + 6E3FAE8F14733FDB00E42307 /* WebGLDepthTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3FAE8D14733FDB00E42307 /* WebGLDepthTexture.h */; }; + 6E47E66010B7944B00B186C8 /* WebGLGetInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E47E65E10B7944B00B186C8 /* WebGLGetInfo.cpp */; }; + 6E47E66110B7944B00B186C8 /* WebGLGetInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E47E65F10B7944B00B186C8 /* WebGLGetInfo.h */; }; + 6E4ABCD4138EA0B70071D291 /* JSHTMLUnknownElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E4ABCD2138EA0B70071D291 /* JSHTMLUnknownElement.cpp */; }; + 6E4ABCD5138EA0B70071D291 /* JSHTMLUnknownElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E4ABCD3138EA0B70071D291 /* JSHTMLUnknownElement.h */; }; + 6E4E91AC10F7FB3100A2779C /* CanvasContextAttributes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E4E91A710F7FB3100A2779C /* CanvasContextAttributes.cpp */; }; + 6E4E91AD10F7FB3100A2779C /* CanvasContextAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E4E91A810F7FB3100A2779C /* CanvasContextAttributes.h */; }; + 6E4E91AE10F7FB3100A2779C /* WebGLContextAttributes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E4E91A910F7FB3100A2779C /* WebGLContextAttributes.cpp */; }; + 6E4E91AF10F7FB3100A2779C /* WebGLContextAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E4E91AA10F7FB3100A2779C /* WebGLContextAttributes.h */; }; + 6E67D2A61280E8A4008758F7 /* Extensions3DOpenGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E67D2A41280E8A4008758F7 /* Extensions3DOpenGL.cpp */; }; + 6E67D2A71280E8A4008758F7 /* Extensions3DOpenGL.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E67D2A51280E8A4008758F7 /* Extensions3DOpenGL.h */; }; + 6E67D2A91280E8BD008758F7 /* Extensions3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E67D2A81280E8BD008758F7 /* Extensions3D.h */; }; + 6EBC5EAF138B50F200A0CF8A /* JSFloat64Array.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6EBC5EAD138B50F200A0CF8A /* JSFloat64Array.cpp */; }; + 6EBC5EB0138B50F200A0CF8A /* JSFloat64Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EBC5EAE138B50F200A0CF8A /* JSFloat64Array.h */; }; + 6EBF0E4812A8926100DB1709 /* OESTextureFloat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF0E4512A8926100DB1709 /* OESTextureFloat.cpp */; }; + 6EBF0E4912A8926100DB1709 /* OESTextureFloat.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EBF0E4612A8926100DB1709 /* OESTextureFloat.h */; }; + 6EBF0E5412A8929800DB1709 /* WebGLExtension.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF0E5212A8929800DB1709 /* WebGLExtension.cpp */; }; + 6EBF0E5512A8929800DB1709 /* WebGLExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EBF0E5312A8929800DB1709 /* WebGLExtension.h */; }; + 6EBF0E7612A9868800DB1709 /* JSOESTextureFloat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF0E7412A9868800DB1709 /* JSOESTextureFloat.cpp */; }; + 6EBF0E7612A9868800DB170A /* JSEXTDrawBuffers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF0E7412A9868800DB170A /* JSEXTDrawBuffers.cpp */; }; + 6EBF0E7712A9868800DB1709 /* JSOESTextureFloat.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EBF0E7512A9868800DB1709 /* JSOESTextureFloat.h */; }; + 6EBF0E7712A9868800DB170A /* JSEXTDrawBuffers.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EBF0E7512A9868800DB170A /* JSEXTDrawBuffers.h */; }; + 6EC480A116EA638A00A48DCB /* FloatPolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6EC4809F16EA638A00A48DCB /* FloatPolygon.cpp */; }; + 6EC480A216EA638A00A48DCB /* FloatPolygon.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EC480A016EA638A00A48DCB /* FloatPolygon.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6ED878C4147493F4004C3597 /* RenderTableCaption.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6ED878C2147493F4004C3597 /* RenderTableCaption.cpp */; }; + 6ED878C5147493F4004C3597 /* RenderTableCaption.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ED878C3147493F4004C3597 /* RenderTableCaption.h */; }; + 6EE8A77210F803F3005A4A24 /* JSWebGLContextAttributes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6EE8A77010F803F3005A4A24 /* JSWebGLContextAttributes.cpp */; }; + 6EE8A77310F803F3005A4A24 /* JSWebGLContextAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EE8A77110F803F3005A4A24 /* JSWebGLContextAttributes.h */; }; + 7117445914BC34EC00EE5FC8 /* SVGTextMetricsBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7117445714BC34E200EE5FC8 /* SVGTextMetricsBuilder.h */; }; + 7118FED415685CC60030B79A /* JSSVGViewSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7118FED215685CC60030B79A /* JSSVGViewSpec.cpp */; }; + 7118FED515685CC60030B79A /* JSSVGViewSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = 7118FED315685CC60030B79A /* JSSVGViewSpec.h */; }; + 7134496D146941B300720312 /* SVGLengthContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7134496B146941B300720312 /* SVGLengthContext.cpp */; }; + 7134496E146941B300720312 /* SVGLengthContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 7134496C146941B300720312 /* SVGLengthContext.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 71537A01146BD9D7008BD615 /* SVGPathData.h in Headers */ = {isa = PBXBuildFile; fileRef = 715379FF146BD9D6008BD615 /* SVGPathData.h */; }; + 7157F062150B6564006EAABD /* SVGAnimatedTransformList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7157F061150B6564006EAABD /* SVGAnimatedTransformList.cpp */; }; + 71A57DF1154BE25C0009D120 /* SVGPathUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 71A57DEF154BE25C0009D120 /* SVGPathUtilities.cpp */; }; + 71A57DF2154BE25C0009D120 /* SVGPathUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 71A57DF0154BE25C0009D120 /* SVGPathUtilities.h */; }; + 71B1E125164048F700B1880A /* InspectorLayerTreeAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 71B1E124164048CC00B1880A /* InspectorLayerTreeAgent.h */; }; + 71B1E1261640491A00B1880A /* InspectorLayerTreeAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 71B1E123164048CC00B1880A /* InspectorLayerTreeAgent.cpp */; }; + 71CC7A20152A0BFE009EEAF9 /* SVGAnimatedEnumeration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 71CC7A1F152A0BFE009EEAF9 /* SVGAnimatedEnumeration.cpp */; }; + 71DCB7011568197600862271 /* JSSVGZoomAndPan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 71DCB6FF1568197600862271 /* JSSVGZoomAndPan.cpp */; }; + 71DCB7021568197600862271 /* JSSVGZoomAndPan.h in Headers */ = {isa = PBXBuildFile; fileRef = 71DCB7001568197600862271 /* JSSVGZoomAndPan.h */; }; + 71E2183A17359FB8006E6E4D /* PlugInsResources.h in Headers */ = {isa = PBXBuildFile; fileRef = 71E2183817359FB8006E6E4D /* PlugInsResources.h */; }; + 71E2183B17359FB8006E6E4D /* PlugInsResourcesData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 71E2183917359FB8006E6E4D /* PlugInsResourcesData.cpp */; }; + 71E623D1151F72A60036E2F4 /* SVGAnimatedIntegerOptionalInteger.h in Headers */ = {isa = PBXBuildFile; fileRef = 71E623CF151F72A60036E2F4 /* SVGAnimatedIntegerOptionalInteger.h */; }; + 71FB967B1383D64600AC8A4C /* SVGAnimatedEnumerationPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 71FB967A1383D64600AC8A4C /* SVGAnimatedEnumerationPropertyTearOff.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 72626E020EF022FE00A07E20 /* FontFastPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 72626E010EF022FE00A07E20 /* FontFastPath.cpp */; }; + 750D029411D0E7F300BD1B27 /* RenderInputSpeech.h in Headers */ = {isa = PBXBuildFile; fileRef = 750D029211D0E7F300BD1B27 /* RenderInputSpeech.h */; }; + 754133A8102E00E800075D00 /* InspectorTimelineAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 754133A7102E00E800075D00 /* InspectorTimelineAgent.h */; }; + 754133AA102E00F400075D00 /* InspectorTimelineAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 754133A9102E00F400075D00 /* InspectorTimelineAgent.cpp */; }; + 75415AFD12958D5E003AD669 /* SpeechInputEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 75415AF812958D5E003AD669 /* SpeechInputEvent.h */; }; + 75415B0012958D5E003AD669 /* SpeechInputResultList.h in Headers */ = {isa = PBXBuildFile; fileRef = 75415AFB12958D5E003AD669 /* SpeechInputResultList.h */; }; + 75415C29129A9920003AD669 /* SpeechInputResultList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 75415C27129A9920003AD669 /* SpeechInputResultList.cpp */; }; + 75415D56129AB2D2003AD669 /* JSSpeechInputEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 75415D50129AB2D2003AD669 /* JSSpeechInputEvent.h */; }; + 75415D58129AB2D2003AD669 /* JSSpeechInputResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 75415D52129AB2D2003AD669 /* JSSpeechInputResult.h */; }; + 75415D59129AB2D2003AD669 /* JSSpeechInputResultList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 75415D53129AB2D2003AD669 /* JSSpeechInputResultList.cpp */; }; + 75415D5A129AB2D2003AD669 /* JSSpeechInputResultList.h in Headers */ = {isa = PBXBuildFile; fileRef = 75415D54129AB2D2003AD669 /* JSSpeechInputResultList.h */; }; + 7553CFE8108F473F00EA281E /* TimelineRecordFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 7553CFE6108F473F00EA281E /* TimelineRecordFactory.h */; }; + 7553CFE9108F473F00EA281E /* TimelineRecordFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7553CFE7108F473F00EA281E /* TimelineRecordFactory.cpp */; }; + 7578F90C11DDF26900D933C5 /* SpeechInput.h in Headers */ = {isa = PBXBuildFile; fileRef = 7578F90911DDF26900D933C5 /* SpeechInput.h */; }; + 7578F90D11DDF26900D933C5 /* SpeechInputClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 7578F90A11DDF26900D933C5 /* SpeechInputClient.h */; }; + 7578F92011E4E32800D933C5 /* SpeechInputListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 7578F91E11E4E32800D933C5 /* SpeechInputListener.h */; }; + 75793E830D0CE0B3007FC0AC /* MessageEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 75793E800D0CE0B3007FC0AC /* MessageEvent.cpp */; }; + 75793E840D0CE0B3007FC0AC /* MessageEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 75793E810D0CE0B3007FC0AC /* MessageEvent.h */; }; + 75793EC80D0CE72D007FC0AC /* JSMessageEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 75793EC60D0CE72D007FC0AC /* JSMessageEvent.cpp */; }; + 75793EC90D0CE72D007FC0AC /* JSMessageEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 75793EC70D0CE72D007FC0AC /* JSMessageEvent.h */; }; + 75793ED30D0CE85B007FC0AC /* DOMMessageEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 75793ED00D0CE85B007FC0AC /* DOMMessageEvent.h */; }; + 75793ED40D0CE85B007FC0AC /* DOMMessageEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 75793ED10D0CE85B007FC0AC /* DOMMessageEvent.mm */; }; + 75793ED50D0CE85B007FC0AC /* DOMMessageEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 75793ED20D0CE85B007FC0AC /* DOMMessageEventInternal.h */; }; + 762F1ED7159D960A007408F2 /* HTMLDialogElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 762F1ED6159D960A007408F2 /* HTMLDialogElement.h */; }; + 7633A72613D8B33A008501B6 /* LocaleToScriptMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 7633A72413D8B33A008501B6 /* LocaleToScriptMapping.h */; }; + 7633A72713D8B33A008501B6 /* LocaleToScriptMappingDefault.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7633A72513D8B33A008501B6 /* LocaleToScriptMappingDefault.cpp */; }; + 76808B50159DADFA002B5233 /* JSHTMLDialogElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 76808B4E159DADFA002B5233 /* JSHTMLDialogElement.h */; }; + 7694563C1214D97C0007CBAE /* JSDOMTokenList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7694563A1214D97C0007CBAE /* JSDOMTokenList.cpp */; }; + 7694563D1214D97C0007CBAE /* JSDOMTokenList.h in Headers */ = {isa = PBXBuildFile; fileRef = 7694563B1214D97C0007CBAE /* JSDOMTokenList.h */; }; + 7694565B1214DB630007CBAE /* DOMDOMTokenList.h in Headers */ = {isa = PBXBuildFile; fileRef = 769456591214DB630007CBAE /* DOMDOMTokenList.h */; }; + 7694565C1214DB630007CBAE /* DOMDOMTokenList.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7694565A1214DB630007CBAE /* DOMDOMTokenList.mm */; }; + 76CDD2F21103DA6600680521 /* AccessibilityMenuList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76CDD2EC1103DA6600680521 /* AccessibilityMenuList.cpp */; }; + 76CDD2F31103DA6600680521 /* AccessibilityMenuList.h in Headers */ = {isa = PBXBuildFile; fileRef = 76CDD2ED1103DA6600680521 /* AccessibilityMenuList.h */; }; + 76CDD2F41103DA6600680521 /* AccessibilityMenuListPopup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76CDD2EE1103DA6600680521 /* AccessibilityMenuListPopup.cpp */; }; + 76CDD2F51103DA6600680521 /* AccessibilityMenuListPopup.h in Headers */ = {isa = PBXBuildFile; fileRef = 76CDD2EF1103DA6600680521 /* AccessibilityMenuListPopup.h */; }; + 76CDD2F61103DA6600680521 /* AccessibilityMenuListOption.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76CDD2F01103DA6600680521 /* AccessibilityMenuListOption.cpp */; }; + 76CDD2F71103DA6600680521 /* AccessibilityMenuListOption.h in Headers */ = {isa = PBXBuildFile; fileRef = 76CDD2F11103DA6600680521 /* AccessibilityMenuListOption.h */; }; + 76F2E2EC15F74CEF005FF664 /* RenderDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 76F2E2EA15F74CEF005FF664 /* RenderDialog.h */; }; + 76FC2B0B12370DA0006A991A /* DOMTokenList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76FC2B0812370DA0006A991A /* DOMTokenList.cpp */; }; + 76FC2B0C12370DA0006A991A /* DOMTokenList.h in Headers */ = {isa = PBXBuildFile; fileRef = 76FC2B0912370DA0006A991A /* DOMTokenList.h */; }; + 76FF17E311235673001D61B5 /* PluginViewNone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76FF17E211235673001D61B5 /* PluginViewNone.cpp */; }; + 7728694E14F8882500F484DC /* EXTTextureFilterAnisotropic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7728694B14F8882500F484DC /* EXTTextureFilterAnisotropic.cpp */; }; + 7728694F14F8882500F484DC /* EXTTextureFilterAnisotropic.h in Headers */ = {isa = PBXBuildFile; fileRef = 7728694C14F8882500F484DC /* EXTTextureFilterAnisotropic.h */; }; + 7728698314FD9ADA00F484DC /* JSEXTTextureFilterAnisotropic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7728698114FD9ADA00F484DC /* JSEXTTextureFilterAnisotropic.cpp */; }; + 7728698414FD9ADA00F484DC /* JSEXTTextureFilterAnisotropic.h in Headers */ = {isa = PBXBuildFile; fileRef = 7728698214FD9ADA00F484DC /* JSEXTTextureFilterAnisotropic.h */; }; + 77A17A7112F28182004E02F6 /* OESVertexArrayObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 77A17A6E12F28182004E02F6 /* OESVertexArrayObject.cpp */; }; + 77A17A7212F28182004E02F6 /* OESVertexArrayObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 77A17A6F12F28182004E02F6 /* OESVertexArrayObject.h */; }; + 77A17A7712F28642004E02F6 /* WebGLVertexArrayObjectOES.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 77A17A7412F28642004E02F6 /* WebGLVertexArrayObjectOES.cpp */; }; + 77A17A7812F28642004E02F6 /* WebGLVertexArrayObjectOES.h in Headers */ = {isa = PBXBuildFile; fileRef = 77A17A7512F28642004E02F6 /* WebGLVertexArrayObjectOES.h */; }; + 77A17A7B12F2890B004E02F6 /* GraphicsTypes3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 77A17A7A12F2890B004E02F6 /* GraphicsTypes3D.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 77A17AA612F28B2A004E02F6 /* JSOESVertexArrayObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 77A17AA212F28B2A004E02F6 /* JSOESVertexArrayObject.cpp */; }; + 77A17AA712F28B2A004E02F6 /* JSOESVertexArrayObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 77A17AA312F28B2A004E02F6 /* JSOESVertexArrayObject.h */; }; + 77EF62F312F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 77EF62F112F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp */; }; + 77EF62F412F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h in Headers */ = {isa = PBXBuildFile; fileRef = 77EF62F212F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h */; }; + 78D02BC5154A18DF00B62D05 /* CSSPropertyAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 78D02BC3154A18DF00B62D05 /* CSSPropertyAnimation.cpp */; }; + 78D02BC6154A18DF00B62D05 /* CSSPropertyAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 78D02BC4154A18DF00B62D05 /* CSSPropertyAnimation.h */; }; + 79AC9218109945C80021266E /* JSCompositionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79AC9216109945C80021266E /* JSCompositionEvent.cpp */; }; + 79AC9219109945C80021266E /* JSCompositionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 79AC9217109945C80021266E /* JSCompositionEvent.h */; }; + 79F2F5A11091939A000D87CB /* CompositionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79F2F59E1091939A000D87CB /* CompositionEvent.cpp */; }; + 79F2F5A21091939A000D87CB /* CompositionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 79F2F59F1091939A000D87CB /* CompositionEvent.h */; }; + 7A0E76D510BF050700A0276E /* JSInjectedScriptHostCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A0E76D410BF050700A0276E /* JSInjectedScriptHostCustom.cpp */; }; + 7A0E76DA10BF059800A0276E /* JSInjectedScriptHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A0E76D810BF059800A0276E /* JSInjectedScriptHost.cpp */; }; + 7A0E76DB10BF059800A0276E /* JSInjectedScriptHost.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A0E76D910BF059800A0276E /* JSInjectedScriptHost.h */; }; + 7A0E76F910BF08ED00A0276E /* InjectedScriptHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A0E76F610BF08ED00A0276E /* InjectedScriptHost.cpp */; }; + 7A0E76FA10BF08ED00A0276E /* InjectedScriptHost.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A0E76F710BF08ED00A0276E /* InjectedScriptHost.h */; }; + 7A0E770E10C00A8800A0276E /* InspectorFrontendHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A0E770B10C00A8800A0276E /* InspectorFrontendHost.cpp */; }; + 7A0E770F10C00A8800A0276E /* InspectorFrontendHost.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A0E770C10C00A8800A0276E /* InspectorFrontendHost.h */; }; + 7A0E771E10C00DB100A0276E /* JSInspectorFrontendHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A0E771C10C00DB100A0276E /* JSInspectorFrontendHost.cpp */; }; + 7A0E771F10C00DB100A0276E /* JSInspectorFrontendHost.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A0E771D10C00DB100A0276E /* JSInspectorFrontendHost.h */; }; + 7A1F2B52126C61B20006A7E6 /* InspectorClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A1F2B51126C61B20006A7E6 /* InspectorClient.cpp */; }; + 7A24587B1021EAF4000A00AA /* InspectorDOMAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A2458791021EAF4000A00AA /* InspectorDOMAgent.cpp */; }; + 7A24587C1021EAF4000A00AA /* InspectorDOMAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A24587A1021EAF4000A00AA /* InspectorDOMAgent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7A54857F14E02D51006AE05A /* InspectorHistory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A54857D14E02D51006AE05A /* InspectorHistory.cpp */; }; + 7A54858014E02D51006AE05A /* InspectorHistory.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A54857E14E02D51006AE05A /* InspectorHistory.h */; }; + 7A54881714E432A1006AE05A /* DOMPatchSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A54881514E432A1006AE05A /* DOMPatchSupport.h */; }; + 7A54881814E432A1006AE05A /* DOMPatchSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A54881614E432A1006AE05A /* DOMPatchSupport.cpp */; }; + 7A674BDB0F9EBF4E006CF099 /* PageGroupLoadDeferrer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A674BD90F9EBF4E006CF099 /* PageGroupLoadDeferrer.cpp */; }; + 7A674BDC0F9EBF4E006CF099 /* PageGroupLoadDeferrer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A674BDA0F9EBF4E006CF099 /* PageGroupLoadDeferrer.h */; }; + 7A74ECBA101839A600BF939E /* InspectorDOMStorageAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A74ECB8101839A500BF939E /* InspectorDOMStorageAgent.cpp */; }; + 7A74ECBB101839A600BF939E /* InspectorDOMStorageAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A74ECB9101839A600BF939E /* InspectorDOMStorageAgent.h */; }; + 7A74ECBD101839DA00BF939E /* JSInspectorFrontendHostCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A74ECBC101839DA00BF939E /* JSInspectorFrontendHostCustom.cpp */; }; + 7AA365EE12E7265400DCA242 /* InspectorRuntimeAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7AA365ED12E7265400DCA242 /* InspectorRuntimeAgent.cpp */; }; + 7AA51B6E1483B61600AD2752 /* InspectorBaseAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AA51B6C1483B61600AD2752 /* InspectorBaseAgent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7AA51B6F1483B61600AD2752 /* InspectorBaseAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7AA51B6D1483B61600AD2752 /* InspectorBaseAgent.cpp */; }; + 7AA51DD5148506A900AD2752 /* InspectorMemoryAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7AA51DD3148506A900AD2752 /* InspectorMemoryAgent.cpp */; }; + 7AA51DD6148506A900AD2752 /* InspectorMemoryAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AA51DD4148506A900AD2752 /* InspectorMemoryAgent.h */; }; + 7AABA25914BC613300AA9A11 /* DOMEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7AABA25714BC613300AA9A11 /* DOMEditor.cpp */; }; + 7AABA25A14BC613300AA9A11 /* DOMEditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AABA25814BC613300AA9A11 /* DOMEditor.h */; }; + 7AB0B1C01211A62200A76940 /* InspectorDatabaseAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7AB0B1BE1211A62200A76940 /* InspectorDatabaseAgent.cpp */; }; + 7AB0B1C11211A62200A76940 /* InspectorDatabaseAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AB0B1BF1211A62200A76940 /* InspectorDatabaseAgent.h */; }; + 7ACD88D314C08BD60084EDD2 /* InspectorIndexedDBAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7ACD88D114C08BD60084EDD2 /* InspectorIndexedDBAgent.cpp */; }; + 7ACD88D414C08BD60084EDD2 /* InspectorIndexedDBAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ACD88D214C08BD60084EDD2 /* InspectorIndexedDBAgent.h */; }; + 7ADE722610CBBB9B006B3B3A /* ContextMenuProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ADE722510CBBB9B006B3B3A /* ContextMenuProvider.h */; }; + 7AF11A5A12E727490061F23C /* InspectorRuntimeAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AF11A5912E727490061F23C /* InspectorRuntimeAgent.h */; }; + 7AFD4A8B1131C2760035B883 /* ScriptBreakpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AFD4A8A1131C2760035B883 /* ScriptBreakpoint.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7AFD4FF4113277B60035B883 /* ScriptDebugListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AFD4FF3113277B60035B883 /* ScriptDebugListener.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7C522D4B15B477E8009B7C95 /* InspectorOverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C522D4915B477E8009B7C95 /* InspectorOverlay.cpp */; }; + 7CC7E3D717208C0F003C5277 /* IDNScriptWhiteList.txt in Resources */ = {isa = PBXBuildFile; fileRef = 7CC7E3D617208C0F003C5277 /* IDNScriptWhiteList.txt */; }; + 7CE30DA9171B63D200EC33E1 /* FrameSnapshottingMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7CE30DA7171B63D200EC33E1 /* FrameSnapshottingMac.mm */; }; + 7CE30DAA171B63D200EC33E1 /* FrameSnapshottingMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CE30DA8171B63D200EC33E1 /* FrameSnapshottingMac.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7D741BDA177226AA00859170 /* CSSValueKeywords.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 6565814809D13043000E61D7 /* CSSValueKeywords.h */; }; + 7E12E90F15FA5D3A005E4126 /* CustomFilterMeshGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E12E90D15FA5D3A005E4126 /* CustomFilterMeshGenerator.h */; }; + 7E12E91015FA5D3A005E4126 /* CustomFilterMeshGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E12E90E15FA5D3A005E4126 /* CustomFilterMeshGenerator.cpp */; }; + 7E33CD01127F340D00BE8F17 /* PurgePriority.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E33CD00127F340D00BE8F17 /* PurgePriority.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7E37EF2E1339208800B29250 /* SubresourceLoaderCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E37EF2D1339208800B29250 /* SubresourceLoaderCF.cpp */; }; + 7E46F6FA1627A2CA00062223 /* JSOESElementIndexUint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E46F6F81627A2C900062223 /* JSOESElementIndexUint.cpp */; }; + 7E46F6FB1627A2CA00062223 /* JSOESElementIndexUint.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E46F6F91627A2C900062223 /* JSOESElementIndexUint.h */; }; + 7E5D7A76161D3F8F00896C34 /* OESElementIndexUint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E5D7A73161D3F8F00896C34 /* OESElementIndexUint.cpp */; }; + 7E5D7A77161D3F8F00896C34 /* OESElementIndexUint.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E5D7A74161D3F8F00896C34 /* OESElementIndexUint.h */; }; + 7E66E23316D6EB6C00F7E7FF /* WebGLCompressedTextureATC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E66E23116D6EB6C00F7E7FF /* WebGLCompressedTextureATC.cpp */; }; + 7E66E23317E6EB6C00F7E7FF /* WebGLCompressedTexturePVRTC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E66E23117E6EB6C00F7E7FF /* WebGLCompressedTexturePVRTC.cpp */; }; + 7E66E23416D6EB6C00F7E7FF /* WebGLCompressedTextureATC.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E66E23216D6EB6C00F7E7FF /* WebGLCompressedTextureATC.h */; }; + 7E66E23417E6EB6C00F7E7FF /* WebGLCompressedTexturePVRTC.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E66E23217E6EB6C00F7E7FF /* WebGLCompressedTexturePVRTC.h */; }; + 7E99AF510B13846468FB01A5 /* WindowFocusAllowedIndicator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E99AF520B13846468FB01A5 /* WindowFocusAllowedIndicator.cpp */; }; + 7E99AF530B13846468FB01A5 /* WindowFocusAllowedIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E99AF540B13846468FB01A5 /* WindowFocusAllowedIndicator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7EA30F6916DFFE7500257D0B /* JSWebGLCompressedTextureATC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EA30F6716DFFE7500257D0B /* JSWebGLCompressedTextureATC.cpp */; }; + 7EA30F6917EFFE7500257D0B /* JSWebGLCompressedTexturePVRTC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EA30F6717EFFE7500257D0B /* JSWebGLCompressedTexturePVRTC.cpp */; }; + 7EA30F6A16DFFE7500257D0B /* JSWebGLCompressedTextureATC.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EA30F6816DFFE7500257D0B /* JSWebGLCompressedTextureATC.h */; }; + 7EA30F6A17EFFE7500257D0B /* JSWebGLCompressedTexturePVRTC.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EA30F6817EFFE7500257D0B /* JSWebGLCompressedTexturePVRTC.h */; }; + 7EE6846012D26E3800E79415 /* AuthenticationCF.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EE6844D12D26E3800E79415 /* AuthenticationCF.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7EE6846112D26E3800E79415 /* AuthenticationChallenge.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EE6844E12D26E3800E79415 /* AuthenticationChallenge.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7EE6846312D26E3800E79415 /* CookieStorageCFNet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EE6845012D26E3800E79415 /* CookieStorageCFNet.cpp */; }; + 7EE6846512D26E3800E79415 /* CredentialStorageCFNet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EE6845212D26E3800E79415 /* CredentialStorageCFNet.cpp */; }; + 7EE6846612D26E3800E79415 /* FormDataStreamCFNet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EE6845312D26E3800E79415 /* FormDataStreamCFNet.cpp */; }; + 7EE6846712D26E3800E79415 /* FormDataStreamCFNet.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EE6845412D26E3800E79415 /* FormDataStreamCFNet.h */; }; + 7EE6846812D26E3800E79415 /* LoaderRunLoopCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EE6845512D26E3800E79415 /* LoaderRunLoopCF.cpp */; }; + 7EE6846912D26E3800E79415 /* LoaderRunLoopCF.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EE6845612D26E3800E79415 /* LoaderRunLoopCF.h */; }; + 7EE6846A12D26E3800E79415 /* ResourceError.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EE6845712D26E3800E79415 /* ResourceError.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7EE6846B12D26E3800E79415 /* ResourceErrorCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EE6845812D26E3800E79415 /* ResourceErrorCF.cpp */; }; + 7EE6846C12D26E3800E79415 /* ResourceHandleCFNet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EE6845912D26E3800E79415 /* ResourceHandleCFNet.cpp */; }; + 7EE6846D12D26E3800E79415 /* ResourceRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EE6845A12D26E3800E79415 /* ResourceRequest.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7EE6846E12D26E3800E79415 /* ResourceRequestCFNet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EE6845B12D26E3800E79415 /* ResourceRequestCFNet.cpp */; }; + 7EE6846F12D26E3800E79415 /* ResourceRequestCFNet.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EE6845C12D26E3800E79415 /* ResourceRequestCFNet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7EE6847012D26E3800E79415 /* ResourceResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EE6845D12D26E3800E79415 /* ResourceResponse.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7EE6847112D26E3800E79415 /* ResourceResponseCFNet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EE6845E12D26E3800E79415 /* ResourceResponseCFNet.cpp */; }; + 7EE6847512D26E7000E79415 /* ResourceLoaderCFNet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EE6847412D26E7000E79415 /* ResourceLoaderCFNet.cpp */; }; + 8102C5881325BB1100DDE67A /* StringCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8102C5871325BB1100DDE67A /* StringCallback.cpp */; }; + 81AC5999131636E60009A7E0 /* DataTransferItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 81AC5997131636E60009A7E0 /* DataTransferItem.h */; }; + 81AC599A131636E60009A7E0 /* DataTransferItemList.h in Headers */ = {isa = PBXBuildFile; fileRef = 81AC5998131636E60009A7E0 /* DataTransferItemList.h */; }; + 81AC6C36131C57D30009A7E0 /* StringCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 81AC6C35131C57D30009A7E0 /* StringCallback.h */; }; + 81BE20D311F4BC3200915DFA /* JSIDBCursor.h in Headers */ = {isa = PBXBuildFile; fileRef = 81BE20A811F4B66F00915DFA /* JSIDBCursor.h */; }; + 81F65FF613788FAA00FF6F2D /* DragState.h in Headers */ = {isa = PBXBuildFile; fileRef = 81F65FF513788FAA00FF6F2D /* DragState.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 82889B4C13C62392009A6156 /* InspectorStyleTextEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82889B4A13C62392009A6156 /* InspectorStyleTextEditor.cpp */; }; + 82889B4D13C62392009A6156 /* InspectorStyleTextEditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 82889B4B13C62392009A6156 /* InspectorStyleTextEditor.h */; }; + 82AB1743124B99EC00C5069D /* InspectorCSSAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82AB1741124B99EC00C5069D /* InspectorCSSAgent.cpp */; }; + 82AB1744124B99EC00C5069D /* InspectorCSSAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 82AB1742124B99EC00C5069D /* InspectorCSSAgent.h */; }; + 82AB1773125C826700C5069D /* InspectorStyleSheet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82AB176F125C826700C5069D /* InspectorStyleSheet.cpp */; }; + 82AB1774125C826700C5069D /* InspectorStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = 82AB1770125C826700C5069D /* InspectorStyleSheet.h */; }; + 82AB1775125C826700C5069D /* InspectorResourceAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82AB1771125C826700C5069D /* InspectorResourceAgent.cpp */; }; + 82AB1776125C826700C5069D /* InspectorResourceAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 82AB1772125C826700C5069D /* InspectorResourceAgent.h */; }; + 82E3D8DE122EA0D1003AE5BC /* CSSPropertySourceData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82E3D8DC122EA0D1003AE5BC /* CSSPropertySourceData.cpp */; }; + 82E3D8DF122EA0D1003AE5BC /* CSSPropertySourceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 82E3D8DD122EA0D1003AE5BC /* CSSPropertySourceData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 836FBCEA178C113200B21A15 /* SVGAnimatedTypeAnimator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 836FBCE9178C113200B21A15 /* SVGAnimatedTypeAnimator.cpp */; }; + 836FBCEC178C117F00B21A15 /* SVGAnimatedProperty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 836FBCEB178C117F00B21A15 /* SVGAnimatedProperty.cpp */; }; + 83C1D425178D5AB400141E68 /* SVGPathSegArcAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D413178D5AB400141E68 /* SVGPathSegArcAbs.h */; }; + 83C1D426178D5AB400141E68 /* SVGPathSegArcRel.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D414178D5AB400141E68 /* SVGPathSegArcRel.h */; }; + 83C1D427178D5AB400141E68 /* SVGPathSegCurvetoCubicAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D415178D5AB400141E68 /* SVGPathSegCurvetoCubicAbs.h */; }; + 83C1D428178D5AB400141E68 /* SVGPathSegCurvetoCubicRel.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D416178D5AB400141E68 /* SVGPathSegCurvetoCubicRel.h */; }; + 83C1D429178D5AB400141E68 /* SVGPathSegCurvetoCubicSmoothAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D417178D5AB400141E68 /* SVGPathSegCurvetoCubicSmoothAbs.h */; }; + 83C1D42A178D5AB400141E68 /* SVGPathSegCurvetoCubicSmoothRel.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D418178D5AB400141E68 /* SVGPathSegCurvetoCubicSmoothRel.h */; }; + 83C1D42B178D5AB400141E68 /* SVGPathSegCurvetoQuadraticAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D419178D5AB400141E68 /* SVGPathSegCurvetoQuadraticAbs.h */; }; + 83C1D42C178D5AB500141E68 /* SVGPathSegCurvetoQuadraticRel.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D41A178D5AB400141E68 /* SVGPathSegCurvetoQuadraticRel.h */; }; + 83C1D42D178D5AB500141E68 /* SVGPathSegCurvetoQuadraticSmoothAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D41B178D5AB400141E68 /* SVGPathSegCurvetoQuadraticSmoothAbs.h */; }; + 83C1D42E178D5AB500141E68 /* SVGPathSegCurvetoQuadraticSmoothRel.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D41C178D5AB400141E68 /* SVGPathSegCurvetoQuadraticSmoothRel.h */; }; + 83C1D42F178D5AB500141E68 /* SVGPathSegLinetoAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D41D178D5AB400141E68 /* SVGPathSegLinetoAbs.h */; }; + 83C1D430178D5AB500141E68 /* SVGPathSegLinetoHorizontalAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D41E178D5AB400141E68 /* SVGPathSegLinetoHorizontalAbs.h */; }; + 83C1D431178D5AB500141E68 /* SVGPathSegLinetoHorizontalRel.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D41F178D5AB400141E68 /* SVGPathSegLinetoHorizontalRel.h */; }; + 83C1D432178D5AB500141E68 /* SVGPathSegLinetoRel.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D420178D5AB400141E68 /* SVGPathSegLinetoRel.h */; }; + 83C1D433178D5AB500141E68 /* SVGPathSegLinetoVerticalAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D421178D5AB400141E68 /* SVGPathSegLinetoVerticalAbs.h */; }; + 83C1D434178D5AB500141E68 /* SVGPathSegLinetoVerticalRel.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D422178D5AB400141E68 /* SVGPathSegLinetoVerticalRel.h */; }; + 83C1D435178D5AB500141E68 /* SVGPathSegMovetoAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D423178D5AB400141E68 /* SVGPathSegMovetoAbs.h */; }; + 83C1D436178D5AB500141E68 /* SVGPathSegMovetoRel.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D424178D5AB400141E68 /* SVGPathSegMovetoRel.h */; }; + 8419D2A7120D92D000141F8F /* SVGPathByteStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 8419D2A4120D92D000141F8F /* SVGPathByteStream.h */; }; + 8419D2A8120D92D000141F8F /* SVGPathByteStreamBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8419D2A5120D92D000141F8F /* SVGPathByteStreamBuilder.cpp */; }; + 8419D2A9120D92D000141F8F /* SVGPathByteStreamBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8419D2A6120D92D000141F8F /* SVGPathByteStreamBuilder.h */; }; + 8419D2AC120D92FC00141F8F /* SVGPathByteStreamSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8419D2AA120D92FC00141F8F /* SVGPathByteStreamSource.cpp */; }; + 8419D2AD120D92FC00141F8F /* SVGPathByteStreamSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 8419D2AB120D92FC00141F8F /* SVGPathByteStreamSource.h */; }; + 8419D2B9120E0C7600141F8F /* SVGPathStringBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8419D2B7120E0C7600141F8F /* SVGPathStringBuilder.cpp */; }; + 8419D2BA120E0C7600141F8F /* SVGPathStringBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8419D2B8120E0C7600141F8F /* SVGPathStringBuilder.h */; }; + 84224183107E77F400766A87 /* JSSVGFEMorphologyElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84224181107E77F400766A87 /* JSSVGFEMorphologyElement.cpp */; }; + 84224184107E77F400766A87 /* JSSVGFEMorphologyElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 84224182107E77F400766A87 /* JSSVGFEMorphologyElement.h */; }; + 84224193107E78A700766A87 /* SVGFEMorphologyElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84224190107E78A700766A87 /* SVGFEMorphologyElement.cpp */; }; + 84224194107E78A700766A87 /* SVGFEMorphologyElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 84224191107E78A700766A87 /* SVGFEMorphologyElement.h */; }; + 84300BD6120C9AAC0021954A /* SVGPathStringSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 84300BD5120C9AAC0021954A /* SVGPathStringSource.h */; }; + 84300BD8120C9AD40021954A /* SVGPathSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 84300BD7120C9AD40021954A /* SVGPathSource.h */; }; + 84300BDA120C9AED0021954A /* SVGPathStringSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84300BD9120C9AED0021954A /* SVGPathStringSource.cpp */; }; + 845E72F80FD261EE00A87D79 /* Filter.h in Headers */ = {isa = PBXBuildFile; fileRef = 845E72F70FD261EE00A87D79 /* Filter.h */; }; + 845E72FB0FD2623900A87D79 /* SVGFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 845E72F90FD2623900A87D79 /* SVGFilter.cpp */; }; + 845E72FC0FD2623900A87D79 /* SVGFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 845E72FA0FD2623900A87D79 /* SVGFilter.h */; }; + 84730D771248F0B300D3A9C9 /* DistantLightSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 84730D5A1248F0B300D3A9C9 /* DistantLightSource.h */; }; + 84730D781248F0B300D3A9C9 /* FEConvolveMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84730D5B1248F0B300D3A9C9 /* FEConvolveMatrix.cpp */; }; + 84730D791248F0B300D3A9C9 /* FEConvolveMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = 84730D5C1248F0B300D3A9C9 /* FEConvolveMatrix.h */; }; + 84730D7A1248F0B300D3A9C9 /* FEDiffuseLighting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84730D5D1248F0B300D3A9C9 /* FEDiffuseLighting.cpp */; }; + 84730D7B1248F0B300D3A9C9 /* FEDiffuseLighting.h in Headers */ = {isa = PBXBuildFile; fileRef = 84730D5E1248F0B300D3A9C9 /* FEDiffuseLighting.h */; }; + 84730D7C1248F0B300D3A9C9 /* FEDisplacementMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84730D5F1248F0B300D3A9C9 /* FEDisplacementMap.cpp */; }; + 84730D7D1248F0B300D3A9C9 /* FEDisplacementMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 84730D601248F0B300D3A9C9 /* FEDisplacementMap.h */; }; + 84730D7E1248F0B300D3A9C9 /* FEFlood.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84730D611248F0B300D3A9C9 /* FEFlood.cpp */; }; + 84730D7F1248F0B300D3A9C9 /* FEFlood.h in Headers */ = {isa = PBXBuildFile; fileRef = 84730D621248F0B300D3A9C9 /* FEFlood.h */; }; + 84730D801248F0B300D3A9C9 /* FELighting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84730D631248F0B300D3A9C9 /* FELighting.cpp */; }; + 84730D811248F0B300D3A9C9 /* FELighting.h in Headers */ = {isa = PBXBuildFile; fileRef = 84730D641248F0B300D3A9C9 /* FELighting.h */; }; + 84730D821248F0B300D3A9C9 /* FEMerge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84730D651248F0B300D3A9C9 /* FEMerge.cpp */; }; + 84730D831248F0B300D3A9C9 /* FEMerge.h in Headers */ = {isa = PBXBuildFile; fileRef = 84730D661248F0B300D3A9C9 /* FEMerge.h */; }; + 84730D841248F0B300D3A9C9 /* FEMorphology.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84730D671248F0B300D3A9C9 /* FEMorphology.cpp */; }; + 84730D851248F0B300D3A9C9 /* FEMorphology.h in Headers */ = {isa = PBXBuildFile; fileRef = 84730D681248F0B300D3A9C9 /* FEMorphology.h */; }; + 84730D861248F0B300D3A9C9 /* FEOffset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84730D691248F0B300D3A9C9 /* FEOffset.cpp */; }; + 84730D871248F0B300D3A9C9 /* FEOffset.h in Headers */ = {isa = PBXBuildFile; fileRef = 84730D6A1248F0B300D3A9C9 /* FEOffset.h */; }; + 84730D881248F0B300D3A9C9 /* FESpecularLighting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84730D6B1248F0B300D3A9C9 /* FESpecularLighting.cpp */; }; + 84730D891248F0B300D3A9C9 /* FESpecularLighting.h in Headers */ = {isa = PBXBuildFile; fileRef = 84730D6C1248F0B300D3A9C9 /* FESpecularLighting.h */; }; + 84730D8A1248F0B300D3A9C9 /* FETile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84730D6D1248F0B300D3A9C9 /* FETile.cpp */; }; + 84730D8B1248F0B300D3A9C9 /* FETile.h in Headers */ = {isa = PBXBuildFile; fileRef = 84730D6E1248F0B300D3A9C9 /* FETile.h */; }; + 84730D8C1248F0B300D3A9C9 /* FETurbulence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84730D6F1248F0B300D3A9C9 /* FETurbulence.cpp */; }; + 84730D8D1248F0B300D3A9C9 /* FETurbulence.h in Headers */ = {isa = PBXBuildFile; fileRef = 84730D701248F0B300D3A9C9 /* FETurbulence.h */; }; + 84730D911248F0B300D3A9C9 /* LightSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 84730D741248F0B300D3A9C9 /* LightSource.h */; }; + 84730D921248F0B300D3A9C9 /* PointLightSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 84730D751248F0B300D3A9C9 /* PointLightSource.h */; }; + 84730D931248F0B300D3A9C9 /* SpotLightSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 84730D761248F0B300D3A9C9 /* SpotLightSource.h */; }; + 8476C9E511DF6A0B00555B02 /* SVGPathSegListBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8476C9E311DF6A0B00555B02 /* SVGPathSegListBuilder.cpp */; }; + 8476C9E611DF6A0B00555B02 /* SVGPathSegListBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8476C9E411DF6A0B00555B02 /* SVGPathSegListBuilder.h */; }; + 8476C9EA11DF6A2900555B02 /* SVGPathBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8476C9E711DF6A2900555B02 /* SVGPathBuilder.cpp */; }; + 8476C9EB11DF6A2900555B02 /* SVGPathBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8476C9E811DF6A2900555B02 /* SVGPathBuilder.h */; }; + 8476C9EC11DF6A2900555B02 /* SVGPathConsumer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8476C9E911DF6A2900555B02 /* SVGPathConsumer.h */; }; + 8476C9EF11DF6A5800555B02 /* SVGPathParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8476C9ED11DF6A5800555B02 /* SVGPathParser.cpp */; }; + 8476C9F011DF6A5800555B02 /* SVGPathParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 8476C9EE11DF6A5800555B02 /* SVGPathParser.h */; }; + 84801954108BAFB300CB2B1F /* FEGaussianBlur.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84801952108BAFB300CB2B1F /* FEGaussianBlur.cpp */; }; + 84801955108BAFB300CB2B1F /* FEGaussianBlur.h in Headers */ = {isa = PBXBuildFile; fileRef = 84801953108BAFB300CB2B1F /* FEGaussianBlur.h */; }; + 8482B7461198C35400BFB005 /* HashChangeEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 2442BBF81194C9D300D49469 /* HashChangeEvent.h */; }; + 8482B7511198CB6B00BFB005 /* JSHashChangeEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8482B74F1198CB6B00BFB005 /* JSHashChangeEvent.cpp */; }; + 8482B7521198CB6B00BFB005 /* JSHashChangeEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8482B7501198CB6B00BFB005 /* JSHashChangeEvent.h */; }; + 8485227B1190162C006EDC7F /* JSSVGHKernElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 848522771190162C006EDC7F /* JSSVGHKernElement.cpp */; }; + 8485227C1190162C006EDC7F /* JSSVGHKernElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 848522781190162C006EDC7F /* JSSVGHKernElement.h */; }; + 8485227D1190162C006EDC7F /* JSSVGVKernElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 848522791190162C006EDC7F /* JSSVGVKernElement.cpp */; }; + 8485227E1190162C006EDC7F /* JSSVGVKernElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8485227A1190162C006EDC7F /* JSSVGVKernElement.h */; }; + 8485228A1190173C006EDC7F /* SVGVKernElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 848522871190173C006EDC7F /* SVGVKernElement.cpp */; }; + 8485228B1190173C006EDC7F /* SVGVKernElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 848522881190173C006EDC7F /* SVGVKernElement.h */; }; + 849F77760EFEC6200090849D /* StrokeStyleApplier.h in Headers */ = {isa = PBXBuildFile; fileRef = 849F77750EFEC6200090849D /* StrokeStyleApplier.h */; }; + 84A81F3D0FC7DFF000955300 /* SourceAlpha.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84A81F3B0FC7DFF000955300 /* SourceAlpha.cpp */; }; + 84A81F3E0FC7DFF000955300 /* SourceAlpha.h in Headers */ = {isa = PBXBuildFile; fileRef = 84A81F3C0FC7DFF000955300 /* SourceAlpha.h */; }; + 84A81F410FC7E02700955300 /* SourceGraphic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84A81F3F0FC7E02700955300 /* SourceGraphic.cpp */; }; + 84A81F420FC7E02700955300 /* SourceGraphic.h in Headers */ = {isa = PBXBuildFile; fileRef = 84A81F400FC7E02700955300 /* SourceGraphic.h */; }; + 84B62685133138F90095A489 /* FontPlatformData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B62684133138F90095A489 /* FontPlatformData.cpp */; }; + 84B6B977120F13E500B8EFAF /* SVGPathSegListSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B6B975120F13E500B8EFAF /* SVGPathSegListSource.cpp */; }; + 84B6B978120F13E500B8EFAF /* SVGPathSegListSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 84B6B976120F13E500B8EFAF /* SVGPathSegListSource.h */; }; + 84C5B2FA1216DC810088B53A /* SVGPathTraversalStateBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84C5B2F81216DC810088B53A /* SVGPathTraversalStateBuilder.cpp */; }; + 84C5B2FB1216DC810088B53A /* SVGPathTraversalStateBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84C5B2F91216DC810088B53A /* SVGPathTraversalStateBuilder.h */; }; + 84C6784C1214814700A92902 /* SVGPathBlender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84C6784A1214814700A92902 /* SVGPathBlender.cpp */; }; + 84C6784D1214814700A92902 /* SVGPathBlender.h in Headers */ = {isa = PBXBuildFile; fileRef = 84C6784B1214814700A92902 /* SVGPathBlender.h */; }; + 84D0C4041115F1D40018AA34 /* AffineTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84D0C4031115F1D40018AA34 /* AffineTransform.cpp */; }; + 84D0C4061115F1EA0018AA34 /* AffineTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D0C4051115F1EA0018AA34 /* AffineTransform.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 85031B3C0A44EFC700F992E0 /* BeforeUnloadEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85031B260A44EFC700F992E0 /* BeforeUnloadEvent.cpp */; }; + 85031B3D0A44EFC700F992E0 /* BeforeUnloadEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B270A44EFC700F992E0 /* BeforeUnloadEvent.h */; }; + 85031B3E0A44EFC700F992E0 /* Clipboard.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B280A44EFC700F992E0 /* Clipboard.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 85031B3F0A44EFC700F992E0 /* ClipboardEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85031B290A44EFC700F992E0 /* ClipboardEvent.cpp */; }; + 85031B400A44EFC700F992E0 /* ClipboardEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B2A0A44EFC700F992E0 /* ClipboardEvent.h */; }; + 85031B410A44EFC700F992E0 /* Event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85031B2B0A44EFC700F992E0 /* Event.cpp */; }; + 85031B420A44EFC700F992E0 /* Event.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B2C0A44EFC700F992E0 /* Event.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 85031B430A44EFC700F992E0 /* KeyboardEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85031B2D0A44EFC700F992E0 /* KeyboardEvent.cpp */; }; + 85031B440A44EFC700F992E0 /* KeyboardEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B2E0A44EFC700F992E0 /* KeyboardEvent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 85031B450A44EFC700F992E0 /* MouseEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85031B2F0A44EFC700F992E0 /* MouseEvent.cpp */; }; + 85031B460A44EFC700F992E0 /* MouseEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B300A44EFC700F992E0 /* MouseEvent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 85031B470A44EFC700F992E0 /* MouseRelatedEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85031B310A44EFC700F992E0 /* MouseRelatedEvent.cpp */; }; + 85031B480A44EFC700F992E0 /* MouseRelatedEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B320A44EFC700F992E0 /* MouseRelatedEvent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 85031B490A44EFC700F992E0 /* MutationEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85031B330A44EFC700F992E0 /* MutationEvent.cpp */; }; + 85031B4A0A44EFC700F992E0 /* MutationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B340A44EFC700F992E0 /* MutationEvent.h */; }; + 85031B4B0A44EFC700F992E0 /* RegisteredEventListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85031B350A44EFC700F992E0 /* RegisteredEventListener.cpp */; }; + 85031B4C0A44EFC700F992E0 /* RegisteredEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B360A44EFC700F992E0 /* RegisteredEventListener.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 85031B4D0A44EFC700F992E0 /* UIEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85031B370A44EFC700F992E0 /* UIEvent.cpp */; }; + 85031B4E0A44EFC700F992E0 /* UIEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B380A44EFC700F992E0 /* UIEvent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 85031B4F0A44EFC700F992E0 /* UIEventWithKeyState.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B390A44EFC700F992E0 /* UIEventWithKeyState.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 85031B500A44EFC700F992E0 /* WheelEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85031B3A0A44EFC700F992E0 /* WheelEvent.cpp */; }; + 85031B510A44EFC700F992E0 /* WheelEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B3B0A44EFC700F992E0 /* WheelEvent.h */; }; + 85032DD70AA8C9BE007D3B7D /* DOMCSSCharsetRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 85032DC30AA8C9BE007D3B7D /* DOMCSSCharsetRule.h */; }; + 85032DD80AA8C9BE007D3B7D /* DOMCSSCharsetRule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85032DC40AA8C9BE007D3B7D /* DOMCSSCharsetRule.mm */; }; + 85032DD90AA8C9BE007D3B7D /* DOMCSSFontFaceRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 85032DC50AA8C9BE007D3B7D /* DOMCSSFontFaceRule.h */; }; + 85032DDA0AA8C9BE007D3B7D /* DOMCSSFontFaceRule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85032DC60AA8C9BE007D3B7D /* DOMCSSFontFaceRule.mm */; }; + 85032DDB0AA8C9BE007D3B7D /* DOMCSSImportRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 85032DC70AA8C9BE007D3B7D /* DOMCSSImportRule.h */; }; + 85032DDC0AA8C9BE007D3B7D /* DOMCSSImportRule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85032DC80AA8C9BE007D3B7D /* DOMCSSImportRule.mm */; }; + 85032DDD0AA8C9BE007D3B7D /* DOMCSSMediaRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 85032DC90AA8C9BE007D3B7D /* DOMCSSMediaRule.h */; }; + 85032DDE0AA8C9BE007D3B7D /* DOMCSSMediaRule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85032DCA0AA8C9BE007D3B7D /* DOMCSSMediaRule.mm */; }; + 85032DDF0AA8C9BE007D3B7D /* DOMCSSPageRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 85032DCB0AA8C9BE007D3B7D /* DOMCSSPageRule.h */; }; + 85032DE00AA8C9BE007D3B7D /* DOMCSSPageRule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85032DCC0AA8C9BE007D3B7D /* DOMCSSPageRule.mm */; }; + 85032DE10AA8C9BE007D3B7D /* DOMCSSRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 85032DCD0AA8C9BE007D3B7D /* DOMCSSRule.h */; }; + 85032DE20AA8C9BE007D3B7D /* DOMCSSRule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85032DCE0AA8C9BE007D3B7D /* DOMCSSRule.mm */; }; + 85032DE30AA8C9BE007D3B7D /* DOMCSSRuleList.h in Headers */ = {isa = PBXBuildFile; fileRef = 85032DCF0AA8C9BE007D3B7D /* DOMCSSRuleList.h */; }; + 85032DE40AA8C9BE007D3B7D /* DOMCSSRuleList.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85032DD00AA8C9BE007D3B7D /* DOMCSSRuleList.mm */; }; + 85032DE50AA8C9BE007D3B7D /* DOMCSSStyleDeclaration.h in Headers */ = {isa = PBXBuildFile; fileRef = 85032DD10AA8C9BE007D3B7D /* DOMCSSStyleDeclaration.h */; }; + 85032DE60AA8C9BE007D3B7D /* DOMCSSStyleDeclaration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85032DD20AA8C9BE007D3B7D /* DOMCSSStyleDeclaration.mm */; }; + 85032DE70AA8C9BE007D3B7D /* DOMCSSStyleRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 85032DD30AA8C9BE007D3B7D /* DOMCSSStyleRule.h */; }; + 85032DE80AA8C9BE007D3B7D /* DOMCSSStyleRule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85032DD40AA8C9BE007D3B7D /* DOMCSSStyleRule.mm */; }; + 85032DE90AA8C9BE007D3B7D /* DOMCSSUnknownRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 85032DD50AA8C9BE007D3B7D /* DOMCSSUnknownRule.h */; }; + 85032DEA0AA8C9BE007D3B7D /* DOMCSSUnknownRule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85032DD60AA8C9BE007D3B7D /* DOMCSSUnknownRule.mm */; }; + 850656FE0AAB4763002D15C0 /* DOMMediaList.h in Headers */ = {isa = PBXBuildFile; fileRef = 850656F80AAB4763002D15C0 /* DOMMediaList.h */; }; + 850656FF0AAB4763002D15C0 /* DOMMediaList.mm in Sources */ = {isa = PBXBuildFile; fileRef = 850656F90AAB4763002D15C0 /* DOMMediaList.mm */; }; + 850657000AAB4763002D15C0 /* DOMStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = 850656FA0AAB4763002D15C0 /* DOMStyleSheet.h */; }; + 850657010AAB4763002D15C0 /* DOMStyleSheet.mm in Sources */ = {isa = PBXBuildFile; fileRef = 850656FB0AAB4763002D15C0 /* DOMStyleSheet.mm */; }; + 850657020AAB4763002D15C0 /* DOMStyleSheetList.h in Headers */ = {isa = PBXBuildFile; fileRef = 850656FC0AAB4763002D15C0 /* DOMStyleSheetList.h */; }; + 850657030AAB4763002D15C0 /* DOMStyleSheetList.mm in Sources */ = {isa = PBXBuildFile; fileRef = 850656FD0AAB4763002D15C0 /* DOMStyleSheetList.mm */; }; + 8506579F0AAB4A8E002D15C0 /* DOMMediaList.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 850656F80AAB4763002D15C0 /* DOMMediaList.h */; }; + 850657A00AAB4A8E002D15C0 /* DOMStyleSheet.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 850656FA0AAB4763002D15C0 /* DOMStyleSheet.h */; }; + 850657A10AAB4A8E002D15C0 /* DOMStyleSheetList.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 850656FC0AAB4763002D15C0 /* DOMStyleSheetList.h */; }; + 85089CD70A98C42800A275AA /* DOMCDATASection.h in Headers */ = {isa = PBXBuildFile; fileRef = 85089CCF0A98C42700A275AA /* DOMCDATASection.h */; settings = {ATTRIBUTES = (); }; }; + 85089CD80A98C42800A275AA /* DOMCDATASection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85089CD00A98C42700A275AA /* DOMCDATASection.mm */; }; + 85089CD90A98C42800A275AA /* DOMComment.h in Headers */ = {isa = PBXBuildFile; fileRef = 85089CD10A98C42700A275AA /* DOMComment.h */; settings = {ATTRIBUTES = (); }; }; + 85089CDA0A98C42800A275AA /* DOMComment.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85089CD20A98C42700A275AA /* DOMComment.mm */; }; + 85089CDB0A98C42800A275AA /* DOMDocumentFragment.h in Headers */ = {isa = PBXBuildFile; fileRef = 85089CD30A98C42800A275AA /* DOMDocumentFragment.h */; settings = {ATTRIBUTES = (); }; }; + 85089CDC0A98C42800A275AA /* DOMDocumentFragment.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85089CD40A98C42800A275AA /* DOMDocumentFragment.mm */; }; + 85089CDD0A98C42800A275AA /* DOMEntityReference.h in Headers */ = {isa = PBXBuildFile; fileRef = 85089CD50A98C42800A275AA /* DOMEntityReference.h */; settings = {ATTRIBUTES = (); }; }; + 85089CDE0A98C42800A275AA /* DOMEntityReference.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85089CD60A98C42800A275AA /* DOMEntityReference.mm */; }; + 850B41C20AD9E7E700A6ED4F /* DOMNodeIteratorInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 850B41C00AD9E7E700A6ED4F /* DOMNodeIteratorInternal.h */; }; + 850B41C30AD9E7E700A6ED4F /* DOMTreeWalkerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 850B41C10AD9E7E700A6ED4F /* DOMTreeWalkerInternal.h */; }; + 85136C990AED665900F90A3D /* eastResizeCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C890AED665800F90A3D /* eastResizeCursor.png */; }; + 85136C9A0AED665900F90A3D /* eastWestResizeCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C8A0AED665800F90A3D /* eastWestResizeCursor.png */; }; + 85136C9B0AED665900F90A3D /* helpCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C8B0AED665800F90A3D /* helpCursor.png */; }; + 85136C9C0AED665900F90A3D /* linkCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C8C0AED665800F90A3D /* linkCursor.png */; }; + 85136C9D0AED665900F90A3D /* moveCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C8D0AED665800F90A3D /* moveCursor.png */; }; + 85136C9E0AED665900F90A3D /* northEastResizeCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C8E0AED665800F90A3D /* northEastResizeCursor.png */; }; + 85136C9F0AED665900F90A3D /* northEastSouthWestResizeCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C8F0AED665900F90A3D /* northEastSouthWestResizeCursor.png */; }; + 85136CA00AED665900F90A3D /* northResizeCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C900AED665900F90A3D /* northResizeCursor.png */; }; + 85136CA10AED665900F90A3D /* northSouthResizeCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C910AED665900F90A3D /* northSouthResizeCursor.png */; }; + 85136CA20AED665900F90A3D /* northWestResizeCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C920AED665900F90A3D /* northWestResizeCursor.png */; }; + 85136CA30AED665900F90A3D /* northWestSouthEastResizeCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C930AED665900F90A3D /* northWestSouthEastResizeCursor.png */; }; + 85136CA40AED665900F90A3D /* southEastResizeCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C940AED665900F90A3D /* southEastResizeCursor.png */; }; + 85136CA50AED665900F90A3D /* southResizeCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C950AED665900F90A3D /* southResizeCursor.png */; }; + 85136CA60AED665900F90A3D /* southWestResizeCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C960AED665900F90A3D /* southWestResizeCursor.png */; }; + 85136CA70AED665900F90A3D /* waitCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C970AED665900F90A3D /* waitCursor.png */; }; + 85136CA80AED665900F90A3D /* westResizeCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 85136C980AED665900F90A3D /* westResizeCursor.png */; }; + 85183B420AA6926100F19FA3 /* DOMHTMLBRElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85183B380AA6926100F19FA3 /* DOMHTMLBRElement.h */; }; + 85183B430AA6926100F19FA3 /* DOMHTMLBRElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85183B390AA6926100F19FA3 /* DOMHTMLBRElement.mm */; }; + 85183B440AA6926100F19FA3 /* DOMHTMLHeadingElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85183B3A0AA6926100F19FA3 /* DOMHTMLHeadingElement.h */; }; + 85183B450AA6926100F19FA3 /* DOMHTMLHeadingElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85183B3B0AA6926100F19FA3 /* DOMHTMLHeadingElement.mm */; }; + 85183B460AA6926100F19FA3 /* DOMHTMLParagraphElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85183B3C0AA6926100F19FA3 /* DOMHTMLParagraphElement.h */; }; + 85183B470AA6926100F19FA3 /* DOMHTMLParagraphElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85183B3D0AA6926100F19FA3 /* DOMHTMLParagraphElement.mm */; }; + 85183B480AA6926100F19FA3 /* DOMHTMLPreElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85183B3E0AA6926100F19FA3 /* DOMHTMLPreElement.h */; }; + 85183B490AA6926100F19FA3 /* DOMHTMLPreElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85183B3F0AA6926100F19FA3 /* DOMHTMLPreElement.mm */; }; + 85183B4A0AA6926100F19FA3 /* DOMHTMLQuoteElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85183B400AA6926100F19FA3 /* DOMHTMLQuoteElement.h */; }; + 85183B4B0AA6926100F19FA3 /* DOMHTMLQuoteElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85183B410AA6926100F19FA3 /* DOMHTMLQuoteElement.mm */; }; + 85183B590AA6928600F19FA3 /* DOMHTMLBRElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85183B380AA6926100F19FA3 /* DOMHTMLBRElement.h */; }; + 85183B5A0AA6928600F19FA3 /* DOMHTMLHeadingElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85183B3A0AA6926100F19FA3 /* DOMHTMLHeadingElement.h */; }; + 85183B5B0AA6928600F19FA3 /* DOMHTMLParagraphElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85183B3C0AA6926100F19FA3 /* DOMHTMLParagraphElement.h */; }; + 85183B5C0AA6928600F19FA3 /* DOMHTMLPreElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85183B3E0AA6926100F19FA3 /* DOMHTMLPreElement.h */; }; + 85183B5D0AA6928600F19FA3 /* DOMHTMLQuoteElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85183B400AA6926100F19FA3 /* DOMHTMLQuoteElement.h */; }; + 8518DCE90A9CC80D0091B7A6 /* DOMDOMImplementation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8518DCE70A9CC80C0091B7A6 /* DOMDOMImplementation.h */; settings = {ATTRIBUTES = (); }; }; + 8518DCEA0A9CC80D0091B7A6 /* DOMDOMImplementation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8518DCE80A9CC80D0091B7A6 /* DOMDOMImplementation.mm */; }; + 8518DD780A9CF31B0091B7A6 /* DOMNamedNodeMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8518DD760A9CF31B0091B7A6 /* DOMNamedNodeMap.h */; settings = {ATTRIBUTES = (); }; }; + 8518DD790A9CF31B0091B7A6 /* DOMNamedNodeMap.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8518DD770A9CF31B0091B7A6 /* DOMNamedNodeMap.mm */; }; + 851EE8110ABCA39600A6AA33 /* DOMEventException.h in Headers */ = {isa = PBXBuildFile; fileRef = 851EE8100ABCA39600A6AA33 /* DOMEventException.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 851EE8210ABCA58100A6AA33 /* DOMRangeException.h in Headers */ = {isa = PBXBuildFile; fileRef = 851EE8200ABCA58100A6AA33 /* DOMRangeException.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 85217E020A5ECD4700DB8D00 /* XSLImportRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85217E000A5ECD4700DB8D00 /* XSLImportRule.cpp */; }; + 85217E030A5ECD4700DB8D00 /* XSLImportRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 85217E010A5ECD4700DB8D00 /* XSLImportRule.h */; }; + 8538F0190AD718D8006A81D1 /* DOMAbstractView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8538F0160AD718D8006A81D1 /* DOMAbstractView.h */; }; + 8538F01B0AD718D8006A81D1 /* DOMAbstractViewInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8538F0180AD718D8006A81D1 /* DOMAbstractViewInternal.h */; }; + 8538F0300AD71CDB006A81D1 /* DOMAbstractView.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 8538F0160AD718D8006A81D1 /* DOMAbstractView.h */; }; + 8538F05B0AD722F1006A81D1 /* DOMRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 8538F0580AD722F1006A81D1 /* DOMRange.h */; }; + 8538F05C0AD722F1006A81D1 /* DOMRange.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8538F0590AD722F1006A81D1 /* DOMRange.mm */; }; + 8538F05D0AD722F1006A81D1 /* DOMRangeInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8538F05A0AD722F1006A81D1 /* DOMRangeInternal.h */; settings = {ATTRIBUTES = (); }; }; + 8538F0850AD72CB6006A81D1 /* DOMRanges.h in Headers */ = {isa = PBXBuildFile; fileRef = 8538F0840AD72CB6006A81D1 /* DOMRanges.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8538F08C0AD72E0A006A81D1 /* DOMRange.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 8538F0580AD722F1006A81D1 /* DOMRange.h */; }; + 853BF4DB0ABB6B55008647BB /* DOMNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 853BF4D90ABB6B55008647BB /* DOMNode.h */; }; + 853BF4DC0ABB6B55008647BB /* DOMNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 853BF4DA0ABB6B55008647BB /* DOMNode.mm */; }; + 853BF4EC0ABB6EB9008647BB /* DOMNode.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 853BF4D90ABB6B55008647BB /* DOMNode.h */; }; + 854075200AD6C5FB00620C57 /* DOMEventTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 8540751F0AD6C5FB00620C57 /* DOMEventTarget.h */; }; + 854075260AD6C66700620C57 /* DOMNodeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 854075250AD6C66700620C57 /* DOMNodeFilter.h */; }; + 8540753E0AD6C6DC00620C57 /* DOMEventTarget.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 8540751F0AD6C5FB00620C57 /* DOMEventTarget.h */; }; + 8540753F0AD6C6DC00620C57 /* DOMNodeFilter.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 854075250AD6C66700620C57 /* DOMNodeFilter.h */; }; + 854075690AD6CBF900620C57 /* DOMHTMLAppletElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 854075640AD6CBF900620C57 /* DOMHTMLAppletElement.h */; }; + 8540756A0AD6CBF900620C57 /* DOMHTMLEmbedElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 854075650AD6CBF900620C57 /* DOMHTMLEmbedElement.h */; }; + 8540756B0AD6CBF900620C57 /* DOMHTMLOptionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 854075660AD6CBF900620C57 /* DOMHTMLOptionElement.h */; }; + 8540756C0AD6CBF900620C57 /* DOMHTMLOptionElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 854075670AD6CBF900620C57 /* DOMHTMLOptionElement.mm */; }; + 8540756D0AD6CBF900620C57 /* DOMHTMLOptionElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 854075680AD6CBF900620C57 /* DOMHTMLOptionElementInternal.h */; }; + 854075830AD6CF1400620C57 /* DOMHTMLAppletElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 854075640AD6CBF900620C57 /* DOMHTMLAppletElement.h */; }; + 854075840AD6CF1400620C57 /* DOMHTMLEmbedElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 854075650AD6CBF900620C57 /* DOMHTMLEmbedElement.h */; }; + 854075850AD6CF1400620C57 /* DOMHTMLOptionElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 854075660AD6CBF900620C57 /* DOMHTMLOptionElement.h */; }; + 8542A7930AE5C93F00DF58DF /* JSSVGRect.h in Headers */ = {isa = PBXBuildFile; fileRef = 8574D1F80ADE6122004CBA11 /* JSSVGRect.h */; }; + 8542A7940AE5C94000DF58DF /* JSSVGRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8574D1F70ADE6122004CBA11 /* JSSVGRect.cpp */; }; + 8542A7950AE5C94100DF58DF /* JSSVGPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 8574D1F60ADE6122004CBA11 /* JSSVGPoint.h */; }; + 8542A7960AE5C94200DF58DF /* JSSVGPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8574D1F50ADE6122004CBA11 /* JSSVGPoint.cpp */; }; + 8542A7970AE5C94300DF58DF /* JSSVGNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 8574D1F40ADE6122004CBA11 /* JSSVGNumber.h */; }; + 8542A7980AE5C94300DF58DF /* JSSVGNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8574D1F30ADE6122004CBA11 /* JSSVGNumber.cpp */; }; + 8542A7990AE5C94400DF58DF /* JSSVGElementWrapperFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 8574D1F20ADE6122004CBA11 /* JSSVGElementWrapperFactory.h */; }; + 8542A79A0AE5C94400DF58DF /* JSSVGElementWrapperFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8574D1F10ADE6122004CBA11 /* JSSVGElementWrapperFactory.cpp */; }; + 854FE7300A2297BE0058D7AD /* NodeFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 854FE7260A2297BE0058D7AD /* NodeFilter.cpp */; }; + 854FE7310A2297BE0058D7AD /* NodeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 854FE7270A2297BE0058D7AD /* NodeFilter.h */; }; + 854FE7320A2297BE0058D7AD /* NodeFilterCondition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 854FE7280A2297BE0058D7AD /* NodeFilterCondition.cpp */; }; + 854FE7330A2297BE0058D7AD /* NodeFilterCondition.h in Headers */ = {isa = PBXBuildFile; fileRef = 854FE7290A2297BE0058D7AD /* NodeFilterCondition.h */; }; + 854FE7340A2297BE0058D7AD /* NodeIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 854FE72A0A2297BE0058D7AD /* NodeIterator.cpp */; }; + 854FE7350A2297BE0058D7AD /* NodeIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 854FE72B0A2297BE0058D7AD /* NodeIterator.h */; }; + 854FE7360A2297BE0058D7AD /* Traversal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 854FE72C0A2297BE0058D7AD /* Traversal.cpp */; }; + 854FE7370A2297BE0058D7AD /* Traversal.h in Headers */ = {isa = PBXBuildFile; fileRef = 854FE72D0A2297BE0058D7AD /* Traversal.h */; }; + 854FE7380A2297BE0058D7AD /* TreeWalker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 854FE72E0A2297BE0058D7AD /* TreeWalker.cpp */; }; + 854FE7390A2297BE0058D7AD /* TreeWalker.h in Headers */ = {isa = PBXBuildFile; fileRef = 854FE72F0A2297BE0058D7AD /* TreeWalker.h */; }; + 855247CF0AD850B80012093B /* DOMHTMLAppletElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 855247CD0AD850B80012093B /* DOMHTMLAppletElementInternal.h */; }; + 855247D00AD850B80012093B /* DOMHTMLEmbedElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 855247CE0AD850B80012093B /* DOMHTMLEmbedElementInternal.h */; }; + 85526C370AB0A17E000302EA /* DOMNodeIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 85526C350AB0A17E000302EA /* DOMNodeIterator.h */; }; + 85526C380AB0A17E000302EA /* DOMNodeIterator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85526C360AB0A17E000302EA /* DOMNodeIterator.mm */; }; + 85526C720AB0AE2F000302EA /* DOMNodeIterator.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85526C350AB0A17E000302EA /* DOMNodeIterator.h */; }; + 85526CD20AB0B7D9000302EA /* DOMTreeWalker.h in Headers */ = {isa = PBXBuildFile; fileRef = 85526CD00AB0B7D9000302EA /* DOMTreeWalker.h */; }; + 85526CD30AB0B7DA000302EA /* DOMTreeWalker.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85526CD10AB0B7D9000302EA /* DOMTreeWalker.mm */; }; + 85526D050AB0B979000302EA /* DOMTreeWalker.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85526CD00AB0B7D9000302EA /* DOMTreeWalker.h */; }; + 855D358A0AD707310019AAC7 /* DOMRGBColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 855D35890AD707310019AAC7 /* DOMRGBColor.h */; }; + 855D358D0AD707CC0019AAC7 /* DOMRGBColor.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 855D35890AD707310019AAC7 /* DOMRGBColor.h */; }; + 856C8AE40A912649005C687B /* DOMObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 856C8AE20A912649005C687B /* DOMObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 856C8AE50A912649005C687B /* DOMObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = 856C8AE30A912649005C687B /* DOMObject.mm */; }; + 8575DF7E0AA6127E00F5DBB5 /* DOMHTMLStyleElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 859A9C450AA5E3BD00B694B2 /* DOMHTMLStyleElement.h */; }; + 8575DF800AA612D600F5DBB5 /* DOMHTMLBaseElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 859A9C3D0AA5E3BD00B694B2 /* DOMHTMLBaseElement.h */; }; + 8575DF810AA612D600F5DBB5 /* DOMHTMLBodyElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 859A9C3F0AA5E3BD00B694B2 /* DOMHTMLBodyElement.h */; }; + 8575DF830AA612D600F5DBB5 /* DOMHTMLMetaElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 859A9C430AA5E3BD00B694B2 /* DOMHTMLMetaElement.h */; }; + 8575DF840AA6130E00F5DBB5 /* DOMHTMLHeadElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85992EB20AA5069500AC0785 /* DOMHTMLHeadElement.h */; }; + 8575DF850AA6130E00F5DBB5 /* DOMHTMLHtmlElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85992EB40AA5069500AC0785 /* DOMHTMLHtmlElement.h */; }; + 8575DF860AA6130E00F5DBB5 /* DOMHTMLLinkElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85992EB60AA5069500AC0785 /* DOMHTMLLinkElement.h */; }; + 8575DF870AA6130E00F5DBB5 /* DOMHTMLTitleElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85992EB80AA5069500AC0785 /* DOMHTMLTitleElement.h */; }; + 857E0B250AB043460036E447 /* DOMMouseEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 857E0B230AB043460036E447 /* DOMMouseEvent.h */; }; + 857E0B260AB043460036E447 /* DOMMouseEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 857E0B240AB043460036E447 /* DOMMouseEvent.mm */; }; + 857E0B310AB044780036E447 /* DOMMouseEvent.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 857E0B230AB043460036E447 /* DOMMouseEvent.h */; }; + 858015CE0ABCA75D0080588D /* DOMXPathException.h in Headers */ = {isa = PBXBuildFile; fileRef = 858015CD0ABCA75D0080588D /* DOMXPathException.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 858C381C0AA8E29600B187A4 /* DOMCSSValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 858C381A0AA8E29600B187A4 /* DOMCSSValue.h */; }; + 858C381D0AA8E29600B187A4 /* DOMCSSValue.mm in Sources */ = {isa = PBXBuildFile; fileRef = 858C381B0AA8E29600B187A4 /* DOMCSSValue.mm */; }; + 858C382C0AA8E40500B187A4 /* DOMCSSPrimitiveValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 858C382A0AA8E40500B187A4 /* DOMCSSPrimitiveValue.h */; }; + 858C382D0AA8E40500B187A4 /* DOMCSSPrimitiveValue.mm in Sources */ = {isa = PBXBuildFile; fileRef = 858C382B0AA8E40500B187A4 /* DOMCSSPrimitiveValue.mm */; }; + 858C383C0AA8ED8200B187A4 /* DOMCSSValueList.h in Headers */ = {isa = PBXBuildFile; fileRef = 858C383A0AA8ED8200B187A4 /* DOMCSSValueList.h */; }; + 858C383D0AA8ED8200B187A4 /* DOMCSSValueList.mm in Sources */ = {isa = PBXBuildFile; fileRef = 858C383B0AA8ED8200B187A4 /* DOMCSSValueList.mm */; }; + 858C38A50AA8F20400B187A4 /* DOMCounter.h in Headers */ = {isa = PBXBuildFile; fileRef = 858C38A10AA8F20400B187A4 /* DOMCounter.h */; }; + 858C38A60AA8F20400B187A4 /* DOMCounter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 858C38A20AA8F20400B187A4 /* DOMCounter.mm */; }; + 858C38A70AA8F20400B187A4 /* DOMRect.h in Headers */ = {isa = PBXBuildFile; fileRef = 858C38A30AA8F20400B187A4 /* DOMRect.h */; }; + 858C38A80AA8F20400B187A4 /* DOMRect.mm in Sources */ = {isa = PBXBuildFile; fileRef = 858C38A40AA8F20400B187A4 /* DOMRect.mm */; }; + 858C39280AA8FF9D00B187A4 /* DOMCSSStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = 858C39260AA8FF9D00B187A4 /* DOMCSSStyleSheet.h */; }; + 858C39290AA8FF9D00B187A4 /* DOMCSSStyleSheet.mm in Sources */ = {isa = PBXBuildFile; fileRef = 858C39270AA8FF9D00B187A4 /* DOMCSSStyleSheet.mm */; }; + 858C39B80AA905EF00B187A4 /* DOMCSSValue.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 858C381A0AA8E29600B187A4 /* DOMCSSValue.h */; }; + 858C39B90AA905EF00B187A4 /* DOMCSSPrimitiveValue.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 858C382A0AA8E40500B187A4 /* DOMCSSPrimitiveValue.h */; }; + 858C39BA0AA905EF00B187A4 /* DOMCSSValueList.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 858C383A0AA8ED8200B187A4 /* DOMCSSValueList.h */; }; + 858C39BB0AA905EF00B187A4 /* DOMCounter.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 858C38A10AA8F20400B187A4 /* DOMCounter.h */; }; + 858C39BC0AA905EF00B187A4 /* DOMRect.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 858C38A30AA8F20400B187A4 /* DOMRect.h */; }; + 858C39BD0AA905EF00B187A4 /* DOMCSSStyleSheet.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 858C39260AA8FF9D00B187A4 /* DOMCSSStyleSheet.h */; }; + 85909CDC0ACC7A7E00DF01F1 /* DOMCSSCharsetRuleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85909CD30ACC7A7E00DF01F1 /* DOMCSSCharsetRuleInternal.h */; }; + 85909CDD0ACC7A7E00DF01F1 /* DOMCSSFontFaceRuleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85909CD40ACC7A7E00DF01F1 /* DOMCSSFontFaceRuleInternal.h */; }; + 85909CDE0ACC7A7E00DF01F1 /* DOMCSSImportRuleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85909CD50ACC7A7E00DF01F1 /* DOMCSSImportRuleInternal.h */; }; + 85909CDF0ACC7A7E00DF01F1 /* DOMCSSMediaRuleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85909CD60ACC7A7E00DF01F1 /* DOMCSSMediaRuleInternal.h */; }; + 85909CE00ACC7A7E00DF01F1 /* DOMCSSPageRuleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85909CD70ACC7A7E00DF01F1 /* DOMCSSPageRuleInternal.h */; }; + 85909CE20ACC7A7E00DF01F1 /* DOMCSSStyleRuleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85909CD90ACC7A7E00DF01F1 /* DOMCSSStyleRuleInternal.h */; }; + 85909CE30ACC7A7E00DF01F1 /* DOMCSSStyleSheetInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85909CDA0ACC7A7E00DF01F1 /* DOMCSSStyleSheetInternal.h */; }; + 85909CE40ACC7A7E00DF01F1 /* DOMCSSUnknownRuleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85909CDB0ACC7A7E00DF01F1 /* DOMCSSUnknownRuleInternal.h */; }; + 85909D290ACC7D5500DF01F1 /* DOMCSSPrimitiveValueInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85909D260ACC7D5500DF01F1 /* DOMCSSPrimitiveValueInternal.h */; }; + 85909D2B0ACC7D5500DF01F1 /* DOMCSSValueListInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85909D280ACC7D5500DF01F1 /* DOMCSSValueListInternal.h */; }; + 85989DCC0ACC8BBD00A0BC51 /* DOMKeyboardEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85989DC50ACC8BBD00A0BC51 /* DOMKeyboardEventInternal.h */; }; + 85989DCD0ACC8BBD00A0BC51 /* DOMMouseEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85989DC60ACC8BBD00A0BC51 /* DOMMouseEventInternal.h */; }; + 85989DCE0ACC8BBD00A0BC51 /* DOMMutationEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85989DC70ACC8BBD00A0BC51 /* DOMMutationEventInternal.h */; }; + 85989DCF0ACC8BBD00A0BC51 /* DOMOverflowEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85989DC80ACC8BBD00A0BC51 /* DOMOverflowEventInternal.h */; }; + 85989DD00ACC8BBD00A0BC51 /* DOMUIEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85989DC90ACC8BBD00A0BC51 /* DOMUIEventInternal.h */; }; + 85989DD10ACC8BBD00A0BC51 /* DOMWheelEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85989DCA0ACC8BBD00A0BC51 /* DOMWheelEventInternal.h */; }; + 85992EBA0AA5069500AC0785 /* DOMHTMLHeadElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85992EB20AA5069500AC0785 /* DOMHTMLHeadElement.h */; settings = {ATTRIBUTES = (); }; }; + 85992EBB0AA5069500AC0785 /* DOMHTMLHeadElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85992EB30AA5069500AC0785 /* DOMHTMLHeadElement.mm */; }; + 85992EBC0AA5069500AC0785 /* DOMHTMLHtmlElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85992EB40AA5069500AC0785 /* DOMHTMLHtmlElement.h */; settings = {ATTRIBUTES = (); }; }; + 85992EBD0AA5069500AC0785 /* DOMHTMLHtmlElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85992EB50AA5069500AC0785 /* DOMHTMLHtmlElement.mm */; }; + 85992EBE0AA5069500AC0785 /* DOMHTMLLinkElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85992EB60AA5069500AC0785 /* DOMHTMLLinkElement.h */; settings = {ATTRIBUTES = (); }; }; + 85992EBF0AA5069500AC0785 /* DOMHTMLLinkElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85992EB70AA5069500AC0785 /* DOMHTMLLinkElement.mm */; }; + 85992EC00AA5069500AC0785 /* DOMHTMLTitleElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85992EB80AA5069500AC0785 /* DOMHTMLTitleElement.h */; settings = {ATTRIBUTES = (); }; }; + 85992EC10AA5069500AC0785 /* DOMHTMLTitleElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85992EB90AA5069500AC0785 /* DOMHTMLTitleElement.mm */; }; + 859A9C470AA5E3BD00B694B2 /* DOMHTMLBaseElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 859A9C3D0AA5E3BD00B694B2 /* DOMHTMLBaseElement.h */; }; + 859A9C480AA5E3BD00B694B2 /* DOMHTMLBaseElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 859A9C3E0AA5E3BD00B694B2 /* DOMHTMLBaseElement.mm */; }; + 859A9C490AA5E3BD00B694B2 /* DOMHTMLBodyElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 859A9C3F0AA5E3BD00B694B2 /* DOMHTMLBodyElement.h */; }; + 859A9C4A0AA5E3BD00B694B2 /* DOMHTMLBodyElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 859A9C400AA5E3BD00B694B2 /* DOMHTMLBodyElement.mm */; }; + 859A9C4D0AA5E3BD00B694B2 /* DOMHTMLMetaElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 859A9C430AA5E3BD00B694B2 /* DOMHTMLMetaElement.h */; }; + 859A9C4E0AA5E3BD00B694B2 /* DOMHTMLMetaElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 859A9C440AA5E3BD00B694B2 /* DOMHTMLMetaElement.mm */; }; + 859A9C4F0AA5E3BD00B694B2 /* DOMHTMLStyleElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 859A9C450AA5E3BD00B694B2 /* DOMHTMLStyleElement.h */; }; + 859A9C500AA5E3BD00B694B2 /* DOMHTMLStyleElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 859A9C460AA5E3BD00B694B2 /* DOMHTMLStyleElement.mm */; }; + 85ACA9860A9B520300671E90 /* DOMCharacterData.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ACA9840A9B520300671E90 /* DOMCharacterData.h */; settings = {ATTRIBUTES = (); }; }; + 85ACA9870A9B520300671E90 /* DOMCharacterData.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85ACA9850A9B520300671E90 /* DOMCharacterData.mm */; }; + 85ACA99C0A9B575900671E90 /* DOMText.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ACA99A0A9B575900671E90 /* DOMText.h */; settings = {ATTRIBUTES = (); }; }; + 85ACA99D0A9B575900671E90 /* DOMText.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85ACA99B0A9B575900671E90 /* DOMText.mm */; }; + 85ACA9C00A9B5FA500671E90 /* DOMElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ACA9BE0A9B5FA500671E90 /* DOMElement.h */; settings = {ATTRIBUTES = (); }; }; + 85ACA9C10A9B5FA500671E90 /* DOMElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85ACA9BF0A9B5FA500671E90 /* DOMElement.mm */; }; + 85ACAA8D0A9B759C00671E90 /* DOMNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ACAA890A9B759C00671E90 /* DOMNodeList.h */; settings = {ATTRIBUTES = (); }; }; + 85ACAA8E0A9B759C00671E90 /* DOMNodeList.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85ACAA8A0A9B759C00671E90 /* DOMNodeList.mm */; }; + 85ACABB00A9CAF8000671E90 /* DOMDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ACABAE0A9CAF8000671E90 /* DOMDocument.h */; settings = {ATTRIBUTES = (); }; }; + 85ACABB10A9CAF8000671E90 /* DOMDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85ACABAF0A9CAF8000671E90 /* DOMDocument.mm */; }; + 85AFA8220AAF528A00E84305 /* DOMEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85AFA8200AAF528A00E84305 /* DOMEvent.h */; }; + 85AFA8230AAF528A00E84305 /* DOMEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85AFA8210AAF528A00E84305 /* DOMEvent.mm */; }; + 85B498ED0ADB32FB00925CBB /* DOMCSSRuleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B498EC0ADB32FB00925CBB /* DOMCSSRuleInternal.h */; }; + 85B498F30ADB336A00925CBB /* DOMCSSValueInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B498F20ADB336A00925CBB /* DOMCSSValueInternal.h */; }; + 85B498F50ADB337A00925CBB /* DOMEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B498F40ADB337A00925CBB /* DOMEventInternal.h */; }; + 85B498FB0ADB340200925CBB /* DOMNodeInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B498FA0ADB340200925CBB /* DOMNodeInternal.h */; settings = {ATTRIBUTES = (); }; }; + 85B498FF0ADB348100925CBB /* DOMStyleSheetInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B498FE0ADB348100925CBB /* DOMStyleSheetInternal.h */; }; + 85BA4CDD0AA6861B0088052D /* DOMHTMLButtonElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85BA4CD50AA6861B0088052D /* DOMHTMLButtonElement.h */; }; + 85BA4CDE0AA6861B0088052D /* DOMHTMLButtonElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85BA4CD60AA6861B0088052D /* DOMHTMLButtonElement.mm */; }; + 85BA4CDF0AA6861B0088052D /* DOMHTMLFieldSetElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85BA4CD70AA6861B0088052D /* DOMHTMLFieldSetElement.h */; }; + 85BA4CE00AA6861B0088052D /* DOMHTMLFieldSetElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85BA4CD80AA6861B0088052D /* DOMHTMLFieldSetElement.mm */; }; + 85BA4CE10AA6861B0088052D /* DOMHTMLLabelElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85BA4CD90AA6861B0088052D /* DOMHTMLLabelElement.h */; }; + 85BA4CE20AA6861B0088052D /* DOMHTMLLabelElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85BA4CDA0AA6861B0088052D /* DOMHTMLLabelElement.mm */; }; + 85BA4CE30AA6861B0088052D /* DOMHTMLLegendElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85BA4CDB0AA6861B0088052D /* DOMHTMLLegendElement.h */; }; + 85BA4CE40AA6861B0088052D /* DOMHTMLLegendElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85BA4CDC0AA6861B0088052D /* DOMHTMLLegendElement.mm */; }; + 85BA4CE50AA686510088052D /* DOMHTMLButtonElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85BA4CD50AA6861B0088052D /* DOMHTMLButtonElement.h */; }; + 85BA4CE60AA686510088052D /* DOMHTMLFieldSetElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85BA4CD70AA6861B0088052D /* DOMHTMLFieldSetElement.h */; }; + 85BA4CE70AA686510088052D /* DOMHTMLLabelElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85BA4CD90AA6861B0088052D /* DOMHTMLLabelElement.h */; }; + 85BA4CE80AA686510088052D /* DOMHTMLLegendElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85BA4CDB0AA6861B0088052D /* DOMHTMLLegendElement.h */; }; + 85BA4D0B0AA688680088052D /* DOMHTMLDirectoryElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85BA4CFD0AA688680088052D /* DOMHTMLDirectoryElement.h */; }; + 85BA4D0C0AA688680088052D /* DOMHTMLDirectoryElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85BA4CFE0AA688680088052D /* DOMHTMLDirectoryElement.mm */; }; + 85BA4D0D0AA688680088052D /* DOMHTMLDivElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85BA4CFF0AA688680088052D /* DOMHTMLDivElement.h */; }; + 85BA4D0E0AA688680088052D /* DOMHTMLDivElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85BA4D000AA688680088052D /* DOMHTMLDivElement.mm */; }; + 85BA4D0F0AA688680088052D /* DOMHTMLDListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85BA4D010AA688680088052D /* DOMHTMLDListElement.h */; }; + 85BA4D100AA688680088052D /* DOMHTMLDListElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85BA4D020AA688680088052D /* DOMHTMLDListElement.mm */; }; + 85BA4D110AA688680088052D /* DOMHTMLLIElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85BA4D030AA688680088052D /* DOMHTMLLIElement.h */; }; + 85BA4D120AA688680088052D /* DOMHTMLLIElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85BA4D040AA688680088052D /* DOMHTMLLIElement.mm */; }; + 85BA4D130AA688680088052D /* DOMHTMLMenuElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85BA4D050AA688680088052D /* DOMHTMLMenuElement.h */; }; + 85BA4D140AA688680088052D /* DOMHTMLMenuElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85BA4D060AA688680088052D /* DOMHTMLMenuElement.mm */; }; + 85BA4D150AA688680088052D /* DOMHTMLOListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85BA4D070AA688680088052D /* DOMHTMLOListElement.h */; }; + 85BA4D160AA688680088052D /* DOMHTMLOListElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85BA4D080AA688680088052D /* DOMHTMLOListElement.mm */; }; + 85BA4D170AA688680088052D /* DOMHTMLUListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85BA4D090AA688680088052D /* DOMHTMLUListElement.h */; }; + 85BA4D180AA688680088052D /* DOMHTMLUListElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85BA4D0A0AA688680088052D /* DOMHTMLUListElement.mm */; }; + 85BA4D280AA6889F0088052D /* DOMHTMLDirectoryElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85BA4CFD0AA688680088052D /* DOMHTMLDirectoryElement.h */; }; + 85BA4D290AA6889F0088052D /* DOMHTMLDivElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85BA4CFF0AA688680088052D /* DOMHTMLDivElement.h */; }; + 85BA4D2A0AA6889F0088052D /* DOMHTMLDListElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85BA4D010AA688680088052D /* DOMHTMLDListElement.h */; }; + 85BA4D2B0AA6889F0088052D /* DOMHTMLLIElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85BA4D030AA688680088052D /* DOMHTMLLIElement.h */; }; + 85BA4D2C0AA6889F0088052D /* DOMHTMLMenuElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85BA4D050AA688680088052D /* DOMHTMLMenuElement.h */; }; + 85BA4D2D0AA6889F0088052D /* DOMHTMLOListElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85BA4D070AA688680088052D /* DOMHTMLOListElement.h */; }; + 85BA4D2E0AA6889F0088052D /* DOMHTMLUListElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85BA4D090AA688680088052D /* DOMHTMLUListElement.h */; }; + 85BCBC130ABBA87D00381160 /* DOMHTMLDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 85BCBC110ABBA87D00381160 /* DOMHTMLDocument.h */; }; + 85BCBC140ABBA87D00381160 /* DOMHTMLDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85BCBC120ABBA87D00381160 /* DOMHTMLDocument.mm */; }; + 85C050BA0AD84F5E005532E7 /* DOMHTMLAppletElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85C050B80AD84F5E005532E7 /* DOMHTMLAppletElement.mm */; }; + 85C050BB0AD84F5E005532E7 /* DOMHTMLEmbedElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85C050B90AD84F5E005532E7 /* DOMHTMLEmbedElement.mm */; }; + 85C78A680ABDE1B40044FC16 /* DOMException.h in Headers */ = {isa = PBXBuildFile; fileRef = 85C78A670ABDE1B40044FC16 /* DOMException.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 85C7F3E60AAF5D5E004014DD /* DOMEvent.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85AFA8200AAF528A00E84305 /* DOMEvent.h */; }; + 85C7F4910AAF79DC004014DD /* DOMUIEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85C7F48F0AAF79DC004014DD /* DOMUIEvent.h */; }; + 85C7F4920AAF79DC004014DD /* DOMUIEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85C7F4900AAF79DC004014DD /* DOMUIEvent.mm */; }; + 85C7F4D00AAF83F6004014DD /* DOMUIEvent.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85C7F48F0AAF79DC004014DD /* DOMUIEvent.h */; }; + 85C7F5BF0AAFB7CC004014DD /* DOMMutationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85C7F5BC0AAFB7CC004014DD /* DOMMutationEvent.h */; }; + 85C7F5C00AAFB7CD004014DD /* DOMMutationEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85C7F5BD0AAFB7CC004014DD /* DOMMutationEvent.mm */; }; + 85C7F5D00AAFB8D9004014DD /* DOMOverflowEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85C7F5CE0AAFB8D9004014DD /* DOMOverflowEvent.h */; }; + 85C7F5D10AAFB8D9004014DD /* DOMOverflowEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85C7F5CF0AAFB8D9004014DD /* DOMOverflowEvent.mm */; }; + 85C7F5E70AAFBAFB004014DD /* DOMWheelEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85C7F5E50AAFBAFB004014DD /* DOMWheelEvent.h */; }; + 85C7F5E80AAFBAFB004014DD /* DOMWheelEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85C7F5E60AAFBAFB004014DD /* DOMWheelEvent.mm */; }; + 85CA96B80A9621A600690CCF /* DOMEntity.h in Headers */ = {isa = PBXBuildFile; fileRef = 85CA96B60A9621A600690CCF /* DOMEntity.h */; settings = {ATTRIBUTES = (); }; }; + 85CA96B90A9621A600690CCF /* DOMEntity.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85CA96B70A9621A600690CCF /* DOMEntity.mm */; }; + 85CA96EA0A9624E900690CCF /* DOMNotation.h in Headers */ = {isa = PBXBuildFile; fileRef = 85CA96E80A9624E900690CCF /* DOMNotation.h */; settings = {ATTRIBUTES = (); }; }; + 85CA96EB0A9624E900690CCF /* DOMNotation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85CA96E90A9624E900690CCF /* DOMNotation.mm */; }; + 85CA975C0A962E5400690CCF /* DOMDocumentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 85CA975A0A962E5400690CCF /* DOMDocumentType.h */; settings = {ATTRIBUTES = (); }; }; + 85CA975D0A962E5400690CCF /* DOMDocumentType.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85CA975B0A962E5400690CCF /* DOMDocumentType.mm */; }; + 85D2AD680AB1A40A00C313EA /* DOMEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 85D2AD670AB1A40A00C313EA /* DOMEventListener.h */; }; + 85D2AD6D0AB1A48200C313EA /* DOMEventListener.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85D2AD670AB1A40A00C313EA /* DOMEventListener.h */; }; + 85D389B20A991A7F00282145 /* DOMAttr.h in Headers */ = {isa = PBXBuildFile; fileRef = 85D389B00A991A7F00282145 /* DOMAttr.h */; settings = {ATTRIBUTES = (); }; }; + 85D389B30A991A7F00282145 /* DOMAttr.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85D389B10A991A7F00282145 /* DOMAttr.mm */; }; + 85DF2C5C0AA341F600AD64C5 /* DOMHTMLFormElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF2C100AA341F600AD64C5 /* DOMHTMLFormElement.h */; settings = {ATTRIBUTES = (); }; }; + 85DF2C5D0AA341F600AD64C5 /* DOMHTMLFormElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF2C110AA341F600AD64C5 /* DOMHTMLFormElement.mm */; }; + 85DF2EED0AA387CB00AD64C5 /* DOMHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF2EEB0AA387CB00AD64C5 /* DOMHTMLElement.h */; settings = {ATTRIBUTES = (); }; }; + 85DF2EEE0AA387CB00AD64C5 /* DOMHTMLElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF2EEC0AA387CB00AD64C5 /* DOMHTMLElement.mm */; }; + 85DF2F8E0AA3C88100AD64C5 /* DOMHTMLCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF2F8C0AA3C88100AD64C5 /* DOMHTMLCollection.h */; settings = {ATTRIBUTES = (); }; }; + 85DF2F8F0AA3C88100AD64C5 /* DOMHTMLCollection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF2F8D0AA3C88100AD64C5 /* DOMHTMLCollection.mm */; }; + 85DF2F9B0AA3CAE500AD64C5 /* DOMHTMLOptionsCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF2F990AA3CAE500AD64C5 /* DOMHTMLOptionsCollection.h */; settings = {ATTRIBUTES = (); }; }; + 85DF2F9C0AA3CAE500AD64C5 /* DOMHTMLOptionsCollection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF2F9A0AA3CAE500AD64C5 /* DOMHTMLOptionsCollection.mm */; }; + 85DF345D0AAFC2D400E59AE3 /* DOMMutationEvent.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85C7F5BC0AAFB7CC004014DD /* DOMMutationEvent.h */; }; + 85DF345F0AAFC2D400E59AE3 /* DOMOverflowEvent.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85C7F5CE0AAFB8D9004014DD /* DOMOverflowEvent.h */; }; + 85DF34600AAFC2D400E59AE3 /* DOMWheelEvent.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85C7F5E50AAFBAFB004014DD /* DOMWheelEvent.h */; }; + 85DF34620AAFC2D400E59AE3 /* DOMKeyboardEvent.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85FF31580AAFBFCB00374F38 /* DOMKeyboardEvent.h */; }; + 85DF81270AA7787200486AD7 /* DOMHTMLAnchorElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF81210AA7787200486AD7 /* DOMHTMLAnchorElement.h */; }; + 85DF81280AA7787200486AD7 /* DOMHTMLAnchorElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF81220AA7787200486AD7 /* DOMHTMLAnchorElement.mm */; }; + 85DF81290AA7787200486AD7 /* DOMHTMLImageElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF81230AA7787200486AD7 /* DOMHTMLImageElement.h */; }; + 85DF812A0AA7787200486AD7 /* DOMHTMLImageElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF81240AA7787200486AD7 /* DOMHTMLImageElement.mm */; }; + 85DF812B0AA7787200486AD7 /* DOMHTMLObjectElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF81250AA7787200486AD7 /* DOMHTMLObjectElement.h */; }; + 85DF812C0AA7787200486AD7 /* DOMHTMLObjectElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF81260AA7787200486AD7 /* DOMHTMLObjectElement.mm */; }; + 85DF812D0AA778A300486AD7 /* DOMHTMLAnchorElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF81210AA7787200486AD7 /* DOMHTMLAnchorElement.h */; }; + 85DF812E0AA778A300486AD7 /* DOMHTMLImageElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF81230AA7787200486AD7 /* DOMHTMLImageElement.h */; }; + 85DF812F0AA778A300486AD7 /* DOMHTMLObjectElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF81250AA7787200486AD7 /* DOMHTMLObjectElement.h */; }; + 85DF81950AA77E4B00486AD7 /* DOMHTMLFrameElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF818D0AA77E4B00486AD7 /* DOMHTMLFrameElement.h */; }; + 85DF81960AA77E4B00486AD7 /* DOMHTMLFrameElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF818E0AA77E4B00486AD7 /* DOMHTMLFrameElement.mm */; }; + 85DF81970AA77E4B00486AD7 /* DOMHTMLFrameSetElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF818F0AA77E4B00486AD7 /* DOMHTMLFrameSetElement.h */; }; + 85DF81980AA77E4B00486AD7 /* DOMHTMLFrameSetElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF81900AA77E4B00486AD7 /* DOMHTMLFrameSetElement.mm */; }; + 85DF81990AA77E4B00486AD7 /* DOMHTMLIFrameElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF81910AA77E4B00486AD7 /* DOMHTMLIFrameElement.h */; }; + 85DF819A0AA77E4B00486AD7 /* DOMHTMLIFrameElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF81920AA77E4B00486AD7 /* DOMHTMLIFrameElement.mm */; }; + 85DF819B0AA77E4B00486AD7 /* DOMHTMLScriptElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF81930AA77E4B00486AD7 /* DOMHTMLScriptElement.h */; }; + 85DF819C0AA77E4B00486AD7 /* DOMHTMLScriptElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF81940AA77E4B00486AD7 /* DOMHTMLScriptElement.mm */; }; + 85DF819D0AA77E7E00486AD7 /* DOMHTMLFrameElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF818D0AA77E4B00486AD7 /* DOMHTMLFrameElement.h */; }; + 85DF819E0AA77E7E00486AD7 /* DOMHTMLFrameSetElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF818F0AA77E4B00486AD7 /* DOMHTMLFrameSetElement.h */; }; + 85DF819F0AA77E7E00486AD7 /* DOMHTMLIFrameElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF81910AA77E4B00486AD7 /* DOMHTMLIFrameElement.h */; }; + 85DF81A00AA77E7E00486AD7 /* DOMHTMLScriptElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF81930AA77E4B00486AD7 /* DOMHTMLScriptElement.h */; }; + 85DF821D0AA7849E00486AD7 /* DOMHTMLTableCaptionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF82130AA7849E00486AD7 /* DOMHTMLTableCaptionElement.h */; }; + 85DF821E0AA7849E00486AD7 /* DOMHTMLTableCaptionElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF82140AA7849E00486AD7 /* DOMHTMLTableCaptionElement.mm */; }; + 85DF821F0AA7849E00486AD7 /* DOMHTMLTableCellElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF82150AA7849E00486AD7 /* DOMHTMLTableCellElement.h */; }; + 85DF82200AA7849E00486AD7 /* DOMHTMLTableCellElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF82160AA7849E00486AD7 /* DOMHTMLTableCellElement.mm */; }; + 85DF82210AA7849E00486AD7 /* DOMHTMLTableColElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF82170AA7849E00486AD7 /* DOMHTMLTableColElement.h */; }; + 85DF82220AA7849E00486AD7 /* DOMHTMLTableColElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF82180AA7849E00486AD7 /* DOMHTMLTableColElement.mm */; }; + 85DF82230AA7849E00486AD7 /* DOMHTMLTableRowElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF82190AA7849E00486AD7 /* DOMHTMLTableRowElement.h */; }; + 85DF82240AA7849E00486AD7 /* DOMHTMLTableRowElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF821A0AA7849E00486AD7 /* DOMHTMLTableRowElement.mm */; }; + 85DF82250AA7849E00486AD7 /* DOMHTMLTableSectionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF821B0AA7849E00486AD7 /* DOMHTMLTableSectionElement.h */; }; + 85DF82260AA7849E00486AD7 /* DOMHTMLTableSectionElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF821C0AA7849E00486AD7 /* DOMHTMLTableSectionElement.mm */; }; + 85DF822F0AA7866800486AD7 /* DOMHTMLTableCaptionElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF82130AA7849E00486AD7 /* DOMHTMLTableCaptionElement.h */; }; + 85DF82300AA7866800486AD7 /* DOMHTMLTableCellElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF82150AA7849E00486AD7 /* DOMHTMLTableCellElement.h */; }; + 85DF82310AA7866800486AD7 /* DOMHTMLTableColElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF82170AA7849E00486AD7 /* DOMHTMLTableColElement.h */; }; + 85DF82320AA7866800486AD7 /* DOMHTMLTableRowElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF82190AA7849E00486AD7 /* DOMHTMLTableRowElement.h */; }; + 85DF82330AA7866800486AD7 /* DOMHTMLTableSectionElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF821B0AA7849E00486AD7 /* DOMHTMLTableSectionElement.h */; }; + 85DF82700AA78B8B00486AD7 /* DOMHTMLTableElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DF826E0AA78B8A00486AD7 /* DOMHTMLTableElement.h */; }; + 85DF82710AA78B8B00486AD7 /* DOMHTMLTableElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85DF826F0AA78B8A00486AD7 /* DOMHTMLTableElement.mm */; }; + 85DF82740AA78C7300486AD7 /* DOMHTMLTableElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85DF826E0AA78B8A00486AD7 /* DOMHTMLTableElement.h */; }; + 85E7118D0AC5D5350053270F /* DOMAttrInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7113E0AC5D5340053270F /* DOMAttrInternal.h */; }; + 85E7118E0AC5D5350053270F /* DOMCDATASectionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7113F0AC5D5340053270F /* DOMCDATASectionInternal.h */; }; + 85E7118F0AC5D5350053270F /* DOMCharacterDataInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711400AC5D5340053270F /* DOMCharacterDataInternal.h */; }; + 85E711900AC5D5350053270F /* DOMCommentInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711410AC5D5340053270F /* DOMCommentInternal.h */; }; + 85E711910AC5D5350053270F /* DOMCounterInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711420AC5D5340053270F /* DOMCounterInternal.h */; }; + 85E711920AC5D5350053270F /* DOMCSSRuleListInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711430AC5D5340053270F /* DOMCSSRuleListInternal.h */; }; + 85E711930AC5D5350053270F /* DOMCSSStyleDeclarationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711440AC5D5340053270F /* DOMCSSStyleDeclarationInternal.h */; }; + 85E711940AC5D5350053270F /* DOMDocumentFragmentInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85E711450AC5D5340053270F /* DOMDocumentFragmentInternal.h */; }; + 85E711950AC5D5350053270F /* DOMDocumentInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711460AC5D5340053270F /* DOMDocumentInternal.h */; }; + 85E711960AC5D5350053270F /* DOMDocumentTypeInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711470AC5D5340053270F /* DOMDocumentTypeInternal.h */; }; + 85E711970AC5D5350053270F /* DOMDOMImplementationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711480AC5D5340053270F /* DOMDOMImplementationInternal.h */; }; + 85E711980AC5D5350053270F /* DOMElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711490AC5D5340053270F /* DOMElementInternal.h */; settings = {ATTRIBUTES = (); }; }; + 85E711990AC5D5350053270F /* DOMEntityInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7114A0AC5D5340053270F /* DOMEntityInternal.h */; }; + 85E7119A0AC5D5350053270F /* DOMEntityReferenceInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7114B0AC5D5340053270F /* DOMEntityReferenceInternal.h */; }; + 85E7119B0AC5D5350053270F /* DOMHTMLAnchorElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7114C0AC5D5340053270F /* DOMHTMLAnchorElementInternal.h */; }; + 85E7119C0AC5D5350053270F /* DOMHTMLAreaElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7114D0AC5D5340053270F /* DOMHTMLAreaElementInternal.h */; }; + 85E7119D0AC5D5350053270F /* DOMHTMLBaseElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7114E0AC5D5340053270F /* DOMHTMLBaseElementInternal.h */; }; + 85E7119E0AC5D5350053270F /* DOMHTMLBaseFontElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7114F0AC5D5340053270F /* DOMHTMLBaseFontElementInternal.h */; }; + 85E7119F0AC5D5350053270F /* DOMHTMLBodyElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711500AC5D5340053270F /* DOMHTMLBodyElementInternal.h */; }; + 85E711A00AC5D5350053270F /* DOMHTMLBRElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711510AC5D5340053270F /* DOMHTMLBRElementInternal.h */; }; + 85E711A10AC5D5350053270F /* DOMHTMLButtonElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711520AC5D5340053270F /* DOMHTMLButtonElementInternal.h */; }; + 85E711A20AC5D5350053270F /* DOMHTMLCollectionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711530AC5D5340053270F /* DOMHTMLCollectionInternal.h */; }; + 85E711A30AC5D5350053270F /* DOMHTMLDirectoryElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711540AC5D5340053270F /* DOMHTMLDirectoryElementInternal.h */; }; + 85E711A40AC5D5350053270F /* DOMHTMLDivElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711550AC5D5340053270F /* DOMHTMLDivElementInternal.h */; }; + 85E711A50AC5D5350053270F /* DOMHTMLDListElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711560AC5D5340053270F /* DOMHTMLDListElementInternal.h */; }; + 85E711A60AC5D5350053270F /* DOMHTMLDocumentInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711570AC5D5340053270F /* DOMHTMLDocumentInternal.h */; }; + 85E711A70AC5D5350053270F /* DOMHTMLElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711580AC5D5340053270F /* DOMHTMLElementInternal.h */; settings = {ATTRIBUTES = (); }; }; + 85E711A80AC5D5350053270F /* DOMHTMLFieldSetElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711590AC5D5340053270F /* DOMHTMLFieldSetElementInternal.h */; }; + 85E711A90AC5D5350053270F /* DOMHTMLFontElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7115A0AC5D5340053270F /* DOMHTMLFontElementInternal.h */; }; + 85E711AA0AC5D5350053270F /* DOMHTMLFormElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7115B0AC5D5340053270F /* DOMHTMLFormElementInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 85E711AB0AC5D5350053270F /* DOMHTMLFrameElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7115C0AC5D5340053270F /* DOMHTMLFrameElementInternal.h */; }; + 85E711AC0AC5D5350053270F /* DOMHTMLFrameSetElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7115D0AC5D5340053270F /* DOMHTMLFrameSetElementInternal.h */; }; + 85E711AD0AC5D5350053270F /* DOMHTMLHeadElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7115E0AC5D5350053270F /* DOMHTMLHeadElementInternal.h */; }; + 85E711AE0AC5D5350053270F /* DOMHTMLHeadingElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7115F0AC5D5350053270F /* DOMHTMLHeadingElementInternal.h */; }; + 85E711AF0AC5D5350053270F /* DOMHTMLHRElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711600AC5D5350053270F /* DOMHTMLHRElementInternal.h */; }; + 85E711B00AC5D5350053270F /* DOMHTMLHtmlElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711610AC5D5350053270F /* DOMHTMLHtmlElementInternal.h */; }; + 85E711B10AC5D5350053270F /* DOMHTMLIFrameElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711620AC5D5350053270F /* DOMHTMLIFrameElementInternal.h */; }; + 85E711B20AC5D5350053270F /* DOMHTMLImageElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711630AC5D5350053270F /* DOMHTMLImageElementInternal.h */; }; + 85E711B30AC5D5350053270F /* DOMHTMLInputElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711640AC5D5350053270F /* DOMHTMLInputElementInternal.h */; }; + 85E711B50AC5D5350053270F /* DOMHTMLLabelElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711660AC5D5350053270F /* DOMHTMLLabelElementInternal.h */; }; + 85E711B60AC5D5350053270F /* DOMHTMLLegendElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711670AC5D5350053270F /* DOMHTMLLegendElementInternal.h */; }; + 85E711B70AC5D5350053270F /* DOMHTMLLIElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711680AC5D5350053270F /* DOMHTMLLIElementInternal.h */; }; + 85E711B80AC5D5350053270F /* DOMHTMLLinkElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711690AC5D5350053270F /* DOMHTMLLinkElementInternal.h */; }; + 85E711B90AC5D5350053270F /* DOMHTMLMapElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7116A0AC5D5350053270F /* DOMHTMLMapElementInternal.h */; }; + 85E711BA0AC5D5350053270F /* DOMHTMLMenuElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7116B0AC5D5350053270F /* DOMHTMLMenuElementInternal.h */; }; + 85E711BB0AC5D5350053270F /* DOMHTMLMetaElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7116C0AC5D5350053270F /* DOMHTMLMetaElementInternal.h */; }; + 85E711BC0AC5D5350053270F /* DOMHTMLModElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7116D0AC5D5350053270F /* DOMHTMLModElementInternal.h */; }; + 85E711BD0AC5D5350053270F /* DOMHTMLObjectElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7116E0AC5D5350053270F /* DOMHTMLObjectElementInternal.h */; }; + 85E711BE0AC5D5350053270F /* DOMHTMLOListElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7116F0AC5D5350053270F /* DOMHTMLOListElementInternal.h */; }; + 85E711BF0AC5D5350053270F /* DOMHTMLOptGroupElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711700AC5D5350053270F /* DOMHTMLOptGroupElementInternal.h */; }; + 85E711C00AC5D5350053270F /* DOMHTMLOptionsCollectionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711710AC5D5350053270F /* DOMHTMLOptionsCollectionInternal.h */; }; + 85E711C10AC5D5350053270F /* DOMHTMLParagraphElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711720AC5D5350053270F /* DOMHTMLParagraphElementInternal.h */; }; + 85E711C20AC5D5350053270F /* DOMHTMLParamElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711730AC5D5350053270F /* DOMHTMLParamElementInternal.h */; }; + 85E711C30AC5D5350053270F /* DOMHTMLPreElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711740AC5D5350053270F /* DOMHTMLPreElementInternal.h */; }; + 85E711C40AC5D5350053270F /* DOMHTMLQuoteElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711750AC5D5350053270F /* DOMHTMLQuoteElementInternal.h */; }; + 85E711C50AC5D5350053270F /* DOMHTMLScriptElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711760AC5D5350053270F /* DOMHTMLScriptElementInternal.h */; }; + 85E711C60AC5D5350053270F /* DOMHTMLSelectElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711770AC5D5350053270F /* DOMHTMLSelectElementInternal.h */; }; + 85E711C70AC5D5350053270F /* DOMHTMLStyleElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711780AC5D5350053270F /* DOMHTMLStyleElementInternal.h */; }; + 85E711C80AC5D5350053270F /* DOMHTMLTableCaptionElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711790AC5D5350053270F /* DOMHTMLTableCaptionElementInternal.h */; }; + 85E711C90AC5D5350053270F /* DOMHTMLTableCellElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7117A0AC5D5350053270F /* DOMHTMLTableCellElementInternal.h */; }; + 85E711CA0AC5D5350053270F /* DOMHTMLTableColElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7117B0AC5D5350053270F /* DOMHTMLTableColElementInternal.h */; }; + 85E711CB0AC5D5350053270F /* DOMHTMLTableElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7117C0AC5D5350053270F /* DOMHTMLTableElementInternal.h */; }; + 85E711CC0AC5D5350053270F /* DOMHTMLTableRowElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7117D0AC5D5350053270F /* DOMHTMLTableRowElementInternal.h */; }; + 85E711CD0AC5D5350053270F /* DOMHTMLTableSectionElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7117E0AC5D5350053270F /* DOMHTMLTableSectionElementInternal.h */; }; + 85E711CE0AC5D5350053270F /* DOMHTMLTextAreaElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7117F0AC5D5350053270F /* DOMHTMLTextAreaElementInternal.h */; }; + 85E711CF0AC5D5350053270F /* DOMHTMLTitleElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711800AC5D5350053270F /* DOMHTMLTitleElementInternal.h */; }; + 85E711D00AC5D5350053270F /* DOMHTMLUListElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711810AC5D5350053270F /* DOMHTMLUListElementInternal.h */; }; + 85E711D10AC5D5350053270F /* DOMMediaListInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711820AC5D5350053270F /* DOMMediaListInternal.h */; }; + 85E711D20AC5D5350053270F /* DOMNamedNodeMapInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711830AC5D5350053270F /* DOMNamedNodeMapInternal.h */; }; + 85E711D30AC5D5350053270F /* DOMNodeListInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711840AC5D5350053270F /* DOMNodeListInternal.h */; }; + 85E711D40AC5D5350053270F /* DOMNotationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711850AC5D5350053270F /* DOMNotationInternal.h */; settings = {ATTRIBUTES = (); }; }; + 85E711D50AC5D5350053270F /* DOMProcessingInstructionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711860AC5D5350053270F /* DOMProcessingInstructionInternal.h */; }; + 85E711D60AC5D5350053270F /* DOMRectInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711870AC5D5350053270F /* DOMRectInternal.h */; }; + 85E711D70AC5D5350053270F /* DOMStyleSheetListInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E711880AC5D5350053270F /* DOMStyleSheetListInternal.h */; }; + 85E711D90AC5D5350053270F /* DOMTextInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7118A0AC5D5350053270F /* DOMTextInternal.h */; }; + 85E711DA0AC5D5350053270F /* DOMXPathExpressionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7118B0AC5D5350053270F /* DOMXPathExpressionInternal.h */; }; + 85E711DB0AC5D5350053270F /* DOMXPathResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E7118C0AC5D5350053270F /* DOMXPathResultInternal.h */; }; + 85E9E0A10AB3A0C700069CD0 /* DOMXPathExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E9E09B0AB3A0C700069CD0 /* DOMXPathExpression.h */; }; + 85E9E0A20AB3A0C700069CD0 /* DOMXPathExpression.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85E9E09C0AB3A0C700069CD0 /* DOMXPathExpression.mm */; }; + 85E9E0A40AB3A0C700069CD0 /* DOMXPathNSResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E9E09E0AB3A0C700069CD0 /* DOMXPathNSResolver.h */; }; + 85E9E0A50AB3A0C700069CD0 /* DOMXPathResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E9E09F0AB3A0C700069CD0 /* DOMXPathResult.h */; }; + 85E9E0A60AB3A0C700069CD0 /* DOMXPathResult.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85E9E0A00AB3A0C700069CD0 /* DOMXPathResult.mm */; }; + 85E9E0A80AB3A11900069CD0 /* DOMXPathExpression.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85E9E09B0AB3A0C700069CD0 /* DOMXPathExpression.h */; }; + 85E9E0AA0AB3A11900069CD0 /* DOMXPathNSResolver.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85E9E09E0AB3A0C700069CD0 /* DOMXPathNSResolver.h */; }; + 85E9E0AB0AB3A11900069CD0 /* DOMXPathResult.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85E9E09F0AB3A0C700069CD0 /* DOMXPathResult.h */; }; + 85EC9AFB0A71A2C600EEEAED /* Language.h in Headers */ = {isa = PBXBuildFile; fileRef = 85EC9AF90A71A2C600EEEAED /* Language.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 85ECBEEB0AA7626900544F0B /* DOMHTMLAreaElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ECBEDD0AA7626800544F0B /* DOMHTMLAreaElement.h */; }; + 85ECBEEC0AA7626900544F0B /* DOMHTMLAreaElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85ECBEDE0AA7626800544F0B /* DOMHTMLAreaElement.mm */; }; + 85ECBEED0AA7626900544F0B /* DOMHTMLBaseFontElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ECBEDF0AA7626800544F0B /* DOMHTMLBaseFontElement.h */; }; + 85ECBEEE0AA7626900544F0B /* DOMHTMLBaseFontElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85ECBEE00AA7626800544F0B /* DOMHTMLBaseFontElement.mm */; }; + 85ECBEEF0AA7626900544F0B /* DOMHTMLFontElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ECBEE10AA7626800544F0B /* DOMHTMLFontElement.h */; }; + 85ECBEF00AA7626900544F0B /* DOMHTMLFontElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85ECBEE20AA7626800544F0B /* DOMHTMLFontElement.mm */; }; + 85ECBEF10AA7626900544F0B /* DOMHTMLHRElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ECBEE30AA7626800544F0B /* DOMHTMLHRElement.h */; }; + 85ECBEF20AA7626900544F0B /* DOMHTMLHRElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85ECBEE40AA7626800544F0B /* DOMHTMLHRElement.mm */; }; + 85ECBEF30AA7626900544F0B /* DOMHTMLMapElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ECBEE50AA7626800544F0B /* DOMHTMLMapElement.h */; }; + 85ECBEF40AA7626900544F0B /* DOMHTMLMapElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85ECBEE60AA7626800544F0B /* DOMHTMLMapElement.mm */; }; + 85ECBEF50AA7626900544F0B /* DOMHTMLModElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ECBEE70AA7626800544F0B /* DOMHTMLModElement.h */; }; + 85ECBEF60AA7626900544F0B /* DOMHTMLModElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85ECBEE80AA7626900544F0B /* DOMHTMLModElement.mm */; }; + 85ECBEF70AA7626900544F0B /* DOMHTMLParamElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ECBEE90AA7626900544F0B /* DOMHTMLParamElement.h */; }; + 85ECBEF80AA7626900544F0B /* DOMHTMLParamElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85ECBEEA0AA7626900544F0B /* DOMHTMLParamElement.mm */; }; + 85ECBF080AA7628900544F0B /* DOMHTMLAreaElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85ECBEDD0AA7626800544F0B /* DOMHTMLAreaElement.h */; }; + 85ECBF090AA7628900544F0B /* DOMHTMLBaseFontElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85ECBEDF0AA7626800544F0B /* DOMHTMLBaseFontElement.h */; }; + 85ECBF0A0AA7628900544F0B /* DOMHTMLFontElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85ECBEE10AA7626800544F0B /* DOMHTMLFontElement.h */; }; + 85ECBF0B0AA7628900544F0B /* DOMHTMLHRElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85ECBEE30AA7626800544F0B /* DOMHTMLHRElement.h */; }; + 85ECBF0C0AA7628900544F0B /* DOMHTMLMapElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85ECBEE50AA7626800544F0B /* DOMHTMLMapElement.h */; }; + 85ECBF0D0AA7628900544F0B /* DOMHTMLModElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85ECBEE70AA7626800544F0B /* DOMHTMLModElement.h */; }; + 85ECBF0E0AA7628900544F0B /* DOMHTMLParamElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85ECBEE90AA7626900544F0B /* DOMHTMLParamElement.h */; }; + 85F264B20ABBAA580096944B /* DOMHTMLDocument.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85BCBC110ABBA87D00381160 /* DOMHTMLDocument.h */; }; + 85F32AEC0AA63B8700FF3184 /* DOMHTMLInputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85F32AE40AA63B8700FF3184 /* DOMHTMLInputElement.h */; }; + 85F32AED0AA63B8700FF3184 /* DOMHTMLInputElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85F32AE50AA63B8700FF3184 /* DOMHTMLInputElement.mm */; }; + 85F32AEE0AA63B8700FF3184 /* DOMHTMLOptGroupElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85F32AE60AA63B8700FF3184 /* DOMHTMLOptGroupElement.h */; }; + 85F32AEF0AA63B8700FF3184 /* DOMHTMLOptGroupElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85F32AE70AA63B8700FF3184 /* DOMHTMLOptGroupElement.mm */; }; + 85F32AF00AA63B8700FF3184 /* DOMHTMLSelectElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85F32AE80AA63B8700FF3184 /* DOMHTMLSelectElement.h */; }; + 85F32AF10AA63B8700FF3184 /* DOMHTMLSelectElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85F32AE90AA63B8700FF3184 /* DOMHTMLSelectElement.mm */; }; + 85F32AF20AA63B8700FF3184 /* DOMHTMLTextAreaElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85F32AEA0AA63B8700FF3184 /* DOMHTMLTextAreaElement.h */; }; + 85F32AF30AA63B8700FF3184 /* DOMHTMLTextAreaElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85F32AEB0AA63B8700FF3184 /* DOMHTMLTextAreaElement.mm */; }; + 85F32B400AA6401A00FF3184 /* DOMHTMLInputElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85F32AE40AA63B8700FF3184 /* DOMHTMLInputElement.h */; }; + 85F32B410AA6401A00FF3184 /* DOMHTMLOptGroupElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85F32AE60AA63B8700FF3184 /* DOMHTMLOptGroupElement.h */; }; + 85F32B420AA6401A00FF3184 /* DOMHTMLSelectElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85F32AE80AA63B8700FF3184 /* DOMHTMLSelectElement.h */; }; + 85F32B430AA6401A00FF3184 /* DOMHTMLTextAreaElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85F32AEA0AA63B8700FF3184 /* DOMHTMLTextAreaElement.h */; }; + 85F56A7A0A98CE3700ADB60A /* DOMProcessingInstruction.h in Headers */ = {isa = PBXBuildFile; fileRef = 85F56A780A98CE3700ADB60A /* DOMProcessingInstruction.h */; settings = {ATTRIBUTES = (); }; }; + 85F56A7B0A98CE3700ADB60A /* DOMProcessingInstruction.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85F56A790A98CE3700ADB60A /* DOMProcessingInstruction.mm */; }; + 85F74E010AA8DF8C000DC284 /* DOMCSSCharsetRule.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85032DC30AA8C9BE007D3B7D /* DOMCSSCharsetRule.h */; }; + 85F74E020AA8DF8C000DC284 /* DOMCSSFontFaceRule.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85032DC50AA8C9BE007D3B7D /* DOMCSSFontFaceRule.h */; }; + 85F74E030AA8DF8C000DC284 /* DOMCSSImportRule.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85032DC70AA8C9BE007D3B7D /* DOMCSSImportRule.h */; }; + 85F74E040AA8DF8C000DC284 /* DOMCSSMediaRule.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85032DC90AA8C9BE007D3B7D /* DOMCSSMediaRule.h */; }; + 85F74E050AA8DF8C000DC284 /* DOMCSSPageRule.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85032DCB0AA8C9BE007D3B7D /* DOMCSSPageRule.h */; }; + 85F74E060AA8DF8C000DC284 /* DOMCSSRule.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85032DCD0AA8C9BE007D3B7D /* DOMCSSRule.h */; }; + 85F74E070AA8DF8C000DC284 /* DOMCSSRuleList.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85032DCF0AA8C9BE007D3B7D /* DOMCSSRuleList.h */; }; + 85F74E080AA8DF8C000DC284 /* DOMCSSStyleDeclaration.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85032DD10AA8C9BE007D3B7D /* DOMCSSStyleDeclaration.h */; }; + 85F74E090AA8DF8C000DC284 /* DOMCSSStyleRule.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85032DD30AA8C9BE007D3B7D /* DOMCSSStyleRule.h */; }; + 85F74E0A0AA8DF8C000DC284 /* DOMCSSUnknownRule.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85032DD50AA8C9BE007D3B7D /* DOMCSSUnknownRule.h */; }; + 85FF315A0AAFBFCB00374F38 /* DOMKeyboardEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85FF31580AAFBFCB00374F38 /* DOMKeyboardEvent.h */; }; + 85FF315B0AAFBFCB00374F38 /* DOMKeyboardEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85FF31590AAFBFCB00374F38 /* DOMKeyboardEvent.mm */; }; + 861C2EA413FB4FDD00062ABB /* DocumentLoadTiming.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 861C2EA313FB4FDD00062ABB /* DocumentLoadTiming.cpp */; }; + 861C2EA613FB4FFF00062ABB /* ResourceLoadTiming.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 861C2EA513FB4FFF00062ABB /* ResourceLoadTiming.cpp */; }; + 86243D0111BC31F700CC006A /* JSArrayBufferViewHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 86243D0011BC31F700CC006A /* JSArrayBufferViewHelper.h */; }; + 86512EDE154A2AEF00A90426 /* PerformanceResourceTiming.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86512EDB154A2AEE00A90426 /* PerformanceResourceTiming.cpp */; }; + 86512EDF154A2AEF00A90426 /* PerformanceResourceTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 86512EDC154A2AEF00A90426 /* PerformanceResourceTiming.h */; }; + 86BA766E166427A8005BE5D1 /* FrameLoadRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BA766D166427A8005BE5D1 /* FrameLoadRequest.cpp */; }; + 86BE340115058CB200CE0FD8 /* PerformanceEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 86BE33FB15058CB200CE0FD8 /* PerformanceEntry.h */; }; + 86BE340315058CB200CE0FD8 /* PerformanceEntryList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BE33FD15058CB200CE0FD8 /* PerformanceEntryList.cpp */; }; + 86BE340415058CB200CE0FD8 /* PerformanceEntryList.h in Headers */ = {isa = PBXBuildFile; fileRef = 86BE33FE15058CB200CE0FD8 /* PerformanceEntryList.h */; }; + 86D982F7125C154000AD9E3D /* DocumentTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 86D982F6125C154000AD9E3D /* DocumentTiming.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 86FF886115DE3D0700BD6B28 /* RenderTextTrackCue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86FF885E15DE3B8200BD6B28 /* RenderTextTrackCue.cpp */; }; + 86FF886215DE3D0700BD6B28 /* RenderTextTrackCue.h in Headers */ = {isa = PBXBuildFile; fileRef = 86FF885F15DE3B8200BD6B28 /* RenderTextTrackCue.h */; }; + 890AE0E11256A07900F5968C /* DirectoryReaderBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 890AE0E01256A07900F5968C /* DirectoryReaderBase.h */; }; + 8931DE5B14C44C44000DC9D2 /* JSBlobCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8931DE5A14C44C44000DC9D2 /* JSBlobCustom.cpp */; }; + 893C47A71238908B002B3D86 /* FileCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C47A51238908B002B3D86 /* FileCallback.h */; }; + 893C47A81238908B002B3D86 /* FileWriterCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C47A61238908B002B3D86 /* FileWriterCallback.h */; }; + 893C47B81238A099002B3D86 /* JSFileCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C47B61238A099002B3D86 /* JSFileCallback.h */; }; + 893C47BB1238A0A9002B3D86 /* JSFileWriterCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 893C47B91238A0A9002B3D86 /* JSFileWriterCallback.cpp */; }; + 893C47BC1238A0A9002B3D86 /* JSFileWriterCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C47BA1238A0A9002B3D86 /* JSFileWriterCallback.h */; }; + 893C48011248BD3A002B3D86 /* DirectoryEntrySync.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C47F11248BD39002B3D86 /* DirectoryEntrySync.h */; }; + 893C48021248BD3A002B3D86 /* DirectoryReaderSync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 893C47F21248BD39002B3D86 /* DirectoryReaderSync.cpp */; }; + 893C48031248BD3A002B3D86 /* DirectoryReaderSync.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C47F31248BD39002B3D86 /* DirectoryReaderSync.h */; }; + 893C48051248BD3A002B3D86 /* DOMFileSystemBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C47F51248BD39002B3D86 /* DOMFileSystemBase.h */; }; + 893C48071248BD3A002B3D86 /* DOMFileSystemSync.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C47F71248BD39002B3D86 /* DOMFileSystemSync.h */; }; + 893C48091248BD3A002B3D86 /* EntryArraySync.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C47F91248BD39002B3D86 /* EntryArraySync.h */; }; + 893C480B1248BD3A002B3D86 /* EntryBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C47FB1248BD39002B3D86 /* EntryBase.h */; }; + 893C480D1248BD3A002B3D86 /* EntrySync.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C47FD1248BD39002B3D86 /* EntrySync.h */; }; + 893C480F1248BD3A002B3D86 /* FileEntrySync.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C47FF1248BD39002B3D86 /* FileEntrySync.h */; }; + 893C483312495472002B3D86 /* JSDirectoryEntrySync.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C482712495472002B3D86 /* JSDirectoryEntrySync.h */; }; + 893C483412495472002B3D86 /* JSDirectoryReaderSync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 893C482812495472002B3D86 /* JSDirectoryReaderSync.cpp */; }; + 893C483512495472002B3D86 /* JSDirectoryReaderSync.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C482912495472002B3D86 /* JSDirectoryReaderSync.h */; }; + 893C483712495472002B3D86 /* JSDOMFileSystemSync.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C482B12495472002B3D86 /* JSDOMFileSystemSync.h */; }; + 893C483912495472002B3D86 /* JSEntryArraySync.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C482D12495472002B3D86 /* JSEntryArraySync.h */; }; + 893C483B12495472002B3D86 /* JSEntrySync.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C482F12495472002B3D86 /* JSEntrySync.h */; }; + 893C483D12495472002B3D86 /* JSFileEntrySync.h in Headers */ = {isa = PBXBuildFile; fileRef = 893C483112495472002B3D86 /* JSFileEntrySync.h */; }; + 89878553122CA064003AABDA /* DirectoryEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 8987853A122CA064003AABDA /* DirectoryEntry.h */; }; + 89878555122CA064003AABDA /* DirectoryReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8987853C122CA064003AABDA /* DirectoryReader.h */; }; + 89878557122CA064003AABDA /* DOMFilePath.h in Headers */ = {isa = PBXBuildFile; fileRef = 8987853E122CA064003AABDA /* DOMFilePath.h */; }; + 89878559122CA064003AABDA /* DOMFileSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878540122CA064003AABDA /* DOMFileSystem.h */; }; + 8987855A122CA064003AABDA /* EntriesCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878541122CA064003AABDA /* EntriesCallback.h */; }; + 8987855C122CA064003AABDA /* Entry.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878543122CA064003AABDA /* Entry.h */; }; + 8987855E122CA064003AABDA /* EntryArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878545122CA064003AABDA /* EntryArray.h */; }; + 8987855F122CA064003AABDA /* EntryCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878546122CA064003AABDA /* EntryCallback.h */; }; + 89878560122CA064003AABDA /* ErrorCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878547122CA064003AABDA /* ErrorCallback.h */; }; + 89878562122CA064003AABDA /* FileEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878549122CA064003AABDA /* FileEntry.h */; }; + 89878563122CA064003AABDA /* FileSystemCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 8987854A122CA064003AABDA /* FileSystemCallback.h */; }; + 89878564122CA064003AABDA /* FileSystemCallbacks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8987854B122CA064003AABDA /* FileSystemCallbacks.cpp */; }; + 89878565122CA064003AABDA /* FileSystemCallbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = 8987854C122CA064003AABDA /* FileSystemCallbacks.h */; }; + 89878566122CA064003AABDA /* FileSystemFlags.h in Headers */ = {isa = PBXBuildFile; fileRef = 8987854D122CA064003AABDA /* FileSystemFlags.h */; }; + 89878568122CA064003AABDA /* LocalFileSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 8987854F122CA064003AABDA /* LocalFileSystem.h */; }; + 89878569122CA064003AABDA /* Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878550122CA064003AABDA /* Metadata.h */; }; + 8987856A122CA064003AABDA /* MetadataCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878551122CA064003AABDA /* MetadataCallback.h */; }; + 8987858B122CA26A003AABDA /* JSDirectoryEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878587122CA26A003AABDA /* JSDirectoryEntry.h */; }; + 8987858D122CA26A003AABDA /* JSDirectoryReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878589122CA26A003AABDA /* JSDirectoryReader.h */; }; + 898785A5122CA2A7003AABDA /* JSDOMFileSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 8987858F122CA2A7003AABDA /* JSDOMFileSystem.h */; }; + 898785A7122CA2A7003AABDA /* JSEntriesCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878591122CA2A7003AABDA /* JSEntriesCallback.h */; }; + 898785A9122CA2A7003AABDA /* JSEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878593122CA2A7003AABDA /* JSEntry.h */; }; + 898785AB122CA2A7003AABDA /* JSEntryArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878595122CA2A7003AABDA /* JSEntryArray.h */; }; + 898785AD122CA2A7003AABDA /* JSEntryCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878597122CA2A7003AABDA /* JSEntryCallback.h */; }; + 898785AF122CA2A7003AABDA /* JSErrorCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 89878599122CA2A7003AABDA /* JSErrorCallback.h */; }; + 898785B1122CA2A7003AABDA /* JSFileEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 8987859B122CA2A7003AABDA /* JSFileEntry.h */; }; + 898785B2122CA2A7003AABDA /* JSFileSystemCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8987859C122CA2A7003AABDA /* JSFileSystemCallback.cpp */; }; + 898785B3122CA2A7003AABDA /* JSFileSystemCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 8987859D122CA2A7003AABDA /* JSFileSystemCallback.h */; }; + 898785B7122CA2A7003AABDA /* JSMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 898785A1122CA2A7003AABDA /* JSMetadata.h */; }; + 898785B9122CA2A7003AABDA /* JSMetadataCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 898785A3122CA2A7003AABDA /* JSMetadataCallback.h */; }; + 898785F0122E1E87003AABDA /* JSFileException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 898785EE122E1E87003AABDA /* JSFileException.cpp */; }; + 898785F1122E1E87003AABDA /* JSFileException.h in Headers */ = {isa = PBXBuildFile; fileRef = 898785EF122E1E87003AABDA /* JSFileException.h */; }; + 898785F4122E1EAC003AABDA /* JSFileReaderSync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 898785F2122E1EAC003AABDA /* JSFileReaderSync.cpp */; }; + 898785F5122E1EAC003AABDA /* JSFileReaderSync.h in Headers */ = {isa = PBXBuildFile; fileRef = 898785F3122E1EAC003AABDA /* JSFileReaderSync.h */; }; + 89B5EAA111E8003D00F2367E /* LineEnding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 89B5EA9F11E8003D00F2367E /* LineEnding.cpp */; }; + 89B5EAA211E8003D00F2367E /* LineEnding.h in Headers */ = {isa = PBXBuildFile; fileRef = 89B5EAA011E8003D00F2367E /* LineEnding.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 89C7C2E1155804F4007D5A7B /* FileSystemType.h in Headers */ = {isa = PBXBuildFile; fileRef = 89C7C2E0155804F4007D5A7B /* FileSystemType.h */; }; + 89D08DA012228451001241DF /* AsyncFileSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 89D08D9D12228451001241DF /* AsyncFileSystem.h */; }; + 89D08DA112228451001241DF /* AsyncFileSystemCallbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = 89D08D9E12228451001241DF /* AsyncFileSystemCallbacks.h */; }; + 89F60B11157F686E0075E157 /* DOMWindowQuota.h in Headers */ = {isa = PBXBuildFile; fileRef = 89F60B0A157F686D0075E157 /* DOMWindowQuota.h */; }; + 89F60CDA15809D760075E157 /* JSStorageInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 89F60CD215809D760075E157 /* JSStorageInfo.h */; }; + 8A12E35D11FA33280025836A /* DocumentLoadTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A12E35C11FA33280025836A /* DocumentLoadTiming.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8A195932147EA16E00D1EA61 /* DOMWebKitNamedFlow.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A19592F147EA16E00D1EA61 /* DOMWebKitNamedFlow.h */; }; + 8A195933147EA16E00D1EA61 /* DOMWebKitNamedFlow.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8A195930147EA16E00D1EA61 /* DOMWebKitNamedFlow.mm */; }; + 8A195934147EA16E00D1EA61 /* DOMWebKitNamedFlowInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A195931147EA16E00D1EA61 /* DOMWebKitNamedFlowInternal.h */; }; + 8A309C9F123950BE00CB9204 /* NestingLevelIncrementer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A309C9E123950BE00CB9204 /* NestingLevelIncrementer.h */; }; + 8A413AE01207BBA50082016E /* ScriptRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A413ADE1207BBA50082016E /* ScriptRunner.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8A413AE11207BBA50082016E /* ScriptRunner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A413ADF1207BBA50082016E /* ScriptRunner.cpp */; }; + 8A7CC96B12076D73001D4588 /* PendingScript.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A7CC96A12076D73001D4588 /* PendingScript.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8A7CC97012076F8A001D4588 /* PendingScript.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A7CC96F12076F8A001D4588 /* PendingScript.cpp */; }; + 8A81BF8511DCFD9000DA2B98 /* ResourceLoadTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A81BF8411DCFD9000DA2B98 /* ResourceLoadTiming.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8A844D0511D3C18E0014065C /* Performance.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A844D0211D3C18E0014065C /* Performance.h */; }; + 8A9A587011E84C36008ACFD1 /* JSPerformanceNavigation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A9A586E11E84C35008ACFD1 /* JSPerformanceNavigation.cpp */; }; + 8A9A587111E84C36008ACFD1 /* JSPerformanceNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A9A586F11E84C36008ACFD1 /* JSPerformanceNavigation.h */; }; + 8A9A587511E84C81008ACFD1 /* JSPerformance.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A9A587311E84C81008ACFD1 /* JSPerformance.h */; }; + 8A9A588811E84F37008ACFD1 /* JSPerformanceTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A9A587711E84C98008ACFD1 /* JSPerformanceTiming.h */; }; + 8AA61CFF144D595B00F37350 /* WebKitCSSRegionRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8AA61CFD144D595B00F37350 /* WebKitCSSRegionRule.cpp */; }; + 8AA61D00144D595B00F37350 /* WebKitCSSRegionRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AA61CFE144D595B00F37350 /* WebKitCSSRegionRule.h */; }; + 8AB4BC77126FDB7100DEB727 /* IgnoreDestructiveWriteCountIncrementer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AB4BC76126FDB7100DEB727 /* IgnoreDestructiveWriteCountIncrementer.h */; }; + 8AD0A59414C88336000D83C5 /* JSWebKitCSSRegionRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8ACC24CD148E24B200EFCC0D /* JSWebKitCSSRegionRule.cpp */; }; + 8AD0A59514C88336000D83C5 /* JSWebKitCSSRegionRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 8ACC24CE148E24B200EFCC0D /* JSWebKitCSSRegionRule.h */; }; + 8AD0A59614C88358000D83C5 /* DOMWebKitCSSRegionRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 8ACC2817148E47E700EFCC0D /* DOMWebKitCSSRegionRule.h */; }; + 8AD0A59714C88358000D83C5 /* DOMWebKitCSSRegionRule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8ACC2818148E47E700EFCC0D /* DOMWebKitCSSRegionRule.mm */; }; + 8AD0A59814C88358000D83C5 /* DOMWebKitCSSRegionRuleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8ACC2819148E47E700EFCC0D /* DOMWebKitCSSRegionRuleInternal.h */; }; + 8AF4E55511DC5A36000ED3DE /* PerformanceNavigation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8AF4E55211DC5A36000ED3DE /* PerformanceNavigation.cpp */; }; + 8AF4E55611DC5A36000ED3DE /* PerformanceNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AF4E55311DC5A36000ED3DE /* PerformanceNavigation.h */; }; + 8AF4E55C11DC5A63000ED3DE /* PerformanceTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AF4E55911DC5A63000ED3DE /* PerformanceTiming.h */; }; + 8C0E334D138A92C7008DA94F /* LevelDBTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C0E3349138A92C7008DA94F /* LevelDBTransaction.h */; }; + 8C0E334F138A92C7008DA94F /* LevelDBWriteBatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C0E334B138A92C7008DA94F /* LevelDBWriteBatch.h */; }; + 8C6EA61911EF7E0400FD8EE3 /* RuntimeEnabledFeatures.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C6EA61711EF7E0400FD8EE3 /* RuntimeEnabledFeatures.cpp */; }; + 8C6EA61A11EF7E0400FD8EE3 /* RuntimeEnabledFeatures.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C6EA61811EF7E0400FD8EE3 /* RuntimeEnabledFeatures.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8CADF2A9135C7B36009EF43F /* LevelDBComparator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CADF2A3135C7B36009EF43F /* LevelDBComparator.h */; }; + 8CADF2AB135C7B36009EF43F /* LevelDBDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CADF2A5135C7B36009EF43F /* LevelDBDatabase.h */; }; + 8CADF2AD135C7B36009EF43F /* LevelDBIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CADF2A7135C7B36009EF43F /* LevelDBIterator.h */; }; + 8CADF2AE135C7B36009EF43F /* LevelDBSlice.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CADF2A8135C7B36009EF43F /* LevelDBSlice.h */; }; + 8F67561B1288B17B0047ACA3 /* EventQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6756191288B17B0047ACA3 /* EventQueue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8FAC774D119872CB0015AE94 /* JSMainThreadExecState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F934D841189F1EE00508D5D /* JSMainThreadExecState.cpp */; }; + 9001774012E0347800648462 /* OESStandardDerivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9001773D12E0347800648462 /* OESStandardDerivatives.cpp */; }; + 9001774112E0347800648462 /* OESStandardDerivatives.h in Headers */ = {isa = PBXBuildFile; fileRef = 9001773E12E0347800648462 /* OESStandardDerivatives.h */; }; + 9001788012E0370700648462 /* JSOESStandardDerivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9001787E12E0370700648462 /* JSOESStandardDerivatives.cpp */; }; + 9001788112E0370700648462 /* JSOESStandardDerivatives.h in Headers */ = {isa = PBXBuildFile; fileRef = 9001787F12E0370700648462 /* JSOESStandardDerivatives.h */; }; + 91089D3214C33600005AFC49 /* JSUint8ClampedArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 91089D3014C335CD005AFC49 /* JSUint8ClampedArray.h */; }; + 91089D3314C33605005AFC49 /* JSUint8ClampedArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 91089D2F14C335CD005AFC49 /* JSUint8ClampedArray.cpp */; }; + 9302B0BD0D79F82900C7EE83 /* PageGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9302B0BC0D79F82900C7EE83 /* PageGroup.cpp */; }; + 9302B0BF0D79F82C00C7EE83 /* PageGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 9302B0BE0D79F82C00C7EE83 /* PageGroup.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9305B24D098F1B6B00C28855 /* Timer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9305B24C098F1B6B00C28855 /* Timer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 930705D809E0C9B700B17FE4 /* JSCounter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 930705D709E0C9B700B17FE4 /* JSCounter.cpp */; }; + 930705DA09E0C9BF00B17FE4 /* JSCounter.h in Headers */ = {isa = PBXBuildFile; fileRef = 930705D909E0C9BF00B17FE4 /* JSCounter.h */; }; + 930705E909E0C9F000B17FE4 /* JSCSSPrimitiveValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 930705E809E0C9F000B17FE4 /* JSCSSPrimitiveValue.cpp */; }; + 930705EB09E0C9F600B17FE4 /* JSCSSPrimitiveValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 930705EA09E0C9F600B17FE4 /* JSCSSPrimitiveValue.h */; }; + 9307F1130AF2C8BE00DBA31A /* DOMNodeInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85B498FA0ADB340200925CBB /* DOMNodeInternal.h */; }; + 9307F1D70AF2D59000DBA31A /* HitTestResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9307F1D50AF2D59000DBA31A /* HitTestResult.cpp */; }; + 9307F1D80AF2D59000DBA31A /* HitTestResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 9307F1D60AF2D59000DBA31A /* HitTestResult.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 930908910AF7EDE40081DF01 /* HitTestRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 930908900AF7EDE40081DF01 /* HitTestRequest.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 930FC68A1072B9280045293E /* TextRenderingMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 930FC6891072B9280045293E /* TextRenderingMode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93153BCD1417FBBF00FCF5BE /* deleteButton@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BCC1417FBBF00FCF5BE /* deleteButton@2x.png */; }; + 93153BCF1417FBDB00FCF5BE /* deleteButtonPressed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BCE1417FBDB00FCF5BE /* deleteButtonPressed@2x.png */; }; + 93153BDA14181F7A00FCF5BE /* missingImage@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BD914181F7A00FCF5BE /* missingImage@2x.png */; }; + 93153BDC141959BC00FCF5BE /* textAreaResizeCorner.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BDB141959BB00FCF5BE /* textAreaResizeCorner.png */; }; + 93153BDE141959F400FCF5BE /* deleteButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BDD141959F400FCF5BE /* deleteButton.png */; }; + 93153BE014195A2800FCF5BE /* deleteButtonPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BDF14195A2800FCF5BE /* deleteButtonPressed.png */; }; + 93153BE214195A5700FCF5BE /* missingImage.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BE114195A5700FCF5BE /* missingImage.png */; }; + 93153BE414195B2A00FCF5BE /* inputSpeech.png in Resources */ = {isa = PBXBuildFile; fileRef = 93153BE314195B2900FCF5BE /* inputSpeech.png */; }; + 931BCC611124DFCB00BE70DD /* MediaCanStartListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 931BCC601124DFCB00BE70DD /* MediaCanStartListener.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 931CBD0C161A44E900E4C874 /* ScrollingStateNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 931CBD06161A44E900E4C874 /* ScrollingStateNode.cpp */; }; + 931CBD0D161A44E900E4C874 /* ScrollingStateNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 931CBD07161A44E900E4C874 /* ScrollingStateNode.h */; }; + 931CBD0E161A44E900E4C874 /* ScrollingStateScrollingNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 931CBD08161A44E900E4C874 /* ScrollingStateScrollingNode.cpp */; }; + 931CBD0F161A44E900E4C874 /* ScrollingStateScrollingNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 931CBD09161A44E900E4C874 /* ScrollingStateScrollingNode.h */; }; + 931CBD10161A44E900E4C874 /* ScrollingStateTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 931CBD0A161A44E900E4C874 /* ScrollingStateTree.cpp */; }; + 931CBD11161A44E900E4C874 /* ScrollingStateTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 931CBD0B161A44E900E4C874 /* ScrollingStateTree.h */; }; + 931CBD13161A44F800E4C874 /* ScrollingStateNodeMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 931CBD12161A44F800E4C874 /* ScrollingStateNodeMac.mm */; }; + 931D72F615FE695300C4C07E /* LayoutMilestones.h in Headers */ = {isa = PBXBuildFile; fileRef = 931D72F515FE695300C4C07E /* LayoutMilestones.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9326DC0C09DAD5D600AFC847 /* CharsetData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 656581AC09D14EE6000E61D7 /* CharsetData.cpp */; }; + 9327A94209968D1A0068A546 /* HTMLOptionsCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9327A94109968D1A0068A546 /* HTMLOptionsCollection.cpp */; }; + 932871C00B20DEB70049035A /* PlatformMenuDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 932871BF0B20DEB70049035A /* PlatformMenuDescription.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 932E16090AF578340025F408 /* FrameLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 932E16080AF578340025F408 /* FrameLoader.cpp */; }; + 93309DD6099E64920056E581 /* AppendNodeCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309D87099E64910056E581 /* AppendNodeCommand.cpp */; }; + 93309DD7099E64920056E581 /* AppendNodeCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309D88099E64910056E581 /* AppendNodeCommand.h */; }; + 93309DD8099E64920056E581 /* ApplyStyleCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309D89099E64910056E581 /* ApplyStyleCommand.cpp */; }; + 93309DD9099E64920056E581 /* ApplyStyleCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309D8A099E64910056E581 /* ApplyStyleCommand.h */; }; + 93309DDA099E64920056E581 /* BreakBlockquoteCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309D8B099E64910056E581 /* BreakBlockquoteCommand.cpp */; }; + 93309DDB099E64920056E581 /* BreakBlockquoteCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309D8C099E64910056E581 /* BreakBlockquoteCommand.h */; }; + 93309DDC099E64920056E581 /* CompositeEditCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309D8D099E64910056E581 /* CompositeEditCommand.cpp */; }; + 93309DDD099E64920056E581 /* CompositeEditCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309D8E099E64910056E581 /* CompositeEditCommand.h */; }; + 93309DDE099E64920056E581 /* DeleteFromTextNodeCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309D8F099E64910056E581 /* DeleteFromTextNodeCommand.cpp */; }; + 93309DDF099E64920056E581 /* DeleteFromTextNodeCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309D90099E64910056E581 /* DeleteFromTextNodeCommand.h */; }; + 93309DE0099E64920056E581 /* DeleteSelectionCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309D91099E64910056E581 /* DeleteSelectionCommand.cpp */; }; + 93309DE1099E64920056E581 /* DeleteSelectionCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309D92099E64910056E581 /* DeleteSelectionCommand.h */; }; + 93309DE2099E64920056E581 /* EditAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309D93099E64910056E581 /* EditAction.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93309DE3099E64920056E581 /* EditCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309D94099E64910056E581 /* EditCommand.cpp */; }; + 93309DE4099E64920056E581 /* EditCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309D95099E64910056E581 /* EditCommand.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93309DE5099E64920056E581 /* HTMLInterchange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309D96099E64910056E581 /* HTMLInterchange.cpp */; }; + 93309DE6099E64920056E581 /* HTMLInterchange.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309D97099E64910056E581 /* HTMLInterchange.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93309DE7099E64920056E581 /* htmlediting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309D98099E64910056E581 /* htmlediting.cpp */; }; + 93309DE8099E64920056E581 /* htmlediting.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309D99099E64910056E581 /* htmlediting.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93309DE9099E64920056E581 /* InsertIntoTextNodeCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309D9A099E64910056E581 /* InsertIntoTextNodeCommand.cpp */; }; + 93309DEA099E64920056E581 /* InsertIntoTextNodeCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309D9B099E64910056E581 /* InsertIntoTextNodeCommand.h */; }; + 93309DEB099E64920056E581 /* InsertLineBreakCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309D9C099E64910056E581 /* InsertLineBreakCommand.cpp */; }; + 93309DEC099E64920056E581 /* InsertLineBreakCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309D9D099E64910056E581 /* InsertLineBreakCommand.h */; }; + 93309DED099E64920056E581 /* InsertNodeBeforeCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309D9E099E64910056E581 /* InsertNodeBeforeCommand.cpp */; }; + 93309DEE099E64920056E581 /* InsertNodeBeforeCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309D9F099E64910056E581 /* InsertNodeBeforeCommand.h */; }; + 93309DEF099E64920056E581 /* InsertParagraphSeparatorCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DA0099E64910056E581 /* InsertParagraphSeparatorCommand.cpp */; }; + 93309DF0099E64920056E581 /* InsertParagraphSeparatorCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DA1099E64910056E581 /* InsertParagraphSeparatorCommand.h */; }; + 93309DF1099E64920056E581 /* InsertTextCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DA2099E64910056E581 /* InsertTextCommand.cpp */; }; + 93309DF2099E64920056E581 /* InsertTextCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DA3099E64910056E581 /* InsertTextCommand.h */; }; + 93309DF7099E64920056E581 /* markup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DA8099E64910056E581 /* markup.cpp */; }; + 93309DF8099E64920056E581 /* markup.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DA9099E64910056E581 /* markup.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93309DF9099E64920056E581 /* MergeIdenticalElementsCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DAA099E64910056E581 /* MergeIdenticalElementsCommand.cpp */; }; + 93309DFA099E64920056E581 /* MergeIdenticalElementsCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DAB099E64910056E581 /* MergeIdenticalElementsCommand.h */; }; + 93309DFB099E64920056E581 /* MoveSelectionCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DAC099E64910056E581 /* MoveSelectionCommand.cpp */; }; + 93309DFC099E64920056E581 /* MoveSelectionCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DAD099E64910056E581 /* MoveSelectionCommand.h */; }; + 93309E00099E64920056E581 /* RemoveCSSPropertyCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DB1099E64910056E581 /* RemoveCSSPropertyCommand.cpp */; }; + 93309E01099E64920056E581 /* RemoveCSSPropertyCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DB2099E64910056E581 /* RemoveCSSPropertyCommand.h */; }; + 93309E04099E64920056E581 /* RemoveNodeCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DB5099E64910056E581 /* RemoveNodeCommand.cpp */; }; + 93309E05099E64920056E581 /* RemoveNodeCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DB6099E64910056E581 /* RemoveNodeCommand.h */; }; + 93309E06099E64920056E581 /* RemoveNodePreservingChildrenCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DB7099E64910056E581 /* RemoveNodePreservingChildrenCommand.cpp */; }; + 93309E07099E64920056E581 /* RemoveNodePreservingChildrenCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DB8099E64910056E581 /* RemoveNodePreservingChildrenCommand.h */; }; + 93309E09099E64920056E581 /* ReplaceSelectionCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DBA099E64910056E581 /* ReplaceSelectionCommand.cpp */; }; + 93309E0A099E64920056E581 /* ReplaceSelectionCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DBB099E64910056E581 /* ReplaceSelectionCommand.h */; }; + 93309E0D099E64920056E581 /* FrameSelection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DBE099E64910056E581 /* FrameSelection.cpp */; }; + 93309E0E099E64920056E581 /* FrameSelection.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DBF099E64910056E581 /* FrameSelection.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93309E0F099E64920056E581 /* SetNodeAttributeCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DC0099E64910056E581 /* SetNodeAttributeCommand.cpp */; }; + 93309E10099E64920056E581 /* SetNodeAttributeCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DC1099E64910056E581 /* SetNodeAttributeCommand.h */; }; + 93309E11099E64920056E581 /* SplitElementCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DC2099E64910056E581 /* SplitElementCommand.cpp */; }; + 93309E12099E64920056E581 /* SplitElementCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DC3099E64910056E581 /* SplitElementCommand.h */; }; + 93309E13099E64920056E581 /* SplitTextNodeCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DC4099E64910056E581 /* SplitTextNodeCommand.cpp */; }; + 93309E14099E64920056E581 /* SplitTextNodeCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DC5099E64910056E581 /* SplitTextNodeCommand.h */; }; + 93309E15099E64920056E581 /* SplitTextNodeContainingElementCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DC6099E64910056E581 /* SplitTextNodeContainingElementCommand.cpp */; }; + 93309E16099E64920056E581 /* SplitTextNodeContainingElementCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DC7099E64910056E581 /* SplitTextNodeContainingElementCommand.h */; }; + 93309E17099E64920056E581 /* TextAffinity.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DC8099E64910056E581 /* TextAffinity.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93309E18099E64920056E581 /* TextGranularity.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DC9099E64910056E581 /* TextGranularity.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93309E19099E64920056E581 /* TypingCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DCA099E64910056E581 /* TypingCommand.cpp */; }; + 93309E1A099E64920056E581 /* TypingCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DCB099E64910056E581 /* TypingCommand.h */; }; + 93309E1B099E64920056E581 /* TextIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DCC099E64910056E581 /* TextIterator.cpp */; }; + 93309E1C099E64920056E581 /* TextIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DCD099E64910056E581 /* TextIterator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93309E1D099E64920056E581 /* VisibleUnits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DCE099E64910056E581 /* VisibleUnits.cpp */; }; + 93309E1E099E64920056E581 /* VisibleUnits.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DCF099E64910056E581 /* VisibleUnits.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93309E1F099E64920056E581 /* VisiblePosition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DD0099E64910056E581 /* VisiblePosition.cpp */; }; + 93309E20099E64920056E581 /* VisiblePosition.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DD1099E64910056E581 /* VisiblePosition.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93309E23099E64920056E581 /* WrapContentsInDummySpanCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DD4099E64910056E581 /* WrapContentsInDummySpanCommand.cpp */; }; + 93309E24099E64920056E581 /* WrapContentsInDummySpanCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DD5099E64910056E581 /* WrapContentsInDummySpanCommand.h */; }; + 93309EA2099EB78C0056E581 /* SharedTimerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93309E9F099EB78C0056E581 /* SharedTimerMac.mm */; }; + 93309EA3099EB78C0056E581 /* SharedTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309EA0099EB78C0056E581 /* SharedTimer.h */; }; + 93309EA4099EB78C0056E581 /* Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309EA1099EB78C0056E581 /* Timer.cpp */; }; + 93354A3C0B24F8C9003F6DEA /* UIEventWithKeyState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93354A3B0B24F8C9003F6DEA /* UIEventWithKeyState.cpp */; }; + 933A142E0B7D188600A53FFD /* TextEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 933A142B0B7D188600A53FFD /* TextEvent.cpp */; }; + 933A14300B7D188600A53FFD /* TextEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 933A142D0B7D188600A53FFD /* TextEvent.h */; }; + 933A14760B7D1BAF00A53FFD /* DOMTextEvent.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 933A14750B7D1BAF00A53FFD /* DOMTextEvent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 933A14AA0B7D1D0900A53FFD /* DOMTextEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 933A14A90B7D1D0900A53FFD /* DOMTextEvent.mm */; }; + 933A14B80B7D1D5200A53FFD /* JSTextEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 933A14B60B7D1D5200A53FFD /* JSTextEvent.cpp */; }; + 933A14B90B7D1D5200A53FFD /* JSTextEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 933A14B70B7D1D5200A53FFD /* JSTextEvent.h */; }; + 9343CB8112F25E510033C5EE /* TextCodecUTF8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9343CB7F12F25E510033C5EE /* TextCodecUTF8.cpp */; }; + 9343CB8212F25E510033C5EE /* TextCodecUTF8.h in Headers */ = {isa = PBXBuildFile; fileRef = 9343CB8012F25E510033C5EE /* TextCodecUTF8.h */; }; + 93442C9E0D2B335C00338FF9 /* HTMLTableRowsCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 93442C9D0D2B335C00338FF9 /* HTMLTableRowsCollection.h */; }; + 93442CA00D2B336000338FF9 /* HTMLTableRowsCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93442C9F0D2B336000338FF9 /* HTMLTableRowsCollection.cpp */; }; + 934907E4125BBBC8007F23A0 /* GraphicsContextCG.h in Headers */ = {isa = PBXBuildFile; fileRef = 934907E3125BBBC8007F23A0 /* GraphicsContextCG.h */; }; + 934CC0E10ED39D6F00A658F2 /* ScriptValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 934CC0DF0ED39D6F00A658F2 /* ScriptValue.cpp */; }; + 934CC0E20ED39D6F00A658F2 /* ScriptValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 934CC0E00ED39D6F00A658F2 /* ScriptValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 934CC10A0EDB223900A658F2 /* ScriptSourceCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 934CC1090EDB223900A658F2 /* ScriptSourceCode.h */; }; + 934D9BA50B8C116B007B42A9 /* WebCoreNSStringExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = 934D9BA40B8C116B007B42A9 /* WebCoreNSStringExtras.mm */; }; + 934D9BA70B8C1175007B42A9 /* WebCoreNSStringExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 934D9BA60B8C1175007B42A9 /* WebCoreNSStringExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 934F71380D5A6EFF00018D69 /* AuthenticationChallengeBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 934F71370D5A6EFF00018D69 /* AuthenticationChallengeBase.cpp */; }; + 934F713A0D5A6F1000018D69 /* AuthenticationChallengeBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 934F71390D5A6F1000018D69 /* AuthenticationChallengeBase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 934F713C0D5A6F1900018D69 /* ResourceErrorBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 934F713B0D5A6F1900018D69 /* ResourceErrorBase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 934F713E0D5A6F2800018D69 /* ResourceErrorBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 934F713D0D5A6F2800018D69 /* ResourceErrorBase.cpp */; }; + 934FE9E50B5CA539003E4A73 /* FileChooser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 934FE9E40B5CA539003E4A73 /* FileChooser.cpp */; }; + 93500F3213FDE3BE0099EC24 /* NSScrollerImpDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = 93500F3113FDE3BE0099EC24 /* NSScrollerImpDetails.h */; }; + 935207BE09BD410A00F2038D /* LocalizedStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = 935207BD09BD410A00F2038D /* LocalizedStrings.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9352084509BD43B900F2038D /* Language.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9352084409BD43B900F2038D /* Language.mm */; }; + 9353676B09AED88B00D35CD6 /* ScrollViewMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9353676A09AED88B00D35CD6 /* ScrollViewMac.mm */; }; + 935C476309AC4CE600A6AAB4 /* MouseEventWithHitTestResults.h in Headers */ = {isa = PBXBuildFile; fileRef = 935C476209AC4CE600A6AAB4 /* MouseEventWithHitTestResults.h */; }; + 935C476809AC4D4300A6AAB4 /* PlatformKeyboardEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 935C476609AC4D4300A6AAB4 /* PlatformKeyboardEvent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 935C476909AC4D4300A6AAB4 /* PlatformMouseEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 935C476709AC4D4300A6AAB4 /* PlatformMouseEvent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 935C476B09AC4D4F00A6AAB4 /* PlatformWheelEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 935C476A09AC4D4F00A6AAB4 /* PlatformWheelEvent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 935C476D09AC4D6300A6AAB4 /* FoundationExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 935C476C09AC4D6300A6AAB4 /* FoundationExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 935C477009AC4D7300A6AAB4 /* KeyEventMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 935C476E09AC4D7300A6AAB4 /* KeyEventMac.mm */; }; + 935C477509AC4D8E00A6AAB4 /* GapRects.h in Headers */ = {isa = PBXBuildFile; fileRef = 935C477409AC4D8D00A6AAB4 /* GapRects.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 935F45420F7C3B5F00D7C1FB /* JSLazyEventListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 935F45400F7C3B5F00D7C1FB /* JSLazyEventListener.cpp */; }; + 935F45430F7C3B5F00D7C1FB /* JSLazyEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 935F45410F7C3B5F00D7C1FB /* JSLazyEventListener.h */; }; + 935FBC4509BA00B900E230B1 /* EventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 935FBC4409BA00B900E230B1 /* EventListener.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 935FBCF209BA143B00E230B1 /* ExceptionCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 935FBCF109BA143B00E230B1 /* ExceptionCode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9362640B0DE1137D009D5A00 /* CSSReflectionDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9362640A0DE1137D009D5A00 /* CSSReflectionDirection.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9370918D1416D86B00477333 /* textAreaResizeCorner@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9370918C1416D86B00477333 /* textAreaResizeCorner@2x.png */; }; + 9377ABA015DEFEEF0031FD04 /* Pagination.h in Headers */ = {isa = PBXBuildFile; fileRef = 9377AB9F15DEFEEF0031FD04 /* Pagination.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93799EF80BF2743600D0F230 /* RenderWordBreak.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93799EF60BF2743600D0F230 /* RenderWordBreak.cpp */; }; + 93799EF90BF2743600D0F230 /* RenderWordBreak.h in Headers */ = {isa = PBXBuildFile; fileRef = 93799EF70BF2743600D0F230 /* RenderWordBreak.h */; }; + 9380F47309A11AB4001FDB34 /* Widget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9380F47109A11AB4001FDB34 /* Widget.cpp */; }; + 9380F47409A11AB4001FDB34 /* Widget.h in Headers */ = {isa = PBXBuildFile; fileRef = 9380F47209A11AB4001FDB34 /* Widget.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9380F47809A11ACC001FDB34 /* WidgetMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9380F47709A11ACC001FDB34 /* WidgetMac.mm */; }; + 9382AAB40D8C386100F357A6 /* NodeWithIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 9382AAB10D8C386100F357A6 /* NodeWithIndex.h */; }; + 9382DF5810A8D5C900925652 /* ColorSpace.h in Headers */ = {isa = PBXBuildFile; fileRef = 9382DF5710A8D5C900925652 /* ColorSpace.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 938E65F109F09840008A48EC /* JSHTMLElementWrapperFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 938E65F009F09840008A48EC /* JSHTMLElementWrapperFactory.h */; }; + 938E65F709F0985D008A48EC /* JSHTMLElementWrapperFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 938E65F609F0985D008A48EC /* JSHTMLElementWrapperFactory.cpp */; }; + 938E666009F09B81008A48EC /* JSHTMLCanvasElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 938E665F09F09B81008A48EC /* JSHTMLCanvasElement.cpp */; }; + 938E666209F09B87008A48EC /* JSHTMLCanvasElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 938E666109F09B87008A48EC /* JSHTMLCanvasElement.h */; }; + 9391A991162746CB00297330 /* ScrollingCoordinatorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 9391A990162746CB00297330 /* ScrollingCoordinatorMac.h */; }; + 9391A99C1629D70000297330 /* ScrollingTreeScrollingNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9391A99A1629D6FF00297330 /* ScrollingTreeScrollingNode.cpp */; }; + 9391A99D1629D70000297330 /* ScrollingTreeScrollingNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9391A99B1629D70000297330 /* ScrollingTreeScrollingNode.h */; }; + 9392262D1032107B006E7D5D /* JSHTMLCanvasElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9392262C1032107B006E7D5D /* JSHTMLCanvasElementCustom.cpp */; }; + 9392262F10321084006E7D5D /* JSCSSRuleListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9392262E10321084006E7D5D /* JSCSSRuleListCustom.cpp */; }; + 9392F1420AD185F400691BD4 /* RenderCounter.h in Headers */ = {isa = PBXBuildFile; fileRef = 9392F1410AD185F400691BD4 /* RenderCounter.h */; }; + 9392F1440AD185FE00691BD4 /* RenderCounter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9392F1430AD185FE00691BD4 /* RenderCounter.cpp */; }; + 9392F14C0AD1861B00691BD4 /* CounterNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9392F14B0AD1861B00691BD4 /* CounterNode.h */; }; + 9392F1500AD1862300691BD4 /* CounterNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9392F14F0AD1862300691BD4 /* CounterNode.cpp */; }; + 9393E5FF151A99F200066F06 /* CSSImageSetValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9393E5FD151A99F200066F06 /* CSSImageSetValue.cpp */; }; + 9393E600151A99F200066F06 /* CSSImageSetValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9393E5FE151A99F200066F06 /* CSSImageSetValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9393E604151A9A1800066F06 /* StyleCachedImageSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9393E602151A9A1800066F06 /* StyleCachedImageSet.cpp */; }; + 9393E605151A9A1800066F06 /* StyleCachedImageSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 9393E603151A9A1800066F06 /* StyleCachedImageSet.h */; }; + 939885C308B7E3D100E707C4 /* EventNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 939885C108B7E3D100E707C4 /* EventNames.cpp */; }; + 939885C408B7E3D100E707C4 /* EventNames.h in Headers */ = {isa = PBXBuildFile; fileRef = 939885C208B7E3D100E707C4 /* EventNames.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939B02EE0EA2DBC400C54570 /* WidthIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 939B02EC0EA2DBC400C54570 /* WidthIterator.cpp */; }; + 939B02EF0EA2DBC400C54570 /* WidthIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 939B02ED0EA2DBC400C54570 /* WidthIterator.h */; }; + 93A38B4B0D0E5808006872C2 /* EditorCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93A38B4A0D0E5808006872C2 /* EditorCommand.cpp */; }; + 93B2D8160F9920D2006AE6B2 /* SuddenTermination.h in Headers */ = {isa = PBXBuildFile; fileRef = 93B2D8150F9920D2006AE6B2 /* SuddenTermination.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93B2D8180F9920EE006AE6B2 /* SuddenTermination.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93B2D8170F9920EE006AE6B2 /* SuddenTermination.mm */; }; + 93B6A0E60B0BCA5C00F5027A /* ContextMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 93B6A0E50B0BCA5C00F5027A /* ContextMenu.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93B6A0EA0B0BCA8400F5027A /* ContextMenuMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93B6A0E90B0BCA8400F5027A /* ContextMenuMac.mm */; }; + 93B70D6309EB0C7C009D8468 /* JSDOMBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93B70D4709EB0C7C009D8468 /* JSDOMBinding.cpp */; }; + 93B70D6409EB0C7C009D8468 /* JSDOMBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = 93B70D4809EB0C7C009D8468 /* JSDOMBinding.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93B70D6909EB0C7C009D8468 /* JSEventListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93B70D4D09EB0C7C009D8468 /* JSEventListener.cpp */; }; + 93B70D6A09EB0C7C009D8468 /* JSEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 93B70D4E09EB0C7C009D8468 /* JSEventListener.h */; }; + 93B70D6B09EB0C7C009D8468 /* JSPluginElementFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93B70D4F09EB0C7C009D8468 /* JSPluginElementFunctions.cpp */; }; + 93B70D6C09EB0C7C009D8468 /* JSPluginElementFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 93B70D5009EB0C7C009D8468 /* JSPluginElementFunctions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93B70D6F09EB0C7C009D8468 /* ScriptController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93B70D5309EB0C7C009D8468 /* ScriptController.cpp */; }; + 93B70D7009EB0C7C009D8468 /* ScriptController.h in Headers */ = {isa = PBXBuildFile; fileRef = 93B70D5409EB0C7C009D8468 /* ScriptController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93B77A380ADD792500EA4B81 /* FrameLoaderTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 93B77A370ADD792500EA4B81 /* FrameLoaderTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93BA59B20F2AA5FE008E8E99 /* JSCDATASectionCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93BA59B10F2AA5FE008E8E99 /* JSCDATASectionCustom.cpp */; }; + 93C09A530B064DB3005ABD4D /* EventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C09A520B064DB3005ABD4D /* EventHandler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93C09A7F0B064EEF005ABD4D /* EventHandlerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93C09A7E0B064EEF005ABD4D /* EventHandlerMac.mm */; }; + 93C09A810B064F00005ABD4D /* EventHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93C09A800B064F00005ABD4D /* EventHandler.cpp */; }; + 93C09C860B0657AA005ABD4D /* ScrollTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C09C850B0657AA005ABD4D /* ScrollTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93C38BFE164473C700091EB2 /* ScrollingStateFixedNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93C38BFC164473C700091EB2 /* ScrollingStateFixedNode.cpp */; }; + 93C38BFF164473C700091EB2 /* ScrollingStateFixedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C38BFD164473C700091EB2 /* ScrollingStateFixedNode.h */; }; + 93C38C03164473DD00091EB2 /* ScrollingTreeFixedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C38C01164473DD00091EB2 /* ScrollingTreeFixedNode.h */; }; + 93C38C04164473DD00091EB2 /* ScrollingTreeFixedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93C38C02164473DD00091EB2 /* ScrollingTreeFixedNode.mm */; }; + 93C442000F813AE100C1A634 /* CollectionType.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C441FF0F813AE100C1A634 /* CollectionType.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93C4A4151629DF5A00C3EB6E /* ScrollingTreeScrollingNodeMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C4A4131629DF5A00C3EB6E /* ScrollingTreeScrollingNodeMac.h */; }; + 93C4A4161629DF5A00C3EB6E /* ScrollingTreeScrollingNodeMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93C4A4141629DF5A00C3EB6E /* ScrollingTreeScrollingNodeMac.mm */; }; + 93C4F6EB1108F9A50099D0DB /* AccessibilityScrollbar.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C4F6E91108F9A50099D0DB /* AccessibilityScrollbar.h */; }; + 93C841F809CE855C00DFF5E5 /* DOMImplementationFront.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C841F709CE855C00DFF5E5 /* DOMImplementationFront.h */; }; + 93C841FF09CE858300DFF5E5 /* DOMImplementationFront.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93C841FE09CE858300DFF5E5 /* DOMImplementationFront.cpp */; }; + 93CCF0270AF6C52900018E89 /* NavigationAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 93CCF0260AF6C52900018E89 /* NavigationAction.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93CCF0600AF6CA7600018E89 /* NavigationAction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93CCF05F0AF6CA7600018E89 /* NavigationAction.cpp */; }; + 93D3C1590F97A9D70053C013 /* DOMHTMLCanvasElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D3C1580F97A9D70053C013 /* DOMHTMLCanvasElement.h */; }; + 93D3C17D0F97AA760053C013 /* DOMHTMLCanvasElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 93D3C1580F97A9D70053C013 /* DOMHTMLCanvasElement.h */; }; + 93D9D53C0DA27E180077216C /* RangeBoundaryPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D9D53B0DA27E180077216C /* RangeBoundaryPoint.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93E227E00AF589AD00D48324 /* DocumentLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93E227DB0AF589AD00D48324 /* DocumentLoader.cpp */; }; + 93E227E30AF589AD00D48324 /* ResourceLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93E227DE0AF589AD00D48324 /* ResourceLoader.cpp */; }; + 93E227E40AF589AD00D48324 /* SubresourceLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93E227DF0AF589AD00D48324 /* SubresourceLoader.cpp */; }; + 93E241FF0B2B4E4000C732A1 /* HTMLFrameOwnerElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 93E241FE0B2B4E4000C732A1 /* HTMLFrameOwnerElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93E2425F0B2B509500C732A1 /* HTMLFrameOwnerElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93E2425E0B2B509500C732A1 /* HTMLFrameOwnerElement.cpp */; }; + 93E2A306123E9DC0009FE12A /* HTMLParserIdioms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93E2A304123E9DC0009FE12A /* HTMLParserIdioms.cpp */; }; + 93E2A307123E9DC0009FE12A /* HTMLParserIdioms.h in Headers */ = {isa = PBXBuildFile; fileRef = 93E2A305123E9DC0009FE12A /* HTMLParserIdioms.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93EB169509F880B00091F8FF /* WebCoreSystemInterface.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93EB169409F880B00091F8FF /* WebCoreSystemInterface.mm */; }; + 93EB169709F880C00091F8FF /* WebCoreSystemInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 93EB169609F880C00091F8FF /* WebCoreSystemInterface.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93EB355F09E37FD600F43799 /* MouseEventWithHitTestResults.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93EB355E09E37FD600F43799 /* MouseEventWithHitTestResults.cpp */; }; + 93F198E508245E59001E9ABC /* HTMLDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = F523D23C02DE4396018635CA /* HTMLDocument.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93F198E608245E59001E9ABC /* HTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F523D23F02DE4396018635CA /* HTMLElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93F198F608245E59001E9ABC /* TextResourceDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = F523D27902DE43D7018635CA /* TextResourceDecoder.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93F1991808245E59001E9ABC /* Range.h in Headers */ = {isa = PBXBuildFile; fileRef = F523D30402DE4476018635CA /* Range.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93F1992F08245E59001E9ABC /* Cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = F587868402DE3B8601EA4122 /* Cursor.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93F1994F08245E59001E9ABC /* Settings.h in Headers */ = {isa = PBXBuildFile; fileRef = F587863A02DE3A1401EA4122 /* Settings.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93F1995008245E59001E9ABC /* CachePolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = F587864902DE3A9A01EA4122 /* CachePolicy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93F1996308245E59001E9ABC /* SSLKeyGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = F587866202DE3B1101EA4122 /* SSLKeyGenerator.h */; }; + 93F1998C08245E59001E9ABC /* RenderTreeAsText.h in Headers */ = {isa = PBXBuildFile; fileRef = 93955A4103D72932008635CE /* RenderTreeAsText.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93F199A808245E59001E9ABC /* WebCoreFrameView.h in Headers */ = {isa = PBXBuildFile; fileRef = F587854C02DE375901EA4122 /* WebCoreFrameView.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93F199B808245E59001E9ABC /* Scrollbar.h in Headers */ = {isa = PBXBuildFile; fileRef = BC7B2AF80450824100A8000F /* Scrollbar.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93F199BB08245E59001E9ABC /* WebCoreKeyboardUIMode.h in Headers */ = {isa = PBXBuildFile; fileRef = BE983D95052A2E0A00892D85 /* WebCoreKeyboardUIMode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93F199BE08245E59001E9ABC /* BlockExceptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 65A640F00533BB1F0085E777 /* BlockExceptions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93F199DE08245E59001E9ABC /* Position.h in Headers */ = {isa = PBXBuildFile; fileRef = BE91FC8B06133666005E3790 /* Position.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93F199E508245E59001E9ABC /* HTMLCanvasElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F6A3D60663BF04004D2919 /* HTMLCanvasElement.h */; }; + 93F199EC08245E59001E9ABC /* XSLStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = BC06F24A06D18A7E004A6FA3 /* XSLStyleSheet.h */; }; + 93F199ED08245E59001E9ABC /* XSLTProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC06F24C06D18A7E004A6FA3 /* XSLTProcessor.h */; }; + 93F199F008245E59001E9ABC /* WebCoreView.h in Headers */ = {isa = PBXBuildFile; fileRef = BE855F7F0701E83500239769 /* WebCoreView.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93F19A2608245E59001E9ABC /* CursorMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = F58784F002DE375901EA4122 /* CursorMac.mm */; }; + 93F19A9108245E59001E9ABC /* HTMLDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F523D23B02DE4396018635CA /* HTMLDocument.cpp */; }; + 93F19A9208245E59001E9ABC /* HTMLElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F523D23E02DE4396018635CA /* HTMLElement.cpp */; }; + 93F19A9D08245E59001E9ABC /* TextResourceDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F523D27802DE43D7018635CA /* TextResourceDecoder.cpp */; }; + 93F19AB908245E59001E9ABC /* Range.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F523D30302DE4476018635CA /* Range.cpp */; }; + 93F19AD508245E59001E9ABC /* RenderTreeAsText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93955A4203D72932008635CE /* RenderTreeAsText.cpp */; }; + 93F19AE108245E59001E9ABC /* BlockExceptions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65F80697054D9F86008BF776 /* BlockExceptions.mm */; }; + 93F19AE608245E59001E9ABC /* SSLKeyGeneratorMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B2B24F056BF15F00D2B771 /* SSLKeyGeneratorMac.cpp */; }; + 93F19AF808245E59001E9ABC /* Position.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE91FC8C06133666005E3790 /* Position.cpp */; }; + 93F19AFD08245E59001E9ABC /* HTMLCanvasElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F6A3D50663BF04004D2919 /* HTMLCanvasElement.cpp */; }; + 93F19AFF08245E59001E9ABC /* ClipboardMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D90660C0665D937006B6F1A /* ClipboardMac.mm */; }; + 93F19B0308245E59001E9ABC /* XSLStyleSheetLibxslt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC06F24906D18A7E004A6FA3 /* XSLStyleSheetLibxslt.cpp */; }; + 93F19B0408245E59001E9ABC /* XSLTProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC06F24B06D18A7E004A6FA3 /* XSLTProcessor.cpp */; }; + 93F19B0508245E59001E9ABC /* XSLTProcessorLibxslt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC06F24D06D18A7E004A6FA3 /* XSLTProcessorLibxslt.cpp */; }; + 93F19B0708245E59001E9ABC /* WebCoreView.m in Sources */ = {isa = PBXBuildFile; fileRef = BE8560510701F91100239769 /* WebCoreView.m */; }; + 93F19B1308245E59001E9ABC /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5C2869302846DCD018635CA /* ApplicationServices.framework */; }; + 93F19B1408245E59001E9ABC /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5C2869402846DCD018635CA /* Carbon.framework */; }; + 93F19B1508245E59001E9ABC /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5C2869502846DCD018635CA /* Cocoa.framework */; }; + 93F19B1608245E59001E9ABC /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8216299029F4FB501000131 /* JavaScriptCore.framework */; }; + 93F19B1708245E59001E9ABC /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 93F1D31A0558CC5C00821BC0 /* libicucore.dylib */; }; + 93F1D5BA12D532C400832BEC /* WebGLLoseContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F1D5B712D532C400832BEC /* WebGLLoseContext.cpp */; }; + 93F1D5BB12D532C400832BEC /* WebGLLoseContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 93F1D5B812D532C400832BEC /* WebGLLoseContext.h */; }; + 93F1D5C012D5335600832BEC /* JSWebGLLoseContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F1D5BE12D5335600832BEC /* JSWebGLLoseContext.cpp */; }; + 93F1D5C112D5335600832BEC /* JSWebGLLoseContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 93F1D5BF12D5335600832BEC /* JSWebGLLoseContext.h */; }; + 93F6F1ED127F70B10055CB06 /* WebGLContextEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F6F1EA127F70B10055CB06 /* WebGLContextEvent.cpp */; }; + 93F6F1EE127F70B10055CB06 /* WebGLContextEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 93F6F1EB127F70B10055CB06 /* WebGLContextEvent.h */; }; + 93F72AF31666EDFC002A02BD /* LayerPool.h in Headers */ = {isa = PBXBuildFile; fileRef = 93F72AF11666EDFC002A02BD /* LayerPool.h */; }; + 93F72AF41666EDFC002A02BD /* LayerPool.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93F72AF21666EDFC002A02BD /* LayerPool.mm */; }; + 93F925430F7EF5B8007E37C9 /* CheckedRadioButtons.h in Headers */ = {isa = PBXBuildFile; fileRef = 93F925410F7EF5B8007E37C9 /* CheckedRadioButtons.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93F925440F7EF5B8007E37C9 /* CheckedRadioButtons.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F925420F7EF5B8007E37C9 /* CheckedRadioButtons.cpp */; }; + 93F9B6570BA0F35E00854064 /* DOMHTMLCanvasElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93F9B6540BA0F35E00854064 /* DOMHTMLCanvasElement.mm */; }; + 93F9B6580BA0F35E00854064 /* DOMHTMLCanvasElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 93F9B6550BA0F35E00854064 /* DOMHTMLCanvasElementInternal.h */; }; + 93F9B6E00BA0FB7200854064 /* JSComment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F9B6DE0BA0FB7200854064 /* JSComment.cpp */; }; + 93F9B6E10BA0FB7200854064 /* JSComment.h in Headers */ = {isa = PBXBuildFile; fileRef = 93F9B6DF0BA0FB7200854064 /* JSComment.h */; }; + 93F9B7740BA5FDDC00854064 /* JSEntityReference.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F9B7720BA5FDDC00854064 /* JSEntityReference.cpp */; }; + 93F9B7750BA5FDDD00854064 /* JSEntityReference.h in Headers */ = {isa = PBXBuildFile; fileRef = 93F9B7730BA5FDDC00854064 /* JSEntityReference.h */; }; + 93F9B7A00BA6032600854064 /* JSCDATASection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F9B79E0BA6032600854064 /* JSCDATASection.cpp */; }; + 93F9B7A10BA6032600854064 /* JSCDATASection.h in Headers */ = {isa = PBXBuildFile; fileRef = 93F9B79F0BA6032600854064 /* JSCDATASection.h */; }; + 93FDAFCA0B11307400E2746F /* EditorInsertAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 93FDAFC90B11307400E2746F /* EditorInsertAction.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 96ABA42314BCB80E00D56204 /* GraphicsContext3DOpenGLCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 96ABA42214BCB80E00D56204 /* GraphicsContext3DOpenGLCommon.cpp */; }; + 9703E1BF15DC4E37001F24C8 /* JSVoidCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97E9EC8B15DC492F004F2E71 /* JSVoidCallback.cpp */; }; + 97059977107D975200A50A7C /* PolicyCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97059973107D975200A50A7C /* PolicyCallback.cpp */; }; + 97059978107D975200A50A7C /* PolicyCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 97059974107D975200A50A7C /* PolicyCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 97059979107D975200A50A7C /* PolicyChecker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97059975107D975200A50A7C /* PolicyChecker.cpp */; }; + 9705997A107D975200A50A7C /* PolicyChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = 97059976107D975200A50A7C /* PolicyChecker.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 970B728A144FFAC600F00A37 /* EventInterfaces.h in Headers */ = {isa = PBXBuildFile; fileRef = 970B7289144FFAC600F00A37 /* EventInterfaces.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 970B72A6145008EB00F00A37 /* EventHeaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 970B72A5145008EB00F00A37 /* EventHeaders.h */; }; + 9711460314EF009A00674FD9 /* NavigatorGeolocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9711460014EF009A00674FD9 /* NavigatorGeolocation.cpp */; }; + 9711460414EF009A00674FD9 /* NavigatorGeolocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9711460114EF009A00674FD9 /* NavigatorGeolocation.h */; }; + 9712A5AD15004EDA0048AF10 /* DOMWindowIndexedDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9712A55415004EDA0048AF10 /* DOMWindowIndexedDatabase.cpp */; }; + 9712A5AE15004EDA0048AF10 /* DOMWindowIndexedDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A55515004EDA0048AF10 /* DOMWindowIndexedDatabase.h */; }; + 9712A5B115004EDA0048AF10 /* IDBAny.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A55815004EDA0048AF10 /* IDBAny.h */; }; + 9712A5B315004EDA0048AF10 /* IDBBackingStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A55A15004EDA0048AF10 /* IDBBackingStore.h */; }; + 9712A5B415004EDA0048AF10 /* IDBCallbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A55B15004EDA0048AF10 /* IDBCallbacks.h */; }; + 9712A5B615004EDA0048AF10 /* IDBCursor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A55D15004EDA0048AF10 /* IDBCursor.h */; }; + 9712A5B815004EDA0048AF10 /* IDBCursorBackendImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9712A55F15004EDA0048AF10 /* IDBCursorBackendImpl.cpp */; }; + 9712A5B915004EDA0048AF10 /* IDBCursorBackendImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A56015004EDA0048AF10 /* IDBCursorBackendImpl.h */; }; + 9712A5BA15004EDA0048AF10 /* IDBCursorBackendInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A56115004EDA0048AF10 /* IDBCursorBackendInterface.h */; }; + 9712A5BC15004EDA0048AF10 /* IDBCursorWithValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A56315004EDA0048AF10 /* IDBCursorWithValue.h */; }; + 9712A5BF15004EDA0048AF10 /* IDBDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A56615004EDA0048AF10 /* IDBDatabase.h */; }; + 9712A5C115004EDA0048AF10 /* IDBDatabaseBackendImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9712A56815004EDA0048AF10 /* IDBDatabaseBackendImpl.cpp */; }; + 9712A5C215004EDA0048AF10 /* IDBDatabaseBackendImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A56915004EDA0048AF10 /* IDBDatabaseBackendImpl.h */; }; + 9712A5C315004EDA0048AF10 /* IDBDatabaseBackendInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A56A15004EDA0048AF10 /* IDBDatabaseBackendInterface.h */; }; + 9712A5C415004EDA0048AF10 /* IDBDatabaseCallbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A56B15004EDA0048AF10 /* IDBDatabaseCallbacks.h */; }; + 9712A5C515004EDA0048AF10 /* IDBDatabaseCallbacksImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9712A56C15004EDA0048AF10 /* IDBDatabaseCallbacksImpl.cpp */; }; + 9712A5C615004EDA0048AF10 /* IDBDatabaseCallbacksImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A56D15004EDA0048AF10 /* IDBDatabaseCallbacksImpl.h */; }; + 9712A5C715004EDA0048AF10 /* IDBDatabaseError.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A56E15004EDA0048AF10 /* IDBDatabaseError.h */; }; + 9712A5C915004EDA0048AF10 /* IDBDatabaseException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9712A57015004EDA0048AF10 /* IDBDatabaseException.cpp */; }; + 9712A5CA15004EDA0048AF10 /* IDBDatabaseException.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A57115004EDA0048AF10 /* IDBDatabaseException.h */; }; + 9712A5CD15004EDA0048AF10 /* IDBEventDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A57415004EDA0048AF10 /* IDBEventDispatcher.h */; }; + 9712A5CF15004EDA0048AF10 /* IDBFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A57615004EDA0048AF10 /* IDBFactory.h */; }; + 9712A5D115004EDA0048AF10 /* IDBFactoryBackendImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9712A57815004EDA0048AF10 /* IDBFactoryBackendImpl.cpp */; }; + 9712A5D215004EDA0048AF10 /* IDBFactoryBackendImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A57915004EDA0048AF10 /* IDBFactoryBackendImpl.h */; }; + 9712A5D315004EDA0048AF10 /* IDBFactoryBackendInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9712A57A15004EDA0048AF10 /* IDBFactoryBackendInterface.cpp */; }; + 9712A5D415004EDA0048AF10 /* IDBFactoryBackendInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A57B15004EDA0048AF10 /* IDBFactoryBackendInterface.h */; }; + 9712A5D615004EDA0048AF10 /* IDBIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A57D15004EDA0048AF10 /* IDBIndex.h */; }; + 9712A5DC15004EDA0048AF10 /* IDBKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A58315004EDA0048AF10 /* IDBKey.h */; }; + 9712A5DF15004EDA0048AF10 /* IDBKeyPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A58615004EDA0048AF10 /* IDBKeyPath.h */; }; + 9712A5E315004EDA0048AF10 /* IDBKeyRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A58A15004EDA0048AF10 /* IDBKeyRange.h */; }; + 9712A5E815004EDA0048AF10 /* IDBLevelDBCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A58F15004EDA0048AF10 /* IDBLevelDBCoding.h */; }; + 9712A5EA15004EDA0048AF10 /* IDBObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A59115004EDA0048AF10 /* IDBObjectStore.h */; }; + 9712A5EC15004EDA0048AF10 /* IDBObjectStoreBackendImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9712A59315004EDA0048AF10 /* IDBObjectStoreBackendImpl.cpp */; }; + 9712A5ED15004EDA0048AF10 /* IDBObjectStoreBackendImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A59415004EDA0048AF10 /* IDBObjectStoreBackendImpl.h */; }; + 9712A5EF15004EDA0048AF10 /* IDBPendingTransactionMonitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9712A59615004EDA0048AF10 /* IDBPendingTransactionMonitor.cpp */; }; + 9712A5F015004EDA0048AF10 /* IDBPendingTransactionMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A59715004EDA0048AF10 /* IDBPendingTransactionMonitor.h */; }; + 9712A5F215004EDA0048AF10 /* IDBRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A59915004EDA0048AF10 /* IDBRequest.h */; }; + 9712A5F415004EDA0048AF10 /* IDBTracing.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A59B15004EDA0048AF10 /* IDBTracing.h */; }; + 9712A5F615004EDA0048AF10 /* IDBTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A59D15004EDA0048AF10 /* IDBTransaction.h */; }; + 9712A5F815004EDA0048AF10 /* IDBTransactionBackendImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9712A59F15004EDA0048AF10 /* IDBTransactionBackendImpl.cpp */; }; + 9712A5F915004EDA0048AF10 /* IDBTransactionBackendImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A5A015004EDA0048AF10 /* IDBTransactionBackendImpl.h */; }; + 9712A5FB15004EDA0048AF10 /* IDBTransactionCallbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A5A215004EDA0048AF10 /* IDBTransactionCallbacks.h */; }; + 9712A5FC15004EDA0048AF10 /* IDBTransactionCoordinator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9712A5A315004EDA0048AF10 /* IDBTransactionCoordinator.cpp */; }; + 9712A5FD15004EDA0048AF10 /* IDBTransactionCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A5A415004EDA0048AF10 /* IDBTransactionCoordinator.h */; }; + 9712A5FE15004EDA0048AF10 /* IDBVersionChangeEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9712A5A515004EDA0048AF10 /* IDBVersionChangeEvent.cpp */; }; + 9712A5FF15004EDA0048AF10 /* IDBVersionChangeEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A5A615004EDA0048AF10 /* IDBVersionChangeEvent.h */; }; + 9712A60415004EDA0048AF10 /* PageGroupIndexedDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9712A5AB15004EDA0048AF10 /* PageGroupIndexedDatabase.cpp */; }; + 9712A60515004EDA0048AF10 /* PageGroupIndexedDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A5AC15004EDA0048AF10 /* PageGroupIndexedDatabase.h */; }; + 9712A611150090CE0048AF10 /* WorkerGlobalScopeIndexedDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9712A60E150090CE0048AF10 /* WorkerGlobalScopeIndexedDatabase.cpp */; }; + 9712A612150090CE0048AF10 /* WorkerGlobalScopeIndexedDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9712A60F150090CE0048AF10 /* WorkerGlobalScopeIndexedDatabase.h */; }; + 97205AAF123928CA00B17380 /* FTPDirectoryDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97205AAD123928CA00B17380 /* FTPDirectoryDocument.cpp */; }; + 97205AB0123928CA00B17380 /* FTPDirectoryDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 97205AAE123928CA00B17380 /* FTPDirectoryDocument.h */; }; + 97205AB51239291000B17380 /* ImageDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97205AB11239291000B17380 /* ImageDocument.cpp */; }; + 97205AB61239291000B17380 /* ImageDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 97205AB21239291000B17380 /* ImageDocument.h */; }; + 97205AB71239291000B17380 /* MediaDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97205AB31239291000B17380 /* MediaDocument.cpp */; }; + 97205AB81239291000B17380 /* MediaDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 97205AB41239291000B17380 /* MediaDocument.h */; }; + 97205ABB1239292700B17380 /* PluginDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97205AB91239292700B17380 /* PluginDocument.cpp */; }; + 97205ABC1239292700B17380 /* PluginDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 97205ABA1239292700B17380 /* PluginDocument.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9728C3131268E4390041E89B /* MarkupAccumulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9728C3111268E4390041E89B /* MarkupAccumulator.cpp */; }; + 9728C3141268E4390041E89B /* MarkupAccumulator.h in Headers */ = {isa = PBXBuildFile; fileRef = 9728C3121268E4390041E89B /* MarkupAccumulator.h */; }; + 973889A0116EA9DC00ADF313 /* DocumentWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9738899E116EA9DC00ADF313 /* DocumentWriter.cpp */; }; + 973889A1116EA9DC00ADF313 /* DocumentWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 9738899F116EA9DC00ADF313 /* DocumentWriter.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 973AA3F415D088F000E38A85 /* BindingState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 973AA3F215D088F000E38A85 /* BindingState.cpp */; }; + 973AA3F515D088F000E38A85 /* BindingState.h in Headers */ = {isa = PBXBuildFile; fileRef = 973AA3F315D088F000E38A85 /* BindingState.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 973AA3F915D0891B00E38A85 /* BindingSecurity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 973AA3F715D0891B00E38A85 /* BindingSecurity.cpp */; }; + 973AA3FA15D0891B00E38A85 /* BindingSecurity.h in Headers */ = {isa = PBXBuildFile; fileRef = 973AA3F815D0891B00E38A85 /* BindingSecurity.h */; }; + 973DC63F145A9409002842C2 /* ExceptionCodeDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 973DC63D145A9409002842C2 /* ExceptionCodeDescription.cpp */; }; + 973DC640145A9409002842C2 /* ExceptionCodeDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 973DC63E145A9409002842C2 /* ExceptionCodeDescription.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 973E325610883B7C005BC493 /* ResourceLoadNotifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 973E325410883B7C005BC493 /* ResourceLoadNotifier.cpp */; }; + 973E325710883B7C005BC493 /* ResourceLoadNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 973E325510883B7C005BC493 /* ResourceLoadNotifier.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 973F418A169B95FF0006BF60 /* HTMLParserOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 973F4188169B95EF0006BF60 /* HTMLParserOptions.h */; }; + 973F418B169B96030006BF60 /* HTMLParserOptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 973F4187169B95EF0006BF60 /* HTMLParserOptions.cpp */; }; + 974187D416A7932900FA77A7 /* HTMLParserThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 974187D116A7932200FA77A7 /* HTMLParserThread.h */; }; + 9746AF2114F4DDE6003E7A71 /* Coordinates.h in Headers */ = {isa = PBXBuildFile; fileRef = 9746AF1114F4DDE6003E7A70 /* Coordinates.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9746AF2114F4DDE6003E7A72 /* Coordinates.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9746AF1114F4DDE6003E7A72 /* Coordinates.cpp */; }; + 9746AF2314F4DDE6003E7A70 /* Geolocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9746AF1314F4DDE6003E7A70 /* Geolocation.cpp */; }; + 9746AF2414F4DDE6003E7A70 /* Geolocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9746AF1414F4DDE6003E7A70 /* Geolocation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9746AF2514F4DDE6003E7A71 /* GeolocationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 9746AF1514F4DDE6003E7A71 /* GeolocationClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9746AF2614F4DDE6003E7A70 /* GeolocationController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9746AF1614F4DDE6003E7A70 /* GeolocationController.cpp */; }; + 9746AF2714F4DDE6003E7A70 /* GeolocationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9746AF1714F4DDE6003E7A70 /* GeolocationController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9746AF2814F4DDE6003E7A70 /* GeolocationError.h in Headers */ = {isa = PBXBuildFile; fileRef = 9746AF1814F4DDE6003E7A70 /* GeolocationError.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9746AF2914F4DDE6003E7A70 /* GeolocationPosition.h in Headers */ = {isa = PBXBuildFile; fileRef = 9746AF1914F4DDE6003E7A70 /* GeolocationPosition.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9746AF2A14F4DDE6003E7A70 /* Geoposition.h in Headers */ = {isa = PBXBuildFile; fileRef = 9746AF1A14F4DDE6003E7A70 /* Geoposition.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9746AF2C14F4DDE6003E7A70 /* PositionCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 9746AF1C14F4DDE6003E7A70 /* PositionCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9746AF2E14F4DDE6003E7A70 /* PositionError.h in Headers */ = {isa = PBXBuildFile; fileRef = 9746AF1E14F4DDE6003E7A70 /* PositionError.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9746AF3014F4DDE6003E7A70 /* PositionErrorCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 9746AF2014F4DDE6003E7A70 /* PositionErrorCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9746AF3214F4DDE6003E7A70 /* PositionOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9746AF2214F4DDE6003E7A70 /* PositionOptions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 974A862214B7ADBB003FDC76 /* FrameDestructionObserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 974A862014B7ADBB003FDC76 /* FrameDestructionObserver.cpp */; }; + 974A862314B7ADBB003FDC76 /* FrameDestructionObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 974A862114B7ADBB003FDC76 /* FrameDestructionObserver.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 974D2DA4146A535D00D51F8B /* SecurityPolicy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 974D2DA2146A535D00D51F8B /* SecurityPolicy.cpp */; }; + 974D2DA5146A535D00D51F8B /* SecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 974D2DA3146A535D00D51F8B /* SecurityPolicy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9752D38D1413104B003305BD /* JSHTMLSpanElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9752D38B1413104B003305BD /* JSHTMLSpanElement.cpp */; }; + 9752D38E1413104B003305BD /* JSHTMLSpanElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 9752D38C1413104B003305BD /* JSHTMLSpanElement.h */; }; + 9759E93E14EF1CF80026A2DD /* LoadableTextTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9759E93414EF1CF80026A2DD /* LoadableTextTrack.cpp */; }; + 9759E93F14EF1CF80026A2DD /* TextTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9759E93514EF1CF80026A2DD /* TextTrack.cpp */; }; + 9759E94014EF1CF80026A2DD /* TextTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = 9759E93614EF1CF80026A2DD /* TextTrack.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9759E94214EF1CF80026A2DD /* TextTrackCue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9759E93814EF1CF80026A2DD /* TextTrackCue.cpp */; }; + 9759E94314EF1CF80026A2DD /* TextTrackCue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9759E93914EF1CF80026A2DD /* TextTrackCue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9759E94514EF1CF80026A2DD /* TextTrackCueList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9759E93B14EF1CF80026A2DD /* TextTrackCueList.cpp */; }; + 9759E94614EF1CF80026A2DD /* TextTrackCueList.h in Headers */ = {isa = PBXBuildFile; fileRef = 9759E93C14EF1CF80026A2DD /* TextTrackCueList.h */; }; + 9759E94914EF1D490026A2DD /* LoadableTextTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = 9759E94814EF1D490026A2DD /* LoadableTextTrack.h */; }; + 975CA28A130365F800E99AD9 /* Crypto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 975CA287130365F800E99AD9 /* Crypto.cpp */; }; + 975CA28B130365F800E99AD9 /* Crypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 975CA288130365F800E99AD9 /* Crypto.h */; }; + 975CA2A11303679D00E99AD9 /* JSCrypto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 975CA29F1303679D00E99AD9 /* JSCrypto.cpp */; }; + 975CA2A21303679D00E99AD9 /* JSCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 975CA2A01303679D00E99AD9 /* JSCrypto.h */; }; + 97627B8D14FB3CEE002CDCA1 /* ContextDestructionObserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97627B8B14FB3CEE002CDCA1 /* ContextDestructionObserver.cpp */; }; + 97627B8E14FB3CEE002CDCA1 /* ContextDestructionObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 97627B8C14FB3CEE002CDCA1 /* ContextDestructionObserver.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 97627B9814FB5424002CDCA1 /* Supplementable.h in Headers */ = {isa = PBXBuildFile; fileRef = 97627B9714FB5424002CDCA1 /* Supplementable.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 97665013144FAA4200F6BB51 /* EventFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 97665011144FAA4200F6BB51 /* EventFactory.h */; }; + 9766504F144FBFFE00F6BB51 /* EventFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9766504E144FBFFE00F6BB51 /* EventFactory.cpp */; }; + 9767CE0B145ABC13005E64DB /* ExceptionHeaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 9767CE09145ABC12005E64DB /* ExceptionHeaders.h */; }; + 9767CE0C145ABC13005E64DB /* ExceptionInterfaces.h in Headers */ = {isa = PBXBuildFile; fileRef = 9767CE0A145ABC13005E64DB /* ExceptionInterfaces.h */; }; + 976D6C77122B8A3D001FD1F7 /* AsyncFileWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 976D6C58122B8A3D001FD1F7 /* AsyncFileWriter.h */; }; + 976D6C78122B8A3D001FD1F7 /* Blob.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 976D6C59122B8A3D001FD1F7 /* Blob.cpp */; }; + 976D6C79122B8A3D001FD1F7 /* Blob.h in Headers */ = {isa = PBXBuildFile; fileRef = 976D6C5A122B8A3D001FD1F7 /* Blob.h */; }; + 976D6C7B122B8A3D001FD1F7 /* WebKitBlobBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 976D6C5C122B8A3D001FD1F7 /* WebKitBlobBuilder.cpp */; }; + 976D6C7C122B8A3D001FD1F7 /* WebKitBlobBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 976D6C5D122B8A3D001FD1F7 /* WebKitBlobBuilder.h */; }; + 976D6C7E122B8A3D001FD1F7 /* BlobURL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 976D6C5F122B8A3D001FD1F7 /* BlobURL.cpp */; }; + 976D6C7F122B8A3D001FD1F7 /* BlobURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 976D6C60122B8A3D001FD1F7 /* BlobURL.h */; }; + 976D6C80122B8A3D001FD1F7 /* File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 976D6C61122B8A3D001FD1F7 /* File.cpp */; }; + 976D6C81122B8A3D001FD1F7 /* File.h in Headers */ = {isa = PBXBuildFile; fileRef = 976D6C62122B8A3D001FD1F7 /* File.h */; }; + 976D6C83122B8A3D001FD1F7 /* FileError.h in Headers */ = {isa = PBXBuildFile; fileRef = 976D6C64122B8A3D001FD1F7 /* FileError.h */; }; + 976D6C85122B8A3D001FD1F7 /* FileList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 976D6C66122B8A3D001FD1F7 /* FileList.cpp */; }; + 976D6C86122B8A3D001FD1F7 /* FileList.h in Headers */ = {isa = PBXBuildFile; fileRef = 976D6C67122B8A3D001FD1F7 /* FileList.h */; }; + 976D6C88122B8A3D001FD1F7 /* FileReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 976D6C69122B8A3D001FD1F7 /* FileReader.cpp */; }; + 976D6C89122B8A3D001FD1F7 /* FileReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 976D6C6A122B8A3D001FD1F7 /* FileReader.h */; }; + 976D6C8D122B8A3D001FD1F7 /* FileThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 976D6C6E122B8A3D001FD1F7 /* FileThread.cpp */; }; + 976D6C8E122B8A3D001FD1F7 /* FileThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 976D6C6F122B8A3D001FD1F7 /* FileThread.h */; }; + 976D6C8F122B8A3D001FD1F7 /* FileThreadTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 976D6C70122B8A3D001FD1F7 /* FileThreadTask.h */; }; + 976D6C91122B8A3D001FD1F7 /* FileWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 976D6C72122B8A3D001FD1F7 /* FileWriter.h */; }; + 976D6C93122B8A3D001FD1F7 /* AsyncFileWriterClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 976D6C74122B8A3D001FD1F7 /* AsyncFileWriterClient.h */; }; + 976D6C94122B8A3D001FD1F7 /* ThreadableBlobRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 976D6C75122B8A3D001FD1F7 /* ThreadableBlobRegistry.cpp */; }; + 976D6C95122B8A3D001FD1F7 /* ThreadableBlobRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 976D6C76122B8A3D001FD1F7 /* ThreadableBlobRegistry.h */; }; + 976F36EA14686225005E93B4 /* SecurityContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 976F36E814686225005E93B4 /* SecurityContext.cpp */; }; + 976F36EB14686225005E93B4 /* SecurityContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 976F36E914686225005E93B4 /* SecurityContext.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 977B37231228721700B81FF8 /* HTMLElementStack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977B371F1228721700B81FF8 /* HTMLElementStack.cpp */; }; + 977B37241228721700B81FF8 /* HTMLElementStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 977B37201228721700B81FF8 /* HTMLElementStack.h */; }; + 977B37251228721700B81FF8 /* HTMLTreeBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977B37211228721700B81FF8 /* HTMLTreeBuilder.cpp */; }; + 977B37261228721700B81FF8 /* HTMLTreeBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 977B37221228721700B81FF8 /* HTMLTreeBuilder.h */; }; + 977B3862122883E900B81FF8 /* CSSPreloadScanner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977B3849122883E900B81FF8 /* CSSPreloadScanner.cpp */; }; + 977B3863122883E900B81FF8 /* CSSPreloadScanner.h in Headers */ = {isa = PBXBuildFile; fileRef = 977B384A122883E900B81FF8 /* CSSPreloadScanner.h */; }; + 977B3864122883E900B81FF8 /* HTMLConstructionSite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977B384B122883E900B81FF8 /* HTMLConstructionSite.cpp */; }; + 977B3865122883E900B81FF8 /* HTMLConstructionSite.h in Headers */ = {isa = PBXBuildFile; fileRef = 977B384C122883E900B81FF8 /* HTMLConstructionSite.h */; }; + 977B3866122883E900B81FF8 /* HTMLDocumentParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977B384D122883E900B81FF8 /* HTMLDocumentParser.cpp */; }; + 977B3867122883E900B81FF8 /* HTMLDocumentParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 977B384E122883E900B81FF8 /* HTMLDocumentParser.h */; }; + 977B3869122883E900B81FF8 /* HTMLEntityParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977B3850122883E900B81FF8 /* HTMLEntityParser.cpp */; }; + 977B386A122883E900B81FF8 /* HTMLEntityParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 977B3851122883E900B81FF8 /* HTMLEntityParser.h */; }; + 977B386B122883E900B81FF8 /* HTMLEntitySearch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977B3852122883E900B81FF8 /* HTMLEntitySearch.cpp */; }; + 977B386C122883E900B81FF8 /* HTMLEntitySearch.h in Headers */ = {isa = PBXBuildFile; fileRef = 977B3853122883E900B81FF8 /* HTMLEntitySearch.h */; }; + 977B386D122883E900B81FF8 /* HTMLEntityTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 977B3854122883E900B81FF8 /* HTMLEntityTable.h */; }; + 977B386E122883E900B81FF8 /* HTMLFormattingElementList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977B3855122883E900B81FF8 /* HTMLFormattingElementList.cpp */; }; + 977B386F122883E900B81FF8 /* HTMLFormattingElementList.h in Headers */ = {isa = PBXBuildFile; fileRef = 977B3856122883E900B81FF8 /* HTMLFormattingElementList.h */; }; + 977B3870122883E900B81FF8 /* HTMLParserScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977B3857122883E900B81FF8 /* HTMLParserScheduler.cpp */; }; + 977B3871122883E900B81FF8 /* HTMLParserScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = 977B3858122883E900B81FF8 /* HTMLParserScheduler.h */; }; + 977B3872122883E900B81FF8 /* HTMLPreloadScanner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977B3859122883E900B81FF8 /* HTMLPreloadScanner.cpp */; }; + 977B3873122883E900B81FF8 /* HTMLPreloadScanner.h in Headers */ = {isa = PBXBuildFile; fileRef = 977B385A122883E900B81FF8 /* HTMLPreloadScanner.h */; }; + 977B3874122883E900B81FF8 /* HTMLScriptRunner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977B385B122883E900B81FF8 /* HTMLScriptRunner.cpp */; }; + 977B3875122883E900B81FF8 /* HTMLScriptRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = 977B385C122883E900B81FF8 /* HTMLScriptRunner.h */; }; + 977B3876122883E900B81FF8 /* HTMLScriptRunnerHost.h in Headers */ = {isa = PBXBuildFile; fileRef = 977B385D122883E900B81FF8 /* HTMLScriptRunnerHost.h */; }; + 977B3877122883E900B81FF8 /* HTMLTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977B385E122883E900B81FF8 /* HTMLTokenizer.cpp */; }; + 977B3878122883E900B81FF8 /* HTMLTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 977B385F122883E900B81FF8 /* HTMLTokenizer.h */; }; + 977B3879122883E900B81FF8 /* HTMLViewSourceParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977B3860122883E900B81FF8 /* HTMLViewSourceParser.cpp */; }; + 977B387A122883E900B81FF8 /* HTMLViewSourceParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 977B3861122883E900B81FF8 /* HTMLViewSourceParser.h */; }; + 977E2DCD12F0E28300C13379 /* HTMLSourceTracker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977E2DCB12F0E28300C13379 /* HTMLSourceTracker.cpp */; }; + 977E2DCE12F0E28300C13379 /* HTMLSourceTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 977E2DCC12F0E28300C13379 /* HTMLSourceTracker.h */; }; + 977E2E0E12F0FC9C00C13379 /* XSSAuditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977E2E0B12F0FC9C00C13379 /* XSSAuditor.cpp */; }; + 977E2E0E12F0FC9C00C13380 /* XSSAuditorDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 977E2E0B12F0FC9C00C13380 /* XSSAuditorDelegate.cpp */; }; + 977E2E0F12F0FC9C00C13379 /* XSSAuditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 977E2E0C12F0FC9C00C13379 /* XSSAuditor.h */; }; + 977E2E0F12F0FC9C00C13380 /* XSSAuditorDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 977E2E0C12F0FC9C00C13380 /* XSSAuditorDelegate.h */; }; + 978AD67414130A8D00C7CAE3 /* HTMLSpanElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 978AD67114130A8D00C7CAE3 /* HTMLSpanElement.cpp */; }; + 978AD67514130A8D00C7CAE3 /* HTMLSpanElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 978AD67214130A8D00C7CAE3 /* HTMLSpanElement.h */; }; + 978D07B6145A0F030096908D /* FileException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 978D07B5145A0F030096908D /* FileException.cpp */; }; + 978D07BA145A0F3C0096908D /* RangeException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 978D07B9145A0F3C0096908D /* RangeException.cpp */; }; + 978D07BC145A0F560096908D /* EventException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 978D07BB145A0F560096908D /* EventException.cpp */; }; + 978D07BE145A0F6C0096908D /* DOMCoreException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 978D07BD145A0F6C0096908D /* DOMCoreException.cpp */; }; + 978D07CA145A10160096908D /* SVGException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 978D07C9145A10160096908D /* SVGException.cpp */; }; + 978D07CC145A102E0096908D /* XPathException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 978D07CB145A102E0096908D /* XPathException.cpp */; }; + 978D07CE145A10370096908D /* XMLHttpRequestException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 978D07CD145A10370096908D /* XMLHttpRequestException.cpp */; }; + 979DC03716A7992E00807794 /* CompactHTMLToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 979DC03416A7992100807794 /* CompactHTMLToken.h */; }; + 979DC03816A7993300807794 /* BackgroundHTMLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 979DC03216A7992100807794 /* BackgroundHTMLParser.h */; }; + 979DC03916A7993900807794 /* BackgroundHTMLParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 979DC03116A7992100807794 /* BackgroundHTMLParser.cpp */; }; + 979F43D31075E44A0000F83B /* NavigationScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 979F43D11075E44A0000F83B /* NavigationScheduler.cpp */; }; + 979F43D41075E44A0000F83B /* NavigationScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = 979F43D21075E44A0000F83B /* NavigationScheduler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 97AA3CA5145237CC003E1DA6 /* EventTargetHeaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AA3CA3145237CC003E1DA6 /* EventTargetHeaders.h */; }; + 97AA3CA6145237CC003E1DA6 /* EventTargetInterfaces.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AA3CA4145237CC003E1DA6 /* EventTargetInterfaces.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 97AABD1314FA09D5007457AE /* CloseEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABCF814FA09D5007457AE /* CloseEvent.h */; }; + 97AABD1614FA09D5007457AE /* ThreadableWebSocketChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABCFB14FA09D5007457AE /* ThreadableWebSocketChannel.cpp */; }; + 97AABD1714FA09D5007457AE /* ThreadableWebSocketChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABCFC14FA09D5007457AE /* ThreadableWebSocketChannel.h */; }; + 97AABD1814FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABCFD14FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.cpp */; }; + 97AABD1914FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABCFE14FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.h */; }; + 97AABD1A14FA09D5007457AE /* WebSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABCFF14FA09D5007457AE /* WebSocket.cpp */; }; + 97AABD1B14FA09D5007457AE /* WebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0014FA09D5007457AE /* WebSocket.h */; }; + 97AABD1D14FA09D5007457AE /* WebSocketChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABD0214FA09D5007457AE /* WebSocketChannel.cpp */; }; + 97AABD1E14FA09D5007457AE /* WebSocketChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0314FA09D5007457AE /* WebSocketChannel.h */; }; + 97AABD1F14FA09D5007457AE /* WebSocketChannelClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0414FA09D5007457AE /* WebSocketChannelClient.h */; }; + 97AABD2014FA09D5007457AE /* WebSocketDeflater.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABD0514FA09D5007457AE /* WebSocketDeflater.cpp */; }; + 97AABD2114FA09D5007457AE /* WebSocketDeflater.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0614FA09D5007457AE /* WebSocketDeflater.h */; }; + 97AABD2214FA09D5007457AE /* WebSocketExtensionDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABD0714FA09D5007457AE /* WebSocketExtensionDispatcher.cpp */; }; + 97AABD2314FA09D5007457AE /* WebSocketExtensionDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0814FA09D5007457AE /* WebSocketExtensionDispatcher.h */; }; + 97AABD2414FA09D5007457AE /* WebSocketExtensionProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0914FA09D5007457AE /* WebSocketExtensionProcessor.h */; }; + 97AABD2514FA09D5007457AE /* WebSocketFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0A14FA09D5007457AE /* WebSocketFrame.h */; }; + 97AABD2614FA09D5007457AE /* WebSocketHandshake.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABD0B14FA09D5007457AE /* WebSocketHandshake.cpp */; }; + 97AABD2714FA09D5007457AE /* WebSocketHandshake.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0C14FA09D5007457AE /* WebSocketHandshake.h */; }; + 97AABD2C14FA09D5007457AE /* WorkerThreadableWebSocketChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABD1114FA09D5007457AE /* WorkerThreadableWebSocketChannel.cpp */; }; + 97AABD2D14FA09D5007457AE /* WorkerThreadableWebSocketChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD1214FA09D5007457AE /* WorkerThreadableWebSocketChannel.h */; }; + 97B1F02E13B025CA00F5103F /* SharedBufferChunkReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37569E0013AF172C00CDBA8E /* SharedBufferChunkReader.cpp */; }; + 97B1F02F13B025D200F5103F /* SharedBufferChunkReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 37569E0213AF172C00CDBA8E /* SharedBufferChunkReader.h */; }; + 97B38E27151C4271004622E9 /* DOMWindowNotifications.h in Headers */ = {isa = PBXBuildFile; fileRef = 97B38E24151C4264004622E9 /* DOMWindowNotifications.h */; }; + 97B38E28151C4273004622E9 /* DOMWindowNotifications.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97B38E23151C4264004622E9 /* DOMWindowNotifications.cpp */; }; + 97B8FFD116AE7F960038388D /* CharacterReferenceParserInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 97B8FFCF16AE7F920038388D /* CharacterReferenceParserInlines.h */; }; + 97BC69DA1505F076001B74AC /* DatabaseBackendBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69D61505F076001B74AC /* DatabaseBackendBase.cpp */; }; + 97BC69DB1505F076001B74AC /* DatabaseBackendBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69D71505F076001B74AC /* DatabaseBackendBase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 97BC69DC1505F076001B74AC /* ChangeVersionWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69D81505F076001B74AC /* ChangeVersionWrapper.cpp */; }; + 97BC69DD1505F076001B74AC /* ChangeVersionWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69D91505F076001B74AC /* ChangeVersionWrapper.h */; }; + 97BC6A201505F081001B74AC /* Database.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69DE1505F081001B74AC /* Database.cpp */; }; + 97BC6A211505F081001B74AC /* Database.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69DF1505F081001B74AC /* Database.h */; }; + 97BC6A231505F081001B74AC /* DatabaseAuthorizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69E11505F081001B74AC /* DatabaseAuthorizer.cpp */; }; + 97BC6A241505F081001B74AC /* DatabaseAuthorizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69E21505F081001B74AC /* DatabaseAuthorizer.h */; }; + 97BC6A251505F081001B74AC /* DatabaseCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69E31505F081001B74AC /* DatabaseCallback.h */; }; + 97BC6A271505F081001B74AC /* DatabaseContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69E51505F081001B74AC /* DatabaseContext.cpp */; }; + 97BC6A281505F081001B74AC /* DatabaseContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69E61505F081001B74AC /* DatabaseContext.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 97BC6A291505F081001B74AC /* DatabaseDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69E71505F081001B74AC /* DatabaseDetails.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 97BC6A2A1505F081001B74AC /* DatabaseSync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69E81505F081001B74AC /* DatabaseSync.cpp */; }; + 97BC6A2B1505F081001B74AC /* DatabaseSync.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69E91505F081001B74AC /* DatabaseSync.h */; }; + 97BC6A2D1505F081001B74AC /* DatabaseTask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69EB1505F081001B74AC /* DatabaseTask.cpp */; }; + 97BC6A2E1505F081001B74AC /* DatabaseTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69EC1505F081001B74AC /* DatabaseTask.h */; }; + 97BC6A2F1505F081001B74AC /* DatabaseThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69ED1505F081001B74AC /* DatabaseThread.cpp */; }; + 97BC6A301505F081001B74AC /* DatabaseThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69EE1505F081001B74AC /* DatabaseThread.h */; }; + 97BC6A311505F081001B74AC /* DatabaseTracker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69EF1505F081001B74AC /* DatabaseTracker.cpp */; }; + 97BC6A321505F081001B74AC /* DatabaseTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69F01505F081001B74AC /* DatabaseTracker.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 97BC6A331505F081001B74AC /* DatabaseManagerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69F11505F081001B74AC /* DatabaseManagerClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 97BC6A3B1505F081001B74AC /* SQLCallbackWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69F91505F081001B74AC /* SQLCallbackWrapper.h */; }; + 97BC6A3C1505F081001B74AC /* SQLError.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69FA1505F081001B74AC /* SQLError.h */; }; + 97BC6A3E1505F081001B74AC /* SQLException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69FC1505F081001B74AC /* SQLException.cpp */; }; + 97BC6A3F1505F081001B74AC /* SQLException.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69FD1505F081001B74AC /* SQLException.h */; }; + 97BC6A411505F081001B74AC /* SQLResultSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69FF1505F081001B74AC /* SQLResultSet.cpp */; }; + 97BC6A421505F081001B74AC /* SQLResultSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC6A001505F081001B74AC /* SQLResultSet.h */; }; + 97BC6A441505F081001B74AC /* SQLResultSetRowList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC6A021505F081001B74AC /* SQLResultSetRowList.cpp */; }; + 97BC6A451505F081001B74AC /* SQLResultSetRowList.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC6A031505F081001B74AC /* SQLResultSetRowList.h */; }; + 97BC6A471505F081001B74AC /* SQLStatement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC6A051505F081001B74AC /* SQLStatement.cpp */; }; + 97BC6A481505F081001B74AC /* SQLStatement.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC6A061505F081001B74AC /* SQLStatement.h */; }; + 97BC6A491505F081001B74AC /* SQLStatementCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC6A071505F081001B74AC /* SQLStatementCallback.h */; }; + 97BC6A4B1505F081001B74AC /* SQLStatementErrorCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC6A091505F081001B74AC /* SQLStatementErrorCallback.h */; }; + 97BC6A4D1505F081001B74AC /* SQLStatementSync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC6A0B1505F081001B74AC /* SQLStatementSync.cpp */; }; + 97BC6A4E1505F081001B74AC /* SQLStatementSync.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC6A0C1505F081001B74AC /* SQLStatementSync.h */; }; + 97BC6A4F1505F081001B74AC /* SQLTransaction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC6A0D1505F081001B74AC /* SQLTransaction.cpp */; }; + 97BC6A501505F081001B74AC /* SQLTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC6A0E1505F081001B74AC /* SQLTransaction.h */; }; + 97BC6A521505F081001B74AC /* SQLTransactionCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC6A101505F081001B74AC /* SQLTransactionCallback.h */; }; + 97BC6A541505F081001B74AC /* SQLTransactionClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC6A121505F081001B74AC /* SQLTransactionClient.cpp */; }; + 97BC6A551505F081001B74AC /* SQLTransactionClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC6A131505F081001B74AC /* SQLTransactionClient.h */; }; + 97BC6A561505F081001B74AC /* SQLTransactionCoordinator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC6A141505F081001B74AC /* SQLTransactionCoordinator.cpp */; }; + 97BC6A571505F081001B74AC /* SQLTransactionCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC6A151505F081001B74AC /* SQLTransactionCoordinator.h */; }; + 97BC6A581505F081001B74AC /* SQLTransactionErrorCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC6A161505F081001B74AC /* SQLTransactionErrorCallback.h */; }; + 97BC6A5A1505F081001B74AC /* SQLTransactionSync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC6A181505F081001B74AC /* SQLTransactionSync.cpp */; }; + 97BC6A5B1505F081001B74AC /* SQLTransactionSync.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC6A191505F081001B74AC /* SQLTransactionSync.h */; }; + 97BC6A5D1505F081001B74AC /* SQLTransactionSyncCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC6A1B1505F081001B74AC /* SQLTransactionSyncCallback.h */; }; + 97BC84831236FD93000C6161 /* TextDocumentParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC84811236FD93000C6161 /* TextDocumentParser.cpp */; }; + 97BC84841236FD93000C6161 /* TextDocumentParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC84821236FD93000C6161 /* TextDocumentParser.h */; }; + 97BC849B12370A4B000C6161 /* HTMLInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC849A12370A4B000C6161 /* HTMLInputStream.h */; }; + 97BC84A412370DC8000C6161 /* TextViewSourceParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC84A212370DC7000C6161 /* TextViewSourceParser.cpp */; }; + 97BC84A512370DC8000C6161 /* TextViewSourceParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC84A312370DC8000C6161 /* TextViewSourceParser.h */; }; + 97BC84B312371180000C6161 /* TextDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC84B112371180000C6161 /* TextDocument.cpp */; }; + 97BC84B412371180000C6161 /* TextDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC84B212371180000C6161 /* TextDocument.h */; }; + 97C078501165D5BE003A32EF /* SuffixTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 97C0784F1165D5BE003A32EF /* SuffixTree.h */; }; + 97C471DB12F925BD0086354B /* ContentSecurityPolicy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97C471D912F925BC0086354B /* ContentSecurityPolicy.cpp */; }; + 97C471DC12F925BD0086354B /* ContentSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 97C471DA12F925BD0086354B /* ContentSecurityPolicy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 97C740141603F7A10011FF2D /* FeatureObserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97C740121603F7A10011FF2D /* FeatureObserver.cpp */; }; + 97C740151603F7A10011FF2D /* FeatureObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 97C740131603F7A10011FF2D /* FeatureObserver.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 97D2AD0314B823A60093DF32 /* DOMWindowProperty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97D2AD0114B823A60093DF32 /* DOMWindowProperty.cpp */; }; + 97D2AD0414B823A60093DF32 /* DOMWindowProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 97D2AD0214B823A60093DF32 /* DOMWindowProperty.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 97DC69EC16B9F529008CFD6F /* BackgroundHTMLInputStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97DC69E916B9F50E008CFD6F /* BackgroundHTMLInputStream.cpp */; }; + 97DC69ED16B9F52C008CFD6F /* BackgroundHTMLInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 97DC69EA16B9F50E008CFD6F /* BackgroundHTMLInputStream.h */; }; + 97DCE20110807C750057D394 /* HistoryController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97DCE1FF10807C750057D394 /* HistoryController.cpp */; }; + 97DCE20210807C750057D394 /* HistoryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 97DCE20010807C750057D394 /* HistoryController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 97E4028F13A696ED00913D67 /* IconController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97E4028D13A696ED00913D67 /* IconController.cpp */; }; + 97E4029013A696ED00913D67 /* IconController.h in Headers */ = {isa = PBXBuildFile; fileRef = 97E4028E13A696ED00913D67 /* IconController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 97EF7DFE107E55B700D7C49C /* ScriptControllerBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97EF7DFD107E55B700D7C49C /* ScriptControllerBase.cpp */; }; + 97F8E665151D4A4B00D2D181 /* WorkerGlobalScopeNotifications.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97F8E661151D4A3F00D2D181 /* WorkerGlobalScopeNotifications.cpp */; }; + 97F8E666151D4A4E00D2D181 /* WorkerGlobalScopeNotifications.h in Headers */ = {isa = PBXBuildFile; fileRef = 97F8E662151D4A3F00D2D181 /* WorkerGlobalScopeNotifications.h */; }; + 9831AE4A154225C900FE2644 /* ReferrerPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 9831AE49154225A200FE2644 /* ReferrerPolicy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 984264F112D5280A000D88A4 /* LinkLoaderClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 984264EF12D5280A000D88A4 /* LinkLoaderClient.h */; }; + 985BB96D13A94058007A0B69 /* LinkRelAttribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 985BB96B13A94058007A0B69 /* LinkRelAttribute.cpp */; }; + 985BB96E13A94058007A0B69 /* LinkRelAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 985BB96C13A94058007A0B69 /* LinkRelAttribute.h */; }; + 98CE4326129E00BD005821DC /* LinkLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 98CE4325129E00BD005821DC /* LinkLoader.cpp */; }; + 98CE432A129E00E5005821DC /* LinkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 98CE4329129E00E5005821DC /* LinkLoader.h */; }; + 98EB1F951313FE0500D0E1EA /* NotImplemented.h in Headers */ = {isa = PBXBuildFile; fileRef = 98EB1F941313FE0500D0E1EA /* NotImplemented.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9A1B6F97158869C80011A8C4 /* JSDOMStringListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B6F96158869C80011A8C4 /* JSDOMStringListCustom.cpp */; }; + 9B1AB07C1648C7C40051F3F2 /* JSHTMLFormControlsCollectionCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9B1AB07B1648C7C40051F3F2 /* JSHTMLFormControlsCollectionCustom.cpp */; }; + 9B24DE8E15194B9500C59C27 /* HTMLBDIElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B24DE8C15194B9500C59C27 /* HTMLBDIElement.h */; }; + 9B2D8A7914997CCF00ECEF3E /* UndoStep.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B2D8A7814997CCF00ECEF3E /* UndoStep.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9B32CDA913DF7FA900F34D13 /* RenderedPosition.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B32CDA713DF7FA900F34D13 /* RenderedPosition.h */; }; + 9B32CDAA13DF7FA900F34D13 /* RenderedPosition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9B32CDA813DF7FA900F34D13 /* RenderedPosition.cpp */; }; + 9B375EDB14478A0100F3CAE5 /* MicroDataItemList.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B375ED914478A0100F3CAE5 /* MicroDataItemList.h */; }; + 9B3A8872145632F9003AE8F5 /* DOMDOMSettableTokenList.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B3A8871145632F9003AE8F5 /* DOMDOMSettableTokenList.h */; }; + 9B417064125662B3006B28FC /* ApplyBlockElementCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B417062125662B3006B28FC /* ApplyBlockElementCommand.h */; }; + 9B417065125662B3006B28FC /* ApplyBlockElementCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9B417063125662B3006B28FC /* ApplyBlockElementCommand.cpp */; }; + 9B6C41531344949000085B62 /* StringWithDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B6C41521344949000085B62 /* StringWithDirection.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9B7E78BD16F16CC600126914 /* HTMLTreeBuilderSimulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9B7E78BA16F16CAE00126914 /* HTMLTreeBuilderSimulator.cpp */; }; + 9B7E78BE16F16CC800126914 /* HTMLTreeBuilderSimulator.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B7E78BB16F16CAE00126914 /* HTMLTreeBuilderSimulator.h */; }; + 9BA273F4172206BB0097CE47 /* LogicalSelectionOffsetCaches.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BA273F3172206BB0097CE47 /* LogicalSelectionOffsetCaches.h */; }; + 9BAB6C6C12550631001626D4 /* EditingStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BAB6C6A12550631001626D4 /* EditingStyle.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9BAB6C6D12550631001626D4 /* EditingStyle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9BAB6C6B12550631001626D4 /* EditingStyle.cpp */; }; + 9BAF3B2412C1A39800014BF1 /* WritingDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BAF3B2312C1A39800014BF1 /* WritingDirection.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9BC6C21B13CCC97B008E0337 /* HTMLTextFormControlElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BC6C21913CCC97B008E0337 /* HTMLTextFormControlElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9BC6C21C13CCC97B008E0337 /* HTMLTextFormControlElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9BC6C21A13CCC97B008E0337 /* HTMLTextFormControlElement.cpp */; }; + 9BD0BF9312A42BF50072FD43 /* ScopedEventQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BD0BF9112A42BF50072FD43 /* ScopedEventQueue.h */; }; + 9BD0BF9412A42BF50072FD43 /* ScopedEventQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9BD0BF9212A42BF50072FD43 /* ScopedEventQueue.cpp */; }; + 9BF9A8801648DD2F001C6B23 /* JSHTMLFormControlsCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9BF9A87E1648DD2F001C6B23 /* JSHTMLFormControlsCollection.cpp */; }; + 9BF9A8811648DD2F001C6B23 /* JSHTMLFormControlsCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BF9A87F1648DD2F001C6B23 /* JSHTMLFormControlsCollection.h */; }; + 9F0D6B2E121BFEBA006C0288 /* InspectorProfilerAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9F0D6B2C121BFEBA006C0288 /* InspectorProfilerAgent.cpp */; }; + 9F0D6B2F121BFEBA006C0288 /* InspectorProfilerAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F0D6B2D121BFEBA006C0288 /* InspectorProfilerAgent.h */; }; + 9F3B947E12241758005304E7 /* ScriptHeapSnapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F3B947D12241758005304E7 /* ScriptHeapSnapshot.h */; }; + 9F6FC1961122E82A00E80196 /* ScriptDebugServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9F6FC1941122E82A00E80196 /* ScriptDebugServer.cpp */; }; + 9F6FC1971122E82A00E80196 /* ScriptDebugServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F6FC1951122E82A00E80196 /* ScriptDebugServer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9F72304F11184B4100AD0126 /* ScriptProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F72304C11184B4100AD0126 /* ScriptProfile.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9F72305011184B4100AD0126 /* ScriptProfiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9F72304D11184B4100AD0126 /* ScriptProfiler.cpp */; }; + 9F72305111184B4100AD0126 /* ScriptProfiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F72304E11184B4100AD0126 /* ScriptProfiler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9FA37EE41172FC8000C4CD55 /* ScriptProfileNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FA37EE31172FC8000C4CD55 /* ScriptProfileNode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9FA37EFA1172FDA600C4CD55 /* JSScriptProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9FA37EF61172FD9300C4CD55 /* JSScriptProfile.cpp */; }; + 9FA37EFB1172FDA600C4CD55 /* JSScriptProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FA37EF71172FD9300C4CD55 /* JSScriptProfile.h */; }; + 9FA37EFC1172FDA600C4CD55 /* JSScriptProfileNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9FA37EF81172FD9300C4CD55 /* JSScriptProfileNode.cpp */; }; + 9FA37EFD1172FDA600C4CD55 /* JSScriptProfileNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FA37EF91172FD9300C4CD55 /* JSScriptProfileNode.h */; }; + A024575116CEAA27000E5671 /* EXTDrawBuffers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A024574E16CEAA27000E5671 /* EXTDrawBuffers.cpp */; }; + A024575216CEAA27000E5671 /* EXTDrawBuffers.h in Headers */ = {isa = PBXBuildFile; fileRef = A024574F16CEAA27000E5671 /* EXTDrawBuffers.h */; }; + A07D3355152B630E001B6393 /* JSWebGLShaderPrecisionFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A07D3353152B630E001B6393 /* JSWebGLShaderPrecisionFormat.cpp */; }; + A07D3356152B630E001B6393 /* JSWebGLShaderPrecisionFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = A07D3354152B630E001B6393 /* JSWebGLShaderPrecisionFormat.h */; }; + A07D3358152B632D001B6393 /* WebGLShaderPrecisionFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = A07D3357152B632D001B6393 /* WebGLShaderPrecisionFormat.h */; }; + A08CF154152B77B3009C5775 /* WebGLShaderPrecisionFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A08CF153152B77B3009C5775 /* WebGLShaderPrecisionFormat.cpp */; }; + A0EE0DF5144F825500F80B0D /* WebGLDebugRendererInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0EE0DF1144F825500F80B0D /* WebGLDebugRendererInfo.cpp */; }; + A0EE0DF6144F825500F80B0D /* WebGLDebugRendererInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = A0EE0DF2144F825500F80B0D /* WebGLDebugRendererInfo.h */; }; + A0EE0DF7144F825500F80B0D /* WebGLDebugShaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0EE0DF3144F825500F80B0D /* WebGLDebugShaders.cpp */; }; + A0EE0DF8144F825500F80B0D /* WebGLDebugShaders.h in Headers */ = {isa = PBXBuildFile; fileRef = A0EE0DF4144F825500F80B0D /* WebGLDebugShaders.h */; }; + A104F24314C71F7A009E2C23 /* CachedSVGDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A104F24114C71F7A009E2C23 /* CachedSVGDocument.cpp */; }; + A104F24414C71F7A009E2C23 /* CachedSVGDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = A104F24214C71F7A009E2C23 /* CachedSVGDocument.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A10BB5851484E3A700B2E87A /* RenderSVGRect.h in Headers */ = {isa = PBXBuildFile; fileRef = A10BB5831484E3A700B2E87A /* RenderSVGRect.h */; }; + A10BB58B1484E3B300B2E87A /* RenderSVGShape.h in Headers */ = {isa = PBXBuildFile; fileRef = A10BB5891484E3B300B2E87A /* RenderSVGShape.h */; }; + A10DC76A14747BAB005E2471 /* StyleGridData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A10DC76814747BAB005E2471 /* StyleGridData.cpp */; }; + A10DC76B14747BAB005E2471 /* StyleGridData.h in Headers */ = {isa = PBXBuildFile; fileRef = A10DC76914747BAB005E2471 /* StyleGridData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A110DB9B14F5DF7700A03B93 /* StyleGridItemData.h in Headers */ = {isa = PBXBuildFile; fileRef = A110DB9A14F5DF7700A03B93 /* StyleGridItemData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A110DB9D14F5DF8700A03B93 /* StyleGridItemData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A110DB9C14F5DF8700A03B93 /* StyleGridItemData.cpp */; }; + A120ACA413F998CA00FE4AC7 /* LayoutRepainter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A120ACA113F9984600FE4AC7 /* LayoutRepainter.cpp */; }; + A12538D413F9B60A00024754 /* LayoutRepainter.h in Headers */ = {isa = PBXBuildFile; fileRef = A120ACA013F9983700FE4AC7 /* LayoutRepainter.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A12705C31656BD6500C2E27C /* GridPosition.h in Headers */ = {isa = PBXBuildFile; fileRef = A12705C21656BD6500C2E27C /* GridPosition.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A12A1050166444FD008FA311 /* GridTrackSize.h in Headers */ = {isa = PBXBuildFile; fileRef = A12A104E166444DC008FA311 /* GridTrackSize.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A136A00C1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A136A00A1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.cpp */; }; + A136A00D1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.h in Headers */ = {isa = PBXBuildFile; fileRef = A136A00B1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.h */; }; + A17C81220F2A5CF7005DAAEB /* HTMLElementFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A17C81200F2A5CF7005DAAEB /* HTMLElementFactory.cpp */; }; + A17C81230F2A5CF7005DAAEB /* HTMLElementFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = A17C81210F2A5CF7005DAAEB /* HTMLElementFactory.h */; }; + A1C7FAA2133A5D3500D6732D /* JSXPathResultCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1C7FAA1133A5D3500D6732D /* JSXPathResultCustom.cpp */; }; + A1E1154413015C3D0054AC8C /* DistantLightSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1E1154313015C3D0054AC8C /* DistantLightSource.cpp */; }; + A1E1154613015C4E0054AC8C /* PointLightSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1E1154513015C4E0054AC8C /* PointLightSource.cpp */; }; + A1E1154813015C5D0054AC8C /* SpotLightSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1E1154713015C5D0054AC8C /* SpotLightSource.cpp */; }; + A24BF77B15CC3BAF003191F2 /* WebKitCSSMixFunctionValue.h in Headers */ = {isa = PBXBuildFile; fileRef = A24BF77915CC3BAF003191F2 /* WebKitCSSMixFunctionValue.h */; }; + A24BF77C15CC3BAF003191F2 /* WebKitCSSMixFunctionValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A24BF77A15CC3BAF003191F2 /* WebKitCSSMixFunctionValue.cpp */; }; + A29532CF15DD5E1700469EBC /* CustomFilterValidatedProgram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A29532CD15DD5E1700469EBC /* CustomFilterValidatedProgram.cpp */; }; + A29532D015DD5E1700469EBC /* CustomFilterValidatedProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = A29532CE15DD5E1700469EBC /* CustomFilterValidatedProgram.h */; }; + A2B2AE7C16375EE500CFA50B /* CustomFilterConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = A2B2AE7B16375EE500CFA50B /* CustomFilterConstants.h */; }; + A2B9217316C5CC420041DCD9 /* IntRectExtent.h in Headers */ = {isa = PBXBuildFile; fileRef = A2B9217216C5CC420041DCD9 /* IntRectExtent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A2E8AE3016A48E1C006BB3AA /* WebKitCSSFilterRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A2E8AE2E16A48E1C006BB3AA /* WebKitCSSFilterRule.cpp */; }; + A2E8AE3116A48E1C006BB3AA /* WebKitCSSFilterRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A2E8AE2F16A48E1C006BB3AA /* WebKitCSSFilterRule.h */; }; + A2E8AE3716A49840006BB3AA /* JSWebKitCSSFilterRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A2E8AE3516A49840006BB3AA /* JSWebKitCSSFilterRule.cpp */; }; + A2E8AE3816A49840006BB3AA /* JSWebKitCSSFilterRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A2E8AE3616A49840006BB3AA /* JSWebKitCSSFilterRule.h */; }; + A2E8AE4016A498CF006BB3AA /* DOMWebKitCSSFilterRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A2E8AE3D16A498CF006BB3AA /* DOMWebKitCSSFilterRule.h */; }; + A2E8AE4116A498CF006BB3AA /* DOMWebKitCSSFilterRule.mm in Sources */ = {isa = PBXBuildFile; fileRef = A2E8AE3E16A498CF006BB3AA /* DOMWebKitCSSFilterRule.mm */; }; + A2E8AE4216A498CF006BB3AA /* DOMWebKitCSSFilterRuleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = A2E8AE3F16A498CF006BB3AA /* DOMWebKitCSSFilterRuleInternal.h */; }; + A31C4E4D16E02AA6002F7957 /* OESTextureHalfFloat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A31C4E4C16E02AA6002F7957 /* OESTextureHalfFloat.cpp */; }; + A31C4E4F16E02AB4002F7957 /* OESTextureHalfFloat.h in Headers */ = {isa = PBXBuildFile; fileRef = A31C4E4E16E02AB4002F7957 /* OESTextureHalfFloat.h */; }; + A31C4E5216E02B08002F7957 /* JSOESTextureHalfFloat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A31C4E5116E02B08002F7957 /* JSOESTextureHalfFloat.cpp */; }; + A31C4E5416E02B40002F7957 /* JSOESTextureHalfFloat.h in Headers */ = {isa = PBXBuildFile; fileRef = A31C4E5316E02B40002F7957 /* JSOESTextureHalfFloat.h */; }; + A3BB59F31457A40D00AC56FE /* DocumentEventQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A3BB59F11457A40D00AC56FE /* DocumentEventQueue.cpp */; }; + A3BB59F41457A40D00AC56FE /* DocumentEventQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = A3BB59F21457A40D00AC56FE /* DocumentEventQueue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A3E2643014748991005A8588 /* WorkerEventQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A3E2642E14748991005A8588 /* WorkerEventQueue.cpp */; }; + A3E2643114748991005A8588 /* WorkerEventQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = A3E2642F14748991005A8588 /* WorkerEventQueue.h */; }; + A409C985116D0DDD007197BD /* AccessibilityProgressIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = A409C983116D0DDD007197BD /* AccessibilityProgressIndicator.h */; }; + A4226E5A1163D667008B8397 /* JSHTMLProgressElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A4226E591163D667008B8397 /* JSHTMLProgressElement.cpp */; }; + A4226E5C1163D695008B8397 /* JSHTMLProgressElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A4226E5B1163D695008B8397 /* JSHTMLProgressElement.h */; }; + A4226E951163D73A008B8397 /* DOMHTMLProgressElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A4226E921163D73A008B8397 /* DOMHTMLProgressElement.h */; }; + A4226E961163D73A008B8397 /* DOMHTMLProgressElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = A4226E931163D73A008B8397 /* DOMHTMLProgressElement.mm */; }; + A4226E991163D7CC008B8397 /* DOMHTMLProgressElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = A4226E981163D7CC008B8397 /* DOMHTMLProgressElementInternal.h */; }; + A43BF5981149290A00C643CA /* HTMLProgressElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A43BF5961149290A00C643CA /* HTMLProgressElement.cpp */; }; + A43BF5991149290A00C643CA /* HTMLProgressElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A43BF5971149290A00C643CA /* HTMLProgressElement.h */; }; + A43BF59C1149292800C643CA /* RenderProgress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A43BF59A1149292800C643CA /* RenderProgress.cpp */; }; + A43BF59D1149292800C643CA /* RenderProgress.h in Headers */ = {isa = PBXBuildFile; fileRef = A43BF59B1149292800C643CA /* RenderProgress.h */; }; + A454424A119B3661009BE912 /* HTMLMeterElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A4544248119B3661009BE912 /* HTMLMeterElement.cpp */; }; + A454424B119B3661009BE912 /* HTMLMeterElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A4544249119B3661009BE912 /* HTMLMeterElement.h */; }; + A454424E119B3687009BE912 /* RenderMeter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A454424C119B3687009BE912 /* RenderMeter.cpp */; }; + A454424F119B3687009BE912 /* RenderMeter.h in Headers */ = {isa = PBXBuildFile; fileRef = A454424D119B3687009BE912 /* RenderMeter.h */; }; + A456FA2611AD4A830020B420 /* LabelsNodeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A456FA2411AD4A830020B420 /* LabelsNodeList.cpp */; }; + A456FA2711AD4A830020B420 /* LabelsNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = A456FA2511AD4A830020B420 /* LabelsNodeList.h */; }; + A513B3D7114B1666001C429B /* KeyEventCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = A5C974CF11485FF10066F2AB /* KeyEventCocoa.h */; }; + A513B3D8114B166A001C429B /* KeyEventCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = A5C974D011485FF10066F2AB /* KeyEventCocoa.mm */; }; + A54A82EC15228D2F00C72BA6 /* DOMNodePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = A54A82EA15228CA300C72BA6 /* DOMNodePrivate.h */; }; + A54A82F115228DF600C72BA6 /* DOMNodePrivate.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = A54A82EA15228CA300C72BA6 /* DOMNodePrivate.h */; }; + A5732B0A136A161D005C8D7C /* DateComponents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5732B08136A161D005C8D7C /* DateComponents.cpp */; }; + A5732B0B136A161D005C8D7C /* DateComponents.h in Headers */ = {isa = PBXBuildFile; fileRef = A5732B09136A161D005C8D7C /* DateComponents.h */; }; + A5ABB78713B904BC00F197E3 /* LineBreakIteratorPoolICU.h in Headers */ = {isa = PBXBuildFile; fileRef = A5ABB78613B904BC00F197E3 /* LineBreakIteratorPoolICU.h */; }; + A5AFB34F115151A700B045CB /* StepRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5AFB34D115151A700B045CB /* StepRange.cpp */; }; + A5AFB350115151A700B045CB /* StepRange.h in Headers */ = {isa = PBXBuildFile; fileRef = A5AFB34E115151A700B045CB /* StepRange.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A6148A6212E41D3A0044A784 /* DOMHTMLKeygenElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = A6148A6112E41D3A0044A784 /* DOMHTMLKeygenElementInternal.h */; }; + A6148A6712E41D940044A784 /* DOMHTMLKeygenElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A6148A6512E41D940044A784 /* DOMHTMLKeygenElement.h */; }; + A6148A6812E41D940044A784 /* DOMHTMLKeygenElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = A6148A6612E41D940044A784 /* DOMHTMLKeygenElement.mm */; }; + A6148A7812E41E3B0044A784 /* JSHTMLKeygenElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A6148A7612E41E3B0044A784 /* JSHTMLKeygenElement.cpp */; }; + A6148A7912E41E3B0044A784 /* JSHTMLKeygenElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A6148A7712E41E3B0044A784 /* JSHTMLKeygenElement.h */; }; + A622A8FF122C44A600A785B3 /* GenericBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = A622A8F9122C44A600A785B3 /* GenericBinding.h */; }; + A6D169621346B49B000EB770 /* ShadowRoot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A6D169611346B49B000EB770 /* ShadowRoot.cpp */; }; + A6D169641346B4C1000EB770 /* ShadowRoot.h in Headers */ = {isa = PBXBuildFile; fileRef = A6D169631346B4C1000EB770 /* ShadowRoot.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7151BD812F1558F005A0F64 /* TextCheckerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = A7151BD712F1558F005A0F64 /* TextCheckerClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A715E652134BBBEC00D8E713 /* ProgressShadowElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A715E650134BBBEC00D8E713 /* ProgressShadowElement.cpp */; }; + A715E653134BBBEC00D8E713 /* ProgressShadowElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A715E651134BBBEC00D8E713 /* ProgressShadowElement.h */; }; + A718760E0B2A120100A16ECE /* DragActions.h in Headers */ = {isa = PBXBuildFile; fileRef = A718760D0B2A120100A16ECE /* DragActions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A71878900B2D04AC00A16ECE /* DragControllerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = A718788F0B2D04AC00A16ECE /* DragControllerMac.mm */; }; + A7197F24175689C4007B9442 /* PageThrottler.h in Headers */ = {isa = PBXBuildFile; fileRef = A7197F23175689C4007B9442 /* PageThrottler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7197F2617568AE5007B9442 /* PageThrottler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7197F2517568AE5007B9442 /* PageThrottler.cpp */; }; + A723F77B1484CA4C008C6DBE /* PlatformExportMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = A723F77A1484CA4C008C6DBE /* PlatformExportMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A72763BF16689BFB002FCACB /* UserActionElementSet.h in Headers */ = {isa = PBXBuildFile; fileRef = A72763BE16689BFB002FCACB /* UserActionElementSet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A72B66A7169AD88D0034130C /* DOMShadowRoot.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = A7F73ED9169AD7AA00CBAA4B /* DOMShadowRoot.h */; }; + A72EA3BB1585CF55004FAA26 /* RefCountedSupplement.h in Headers */ = {isa = PBXBuildFile; fileRef = A72EA3BA1585CF55004FAA26 /* RefCountedSupplement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A73F95FE12C97BFE0031AAF9 /* RoundedRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A73F95FC12C97BFE0031AAF9 /* RoundedRect.cpp */; }; + A73F95FF12C97BFE0031AAF9 /* RoundedRect.h in Headers */ = {isa = PBXBuildFile; fileRef = A73F95FD12C97BFE0031AAF9 /* RoundedRect.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A740B59514C935AB00A77FA4 /* JSMallocStatistics.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B4EA6914C9348400C8F5BF /* JSMallocStatistics.h */; }; + A740B59714C935AF00A77FA4 /* JSMallocStatistics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7B4EA6814C9348400C8F5BF /* JSMallocStatistics.cpp */; }; + A740B5A514C935AB00A77FA4 /* JSInternalSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B4EA7914C9348400C8F5BF /* JSInternalSettings.h */; }; + A740B5A714C935AF00A77FA4 /* JSInternalSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7B4EA7814C9348400C8F5BF /* JSInternalSettings.cpp */; }; + A74BB76B13BDA86300FF7BF0 /* ExceptionCodePlaceholder.h in Headers */ = {isa = PBXBuildFile; fileRef = A74BB76A13BDA86300FF7BF0 /* ExceptionCodePlaceholder.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A74F3EF31678B24A00B05A6E /* NodeRenderingTraversal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7211F231678A54200957444 /* NodeRenderingTraversal.cpp */; }; + A74F3EF51678B24F00B05A6E /* NodeRenderingTraversal.h in Headers */ = {isa = PBXBuildFile; fileRef = A7211F241678A54200957444 /* NodeRenderingTraversal.h */; }; + A75E497610752ACB00C9B896 /* SerializedScriptValue.h in Headers */ = {isa = PBXBuildFile; fileRef = A75E497410752ACB00C9B896 /* SerializedScriptValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A75E497710752ACB00C9B896 /* SerializedScriptValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A75E497510752ACB00C9B896 /* SerializedScriptValue.cpp */; }; + A75E8B880E1DE2D6007F2481 /* FEBlend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A75E8B800E1DE2D6007F2481 /* FEBlend.cpp */; }; + A75E8B890E1DE2D6007F2481 /* FEBlend.h in Headers */ = {isa = PBXBuildFile; fileRef = A75E8B810E1DE2D6007F2481 /* FEBlend.h */; }; + A75E8B8A0E1DE2D6007F2481 /* FEColorMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A75E8B820E1DE2D6007F2481 /* FEColorMatrix.cpp */; }; + A75E8B8B0E1DE2D6007F2481 /* FEColorMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = A75E8B830E1DE2D6007F2481 /* FEColorMatrix.h */; }; + A75E8B8C0E1DE2D6007F2481 /* FEComponentTransfer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A75E8B840E1DE2D6007F2481 /* FEComponentTransfer.cpp */; }; + A75E8B8D0E1DE2D6007F2481 /* FEComponentTransfer.h in Headers */ = {isa = PBXBuildFile; fileRef = A75E8B850E1DE2D6007F2481 /* FEComponentTransfer.h */; }; + A75E8B8E0E1DE2D6007F2481 /* FEComposite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A75E8B860E1DE2D6007F2481 /* FEComposite.cpp */; }; + A75E8B8F0E1DE2D6007F2481 /* FEComposite.h in Headers */ = {isa = PBXBuildFile; fileRef = A75E8B870E1DE2D6007F2481 /* FEComposite.h */; }; + A769E96A16689D0C005D4529 /* UserActionElementSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A769E96916689D0C005D4529 /* UserActionElementSet.cpp */; }; + A76E5F7F135E0DCF00A69837 /* RenderedDocumentMarker.h in Headers */ = {isa = PBXBuildFile; fileRef = A76E5F7E135E0DCF00A69837 /* RenderedDocumentMarker.h */; }; + A77979190D6B9D0C003851B9 /* ImageData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A77979130D6B9D0C003851B9 /* ImageData.cpp */; }; + A779791A0D6B9D0C003851B9 /* ImageData.h in Headers */ = {isa = PBXBuildFile; fileRef = A77979140D6B9D0C003851B9 /* ImageData.h */; }; + A77979280D6B9E64003851B9 /* JSImageData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A77979240D6B9E64003851B9 /* JSImageData.cpp */; }; + A77979290D6B9E64003851B9 /* JSImageData.h in Headers */ = {isa = PBXBuildFile; fileRef = A77979250D6B9E64003851B9 /* JSImageData.h */; }; + A77B41A012E675A90054343D /* TextEventInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = A77B419F12E675A90054343D /* TextEventInputType.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A77D0012133B0AEB00D6658C /* TextChecking.h in Headers */ = {isa = PBXBuildFile; fileRef = A77D0011133B0AEB00D6658C /* TextChecking.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A77E1FEF14AACB6E005B7CB6 /* TreeScopeAdopter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A77E1FED14AACB6E005B7CB6 /* TreeScopeAdopter.cpp */; }; + A77E1FF014AACB6E005B7CB6 /* TreeScopeAdopter.h in Headers */ = {isa = PBXBuildFile; fileRef = A77E1FEE14AACB6E005B7CB6 /* TreeScopeAdopter.h */; }; + A781C6A713828B5D0012A62A /* DocumentMarker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A781C6A613828B5D0012A62A /* DocumentMarker.cpp */; }; + A784941B0B5FE507001E237A /* Clipboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A784941A0B5FE507001E237A /* Clipboard.cpp */; }; + A78E526F1346BD1700AD9C31 /* MeterShadowElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A78E526D1346BD1700AD9C31 /* MeterShadowElement.cpp */; }; + A78E52701346BD1700AD9C31 /* MeterShadowElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A78E526E1346BD1700AD9C31 /* MeterShadowElement.h */; }; + A78FE13B12366B1000ACE8D0 /* SpellChecker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A78FE13912366B1000ACE8D0 /* SpellChecker.cpp */; }; + A78FE13C12366B1000ACE8D0 /* SpellChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = A78FE13A12366B1000ACE8D0 /* SpellChecker.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A795463E0B5C4C80007B438F /* DragDataMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = A795463D0B5C4C80007B438F /* DragDataMac.mm */; }; + A79546430B5C4CB4007B438F /* DragData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A79546420B5C4CB4007B438F /* DragData.cpp */; }; + A79BADA1161E7F3F00C2E652 /* RuleFeature.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A79BAD9D161E7F3F00C2E652 /* RuleFeature.cpp */; }; + A79BADA2161E7F3F00C2E652 /* RuleFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = A79BAD9E161E7F3F00C2E652 /* RuleFeature.h */; }; + A79BADA3161E7F3F00C2E652 /* RuleSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A79BAD9F161E7F3F00C2E652 /* RuleSet.cpp */; }; + A79BADA4161E7F3F00C2E652 /* RuleSet.h in Headers */ = {isa = PBXBuildFile; fileRef = A79BADA0161E7F3F00C2E652 /* RuleSet.h */; }; + A7A78CD51532BA62006C21E4 /* ContainerNodeAlgorithms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7A78CD41532BA62006C21E4 /* ContainerNodeAlgorithms.cpp */; }; + A7AD2F870EC89D07008AB002 /* LinkHash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7AD2F850EC89D07008AB002 /* LinkHash.cpp */; }; + A7AD2F880EC89D07008AB002 /* LinkHash.h in Headers */ = {isa = PBXBuildFile; fileRef = A7AD2F860EC89D07008AB002 /* LinkHash.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7B070D2130A409C00A3763C /* FrameActionScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7B070D0130A409C00A3763C /* FrameActionScheduler.cpp */; }; + A7B070D3130A409C00A3763C /* FrameActionScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B070D1130A409C00A3763C /* FrameActionScheduler.h */; }; + A7B6E69F0B291A9600D0529F /* DragData.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B6E69D0B291A9600D0529F /* DragData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7B761A1161EE526002083D3 /* StyleScopeResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B7619F161EE526002083D3 /* StyleScopeResolver.h */; }; + A7BBE26611AFB3F20005EA03 /* JSHTMLMeterElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7BBE26411AFB3F20005EA03 /* JSHTMLMeterElement.cpp */; }; + A7BBE26711AFB3F20005EA03 /* JSHTMLMeterElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A7BBE26511AFB3F20005EA03 /* JSHTMLMeterElement.h */; }; + A7BF7EDF14C9175A0014489D /* InternalSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7BF7EDC14C9175A0014489D /* InternalSettings.cpp */; }; + A7BF7EE014C9175A0014489D /* InternalSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = A7BF7EDD14C9175A0014489D /* InternalSettings.h */; }; + A7C9ABF81357A3BF00F5503F /* DetailsMarkerControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7C9ABF61357A3BF00F5503F /* DetailsMarkerControl.cpp */; }; + A7C9ABF91357A3BF00F5503F /* DetailsMarkerControl.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C9ABF71357A3BF00F5503F /* DetailsMarkerControl.h */; }; + A7CA595D0B27BD9E00FA021D /* DragController.h in Headers */ = {isa = PBXBuildFile; fileRef = A7CA595B0B27BD9E00FA021D /* DragController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7CA595E0B27BD9E00FA021D /* DragController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7CA595C0B27BD9E00FA021D /* DragController.cpp */; }; + A7CA59630B27C1F200FA021D /* DragClient.h in Headers */ = {isa = PBXBuildFile; fileRef = A7CA59620B27C1F200FA021D /* DragClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7CACDB113CE875C00BBBE3F /* ExceptionCodePlaceholder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7CACDB013CE875B00BBBE3F /* ExceptionCodePlaceholder.cpp */; }; + A7CFB3D10B7ED10A0070C32D /* DragImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7CFB3CF0B7ED10A0070C32D /* DragImage.cpp */; }; + A7CFB3D20B7ED10A0070C32D /* DragImage.h in Headers */ = {isa = PBXBuildFile; fileRef = A7CFB3D00B7ED10A0070C32D /* DragImage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7CFB3D50B7ED1180070C32D /* DragImageMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = A7CFB3D40B7ED1180070C32D /* DragImageMac.mm */; }; + A7D0318E0E93540300E24ACD /* JSImageDataCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7D0318D0E93540300E24ACD /* JSImageDataCustom.cpp */; }; + A7D20F62107F406900A80392 /* JSWebGLActiveInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7D20F60107F406900A80392 /* JSWebGLActiveInfo.cpp */; }; + A7D20F63107F406900A80392 /* JSWebGLActiveInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D20F61107F406900A80392 /* JSWebGLActiveInfo.h */; }; + A7D20F6D107F438B00A80392 /* WebGLActiveInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D20F6B107F438B00A80392 /* WebGLActiveInfo.h */; }; + A7D3CA10157DF8E900860A97 /* ContextFeatures.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7D3CA0E157DF8E900860A97 /* ContextFeatures.cpp */; }; + A7D3CA11157DF8E900860A97 /* ContextFeatures.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D3CA0F157DF8E900860A97 /* ContextFeatures.h */; }; + A7D6B3490F61104500B79FD1 /* WorkerScriptLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D6B3470F61104500B79FD1 /* WorkerScriptLoader.h */; }; + A7D6B34A0F61104500B79FD1 /* WorkerScriptLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7D6B3480F61104500B79FD1 /* WorkerScriptLoader.cpp */; }; + A7DBF8DD1276919C006B6008 /* TextCheckingHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7DBF8DB1276919C006B6008 /* TextCheckingHelper.cpp */; }; + A7DBF8DE1276919C006B6008 /* TextCheckingHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = A7DBF8DC1276919C006B6008 /* TextCheckingHelper.h */; }; + A7F5D94F1384F02D00A29A87 /* NodeRenderingContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7F5D94D1384F02D00A29A87 /* NodeRenderingContext.cpp */; }; + A7F5D9501384F02D00A29A87 /* NodeRenderingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = A7F5D94E1384F02D00A29A87 /* NodeRenderingContext.h */; }; + A80A38FE0E50CC8200A25EBC /* PatternCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80A38FD0E50CC8200A25EBC /* PatternCG.cpp */; }; + A80D67080E9E9DEB00E420F0 /* GraphicsContextPlatformPrivateCG.h in Headers */ = {isa = PBXBuildFile; fileRef = A80D67070E9E9DEB00E420F0 /* GraphicsContextPlatformPrivateCG.h */; }; + A80E6CE40A1989CA007FB8C5 /* CSSValueList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CBA0A1989CA007FB8C5 /* CSSValueList.cpp */; }; + A80E6CE60A1989CA007FB8C5 /* CSSPrimitiveValue.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CBC0A1989CA007FB8C5 /* CSSPrimitiveValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A80E6CE70A1989CA007FB8C5 /* CSSFontFaceRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CBD0A1989CA007FB8C5 /* CSSFontFaceRule.cpp */; }; + A80E6CE80A1989CA007FB8C5 /* ShadowValue.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CBE0A1989CA007FB8C5 /* ShadowValue.h */; }; + A80E6CE90A1989CA007FB8C5 /* CSSValueList.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CBF0A1989CA007FB8C5 /* CSSValueList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A80E6CEB0A1989CA007FB8C5 /* CSSImportRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CC10A1989CA007FB8C5 /* CSSImportRule.cpp */; }; + A80E6CED0A1989CA007FB8C5 /* FontValue.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CC30A1989CA007FB8C5 /* FontValue.h */; }; + A80E6CEE0A1989CA007FB8C5 /* CSSValue.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CC40A1989CA007FB8C5 /* CSSValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A80E6CEF0A1989CA007FB8C5 /* CSSStyleRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CC50A1989CA007FB8C5 /* CSSStyleRule.cpp */; }; + A80E6CF00A1989CA007FB8C5 /* CSSInheritedValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CC60A1989CA007FB8C5 /* CSSInheritedValue.cpp */; }; + A80E6CF10A1989CA007FB8C5 /* FontValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CC70A1989CA007FB8C5 /* FontValue.cpp */; }; + A80E6CF20A1989CA007FB8C5 /* CSSRuleList.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CC80A1989CA007FB8C5 /* CSSRuleList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A80E6CF40A1989CA007FB8C5 /* ShadowValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CCA0A1989CA007FB8C5 /* ShadowValue.cpp */; }; + A80E6CF50A1989CA007FB8C5 /* CSSPageRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CCB0A1989CA007FB8C5 /* CSSPageRule.cpp */; }; + A80E6CF60A1989CA007FB8C5 /* CSSImportRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CCC0A1989CA007FB8C5 /* CSSImportRule.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A80E6CF70A1989CA007FB8C5 /* CSSProperty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CCD0A1989CA007FB8C5 /* CSSProperty.cpp */; }; + A80E6CF90A1989CA007FB8C5 /* CSSCharsetRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CCF0A1989CA007FB8C5 /* CSSCharsetRule.h */; }; + A80E6CFA0A1989CA007FB8C5 /* CSSImageValue.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CD00A1989CA007FB8C5 /* CSSImageValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A80E6CFB0A1989CA007FB8C5 /* Pair.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CD10A1989CA007FB8C5 /* Pair.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A80E6CFC0A1989CA007FB8C5 /* CSSMediaRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CD20A1989CA007FB8C5 /* CSSMediaRule.cpp */; }; + A80E6CFD0A1989CA007FB8C5 /* CSSFontFaceRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CD30A1989CA007FB8C5 /* CSSFontFaceRule.h */; }; + A80E6CFE0A1989CA007FB8C5 /* CSSImageValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CD40A1989CA007FB8C5 /* CSSImageValue.cpp */; }; + A80E6CFF0A1989CA007FB8C5 /* CSSProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CD50A1989CA007FB8C5 /* CSSProperty.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A80E6D000A1989CA007FB8C5 /* CSSPageRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CD60A1989CA007FB8C5 /* CSSPageRule.h */; }; + A80E6D010A1989CA007FB8C5 /* CSSInheritedValue.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CD70A1989CA007FB8C5 /* CSSInheritedValue.h */; }; + A80E6D020A1989CA007FB8C5 /* CSSInitialValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CD80A1989CA007FB8C5 /* CSSInitialValue.cpp */; }; + A80E6D030A1989CA007FB8C5 /* CSSMediaRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CD90A1989CA007FB8C5 /* CSSMediaRule.h */; }; + A80E6D040A1989CA007FB8C5 /* Counter.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CDA0A1989CA007FB8C5 /* Counter.h */; }; + A80E6D050A1989CA007FB8C5 /* CSSPrimitiveValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CDB0A1989CA007FB8C5 /* CSSPrimitiveValue.cpp */; }; + A80E6D060A1989CA007FB8C5 /* CSSRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CDC0A1989CA007FB8C5 /* CSSRule.cpp */; }; + A80E6D080A1989CA007FB8C5 /* CSSInitialValue.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CDE0A1989CA007FB8C5 /* CSSInitialValue.h */; }; + A80E6D090A1989CA007FB8C5 /* CSSRuleList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CDF0A1989CA007FB8C5 /* CSSRuleList.cpp */; }; + A80E6D0B0A1989CA007FB8C5 /* DashboardRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CE10A1989CA007FB8C5 /* DashboardRegion.h */; }; + A80E6D0C0A1989CA007FB8C5 /* CSSStyleRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CE20A1989CA007FB8C5 /* CSSStyleRule.h */; }; + A80E6D0D0A1989CA007FB8C5 /* CSSRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CE30A1989CA007FB8C5 /* CSSRule.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A80E6DFB0A199067007FB8C5 /* StylePropertySet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6DF90A199067007FB8C5 /* StylePropertySet.cpp */; }; + A80E6DFC0A199067007FB8C5 /* StylePropertySet.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6DFA0A199067007FB8C5 /* StylePropertySet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A80E6E0F0A19911C007FB8C5 /* CSSStyleDeclaration.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6E0D0A19911C007FB8C5 /* CSSStyleDeclaration.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A80E734F0A199C77007FB8C5 /* CSSSelector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E73480A199C77007FB8C5 /* CSSSelector.cpp */; }; + A80E73520A199C77007FB8C5 /* CSSSelector.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E734B0A199C77007FB8C5 /* CSSSelector.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A80E7A170A19C3D6007FB8C5 /* JSHTMLMetaElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E7A150A19C3D6007FB8C5 /* JSHTMLMetaElement.cpp */; }; + A80E7A180A19C3D6007FB8C5 /* JSHTMLMetaElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E7A160A19C3D6007FB8C5 /* JSHTMLMetaElement.h */; }; + A80E7B0C0A19D606007FB8C5 /* JSHTMLTitleElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E7B020A19D606007FB8C5 /* JSHTMLTitleElement.h */; }; + A80E7B0D0A19D606007FB8C5 /* JSHTMLLinkElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E7B030A19D606007FB8C5 /* JSHTMLLinkElement.h */; }; + A80E7B0E0A19D606007FB8C5 /* JSHTMLStyleElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E7B040A19D606007FB8C5 /* JSHTMLStyleElement.h */; }; + A80E7B0F0A19D606007FB8C5 /* JSHTMLStyleElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E7B050A19D606007FB8C5 /* JSHTMLStyleElement.cpp */; }; + A80E7B100A19D606007FB8C5 /* JSHTMLLinkElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E7B060A19D606007FB8C5 /* JSHTMLLinkElement.cpp */; }; + A80E7B110A19D606007FB8C5 /* JSHTMLBaseElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E7B070A19D606007FB8C5 /* JSHTMLBaseElement.h */; }; + A80E7B120A19D606007FB8C5 /* JSHTMLBaseElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E7B080A19D606007FB8C5 /* JSHTMLBaseElement.cpp */; }; + A80E7B130A19D606007FB8C5 /* JSHTMLTitleElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E7B090A19D606007FB8C5 /* JSHTMLTitleElement.cpp */; }; + A80E7B140A19D606007FB8C5 /* JSHTMLHeadElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E7B0A0A19D606007FB8C5 /* JSHTMLHeadElement.cpp */; }; + A80E7B150A19D606007FB8C5 /* JSHTMLHeadElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E7B0B0A19D606007FB8C5 /* JSHTMLHeadElement.h */; }; + A80E7E970A1A83E3007FB8C5 /* JSHTMLInputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E7E8D0A1A83E3007FB8C5 /* JSHTMLInputElement.h */; }; + A80E7E980A1A83E3007FB8C5 /* JSHTMLInputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E7E8E0A1A83E3007FB8C5 /* JSHTMLInputElement.cpp */; }; + A80E7E990A1A83E3007FB8C5 /* JSHTMLOptionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E7E8F0A1A83E3007FB8C5 /* JSHTMLOptionElement.h */; }; + A80E7E9A0A1A83E3007FB8C5 /* JSHTMLOptionElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E7E900A1A83E3007FB8C5 /* JSHTMLOptionElement.cpp */; }; + A80E7E9B0A1A83E3007FB8C5 /* JSHTMLOptGroupElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E7E910A1A83E3007FB8C5 /* JSHTMLOptGroupElement.h */; }; + A80E7E9C0A1A83E3007FB8C5 /* JSHTMLOptGroupElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E7E920A1A83E3007FB8C5 /* JSHTMLOptGroupElement.cpp */; }; + A80E7E9D0A1A83E3007FB8C5 /* JSHTMLTextAreaElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E7E930A1A83E3007FB8C5 /* JSHTMLTextAreaElement.h */; }; + A80E7E9E0A1A83E3007FB8C5 /* JSHTMLTextAreaElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E7E940A1A83E3007FB8C5 /* JSHTMLTextAreaElement.cpp */; }; + A80E7E9F0A1A83E3007FB8C5 /* JSHTMLButtonElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E7E950A1A83E3007FB8C5 /* JSHTMLButtonElement.h */; }; + A80E7EA00A1A83E3007FB8C5 /* JSHTMLButtonElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E7E960A1A83E3007FB8C5 /* JSHTMLButtonElement.cpp */; }; + A81369CC097374F600D74463 /* HTMLInputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A81369B0097374F500D74463 /* HTMLInputElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A81369CD097374F600D74463 /* HTMLInputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A81369B1097374F500D74463 /* HTMLInputElement.cpp */; }; + A81369CE097374F600D74463 /* HTMLFormControlElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A81369B2097374F500D74463 /* HTMLFormControlElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A81369CF097374F600D74463 /* HTMLFormControlElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A81369B3097374F500D74463 /* HTMLFormControlElement.cpp */; }; + A81369D0097374F600D74463 /* HTMLFormElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A81369B4097374F500D74463 /* HTMLFormElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A81369D1097374F600D74463 /* HTMLFormElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A81369B5097374F500D74463 /* HTMLFormElement.cpp */; }; + A81369D2097374F600D74463 /* HTMLButtonElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A81369B6097374F500D74463 /* HTMLButtonElement.h */; }; + A81369D3097374F600D74463 /* HTMLButtonElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A81369B7097374F500D74463 /* HTMLButtonElement.cpp */; }; + A81369D4097374F600D74463 /* HTMLFieldSetElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A81369B8097374F500D74463 /* HTMLFieldSetElement.h */; }; + A81369D5097374F600D74463 /* HTMLFieldSetElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A81369B9097374F500D74463 /* HTMLFieldSetElement.cpp */; }; + A81369D6097374F600D74463 /* HTMLTextAreaElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A81369BA097374F500D74463 /* HTMLTextAreaElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A81369D7097374F600D74463 /* HTMLTextAreaElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A81369BB097374F500D74463 /* HTMLTextAreaElement.cpp */; }; + A81369D8097374F600D74463 /* HTMLSelectElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A81369BC097374F500D74463 /* HTMLSelectElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A81369D9097374F600D74463 /* HTMLSelectElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A81369BD097374F500D74463 /* HTMLSelectElement.cpp */; }; + A81369DA097374F600D74463 /* HTMLOptionsCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = A81369BE097374F500D74463 /* HTMLOptionsCollection.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A81369DC097374F600D74463 /* HTMLOptionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A81369C0097374F500D74463 /* HTMLOptionElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A81369DD097374F600D74463 /* HTMLOptionElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A81369C1097374F500D74463 /* HTMLOptionElement.cpp */; }; + A81369DE097374F600D74463 /* HTMLOptGroupElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A81369C2097374F500D74463 /* HTMLOptGroupElement.h */; }; + A81369DF097374F600D74463 /* HTMLOptGroupElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A81369C3097374F500D74463 /* HTMLOptGroupElement.cpp */; }; + A81369E0097374F600D74463 /* HTMLLegendElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A81369C4097374F500D74463 /* HTMLLegendElement.h */; }; + A81369E1097374F600D74463 /* HTMLLegendElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A81369C5097374F500D74463 /* HTMLLegendElement.cpp */; }; + A81369E2097374F600D74463 /* HTMLLabelElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A81369C6097374F500D74463 /* HTMLLabelElement.h */; }; + A81369E3097374F600D74463 /* HTMLLabelElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A81369C7097374F500D74463 /* HTMLLabelElement.cpp */; }; + A81369E4097374F600D74463 /* HTMLKeygenElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A81369C8097374F500D74463 /* HTMLKeygenElement.h */; }; + A81369E5097374F600D74463 /* HTMLKeygenElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A81369C9097374F600D74463 /* HTMLKeygenElement.cpp */; }; + A8136D380973A8E700D74463 /* FormDataList.h in Headers */ = {isa = PBXBuildFile; fileRef = A8136D360973A8E700D74463 /* FormDataList.h */; }; + A8136D390973A8E700D74463 /* FormDataList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8136D370973A8E700D74463 /* FormDataList.cpp */; }; + A8185F3909765766005826D9 /* DocumentType.h in Headers */ = {isa = PBXBuildFile; fileRef = A8185F3109765765005826D9 /* DocumentType.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8185F3A09765766005826D9 /* DocumentType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8185F3209765765005826D9 /* DocumentType.cpp */; }; + A8185F3B09765766005826D9 /* DOMImplementation.h in Headers */ = {isa = PBXBuildFile; fileRef = A8185F3309765765005826D9 /* DOMImplementation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8185F3C09765766005826D9 /* Document.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8185F3409765765005826D9 /* Document.cpp */; }; + A8185F3D09765766005826D9 /* DocumentFragment.h in Headers */ = {isa = PBXBuildFile; fileRef = A8185F3509765765005826D9 /* DocumentFragment.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8185F3E09765766005826D9 /* DOMImplementation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8185F3609765765005826D9 /* DOMImplementation.cpp */; }; + A8185F3F09765766005826D9 /* DocumentFragment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8185F3709765765005826D9 /* DocumentFragment.cpp */; }; + A8185F4009765766005826D9 /* Document.h in Headers */ = {isa = PBXBuildFile; fileRef = A8185F3809765765005826D9 /* Document.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A818721B0977D3C0005826D9 /* NodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = A81872100977D3C0005826D9 /* NodeList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A818721C0977D3C0005826D9 /* ContainerNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A81872110977D3C0005826D9 /* ContainerNode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A818721E0977D3C0005826D9 /* NameNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = A81872130977D3C0005826D9 /* NameNodeList.h */; }; + A818721F0977D3C0005826D9 /* ContainerNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A81872140977D3C0005826D9 /* ContainerNode.cpp */; }; + A81872200977D3C0005826D9 /* ChildNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = A81872150977D3C0005826D9 /* ChildNodeList.h */; }; + A81872230977D3C0005826D9 /* NamedNodeMap.h in Headers */ = {isa = PBXBuildFile; fileRef = A81872180977D3C0005826D9 /* NamedNodeMap.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A81872240977D3C0005826D9 /* NameNodeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A81872190977D3C0005826D9 /* NameNodeList.cpp */; }; + A81872250977D3C0005826D9 /* ChildNodeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A818721A0977D3C0005826D9 /* ChildNodeList.cpp */; }; + A8239E0009B3CF8A00B60641 /* Logging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8239DFE09B3CF8A00B60641 /* Logging.cpp */; }; + A8239E0109B3CF8A00B60641 /* Logging.h in Headers */ = {isa = PBXBuildFile; fileRef = A8239DFF09B3CF8A00B60641 /* Logging.h */; settings = {ATTRIBUTES = (); }; }; + A824B4650E2EF2EA0081A7B7 /* TextRun.h in Headers */ = {isa = PBXBuildFile; fileRef = A824B4640E2EF2EA0081A7B7 /* TextRun.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A833C7CA0A2CF06B00D57664 /* SVGNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 656581E809D1508D000E61D7 /* SVGNames.cpp */; }; + A833C7CC0A2CF07400D57664 /* XLinkNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 656581EA09D1508D000E61D7 /* XLinkNames.cpp */; }; + A833C80C0A2CF25600D57664 /* XMLNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A833C80A0A2CF25600D57664 /* XMLNames.cpp */; }; + A833C80D0A2CF25600D57664 /* XMLNames.h in Headers */ = {isa = PBXBuildFile; fileRef = A833C80B0A2CF25600D57664 /* XMLNames.h */; }; + A833C8520A2CF52800D57664 /* SVGElementFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 656581E609D1508D000E61D7 /* SVGElementFactory.cpp */; }; + A83B78FC0CCAFF15000B0825 /* JSSVGFontFaceUriElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A83B78F20CCAFF15000B0825 /* JSSVGFontFaceUriElement.h */; }; + A83B78FD0CCAFF15000B0825 /* JSSVGFontFaceUriElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A83B78F30CCAFF15000B0825 /* JSSVGFontFaceUriElement.cpp */; }; + A83B78FE0CCAFF15000B0825 /* JSSVGFontFaceSrcElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A83B78F40CCAFF15000B0825 /* JSSVGFontFaceSrcElement.h */; }; + A83B78FF0CCAFF15000B0825 /* JSSVGFontFaceSrcElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A83B78F50CCAFF15000B0825 /* JSSVGFontFaceSrcElement.cpp */; }; + A83B79000CCAFF15000B0825 /* JSSVGFontFaceFormatElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A83B78F60CCAFF15000B0825 /* JSSVGFontFaceFormatElement.h */; }; + A83B79010CCAFF15000B0825 /* JSSVGFontFaceFormatElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A83B78F70CCAFF15000B0825 /* JSSVGFontFaceFormatElement.cpp */; }; + A83B79020CCAFF15000B0825 /* JSSVGFontFaceNameElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A83B78F80CCAFF15000B0825 /* JSSVGFontFaceNameElement.h */; }; + A83B79030CCAFF15000B0825 /* JSSVGFontFaceNameElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A83B78F90CCAFF15000B0825 /* JSSVGFontFaceNameElement.cpp */; }; + A83B79040CCAFF15000B0825 /* JSSVGFontFaceElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A83B78FA0CCAFF15000B0825 /* JSSVGFontFaceElement.cpp */; }; + A83B79050CCAFF15000B0825 /* JSSVGFontFaceElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A83B78FB0CCAFF15000B0825 /* JSSVGFontFaceElement.h */; }; + A83E1C740E49042C00140B9C /* ScriptControllerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = A83E1C720E49042B00140B9C /* ScriptControllerMac.mm */; }; + A84D827C11D333ED00972990 /* RawDataDocumentParser.h in Headers */ = {isa = PBXBuildFile; fileRef = A84D827B11D333ED00972990 /* RawDataDocumentParser.h */; }; + A84D82C111D3474800972990 /* ScriptableDocumentParser.h in Headers */ = {isa = PBXBuildFile; fileRef = A84D82BF11D3474800972990 /* ScriptableDocumentParser.h */; }; + A84D82C211D3474800972990 /* ScriptableDocumentParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A84D82C011D3474800972990 /* ScriptableDocumentParser.cpp */; }; + A84EBD780CB8C89200079609 /* JSStyleSheetListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A84EBD770CB8C89200079609 /* JSStyleSheetListCustom.cpp */; }; + A84EBD830CB8C97700079609 /* JSStyleSheetList.h in Headers */ = {isa = PBXBuildFile; fileRef = A84EBD810CB8C97700079609 /* JSStyleSheetList.h */; }; + A84EBD840CB8C97700079609 /* JSStyleSheetList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A84EBD820CB8C97700079609 /* JSStyleSheetList.cpp */; }; + A853123D11D0471B00D4D077 /* FragmentScriptingPermission.h in Headers */ = {isa = PBXBuildFile; fileRef = A853123C11D0471B00D4D077 /* FragmentScriptingPermission.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A85F22091430377D007CC884 /* JSPopStateEventCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A85F22081430377D007CC884 /* JSPopStateEventCustom.cpp */; }; + A863E2011343412000274926 /* UnicodeBidi.h in Headers */ = {isa = PBXBuildFile; fileRef = A863E2001343412000274926 /* UnicodeBidi.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A86629CF09DA2B47009633A5 /* JSUIEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = A86629C909DA2B47009633A5 /* JSUIEvent.h */; }; + A86629D009DA2B48009633A5 /* JSUIEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A86629CA09DA2B47009633A5 /* JSUIEvent.cpp */; }; + A86629D109DA2B48009633A5 /* JSMouseEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = A86629CB09DA2B47009633A5 /* JSMouseEvent.h */; }; + A86629D209DA2B48009633A5 /* JSMouseEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A86629CC09DA2B47009633A5 /* JSMouseEvent.cpp */; }; + A86629D309DA2B48009633A5 /* JSKeyboardEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = A86629CD09DA2B47009633A5 /* JSKeyboardEvent.h */; }; + A86629D409DA2B48009633A5 /* JSKeyboardEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A86629CE09DA2B47009633A5 /* JSKeyboardEvent.cpp */; }; + A871D4560A127CBC00B12A68 /* HTMLPlugInElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871D44C0A127CBC00B12A68 /* HTMLPlugInElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A871D4570A127CBC00B12A68 /* HTMLPlugInElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871D44D0A127CBC00B12A68 /* HTMLPlugInElement.cpp */; }; + A871D4580A127CBC00B12A68 /* HTMLParamElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871D44E0A127CBC00B12A68 /* HTMLParamElement.h */; }; + A871D4590A127CBC00B12A68 /* HTMLParamElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871D44F0A127CBC00B12A68 /* HTMLParamElement.cpp */; }; + A871D45A0A127CBC00B12A68 /* HTMLObjectElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871D4500A127CBC00B12A68 /* HTMLObjectElement.h */; }; + A871D45B0A127CBC00B12A68 /* HTMLObjectElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871D4510A127CBC00B12A68 /* HTMLObjectElement.cpp */; }; + A871D45C0A127CBC00B12A68 /* HTMLEmbedElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871D4520A127CBC00B12A68 /* HTMLEmbedElement.h */; }; + A871D45D0A127CBC00B12A68 /* HTMLAppletElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871D4530A127CBC00B12A68 /* HTMLAppletElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A871D45E0A127CBC00B12A68 /* HTMLAppletElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871D4540A127CBC00B12A68 /* HTMLAppletElement.cpp */; }; + A871D45F0A127CBC00B12A68 /* HTMLEmbedElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871D4550A127CBC00B12A68 /* HTMLEmbedElement.cpp */; }; + A871DB250A150BD600B12A68 /* HTMLTableSectionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DB170A150BD600B12A68 /* HTMLTableSectionElement.h */; }; + A871DB260A150BD600B12A68 /* HTMLTableSectionElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DB180A150BD600B12A68 /* HTMLTableSectionElement.cpp */; }; + A871DB270A150BD600B12A68 /* HTMLTableElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DB190A150BD600B12A68 /* HTMLTableElement.h */; }; + A871DB280A150BD600B12A68 /* HTMLTableElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DB1A0A150BD600B12A68 /* HTMLTableElement.cpp */; }; + A871DB290A150BD600B12A68 /* HTMLTableColElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DB1B0A150BD600B12A68 /* HTMLTableColElement.cpp */; }; + A871DB2A0A150BD600B12A68 /* HTMLTableCellElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DB1C0A150BD600B12A68 /* HTMLTableCellElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A871DB2B0A150BD600B12A68 /* HTMLTableCaptionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DB1D0A150BD600B12A68 /* HTMLTableCaptionElement.h */; }; + A871DB2C0A150BD600B12A68 /* HTMLTablePartElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DB1E0A150BD600B12A68 /* HTMLTablePartElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A871DB2D0A150BD600B12A68 /* HTMLTablePartElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DB1F0A150BD600B12A68 /* HTMLTablePartElement.cpp */; }; + A871DB2E0A150BD600B12A68 /* HTMLTableCellElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DB200A150BD600B12A68 /* HTMLTableCellElement.cpp */; }; + A871DB2F0A150BD600B12A68 /* HTMLTableColElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DB210A150BD600B12A68 /* HTMLTableColElement.h */; }; + A871DB300A150BD600B12A68 /* HTMLTableRowElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DB220A150BD600B12A68 /* HTMLTableRowElement.cpp */; }; + A871DB310A150BD600B12A68 /* HTMLTableRowElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DB230A150BD600B12A68 /* HTMLTableRowElement.h */; }; + A871DB320A150BD600B12A68 /* HTMLTableCaptionElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DB240A150BD600B12A68 /* HTMLTableCaptionElement.cpp */; }; + A871DC1F0A15205700B12A68 /* HTMLBaseElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DC130A15205700B12A68 /* HTMLBaseElement.h */; }; + A871DC200A15205700B12A68 /* HTMLLinkElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DC140A15205700B12A68 /* HTMLLinkElement.h */; }; + A871DC210A15205700B12A68 /* HTMLLinkElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DC150A15205700B12A68 /* HTMLLinkElement.cpp */; }; + A871DC220A15205700B12A68 /* HTMLScriptElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DC160A15205700B12A68 /* HTMLScriptElement.cpp */; }; + A871DC230A15205700B12A68 /* HTMLStyleElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DC170A15205700B12A68 /* HTMLStyleElement.h */; }; + A871DC240A15205700B12A68 /* HTMLMetaElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DC180A15205700B12A68 /* HTMLMetaElement.h */; }; + A871DC250A15205700B12A68 /* HTMLScriptElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DC190A15205700B12A68 /* HTMLScriptElement.h */; }; + A871DC260A15205700B12A68 /* HTMLStyleElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DC1A0A15205700B12A68 /* HTMLStyleElement.cpp */; }; + A871DC270A15205700B12A68 /* HTMLMetaElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DC1B0A15205700B12A68 /* HTMLMetaElement.cpp */; }; + A871DC280A15205700B12A68 /* HTMLTitleElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DC1C0A15205700B12A68 /* HTMLTitleElement.h */; }; + A871DC290A15205700B12A68 /* HTMLTitleElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DC1D0A15205700B12A68 /* HTMLTitleElement.cpp */; }; + A871DC2A0A15205700B12A68 /* HTMLBaseElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DC1E0A15205700B12A68 /* HTMLBaseElement.cpp */; }; + A871DE230A152AC800B12A68 /* HTMLFrameElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DE170A152AC800B12A68 /* HTMLFrameElement.cpp */; }; + A871DE240A152AC800B12A68 /* HTMLIFrameElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DE180A152AC800B12A68 /* HTMLIFrameElement.cpp */; }; + A871DE250A152AC800B12A68 /* HTMLHeadElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DE190A152AC800B12A68 /* HTMLHeadElement.cpp */; }; + A871DE260A152AC800B12A68 /* HTMLHtmlElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DE1A0A152AC800B12A68 /* HTMLHtmlElement.cpp */; }; + A871DE270A152AC800B12A68 /* HTMLHtmlElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DE1B0A152AC800B12A68 /* HTMLHtmlElement.h */; }; + A871DE280A152AC800B12A68 /* HTMLFrameSetElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DE1C0A152AC800B12A68 /* HTMLFrameSetElement.h */; }; + A871DE290A152AC800B12A68 /* HTMLBodyElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DE1D0A152AC800B12A68 /* HTMLBodyElement.cpp */; }; + A871DE2A0A152AC800B12A68 /* HTMLIFrameElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DE1E0A152AC800B12A68 /* HTMLIFrameElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A871DE2B0A152AC800B12A68 /* HTMLFrameElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DE1F0A152AC800B12A68 /* HTMLFrameElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A871DE2C0A152AC800B12A68 /* HTMLBodyElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DE200A152AC800B12A68 /* HTMLBodyElement.h */; }; + A871DE2D0A152AC800B12A68 /* HTMLHeadElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DE210A152AC800B12A68 /* HTMLHeadElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A871DE2E0A152AC800B12A68 /* HTMLFrameSetElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DE220A152AC800B12A68 /* HTMLFrameSetElement.cpp */; }; + A871DED00A1530C700B12A68 /* RenderPart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DEC80A1530C700B12A68 /* RenderPart.cpp */; }; + A871DED10A1530C700B12A68 /* RenderFrameSet.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DEC90A1530C700B12A68 /* RenderFrameSet.h */; }; + A871DED20A1530C700B12A68 /* RenderFrameSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DECA0A1530C700B12A68 /* RenderFrameSet.cpp */; }; + A871DED30A1530C700B12A68 /* RenderFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DECB0A1530C700B12A68 /* RenderFrame.h */; }; + A871DED40A1530C700B12A68 /* RenderFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DECC0A1530C700B12A68 /* RenderFrame.cpp */; }; + A871DED70A1530C700B12A68 /* RenderPart.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DECF0A1530C700B12A68 /* RenderPart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A871DFE20A15376B00B12A68 /* RenderReplaced.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DFDE0A15376B00B12A68 /* RenderReplaced.cpp */; }; + A871DFE30A15376B00B12A68 /* RenderReplaced.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DFDF0A15376B00B12A68 /* RenderReplaced.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A871DFE40A15376B00B12A68 /* RenderWidget.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DFE00A15376B00B12A68 /* RenderWidget.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A871DFE50A15376B00B12A68 /* RenderWidget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DFE10A15376B00B12A68 /* RenderWidget.cpp */; }; + A8748BE012CBF2DC001FBA41 /* HashTools.h in Headers */ = {isa = PBXBuildFile; fileRef = A8748BDF12CBF2DC001FBA41 /* HashTools.h */; }; + A882DA201593846A000115ED /* CSSToStyleMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A882DA1F1593846A000115ED /* CSSToStyleMap.cpp */; }; + A882DA231593848D000115ED /* CSSToStyleMap.h in Headers */ = {isa = PBXBuildFile; fileRef = A882DA221593848D000115ED /* CSSToStyleMap.h */; }; + A883DF270F3D045D00F19BF6 /* VisibleSelection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A883DF250F3D045D00F19BF6 /* VisibleSelection.cpp */; }; + A883DF280F3D045D00F19BF6 /* VisibleSelection.h in Headers */ = {isa = PBXBuildFile; fileRef = A883DF260F3D045D00F19BF6 /* VisibleSelection.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A88AD52F09524B92001DD196 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A85D7A2F0879EBA9006A9172 /* QuartzCore.framework */; }; + A88DD4870B4629A300C02990 /* PathTraversalState.h in Headers */ = {isa = PBXBuildFile; fileRef = A88DD4860B4629A300C02990 /* PathTraversalState.h */; }; + A88DD4890B4629B000C02990 /* PathTraversalState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A88DD4880B4629B000C02990 /* PathTraversalState.cpp */; }; + A89570A016E9BD5900184E55 /* HTMLIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = A895709E16E9BD5900184E55 /* HTMLIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A89943280B42338800D7C802 /* BitmapImage.h in Headers */ = {isa = PBXBuildFile; fileRef = A89943260B42338700D7C802 /* BitmapImage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A89943290B42338800D7C802 /* BitmapImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A89943270B42338700D7C802 /* BitmapImage.cpp */; }; + A89CCC520F44E98100B5DA10 /* ReplaceNodeWithSpanCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A89CCC500F44E98100B5DA10 /* ReplaceNodeWithSpanCommand.cpp */; }; + A89CCC530F44E98100B5DA10 /* ReplaceNodeWithSpanCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = A89CCC510F44E98100B5DA10 /* ReplaceNodeWithSpanCommand.h */; }; + A8BC04921214F69600B5F122 /* HTMLEntityTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8BC04911214F69600B5F122 /* HTMLEntityTable.cpp */; }; + A8C2280E11D4A59700D5A7D3 /* DocumentParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8C2280D11D4A59700D5A7D3 /* DocumentParser.cpp */; }; + A8C228A111D5722E00D5A7D3 /* DecodedDataDocumentParser.h in Headers */ = {isa = PBXBuildFile; fileRef = A8C2289F11D5722E00D5A7D3 /* DecodedDataDocumentParser.h */; }; + A8C228A211D5722E00D5A7D3 /* DecodedDataDocumentParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8C228A011D5722E00D5A7D3 /* DecodedDataDocumentParser.cpp */; }; + A8C402931348B2220063F1E5 /* BidiRunList.h in Headers */ = {isa = PBXBuildFile; fileRef = A8C402921348B2220063F1E5 /* BidiRunList.h */; }; + A8C4A7FD09D563270003AC8D /* StyledElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8C4A7EB09D563270003AC8D /* StyledElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8C4A7FE09D563270003AC8D /* StyledElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8C4A7EC09D563270003AC8D /* StyledElement.cpp */; }; + A8C4A80009D563270003AC8D /* Node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8C4A7EE09D563270003AC8D /* Node.cpp */; }; + A8C4A80709D563270003AC8D /* Element.h in Headers */ = {isa = PBXBuildFile; fileRef = A8C4A7F509D563270003AC8D /* Element.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8C4A80809D563270003AC8D /* Element.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8C4A7F609D563270003AC8D /* Element.cpp */; }; + A8C4A80B09D563270003AC8D /* Attribute.h in Headers */ = {isa = PBXBuildFile; fileRef = A8C4A7F909D563270003AC8D /* Attribute.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8C4A80D09D563270003AC8D /* Attr.h in Headers */ = {isa = PBXBuildFile; fileRef = A8C4A7FB09D563270003AC8D /* Attr.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8C4A80E09D563270003AC8D /* Attr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8C4A7FC09D563270003AC8D /* Attr.cpp */; }; + A8CB413E0E8633FD0032C4F0 /* DashArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CB41020E85B8A50032C4F0 /* DashArray.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8CCBB48151F831600AB7CE9 /* DOMWindowWebDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8CCBB46151F831600AB7CE9 /* DOMWindowWebDatabase.cpp */; }; + A8CCBB49151F831600AB7CE9 /* DOMWindowWebDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CCBB47151F831600AB7CE9 /* DOMWindowWebDatabase.h */; }; + A8CCBB4C151F833B00AB7CE9 /* WorkerGlobalScopeWebDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8CCBB4A151F833B00AB7CE9 /* WorkerGlobalScopeWebDatabase.cpp */; }; + A8CCBB4D151F833B00AB7CE9 /* WorkerGlobalScopeWebDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CCBB4B151F833B00AB7CE9 /* WorkerGlobalScopeWebDatabase.h */; }; + A8CFF04D0A154F09000A4234 /* FixedTableLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8CFF0480A154F09000A4234 /* FixedTableLayout.cpp */; }; + A8CFF04E0A154F09000A4234 /* AutoTableLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CFF0490A154F09000A4234 /* AutoTableLayout.h */; }; + A8CFF04F0A154F09000A4234 /* FixedTableLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CFF04A0A154F09000A4234 /* FixedTableLayout.h */; }; + A8CFF0500A154F09000A4234 /* AutoTableLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8CFF04B0A154F09000A4234 /* AutoTableLayout.cpp */; }; + A8CFF0510A154F09000A4234 /* TableLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CFF04C0A154F09000A4234 /* TableLayout.h */; }; + A8CFF5E10A155A05000A4234 /* RootInlineBox.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CFF5DA0A155A05000A4234 /* RootInlineBox.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8CFF5E30A155A05000A4234 /* InlineFlowBox.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CFF5DC0A155A05000A4234 /* InlineFlowBox.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8CFF5E40A155A05000A4234 /* InlineFlowBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8CFF5DD0A155A05000A4234 /* InlineFlowBox.cpp */; }; + A8CFF5E50A155A05000A4234 /* InlineBox.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CFF5DE0A155A05000A4234 /* InlineBox.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8CFF5E60A155A05000A4234 /* InlineBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8CFF5DF0A155A05000A4234 /* InlineBox.cpp */; }; + A8CFF5E70A155A05000A4234 /* RootInlineBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8CFF5E00A155A05000A4234 /* RootInlineBox.cpp */; }; + A8CFF6BE0A156118000A4234 /* EllipsisBox.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CFF6BD0A156118000A4234 /* EllipsisBox.h */; }; + A8CFF6CB0A1561CD000A4234 /* EllipsisBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8CFF6CA0A1561CD000A4234 /* EllipsisBox.cpp */; }; + A8CFF7A20A156978000A4234 /* HTMLFontElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8CFF7980A156978000A4234 /* HTMLFontElement.cpp */; }; + A8CFF7A30A156978000A4234 /* HTMLQuoteElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CFF7990A156978000A4234 /* HTMLQuoteElement.h */; }; + A8CFF7A40A156978000A4234 /* HTMLAnchorElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8CFF79A0A156978000A4234 /* HTMLAnchorElement.cpp */; }; + A8CFF7A50A156978000A4234 /* HTMLQuoteElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8CFF79B0A156978000A4234 /* HTMLQuoteElement.cpp */; }; + A8CFF7A60A156978000A4234 /* HTMLFontElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CFF79C0A156978000A4234 /* HTMLFontElement.h */; }; + A8CFF7A70A156978000A4234 /* HTMLModElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CFF79D0A156978000A4234 /* HTMLModElement.h */; }; + A8CFF7A80A156978000A4234 /* HTMLBRElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8CFF79E0A156978000A4234 /* HTMLBRElement.cpp */; }; + A8CFF7A90A156978000A4234 /* HTMLModElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8CFF79F0A156978000A4234 /* HTMLModElement.cpp */; }; + A8CFF7AA0A156978000A4234 /* HTMLBRElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CFF7A00A156978000A4234 /* HTMLBRElement.h */; }; + A8CFF7AB0A156978000A4234 /* HTMLAnchorElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CFF7A10A156978000A4234 /* HTMLAnchorElement.h */; }; + A8D05FA70A23B301005E7203 /* JSCSSRuleList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8D05FA50A23B301005E7203 /* JSCSSRuleList.cpp */; }; + A8D05FA80A23B301005E7203 /* JSCSSRuleList.h in Headers */ = {isa = PBXBuildFile; fileRef = A8D05FA60A23B301005E7203 /* JSCSSRuleList.h */; }; + A8D05FAB0A23B30F005E7203 /* JSCSSValueList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8D05FA90A23B30F005E7203 /* JSCSSValueList.cpp */; }; + A8D05FAC0A23B30F005E7203 /* JSCSSValueList.h in Headers */ = {isa = PBXBuildFile; fileRef = A8D05FAA0A23B30F005E7203 /* JSCSSValueList.h */; }; + A8D064FB0A23C0CC005E7203 /* JSHTMLFormElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8D064F90A23C0CC005E7203 /* JSHTMLFormElement.cpp */; }; + A8D064FC0A23C0CC005E7203 /* JSHTMLFormElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8D064FA0A23C0CC005E7203 /* JSHTMLFormElement.h */; }; + A8D065AE0A2446CD005E7203 /* JSHTMLFormElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8D065AD0A2446CD005E7203 /* JSHTMLFormElementCustom.cpp */; }; + A8D06B390A265DCD005E7203 /* HTMLNames.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = A8D06B370A265DCD005E7203 /* HTMLNames.h */; settings = {ATTRIBUTES = (); }; }; + A8D06B3A0A265DCD005E7203 /* HTMLNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8D06B380A265DCD005E7203 /* HTMLNames.cpp */; }; + A8D223FD16B52E4E00157288 /* HTMLResourcePreloader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8D223FB16B52E4E00157288 /* HTMLResourcePreloader.cpp */; }; + A8D223FE16B52E4E00157288 /* HTMLResourcePreloader.h in Headers */ = {isa = PBXBuildFile; fileRef = A8D223FC16B52E4E00157288 /* HTMLResourcePreloader.h */; }; + A8DF3FCE097FA0FC0052981B /* HTMLFormControlsCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = A8DF3FC6097FA0FB0052981B /* HTMLFormControlsCollection.h */; }; + A8DF3FCF097FA0FC0052981B /* HTMLFormControlsCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8DF3FC7097FA0FB0052981B /* HTMLFormControlsCollection.cpp */; }; + A8DF3FD0097FA0FC0052981B /* HTMLCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = A8DF3FC8097FA0FB0052981B /* HTMLCollection.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8DF3FD1097FA0FC0052981B /* HTMLCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8DF3FC9097FA0FB0052981B /* HTMLCollection.cpp */; }; + A8DF3FD2097FA0FC0052981B /* HTMLBaseFontElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8DF3FCA097FA0FB0052981B /* HTMLBaseFontElement.h */; }; + A8DF3FD3097FA0FC0052981B /* HTMLBaseFontElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8DF3FCB097FA0FB0052981B /* HTMLBaseFontElement.cpp */; }; + A8DF3FD4097FA0FC0052981B /* HTMLNameCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = A8DF3FCC097FA0FB0052981B /* HTMLNameCollection.h */; }; + A8DF3FD5097FA0FC0052981B /* HTMLNameCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8DF3FCD097FA0FB0052981B /* HTMLNameCollection.cpp */; }; + A8DF4AE80980C42C0052981B /* RenderTableCol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8DF4ADE0980C42C0052981B /* RenderTableCol.cpp */; }; + A8DF4AE90980C42C0052981B /* RenderTableCell.h in Headers */ = {isa = PBXBuildFile; fileRef = A8DF4ADF0980C42C0052981B /* RenderTableCell.h */; }; + A8DF4AEA0980C42C0052981B /* RenderTableCell.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8DF4AE00980C42C0052981B /* RenderTableCell.cpp */; }; + A8DF4AEB0980C42C0052981B /* RenderTable.h in Headers */ = {isa = PBXBuildFile; fileRef = A8DF4AE10980C42C0052981B /* RenderTable.h */; }; + A8DF4AEC0980C42C0052981B /* RenderTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8DF4AE20980C42C0052981B /* RenderTable.cpp */; }; + A8DF4AED0980C42C0052981B /* RenderTableSection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8DF4AE30980C42C0052981B /* RenderTableSection.cpp */; }; + A8DF4AEE0980C42C0052981B /* RenderTableRow.h in Headers */ = {isa = PBXBuildFile; fileRef = A8DF4AE40980C42C0052981B /* RenderTableRow.h */; }; + A8DF4AEF0980C42C0052981B /* RenderTableSection.h in Headers */ = {isa = PBXBuildFile; fileRef = A8DF4AE50980C42C0052981B /* RenderTableSection.h */; }; + A8DF4AF00980C42C0052981B /* RenderTableRow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8DF4AE60980C42C0052981B /* RenderTableRow.cpp */; }; + A8DF4AF10980C42C0052981B /* RenderTableCol.h in Headers */ = {isa = PBXBuildFile; fileRef = A8DF4AE70980C42C0052981B /* RenderTableCol.h */; }; + A8EA73C30A1900E300A8EF5F /* RenderFieldset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA73AF0A1900E300A8EF5F /* RenderFieldset.cpp */; }; + A8EA73C40A1900E300A8EF5F /* RenderFieldset.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA73B00A1900E300A8EF5F /* RenderFieldset.h */; }; + A8EA79F10A1916DF00A8EF5F /* HTMLOListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA79E50A1916DF00A8EF5F /* HTMLOListElement.h */; }; + A8EA79F20A1916DF00A8EF5F /* HTMLUListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA79E60A1916DF00A8EF5F /* HTMLUListElement.h */; }; + A8EA79F30A1916DF00A8EF5F /* HTMLUListElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA79E70A1916DF00A8EF5F /* HTMLUListElement.cpp */; }; + A8EA79F40A1916DF00A8EF5F /* HTMLMenuElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA79E80A1916DF00A8EF5F /* HTMLMenuElement.h */; }; + A8EA79F50A1916DF00A8EF5F /* HTMLDListElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA79E90A1916DF00A8EF5F /* HTMLDListElement.cpp */; }; + A8EA79F60A1916DF00A8EF5F /* HTMLLIElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA79EA0A1916DF00A8EF5F /* HTMLLIElement.h */; }; + A8EA79F70A1916DF00A8EF5F /* HTMLDListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA79EB0A1916DF00A8EF5F /* HTMLDListElement.h */; }; + A8EA79F80A1916DF00A8EF5F /* HTMLMenuElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA79EC0A1916DF00A8EF5F /* HTMLMenuElement.cpp */; }; + A8EA79F90A1916DF00A8EF5F /* HTMLDirectoryElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA79ED0A1916DF00A8EF5F /* HTMLDirectoryElement.cpp */; }; + A8EA79FA0A1916DF00A8EF5F /* HTMLDirectoryElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA79EE0A1916DF00A8EF5F /* HTMLDirectoryElement.h */; }; + A8EA79FB0A1916DF00A8EF5F /* HTMLOListElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA79EF0A1916DF00A8EF5F /* HTMLOListElement.cpp */; }; + A8EA79FC0A1916DF00A8EF5F /* HTMLLIElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA79F00A1916DF00A8EF5F /* HTMLLIElement.cpp */; }; + A8EA7A4E0A191A5200A8EF5F /* RenderListItem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7A480A191A5200A8EF5F /* RenderListItem.cpp */; }; + A8EA7A500A191A5200A8EF5F /* RenderListMarker.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7A4A0A191A5200A8EF5F /* RenderListMarker.h */; }; + A8EA7A510A191A5200A8EF5F /* RenderListMarker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7A4B0A191A5200A8EF5F /* RenderListMarker.cpp */; }; + A8EA7A520A191A5200A8EF5F /* RenderListItem.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7A4C0A191A5200A8EF5F /* RenderListItem.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8EA7CAB0A192B9C00A8EF5F /* HTMLMarqueeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7C9D0A192B9C00A8EF5F /* HTMLMarqueeElement.h */; }; + A8EA7CAC0A192B9C00A8EF5F /* HTMLMarqueeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7C9E0A192B9C00A8EF5F /* HTMLMarqueeElement.cpp */; }; + A8EA7CAD0A192B9C00A8EF5F /* HTMLPreElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7C9F0A192B9C00A8EF5F /* HTMLPreElement.cpp */; }; + A8EA7CAE0A192B9C00A8EF5F /* HTMLHeadingElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7CA00A192B9C00A8EF5F /* HTMLHeadingElement.cpp */; }; + A8EA7CAF0A192B9C00A8EF5F /* HTMLHRElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7CA10A192B9C00A8EF5F /* HTMLHRElement.h */; }; + A8EA7CB00A192B9C00A8EF5F /* HTMLPreElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7CA20A192B9C00A8EF5F /* HTMLPreElement.h */; }; + A8EA7CB10A192B9C00A8EF5F /* HTMLDivElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7CA30A192B9C00A8EF5F /* HTMLDivElement.cpp */; }; + A8EA7CB20A192B9C00A8EF5F /* HTMLParagraphElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7CA40A192B9C00A8EF5F /* HTMLParagraphElement.cpp */; }; + A8EA7CB30A192B9C00A8EF5F /* HTMLHRElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7CA50A192B9C00A8EF5F /* HTMLHRElement.cpp */; }; + A8EA7CB50A192B9C00A8EF5F /* HTMLParagraphElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7CA70A192B9C00A8EF5F /* HTMLParagraphElement.h */; }; + A8EA7CB70A192B9C00A8EF5F /* HTMLDivElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7CA90A192B9C00A8EF5F /* HTMLDivElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8EA7CB80A192B9C00A8EF5F /* HTMLHeadingElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7CAA0A192B9C00A8EF5F /* HTMLHeadingElement.h */; }; + A8EA7D2B0A19385500A8EF5F /* HTMLImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7D230A19385500A8EF5F /* HTMLImageLoader.h */; settings = {ATTRIBUTES = (); }; }; + A8EA7D2C0A19385500A8EF5F /* HTMLMapElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7D240A19385500A8EF5F /* HTMLMapElement.h */; }; + A8EA7D2D0A19385500A8EF5F /* HTMLImageElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7D250A19385500A8EF5F /* HTMLImageElement.h */; settings = {ATTRIBUTES = (); }; }; + A8EA7D2E0A19385500A8EF5F /* HTMLAreaElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7D260A19385500A8EF5F /* HTMLAreaElement.h */; }; + A8EA7D2F0A19385500A8EF5F /* HTMLAreaElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7D270A19385500A8EF5F /* HTMLAreaElement.cpp */; }; + A8EA7D300A19385500A8EF5F /* HTMLImageLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7D280A19385500A8EF5F /* HTMLImageLoader.cpp */; }; + A8EA7D310A19385500A8EF5F /* HTMLImageElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7D290A19385500A8EF5F /* HTMLImageElement.cpp */; }; + A8EA7D320A19385500A8EF5F /* HTMLMapElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7D2A0A19385500A8EF5F /* HTMLMapElement.cpp */; }; + A8EA7EBC0A1945D000A8EF5F /* ProcessingInstruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7EB40A1945D000A8EF5F /* ProcessingInstruction.h */; }; + A8EA7EBD0A1945D000A8EF5F /* ProcessingInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7EB50A1945D000A8EF5F /* ProcessingInstruction.cpp */; }; + A8EA7EBE0A1945D000A8EF5F /* Notation.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7EB60A1945D000A8EF5F /* Notation.h */; }; + A8EA7EBF0A1945D000A8EF5F /* Notation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7EB70A1945D000A8EF5F /* Notation.cpp */; }; + A8EA7EC00A1945D000A8EF5F /* EntityReference.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7EB80A1945D000A8EF5F /* EntityReference.h */; }; + A8EA7EC10A1945D000A8EF5F /* EntityReference.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7EB90A1945D000A8EF5F /* EntityReference.cpp */; }; + A8EA7EC20A1945D000A8EF5F /* Entity.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7EBA0A1945D000A8EF5F /* Entity.h */; }; + A8EA80070A19516E00A8EF5F /* CSSStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7FFF0A19516E00A8EF5F /* CSSStyleSheet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8EA80080A19516E00A8EF5F /* CSSStyleSheet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA80000A19516E00A8EF5F /* CSSStyleSheet.cpp */; }; + A8EA80090A19516E00A8EF5F /* MediaList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA80010A19516E00A8EF5F /* MediaList.cpp */; }; + A8EA800A0A19516E00A8EF5F /* StyleSheetList.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA80020A19516E00A8EF5F /* StyleSheetList.h */; }; + A8EA800B0A19516E00A8EF5F /* StyleSheetList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA80030A19516E00A8EF5F /* StyleSheetList.cpp */; }; + A8EA800C0A19516E00A8EF5F /* StyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA80040A19516E00A8EF5F /* StyleSheet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8EA800D0A19516E00A8EF5F /* StyleSheet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA80050A19516E00A8EF5F /* StyleSheet.cpp */; }; + A8EA800E0A19516E00A8EF5F /* MediaList.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA80060A19516E00A8EF5F /* MediaList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8FA6E5D0E4CFDED00D5CF49 /* Pattern.h in Headers */ = {isa = PBXBuildFile; fileRef = A8FA6E5B0E4CFDED00D5CF49 /* Pattern.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A8FA6E5E0E4CFDED00D5CF49 /* Pattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8FA6E5C0E4CFDED00D5CF49 /* Pattern.cpp */; }; + A9C6E4E30D745E05006442E9 /* DOMMimeType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E4E10D745E05006442E9 /* DOMMimeType.cpp */; }; + A9C6E4E40D745E05006442E9 /* DOMMimeType.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E4E20D745E05006442E9 /* DOMMimeType.h */; }; + A9C6E4E70D745E18006442E9 /* DOMMimeTypeArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E4E50D745E18006442E9 /* DOMMimeTypeArray.cpp */; }; + A9C6E4E80D745E18006442E9 /* DOMMimeTypeArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E4E60D745E18006442E9 /* DOMMimeTypeArray.h */; }; + A9C6E4EB0D745E2B006442E9 /* DOMPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E4E90D745E2B006442E9 /* DOMPlugin.cpp */; }; + A9C6E4EC0D745E2B006442E9 /* DOMPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E4EA0D745E2B006442E9 /* DOMPlugin.h */; }; + A9C6E4EF0D745E38006442E9 /* DOMPluginArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E4ED0D745E38006442E9 /* DOMPluginArray.cpp */; }; + A9C6E4F00D745E38006442E9 /* DOMPluginArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E4EE0D745E38006442E9 /* DOMPluginArray.h */; }; + A9C6E4F30D745E48006442E9 /* PluginData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E4F10D745E48006442E9 /* PluginData.cpp */; }; + A9C6E4F40D745E48006442E9 /* PluginData.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E4F20D745E48006442E9 /* PluginData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A9C6E5A50D746458006442E9 /* Navigator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E5A30D746458006442E9 /* Navigator.cpp */; }; + A9C6E5A60D746458006442E9 /* Navigator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C6E5A40D746458006442E9 /* Navigator.h */; }; + A9C6E6470D7465CA006442E9 /* JSDOMMimeTypeArrayCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E6460D7465CA006442E9 /* JSDOMMimeTypeArrayCustom.cpp */; }; + A9C6E64C0D7465E7006442E9 /* JSDOMPluginArrayCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E64A0D7465E7006442E9 /* JSDOMPluginArrayCustom.cpp */; }; + A9C6E64D0D7465E7006442E9 /* JSDOMPluginCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C6E64B0D7465E7006442E9 /* JSDOMPluginCustom.cpp */; }; + A9D247F70D757E3400FDF959 /* JSNavigator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9D247F50D757E3300FDF959 /* JSNavigator.cpp */; }; + A9D247F80D757E3400FDF959 /* JSNavigator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D247F60D757E3300FDF959 /* JSNavigator.h */; }; + A9D247FE0D757E6900FDF959 /* JSDOMPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9D247FA0D757E6900FDF959 /* JSDOMPlugin.cpp */; }; + A9D247FF0D757E6900FDF959 /* JSDOMPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D247FB0D757E6900FDF959 /* JSDOMPlugin.h */; }; + A9D248000D757E6900FDF959 /* JSDOMPluginArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9D247FC0D757E6900FDF959 /* JSDOMPluginArray.cpp */; }; + A9D248010D757E6900FDF959 /* JSDOMPluginArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D247FD0D757E6900FDF959 /* JSDOMPluginArray.h */; }; + A9D248060D757E7D00FDF959 /* JSDOMMimeType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9D248020D757E7D00FDF959 /* JSDOMMimeType.cpp */; }; + A9D248070D757E7D00FDF959 /* JSDOMMimeType.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D248030D757E7D00FDF959 /* JSDOMMimeType.h */; }; + A9D248080D757E7D00FDF959 /* JSDOMMimeTypeArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9D248040D757E7D00FDF959 /* JSDOMMimeTypeArray.cpp */; }; + A9D248090D757E7D00FDF959 /* JSDOMMimeTypeArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D248050D757E7D00FDF959 /* JSDOMMimeTypeArray.h */; }; + AA21ECCA0ABF0FBA002B834C /* CSSCursorImageValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA0978ED0ABAA6E100874480 /* CSSCursorImageValue.cpp */; }; + AA21ECCD0ABF0FC6002B834C /* CSSCursorImageValue.h in Headers */ = {isa = PBXBuildFile; fileRef = AA0978EE0ABAA6E100874480 /* CSSCursorImageValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + AA2A5ACD16A485FA00975A25 /* SpeechSynthesisVoice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA2A5AC616A485D500975A25 /* SpeechSynthesisVoice.cpp */; }; + AA2A5ACE16A485FD00975A25 /* SpeechSynthesisVoice.h in Headers */ = {isa = PBXBuildFile; fileRef = AA2A5AC716A485D500975A25 /* SpeechSynthesisVoice.h */; }; + AA2A5AD016A4860400975A25 /* SpeechSynthesisUtterance.h in Headers */ = {isa = PBXBuildFile; fileRef = AA2A5AC516A485D500975A25 /* SpeechSynthesisUtterance.h */; }; + AA2A5AD116A4860700975A25 /* SpeechSynthesisUtterance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA2A5AC416A485D500975A25 /* SpeechSynthesisUtterance.cpp */; }; + AA2A5AD216A4860A00975A25 /* SpeechSynthesisEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = AA2A5AC116A485D500975A25 /* SpeechSynthesisEvent.h */; }; + AA2A5AD216A4860A00976A25 /* JSSpeechSynthesisEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = AA2A5AC116A485D500976A25 /* JSSpeechSynthesisEvent.h */; }; + AA2A5AD316A4860D00975A25 /* SpeechSynthesisEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA2A5AC016A485D500975A25 /* SpeechSynthesisEvent.cpp */; }; + AA2A5AD316A4860D00976A25 /* JSSpeechSynthesisEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA2A5AC016A485D500976A25 /* JSSpeechSynthesisEvent.cpp */; }; + AA2A5AD416A4861100975A25 /* SpeechSynthesis.h in Headers */ = {isa = PBXBuildFile; fileRef = AA2A5ABE16A485D500975A25 /* SpeechSynthesis.h */; }; + AA2A5AD516A4861400975A25 /* SpeechSynthesis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA2A5ABD16A485D500975A25 /* SpeechSynthesis.cpp */; }; + AA2A5AD616A4861600975A25 /* DOMWindowSpeechSynthesis.h in Headers */ = {isa = PBXBuildFile; fileRef = AA2A5AB916A485D500975A25 /* DOMWindowSpeechSynthesis.h */; }; + AA2A5AD716A4861A00975A25 /* DOMWindowSpeechSynthesis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA2A5AB816A485D500975A25 /* DOMWindowSpeechSynthesis.cpp */; }; + AA4739D11757AFEC00E76767 /* UIRequestEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA4739CF1757AFEC00E76767 /* UIRequestEvent.cpp */; }; + AA4739D21757AFEC00E76767 /* UIRequestEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = AA4739D01757AFEC00E76767 /* UIRequestEvent.h */; }; + AA478A7F16CD70C3007D1BB4 /* WebAccessibilityObjectWrapperMac.h in Headers */ = {isa = PBXBuildFile; fileRef = AA478A7D16CD70C3007D1BB4 /* WebAccessibilityObjectWrapperMac.h */; }; + AA478A8016CD70C3007D1BB4 /* WebAccessibilityObjectWrapperMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = AA478A7E16CD70C3007D1BB4 /* WebAccessibilityObjectWrapperMac.mm */; }; + AA4C3A760B2B1679002334A2 /* StyleElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA4C3A740B2B1679002334A2 /* StyleElement.cpp */; }; + AA4C3A770B2B1679002334A2 /* StyleElement.h in Headers */ = {isa = PBXBuildFile; fileRef = AA4C3A750B2B1679002334A2 /* StyleElement.h */; }; + AA5F3B8D16CC33D100455EB0 /* PlatformSpeechSynthesizerMock.h in Headers */ = {isa = PBXBuildFile; fileRef = AAE27B7516CBFC0D00623043 /* PlatformSpeechSynthesizerMock.h */; }; + AA5F3B8F16CC4B3900455EB0 /* PlatformSpeechSynthesizerMock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAE27B7416CBFC0D00623043 /* PlatformSpeechSynthesizerMock.cpp */; }; + AA5F3B9116CC5BEB00455EB0 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA5F3B9016CC5BEB00455EB0 /* CoreFoundation.framework */; }; + AA73183E159255B900A93E6E /* InjectedScriptCanvasModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA73183C159255B900A93E6E /* InjectedScriptCanvasModule.cpp */; }; + AA73183F159255B900A93E6E /* InjectedScriptCanvasModule.h in Headers */ = {isa = PBXBuildFile; fileRef = AA73183D159255B900A93E6E /* InjectedScriptCanvasModule.h */; }; + AA7FEEA416A4E6F3004C0C33 /* JSSpeechSynthesis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA7FEE9C16A4E6F3004C0C33 /* JSSpeechSynthesis.cpp */; }; + AA7FEEA616A4E6F3004C0C33 /* JSSpeechSynthesisUtterance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA7FEE9E16A4E6F3004C0C33 /* JSSpeechSynthesisUtterance.cpp */; }; + AA7FEEA716A4E6F3004C0C33 /* JSSpeechSynthesisUtterance.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7FEE9F16A4E6F3004C0C33 /* JSSpeechSynthesisUtterance.h */; }; + AA7FEEA816A4E6F3004C0C33 /* JSSpeechSynthesisVoice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA7FEEA016A4E6F3004C0C33 /* JSSpeechSynthesisVoice.cpp */; }; + AA7FEEA916A4E6F3004C0C33 /* JSSpeechSynthesisVoice.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7FEEA116A4E6F3004C0C33 /* JSSpeechSynthesisVoice.h */; }; + AA7FEEAD16A4E74B004C0C33 /* JSSpeechSynthesis.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7FEEAC16A4E74B004C0C33 /* JSSpeechSynthesis.h */; }; + AAA4FAD2175D5CB300743873 /* JSUIRequestEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = AAA4FACE175D5CB300743873 /* JSUIRequestEvent.h */; }; + AAA4FAD3175D5CB300743873 /* JSUIRequestEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAA4FACF175D5CB300743873 /* JSUIRequestEvent.cpp */; }; + AAA728F616D1D8BC00D3BBC6 /* AccessibilityObjectIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = AAA728F016D1D8BC00D3BBC6 /* AccessibilityObjectIOS.mm */; }; + AAA728F716D1D8BC00D3BBC6 /* WebAccessibilityObjectWrapperIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = AAA728F116D1D8BC00D3BBC6 /* WebAccessibilityObjectWrapperIOS.h */; }; + AAA728F816D1D8BC00D3BBC6 /* WebAccessibilityObjectWrapperIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = AAA728F216D1D8BC00D3BBC6 /* WebAccessibilityObjectWrapperIOS.mm */; }; + AAA728F916D1D8BC00D3BBC6 /* AXObjectCacheIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = AAA728F316D1D8BC00D3BBC6 /* AXObjectCacheIOS.mm */; }; + AAB6054E15874C58007B5031 /* InjectedScriptBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAB6054A15874C58007B5031 /* InjectedScriptBase.cpp */; }; + AAB6054F15874C58007B5031 /* InjectedScriptBase.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB6054B15874C58007B5031 /* InjectedScriptBase.h */; }; + AAB6055015874C58007B5031 /* InjectedScriptModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAB6054C15874C58007B5031 /* InjectedScriptModule.cpp */; }; + AAB6055115874C58007B5031 /* InjectedScriptModule.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB6054D15874C58007B5031 /* InjectedScriptModule.h */; }; + AAC08CEF15F933D600F1E188 /* SVGImageChromeClient.h in Headers */ = {isa = PBXBuildFile; fileRef = AAC08CED15F933D600F1E188 /* SVGImageChromeClient.h */; }; + AAC08CF315F941FD00F1E188 /* AccessibilitySVGRoot.h in Headers */ = {isa = PBXBuildFile; fileRef = AAC08CF115F941FC00F1E188 /* AccessibilitySVGRoot.h */; }; + AAD766EB157E502F00E85423 /* InspectorCanvasAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAD766E8157E502F00E85423 /* InspectorCanvasAgent.cpp */; }; + AAD766EC157E502F00E85423 /* InspectorCanvasAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = AAD766E9157E502F00E85423 /* InspectorCanvasAgent.h */; }; + AAD766ED157E502F00E85423 /* InspectorCanvasInstrumentation.h in Headers */ = {isa = PBXBuildFile; fileRef = AAD766EA157E502F00E85423 /* InspectorCanvasInstrumentation.h */; }; + AAF5B7B71524B6C50004CB49 /* WebSocketFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAF5B7B11524B4BD0004CB49 /* WebSocketFrame.cpp */; }; + AB23A32709BBA7D00067CC53 /* BeforeTextInsertedEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB23A32509BBA7D00067CC53 /* BeforeTextInsertedEvent.cpp */; }; + AB23A32809BBA7D00067CC53 /* BeforeTextInsertedEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = AB23A32609BBA7D00067CC53 /* BeforeTextInsertedEvent.h */; }; + AB247A6C0AFD6383003FA5FD /* RenderSlider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB247A6A0AFD6383003FA5FD /* RenderSlider.cpp */; }; + AB247A6D0AFD6383003FA5FD /* RenderSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = AB247A6B0AFD6383003FA5FD /* RenderSlider.h */; }; + AB31C91E10AE1B8E000C7B92 /* LineClampValue.h in Headers */ = {isa = PBXBuildFile; fileRef = AB31C91D10AE1B8E000C7B92 /* LineClampValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + AB4CB4EB0B8BDA3D009F40B0 /* JSHTMLSelectElementCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = AB4CB4EA0B8BDA3D009F40B0 /* JSHTMLSelectElementCustom.h */; }; + AB67D1A8097F3AE300F9392E /* RenderTextControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB67D1A6097F3AE300F9392E /* RenderTextControl.cpp */; }; + AB67D1A9097F3AE300F9392E /* RenderTextControl.h in Headers */ = {isa = PBXBuildFile; fileRef = AB67D1A7097F3AE300F9392E /* RenderTextControl.h */; }; + AB7170890B3118080017123E /* SearchPopupMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = AB7170880B3118080017123E /* SearchPopupMenu.h */; settings = {ATTRIBUTES = (Private, ); }; }; + ABAF22080C03B1C700B0BCF0 /* ChromeMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = ABAF22070C03B1C700B0BCF0 /* ChromeMac.mm */; }; + ABB5419E0ACDDFE4002820EB /* RenderListBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABB5419C0ACDDFE4002820EB /* RenderListBox.cpp */; }; + ABB5419F0ACDDFE4002820EB /* RenderListBox.h in Headers */ = {isa = PBXBuildFile; fileRef = ABB5419D0ACDDFE4002820EB /* RenderListBox.h */; }; + ABC128770B33AA6D00C693D5 /* PopupMenuClient.h in Headers */ = {isa = PBXBuildFile; fileRef = ABC128760B33AA6D00C693D5 /* PopupMenuClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + ABDDFE790A5C6E7000A3E11D /* RenderMenuList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABDDFE730A5C6E6F00A3E11D /* RenderMenuList.cpp */; }; + ABDDFE7A0A5C6E7000A3E11D /* RenderMenuList.h in Headers */ = {isa = PBXBuildFile; fileRef = ABDDFE740A5C6E7000A3E11D /* RenderMenuList.h */; }; + AD03AAFA1468455300A39B5B /* CSSValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD03AAF81468453900A39B5B /* CSSValue.cpp */; }; + AD4495F3141FC08900541EDF /* EventListenerMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD4495F1141FC08900541EDF /* EventListenerMap.cpp */; }; + AD4495F4141FC08900541EDF /* EventListenerMap.h in Headers */ = {isa = PBXBuildFile; fileRef = AD4495F2141FC08900541EDF /* EventListenerMap.h */; settings = {ATTRIBUTES = (Private, ); }; }; + AD6E71AC1668899D00320C13 /* DocumentSharedObjectPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD6E71AA1668899D00320C13 /* DocumentSharedObjectPool.cpp */; }; + AD6E71AD1668899D00320C13 /* DocumentSharedObjectPool.h in Headers */ = {isa = PBXBuildFile; fileRef = AD6E71AB1668899D00320C13 /* DocumentSharedObjectPool.h */; }; + AD726FED16DA1171003A4E6D /* JSCSSStyleDeclarationCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = AD726FEA16D9F40B003A4E6D /* JSCSSStyleDeclarationCustom.h */; settings = {ATTRIBUTES = (Private, ); }; }; + AD726FEE16DA11BC003A4E6D /* JSStyleSheetCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = AD726FEC16D9F4B9003A4E6D /* JSStyleSheetCustom.h */; settings = {ATTRIBUTES = (Private, ); }; }; + AD726FEF16DA11F5003A4E6D /* JSCSSRuleCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = AD726FE916D9F40A003A4E6D /* JSCSSRuleCustom.h */; settings = {ATTRIBUTES = (Private, ); }; }; + ADDF1AD71257CD9A0003A759 /* RenderSVGPath.h in Headers */ = {isa = PBXBuildFile; fileRef = ADDF1AD51257CD9A0003A759 /* RenderSVGPath.h */; }; + B10B6980140C174000BC1C26 /* WebVTTToken.h in Headers */ = {isa = PBXBuildFile; fileRef = B10B697D140C174000BC1C26 /* WebVTTToken.h */; }; + B10B6981140C174000BC1C26 /* WebVTTTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B10B697E140C174000BC1C26 /* WebVTTTokenizer.cpp */; }; + B10B6982140C174000BC1C26 /* WebVTTTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = B10B697F140C174000BC1C26 /* WebVTTTokenizer.h */; }; + B1827493134CA4C100B98C2D /* CallbackFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B1827492134CA4C100B98C2D /* CallbackFunction.cpp */; }; + B1AD4E7313A12A4600846B27 /* TextTrackLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B1AD4E7113A12A4600846B27 /* TextTrackLoader.cpp */; }; + B1AD4E7413A12A4600846B27 /* TextTrackLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = B1AD4E7213A12A4600846B27 /* TextTrackLoader.h */; }; + B1D5ECB5134B58DA0087C78F /* CallbackFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = B1D5ECB4134B58DA0087C78F /* CallbackFunction.h */; }; + B20111070AB7740500DB0E68 /* JSSVGAElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B20111050AB7740500DB0E68 /* JSSVGAElement.cpp */; }; + B20111080AB7740500DB0E68 /* JSSVGAElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B20111060AB7740500DB0E68 /* JSSVGAElement.h */; }; + B22279620D00BF220071B782 /* ColorDistance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22277CB0D00BF1F0071B782 /* ColorDistance.cpp */; }; + B22279630D00BF220071B782 /* ColorDistance.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277CC0D00BF1F0071B782 /* ColorDistance.h */; }; + B22279640D00BF220071B782 /* GradientAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277CD0D00BF1F0071B782 /* GradientAttributes.h */; }; + B22279650D00BF220071B782 /* LinearGradientAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277CE0D00BF1F0071B782 /* LinearGradientAttributes.h */; }; + B22279710D00BF220071B782 /* PatternAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277DB0D00BF1F0071B782 /* PatternAttributes.h */; }; + B22279720D00BF220071B782 /* RadialGradientAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277DC0D00BF1F0071B782 /* RadialGradientAttributes.h */; }; + B22279730D00BF220071B782 /* SVGAElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22277DD0D00BF1F0071B782 /* SVGAElement.cpp */; }; + B22279740D00BF220071B782 /* SVGAElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277DE0D00BF1F0071B782 /* SVGAElement.h */; }; + B22279760D00BF220071B782 /* SVGAngle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22277E00D00BF1F0071B782 /* SVGAngle.cpp */; }; + B22279770D00BF220071B782 /* SVGAngle.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277E10D00BF1F0071B782 /* SVGAngle.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B22279790D00BF220071B782 /* SVGAnimateColorElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22277E30D00BF1F0071B782 /* SVGAnimateColorElement.cpp */; }; + B222797A0D00BF220071B782 /* SVGAnimateColorElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277E40D00BF1F0071B782 /* SVGAnimateColorElement.h */; }; + B222798F0D00BF220071B782 /* SVGAnimateElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22277F90D00BF1F0071B782 /* SVGAnimateElement.cpp */; }; + B22279900D00BF220071B782 /* SVGAnimateElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277FA0D00BF1F0071B782 /* SVGAnimateElement.h */; }; + B22279920D00BF220071B782 /* SVGAnimateMotionElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22277FC0D00BF1F0071B782 /* SVGAnimateMotionElement.cpp */; }; + B22279930D00BF220071B782 /* SVGAnimateMotionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277FD0D00BF1F0071B782 /* SVGAnimateMotionElement.h */; }; + B22279940D00BF220071B782 /* SVGAnimateTransformElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22277FE0D00BF1F0071B782 /* SVGAnimateTransformElement.cpp */; }; + B22279950D00BF220071B782 /* SVGAnimateTransformElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277FF0D00BF1F0071B782 /* SVGAnimateTransformElement.h */; }; + B22279970D00BF220071B782 /* SVGAnimationElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278010D00BF1F0071B782 /* SVGAnimationElement.cpp */; }; + B22279980D00BF220071B782 /* SVGAnimationElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278020D00BF1F0071B782 /* SVGAnimationElement.h */; }; + B222799B0D00BF220071B782 /* SVGCircleElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278050D00BF1F0071B782 /* SVGCircleElement.cpp */; }; + B222799C0D00BF220071B782 /* SVGCircleElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278060D00BF1F0071B782 /* SVGCircleElement.h */; }; + B222799E0D00BF220071B782 /* SVGClipPathElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278080D00BF1F0071B782 /* SVGClipPathElement.cpp */; }; + B222799F0D00BF220071B782 /* SVGClipPathElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278090D00BF1F0071B782 /* SVGClipPathElement.h */; }; + B22279A10D00BF220071B782 /* SVGColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222780B0D00BF1F0071B782 /* SVGColor.cpp */; }; + B22279A20D00BF220071B782 /* SVGColor.h in Headers */ = {isa = PBXBuildFile; fileRef = B222780C0D00BF1F0071B782 /* SVGColor.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B22279A40D00BF220071B782 /* SVGComponentTransferFunctionElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222780E0D00BF1F0071B782 /* SVGComponentTransferFunctionElement.cpp */; }; + B22279A50D00BF220071B782 /* SVGComponentTransferFunctionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222780F0D00BF1F0071B782 /* SVGComponentTransferFunctionElement.h */; }; + B22279A70D00BF220071B782 /* SVGCursorElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278110D00BF1F0071B782 /* SVGCursorElement.cpp */; }; + B22279A80D00BF220071B782 /* SVGCursorElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278120D00BF1F0071B782 /* SVGCursorElement.h */; }; + B22279AD0D00BF220071B782 /* SVGDefsElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278170D00BF1F0071B782 /* SVGDefsElement.cpp */; }; + B22279AE0D00BF220071B782 /* SVGDefsElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278180D00BF1F0071B782 /* SVGDefsElement.h */; }; + B22279B00D00BF220071B782 /* SVGDescElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222781A0D00BF1F0071B782 /* SVGDescElement.cpp */; }; + B22279B10D00BF220071B782 /* SVGDescElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222781B0D00BF1F0071B782 /* SVGDescElement.h */; }; + B22279B30D00BF220071B782 /* SVGDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222781D0D00BF1F0071B782 /* SVGDocument.cpp */; }; + B22279B40D00BF220071B782 /* SVGDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = B222781E0D00BF1F0071B782 /* SVGDocument.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B22279B60D00BF220071B782 /* SVGElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278200D00BF1F0071B782 /* SVGElement.cpp */; }; + B22279B70D00BF220071B782 /* SVGElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278210D00BF1F0071B782 /* SVGElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B22279B90D00BF220071B782 /* SVGElementInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278230D00BF1F0071B782 /* SVGElementInstance.cpp */; }; + B22279BA0D00BF220071B782 /* SVGElementInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278240D00BF1F0071B782 /* SVGElementInstance.h */; }; + B22279BC0D00BF220071B782 /* SVGElementInstanceList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278260D00BF1F0071B782 /* SVGElementInstanceList.cpp */; }; + B22279BD0D00BF220071B782 /* SVGElementInstanceList.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278270D00BF1F0071B782 /* SVGElementInstanceList.h */; }; + B22279BF0D00BF220071B782 /* SVGEllipseElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278290D00BF1F0071B782 /* SVGEllipseElement.cpp */; }; + B22279C00D00BF220071B782 /* SVGEllipseElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222782A0D00BF1F0071B782 /* SVGEllipseElement.h */; }; + B22279C20D00BF220071B782 /* SVGException.h in Headers */ = {isa = PBXBuildFile; fileRef = B222782C0D00BF1F0071B782 /* SVGException.h */; }; + B22279C40D00BF220071B782 /* SVGExternalResourcesRequired.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222782E0D00BF1F0071B782 /* SVGExternalResourcesRequired.cpp */; }; + B22279C50D00BF220071B782 /* SVGExternalResourcesRequired.h in Headers */ = {isa = PBXBuildFile; fileRef = B222782F0D00BF1F0071B782 /* SVGExternalResourcesRequired.h */; }; + B22279C70D00BF220071B782 /* SVGFEBlendElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278310D00BF1F0071B782 /* SVGFEBlendElement.cpp */; }; + B22279C80D00BF220071B782 /* SVGFEBlendElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278320D00BF1F0071B782 /* SVGFEBlendElement.h */; }; + B22279CA0D00BF220071B782 /* SVGFEColorMatrixElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278340D00BF1F0071B782 /* SVGFEColorMatrixElement.cpp */; }; + B22279CB0D00BF220071B782 /* SVGFEColorMatrixElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278350D00BF1F0071B782 /* SVGFEColorMatrixElement.h */; }; + B22279CD0D00BF220071B782 /* SVGFEComponentTransferElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278370D00BF1F0071B782 /* SVGFEComponentTransferElement.cpp */; }; + B22279CE0D00BF220071B782 /* SVGFEComponentTransferElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278380D00BF1F0071B782 /* SVGFEComponentTransferElement.h */; }; + B22279D00D00BF220071B782 /* SVGFECompositeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222783A0D00BF1F0071B782 /* SVGFECompositeElement.cpp */; }; + B22279D10D00BF220071B782 /* SVGFECompositeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222783B0D00BF1F0071B782 /* SVGFECompositeElement.h */; }; + B22279D30D00BF220071B782 /* SVGFEDiffuseLightingElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222783D0D00BF1F0071B782 /* SVGFEDiffuseLightingElement.cpp */; }; + B22279D40D00BF220071B782 /* SVGFEDiffuseLightingElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222783E0D00BF1F0071B782 /* SVGFEDiffuseLightingElement.h */; }; + B22279D60D00BF220071B782 /* SVGFEDisplacementMapElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278400D00BF1F0071B782 /* SVGFEDisplacementMapElement.cpp */; }; + B22279D70D00BF220071B782 /* SVGFEDisplacementMapElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278410D00BF1F0071B782 /* SVGFEDisplacementMapElement.h */; }; + B22279D90D00BF220071B782 /* SVGFEDistantLightElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278430D00BF1F0071B782 /* SVGFEDistantLightElement.cpp */; }; + B22279DA0D00BF220071B782 /* SVGFEDistantLightElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278440D00BF1F0071B782 /* SVGFEDistantLightElement.h */; }; + B22279DC0D00BF220071B782 /* SVGFEFloodElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278460D00BF1F0071B782 /* SVGFEFloodElement.cpp */; }; + B22279DD0D00BF220071B782 /* SVGFEFloodElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278470D00BF1F0071B782 /* SVGFEFloodElement.h */; }; + B22279DF0D00BF220071B782 /* SVGFEFuncAElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278490D00BF1F0071B782 /* SVGFEFuncAElement.cpp */; }; + B22279E00D00BF220071B782 /* SVGFEFuncAElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222784A0D00BF1F0071B782 /* SVGFEFuncAElement.h */; }; + B22279E20D00BF220071B782 /* SVGFEFuncBElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222784C0D00BF1F0071B782 /* SVGFEFuncBElement.cpp */; }; + B22279E30D00BF220071B782 /* SVGFEFuncBElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222784D0D00BF1F0071B782 /* SVGFEFuncBElement.h */; }; + B22279E50D00BF220071B782 /* SVGFEFuncGElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222784F0D00BF1F0071B782 /* SVGFEFuncGElement.cpp */; }; + B22279E60D00BF220071B782 /* SVGFEFuncGElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278500D00BF1F0071B782 /* SVGFEFuncGElement.h */; }; + B22279E80D00BF220071B782 /* SVGFEFuncRElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278520D00BF200071B782 /* SVGFEFuncRElement.cpp */; }; + B22279E90D00BF220071B782 /* SVGFEFuncRElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278530D00BF200071B782 /* SVGFEFuncRElement.h */; }; + B22279EB0D00BF220071B782 /* SVGFEGaussianBlurElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278550D00BF200071B782 /* SVGFEGaussianBlurElement.cpp */; }; + B22279EC0D00BF220071B782 /* SVGFEGaussianBlurElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278560D00BF200071B782 /* SVGFEGaussianBlurElement.h */; }; + B22279EE0D00BF220071B782 /* SVGFEImageElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278580D00BF200071B782 /* SVGFEImageElement.cpp */; }; + B22279EF0D00BF220071B782 /* SVGFEImageElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278590D00BF200071B782 /* SVGFEImageElement.h */; }; + B22279F10D00BF220071B782 /* SVGFELightElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222785B0D00BF200071B782 /* SVGFELightElement.cpp */; }; + B22279F20D00BF220071B782 /* SVGFELightElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222785C0D00BF200071B782 /* SVGFELightElement.h */; }; + B22279F30D00BF220071B782 /* SVGFEMergeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222785D0D00BF200071B782 /* SVGFEMergeElement.cpp */; }; + B22279F40D00BF220071B782 /* SVGFEMergeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222785E0D00BF200071B782 /* SVGFEMergeElement.h */; }; + B22279F60D00BF220071B782 /* SVGFEMergeNodeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278600D00BF200071B782 /* SVGFEMergeNodeElement.cpp */; }; + B22279F70D00BF220071B782 /* SVGFEMergeNodeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278610D00BF200071B782 /* SVGFEMergeNodeElement.h */; }; + B22279F90D00BF220071B782 /* SVGFEOffsetElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278630D00BF200071B782 /* SVGFEOffsetElement.cpp */; }; + B22279FA0D00BF220071B782 /* SVGFEOffsetElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278640D00BF200071B782 /* SVGFEOffsetElement.h */; }; + B22279FC0D00BF220071B782 /* SVGFEPointLightElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278660D00BF200071B782 /* SVGFEPointLightElement.cpp */; }; + B22279FD0D00BF220071B782 /* SVGFEPointLightElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278670D00BF200071B782 /* SVGFEPointLightElement.h */; }; + B22279FF0D00BF220071B782 /* SVGFESpecularLightingElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278690D00BF200071B782 /* SVGFESpecularLightingElement.cpp */; }; + B2227A000D00BF220071B782 /* SVGFESpecularLightingElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222786A0D00BF200071B782 /* SVGFESpecularLightingElement.h */; }; + B2227A020D00BF220071B782 /* SVGFESpotLightElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222786C0D00BF200071B782 /* SVGFESpotLightElement.cpp */; }; + B2227A030D00BF220071B782 /* SVGFESpotLightElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222786D0D00BF200071B782 /* SVGFESpotLightElement.h */; }; + B2227A050D00BF220071B782 /* SVGFETileElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222786F0D00BF200071B782 /* SVGFETileElement.cpp */; }; + B2227A060D00BF220071B782 /* SVGFETileElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278700D00BF200071B782 /* SVGFETileElement.h */; }; + B2227A080D00BF220071B782 /* SVGFETurbulenceElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278720D00BF200071B782 /* SVGFETurbulenceElement.cpp */; }; + B2227A090D00BF220071B782 /* SVGFETurbulenceElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278730D00BF200071B782 /* SVGFETurbulenceElement.h */; }; + B2227A0B0D00BF220071B782 /* SVGFilterElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278750D00BF200071B782 /* SVGFilterElement.cpp */; }; + B2227A0C0D00BF220071B782 /* SVGFilterElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278760D00BF200071B782 /* SVGFilterElement.h */; }; + B2227A0E0D00BF220071B782 /* SVGFilterPrimitiveStandardAttributes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278780D00BF200071B782 /* SVGFilterPrimitiveStandardAttributes.cpp */; }; + B2227A0F0D00BF220071B782 /* SVGFilterPrimitiveStandardAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278790D00BF200071B782 /* SVGFilterPrimitiveStandardAttributes.h */; }; + B2227A110D00BF220071B782 /* SVGFitToViewBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222787B0D00BF200071B782 /* SVGFitToViewBox.cpp */; }; + B2227A120D00BF220071B782 /* SVGFitToViewBox.h in Headers */ = {isa = PBXBuildFile; fileRef = B222787C0D00BF200071B782 /* SVGFitToViewBox.h */; }; + B2227A140D00BF220071B782 /* SVGFontFaceElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222787E0D00BF200071B782 /* SVGFontFaceElement.cpp */; }; + B2227A150D00BF220071B782 /* SVGFontFaceElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222787F0D00BF200071B782 /* SVGFontFaceElement.h */; }; + B2227A170D00BF220071B782 /* SVGFontFaceFormatElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278810D00BF200071B782 /* SVGFontFaceFormatElement.cpp */; }; + B2227A180D00BF220071B782 /* SVGFontFaceFormatElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278820D00BF200071B782 /* SVGFontFaceFormatElement.h */; }; + B2227A1A0D00BF220071B782 /* SVGFontFaceNameElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278840D00BF200071B782 /* SVGFontFaceNameElement.cpp */; }; + B2227A1B0D00BF220071B782 /* SVGFontFaceNameElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278850D00BF200071B782 /* SVGFontFaceNameElement.h */; }; + B2227A1D0D00BF220071B782 /* SVGFontFaceSrcElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278870D00BF200071B782 /* SVGFontFaceSrcElement.cpp */; }; + B2227A1E0D00BF220071B782 /* SVGFontFaceSrcElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278880D00BF200071B782 /* SVGFontFaceSrcElement.h */; }; + B2227A200D00BF220071B782 /* SVGFontFaceUriElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222788A0D00BF200071B782 /* SVGFontFaceUriElement.cpp */; }; + B2227A210D00BF220071B782 /* SVGFontFaceUriElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222788B0D00BF200071B782 /* SVGFontFaceUriElement.h */; }; + B2227A230D00BF220071B782 /* SVGForeignObjectElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222788D0D00BF200071B782 /* SVGForeignObjectElement.cpp */; }; + B2227A240D00BF220071B782 /* SVGForeignObjectElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222788E0D00BF200071B782 /* SVGForeignObjectElement.h */; }; + B2227A260D00BF220071B782 /* SVGGElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278900D00BF200071B782 /* SVGGElement.cpp */; }; + B2227A270D00BF220071B782 /* SVGGElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278910D00BF200071B782 /* SVGGElement.h */; }; + B2227A290D00BF220071B782 /* SVGGradientElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278930D00BF200071B782 /* SVGGradientElement.cpp */; }; + B2227A2A0D00BF220071B782 /* SVGGradientElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278940D00BF200071B782 /* SVGGradientElement.h */; }; + B2227A2C0D00BF220071B782 /* SVGImageElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278960D00BF200071B782 /* SVGImageElement.cpp */; }; + B2227A2D0D00BF220071B782 /* SVGImageElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278970D00BF200071B782 /* SVGImageElement.h */; }; + B2227A2F0D00BF220071B782 /* SVGLangSpace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278990D00BF200071B782 /* SVGLangSpace.cpp */; }; + B2227A300D00BF220071B782 /* SVGLangSpace.h in Headers */ = {isa = PBXBuildFile; fileRef = B222789A0D00BF200071B782 /* SVGLangSpace.h */; }; + B2227A320D00BF220071B782 /* SVGLength.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222789C0D00BF200071B782 /* SVGLength.cpp */; }; + B2227A330D00BF220071B782 /* SVGLength.h in Headers */ = {isa = PBXBuildFile; fileRef = B222789D0D00BF200071B782 /* SVGLength.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2227A350D00BF220071B782 /* SVGLengthList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222789F0D00BF200071B782 /* SVGLengthList.cpp */; }; + B2227A360D00BF220071B782 /* SVGLengthList.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278A00D00BF200071B782 /* SVGLengthList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2227A380D00BF220071B782 /* SVGLinearGradientElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278A20D00BF200071B782 /* SVGLinearGradientElement.cpp */; }; + B2227A390D00BF220071B782 /* SVGLinearGradientElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278A30D00BF200071B782 /* SVGLinearGradientElement.h */; }; + B2227A3B0D00BF220071B782 /* SVGLineElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278A50D00BF200071B782 /* SVGLineElement.cpp */; }; + B2227A3C0D00BF220071B782 /* SVGLineElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278A60D00BF200071B782 /* SVGLineElement.h */; }; + B2227A400D00BF220071B782 /* SVGLocatable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278AA0D00BF200071B782 /* SVGLocatable.cpp */; }; + B2227A410D00BF220071B782 /* SVGLocatable.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278AB0D00BF200071B782 /* SVGLocatable.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2227A430D00BF220071B782 /* SVGMarkerElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278AD0D00BF200071B782 /* SVGMarkerElement.cpp */; }; + B2227A440D00BF220071B782 /* SVGMarkerElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278AE0D00BF200071B782 /* SVGMarkerElement.h */; }; + B2227A460D00BF220071B782 /* SVGMaskElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278B00D00BF200071B782 /* SVGMaskElement.cpp */; }; + B2227A470D00BF220071B782 /* SVGMaskElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278B10D00BF200071B782 /* SVGMaskElement.h */; }; + B2227A4A0D00BF220071B782 /* SVGMetadataElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278B40D00BF200071B782 /* SVGMetadataElement.cpp */; }; + B2227A4B0D00BF220071B782 /* SVGMetadataElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278B50D00BF200071B782 /* SVGMetadataElement.h */; }; + B2227A4D0D00BF220071B782 /* SVGMPathElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278B70D00BF200071B782 /* SVGMPathElement.cpp */; }; + B2227A4E0D00BF220071B782 /* SVGMPathElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278B80D00BF200071B782 /* SVGMPathElement.h */; }; + B2227A500D00BF220071B782 /* SVGNumberList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278BA0D00BF200071B782 /* SVGNumberList.cpp */; }; + B2227A510D00BF220071B782 /* SVGNumberList.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278BB0D00BF200071B782 /* SVGNumberList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2227A530D00BF220071B782 /* SVGPaint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278BD0D00BF200071B782 /* SVGPaint.cpp */; }; + B2227A540D00BF220071B782 /* SVGPaint.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278BE0D00BF200071B782 /* SVGPaint.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2227A560D00BF220071B782 /* SVGParserUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278C00D00BF200071B782 /* SVGParserUtilities.cpp */; }; + B2227A570D00BF220071B782 /* SVGParserUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278C10D00BF200071B782 /* SVGParserUtilities.h */; }; + B2227A580D00BF220071B782 /* SVGPathElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278C20D00BF200071B782 /* SVGPathElement.cpp */; }; + B2227A590D00BF220071B782 /* SVGPathElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278C30D00BF200071B782 /* SVGPathElement.h */; }; + B2227A5B0D00BF220071B782 /* SVGPathSeg.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278C50D00BF200071B782 /* SVGPathSeg.h */; }; + B2227A5E0D00BF220071B782 /* SVGPathSegArc.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278C80D00BF200071B782 /* SVGPathSegArc.h */; }; + B2227A620D00BF220071B782 /* SVGPathSegClosePath.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278CC0D00BF200071B782 /* SVGPathSegClosePath.h */; }; + B2227A650D00BF220071B782 /* SVGPathSegCurvetoCubic.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278CF0D00BF200071B782 /* SVGPathSegCurvetoCubic.h */; }; + B2227A690D00BF220071B782 /* SVGPathSegCurvetoCubicSmooth.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278D30D00BF200071B782 /* SVGPathSegCurvetoCubicSmooth.h */; }; + B2227A6D0D00BF220071B782 /* SVGPathSegCurvetoQuadratic.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278D70D00BF200071B782 /* SVGPathSegCurvetoQuadratic.h */; }; + B2227A780D00BF220071B782 /* SVGPathSegLinetoHorizontal.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278E20D00BF200071B782 /* SVGPathSegLinetoHorizontal.h */; }; + B2227A7D0D00BF220071B782 /* SVGPathSegLinetoVertical.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278E70D00BF200071B782 /* SVGPathSegLinetoVertical.h */; }; + B2227A800D00BF220071B782 /* SVGPathSegList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278EA0D00BF200071B782 /* SVGPathSegList.cpp */; }; + B2227A810D00BF220071B782 /* SVGPathSegList.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278EB0D00BF200071B782 /* SVGPathSegList.h */; }; + B2227A870D00BF220071B782 /* SVGPatternElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278F10D00BF210071B782 /* SVGPatternElement.cpp */; }; + B2227A880D00BF220071B782 /* SVGPatternElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278F20D00BF210071B782 /* SVGPatternElement.h */; }; + B2227A8B0D00BF220071B782 /* SVGPointList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278F50D00BF210071B782 /* SVGPointList.cpp */; }; + B2227A8C0D00BF220071B782 /* SVGPointList.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278F60D00BF210071B782 /* SVGPointList.h */; }; + B2227A8E0D00BF220071B782 /* SVGPolyElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278F80D00BF210071B782 /* SVGPolyElement.cpp */; }; + B2227A8F0D00BF220071B782 /* SVGPolyElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278F90D00BF210071B782 /* SVGPolyElement.h */; }; + B2227A900D00BF220071B782 /* SVGPolygonElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278FA0D00BF210071B782 /* SVGPolygonElement.cpp */; }; + B2227A910D00BF220071B782 /* SVGPolygonElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278FB0D00BF210071B782 /* SVGPolygonElement.h */; }; + B2227A930D00BF220071B782 /* SVGPolylineElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278FD0D00BF210071B782 /* SVGPolylineElement.cpp */; }; + B2227A940D00BF220071B782 /* SVGPolylineElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278FE0D00BF210071B782 /* SVGPolylineElement.h */; }; + B2227A960D00BF220071B782 /* SVGPreserveAspectRatio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279000D00BF210071B782 /* SVGPreserveAspectRatio.cpp */; }; + B2227A970D00BF220071B782 /* SVGPreserveAspectRatio.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279010D00BF210071B782 /* SVGPreserveAspectRatio.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2227A990D00BF220071B782 /* SVGRadialGradientElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279030D00BF210071B782 /* SVGRadialGradientElement.cpp */; }; + B2227A9A0D00BF220071B782 /* SVGRadialGradientElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279040D00BF210071B782 /* SVGRadialGradientElement.h */; }; + B2227A9D0D00BF220071B782 /* SVGRectElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279070D00BF210071B782 /* SVGRectElement.cpp */; }; + B2227A9E0D00BF220071B782 /* SVGRectElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279080D00BF210071B782 /* SVGRectElement.h */; }; + B2227AA00D00BF220071B782 /* SVGRenderingIntent.h in Headers */ = {isa = PBXBuildFile; fileRef = B222790A0D00BF210071B782 /* SVGRenderingIntent.h */; }; + B2227AA20D00BF220071B782 /* SVGScriptElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222790C0D00BF210071B782 /* SVGScriptElement.cpp */; }; + B2227AA30D00BF220071B782 /* SVGScriptElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222790D0D00BF210071B782 /* SVGScriptElement.h */; }; + B2227AA50D00BF220071B782 /* SVGSetElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222790F0D00BF210071B782 /* SVGSetElement.cpp */; }; + B2227AA60D00BF220071B782 /* SVGSetElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279100D00BF210071B782 /* SVGSetElement.h */; }; + B2227AA80D00BF220071B782 /* SVGStopElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279120D00BF210071B782 /* SVGStopElement.cpp */; }; + B2227AA90D00BF220071B782 /* SVGStopElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279130D00BF210071B782 /* SVGStopElement.h */; }; + B2227AAB0D00BF220071B782 /* SVGStringList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279150D00BF210071B782 /* SVGStringList.cpp */; }; + B2227AAC0D00BF220071B782 /* SVGStringList.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279160D00BF210071B782 /* SVGStringList.h */; }; + B2227AB50D00BF220071B782 /* SVGGraphicsElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222791F0D00BF210071B782 /* SVGGraphicsElement.cpp */; }; + B2227AB60D00BF220071B782 /* SVGGraphicsElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279200D00BF210071B782 /* SVGGraphicsElement.h */; }; + B2227AB70D00BF220071B782 /* SVGStyleElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279210D00BF210071B782 /* SVGStyleElement.cpp */; }; + B2227AB70D00BF220071B783 /* SVGStyledElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279210D00BF210071B783 /* SVGStyledElement.cpp */; }; + B2227AB80D00BF220071B782 /* SVGStyleElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279220D00BF210071B782 /* SVGStyleElement.h */; }; + B2227AB80D00BF220071B783 /* SVGStyledElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279220D00BF210071B783 /* SVGStyledElement.h */; }; + B2227ABA0D00BF220071B782 /* SVGSVGElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279240D00BF210071B782 /* SVGSVGElement.cpp */; }; + B2227ABB0D00BF220071B782 /* SVGSVGElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279250D00BF210071B782 /* SVGSVGElement.h */; }; + B2227ABD0D00BF220071B782 /* SVGSwitchElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279270D00BF210071B782 /* SVGSwitchElement.cpp */; }; + B2227ABE0D00BF220071B782 /* SVGSwitchElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279280D00BF210071B782 /* SVGSwitchElement.h */; }; + B2227AC00D00BF220071B782 /* SVGSymbolElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222792A0D00BF210071B782 /* SVGSymbolElement.cpp */; }; + B2227AC10D00BF220071B782 /* SVGSymbolElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222792B0D00BF210071B782 /* SVGSymbolElement.h */; }; + B2227AC40D00BF220071B782 /* SVGTests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222792E0D00BF210071B782 /* SVGTests.cpp */; }; + B2227AC50D00BF220071B782 /* SVGTests.h in Headers */ = {isa = PBXBuildFile; fileRef = B222792F0D00BF210071B782 /* SVGTests.h */; }; + B2227AC70D00BF220071B782 /* SVGTextContentElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279310D00BF210071B782 /* SVGTextContentElement.cpp */; }; + B2227AC80D00BF220071B782 /* SVGTextContentElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279320D00BF210071B782 /* SVGTextContentElement.h */; }; + B2227ACA0D00BF220071B782 /* SVGTextElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279340D00BF210071B782 /* SVGTextElement.cpp */; }; + B2227ACB0D00BF220071B782 /* SVGTextElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279350D00BF210071B782 /* SVGTextElement.h */; }; + B2227ACD0D00BF220071B782 /* SVGTextPathElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279370D00BF210071B782 /* SVGTextPathElement.cpp */; }; + B2227ACE0D00BF220071B782 /* SVGTextPathElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279380D00BF210071B782 /* SVGTextPathElement.h */; }; + B2227AD00D00BF220071B782 /* SVGTextPositioningElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222793A0D00BF210071B782 /* SVGTextPositioningElement.cpp */; }; + B2227AD10D00BF220071B782 /* SVGTextPositioningElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222793B0D00BF210071B782 /* SVGTextPositioningElement.h */; }; + B2227AD30D00BF220071B782 /* SVGTitleElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222793D0D00BF210071B782 /* SVGTitleElement.cpp */; }; + B2227AD40D00BF220071B782 /* SVGTitleElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222793E0D00BF210071B782 /* SVGTitleElement.h */; }; + B2227AD60D00BF220071B782 /* SVGTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279400D00BF210071B782 /* SVGTransform.cpp */; }; + B2227AD70D00BF220071B782 /* SVGTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279410D00BF210071B782 /* SVGTransform.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2227AD90D00BF220071B782 /* SVGTransformable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279430D00BF210071B782 /* SVGTransformable.cpp */; }; + B2227ADA0D00BF220071B782 /* SVGTransformable.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279440D00BF210071B782 /* SVGTransformable.h */; }; + B2227ADC0D00BF220071B782 /* SVGTransformDistance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279460D00BF210071B782 /* SVGTransformDistance.cpp */; }; + B2227ADD0D00BF220071B782 /* SVGTransformDistance.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279470D00BF210071B782 /* SVGTransformDistance.h */; }; + B2227ADE0D00BF220071B782 /* SVGTransformList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279480D00BF210071B782 /* SVGTransformList.cpp */; }; + B2227ADF0D00BF220071B782 /* SVGTransformList.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279490D00BF210071B782 /* SVGTransformList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2227AE10D00BF220071B782 /* SVGTRefElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222794B0D00BF210071B782 /* SVGTRefElement.cpp */; }; + B2227AE20D00BF220071B782 /* SVGTRefElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222794C0D00BF210071B782 /* SVGTRefElement.h */; }; + B2227AE40D00BF220071B782 /* SVGTSpanElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222794E0D00BF210071B782 /* SVGTSpanElement.cpp */; }; + B2227AE50D00BF220071B782 /* SVGTSpanElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222794F0D00BF210071B782 /* SVGTSpanElement.h */; }; + B2227AE70D00BF220071B782 /* SVGUnitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279510D00BF210071B782 /* SVGUnitTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2227AE90D00BF220071B782 /* SVGURIReference.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279530D00BF210071B782 /* SVGURIReference.cpp */; }; + B2227AEA0D00BF220071B782 /* SVGURIReference.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279540D00BF210071B782 /* SVGURIReference.h */; }; + B2227AEC0D00BF220071B782 /* SVGUseElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279560D00BF210071B782 /* SVGUseElement.cpp */; }; + B2227AED0D00BF220071B782 /* SVGUseElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279570D00BF210071B782 /* SVGUseElement.h */; }; + B2227AEF0D00BF220071B782 /* SVGViewElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279590D00BF210071B782 /* SVGViewElement.cpp */; }; + B2227AF00D00BF220071B782 /* SVGViewElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222795A0D00BF210071B782 /* SVGViewElement.h */; }; + B2227AF20D00BF220071B782 /* SVGViewSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222795C0D00BF210071B782 /* SVGViewSpec.cpp */; }; + B2227AF30D00BF220071B782 /* SVGViewSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = B222795D0D00BF210071B782 /* SVGViewSpec.h */; }; + B2227AF50D00BF220071B782 /* SVGZoomAndPan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222795F0D00BF210071B782 /* SVGZoomAndPan.cpp */; }; + B2227AF60D00BF220071B782 /* SVGZoomAndPan.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279600D00BF210071B782 /* SVGZoomAndPan.h */; }; + B2227B050D00BFF10071B782 /* SVGCSSComputedStyleDeclaration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2227B000D00BFF10071B782 /* SVGCSSComputedStyleDeclaration.cpp */; }; + B2227B060D00BFF10071B782 /* SVGCSSParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2227B010D00BFF10071B782 /* SVGCSSParser.cpp */; }; + B2227B080D00BFF10071B782 /* SVGCSSStyleSelector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2227B030D00BFF10071B782 /* SVGCSSStyleSelector.cpp */; }; + B222F6980AB771950022EFAD /* JSSVGAngle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222F6960AB771950022EFAD /* JSSVGAngle.cpp */; }; + B222F6990AB771950022EFAD /* JSSVGAngle.h in Headers */ = {isa = PBXBuildFile; fileRef = B222F6970AB771950022EFAD /* JSSVGAngle.h */; }; + B222F69C0AB771B80022EFAD /* JSSVGElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222F69A0AB771B80022EFAD /* JSSVGElement.cpp */; }; + B222F69D0AB771B80022EFAD /* JSSVGElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B222F69B0AB771B80022EFAD /* JSSVGElement.h */; }; + B22362280C3AF04A0008CA9B /* JSSVGTextPathElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22362260C3AF04A0008CA9B /* JSSVGTextPathElement.cpp */; }; + B22362290C3AF04A0008CA9B /* JSSVGTextPathElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22362270C3AF04A0008CA9B /* JSSVGTextPathElement.h */; }; + B23540F20D00782E002382FA /* StringTruncator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B23540F00D00782E002382FA /* StringTruncator.cpp */; }; + B23540F30D00782E002382FA /* StringTruncator.h in Headers */ = {isa = PBXBuildFile; fileRef = B23540F10D00782E002382FA /* StringTruncator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B237C8A70D344D110013F707 /* SVGFontData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B237C8A50D344D110013F707 /* SVGFontData.cpp */; }; + B237C8A80D344D110013F707 /* SVGFontData.h in Headers */ = {isa = PBXBuildFile; fileRef = B237C8A60D344D110013F707 /* SVGFontData.h */; }; + B25599840D00D8BA00BB825C /* SVGFEImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B25598EA0D00D8B900BB825C /* SVGFEImage.cpp */; }; + B25599850D00D8BA00BB825C /* SVGFEImage.h in Headers */ = {isa = PBXBuildFile; fileRef = B25598EB0D00D8B900BB825C /* SVGFEImage.h */; }; + B25599A30D00D8BA00BB825C /* SVGImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B255990B0D00D8B900BB825C /* SVGImage.cpp */; }; + B25599A40D00D8BA00BB825C /* SVGImage.h in Headers */ = {isa = PBXBuildFile; fileRef = B255990C0D00D8B900BB825C /* SVGImage.h */; }; + B25599A50D00D8BA00BB825C /* EmptyClients.h in Headers */ = {isa = PBXBuildFile; fileRef = B255990D0D00D8B900BB825C /* EmptyClients.h */; }; + B266CD4D0C3AEC6500EB08D2 /* JSSVGException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B266CD4B0C3AEC6500EB08D2 /* JSSVGException.cpp */; }; + B266CD4E0C3AEC6500EB08D2 /* JSSVGException.h in Headers */ = {isa = PBXBuildFile; fileRef = B266CD4C0C3AEC6500EB08D2 /* JSSVGException.h */; }; + B27535580B053814002CE64F /* TransformationMatrixCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B275352A0B053814002CE64F /* TransformationMatrixCG.cpp */; }; + B27535590B053814002CE64F /* FloatPointCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B275352B0B053814002CE64F /* FloatPointCG.cpp */; }; + B275355A0B053814002CE64F /* FloatRectCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B275352C0B053814002CE64F /* FloatRectCG.cpp */; }; + B275355B0B053814002CE64F /* FloatSizeCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B275352D0B053814002CE64F /* FloatSizeCG.cpp */; }; + B275355E0B053814002CE64F /* ImageCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27535300B053814002CE64F /* ImageCG.cpp */; }; + B275355F0B053814002CE64F /* ImageSourceCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27535310B053814002CE64F /* ImageSourceCG.cpp */; }; + B27535600B053814002CE64F /* IntPointCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27535320B053814002CE64F /* IntPointCG.cpp */; }; + B27535610B053814002CE64F /* IntRectCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27535330B053814002CE64F /* IntRectCG.cpp */; }; + B27535620B053814002CE64F /* IntSizeCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27535340B053814002CE64F /* IntSizeCG.cpp */; }; + B27535630B053814002CE64F /* PathCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27535350B053814002CE64F /* PathCG.cpp */; }; + B27535640B053814002CE64F /* PDFDocumentImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27535360B053814002CE64F /* PDFDocumentImage.cpp */; }; + B27535650B053814002CE64F /* PDFDocumentImage.h in Headers */ = {isa = PBXBuildFile; fileRef = B27535370B053814002CE64F /* PDFDocumentImage.h */; }; + B27535660B053814002CE64F /* Color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27535380B053814002CE64F /* Color.cpp */; }; + B27535670B053814002CE64F /* Color.h in Headers */ = {isa = PBXBuildFile; fileRef = B27535390B053814002CE64F /* Color.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B27535680B053814002CE64F /* FloatPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B275353A0B053814002CE64F /* FloatPoint.cpp */; }; + B27535690B053814002CE64F /* FloatPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = B275353B0B053814002CE64F /* FloatPoint.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B275356A0B053814002CE64F /* FloatRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B275353C0B053814002CE64F /* FloatRect.cpp */; }; + B275356B0B053814002CE64F /* FloatRect.h in Headers */ = {isa = PBXBuildFile; fileRef = B275353D0B053814002CE64F /* FloatRect.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B275356C0B053814002CE64F /* FloatSize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B275353E0B053814002CE64F /* FloatSize.cpp */; }; + B275356D0B053814002CE64F /* FloatSize.h in Headers */ = {isa = PBXBuildFile; fileRef = B275353F0B053814002CE64F /* FloatSize.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B275356E0B053814002CE64F /* Icon.h in Headers */ = {isa = PBXBuildFile; fileRef = B27535400B053814002CE64F /* Icon.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B275356F0B053814002CE64F /* Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27535410B053814002CE64F /* Image.cpp */; }; + B27535700B053814002CE64F /* Image.h in Headers */ = {isa = PBXBuildFile; fileRef = B27535420B053814002CE64F /* Image.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B27535710B053814002CE64F /* ImageSource.h in Headers */ = {isa = PBXBuildFile; fileRef = B27535430B053814002CE64F /* ImageSource.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B27535720B053814002CE64F /* IntPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = B27535440B053814002CE64F /* IntPoint.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B27535730B053814002CE64F /* IntRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27535450B053814002CE64F /* IntRect.cpp */; }; + B27535740B053814002CE64F /* IntRect.h in Headers */ = {isa = PBXBuildFile; fileRef = B27535460B053814002CE64F /* IntRect.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B27535750B053814002CE64F /* IntSize.h in Headers */ = {isa = PBXBuildFile; fileRef = B27535470B053814002CE64F /* IntSize.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B27535760B053814002CE64F /* IntSizeHash.h in Headers */ = {isa = PBXBuildFile; fileRef = B27535480B053814002CE64F /* IntSizeHash.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B27535770B053814002CE64F /* ColorMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B275354A0B053814002CE64F /* ColorMac.mm */; }; + B27535780B053814002CE64F /* FloatPointMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B275354B0B053814002CE64F /* FloatPointMac.mm */; }; + B27535790B053814002CE64F /* FloatRectMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B275354C0B053814002CE64F /* FloatRectMac.mm */; }; + B275357A0B053814002CE64F /* FloatSizeMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B275354D0B053814002CE64F /* FloatSizeMac.mm */; }; + B275357B0B053814002CE64F /* ImageMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B275354E0B053814002CE64F /* ImageMac.mm */; }; + B275357C0B053814002CE64F /* IntPointMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B275354F0B053814002CE64F /* IntPointMac.mm */; }; + B275357D0B053814002CE64F /* IntRectMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B27535500B053814002CE64F /* IntRectMac.mm */; }; + B275357E0B053814002CE64F /* IntSizeMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B27535510B053814002CE64F /* IntSizeMac.mm */; }; + B275357F0B053814002CE64F /* Path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27535520B053814002CE64F /* Path.cpp */; }; + B27535800B053814002CE64F /* Path.h in Headers */ = {isa = PBXBuildFile; fileRef = B27535530B053814002CE64F /* Path.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B275358E0B053A66002CE64F /* IconMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B275358D0B053A66002CE64F /* IconMac.mm */; }; + B277B4040B22F37C0004BEC6 /* GraphicsContextMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B277B4030B22F37C0004BEC6 /* GraphicsContextMac.mm */; }; + B27B28250CEF0C0700D39D54 /* JSSVGFontElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27B281F0CEF0C0700D39D54 /* JSSVGFontElement.cpp */; }; + B27B28260CEF0C0700D39D54 /* JSSVGFontElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B27B28200CEF0C0700D39D54 /* JSSVGFontElement.h */; }; + B27B28270CEF0C0700D39D54 /* JSSVGGlyphElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27B28210CEF0C0700D39D54 /* JSSVGGlyphElement.cpp */; }; + B27B28280CEF0C0700D39D54 /* JSSVGGlyphElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B27B28220CEF0C0700D39D54 /* JSSVGGlyphElement.h */; }; + B27B28290CEF0C0700D39D54 /* JSSVGMissingGlyphElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27B28230CEF0C0700D39D54 /* JSSVGMissingGlyphElement.cpp */; }; + B27B282A0CEF0C0700D39D54 /* JSSVGMissingGlyphElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B27B28240CEF0C0700D39D54 /* JSSVGMissingGlyphElement.h */; }; + B28C6A270D00C44800334AA4 /* SVGDocumentExtensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B28C6A1E0D00C44800334AA4 /* SVGDocumentExtensions.cpp */; }; + B28C6A280D00C44800334AA4 /* SVGDocumentExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = B28C6A1F0D00C44800334AA4 /* SVGDocumentExtensions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B28C6A290D00C44800334AA4 /* SVGImageLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B28C6A200D00C44800334AA4 /* SVGImageLoader.cpp */; }; + B28C6A2A0D00C44800334AA4 /* SVGImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = B28C6A210D00C44800334AA4 /* SVGImageLoader.h */; }; + B2A015A80AF6CD53006BCE0E /* GraphicsContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2A015920AF6CD53006BCE0E /* GraphicsContext.cpp */; }; + B2A015A90AF6CD53006BCE0E /* GraphicsContext.h in Headers */ = {isa = PBXBuildFile; fileRef = B2A015930AF6CD53006BCE0E /* GraphicsContext.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2A015AA0AF6CD53006BCE0E /* GraphicsTypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2A015940AF6CD53006BCE0E /* GraphicsTypes.cpp */; }; + B2A015AB0AF6CD53006BCE0E /* GraphicsTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = B2A015950AF6CD53006BCE0E /* GraphicsTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2A10B920B3818BD00099AA4 /* ImageBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B2A10B910B3818BD00099AA4 /* ImageBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2A10B940B3818D700099AA4 /* ImageBufferCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2A10B930B3818D700099AA4 /* ImageBufferCG.cpp */; }; + B2A1F2AA0CEF0ABF00442F6A /* SVGFontElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2A1F2A10CEF0ABF00442F6A /* SVGFontElement.cpp */; }; + B2A1F2AB0CEF0ABF00442F6A /* SVGFontElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2A1F2A20CEF0ABF00442F6A /* SVGFontElement.h */; }; + B2A1F2AD0CEF0ABF00442F6A /* SVGGlyphElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2A1F2A40CEF0ABF00442F6A /* SVGGlyphElement.cpp */; }; + B2A1F2AE0CEF0ABF00442F6A /* SVGGlyphElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2A1F2A50CEF0ABF00442F6A /* SVGGlyphElement.h */; }; + B2A1F2B00CEF0ABF00442F6A /* SVGMissingGlyphElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2A1F2A70CEF0ABF00442F6A /* SVGMissingGlyphElement.cpp */; }; + B2A1F2B10CEF0ABF00442F6A /* SVGMissingGlyphElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2A1F2A80CEF0ABF00442F6A /* SVGMissingGlyphElement.h */; }; + B2AFFC7C0D00A5C10030074D /* FontCacheMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2AFFC740D00A5C10030074D /* FontCacheMac.mm */; }; + B2AFFC7D0D00A5C10030074D /* FontCustomPlatformData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2AFFC750D00A5C10030074D /* FontCustomPlatformData.cpp */; }; + B2AFFC7E0D00A5C10030074D /* FontCustomPlatformData.h in Headers */ = {isa = PBXBuildFile; fileRef = B2AFFC760D00A5C10030074D /* FontCustomPlatformData.h */; }; + B2AFFC7F0D00A5C10030074D /* SimpleFontDataMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2AFFC770D00A5C10030074D /* SimpleFontDataMac.mm */; }; + B2AFFC800D00A5C10030074D /* FontMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2AFFC780D00A5C10030074D /* FontMac.mm */; }; + B2AFFC830D00A5C10030074D /* GlyphPageTreeNodeMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2AFFC7B0D00A5C10030074D /* GlyphPageTreeNodeMac.cpp */; }; + B2AFFC950D00A5DF0030074D /* StringImplMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2AFFC8A0D00A5DF0030074D /* StringImplMac.mm */; }; + B2AFFC960D00A5DF0030074D /* StringMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2AFFC8B0D00A5DF0030074D /* StringMac.mm */; }; + B2AFFC970D00A5DF0030074D /* TextBoundaries.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2AFFC8C0D00A5DF0030074D /* TextBoundaries.mm */; }; + B2AFFC980D00A5DF0030074D /* TextBreakIteratorInternalICUMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2AFFC8D0D00A5DF0030074D /* TextBreakIteratorInternalICUMac.mm */; }; + B2AFFC990D00A5DF0030074D /* TextCodecMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2AFFC8E0D00A5DF0030074D /* TextCodecMac.cpp */; }; + B2AFFC9A0D00A5DF0030074D /* TextCodecMac.h in Headers */ = {isa = PBXBuildFile; fileRef = B2AFFC8F0D00A5DF0030074D /* TextCodecMac.h */; }; + B2B1F7160D00CAA8004AEA64 /* PointerEventsHitRules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2B1F7140D00CAA8004AEA64 /* PointerEventsHitRules.cpp */; }; + B2B1F7170D00CAA8004AEA64 /* PointerEventsHitRules.h in Headers */ = {isa = PBXBuildFile; fileRef = B2B1F7150D00CAA8004AEA64 /* PointerEventsHitRules.h */; }; + B2B2645C0D00A77E000ACC1D /* StringCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2B2645A0D00A77E000ACC1D /* StringCF.cpp */; }; + B2B2645D0D00A77E000ACC1D /* StringImplCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2B2645B0D00A77E000ACC1D /* StringImplCF.cpp */; }; + B2C3DA230D006C1D00EF6F26 /* BidiContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3D9F20D006C1D00EF6F26 /* BidiContext.cpp */; }; + B2C3DA240D006C1D00EF6F26 /* BidiContext.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3D9F30D006C1D00EF6F26 /* BidiContext.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA250D006C1D00EF6F26 /* BidiResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3D9F40D006C1D00EF6F26 /* BidiResolver.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA2A0D006C1D00EF6F26 /* CharsetData.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3D9FA0D006C1D00EF6F26 /* CharsetData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA2C0D006C1D00EF6F26 /* RegularExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3D9FC0D006C1D00EF6F26 /* RegularExpression.cpp */; }; + B2C3DA2D0D006C1D00EF6F26 /* RegularExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3D9FD0D006C1D00EF6F26 /* RegularExpression.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA2E0D006C1D00EF6F26 /* SegmentedString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3D9FE0D006C1D00EF6F26 /* SegmentedString.cpp */; }; + B2C3DA2F0D006C1D00EF6F26 /* SegmentedString.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3D9FF0D006C1D00EF6F26 /* SegmentedString.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA340D006C1D00EF6F26 /* TextBoundaries.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA040D006C1D00EF6F26 /* TextBoundaries.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA360D006C1D00EF6F26 /* TextBreakIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA060D006C1D00EF6F26 /* TextBreakIterator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA370D006C1D00EF6F26 /* TextBreakIteratorICU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3DA070D006C1D00EF6F26 /* TextBreakIteratorICU.cpp */; }; + B2C3DA380D006C1D00EF6F26 /* TextBreakIteratorInternalICU.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA080D006C1D00EF6F26 /* TextBreakIteratorInternalICU.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA390D006C1D00EF6F26 /* TextCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3DA090D006C1D00EF6F26 /* TextCodec.cpp */; }; + B2C3DA3A0D006C1D00EF6F26 /* TextCodec.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA0A0D006C1D00EF6F26 /* TextCodec.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA3B0D006C1D00EF6F26 /* TextCodecICU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3DA0B0D006C1D00EF6F26 /* TextCodecICU.cpp */; }; + B2C3DA3C0D006C1D00EF6F26 /* TextCodecICU.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA0C0D006C1D00EF6F26 /* TextCodecICU.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA3D0D006C1D00EF6F26 /* TextCodecLatin1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3DA0D0D006C1D00EF6F26 /* TextCodecLatin1.cpp */; }; + B2C3DA3E0D006C1D00EF6F26 /* TextCodecLatin1.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA0E0D006C1D00EF6F26 /* TextCodecLatin1.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA3F0D006C1D00EF6F26 /* TextCodecUserDefined.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3DA0F0D006C1D00EF6F26 /* TextCodecUserDefined.cpp */; }; + B2C3DA400D006C1D00EF6F26 /* TextCodecUserDefined.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA100D006C1D00EF6F26 /* TextCodecUserDefined.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA410D006C1D00EF6F26 /* TextCodecUTF16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3DA110D006C1D00EF6F26 /* TextCodecUTF16.cpp */; }; + B2C3DA420D006C1D00EF6F26 /* TextCodecUTF16.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA120D006C1D00EF6F26 /* TextCodecUTF16.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA450D006C1D00EF6F26 /* TextDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA150D006C1D00EF6F26 /* TextDirection.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA460D006C1D00EF6F26 /* TextEncoding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3DA160D006C1D00EF6F26 /* TextEncoding.cpp */; }; + B2C3DA470D006C1D00EF6F26 /* TextEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA170D006C1D00EF6F26 /* TextEncoding.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA480D006C1D00EF6F26 /* TextEncodingRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3DA180D006C1D00EF6F26 /* TextEncodingRegistry.cpp */; }; + B2C3DA490D006C1D00EF6F26 /* TextEncodingRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA190D006C1D00EF6F26 /* TextEncodingRegistry.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA4A0D006C1D00EF6F26 /* TextStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3DA1A0D006C1D00EF6F26 /* TextStream.cpp */; }; + B2C3DA4B0D006C1D00EF6F26 /* TextStream.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA1B0D006C1D00EF6F26 /* TextStream.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA4C0D006C1D00EF6F26 /* UnicodeRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3DA1C0D006C1D00EF6F26 /* UnicodeRange.cpp */; }; + B2C3DA4D0D006C1D00EF6F26 /* UnicodeRange.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA1D0D006C1D00EF6F26 /* UnicodeRange.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA600D006CD600EF6F26 /* Font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3DA4F0D006CD600EF6F26 /* Font.cpp */; }; + B2C3DA610D006CD600EF6F26 /* Font.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA500D006CD600EF6F26 /* Font.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA620D006CD600EF6F26 /* FontCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3DA510D006CD600EF6F26 /* FontCache.cpp */; }; + B2C3DA630D006CD600EF6F26 /* FontCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA520D006CD600EF6F26 /* FontCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA640D006CD600EF6F26 /* SimpleFontData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3DA530D006CD600EF6F26 /* SimpleFontData.cpp */; }; + B2C3DA650D006CD600EF6F26 /* SimpleFontData.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA540D006CD600EF6F26 /* SimpleFontData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA660D006CD600EF6F26 /* FontDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA550D006CD600EF6F26 /* FontDescription.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA670D006CD600EF6F26 /* FontGlyphs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3DA560D006CD600EF6F26 /* FontGlyphs.cpp */; }; + B2C3DA680D006CD600EF6F26 /* FontGlyphs.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA570D006CD600EF6F26 /* FontGlyphs.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA6B0D006CD600EF6F26 /* FontSelector.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA5A0D006CD600EF6F26 /* FontSelector.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA6C0D006CD600EF6F26 /* GlyphBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA5B0D006CD600EF6F26 /* GlyphBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C3DA6D0D006CD600EF6F26 /* GlyphPageTreeNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C3DA5C0D006CD600EF6F26 /* GlyphPageTreeNode.cpp */; }; + B2C3DA6E0D006CD600EF6F26 /* GlyphPageTreeNode.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C3DA5D0D006CD600EF6F26 /* GlyphPageTreeNode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2C96D8D0B3AF2B7005E80EC /* JSSVGPathSegCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2C96D8C0B3AF2B7005E80EC /* JSSVGPathSegCustom.cpp */; }; + B2CB92420B5BD966009BAA78 /* JSSVGElementInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2CB923B0B5BD941009BAA78 /* JSSVGElementInstance.cpp */; }; + B2CB92440B5BD970009BAA78 /* JSSVGElementInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CB923C0B5BD941009BAA78 /* JSSVGElementInstance.h */; }; + B2CB92460B5BD97B009BAA78 /* JSSVGElementInstanceList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2CB923D0B5BD941009BAA78 /* JSSVGElementInstanceList.cpp */; }; + B2CB92480B5BD984009BAA78 /* JSSVGElementInstanceList.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CB923E0B5BD941009BAA78 /* JSSVGElementInstanceList.h */; }; + B2E27C9F0B0F2B0900F17C7B /* FloatPoint3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2E27C9D0B0F2B0900F17C7B /* FloatPoint3D.cpp */; }; + B2E27CA00B0F2B0900F17C7B /* FloatPoint3D.h in Headers */ = {isa = PBXBuildFile; fileRef = B2E27C9E0B0F2B0900F17C7B /* FloatPoint3D.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B2E4EC970D00C22B00432643 /* SVGZoomEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2E4EC940D00C22B00432643 /* SVGZoomEvent.cpp */; }; + B2E4EC980D00C22B00432643 /* SVGZoomEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = B2E4EC950D00C22B00432643 /* SVGZoomEvent.h */; }; + B2ED97710B1F55CE00257D0F /* GraphicsContextCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2ED97700B1F55CE00257D0F /* GraphicsContextCG.cpp */; }; + B2F34FE60E82F81400F627CD /* DNS.h in Headers */ = {isa = PBXBuildFile; fileRef = B2F34FE50E82F81400F627CD /* DNS.h */; }; + B2F34FE90E82F82700F627CD /* DNSCFNet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2F34FE80E82F82700F627CD /* DNSCFNet.cpp */; }; + B2FA3D360AB75A6F000E5AC4 /* JSSVGAnimateColorElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C4E0AB75A6E000E5AC4 /* JSSVGAnimateColorElement.cpp */; }; + B2FA3D370AB75A6F000E5AC4 /* JSSVGAnimateColorElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C4F0AB75A6E000E5AC4 /* JSSVGAnimateColorElement.h */; }; + B2FA3D380AB75A6F000E5AC4 /* JSSVGAnimatedAngle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C500AB75A6E000E5AC4 /* JSSVGAnimatedAngle.cpp */; }; + B2FA3D390AB75A6F000E5AC4 /* JSSVGAnimatedAngle.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C510AB75A6E000E5AC4 /* JSSVGAnimatedAngle.h */; }; + B2FA3D3A0AB75A6F000E5AC4 /* JSSVGAnimatedBoolean.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C520AB75A6E000E5AC4 /* JSSVGAnimatedBoolean.cpp */; }; + B2FA3D3B0AB75A6F000E5AC4 /* JSSVGAnimatedBoolean.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C530AB75A6E000E5AC4 /* JSSVGAnimatedBoolean.h */; }; + B2FA3D3C0AB75A6F000E5AC4 /* JSSVGAnimatedEnumeration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C540AB75A6E000E5AC4 /* JSSVGAnimatedEnumeration.cpp */; }; + B2FA3D3D0AB75A6F000E5AC4 /* JSSVGAnimatedEnumeration.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C550AB75A6E000E5AC4 /* JSSVGAnimatedEnumeration.h */; }; + B2FA3D3E0AB75A6F000E5AC4 /* JSSVGAnimatedInteger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C560AB75A6E000E5AC4 /* JSSVGAnimatedInteger.cpp */; }; + B2FA3D3F0AB75A6F000E5AC4 /* JSSVGAnimatedInteger.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C570AB75A6E000E5AC4 /* JSSVGAnimatedInteger.h */; }; + B2FA3D400AB75A6F000E5AC4 /* JSSVGAnimatedLength.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C580AB75A6E000E5AC4 /* JSSVGAnimatedLength.cpp */; }; + B2FA3D410AB75A6F000E5AC4 /* JSSVGAnimatedLength.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C590AB75A6E000E5AC4 /* JSSVGAnimatedLength.h */; }; + B2FA3D420AB75A6F000E5AC4 /* JSSVGAnimatedLengthList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C5A0AB75A6E000E5AC4 /* JSSVGAnimatedLengthList.cpp */; }; + B2FA3D430AB75A6F000E5AC4 /* JSSVGAnimatedLengthList.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C5B0AB75A6E000E5AC4 /* JSSVGAnimatedLengthList.h */; }; + B2FA3D440AB75A6F000E5AC4 /* JSSVGAnimatedNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C5C0AB75A6E000E5AC4 /* JSSVGAnimatedNumber.cpp */; }; + B2FA3D450AB75A6F000E5AC4 /* JSSVGAnimatedNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C5D0AB75A6E000E5AC4 /* JSSVGAnimatedNumber.h */; }; + B2FA3D460AB75A6F000E5AC4 /* JSSVGAnimatedNumberList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C5E0AB75A6E000E5AC4 /* JSSVGAnimatedNumberList.cpp */; }; + B2FA3D470AB75A6F000E5AC4 /* JSSVGAnimatedNumberList.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C5F0AB75A6E000E5AC4 /* JSSVGAnimatedNumberList.h */; }; + B2FA3D4A0AB75A6F000E5AC4 /* JSSVGAnimatedPreserveAspectRatio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C620AB75A6E000E5AC4 /* JSSVGAnimatedPreserveAspectRatio.cpp */; }; + B2FA3D4B0AB75A6F000E5AC4 /* JSSVGAnimatedPreserveAspectRatio.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C630AB75A6E000E5AC4 /* JSSVGAnimatedPreserveAspectRatio.h */; }; + B2FA3D4C0AB75A6F000E5AC4 /* JSSVGAnimatedRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C640AB75A6E000E5AC4 /* JSSVGAnimatedRect.cpp */; }; + B2FA3D4D0AB75A6F000E5AC4 /* JSSVGAnimatedRect.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C650AB75A6E000E5AC4 /* JSSVGAnimatedRect.h */; }; + B2FA3D4E0AB75A6F000E5AC4 /* JSSVGAnimatedString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C660AB75A6E000E5AC4 /* JSSVGAnimatedString.cpp */; }; + B2FA3D4F0AB75A6F000E5AC4 /* JSSVGAnimatedString.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C670AB75A6E000E5AC4 /* JSSVGAnimatedString.h */; }; + B2FA3D500AB75A6F000E5AC4 /* JSSVGAnimatedTransformList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C680AB75A6E000E5AC4 /* JSSVGAnimatedTransformList.cpp */; }; + B2FA3D510AB75A6F000E5AC4 /* JSSVGAnimatedTransformList.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C690AB75A6E000E5AC4 /* JSSVGAnimatedTransformList.h */; }; + B2FA3D520AB75A6F000E5AC4 /* JSSVGAnimateElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C6A0AB75A6E000E5AC4 /* JSSVGAnimateElement.cpp */; }; + B2FA3D530AB75A6F000E5AC4 /* JSSVGAnimateElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C6B0AB75A6E000E5AC4 /* JSSVGAnimateElement.h */; }; + B2FA3D540AB75A6F000E5AC4 /* JSSVGAnimateTransformElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C6C0AB75A6E000E5AC4 /* JSSVGAnimateTransformElement.cpp */; }; + B2FA3D550AB75A6F000E5AC4 /* JSSVGAnimateTransformElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C6D0AB75A6E000E5AC4 /* JSSVGAnimateTransformElement.h */; }; + B2FA3D560AB75A6F000E5AC4 /* JSSVGAnimationElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C6E0AB75A6E000E5AC4 /* JSSVGAnimationElement.cpp */; }; + B2FA3D570AB75A6F000E5AC4 /* JSSVGAnimationElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C6F0AB75A6E000E5AC4 /* JSSVGAnimationElement.h */; }; + B2FA3D580AB75A6F000E5AC4 /* JSSVGCircleElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C700AB75A6E000E5AC4 /* JSSVGCircleElement.cpp */; }; + B2FA3D590AB75A6F000E5AC4 /* JSSVGCircleElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C710AB75A6E000E5AC4 /* JSSVGCircleElement.h */; }; + B2FA3D5A0AB75A6F000E5AC4 /* JSSVGClipPathElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C720AB75A6E000E5AC4 /* JSSVGClipPathElement.cpp */; }; + B2FA3D5B0AB75A6F000E5AC4 /* JSSVGClipPathElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C730AB75A6E000E5AC4 /* JSSVGClipPathElement.h */; }; + B2FA3D5C0AB75A6F000E5AC4 /* JSSVGColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C740AB75A6E000E5AC4 /* JSSVGColor.cpp */; }; + B2FA3D5D0AB75A6F000E5AC4 /* JSSVGColor.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C750AB75A6E000E5AC4 /* JSSVGColor.h */; }; + B2FA3D5E0AB75A6F000E5AC4 /* JSSVGComponentTransferFunctionElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C760AB75A6E000E5AC4 /* JSSVGComponentTransferFunctionElement.cpp */; }; + B2FA3D5F0AB75A6F000E5AC4 /* JSSVGComponentTransferFunctionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C770AB75A6E000E5AC4 /* JSSVGComponentTransferFunctionElement.h */; }; + B2FA3D600AB75A6F000E5AC4 /* JSSVGCursorElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C780AB75A6E000E5AC4 /* JSSVGCursorElement.cpp */; }; + B2FA3D610AB75A6F000E5AC4 /* JSSVGCursorElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C790AB75A6E000E5AC4 /* JSSVGCursorElement.h */; }; + B2FA3D620AB75A6F000E5AC4 /* JSSVGDefsElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C7A0AB75A6E000E5AC4 /* JSSVGDefsElement.cpp */; }; + B2FA3D630AB75A6F000E5AC4 /* JSSVGDefsElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C7B0AB75A6E000E5AC4 /* JSSVGDefsElement.h */; }; + B2FA3D640AB75A6F000E5AC4 /* JSSVGDescElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C7C0AB75A6E000E5AC4 /* JSSVGDescElement.cpp */; }; + B2FA3D650AB75A6F000E5AC4 /* JSSVGDescElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C7D0AB75A6E000E5AC4 /* JSSVGDescElement.h */; }; + B2FA3D660AB75A6F000E5AC4 /* JSSVGDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C7E0AB75A6E000E5AC4 /* JSSVGDocument.cpp */; }; + B2FA3D670AB75A6F000E5AC4 /* JSSVGDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C7F0AB75A6E000E5AC4 /* JSSVGDocument.h */; }; + B2FA3D680AB75A6F000E5AC4 /* JSSVGEllipseElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C800AB75A6E000E5AC4 /* JSSVGEllipseElement.cpp */; }; + B2FA3D690AB75A6F000E5AC4 /* JSSVGEllipseElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C810AB75A6E000E5AC4 /* JSSVGEllipseElement.h */; }; + B2FA3D6A0AB75A6F000E5AC4 /* JSSVGFEBlendElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C820AB75A6E000E5AC4 /* JSSVGFEBlendElement.cpp */; }; + B2FA3D6B0AB75A6F000E5AC4 /* JSSVGFEBlendElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C830AB75A6E000E5AC4 /* JSSVGFEBlendElement.h */; }; + B2FA3D6C0AB75A6F000E5AC4 /* JSSVGFEColorMatrixElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C840AB75A6E000E5AC4 /* JSSVGFEColorMatrixElement.cpp */; }; + B2FA3D6D0AB75A6F000E5AC4 /* JSSVGFEColorMatrixElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C850AB75A6E000E5AC4 /* JSSVGFEColorMatrixElement.h */; }; + B2FA3D6E0AB75A6F000E5AC4 /* JSSVGFEComponentTransferElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C860AB75A6E000E5AC4 /* JSSVGFEComponentTransferElement.cpp */; }; + B2FA3D6F0AB75A6F000E5AC4 /* JSSVGFEComponentTransferElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C870AB75A6E000E5AC4 /* JSSVGFEComponentTransferElement.h */; }; + B2FA3D700AB75A6F000E5AC4 /* JSSVGFECompositeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C880AB75A6E000E5AC4 /* JSSVGFECompositeElement.cpp */; }; + B2FA3D710AB75A6F000E5AC4 /* JSSVGFECompositeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C890AB75A6E000E5AC4 /* JSSVGFECompositeElement.h */; }; + B2FA3D720AB75A6F000E5AC4 /* JSSVGFEDiffuseLightingElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C8A0AB75A6E000E5AC4 /* JSSVGFEDiffuseLightingElement.cpp */; }; + B2FA3D730AB75A6F000E5AC4 /* JSSVGFEDiffuseLightingElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C8B0AB75A6E000E5AC4 /* JSSVGFEDiffuseLightingElement.h */; }; + B2FA3D740AB75A6F000E5AC4 /* JSSVGFEDisplacementMapElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C8C0AB75A6E000E5AC4 /* JSSVGFEDisplacementMapElement.cpp */; }; + B2FA3D750AB75A6F000E5AC4 /* JSSVGFEDisplacementMapElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C8D0AB75A6E000E5AC4 /* JSSVGFEDisplacementMapElement.h */; }; + B2FA3D760AB75A6F000E5AC4 /* JSSVGFEDistantLightElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C8E0AB75A6E000E5AC4 /* JSSVGFEDistantLightElement.cpp */; }; + B2FA3D770AB75A6F000E5AC4 /* JSSVGFEDistantLightElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C8F0AB75A6E000E5AC4 /* JSSVGFEDistantLightElement.h */; }; + B2FA3D780AB75A6F000E5AC4 /* JSSVGFEFloodElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C900AB75A6E000E5AC4 /* JSSVGFEFloodElement.cpp */; }; + B2FA3D790AB75A6F000E5AC4 /* JSSVGFEFloodElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C910AB75A6E000E5AC4 /* JSSVGFEFloodElement.h */; }; + B2FA3D7A0AB75A6F000E5AC4 /* JSSVGFEFuncAElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C920AB75A6E000E5AC4 /* JSSVGFEFuncAElement.cpp */; }; + B2FA3D7B0AB75A6F000E5AC4 /* JSSVGFEFuncAElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C930AB75A6E000E5AC4 /* JSSVGFEFuncAElement.h */; }; + B2FA3D7C0AB75A6F000E5AC4 /* JSSVGFEFuncBElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C940AB75A6E000E5AC4 /* JSSVGFEFuncBElement.cpp */; }; + B2FA3D7D0AB75A6F000E5AC4 /* JSSVGFEFuncBElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C950AB75A6E000E5AC4 /* JSSVGFEFuncBElement.h */; }; + B2FA3D7E0AB75A6F000E5AC4 /* JSSVGFEFuncGElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C960AB75A6E000E5AC4 /* JSSVGFEFuncGElement.cpp */; }; + B2FA3D7F0AB75A6F000E5AC4 /* JSSVGFEFuncGElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C970AB75A6E000E5AC4 /* JSSVGFEFuncGElement.h */; }; + B2FA3D800AB75A6F000E5AC4 /* JSSVGFEFuncRElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C980AB75A6E000E5AC4 /* JSSVGFEFuncRElement.cpp */; }; + B2FA3D810AB75A6F000E5AC4 /* JSSVGFEFuncRElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C990AB75A6E000E5AC4 /* JSSVGFEFuncRElement.h */; }; + B2FA3D820AB75A6F000E5AC4 /* JSSVGFEGaussianBlurElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C9A0AB75A6E000E5AC4 /* JSSVGFEGaussianBlurElement.cpp */; }; + B2FA3D830AB75A6F000E5AC4 /* JSSVGFEGaussianBlurElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C9B0AB75A6E000E5AC4 /* JSSVGFEGaussianBlurElement.h */; }; + B2FA3D840AB75A6F000E5AC4 /* JSSVGFEImageElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C9C0AB75A6E000E5AC4 /* JSSVGFEImageElement.cpp */; }; + B2FA3D850AB75A6F000E5AC4 /* JSSVGFEImageElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C9D0AB75A6E000E5AC4 /* JSSVGFEImageElement.h */; }; + B2FA3D860AB75A6F000E5AC4 /* JSSVGFEMergeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3C9E0AB75A6E000E5AC4 /* JSSVGFEMergeElement.cpp */; }; + B2FA3D870AB75A6F000E5AC4 /* JSSVGFEMergeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3C9F0AB75A6E000E5AC4 /* JSSVGFEMergeElement.h */; }; + B2FA3D880AB75A6F000E5AC4 /* JSSVGFEMergeNodeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CA00AB75A6E000E5AC4 /* JSSVGFEMergeNodeElement.cpp */; }; + B2FA3D890AB75A6F000E5AC4 /* JSSVGFEMergeNodeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CA10AB75A6E000E5AC4 /* JSSVGFEMergeNodeElement.h */; }; + B2FA3D8A0AB75A6F000E5AC4 /* JSSVGFEOffsetElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CA20AB75A6E000E5AC4 /* JSSVGFEOffsetElement.cpp */; }; + B2FA3D8B0AB75A6F000E5AC4 /* JSSVGFEOffsetElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CA30AB75A6E000E5AC4 /* JSSVGFEOffsetElement.h */; }; + B2FA3D8C0AB75A6F000E5AC4 /* JSSVGFEPointLightElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CA40AB75A6E000E5AC4 /* JSSVGFEPointLightElement.cpp */; }; + B2FA3D8D0AB75A6F000E5AC4 /* JSSVGFEPointLightElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CA50AB75A6E000E5AC4 /* JSSVGFEPointLightElement.h */; }; + B2FA3D8E0AB75A6F000E5AC4 /* JSSVGFESpecularLightingElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CA60AB75A6E000E5AC4 /* JSSVGFESpecularLightingElement.cpp */; }; + B2FA3D8F0AB75A6F000E5AC4 /* JSSVGFESpecularLightingElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CA70AB75A6E000E5AC4 /* JSSVGFESpecularLightingElement.h */; }; + B2FA3D900AB75A6F000E5AC4 /* JSSVGFESpotLightElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CA80AB75A6E000E5AC4 /* JSSVGFESpotLightElement.cpp */; }; + B2FA3D910AB75A6F000E5AC4 /* JSSVGFESpotLightElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CA90AB75A6E000E5AC4 /* JSSVGFESpotLightElement.h */; }; + B2FA3D920AB75A6F000E5AC4 /* JSSVGFETileElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CAA0AB75A6E000E5AC4 /* JSSVGFETileElement.cpp */; }; + B2FA3D930AB75A6F000E5AC4 /* JSSVGFETileElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CAB0AB75A6E000E5AC4 /* JSSVGFETileElement.h */; }; + B2FA3D940AB75A6F000E5AC4 /* JSSVGFETurbulenceElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CAC0AB75A6E000E5AC4 /* JSSVGFETurbulenceElement.cpp */; }; + B2FA3D950AB75A6F000E5AC4 /* JSSVGFETurbulenceElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CAD0AB75A6E000E5AC4 /* JSSVGFETurbulenceElement.h */; }; + B2FA3D960AB75A6F000E5AC4 /* JSSVGFilterElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CAE0AB75A6E000E5AC4 /* JSSVGFilterElement.cpp */; }; + B2FA3D970AB75A6F000E5AC4 /* JSSVGFilterElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CAF0AB75A6E000E5AC4 /* JSSVGFilterElement.h */; }; + B2FA3D980AB75A6F000E5AC4 /* JSSVGForeignObjectElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CB00AB75A6E000E5AC4 /* JSSVGForeignObjectElement.cpp */; }; + B2FA3D990AB75A6F000E5AC4 /* JSSVGForeignObjectElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CB10AB75A6E000E5AC4 /* JSSVGForeignObjectElement.h */; }; + B2FA3D9A0AB75A6F000E5AC4 /* JSSVGGElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CB20AB75A6E000E5AC4 /* JSSVGGElement.cpp */; }; + B2FA3D9B0AB75A6F000E5AC4 /* JSSVGGElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CB30AB75A6E000E5AC4 /* JSSVGGElement.h */; }; + B2FA3D9C0AB75A6F000E5AC4 /* JSSVGGradientElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CB40AB75A6E000E5AC4 /* JSSVGGradientElement.cpp */; }; + B2FA3D9D0AB75A6F000E5AC4 /* JSSVGGradientElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CB50AB75A6E000E5AC4 /* JSSVGGradientElement.h */; }; + 85174EC2BCCAF17EAE3F46F8 /* JSSVGGraphicsElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5A91469E8E9F8485C37A2876 /* JSSVGGraphicsElement.cpp */; }; + 7BE7427381FA906FBB4F0F2C /* JSSVGGraphicsElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 950C4C02BED8936F818E2F99 /* JSSVGGraphicsElement.h */; }; + B2FA3D9E0AB75A6F000E5AC4 /* JSSVGImageElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CB60AB75A6E000E5AC4 /* JSSVGImageElement.cpp */; }; + B2FA3D9F0AB75A6F000E5AC4 /* JSSVGImageElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CB70AB75A6E000E5AC4 /* JSSVGImageElement.h */; }; + B2FA3DA00AB75A6F000E5AC4 /* JSSVGLength.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CB80AB75A6E000E5AC4 /* JSSVGLength.cpp */; }; + B2FA3DA10AB75A6F000E5AC4 /* JSSVGLength.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CB90AB75A6E000E5AC4 /* JSSVGLength.h */; }; + B2FA3DA20AB75A6F000E5AC4 /* JSSVGLengthList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CBA0AB75A6E000E5AC4 /* JSSVGLengthList.cpp */; }; + B2FA3DA30AB75A6F000E5AC4 /* JSSVGLengthList.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CBB0AB75A6E000E5AC4 /* JSSVGLengthList.h */; }; + B2FA3DA40AB75A6F000E5AC4 /* JSSVGLinearGradientElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CBC0AB75A6E000E5AC4 /* JSSVGLinearGradientElement.cpp */; }; + B2FA3DA50AB75A6F000E5AC4 /* JSSVGLinearGradientElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CBD0AB75A6E000E5AC4 /* JSSVGLinearGradientElement.h */; }; + B2FA3DA60AB75A6F000E5AC4 /* JSSVGLineElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CBE0AB75A6E000E5AC4 /* JSSVGLineElement.cpp */; }; + B2FA3DA70AB75A6F000E5AC4 /* JSSVGLineElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CBF0AB75A6E000E5AC4 /* JSSVGLineElement.h */; }; + B2FA3DA80AB75A6F000E5AC4 /* JSSVGMarkerElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CC00AB75A6E000E5AC4 /* JSSVGMarkerElement.cpp */; }; + B2FA3DA90AB75A6F000E5AC4 /* JSSVGMarkerElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CC10AB75A6E000E5AC4 /* JSSVGMarkerElement.h */; }; + B2FA3DAA0AB75A6F000E5AC4 /* JSSVGMaskElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CC20AB75A6E000E5AC4 /* JSSVGMaskElement.cpp */; }; + B2FA3DAB0AB75A6F000E5AC4 /* JSSVGMaskElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CC30AB75A6E000E5AC4 /* JSSVGMaskElement.h */; }; + B2FA3DAC0AB75A6F000E5AC4 /* JSSVGMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CC40AB75A6E000E5AC4 /* JSSVGMatrix.cpp */; }; + B2FA3DAD0AB75A6F000E5AC4 /* JSSVGMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CC50AB75A6E000E5AC4 /* JSSVGMatrix.h */; }; + B2FA3DAE0AB75A6F000E5AC4 /* JSSVGMetadataElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CC60AB75A6E000E5AC4 /* JSSVGMetadataElement.cpp */; }; + B2FA3DAF0AB75A6F000E5AC4 /* JSSVGMetadataElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CC70AB75A6E000E5AC4 /* JSSVGMetadataElement.h */; }; + B2FA3DB00AB75A6F000E5AC4 /* JSSVGNumberList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CC80AB75A6E000E5AC4 /* JSSVGNumberList.cpp */; }; + B2FA3DB10AB75A6F000E5AC4 /* JSSVGNumberList.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CC90AB75A6E000E5AC4 /* JSSVGNumberList.h */; }; + B2FA3DB20AB75A6F000E5AC4 /* JSSVGPaint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CCA0AB75A6E000E5AC4 /* JSSVGPaint.cpp */; }; + B2FA3DB30AB75A6F000E5AC4 /* JSSVGPaint.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CCB0AB75A6E000E5AC4 /* JSSVGPaint.h */; }; + B2FA3DB40AB75A6F000E5AC4 /* JSSVGPathElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CCC0AB75A6E000E5AC4 /* JSSVGPathElement.cpp */; }; + B2FA3DB50AB75A6F000E5AC4 /* JSSVGPathElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CCD0AB75A6E000E5AC4 /* JSSVGPathElement.h */; }; + B2FA3DB60AB75A6F000E5AC4 /* JSSVGPathSeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CCE0AB75A6E000E5AC4 /* JSSVGPathSeg.cpp */; }; + B2FA3DB70AB75A6F000E5AC4 /* JSSVGPathSeg.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CCF0AB75A6E000E5AC4 /* JSSVGPathSeg.h */; }; + B2FA3DB80AB75A6F000E5AC4 /* JSSVGPathSegArcAbs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CD00AB75A6E000E5AC4 /* JSSVGPathSegArcAbs.cpp */; }; + B2FA3DB90AB75A6F000E5AC4 /* JSSVGPathSegArcAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CD10AB75A6E000E5AC4 /* JSSVGPathSegArcAbs.h */; }; + B2FA3DBA0AB75A6F000E5AC4 /* JSSVGPathSegArcRel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CD20AB75A6E000E5AC4 /* JSSVGPathSegArcRel.cpp */; }; + B2FA3DBB0AB75A6F000E5AC4 /* JSSVGPathSegArcRel.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CD30AB75A6E000E5AC4 /* JSSVGPathSegArcRel.h */; }; + B2FA3DBC0AB75A6F000E5AC4 /* JSSVGPathSegClosePath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CD40AB75A6E000E5AC4 /* JSSVGPathSegClosePath.cpp */; }; + B2FA3DBD0AB75A6F000E5AC4 /* JSSVGPathSegClosePath.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CD50AB75A6E000E5AC4 /* JSSVGPathSegClosePath.h */; }; + B2FA3DBE0AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicAbs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CD60AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicAbs.cpp */; }; + B2FA3DBF0AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CD70AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicAbs.h */; }; + B2FA3DC00AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicRel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CD80AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicRel.cpp */; }; + B2FA3DC10AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicRel.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CD90AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicRel.h */; }; + B2FA3DC20AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothAbs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CDA0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothAbs.cpp */; }; + B2FA3DC30AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CDB0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothAbs.h */; }; + B2FA3DC40AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothRel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CDC0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothRel.cpp */; }; + B2FA3DC50AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothRel.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CDD0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothRel.h */; }; + B2FA3DC60AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticAbs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CDE0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticAbs.cpp */; }; + B2FA3DC70AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CDF0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticAbs.h */; }; + B2FA3DC80AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticRel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CE00AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticRel.cpp */; }; + B2FA3DC90AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticRel.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CE10AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticRel.h */; }; + B2FA3DCA0AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothAbs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CE20AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothAbs.cpp */; }; + B2FA3DCB0AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CE30AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothAbs.h */; }; + B2FA3DCC0AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothRel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CE40AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothRel.cpp */; }; + B2FA3DCD0AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothRel.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CE50AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothRel.h */; }; + B2FA3DCE0AB75A6F000E5AC4 /* JSSVGPathSegLinetoAbs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CE60AB75A6E000E5AC4 /* JSSVGPathSegLinetoAbs.cpp */; }; + B2FA3DCF0AB75A6F000E5AC4 /* JSSVGPathSegLinetoAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CE70AB75A6E000E5AC4 /* JSSVGPathSegLinetoAbs.h */; }; + B2FA3DD00AB75A6F000E5AC4 /* JSSVGPathSegLinetoHorizontalAbs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CE80AB75A6E000E5AC4 /* JSSVGPathSegLinetoHorizontalAbs.cpp */; }; + B2FA3DD10AB75A6F000E5AC4 /* JSSVGPathSegLinetoHorizontalAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CE90AB75A6E000E5AC4 /* JSSVGPathSegLinetoHorizontalAbs.h */; }; + B2FA3DD20AB75A6F000E5AC4 /* JSSVGPathSegLinetoHorizontalRel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CEA0AB75A6E000E5AC4 /* JSSVGPathSegLinetoHorizontalRel.cpp */; }; + B2FA3DD30AB75A6F000E5AC4 /* JSSVGPathSegLinetoHorizontalRel.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CEB0AB75A6E000E5AC4 /* JSSVGPathSegLinetoHorizontalRel.h */; }; + B2FA3DD40AB75A6F000E5AC4 /* JSSVGPathSegLinetoRel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CEC0AB75A6E000E5AC4 /* JSSVGPathSegLinetoRel.cpp */; }; + B2FA3DD50AB75A6F000E5AC4 /* JSSVGPathSegLinetoRel.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CED0AB75A6E000E5AC4 /* JSSVGPathSegLinetoRel.h */; }; + B2FA3DD60AB75A6F000E5AC4 /* JSSVGPathSegLinetoVerticalAbs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CEE0AB75A6E000E5AC4 /* JSSVGPathSegLinetoVerticalAbs.cpp */; }; + B2FA3DD70AB75A6F000E5AC4 /* JSSVGPathSegLinetoVerticalAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CEF0AB75A6E000E5AC4 /* JSSVGPathSegLinetoVerticalAbs.h */; }; + B2FA3DD80AB75A6F000E5AC4 /* JSSVGPathSegLinetoVerticalRel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CF00AB75A6E000E5AC4 /* JSSVGPathSegLinetoVerticalRel.cpp */; }; + B2FA3DD90AB75A6F000E5AC4 /* JSSVGPathSegLinetoVerticalRel.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CF10AB75A6E000E5AC4 /* JSSVGPathSegLinetoVerticalRel.h */; }; + B2FA3DDA0AB75A6F000E5AC4 /* JSSVGPathSegList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CF20AB75A6E000E5AC4 /* JSSVGPathSegList.cpp */; }; + B2FA3DDB0AB75A6F000E5AC4 /* JSSVGPathSegList.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CF30AB75A6E000E5AC4 /* JSSVGPathSegList.h */; }; + B2FA3DDC0AB75A6F000E5AC4 /* JSSVGPathSegMovetoAbs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CF40AB75A6E000E5AC4 /* JSSVGPathSegMovetoAbs.cpp */; }; + B2FA3DDD0AB75A6F000E5AC4 /* JSSVGPathSegMovetoAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CF50AB75A6E000E5AC4 /* JSSVGPathSegMovetoAbs.h */; }; + B2FA3DDE0AB75A6F000E5AC4 /* JSSVGPathSegMovetoRel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CF60AB75A6E000E5AC4 /* JSSVGPathSegMovetoRel.cpp */; }; + B2FA3DDF0AB75A6F000E5AC4 /* JSSVGPathSegMovetoRel.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CF70AB75A6E000E5AC4 /* JSSVGPathSegMovetoRel.h */; }; + B2FA3DE00AB75A6F000E5AC4 /* JSSVGPatternElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CF80AB75A6E000E5AC4 /* JSSVGPatternElement.cpp */; }; + B2FA3DE10AB75A6F000E5AC4 /* JSSVGPatternElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CF90AB75A6E000E5AC4 /* JSSVGPatternElement.h */; }; + B2FA3DE20AB75A6F000E5AC4 /* JSSVGPointList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CFA0AB75A6E000E5AC4 /* JSSVGPointList.cpp */; }; + B2FA3DE30AB75A6F000E5AC4 /* JSSVGPointList.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CFB0AB75A6E000E5AC4 /* JSSVGPointList.h */; }; + B2FA3DE50AB75A6F000E5AC4 /* JSSVGPolygonElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CFD0AB75A6E000E5AC4 /* JSSVGPolygonElement.cpp */; }; + B2FA3DE60AB75A6F000E5AC4 /* JSSVGPolygonElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3CFE0AB75A6E000E5AC4 /* JSSVGPolygonElement.h */; }; + B2FA3DE70AB75A6F000E5AC4 /* JSSVGPolylineElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3CFF0AB75A6E000E5AC4 /* JSSVGPolylineElement.cpp */; }; + B2FA3DE80AB75A6F000E5AC4 /* JSSVGPolylineElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D000AB75A6E000E5AC4 /* JSSVGPolylineElement.h */; }; + B2FA3DE90AB75A6F000E5AC4 /* JSSVGPreserveAspectRatio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D010AB75A6E000E5AC4 /* JSSVGPreserveAspectRatio.cpp */; }; + B2FA3DEA0AB75A6F000E5AC4 /* JSSVGPreserveAspectRatio.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D020AB75A6E000E5AC4 /* JSSVGPreserveAspectRatio.h */; }; + B2FA3DEB0AB75A6F000E5AC4 /* JSSVGRadialGradientElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D030AB75A6E000E5AC4 /* JSSVGRadialGradientElement.cpp */; }; + B2FA3DEC0AB75A6F000E5AC4 /* JSSVGRadialGradientElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D040AB75A6E000E5AC4 /* JSSVGRadialGradientElement.h */; }; + B2FA3DED0AB75A6F000E5AC4 /* JSSVGRectElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D050AB75A6E000E5AC4 /* JSSVGRectElement.cpp */; }; + B2FA3DEE0AB75A6F000E5AC4 /* JSSVGRectElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D060AB75A6E000E5AC4 /* JSSVGRectElement.h */; }; + B2FA3DF00AB75A6F000E5AC4 /* JSSVGRenderingIntent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D080AB75A6E000E5AC4 /* JSSVGRenderingIntent.cpp */; }; + B2FA3DF10AB75A6F000E5AC4 /* JSSVGRenderingIntent.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D090AB75A6E000E5AC4 /* JSSVGRenderingIntent.h */; }; + B2FA3DF20AB75A6F000E5AC4 /* JSSVGScriptElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D0A0AB75A6E000E5AC4 /* JSSVGScriptElement.cpp */; }; + B2FA3DF30AB75A6F000E5AC4 /* JSSVGScriptElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D0B0AB75A6E000E5AC4 /* JSSVGScriptElement.h */; }; + B2FA3DF40AB75A6F000E5AC4 /* JSSVGSetElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D0C0AB75A6E000E5AC4 /* JSSVGSetElement.cpp */; }; + B2FA3DF50AB75A6F000E5AC4 /* JSSVGSetElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D0D0AB75A6E000E5AC4 /* JSSVGSetElement.h */; }; + B2FA3DF60AB75A6F000E5AC4 /* JSSVGStopElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D0E0AB75A6E000E5AC4 /* JSSVGStopElement.cpp */; }; + B2FA3DF70AB75A6F000E5AC4 /* JSSVGStopElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D0F0AB75A6E000E5AC4 /* JSSVGStopElement.h */; }; + B2FA3DF80AB75A6F000E5AC4 /* JSSVGStringList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D100AB75A6E000E5AC4 /* JSSVGStringList.cpp */; }; + B2FA3DF90AB75A6F000E5AC4 /* JSSVGStringList.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D110AB75A6E000E5AC4 /* JSSVGStringList.h */; }; + B2FA3DFA0AB75A6F000E5AC4 /* JSSVGStyleElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D120AB75A6E000E5AC4 /* JSSVGStyleElement.cpp */; }; + B2FA3DFA0AB75A6F000E5AC5 /* JSSVGStyledElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D120AB75A6E000E5AC5 /* JSSVGStyledElement.cpp */; }; + B2FA3DFB0AB75A6F000E5AC4 /* JSSVGStyleElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D130AB75A6E000E5AC4 /* JSSVGStyleElement.h */; }; + B2FA3DFB0AB75A6F000E5AC5 /* JSSVGStyledElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D130AB75A6E000E5AC5 /* JSSVGStyledElement.h */; }; + B2FA3DFC0AB75A6F000E5AC4 /* JSSVGSVGElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D140AB75A6F000E5AC4 /* JSSVGSVGElement.cpp */; }; + B2FA3DFD0AB75A6F000E5AC4 /* JSSVGSVGElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D150AB75A6F000E5AC4 /* JSSVGSVGElement.h */; }; + B2FA3DFE0AB75A6F000E5AC4 /* JSSVGSwitchElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D160AB75A6F000E5AC4 /* JSSVGSwitchElement.cpp */; }; + B2FA3DFF0AB75A6F000E5AC4 /* JSSVGSwitchElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D170AB75A6F000E5AC4 /* JSSVGSwitchElement.h */; }; + B2FA3E000AB75A6F000E5AC4 /* JSSVGSymbolElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D180AB75A6F000E5AC4 /* JSSVGSymbolElement.cpp */; }; + B2FA3E010AB75A6F000E5AC4 /* JSSVGSymbolElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D190AB75A6F000E5AC4 /* JSSVGSymbolElement.h */; }; + B2FA3E020AB75A6F000E5AC4 /* JSSVGTextContentElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D1A0AB75A6F000E5AC4 /* JSSVGTextContentElement.cpp */; }; + B2FA3E030AB75A6F000E5AC4 /* JSSVGTextContentElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D1B0AB75A6F000E5AC4 /* JSSVGTextContentElement.h */; }; + B2FA3E040AB75A6F000E5AC4 /* JSSVGTextElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D1C0AB75A6F000E5AC4 /* JSSVGTextElement.cpp */; }; + B2FA3E050AB75A6F000E5AC4 /* JSSVGTextElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D1D0AB75A6F000E5AC4 /* JSSVGTextElement.h */; }; + B2FA3E060AB75A6F000E5AC4 /* JSSVGTextPositioningElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D1E0AB75A6F000E5AC4 /* JSSVGTextPositioningElement.cpp */; }; + B2FA3E070AB75A6F000E5AC4 /* JSSVGTextPositioningElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D1F0AB75A6F000E5AC4 /* JSSVGTextPositioningElement.h */; }; + B2FA3E080AB75A6F000E5AC4 /* JSSVGTitleElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D200AB75A6F000E5AC4 /* JSSVGTitleElement.cpp */; }; + B2FA3E090AB75A6F000E5AC4 /* JSSVGTitleElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D210AB75A6F000E5AC4 /* JSSVGTitleElement.h */; }; + B2FA3E0A0AB75A6F000E5AC4 /* JSSVGTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D220AB75A6F000E5AC4 /* JSSVGTransform.cpp */; }; + B2FA3E0B0AB75A6F000E5AC4 /* JSSVGTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D230AB75A6F000E5AC4 /* JSSVGTransform.h */; }; + B2FA3E0C0AB75A6F000E5AC4 /* JSSVGTransformList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D240AB75A6F000E5AC4 /* JSSVGTransformList.cpp */; }; + B2FA3E0D0AB75A6F000E5AC4 /* JSSVGTransformList.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D250AB75A6F000E5AC4 /* JSSVGTransformList.h */; }; + B2FA3E0E0AB75A6F000E5AC4 /* JSSVGTRefElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D260AB75A6F000E5AC4 /* JSSVGTRefElement.cpp */; }; + B2FA3E0F0AB75A6F000E5AC4 /* JSSVGTRefElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D270AB75A6F000E5AC4 /* JSSVGTRefElement.h */; }; + B2FA3E100AB75A6F000E5AC4 /* JSSVGTSpanElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D280AB75A6F000E5AC4 /* JSSVGTSpanElement.cpp */; }; + B2FA3E110AB75A6F000E5AC4 /* JSSVGTSpanElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D290AB75A6F000E5AC4 /* JSSVGTSpanElement.h */; }; + B2FA3E120AB75A6F000E5AC4 /* JSSVGUnitTypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D2A0AB75A6F000E5AC4 /* JSSVGUnitTypes.cpp */; }; + B2FA3E130AB75A6F000E5AC4 /* JSSVGUnitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D2B0AB75A6F000E5AC4 /* JSSVGUnitTypes.h */; }; + B2FA3E140AB75A6F000E5AC4 /* JSSVGUseElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D2C0AB75A6F000E5AC4 /* JSSVGUseElement.cpp */; }; + B2FA3E150AB75A6F000E5AC4 /* JSSVGUseElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D2D0AB75A6F000E5AC4 /* JSSVGUseElement.h */; }; + B2FA3E160AB75A6F000E5AC4 /* JSSVGViewElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D2E0AB75A6F000E5AC4 /* JSSVGViewElement.cpp */; }; + B2FA3E170AB75A6F000E5AC4 /* JSSVGViewElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D2F0AB75A6F000E5AC4 /* JSSVGViewElement.h */; }; + B2FA3E180AB75A6F000E5AC4 /* JSSVGZoomEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D300AB75A6F000E5AC4 /* JSSVGZoomEvent.cpp */; }; + B2FA3E190AB75A6F000E5AC4 /* JSSVGZoomEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D310AB75A6F000E5AC4 /* JSSVGZoomEvent.h */; }; + B50F5B810E96CD9900AD71A6 /* WebCoreObjCExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = B50F5B800E96CD9900AD71A6 /* WebCoreObjCExtras.mm */; settings = {COMPILER_FLAGS = "-Wno-deprecated-declarations"; }; }; + B525A96511CA2340003A23A8 /* JSSQLException.h in Headers */ = {isa = PBXBuildFile; fileRef = B525A96311CA2340003A23A8 /* JSSQLException.h */; }; + B525A96611CA2340003A23A8 /* JSSQLException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B525A96411CA2340003A23A8 /* JSSQLException.cpp */; }; + B5320D6B122A24E9002D1440 /* FontPlatformData.h in Headers */ = {isa = PBXBuildFile; fileRef = B5320D69122A24E9002D1440 /* FontPlatformData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B5320D6C122A24E9002D1440 /* FontPlatformDataCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = B5320D6A122A24E9002D1440 /* FontPlatformDataCocoa.mm */; }; + B55D5AA4119131FC00BCC315 /* JSSQLTransactionSyncCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B55D5AA2119131FC00BCC315 /* JSSQLTransactionSyncCallback.h */; }; + B55D5AA5119131FC00BCC315 /* JSSQLTransactionSyncCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B55D5AA3119131FC00BCC315 /* JSSQLTransactionSyncCallback.cpp */; }; + B55D5AA91191325000BCC315 /* JSSQLTransactionSyncCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B55D5AA71191325000BCC315 /* JSSQLTransactionSyncCustom.cpp */; }; + B58CEB6911913607002A6790 /* JSDatabaseSync.h in Headers */ = {isa = PBXBuildFile; fileRef = B58CEB6711913607002A6790 /* JSDatabaseSync.h */; }; + B58CEB6A11913607002A6790 /* JSDatabaseSync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B58CEB6811913607002A6790 /* JSDatabaseSync.cpp */; }; + B58CEB6D1191361C002A6790 /* JSSQLTransactionSync.h in Headers */ = {isa = PBXBuildFile; fileRef = B58CEB6B1191361C002A6790 /* JSSQLTransactionSync.h */; }; + B58CEB6E1191361C002A6790 /* JSSQLTransactionSync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B58CEB6C1191361C002A6790 /* JSSQLTransactionSync.cpp */; }; + B59DD699119029E5007E9684 /* JSDatabaseCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B59DD697119029E5007E9684 /* JSDatabaseCallback.h */; }; + B59DD69A119029E5007E9684 /* JSDatabaseCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B59DD698119029E5007E9684 /* JSDatabaseCallback.cpp */; }; + B59DD69D11902A42007E9684 /* JSSQLTransactionCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B59DD69B11902A42007E9684 /* JSSQLTransactionCallback.h */; }; + B59DD69E11902A42007E9684 /* JSSQLTransactionCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B59DD69C11902A42007E9684 /* JSSQLTransactionCallback.cpp */; }; + B59DD6A111902A52007E9684 /* JSSQLTransactionErrorCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B59DD69F11902A52007E9684 /* JSSQLTransactionErrorCallback.h */; }; + B59DD6A211902A52007E9684 /* JSSQLTransactionErrorCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B59DD6A011902A52007E9684 /* JSSQLTransactionErrorCallback.cpp */; }; + B59DD6A511902A62007E9684 /* JSSQLStatementCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B59DD6A311902A62007E9684 /* JSSQLStatementCallback.h */; }; + B59DD6A611902A62007E9684 /* JSSQLStatementCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B59DD6A411902A62007E9684 /* JSSQLStatementCallback.cpp */; }; + B59DD6A911902A71007E9684 /* JSSQLStatementErrorCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B59DD6A711902A71007E9684 /* JSSQLStatementErrorCallback.h */; }; + B59DD6AA11902A71007E9684 /* JSSQLStatementErrorCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B59DD6A811902A71007E9684 /* JSSQLStatementErrorCallback.cpp */; }; + B5A684220FFABE9800D24689 /* SQLiteFileSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = B5A684210FFABE9800D24689 /* SQLiteFileSystem.h */; }; + B5A684240FFABEAA00D24689 /* SQLiteFileSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B5A684230FFABEAA00D24689 /* SQLiteFileSystem.cpp */; }; + B5D31DFA11CF610B009F22B4 /* ActiveDOMCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B5D31DF811CF610B009F22B4 /* ActiveDOMCallback.cpp */; }; + B5D31DFB11CF610B009F22B4 /* ActiveDOMCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B5D31DF911CF610B009F22B4 /* ActiveDOMCallback.h */; }; + B6566270120B1227006EA85C /* JSIDBTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = B656626E120B1227006EA85C /* JSIDBTransaction.h */; }; + B658FFA11522EF3A00DD5595 /* JSRadioNodeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B658FF9F1522EF3A00DD5595 /* JSRadioNodeList.cpp */; }; + B658FFA21522EF3A00DD5595 /* JSRadioNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = B658FFA01522EF3A00DD5595 /* JSRadioNodeList.h */; }; + B658FFA51522EFAA00DD5595 /* RadioNodeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B658FFA31522EFAA00DD5595 /* RadioNodeList.cpp */; }; + B658FFA61522EFAA00DD5595 /* RadioNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = B658FFA41522EFAA00DD5595 /* RadioNodeList.h */; }; + B6D9D23514EABD260090D75E /* FocusEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = B6D9D23314EABD260090D75E /* FocusEvent.h */; }; + B6D9D23614EABD260090D75E /* FocusEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6D9D23414EABD260090D75E /* FocusEvent.cpp */; }; + B6D9D27B14EAC0860090D75E /* JSFocusEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = B6D9D27914EAC0860090D75E /* JSFocusEvent.h */; }; + B6D9D27C14EAC0860090D75E /* JSFocusEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6D9D27A14EAC0860090D75E /* JSFocusEvent.cpp */; }; + B71FE6DF11091CB300DAEF77 /* PrintContext.h in Headers */ = {isa = PBXBuildFile; fileRef = B776D43A1104525D00BEB0EC /* PrintContext.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B734B181119B9911006587BD /* FontTranscoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B734B180119B9911006587BD /* FontTranscoder.cpp */; }; + B734B183119B991D006587BD /* FontTranscoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B734B182119B991D006587BD /* FontTranscoder.h */; }; + B776D43D1104527500BEB0EC /* PrintContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B776D43C1104527500BEB0EC /* PrintContext.cpp */; }; + B885E8D411E06DD2009FFBF4 /* InspectorApplicationCacheAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B885E8D211E06DD2009FFBF4 /* InspectorApplicationCacheAgent.cpp */; }; + B885E8D511E06DD2009FFBF4 /* InspectorApplicationCacheAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = B885E8D311E06DD2009FFBF4 /* InspectorApplicationCacheAgent.h */; settings = {ATTRIBUTES = (); }; }; + B8DBDB4B130B0F8A00F5CDB1 /* SetSelectionCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B8DBDB47130B0F8A00F5CDB1 /* SetSelectionCommand.cpp */; }; + B8DBDB4C130B0F8A00F5CDB1 /* SetSelectionCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B8DBDB48130B0F8A00F5CDB1 /* SetSelectionCommand.h */; }; + B8DBDB4D130B0F8A00F5CDB1 /* SpellingCorrectionCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B8DBDB49130B0F8A00F5CDB1 /* SpellingCorrectionCommand.cpp */; }; + B8DBDB4E130B0F8A00F5CDB1 /* SpellingCorrectionCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B8DBDB4A130B0F8A00F5CDB1 /* SpellingCorrectionCommand.h */; }; + BC00F0040E0A185500FD04E3 /* DOMFile.h in Headers */ = {isa = PBXBuildFile; fileRef = BC00EFFE0E0A185500FD04E3 /* DOMFile.h */; }; + BC00F0050E0A185500FD04E3 /* DOMFile.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC00EFFF0E0A185500FD04E3 /* DOMFile.mm */; }; + BC00F0060E0A185500FD04E3 /* DOMFileInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BC00F0000E0A185500FD04E3 /* DOMFileInternal.h */; }; + BC00F0070E0A185500FD04E3 /* DOMFileList.h in Headers */ = {isa = PBXBuildFile; fileRef = BC00F0010E0A185500FD04E3 /* DOMFileList.h */; }; + BC00F0080E0A185500FD04E3 /* DOMFileList.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC00F0020E0A185500FD04E3 /* DOMFileList.mm */; }; + BC00F0090E0A185500FD04E3 /* DOMFileListInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BC00F0030E0A185500FD04E3 /* DOMFileListInternal.h */; }; + BC00F0140E0A189500FD04E3 /* JSFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC00F0100E0A189500FD04E3 /* JSFile.cpp */; }; + BC00F0150E0A189500FD04E3 /* JSFile.h in Headers */ = {isa = PBXBuildFile; fileRef = BC00F0110E0A189500FD04E3 /* JSFile.h */; }; + BC00F0160E0A189500FD04E3 /* JSFileList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC00F0120E0A189500FD04E3 /* JSFileList.cpp */; }; + BC00F0170E0A189500FD04E3 /* JSFileList.h in Headers */ = {isa = PBXBuildFile; fileRef = BC00F0130E0A189500FD04E3 /* JSFileList.h */; }; + BC00F0360E0A19DB00FD04E3 /* DOMFile.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = BC00EFFE0E0A185500FD04E3 /* DOMFile.h */; }; + BC00F0370E0A19DB00FD04E3 /* DOMFileInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = BC00F0000E0A185500FD04E3 /* DOMFileInternal.h */; }; + BC00F0380E0A19DB00FD04E3 /* DOMFileList.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = BC00F0010E0A185500FD04E3 /* DOMFileList.h */; }; + BC00F0390E0A19DB00FD04E3 /* DOMFileListInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = BC00F0030E0A185500FD04E3 /* DOMFileListInternal.h */; }; + BC02A4B70E0997B9004B6D2B /* CSSParserValues.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02A4B60E0997B9004B6D2B /* CSSParserValues.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC02A5400E099C5A004B6D2B /* CSSParserValues.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02A53F0E099C5A004B6D2B /* CSSParserValues.cpp */; }; + BC02A63C0E09A9CF004B6D2B /* CSSFunctionValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02A63B0E09A9CF004B6D2B /* CSSFunctionValue.h */; }; + BC02A6460E09AAE9004B6D2B /* CSSFunctionValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02A6450E09AAE9004B6D2B /* CSSFunctionValue.cpp */; }; + BC06ED060BFD5BAE00856E9D /* JSHTMLTableSectionElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC06ED040BFD5BAE00856E9D /* JSHTMLTableSectionElement.cpp */; }; + BC06ED070BFD5BAE00856E9D /* JSHTMLTableSectionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC06ED050BFD5BAE00856E9D /* JSHTMLTableSectionElement.h */; }; + BC06ED9D0BFD660600856E9D /* JSHTMLTableColElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC06ED990BFD660600856E9D /* JSHTMLTableColElement.cpp */; }; + BC06ED9E0BFD660600856E9D /* JSHTMLTableColElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC06ED9A0BFD660600856E9D /* JSHTMLTableColElement.h */; }; + BC06ED9F0BFD660600856E9D /* JSHTMLTableRowElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC06ED9B0BFD660600856E9D /* JSHTMLTableRowElement.cpp */; }; + BC06EDA00BFD660600856E9D /* JSHTMLTableRowElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC06ED9C0BFD660600856E9D /* JSHTMLTableRowElement.h */; }; + BC06EDE30BFD6D0D00856E9D /* JSHTMLTableCellElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC06EDE10BFD6D0D00856E9D /* JSHTMLTableCellElement.cpp */; }; + BC06EDE40BFD6D0D00856E9D /* JSHTMLTableCellElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC06EDE20BFD6D0D00856E9D /* JSHTMLTableCellElement.h */; }; + BC06EE040BFD71AA00856E9D /* JSHTMLTableElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC06EE020BFD71AA00856E9D /* JSHTMLTableElement.cpp */; }; + BC06EE050BFD71AA00856E9D /* JSHTMLTableElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC06EE030BFD71AA00856E9D /* JSHTMLTableElement.h */; }; + BC073BAA0C399B1F000F5979 /* FloatConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = BC073BA90C399B1F000F5979 /* FloatConversion.h */; }; + BC0B358314C4F9540055E22A /* RunLoopMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC0B358214C4F9540055E22A /* RunLoopMac.mm */; }; + BC0B358714C4F9830055E22A /* RunLoop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC0B358514C4F9830055E22A /* RunLoop.cpp */; }; + BC0B358814C4F9830055E22A /* RunLoop.h in Headers */ = {isa = PBXBuildFile; fileRef = BC0B358614C4F9830055E22A /* RunLoop.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC0B36A40CD3C67C00AC7EB5 /* Console.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC0B36A10CD3C67C00AC7EB5 /* Console.cpp */; }; + BC0B36A50CD3C67C00AC7EB5 /* Console.h in Headers */ = {isa = PBXBuildFile; fileRef = BC0B36A20CD3C67C00AC7EB5 /* Console.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC124EE70C2641CD009E2349 /* BarProp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC124EE40C2641CD009E2349 /* BarProp.cpp */; }; + BC124EE80C2641CD009E2349 /* BarProp.h in Headers */ = {isa = PBXBuildFile; fileRef = BC124EE50C2641CD009E2349 /* BarProp.h */; }; + BC124EFF0C26447A009E2349 /* JSBarProp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC124EFD0C26447A009E2349 /* JSBarProp.cpp */; }; + BC124F000C26447A009E2349 /* JSBarProp.h in Headers */ = {isa = PBXBuildFile; fileRef = BC124EFE0C26447A009E2349 /* JSBarProp.h */; }; + BC128A73137C867C00CAC845 /* RenderGrid.h in Headers */ = {isa = PBXBuildFile; fileRef = BC128A72137C867C00CAC845 /* RenderGrid.h */; }; + BC128B01137C8D4600CAC845 /* RenderGrid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC128B00137C8D4600CAC845 /* RenderGrid.cpp */; }; + BC14028A0E83680800319717 /* ScrollbarThemeComposite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC1402880E83680800319717 /* ScrollbarThemeComposite.cpp */; }; + BC14028B0E83680800319717 /* ScrollbarThemeComposite.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1402890E83680800319717 /* ScrollbarThemeComposite.h */; }; + BC17F9660B64EBB8004A65CB /* JSHTMLSelectElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC17F9650B64EBB8004A65CB /* JSHTMLSelectElementCustom.cpp */; }; + BC1A37AD097C715F0019F3D8 /* DOM.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1A3797097C715F0019F3D8 /* DOM.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC1A37AE097C715F0019F3D8 /* DOM.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC1A3798097C715F0019F3D8 /* DOM.mm */; }; + BC1A37AF097C715F0019F3D8 /* DOMCore.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1A3799097C715F0019F3D8 /* DOMCore.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC1A37B0097C715F0019F3D8 /* DOMCSS.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1A379A097C715F0019F3D8 /* DOMCSS.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC1A37B1097C715F0019F3D8 /* DOMCSS.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC1A379B097C715F0019F3D8 /* DOMCSS.mm */; }; + BC1A37B2097C715F0019F3D8 /* DOMEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1A379C097C715F0019F3D8 /* DOMEvents.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC1A37B3097C715F0019F3D8 /* DOMEvents.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC1A379D097C715F0019F3D8 /* DOMEvents.mm */; }; + BC1A37B5097C715F0019F3D8 /* DOMExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1A379F097C715F0019F3D8 /* DOMExtensions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC1A37B6097C715F0019F3D8 /* DOMHTML.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1A37A0097C715F0019F3D8 /* DOMHTML.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC1A37B7097C715F0019F3D8 /* DOMHTML.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC1A37A1097C715F0019F3D8 /* DOMHTML.mm */; }; + BC1A37B9097C715F0019F3D8 /* DOMInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1A37A3097C715F0019F3D8 /* DOMInternal.h */; }; + BC1A37BA097C715F0019F3D8 /* DOMInternal.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC1A37A4097C715F0019F3D8 /* DOMInternal.mm */; }; + BC1A37BB097C715F0019F3D8 /* DOMPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1A37A5097C715F0019F3D8 /* DOMPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC1A37BD097C715F0019F3D8 /* DOMStylesheets.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1A37A7097C715F0019F3D8 /* DOMStylesheets.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC1A37BE097C715F0019F3D8 /* DOMTraversal.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1A37A8097C715F0019F3D8 /* DOMTraversal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC1A37BF097C715F0019F3D8 /* DOMUtility.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC1A37A9097C715F0019F3D8 /* DOMUtility.mm */; }; + BC1A37C0097C715F0019F3D8 /* DOMViews.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1A37AA097C715F0019F3D8 /* DOMViews.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC1BDF24156C1883001C1243 /* DOMError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC1BDF20156C17A9001C1243 /* DOMError.cpp */; }; + BC1BDF25156C18C7001C1243 /* DOMError.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1BDF21156C17A9001C1243 /* DOMError.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC20FB7F0C0E8E6C00D1447F /* JSCSSValueCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC20FB7E0C0E8E6C00D1447F /* JSCSSValueCustom.cpp */; }; + BC2272870E82E70700E7F975 /* StyleReflection.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2272860E82E70700E7F975 /* StyleReflection.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC2272A20E82E87C00E7F975 /* CursorData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2272A10E82E87C00E7F975 /* CursorData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC2272AD0E82E8F300E7F975 /* CursorList.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2272AC0E82E8F300E7F975 /* CursorList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC2272BC0E82EAAE00E7F975 /* StyleRareNonInheritedData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2272BA0E82EAAE00E7F975 /* StyleRareNonInheritedData.cpp */; }; + BC2272BD0E82EAAE00E7F975 /* StyleRareNonInheritedData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2272BB0E82EAAE00E7F975 /* StyleRareNonInheritedData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC2272E30E82EE9B00E7F975 /* StyleRareInheritedData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2272E10E82EE9B00E7F975 /* StyleRareInheritedData.cpp */; }; + BC2272E40E82EE9B00E7F975 /* StyleRareInheritedData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2272E20E82EE9B00E7F975 /* StyleRareInheritedData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC2273030E82F1E600E7F975 /* StyleInheritedData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2273010E82F1E600E7F975 /* StyleInheritedData.cpp */; }; + BC2273040E82F1E600E7F975 /* StyleInheritedData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2273020E82F1E600E7F975 /* StyleInheritedData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC22746F0E83664500E7F975 /* DataRef.h in Headers */ = {isa = PBXBuildFile; fileRef = BC22746E0E83664500E7F975 /* DataRef.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC2274780E8366E200E7F975 /* SVGRenderStyle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2274740E8366E200E7F975 /* SVGRenderStyle.cpp */; }; + BC2274790E8366E200E7F975 /* SVGRenderStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2274750E8366E200E7F975 /* SVGRenderStyle.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC22747A0E8366E200E7F975 /* SVGRenderStyleDefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2274760E8366E200E7F975 /* SVGRenderStyleDefs.cpp */; }; + BC22747B0E8366E200E7F975 /* SVGRenderStyleDefs.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2274770E8366E200E7F975 /* SVGRenderStyleDefs.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC23E4E10DAACE0F009FDC91 /* CSSGradientValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC23E4E00DAACE0F009FDC91 /* CSSGradientValue.cpp */; }; + BC23E76C0DAE88A9009FDC91 /* CSSImageGeneratorValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC23E76B0DAE88A9009FDC91 /* CSSImageGeneratorValue.cpp */; }; + BC23EE920DAED2BC009FDC91 /* CSSImageGeneratorValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC23EE910DAED2BC009FDC91 /* CSSImageGeneratorValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC23F0DB0DAFF4A4009FDC91 /* GeneratedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = BC23F0DA0DAFF4A4009FDC91 /* GeneratedImage.h */; }; + BC2441C40E8B65D00055320F /* ScrollView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2441C30E8B65D00055320F /* ScrollView.cpp */; }; + BC25B52A131C6D3900180E10 /* LocalizedStringsMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC25B528131C6D3900180E10 /* LocalizedStringsMac.cpp */; }; + BC274B2F140EBEB200EADFA6 /* CSSBorderImageSliceValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC274B2E140EBEB200EADFA6 /* CSSBorderImageSliceValue.h */; }; + BC274B31140EBED800EADFA6 /* CSSBorderImageSliceValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC274B30140EBED800EADFA6 /* CSSBorderImageSliceValue.cpp */; }; + BC275B7911C5D1C300C9206C /* JSWebKitPointCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC275B7811C5D1C300C9206C /* JSWebKitPointCustom.cpp */; }; + BC275CB311C5E85C00C9206C /* JSArrayBufferCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC275CB211C5E85C00C9206C /* JSArrayBufferCustom.cpp */; }; + BC2CBF4E140F1ABD003879BE /* JSWebGLContextEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2CBF4B140F1A65003879BE /* JSWebGLContextEvent.h */; }; + BC2CBF7B140F1D58003879BE /* JSWebGLContextEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2CBF7A140F1D58003879BE /* JSWebGLContextEvent.cpp */; }; + BC2CC8DF0F32881000A9DF26 /* RenderObjectChildList.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2CC8DE0F32881000A9DF26 /* RenderObjectChildList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC2ED5550C6B9BD300920BFF /* JSElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2ED5540C6B9BD300920BFF /* JSElementCustom.cpp */; }; + BC2ED6BC0C6BD2F000920BFF /* JSAttrCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2ED6BB0C6BD2F000920BFF /* JSAttrCustom.cpp */; }; + BC2ED7A50C6C0F3600920BFF /* JSHTMLFrameElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2ED7A40C6C0F3600920BFF /* JSHTMLFrameElementCustom.cpp */; }; + BC305C790C076BB300CD20F0 /* JSHTMLObjectElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC305C770C076BB300CD20F0 /* JSHTMLObjectElement.cpp */; }; + BC305C7A0C076BB300CD20F0 /* JSHTMLObjectElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC305C780C076BB300CD20F0 /* JSHTMLObjectElement.h */; }; + BC305CA40C0781BB00CD20F0 /* JSHTMLObjectElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC305CA30C0781BB00CD20F0 /* JSHTMLObjectElementCustom.cpp */; }; + BC33FB1B0F30EE85002CDD7C /* RenderLineBoxList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC33FB1A0F30EE85002CDD7C /* RenderLineBoxList.cpp */; }; + BC348BBE0DB7F531004ABAB9 /* JSXMLHttpRequestCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC348BBD0DB7F531004ABAB9 /* JSXMLHttpRequestCustom.cpp */; }; + BC348BD30DB7F804004ABAB9 /* JSXMLHttpRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC348BD10DB7F804004ABAB9 /* JSXMLHttpRequest.cpp */; }; + BC348BD40DB7F804004ABAB9 /* JSXMLHttpRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = BC348BD20DB7F804004ABAB9 /* JSXMLHttpRequest.h */; }; + BC3BC29C0E91AB0F00835588 /* HostWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3BC29B0E91AB0F00835588 /* HostWindow.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC3BE12B0E98092F00835588 /* PopupMenuStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3BE12A0E98092F00835588 /* PopupMenuStyle.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC3BE9930E9C1C7C00835588 /* RenderScrollbar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3BE9900E9C1C7C00835588 /* RenderScrollbar.cpp */; }; + BC3BE9940E9C1C7C00835588 /* RenderScrollbar.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3BE9910E9C1C7C00835588 /* RenderScrollbar.h */; }; + BC3BE9950E9C1C7C00835588 /* RenderScrollbarPart.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3BE9920E9C1C7C00835588 /* RenderScrollbarPart.h */; }; + BC3BE9990E9C1E5D00835588 /* RenderScrollbarTheme.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3BE9980E9C1E5D00835588 /* RenderScrollbarTheme.h */; }; + BC3BE9A50E9C239600835588 /* RenderScrollbarTheme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3BE9A40E9C239600835588 /* RenderScrollbarTheme.cpp */; }; + BC3BE9AB0E9C242000835588 /* RenderScrollbarPart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3BE9AA0E9C242000835588 /* RenderScrollbarPart.cpp */; }; + BC3C39B60C0D3D8D005F4D7A /* JSMediaList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3C39B40C0D3D8D005F4D7A /* JSMediaList.cpp */; }; + BC3C39B70C0D3D8D005F4D7A /* JSMediaList.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3C39B50C0D3D8D005F4D7A /* JSMediaList.h */; }; + BC4368E80C226E32005EFB5F /* Rect.h in Headers */ = {isa = PBXBuildFile; fileRef = BC4368E70C226E32005EFB5F /* Rect.h */; }; + BC45827F151299C10061A556 /* RenderMultiColumnBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC45827E151299C10061A556 /* RenderMultiColumnBlock.cpp */; }; + BC46C1EE0C0DDBDF0020CFC3 /* JSCSSRuleCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC46C1ED0C0DDBDF0020CFC3 /* JSCSSRuleCustom.cpp */; }; + BC46C1FA0C0DDC8F0020CFC3 /* JSCSSCharsetRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC46C1F00C0DDC8F0020CFC3 /* JSCSSCharsetRule.cpp */; }; + BC46C1FB0C0DDC8F0020CFC3 /* JSCSSCharsetRule.h in Headers */ = {isa = PBXBuildFile; fileRef = BC46C1F10C0DDC8F0020CFC3 /* JSCSSCharsetRule.h */; }; + BC46C1FC0C0DDC8F0020CFC3 /* JSCSSFontFaceRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC46C1F20C0DDC8F0020CFC3 /* JSCSSFontFaceRule.cpp */; }; + BC46C1FD0C0DDC8F0020CFC3 /* JSCSSFontFaceRule.h in Headers */ = {isa = PBXBuildFile; fileRef = BC46C1F30C0DDC8F0020CFC3 /* JSCSSFontFaceRule.h */; }; + BC46C1FE0C0DDC8F0020CFC3 /* JSCSSImportRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC46C1F40C0DDC8F0020CFC3 /* JSCSSImportRule.cpp */; }; + BC46C1FF0C0DDC8F0020CFC3 /* JSCSSImportRule.h in Headers */ = {isa = PBXBuildFile; fileRef = BC46C1F50C0DDC8F0020CFC3 /* JSCSSImportRule.h */; }; + BC46C2000C0DDC8F0020CFC3 /* JSCSSMediaRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC46C1F60C0DDC8F0020CFC3 /* JSCSSMediaRule.cpp */; }; + BC46C2010C0DDC8F0020CFC3 /* JSCSSMediaRule.h in Headers */ = {isa = PBXBuildFile; fileRef = BC46C1F70C0DDC8F0020CFC3 /* JSCSSMediaRule.h */; }; + BC46C2020C0DDC8F0020CFC3 /* JSCSSPageRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC46C1F80C0DDC8F0020CFC3 /* JSCSSPageRule.cpp */; }; + BC46C2030C0DDC8F0020CFC3 /* JSCSSPageRule.h in Headers */ = {isa = PBXBuildFile; fileRef = BC46C1F90C0DDC8F0020CFC3 /* JSCSSPageRule.h */; }; + BC46C2060C0DDCA10020CFC3 /* JSCSSStyleRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC46C2040C0DDCA10020CFC3 /* JSCSSStyleRule.cpp */; }; + BC46C2070C0DDCA10020CFC3 /* JSCSSStyleRule.h in Headers */ = {isa = PBXBuildFile; fileRef = BC46C2050C0DDCA10020CFC3 /* JSCSSStyleRule.h */; }; + BC4918C60BFEA050009D6316 /* JSHTMLFrameElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC4918C00BFEA050009D6316 /* JSHTMLFrameElement.cpp */; }; + BC4918C70BFEA050009D6316 /* JSHTMLFrameElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC4918C10BFEA050009D6316 /* JSHTMLFrameElement.h */; }; + BC4918C80BFEA050009D6316 /* JSHTMLIFrameElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC4918C20BFEA050009D6316 /* JSHTMLIFrameElement.cpp */; }; + BC4918C90BFEA050009D6316 /* JSHTMLIFrameElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC4918C30BFEA050009D6316 /* JSHTMLIFrameElement.h */; }; + BC491B780C023EFD009D6316 /* JSHTMLMarqueeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC491B760C023EFD009D6316 /* JSHTMLMarqueeElement.cpp */; }; + BC491B790C023EFD009D6316 /* JSHTMLMarqueeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC491B770C023EFD009D6316 /* JSHTMLMarqueeElement.h */; }; + BC4EDEF40C08F3FB007EDD49 /* JSHTMLAppletElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC4EDEF30C08F3FB007EDD49 /* JSHTMLAppletElementCustom.cpp */; }; + BC51156E12B1749C00C96754 /* ScrollAnimatorMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC51156D12B1749C00C96754 /* ScrollAnimatorMac.mm */; }; + BC5156E80C03B741008BB0EE /* DOMHTMLMarqueeElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = BC5156E50C03B741008BB0EE /* DOMHTMLMarqueeElement.h */; }; + BC5156E90C03B741008BB0EE /* DOMHTMLMarqueeElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC5156E60C03B741008BB0EE /* DOMHTMLMarqueeElement.mm */; }; + BC5156EA0C03B741008BB0EE /* DOMHTMLMarqueeElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5156E70C03B741008BB0EE /* DOMHTMLMarqueeElementInternal.h */; }; + BC51579F0C03BBD3008BB0EE /* DOMHTMLMarqueeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5156E50C03B741008BB0EE /* DOMHTMLMarqueeElement.h */; }; + BC51580B0C03D404008BB0EE /* JSHTMLDocumentCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC51580A0C03D404008BB0EE /* JSHTMLDocumentCustom.cpp */; }; + BC53C5F50DA56B920021EB5D /* Gradient.h in Headers */ = {isa = PBXBuildFile; fileRef = BC53C5F40DA56B920021EB5D /* Gradient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC53C6080DA56C570021EB5D /* Gradient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC53C6070DA56C570021EB5D /* Gradient.cpp */; }; + BC53C60B0DA56CF10021EB5D /* GradientCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC53C60A0DA56CF10021EB5D /* GradientCG.cpp */; }; + BC53C6920DA591140021EB5D /* CSSGradientValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC53C6910DA591140021EB5D /* CSSGradientValue.h */; }; + BC53D911114310CC000D817E /* WebCoreJSClientData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC53D910114310CC000D817E /* WebCoreJSClientData.h */; }; + BC53DA2E1143121E000D817E /* DOMWrapperWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = BC53DA2D1143121E000D817E /* DOMWrapperWorld.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC53DA481143134D000D817E /* DOMWrapperWorld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC53DA471143134D000D817E /* DOMWrapperWorld.cpp */; }; + BC53DA601143141A000D817E /* DOMObjectHashTableMap.h in Headers */ = {isa = PBXBuildFile; fileRef = BC53DA5F1143141A000D817E /* DOMObjectHashTableMap.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC53DA62114314BD000D817E /* DOMObjectHashTableMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC53DA61114314BD000D817E /* DOMObjectHashTableMap.cpp */; }; + BC5823F50C0A98DF0053F1B5 /* JSHTMLElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5823F40C0A98DF0053F1B5 /* JSHTMLElementCustom.cpp */; }; + BC5825F30C0B89380053F1B5 /* JSCSSStyleDeclarationCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5825F20C0B89380053F1B5 /* JSCSSStyleDeclarationCustom.cpp */; }; + BC588AF00BFA6CF900EE679E /* HTMLParserErrorCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = BC588AEF0BFA6CF900EE679E /* HTMLParserErrorCodes.h */; }; + BC588B4B0BFA723C00EE679E /* HTMLParserErrorCodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC588B4A0BFA723C00EE679E /* HTMLParserErrorCodes.cpp */; }; + BC5A12DF0DC0414800C9AFAD /* CSSReflectValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5A12DD0DC0414800C9AFAD /* CSSReflectValue.cpp */; }; + BC5A12E00DC0414800C9AFAD /* CSSReflectValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5A12DE0DC0414800C9AFAD /* CSSReflectValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5A86840C33676000EEA649 /* DOMSelection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5A86810C33676000EEA649 /* DOMSelection.cpp */; }; + BC5A86850C33676000EEA649 /* DOMSelection.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5A86820C33676000EEA649 /* DOMSelection.h */; }; + BC5A86B50C3367E800EEA649 /* JSDOMSelection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5A86B30C3367E800EEA649 /* JSDOMSelection.cpp */; }; + BC5A86B60C3367E800EEA649 /* JSDOMSelection.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5A86B40C3367E800EEA649 /* JSDOMSelection.h */; }; + BC5C762B1497FE1400BC4775 /* PlatformEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5C76291497FE1400BC4775 /* PlatformEvent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB5DB0E81B7EA00B25965 /* BorderValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB5DA0E81B7EA00B25965 /* BorderValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB5DD0E81B8DD00B25965 /* OutlineValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB5DC0E81B8DD00B25965 /* OutlineValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB5DF0E81B9AB00B25965 /* CollapsedBorderValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB5DE0E81B9AB00B25965 /* CollapsedBorderValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB5E10E81BE8700B25965 /* BorderData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB5E00E81BE8700B25965 /* BorderData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB5E50E81BF6D00B25965 /* StyleSurroundData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB5E40E81BF6D00B25965 /* StyleSurroundData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB5E70E81BFEF00B25965 /* StyleSurroundData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB5E60E81BFEF00B25965 /* StyleSurroundData.cpp */; }; + BC5EB6680E81CB7100B25965 /* RenderStyleConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB6670E81CB7100B25965 /* RenderStyleConstants.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB67B0E81D3BE00B25965 /* StyleBoxData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB67A0E81D3BE00B25965 /* StyleBoxData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB67D0E81D42000B25965 /* StyleBoxData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB67C0E81D42000B25965 /* StyleBoxData.cpp */; }; + BC5EB67F0E81D4A700B25965 /* StyleDashboardRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB67E0E81D4A700B25965 /* StyleDashboardRegion.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB6990E81DA6300B25965 /* StyleVisualData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB6970E81DA6300B25965 /* StyleVisualData.cpp */; }; + BC5EB69A0E81DA6300B25965 /* StyleVisualData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB6980E81DA6300B25965 /* StyleVisualData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB69A0E81DA6300B25966 /* StyleVariableData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB6980E81DA6300B25966 /* StyleVariableData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB69E0E81DAEB00B25965 /* FillLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB69C0E81DAEB00B25965 /* FillLayer.cpp */; }; + BC5EB69F0E81DAEB00B25965 /* FillLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB69D0E81DAEB00B25965 /* FillLayer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB6A20E81DC4F00B25965 /* StyleBackgroundData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB6A00E81DC4F00B25965 /* StyleBackgroundData.cpp */; }; + BC5EB6A30E81DC4F00B25965 /* StyleBackgroundData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB6A10E81DC4F00B25965 /* StyleBackgroundData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB7290E81DE8100B25965 /* StyleMarqueeData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB7270E81DE8100B25965 /* StyleMarqueeData.cpp */; }; + BC5EB72A0E81DE8100B25965 /* StyleMarqueeData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB7280E81DE8100B25965 /* StyleMarqueeData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB74D0E81E06700B25965 /* StyleMultiColData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB74B0E81E06700B25965 /* StyleMultiColData.cpp */; }; + BC5EB74E0E81E06700B25965 /* StyleMultiColData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB74C0E81E06700B25965 /* StyleMultiColData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB80F0E81F2CE00B25965 /* StyleTransformData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB80D0E81F2CE00B25965 /* StyleTransformData.cpp */; }; + BC5EB8100E81F2CE00B25965 /* StyleTransformData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB80E0E81F2CE00B25965 /* StyleTransformData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB8B80E8201BD00B25965 /* StyleDeprecatedFlexibleBoxData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB8B60E8201BD00B25965 /* StyleDeprecatedFlexibleBoxData.cpp */; }; + BC5EB8B90E8201BD00B25965 /* StyleDeprecatedFlexibleBoxData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB8B70E8201BD00B25965 /* StyleDeprecatedFlexibleBoxData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB8C30E82031B00B25965 /* ShadowData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB8C10E82031B00B25965 /* ShadowData.cpp */; }; + BC5EB8C40E82031B00B25965 /* ShadowData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB8C20E82031B00B25965 /* ShadowData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB9500E82056B00B25965 /* CounterDirectives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB94E0E82056B00B25965 /* CounterDirectives.cpp */; }; + BC5EB9510E82056B00B25965 /* CounterDirectives.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB94F0E82056B00B25965 /* CounterDirectives.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB9790E82069200B25965 /* CounterContent.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB9780E82069200B25965 /* CounterContent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EB9800E82072500B25965 /* ContentData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB97E0E82072500B25965 /* ContentData.cpp */; }; + BC5EB9810E82072500B25965 /* ContentData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB97F0E82072500B25965 /* ContentData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5EBA100E823E4700B25965 /* KeyframeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5EBA0E0E823E4700B25965 /* KeyframeList.cpp */; }; + BC5EBA110E823E4700B25965 /* KeyframeList.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EBA0F0E823E4700B25965 /* KeyframeList.h */; }; + BC6049CC0DB560C200204739 /* CSSCanvasValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6049CB0DB560C200204739 /* CSSCanvasValue.h */; }; + BC604A430DB5634E00204739 /* CSSCanvasValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC604A420DB5634E00204739 /* CSSCanvasValue.cpp */; }; + BC6090200E91B8EC000C68B5 /* JSEventTargetCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC60901E0E91B8EC000C68B5 /* JSEventTargetCustom.cpp */; }; + BC60D6E90D28D83400B9918F /* DOMCoreException.h in Headers */ = {isa = PBXBuildFile; fileRef = BC60D6E80D28D83400B9918F /* DOMCoreException.h */; }; + BC60D7C00D29A46300B9918F /* JSDOMCoreException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC60D7BE0D29A46300B9918F /* JSDOMCoreException.cpp */; }; + BC60D7C10D29A46300B9918F /* JSDOMCoreException.h in Headers */ = {isa = PBXBuildFile; fileRef = BC60D7BF0D29A46300B9918F /* JSDOMCoreException.h */; }; + BC60D8F20D2A11E000B9918F /* ExceptionBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC60D8F00D2A11E000B9918F /* ExceptionBase.cpp */; }; + BC60D8F30D2A11E000B9918F /* ExceptionBase.h in Headers */ = {isa = PBXBuildFile; fileRef = BC60D8F10D2A11E000B9918F /* ExceptionBase.h */; }; + BC60D90C0D2A17CE00B9918F /* EventException.h in Headers */ = {isa = PBXBuildFile; fileRef = BC60D9090D2A17CE00B9918F /* EventException.h */; }; + BC60D9BF0D2A269A00B9918F /* JSEventException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC60D9BD0D2A269A00B9918F /* JSEventException.cpp */; }; + BC60D9C00D2A269A00B9918F /* JSEventException.h in Headers */ = {isa = PBXBuildFile; fileRef = BC60D9BE0D2A269A00B9918F /* JSEventException.h */; }; + BC60D9C90D2A29E500B9918F /* XMLHttpRequestException.h in Headers */ = {isa = PBXBuildFile; fileRef = BC60D9C70D2A29E500B9918F /* XMLHttpRequestException.h */; }; + BC60DA390D2A302800B9918F /* JSXMLHttpRequestException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC60DA370D2A302800B9918F /* JSXMLHttpRequestException.cpp */; }; + BC60DA3A0D2A302800B9918F /* JSXMLHttpRequestException.h in Headers */ = {isa = PBXBuildFile; fileRef = BC60DA380D2A302800B9918F /* JSXMLHttpRequestException.h */; }; + BC60DA5B0D2A31F700B9918F /* XPathException.h in Headers */ = {isa = PBXBuildFile; fileRef = BC60DA590D2A31F700B9918F /* XPathException.h */; }; + BC60DB490D2A3D1E00B9918F /* JSXPathException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC60DB470D2A3D1E00B9918F /* JSXPathException.cpp */; }; + BC60DB4A0D2A3D1E00B9918F /* JSXPathException.h in Headers */ = {isa = PBXBuildFile; fileRef = BC60DB480D2A3D1E00B9918F /* JSXPathException.h */; }; + BC60EFB70F33A0E700812A93 /* RenderObjectChildList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC60EFB60F33A0E700812A93 /* RenderObjectChildList.cpp */; }; + BC64640911D7F304006455B0 /* DOMStringMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC64640711D7F304006455B0 /* DOMStringMap.cpp */; }; + BC64640A11D7F304006455B0 /* DOMStringMap.h in Headers */ = {isa = PBXBuildFile; fileRef = BC64640811D7F304006455B0 /* DOMStringMap.h */; }; + BC64641C11D7F416006455B0 /* DatasetDOMStringMap.h in Headers */ = {isa = PBXBuildFile; fileRef = BC64641A11D7F416006455B0 /* DatasetDOMStringMap.h */; }; + BC64641D11D7F416006455B0 /* DatasetDOMStringMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC64641B11D7F416006455B0 /* DatasetDOMStringMap.cpp */; }; + BC64649711D82349006455B0 /* JSDOMStringMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC64649511D82349006455B0 /* JSDOMStringMap.cpp */; }; + BC64649811D82349006455B0 /* JSDOMStringMap.h in Headers */ = {isa = PBXBuildFile; fileRef = BC64649611D82349006455B0 /* JSDOMStringMap.h */; }; + BC64649C11D8238C006455B0 /* JSDOMStringMapCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC64649B11D8238C006455B0 /* JSDOMStringMapCustom.cpp */; }; + BC64B4CB0CB4295D005F2B62 /* CachedFont.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC64B4C90CB4295D005F2B62 /* CachedFont.cpp */; }; + BC64B4CC0CB4295D005F2B62 /* CachedFont.h in Headers */ = {isa = PBXBuildFile; fileRef = BC64B4CA0CB4295D005F2B62 /* CachedFont.h */; }; + BC64B4D50CB4298A005F2B62 /* CSSFontFace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC64B4CD0CB4298A005F2B62 /* CSSFontFace.cpp */; }; + BC64B4D60CB4298A005F2B62 /* CSSFontFace.h in Headers */ = {isa = PBXBuildFile; fileRef = BC64B4CE0CB4298A005F2B62 /* CSSFontFace.h */; }; + BC64B4D70CB4298A005F2B62 /* CSSFontFaceSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC64B4CF0CB4298A005F2B62 /* CSSFontFaceSource.cpp */; }; + BC64B4D80CB4298A005F2B62 /* CSSFontFaceSource.h in Headers */ = {isa = PBXBuildFile; fileRef = BC64B4D00CB4298A005F2B62 /* CSSFontFaceSource.h */; }; + BC64B4D90CB4298A005F2B62 /* CSSFontFaceSrcValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC64B4D10CB4298A005F2B62 /* CSSFontFaceSrcValue.cpp */; }; + BC64B4DA0CB4298A005F2B62 /* CSSFontFaceSrcValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC64B4D20CB4298A005F2B62 /* CSSFontFaceSrcValue.h */; }; + BC64B4DB0CB4298A005F2B62 /* CSSFontSelector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC64B4D30CB4298A005F2B62 /* CSSFontSelector.cpp */; }; + BC64B4DC0CB4298A005F2B62 /* CSSFontSelector.h in Headers */ = {isa = PBXBuildFile; fileRef = BC64B4D40CB4298A005F2B62 /* CSSFontSelector.h */; }; + BC6932730D7E293900AE44D1 /* JSDOMWindowBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC6932710D7E293900AE44D1 /* JSDOMWindowBase.cpp */; }; + BC6932740D7E293900AE44D1 /* JSDOMWindowBase.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6932720D7E293900AE44D1 /* JSDOMWindowBase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC6C49F30D7DBA0500FFA558 /* JSImageConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC6C49F10D7DBA0500FFA558 /* JSImageConstructor.cpp */; }; + BC6C49F40D7DBA0500FFA558 /* JSImageConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6C49F20D7DBA0500FFA558 /* JSImageConstructor.h */; }; + BC6D44BE0C07EFB60072D2C9 /* JSHTMLEmbedElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC6D44BD0C07EFB60072D2C9 /* JSHTMLEmbedElementCustom.cpp */; }; + BC6D44EC0C07F2ED0072D2C9 /* JSHTMLEmbedElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC6D44EA0C07F2ED0072D2C9 /* JSHTMLEmbedElement.cpp */; }; + BC6D44ED0C07F2ED0072D2C9 /* JSHTMLEmbedElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6D44EB0C07F2ED0072D2C9 /* JSHTMLEmbedElement.h */; }; + BC6D6E2609AF943500F59759 /* ScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6D6E2509AF943500F59759 /* ScrollView.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC6DADEF0A195FDF00E5CD14 /* WebFontCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6DADEE0A195FDF00E5CD14 /* WebFontCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC6DADFA0A19602B00E5CD14 /* WebFontCache.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC6DADF90A19602B00E5CD14 /* WebFontCache.mm */; }; + BC74DA371013F3F7007987AD /* RGBColor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC74DA351013F3F7007987AD /* RGBColor.h */; }; + BC74DA381013F3F7007987AD /* RGBColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC74DA361013F3F7007987AD /* RGBColor.cpp */; }; + BC74DA481013F468007987AD /* JSRGBColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC74DA461013F468007987AD /* JSRGBColor.cpp */; }; + BC74DA491013F468007987AD /* JSRGBColor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC74DA471013F468007987AD /* JSRGBColor.h */; }; + BC76AC130DD7AD5C00415F34 /* ParserUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = BC76AC110DD7AD5C00415F34 /* ParserUtilities.h */; }; + BC772B3C0C4EA91E0083285F /* CSSHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = BC772B360C4EA91E0083285F /* CSSHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC772B3D0C4EA91E0083285F /* CSSParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC772B370C4EA91E0083285F /* CSSParser.cpp */; }; + BC772B3E0C4EA91E0083285F /* CSSParser.h in Headers */ = {isa = PBXBuildFile; fileRef = BC772B380C4EA91E0083285F /* CSSParser.h */; }; + BC772C460C4EB2C60083285F /* XMLHttpRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC772C440C4EB2C60083285F /* XMLHttpRequest.cpp */; }; + BC772C470C4EB2C60083285F /* XMLHttpRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = BC772C450C4EB2C60083285F /* XMLHttpRequest.h */; }; + BC772C4E0C4EB3040083285F /* MIMETypeRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC772C4C0C4EB3040083285F /* MIMETypeRegistry.cpp */; }; + BC772C4F0C4EB3040083285F /* MIMETypeRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = BC772C4D0C4EB3040083285F /* MIMETypeRegistry.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC772C5E0C4EB3440083285F /* MIMETypeRegistryMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC772C5D0C4EB3440083285F /* MIMETypeRegistryMac.mm */; }; + BC772E131331620C001EC9CE /* CSSLineBoxContainValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC772E121331620C001EC9CE /* CSSLineBoxContainValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC772E16133162C2001EC9CE /* CSSLineBoxContainValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC772E15133162C2001EC9CE /* CSSLineBoxContainValue.cpp */; }; + BC7F44A80B9E324E00A9D081 /* ImageObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = BC7F44A70B9E324E00A9D081 /* ImageObserver.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC7FA6200D1F0CBD00DB22A9 /* LiveNodeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7FA61E0D1F0CBD00DB22A9 /* LiveNodeList.cpp */; }; + BC7FA6210D1F0CBD00DB22A9 /* LiveNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = BC7FA61F0D1F0CBD00DB22A9 /* LiveNodeList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC7FA62D0D1F0EFF00DB22A9 /* StaticNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = BC7FA62B0D1F0EFF00DB22A9 /* StaticNodeList.h */; }; + BC7FA62E0D1F0EFF00DB22A9 /* StaticNodeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7FA62C0D1F0EFF00DB22A9 /* StaticNodeList.cpp */; }; + BC80C9870CD294EE00A0B7B3 /* CSSTimingFunctionValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC80C9850CD294EE00A0B7B3 /* CSSTimingFunctionValue.cpp */; }; + BC80C9880CD294EE00A0B7B3 /* CSSTimingFunctionValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC80C9860CD294EE00A0B7B3 /* CSSTimingFunctionValue.h */; }; + BC8243290D0CE8A200460C8F /* JSSQLError.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8243250D0CE8A200460C8F /* JSSQLError.h */; }; + BC82432A0D0CE8A200460C8F /* JSSQLTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8243260D0CE8A200460C8F /* JSSQLTransaction.h */; }; + BC8243E80D0CFD7500460C8F /* WindowFeatures.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC8243E60D0CFD7500460C8F /* WindowFeatures.cpp */; }; + BC8243E90D0CFD7500460C8F /* WindowFeatures.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8243E70D0CFD7500460C8F /* WindowFeatures.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC85F23D151915E000BC17BE /* RenderNamedFlowThread.h in Headers */ = {isa = PBXBuildFile; fileRef = BC85F23C151915E000BC17BE /* RenderNamedFlowThread.h */; }; + BC8AE34E12EA096A00EB3AE6 /* ScrollableArea.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC8AE34C12EA096A00EB3AE6 /* ScrollableArea.cpp */; }; + BC8AE34F12EA096A00EB3AE6 /* ScrollableArea.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8AE34D12EA096A00EB3AE6 /* ScrollableArea.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC8B853E0E7C7F1100AB6984 /* ScrollbarThemeMac.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8B853C0E7C7F1100AB6984 /* ScrollbarThemeMac.h */; }; + BC8B854B0E7C7F5600AB6984 /* ScrollbarTheme.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8B854A0E7C7F5600AB6984 /* ScrollbarTheme.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC8BF151105813BF00A40A07 /* UserStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8BF150105813BF00A40A07 /* UserStyleSheet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC8BF15A1058141800A40A07 /* UserStyleSheetTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8BF1591058141800A40A07 /* UserStyleSheetTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC8C8FAD0DDCD31B00B592F4 /* RenderStyle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC8C8FAB0DDCD31B00B592F4 /* RenderStyle.cpp */; }; + BC8C8FAE0DDCD31B00B592F4 /* RenderStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8C8FAC0DDCD31B00B592F4 /* RenderStyle.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC904B760D10998F00680D32 /* ClassNodeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC904B720D10998F00680D32 /* ClassNodeList.cpp */; }; + BC904B770D10998F00680D32 /* ClassNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = BC904B730D10998F00680D32 /* ClassNodeList.h */; }; + BC926F800C0552470082776B /* JSHTMLFrameSetElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC926F7E0C0552470082776B /* JSHTMLFrameSetElement.cpp */; }; + BC926F810C0552470082776B /* JSHTMLFrameSetElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC926F7F0C0552470082776B /* JSHTMLFrameSetElement.h */; }; + BC9439C3116CF4940048C750 /* JSNodeCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9439C2116CF4940048C750 /* JSNodeCustom.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC9462D8107A7B4C00857193 /* BeforeLoadEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9462D7107A7B4C00857193 /* BeforeLoadEvent.h */; }; + BC946346107A934B00857193 /* JSBeforeLoadEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC946345107A934B00857193 /* JSBeforeLoadEvent.cpp */; }; + BC946348107A936600857193 /* JSBeforeLoadEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = BC946347107A936600857193 /* JSBeforeLoadEvent.h */; }; + BC946EEF107FDBAC00857193 /* DOMBeforeLoadEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = BC946EED107FDBAC00857193 /* DOMBeforeLoadEvent.h */; }; + BC946EF0107FDBAC00857193 /* DOMBeforeLoadEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC946EEE107FDBAC00857193 /* DOMBeforeLoadEvent.mm */; }; + BC94D1080C274F88006BC617 /* PlatformScreenMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC94D1070C274F88006BC617 /* PlatformScreenMac.mm */; }; + BC94D14E0C275C68006BC617 /* JSHistory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC94D14C0C275C68006BC617 /* JSHistory.cpp */; }; + BC94D14F0C275C68006BC617 /* JSHistory.h in Headers */ = {isa = PBXBuildFile; fileRef = BC94D14D0C275C68006BC617 /* JSHistory.h */; }; + BC94D1530C275C8B006BC617 /* History.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC94D1500C275C8B006BC617 /* History.cpp */; }; + BC94D1540C275C8B006BC617 /* History.h in Headers */ = {isa = PBXBuildFile; fileRef = BC94D1510C275C8B006BC617 /* History.h */; }; + BC9585E112F0989500755821 /* PlatformGestureEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9585DF12F0989500755821 /* PlatformGestureEvent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC96DB430F3A880E00573CB3 /* RenderBoxModelObject.h in Headers */ = {isa = PBXBuildFile; fileRef = BC96DB420F3A880E00573CB3 /* RenderBoxModelObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC96DB460F3A882200573CB3 /* RenderBoxModelObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC96DB450F3A882200573CB3 /* RenderBoxModelObject.cpp */; }; + BC97E23A109144950010D361 /* HTMLAllCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = BC97E238109144950010D361 /* HTMLAllCollection.h */; }; + BC97E23B109144950010D361 /* HTMLAllCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC97E239109144950010D361 /* HTMLAllCollection.cpp */; }; + BC97E412109154FA0010D361 /* JSHTMLAllCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC97E410109154FA0010D361 /* JSHTMLAllCollection.cpp */; }; + BC97E413109154FA0010D361 /* JSHTMLAllCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = BC97E411109154FA0010D361 /* JSHTMLAllCollection.h */; }; + BC97E42C10915B060010D361 /* JSHTMLAllCollectionCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC97E42B10915B060010D361 /* JSHTMLAllCollectionCustom.cpp */; }; + BC98543D0CD3D98B00069BC1 /* JSConsole.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC98543B0CD3D98B00069BC1 /* JSConsole.cpp */; }; + BC98543E0CD3D98C00069BC1 /* JSConsole.h in Headers */ = {isa = PBXBuildFile; fileRef = BC98543C0CD3D98B00069BC1 /* JSConsole.h */; }; + BC98A27D0C0C9950004BEBF7 /* JSStyleSheetCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC98A27C0C0C9950004BEBF7 /* JSStyleSheetCustom.cpp */; }; + BC99812E0DBE807A008CE9EF /* DOMAbstractViewFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = BC99812D0DBE807A008CE9EF /* DOMAbstractViewFrame.h */; }; + BC9ADD230CC4032600098C4C /* WebKitCSSTransformValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9ADD220CC4032600098C4C /* WebKitCSSTransformValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC9ADD800CC4092200098C4C /* WebKitCSSTransformValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC9ADD7F0CC4092200098C4C /* WebKitCSSTransformValue.cpp */; }; + BCA169A20BFD55B40019CA76 /* JSHTMLTableCaptionElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCA169A00BFD55B40019CA76 /* JSHTMLTableCaptionElement.cpp */; }; + BCA169A30BFD55B40019CA76 /* JSHTMLTableCaptionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA169A10BFD55B40019CA76 /* JSHTMLTableCaptionElement.h */; }; + BCA257151293C010007A263D /* VerticalPositionCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA257141293C010007A263D /* VerticalPositionCache.h */; }; + BCA2B061105047600043BD1C /* UserScript.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA2B0601050475F0043BD1C /* UserScript.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCA2B08B10505BCD0043BD1C /* UserScriptTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA2B08A10505BCD0043BD1C /* UserScriptTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCA83E4F0D7CE1E9003421A8 /* JSClipboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCA83E4D0D7CE1E9003421A8 /* JSClipboard.cpp */; }; + BCA83E500D7CE1E9003421A8 /* JSClipboard.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA83E4E0D7CE1E9003421A8 /* JSClipboard.h */; }; + BCA83E520D7CE205003421A8 /* JSClipboardCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCA83E510D7CE205003421A8 /* JSClipboardCustom.cpp */; }; + BCA846D60DC67A350026C309 /* RenderReplica.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCA846D40DC67A350026C309 /* RenderReplica.cpp */; }; + BCA846D70DC67A350026C309 /* RenderReplica.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA846D50DC67A350026C309 /* RenderReplica.h */; }; + BCA8C81E11E3D36900812FB7 /* BackForwardController.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA8C81C11E3D36900812FB7 /* BackForwardController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCA8C81F11E3D36900812FB7 /* BackForwardController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCA8C81D11E3D36900812FB7 /* BackForwardController.cpp */; }; + BCA8CA5F11E4E6D100812FB7 /* BackForwardListImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCA8CA5D11E4E6D100812FB7 /* BackForwardListImpl.cpp */; }; + BCA8CA6011E4E6D100812FB7 /* BackForwardListImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA8CA5E11E4E6D100812FB7 /* BackForwardListImpl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCAA486F14A052530088FAC4 /* PlatformEventFactoryMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCAA486D14A052530088FAC4 /* PlatformEventFactoryMac.mm */; }; + BCAA487014A052530088FAC4 /* PlatformEventFactoryMac.h in Headers */ = {isa = PBXBuildFile; fileRef = BCAA486E14A052530088FAC4 /* PlatformEventFactoryMac.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCAA90C30A7EBA60008B1229 /* Scrollbar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCAA90C20A7EBA60008B1229 /* Scrollbar.cpp */; }; + BCAB418113E356E800D8AAF3 /* Region.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCAB417F13E356E800D8AAF3 /* Region.cpp */; }; + BCAB418213E356E800D8AAF3 /* Region.h in Headers */ = {isa = PBXBuildFile; fileRef = BCAB418013E356E800D8AAF3 /* Region.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCACF3BC1072921A00C0C8A3 /* UserContentURLPattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCACF3BA1072921A00C0C8A3 /* UserContentURLPattern.cpp */; }; + BCACF3BD1072921A00C0C8A3 /* UserContentURLPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = BCACF3BB1072921A00C0C8A3 /* UserContentURLPattern.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCAD180A131C7A0D00990406 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = BCAD1808131C7A0D00990406 /* Localizable.strings */; }; + BCAE1FA712939DB7004CB026 /* ScrollAnimatorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = BCAE1FA512939DB7004CB026 /* ScrollAnimatorMac.h */; }; + BCAEFCAE1016CE4A0040D34E /* DOMRGBColor.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCAEFCAD1016CE4A0040D34E /* DOMRGBColor.mm */; }; + BCB16C170979C3BD00467741 /* MemoryCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB16BFE0979C3BD00467741 /* MemoryCache.cpp */; }; + BCB16C180979C3BD00467741 /* MemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB16BFF0979C3BD00467741 /* MemoryCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCB16C190979C3BD00467741 /* CachedCSSStyleSheet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB16C000979C3BD00467741 /* CachedCSSStyleSheet.cpp */; }; + BCB16C1A0979C3BD00467741 /* CachedCSSStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB16C010979C3BD00467741 /* CachedCSSStyleSheet.h */; }; + BCB16C1B0979C3BD00467741 /* CachedImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB16C020979C3BD00467741 /* CachedImage.cpp */; }; + BCB16C1C0979C3BD00467741 /* CachedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB16C030979C3BD00467741 /* CachedImage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCB16C1F0979C3BD00467741 /* CachedResource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB16C060979C3BD00467741 /* CachedResource.cpp */; }; + BCB16C200979C3BD00467741 /* CachedResource.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB16C070979C3BD00467741 /* CachedResource.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCB16C220979C3BD00467741 /* CachedResourceClientWalker.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB16C090979C3BD00467741 /* CachedResourceClientWalker.h */; }; + BCB16C230979C3BD00467741 /* CachedScript.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB16C0A0979C3BD00467741 /* CachedScript.cpp */; }; + BCB16C240979C3BD00467741 /* CachedScript.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB16C0B0979C3BD00467741 /* CachedScript.h */; }; + BCB16C270979C3BD00467741 /* CachedXSLStyleSheet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB16C0E0979C3BD00467741 /* CachedXSLStyleSheet.cpp */; }; + BCB16C280979C3BD00467741 /* CachedXSLStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB16C0F0979C3BD00467741 /* CachedXSLStyleSheet.h */; }; + BCB16C290979C3BD00467741 /* CachedResourceLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB16C100979C3BD00467741 /* CachedResourceLoader.cpp */; }; + BCB16C2A0979C3BD00467741 /* CachedResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB16C110979C3BD00467741 /* CachedResourceLoader.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCB773610C17853D00132BA4 /* JSNodeFilterCondition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB7735E0C17853D00132BA4 /* JSNodeFilterCondition.cpp */; }; + BCB773620C17853D00132BA4 /* JSNodeFilterCondition.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB7735F0C17853D00132BA4 /* JSNodeFilterCondition.h */; }; + BCB773630C17853D00132BA4 /* JSNodeFilterCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB773600C17853D00132BA4 /* JSNodeFilterCustom.cpp */; }; + BCB92D4F1293550B00C8387F /* FontBaseline.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB92D4E1293550B00C8387F /* FontBaseline.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCBB8AB813F1AFB000734DF0 /* PODArena.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBB8AB413F1AFB000734DF0 /* PODArena.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCBB8AB913F1AFB000734DF0 /* PODInterval.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBB8AB513F1AFB000734DF0 /* PODInterval.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCBB8ABA13F1AFB000734DF0 /* PODIntervalTree.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBB8AB613F1AFB000734DF0 /* PODIntervalTree.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCBB8ABB13F1AFB000734DF0 /* PODRedBlackTree.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBB8AB713F1AFB000734DF0 /* PODRedBlackTree.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCBD21AB0E417AD400A070F2 /* KURLHash.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD21AA0E417AD400A070F2 /* KURLHash.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCBFB53C0DCD29CF0019B3E5 /* JSDOMWindowShell.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBFB53A0DCD29CF0019B3E5 /* JSDOMWindowShell.cpp */; }; + BCBFB53D0DCD29CF0019B3E5 /* JSDOMWindowShell.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBFB53B0DCD29CF0019B3E5 /* JSDOMWindowShell.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCC0657D0F3CE1B700CD2D87 /* ClientRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC065770F3CE1B700CD2D87 /* ClientRect.cpp */; }; + BCC0657E0F3CE1B700CD2D87 /* ClientRect.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC065780F3CE1B700CD2D87 /* ClientRect.h */; }; + BCC065800F3CE1B700CD2D87 /* ClientRectList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC0657A0F3CE1B700CD2D87 /* ClientRectList.cpp */; }; + BCC065810F3CE1B700CD2D87 /* ClientRectList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC0657B0F3CE1B700CD2D87 /* ClientRectList.h */; }; + BCC065870F3CE2A700CD2D87 /* JSClientRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC065830F3CE2A700CD2D87 /* JSClientRect.cpp */; }; + BCC065880F3CE2A700CD2D87 /* JSClientRect.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC065840F3CE2A700CD2D87 /* JSClientRect.h */; }; + BCC065890F3CE2A700CD2D87 /* JSClientRectList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC065850F3CE2A700CD2D87 /* JSClientRectList.cpp */; }; + BCC0658A0F3CE2A700CD2D87 /* JSClientRectList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC065860F3CE2A700CD2D87 /* JSClientRectList.h */; }; + BCC438780E886CC700533DD5 /* JSHTMLInputElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC438770E886CC700533DD5 /* JSHTMLInputElementCustom.cpp */; }; + BCC52FD6151298D2003F914B /* RenderMultiColumnBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC52FD5151298D1003F914B /* RenderMultiColumnBlock.h */; }; + BCC573350D695BBE006EF517 /* DOMProgressEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC573330D695BBE006EF517 /* DOMProgressEvent.h */; }; + BCC573360D695BBE006EF517 /* DOMProgressEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCC573340D695BBE006EF517 /* DOMProgressEvent.mm */; }; + BCC573380D695BD7006EF517 /* DOMProgressEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC573370D695BD7006EF517 /* DOMProgressEventInternal.h */; }; + BCC5734D0D695C06006EF517 /* DOMProgressEvent.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = BCC573330D695BBE006EF517 /* DOMProgressEvent.h */; }; + BCC5734E0D695C06006EF517 /* DOMProgressEventInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = BCC573370D695BD7006EF517 /* DOMProgressEventInternal.h */; }; + BCC5BE000C0E93110011C2DB /* JSCSSStyleSheet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC5BDFE0C0E93110011C2DB /* JSCSSStyleSheet.cpp */; }; + BCC5BE010C0E93110011C2DB /* JSCSSStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC5BDFF0C0E93110011C2DB /* JSCSSStyleSheet.h */; }; + BCCBAD3B0C18BFF800CE890F /* JSHTMLCollectionCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCCBAD3A0C18BFF800CE890F /* JSHTMLCollectionCustom.cpp */; }; + BCCBAD400C18C14200CE890F /* JSHTMLCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCCBAD3E0C18C14200CE890F /* JSHTMLCollection.cpp */; }; + BCCBAD410C18C14200CE890F /* JSHTMLCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = BCCBAD3F0C18C14200CE890F /* JSHTMLCollection.h */; }; + BCCD74DC0A4C8D35005FDA6D /* HTMLViewSourceDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = BCCD74DB0A4C8D35005FDA6D /* HTMLViewSourceDocument.h */; }; + BCCD74E50A4C8DDF005FDA6D /* HTMLViewSourceDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCCD74E40A4C8DDF005FDA6D /* HTMLViewSourceDocument.cpp */; }; + BCCFBAE80B5152ED0001F1D7 /* DocumentParser.h in Headers */ = {isa = PBXBuildFile; fileRef = BCCFBAE70B5152ED0001F1D7 /* DocumentParser.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCD0E0FA0E972C3500265DEA /* SecurityOrigin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD0E0F70E972C3500265DEA /* SecurityOrigin.cpp */; }; + BCD0E0FB0E972C3500265DEA /* SecurityOrigin.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD0E0F80E972C3500265DEA /* SecurityOrigin.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCD0E0FC0E972C3500265DEA /* SecurityOriginHash.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD0E0F90E972C3500265DEA /* SecurityOriginHash.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCD0FBD00DBD625E00B2F630 /* DOMAbstractView.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCD0FBCF0DBD625E00B2F630 /* DOMAbstractView.mm */; }; + BCD0FC4F0DBD720B00B2F630 /* DOMRGBColorInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD0FC4E0DBD720B00B2F630 /* DOMRGBColorInternal.h */; }; + BCD3F9831326C93700098A60 /* NonCJKGlyphOrientation.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD3F9821326C93700098A60 /* NonCJKGlyphOrientation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCD41ABB0C060DE800C0E446 /* JSHTMLFrameSetElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD41ABA0C060DE800C0E446 /* JSHTMLFrameSetElementCustom.cpp */; }; + BCD533640ED6848900887468 /* CachedScriptSourceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD533630ED6848900887468 /* CachedScriptSourceProvider.h */; }; + BCD8A5F015F56F2C0098D071 /* TextBreakIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD8A5EF15F56F2C0098D071 /* TextBreakIterator.cpp */; }; + BCD9C2620C17AA67005C90A2 /* JSDOMWindowCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD9C25E0C17AA67005C90A2 /* JSDOMWindowCustom.cpp */; }; + BCD9C2630C17AA67005C90A2 /* JSNamedNodeMapCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD9C25F0C17AA67005C90A2 /* JSNamedNodeMapCustom.cpp */; }; + BCD9C2640C17AA67005C90A2 /* JSNodeCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD9C2600C17AA67005C90A2 /* JSNodeCustom.cpp */; }; + BCD9C2650C17AA67005C90A2 /* JSNodeListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD9C2610C17AA67005C90A2 /* JSNodeListCustom.cpp */; }; + BCD9C2C00C17B69E005C90A2 /* JSNamedNodeMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD9C2BC0C17B69E005C90A2 /* JSNamedNodeMap.cpp */; }; + BCD9C2C10C17B69E005C90A2 /* JSNamedNodeMap.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD9C2BD0C17B69E005C90A2 /* JSNamedNodeMap.h */; }; + BCD9C2C20C17B69E005C90A2 /* JSNodeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD9C2BE0C17B69E005C90A2 /* JSNodeList.cpp */; }; + BCD9C2C30C17B69E005C90A2 /* JSNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD9C2BF0C17B69E005C90A2 /* JSNodeList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCDD454E1236C95C009A7985 /* ColumnInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BCDD454D1236C95C009A7985 /* ColumnInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCDF317B11F8D683003C5BF8 /* UserTypingGestureIndicator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCDF317911F8D683003C5BF8 /* UserTypingGestureIndicator.cpp */; }; + BCDF317C11F8D683003C5BF8 /* UserTypingGestureIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = BCDF317A11F8D683003C5BF8 /* UserTypingGestureIndicator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCDFD48E0E305290009D10AD /* XMLHttpRequestUpload.h in Headers */ = {isa = PBXBuildFile; fileRef = BCDFD48C0E305290009D10AD /* XMLHttpRequestUpload.h */; }; + BCDFD48F0E305290009D10AD /* XMLHttpRequestUpload.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCDFD48D0E305290009D10AD /* XMLHttpRequestUpload.cpp */; }; + BCDFD4920E3056BD009D10AD /* JSXMLHttpRequestUploadCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCDFD4910E3056BD009D10AD /* JSXMLHttpRequestUploadCustom.cpp */; }; + BCDFD4950E30592F009D10AD /* JSXMLHttpRequestUpload.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCDFD4930E30592F009D10AD /* JSXMLHttpRequestUpload.cpp */; }; + BCDFD4960E30592F009D10AD /* JSXMLHttpRequestUpload.h in Headers */ = {isa = PBXBuildFile; fileRef = BCDFD4940E30592F009D10AD /* JSXMLHttpRequestUpload.h */; }; + BCE0139A0C0BEF180043860A /* JSStyleSheet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE013980C0BEF180043860A /* JSStyleSheet.cpp */; }; + BCE0139B0C0BEF180043860A /* JSStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE013990C0BEF180043860A /* JSStyleSheet.h */; }; + BCE1C41B0D982980003B02F2 /* Location.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE1C4190D982980003B02F2 /* Location.h */; }; + BCE1C41C0D982981003B02F2 /* Location.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE1C41A0D982980003B02F2 /* Location.cpp */; }; + BCE1C43B0D9830D3003B02F2 /* JSLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE1C4390D9830D3003B02F2 /* JSLocation.cpp */; }; + BCE1C43C0D9830D3003B02F2 /* JSLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE1C43A0D9830D3003B02F2 /* JSLocation.h */; }; + BCE1C4400D9830F4003B02F2 /* JSLocationCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE1C43F0D9830F4003B02F2 /* JSLocationCustom.cpp */; }; + BCE32B9C1517C0B200F542EC /* RenderMultiColumnSet.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE32B9B1517C0B100F542EC /* RenderMultiColumnSet.h */; }; + BCE32B9E1517C22700F542EC /* RenderMultiColumnSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE32B9D1517C22700F542EC /* RenderMultiColumnSet.cpp */; }; + BCE3BEC20D222B1D007E06E4 /* TagNodeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE3BEC00D222B1D007E06E4 /* TagNodeList.cpp */; }; + BCE3BEC30D222B1D007E06E4 /* TagNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE3BEC10D222B1D007E06E4 /* TagNodeList.h */; }; + BCE4389C140B1BA8005E437E /* JSDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE4389B140B1BA7005E437E /* JSDictionary.h */; }; + BCE438A2140C0DC0005E437E /* JSDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE438A1140C0DBF005E437E /* JSDictionary.cpp */; }; + BCE4413312F748E2009B84B8 /* RenderCombineText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE4413112F748E2009B84B8 /* RenderCombineText.cpp */; }; + BCE4413412F748E2009B84B8 /* RenderCombineText.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE4413212F748E2009B84B8 /* RenderCombineText.h */; }; + BCE4413612F7490B009B84B8 /* FontWidthVariant.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE4413512F7490B009B84B8 /* FontWidthVariant.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCE5644E137A34D6007D2934 /* ConsoleTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE5644D137A34D6007D2934 /* ConsoleTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCE658FF0EA9248A007E4533 /* Theme.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE658FE0EA9248A007E4533 /* Theme.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCE659A90EA927B9007E4533 /* ThemeTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE659A80EA927B9007E4533 /* ThemeTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCE659E60EA92FB2007E4533 /* ThemeMac.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE659E50EA92FB2007E4533 /* ThemeMac.h */; }; + BCE659E90EA92FFA007E4533 /* ThemeMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCE659E80EA92FFA007E4533 /* ThemeMac.mm */; }; + BCE65BEA0EACDF16007E4533 /* Length.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE65BE80EACDF16007E4533 /* Length.cpp */; }; + BCE65BEB0EACDF16007E4533 /* Length.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE65BE90EACDF16007E4533 /* Length.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCE65D320EAD1211007E4533 /* Theme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE65D310EAD1211007E4533 /* Theme.cpp */; }; + BCE789161120D6080060ECE5 /* InlineIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE789151120D6080060ECE5 /* InlineIterator.h */; }; + BCE789861120E7A60060ECE5 /* BidiRun.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE789851120E7A60060ECE5 /* BidiRun.h */; }; + BCE7898B1120E8020060ECE5 /* BidiRun.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE7898A1120E8020060ECE5 /* BidiRun.cpp */; }; + BCE7B1930D4E86960075A539 /* JSHistoryCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE7B1920D4E86960075A539 /* JSHistoryCustom.cpp */; }; + BCE93F451517C567008CCF74 /* RenderRegionSet.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE93F441517C567008CCF74 /* RenderRegionSet.h */; }; + BCE93F471517C6D5008CCF74 /* RenderRegionSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE93F461517C6D5008CCF74 /* RenderRegionSet.cpp */; }; + BCEA478F097CAAC80094C9E4 /* CSSComputedStyleDeclaration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA477C097CAAC80094C9E4 /* CSSComputedStyleDeclaration.cpp */; }; + BCEA4790097CAAC80094C9E4 /* CSSComputedStyleDeclaration.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA477D097CAAC80094C9E4 /* CSSComputedStyleDeclaration.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEA4852097D93020094C9E4 /* RenderBlockLineLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA4813097D93020094C9E4 /* RenderBlockLineLayout.cpp */; }; + BCEA4854097D93020094C9E4 /* break_lines.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA4815097D93020094C9E4 /* break_lines.cpp */; }; + BCEA4855097D93020094C9E4 /* break_lines.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA4816097D93020094C9E4 /* break_lines.h */; }; + BCEA4859097D93020094C9E4 /* InlineTextBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA481A097D93020094C9E4 /* InlineTextBox.cpp */; }; + BCEA485A097D93020094C9E4 /* InlineTextBox.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA481B097D93020094C9E4 /* InlineTextBox.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEA485B097D93020094C9E4 /* RenderApplet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA481C097D93020094C9E4 /* RenderApplet.cpp */; }; + BCEA485C097D93020094C9E4 /* RenderApplet.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA481D097D93020094C9E4 /* RenderApplet.h */; }; + BCEA485D097D93020094C9E4 /* RenderArena.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA481E097D93020094C9E4 /* RenderArena.cpp */; }; + BCEA485E097D93020094C9E4 /* RenderArena.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA481F097D93020094C9E4 /* RenderArena.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEA485F097D93020094C9E4 /* RenderBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA4820097D93020094C9E4 /* RenderBlock.cpp */; }; + BCEA4860097D93020094C9E4 /* RenderBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA4821097D93020094C9E4 /* RenderBlock.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEA4861097D93020094C9E4 /* RenderBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA4822097D93020094C9E4 /* RenderBox.cpp */; }; + BCEA4862097D93020094C9E4 /* RenderBox.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA4823097D93020094C9E4 /* RenderBox.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEA4863097D93020094C9E4 /* RenderBR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA4824097D93020094C9E4 /* RenderBR.cpp */; }; + BCEA4864097D93020094C9E4 /* RenderBR.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA4825097D93020094C9E4 /* RenderBR.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEA4865097D93020094C9E4 /* RenderButton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA4826097D93020094C9E4 /* RenderButton.cpp */; }; + BCEA4866097D93020094C9E4 /* RenderButton.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA4827097D93020094C9E4 /* RenderButton.h */; }; + BCEA4867097D93020094C9E4 /* RenderView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA4828097D93020094C9E4 /* RenderView.cpp */; }; + BCEA4868097D93020094C9E4 /* RenderView.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA4829097D93020094C9E4 /* RenderView.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEA4869097D93020094C9E4 /* RenderHTMLCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA482A097D93020094C9E4 /* RenderHTMLCanvas.cpp */; }; + BCEA486A097D93020094C9E4 /* RenderHTMLCanvas.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA482B097D93020094C9E4 /* RenderHTMLCanvas.h */; }; + BCEA486D097D93020094C9E4 /* RenderDeprecatedFlexibleBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA482E097D93020094C9E4 /* RenderDeprecatedFlexibleBox.cpp */; }; + BCEA486E097D93020094C9E4 /* RenderDeprecatedFlexibleBox.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA482F097D93020094C9E4 /* RenderDeprecatedFlexibleBox.h */; }; + BCEA4875097D93020094C9E4 /* RenderImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA4836097D93020094C9E4 /* RenderImage.cpp */; }; + BCEA4876097D93020094C9E4 /* RenderImage.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA4837097D93020094C9E4 /* RenderImage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEA4877097D93020094C9E4 /* RenderInline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA4838097D93020094C9E4 /* RenderInline.cpp */; }; + BCEA4878097D93020094C9E4 /* RenderInline.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA4839097D93020094C9E4 /* RenderInline.h */; }; + BCEA4879097D93020094C9E4 /* RenderLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA483A097D93020094C9E4 /* RenderLayer.cpp */; }; + BCEA487A097D93020094C9E4 /* RenderLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA483B097D93020094C9E4 /* RenderLayer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEA487F097D93020094C9E4 /* RenderObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA4840097D93020094C9E4 /* RenderObject.cpp */; }; + BCEA4880097D93020094C9E4 /* RenderObject.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA4841097D93020094C9E4 /* RenderObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEA4887097D93020094C9E4 /* RenderThemeMac.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA4848097D93020094C9E4 /* RenderThemeMac.h */; }; + BCEA4888097D93020094C9E4 /* RenderThemeMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCEA4849097D93020094C9E4 /* RenderThemeMac.mm */; }; + BCEA4889097D93020094C9E4 /* RenderTheme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA484A097D93020094C9E4 /* RenderTheme.cpp */; }; + BCEA488A097D93020094C9E4 /* RenderTheme.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA484B097D93020094C9E4 /* RenderTheme.h */; }; + BCEA488B097D93020094C9E4 /* RenderText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA484C097D93020094C9E4 /* RenderText.cpp */; }; + BCEA488C097D93020094C9E4 /* RenderText.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA484D097D93020094C9E4 /* RenderText.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEA488D097D93020094C9E4 /* RenderTextFragment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA484E097D93020094C9E4 /* RenderTextFragment.cpp */; }; + BCEA488E097D93020094C9E4 /* RenderTextFragment.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA484F097D93020094C9E4 /* RenderTextFragment.h */; }; + BCEB179C143379F50052EAE9 /* RenderBoxRegionInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEB179B143379F50052EAE9 /* RenderBoxRegionInfo.h */; }; + BCEC01BD0C274DAC009F4EC9 /* Screen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEC01BA0C274DAC009F4EC9 /* Screen.cpp */; }; + BCEC01BE0C274DAC009F4EC9 /* Screen.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEC01BB0C274DAC009F4EC9 /* Screen.h */; }; + BCEC01C20C274DDD009F4EC9 /* JSScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEC01C00C274DDD009F4EC9 /* JSScreen.cpp */; }; + BCEC01C30C274DDD009F4EC9 /* JSScreen.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEC01C10C274DDD009F4EC9 /* JSScreen.h */; }; + BCEC01D70C274EB4009F4EC9 /* PlatformScreen.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEC01D60C274EB4009F4EC9 /* PlatformScreen.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEF43CF0E673DA1001C1287 /* StyleImage.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEF43CE0E673DA1001C1287 /* StyleImage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEF43DD0E674012001C1287 /* NinePieceImage.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEF43DC0E674012001C1287 /* NinePieceImage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEF43E00E674110001C1287 /* NinePieceImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEF43DF0E674110001C1287 /* NinePieceImage.cpp */; }; + BCEF444A0E6745E0001C1287 /* StyleGeneratedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEF44490E6745E0001C1287 /* StyleGeneratedImage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEF444D0E674628001C1287 /* StyleCachedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEF444C0E674628001C1287 /* StyleCachedImage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCEF447A0E6747D0001C1287 /* StyleCachedImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEF44790E6747D0001C1287 /* StyleCachedImage.cpp */; }; + BCEF447D0E674806001C1287 /* StyleGeneratedImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEF447C0E674806001C1287 /* StyleGeneratedImage.cpp */; }; + BCEF45E90E687767001C1287 /* TextMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEF45E80E687767001C1287 /* TextMetrics.h */; }; + BCEF45F50E687B5C001C1287 /* JSTextMetrics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEF45F30E687B5C001C1287 /* JSTextMetrics.cpp */; }; + BCEF45F60E687B5C001C1287 /* JSTextMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEF45F40E687B5C001C1287 /* JSTextMetrics.h */; }; + BCEF869F0E844E9D00A85CD5 /* ScrollbarThemeMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCEF869E0E844E9D00A85CD5 /* ScrollbarThemeMac.mm */; }; + BCEFAF4E0C317E6900FA81F6 /* JSEventCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEFAF4D0C317E6900FA81F6 /* JSEventCustom.cpp */; }; + BCEFE1E50DCA5F3300739219 /* JSXSLTProcessorCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEFE1E40DCA5F3300739219 /* JSXSLTProcessorCustom.cpp */; }; + BCEFE1EA0DCA5F6400739219 /* JSXSLTProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEFE1E80DCA5F6400739219 /* JSXSLTProcessor.cpp */; }; + BCEFE1EB0DCA5F6400739219 /* JSXSLTProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEFE1E90DCA5F6400739219 /* JSXSLTProcessor.h */; }; + BCF34A3711A231CD00C71804 /* NamedNodeMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCF34A3611A231CD00C71804 /* NamedNodeMap.cpp */; }; + BCF7E491137CD7C7001DDAE7 /* AdjustViewSizeOrNot.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF48CE61370D114004E87D6 /* AdjustViewSizeOrNot.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCFA930810333193007B25D1 /* RenderOverflow.h in Headers */ = {isa = PBXBuildFile; fileRef = BCFA930710333193007B25D1 /* RenderOverflow.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCFB2E5E0979E46400BA703D /* CachedResourceClient.h in Headers */ = {isa = PBXBuildFile; fileRef = BCFB2E5D0979E46400BA703D /* CachedResourceClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCFB2F76097A2E1A00BA703D /* Arena.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCFB2F74097A2E1A00BA703D /* Arena.cpp */; }; + BCFB2F77097A2E1A00BA703D /* Arena.h in Headers */ = {isa = PBXBuildFile; fileRef = BCFB2F75097A2E1A00BA703D /* Arena.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCFE2F110C1B58370020235F /* JSRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCFE2F0F0C1B58370020235F /* JSRect.cpp */; }; + BCFE2F120C1B58380020235F /* JSRect.h in Headers */ = {isa = PBXBuildFile; fileRef = BCFE2F100C1B58370020235F /* JSRect.h */; }; + BCFF64910EAD15C200C1D6F7 /* LengthBox.h in Headers */ = {isa = PBXBuildFile; fileRef = BCFF648F0EAD15C200C1D6F7 /* LengthBox.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCFF64920EAD15C200C1D6F7 /* LengthSize.h in Headers */ = {isa = PBXBuildFile; fileRef = BCFF64900EAD15C200C1D6F7 /* LengthSize.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BE6DF70B171CA2C500DD52B8 /* JSVideoTrackCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE6DF708171CA2C500DD52B8 /* JSVideoTrackCustom.cpp */; }; + BE6DF70D171CA2C500DD52B8 /* JSVideoTrackListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE6DF70A171CA2C500DD52B8 /* JSVideoTrackListCustom.cpp */; }; + BE6DF711171CA2DA00DD52B8 /* JSAudioTrackCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE6DF70E171CA2DA00DD52B8 /* JSAudioTrackCustom.cpp */; }; + BE6DF713171CA2DA00DD52B8 /* JSAudioTrackListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE6DF710171CA2DA00DD52B8 /* JSAudioTrackListCustom.cpp */; }; + BE88E0C11715CE2600658D98 /* TrackListBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE88E0BF1715CE2600658D98 /* TrackListBase.cpp */; }; + BE88E0C21715CE2600658D98 /* TrackListBase.h in Headers */ = {isa = PBXBuildFile; fileRef = BE88E0C01715CE2600658D98 /* TrackListBase.h */; }; + BE88E0D81715D2A200658D98 /* AudioTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE88E0CC1715D2A200658D98 /* AudioTrack.cpp */; }; + BE88E0D91715D2A200658D98 /* AudioTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = BE88E0CD1715D2A200658D98 /* AudioTrack.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BE88E0DB1715D2A200658D98 /* AudioTrackList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE88E0CF1715D2A200658D98 /* AudioTrackList.cpp */; }; + BE88E0DC1715D2A200658D98 /* AudioTrackList.h in Headers */ = {isa = PBXBuildFile; fileRef = BE88E0D01715D2A200658D98 /* AudioTrackList.h */; }; + BE88E0DE1715D2A200658D98 /* VideoTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE88E0D21715D2A200658D98 /* VideoTrack.cpp */; }; + BE88E0DF1715D2A200658D98 /* VideoTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = BE88E0D31715D2A200658D98 /* VideoTrack.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BE88E0E11715D2A200658D98 /* VideoTrackList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE88E0D51715D2A200658D98 /* VideoTrackList.cpp */; }; + BE88E0E21715D2A200658D98 /* VideoTrackList.h in Headers */ = {isa = PBXBuildFile; fileRef = BE88E0D61715D2A200658D98 /* VideoTrackList.h */; }; + BE8EF042171C8FF9009B48C3 /* JSAudioTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE8EF03E171C8FF9009B48C3 /* JSAudioTrack.cpp */; }; + BE8EF043171C8FF9009B48C3 /* JSAudioTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = BE8EF03F171C8FF9009B48C3 /* JSAudioTrack.h */; }; + BE8EF044171C8FF9009B48C3 /* JSAudioTrackList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE8EF040171C8FF9009B48C3 /* JSAudioTrackList.cpp */; }; + BE8EF045171C8FF9009B48C3 /* JSAudioTrackList.h in Headers */ = {isa = PBXBuildFile; fileRef = BE8EF041171C8FF9009B48C3 /* JSAudioTrackList.h */; }; + BE8EF04A171C9014009B48C3 /* JSVideoTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE8EF046171C9014009B48C3 /* JSVideoTrack.cpp */; }; + BE8EF04B171C9014009B48C3 /* JSVideoTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = BE8EF047171C9014009B48C3 /* JSVideoTrack.h */; }; + BE8EF04C171C9014009B48C3 /* JSVideoTrackList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE8EF048171C9014009B48C3 /* JSVideoTrackList.cpp */; }; + BE8EF04D171C9014009B48C3 /* JSVideoTrackList.h in Headers */ = {isa = PBXBuildFile; fileRef = BE8EF049171C9014009B48C3 /* JSVideoTrackList.h */; }; + BEF29EEB1715DD0900C4B4C9 /* AudioTrackPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = BEF29EE91715DD0900C4B4C9 /* AudioTrackPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BEF29EEC1715DD0900C4B4C9 /* VideoTrackPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = BEF29EEA1715DD0900C4B4C9 /* VideoTrackPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C046E1AC1208A9FE00BA2CF7 /* LocalizedStrings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C046E1AB1208A9FE00BA2CF7 /* LocalizedStrings.cpp */; }; + C0C054CB1118C8E400CE2636 /* CodeGenerator.pm in Headers */ = {isa = PBXBuildFile; fileRef = 93F8B3050A300FE100F61AB8 /* CodeGenerator.pm */; settings = {ATTRIBUTES = (Private, ); }; }; + C0C054CC1118C8E400CE2636 /* generate-bindings.pl in Headers */ = {isa = PBXBuildFile; fileRef = 93F8B3070A300FEA00F61AB8 /* generate-bindings.pl */; settings = {ATTRIBUTES = (Private, ); }; }; + C0C054CD1118C8E400CE2636 /* IDLParser.pm in Headers */ = {isa = PBXBuildFile; fileRef = 14813BF309EDF88E00F757E1 /* IDLParser.pm */; settings = {ATTRIBUTES = (Private, ); }; }; + C0DFC8700DB6841A003EAE7C /* JSConsoleCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C0DFC86F0DB6841A003EAE7C /* JSConsoleCustom.cpp */; }; + C0F2A44113869AAB0066C534 /* preprocessor.pm in Headers */ = {isa = PBXBuildFile; fileRef = C0F2A43F13869A280066C534 /* preprocessor.pm */; settings = {ATTRIBUTES = (Private, ); }; }; + C105DA620F3AA68F001DD44F /* TextEncodingDetectorICU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C105DA610F3AA68F001DD44F /* TextEncodingDetectorICU.cpp */; }; + C105DA640F3AA6B8001DD44F /* TextEncodingDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = C105DA630F3AA6B8001DD44F /* TextEncodingDetector.h */; }; + C330A22313EC196B0000B45B /* ColorChooser.h in Headers */ = {isa = PBXBuildFile; fileRef = C330A22113EC196B0000B45B /* ColorChooser.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C33EE5C414FB49610002095A /* BaseClickableWithKeyInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C33EE5C214FB49610002095A /* BaseClickableWithKeyInputType.cpp */; }; + C33EE5C514FB49610002095A /* BaseClickableWithKeyInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = C33EE5C314FB49610002095A /* BaseClickableWithKeyInputType.h */; }; + C348612315FDE21E007A1CC9 /* InputTypeNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C348612115FDE21E007A1CC9 /* InputTypeNames.cpp */; }; + C348612415FDE21E007A1CC9 /* InputTypeNames.h in Headers */ = {isa = PBXBuildFile; fileRef = C348612215FDE21E007A1CC9 /* InputTypeNames.h */; }; + C375D7FD16639519006184AB /* TypeAhead.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C375D7FB16639519006184AB /* TypeAhead.cpp */; }; + C375D7FE16639519006184AB /* TypeAhead.h in Headers */ = {isa = PBXBuildFile; fileRef = C375D7FC16639519006184AB /* TypeAhead.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C37CDEBD149EF2030042090D /* ColorChooserClient.h in Headers */ = {isa = PBXBuildFile; fileRef = C37CDEBC149EF2030042090D /* ColorChooserClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C3CF17A415B0063F00276D39 /* IdTargetObserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C3CF17A015B0063F00276D39 /* IdTargetObserver.cpp */; }; + C3CF17A515B0063F00276D39 /* IdTargetObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = C3CF17A115B0063F00276D39 /* IdTargetObserver.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C3CF17A615B0063F00276D39 /* IdTargetObserverRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C3CF17A215B0063F00276D39 /* IdTargetObserverRegistry.cpp */; }; + C3CF17A715B0063F00276D39 /* IdTargetObserverRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = C3CF17A315B0063F00276D39 /* IdTargetObserverRegistry.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C50B561612119D23008B46E0 /* GroupSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C50B561412119D23008B46E0 /* GroupSettings.cpp */; }; + C50B561712119D23008B46E0 /* GroupSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = C50B561512119D23008B46E0 /* GroupSettings.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C50D0E820FF4272900AC2644 /* StorageNamespace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C50D0E800FF4272900AC2644 /* StorageNamespace.cpp */; }; + C50D0E830FF4272900AC2644 /* StorageNamespace.h in Headers */ = {isa = PBXBuildFile; fileRef = C50D0E810FF4272900AC2644 /* StorageNamespace.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C5102D940FD9AA2D00FAFF04 /* StorageSyncManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C5102D920FD9AA2D00FAFF04 /* StorageSyncManager.h */; }; + C5102D950FD9AA2D00FAFF04 /* StorageSyncManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5102D930FD9AA2D00FAFF04 /* StorageSyncManager.cpp */; }; + C5102ECF0FD9EF8C00FAFF04 /* StorageAreaSync.h in Headers */ = {isa = PBXBuildFile; fileRef = C5102ECD0FD9EF8C00FAFF04 /* StorageAreaSync.h */; }; + C5102ED00FD9EF8C00FAFF04 /* StorageAreaSync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5102ECE0FD9EF8C00FAFF04 /* StorageAreaSync.cpp */; }; + C5137CF211A58378004ADB99 /* JSDOMStringList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5137CF011A58378004ADB99 /* JSDOMStringList.cpp */; }; + C5137CF311A58378004ADB99 /* JSDOMStringList.h in Headers */ = {isa = PBXBuildFile; fileRef = C5137CF111A58378004ADB99 /* JSDOMStringList.h */; }; + C5160EEA1004543A00A7CEE2 /* StorageAreaImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5160EE81004543A00A7CEE2 /* StorageAreaImpl.cpp */; }; + C5160EEB1004543A00A7CEE2 /* StorageAreaImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C5160EE91004543A00A7CEE2 /* StorageAreaImpl.h */; }; + C544274B11A57E7A0063A749 /* DOMStringList.h in Headers */ = {isa = PBXBuildFile; fileRef = C544274911A57E7A0063A749 /* DOMStringList.h */; }; + C55610F111A704EB00B82D27 /* DOMStringList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C55610F011A704EB00B82D27 /* DOMStringList.cpp */; }; + C55E38BF10040D5D00A56BDB /* StorageNamespaceImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C55E38BB10040D5D00A56BDB /* StorageNamespaceImpl.h */; }; + C55E38C010040D5D00A56BDB /* StorageNamespaceImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C55E38BC10040D5D00A56BDB /* StorageNamespaceImpl.cpp */; }; + C572EE1F1201C9BC007D8F82 /* JSIDBIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = C572EE1D1201C9BC007D8F82 /* JSIDBIndex.h */; }; + C57FEDE11212EE9C0097BE65 /* FileSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C57FEDE01212EE9C0097BE65 /* FileSystem.cpp */; }; + C585381913A7DD4E00A3BBEE /* ClipboardIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = C585381713A7DD4E00A3BBEE /* ClipboardIOS.h */; }; + C585381A13A7DD4E00A3BBEE /* ClipboardIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = C585381813A7DD4E00A3BBEE /* ClipboardIOS.mm */; }; + C585A66211D4FAC5004C3E4B /* IDBBindingUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A66011D4FAC5004C3E4B /* IDBBindingUtilities.cpp */; }; + C585A66311D4FAC5004C3E4B /* IDBBindingUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A66111D4FAC5004C3E4B /* IDBBindingUtilities.h */; }; + C585A67D11D4FB08004C3E4B /* JSIDBAny.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A66511D4FB07004C3E4B /* JSIDBAny.h */; }; + C585A68311D4FB08004C3E4B /* JSIDBDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A66B11D4FB07004C3E4B /* JSIDBDatabase.h */; }; + C585A68D11D4FB08004C3E4B /* JSIDBKeyRange.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A67511D4FB07004C3E4B /* JSIDBKeyRange.h */; }; + C585A68F11D4FB08004C3E4B /* JSIDBObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A67711D4FB07004C3E4B /* JSIDBObjectStore.h */; }; + C585A69111D4FB08004C3E4B /* JSIDBRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A67911D4FB07004C3E4B /* JSIDBRequest.h */; }; + C585A69711D4FB13004C3E4B /* JSIDBFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A69511D4FB13004C3E4B /* JSIDBFactory.h */; }; + C598902E14E9B0F800E8D18B /* PlatformPasteboardMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = C5F765BA14E1ECF4006C899B /* PlatformPasteboardMac.mm */; }; + C598905714E9C28000E8D18B /* PasteboardStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = C5F765B414E1D414006C899B /* PasteboardStrategy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C598905814E9C29900E8D18B /* PlatformPasteboard.h in Headers */ = {isa = PBXBuildFile; fileRef = C5BAC16F14E30E4700008837 /* PlatformPasteboard.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C5A1EA7C152BCF04004D00B6 /* SimplifyMarkupCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5A1EA79152BC486004D00B6 /* SimplifyMarkupCommand.cpp */; }; + C5A1EA7D152BCF08004D00B6 /* SimplifyMarkupCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = C5A1EA7A152BC486004D00B6 /* SimplifyMarkupCommand.h */; }; + C5B4C24D1509236C00A6EF37 /* WebCoreNSURLExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = C5B4C24B1509236C00A6EF37 /* WebCoreNSURLExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C5B4C24E1509236C00A6EF37 /* WebCoreNSURLExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = C5B4C24C1509236C00A6EF37 /* WebCoreNSURLExtras.mm */; }; + C5D4AA7A116BAFB60069CA93 /* GlyphMetricsMap.h in Headers */ = {isa = PBXBuildFile; fileRef = C5D4AA78116BAFB60069CA93 /* GlyphMetricsMap.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C5E9B67710697E1300C7BB1A /* StorageEventDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5E9B67610697E1300C7BB1A /* StorageEventDispatcher.cpp */; }; + C5EBDD84105EDDEC0056816F /* StorageEventDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = C5EBDD81105EDDEC0056816F /* StorageEventDispatcher.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C65046A9167BFB5500CC2A4D /* TemplateContentDocumentFragment.h in Headers */ = {isa = PBXBuildFile; fileRef = C65046A8167BFB5500CC2A4D /* TemplateContentDocumentFragment.h */; }; + C6A703325C9D0B6CDCBC4D77 /* JSEventTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6A703325C9D0B6CDCBC4D78 /* JSEventTarget.cpp */; }; + C6B31B2E14F841FB0089F23F /* ScrollbarThemeClient.h in Headers */ = {isa = PBXBuildFile; fileRef = C691614714F6EBA70046375C /* ScrollbarThemeClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C6D74AD509AA282E000B0A52 /* ModifySelectionListLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D74AD309AA282E000B0A52 /* ModifySelectionListLevel.h */; }; + C6D74AE409AA290A000B0A52 /* ModifySelectionListLevel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6D74AE309AA290A000B0A52 /* ModifySelectionListLevel.cpp */; }; + C6F08FBC1430FE8F00685849 /* MutationRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6F08FB91430FE8F00685849 /* MutationRecord.cpp */; }; + C6F08FBD1430FE8F00685849 /* MutationRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F08FBA1430FE8F00685849 /* MutationRecord.h */; }; + C6F08FC91431000D00685849 /* JSMutationRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6F08FC71431000D00685849 /* JSMutationRecord.cpp */; }; + C6F08FCA1431000D00685849 /* JSMutationRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F08FC81431000D00685849 /* JSMutationRecord.h */; }; + C6F0900A14327B6100685849 /* MutationCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F0900114327B6100685849 /* MutationCallback.h */; }; + C6F0900E14327B6100685849 /* MutationObserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6F0900514327B6100685849 /* MutationObserver.cpp */; }; + C6F0900F14327B6100685849 /* MutationObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F0900614327B6100685849 /* MutationObserver.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C6F0902C14327D4F00685849 /* JSMutationObserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6F0902414327D4F00685849 /* JSMutationObserver.cpp */; }; + C6F0902D14327D4F00685849 /* JSMutationObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F0902514327D4F00685849 /* JSMutationObserver.h */; }; + C6F0917F143A2BB900685849 /* JSMutationObserverCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6F0917E143A2BB900685849 /* JSMutationObserverCustom.cpp */; }; + C6F420A216B7164E0052A9F2 /* JSMutationCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6F420A016B7164E0052A9F2 /* JSMutationCallback.cpp */; }; + C6F420A316B7164E0052A9F2 /* JSMutationCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F420A116B7164E0052A9F2 /* JSMutationCallback.h */; }; + CA3BF67C10D99BAE00E6CE53 /* ScrollAnimator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CA3BF67B10D99BAE00E6CE53 /* ScrollAnimator.cpp */; }; + CA3BF67E10D99BAE00E6CE53 /* ScrollAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = CA3BF67D10D99BAE00E6CE53 /* ScrollAnimator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CAE9F90F146441F000C245B0 /* CSSAspectRatioValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CAE9F90D146441F000C245B0 /* CSSAspectRatioValue.cpp */; }; + CAE9F910146441F000C245B0 /* CSSAspectRatioValue.h in Headers */ = {isa = PBXBuildFile; fileRef = CAE9F90E146441F000C245B0 /* CSSAspectRatioValue.h */; }; + CAE9F910146441F000C245B1 /* CSSVariableValue.h in Headers */ = {isa = PBXBuildFile; fileRef = CAE9F90E146441F000C245B1 /* CSSVariableValue.h */; }; + CCC2B51415F613060048CDD6 /* DeviceClient.h in Headers */ = {isa = PBXBuildFile; fileRef = CCC2B51015F613060048CDD6 /* DeviceClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CCC2B51515F613060048CDD6 /* DeviceController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CCC2B51115F613060048CDD6 /* DeviceController.cpp */; }; + CCC2B51615F613060048CDD6 /* DeviceController.h in Headers */ = {isa = PBXBuildFile; fileRef = CCC2B51215F613060048CDD6 /* DeviceController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CD08285C1757250F00EC5FB7 /* PageActivityAssertionToken.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD08285A1757250800EC5FB7 /* PageActivityAssertionToken.cpp */; }; + CD0EEE0E14743F39003EAFA2 /* AudioDestinationIOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD0EEE0B14743E35003EAFA2 /* AudioDestinationIOS.cpp */; }; + CD127DED14F3097D00E84779 /* WebCoreFullScreenWindow.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD127DEB14F3097900E84779 /* WebCoreFullScreenWindow.mm */; }; + CD127DEE14F3098400E84779 /* WebCoreFullScreenWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = CD127DEA14F3097900E84779 /* WebCoreFullScreenWindow.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CD1B4A65160786AE00282DF9 /* MediaKeyNeededEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDA98DC216014EEE00FEA3B1 /* MediaKeyNeededEvent.cpp */; }; + CD1E7347167BC78E009A885D /* TextTrackRepresentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD1E7346167BC78E009A885D /* TextTrackRepresentation.cpp */; }; + CD27F6E51457685A0078207D /* JSMediaController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD27F6E2145767580078207D /* JSMediaController.cpp */; }; + CD27F6E7145770D30078207D /* MediaController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD27F6E6145770D30078207D /* MediaController.cpp */; }; + CD37B39815C1B971006DC898 /* DiagnosticLoggingKeys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD37B37415C1A7E1006DC898 /* DiagnosticLoggingKeys.cpp */; }; + CD47B3FC16CC34F800A21EC8 /* CDMPrivateAVFoundation.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD47B3FA16CC34F800A21EC8 /* CDMPrivateAVFoundation.mm */; }; + CD4AC52A1496AE9A0087C4EF /* Composite.wav in Copy Audio Resources */ = {isa = PBXBuildFile; fileRef = CD4AC5281496AE2F0087C4EF /* Composite.wav */; }; + CD5393D3175E018600C07123 /* JSMemoryInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD5393D1175E018600C07123 /* JSMemoryInfo.cpp */; }; + CD5393D4175E018600C07123 /* JSMemoryInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = CD5393D2175E018600C07123 /* JSMemoryInfo.h */; }; + CD54DE4717468B6F005E5B36 /* AudioSessionManagerMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD54DE4517468B6F005E5B36 /* AudioSessionManagerMac.cpp */; }; + CD54DE4B17469C6D005E5B36 /* AudioSessionMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD54DE4917469C6D005E5B36 /* AudioSessionMac.cpp */; }; + CD7E05221651C28200C1201F /* WebCoreAVFResourceLoader.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD7E05211651A84100C1201F /* WebCoreAVFResourceLoader.mm */; }; + CD82030A1395AB6A00F956C6 /* WebVideoFullscreenController.h in Headers */ = {isa = PBXBuildFile; fileRef = CD8203061395AB6A00F956C6 /* WebVideoFullscreenController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CD82030B1395AB6A00F956C6 /* WebVideoFullscreenController.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD8203071395AB6A00F956C6 /* WebVideoFullscreenController.mm */; settings = {COMPILER_FLAGS = "-Wno-undef -Wno-deprecated-declarations"; }; }; + CD82030C1395AB6A00F956C6 /* WebVideoFullscreenHUDWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = CD8203081395AB6A00F956C6 /* WebVideoFullscreenHUDWindowController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CD82030D1395AB6A00F956C6 /* WebVideoFullscreenHUDWindowController.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD8203091395AB6A00F956C6 /* WebVideoFullscreenHUDWindowController.mm */; }; + CD8203101395ACE700F956C6 /* WebWindowAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = CD82030E1395ACE700F956C6 /* WebWindowAnimation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CD8203111395ACE700F956C6 /* WebWindowAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD82030F1395ACE700F956C6 /* WebWindowAnimation.mm */; }; + CDA79824170A258300D45C55 /* AudioSession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDA79823170A258300D45C55 /* AudioSession.cpp */; }; + CDA79827170A279100D45C55 /* AudioSessionIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDA79825170A279000D45C55 /* AudioSessionIOS.mm */; }; + CDA7982A170A3D0000D45C55 /* AudioSession.h in Headers */ = {isa = PBXBuildFile; fileRef = CDA79821170A22DC00D45C55 /* AudioSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CDA98DA31601464100FEA3B1 /* JSMediaKeyError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDA98D9B160128A500FEA3B1 /* JSMediaKeyError.cpp */; }; + CDA98DD816025BEF00FEA3B1 /* MediaKeyMessageEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDA98DD516025BED00FEA3B1 /* MediaKeyMessageEvent.cpp */; }; + CDA98DDF16026A3700FEA3B1 /* JSMediaKeyMessageEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDA98DDB16026A1800FEA3B1 /* JSMediaKeyMessageEvent.cpp */; }; + CDA98DE016026A3700FEA3B1 /* JSMediaKeyNeededEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDA98DDD16026A1900FEA3B1 /* JSMediaKeyNeededEvent.cpp */; }; + CDA98E0416039E1A00FEA3B1 /* JSMediaKeys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDA98DCE1601597900FEA3B1 /* JSMediaKeys.cpp */; }; + CDA98E0616039E1F00FEA3B1 /* JSMediaKeySession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDA98DD01601597900FEA3B1 /* JSMediaKeySession.cpp */; }; + CDA98E0B1603CD6000FEA3B1 /* CDM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDA98E091603CD5900FEA3B1 /* CDM.cpp */; }; + CDA98E0D1603FE4A00FEA3B1 /* MediaKeys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDA98DCA1601508A00FEA3B1 /* MediaKeys.cpp */; }; + CDA98E0E1603FE5800FEA3B1 /* MediaKeySession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDA98DC716014F2C00FEA3B1 /* MediaKeySession.cpp */; }; + CDAA8D0A14D71B2E0061EA60 /* PlatformClockCM.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDAA8D0814D385600061EA60 /* PlatformClockCM.mm */; }; + CDAE8C091746B95700532D78 /* AudioSessionManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDAE8C071746B95700532D78 /* AudioSessionManager.cpp */; }; + CDB859F7160D48A400E5B07F /* MediaKeyEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDB859F4160D489900E5B07F /* MediaKeyEvent.cpp */; }; + CDB859FA160D494900E5B07F /* JSMediaKeyEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDB859F8160D493E00E5B07F /* JSMediaKeyEvent.cpp */; }; + CDC26B40160A8CC60026757B /* MockCDM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDC26B3C160A62B00026757B /* MockCDM.cpp */; }; + CDC26B41160A8CCE0026757B /* MockCDM.h in Headers */ = {isa = PBXBuildFile; fileRef = CDC26B3D160A62B00026757B /* MockCDM.h */; }; + CDC69DD61632026C007C38DF /* WebCoreFullScreenWarningView.h in Headers */ = {isa = PBXBuildFile; fileRef = CDC69DD41632026C007C38DF /* WebCoreFullScreenWarningView.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CDC69DD71632026C007C38DF /* WebCoreFullScreenWarningView.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDC69DD51632026C007C38DF /* WebCoreFullScreenWarningView.mm */; }; + CDC69DDA16371FD4007C38DF /* WebCoreFullScreenPlaceholderView.h in Headers */ = {isa = PBXBuildFile; fileRef = CDC69DD816371FD3007C38DF /* WebCoreFullScreenPlaceholderView.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CDC69DDB16371FD4007C38DF /* WebCoreFullScreenPlaceholderView.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDC69DD916371FD3007C38DF /* WebCoreFullScreenPlaceholderView.mm */; }; + CDD525D7145B6DD0008D204D /* JSHTMLMediaElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDF65CCC145B6AFE00C4C7AA /* JSHTMLMediaElementCustom.cpp */; }; + CDDE691F171DFAD000A44D89 /* JSAudioBufferCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDDE691D171DF89100A44D89 /* JSAudioBufferCustom.cpp */; }; + CDEA763014608A53008B31F1 /* PlatformClockCA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDEA762E146084DE008B31F1 /* PlatformClockCA.cpp */; }; + CDEA76341460B56F008B31F1 /* ClockGeneric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDEA76321460AE29008B31F1 /* ClockGeneric.cpp */; }; + CDEA76351460B71A008B31F1 /* Clock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDEA76331460B462008B31F1 /* Clock.cpp */; }; + CDEA7C841276230400B846DD /* RenderFullScreen.h in Headers */ = {isa = PBXBuildFile; fileRef = CDEA7C821276230400B846DD /* RenderFullScreen.h */; }; + CDEA7C851276230400B846DD /* RenderFullScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDEA7C831276230400B846DD /* RenderFullScreen.cpp */; }; + CDF65CC8145B1E7500C4C7AA /* MediaController.h in Headers */ = {isa = PBXBuildFile; fileRef = CD27F6E4145767870078207D /* MediaController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CDF65CCA145B448800C4C7AA /* MediaControllerInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = CDF65CC9145B43A700C4C7AA /* MediaControllerInterface.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CE02F0C411E83ADD00C6684A /* ScriptControllerBase.h in Headers */ = {isa = PBXBuildFile; fileRef = CE02F0C311E83ADD00C6684A /* ScriptControllerBase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CE057FA51220731100A476D5 /* DocumentMarkerController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE057FA31220731100A476D5 /* DocumentMarkerController.cpp */; }; + CE057FA61220731100A476D5 /* DocumentMarkerController.h in Headers */ = {isa = PBXBuildFile; fileRef = CE057FA41220731100A476D5 /* DocumentMarkerController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CE08C3D1152B599A0021B8C2 /* AlternativeTextController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE08C3CF152B599A0021B8C2 /* AlternativeTextController.cpp */; }; + CE08C3D2152B599A0021B8C2 /* AlternativeTextController.h in Headers */ = {isa = PBXBuildFile; fileRef = CE08C3D0152B599A0021B8C2 /* AlternativeTextController.h */; settings = {ATTRIBUTES = (); }; }; + CE7B2DB31586ABAD0098B3FA /* AlternativeTextUIController.h in Headers */ = {isa = PBXBuildFile; fileRef = CE7B2DAF1586ABAD0098B3FA /* AlternativeTextUIController.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CE7B2DB41586ABAD0098B3FA /* AlternativeTextUIController.mm in Sources */ = {isa = PBXBuildFile; fileRef = CE7B2DB01586ABAD0098B3FA /* AlternativeTextUIController.mm */; }; + CE7B2DB51586ABAD0098B3FA /* TextAlternativeWithRange.h in Headers */ = {isa = PBXBuildFile; fileRef = CE7B2DB11586ABAD0098B3FA /* TextAlternativeWithRange.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CE7B2DB61586ABAD0098B3FA /* TextAlternativeWithRange.mm in Sources */ = {isa = PBXBuildFile; fileRef = CE7B2DB21586ABAD0098B3FA /* TextAlternativeWithRange.mm */; }; + CECADFC6153778FF00E37068 /* DictationAlternative.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CECADFC2153778FF00E37068 /* DictationAlternative.cpp */; }; + CECADFC7153778FF00E37068 /* DictationAlternative.h in Headers */ = {isa = PBXBuildFile; fileRef = CECADFC3153778FF00E37068 /* DictationAlternative.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CECADFC8153778FF00E37068 /* DictationCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CECADFC4153778FF00E37068 /* DictationCommand.cpp */; }; + CECADFC9153778FF00E37068 /* DictationCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = CECADFC5153778FF00E37068 /* DictationCommand.h */; }; + CECADFCD1537791D00E37068 /* TextInsertionBaseCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CECADFCB1537791D00E37068 /* TextInsertionBaseCommand.cpp */; }; + CECADFCE1537791D00E37068 /* TextInsertionBaseCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = CECADFCC1537791D00E37068 /* TextInsertionBaseCommand.h */; }; + CECCFC3B141973D5002A0AC1 /* DecodeEscapeSequences.h in Headers */ = {isa = PBXBuildFile; fileRef = CECCFC3A141973D5002A0AC1 /* DecodeEscapeSequences.h */; }; + CEDA12D7152CA1CB00D9E08D /* AlternativeTextClient.h in Headers */ = {isa = PBXBuildFile; fileRef = CEDA12D6152CA1CB00D9E08D /* AlternativeTextClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CEF418CE1179678C009D112C /* ViewportArguments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CEF418CC1179678C009D112C /* ViewportArguments.cpp */; }; + CEF418CF1179678C009D112C /* ViewportArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = CEF418CD1179678C009D112C /* ViewportArguments.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D000EBA211BDAFD400C47726 /* FrameLoaderStateMachine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D000EBA011BDAFD400C47726 /* FrameLoaderStateMachine.cpp */; }; + D000EBA311BDAFD400C47726 /* FrameLoaderStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = D000EBA111BDAFD400C47726 /* FrameLoaderStateMachine.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D000ED2711C1B9CD00C47726 /* SubframeLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D000ED2511C1B9CD00C47726 /* SubframeLoader.cpp */; }; + D000ED2811C1B9CD00C47726 /* SubframeLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = D000ED2611C1B9CD00C47726 /* SubframeLoader.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D01A27AD10C9BFD800026A42 /* SpaceSplitString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D01A27AB10C9BFD800026A42 /* SpaceSplitString.cpp */; }; + D01A27AE10C9BFD800026A42 /* SpaceSplitString.h in Headers */ = {isa = PBXBuildFile; fileRef = D01A27AC10C9BFD800026A42 /* SpaceSplitString.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D05CED290A40BB2C00C5AF38 /* FormatBlockCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D05CED270A40BB2C00C5AF38 /* FormatBlockCommand.cpp */; }; + D05CED2A0A40BB2C00C5AF38 /* FormatBlockCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = D05CED280A40BB2C00C5AF38 /* FormatBlockCommand.h */; }; + D06C0D8F0CFD11460065F43F /* RemoveFormatCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = D06C0D8D0CFD11460065F43F /* RemoveFormatCommand.h */; }; + D06C0D900CFD11460065F43F /* RemoveFormatCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D06C0D8E0CFD11460065F43F /* RemoveFormatCommand.cpp */; }; + D07DEAB90A36554A00CA30F8 /* InsertListCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D07DEAB70A36554A00CA30F8 /* InsertListCommand.cpp */; }; + D07DEABA0A36554A00CA30F8 /* InsertListCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = D07DEAB80A36554A00CA30F8 /* InsertListCommand.h */; }; + D086FE9809D53AAB005BC74D /* UnlinkCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = D086FE9609D53AAB005BC74D /* UnlinkCommand.h */; }; + D086FE9909D53AAB005BC74D /* UnlinkCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D086FE9709D53AAB005BC74D /* UnlinkCommand.cpp */; }; + D0A3A7311405A39800FB8ED3 /* ResourceLoaderOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = D0A3A7301405A39800FB8ED3 /* ResourceLoaderOptions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D0B0556809C6700100307E43 /* CreateLinkCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = D0B0556609C6700100307E43 /* CreateLinkCommand.h */; }; + D0B0556909C6700100307E43 /* CreateLinkCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0B0556709C6700100307E43 /* CreateLinkCommand.cpp */; }; + D0BC54491443AC4A00E105DA /* CachedStyleSheetClient.h in Headers */ = {isa = PBXBuildFile; fileRef = D0BC54481443AC4A00E105DA /* CachedStyleSheetClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D0CE58F8125E4CC200F3F199 /* ResourceLoadScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0CE58F6125E4CC200F3F199 /* ResourceLoadScheduler.cpp */; }; + D0CE58F9125E4CC200F3F199 /* ResourceLoadScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = D0CE58F7125E4CC200F3F199 /* ResourceLoadScheduler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D0EDA774143E303C0028E383 /* CachedRawResource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0EDA772143E303C0028E383 /* CachedRawResource.cpp */; }; + D0EDA775143E303C0028E383 /* CachedRawResource.h in Headers */ = {isa = PBXBuildFile; fileRef = D0EDA773143E303C0028E383 /* CachedRawResource.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D0FF2A5D11F8C45A007E74E0 /* PingLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0FF2A5B11F8C45A007E74E0 /* PingLoader.cpp */; }; + D0FF2A5E11F8C45A007E74E0 /* PingLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = D0FF2A5C11F8C45A007E74E0 /* PingLoader.h */; }; + D23CA55D0AB0EAAE005108A5 /* JSRangeException.h in Headers */ = {isa = PBXBuildFile; fileRef = D23CA55C0AB0EAAE005108A5 /* JSRangeException.h */; }; + D23CA55F0AB0EAB6005108A5 /* JSRangeException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D23CA55E0AB0EAB6005108A5 /* JSRangeException.cpp */; }; + D23CA56C0AB0EB8D005108A5 /* RangeException.h in Headers */ = {isa = PBXBuildFile; fileRef = D23CA56B0AB0EB8D005108A5 /* RangeException.h */; }; + D302754912A5FE84004BD828 /* RenderDetailsMarker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D302754512A5FE84004BD828 /* RenderDetailsMarker.cpp */; }; + D302754A12A5FE84004BD828 /* RenderDetailsMarker.h in Headers */ = {isa = PBXBuildFile; fileRef = D302754612A5FE84004BD828 /* RenderDetailsMarker.h */; }; + D340629B1253BC8C009E4259 /* MediaQueryListListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D340629A1253BC8C009E4259 /* MediaQueryListListener.cpp */; }; + D359D789129CA2710006E5D2 /* HTMLDetailsElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D359D786129CA2710006E5D2 /* HTMLDetailsElement.cpp */; }; + D359D78A129CA2710006E5D2 /* HTMLDetailsElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D359D787129CA2710006E5D2 /* HTMLDetailsElement.h */; }; + D359D791129CA3C00006E5D2 /* DOMHTMLDetailsElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D359D78E129CA3C00006E5D2 /* DOMHTMLDetailsElement.h */; }; + D359D792129CA3C00006E5D2 /* DOMHTMLDetailsElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = D359D78F129CA3C00006E5D2 /* DOMHTMLDetailsElement.mm */; }; + D359D793129CA3C00006E5D2 /* DOMHTMLDetailsElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = D359D790129CA3C00006E5D2 /* DOMHTMLDetailsElementInternal.h */; }; + D359D8BE129CA55C0006E5D2 /* JSHTMLDetailsElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D359D8BC129CA55C0006E5D2 /* JSHTMLDetailsElement.cpp */; }; + D359D8BF129CA55C0006E5D2 /* JSHTMLDetailsElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D359D8BD129CA55C0006E5D2 /* JSHTMLDetailsElement.h */; }; + D3A94A38122DABAC00A37BBC /* MediaQueryList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D3A94A31122DABAC00A37BBC /* MediaQueryList.cpp */; }; + D3A94A39122DABAC00A37BBC /* MediaQueryList.h in Headers */ = {isa = PBXBuildFile; fileRef = D3A94A32122DABAC00A37BBC /* MediaQueryList.h */; }; + D3A94A3B122DABAC00A37BBC /* MediaQueryListListener.h in Headers */ = {isa = PBXBuildFile; fileRef = D3A94A34122DABAC00A37BBC /* MediaQueryListListener.h */; }; + D3A94A46122DC40F00A37BBC /* JSMediaQueryList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D3A94A42122DC40F00A37BBC /* JSMediaQueryList.cpp */; }; + D3A94A47122DC40F00A37BBC /* JSMediaQueryList.h in Headers */ = {isa = PBXBuildFile; fileRef = D3A94A43122DC40F00A37BBC /* JSMediaQueryList.h */; }; + D3AA10F3123A98AA0092152B /* MediaQueryMatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D3AA10F1123A98AA0092152B /* MediaQueryMatcher.cpp */; }; + D3AA10F4123A98AA0092152B /* MediaQueryMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = D3AA10F2123A98AA0092152B /* MediaQueryMatcher.h */; }; + D3D4E972130C7CFE007BA540 /* HTMLSummaryElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D3D4E970130C7CFE007BA540 /* HTMLSummaryElement.cpp */; }; + D3D4E973130C7CFE007BA540 /* HTMLSummaryElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D3D4E971130C7CFE007BA540 /* HTMLSummaryElement.h */; }; + D619A307144E00BE004BC302 /* ChildListMutationScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D619A305144E00BE004BC302 /* ChildListMutationScope.cpp */; }; + D619A308144E00BE004BC302 /* ChildListMutationScope.h in Headers */ = {isa = PBXBuildFile; fileRef = D619A306144E00BE004BC302 /* ChildListMutationScope.h */; }; + D6489D25166FFCF1007C031B /* JSHTMLTemplateElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D6489D23166FFCF1007C031B /* JSHTMLTemplateElement.cpp */; }; + D6489D26166FFCF1007C031B /* JSHTMLTemplateElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D6489D24166FFCF1007C031B /* JSHTMLTemplateElement.h */; }; + D66817FA166FE6D700FA07B4 /* HTMLTemplateElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D6EFC0BB1666DF7A003D291E /* HTMLTemplateElement.cpp */; }; + D66817FB166FE6D700FA07B4 /* HTMLTemplateElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D6EFC0BC1666DF7A003D291E /* HTMLTemplateElement.h */; }; + D6E276AF14637455001D280A /* MutationObserverRegistration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D6E276AD14637455001D280A /* MutationObserverRegistration.cpp */; }; + D6E276B014637455001D280A /* MutationObserverRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = D6E276AE14637455001D280A /* MutationObserverRegistration.h */; }; + D6E528A3149A926D00EFE1F3 /* MutationObserverInterestGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D6E528A1149A926D00EFE1F3 /* MutationObserverInterestGroup.cpp */; }; + D6E528A4149A926D00EFE1F3 /* MutationObserverInterestGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = D6E528A2149A926D00EFE1F3 /* MutationObserverInterestGroup.h */; }; + D6F7960D166FFECE0076DD18 /* JSHTMLTemplateElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D6F7960C166FFECE0076DD18 /* JSHTMLTemplateElementCustom.cpp */; }; + D6FDAEF3149C06190037B1E1 /* HistogramSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D6FDAEF2149C06190037B1E1 /* HistogramSupport.cpp */; }; + D70AD65713E1342B005B50B4 /* RenderRegion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D70AD65513E1342B005B50B4 /* RenderRegion.cpp */; }; + D70AD65813E1342B005B50B4 /* RenderRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = D70AD65613E1342B005B50B4 /* RenderRegion.h */; }; + D72F6D79153159A3001EE44E /* FlowThreadController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D72F6D77153159A3001EE44E /* FlowThreadController.cpp */; }; + D72F6D7A153159A3001EE44E /* FlowThreadController.h in Headers */ = {isa = PBXBuildFile; fileRef = D72F6D78153159A3001EE44E /* FlowThreadController.h */; }; + D7613A501474F13F00DB8606 /* WebKitNamedFlow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D7613A4E1474F13F00DB8606 /* WebKitNamedFlow.cpp */; }; + D7613AC414753E5600DB8606 /* JSWebKitNamedFlow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D7613AC214753E5600DB8606 /* JSWebKitNamedFlow.cpp */; }; + D8B6152F1032495100C8554A /* Cookie.h in Headers */ = {isa = PBXBuildFile; fileRef = D8B6152E1032495100C8554A /* Cookie.h */; settings = {ATTRIBUTES = (Private, ); }; }; + DAED203016F2442B0070EC0F /* PageConsole.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DAACB3D916F2416400666135 /* PageConsole.cpp */; }; + DAED203116F244480070EC0F /* PageConsole.h in Headers */ = {isa = PBXBuildFile; fileRef = DAACB3DA16F2416400666135 /* PageConsole.h */; settings = {ATTRIBUTES = (Private, ); }; }; + DB23C2CB0A508D29002489EB /* IndentOutdentCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DB23C2C90A508D29002489EB /* IndentOutdentCommand.cpp */; }; + DB23C2CC0A508D29002489EB /* IndentOutdentCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = DB23C2CA0A508D29002489EB /* IndentOutdentCommand.h */; }; + DD05FE0D0B8BA3C6009ACDFE /* WebCoreObjCExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = DD05FE0B0B8BA3C6009ACDFE /* WebCoreObjCExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; + DD763BB20992C2C900740B8E /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = DD763BB10992C2C900740B8E /* libxml2.dylib */; }; + DD7CDF250A23CF9800069928 /* CSSUnknownRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CCE0A1989CA007FB8C5 /* CSSUnknownRule.h */; }; + DDE63ED50B7D45A800226998 /* DOMTextEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 933A14750B7D1BAF00A53FFD /* DOMTextEvent.h */; }; + DE49B309165F2FE10010338D /* RenderMediaControlElements.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DE49B307165F2FE10010338D /* RenderMediaControlElements.cpp */; }; + DEBCCDD216646E8200A452E1 /* RenderMediaControlElements.h in Headers */ = {isa = PBXBuildFile; fileRef = DE49B308165F2FE10010338D /* RenderMediaControlElements.h */; }; + DEBCCDD416646EAF00A452E1 /* MediaControlElementTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = DE49B300165F2FC60010338D /* MediaControlElementTypes.h */; }; + DEBCCDD516646EB200A452E1 /* MediaControlElementTypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DE49B2FF165F2FC60010338D /* MediaControlElementTypes.cpp */; }; + DF9AFD7213FC31D80015FEB7 /* MediaPlayerPrivateAVFoundationObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = DF9AFD7013FC31D80015FEB7 /* MediaPlayerPrivateAVFoundationObjC.h */; }; + DF9AFD7313FC31D80015FEB7 /* MediaPlayerPrivateAVFoundationObjC.mm in Sources */ = {isa = PBXBuildFile; fileRef = DF9AFD7113FC31D80015FEB7 /* MediaPlayerPrivateAVFoundationObjC.mm */; }; + E0FEF372B17C53EAC1C1FBEE /* EventSource.h in Headers */ = {isa = PBXBuildFile; fileRef = E0FEF371B17C53EAC1C1FBEE /* EventSource.h */; }; + E0FEF372B27C53EAC1C1FBEE /* EventSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E0FEF371B27C53EAC1C1FBEE /* EventSource.cpp */; }; + E0FEF372B37C53EAC1C1FBEE /* JSEventSource.h in Headers */ = {isa = PBXBuildFile; fileRef = E0FEF371B37C53EAC1C1FBEE /* JSEventSource.h */; }; + E0FEF372B47C53EAC1C1FBEE /* JSEventSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E0FEF371B47C53EAC1C1FBEE /* JSEventSource.cpp */; }; + E100EE751546EAC100BA11D1 /* DeprecatedStyleBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E100EE731546EAC100BA11D1 /* DeprecatedStyleBuilder.cpp */; }; + E100EE761546EAC100BA11D1 /* DeprecatedStyleBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = E100EE741546EAC100BA11D1 /* DeprecatedStyleBuilder.h */; }; + E107400D0E77BDC00033AF24 /* JSMessageChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E107400B0E77BDC00033AF24 /* JSMessageChannel.cpp */; }; + E107400E0E77BDC00033AF24 /* JSMessageChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = E107400C0E77BDC00033AF24 /* JSMessageChannel.h */; }; + E10B937C0B73C00A003ED890 /* JSCustomXPathNSResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = E10B937B0B73C00A003ED890 /* JSCustomXPathNSResolver.h */; }; + E10B93C30B73C291003ED890 /* JSCustomXPathNSResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E10B93C20B73C291003ED890 /* JSCustomXPathNSResolver.cpp */; }; + E10B9B6C0B747599003ED890 /* NativeXPathNSResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = E10B9B6A0B747599003ED890 /* NativeXPathNSResolver.h */; }; + E10B9B6D0B747599003ED890 /* NativeXPathNSResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E10B9B6B0B747599003ED890 /* NativeXPathNSResolver.cpp */; }; + E10B9CCC0B747A44003ED890 /* DOMCustomXPathNSResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = E10B9CCA0B747A44003ED890 /* DOMCustomXPathNSResolver.h */; }; + E10B9CCD0B747A44003ED890 /* DOMCustomXPathNSResolver.mm in Sources */ = {isa = PBXBuildFile; fileRef = E10B9CCB0B747A44003ED890 /* DOMCustomXPathNSResolver.mm */; }; + E11AF15111B9A1A300805103 /* Cursor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E11AF15011B9A1A300805103 /* Cursor.cpp */; }; + E11C9D9B0EB3681200E409DB /* ScriptExecutionContext.h in Headers */ = {isa = PBXBuildFile; fileRef = E11C9D9A0EB3681200E409DB /* ScriptExecutionContext.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E11C9DB00EB3699500E409DB /* ScriptExecutionContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E11C9DAF0EB3699500E409DB /* ScriptExecutionContext.cpp */; }; + E124748410AA161D00B79493 /* AuthenticationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E124748310AA161D00B79493 /* AuthenticationClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E12719C70EEEC16800F61213 /* NavigatorBase.h in Headers */ = {isa = PBXBuildFile; fileRef = E12719C60EEEC16800F61213 /* NavigatorBase.h */; }; + E12719CA0EEEC21300F61213 /* NavigatorBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E12719C90EEEC21300F61213 /* NavigatorBase.cpp */; }; + E1271A0B0EEEC77A00F61213 /* WorkerNavigator.h in Headers */ = {isa = PBXBuildFile; fileRef = E1271A0A0EEEC77A00F61213 /* WorkerNavigator.h */; }; + E1271A140EEEC80400F61213 /* WorkerNavigator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1271A130EEEC80400F61213 /* WorkerNavigator.cpp */; }; + E1271A580EEECDE400F61213 /* JSWorkerNavigator.h in Headers */ = {isa = PBXBuildFile; fileRef = E1271A560EEECDE400F61213 /* JSWorkerNavigator.h */; }; + E1271A590EEECDE400F61213 /* JSWorkerNavigator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1271A570EEECDE400F61213 /* JSWorkerNavigator.cpp */; }; + E1284AE110447D4500EAEB52 /* PageTransitionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = E1284AE010447D4500EAEB52 /* PageTransitionEvent.h */; }; + E1284AEA10447DEE00EAEB52 /* PageTransitionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1284AE910447DEE00EAEB52 /* PageTransitionEvent.cpp */; }; + E1284BB110449FFA00EAEB52 /* JSPageTransitionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = E1284BAF10449FFA00EAEB52 /* JSPageTransitionEvent.h */; }; + E1284BB210449FFA00EAEB52 /* JSPageTransitionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1284BB010449FFA00EAEB52 /* JSPageTransitionEvent.cpp */; }; + E1284BD51044A01E00EAEB52 /* DOMPageTransitionEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1284BD31044A01E00EAEB52 /* DOMPageTransitionEvent.mm */; }; + E1284BD61044A01E00EAEB52 /* DOMPageTransitionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = E1284BD41044A01E00EAEB52 /* DOMPageTransitionEvent.h */; }; + E12EDB7B0B308A78002704B6 /* EventTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = E12EDB7A0B308A78002704B6 /* EventTarget.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E12EDBEA0B308E0B002704B6 /* EventTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E12EDBE90B308E0B002704B6 /* EventTarget.cpp */; }; + E134F5AB12EE343F004EC58D /* IntRectHash.h in Headers */ = {isa = PBXBuildFile; fileRef = E134F5AA12EE343F004EC58D /* IntRectHash.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E139866315478474001E3F65 /* StyleResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E139866115478474001E3F65 /* StyleResolver.cpp */; }; + E139866415478474001E3F65 /* StyleResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = E139866215478474001E3F65 /* StyleResolver.h */; }; + E13EF3441684ECF40034C83F /* NetworkStorageSession.h in Headers */ = {isa = PBXBuildFile; fileRef = E13EF3421684ECF40034C83F /* NetworkStorageSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E13EF34916850C470034C83F /* NetworkStorageSessionCFNet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E13EF34716850C470034C83F /* NetworkStorageSessionCFNet.cpp */; }; + E13F01F11270E19000DFBA71 /* CookieStorageMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = E13F01F01270E19000DFBA71 /* CookieStorageMac.mm */; }; + E1424C8A164B3B4E00F32D40 /* PlatformCookieJar.h in Headers */ = {isa = PBXBuildFile; fileRef = E1424C89164B3B4E00F32D40 /* PlatformCookieJar.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1424C90164B460B00F32D40 /* CookieJarMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1424C8F164B460B00F32D40 /* CookieJarMac.mm */; }; + E1424C93164B52C800F32D40 /* CookieJar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1424C91164B52C800F32D40 /* CookieJar.cpp */; }; + E1424C94164B52C800F32D40 /* CookieJar.h in Headers */ = {isa = PBXBuildFile; fileRef = E1424C92164B52C800F32D40 /* CookieJar.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E145349716A9BB6A000F6FD2 /* DOMTransitionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = E145349416A9BB6A000F6FD2 /* DOMTransitionEvent.h */; }; + E145349816A9BB6A000F6FD2 /* DOMTransitionEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = E145349516A9BB6A000F6FD2 /* DOMTransitionEvent.mm */; }; + E145349916A9BB6A000F6FD2 /* DOMTransitionEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = E145349616A9BB6A000F6FD2 /* DOMTransitionEventInternal.h */; }; + E14A94D716DFDF950068DE82 /* BlobRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E14A94D616DFDF950068DE82 /* BlobRegistry.cpp */; }; + E14F1C4414B5DAC600EA9009 /* HTMLFormControlElementWithState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E14F1C4214B5DAC600EA9009 /* HTMLFormControlElementWithState.cpp */; }; + E14F1C4514B5DAC600EA9009 /* HTMLFormControlElementWithState.h in Headers */ = {isa = PBXBuildFile; fileRef = E14F1C4314B5DAC600EA9009 /* HTMLFormControlElementWithState.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1513D4F1677EA8300149FCB /* InitializeLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = E1513D4E1677EA8300149FCB /* InitializeLogging.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1513D511677F08800149FCB /* NotImplemented.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1513D501677F08800149FCB /* NotImplemented.cpp */; }; + E152551516FD2350003D7ADB /* WebCoreResourceHandleAsOperationQueueDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = E152551316FD234F003D7ADB /* WebCoreResourceHandleAsOperationQueueDelegate.h */; }; + E152551616FD2350003D7ADB /* WebCoreResourceHandleAsOperationQueueDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = E152551416FD234F003D7ADB /* WebCoreResourceHandleAsOperationQueueDelegate.mm */; }; + E15A36D71104572000B7B639 /* XMLNSNames.h in Headers */ = {isa = PBXBuildFile; fileRef = E15A36D61104572000B7B639 /* XMLNSNames.h */; }; + E15A36D91104572700B7B639 /* XMLNSNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E15A36D81104572700B7B639 /* XMLNSNames.cpp */; }; + E169803D1133542D00894115 /* CRuntimeObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E169803C1133542D00894115 /* CRuntimeObject.h */; }; + E16980491133644700894115 /* CRuntimeObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E16980481133644700894115 /* CRuntimeObject.cpp */; }; + E16982551134629D00894115 /* ObjCRuntimeObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E16982541134629D00894115 /* ObjCRuntimeObject.h */; }; + E16982601134636A00894115 /* ObjCRuntimeObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = E169825F1134636A00894115 /* ObjCRuntimeObject.mm */; }; + E16A84F914C85CCC002977DF /* CSSBorderImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E16A84F714C85CCC002977DF /* CSSBorderImage.cpp */; }; + E16A84FA14C85CCC002977DF /* CSSBorderImage.h in Headers */ = {isa = PBXBuildFile; fileRef = E16A84F814C85CCC002977DF /* CSSBorderImage.h */; }; + E17B491516A9B094001C8839 /* TransitionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E17B491316A9B093001C8839 /* TransitionEvent.cpp */; }; + E17B491616A9B094001C8839 /* TransitionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = E17B491416A9B093001C8839 /* TransitionEvent.h */; }; + E17B492116A9B8FF001C8839 /* JSTransitionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = E17B491F16A9B8FF001C8839 /* JSTransitionEvent.h */; }; + E17B492216A9B8FF001C8839 /* JSTransitionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E17B492016A9B8FF001C8839 /* JSTransitionEvent.cpp */; }; + E180810E16FCECDF00B80D07 /* WebCoreResourceHandleAsDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = E180810C16FCECDF00B80D07 /* WebCoreResourceHandleAsDelegate.mm */; }; + E180810F16FCECDF00B80D07 /* WebCoreResourceHandleAsDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = E180810D16FCECDF00B80D07 /* WebCoreResourceHandleAsDelegate.h */; }; + E180811216FCF42F00B80D07 /* SynchronousLoaderClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E180811016FCF42E00B80D07 /* SynchronousLoaderClient.cpp */; }; + E180811616FCF9CB00B80D07 /* SynchronousLoaderClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = E180811416FCF9CB00B80D07 /* SynchronousLoaderClient.mm */; }; + E180811716FCF9CB00B80D07 /* SynchronousLoaderClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E180811516FCF9CB00B80D07 /* SynchronousLoaderClient.h */; }; + E182568F0EF2B02D00933242 /* JSWorkerGlobalScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E182568D0EF2B02D00933242 /* JSWorkerGlobalScope.cpp */; }; + E18256900EF2B02D00933242 /* JSWorkerGlobalScope.h in Headers */ = {isa = PBXBuildFile; fileRef = E182568E0EF2B02D00933242 /* JSWorkerGlobalScope.h */; }; + E18258AC0EF3CD7000933242 /* JSWorkerGlobalScopeCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E18258AB0EF3CD7000933242 /* JSWorkerGlobalScopeCustom.cpp */; }; + E187056316E54A0D00585E97 /* MainThreadTask.h in Headers */ = {isa = PBXBuildFile; fileRef = E187056216E54A0D00585E97 /* MainThreadTask.h */; }; + E18772F1126E2629003DD586 /* Language.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E18772F0126E2629003DD586 /* Language.cpp */; }; + E1A1470811102B1500EEC0F3 /* ContainerNodeAlgorithms.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A1470711102B1500EEC0F3 /* ContainerNodeAlgorithms.h */; }; + E1A3162D134BC32D007C9A4F /* WebNSAttributedStringExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A3162B134BC32D007C9A4F /* WebNSAttributedStringExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1A3162E134BC32D007C9A4F /* WebNSAttributedStringExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1A3162C134BC32D007C9A4F /* WebNSAttributedStringExtras.mm */; }; + E1A31663134BCAE8007C9A4F /* HTMLConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = C5392D331326AD0100043D35 /* HTMLConverter.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1A5F99B0E7EAA2500AF85EA /* JSMessageChannelCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1A5F99A0E7EAA2500AF85EA /* JSMessageChannelCustom.cpp */; }; + E1A643F20EC0972500779668 /* WorkerScriptController.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A643F10EC0972500779668 /* WorkerScriptController.h */; }; + E1A643FD0EC097A000779668 /* WorkerScriptController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1A643FC0EC097A000779668 /* WorkerScriptController.cpp */; }; + E1A8E56617552B2A007488E7 /* CFURLExtras.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1A8E56417552B2A007488E7 /* CFURLExtras.cpp */; }; + E1A8E56717552B2A007488E7 /* CFURLExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A8E56517552B2A007488E7 /* CFURLExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1ACAF4C0E791AAF0087D12B /* DOMMessagePort.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1ACAF4A0E791AAF0087D12B /* DOMMessagePort.mm */; }; + E1ACAF4D0E791AAF0087D12B /* DOMMessagePort.h in Headers */ = {isa = PBXBuildFile; fileRef = E1ACAF4B0E791AAF0087D12B /* DOMMessagePort.h */; }; + E1AD12D61295D0BD00ACA989 /* JSProcessingInstructionCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1AD12D51295D0BD00ACA989 /* JSProcessingInstructionCustom.cpp */; }; + E1AD139B1295D92600ACA989 /* JSHTMLLinkElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1AD139A1295D92600ACA989 /* JSHTMLLinkElementCustom.cpp */; }; + E1AD139E1295D96100ACA989 /* JSHTMLStyleElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1AD139D1295D96100ACA989 /* JSHTMLStyleElementCustom.cpp */; }; + E1AD14231295EA7F00ACA989 /* JSHTMLInputElementCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = E1AD14221295EA7F00ACA989 /* JSHTMLInputElementCustom.h */; }; + E1AD147C1297307E00ACA989 /* JSCSSImportRuleCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1AD147B1297307E00ACA989 /* JSCSSImportRuleCustom.cpp */; }; + E1AD14911297337400ACA989 /* JSCSSFontFaceRuleCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1AD14901297337400ACA989 /* JSCSSFontFaceRuleCustom.cpp */; }; + E1AD14A31297345300ACA989 /* JSCSSMediaRuleCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1AD14A21297345300ACA989 /* JSCSSMediaRuleCustom.cpp */; }; + E1AD14B5129734CA00ACA989 /* JSWebKitCSSKeyframesRuleCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1AD14B4129734CA00ACA989 /* JSWebKitCSSKeyframesRuleCustom.cpp */; }; + E1AD14C51297354900ACA989 /* JSWebKitCSSKeyframeRuleCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1AD14C41297354900ACA989 /* JSWebKitCSSKeyframeRuleCustom.cpp */; }; + E1AD14CD129735A400ACA989 /* JSCSSPageRuleCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1AD14CC129735A400ACA989 /* JSCSSPageRuleCustom.cpp */; }; + E1AD14E81297377400ACA989 /* JSCSSStyleRuleCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1AD14E71297377400ACA989 /* JSCSSStyleRuleCustom.cpp */; }; + E1ADECBF0E76ACF1004A1A5E /* MessagePort.h in Headers */ = {isa = PBXBuildFile; fileRef = E1ADECBD0E76ACF1004A1A5E /* MessagePort.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1ADECC00E76ACF1004A1A5E /* MessagePort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1ADECBE0E76ACF1004A1A5E /* MessagePort.cpp */; }; + E1ADECCE0E76AD8B004A1A5E /* MessageChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = E1ADECCC0E76AD8B004A1A5E /* MessageChannel.h */; }; + E1ADECCF0E76AD8B004A1A5E /* MessageChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1ADECCD0E76AD8B004A1A5E /* MessageChannel.cpp */; }; + E1ADED470E76B8DD004A1A5E /* JSMessagePortCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1ADED460E76B8DD004A1A5E /* JSMessagePortCustom.cpp */; }; + E1ADEDD50E76BD60004A1A5E /* DOMMessagePortInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = E1ADEDD40E76BD60004A1A5E /* DOMMessagePortInternal.h */; }; + E1ADEDDA0E76BD93004A1A5E /* JSMessagePort.h in Headers */ = {isa = PBXBuildFile; fileRef = E1ADEDD80E76BD93004A1A5E /* JSMessagePort.h */; }; + E1ADEDDB0E76BD93004A1A5E /* JSMessagePort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1ADEDD90E76BD93004A1A5E /* JSMessagePort.cpp */; }; + E1B25106152A0BAF0069B779 /* StylePropertyShorthand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1B25104152A0BAF0069B779 /* StylePropertyShorthand.cpp */; }; + E1B25107152A0BB00069B779 /* StylePropertyShorthand.h in Headers */ = {isa = PBXBuildFile; fileRef = E1B25105152A0BAF0069B779 /* StylePropertyShorthand.h */; }; + E1B4CD2510B322E200BFFD7E /* CredentialStorageMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1B4CD2410B322E200BFFD7E /* CredentialStorageMac.mm */; }; + E1B533471717D0A100F205F9 /* CachedSVGDocumentReference.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1B533461717D0A000F205F9 /* CachedSVGDocumentReference.cpp */; }; + E1B533491717DEE300F205F9 /* CachedRawResourceClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E1B533481717DEE300F205F9 /* CachedRawResourceClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1B7839C163740A70007B692 /* SharedWorkerStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = E1B7839B163740A70007B692 /* SharedWorkerStrategy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1B784201639CBBE0007B692 /* SharedWorkerRepository.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1B7841F1639CBBE0007B692 /* SharedWorkerRepository.cpp */; }; + E1BA003116FB92AC00BA7A35 /* ResourceHandleClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1BA003016FB92AC00BA7A35 /* ResourceHandleClient.cpp */; }; + E1BA66F11742BD8600C20251 /* DynamicLinkerInterposing.h in Headers */ = {isa = PBXBuildFile; fileRef = E1BA66F01742BD8600C20251 /* DynamicLinkerInterposing.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1BA67181742BEE600C20251 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5C2869402846DCD018635CA /* Carbon.framework */; }; + E1BA671A1742BEF400C20251 /* WebCoreTestShimLibrary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1BA67191742BEF400C20251 /* WebCoreTestShimLibrary.cpp */; }; + E1BE512D0CF6C512002EA959 /* XSLTUnicodeSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1BE512B0CF6C512002EA959 /* XSLTUnicodeSort.cpp */; }; + E1BE512E0CF6C512002EA959 /* XSLTUnicodeSort.h in Headers */ = {isa = PBXBuildFile; fileRef = E1BE512C0CF6C512002EA959 /* XSLTUnicodeSort.h */; }; + E1C2F24A1533A2120083F974 /* SettingsMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1C2F2481533A2120083F974 /* SettingsMac.mm */; }; + E1C362EF0EAF2AA9007410BC /* JSWorkerLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = E1C362ED0EAF2AA9007410BC /* JSWorkerLocation.h */; }; + E1C362F00EAF2AA9007410BC /* JSWorkerLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1C362EE0EAF2AA9007410BC /* JSWorkerLocation.cpp */; }; + E1C36C030EB076D6007410BC /* JSDOMGlobalObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E1C36C020EB076D6007410BC /* JSDOMGlobalObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1C36CBD0EB08062007410BC /* JSDOMGlobalObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1C36CBC0EB08062007410BC /* JSDOMGlobalObject.cpp */; }; + E1C36D340EB0A094007410BC /* JSWorkerGlobalScopeBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1C36D320EB0A094007410BC /* JSWorkerGlobalScopeBase.cpp */; }; + E1C36D350EB0A094007410BC /* JSWorkerGlobalScopeBase.h in Headers */ = {isa = PBXBuildFile; fileRef = E1C36D330EB0A094007410BC /* JSWorkerGlobalScopeBase.h */; }; + E1C415DA0F655D6F0092D2FB /* CrossOriginPreflightResultCache.h in Headers */ = {isa = PBXBuildFile; fileRef = E1C415D90F655D6F0092D2FB /* CrossOriginPreflightResultCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1C415DE0F655D7C0092D2FB /* CrossOriginPreflightResultCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1C415DD0F655D7C0092D2FB /* CrossOriginPreflightResultCache.cpp */; }; + E1C416120F6562FD0092D2FB /* CrossOriginAccessControl.h in Headers */ = {isa = PBXBuildFile; fileRef = E1C416110F6562FD0092D2FB /* CrossOriginAccessControl.h */; }; + E1C416170F6563180092D2FB /* CrossOriginAccessControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1C416160F6563180092D2FB /* CrossOriginAccessControl.cpp */; }; + E1C4DE690EA75C1E0023CCD6 /* ActiveDOMObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E1C4DE680EA75C1E0023CCD6 /* ActiveDOMObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1C4DE6E0EA75C650023CCD6 /* ActiveDOMObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1C4DE6D0EA75C650023CCD6 /* ActiveDOMObject.cpp */; }; + E1C8BE5D0E8BD15A0064CB7D /* JSWorker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1C8BE5C0E8BD15A0064CB7D /* JSWorker.cpp */; }; + E1CA5CBC0E8CDCAF00E8EF90 /* JSWorkerCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1CA5CBB0E8CDCAF00E8EF90 /* JSWorkerCustom.cpp */; }; + E1CAA5C60E8BD23600A73ECA /* JSWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = E1CAA5C50E8BD23600A73ECA /* JSWorker.h */; }; + E1CDE92015018ED000862CC5 /* AsyncFileStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1CDE91F15018ED000862CC5 /* AsyncFileStream.cpp */; }; + E1CDE9221501916900862CC5 /* AsyncFileStream.h in Headers */ = {isa = PBXBuildFile; fileRef = E1CDE9211501916900862CC5 /* AsyncFileStream.h */; settings = {ATTRIBUTES = (); }; }; + E1E1BF00115FF6FB006F52CA /* WindowsKeyboardCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = E1E1BEFF115FF6FB006F52CA /* WindowsKeyboardCodes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1E6EEA40B628DA8005F2F70 /* JSHTMLSelectElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1E6EEA30B628DA8005F2F70 /* JSHTMLSelectElement.cpp */; }; + E1E6EEA80B628DB3005F2F70 /* JSHTMLSelectElement.h in Headers */ = {isa = PBXBuildFile; fileRef = E1E6EEA70B628DB3005F2F70 /* JSHTMLSelectElement.h */; }; + E1EBBBD40AAC9B87001FE8E2 /* CSSCharsetRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1EBBBD30AAC9B87001FE8E2 /* CSSCharsetRule.cpp */; }; + E1EC299F0BB04C6B00EA187B /* XPathNodeSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1EC299D0BB04C6B00EA187B /* XPathNodeSet.cpp */; }; + E1EC29A00BB04C6B00EA187B /* XPathNodeSet.h in Headers */ = {isa = PBXBuildFile; fileRef = E1EC299E0BB04C6B00EA187B /* XPathNodeSet.h */; }; + E1ED8AC30CC49BE000BFC557 /* CSSPrimitiveValueMappings.h in Headers */ = {isa = PBXBuildFile; fileRef = E1ED8AC20CC49BE000BFC557 /* CSSPrimitiveValueMappings.h */; }; + E1F1E82F0C3C2BB9006DB391 /* XSLTExtensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1F1E82D0C3C2BB9006DB391 /* XSLTExtensions.cpp */; }; + E1F1E8300C3C2BB9006DB391 /* XSLTExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = E1F1E82E0C3C2BB9006DB391 /* XSLTExtensions.h */; }; + E1FF57A30F01255B00891EBB /* ThreadGlobalData.h in Headers */ = {isa = PBXBuildFile; fileRef = E1FF57A20F01255B00891EBB /* ThreadGlobalData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1FF57A60F01256B00891EBB /* ThreadGlobalData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1FF57A50F01256B00891EBB /* ThreadGlobalData.cpp */; }; + E4295FA412B0614E00D1ACE0 /* ResourceLoadPriority.h in Headers */ = {isa = PBXBuildFile; fileRef = E4295FA312B0614E00D1ACE0 /* ResourceLoadPriority.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E43105B816750F0C00DB2FB8 /* NodeTraversal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E43105B716750F0C00DB2FB8 /* NodeTraversal.cpp */; }; + E43105BB16750F1600DB2FB8 /* NodeTraversal.h in Headers */ = {isa = PBXBuildFile; fileRef = E43105BA16750F1600DB2FB8 /* NodeTraversal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E44613A10CD6331000FADA75 /* HTMLAudioElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E446138F0CD6331000FADA75 /* HTMLAudioElement.cpp */; }; + E44613A20CD6331000FADA75 /* HTMLAudioElement.h in Headers */ = {isa = PBXBuildFile; fileRef = E44613900CD6331000FADA75 /* HTMLAudioElement.h */; }; + E44613A40CD6331000FADA75 /* HTMLMediaElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E44613920CD6331000FADA75 /* HTMLMediaElement.cpp */; }; + E44613A50CD6331000FADA75 /* HTMLMediaElement.h in Headers */ = {isa = PBXBuildFile; fileRef = E44613930CD6331000FADA75 /* HTMLMediaElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E44613A70CD6331000FADA75 /* HTMLSourceElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E44613950CD6331000FADA75 /* HTMLSourceElement.cpp */; }; + E44613A80CD6331000FADA75 /* HTMLSourceElement.h in Headers */ = {isa = PBXBuildFile; fileRef = E44613960CD6331000FADA75 /* HTMLSourceElement.h */; }; + E44613AA0CD6331000FADA75 /* HTMLVideoElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E44613980CD6331000FADA75 /* HTMLVideoElement.cpp */; }; + E44613AB0CD6331000FADA75 /* HTMLVideoElement.h in Headers */ = {isa = PBXBuildFile; fileRef = E44613990CD6331000FADA75 /* HTMLVideoElement.h */; }; + E44613AD0CD6331000FADA75 /* MediaError.h in Headers */ = {isa = PBXBuildFile; fileRef = E446139B0CD6331000FADA75 /* MediaError.h */; }; + E44613AF0CD6331000FADA75 /* TimeRanges.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E446139D0CD6331000FADA75 /* TimeRanges.cpp */; }; + E44613B00CD6331000FADA75 /* TimeRanges.h in Headers */ = {isa = PBXBuildFile; fileRef = E446139E0CD6331000FADA75 /* TimeRanges.h */; }; + E44613B60CD6344E00FADA75 /* VoidCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = E44613B40CD6344E00FADA75 /* VoidCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E44613E30CD6819F00FADA75 /* MediaPlayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B41E0C0CBF90BD00AF2ECE /* MediaPlayer.cpp */; }; + E44613E40CD681A200FADA75 /* MediaPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = E4B41E0D0CBF90BD00AF2ECE /* MediaPlayer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E44613E50CD681A600FADA75 /* MediaPlayerPrivateQTKit.mm in Sources */ = {isa = PBXBuildFile; fileRef = E4B41E110CBF90EF00AF2ECE /* MediaPlayerPrivateQTKit.mm */; settings = {COMPILER_FLAGS = "-Wno-deprecated-declarations"; }; }; + E44613E60CD681A900FADA75 /* MediaPlayerPrivateQTKit.h in Headers */ = {isa = PBXBuildFile; fileRef = E4B41E100CBF90EF00AF2ECE /* MediaPlayerPrivateQTKit.h */; }; + E44613EB0CD681B400FADA75 /* ProgressEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B41E010CBF8EAA00AF2ECE /* ProgressEvent.cpp */; }; + E44613EC0CD681B500FADA75 /* ProgressEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = E4B41E020CBF8EAA00AF2ECE /* ProgressEvent.h */; }; + E44613ED0CD681BA00FADA75 /* JSProgressEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B423850CBFB73C00AF2ECE /* JSProgressEvent.cpp */; }; + E44613EE0CD681BB00FADA75 /* JSProgressEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = E4B423860CBFB73C00AF2ECE /* JSProgressEvent.h */; }; + E44614160CD6826900FADA75 /* JSHTMLVideoElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E446140E0CD6826900FADA75 /* JSHTMLVideoElement.cpp */; }; + E44614170CD6826900FADA75 /* JSHTMLVideoElement.h in Headers */ = {isa = PBXBuildFile; fileRef = E446140F0CD6826900FADA75 /* JSHTMLVideoElement.h */; }; + E44614180CD6826900FADA75 /* JSMediaError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E44614100CD6826900FADA75 /* JSMediaError.cpp */; }; + E44614190CD6826900FADA75 /* JSMediaError.h in Headers */ = {isa = PBXBuildFile; fileRef = E44614110CD6826900FADA75 /* JSMediaError.h */; }; + E446141A0CD6826900FADA75 /* JSTimeRanges.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E44614120CD6826900FADA75 /* JSTimeRanges.cpp */; }; + E446141B0CD6826900FADA75 /* JSTimeRanges.h in Headers */ = {isa = PBXBuildFile; fileRef = E44614130CD6826900FADA75 /* JSTimeRanges.h */; }; + E44614370CD689C400FADA75 /* JSHTMLAudioElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B4237D0CBFB73C00AF2ECE /* JSHTMLAudioElement.cpp */; }; + E44614380CD689C500FADA75 /* JSHTMLAudioElement.h in Headers */ = {isa = PBXBuildFile; fileRef = E4B4237E0CBFB73C00AF2ECE /* JSHTMLAudioElement.h */; }; + E44614390CD689C700FADA75 /* JSHTMLMediaElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B4237F0CBFB73C00AF2ECE /* JSHTMLMediaElement.cpp */; }; + E446143A0CD689C800FADA75 /* JSHTMLMediaElement.h in Headers */ = {isa = PBXBuildFile; fileRef = E4B423800CBFB73C00AF2ECE /* JSHTMLMediaElement.h */; }; + E446143B0CD689CC00FADA75 /* JSHTMLSourceElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B423710CBFB6E000AF2ECE /* JSHTMLSourceElement.cpp */; }; + E446143C0CD689CC00FADA75 /* JSHTMLSourceElement.h in Headers */ = {isa = PBXBuildFile; fileRef = E4B423720CBFB6E000AF2ECE /* JSHTMLSourceElement.h */; }; + E44614510CD68A3500FADA75 /* RenderVideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B41E330CBFB60900AF2ECE /* RenderVideo.cpp */; }; + E44614520CD68A3500FADA75 /* RenderVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = E4B41E340CBFB60900AF2ECE /* RenderVideo.h */; }; + E44B4BB3141650D7002B1D8B /* SelectorChecker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E44B4BB1141650D7002B1D8B /* SelectorChecker.cpp */; }; + E44B4BB4141650D7002B1D8B /* SelectorChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = E44B4BB2141650D7002B1D8B /* SelectorChecker.h */; }; + E44EE3A817577EBD00EEE8CF /* FontGenericFamilies.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E44EE3A617576E5500EEE8CF /* FontGenericFamilies.cpp */; }; + E45322AB140CE267005A0F92 /* SelectorQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E45322A9140CE267005A0F92 /* SelectorQuery.cpp */; }; + E45322AC140CE267005A0F92 /* SelectorQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = E45322AA140CE267005A0F92 /* SelectorQuery.h */; }; + E453901E0EAFCACA003695C8 /* PasteboardIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = E45390190EAFCACA003695C8 /* PasteboardIOS.mm */; }; + E45390460EAFD637003695C8 /* SharedTimerIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = E45390350EAFD637003695C8 /* SharedTimerIOS.mm */; }; + E462A4A1113E71BE004A4220 /* IntPointHash.h in Headers */ = {isa = PBXBuildFile; fileRef = E462A4A0113E71BE004A4220 /* IntPointHash.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E47127CA163438A100ED6F5A /* StyleInvalidationAnalysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E47A97CE163059FC005DCD99 /* StyleInvalidationAnalysis.cpp */; }; + E47127CB163438AE00ED6F5A /* StyleInvalidationAnalysis.h in Headers */ = {isa = PBXBuildFile; fileRef = E47A97CF163059FC005DCD99 /* StyleInvalidationAnalysis.h */; }; + E4778B7F115A581A00B5D372 /* JSCustomEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4778B7D115A581A00B5D372 /* JSCustomEvent.cpp */; }; + E4778B80115A581A00B5D372 /* JSCustomEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = E4778B7E115A581A00B5D372 /* JSCustomEvent.h */; }; + E47B4BE80E71241600038854 /* CachedResourceHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = E47B4BE60E71241600038854 /* CachedResourceHandle.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E47B4BE90E71241600038854 /* CachedResourceHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E47B4BE70E71241600038854 /* CachedResourceHandle.cpp */; }; + E47E276516036ED200EE2AFB /* DocumentStyleSheetCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = E47E276416036ED200EE2AFB /* DocumentStyleSheetCollection.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E47E276816036EDC00EE2AFB /* DocumentStyleSheetCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E47E276716036EDC00EE2AFB /* DocumentStyleSheetCollection.cpp */; }; + E4946EAE156E64DD00D3297F /* StyleRuleImport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4946EAC156E64DD00D3297F /* StyleRuleImport.cpp */; }; + E4946EAF156E64DD00D3297F /* StyleRuleImport.h in Headers */ = {isa = PBXBuildFile; fileRef = E4946EAD156E64DD00D3297F /* StyleRuleImport.h */; }; + E49BD9FA131FD2ED003C56F0 /* CSSValuePool.h in Headers */ = {isa = PBXBuildFile; fileRef = E49BD9F9131FD2ED003C56F0 /* CSSValuePool.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E49BDA0B131FD3E5003C56F0 /* CSSValuePool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E49BDA0A131FD3E5003C56F0 /* CSSValuePool.cpp */; }; + E4AFCFA50DAF29A300F5F55C /* UnitBezier.h in Headers */ = {isa = PBXBuildFile; fileRef = E4AFCFA40DAF29A300F5F55C /* UnitBezier.h */; }; + E4AFD00B0DAF335400F5F55C /* SMILTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4AFD0050DAF335400F5F55C /* SMILTime.cpp */; }; + E4AFD00C0DAF335400F5F55C /* SMILTime.h in Headers */ = {isa = PBXBuildFile; fileRef = E4AFD0060DAF335400F5F55C /* SMILTime.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E4AFD00D0DAF335500F5F55C /* SMILTimeContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4AFD0070DAF335400F5F55C /* SMILTimeContainer.cpp */; }; + E4AFD00E0DAF335500F5F55C /* SMILTimeContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = E4AFD0080DAF335400F5F55C /* SMILTimeContainer.h */; }; + E4AFD00F0DAF335500F5F55C /* SVGSMILElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4AFD0090DAF335400F5F55C /* SVGSMILElement.cpp */; }; + E4AFD0100DAF335500F5F55C /* SVGSMILElement.h in Headers */ = {isa = PBXBuildFile; fileRef = E4AFD00A0DAF335400F5F55C /* SVGSMILElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E4BBED0E14F4025D003F0B98 /* PropertySetCSSStyleDeclaration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4BBED0C14F4025D003F0B98 /* PropertySetCSSStyleDeclaration.cpp */; }; + E4BBED0F14F4025D003F0B98 /* PropertySetCSSStyleDeclaration.h in Headers */ = {isa = PBXBuildFile; fileRef = E4BBED0D14F4025D003F0B98 /* PropertySetCSSStyleDeclaration.h */; }; + E4BBED4C14FCDBA1003F0B98 /* StyleRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4BBED4A14FCDBA1003F0B98 /* StyleRule.cpp */; }; + E4BBED4D14FCDBA1003F0B98 /* StyleRule.h in Headers */ = {isa = PBXBuildFile; fileRef = E4BBED4B14FCDBA1003F0B98 /* StyleRule.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E4C1789A0EE6903800824D69 /* CSSSelectorList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4C178950EE6903800824D69 /* CSSSelectorList.cpp */; }; + E4C1789B0EE6903800824D69 /* CSSSelectorList.h in Headers */ = {isa = PBXBuildFile; fileRef = E4C178960EE6903800824D69 /* CSSSelectorList.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E4C279580CF9741900E97B98 /* RenderMedia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4C279560CF9741900E97B98 /* RenderMedia.cpp */; }; + E4C279590CF9741900E97B98 /* RenderMedia.h in Headers */ = {isa = PBXBuildFile; fileRef = E4C279570CF9741900E97B98 /* RenderMedia.h */; }; + E4D687770ED7AE3D006EA978 /* PurgeableBufferMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4D687760ED7AE3D006EA978 /* PurgeableBufferMac.cpp */; }; + E4D687790ED7AE4F006EA978 /* PurgeableBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D687780ED7AE4F006EA978 /* PurgeableBuffer.h */; }; + E4F9EEF2156D9FFA00D23E7E /* StyleSheetContents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4F9EEF0156D84C400D23E7E /* StyleSheetContents.cpp */; }; + E4F9EEF3156DA00700D23E7E /* StyleSheetContents.h in Headers */ = {isa = PBXBuildFile; fileRef = E4F9EEF1156D84C400D23E7E /* StyleSheetContents.h */; }; + E51A81DF17298D7700BFCA61 /* JSPerformance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E51A81DE17298D7700BFCA61 /* JSPerformance.cpp */; }; + E526AF3F1727F8F200E41781 /* Performance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E526AF3E1727F8F200E41781 /* Performance.cpp */; }; + E55F497A151B888000BB67DB /* LengthFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E55F4979151B888000BB67DB /* LengthFunctions.cpp */; }; + E5BA7D63151437CA00FE1E3F /* LengthFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = E5BA7D62151437CA00FE1E3F /* LengthFunctions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + EBF5121C1696496C0056BD25 /* JSTypeConversions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EBF5121A1696496C0056BD25 /* JSTypeConversions.cpp */; }; + EBF5121D1696496C0056BD25 /* JSTypeConversions.h in Headers */ = {isa = PBXBuildFile; fileRef = EBF5121B1696496C0056BD25 /* JSTypeConversions.h */; }; + ED2BA83C09A24B91006C0AC4 /* DocumentMarker.h in Headers */ = {isa = PBXBuildFile; fileRef = ED2BA83B09A24B91006C0AC4 /* DocumentMarker.h */; settings = {ATTRIBUTES = (Private, ); }; }; + ED501DC60B249F2900AE18D9 /* EditorMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED501DC50B249F2900AE18D9 /* EditorMac.mm */; }; + EDE3A5000C7A430600956A37 /* ColorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = EDE3A4FF0C7A430600956A37 /* ColorMac.h */; settings = {ATTRIBUTES = (Private, ); }; }; + EDEC98030AED7E170059137F /* WebCorePrefix.h in Headers */ = {isa = PBXBuildFile; fileRef = EDEC98020AED7E170059137F /* WebCorePrefix.h */; }; + F12171F516A8CED2000053CA /* WebVTTElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F12171F316A8BC63000053CA /* WebVTTElement.cpp */; }; + F12171F616A8CF0B000053CA /* WebVTTElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F12171F416A8BC63000053CA /* WebVTTElement.h */; }; + F293B27E56C112F373FFF27E /* DNSResolveQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C60128060078BB70E367A95 /* DNSResolveQueue.cpp */; }; + F316396B1329481A00A649CB /* InjectedScriptManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F31639691329481A00A649CB /* InjectedScriptManager.cpp */; }; + F316396C1329481A00A649CB /* InjectedScriptManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F316396A1329481A00A649CB /* InjectedScriptManager.h */; }; + F316396E1329487600A649CB /* JSInjectedScriptManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F316396D1329487600A649CB /* JSInjectedScriptManager.cpp */; }; + F325A40A14EE36FA007324E2 /* InspectorCounters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F325A40814EE36FA007324E2 /* InspectorCounters.cpp */; }; + F325A40B14EE36FA007324E2 /* InspectorCounters.h in Headers */ = {isa = PBXBuildFile; fileRef = F325A40914EE36FA007324E2 /* InspectorCounters.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F3335BF812E07DC300D33011 /* InspectorConsoleAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F3335BF612E07DC300D33011 /* InspectorConsoleAgent.cpp */; }; + F3335BF912E07DC300D33011 /* InspectorConsoleAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = F3335BF712E07DC300D33011 /* InspectorConsoleAgent.h */; }; + F33F0282120947F200E5743A /* ScriptProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F33F0281120947F200E5743A /* ScriptProfile.cpp */; }; + F33F053D120B0DA500E5743A /* InspectorDebuggerAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F33F053B120B0DA500E5743A /* InspectorDebuggerAgent.cpp */; }; + F33F053E120B0DA500E5743A /* InspectorDebuggerAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = F33F053C120B0DA500E5743A /* InspectorDebuggerAgent.h */; }; + F344C7141125B82C00F26EEE /* InspectorFrontendClient.h in Headers */ = {isa = PBXBuildFile; fileRef = F344C7121125B82C00F26EEE /* InspectorFrontendClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F344C75311294D9D00F26EEE /* InspectorFrontendClientLocal.h in Headers */ = {isa = PBXBuildFile; fileRef = F344C75211294D9D00F26EEE /* InspectorFrontendClientLocal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F344C75811294FF600F26EEE /* InspectorFrontendClientLocal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F344C75711294FF600F26EEE /* InspectorFrontendClientLocal.cpp */; }; + F34742DC134362F000531BC2 /* PageDebuggerAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F34742DA134362F000531BC2 /* PageDebuggerAgent.cpp */; }; + F34742DD134362F000531BC2 /* PageDebuggerAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = F34742DB134362F000531BC2 /* PageDebuggerAgent.h */; }; + F34742E01343631F00531BC2 /* WorkerDebuggerAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F34742DE1343631F00531BC2 /* WorkerDebuggerAgent.cpp */; }; + F34742E11343631F00531BC2 /* WorkerDebuggerAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = F34742DF1343631F00531BC2 /* WorkerDebuggerAgent.h */; }; + F34742E41343633C00531BC2 /* PageScriptDebugServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F34742E21343633C00531BC2 /* PageScriptDebugServer.cpp */; }; + F34742E51343633C00531BC2 /* PageScriptDebugServer.h in Headers */ = {isa = PBXBuildFile; fileRef = F34742E31343633C00531BC2 /* PageScriptDebugServer.h */; }; + F34742E81343635000531BC2 /* WorkerScriptDebugServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F34742E61343635000531BC2 /* WorkerScriptDebugServer.cpp */; }; + F34742E91343635000531BC2 /* WorkerScriptDebugServer.h in Headers */ = {isa = PBXBuildFile; fileRef = F34742E71343635000531BC2 /* WorkerScriptDebugServer.h */; }; + F350B73513F1377D00880C43 /* InstrumentingAgents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F350B73413F1377D00880C43 /* InstrumentingAgents.cpp */; }; + F35AE5AC14925F5B004D5776 /* BindingVisitors.h in Headers */ = {isa = PBXBuildFile; fileRef = F35AE5AB14925F5B004D5776 /* BindingVisitors.h */; }; + F3644AFF1119805900E0D537 /* InjectedScript.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F3644AFD1119805900E0D537 /* InjectedScript.cpp */; }; + F3644B001119805900E0D537 /* InjectedScript.h in Headers */ = {isa = PBXBuildFile; fileRef = F3644AFE1119805900E0D537 /* InjectedScript.h */; }; + F36E07A41358A8BE00AACBC9 /* WorkerInspectorController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F36E07A21358A8BE00AACBC9 /* WorkerInspectorController.cpp */; }; + F36E07A51358A8BE00AACBC9 /* WorkerInspectorController.h in Headers */ = {isa = PBXBuildFile; fileRef = F36E07A31358A8BE00AACBC9 /* WorkerInspectorController.h */; }; + F375CC071150D300008DDB81 /* InspectorWorkerResource.h in Headers */ = {isa = PBXBuildFile; fileRef = F375CC061150D300008DDB81 /* InspectorWorkerResource.h */; }; + F3810C1B1365A49600ED6E33 /* InspectorWorkerAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F3810C191365A49600ED6E33 /* InspectorWorkerAgent.cpp */; }; + F3810C1C1365A49600ED6E33 /* InspectorWorkerAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = F3810C1A1365A49600ED6E33 /* InspectorWorkerAgent.h */; }; + F3820892147D35F90010BC06 /* PageConsoleAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F382088A147D35F90010BC06 /* PageConsoleAgent.cpp */; }; + F3820893147D35F90010BC06 /* PageConsoleAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = F382088B147D35F90010BC06 /* PageConsoleAgent.h */; }; + F3820894147D35F90010BC06 /* PageRuntimeAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F382088C147D35F90010BC06 /* PageRuntimeAgent.cpp */; }; + F3820895147D35F90010BC06 /* PageRuntimeAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = F382088D147D35F90010BC06 /* PageRuntimeAgent.h */; }; + F3820896147D35F90010BC06 /* WorkerConsoleAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F382088E147D35F90010BC06 /* WorkerConsoleAgent.cpp */; }; + F3820897147D35F90010BC06 /* WorkerConsoleAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = F382088F147D35F90010BC06 /* WorkerConsoleAgent.h */; }; + F3820898147D35F90010BC06 /* WorkerRuntimeAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F3820890147D35F90010BC06 /* WorkerRuntimeAgent.cpp */; }; + F3820899147D35F90010BC06 /* WorkerRuntimeAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = F3820891147D35F90010BC06 /* WorkerRuntimeAgent.h */; }; + F392249C126F11AE00A926D9 /* ScriptCallStackFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F392249A126F11AE00A926D9 /* ScriptCallStackFactory.cpp */; }; + F392249D126F11AE00A926D9 /* ScriptCallStackFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = F392249B126F11AE00A926D9 /* ScriptCallStackFactory.h */; }; + F39BE95B12673BF400E0A674 /* ScriptArguments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F39BE95912673BF400E0A674 /* ScriptArguments.cpp */; }; + F39BE95C12673BF400E0A674 /* ScriptArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = F39BE95A12673BF400E0A674 /* ScriptArguments.h */; }; + F3ABFE0C130E9DA000E7F7D1 /* InstrumentingAgents.h in Headers */ = {isa = PBXBuildFile; fileRef = F3ABFE0B130E9DA000E7F7D1 /* InstrumentingAgents.h */; }; + F3D461481161D53200CA0D09 /* JSErrorHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F3D461461161D53200CA0D09 /* JSErrorHandler.cpp */; }; + F3D461491161D53200CA0D09 /* JSErrorHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F3D461471161D53200CA0D09 /* JSErrorHandler.h */; }; + F3D4C47812E07663003DA150 /* InspectorDOMDebuggerAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F3D4C47612E07663003DA150 /* InspectorDOMDebuggerAgent.cpp */; }; + F3D4C47912E07663003DA150 /* InspectorDOMDebuggerAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = F3D4C47712E07663003DA150 /* InspectorDOMDebuggerAgent.h */; }; + F3F5CF1112ED81A80084C569 /* InspectorConsoleInstrumentation.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F5CF1012ED81A80084C569 /* InspectorConsoleInstrumentation.h */; }; + F3F5CF1312ED81B30084C569 /* InspectorDatabaseInstrumentation.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F5CF1212ED81B30084C569 /* InspectorDatabaseInstrumentation.h */; }; + F3F68DA6143CAC5A00C2F887 /* InspectorStateClient.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F68DA5143CAC5A00C2F887 /* InspectorStateClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F4EAF4AF10C742B1009100D3 /* OpenTypeSanitizer.h in Headers */ = {isa = PBXBuildFile; fileRef = F4EAF4AD10C742B1009100D3 /* OpenTypeSanitizer.h */; }; + F50664F7157F52DC00AC226F /* FormController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F50664F5157F52DC00AC226F /* FormController.cpp */; }; + F50664F8157F52DC00AC226F /* FormController.h in Headers */ = {isa = PBXBuildFile; fileRef = F50664F6157F52DC00AC226F /* FormController.h */; }; + F513A3EA15FF4841001526DB /* ValidationMessageClient.h in Headers */ = {isa = PBXBuildFile; fileRef = F513A3E915FF4841001526DB /* ValidationMessageClient.h */; }; + F52AD5E41534245F0059FBE6 /* EmptyClients.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F52AD5E31534245F0059FBE6 /* EmptyClients.cpp */; }; + F544F78815CFB2A800AF33A8 /* PlatformLocale.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F544F78615CFB2A800AF33A8 /* PlatformLocale.cpp */; }; + F544F78915CFB2A800AF33A8 /* PlatformLocale.h in Headers */ = {isa = PBXBuildFile; fileRef = F544F78715CFB2A800AF33A8 /* PlatformLocale.h */; }; + F55B3DAD1251F12D003EF269 /* BaseTextInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D791251F12D003EF269 /* BaseTextInputType.cpp */; }; + F55B3DAE1251F12D003EF269 /* BaseTextInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D7A1251F12D003EF269 /* BaseTextInputType.h */; }; + F55B3DAF1251F12D003EF269 /* ButtonInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D7B1251F12D003EF269 /* ButtonInputType.cpp */; }; + F55B3DB01251F12D003EF269 /* ButtonInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D7C1251F12D003EF269 /* ButtonInputType.h */; }; + F55B3DB11251F12D003EF269 /* CheckboxInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D7D1251F12D003EF269 /* CheckboxInputType.cpp */; }; + F55B3DB21251F12D003EF269 /* CheckboxInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D7E1251F12D003EF269 /* CheckboxInputType.h */; }; + F55B3DB41251F12D003EF269 /* ColorInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D801251F12D003EF269 /* ColorInputType.h */; }; + F55B3DB51251F12D003EF269 /* DateInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D811251F12D003EF269 /* DateInputType.cpp */; }; + F55B3DB61251F12D003EF269 /* DateInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D821251F12D003EF269 /* DateInputType.h */; }; + F55B3DB71251F12D003EF269 /* DateTimeInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D831251F12D003EF269 /* DateTimeInputType.cpp */; }; + F55B3DB81251F12D003EF269 /* DateTimeInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D841251F12D003EF269 /* DateTimeInputType.h */; }; + F55B3DB91251F12D003EF269 /* DateTimeLocalInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D851251F12D003EF269 /* DateTimeLocalInputType.cpp */; }; + F55B3DBA1251F12D003EF269 /* DateTimeLocalInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D861251F12D003EF269 /* DateTimeLocalInputType.h */; }; + F55B3DBB1251F12D003EF269 /* EmailInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D871251F12D003EF269 /* EmailInputType.cpp */; }; + F55B3DBC1251F12D003EF269 /* EmailInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D881251F12D003EF269 /* EmailInputType.h */; }; + F55B3DBD1251F12D003EF269 /* FileInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D891251F12D003EF269 /* FileInputType.cpp */; }; + F55B3DBE1251F12D003EF269 /* FileInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D8A1251F12D003EF269 /* FileInputType.h */; }; + F55B3DBF1251F12D003EF269 /* HiddenInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D8B1251F12D003EF269 /* HiddenInputType.cpp */; }; + F55B3DC01251F12D003EF269 /* HiddenInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D8C1251F12D003EF269 /* HiddenInputType.h */; }; + F55B3DC11251F12D003EF269 /* ImageInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D8D1251F12D003EF269 /* ImageInputType.cpp */; }; + F55B3DC21251F12D003EF269 /* ImageInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D8E1251F12D003EF269 /* ImageInputType.h */; }; + F55B3DC51251F12D003EF269 /* MonthInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D911251F12D003EF269 /* MonthInputType.cpp */; }; + F55B3DC61251F12D003EF269 /* MonthInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D921251F12D003EF269 /* MonthInputType.h */; }; + F55B3DC71251F12D003EF269 /* NumberInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D931251F12D003EF269 /* NumberInputType.cpp */; }; + F55B3DC81251F12D003EF269 /* NumberInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D941251F12D003EF269 /* NumberInputType.h */; }; + F55B3DC91251F12D003EF269 /* PasswordInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D951251F12D003EF269 /* PasswordInputType.cpp */; }; + F55B3DCA1251F12D003EF269 /* PasswordInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D961251F12D003EF269 /* PasswordInputType.h */; }; + F55B3DCB1251F12D003EF269 /* RadioInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D971251F12D003EF269 /* RadioInputType.cpp */; }; + F55B3DCC1251F12D003EF269 /* RadioInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D981251F12D003EF269 /* RadioInputType.h */; }; + F55B3DCD1251F12D003EF269 /* RangeInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D991251F12D003EF269 /* RangeInputType.cpp */; }; + F55B3DCE1251F12D003EF269 /* RangeInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D9A1251F12D003EF269 /* RangeInputType.h */; }; + F55B3DCF1251F12D003EF269 /* ResetInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D9B1251F12D003EF269 /* ResetInputType.cpp */; }; + F55B3DD01251F12D003EF269 /* ResetInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D9C1251F12D003EF269 /* ResetInputType.h */; }; + F55B3DD11251F12D003EF269 /* SearchInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D9D1251F12D003EF269 /* SearchInputType.cpp */; }; + F55B3DD21251F12D003EF269 /* SearchInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3D9E1251F12D003EF269 /* SearchInputType.h */; }; + F55B3DD31251F12D003EF269 /* SubmitInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3D9F1251F12D003EF269 /* SubmitInputType.cpp */; }; + F55B3DD41251F12D003EF269 /* SubmitInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3DA01251F12D003EF269 /* SubmitInputType.h */; }; + F55B3DD51251F12D003EF269 /* TelephoneInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3DA11251F12D003EF269 /* TelephoneInputType.cpp */; }; + F55B3DD61251F12D003EF269 /* TelephoneInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3DA21251F12D003EF269 /* TelephoneInputType.h */; }; + F55B3DD71251F12D003EF269 /* TextFieldInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3DA31251F12D003EF269 /* TextFieldInputType.cpp */; }; + F55B3DD81251F12D003EF269 /* TextFieldInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3DA41251F12D003EF269 /* TextFieldInputType.h */; }; + F55B3DD91251F12D003EF269 /* TextInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3DA51251F12D003EF269 /* TextInputType.cpp */; }; + F55B3DDA1251F12D003EF269 /* TextInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3DA61251F12D003EF269 /* TextInputType.h */; }; + F55B3DDB1251F12D003EF269 /* TimeInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3DA71251F12D003EF269 /* TimeInputType.cpp */; }; + F55B3DDC1251F12D003EF269 /* TimeInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3DA81251F12D003EF269 /* TimeInputType.h */; }; + F55B3DDD1251F12D003EF269 /* URLInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3DA91251F12D003EF269 /* URLInputType.cpp */; }; + F55B3DDE1251F12D003EF269 /* URLInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3DAA1251F12D003EF269 /* URLInputType.h */; }; + F55B3DDF1251F12D003EF269 /* WeekInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55B3DAB1251F12D003EF269 /* WeekInputType.cpp */; }; + F55B3DE01251F12D003EF269 /* WeekInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F55B3DAC1251F12D003EF269 /* WeekInputType.h */; }; + F5973DE015CFB2030027F804 /* LocaleMac.h in Headers */ = {isa = PBXBuildFile; fileRef = F5973DDE15CFB2030027F804 /* LocaleMac.h */; }; + F5973DE115CFB2030027F804 /* LocaleMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5973DDF15CFB2030027F804 /* LocaleMac.mm */; }; + F59C95FF1255B23F000623C0 /* BaseDateAndTimeInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F59C95FD1255B23F000623C0 /* BaseDateAndTimeInputType.cpp */; }; + F59C96001255B23F000623C0 /* BaseDateAndTimeInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F59C95FE1255B23F000623C0 /* BaseDateAndTimeInputType.h */; }; + F5A154271279534D00D0B0C0 /* ValidationMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5A154251279534D00D0B0C0 /* ValidationMessage.cpp */; }; + F5A154281279534D00D0B0C0 /* ValidationMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = F5A154261279534D00D0B0C0 /* ValidationMessage.h */; }; + F5C041DA0FFCA7CE00839D4A /* HTMLDataListElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5C041D70FFCA7CE00839D4A /* HTMLDataListElement.cpp */; }; + F5C041DB0FFCA7CE00839D4A /* HTMLDataListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C041D80FFCA7CE00839D4A /* HTMLDataListElement.h */; }; + F5C041E30FFCA96D00839D4A /* DOMHTMLDataListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C041DE0FFCA96D00839D4A /* DOMHTMLDataListElement.h */; }; + F5C041E40FFCA96D00839D4A /* DOMHTMLDataListElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5C041DF0FFCA96D00839D4A /* DOMHTMLDataListElement.mm */; }; + F5C041E50FFCA96D00839D4A /* DOMHTMLDataListElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C041E00FFCA96D00839D4A /* DOMHTMLDataListElementInternal.h */; }; + F5C041E60FFCA96D00839D4A /* JSHTMLDataListElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5C041E10FFCA96D00839D4A /* JSHTMLDataListElement.cpp */; }; + F5C041E70FFCA96D00839D4A /* JSHTMLDataListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C041E20FFCA96D00839D4A /* JSHTMLDataListElement.h */; }; + F5E0C65B1643C42C00D6CB69 /* BaseChooserOnlyDateAndTimeInputType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5E0C6591643C42C00D6CB69 /* BaseChooserOnlyDateAndTimeInputType.cpp */; }; + F5E0C65C1643C42C00D6CB69 /* BaseChooserOnlyDateAndTimeInputType.h in Headers */ = {isa = PBXBuildFile; fileRef = F5E0C65A1643C42C00D6CB69 /* BaseChooserOnlyDateAndTimeInputType.h */; }; + F7A034C4126BF6BE007DC19E /* FontOrientation.h in Headers */ = {isa = PBXBuildFile; fileRef = F7A034C3126BF6BE007DC19E /* FontOrientation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F916C48D0DB510F80076CD83 /* JSXMLHttpRequestProgressEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F916C48B0DB510F80076CD83 /* JSXMLHttpRequestProgressEvent.cpp */; }; + F916C48E0DB510F80076CD83 /* JSXMLHttpRequestProgressEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = F916C48C0DB510F80076CD83 /* JSXMLHttpRequestProgressEvent.h */; }; + F98FFF4411A2676200F548E8 /* CSSOMUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F98FFF4211A2676200F548E8 /* CSSOMUtils.cpp */; }; + F98FFF4511A2676200F548E8 /* CSSOMUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = F98FFF4311A2676200F548E8 /* CSSOMUtils.h */; }; + F9F0ED7A0DB50CA200D16DB9 /* XMLHttpRequestProgressEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = F9F0ED770DB50CA200D16DB9 /* XMLHttpRequestProgressEvent.h */; }; + FA654A6B1108ABED002615E0 /* MathMLTextElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA654A691108ABED002615E0 /* MathMLTextElement.cpp */; }; + FA654A6C1108ABED002615E0 /* MathMLTextElement.h in Headers */ = {isa = PBXBuildFile; fileRef = FA654A6A1108ABED002615E0 /* MathMLTextElement.h */; }; + FABE72F41059C1EB00D999DD /* MathMLElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FABE72ED1059C1EB00D999DD /* MathMLElement.cpp */; }; + FABE72F51059C1EB00D999DD /* MathMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = FABE72EE1059C1EB00D999DD /* MathMLElement.h */; }; + FABE72F61059C1EB00D999DD /* MathMLInlineContainerElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FABE72EF1059C1EB00D999DD /* MathMLInlineContainerElement.cpp */; }; + FABE72F71059C1EB00D999DD /* MathMLInlineContainerElement.h in Headers */ = {isa = PBXBuildFile; fileRef = FABE72F01059C1EB00D999DD /* MathMLInlineContainerElement.h */; }; + FABE72F81059C1EB00D999DD /* MathMLMathElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FABE72F11059C1EB00D999DD /* MathMLMathElement.cpp */; }; + FABE72F91059C1EB00D999DD /* MathMLMathElement.h in Headers */ = {isa = PBXBuildFile; fileRef = FABE72F21059C1EB00D999DD /* MathMLMathElement.h */; }; + FABE72FD1059C21100D999DD /* MathMLElementFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FABE72FB1059C21100D999DD /* MathMLElementFactory.cpp */; }; + FABE72FE1059C21100D999DD /* MathMLNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FABE72FC1059C21100D999DD /* MathMLNames.cpp */; }; + FB2C15C3165D649D0039C9F8 /* CachedSVGDocumentReference.h in Headers */ = {isa = PBXBuildFile; fileRef = FB2C15C2165D64900039C9F8 /* CachedSVGDocumentReference.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FB3056C2169E5DAC0096A232 /* CSSGroupingRule.h in Headers */ = {isa = PBXBuildFile; fileRef = FB3056C1169E5DAC0096A232 /* CSSGroupingRule.h */; }; + FB484F4C171F821E00040755 /* TransformFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB484F4A171F821E00040755 /* TransformFunctions.cpp */; }; + FB484F4D171F821E00040755 /* TransformFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = FB484F4B171F821E00040755 /* TransformFunctions.h */; }; + FB49C39D16784947007FFB5D /* CSSHostRule.h in Headers */ = {isa = PBXBuildFile; fileRef = FB49C39C16784947007FFB5D /* CSSHostRule.h */; }; + FB719C3F17238CA80022DE34 /* WebKitCSSMatFunctionValue.h in Headers */ = {isa = PBXBuildFile; fileRef = FB0B75EF1723428500F05D2A /* WebKitCSSMatFunctionValue.h */; }; + FB719C4017238CAE0022DE34 /* WebKitCSSMatFunctionValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB0B75EE1723428500F05D2A /* WebKitCSSMatFunctionValue.cpp */; }; + FB78AD2E151BF5E600FE54D3 /* CSSParserMode.h in Headers */ = {isa = PBXBuildFile; fileRef = FB78AD2C151BF5D200FE54D3 /* CSSParserMode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FB91392416AE4C17001FE682 /* DOMPath.h in Headers */ = {isa = PBXBuildFile; fileRef = FB91392016AE4B0B001FE682 /* DOMPath.h */; }; + FB91392616AE4C2F001FE682 /* CanvasPathMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = FB91391F16AE4B0B001FE682 /* CanvasPathMethods.h */; }; + FB91392716AE4C34001FE682 /* CanvasPathMethods.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB91391E16AE4B0B001FE682 /* CanvasPathMethods.cpp */; }; + FB91392A16AE4FC0001FE682 /* JSDOMPath.h in Headers */ = {isa = PBXBuildFile; fileRef = FB91392816AE4FC0001FE682 /* JSDOMPath.h */; }; + FB91392B16AE4FC0001FE682 /* JSDOMPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB91392916AE4FC0001FE682 /* JSDOMPath.cpp */; }; + FB92DF4B15FED08700994433 /* ClipPathOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = FB92DF4915FED08700994433 /* ClipPathOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FBC220DF1237FBEB00BCF788 /* GraphicsContext3DOpenGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FBC220DE1237FBEB00BCF788 /* GraphicsContext3DOpenGL.cpp */; }; + FBD6AF8815EF25C9008B7110 /* CSSBasicShapes.h in Headers */ = {isa = PBXBuildFile; fileRef = FBD6AF8715EF21D4008B7110 /* CSSBasicShapes.h */; }; + FBD6AF8915EF25DB008B7110 /* BasicShapeFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FBD6AF8415EF21D4008B7110 /* BasicShapeFunctions.cpp */; }; + FBD6AF8A15EF25DF008B7110 /* BasicShapeFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = FBD6AF8515EF21D4008B7110 /* BasicShapeFunctions.h */; }; + FBD6AF8B15EF25E5008B7110 /* CSSBasicShapes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FBD6AF8615EF21D4008B7110 /* CSSBasicShapes.cpp */; }; + FBD6AF8C15EF2604008B7110 /* BasicShapes.h in Headers */ = {isa = PBXBuildFile; fileRef = FBD6AF8315EF21A3008B7110 /* BasicShapes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FBD6AF8D15EF260A008B7110 /* BasicShapes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FBD6AF8215EF21A3008B7110 /* BasicShapes.cpp */; }; + FBDB619B16D6032A00BB3394 /* ElementRuleCollector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FBDB619A16D6032A00BB3394 /* ElementRuleCollector.cpp */; }; + FBDB619D16D6034600BB3394 /* PageRuleCollector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FBDB619C16D6034600BB3394 /* PageRuleCollector.cpp */; }; + FBDB619F16D6036500BB3394 /* ElementRuleCollector.h in Headers */ = {isa = PBXBuildFile; fileRef = FBDB619E16D6036500BB3394 /* ElementRuleCollector.h */; }; + FBDB61A116D6037E00BB3394 /* PageRuleCollector.h in Headers */ = {isa = PBXBuildFile; fileRef = FBDB61A016D6037E00BB3394 /* PageRuleCollector.h */; }; + FBF89045169E9F1F0052D86E /* CSSGroupingRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FBF89044169E9F1F0052D86E /* CSSGroupingRule.cpp */; }; + FC54D05716A7673100575E4D /* CSSSupportsRule.h in Headers */ = {isa = PBXBuildFile; fileRef = FC63BDB1167AABAC00F9380F /* CSSSupportsRule.h */; }; + FC54D05816A7676E00575E4D /* JSCSSSupportsRule.h in Headers */ = {isa = PBXBuildFile; fileRef = FC84802E167AB444008CD100 /* JSCSSSupportsRule.h */; }; + FC9A0F75164094CF003D6B8D /* DOMWindowCSS.h in Headers */ = {isa = PBXBuildFile; fileRef = FC9A0F72164094CF003D6B8D /* DOMWindowCSS.h */; }; + FC9E0E4D16419C1E00392BE3 /* JSDOMWindowCSS.h in Headers */ = {isa = PBXBuildFile; fileRef = FC9E0E4B16419C1E00392BE3 /* JSDOMWindowCSS.h */; }; + FCD8832A16A49F8200962227 /* DOMCSSSupportsRule.h in Headers */ = {isa = PBXBuildFile; fileRef = FCD8832816A49F8200962227 /* DOMCSSSupportsRule.h */; }; + FCD8832B16A49F8200962227 /* DOMCSSSupportsRule.mm in Sources */ = {isa = PBXBuildFile; fileRef = FCD8832916A49F8200962227 /* DOMCSSSupportsRule.mm */; }; + FCD8832C16A49FB000962227 /* DOMCSSSupportsRule.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = FCD8832816A49F8200962227 /* DOMCSSSupportsRule.h */; }; + FCEBBAAB16A4967A00FA20A6 /* DOMCSSSupportsRuleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = FCEBBAAA16A4967A00FA20A6 /* DOMCSSSupportsRuleInternal.h */; }; + FD00D7A414A3F61900734011 /* SincResampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD00D7A214A3F61900734011 /* SincResampler.cpp */; }; + FD00D7A514A3F61900734011 /* SincResampler.h in Headers */ = {isa = PBXBuildFile; fileRef = FD00D7A314A3F61900734011 /* SincResampler.h */; }; + FD06DFA5134A4DEF006F5D7D /* DefaultAudioDestinationNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD06DFA3134A4DEF006F5D7D /* DefaultAudioDestinationNode.cpp */; }; + FD06DFA6134A4DEF006F5D7D /* DefaultAudioDestinationNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD06DFA4134A4DEF006F5D7D /* DefaultAudioDestinationNode.h */; }; + FD1660A513787C6D001FFA7B /* DenormalDisabler.h in Headers */ = {isa = PBXBuildFile; fileRef = FD1660A413787C6D001FFA7B /* DenormalDisabler.h */; }; + FD1AF1501656F15100C6D4F7 /* ShapeValue.h in Headers */ = {isa = PBXBuildFile; fileRef = FD1AF14E1656F12100C6D4F7 /* ShapeValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FD1762DF176686D900D836A8 /* UpSampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD1762DD176686D900D836A8 /* UpSampler.cpp */; }; + FD1762E0176686D900D836A8 /* UpSampler.h in Headers */ = {isa = PBXBuildFile; fileRef = FD1762DE176686D900D836A8 /* UpSampler.h */; }; + FD1762E3176686EA00D836A8 /* DownSampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD1762E1176686EA00D836A8 /* DownSampler.cpp */; }; + FD1762E4176686EA00D836A8 /* DownSampler.h in Headers */ = {isa = PBXBuildFile; fileRef = FD1762E2176686EA00D836A8 /* DownSampler.h */; }; + FD23A12513F5FA5900F67001 /* JSMediaElementAudioSourceNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD23A12313F5FA5900F67001 /* JSMediaElementAudioSourceNode.cpp */; }; + FD23A12613F5FA5900F67001 /* JSMediaElementAudioSourceNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD23A12413F5FA5900F67001 /* JSMediaElementAudioSourceNode.h */; }; + FD2DBF1212B048A300ED98C6 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD2DBF0E12B048A300ED98C6 /* Accelerate.framework */; }; + FD2DBF1312B048A300ED98C6 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD2DBF0F12B048A300ED98C6 /* AudioToolbox.framework */; }; + FD2DBF1412B048A300ED98C6 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD2DBF1012B048A300ED98C6 /* AudioUnit.framework */; }; + FD2DBF1512B048A300ED98C6 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD2DBF1112B048A300ED98C6 /* CoreAudio.framework */; }; + FD315FF612B0267600C1A359 /* AudioBasicProcessorNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FAC12B0267500C1A359 /* AudioBasicProcessorNode.cpp */; }; + FD315FF712B0267600C1A359 /* AudioBasicProcessorNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FAD12B0267500C1A359 /* AudioBasicProcessorNode.h */; }; + FD315FF812B0267600C1A359 /* AudioBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FAE12B0267500C1A359 /* AudioBuffer.cpp */; }; + FD315FF912B0267600C1A359 /* AudioBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FAF12B0267500C1A359 /* AudioBuffer.h */; }; + FD315FFB12B0267600C1A359 /* AudioBufferSourceNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FB112B0267500C1A359 /* AudioBufferSourceNode.cpp */; }; + FD315FFC12B0267600C1A359 /* AudioBufferSourceNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FB212B0267500C1A359 /* AudioBufferSourceNode.h */; }; + FD315FFE12B0267600C1A359 /* ChannelMergerNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FB412B0267500C1A359 /* ChannelMergerNode.cpp */; }; + FD315FFF12B0267600C1A359 /* ChannelMergerNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FB512B0267500C1A359 /* ChannelMergerNode.h */; }; + FD31600112B0267600C1A359 /* ChannelSplitterNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FB712B0267500C1A359 /* ChannelSplitterNode.cpp */; }; + FD31600212B0267600C1A359 /* ChannelSplitterNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FB812B0267500C1A359 /* ChannelSplitterNode.h */; }; + FD31600412B0267600C1A359 /* AudioContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FBA12B0267500C1A359 /* AudioContext.cpp */; }; + FD31600512B0267600C1A359 /* AudioContext.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FBB12B0267500C1A359 /* AudioContext.h */; }; + FD31600712B0267600C1A359 /* AudioDestinationNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FBD12B0267500C1A359 /* AudioDestinationNode.cpp */; }; + FD31600812B0267600C1A359 /* AudioDestinationNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FBE12B0267500C1A359 /* AudioDestinationNode.h */; }; + FD31600C12B0267600C1A359 /* GainNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FC212B0267500C1A359 /* GainNode.cpp */; }; + FD31600D12B0267600C1A359 /* GainNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FC312B0267500C1A359 /* GainNode.h */; }; + FD31600F12B0267600C1A359 /* AudioListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FC512B0267500C1A359 /* AudioListener.cpp */; }; + FD31601012B0267600C1A359 /* AudioListener.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FC612B0267500C1A359 /* AudioListener.h */; }; + FD31601212B0267600C1A359 /* AudioNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FC812B0267500C1A359 /* AudioNode.cpp */; }; + FD31601312B0267600C1A359 /* AudioNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FC912B0267500C1A359 /* AudioNode.h */; }; + FD31601512B0267600C1A359 /* AudioNodeInput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FCB12B0267500C1A359 /* AudioNodeInput.cpp */; }; + FD31601612B0267600C1A359 /* AudioNodeInput.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FCC12B0267500C1A359 /* AudioNodeInput.h */; }; + FD31601712B0267600C1A359 /* AudioNodeOutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FCD12B0267500C1A359 /* AudioNodeOutput.cpp */; }; + FD31601812B0267600C1A359 /* AudioNodeOutput.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FCE12B0267500C1A359 /* AudioNodeOutput.h */; }; + FD31601912B0267600C1A359 /* PannerNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FCF12B0267500C1A359 /* PannerNode.cpp */; }; + FD31601A12B0267600C1A359 /* PannerNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FD012B0267500C1A359 /* PannerNode.h */; }; + FD31601C12B0267600C1A359 /* AudioParam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FD212B0267500C1A359 /* AudioParam.cpp */; }; + FD31601D12B0267600C1A359 /* AudioParam.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FD312B0267500C1A359 /* AudioParam.h */; }; + FD31601F12B0267600C1A359 /* AudioProcessingEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FD512B0267600C1A359 /* AudioProcessingEvent.cpp */; }; + FD31602012B0267600C1A359 /* AudioProcessingEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FD612B0267600C1A359 /* AudioProcessingEvent.h */; }; + FD31602412B0267600C1A359 /* BiquadDSPKernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FDA12B0267600C1A359 /* BiquadDSPKernel.cpp */; }; + FD31602512B0267600C1A359 /* BiquadDSPKernel.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FDB12B0267600C1A359 /* BiquadDSPKernel.h */; }; + FD31602612B0267600C1A359 /* BiquadProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FDC12B0267600C1A359 /* BiquadProcessor.cpp */; }; + FD31602712B0267600C1A359 /* BiquadProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FDD12B0267600C1A359 /* BiquadProcessor.h */; }; + FD31602812B0267600C1A359 /* ConvolverNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FDE12B0267600C1A359 /* ConvolverNode.cpp */; }; + FD31602912B0267600C1A359 /* ConvolverNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FDF12B0267600C1A359 /* ConvolverNode.h */; }; + FD31602B12B0267600C1A359 /* DelayDSPKernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FE112B0267600C1A359 /* DelayDSPKernel.cpp */; }; + FD31602C12B0267600C1A359 /* DelayDSPKernel.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FE212B0267600C1A359 /* DelayDSPKernel.h */; }; + FD31602D12B0267600C1A359 /* DelayNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FE312B0267600C1A359 /* DelayNode.cpp */; }; + FD31602E12B0267600C1A359 /* DelayNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FE412B0267600C1A359 /* DelayNode.h */; }; + FD31603012B0267600C1A359 /* DelayProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FE612B0267600C1A359 /* DelayProcessor.cpp */; }; + FD31603112B0267600C1A359 /* DelayProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FE712B0267600C1A359 /* DelayProcessor.h */; }; + FD31603512B0267600C1A359 /* ScriptProcessorNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FEB12B0267600C1A359 /* ScriptProcessorNode.cpp */; }; + FD31603612B0267600C1A359 /* ScriptProcessorNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FEC12B0267600C1A359 /* ScriptProcessorNode.h */; }; + FD31603B12B0267600C1A359 /* RealtimeAnalyser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FF112B0267600C1A359 /* RealtimeAnalyser.cpp */; }; + FD31603C12B0267600C1A359 /* RealtimeAnalyser.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FF212B0267600C1A359 /* RealtimeAnalyser.h */; }; + FD31603D12B0267600C1A359 /* AnalyserNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD315FF312B0267600C1A359 /* AnalyserNode.cpp */; }; + FD31603E12B0267600C1A359 /* AnalyserNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD315FF412B0267600C1A359 /* AnalyserNode.h */; }; + FD31607A12B026F700C1A359 /* AudioArray.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31604412B026F700C1A359 /* AudioArray.h */; }; + FD31607B12B026F700C1A359 /* AudioBus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31604512B026F700C1A359 /* AudioBus.cpp */; }; + FD31607C12B026F700C1A359 /* AudioBus.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31604612B026F700C1A359 /* AudioBus.h */; }; + FD31607D12B026F700C1A359 /* AudioChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31604712B026F700C1A359 /* AudioChannel.cpp */; }; + FD31607E12B026F700C1A359 /* AudioChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31604812B026F700C1A359 /* AudioChannel.h */; }; + FD31607F12B026F700C1A359 /* AudioDestination.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31604912B026F700C1A359 /* AudioDestination.h */; }; + FD31608012B026F700C1A359 /* AudioDSPKernel.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31604A12B026F700C1A359 /* AudioDSPKernel.h */; }; + FD31608112B026F700C1A359 /* AudioDSPKernelProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31604B12B026F700C1A359 /* AudioDSPKernelProcessor.cpp */; }; + FD31608212B026F700C1A359 /* AudioDSPKernelProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31604C12B026F700C1A359 /* AudioDSPKernelProcessor.h */; }; + FD31608312B026F700C1A359 /* AudioFileReader.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31604D12B026F700C1A359 /* AudioFileReader.h */; }; + FD31608412B026F700C1A359 /* AudioProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31604E12B026F700C1A359 /* AudioProcessor.h */; }; + FD31608512B026F700C1A359 /* AudioResampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31604F12B026F700C1A359 /* AudioResampler.cpp */; }; + FD31608612B026F700C1A359 /* AudioResampler.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31605012B026F700C1A359 /* AudioResampler.h */; }; + FD31608712B026F700C1A359 /* AudioResamplerKernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31605112B026F700C1A359 /* AudioResamplerKernel.cpp */; }; + FD31608812B026F700C1A359 /* AudioResamplerKernel.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31605212B026F700C1A359 /* AudioResamplerKernel.h */; }; + FD31608912B026F700C1A359 /* AudioSourceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31605312B026F700C1A359 /* AudioSourceProvider.h */; }; + FD31608A12B026F700C1A359 /* AudioUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31605412B026F700C1A359 /* AudioUtilities.cpp */; }; + FD31608B12B026F700C1A359 /* AudioUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31605512B026F700C1A359 /* AudioUtilities.h */; }; + FD31608C12B026F700C1A359 /* Biquad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31605612B026F700C1A359 /* Biquad.cpp */; }; + FD31608D12B026F700C1A359 /* Biquad.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31605712B026F700C1A359 /* Biquad.h */; }; + FD31608E12B026F700C1A359 /* Cone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31605812B026F700C1A359 /* Cone.cpp */; }; + FD31608F12B026F700C1A359 /* Cone.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31605912B026F700C1A359 /* Cone.h */; }; + FD31609012B026F700C1A359 /* Distance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31605A12B026F700C1A359 /* Distance.cpp */; }; + FD31609112B026F700C1A359 /* Distance.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31605B12B026F700C1A359 /* Distance.h */; }; + FD31609212B026F700C1A359 /* EqualPowerPanner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31605C12B026F700C1A359 /* EqualPowerPanner.cpp */; }; + FD31609312B026F700C1A359 /* EqualPowerPanner.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31605D12B026F700C1A359 /* EqualPowerPanner.h */; }; + FD31609412B026F700C1A359 /* FFTConvolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31605E12B026F700C1A359 /* FFTConvolver.cpp */; }; + FD31609512B026F700C1A359 /* FFTConvolver.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31605F12B026F700C1A359 /* FFTConvolver.h */; }; + FD31609612B026F700C1A359 /* FFTFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31606012B026F700C1A359 /* FFTFrame.cpp */; }; + FD31609712B026F700C1A359 /* FFTFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31606112B026F700C1A359 /* FFTFrame.h */; }; + FD31609812B026F700C1A359 /* HRTFDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31606212B026F700C1A359 /* HRTFDatabase.cpp */; }; + FD31609912B026F700C1A359 /* HRTFDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31606312B026F700C1A359 /* HRTFDatabase.h */; }; + FD31609A12B026F700C1A359 /* HRTFDatabaseLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31606412B026F700C1A359 /* HRTFDatabaseLoader.cpp */; }; + FD31609B12B026F700C1A359 /* HRTFDatabaseLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31606512B026F700C1A359 /* HRTFDatabaseLoader.h */; }; + FD31609C12B026F700C1A359 /* HRTFElevation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31606612B026F700C1A359 /* HRTFElevation.cpp */; }; + FD31609D12B026F700C1A359 /* HRTFElevation.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31606712B026F700C1A359 /* HRTFElevation.h */; }; + FD31609E12B026F700C1A359 /* HRTFKernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31606812B026F700C1A359 /* HRTFKernel.cpp */; }; + FD31609F12B026F700C1A359 /* HRTFKernel.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31606912B026F700C1A359 /* HRTFKernel.h */; }; + FD3160A012B026F700C1A359 /* HRTFPanner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31606A12B026F700C1A359 /* HRTFPanner.cpp */; }; + FD3160A112B026F700C1A359 /* HRTFPanner.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31606B12B026F700C1A359 /* HRTFPanner.h */; }; + FD3160A212B026F700C1A359 /* Panner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31606C12B026F700C1A359 /* Panner.cpp */; }; + FD3160A312B026F700C1A359 /* Panner.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31606D12B026F700C1A359 /* Panner.h */; }; + FD3160A412B026F700C1A359 /* Reverb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31606E12B026F700C1A359 /* Reverb.cpp */; }; + FD3160A512B026F700C1A359 /* Reverb.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31606F12B026F700C1A359 /* Reverb.h */; }; + FD3160A612B026F700C1A359 /* ReverbAccumulationBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31607012B026F700C1A359 /* ReverbAccumulationBuffer.cpp */; }; + FD3160A712B026F700C1A359 /* ReverbAccumulationBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31607112B026F700C1A359 /* ReverbAccumulationBuffer.h */; }; + FD3160A812B026F700C1A359 /* ReverbConvolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31607212B026F700C1A359 /* ReverbConvolver.cpp */; }; + FD3160A912B026F700C1A359 /* ReverbConvolver.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31607312B026F700C1A359 /* ReverbConvolver.h */; }; + FD3160AA12B026F700C1A359 /* ReverbConvolverStage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31607412B026F700C1A359 /* ReverbConvolverStage.cpp */; }; + FD3160AB12B026F700C1A359 /* ReverbConvolverStage.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31607512B026F700C1A359 /* ReverbConvolverStage.h */; }; + FD3160AC12B026F700C1A359 /* ReverbInputBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31607612B026F700C1A359 /* ReverbInputBuffer.cpp */; }; + FD3160AD12B026F700C1A359 /* ReverbInputBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31607712B026F700C1A359 /* ReverbInputBuffer.h */; }; + FD3160AE12B026F700C1A359 /* VectorMath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD31607812B026F700C1A359 /* VectorMath.cpp */; }; + FD3160AF12B026F700C1A359 /* VectorMath.h in Headers */ = {isa = PBXBuildFile; fileRef = FD31607912B026F700C1A359 /* VectorMath.h */; }; + FD3160BB12B0272A00C1A359 /* AudioBusMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = FD3160B512B0272A00C1A359 /* AudioBusMac.mm */; }; + FD3160BC12B0272A00C1A359 /* AudioDestinationMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD3160B612B0272A00C1A359 /* AudioDestinationMac.cpp */; }; + FD3160BD12B0272A00C1A359 /* AudioDestinationMac.h in Headers */ = {isa = PBXBuildFile; fileRef = FD3160B712B0272A00C1A359 /* AudioDestinationMac.h */; }; + FD3160BE12B0272A00C1A359 /* AudioFileReaderMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD3160B812B0272A00C1A359 /* AudioFileReaderMac.cpp */; }; + FD3160BF12B0272A00C1A359 /* AudioFileReaderMac.h in Headers */ = {isa = PBXBuildFile; fileRef = FD3160B912B0272A00C1A359 /* AudioFileReaderMac.h */; }; + FD3160C012B0272A00C1A359 /* FFTFrameMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD3160BA12B0272A00C1A359 /* FFTFrameMac.cpp */; }; + FD35918F138DB22000E1EBEC /* AudioParamTimeline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD35918D138DB22000E1EBEC /* AudioParamTimeline.cpp */; }; + FD359190138DB22000E1EBEC /* AudioParamTimeline.h in Headers */ = {isa = PBXBuildFile; fileRef = FD35918E138DB22000E1EBEC /* AudioParamTimeline.h */; }; + FD45A94F175D3F3E00C21EC8 /* Shape.h in Headers */ = {isa = PBXBuildFile; fileRef = FD08A87F175D3926002CD360 /* Shape.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FD45A950175D3F3E00C21EC8 /* ShapeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = FD08A881175D3926002CD360 /* ShapeInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FD45A951175D3F3E00C21EC8 /* ShapeInsideInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = FD08A883175D3926002CD360 /* ShapeInsideInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FD45A952175D3F3E00C21EC8 /* ShapeOutsideInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = FD08A887175D3926002CD360 /* ShapeOutsideInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FD45A953175D3FB800C21EC8 /* Shape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD08A87E175D3926002CD360 /* Shape.cpp */; }; + FD45A954175D3FB800C21EC8 /* ShapeInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD08A880175D3926002CD360 /* ShapeInfo.cpp */; }; + FD45A955175D3FB800C21EC8 /* ShapeInsideInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD08A882175D3926002CD360 /* ShapeInsideInfo.cpp */; }; + FD45A956175D3FB800C21EC8 /* ShapeOutsideInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD08A886175D3926002CD360 /* ShapeOutsideInfo.cpp */; }; + FD45A957175D414C00C21EC8 /* PolygonShape.h in Headers */ = {isa = PBXBuildFile; fileRef = FD08A87B175D3926002CD360 /* PolygonShape.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FD45A958175D414C00C21EC8 /* RectangleShape.h in Headers */ = {isa = PBXBuildFile; fileRef = FD08A87D175D3926002CD360 /* RectangleShape.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FD45A959175D417100C21EC8 /* PolygonShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD08A87A175D3926002CD360 /* PolygonShape.cpp */; }; + FD45A95A175D417100C21EC8 /* RectangleShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD08A87C175D3926002CD360 /* RectangleShape.cpp */; }; + FD45A95B175D41EE00C21EC8 /* ShapeInterval.h in Headers */ = {isa = PBXBuildFile; fileRef = FD08A885175D3926002CD360 /* ShapeInterval.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FD45A95C175D420D00C21EC8 /* ShapeInterval.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD08A884175D3926002CD360 /* ShapeInterval.cpp */; }; + FD537352137B651800008DCE /* ZeroPole.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD537350137B651800008DCE /* ZeroPole.cpp */; }; + FD537353137B651800008DCE /* ZeroPole.h in Headers */ = {isa = PBXBuildFile; fileRef = FD537351137B651800008DCE /* ZeroPole.h */; }; + FD537356137B653B00008DCE /* DynamicsCompressorKernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD537354137B653B00008DCE /* DynamicsCompressorKernel.cpp */; }; + FD537357137B653B00008DCE /* DynamicsCompressorKernel.h in Headers */ = {isa = PBXBuildFile; fileRef = FD537355137B653B00008DCE /* DynamicsCompressorKernel.h */; }; + FD5686C913AC180200B69C68 /* AsyncAudioDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD5686C713AC180200B69C68 /* AsyncAudioDecoder.cpp */; }; + FD5686CA13AC180200B69C68 /* AsyncAudioDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = FD5686C813AC180200B69C68 /* AsyncAudioDecoder.h */; }; + FD5686CC13AC181400B69C68 /* AudioBufferCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = FD5686CB13AC181400B69C68 /* AudioBufferCallback.h */; }; + FD581FAE1520F91F003A7A75 /* OscillatorNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD581FAB1520F91F003A7A75 /* OscillatorNode.cpp */; }; + FD581FAF1520F91F003A7A75 /* OscillatorNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD581FAC1520F91F003A7A75 /* OscillatorNode.h */; }; + FD581FB41520F93B003A7A75 /* PeriodicWave.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD581FB11520F93B003A7A75 /* PeriodicWave.cpp */; }; + FD581FB51520F93B003A7A75 /* PeriodicWave.h in Headers */ = {isa = PBXBuildFile; fileRef = FD581FB21520F93B003A7A75 /* PeriodicWave.h */; }; + FD629EA3154B47160006D026 /* AudioBasicInspectorNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD629EA1154B47160006D026 /* AudioBasicInspectorNode.h */; }; + FD629EA4154B47160006D026 /* AudioBasicInspectorNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD629EA2154B47160006D026 /* AudioBasicInspectorNode.cpp */; }; + FD62F52E145898D80094B0ED /* AudioSourceProviderClient.h in Headers */ = {isa = PBXBuildFile; fileRef = FD62F52D145898D80094B0ED /* AudioSourceProviderClient.h */; }; + FD671A77159BB07000197559 /* MediaStreamAudioSourceNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD671A74159BB07000197559 /* MediaStreamAudioSourceNode.cpp */; }; + FD671A78159BB07000197559 /* MediaStreamAudioSourceNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD671A75159BB07000197559 /* MediaStreamAudioSourceNode.h */; }; + FD6ED2C3136B8E42003CF072 /* DynamicsCompressorNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD6ED2C1136B8E42003CF072 /* DynamicsCompressorNode.cpp */; }; + FD6ED2C4136B8E42003CF072 /* DynamicsCompressorNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD6ED2C2136B8E42003CF072 /* DynamicsCompressorNode.h */; }; + FD6ED2C7136B8E66003CF072 /* DynamicsCompressor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD6ED2C5136B8E66003CF072 /* DynamicsCompressor.cpp */; }; + FD6ED2C8136B8E66003CF072 /* DynamicsCompressor.h in Headers */ = {isa = PBXBuildFile; fileRef = FD6ED2C6136B8E66003CF072 /* DynamicsCompressor.h */; }; + FD6F252C13F5EF0E0065165F /* MediaElementAudioSourceNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD6F252913F5EF0E0065165F /* MediaElementAudioSourceNode.cpp */; }; + FD6F252D13F5EF0E0065165F /* MediaElementAudioSourceNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD6F252A13F5EF0E0065165F /* MediaElementAudioSourceNode.h */; }; + FD7868B9136B999200D403DF /* JSDynamicsCompressorNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD7868B7136B999200D403DF /* JSDynamicsCompressorNode.cpp */; }; + FD7868BA136B999200D403DF /* JSDynamicsCompressorNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD7868B8136B999200D403DF /* JSDynamicsCompressorNode.h */; }; + FD7F299113D4C0CB00AD9535 /* WaveShaperDSPKernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD7F298A13D4C0CB00AD9535 /* WaveShaperDSPKernel.cpp */; }; + FD7F299213D4C0CB00AD9535 /* WaveShaperDSPKernel.h in Headers */ = {isa = PBXBuildFile; fileRef = FD7F298B13D4C0CB00AD9535 /* WaveShaperDSPKernel.h */; }; + FD7F299313D4C0CB00AD9535 /* WaveShaperNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD7F298C13D4C0CB00AD9535 /* WaveShaperNode.cpp */; }; + FD7F299413D4C0CB00AD9535 /* WaveShaperNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD7F298D13D4C0CB00AD9535 /* WaveShaperNode.h */; }; + FD7F299613D4C0CB00AD9535 /* WaveShaperProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD7F298F13D4C0CB00AD9535 /* WaveShaperProcessor.cpp */; }; + FD7F299713D4C0CB00AD9535 /* WaveShaperProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = FD7F299013D4C0CB00AD9535 /* WaveShaperProcessor.h */; }; + FD82D7F713D4C8BD004E4372 /* JSWaveShaperNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD82D7F513D4C8BD004E4372 /* JSWaveShaperNode.cpp */; }; + FD82D7F813D4C8BD004E4372 /* JSWaveShaperNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD82D7F613D4C8BD004E4372 /* JSWaveShaperNode.h */; }; + FD8AA63C1695148E00D2EA68 /* JSBiquadFilterNodeCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD8AA63B1695148E00D2EA68 /* JSBiquadFilterNodeCustom.cpp */; }; + FD8AA63E169514A700D2EA68 /* JSPannerNodeCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD8AA63D169514A700D2EA68 /* JSPannerNodeCustom.cpp */; }; + FD8C46EB154608E700A5910C /* AudioScheduledSourceNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD8C46E9154608E700A5910C /* AudioScheduledSourceNode.cpp */; }; + FD8C46EC154608E700A5910C /* AudioScheduledSourceNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD8C46EA154608E700A5910C /* AudioScheduledSourceNode.h */; }; + FDA15E9D12B03EE1003A583A /* JSAudioBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15E8112B03EE1003A583A /* JSAudioBuffer.cpp */; }; + FDA15E9E12B03EE1003A583A /* JSAudioBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15E8212B03EE1003A583A /* JSAudioBuffer.h */; }; + FDA15E9F12B03EE1003A583A /* JSAudioBufferSourceNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15E8312B03EE1003A583A /* JSAudioBufferSourceNode.cpp */; }; + FDA15EA012B03EE1003A583A /* JSAudioBufferSourceNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15E8412B03EE1003A583A /* JSAudioBufferSourceNode.h */; }; + FDA15EA112B03EE1003A583A /* JSChannelMergerNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15E8512B03EE1003A583A /* JSChannelMergerNode.cpp */; }; + FDA15EA212B03EE1003A583A /* JSChannelMergerNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15E8612B03EE1003A583A /* JSChannelMergerNode.h */; }; + FDA15EA312B03EE1003A583A /* JSChannelSplitterNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15E8712B03EE1003A583A /* JSChannelSplitterNode.cpp */; }; + FDA15EA412B03EE1003A583A /* JSChannelSplitterNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15E8812B03EE1003A583A /* JSChannelSplitterNode.h */; }; + FDA15EA512B03EE1003A583A /* JSAudioContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15E8912B03EE1003A583A /* JSAudioContext.cpp */; }; + FDA15EA612B03EE1003A583A /* JSAudioContext.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15E8A12B03EE1003A583A /* JSAudioContext.h */; }; + FDA15EA712B03EE1003A583A /* JSAudioDestinationNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15E8B12B03EE1003A583A /* JSAudioDestinationNode.cpp */; }; + FDA15EA812B03EE1003A583A /* JSAudioDestinationNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15E8C12B03EE1003A583A /* JSAudioDestinationNode.h */; }; + FDA15EAB12B03EE1003A583A /* JSGainNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15E8F12B03EE1003A583A /* JSGainNode.cpp */; }; + FDA15EAC12B03EE1003A583A /* JSGainNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15E9012B03EE1003A583A /* JSGainNode.h */; }; + FDA15EAD12B03EE1003A583A /* JSAudioListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15E9112B03EE1003A583A /* JSAudioListener.cpp */; }; + FDA15EAE12B03EE1003A583A /* JSAudioListener.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15E9212B03EE1003A583A /* JSAudioListener.h */; }; + FDA15EAF12B03EE1003A583A /* JSAudioNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15E9312B03EE1003A583A /* JSAudioNode.cpp */; }; + FDA15EB012B03EE1003A583A /* JSAudioNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15E9412B03EE1003A583A /* JSAudioNode.h */; }; + FDA15EB112B03EE1003A583A /* JSPannerNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15E9512B03EE1003A583A /* JSPannerNode.cpp */; }; + FDA15EB212B03EE1003A583A /* JSPannerNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15E9612B03EE1003A583A /* JSPannerNode.h */; }; + FDA15EB312B03EE1003A583A /* JSAudioParam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15E9712B03EE1003A583A /* JSAudioParam.cpp */; }; + FDA15EB412B03EE1003A583A /* JSAudioParam.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15E9812B03EE1003A583A /* JSAudioParam.h */; }; + FDA15EB512B03EE1003A583A /* JSAudioProcessingEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15E9912B03EE1003A583A /* JSAudioProcessingEvent.cpp */; }; + FDA15EB612B03EE1003A583A /* JSAudioProcessingEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15E9A12B03EE1003A583A /* JSAudioProcessingEvent.h */; }; + FDA15EBD12B03F0B003A583A /* JSConvolverNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15EBB12B03F0B003A583A /* JSConvolverNode.cpp */; }; + FDA15EBE12B03F0B003A583A /* JSConvolverNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15EBC12B03F0B003A583A /* JSConvolverNode.h */; }; + FDA15EC912B03F50003A583A /* JSAnalyserNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15EC712B03F50003A583A /* JSAnalyserNode.cpp */; }; + FDA15ECA12B03F50003A583A /* JSAnalyserNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15EC812B03F50003A583A /* JSAnalyserNode.h */; }; + FDA15ECD12B03F61003A583A /* JSScriptProcessorNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15ECB12B03F61003A583A /* JSScriptProcessorNode.cpp */; }; + FDA15ECE12B03F61003A583A /* JSScriptProcessorNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15ECC12B03F61003A583A /* JSScriptProcessorNode.h */; }; + FDA15ED112B03F94003A583A /* JSDelayNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA15ECF12B03F94003A583A /* JSDelayNode.cpp */; }; + FDA15ED212B03F94003A583A /* JSDelayNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA15ED012B03F94003A583A /* JSDelayNode.h */; }; + FDA3E959134A49EF008D4B5A /* OfflineAudioCompletionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA3E955134A49EF008D4B5A /* OfflineAudioCompletionEvent.cpp */; }; + FDA3E95A134A49EF008D4B5A /* OfflineAudioCompletionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA3E956134A49EF008D4B5A /* OfflineAudioCompletionEvent.h */; }; + FDA3E95B134A49EF008D4B5A /* OfflineAudioDestinationNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA3E957134A49EF008D4B5A /* OfflineAudioDestinationNode.cpp */; }; + FDA3E95C134A49EF008D4B5A /* OfflineAudioDestinationNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA3E958134A49EF008D4B5A /* OfflineAudioDestinationNode.h */; }; + FDA9325D16703B2A008982DC /* OfflineAudioContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA9325A16703B2A008982DC /* OfflineAudioContext.cpp */; }; + FDA9325E16703B2A008982DC /* OfflineAudioContext.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA9325B16703B2A008982DC /* OfflineAudioContext.h */; }; + FDA9326616703BA9008982DC /* JSOfflineAudioContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDA9326416703BA9008982DC /* JSOfflineAudioContext.cpp */; }; + FDA9326716703BA9008982DC /* JSOfflineAudioContext.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA9326516703BA9008982DC /* JSOfflineAudioContext.h */; }; + FDAF19981513D131008DB0C3 /* DirectConvolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDAF19961513D131008DB0C3 /* DirectConvolver.cpp */; }; + FDAF19991513D131008DB0C3 /* DirectConvolver.h in Headers */ = {isa = PBXBuildFile; fileRef = FDAF19971513D131008DB0C3 /* DirectConvolver.h */; }; + FDB052DF1561A42C00B500D6 /* AudioSummingJunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDB052DD1561A42C00B500D6 /* AudioSummingJunction.cpp */; }; + FDB052E01561A42C00B500D6 /* AudioSummingJunction.h in Headers */ = {isa = PBXBuildFile; fileRef = FDB052DE1561A42C00B500D6 /* AudioSummingJunction.h */; }; + FDB1700514A2BAB200A2B5D9 /* MultiChannelResampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDB1700314A2BAB200A2B5D9 /* MultiChannelResampler.cpp */; }; + FDB1700614A2BAB200A2B5D9 /* MultiChannelResampler.h in Headers */ = {isa = PBXBuildFile; fileRef = FDB1700414A2BAB200A2B5D9 /* MultiChannelResampler.h */; }; + FDBD1DFC167FE27D0051A11E /* JSOscillatorNodeCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDBD1DFB167FE27D0051A11E /* JSOscillatorNodeCustom.cpp */; }; + FDBD480C159BC6870093EB4F /* JSMediaStreamAudioSourceNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDBD480A159BC6870093EB4F /* JSMediaStreamAudioSourceNode.cpp */; }; + FDBD480D159BC6870093EB4F /* JSMediaStreamAudioSourceNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDBD480B159BC6870093EB4F /* JSMediaStreamAudioSourceNode.h */; }; + FDC54F041399B0DA008D9117 /* BiquadFilterNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDC54F011399B0DA008D9117 /* BiquadFilterNode.cpp */; }; + FDC54F051399B0DA008D9117 /* BiquadFilterNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDC54F021399B0DA008D9117 /* BiquadFilterNode.h */; }; + FDE2D55B159E66EB00DCCCF8 /* AudioIOCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = FDE2D55A159E66EB00DCCCF8 /* AudioIOCallback.h */; }; + FDEA6242152102E200479DF0 /* JSOscillatorNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDEA6240152102E200479DF0 /* JSOscillatorNode.cpp */; }; + FDEA6243152102E200479DF0 /* JSOscillatorNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDEA6241152102E200479DF0 /* JSOscillatorNode.h */; }; + FDEA6246152102FC00479DF0 /* JSPeriodicWave.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDEA6244152102FC00479DF0 /* JSPeriodicWave.cpp */; }; + FDEA6247152102FC00479DF0 /* JSPeriodicWave.h in Headers */ = {isa = PBXBuildFile; fileRef = FDEA6245152102FC00479DF0 /* JSPeriodicWave.h */; }; + FDEAAAF312B02EE400DCF33B /* JSAudioBufferSourceNodeCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDEAAAEF12B02EE400DCF33B /* JSAudioBufferSourceNodeCustom.cpp */; }; + FDEAAAF412B02EE400DCF33B /* JSAudioContextCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDEAAAF012B02EE400DCF33B /* JSAudioContextCustom.cpp */; }; + FDF09DC81399B62200688E5B /* JSBiquadFilterNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDF09DC61399B62200688E5B /* JSBiquadFilterNode.cpp */; }; + FDF09DC91399B62200688E5B /* JSBiquadFilterNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDF09DC71399B62200688E5B /* JSBiquadFilterNode.h */; }; + FDF6BAF8134A4C9800822920 /* JSOfflineAudioCompletionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDF6BAF6134A4C9800822920 /* JSOfflineAudioCompletionEvent.cpp */; }; + FDF6BAF9134A4C9800822920 /* JSOfflineAudioCompletionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = FDF6BAF7134A4C9800822920 /* JSOfflineAudioCompletionEvent.h */; }; + FDF7E9C313AC21DB00A51EAC /* JSAudioBufferCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDF7E9C113AC21DB00A51EAC /* JSAudioBufferCallback.cpp */; }; + FDF7E9C413AC21DB00A51EAC /* JSAudioBufferCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = FDF7E9C213AC21DB00A51EAC /* JSAudioBufferCallback.h */; }; + FE09DB49169E2D6E00622557 /* DatabaseError.h in Headers */ = {isa = PBXBuildFile; fileRef = FE09DB46169E2D6E00622557 /* DatabaseError.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FE115FAB167988CD00249134 /* AbstractDatabaseServer.h in Headers */ = {isa = PBXBuildFile; fileRef = FE115FA9167988CD00249134 /* AbstractDatabaseServer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FE16CFD3169D1DED00D3A0C7 /* DatabaseBackend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE16CFCF169D1DEC00D3A0C7 /* DatabaseBackend.cpp */; }; + FE16CFD4169D1DED00D3A0C7 /* DatabaseBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = FE16CFD0169D1DEC00D3A0C7 /* DatabaseBackend.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FE16CFD5169D1DED00D3A0C7 /* DatabaseBackendSync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE16CFD1169D1DEC00D3A0C7 /* DatabaseBackendSync.cpp */; }; + FE16CFD6169D1DED00D3A0C7 /* DatabaseBackendSync.h in Headers */ = {isa = PBXBuildFile; fileRef = FE16CFD2169D1DEC00D3A0C7 /* DatabaseBackendSync.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FE3371A2167C11D400EDB752 /* DatabaseBasicTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = FE3371A0167C11D400EDB752 /* DatabaseBasicTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FE36FD1516C7826500F887C1 /* ChangeVersionData.h in Headers */ = {isa = PBXBuildFile; fileRef = FE36FD1116C7826400F887C1 /* ChangeVersionData.h */; }; + FE36FD1616C7826500F887C1 /* SQLTransactionStateMachine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE36FD1216C7826400F887C1 /* SQLTransactionStateMachine.cpp */; }; + FE36FD1716C7826500F887C1 /* SQLTransactionStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = FE36FD1316C7826400F887C1 /* SQLTransactionStateMachine.h */; }; + FE36FD1816C7826500F887C1 /* SQLTransactionState.h in Headers */ = {isa = PBXBuildFile; fileRef = FE36FD1416C7826400F887C1 /* SQLTransactionState.h */; }; + FE456F181677D74E005EDDF9 /* DatabaseManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE456F161677D74E005EDDF9 /* DatabaseManager.cpp */; }; + FE456F191677D74E005EDDF9 /* DatabaseManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FE456F171677D74E005EDDF9 /* DatabaseManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FE4AADEE16D2C37400026FFC /* AbstractSQLStatement.h in Headers */ = {isa = PBXBuildFile; fileRef = FE4AADEC16D2C37400026FFC /* AbstractSQLStatement.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FE4AADEF16D2C37400026FFC /* AbstractSQLStatementBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = FE4AADED16D2C37400026FFC /* AbstractSQLStatementBackend.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FE6F6AAF169E057500FC30A2 /* DatabaseBackendContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE6F6AAD169E057500FC30A2 /* DatabaseBackendContext.cpp */; }; + FE6F6AB0169E057500FC30A2 /* DatabaseBackendContext.h in Headers */ = {isa = PBXBuildFile; fileRef = FE6F6AAE169E057500FC30A2 /* DatabaseBackendContext.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FE6FD48D0F676E9300092873 /* JSCoordinates.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE6FD48B0F676E9300092873 /* JSCoordinates.cpp */; }; + FE6FD48E0F676E9300092873 /* JSCoordinates.h in Headers */ = {isa = PBXBuildFile; fileRef = FE6FD48C0F676E9300092873 /* JSCoordinates.h */; }; + FE80D7AB0E9C1ED2000D6F75 /* JSGeolocationCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE80D7A60E9C1ED2000D6F75 /* JSGeolocationCustom.cpp */; }; + FE80DA630E9C4703000D6F75 /* JSGeolocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE80DA5F0E9C4703000D6F75 /* JSGeolocation.cpp */; }; + FE80DA640E9C4703000D6F75 /* JSGeolocation.h in Headers */ = {isa = PBXBuildFile; fileRef = FE80DA600E9C4703000D6F75 /* JSGeolocation.h */; }; + FE80DA650E9C4703000D6F75 /* JSGeoposition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE80DA610E9C4703000D6F75 /* JSGeoposition.cpp */; }; + FE80DA660E9C4703000D6F75 /* JSGeoposition.h in Headers */ = {isa = PBXBuildFile; fileRef = FE80DA620E9C4703000D6F75 /* JSGeoposition.h */; }; + FE80DA710E9C472F000D6F75 /* JSPositionError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE80DA6D0E9C472F000D6F75 /* JSPositionError.cpp */; }; + FE80DA720E9C472F000D6F75 /* JSPositionError.h in Headers */ = {isa = PBXBuildFile; fileRef = FE80DA6E0E9C472F000D6F75 /* JSPositionError.h */; }; + FE8A674716CDD19E00930BF8 /* SQLStatementBackend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE8A674516CDD19E00930BF8 /* SQLStatementBackend.cpp */; }; + FE8A674816CDD19E00930BF8 /* SQLStatementBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = FE8A674616CDD19E00930BF8 /* SQLStatementBackend.h */; }; + FE9E89FB16E2DC0500A908F8 /* OriginLock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE9E89F916E2DC0400A908F8 /* OriginLock.cpp */; }; + FE9E89FC16E2DC0500A908F8 /* OriginLock.h in Headers */ = {isa = PBXBuildFile; fileRef = FE9E89FA16E2DC0400A908F8 /* OriginLock.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FEAD7D8716C339EE00D4670B /* SQLTransactionBackendSync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEAD7D8516C339EE00D4670B /* SQLTransactionBackendSync.cpp */; }; + FEAD7D8816C339EE00D4670B /* SQLTransactionBackendSync.h in Headers */ = {isa = PBXBuildFile; fileRef = FEAD7D8616C339EE00D4670B /* SQLTransactionBackendSync.h */; }; + FEAF6654167970320062D0C5 /* DatabaseServer.h in Headers */ = {isa = PBXBuildFile; fileRef = FEAF6653167970070062D0C5 /* DatabaseServer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FEB26D28167A8F2A00FDD26B /* DatabaseServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEB26D27167A8F2A00FDD26B /* DatabaseServer.cpp */; }; + FEBC5F3116BD0CC300659BD3 /* DatabaseBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEBC5F2F16BD0CC300659BD3 /* DatabaseBase.cpp */; }; + FEBC5F3216BD0CC300659BD3 /* DatabaseBase.h in Headers */ = {isa = PBXBuildFile; fileRef = FEBC5F3016BD0CC300659BD3 /* DatabaseBase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FEDEF84116797108000E444A /* DatabaseStrategy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEDEF83F16797108000E444A /* DatabaseStrategy.cpp */; }; + FEDEF84216797108000E444A /* DatabaseStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = FEDEF84016797108000E444A /* DatabaseStrategy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FEE1811316C319E800084849 /* SQLTransactionBackend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEE1811116C319E800084849 /* SQLTransactionBackend.cpp */; }; + FEE1811416C319E800084849 /* SQLTransactionBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = FEE1811216C319E800084849 /* SQLTransactionBackend.h */; }; + FF945ECB161F7F3600971BC8 /* PseudoElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FF945EC9161F7F3600971BC8 /* PseudoElement.cpp */; }; + FF945ECC161F7F3600971BC8 /* PseudoElement.h in Headers */ = {isa = PBXBuildFile; fileRef = FF945ECA161F7F3600971BC8 /* PseudoElement.h */; }; + FFD5B97A135CC97800D5E92A /* PageVisibilityState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FFD5B977135CC97800D5E92A /* PageVisibilityState.cpp */; }; + FFD5B97B135CC97800D5E92A /* PageVisibilityState.h in Headers */ = {isa = PBXBuildFile; fileRef = FFD5B978135CC97800D5E92A /* PageVisibilityState.h */; settings = {ATTRIBUTES = (Private, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 417DA6D413734E0D007C57FB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 93F198A508245E59001E9ABC; + remoteInfo = WebCore; + }; + 41816F8213859C7A0057AAA4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 93F198A508245E59001E9ABC; + remoteInfo = WebCore; + }; + 41816F8413859C7D0057AAA4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 417DA6CF13734E02007C57FB; + remoteInfo = WebCoreTestSupport; + }; + 5D87BB6A11E3EBD200702B6F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5D87BB6411E3EBC100702B6F; + remoteInfo = "WebCoreExportFileGenerator Generator"; + }; + 5D87BB8E11E3EE2B00702B6F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5D87BB4E11E3EAEB00702B6F; + remoteInfo = WebCoreExportFileGenerator; + }; + DD041FF009D9E3250010AF2A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DD041FBE09D9DDBE0010AF2A; + remoteInfo = "Derived Sources"; + }; + E1BA66F51742BDE000C20251 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 93F198A508245E59001E9ABC; + remoteInfo = WebCore; + }; + E1BA671B1742CBF800C20251 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = E1BA66F31742BDE000C20251; + remoteInfo = WebCoreTestShim; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 1C11CCB40AA6093700DADB20 /* Copy Generated Headers */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = Versions/A/PrivateHeaders; + dstSubfolderSpec = 1; + files = ( + 5DF7F5C20F01F92A00526B4B /* CSSPropertyNames.h in Copy Generated Headers */, + 7D741BDA177226AA00859170 /* CSSValueKeywords.h in Copy Generated Headers */, + 8538F0300AD71CDB006A81D1 /* DOMAbstractView.h in Copy Generated Headers */, + 1C11CCBC0AA6093700DADB20 /* DOMAttr.h in Copy Generated Headers */, + 2E2D99EB10E2BD3900496337 /* DOMBlob.h in Copy Generated Headers */, + 2E2D99EC10E2BD3900496337 /* DOMBlobInternal.h in Copy Generated Headers */, + 1C11CCC70AA6093700DADB20 /* DOMCDATASection.h in Copy Generated Headers */, + 1C11CCC50AA6093700DADB20 /* DOMCharacterData.h in Copy Generated Headers */, + 1C11CCB60AA6093700DADB20 /* DOMComment.h in Copy Generated Headers */, + 858C39BB0AA905EF00B187A4 /* DOMCounter.h in Copy Generated Headers */, + 85F74E010AA8DF8C000DC284 /* DOMCSSCharsetRule.h in Copy Generated Headers */, + 85F74E020AA8DF8C000DC284 /* DOMCSSFontFaceRule.h in Copy Generated Headers */, + 85F74E030AA8DF8C000DC284 /* DOMCSSImportRule.h in Copy Generated Headers */, + 85F74E040AA8DF8C000DC284 /* DOMCSSMediaRule.h in Copy Generated Headers */, + 85F74E050AA8DF8C000DC284 /* DOMCSSPageRule.h in Copy Generated Headers */, + 858C39B90AA905EF00B187A4 /* DOMCSSPrimitiveValue.h in Copy Generated Headers */, + 85F74E060AA8DF8C000DC284 /* DOMCSSRule.h in Copy Generated Headers */, + 85F74E070AA8DF8C000DC284 /* DOMCSSRuleList.h in Copy Generated Headers */, + 85F74E080AA8DF8C000DC284 /* DOMCSSStyleDeclaration.h in Copy Generated Headers */, + 1ACD1B630B029739007E5016 /* DOMCSSStyleDeclarationInternal.h in Copy Generated Headers */, + 85F74E090AA8DF8C000DC284 /* DOMCSSStyleRule.h in Copy Generated Headers */, + 858C39BD0AA905EF00B187A4 /* DOMCSSStyleSheet.h in Copy Generated Headers */, + FCD8832C16A49FB000962227 /* DOMCSSSupportsRule.h in Copy Generated Headers */, + 85F74E0A0AA8DF8C000DC284 /* DOMCSSUnknownRule.h in Copy Generated Headers */, + 858C39B80AA905EF00B187A4 /* DOMCSSValue.h in Copy Generated Headers */, + 858C39BA0AA905EF00B187A4 /* DOMCSSValueList.h in Copy Generated Headers */, + 1C11CCBD0AA6093700DADB20 /* DOMDocument.h in Copy Generated Headers */, + 1C11CCC60AA6093700DADB20 /* DOMDocumentFragment.h in Copy Generated Headers */, + 85E711940AC5D5350053270F /* DOMDocumentFragmentInternal.h in Copy Generated Headers */, + 44311CD912E4E257000A8D19 /* DOMDocumentFragmentPrivate.h in Copy Generated Headers */, + 1CB4214A0AF2B2CA0085AD91 /* DOMDocumentInternal.h in Copy Generated Headers */, + 44311CD812E4E24B000A8D19 /* DOMDocumentPrivate.h in Copy Generated Headers */, + 1C11CCC00AA6093700DADB20 /* DOMDocumentType.h in Copy Generated Headers */, + 1C11CCC10AA6093700DADB20 /* DOMDOMImplementation.h in Copy Generated Headers */, + 2D9A247615B9C2F400D34527 /* DOMDOMSecurityPolicy.h in Copy Generated Headers */, + 1C11CCC40AA6093700DADB20 /* DOMElement.h in Copy Generated Headers */, + 1CB4214B0AF2B2CA0085AD91 /* DOMElementInternal.h in Copy Generated Headers */, + 1C11CCBF0AA6093700DADB20 /* DOMEntity.h in Copy Generated Headers */, + 1C11CCB90AA6093700DADB20 /* DOMEntityReference.h in Copy Generated Headers */, + 85C7F3E60AAF5D5E004014DD /* DOMEvent.h in Copy Generated Headers */, + 85D2AD6D0AB1A48200C313EA /* DOMEventListener.h in Copy Generated Headers */, + 8540753E0AD6C6DC00620C57 /* DOMEventTarget.h in Copy Generated Headers */, + BC00F0360E0A19DB00FD04E3 /* DOMFile.h in Copy Generated Headers */, + BC00F0370E0A19DB00FD04E3 /* DOMFileInternal.h in Copy Generated Headers */, + BC00F0380E0A19DB00FD04E3 /* DOMFileList.h in Copy Generated Headers */, + BC00F0390E0A19DB00FD04E3 /* DOMFileListInternal.h in Copy Generated Headers */, + 85DF812D0AA778A300486AD7 /* DOMHTMLAnchorElement.h in Copy Generated Headers */, + 854075830AD6CF1400620C57 /* DOMHTMLAppletElement.h in Copy Generated Headers */, + 85ECBF080AA7628900544F0B /* DOMHTMLAreaElement.h in Copy Generated Headers */, + 8575DF800AA612D600F5DBB5 /* DOMHTMLBaseElement.h in Copy Generated Headers */, + 85ECBF090AA7628900544F0B /* DOMHTMLBaseFontElement.h in Copy Generated Headers */, + 8575DF810AA612D600F5DBB5 /* DOMHTMLBodyElement.h in Copy Generated Headers */, + 85183B590AA6928600F19FA3 /* DOMHTMLBRElement.h in Copy Generated Headers */, + 85BA4CE50AA686510088052D /* DOMHTMLButtonElement.h in Copy Generated Headers */, + 93D3C17D0F97AA760053C013 /* DOMHTMLCanvasElement.h in Copy Generated Headers */, + 1C11CCBA0AA6093700DADB20 /* DOMHTMLCollection.h in Copy Generated Headers */, + 85BA4D280AA6889F0088052D /* DOMHTMLDirectoryElement.h in Copy Generated Headers */, + 85BA4D290AA6889F0088052D /* DOMHTMLDivElement.h in Copy Generated Headers */, + 85BA4D2A0AA6889F0088052D /* DOMHTMLDListElement.h in Copy Generated Headers */, + 85F264B20ABBAA580096944B /* DOMHTMLDocument.h in Copy Generated Headers */, + 1C11CCC80AA6093700DADB20 /* DOMHTMLElement.h in Copy Generated Headers */, + 1CB4214C0AF2B2CA0085AD91 /* DOMHTMLElementInternal.h in Copy Generated Headers */, + 854075840AD6CF1400620C57 /* DOMHTMLEmbedElement.h in Copy Generated Headers */, + 441B055C0CD77A2D007C1F18 /* DOMHTMLEmbedElementPrivate.h in Copy Generated Headers */, + 85BA4CE60AA686510088052D /* DOMHTMLFieldSetElement.h in Copy Generated Headers */, + 85ECBF0A0AA7628900544F0B /* DOMHTMLFontElement.h in Copy Generated Headers */, + 1C11CCBB0AA6093700DADB20 /* DOMHTMLFormElement.h in Copy Generated Headers */, + 85DF819D0AA77E7E00486AD7 /* DOMHTMLFrameElement.h in Copy Generated Headers */, + 85DF819E0AA77E7E00486AD7 /* DOMHTMLFrameSetElement.h in Copy Generated Headers */, + 8575DF840AA6130E00F5DBB5 /* DOMHTMLHeadElement.h in Copy Generated Headers */, + 85183B5A0AA6928600F19FA3 /* DOMHTMLHeadingElement.h in Copy Generated Headers */, + 85ECBF0B0AA7628900544F0B /* DOMHTMLHRElement.h in Copy Generated Headers */, + 8575DF850AA6130E00F5DBB5 /* DOMHTMLHtmlElement.h in Copy Generated Headers */, + 85DF819F0AA77E7E00486AD7 /* DOMHTMLIFrameElement.h in Copy Generated Headers */, + 441B055E0CD77A48007C1F18 /* DOMHTMLIFrameElementPrivate.h in Copy Generated Headers */, + 85DF812E0AA778A300486AD7 /* DOMHTMLImageElement.h in Copy Generated Headers */, + 85F32B400AA6401A00FF3184 /* DOMHTMLInputElement.h in Copy Generated Headers */, + 6596F2B30B8731DF001326BD /* DOMHTMLInputElementInternal.h in Copy Generated Headers */, + 1CCA732210ADD44A00FD440D /* DOMHTMLInputElementPrivate.h in Copy Generated Headers */, + 85BA4CE70AA686510088052D /* DOMHTMLLabelElement.h in Copy Generated Headers */, + 85BA4CE80AA686510088052D /* DOMHTMLLegendElement.h in Copy Generated Headers */, + 85BA4D2B0AA6889F0088052D /* DOMHTMLLIElement.h in Copy Generated Headers */, + 8575DF860AA6130E00F5DBB5 /* DOMHTMLLinkElement.h in Copy Generated Headers */, + 85ECBF0C0AA7628900544F0B /* DOMHTMLMapElement.h in Copy Generated Headers */, + BC5156E80C03B741008BB0EE /* DOMHTMLMarqueeElement.h in Copy Generated Headers */, + 85BA4D2C0AA6889F0088052D /* DOMHTMLMenuElement.h in Copy Generated Headers */, + 8575DF830AA612D600F5DBB5 /* DOMHTMLMetaElement.h in Copy Generated Headers */, + 85ECBF0D0AA7628900544F0B /* DOMHTMLModElement.h in Copy Generated Headers */, + 85DF812F0AA778A300486AD7 /* DOMHTMLObjectElement.h in Copy Generated Headers */, + 441B05600CD77A65007C1F18 /* DOMHTMLObjectElementPrivate.h in Copy Generated Headers */, + 85BA4D2D0AA6889F0088052D /* DOMHTMLOListElement.h in Copy Generated Headers */, + 85F32B410AA6401A00FF3184 /* DOMHTMLOptGroupElement.h in Copy Generated Headers */, + 854075850AD6CF1400620C57 /* DOMHTMLOptionElement.h in Copy Generated Headers */, + 1C11CCB80AA6093700DADB20 /* DOMHTMLOptionsCollection.h in Copy Generated Headers */, + 85183B5B0AA6928600F19FA3 /* DOMHTMLParagraphElement.h in Copy Generated Headers */, + 85ECBF0E0AA7628900544F0B /* DOMHTMLParamElement.h in Copy Generated Headers */, + 85183B5C0AA6928600F19FA3 /* DOMHTMLPreElement.h in Copy Generated Headers */, + 85183B5D0AA6928600F19FA3 /* DOMHTMLQuoteElement.h in Copy Generated Headers */, + 85DF81A00AA77E7E00486AD7 /* DOMHTMLScriptElement.h in Copy Generated Headers */, + 85F32B420AA6401A00FF3184 /* DOMHTMLSelectElement.h in Copy Generated Headers */, + 8575DF7E0AA6127E00F5DBB5 /* DOMHTMLStyleElement.h in Copy Generated Headers */, + 85DF822F0AA7866800486AD7 /* DOMHTMLTableCaptionElement.h in Copy Generated Headers */, + 85DF82300AA7866800486AD7 /* DOMHTMLTableCellElement.h in Copy Generated Headers */, + 85DF82310AA7866800486AD7 /* DOMHTMLTableColElement.h in Copy Generated Headers */, + 85DF82740AA78C7300486AD7 /* DOMHTMLTableElement.h in Copy Generated Headers */, + 85DF82320AA7866800486AD7 /* DOMHTMLTableRowElement.h in Copy Generated Headers */, + 85DF82330AA7866800486AD7 /* DOMHTMLTableSectionElement.h in Copy Generated Headers */, + 85F32B430AA6401A00FF3184 /* DOMHTMLTextAreaElement.h in Copy Generated Headers */, + 6596F2C10B87325C001326BD /* DOMHTMLTextAreaElementInternal.h in Copy Generated Headers */, + 8575DF870AA6130E00F5DBB5 /* DOMHTMLTitleElement.h in Copy Generated Headers */, + 85BA4D2E0AA6889F0088052D /* DOMHTMLUListElement.h in Copy Generated Headers */, + 85DF34620AAFC2D400E59AE3 /* DOMKeyboardEvent.h in Copy Generated Headers */, + 8506579F0AAB4A8E002D15C0 /* DOMMediaList.h in Copy Generated Headers */, + 857E0B310AB044780036E447 /* DOMMouseEvent.h in Copy Generated Headers */, + 85DF345D0AAFC2D400E59AE3 /* DOMMutationEvent.h in Copy Generated Headers */, + 1C11CCB70AA6093700DADB20 /* DOMNamedNodeMap.h in Copy Generated Headers */, + 853BF4EC0ABB6EB9008647BB /* DOMNode.h in Copy Generated Headers */, + 8540753F0AD6C6DC00620C57 /* DOMNodeFilter.h in Copy Generated Headers */, + 9307F1130AF2C8BE00DBA31A /* DOMNodeInternal.h in Copy Generated Headers */, + 85526C720AB0AE2F000302EA /* DOMNodeIterator.h in Copy Generated Headers */, + 1C11CCBE0AA6093700DADB20 /* DOMNodeList.h in Copy Generated Headers */, + A54A82F115228DF600C72BA6 /* DOMNodePrivate.h in Copy Generated Headers */, + 1C11CCB50AA6093700DADB20 /* DOMNotation.h in Copy Generated Headers */, + 85DF345F0AAFC2D400E59AE3 /* DOMOverflowEvent.h in Copy Generated Headers */, + 1C11CCC30AA6093700DADB20 /* DOMProcessingInstruction.h in Copy Generated Headers */, + BCC5734D0D695C06006EF517 /* DOMProgressEvent.h in Copy Generated Headers */, + BCC5734E0D695C06006EF517 /* DOMProgressEventInternal.h in Copy Generated Headers */, + 8538F08C0AD72E0A006A81D1 /* DOMRange.h in Copy Generated Headers */, + 1CB4214D0AF2B2CA0085AD91 /* DOMRangeInternal.h in Copy Generated Headers */, + 858C39BC0AA905EF00B187A4 /* DOMRect.h in Copy Generated Headers */, + 855D358D0AD707CC0019AAC7 /* DOMRGBColor.h in Copy Generated Headers */, + A72B66A7169AD88D0034130C /* DOMShadowRoot.h in Copy Generated Headers */, + 850657A00AAB4A8E002D15C0 /* DOMStyleSheet.h in Copy Generated Headers */, + 850657A10AAB4A8E002D15C0 /* DOMStyleSheetList.h in Copy Generated Headers */, + 1C11CCC20AA6093700DADB20 /* DOMText.h in Copy Generated Headers */, + 933A14760B7D1BAF00A53FFD /* DOMTextEvent.h in Copy Generated Headers */, + 85526D050AB0B979000302EA /* DOMTreeWalker.h in Copy Generated Headers */, + 85C7F4D00AAF83F6004014DD /* DOMUIEvent.h in Copy Generated Headers */, + 85DF34600AAFC2D400E59AE3 /* DOMWheelEvent.h in Copy Generated Headers */, + 85E9E0A80AB3A11900069CD0 /* DOMXPathExpression.h in Copy Generated Headers */, + 85E9E0AA0AB3A11900069CD0 /* DOMXPathNSResolver.h in Copy Generated Headers */, + 85E9E0AB0AB3A11900069CD0 /* DOMXPathResult.h in Copy Generated Headers */, + A8D06B390A265DCD005E7203 /* HTMLNames.h in Copy Generated Headers */, + 1403BA0F09EB18F900797C7F /* JSDOMWindow.h in Copy Generated Headers */, + 14DC0D3809FED073007B0235 /* JSNode.h in Copy Generated Headers */, + 53EF766C16531994004CBE49 /* SettingsMacros.h in Copy Generated Headers */, + 08C7A2C710DC7462002D368B /* SVGNames.h in Copy Generated Headers */, + 1A1414B613A0F0500019996C /* WebKitFontFamilyNames.h in Copy Generated Headers */, + ); + name = "Copy Generated Headers"; + runOnlyForDeploymentPostprocessing = 0; + }; + CD0DBF001422765700280263 /* Copy Audio Resources */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = audio; + dstSubfolderSpec = 7; + files = ( + CD4AC52A1496AE9A0087C4EF /* Composite.wav in Copy Audio Resources */, + ); + name = "Copy Audio Resources"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 00146288103CD1DE000B20DB /* OriginAccessEntry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OriginAccessEntry.cpp; sourceTree = ""; }; + 00146289103CD1DE000B20DB /* OriginAccessEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OriginAccessEntry.h; sourceTree = ""; }; + 003F1FE911E6AB43008258D9 /* UserContentTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserContentTypes.h; sourceTree = ""; }; + 0081FEFD16B0A244008AAA7A /* PublicSuffix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PublicSuffix.h; sourceTree = ""; }; + 0081FEFE16B0A2B6008AAA7A /* PublicSuffixMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PublicSuffixMac.mm; path = ../mac/PublicSuffixMac.mm; sourceTree = ""; }; + 00B9318113BA867F0035A948 /* XMLDocumentParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLDocumentParser.cpp; sourceTree = ""; }; + 00B9318213BA867F0035A948 /* XMLDocumentParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLDocumentParser.h; sourceTree = ""; }; + 00B9318313BA867F0035A948 /* XMLDocumentParserLibxml2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLDocumentParserLibxml2.cpp; sourceTree = ""; }; + 00B9318513BA867F0035A948 /* XMLDocumentParserScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLDocumentParserScope.cpp; sourceTree = ""; }; + 00B9318613BA867F0035A948 /* XMLDocumentParserScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLDocumentParserScope.h; sourceTree = ""; }; + 00C60E3E13D76D7E0092A275 /* MarkupTokenizerInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarkupTokenizerInlines.h; sourceTree = ""; }; + 01D3CF7C14BD0A3000FE9970 /* WebGLContextGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLContextGroup.cpp; path = canvas/WebGLContextGroup.cpp; sourceTree = ""; }; + 01D3CF7D14BD0A3000FE9970 /* WebGLContextGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLContextGroup.h; path = canvas/WebGLContextGroup.h; sourceTree = ""; }; + 01D3CF7E14BD0A3000FE9970 /* WebGLContextObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLContextObject.cpp; path = canvas/WebGLContextObject.cpp; sourceTree = ""; }; + 01D3CF7F14BD0A3000FE9970 /* WebGLContextObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLContextObject.h; path = canvas/WebGLContextObject.h; sourceTree = ""; }; + 01D3CF8014BD0A3000FE9970 /* WebGLSharedObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLSharedObject.cpp; path = canvas/WebGLSharedObject.cpp; sourceTree = ""; }; + 01D3CF8114BD0A3000FE9970 /* WebGLSharedObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLSharedObject.h; path = canvas/WebGLSharedObject.h; sourceTree = ""; }; + 033A6A7B147E07D200509B36 /* HTMLPropertiesCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLPropertiesCollection.h; sourceTree = ""; }; + 033A6A7D147E07E700509B36 /* HTMLPropertiesCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLPropertiesCollection.cpp; sourceTree = ""; }; + 033A6A7F147E07F900509B36 /* HTMLPropertiesCollection.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLPropertiesCollection.idl; sourceTree = ""; }; + 033A6A80147E088600509B36 /* JSHTMLPropertiesCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLPropertiesCollection.cpp; sourceTree = ""; }; + 033A6A82147E08A600509B36 /* JSHTMLPropertiesCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLPropertiesCollection.h; sourceTree = ""; }; + 0562F9441573ECEB0031CA16 /* WebKitCSSSVGDocumentValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitCSSSVGDocumentValue.cpp; sourceTree = ""; }; + 0562F9451573ECEB0031CA16 /* WebKitCSSSVGDocumentValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitCSSSVGDocumentValue.h; sourceTree = ""; }; + 0562F9601573F88F0031CA16 /* PlatformLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformLayer.h; sourceTree = ""; }; + 05FD69DF12845D4300B2BEB3 /* DOMTimeStamp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMTimeStamp.h; sourceTree = ""; }; + 06027CAC0B1CBFC000884B2D /* ContextMenuItem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ContextMenuItem.h; sourceTree = ""; }; + 06027CB20B1CC03D00884B2D /* ContextMenuItemMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = ContextMenuItemMac.mm; sourceTree = ""; }; + 062287830B4DB322000C34DF /* FocusDirection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FocusDirection.h; sourceTree = ""; }; + 065AD4F20B0C2EDA005A2B1D /* ContextMenuClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ContextMenuClient.h; sourceTree = ""; }; + 065AD4F30B0C2EDA005A2B1D /* ContextMenuController.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ContextMenuController.cpp; sourceTree = ""; }; + 065AD4F40B0C2EDA005A2B1D /* ContextMenuController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ContextMenuController.h; sourceTree = ""; }; + 0668E1890ADD9624004128E0 /* PopupMenu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PopupMenu.h; sourceTree = ""; }; + 066C772A0AB603B700238CC4 /* FileChooser.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FileChooser.h; sourceTree = ""; }; + 066C772E0AB603FD00238CC4 /* RenderFileUploadControl.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderFileUploadControl.cpp; sourceTree = ""; }; + 066C772F0AB603FD00238CC4 /* RenderFileUploadControl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderFileUploadControl.h; sourceTree = ""; }; + 06E81ED60AB5D5E900C87837 /* LocalCurrentGraphicsContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocalCurrentGraphicsContext.h; sourceTree = ""; }; + 06E81EEB0AB5DA9700C87837 /* LocalCurrentGraphicsContext.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = LocalCurrentGraphicsContext.mm; sourceTree = ""; }; + 070334D01459FFAC008D8D45 /* TrackEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TrackEvent.cpp; sourceTree = ""; }; + 070334D11459FFAC008D8D45 /* TrackEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackEvent.h; sourceTree = ""; }; + 070334D21459FFAC008D8D45 /* TrackEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TrackEvent.idl; sourceTree = ""; }; + 070334D61459FFD5008D8D45 /* TrackBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackBase.h; sourceTree = ""; }; + 070334D8145A006F008D8D45 /* TrackBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TrackBase.cpp; sourceTree = ""; }; + 070334E8145A1F35008D8D45 /* JSTrackCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTrackCustom.cpp; sourceTree = ""; }; + 07075688142262D600414161 /* HTMLTrackElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLTrackElement.cpp; sourceTree = ""; }; + 07075689142262D600414161 /* HTMLTrackElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLTrackElement.h; sourceTree = ""; }; + 0707568A142262D600414161 /* HTMLTrackElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLTrackElement.idl; sourceTree = ""; }; + 0707568E1422668C00414161 /* JSTextTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrack.cpp; sourceTree = ""; }; + 0707568F1422668C00414161 /* JSTextTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTextTrack.h; sourceTree = ""; }; + 070756D114239A4E00414161 /* JSHTMLTrackElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLTrackElement.cpp; sourceTree = ""; }; + 070756D214239A4E00414161 /* JSHTMLTrackElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLTrackElement.h; sourceTree = ""; }; + 070756D714239B4B00414161 /* JSTextTrackCue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackCue.cpp; sourceTree = ""; }; + 070756D814239B4B00414161 /* JSTextTrackCue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTextTrackCue.h; sourceTree = ""; }; + 070756D914239B4C00414161 /* JSTextTrackCueList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackCueList.cpp; sourceTree = ""; }; + 070756DA14239B4E00414161 /* JSTextTrackCueList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTextTrackCueList.h; sourceTree = ""; }; + 0709FC4D1025DEE30059CDBA /* AccessibilitySlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilitySlider.h; sourceTree = ""; }; + 070DD8F50F01868000727DEB /* mediaControls.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mediaControls.css; sourceTree = ""; }; + 071A9EC0168FB56C002629F9 /* TextTrackCueGeneric.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextTrackCueGeneric.cpp; sourceTree = ""; }; + 071A9EC1168FB56C002629F9 /* TextTrackCueGeneric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextTrackCueGeneric.h; sourceTree = ""; }; + 0720B09E14D3323500642955 /* GenericEventQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GenericEventQueue.cpp; sourceTree = ""; }; + 0720B09F14D3323500642955 /* GenericEventQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GenericEventQueue.h; sourceTree = ""; }; + 0720B09F14D3323500642956 /* GestureEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GestureEvent.cpp; sourceTree = ""; }; + 0720B09F14D3323500642957 /* GestureEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GestureEvent.h; sourceTree = ""; }; + 072847E216EBC5B00043CFA4 /* PlatformTextTrack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlatformTextTrack.h; sourceTree = ""; }; + 072847E316EBC5B00043CFA4 /* PlatformTextTrackMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlatformTextTrackMenu.h; sourceTree = ""; }; + 072CA86016CB4DC3008AE131 /* CaptionUserPreferences.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CaptionUserPreferences.cpp; sourceTree = ""; }; + 0735EE690F40C5E4004A2604 /* MediaPlayerProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaPlayerProxy.h; sourceTree = ""; }; + 07367DDD172CA67F00D861B9 /* InbandTextTrackPrivateLegacyAVFObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InbandTextTrackPrivateLegacyAVFObjC.h; path = objc/InbandTextTrackPrivateLegacyAVFObjC.h; sourceTree = ""; }; + 07367DDE172CA67F00D861B9 /* InbandTextTrackPrivateLegacyAVFObjC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = InbandTextTrackPrivateLegacyAVFObjC.mm; path = objc/InbandTextTrackPrivateLegacyAVFObjC.mm; sourceTree = ""; }; + 0753860014489E9800B78452 /* CachedTextTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedTextTrack.cpp; sourceTree = ""; }; + 0753860114489E9800B78452 /* CachedTextTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedTextTrack.h; sourceTree = ""; }; + 076970841463AD8700F502CF /* TextTrackList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextTrackList.cpp; sourceTree = ""; }; + 076970851463AD8700F502CF /* TextTrackList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextTrackList.h; sourceTree = ""; }; + 076F0D0912B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaPlayerPrivateAVFoundation.cpp; sourceTree = ""; }; + 076F0D0A12B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaPlayerPrivateAVFoundation.h; sourceTree = ""; }; + 07846340145B151A00A58DF1 /* JSTrackEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTrackEvent.cpp; sourceTree = ""; }; + 07846341145B151A00A58DF1 /* JSTrackEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTrackEvent.h; sourceTree = ""; }; + 07846384145B1B8E00A58DF1 /* JSTrackCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTrackCustom.h; sourceTree = ""; }; + 0794178F166E855F009416C2 /* InbandTextTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InbandTextTrack.cpp; sourceTree = ""; }; + 07941790166E855F009416C2 /* InbandTextTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InbandTextTrack.h; sourceTree = ""; }; + 07941793166EA04E009416C2 /* InbandTextTrackPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InbandTextTrackPrivate.h; sourceTree = ""; }; + 079D0867162F20E800DB8658 /* CaptionUserPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CaptionUserPreferences.h; sourceTree = ""; }; + 079D0869162F21F900DB8658 /* CaptionUserPreferencesMediaAF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CaptionUserPreferencesMediaAF.h; sourceTree = ""; }; + 079D086A162F21F900DB8658 /* CaptionUserPreferencesMediaAF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CaptionUserPreferencesMediaAF.cpp; sourceTree = ""; }; + 079F5E4B0F3BEBEA005E0782 /* MediaPlayerPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaPlayerPrivate.h; sourceTree = ""; }; + 07A6D1E91491137700051D0C /* MediaFragmentURIParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaFragmentURIParser.cpp; sourceTree = ""; }; + 07A6D1EA1491137700051D0C /* MediaFragmentURIParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaFragmentURIParser.h; sourceTree = ""; }; + 07AA6B69166D019500D45671 /* InbandTextTrackPrivateAVFObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InbandTextTrackPrivateAVFObjC.h; path = objc/InbandTextTrackPrivateAVFObjC.h; sourceTree = ""; }; + 07AA6B6A166D019500D45671 /* InbandTextTrackPrivateAVFObjC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = InbandTextTrackPrivateAVFObjC.mm; path = objc/InbandTextTrackPrivateAVFObjC.mm; sourceTree = ""; }; + 07AFE5900F1446BD00841617 /* mediaControlsQuickTime.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = mediaControlsQuickTime.css; sourceTree = ""; }; + 07B0113E1032242200FBDC33 /* AccessibilityMediaControls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityMediaControls.h; sourceTree = ""; }; + 07B442D4166C70B000556CAD /* InbandTextTrackPrivateAVF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InbandTextTrackPrivateAVF.cpp; sourceTree = ""; }; + 07B442D5166C70B000556CAD /* InbandTextTrackPrivateAVF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InbandTextTrackPrivateAVF.h; sourceTree = ""; }; + 07B5A2D91464320A00A81ECE /* JSTextTrackList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackList.cpp; sourceTree = ""; }; + 07B5A2DA1464320A00A81ECE /* JSTextTrackList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTextTrackList.h; sourceTree = ""; }; + 07B5A3061468537100A81ECE /* TextTrackList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TextTrackList.idl; sourceTree = ""; }; + 07B5A30A14687B8400A81ECE /* JSTrackEventCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTrackEventCustom.cpp; sourceTree = ""; }; + 07B5A30C14687D7100A81ECE /* JSTextTrackListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackListCustom.cpp; sourceTree = ""; }; + 07CE77D416712A6A00C55A47 /* InbandTextTrackPrivateClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InbandTextTrackPrivateClient.h; sourceTree = ""; }; + 07E116B01489C9A100EC5ACE /* JSTextTrackCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackCustom.cpp; sourceTree = ""; }; + 07E117061489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackCueCustom.cpp; sourceTree = ""; }; + 0806E57912893045007CED32 /* SVGMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGMatrix.h; sourceTree = ""; }; + 080E49211255F3BD00EFCA27 /* SVGTextLayoutEngineBaseline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextLayoutEngineBaseline.cpp; sourceTree = ""; }; + 080E49221255F3BD00EFCA27 /* SVGTextLayoutEngineBaseline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTextLayoutEngineBaseline.h; sourceTree = ""; }; + 080E49231255F3BD00EFCA27 /* SVGTextLayoutEngineSpacing.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextLayoutEngineSpacing.cpp; sourceTree = ""; }; + 080E49241255F3BD00EFCA27 /* SVGTextLayoutEngineSpacing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTextLayoutEngineSpacing.h; sourceTree = ""; }; + 0810764312828556007C63BA /* SVGListProperty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGListProperty.h; sourceTree = ""; }; + 081093D91255F0E700ED9D29 /* SVGTextLayoutAttributesBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextLayoutAttributesBuilder.cpp; sourceTree = ""; }; + 081093DA1255F0E700ED9D29 /* SVGTextLayoutAttributesBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTextLayoutAttributesBuilder.h; sourceTree = ""; }; + 0813A4E91284132600992511 /* SVGStaticPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGStaticPropertyTearOff.h; sourceTree = ""; }; + 081668D1125603BF006F25DE /* SVGTextChunkBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextChunkBuilder.cpp; sourceTree = ""; }; + 081668D2125603BF006F25DE /* SVGTextChunkBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTextChunkBuilder.h; sourceTree = ""; }; + 081668D7125603D5006F25DE /* SVGTextLayoutEngine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextLayoutEngine.cpp; sourceTree = ""; }; + 081668D8125603D5006F25DE /* SVGTextLayoutEngine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTextLayoutEngine.h; sourceTree = ""; }; + 081AA8D91111237E002AB06E /* SVGElementRareData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGElementRareData.h; sourceTree = ""; }; + 081DD49B13BA1A6000DC7627 /* SVGPropertyInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPropertyInfo.h; sourceTree = ""; }; + 081EBF380FD34F4100DA7559 /* SVGFilterBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFilterBuilder.cpp; sourceTree = ""; }; + 081EBF390FD34F4100DA7559 /* SVGFilterBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGFilterBuilder.h; sourceTree = ""; }; + 0823D158127AD6AC000EBC95 /* SVGAnimatedInteger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedInteger.h; sourceTree = ""; }; + 08250938128BD4D800E2ED8E /* SVGAnimatedTransformList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedTransformList.h; sourceTree = ""; }; + 082DE42C1292621600D923DF /* SVGPathSegWithContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegWithContext.h; sourceTree = ""; }; + 083DAEA20F01A7FB00342754 /* RenderTextControlMultiLine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTextControlMultiLine.cpp; sourceTree = ""; }; + 083DAEA30F01A7FB00342754 /* RenderTextControlMultiLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderTextControlMultiLine.h; sourceTree = ""; }; + 083DAEA40F01A7FB00342754 /* RenderTextControlSingleLine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTextControlSingleLine.cpp; sourceTree = ""; }; + 083DAEA50F01A7FB00342754 /* RenderTextControlSingleLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderTextControlSingleLine.h; sourceTree = ""; }; + 0845680712B90DA600960A9F /* FontMetrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontMetrics.h; sourceTree = ""; }; + 084A0828128D7867002DB1F1 /* SVGPathSegListPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegListPropertyTearOff.h; sourceTree = ""; }; + 084DB59A128008CC002A6D64 /* SVGAnimatedString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedString.h; sourceTree = ""; }; + 08525E621278C00100A84778 /* SVGAnimatedStaticPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedStaticPropertyTearOff.h; sourceTree = ""; }; + 0854B0021255E4E600B9CDD0 /* RenderSVGInline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGInline.cpp; sourceTree = ""; }; + 0854B0031255E4E600B9CDD0 /* RenderSVGInline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGInline.h; sourceTree = ""; }; + 0854B0041255E4E600B9CDD0 /* RenderSVGInlineText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGInlineText.cpp; sourceTree = ""; }; + 0854B0051255E4E600B9CDD0 /* RenderSVGInlineText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGInlineText.h; sourceTree = ""; }; + 0854B0061255E4E600B9CDD0 /* RenderSVGText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGText.cpp; sourceTree = ""; }; + 0854B0071255E4E600B9CDD0 /* RenderSVGText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGText.h; sourceTree = ""; }; + 0854B0081255E4E600B9CDD0 /* RenderSVGTextPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGTextPath.cpp; sourceTree = ""; }; + 0854B0091255E4E600B9CDD0 /* RenderSVGTextPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGTextPath.h; sourceTree = ""; }; + 0854B00A1255E4E600B9CDD0 /* RenderSVGTSpan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGTSpan.cpp; sourceTree = ""; }; + 0854B00B1255E4E600B9CDD0 /* RenderSVGTSpan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGTSpan.h; sourceTree = ""; }; + 0854B00C1255E4E600B9CDD0 /* SVGInlineFlowBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGInlineFlowBox.cpp; sourceTree = ""; }; + 0854B00D1255E4E600B9CDD0 /* SVGInlineFlowBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGInlineFlowBox.h; sourceTree = ""; }; + 0854B00E1255E4E600B9CDD0 /* SVGInlineTextBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGInlineTextBox.cpp; sourceTree = ""; }; + 0854B00F1255E4E600B9CDD0 /* SVGInlineTextBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGInlineTextBox.h; sourceTree = ""; }; + 0854B0101255E4E600B9CDD0 /* SVGRootInlineBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGRootInlineBox.cpp; sourceTree = ""; }; + 0854B0111255E4E600B9CDD0 /* SVGRootInlineBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGRootInlineBox.h; sourceTree = ""; }; + 0854B0121255E4E600B9CDD0 /* SVGTextQuery.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextQuery.cpp; sourceTree = ""; }; + 0854B0131255E4E600B9CDD0 /* SVGTextQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTextQuery.h; sourceTree = ""; }; + 085797081278394C00A8EC5F /* SVGAnimatedBoolean.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedBoolean.h; sourceTree = ""; }; + 085A15921289A8DD002710E3 /* SVGAnimatedTransformListPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedTransformListPropertyTearOff.h; sourceTree = ""; }; + 085B92B80EFDE73D00E6123C /* FormDataBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FormDataBuilder.cpp; sourceTree = ""; }; + 085B92B90EFDE73D00E6123C /* FormDataBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormDataBuilder.h; sourceTree = ""; }; + 085CD274138BB8E000907F2D /* SVGTextRunRenderingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTextRunRenderingContext.h; sourceTree = ""; }; + 0863951313B5FE5700BB344D /* SVGAnimatedPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedPath.cpp; sourceTree = ""; }; + 0863951413B5FE5700BB344D /* SVGAnimatedPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedPath.h; sourceTree = ""; }; + 08641D4512142F7D008DE9F6 /* RenderImageResourceStyleImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderImageResourceStyleImage.cpp; sourceTree = ""; }; + 08641D4612142F7D008DE9F6 /* RenderImageResourceStyleImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderImageResourceStyleImage.h; sourceTree = ""; }; + 086BBD0E136039C2008B15D8 /* Glyph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Glyph.h; sourceTree = ""; }; + 0873B86A136064EA00A522C2 /* GlyphPage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GlyphPage.h; sourceTree = ""; }; + 087558C313B4A57D00F49307 /* SurrogatePairAwareTextIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SurrogatePairAwareTextIterator.cpp; sourceTree = ""; }; + 087558C413B4A57D00F49307 /* SurrogatePairAwareTextIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SurrogatePairAwareTextIterator.h; sourceTree = ""; }; + 087B84951272CEC700A14417 /* SVGAnimatedAngle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedAngle.h; sourceTree = ""; }; + 087E0AF413606D0B00FA4BA8 /* SVGGlyph.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGGlyph.cpp; sourceTree = ""; }; + 087E0AF513606D0B00FA4BA8 /* SVGGlyph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGGlyph.h; sourceTree = ""; }; + 0880F70D1282B46D00948505 /* SVGStaticListPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGStaticListPropertyTearOff.h; sourceTree = ""; }; + 0885067D11DA045B00182B98 /* PaintInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaintInfo.h; sourceTree = ""; }; + 0885067E11DA045B00182B98 /* PaintPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaintPhase.h; sourceTree = ""; }; + 088A0DFB126EF1DB00978F7A /* SVGAnimatedListPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedListPropertyTearOff.h; sourceTree = ""; }; + 088A0DFC126EF1DB00978F7A /* SVGAnimatedProperty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedProperty.h; sourceTree = ""; }; + 088A0DFD126EF1DB00978F7A /* SVGAnimatedPropertyDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedPropertyDescription.h; sourceTree = ""; }; + 088A0DFE126EF1DB00978F7A /* SVGAnimatedPropertyMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedPropertyMacros.h; sourceTree = ""; }; + 088A0DFF126EF1DB00978F7A /* SVGAnimatedPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedPropertyTearOff.h; sourceTree = ""; }; + 088A0E00126EF1DB00978F7A /* SVGListPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGListPropertyTearOff.h; sourceTree = ""; }; + 088A0E01126EF1DB00978F7A /* SVGProperty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGProperty.h; sourceTree = ""; }; + 088A0E02126EF1DB00978F7A /* SVGPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPropertyTearOff.h; sourceTree = ""; }; + 088A0E03126EF1DB00978F7A /* SVGPropertyTraits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPropertyTraits.h; sourceTree = ""; }; + 088C2F7512390080003D65CE /* SVGTextLayoutAttributes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextLayoutAttributes.cpp; sourceTree = ""; }; + 088C2F7612390080003D65CE /* SVGTextLayoutAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTextLayoutAttributes.h; sourceTree = ""; }; + 089021A8126EF5DE0092D5EA /* SVGAnimatedLength.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedLength.h; sourceTree = ""; }; + 089021AC126EF5E90092D5EA /* SVGAnimatedLengthList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedLengthList.h; sourceTree = ""; }; + 089582530E857A7E00F82C83 /* ImageLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageLoader.cpp; sourceTree = ""; }; + 089582540E857A7E00F82C83 /* ImageLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageLoader.h; sourceTree = ""; }; + 089A8E06128D8B3D00E7A534 /* SVGAnimatedPathSegListPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedPathSegListPropertyTearOff.h; sourceTree = ""; }; + 08A484750E5272C500C3FE76 /* ScriptElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptElement.cpp; sourceTree = ""; }; + 08A484760E5272C500C3FE76 /* ScriptElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptElement.h; sourceTree = ""; }; + 08A48A6D0E86CF6D00E225DD /* JSSVGElementInstanceCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGElementInstanceCustom.cpp; sourceTree = ""; }; + 08B35B12127B6A7C005314DD /* SVGAnimatedNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedNumber.h; sourceTree = ""; }; + 08B35B16127B6A88005314DD /* SVGAnimatedNumberList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedNumberList.h; sourceTree = ""; }; + 08C7136D128956A3001B107E /* SVGTransformListPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTransformListPropertyTearOff.h; sourceTree = ""; }; + 08C859BF1274575300A5728D /* SVGAnimatedRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedRect.h; sourceTree = ""; }; + 08C925170FCC7C4A00480DEC /* FilterEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FilterEffect.cpp; path = filters/FilterEffect.cpp; sourceTree = ""; }; + 08C925180FCC7C4A00480DEC /* FilterEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FilterEffect.h; path = filters/FilterEffect.h; sourceTree = ""; }; + 08CA3D4312894A3800FFF260 /* SVGStaticPropertyWithParentTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGStaticPropertyWithParentTearOff.h; sourceTree = ""; }; + 08D29440138669E40097C89B /* SVGTextRunRenderingContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextRunRenderingContext.cpp; sourceTree = ""; }; + 08D46CE2127AD5FC0089694B /* SVGAnimatedEnumeration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedEnumeration.h; sourceTree = ""; }; + 08E4FE450E2BD41400F4CAE0 /* JSSVGLengthCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGLengthCustom.cpp; sourceTree = ""; }; + 08EDE19E12A50B8E00B95797 /* SVGRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGRect.h; sourceTree = ""; }; + 08F0BFBD1255C53C00075185 /* SVGTextChunk.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextChunk.cpp; sourceTree = ""; }; + 08F0BFBE1255C53C00075185 /* SVGTextChunk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTextChunk.h; sourceTree = ""; }; + 08F0BFBF1255C53C00075185 /* SVGTextFragment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTextFragment.h; sourceTree = ""; }; + 08F0BFC01255C53C00075185 /* SVGTextMetrics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextMetrics.cpp; sourceTree = ""; }; + 08F0BFC11255C53C00075185 /* SVGTextMetrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTextMetrics.h; sourceTree = ""; }; + 08F2F0071213E61700DCEC48 /* RenderImageResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderImageResource.cpp; sourceTree = ""; }; + 08F2F0081213E61700DCEC48 /* RenderImageResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderImageResource.h; sourceTree = ""; }; + 08F859D21463F9CD0067D933 /* SVGImageCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGImageCache.cpp; sourceTree = ""; }; + 08F859D21463F9CD0067D934 /* SVGImageForContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGImageForContainer.cpp; sourceTree = ""; }; + 08F859D31463F9CD0067D933 /* SVGImageCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGImageCache.h; sourceTree = ""; }; + 08F859D31463F9CD0067D934 /* SVGImageForContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGImageForContainer.h; sourceTree = ""; }; + 08FB17C013BC7E9100040086 /* SVGAttributeToPropertyMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAttributeToPropertyMap.cpp; sourceTree = ""; }; + 08FB3F8313BC754C0099FC18 /* SVGAttributeToPropertyMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAttributeToPropertyMap.h; sourceTree = ""; }; + 08FE0BC4127E2AC1000C4FB5 /* SVGAnimatedPreserveAspectRatio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedPreserveAspectRatio.h; sourceTree = ""; }; + 08FF101F12950F5900F00276 /* SVGPathSegListPropertyTearOff.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegListPropertyTearOff.cpp; sourceTree = ""; }; + 0A4844980CA44CB200B7BD48 /* SoftLinking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SoftLinking.h; sourceTree = ""; }; + 0AFDAC3C10F5448C00E1F3D2 /* PluginViewBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginViewBase.h; sourceTree = ""; }; + 0B8C56D30F28627F000502E1 /* HTTPHeaderMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTTPHeaderMap.cpp; sourceTree = ""; }; + 0B9056150F2578BE0095FF6A /* DocumentThreadableLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentThreadableLoader.cpp; sourceTree = ""; }; + 0B9056160F2578BE0095FF6A /* DocumentThreadableLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentThreadableLoader.h; sourceTree = ""; }; + 0B9056170F2578BE0095FF6A /* ThreadableLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadableLoader.h; sourceTree = ""; }; + 0B9056180F2578BE0095FF6A /* ThreadableLoaderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadableLoaderClient.h; sourceTree = ""; }; + 0B90561D0F257E930095FF6A /* ThreadableLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadableLoader.cpp; sourceTree = ""; }; + 0B9056F60F2685F30095FF6A /* WorkerThreadableLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerThreadableLoader.cpp; sourceTree = ""; }; + 0B9056F70F2685F30095FF6A /* WorkerThreadableLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerThreadableLoader.h; sourceTree = ""; }; + 0BE030A10F3112FB003C1A46 /* RenderLineBoxList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderLineBoxList.h; sourceTree = ""; }; + 0C3F1F5710C8871200D72CE1 /* WebGLUniformLocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLUniformLocation.cpp; path = canvas/WebGLUniformLocation.cpp; sourceTree = ""; }; + 0C3F1F5810C8871200D72CE1 /* WebGLUniformLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLUniformLocation.h; path = canvas/WebGLUniformLocation.h; sourceTree = ""; }; + 0C3F1F5910C8871200D72CE1 /* WebGLUniformLocation.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLUniformLocation.idl; path = canvas/WebGLUniformLocation.idl; sourceTree = ""; }; + 0C45342510CDBBFA00869157 /* JSWebGLUniformLocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLUniformLocation.cpp; sourceTree = ""; }; + 0C45342610CDBBFA00869157 /* JSWebGLUniformLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLUniformLocation.h; sourceTree = ""; }; + 0F11A54E0F39233100C37884 /* RenderSelectionInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSelectionInfo.h; sourceTree = ""; }; + 0F13163D16ED0CC80035CC04 /* PlatformCAFilters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformCAFilters.h; path = ca/PlatformCAFilters.h; sourceTree = ""; }; + 0F13163F16ED0CDE0035CC04 /* PlatformCAFiltersMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PlatformCAFiltersMac.mm; path = ca/mac/PlatformCAFiltersMac.mm; sourceTree = ""; }; + 0F15DA890F3AAEE70000CE47 /* AnimationControllerPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationControllerPrivate.h; path = animation/AnimationControllerPrivate.h; sourceTree = ""; }; + 0F29C16D1300C2E2002D794E /* AccessibilityAllInOne.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityAllInOne.cpp; sourceTree = ""; }; + 0F3DD44D12F5EA1B000D9190 /* ShadowBlur.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShadowBlur.cpp; sourceTree = ""; }; + 0F3DD44E12F5EA1B000D9190 /* ShadowBlur.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShadowBlur.h; sourceTree = ""; }; + 0F3F0E57157030C3006DA57F /* RenderGeometryMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderGeometryMap.cpp; sourceTree = ""; }; + 0F3F0E58157030C3006DA57F /* RenderGeometryMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderGeometryMap.h; sourceTree = ""; }; + 0F4E57161313276200CF85AF /* RenderSVGAllInOne.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGAllInOne.cpp; sourceTree = ""; }; + 0F56028D0E4B76580065B038 /* RenderMarquee.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMarquee.h; sourceTree = ""; }; + 0F56028E0E4B76580065B038 /* RenderMarquee.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMarquee.cpp; sourceTree = ""; }; + 0F580B090F12A2690051D689 /* GraphicsLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsLayer.cpp; sourceTree = ""; }; + 0F580B0A0F12A2690051D689 /* GraphicsLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsLayer.h; sourceTree = ""; }; + 0F580B0B0F12A2690051D689 /* GraphicsLayerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsLayerClient.h; sourceTree = ""; }; + 0F580CF90F12DE9B0051D689 /* RenderLayerCompositor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderLayerCompositor.h; sourceTree = ""; }; + 0F580CFA0F12DE9B0051D689 /* RenderLayerCompositor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderLayerCompositor.cpp; sourceTree = ""; }; + 0F580CFB0F12DE9B0051D689 /* RenderLayerBacking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderLayerBacking.h; sourceTree = ""; }; + 0F580CFC0F12DE9B0051D689 /* RenderLayerBacking.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderLayerBacking.cpp; sourceTree = ""; }; + 0F580FA11496939100FB5BD8 /* WebTiledBackingLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebTiledBackingLayer.h; path = ca/mac/WebTiledBackingLayer.h; sourceTree = ""; }; + 0F580FA21496939100FB5BD8 /* WebTiledBackingLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WebTiledBackingLayer.mm; path = ca/mac/WebTiledBackingLayer.mm; sourceTree = ""; }; + 0F580FAE149800D400FB5BD8 /* AnimationUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationUtilities.h; path = animation/AnimationUtilities.h; sourceTree = ""; }; + 0F5B7A5210F65D7A00376302 /* RenderEmbeddedObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderEmbeddedObject.cpp; sourceTree = ""; }; + 0F5B7A5310F65D7A00376302 /* RenderEmbeddedObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderEmbeddedObject.h; sourceTree = ""; }; + 0F605AEA15F94848004DF0C0 /* ScrollingConstraints.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingConstraints.cpp; sourceTree = ""; }; + 0F605AEB15F94848004DF0C0 /* ScrollingConstraints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingConstraints.h; sourceTree = ""; }; + 0FA24D77162DF91900A3F4C0 /* GraphicsLayerUpdater.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsLayerUpdater.cpp; sourceTree = ""; }; + 0FA24D78162DF91900A3F4C0 /* GraphicsLayerUpdater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsLayerUpdater.h; sourceTree = ""; }; + 0FA88EBC16A8D1BD00F99984 /* ScrollingStateScrollingNodeMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingStateScrollingNodeMac.mm; sourceTree = ""; }; + 0FB88908167D2FA10010CDA5 /* ScrollingTreeStickyNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingTreeStickyNode.h; sourceTree = ""; }; + 0FB88909167D2FA10010CDA5 /* ScrollingTreeStickyNode.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingTreeStickyNode.mm; sourceTree = ""; }; + 0FB8890C167D30160010CDA5 /* ScrollingStateStickyNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingStateStickyNode.cpp; sourceTree = ""; }; + 0FB8890D167D30160010CDA5 /* ScrollingStateStickyNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingStateStickyNode.h; sourceTree = ""; }; + 0FCF33230F2B9715004B6795 /* ColorCG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ColorCG.cpp; sourceTree = ""; }; + 0FCF33280F2B9A25004B6795 /* WebTiledLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebTiledLayer.mm; sourceTree = ""; }; + 0FCF33290F2B9A25004B6795 /* WebTiledLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebTiledLayer.h; sourceTree = ""; }; + 0FCF332A0F2B9A25004B6795 /* WebLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebLayer.mm; sourceTree = ""; }; + 0FCF332B0F2B9A25004B6795 /* WebLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebLayer.h; sourceTree = ""; }; + 0FD3080C117CF7E700A791F7 /* RenderFrameBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderFrameBase.cpp; sourceTree = ""; }; + 0FD3080D117CF7E700A791F7 /* RenderFrameBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderFrameBase.h; sourceTree = ""; }; + 0FD308D3117D168400A791F7 /* RenderIFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderIFrame.cpp; sourceTree = ""; }; + 0FD308D4117D168400A791F7 /* RenderIFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderIFrame.h; sourceTree = ""; }; + 0FD723800EC8BD9300CA5DD7 /* FloatQuad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FloatQuad.h; sourceTree = ""; }; + 0FD723810EC8BD9300CA5DD7 /* FloatQuad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FloatQuad.cpp; sourceTree = ""; }; + 0FE71403142170B800DB33BA /* ScrollbarThemeMock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScrollbarThemeMock.cpp; path = mock/ScrollbarThemeMock.cpp; sourceTree = ""; }; + 0FE71404142170B800DB33BA /* ScrollbarThemeMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScrollbarThemeMock.h; path = mock/ScrollbarThemeMock.h; sourceTree = ""; }; + 0FE71415142189FC00DB33BA /* ScrollbarTheme.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollbarTheme.cpp; sourceTree = ""; }; + 0FF50259102BA9010066F39A /* DOMStyleMedia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMStyleMedia.h; sourceTree = ""; }; + 0FF5025A102BA9010066F39A /* DOMStyleMedia.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMStyleMedia.mm; sourceTree = ""; }; + 0FF50262102BA92B0066F39A /* DOMStyleMediaInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMStyleMediaInternal.h; sourceTree = ""; }; + 0FF50267102BA9430066F39A /* JSStyleMedia.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSStyleMedia.cpp; sourceTree = ""; }; + 0FF50268102BA9430066F39A /* JSStyleMedia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStyleMedia.h; sourceTree = ""; }; + 0FF5026E102BA9660066F39A /* StyleMedia.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleMedia.cpp; sourceTree = ""; }; + 0FF5026F102BA96A0066F39A /* StyleMedia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleMedia.h; sourceTree = ""; }; + 0FF50270102BA96A0066F39A /* StyleMedia.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = StyleMedia.idl; sourceTree = ""; }; + 1059457115B428C3004D37FD /* MicroDataItemValue.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MicroDataItemValue.idl; sourceTree = ""; }; + 1059457215B42953004D37FD /* JSMicroDataItemValueCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMicroDataItemValueCustom.cpp; sourceTree = ""; }; + 1059457915B42A43004D37FD /* JSMicroDataItemValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMicroDataItemValue.h; sourceTree = ""; }; + 1059459815B42AA0004D37FD /* PropertyNodeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PropertyNodeList.h; sourceTree = ""; }; + 1059459A15B42AC0004D37FD /* PropertyNodeList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PropertyNodeList.idl; sourceTree = ""; }; + 1059459E15B42B1A004D37FD /* JSPropertyNodeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPropertyNodeList.h; sourceTree = ""; }; + 10FB084A14E15C7E00A3DB98 /* PublicURLManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PublicURLManager.h; sourceTree = ""; }; + 1400D7A717136EA70077CE05 /* ScriptWrappableInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptWrappableInlines.h; sourceTree = ""; }; + 1402645D0AFDC19B005919E2 /* LoggingMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = LoggingMac.mm; sourceTree = ""; }; + 1403B90C09EB124500797C7F /* DOMWindow.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMWindow.idl; sourceTree = ""; }; + 1403B99509EB13AF00797C7F /* DOMWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWindow.h; sourceTree = ""; }; + 1403B99609EB13AF00797C7F /* DOMWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMWindow.cpp; sourceTree = ""; }; + 1403BA0B09EB18C700797C7F /* JSDOMWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMWindow.cpp; sourceTree = ""; }; + 1403BA0E09EB18F800797C7F /* JSDOMWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDOMWindow.h; sourceTree = ""; }; + 14115AF909F847D600CA4FC1 /* NodeFilter.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NodeFilter.idl; sourceTree = ""; }; + 14115B5109F84B7100CA4FC1 /* Node.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Node.h; sourceTree = ""; }; + 14115B7009F84CD600CA4FC1 /* JSNodeFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNodeFilter.cpp; sourceTree = ""; }; + 14115B7109F84CD600CA4FC1 /* JSNodeFilter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSNodeFilter.h; sourceTree = ""; }; + 1411DCB0164C39A800D49BC1 /* WidthCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WidthCache.h; sourceTree = ""; }; + 1419D2C40CEA6F6100FF507A /* TreeShared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreeShared.h; sourceTree = ""; }; + 141B94E509EC4223000E9413 /* MouseEvent.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = MouseEvent.idl; sourceTree = ""; }; + 141B94EE09EC425A000E9413 /* UIEvent.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = UIEvent.idl; sourceTree = ""; }; + 141DC0471648348F00371E5A /* LayoutUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayoutUnit.h; sourceTree = ""; }; + 141DC049164834B900371E5A /* LayoutBoxExtent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LayoutBoxExtent.cpp; sourceTree = ""; }; + 141DC04A164834B900371E5A /* LayoutBoxExtent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayoutBoxExtent.h; sourceTree = ""; }; + 141DC04B164834B900371E5A /* LayoutPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayoutPoint.h; sourceTree = ""; }; + 141DC04C164834B900371E5A /* LayoutRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LayoutRect.cpp; sourceTree = ""; }; + 141DC04D164834B900371E5A /* LayoutRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayoutRect.h; sourceTree = ""; }; + 141DC04E164834B900371E5A /* LayoutSize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayoutSize.h; sourceTree = ""; }; + 142011AE0A003117008303F9 /* CSSStyleDeclaration.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSStyleDeclaration.idl; sourceTree = ""; }; + 142011B40A003133008303F9 /* JSCSSStyleDeclaration.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSStyleDeclaration.cpp; sourceTree = ""; }; + 142011B50A003133008303F9 /* JSCSSStyleDeclaration.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCSSStyleDeclaration.h; sourceTree = ""; }; + 142B97C713138943008BEF4B /* TextControlInnerElements.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextControlInnerElements.cpp; sourceTree = ""; }; + 142B97C813138943008BEF4B /* TextControlInnerElements.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextControlInnerElements.h; sourceTree = ""; }; + 1432E8460C51493800B1500F /* GCController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = GCController.h; sourceTree = ""; }; + 1432E8480C51493F00B1500F /* GCController.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = GCController.cpp; sourceTree = ""; }; + 14476AA715DC4BB100305DB2 /* WritingMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WritingMode.h; sourceTree = ""; }; + 1449E24A107D4A8400B5793F /* JSCallbackData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCallbackData.h; sourceTree = ""; }; + 1449E286107D4DB400B5793F /* JSCallbackData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCallbackData.cpp; sourceTree = ""; }; + 146CC113156988BD00109E37 /* LengthBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LengthBox.cpp; sourceTree = ""; }; + 1477E7740BF4134A00152872 /* PageCache.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PageCache.cpp; sourceTree = ""; }; + 1477E7750BF4134A00152872 /* PageCache.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PageCache.h; sourceTree = ""; }; + 1479FAE5109AE37500DED655 /* RenderRuby.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderRuby.cpp; sourceTree = ""; }; + 1479FAE6109AE37500DED655 /* RenderRuby.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderRuby.h; sourceTree = ""; }; + 1479FAE7109AE37500DED655 /* RenderRubyBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderRubyBase.cpp; sourceTree = ""; }; + 1479FAE8109AE37500DED655 /* RenderRubyBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderRubyBase.h; sourceTree = ""; }; + 1479FAE9109AE37500DED655 /* RenderRubyRun.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderRubyRun.cpp; sourceTree = ""; }; + 1479FAEA109AE37500DED655 /* RenderRubyRun.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderRubyRun.h; sourceTree = ""; }; + 1479FAEB109AE37500DED655 /* RenderRubyText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderRubyText.cpp; sourceTree = ""; }; + 1479FAEC109AE37500DED655 /* RenderRubyText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderRubyText.h; sourceTree = ""; }; + 14813BF309EDF88E00F757E1 /* IDLParser.pm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.perl; name = IDLParser.pm; path = scripts/IDLParser.pm; sourceTree = ""; }; + 148AFDA30AF58360008CC700 /* ExceptionHandlers.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ExceptionHandlers.h; sourceTree = ""; }; + 148AFDA40AF58360008CC700 /* ExceptionHandlers.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = ExceptionHandlers.mm; sourceTree = ""; }; + 14947FFB12F80CD200A0F631 /* DocumentOrderedMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentOrderedMap.cpp; sourceTree = ""; }; + 14947FFC12F80CD200A0F631 /* DocumentOrderedMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentOrderedMap.h; sourceTree = ""; }; + 14993BE30B2F2B1C0050497F /* FocusController.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FocusController.cpp; sourceTree = ""; }; + 14993BE40B2F2B1C0050497F /* FocusController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FocusController.h; sourceTree = ""; }; + 14A98E05136386A200C9FED2 /* Blob.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Blob.idl; path = fileapi/Blob.idl; sourceTree = SOURCE_ROOT; }; + 14BDF5971365392C00148393 /* DOMFileSystem.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DOMFileSystem.idl; path = Modules/filesystem/DOMFileSystem.idl; sourceTree = SOURCE_ROOT; }; + 14BDF59A1365399100148393 /* FileReader.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = FileReader.idl; path = fileapi/FileReader.idl; sourceTree = SOURCE_ROOT; }; + 14BDF59C136539BE00148393 /* FileWriter.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = FileWriter.idl; path = Modules/filesystem/FileWriter.idl; sourceTree = SOURCE_ROOT; }; + 14C9A5E90B3D105F005A0232 /* Settings.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Settings.cpp; sourceTree = ""; }; + 14CD8D81106B529000A46D23 /* JSSharedWorkerCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSharedWorkerCustom.cpp; sourceTree = ""; }; + 14CF787109F587CA00EB3665 /* CSSValue.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSValue.idl; sourceTree = ""; }; + 14CF78A309F58CBF00EB3665 /* JSCSSValue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSValue.cpp; sourceTree = ""; }; + 14CF78A509F58CD800EB3665 /* JSCSSValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCSSValue.h; sourceTree = ""; }; + 14CF7A7009F5CF9A00EB3665 /* CSSRule.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSRule.idl; sourceTree = ""; }; + 14CF7B3109F6ECD700EB3665 /* JSCSSRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSRule.cpp; sourceTree = ""; }; + 14CF7B3209F6ECD700EB3665 /* JSCSSRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCSSRule.h; sourceTree = ""; }; + 14CF7C2009F7110600EB3665 /* KeyboardEvent.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = KeyboardEvent.idl; sourceTree = ""; }; + 14D64B5A134A5B6B00E58FDA /* TreeScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TreeScope.cpp; sourceTree = ""; }; + 14D64B5B134A5B6B00E58FDA /* TreeScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreeScope.h; sourceTree = ""; }; + 14D823500AF92A790004F057 /* Chrome.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Chrome.h; sourceTree = ""; }; + 14D8238A0AF92DF60004F057 /* Chrome.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Chrome.cpp; sourceTree = ""; }; + 14D824060AF93AEB0004F057 /* ChromeClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChromeClient.h; sourceTree = ""; }; + 14DC0D0B09FECFA4007B0235 /* Node.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Node.idl; sourceTree = ""; }; + 14DC0D3509FED073007B0235 /* JSNode.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNode.cpp; sourceTree = ""; }; + 14DC0D3609FED073007B0235 /* JSNode.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSNode.h; sourceTree = ""; }; + 14E0BC55136148A8002AD12E /* JSDOMTokenListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMTokenListCustom.cpp; sourceTree = ""; }; + 14E836D209F8512000B85AE4 /* Event.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Event.idl; sourceTree = ""; }; + 14E8378309F85D1C00B85AE4 /* JSEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSEvent.cpp; sourceTree = ""; }; + 14E8378D09F85D4F00B85AE4 /* JSEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSEvent.h; sourceTree = ""; }; + 14FFE31B0AE1963300136BF5 /* HTMLFrameElementBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLFrameElementBase.h; sourceTree = ""; }; + 14FFE31C0AE1963300136BF5 /* HTMLFrameElementBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLFrameElementBase.cpp; sourceTree = ""; }; + 150B923715F08DC400E10986 /* WebKitCSSArrayFunctionValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitCSSArrayFunctionValue.cpp; sourceTree = ""; }; + 150B923815F08DC400E10986 /* WebKitCSSArrayFunctionValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitCSSArrayFunctionValue.h; sourceTree = ""; }; + 15B3FC1715FB217800A81BCB /* CustomFilterArrayParameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterArrayParameter.h; path = filters/CustomFilterArrayParameter.h; sourceTree = ""; }; + 15B8B7C61652C5220036EF55 /* JSWebKitCSSMixFunctionValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitCSSMixFunctionValue.cpp; sourceTree = ""; }; + 15B8B7C71652C5220036EF55 /* JSWebKitCSSMixFunctionValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebKitCSSMixFunctionValue.h; sourceTree = ""; }; + 15C77089100D3C6A005BA267 /* ValidityState.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ValidityState.idl; sourceTree = ""; }; + 15C7708A100D3C6A005BA267 /* ValidityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValidityState.h; sourceTree = ""; }; + 15C7708B100D3C6A005BA267 /* ValidityState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ValidityState.cpp; sourceTree = ""; }; + 15C77091100D3CA8005BA267 /* JSValidityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSValidityState.h; sourceTree = ""; }; + 15C77092100D3CA8005BA267 /* JSValidityState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSValidityState.cpp; sourceTree = ""; }; + 15C770A3100D41CD005BA267 /* DOMValidityState.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMValidityState.mm; sourceTree = ""; }; + 15C770A4100D41CD005BA267 /* DOMValidityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMValidityState.h; sourceTree = ""; }; + 15D17D1E147231EB005EBCA6 /* InspectorFileSystemAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorFileSystemAgent.cpp; sourceTree = ""; }; + 15D17D1F147231EB005EBCA6 /* InspectorFileSystemAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorFileSystemAgent.h; sourceTree = ""; }; + 163E88F5118A39D200ED9231 /* SimpleFontDataCoreText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SimpleFontDataCoreText.cpp; sourceTree = ""; }; + 185BCF260F3279CE000EA262 /* ThreadTimers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadTimers.cpp; sourceTree = ""; }; + 185BCF270F3279CE000EA262 /* ThreadTimers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadTimers.h; sourceTree = ""; }; + 188604B10F2E654A000B6443 /* DOMTimer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMTimer.cpp; sourceTree = ""; }; + 188604B20F2E654A000B6443 /* DOMTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMTimer.h; sourceTree = ""; }; + 18F831B70FD48C7800D8C56B /* WorkerLoaderProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerLoaderProxy.h; path = workers/WorkerLoaderProxy.h; sourceTree = ""; }; + 1921327111C0E6BB00456238 /* SVGFEConvolveMatrixElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEConvolveMatrixElement.cpp; sourceTree = ""; }; + 1921327211C0E6BB00456238 /* SVGFEConvolveMatrixElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGFEConvolveMatrixElement.h; sourceTree = ""; }; + 1921327311C0E6BB00456238 /* SVGFEConvolveMatrixElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGFEConvolveMatrixElement.idl; sourceTree = ""; }; + 197B180A150634C000E4ADA8 /* SVGRenderingContext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SVGRenderingContext.cpp; sourceTree = ""; }; + 197B180B150634C000E4ADA8 /* SVGRenderingContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SVGRenderingContext.h; sourceTree = ""; }; + 19BFF64911C0F2AC00B8C04D /* JSSVGFEConvolveMatrixElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEConvolveMatrixElement.cpp; sourceTree = ""; }; + 19BFF64A11C0F2AC00B8C04D /* JSSVGFEConvolveMatrixElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGFEConvolveMatrixElement.h; sourceTree = ""; }; + 1A0D57340A5C77FE007EDD4C /* OverflowEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = OverflowEvent.cpp; sourceTree = ""; }; + 1A0D57350A5C77FE007EDD4C /* OverflowEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = OverflowEvent.h; sourceTree = ""; }; + 1A0D57380A5C7812007EDD4C /* OverflowEvent.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = OverflowEvent.idl; sourceTree = ""; }; + 1A0D573E0A5C7867007EDD4C /* JSOverflowEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSOverflowEvent.cpp; sourceTree = ""; }; + 1A0D573F0A5C7867007EDD4C /* JSOverflowEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSOverflowEvent.h; sourceTree = ""; }; + 1A1414B313A0F0500019996C /* WebKitFontFamilyNames.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitFontFamilyNames.cpp; sourceTree = ""; }; + 1A1414B413A0F0500019996C /* WebKitFontFamilyNames.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebKitFontFamilyNames.h; sourceTree = ""; }; + 1A1D137E0A5325520064BF5F /* DOMXPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMXPath.h; sourceTree = ""; }; + 1A1D137F0A5325520064BF5F /* DOMXPath.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMXPath.mm; sourceTree = ""; }; + 1A219B3A0DCA87AB0040E3A0 /* npfunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npfunctions.h; sourceTree = ""; }; + 1A2246430CC98DDB00C05240 /* SQLiteDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLiteDatabase.cpp; path = sql/SQLiteDatabase.cpp; sourceTree = ""; }; + 1A2246440CC98DDB00C05240 /* SQLiteDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLiteDatabase.h; path = sql/SQLiteDatabase.h; sourceTree = ""; }; + 1A2246450CC98DDB00C05240 /* SQLiteStatement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLiteStatement.cpp; path = sql/SQLiteStatement.cpp; sourceTree = ""; }; + 1A2246460CC98DDB00C05240 /* SQLiteStatement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLiteStatement.h; path = sql/SQLiteStatement.h; sourceTree = ""; }; + 1A2246470CC98DDB00C05240 /* SQLiteTransaction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLiteTransaction.cpp; path = sql/SQLiteTransaction.cpp; sourceTree = ""; }; + 1A2246480CC98DDB00C05240 /* SQLiteTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLiteTransaction.h; path = sql/SQLiteTransaction.h; sourceTree = ""; }; + 1A2A68210B5BEDE70002A480 /* ProgressTracker.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ProgressTracker.cpp; sourceTree = ""; }; + 1A2A68220B5BEDE70002A480 /* ProgressTracker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ProgressTracker.h; sourceTree = ""; }; + 1A2AAC560DC2A3B100A20D9A /* ApplicationCacheStorage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplicationCacheStorage.cpp; sourceTree = ""; }; + 1A2AAC570DC2A3B100A20D9A /* ApplicationCacheStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationCacheStorage.h; sourceTree = ""; }; + 1A2C40AA0DEB55AA005AF19E /* JSTextCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextCustom.cpp; sourceTree = ""; }; + 1A2E6E570CC55213004A2062 /* SQLValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLValue.cpp; path = sql/SQLValue.cpp; sourceTree = ""; }; + 1A2E6E580CC55213004A2062 /* SQLValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLValue.h; path = sql/SQLValue.h; sourceTree = ""; }; + 1A2E6E780CC556D5004A2062 /* SQLiteAuthorizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLiteAuthorizer.cpp; path = sql/SQLiteAuthorizer.cpp; sourceTree = ""; }; + 1A3586DD15264C450022A659 /* RenderMultiColumnFlowThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMultiColumnFlowThread.cpp; sourceTree = ""; }; + 1A3586DE15264C450022A659 /* RenderMultiColumnFlowThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMultiColumnFlowThread.h; sourceTree = ""; }; + 1A494BBB0A122DCD00FDAFC1 /* HTMLElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLElement.idl; sourceTree = ""; }; + 1A494BF80A122F4400FDAFC1 /* JSHTMLElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLElement.cpp; sourceTree = ""; }; + 1A494BF90A122F4400FDAFC1 /* JSHTMLElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLElement.h; sourceTree = ""; }; + 1A494E290A12354300FDAFC1 /* HTMLDocument.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLDocument.idl; sourceTree = ""; }; + 1A494E320A12358A00FDAFC1 /* JSHTMLDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLDocument.cpp; sourceTree = ""; }; + 1A494E330A12358B00FDAFC1 /* JSHTMLDocument.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLDocument.h; sourceTree = ""; }; + 1A494ED50A123F1A00FDAFC1 /* DocumentFragment.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DocumentFragment.idl; sourceTree = ""; }; + 1A494EDC0A123F4C00FDAFC1 /* JSDocumentFragment.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDocumentFragment.cpp; sourceTree = ""; }; + 1A494EDD0A123F4C00FDAFC1 /* JSDocumentFragment.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDocumentFragment.h; sourceTree = ""; }; + 1A4A2DBA0A1B83A800C807F8 /* HTMLAppletElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLAppletElement.idl; sourceTree = ""; }; + 1A4A2DD30A1B845100C807F8 /* HTMLAnchorElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLAnchorElement.idl; sourceTree = ""; }; + 1A4A2DEB0A1B852A00C807F8 /* JSHTMLAnchorElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLAnchorElement.cpp; sourceTree = ""; }; + 1A4A2DEC0A1B852A00C807F8 /* JSHTMLAnchorElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLAnchorElement.h; sourceTree = ""; }; + 1A4A2DED0A1B852A00C807F8 /* JSHTMLAppletElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLAppletElement.cpp; sourceTree = ""; }; + 1A4A2DEE0A1B852A00C807F8 /* JSHTMLAppletElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLAppletElement.h; sourceTree = ""; }; + 1A4A954B0B4EDCCB002D8C3C /* SharedBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SharedBuffer.cpp; sourceTree = ""; }; + 1A4A954C0B4EDCCB002D8C3C /* SharedBuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SharedBuffer.h; sourceTree = ""; }; + 1A4A95510B4EDCFF002D8C3C /* SharedBufferMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = SharedBufferMac.mm; sourceTree = ""; }; + 1A569CC60D7E2B82007C3983 /* c_class.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = c_class.cpp; sourceTree = ""; }; + 1A569CC70D7E2B82007C3983 /* c_class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = c_class.h; sourceTree = ""; }; + 1A569CC80D7E2B82007C3983 /* c_instance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = c_instance.cpp; sourceTree = ""; }; + 1A569CC90D7E2B82007C3983 /* c_instance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = c_instance.h; sourceTree = ""; }; + 1A569CCA0D7E2B82007C3983 /* c_runtime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = c_runtime.cpp; sourceTree = ""; }; + 1A569CCB0D7E2B82007C3983 /* c_runtime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = c_runtime.h; sourceTree = ""; }; + 1A569CCC0D7E2B82007C3983 /* c_utility.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = c_utility.cpp; sourceTree = ""; }; + 1A569CCD0D7E2B82007C3983 /* c_utility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = c_utility.h; sourceTree = ""; }; + 1A569CDA0D7E2B82007C3983 /* NP_jsobject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NP_jsobject.cpp; path = bridge/NP_jsobject.cpp; sourceTree = ""; }; + 1A569CDB0D7E2B82007C3983 /* NP_jsobject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NP_jsobject.h; path = bridge/NP_jsobject.h; sourceTree = ""; }; + 1A569CDD0D7E2B82007C3983 /* npruntime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = npruntime.cpp; path = bridge/npruntime.cpp; sourceTree = ""; }; + 1A569CDF0D7E2B82007C3983 /* npruntime_impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = npruntime_impl.h; path = bridge/npruntime_impl.h; sourceTree = ""; }; + 1A569CE00D7E2B82007C3983 /* npruntime_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = npruntime_internal.h; path = bridge/npruntime_internal.h; sourceTree = ""; }; + 1A569CE10D7E2B82007C3983 /* npruntime_priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = npruntime_priv.h; path = bridge/npruntime_priv.h; sourceTree = ""; }; + 1A569CE30D7E2B82007C3983 /* objc_class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = objc_class.h; sourceTree = ""; }; + 1A569CE40D7E2B82007C3983 /* objc_class.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = objc_class.mm; sourceTree = ""; }; + 1A569CE50D7E2B82007C3983 /* objc_header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = objc_header.h; sourceTree = ""; }; + 1A569CE60D7E2B82007C3983 /* objc_instance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = objc_instance.h; sourceTree = ""; }; + 1A569CE70D7E2B82007C3983 /* objc_instance.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = objc_instance.mm; sourceTree = ""; }; + 1A569CE80D7E2B82007C3983 /* objc_runtime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = objc_runtime.h; sourceTree = ""; }; + 1A569CE90D7E2B82007C3983 /* objc_runtime.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = objc_runtime.mm; sourceTree = ""; }; + 1A569CEA0D7E2B82007C3983 /* objc_utility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = objc_utility.h; sourceTree = ""; }; + 1A569CEB0D7E2B82007C3983 /* objc_utility.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = objc_utility.mm; sourceTree = ""; }; + 1A569CEC0D7E2B82007C3983 /* WebScriptObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebScriptObject.h; sourceTree = ""; }; + 1A569CEF0D7E2B82007C3983 /* runtime_array.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = runtime_array.cpp; path = bridge/runtime_array.cpp; sourceTree = ""; }; + 1A569CF00D7E2B82007C3983 /* runtime_array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = runtime_array.h; path = bridge/runtime_array.h; sourceTree = ""; }; + 1A569CF10D7E2B82007C3983 /* runtime_method.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = runtime_method.cpp; path = bridge/runtime_method.cpp; sourceTree = ""; }; + 1A569CF20D7E2B82007C3983 /* runtime_method.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = runtime_method.h; path = bridge/runtime_method.h; sourceTree = ""; }; + 1A569CF30D7E2B82007C3983 /* runtime_object.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = runtime_object.cpp; path = bridge/runtime_object.cpp; sourceTree = ""; }; + 1A569CF40D7E2B82007C3983 /* runtime_object.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = runtime_object.h; path = bridge/runtime_object.h; sourceTree = ""; }; + 1A569CF50D7E2B82007C3983 /* runtime_root.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = runtime_root.cpp; path = bridge/runtime_root.cpp; sourceTree = ""; }; + 1A569CF60D7E2B82007C3983 /* runtime_root.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = runtime_root.h; path = bridge/runtime_root.h; sourceTree = ""; }; + 1A71D5790F33819000F9CE4E /* IdentifierRep.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IdentifierRep.cpp; path = bridge/IdentifierRep.cpp; sourceTree = ""; }; + 1A71D57A0F33819000F9CE4E /* IdentifierRep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IdentifierRep.h; path = bridge/IdentifierRep.h; sourceTree = ""; }; + 1A750D3C0A90DE35000FF215 /* TreeWalker.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TreeWalker.idl; sourceTree = ""; }; + 1A750D5A0A90DEE1000FF215 /* JSTreeWalker.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSTreeWalker.cpp; sourceTree = ""; }; + 1A750D5B0A90DEE1000FF215 /* JSTreeWalker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSTreeWalker.h; sourceTree = ""; }; + 1A750D870A90E394000FF215 /* NodeIterator.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NodeIterator.idl; sourceTree = ""; }; + 1A750D8B0A90E521000FF215 /* JSNodeIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNodeIterator.cpp; sourceTree = ""; }; + 1A750D8C0A90E521000FF215 /* JSNodeIterator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSNodeIterator.h; sourceTree = ""; }; + 1A750DD30A90E729000FF215 /* JSNodeIteratorCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNodeIteratorCustom.cpp; sourceTree = ""; }; + 1A7629D30A07425100989F5B /* XPathGrammar.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XPathGrammar.cpp; sourceTree = ""; }; + 1A7629D40A07425100989F5B /* XPathGrammar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathGrammar.h; sourceTree = ""; }; + 1A762C6B0A074F2600989F5B /* JSXPathEvaluator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSXPathEvaluator.cpp; sourceTree = ""; }; + 1A762C6C0A074F2600989F5B /* JSXPathEvaluator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSXPathEvaluator.h; sourceTree = ""; }; + 1A762C6D0A074F2600989F5B /* JSXPathExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSXPathExpression.cpp; sourceTree = ""; }; + 1A762C6E0A074F2600989F5B /* JSXPathExpression.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSXPathExpression.h; sourceTree = ""; }; + 1A762C6F0A074F2600989F5B /* JSXPathNSResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSXPathNSResolver.cpp; sourceTree = ""; }; + 1A762C700A074F2600989F5B /* JSXPathNSResolver.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSXPathNSResolver.h; sourceTree = ""; }; + 1A762C710A074F2600989F5B /* JSXPathResult.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSXPathResult.cpp; sourceTree = ""; }; + 1A762C720A074F2600989F5B /* JSXPathResult.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSXPathResult.h; sourceTree = ""; }; + 1A7E3C281710997300367935 /* ThreadableLoaderClientWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadableLoaderClientWrapper.h; sourceTree = ""; }; + 1A7FA6180DDA3B3A0028F8A5 /* NetworkStateNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkStateNotifier.h; sourceTree = ""; }; + 1A7FA61A0DDA3BBE0028F8A5 /* NetworkStateNotifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkStateNotifier.cpp; sourceTree = ""; }; + 1A7FA6470DDA3CBA0028F8A5 /* NetworkStateNotifierMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkStateNotifierMac.cpp; sourceTree = ""; }; + 1A7FA7CB0DDA4B770028F8A5 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = /System/Library/Frameworks/SystemConfiguration.framework; sourceTree = ""; }; + 1A85B17D0A1B183600D8C87C /* HTMLHtmlElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLHtmlElement.idl; sourceTree = ""; }; + 1A85B18D0A1B18A200D8C87C /* JSHTMLHtmlElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLHtmlElement.cpp; sourceTree = ""; }; + 1A85B18E0A1B18A200D8C87C /* JSHTMLHtmlElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLHtmlElement.h; sourceTree = ""; }; + 1A85B1CB0A1B22DC00D8C87C /* HTMLOListElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLOListElement.idl; sourceTree = ""; }; + 1A85B1D10A1B235B00D8C87C /* HTMLDListElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLDListElement.idl; sourceTree = ""; }; + 1A85B1D50A1B236C00D8C87C /* HTMLUListElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLUListElement.idl; sourceTree = ""; }; + 1A85B1D90A1B23A400D8C87C /* HTMLDirectoryElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLDirectoryElement.idl; sourceTree = ""; }; + 1A85B1E00A1B240500D8C87C /* JSHTMLDirectoryElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLDirectoryElement.cpp; sourceTree = ""; }; + 1A85B1E10A1B240500D8C87C /* JSHTMLDirectoryElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLDirectoryElement.h; sourceTree = ""; }; + 1A85B1E20A1B240500D8C87C /* JSHTMLDListElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLDListElement.cpp; sourceTree = ""; }; + 1A85B1E30A1B240500D8C87C /* JSHTMLDListElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLDListElement.h; sourceTree = ""; }; + 1A85B1E40A1B240500D8C87C /* JSHTMLOListElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLOListElement.cpp; sourceTree = ""; }; + 1A85B1E50A1B240500D8C87C /* JSHTMLOListElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLOListElement.h; sourceTree = ""; }; + 1A85B20E0A1B258700D8C87C /* JSHTMLUListElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLUListElement.cpp; sourceTree = ""; }; + 1A85B20F0A1B258700D8C87C /* JSHTMLUListElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLUListElement.h; sourceTree = ""; }; + 1A85B2AD0A1B2A6D00D8C87C /* HTMLDivElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLDivElement.idl; sourceTree = ""; }; + 1A85B2B40A1B2AC700D8C87C /* JSHTMLDivElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLDivElement.cpp; sourceTree = ""; }; + 1A85B2B50A1B2AC700D8C87C /* JSHTMLDivElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLDivElement.h; sourceTree = ""; }; + 1A88A90217553CD7000C74F9 /* FileIconLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileIconLoader.cpp; sourceTree = ""; }; + 1A88A90317553CD7000C74F9 /* FileIconLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileIconLoader.h; sourceTree = ""; }; + 1A8F6B010DB53006001DB794 /* SubstituteResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubstituteResource.h; sourceTree = ""; }; + 1A8F6BB10DB55CDC001DB794 /* ApplicationCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplicationCache.cpp; sourceTree = ""; }; + 1A8F6BB20DB55CDC001DB794 /* ApplicationCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationCache.h; sourceTree = ""; }; + 1A8F6BB30DB55CDC001DB794 /* ApplicationCacheGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplicationCacheGroup.cpp; sourceTree = ""; }; + 1A8F6BB40DB55CDC001DB794 /* ApplicationCacheGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationCacheGroup.h; sourceTree = ""; }; + 1A8F6BB50DB55CDC001DB794 /* ApplicationCacheResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplicationCacheResource.cpp; sourceTree = ""; }; + 1A8F6BB60DB55CDC001DB794 /* ApplicationCacheResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationCacheResource.h; sourceTree = ""; }; + 1A8F6BB70DB55CDC001DB794 /* DOMApplicationCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMApplicationCache.cpp; sourceTree = ""; }; + 1A8F6BB80DB55CDC001DB794 /* DOMApplicationCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMApplicationCache.h; sourceTree = ""; }; + 1A8F6BB90DB55CDC001DB794 /* DOMApplicationCache.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMApplicationCache.idl; sourceTree = ""; }; + 1A8F6BBA0DB55CDC001DB794 /* ManifestParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ManifestParser.cpp; sourceTree = ""; }; + 1A8F6BBB0DB55CDC001DB794 /* ManifestParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ManifestParser.h; sourceTree = ""; }; + 1A927FCF1416A15B003A83C8 /* npapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npapi.h; sourceTree = ""; }; + 1A927FD01416A15B003A83C8 /* npruntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npruntime.h; sourceTree = ""; }; + 1A927FD11416A15B003A83C8 /* nptypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nptypes.h; sourceTree = ""; }; + 1A98956A0AA78F80005EF5EF /* KURLCFNet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = KURLCFNet.cpp; sourceTree = ""; }; + 1AA2124F163F0DA80000E63F /* AtomicStringCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AtomicStringCF.cpp; sourceTree = ""; }; + 1AA71608149BC4DA0016EC19 /* TileController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = TileController.mm; path = ca/mac/TileController.mm; sourceTree = ""; }; + 1AA71609149BC4DB0016EC19 /* TileController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TileController.h; path = ca/mac/TileController.h; sourceTree = ""; }; + 1AA7161C149BF2FA0016EC19 /* WebTileLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WebTileLayer.mm; path = ca/mac/WebTileLayer.mm; sourceTree = ""; }; + 1AA71625149BFFB20016EC19 /* WebTileLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebTileLayer.h; path = ca/mac/WebTileLayer.h; sourceTree = ""; }; + 1AA84F02143BA7BD0051D153 /* ScrollElasticityController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollElasticityController.mm; sourceTree = ""; }; + 1AA84F03143BA7BD0051D153 /* ScrollElasticityController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollElasticityController.h; sourceTree = ""; }; + 1AA8798F11CBE846003C664F /* PluginStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginStrategy.h; sourceTree = ""; }; + 1AAADDA114DB409F00AF64B3 /* ScrollingTree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingTree.cpp; sourceTree = ""; }; + 1AAADDA214DB409F00AF64B3 /* ScrollingTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingTree.h; sourceTree = ""; }; + 1AAADDE114DC8C8F00AF64B3 /* ScrollingTreeNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingTreeNode.cpp; sourceTree = ""; }; + 1AAADDE214DC8C8F00AF64B3 /* ScrollingTreeNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingTreeNode.h; sourceTree = ""; }; + 1AB09DB216AF5F6C008538E7 /* StorageStrategy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageStrategy.cpp; sourceTree = ""; }; + 1AB09DB316AF5F6C008538E7 /* StorageStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageStrategy.h; sourceTree = ""; }; + 1AB1AE780C051FDE00139F4F /* zoomInCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = zoomInCursor.png; sourceTree = ""; }; + 1AB1AE790C051FDE00139F4F /* zoomOutCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = zoomOutCursor.png; sourceTree = ""; }; + 1AB33DA412551E320024457A /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; + 1AB7FC470A8B92EC00D9D37B /* XPathEvaluator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XPathEvaluator.cpp; sourceTree = ""; }; + 1AB7FC480A8B92EC00D9D37B /* XPathEvaluator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathEvaluator.h; sourceTree = ""; }; + 1AB7FC490A8B92EC00D9D37B /* XPathEvaluator.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = XPathEvaluator.idl; sourceTree = ""; }; + 1AB7FC4A0A8B92EC00D9D37B /* XPathExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XPathExpression.cpp; sourceTree = ""; }; + 1AB7FC4B0A8B92EC00D9D37B /* XPathExpression.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathExpression.h; sourceTree = ""; }; + 1AB7FC4C0A8B92EC00D9D37B /* XPathExpression.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = XPathExpression.idl; sourceTree = ""; }; + 1AB7FC4D0A8B92EC00D9D37B /* XPathExpressionNode.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XPathExpressionNode.cpp; sourceTree = ""; }; + 1AB7FC4E0A8B92EC00D9D37B /* XPathExpressionNode.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathExpressionNode.h; sourceTree = ""; }; + 1AB7FC4F0A8B92EC00D9D37B /* XPathFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XPathFunctions.cpp; sourceTree = ""; }; + 1AB7FC500A8B92EC00D9D37B /* XPathFunctions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathFunctions.h; sourceTree = ""; }; + 1AB7FC510A8B92EC00D9D37B /* XPathGrammar.y */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.yacc; path = XPathGrammar.y; sourceTree = ""; }; + 1AB7FC540A8B92EC00D9D37B /* XPathNSResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XPathNSResolver.cpp; sourceTree = ""; }; + 1AB7FC550A8B92EC00D9D37B /* XPathNSResolver.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathNSResolver.h; sourceTree = ""; }; + 1AB7FC560A8B92EC00D9D37B /* XPathNSResolver.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = XPathNSResolver.idl; sourceTree = ""; }; + 1AB7FC570A8B92EC00D9D37B /* XPathParser.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XPathParser.cpp; sourceTree = ""; }; + 1AB7FC580A8B92EC00D9D37B /* XPathParser.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathParser.h; sourceTree = ""; }; + 1AB7FC590A8B92EC00D9D37B /* XPathPath.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XPathPath.cpp; sourceTree = ""; }; + 1AB7FC5A0A8B92EC00D9D37B /* XPathPath.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathPath.h; sourceTree = ""; }; + 1AB7FC5B0A8B92EC00D9D37B /* XPathPredicate.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XPathPredicate.cpp; sourceTree = ""; }; + 1AB7FC5C0A8B92EC00D9D37B /* XPathPredicate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathPredicate.h; sourceTree = ""; }; + 1AB7FC5D0A8B92EC00D9D37B /* XPathResult.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XPathResult.cpp; sourceTree = ""; }; + 1AB7FC5E0A8B92EC00D9D37B /* XPathResult.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathResult.h; sourceTree = ""; }; + 1AB7FC5F0A8B92EC00D9D37B /* XPathResult.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = XPathResult.idl; sourceTree = ""; }; + 1AB7FC600A8B92EC00D9D37B /* XPathStep.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XPathStep.cpp; sourceTree = ""; }; + 1AB7FC610A8B92EC00D9D37B /* XPathStep.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathStep.h; sourceTree = ""; }; + 1AB7FC620A8B92EC00D9D37B /* XPathUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XPathUtil.cpp; sourceTree = ""; }; + 1AB7FC630A8B92EC00D9D37B /* XPathUtil.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathUtil.h; sourceTree = ""; }; + 1AB7FC640A8B92EC00D9D37B /* XPathValue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XPathValue.cpp; sourceTree = ""; }; + 1AB7FC650A8B92EC00D9D37B /* XPathValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathValue.h; sourceTree = ""; }; + 1AB7FC660A8B92EC00D9D37B /* XPathVariableReference.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XPathVariableReference.cpp; sourceTree = ""; }; + 1AB7FC670A8B92EC00D9D37B /* XPathVariableReference.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathVariableReference.h; sourceTree = ""; }; + 1ABC7108170E5E1B00F9A9D6 /* WorkerNavigatorStorageQuota.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerNavigatorStorageQuota.h; path = Modules/quota/WorkerNavigatorStorageQuota.h; sourceTree = ""; }; + 1AC2260A0DB69F190089B669 /* JSDOMApplicationCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMApplicationCache.cpp; sourceTree = ""; }; + 1AC2260B0DB69F190089B669 /* JSDOMApplicationCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMApplicationCache.h; sourceTree = ""; }; + 1AC69592161A1E53003732CB /* GraphicsLayerFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsLayerFactory.h; sourceTree = ""; }; + 1ACE53DD0A8D18810022947D /* JSDOMParser.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMParser.cpp; sourceTree = ""; }; + 1ACE53DE0A8D18810022947D /* JSDOMParser.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDOMParser.h; sourceTree = ""; }; + 1ACE53E10A8D18E70022947D /* DOMParser.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DOMParser.cpp; sourceTree = ""; }; + 1ACE53E20A8D18E70022947D /* DOMParser.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMParser.h; sourceTree = ""; }; + 1ACE53E30A8D18E70022947D /* DOMParser.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = DOMParser.idl; sourceTree = ""; }; + 1ACE53E40A8D18E70022947D /* XMLSerializer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XMLSerializer.cpp; sourceTree = ""; }; + 1ACE53E50A8D18E70022947D /* XMLSerializer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XMLSerializer.h; sourceTree = ""; }; + 1ACE53E60A8D18E70022947D /* XMLSerializer.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = XMLSerializer.idl; sourceTree = ""; }; + 1ACE53F40A8D19470022947D /* JSXMLSerializer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSXMLSerializer.cpp; sourceTree = ""; }; + 1ACE53F50A8D19470022947D /* JSXMLSerializer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSXMLSerializer.h; sourceTree = ""; }; + 1AD2316D0CD269E700C1F194 /* JSSQLTransactionCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLTransactionCustom.cpp; sourceTree = ""; }; + 1AD8F81911CAB9E900E93E54 /* PlatformStrategies.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformStrategies.h; sourceTree = ""; }; + 1AD8F81A11CAB9E900E93E54 /* PlatformStrategies.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformStrategies.cpp; sourceTree = ""; }; + 1ADA140E0E1AE5D900023EE5 /* PluginMainThreadScheduler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginMainThreadScheduler.cpp; sourceTree = ""; }; + 1ADA140F0E1AE5D900023EE5 /* PluginMainThreadScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginMainThreadScheduler.h; sourceTree = ""; }; + 1AE2A9F00A1CDA5700B42B25 /* HTMLAreaElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLAreaElement.idl; sourceTree = ""; }; + 1AE2A9F10A1CDA5700B42B25 /* HTMLBaseFontElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLBaseFontElement.idl; sourceTree = ""; }; + 1AE2A9F20A1CDA5700B42B25 /* HTMLBodyElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLBodyElement.idl; sourceTree = ""; }; + 1AE2A9F30A1CDA5700B42B25 /* HTMLBRElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLBRElement.idl; sourceTree = ""; }; + 1AE2A9F40A1CDA5700B42B25 /* HTMLFieldSetElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLFieldSetElement.idl; sourceTree = ""; }; + 1AE2A9F50A1CDA5700B42B25 /* HTMLFontElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLFontElement.idl; sourceTree = ""; }; + 1AE2A9F80A1CDA5700B42B25 /* HTMLHeadingElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLHeadingElement.idl; sourceTree = ""; }; + 1AE2A9F90A1CDA5700B42B25 /* HTMLHRElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLHRElement.idl; sourceTree = ""; }; + 1AE2AA0A0A1CDAB300B42B25 /* JSHTMLAreaElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLAreaElement.cpp; sourceTree = ""; }; + 1AE2AA0B0A1CDAB300B42B25 /* JSHTMLAreaElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLAreaElement.h; sourceTree = ""; }; + 1AE2AA0C0A1CDAB300B42B25 /* JSHTMLBaseFontElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLBaseFontElement.cpp; sourceTree = ""; }; + 1AE2AA0D0A1CDAB300B42B25 /* JSHTMLBaseFontElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLBaseFontElement.h; sourceTree = ""; }; + 1AE2AA0E0A1CDAB300B42B25 /* JSHTMLBodyElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLBodyElement.cpp; sourceTree = ""; }; + 1AE2AA0F0A1CDAB300B42B25 /* JSHTMLBodyElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLBodyElement.h; sourceTree = ""; }; + 1AE2AA100A1CDAB300B42B25 /* JSHTMLBRElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLBRElement.cpp; sourceTree = ""; }; + 1AE2AA110A1CDAB300B42B25 /* JSHTMLBRElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLBRElement.h; sourceTree = ""; }; + 1AE2AA120A1CDAB300B42B25 /* JSHTMLFieldSetElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLFieldSetElement.cpp; sourceTree = ""; }; + 1AE2AA130A1CDAB300B42B25 /* JSHTMLFieldSetElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLFieldSetElement.h; sourceTree = ""; }; + 1AE2AA140A1CDAB300B42B25 /* JSHTMLFontElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLFontElement.cpp; sourceTree = ""; }; + 1AE2AA150A1CDAB300B42B25 /* JSHTMLFontElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLFontElement.h; sourceTree = ""; }; + 1AE2AA1A0A1CDAB400B42B25 /* JSHTMLHeadingElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLHeadingElement.cpp; sourceTree = ""; }; + 1AE2AA1B0A1CDAB400B42B25 /* JSHTMLHeadingElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLHeadingElement.h; sourceTree = ""; }; + 1AE2AA1C0A1CDAB400B42B25 /* JSHTMLHRElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLHRElement.cpp; sourceTree = ""; }; + 1AE2AA1D0A1CDAB400B42B25 /* JSHTMLHRElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLHRElement.h; sourceTree = ""; }; + 1AE2AA790A1CDC6100B42B25 /* HTMLImageElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLImageElement.idl; sourceTree = ""; }; + 1AE2AA930A1CDD2D00B42B25 /* JSHTMLImageElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLImageElement.cpp; sourceTree = ""; }; + 1AE2AA940A1CDD2D00B42B25 /* JSHTMLImageElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLImageElement.h; sourceTree = ""; }; + 1AE2AABE0A1CDD8300B42B25 /* HTMLLabelElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLLabelElement.idl; sourceTree = ""; }; + 1AE2AACC0A1CDDDB00B42B25 /* HTMLLegendElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLLegendElement.idl; sourceTree = ""; }; + 1AE2AAE60A1CE52E00B42B25 /* HTMLLIElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLLIElement.idl; sourceTree = ""; }; + 1AE2AAF70A1CE58600B42B25 /* HTMLMapElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLMapElement.idl; sourceTree = ""; }; + 1AE2AB070A1CE5CF00B42B25 /* HTMLModElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLModElement.idl; sourceTree = ""; }; + 1AE2AB170A1CE63B00B42B25 /* JSHTMLLabelElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLLabelElement.cpp; sourceTree = ""; }; + 1AE2AB180A1CE63B00B42B25 /* JSHTMLLabelElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLLabelElement.h; sourceTree = ""; }; + 1AE2AB190A1CE63B00B42B25 /* JSHTMLLegendElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLLegendElement.cpp; sourceTree = ""; }; + 1AE2AB1A0A1CE63B00B42B25 /* JSHTMLLegendElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLLegendElement.h; sourceTree = ""; }; + 1AE2AB1B0A1CE63B00B42B25 /* JSHTMLLIElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLLIElement.cpp; sourceTree = ""; }; + 1AE2AB1C0A1CE63B00B42B25 /* JSHTMLLIElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLLIElement.h; sourceTree = ""; }; + 1AE2AB1D0A1CE63B00B42B25 /* JSHTMLMapElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLMapElement.cpp; sourceTree = ""; }; + 1AE2AB1E0A1CE63B00B42B25 /* JSHTMLMapElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLMapElement.h; sourceTree = ""; }; + 1AE2AB1F0A1CE63B00B42B25 /* JSHTMLModElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLModElement.cpp; sourceTree = ""; }; + 1AE2AB200A1CE63B00B42B25 /* JSHTMLModElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLModElement.h; sourceTree = ""; }; + 1AE2AB610A1CE7CA00B42B25 /* HTMLParagraphElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLParagraphElement.idl; sourceTree = ""; }; + 1AE2AB720A1CE81500B42B25 /* HTMLParamElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLParamElement.idl; sourceTree = ""; }; + 1AE2AB850A1CE85000B42B25 /* HTMLPreElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLPreElement.idl; sourceTree = ""; }; + 1AE2AB960A1CE88D00B42B25 /* HTMLScriptElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLScriptElement.idl; sourceTree = ""; }; + 1AE2AB9E0A1CE90500B42B25 /* JSHTMLParagraphElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLParagraphElement.cpp; sourceTree = ""; }; + 1AE2AB9F0A1CE90500B42B25 /* JSHTMLParagraphElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLParagraphElement.h; sourceTree = ""; }; + 1AE2ABA00A1CE90500B42B25 /* JSHTMLParamElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLParamElement.cpp; sourceTree = ""; }; + 1AE2ABA10A1CE90500B42B25 /* JSHTMLParamElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLParamElement.h; sourceTree = ""; }; + 1AE2ABA20A1CE90500B42B25 /* JSHTMLPreElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLPreElement.cpp; sourceTree = ""; }; + 1AE2ABA30A1CE90500B42B25 /* JSHTMLPreElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLPreElement.h; sourceTree = ""; }; + 1AE2ABA40A1CE90500B42B25 /* JSHTMLScriptElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLScriptElement.cpp; sourceTree = ""; }; + 1AE2ABA50A1CE90500B42B25 /* JSHTMLScriptElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLScriptElement.h; sourceTree = ""; }; + 1AE2AE430A1D269E00B42B25 /* HTMLMenuElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLMenuElement.idl; sourceTree = ""; }; + 1AE2AE590A1D26F200B42B25 /* JSHTMLMenuElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLMenuElement.cpp; sourceTree = ""; }; + 1AE2AE5A0A1D26F200B42B25 /* JSHTMLMenuElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLMenuElement.h; sourceTree = ""; }; + 1AE2AEA30A1D28E800B42B25 /* HTMLQuoteElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLQuoteElement.idl; sourceTree = ""; }; + 1AE2AEC30A1D297B00B42B25 /* JSHTMLQuoteElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLQuoteElement.cpp; sourceTree = ""; }; + 1AE2AEC40A1D297B00B42B25 /* JSHTMLQuoteElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLQuoteElement.h; sourceTree = ""; }; + 1AE82F8D0CAAFA9D002237AE /* JSDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDatabase.cpp; sourceTree = ""; }; + 1AE82F8E0CAAFA9D002237AE /* JSDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDatabase.h; sourceTree = ""; }; + 1AE82FEA0CAB07EE002237AE /* JSSQLResultSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLResultSet.cpp; sourceTree = ""; }; + 1AE82FEB0CAB07EE002237AE /* JSSQLResultSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSQLResultSet.h; sourceTree = ""; }; + 1AEF4E66170E160300AB2799 /* CachedFontClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedFontClient.h; sourceTree = ""; }; + 1AEF4E68170E174800AB2799 /* CachedSVGDocumentClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedSVGDocumentClient.h; sourceTree = ""; }; + 1AF326770D78B9440068F0C4 /* EditorClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditorClient.h; sourceTree = ""; }; + 1AF62EE314DA22A70041556C /* ScrollingCoordinatorMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingCoordinatorMac.mm; sourceTree = ""; }; + 1AF62EE414DA22A70041556C /* ScrollingCoordinator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingCoordinator.cpp; sourceTree = ""; }; + 1AF62EE514DA22A70041556C /* ScrollingCoordinator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingCoordinator.h; sourceTree = ""; }; + 1AF62F2014DAFE790041556C /* ScrollingThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingThread.cpp; sourceTree = ""; }; + 1AF62F2114DAFE790041556C /* ScrollingThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingThread.h; sourceTree = ""; }; + 1AF62F2314DAFE910041556C /* ScrollingThreadMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingThreadMac.mm; sourceTree = ""; }; + 1AF89A411518FDEA00E547B5 /* TiledBacking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TiledBacking.h; sourceTree = ""; }; + 1AF8E1191256592600230FF7 /* ProxyServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProxyServer.h; sourceTree = ""; }; + 1AF8E13212565A4400230FF7 /* ProxyServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProxyServer.cpp; sourceTree = ""; }; + 1AF8E1C1125673E000230FF7 /* ProxyServerCFNet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProxyServerCFNet.cpp; sourceTree = ""; }; + 1AFE11970CBFFCC4003017FA /* JSSQLResultSetRowList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLResultSetRowList.cpp; sourceTree = ""; }; + 1AFE11980CBFFCC4003017FA /* JSSQLResultSetRowList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSQLResultSetRowList.h; sourceTree = ""; }; + 1C2649790D7E248A00BD10F2 /* DocumentLoaderMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentLoaderMac.cpp; sourceTree = ""; }; + 1C26497B0D7E24EC00BD10F2 /* PageMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageMac.cpp; sourceTree = ""; }; + 1C435CD314E8544F004E10EA /* Inspector.json */ = {isa = PBXFileReference; lastKnownFileType = text; path = Inspector.json; sourceTree = ""; }; + 1C435CD414E8545B004E10EA /* Inspector-0.1.json */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Inspector-0.1.json"; sourceTree = ""; }; + 1C435CD514E8545B004E10EA /* Inspector-1.0.json */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Inspector-1.0.json"; sourceTree = ""; }; + 1C4C8EFF0AD85D87009475CE /* DeleteButtonController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeleteButtonController.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 1C4C8F000AD85D87009475CE /* DeleteButtonController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeleteButtonController.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 1C4C8F630AD8655D009475CE /* DeleteButton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeleteButton.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 1C4C8F640AD8655D009475CE /* DeleteButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeleteButton.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 1C5FAECF0DCFD90100D58F78 /* JSJavaScriptCallFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSJavaScriptCallFrame.cpp; sourceTree = ""; }; + 1C5FAED00DCFD90100D58F78 /* JSJavaScriptCallFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSJavaScriptCallFrame.h; sourceTree = ""; }; + 1C5FAEE60DCFDA6800D58F78 /* JSJavaScriptCallFrameCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSJavaScriptCallFrameCustom.cpp; sourceTree = ""; }; + 1C81B9560E97330800266E07 /* InspectorController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorController.h; sourceTree = ""; }; + 1C81B9570E97330800266E07 /* InspectorController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorController.cpp; sourceTree = ""; }; + 1C81B9580E97330800266E07 /* InspectorClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorClient.h; sourceTree = ""; }; + 1C81BA030E97348300266E07 /* JavaScriptCallFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JavaScriptCallFrame.cpp; sourceTree = ""; }; + 1C81BA040E97348300266E07 /* JavaScriptCallFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JavaScriptCallFrame.h; sourceTree = ""; }; + 1C81BA050E97348300266E07 /* JavaScriptCallFrame.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = JavaScriptCallFrame.idl; sourceTree = ""; }; + 1C904DF90BA9D2C80081E9D0 /* Version.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = ""; }; + 1CA19E030DC255950065A994 /* EventLoopMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = EventLoopMac.mm; sourceTree = ""; }; + 1CA19E150DC255CA0065A994 /* EventLoop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventLoop.h; sourceTree = ""; }; + 1CAF347E0A6C405200ABE06E /* WebScriptObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebScriptObject.h; sourceTree = ""; }; + 1CAF347F0A6C405200ABE06E /* WebScriptObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebScriptObject.mm; sourceTree = ""; }; + 1CAF34800A6C405200ABE06E /* WebScriptObjectPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebScriptObjectPrivate.h; sourceTree = ""; }; + 1CCA732110ADD43E00FD440D /* DOMHTMLInputElementPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLInputElementPrivate.h; sourceTree = ""; }; + 1CD0B6200AABDB5000D0A3FF /* PublicDOMInterfaces.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PublicDOMInterfaces.h; sourceTree = ""; }; + 1CDD45E40BA9C84600F90147 /* DebugRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = ""; }; + 1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = WebCore.xcconfig; sourceTree = ""; }; + 1CDD45E60BA9C84600F90147 /* Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = ""; }; + 1CF6BDF80E9BB26A0025E1CD /* ObjCEventListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjCEventListener.h; sourceTree = ""; }; + 1CF6BDF90E9BB26A0025E1CD /* ObjCEventListener.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ObjCEventListener.mm; sourceTree = ""; }; + 1CF6BE120E9BB4670025E1CD /* ObjCNodeFilterCondition.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ObjCNodeFilterCondition.mm; sourceTree = ""; }; + 1CF6BE130E9BB4670025E1CD /* ObjCNodeFilterCondition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjCNodeFilterCondition.h; sourceTree = ""; }; + 1CFAE3220A6D6A3F0032593D /* libobjc.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libobjc.dylib; path = /usr/lib/libobjc.dylib; sourceTree = ""; }; + 1F3C3BE8135CAF3C00B8C1AC /* MediaControls.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaControls.cpp; sourceTree = ""; }; + 1F3C3BE9135CAF3C00B8C1AC /* MediaControls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaControls.h; sourceTree = ""; }; + 1F3F19521499CA7600A5AEA7 /* PODFreeListArena.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PODFreeListArena.h; sourceTree = ""; }; + 1FAFBF1615A5FA5200083A20 /* UTIUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UTIUtilities.h; sourceTree = ""; }; + 1FAFBF1715A5FA5200083A20 /* UTIUtilities.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = UTIUtilities.mm; sourceTree = ""; }; + 1FC40FB71655C5910040F29E /* SubimageCacheWithTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubimageCacheWithTimer.h; sourceTree = ""; }; + 1FC40FB81655C5910040F29E /* SubimageCacheWithTimer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SubimageCacheWithTimer.cpp; sourceTree = ""; }; + 209B456A16796A7E00E54E4E /* JSCryptoCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCryptoCustom.cpp; sourceTree = ""; }; + 20D629241253690B00081543 /* InspectorInstrumentation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorInstrumentation.cpp; sourceTree = ""; }; + 20D629251253690B00081543 /* InspectorInstrumentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorInstrumentation.h; sourceTree = ""; }; + 2277775F1345DEA9008EA455 /* InspectorFrontendChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorFrontendChannel.h; sourceTree = ""; }; + 22885E631301AE4C00526E68 /* JSDOMImplementationCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMImplementationCustom.cpp; sourceTree = ""; }; + 228C284410D82500009D0D0E /* ScriptWrappable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptWrappable.h; sourceTree = ""; }; + 2292B27B1356669400CF11EF /* ImageBufferDataCG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageBufferDataCG.cpp; sourceTree = ""; }; + 22BD9F7D1353625C009BD102 /* ImageBufferData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageBufferData.h; sourceTree = ""; }; + 22BD9F80135364FE009BD102 /* ImageBufferDataCG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageBufferDataCG.h; sourceTree = ""; }; + 2442BBF81194C9D300D49469 /* HashChangeEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashChangeEvent.h; sourceTree = ""; }; + 24D9128F13CA951E00D21915 /* JSSVGAltGlyphDefElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAltGlyphDefElement.cpp; sourceTree = ""; }; + 24D9129013CA951E00D21915 /* JSSVGAltGlyphDefElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGAltGlyphDefElement.h; sourceTree = ""; }; + 24D9129313CA956100D21915 /* JSSVGAltGlyphItemElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAltGlyphItemElement.cpp; sourceTree = ""; }; + 24D9129413CA956100D21915 /* JSSVGAltGlyphItemElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGAltGlyphItemElement.h; sourceTree = ""; }; + 24D9129713CA96DE00D21915 /* JSSVGGlyphRefElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGGlyphRefElement.cpp; sourceTree = ""; }; + 24D9129913CA971400D21915 /* JSSVGGlyphRefElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGGlyphRefElement.h; sourceTree = ""; }; + 24D912AD13CA9A1F00D21915 /* SVGAltGlyphDefElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAltGlyphDefElement.cpp; sourceTree = ""; }; + 24D912AE13CA9A1F00D21915 /* SVGAltGlyphDefElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAltGlyphDefElement.h; sourceTree = ""; }; + 24D912AF13CA9A1F00D21915 /* SVGAltGlyphDefElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGAltGlyphDefElement.idl; sourceTree = ""; }; + 24D912B413CA9A6900D21915 /* SVGAltGlyphItemElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAltGlyphItemElement.cpp; sourceTree = ""; }; + 24D912B513CA9A6900D21915 /* SVGAltGlyphItemElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAltGlyphItemElement.h; sourceTree = ""; }; + 24D912B613CA9A6900D21915 /* SVGAltGlyphItemElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGAltGlyphItemElement.idl; sourceTree = ""; }; + 24D912BA13CA9A9700D21915 /* SVGGlyphRefElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGGlyphRefElement.cpp; sourceTree = ""; }; + 24D912BB13CA9A9700D21915 /* SVGGlyphRefElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGGlyphRefElement.h; sourceTree = ""; }; + 24D912BC13CA9A9700D21915 /* SVGGlyphRefElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGGlyphRefElement.idl; sourceTree = ""; }; + 24F54EAA101FE914000AE741 /* ApplicationCacheHost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplicationCacheHost.cpp; sourceTree = ""; }; + 24F54EAB101FE914000AE741 /* ApplicationCacheHost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationCacheHost.h; sourceTree = ""; }; + 2527CC9116BF8BA1009DDAC0 /* PlatformSpeechSynthesisUtterance.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlatformSpeechSynthesisUtterance.h; sourceTree = ""; }; + 2527CC9216BF90B4009DDAC0 /* PlatformSpeechSynthesisVoice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlatformSpeechSynthesisVoice.h; sourceTree = ""; }; + 2527CC9316BF92EC009DDAC0 /* PlatformSpeechSynthesisVoice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformSpeechSynthesisVoice.cpp; sourceTree = ""; }; + 2527CC9516BF95DD009DDAC0 /* PlatformSpeechSynthesisUtterance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformSpeechSynthesisUtterance.cpp; sourceTree = ""; }; + 2542F4D81166C25A00E89A86 /* UserGestureIndicator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserGestureIndicator.cpp; sourceTree = ""; }; + 2542F4D91166C25A00E89A86 /* UserGestureIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserGestureIndicator.h; sourceTree = ""; }; + 265541371489811C000DFC5D /* KeyEventCodesIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KeyEventCodesIOS.h; path = ios/KeyEventCodesIOS.h; sourceTree = ""; }; + 265541381489811C000DFC5D /* KeyEventIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = KeyEventIOS.mm; path = ios/KeyEventIOS.mm; sourceTree = ""; }; + 2655414B1489AA2B000DFC5D /* CursorIOS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CursorIOS.cpp; path = ios/CursorIOS.cpp; sourceTree = ""; }; + 269239911505E1AA009E57FC /* JSIDBVersionChangeEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBVersionChangeEvent.cpp; sourceTree = ""; }; + 269239921505E1AA009E57FC /* JSIDBVersionChangeEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBVersionChangeEvent.h; sourceTree = ""; }; + 26C17A3C1491D2D400D12BA2 /* FileSystemIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileSystemIOS.h; path = ios/FileSystemIOS.h; sourceTree = ""; }; + 26C17A3D1491D2D400D12BA2 /* FileSystemIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = FileSystemIOS.mm; path = ios/FileSystemIOS.mm; sourceTree = ""; }; + 26E98A0F130A9FCA008EB7B2 /* TextCodecASCIIFastPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextCodecASCIIFastPath.h; sourceTree = ""; }; + 26F40D4914904A6300CA67C4 /* EventLoopIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = EventLoopIOS.mm; path = ios/EventLoopIOS.mm; sourceTree = ""; }; + 2917B55E1473496C0052C9D0 /* LayerFlushScheduler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LayerFlushScheduler.cpp; path = ca/LayerFlushScheduler.cpp; sourceTree = ""; }; + 2917B55F1473496C0052C9D0 /* LayerFlushScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LayerFlushScheduler.h; path = ca/LayerFlushScheduler.h; sourceTree = ""; }; + 2917B5601473496C0052C9D0 /* LayerFlushSchedulerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LayerFlushSchedulerClient.h; path = ca/LayerFlushSchedulerClient.h; sourceTree = ""; }; + 2917B565147349950052C9D0 /* LayerFlushSchedulerMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LayerFlushSchedulerMac.cpp; path = ca/mac/LayerFlushSchedulerMac.cpp; sourceTree = ""; }; + 2919A1E816B3376600787213 /* ContentFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContentFilter.h; sourceTree = ""; }; + 2919A1EA16B3378900787213 /* ContentFilterMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ContentFilterMac.mm; sourceTree = ""; }; + 293EAE1E1356B2FE0067ACF9 /* RuntimeApplicationChecks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RuntimeApplicationChecks.h; sourceTree = ""; }; + 293EAE201356B32E0067ACF9 /* RuntimeApplicationChecks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RuntimeApplicationChecks.cpp; sourceTree = ""; }; + 29489FC512C00F0300D83F0F /* AccessibilityScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityScrollView.h; sourceTree = ""; }; + 297BE3D916C043D8003316BD /* PlatformSpeechSynthesizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformSpeechSynthesizer.cpp; sourceTree = ""; }; + 2981CA9D131822EC00D12F2A /* AccessibilityARIAGrid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityARIAGrid.cpp; sourceTree = ""; }; + 2981CA9E131822EC00D12F2A /* AccessibilityARIAGridCell.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityARIAGridCell.cpp; sourceTree = ""; }; + 2981CA9F131822EC00D12F2A /* AccessibilityARIAGridRow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityARIAGridRow.cpp; sourceTree = ""; }; + 2981CAA0131822EC00D12F2A /* AccessibilityImageMapLink.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityImageMapLink.cpp; sourceTree = ""; }; + 2981CAA1131822EC00D12F2A /* AccessibilityList.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityList.cpp; sourceTree = ""; }; + 2981CAA2131822EC00D12F2A /* AccessibilityListBox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityListBox.cpp; sourceTree = ""; }; + 2981CAA3131822EC00D12F2A /* AccessibilityListBoxOption.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityListBoxOption.cpp; sourceTree = ""; }; + 2981CAA4131822EC00D12F2A /* AccessibilityMediaControls.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityMediaControls.cpp; sourceTree = ""; }; + 2981CAA5131822EC00D12F2A /* AccessibilityObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityObject.cpp; sourceTree = ""; }; + 2981CAA6131822EC00D12F2A /* AccessibilityRenderObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityRenderObject.cpp; sourceTree = ""; }; + 2981CAA7131822EC00D12F2A /* AccessibilityScrollbar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityScrollbar.cpp; sourceTree = ""; }; + 2981CAA8131822EC00D12F2A /* AccessibilityScrollView.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityScrollView.cpp; sourceTree = ""; }; + 2981CAA9131822EC00D12F2A /* AccessibilitySlider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilitySlider.cpp; sourceTree = ""; }; + 2981CAAA131822EC00D12F2A /* AccessibilityTable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityTable.cpp; sourceTree = ""; }; + 2981CAAB131822EC00D12F2A /* AccessibilityTableCell.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityTableCell.cpp; sourceTree = ""; }; + 2981CAAC131822EC00D12F2A /* AccessibilityTableColumn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityTableColumn.cpp; sourceTree = ""; }; + 2981CAAD131822EC00D12F2A /* AccessibilityTableHeaderContainer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityTableHeaderContainer.cpp; sourceTree = ""; }; + 2981CAAE131822EC00D12F2A /* AccessibilityTableRow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityTableRow.cpp; sourceTree = ""; }; + 2981CAAF131822EC00D12F2A /* AXObjectCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AXObjectCache.cpp; sourceTree = ""; }; + 2985709215CC532D006355CD /* AccessibilityNodeObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityNodeObject.cpp; sourceTree = ""; }; + 2985709315CC532D006355CD /* AccessibilityNodeObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AccessibilityNodeObject.h; sourceTree = ""; }; + 29A309AB1561C99B00BBD8E5 /* RunLoopCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RunLoopCF.cpp; sourceTree = ""; }; + 29A8120D0FBB9C1D00510293 /* AccessibilityTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityTable.h; sourceTree = ""; }; + 29A8120E0FBB9C1D00510293 /* AccessibilityList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityList.h; sourceTree = ""; }; + 29A812100FBB9C1D00510293 /* AccessibilityARIAGridCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityARIAGridCell.h; sourceTree = ""; }; + 29A812130FBB9C1D00510293 /* AccessibilityTableRow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityTableRow.h; sourceTree = ""; }; + 29A812140FBB9C1D00510293 /* AccessibilityTableCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityTableCell.h; sourceTree = ""; }; + 29A812150FBB9C1D00510293 /* AccessibilityARIAGridRow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityARIAGridRow.h; sourceTree = ""; }; + 29A812160FBB9C1D00510293 /* AccessibilityARIAGrid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityARIAGrid.h; sourceTree = ""; }; + 29A812180FBB9C1D00510293 /* AccessibilityObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityObject.h; sourceTree = ""; }; + 29A8121A0FBB9C1D00510293 /* AXObjectCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AXObjectCache.h; sourceTree = ""; }; + 29A8121B0FBB9C1D00510293 /* AccessibilityRenderObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityRenderObject.h; sourceTree = ""; }; + 29A8121D0FBB9C1D00510293 /* AccessibilityImageMapLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityImageMapLink.h; sourceTree = ""; }; + 29A812210FBB9C1D00510293 /* AccessibilityTableHeaderContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityTableHeaderContainer.h; sourceTree = ""; }; + 29A812230FBB9C1D00510293 /* AccessibilityTableColumn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityTableColumn.h; sourceTree = ""; }; + 29A812240FBB9C1D00510293 /* AccessibilityListBoxOption.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityListBoxOption.h; sourceTree = ""; }; + 29A812250FBB9C1D00510293 /* AccessibilityListBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityListBox.h; sourceTree = ""; }; + 29A812440FBB9CA900510293 /* AccessibilityObjectMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AccessibilityObjectMac.mm; sourceTree = ""; }; + 29A812450FBB9CA900510293 /* WebAccessibilityObjectWrapperBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAccessibilityObjectWrapperBase.h; sourceTree = ""; }; + 29A812460FBB9CA900510293 /* WebAccessibilityObjectWrapperBase.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebAccessibilityObjectWrapperBase.mm; sourceTree = ""; }; + 29A812470FBB9CA900510293 /* AXObjectCacheMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AXObjectCacheMac.mm; sourceTree = ""; }; + 29ACB211143E7128006BCA5F /* AccessibilityMockObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityMockObject.h; sourceTree = ""; }; + 29ACB213143E7498006BCA5F /* AccessibilityMockObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityMockObject.cpp; sourceTree = ""; }; + 29D7BCF51444AF580070619C /* AccessibilitySpinButton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AccessibilitySpinButton.cpp; path = accessibility/AccessibilitySpinButton.cpp; sourceTree = SOURCE_ROOT; }; + 29D7BCF91444AF7D0070619C /* AccessibilitySpinButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilitySpinButton.h; sourceTree = ""; }; + 29E4D8DF16B0940F00C84704 /* PlatformSpeechSynthesizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlatformSpeechSynthesizer.h; sourceTree = ""; }; + 29E4D8E016B0959800C84704 /* PlatformSpeechSynthesizerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PlatformSpeechSynthesizerMac.mm; sourceTree = ""; }; + 2B42359F15250F6000DBBCD8 /* RenderSVGEllipse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGEllipse.cpp; sourceTree = ""; }; + 2B4235A015250F6000DBBCD8 /* RenderSVGEllipse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGEllipse.h; sourceTree = ""; }; + 2BE8E2C612A589EC00FAD550 /* HTMLMetaCharsetParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLMetaCharsetParser.h; path = parser/HTMLMetaCharsetParser.h; sourceTree = ""; }; + 2BE8E2C812A58A0100FAD550 /* HTMLMetaCharsetParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLMetaCharsetParser.cpp; path = parser/HTMLMetaCharsetParser.cpp; sourceTree = ""; }; + 2D2FC0541460CD6F00263633 /* CrossfadeGeneratedImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CrossfadeGeneratedImage.cpp; sourceTree = ""; }; + 2D2FC0551460CD6F00263633 /* CrossfadeGeneratedImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossfadeGeneratedImage.h; sourceTree = ""; }; + 2D2FC0561460CD6F00263633 /* GeneratorGeneratedImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GeneratorGeneratedImage.cpp; sourceTree = ""; }; + 2D2FC0571460CD6F00263633 /* GeneratorGeneratedImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeneratorGeneratedImage.h; sourceTree = ""; }; + 2D3A0E3513A7D76100E85AF0 /* SVGParsingError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGParsingError.h; sourceTree = ""; }; + 2D5BC42516F882BE007048D0 /* SecurityPolicyViolationEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecurityPolicyViolationEvent.h; sourceTree = ""; }; + 2D5BC42616F882BE007048D0 /* SecurityPolicyViolationEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SecurityPolicyViolationEvent.idl; sourceTree = ""; }; + 2D8287F416E4A0380086BD00 /* HitTestLocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HitTestLocation.cpp; sourceTree = ""; }; + 2D8287F516E4A0380086BD00 /* HitTestLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HitTestLocation.h; sourceTree = ""; }; + 2D8FEBDA143E3EF70072502B /* CSSCrossfadeValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSCrossfadeValue.cpp; sourceTree = ""; }; + 2D8FEBDB143E3EF70072502B /* CSSCrossfadeValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSCrossfadeValue.h; sourceTree = ""; }; + 2D9066040BE141D400956998 /* LayoutState.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = LayoutState.cpp; sourceTree = ""; }; + 2D9066050BE141D400956998 /* LayoutState.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = LayoutState.h; sourceTree = ""; }; + 2D90660C0665D937006B6F1A /* ClipboardMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ClipboardMac.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 2D9A246A15B9BBDD00D34527 /* DOMSecurityPolicy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMSecurityPolicy.cpp; sourceTree = ""; }; + 2D9A246B15B9BBDD00D34527 /* DOMSecurityPolicy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSecurityPolicy.h; sourceTree = ""; }; + 2D9A247015B9C29500D34527 /* DOMDOMSecurityPolicy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMDOMSecurityPolicy.h; sourceTree = ""; }; + 2D9A247115B9C29500D34527 /* DOMDOMSecurityPolicyInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMDOMSecurityPolicyInternal.h; sourceTree = ""; }; + 2D9A247215B9C2C700D34527 /* DOMDOMSecurityPolicy.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMDOMSecurityPolicy.mm; sourceTree = ""; }; + 2D9F0E1214FF1CBF00BA0FF7 /* linearSRGB.icc */ = {isa = PBXFileReference; lastKnownFileType = file; path = linearSRGB.icc; sourceTree = ""; }; + 2DF2E9D4166E39740035BEF2 /* ConsoleAPITypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConsoleAPITypes.h; sourceTree = ""; }; + 2E07753016B1BD13004D9936 /* MicroDataAttributeTokenList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MicroDataAttributeTokenList.cpp; sourceTree = ""; }; + 2E07753316B1BD4C004D9936 /* MicroDataAttributeTokenList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MicroDataAttributeTokenList.h; sourceTree = ""; }; + 2E0888C3114883A900AF4265 /* DOMFormData.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMFormData.idl; sourceTree = ""; }; + 2E0888D21148848A00AF4265 /* JSDOMFormData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMFormData.cpp; sourceTree = ""; }; + 2E0888D31148848A00AF4265 /* JSDOMFormData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMFormData.h; sourceTree = ""; }; + 2E0888E5114884E200AF4265 /* JSDOMFormDataCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMFormDataCustom.cpp; sourceTree = ""; }; + 2E2D99CB10E2BBDA00496337 /* JSBlob.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSBlob.cpp; sourceTree = ""; }; + 2E2D99CC10E2BBDA00496337 /* JSBlob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBlob.h; sourceTree = ""; }; + 2E2D99E510E2BC1C00496337 /* DOMBlob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMBlob.h; sourceTree = ""; }; + 2E2D99E610E2BC1C00496337 /* DOMBlob.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMBlob.mm; sourceTree = ""; }; + 2E2D99E910E2BC3800496337 /* DOMBlobInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMBlobInternal.h; sourceTree = ""; }; + 2E37DFD712DBAFB800A6B233 /* DOMURL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMURL.cpp; sourceTree = ""; }; + 2E37DFD812DBAFB800A6B233 /* DOMURL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMURL.h; sourceTree = ""; }; + 2E37DFD912DBAFB800A6B233 /* DOMURL.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMURL.idl; sourceTree = ""; }; + 2E37E00312DBC5A400A6B233 /* JSDOMURL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMURL.cpp; sourceTree = ""; }; + 2E37E00412DBC5A400A6B233 /* JSDOMURL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMURL.h; sourceTree = ""; }; + 2E3BBF051162DA1100B9409A /* UUID.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UUID.cpp; sourceTree = ""; }; + 2E3BBF061162DA1100B9409A /* UUID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UUID.h; sourceTree = ""; }; + 2E3BC0C8117D3E0800B9409A /* JSFileError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFileError.cpp; sourceTree = ""; }; + 2E3BC0C9117D3E0800B9409A /* JSFileError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFileError.h; sourceTree = ""; }; + 2E3BC106117D479800B9409A /* DOMFileError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMFileError.h; sourceTree = ""; }; + 2E3BC107117D479800B9409A /* DOMFileError.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMFileError.mm; sourceTree = ""; }; + 2E3BC10A117D47C800B9409A /* DOMFileErrorInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMFileErrorInternal.h; sourceTree = ""; }; + 2E3FAA0811A36BF100576624 /* CrossThreadTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossThreadTask.h; sourceTree = ""; }; + 2E4346330F546A8200B0F1BA /* Worker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Worker.cpp; path = workers/Worker.cpp; sourceTree = ""; }; + 2E4346340F546A8200B0F1BA /* Worker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Worker.h; path = workers/Worker.h; sourceTree = ""; }; + 2E4346350F546A8200B0F1BA /* Worker.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Worker.idl; path = workers/Worker.idl; sourceTree = ""; }; + 2E4346360F546A8200B0F1BA /* WorkerGlobalScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WorkerGlobalScope.cpp; path = workers/WorkerGlobalScope.cpp; sourceTree = ""; }; + 2E4346370F546A8200B0F1BA /* WorkerGlobalScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerGlobalScope.h; path = workers/WorkerGlobalScope.h; sourceTree = ""; }; + 2E4346380F546A8200B0F1BA /* WorkerGlobalScope.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WorkerGlobalScope.idl; path = workers/WorkerGlobalScope.idl; sourceTree = ""; }; + 2E4346390F546A8200B0F1BA /* WorkerGlobalScopeProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerGlobalScopeProxy.h; path = workers/WorkerGlobalScopeProxy.h; sourceTree = ""; }; + 2E43463A0F546A8200B0F1BA /* WorkerLocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WorkerLocation.cpp; path = workers/WorkerLocation.cpp; sourceTree = ""; }; + 2E43463B0F546A8200B0F1BA /* WorkerLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerLocation.h; path = workers/WorkerLocation.h; sourceTree = ""; }; + 2E43463C0F546A8200B0F1BA /* WorkerLocation.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WorkerLocation.idl; path = workers/WorkerLocation.idl; sourceTree = ""; }; + 2E43463D0F546A8200B0F1BA /* WorkerMessagingProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WorkerMessagingProxy.cpp; path = workers/WorkerMessagingProxy.cpp; sourceTree = ""; }; + 2E43463E0F546A8200B0F1BA /* WorkerMessagingProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerMessagingProxy.h; path = workers/WorkerMessagingProxy.h; sourceTree = ""; }; + 2E43463F0F546A8200B0F1BA /* WorkerObjectProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerObjectProxy.h; path = workers/WorkerObjectProxy.h; sourceTree = ""; }; + 2E4346400F546A8200B0F1BA /* WorkerRunLoop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WorkerRunLoop.cpp; path = workers/WorkerRunLoop.cpp; sourceTree = ""; }; + 2E4346410F546A8200B0F1BA /* WorkerRunLoop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerRunLoop.h; path = workers/WorkerRunLoop.h; sourceTree = ""; }; + 2E4346420F546A8200B0F1BA /* WorkerThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WorkerThread.cpp; path = workers/WorkerThread.cpp; sourceTree = ""; }; + 2E4346430F546A8200B0F1BA /* WorkerThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerThread.h; path = workers/WorkerThread.h; sourceTree = ""; }; + 2E4346560F546A9900B0F1BA /* CrossThreadCopier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CrossThreadCopier.cpp; sourceTree = ""; }; + 2E4346570F546A9900B0F1BA /* CrossThreadCopier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossThreadCopier.h; sourceTree = ""; }; + 2E7582ED12764F260062628B /* JSFileReaderCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFileReaderCustom.cpp; sourceTree = ""; }; + 2E75841A12779ADA0062628B /* FileReaderLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileReaderLoader.cpp; path = fileapi/FileReaderLoader.cpp; sourceTree = ""; }; + 2E75841B12779ADA0062628B /* FileReaderLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileReaderLoader.h; path = fileapi/FileReaderLoader.h; sourceTree = ""; }; + 2E75841C12779ADA0062628B /* FileReaderLoaderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileReaderLoaderClient.h; path = fileapi/FileReaderLoaderClient.h; sourceTree = ""; }; + 2E94F439119207DA00B7F75D /* JSFileReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFileReader.cpp; sourceTree = ""; }; + 2E94F43A119207DA00B7F75D /* JSFileReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFileReader.h; sourceTree = ""; }; + 2E97CCE712939CB800C5C8FF /* DataView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DataView.cpp; path = canvas/DataView.cpp; sourceTree = ""; }; + 2E97CCE812939CB800C5C8FF /* DataView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DataView.h; path = canvas/DataView.h; sourceTree = ""; }; + 2E97CCE912939CB800C5C8FF /* DataView.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DataView.idl; path = canvas/DataView.idl; sourceTree = ""; }; + 2E97CCF61293A43A00C5C8FF /* JSDataViewCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDataViewCustom.cpp; sourceTree = ""; }; + 2E97CE6D1293AD6B00C5C8FF /* JSDataView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDataView.cpp; sourceTree = ""; }; + 2E97CE6E1293AD6B00C5C8FF /* JSDataView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDataView.h; sourceTree = ""; }; + 2EA768030FE7126400AB9C8A /* WorkerScriptLoaderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerScriptLoaderClient.h; path = workers/WorkerScriptLoaderClient.h; sourceTree = ""; }; + 2EB4BCD0121F03E300EC4885 /* BlobResourceHandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BlobResourceHandle.cpp; sourceTree = ""; }; + 2EB4BCD1121F03E300EC4885 /* BlobResourceHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlobResourceHandle.h; sourceTree = ""; }; + 2ECF7ADA10162B3800427DE7 /* JSErrorEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSErrorEvent.cpp; sourceTree = ""; }; + 2ECF7ADB10162B3800427DE7 /* JSErrorEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSErrorEvent.h; sourceTree = ""; }; + 2ECF7ADE10162B5800427DE7 /* ErrorEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ErrorEvent.cpp; sourceTree = ""; }; + 2ECF7ADF10162B5800427DE7 /* ErrorEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ErrorEvent.h; sourceTree = ""; }; + 2ECF7AE010162B5800427DE7 /* ErrorEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ErrorEvent.idl; sourceTree = ""; }; + 2ED609BA1145B07100C8684E /* DOMFormData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMFormData.cpp; sourceTree = ""; }; + 2ED609BB1145B07100C8684E /* DOMFormData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMFormData.h; sourceTree = ""; }; + 2EDEF1ED121B0EFC00726DB2 /* BlobData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BlobData.cpp; sourceTree = ""; }; + 2EDEF1EE121B0EFC00726DB2 /* BlobData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlobData.h; sourceTree = ""; }; + 2EDEF1EF121B0EFC00726DB2 /* BlobRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlobRegistry.h; sourceTree = ""; }; + 2EDEF1F0121B0EFC00726DB2 /* BlobRegistryImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BlobRegistryImpl.cpp; sourceTree = ""; }; + 2EDEF1F1121B0EFC00726DB2 /* BlobRegistryImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlobRegistryImpl.h; sourceTree = ""; }; + 2EDEF1F2121B0EFC00726DB2 /* BlobStorageData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlobStorageData.h; sourceTree = ""; }; + 2EDF369A122C94B4002F7D4E /* FileReaderSync.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileReaderSync.cpp; path = fileapi/FileReaderSync.cpp; sourceTree = ""; }; + 2EDF369B122C94B4002F7D4E /* FileReaderSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileReaderSync.h; path = fileapi/FileReaderSync.h; sourceTree = ""; }; + 2EDF369E122C94C8002F7D4E /* FileException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileException.h; path = fileapi/FileException.h; sourceTree = ""; }; + 2EF1BFE8121C9F4200C27627 /* FileStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileStream.cpp; sourceTree = ""; }; + 2EF1BFE9121C9F4200C27627 /* FileStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileStream.h; sourceTree = ""; }; + 2EF1BFF8121CB0CE00C27627 /* FileStreamClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileStreamClient.h; sourceTree = ""; }; + 3106036C14327D2E00ABF4BA /* WebKitCSSFilterValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitCSSFilterValue.cpp; sourceTree = ""; }; + 3106036D14327D2E00ABF4BA /* WebKitCSSFilterValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitCSSFilterValue.h; sourceTree = ""; }; + 3106036E14327D2E00ABF4BA /* WebKitCSSFilterValue.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebKitCSSFilterValue.idl; sourceTree = ""; }; + 310603721432819C00ABF4BA /* JSWebKitCSSFilterValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitCSSFilterValue.cpp; sourceTree = ""; }; + 310603731432819C00ABF4BA /* JSWebKitCSSFilterValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebKitCSSFilterValue.h; sourceTree = ""; }; + 31060376143281CD00ABF4BA /* DOMWebKitCSSFilterValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSFilterValue.h; sourceTree = ""; }; + 31060377143281CD00ABF4BA /* DOMWebKitCSSFilterValue.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMWebKitCSSFilterValue.mm; sourceTree = ""; }; + 31060378143281CD00ABF4BA /* DOMWebKitCSSFilterValueInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSFilterValueInternal.h; sourceTree = ""; }; + 31288E6E0E3005D6003619AE /* WebKitCSSKeyframeRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitCSSKeyframeRule.cpp; sourceTree = ""; }; + 31288E6F0E3005D6003619AE /* WebKitCSSKeyframeRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitCSSKeyframeRule.h; sourceTree = ""; }; + 31288E700E3005D6003619AE /* WebKitCSSKeyframesRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitCSSKeyframesRule.cpp; sourceTree = ""; }; + 31288E710E3005D6003619AE /* WebKitCSSKeyframesRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitCSSKeyframesRule.h; sourceTree = ""; }; + 3128CA67147331520074C72A /* NotificationController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NotificationController.cpp; path = Modules/notifications/NotificationController.cpp; sourceTree = ""; }; + 3128CA6A147331630074C72A /* NotificationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NotificationController.h; path = Modules/notifications/NotificationController.h; sourceTree = ""; }; + 312D67B01535691F00563D0D /* Dictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Dictionary.cpp; sourceTree = ""; }; + 31313F631443B35E006E2A90 /* FilterEffectRenderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FilterEffectRenderer.cpp; sourceTree = ""; }; + 31313F641443B35E006E2A90 /* FilterEffectRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FilterEffectRenderer.h; sourceTree = ""; }; + 3138A9E41474434600B0ED12 /* StyleShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleShader.h; path = style/StyleShader.h; sourceTree = ""; }; + 316023EF1532C40C00D50FF4 /* Dictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Dictionary.h; sourceTree = ""; }; + 31611E540E1C4D4A00F6A579 /* WebKitCSSTransformValue.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebKitCSSTransformValue.idl; sourceTree = ""; }; + 31611E580E1C4DE000F6A579 /* JSWebKitCSSTransformValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitCSSTransformValue.cpp; sourceTree = ""; }; + 31611E590E1C4DE000F6A579 /* JSWebKitCSSTransformValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebKitCSSTransformValue.h; sourceTree = ""; }; + 31611E5E0E1C4E1400F6A579 /* DOMWebKitCSSTransformValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSTransformValue.h; sourceTree = ""; }; + 31611E5F0E1C4E1400F6A579 /* DOMWebKitCSSTransformValue.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMWebKitCSSTransformValue.mm; sourceTree = ""; }; + 31611E600E1C4E1400F6A579 /* DOMWebKitCSSTransformValueInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSTransformValueInternal.h; sourceTree = ""; }; + 3169379A14609C5B00C01362 /* DragSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DragSession.h; sourceTree = ""; }; + 316FE06D0E6CCBEE00BF6088 /* JSWebKitCSSKeyframeRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitCSSKeyframeRule.cpp; sourceTree = ""; }; + 316FE06E0E6CCBEE00BF6088 /* JSWebKitCSSKeyframeRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebKitCSSKeyframeRule.h; sourceTree = ""; }; + 316FE06F0E6CCBEE00BF6088 /* JSWebKitCSSKeyframesRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitCSSKeyframesRule.cpp; sourceTree = ""; }; + 316FE0700E6CCBEE00BF6088 /* JSWebKitCSSKeyframesRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebKitCSSKeyframesRule.h; sourceTree = ""; }; + 316FE0770E6CCC2800BF6088 /* DOMWebKitCSSKeyframeRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSKeyframeRule.h; sourceTree = ""; }; + 316FE0780E6CCC2800BF6088 /* DOMWebKitCSSKeyframeRule.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMWebKitCSSKeyframeRule.mm; sourceTree = ""; }; + 316FE0790E6CCC2800BF6088 /* DOMWebKitCSSKeyframeRuleInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSKeyframeRuleInternal.h; sourceTree = ""; }; + 316FE07A0E6CCC2800BF6088 /* DOMWebKitCSSKeyframesRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSKeyframesRule.h; sourceTree = ""; }; + 316FE07B0E6CCC2800BF6088 /* DOMWebKitCSSKeyframesRule.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMWebKitCSSKeyframesRule.mm; sourceTree = ""; }; + 316FE07C0E6CCC2800BF6088 /* DOMWebKitCSSKeyframesRuleInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSKeyframesRuleInternal.h; sourceTree = ""; }; + 316FE0910E6CCD7F00BF6088 /* WebKitCSSKeyframeRule.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebKitCSSKeyframeRule.idl; sourceTree = ""; }; + 316FE0920E6CCD7F00BF6088 /* WebKitCSSKeyframesRule.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebKitCSSKeyframesRule.idl; sourceTree = ""; }; + 316FE1070E6E1DA700BF6088 /* AnimationBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AnimationBase.cpp; path = animation/AnimationBase.cpp; sourceTree = ""; }; + 316FE1080E6E1DA700BF6088 /* AnimationBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationBase.h; path = animation/AnimationBase.h; sourceTree = ""; }; + 316FE1090E6E1DA700BF6088 /* AnimationController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AnimationController.cpp; path = animation/AnimationController.cpp; sourceTree = ""; }; + 316FE10A0E6E1DA700BF6088 /* AnimationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationController.h; path = animation/AnimationController.h; sourceTree = ""; }; + 316FE10B0E6E1DA700BF6088 /* CompositeAnimation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CompositeAnimation.cpp; path = animation/CompositeAnimation.cpp; sourceTree = ""; }; + 316FE10C0E6E1DA700BF6088 /* CompositeAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CompositeAnimation.h; path = animation/CompositeAnimation.h; sourceTree = ""; }; + 316FE10D0E6E1DA700BF6088 /* ImplicitAnimation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ImplicitAnimation.cpp; path = animation/ImplicitAnimation.cpp; sourceTree = ""; }; + 316FE10E0E6E1DA700BF6088 /* ImplicitAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ImplicitAnimation.h; path = animation/ImplicitAnimation.h; sourceTree = ""; }; + 316FE10F0E6E1DA700BF6088 /* KeyframeAnimation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = KeyframeAnimation.cpp; path = animation/KeyframeAnimation.cpp; sourceTree = ""; }; + 316FE1100E6E1DA700BF6088 /* KeyframeAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KeyframeAnimation.h; path = animation/KeyframeAnimation.h; sourceTree = ""; }; + 31741AAB16635E45008A5B7E /* SimulatedClickOptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SimulatedClickOptions.h; sourceTree = ""; }; + 3189E6DB16B2103500386EA3 /* plugIns.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = plugIns.css; sourceTree = ""; }; + 319AE061142D6B24006563A1 /* StyleFilterData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleFilterData.cpp; path = style/StyleFilterData.cpp; sourceTree = ""; }; + 319AE062142D6B24006563A1 /* StyleFilterData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleFilterData.h; path = style/StyleFilterData.h; sourceTree = ""; }; + 319FBD5D15D2F444009640A6 /* CachedImageClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedImageClient.h; sourceTree = ""; }; + 31C0FF1B0E4CEB6E007D6FE5 /* WebKitAnimationEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitAnimationEvent.cpp; sourceTree = ""; }; + 31C0FF1C0E4CEB6E007D6FE5 /* WebKitAnimationEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitAnimationEvent.h; sourceTree = ""; }; + 31C0FF1D0E4CEB6E007D6FE5 /* WebKitAnimationEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebKitAnimationEvent.idl; sourceTree = ""; }; + 31C0FF1E0E4CEB6E007D6FE5 /* WebKitTransitionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitTransitionEvent.cpp; sourceTree = ""; }; + 31C0FF1F0E4CEB6E007D6FE5 /* WebKitTransitionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitTransitionEvent.h; sourceTree = ""; }; + 31C0FF200E4CEB6E007D6FE5 /* WebKitTransitionEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebKitTransitionEvent.idl; sourceTree = ""; }; + 31C0FF390E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitAnimationEvent.cpp; sourceTree = ""; }; + 31C0FF3A0E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebKitAnimationEvent.h; sourceTree = ""; }; + 31C0FF3B0E4CEFAC007D6FE5 /* JSWebKitTransitionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitTransitionEvent.cpp; sourceTree = ""; }; + 31C0FF3C0E4CEFAC007D6FE5 /* JSWebKitTransitionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebKitTransitionEvent.h; sourceTree = ""; }; + 31C0FF430E4CEFDD007D6FE5 /* DOMWebKitAnimationEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitAnimationEvent.h; sourceTree = ""; }; + 31C0FF440E4CEFDD007D6FE5 /* DOMWebKitAnimationEvent.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMWebKitAnimationEvent.mm; sourceTree = ""; }; + 31C0FF450E4CEFDD007D6FE5 /* DOMWebKitAnimationEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitAnimationEventInternal.h; sourceTree = ""; }; + 31C0FF460E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitTransitionEvent.h; sourceTree = ""; }; + 31C0FF470E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMWebKitTransitionEvent.mm; sourceTree = ""; }; + 31C0FF480E4CEFDD007D6FE5 /* DOMWebKitTransitionEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitTransitionEventInternal.h; sourceTree = ""; }; + 31D591B116697A6C00E6BF02 /* PlugInClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlugInClient.h; sourceTree = ""; }; + 31E8D8BA160BC94B004CE8F5 /* RenderSnapshottedPlugIn.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSnapshottedPlugIn.cpp; sourceTree = ""; }; + 31E8D8BB160BC94C004CE8F5 /* RenderSnapshottedPlugIn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSnapshottedPlugIn.h; sourceTree = ""; }; + 31EC1D5014FEFD0800C94662 /* NotificationPermissionCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = NotificationPermissionCallback.idl; path = Modules/notifications/NotificationPermissionCallback.idl; sourceTree = ""; }; + 31EC1DAC14FF26EA00C94662 /* NotificationPermissionCallback.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NotificationPermissionCallback.h; path = Modules/notifications/NotificationPermissionCallback.h; sourceTree = ""; }; + 31EC1E2614FF60EE00C94662 /* JSNotificationPermissionCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNotificationPermissionCallback.cpp; sourceTree = ""; }; + 31EC1E2714FF60EE00C94662 /* JSNotificationPermissionCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNotificationPermissionCallback.h; sourceTree = ""; }; + 31FB1A4F120A5D0600DC02A0 /* DeviceMotionClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceMotionClient.h; sourceTree = ""; }; + 31FB1A50120A5D0600DC02A0 /* DeviceMotionController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeviceMotionController.cpp; sourceTree = ""; }; + 31FB1A51120A5D0600DC02A0 /* DeviceMotionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceMotionController.h; sourceTree = ""; }; + 31FB1A52120A5D0600DC02A0 /* DeviceMotionData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeviceMotionData.cpp; sourceTree = ""; }; + 31FB1A53120A5D0600DC02A0 /* DeviceMotionData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceMotionData.h; sourceTree = ""; }; + 31FB1A54120A5D0600DC02A0 /* DeviceMotionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeviceMotionEvent.cpp; sourceTree = ""; }; + 31FB1A55120A5D0600DC02A0 /* DeviceMotionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceMotionEvent.h; sourceTree = ""; }; + 31FB1A56120A5D0600DC02A0 /* DeviceMotionEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DeviceMotionEvent.idl; sourceTree = ""; }; + 31FB1A63120A5D3F00DC02A0 /* JSDeviceMotionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDeviceMotionEvent.cpp; sourceTree = ""; }; + 31FB1A64120A5D3F00DC02A0 /* JSDeviceMotionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDeviceMotionEvent.h; sourceTree = ""; }; + 31FB1A6B120A5D6900DC02A0 /* JSDeviceMotionEventCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDeviceMotionEventCustom.cpp; sourceTree = ""; }; + 3314ACE910892086000F0E56 /* JSExceptionBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSExceptionBase.cpp; sourceTree = ""; }; + 3314ACEA10892086000F0E56 /* JSExceptionBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSExceptionBase.h; sourceTree = ""; }; + 331FF67DE197B57393C46AA7 /* RenderMathMLSpace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderMathMLSpace.h; path = rendering/mathml/RenderMathMLSpace.h; sourceTree = SOURCE_ROOT; }; + 333F704E0FB49CA2008E12A6 /* Notification.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Notification.idl; path = Modules/notifications/Notification.idl; sourceTree = ""; }; + 333F704F0FB49CA2008E12A6 /* Notification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Notification.h; path = Modules/notifications/Notification.h; sourceTree = ""; }; + 33503C9910179A74003B47E1 /* NotificationClient.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = NotificationClient.h; path = Modules/notifications/NotificationClient.h; sourceTree = ""; }; + 33503C9F10179AD7003B47E1 /* JSNotification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNotification.cpp; sourceTree = ""; }; + 33503CA010179AD7003B47E1 /* JSNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNotification.h; sourceTree = ""; }; + 33503CA110179AD7003B47E1 /* JSNotificationCenter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNotificationCenter.cpp; sourceTree = ""; }; + 33503CA210179AD7003B47E1 /* JSNotificationCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNotificationCenter.h; sourceTree = ""; }; + 33503CC61017A1B1003B47E1 /* Notification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Notification.cpp; path = Modules/notifications/Notification.cpp; sourceTree = ""; }; + 3390CA510FFC157B00921962 /* NotificationCenter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NotificationCenter.cpp; path = Modules/notifications/NotificationCenter.cpp; sourceTree = ""; }; + 3390CA520FFC157B00921962 /* NotificationCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NotificationCenter.h; path = Modules/notifications/NotificationCenter.h; sourceTree = ""; }; + 3390CA530FFC157B00921962 /* NotificationCenter.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = NotificationCenter.idl; path = Modules/notifications/NotificationCenter.idl; sourceTree = ""; }; + 339B5B62131DAA3200F48D02 /* CookiesStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CookiesStrategy.h; sourceTree = ""; }; + 371941941566B37200A276D8 /* WebCoreNSCellExtras.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebCoreNSCellExtras.m; sourceTree = ""; }; + 371941951566B37200A276D8 /* WebCoreNSCellExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreNSCellExtras.h; sourceTree = ""; }; + 371A67CA11C6C7DB00047B8B /* HyphenationCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HyphenationCF.cpp; sourceTree = ""; }; + 371E65CB13661EDC00BEEDB0 /* PageSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageSerializer.h; sourceTree = ""; }; + 371E65CD13661EED00BEEDB0 /* PageSerializer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageSerializer.cpp; sourceTree = ""; }; + 371F4F3E0D25B9AF00ECE0D5 /* FontData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontData.h; sourceTree = ""; }; + 371F4F3F0D25B9AF00ECE0D5 /* FontData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontData.cpp; sourceTree = ""; }; + 371F4FFA0D25E7F300ECE0D5 /* SegmentedFontData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SegmentedFontData.h; sourceTree = ""; }; + 371F4FFB0D25E7F300ECE0D5 /* SegmentedFontData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SegmentedFontData.cpp; sourceTree = ""; }; + 371F519F0D262FA000ECE0D5 /* CSSSegmentedFontFace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSSegmentedFontFace.h; sourceTree = ""; }; + 371F51A00D262FA000ECE0D5 /* CSSSegmentedFontFace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSSegmentedFontFace.cpp; sourceTree = ""; }; + 371F53E70D2704F900ECE0D5 /* CSSUnicodeRangeValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSUnicodeRangeValue.h; sourceTree = ""; }; + 371F53E80D2704F900ECE0D5 /* CSSUnicodeRangeValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSUnicodeRangeValue.cpp; sourceTree = ""; }; + 37202198106213C600F25C4B /* FontSmoothingMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontSmoothingMode.h; sourceTree = ""; }; + 372C00C3129611F1005C9575 /* TextBoundaries.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextBoundaries.cpp; sourceTree = ""; }; + 372C00D8129619F8005C9575 /* FindOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FindOptions.h; sourceTree = ""; }; + 3744570E0DB05FA500AE0992 /* SVGGlyphMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGGlyphMap.h; sourceTree = ""; }; + 37569E0013AF172C00CDBA8E /* SharedBufferChunkReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SharedBufferChunkReader.cpp; sourceTree = ""; }; + 37569E0213AF172C00CDBA8E /* SharedBufferChunkReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SharedBufferChunkReader.h; sourceTree = ""; }; + 375CD231119D43C800A2A859 /* Hyphenation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Hyphenation.h; sourceTree = ""; }; + 375CD239119D44EA00A2A859 /* HyphenationMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = HyphenationMac.mm; sourceTree = ""; }; + 376DCCE013B4F966002EBEFC /* TextRun.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextRun.cpp; sourceTree = ""; }; + 3772B09516535856000A49CA /* PopupOpeningObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PopupOpeningObserver.h; sourceTree = ""; }; + 3774ABA30FA21EB400AD7DE9 /* OverlapTestRequestClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OverlapTestRequestClient.h; sourceTree = ""; }; + 377A3A8F15EFCE9A0059F5C7 /* BitmapImageCG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BitmapImageCG.cpp; sourceTree = ""; }; + 377C4CDD1014E9F600B9AE42 /* PlaceholderDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlaceholderDocument.h; sourceTree = ""; }; + 377C4CDE1014E9F600B9AE42 /* PlaceholderDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlaceholderDocument.cpp; sourceTree = ""; }; + 3784C34A0E11AA34007D8D48 /* FontTraitsMask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontTraitsMask.h; sourceTree = ""; }; + 37919C210B7D188600A56998 /* PositionIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PositionIterator.cpp; sourceTree = ""; }; + 37919C220B7D188600A56998 /* PositionIterator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PositionIterator.h; sourceTree = ""; }; + 379919941200DDF400EA041C /* WOFFFileFormat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WOFFFileFormat.cpp; sourceTree = ""; }; + 379919951200DDF400EA041C /* WOFFFileFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WOFFFileFormat.h; sourceTree = ""; }; + 379919B11200DE5000EA041C /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = ""; }; + 379E371413736A6600B9E919 /* QuotedPrintable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = QuotedPrintable.cpp; sourceTree = ""; }; + 379E371513736A6600B9E919 /* QuotedPrintable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuotedPrintable.h; sourceTree = ""; }; + 379E61C5126CA5C300B63E8D /* BaseButtonInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BaseButtonInputType.cpp; sourceTree = ""; }; + 379E61C6126CA5C300B63E8D /* BaseButtonInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseButtonInputType.h; sourceTree = ""; }; + 379E61C7126CA5C300B63E8D /* BaseCheckableInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BaseCheckableInputType.cpp; sourceTree = ""; }; + 379E61C8126CA5C300B63E8D /* BaseCheckableInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseCheckableInputType.h; sourceTree = ""; }; + 37ACCE410DA2980F0089E602 /* FontRenderingMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontRenderingMode.h; sourceTree = ""; }; + 37ACCE620DA2AA960089E602 /* FontDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontDescription.cpp; sourceTree = ""; }; + 37C2360A1097EDED00EF9F72 /* FontComplexTextMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontComplexTextMac.cpp; sourceTree = ""; }; + 37C2360E1097EE7700EF9F72 /* ComplexTextController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComplexTextController.cpp; sourceTree = ""; }; + 37C2360F1097EE7700EF9F72 /* ComplexTextController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ComplexTextController.h; sourceTree = ""; }; + 37C238201098C84200EF9F72 /* ComplexTextControllerCoreText.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ComplexTextControllerCoreText.mm; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 37C28A6710F659CC008C7813 /* TypesettingFeatures.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TypesettingFeatures.h; sourceTree = ""; }; + 37C61F0012095C87007A3C67 /* AtomicStringKeyedMRUCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AtomicStringKeyedMRUCache.h; sourceTree = ""; }; + 37DDCD9213844FD50008B793 /* MIMEHeader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MIMEHeader.cpp; sourceTree = ""; }; + 37DDCD9313844FD50008B793 /* MIMEHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MIMEHeader.h; sourceTree = ""; }; + 37DDCD9D13844FFA0008B793 /* Archive.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Archive.cpp; sourceTree = ""; }; + 37DDCDA11384501C0008B793 /* MHTMLArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MHTMLArchive.h; sourceTree = ""; }; + 37DDCDA31384501C0008B793 /* MHTMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MHTMLParser.h; sourceTree = ""; }; + 37E3524A12450C5200BAF5D9 /* InputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InputType.cpp; sourceTree = ""; }; + 37E3524C12450C6600BAF5D9 /* InputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InputType.h; sourceTree = ""; }; + 37F818FB0D657606005E1F05 /* WebCoreURLResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreURLResponse.h; sourceTree = ""; }; + 37F818FC0D657606005E1F05 /* WebCoreURLResponse.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreURLResponse.mm; sourceTree = ""; }; + 37FC96DA1104ED71003E1FAD /* TrailingFloatsRootInlineBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrailingFloatsRootInlineBox.h; sourceTree = ""; }; + 37FD4297118368460093C029 /* TreeDepthLimit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreeDepthLimit.h; sourceTree = ""; }; + 3AB02D2812D4F91600FBB694 /* StorageTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageTracker.h; sourceTree = ""; }; + 3AB02D2912D4F91600FBB694 /* StorageTracker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageTracker.cpp; sourceTree = ""; }; + 3AC367FE12EF7A09006A3D6F /* StorageTrackerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageTrackerClient.h; sourceTree = ""; }; + 3AC648B1129E146500C3EB25 /* EditingBoundary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditingBoundary.h; sourceTree = ""; }; + 3C244FE4A375AC633F88BE6F /* RenderLayerModelObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderLayerModelObject.h; sourceTree = ""; }; + 3C244FE5A375AC633F88BE6F /* RenderLayerModelObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderLayerModelObject.cpp; sourceTree = ""; }; + 3F2B33E3165ABD3500E3987C /* WebKitCSSViewportRule.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebKitCSSViewportRule.idl; sourceTree = ""; }; + 3F2B33E6165AF15500E3987C /* DOMWebKitCSSViewportRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSViewportRule.h; sourceTree = ""; }; + 3F2B33E7165AF15500E3987C /* DOMWebKitCSSViewportRule.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMWebKitCSSViewportRule.mm; sourceTree = ""; }; + 3F2B33E8165AF15500E3987C /* DOMWebKitCSSViewportRuleInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSViewportRuleInternal.h; sourceTree = ""; }; + 3F2B33E9165AF15500E3987C /* JSWebKitCSSViewportRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitCSSViewportRule.cpp; sourceTree = ""; }; + 3F2B33EA165AF15500E3987C /* JSWebKitCSSViewportRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebKitCSSViewportRule.h; sourceTree = ""; }; + 3FFFF9A6159D9A550020BBD5 /* WebKitCSSViewportRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitCSSViewportRule.cpp; sourceTree = ""; }; + 3FFFF9A7159D9A550020BBD5 /* WebKitCSSViewportRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitCSSViewportRule.h; sourceTree = ""; }; + 3FFFF9AB159D9B060020BBD5 /* ViewportStyleResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ViewportStyleResolver.cpp; sourceTree = ""; }; + 3FFFF9AC159D9B060020BBD5 /* ViewportStyleResolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewportStyleResolver.h; sourceTree = ""; }; + 409EBDAC16B7EE1C00CBA3FC /* CSSFontFaceLoadEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSFontFaceLoadEvent.cpp; sourceTree = ""; }; + 409EBDAE16B7EE2800CBA3FC /* CSSFontFaceLoadEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSFontFaceLoadEvent.h; sourceTree = ""; }; + 409EBDAF16B7EE5700CBA3FC /* CSSFontFaceLoadEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CSSFontFaceLoadEvent.idl; sourceTree = ""; }; + 409EBDB516B7EEA300CBA3FC /* FontLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontLoader.h; sourceTree = ""; }; + 409EBDB716B7EEBA00CBA3FC /* FontLoader.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = FontLoader.idl; sourceTree = ""; }; + 409EBDBF16B7F38E00CBA3FC /* JSFontLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFontLoader.h; sourceTree = ""; }; + 409EBDC216B7F3A600CBA3FC /* JSCSSFontFaceLoadEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCSSFontFaceLoadEvent.h; sourceTree = ""; }; + 409EBDC416B7F3CA00CBA3FC /* JSCSSFontFaceLoadEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSFontFaceLoadEvent.cpp; sourceTree = ""; }; + 40ECAE7D16B8B67200C36103 /* JSDOMError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMError.h; sourceTree = ""; }; + 40ECAE8016B8B68A00C36103 /* JSDOMError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMError.cpp; sourceTree = ""; }; + 41002CCB0F66EDEF009E660D /* ScriptFunctionCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptFunctionCall.h; sourceTree = ""; }; + 41002CCC0F66EDEF009E660D /* ScriptFunctionCall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptFunctionCall.cpp; sourceTree = ""; }; + 410B7E711045FAB000D8224F /* JSMessageEventCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMessageEventCustom.cpp; sourceTree = ""; }; + 4110463F0FA222A600BA436A /* ScriptEventListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptEventListener.h; sourceTree = ""; }; + 411046400FA222A600BA436A /* ScriptEventListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptEventListener.cpp; sourceTree = ""; }; + 4123E567127B3041000FEEA7 /* WindowEventContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WindowEventContext.h; sourceTree = ""; }; + 4123E568127B3041000FEEA7 /* WindowEventContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WindowEventContext.cpp; sourceTree = ""; }; + 4127D5360F8AAB1D00E424F5 /* ScriptState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptState.cpp; sourceTree = ""; }; + 4138D3331244054800323D33 /* EventContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventContext.h; sourceTree = ""; }; + 4138D3341244054800323D33 /* EventContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventContext.cpp; sourceTree = ""; }; + 415071551685067300C3C7B3 /* SelectorFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SelectorFilter.cpp; sourceTree = ""; }; + 415071561685067300C3C7B3 /* SelectorFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SelectorFilter.h; sourceTree = ""; }; + 4150F9EF12B6E0E70008C860 /* SliderThumbElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SliderThumbElement.h; sourceTree = ""; }; + 4150F9F012B6E0E70008C860 /* SliderThumbElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SliderThumbElement.cpp; sourceTree = ""; }; + 4157AF7E12F1FB0400A8C6F5 /* MediaControlsApple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaControlsApple.h; sourceTree = ""; }; + 4157AF7F12F1FB0400A8C6F5 /* MediaControlsApple.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaControlsApple.cpp; sourceTree = ""; }; + 4162A44D101145AE00DFF3ED /* DedicatedWorkerGlobalScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DedicatedWorkerGlobalScope.cpp; path = workers/DedicatedWorkerGlobalScope.cpp; sourceTree = ""; }; + 4162A44E101145AE00DFF3ED /* DedicatedWorkerGlobalScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DedicatedWorkerGlobalScope.h; path = workers/DedicatedWorkerGlobalScope.h; sourceTree = ""; }; + 4162A44F101145AE00DFF3ED /* DedicatedWorkerGlobalScope.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DedicatedWorkerGlobalScope.idl; path = workers/DedicatedWorkerGlobalScope.idl; sourceTree = ""; }; + 4162A453101145E300DFF3ED /* JSDedicatedWorkerGlobalScopeCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDedicatedWorkerGlobalScopeCustom.cpp; sourceTree = ""; }; + 4162A4551011464700DFF3ED /* JSDedicatedWorkerGlobalScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDedicatedWorkerGlobalScope.cpp; sourceTree = ""; }; + 4162A4561011464700DFF3ED /* JSDedicatedWorkerGlobalScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDedicatedWorkerGlobalScope.h; sourceTree = ""; }; + 4167EBF3102962BA003D252A /* DefaultSharedWorkerRepository.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DefaultSharedWorkerRepository.cpp; path = workers/DefaultSharedWorkerRepository.cpp; sourceTree = ""; }; + 4167EBF4102962BA003D252A /* DefaultSharedWorkerRepository.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DefaultSharedWorkerRepository.h; path = workers/DefaultSharedWorkerRepository.h; sourceTree = ""; }; + 416E29A5102FA962007FC14E /* WorkerReportingProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerReportingProxy.h; path = workers/WorkerReportingProxy.h; sourceTree = ""; }; + 416E75BC0EDF8FD700360E1D /* ScriptCallStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptCallStack.h; sourceTree = ""; }; + 416E75BD0EDF8FD700360E1D /* ScriptCallStack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptCallStack.cpp; sourceTree = ""; }; + 416E75C90EDF90C700360E1D /* ScriptCallFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptCallFrame.h; sourceTree = ""; }; + 416E75CA0EDF90C700360E1D /* ScriptCallFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptCallFrame.cpp; sourceTree = ""; }; + 417253A81354BBBC00360F2A /* MediaControlElements.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaControlElements.cpp; sourceTree = ""; }; + 417253A91354BBBC00360F2A /* MediaControlElements.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaControlElements.h; sourceTree = ""; }; + 417DA4CE13734326007C57FB /* Internals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Internals.h; sourceTree = ""; }; + 417DA4CF13734326007C57FB /* Internals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Internals.cpp; sourceTree = ""; }; + 417DA6D013734E02007C57FB /* libWebCoreTestSupport.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libWebCoreTestSupport.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 417DA71B13735DFA007C57FB /* JSInternals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInternals.cpp; sourceTree = ""; }; + 417DA71C13735DFA007C57FB /* JSInternals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSInternals.h; sourceTree = ""; }; + 41813F9113818AD60057AAA4 /* Internals.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Internals.idl; sourceTree = ""; }; + 41815C1C138319830057AAA4 /* WebCoreTestSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebCoreTestSupport.cpp; sourceTree = ""; }; + 41815C1D138319830057AAA4 /* WebCoreTestSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreTestSupport.h; sourceTree = ""; }; + 4181707D1386EDF20057AAA4 /* WebCoreTestSupport.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = WebCoreTestSupport.xcconfig; sourceTree = ""; }; + 41885B9111B6FDA6003383BB /* FormSubmission.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormSubmission.h; sourceTree = ""; }; + 41885B9211B6FDA6003383BB /* FormSubmission.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FormSubmission.cpp; sourceTree = ""; }; + 418A06CE133C04D500CD379C /* EventDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventDispatcher.h; sourceTree = ""; }; + 418A06CF133C04D500CD379C /* EventDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventDispatcher.cpp; sourceTree = ""; }; + 418F88020FF957AE0080F045 /* JSAbstractWorker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAbstractWorker.cpp; sourceTree = ""; }; + 418F88030FF957AE0080F045 /* JSAbstractWorker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAbstractWorker.h; sourceTree = ""; }; + 419BC2DC1685329900D64D6D /* VisitedLinkState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VisitedLinkState.cpp; sourceTree = ""; }; + 419BC2DD1685329900D64D6D /* VisitedLinkState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VisitedLinkState.h; sourceTree = ""; }; + 41A3D58C101C152D00316D07 /* DedicatedWorkerThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DedicatedWorkerThread.cpp; path = workers/DedicatedWorkerThread.cpp; sourceTree = ""; }; + 41A3D58D101C152D00316D07 /* DedicatedWorkerThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DedicatedWorkerThread.h; path = workers/DedicatedWorkerThread.h; sourceTree = ""; }; + 41B8CD4316D04591000E8CC0 /* SelectorCheckerFastPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SelectorCheckerFastPath.cpp; sourceTree = ""; }; + 41B8CD4416D04591000E8CC0 /* SelectorCheckerFastPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SelectorCheckerFastPath.h; sourceTree = ""; }; + 41BF700A0FE86F49005E8DEC /* MessagePortChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessagePortChannel.h; sourceTree = ""; }; + 41BF700D0FE86F61005E8DEC /* PlatformMessagePortChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PlatformMessagePortChannel.cpp; path = default/PlatformMessagePortChannel.cpp; sourceTree = ""; }; + 41BF700E0FE86F61005E8DEC /* PlatformMessagePortChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformMessagePortChannel.h; path = default/PlatformMessagePortChannel.h; sourceTree = ""; }; + 41C760B00EDE03D300C1655F /* ScriptState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptState.h; sourceTree = ""; }; + 41D015C80F4B5C71004A662F /* ContentType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContentType.h; sourceTree = ""; }; + 41D015C90F4B5C71004A662F /* ContentType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContentType.cpp; sourceTree = ""; }; + 41D07A7C0FF935CA0095EDCE /* JSSharedWorker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSharedWorker.cpp; sourceTree = ""; }; + 41D07A7D0FF935CA0095EDCE /* JSSharedWorker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSharedWorker.h; sourceTree = ""; }; + 41D168DF10226E89009BC827 /* SharedWorkerGlobalScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SharedWorkerGlobalScope.cpp; path = workers/SharedWorkerGlobalScope.cpp; sourceTree = ""; }; + 41D168E010226E89009BC827 /* SharedWorkerGlobalScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SharedWorkerGlobalScope.h; path = workers/SharedWorkerGlobalScope.h; sourceTree = ""; }; + 41D168E110226E89009BC827 /* SharedWorkerGlobalScope.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SharedWorkerGlobalScope.idl; path = workers/SharedWorkerGlobalScope.idl; sourceTree = ""; }; + 41D168E210226E89009BC827 /* SharedWorkerRepository.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SharedWorkerRepository.h; path = workers/SharedWorkerRepository.h; sourceTree = ""; }; + 41D168E510226E89009BC827 /* SharedWorkerThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SharedWorkerThread.cpp; path = workers/SharedWorkerThread.cpp; sourceTree = ""; }; + 41D168E610226E89009BC827 /* SharedWorkerThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SharedWorkerThread.h; path = workers/SharedWorkerThread.h; sourceTree = ""; }; + 41D1690310238B66009BC827 /* JSSharedWorkerGlobalScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSharedWorkerGlobalScope.cpp; sourceTree = ""; }; + 41D1690410238B66009BC827 /* JSSharedWorkerGlobalScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSharedWorkerGlobalScope.h; sourceTree = ""; }; + 41E1B1CA0FF5986900576B3B /* AbstractWorker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AbstractWorker.cpp; path = workers/AbstractWorker.cpp; sourceTree = ""; }; + 41E1B1CB0FF5986900576B3B /* AbstractWorker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AbstractWorker.h; path = workers/AbstractWorker.h; sourceTree = ""; }; + 41E1B1CC0FF5986900576B3B /* AbstractWorker.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = AbstractWorker.idl; path = workers/AbstractWorker.idl; sourceTree = ""; }; + 41E1B1CD0FF5986900576B3B /* SharedWorker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SharedWorker.cpp; path = workers/SharedWorker.cpp; sourceTree = ""; }; + 41E1B1CE0FF5986900576B3B /* SharedWorker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SharedWorker.h; path = workers/SharedWorker.h; sourceTree = ""; }; + 41E1B1CF0FF5986900576B3B /* SharedWorker.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SharedWorker.idl; path = workers/SharedWorker.idl; sourceTree = ""; }; + 41F0618C0F5F069800A07EAC /* ConsoleMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConsoleMessage.h; sourceTree = ""; }; + 41F0618D0F5F069800A07EAC /* ConsoleMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConsoleMessage.cpp; sourceTree = ""; }; + 41F062120F5F192600A07EAC /* InspectorDatabaseResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDatabaseResource.h; sourceTree = ""; }; + 41F062130F5F192600A07EAC /* InspectorDatabaseResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorDatabaseResource.cpp; sourceTree = ""; }; + 41F066E20F64BCF600A07EAC /* ScriptObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptObject.h; sourceTree = ""; }; + 41F066E30F64BCF600A07EAC /* ScriptObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptObject.cpp; sourceTree = ""; }; + 41F1D21D0EF35C2A00DA8753 /* ScriptCachedFrameData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptCachedFrameData.h; sourceTree = ""; }; + 41F1D21E0EF35C2A00DA8753 /* ScriptCachedFrameData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptCachedFrameData.cpp; sourceTree = ""; }; + 41F584C6104652CB009CAA64 /* JSMessagePortCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMessagePortCustom.h; sourceTree = ""; }; + 41FA303C1316C29C00C0BFC5 /* RenderMediaControls.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMediaControls.cpp; sourceTree = ""; }; + 41FA303D1316C29C00C0BFC5 /* RenderMediaControls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMediaControls.h; sourceTree = ""; }; + 4306E4E514955543007F17AC /* KillRingNone.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KillRingNone.cpp; sourceTree = ""; }; + 43142E7913B1E97700F1C871 /* SVGAnimatedRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedRect.cpp; sourceTree = ""; }; + 431A2F9A13B6F2B0007791E4 /* SVGAnimatedNumberOptionalNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedNumberOptionalNumber.h; sourceTree = ""; }; + 431A2F9B13B6F2B0007791E4 /* SVGAnimatedNumberOptionalNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedNumberOptionalNumber.cpp; sourceTree = ""; }; + 431A2FD613B7707A007791E4 /* SVGAnimatedLengthList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedLengthList.cpp; sourceTree = ""; }; + 431A302013B89DCC007791E4 /* SVGAnimatedPreserveAspectRatio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedPreserveAspectRatio.cpp; sourceTree = ""; }; + 431A308713B8F978007791E4 /* SVGAnimatedBoolean.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedBoolean.cpp; sourceTree = ""; }; + 4331AC7713B6870000A9E5AE /* SVGAnimatedNumberList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedNumberList.cpp; sourceTree = ""; }; + 4358E87A1360A2EE00E4748C /* JSSVGFEDropShadowElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEDropShadowElement.cpp; sourceTree = ""; }; + 4358E87B1360A2EE00E4748C /* JSSVGFEDropShadowElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGFEDropShadowElement.h; sourceTree = ""; }; + 4358E87E1360A31700E4748C /* FEDropShadow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FEDropShadow.cpp; path = filters/FEDropShadow.cpp; sourceTree = ""; }; + 4358E87F1360A31700E4748C /* FEDropShadow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FEDropShadow.h; path = filters/FEDropShadow.h; sourceTree = ""; }; + 4358E8821360A33B00E4748C /* SVGFEDropShadowElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEDropShadowElement.cpp; sourceTree = ""; }; + 4358E8831360A33B00E4748C /* SVGFEDropShadowElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGFEDropShadowElement.h; sourceTree = ""; }; + 4358E8841360A33B00E4748C /* SVGFEDropShadowElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGFEDropShadowElement.idl; sourceTree = ""; }; + 4362C7B813AC6F1A00344BEB /* SVGAnimatedAngle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedAngle.cpp; sourceTree = ""; }; + 4367088112D9CA4A00044234 /* RenderSVGBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGBlock.cpp; sourceTree = ""; }; + 4367088212D9CA4A00044234 /* RenderSVGBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGBlock.h; sourceTree = ""; }; + 4367088312D9CA4A00044234 /* RenderSVGContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGContainer.cpp; sourceTree = ""; }; + 4367088412D9CA4A00044234 /* RenderSVGContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGContainer.h; sourceTree = ""; }; + 4367088512D9CA4A00044234 /* RenderSVGGradientStop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGGradientStop.cpp; sourceTree = ""; }; + 4367088612D9CA4A00044234 /* RenderSVGGradientStop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGGradientStop.h; sourceTree = ""; }; + 4367088712D9CA4A00044234 /* RenderSVGHiddenContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGHiddenContainer.cpp; sourceTree = ""; }; + 4367088812D9CA4A00044234 /* RenderSVGHiddenContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGHiddenContainer.h; sourceTree = ""; }; + 4367088912D9CA4A00044234 /* RenderSVGImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGImage.cpp; sourceTree = ""; }; + 4367088A12D9CA4A00044234 /* RenderSVGImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGImage.h; sourceTree = ""; }; + 4367088B12D9CA4A00044234 /* RenderSVGModelObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGModelObject.cpp; sourceTree = ""; }; + 4367088C12D9CA4A00044234 /* RenderSVGModelObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGModelObject.h; sourceTree = ""; }; + 4367088D12D9CA4A00044234 /* RenderSVGResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResource.cpp; sourceTree = ""; }; + 4367088E12D9CA4A00044234 /* RenderSVGResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGResource.h; sourceTree = ""; }; + 4367088F12D9CA4A00044234 /* RenderSVGResourceClipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResourceClipper.cpp; sourceTree = ""; }; + 4367089012D9CA4A00044234 /* RenderSVGResourceClipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGResourceClipper.h; sourceTree = ""; }; + 4367089112D9CA4A00044234 /* RenderSVGResourceContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResourceContainer.cpp; sourceTree = ""; }; + 4367089212D9CA4A00044234 /* RenderSVGResourceContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGResourceContainer.h; sourceTree = ""; }; + 4367089312D9CA4A00044234 /* RenderSVGResourceFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResourceFilter.cpp; sourceTree = ""; }; + 4367089412D9CA4A00044234 /* RenderSVGResourceFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGResourceFilter.h; sourceTree = ""; }; + 4367089512D9CA4A00044234 /* RenderSVGResourceFilterPrimitive.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResourceFilterPrimitive.cpp; sourceTree = ""; }; + 4367089612D9CA4A00044234 /* RenderSVGResourceFilterPrimitive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGResourceFilterPrimitive.h; sourceTree = ""; }; + 4367089712D9CA4A00044234 /* RenderSVGResourceGradient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResourceGradient.cpp; sourceTree = ""; }; + 4367089812D9CA4A00044234 /* RenderSVGResourceGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGResourceGradient.h; sourceTree = ""; }; + 4367089912D9CA4B00044234 /* RenderSVGResourceLinearGradient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResourceLinearGradient.cpp; sourceTree = ""; }; + 4367089A12D9CA4B00044234 /* RenderSVGResourceLinearGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGResourceLinearGradient.h; sourceTree = ""; }; + 4367089B12D9CA4B00044234 /* RenderSVGResourceMarker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResourceMarker.cpp; sourceTree = ""; }; + 4367089C12D9CA4B00044234 /* RenderSVGResourceMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGResourceMarker.h; sourceTree = ""; }; + 4367089D12D9CA4B00044234 /* RenderSVGResourceMasker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResourceMasker.cpp; sourceTree = ""; }; + 4367089E12D9CA4B00044234 /* RenderSVGResourceMasker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGResourceMasker.h; sourceTree = ""; }; + 4367089F12D9CA4B00044234 /* RenderSVGResourcePattern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResourcePattern.cpp; sourceTree = ""; }; + 436708A012D9CA4B00044234 /* RenderSVGResourcePattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGResourcePattern.h; sourceTree = ""; }; + 436708A112D9CA4B00044234 /* RenderSVGResourceRadialGradient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResourceRadialGradient.cpp; sourceTree = ""; }; + 436708A212D9CA4B00044234 /* RenderSVGResourceRadialGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGResourceRadialGradient.h; sourceTree = ""; }; + 436708A312D9CA4B00044234 /* RenderSVGResourceSolidColor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResourceSolidColor.cpp; sourceTree = ""; }; + 436708A412D9CA4B00044234 /* RenderSVGResourceSolidColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGResourceSolidColor.h; sourceTree = ""; }; + 436708A512D9CA4B00044234 /* RenderSVGRoot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGRoot.cpp; sourceTree = ""; }; + 436708A612D9CA4B00044234 /* RenderSVGRoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGRoot.h; sourceTree = ""; }; + 436708A912D9CA4B00044234 /* RenderSVGTransformableContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGTransformableContainer.cpp; sourceTree = ""; }; + 436708AA12D9CA4B00044234 /* RenderSVGTransformableContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGTransformableContainer.h; sourceTree = ""; }; + 436708AB12D9CA4B00044234 /* RenderSVGViewportContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGViewportContainer.cpp; sourceTree = ""; }; + 436708AC12D9CA4B00044234 /* RenderSVGViewportContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGViewportContainer.h; sourceTree = ""; }; + 436708AF12D9CA4B00044234 /* SVGMarkerData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGMarkerData.h; sourceTree = ""; }; + 436708B212D9CA4B00044234 /* SVGRenderSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGRenderSupport.cpp; sourceTree = ""; }; + 436708B312D9CA4B00044234 /* SVGRenderSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGRenderSupport.h; sourceTree = ""; }; + 436708B412D9CA4B00044234 /* SVGRenderTreeAsText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGRenderTreeAsText.cpp; sourceTree = ""; }; + 436708B512D9CA4B00044234 /* SVGRenderTreeAsText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGRenderTreeAsText.h; sourceTree = ""; }; + 436708B612D9CA4B00044234 /* SVGResources.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGResources.cpp; sourceTree = ""; }; + 436708B712D9CA4B00044234 /* SVGResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGResources.h; sourceTree = ""; }; + 436708B812D9CA4B00044234 /* SVGResourcesCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGResourcesCache.cpp; sourceTree = ""; }; + 436708B912D9CA4B00044234 /* SVGResourcesCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGResourcesCache.h; sourceTree = ""; }; + 436708BA12D9CA4B00044234 /* SVGResourcesCycleSolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGResourcesCycleSolver.cpp; sourceTree = ""; }; + 436708BB12D9CA4B00044234 /* SVGResourcesCycleSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGResourcesCycleSolver.h; sourceTree = ""; }; + 4381763A13A697D4007D1187 /* SVGAnimatedLength.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedLength.cpp; sourceTree = ""; }; + 439046C312DA25E800AF80A2 /* RenderMathMLBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderMathMLBlock.cpp; path = mathml/RenderMathMLBlock.cpp; sourceTree = ""; }; + 439046C412DA25E800AF80A2 /* RenderMathMLBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderMathMLBlock.h; path = mathml/RenderMathMLBlock.h; sourceTree = ""; }; + 439046C512DA25E800AF80A2 /* RenderMathMLFenced.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderMathMLFenced.cpp; path = mathml/RenderMathMLFenced.cpp; sourceTree = ""; }; + 439046C612DA25E800AF80A2 /* RenderMathMLFenced.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderMathMLFenced.h; path = mathml/RenderMathMLFenced.h; sourceTree = ""; }; + 439046C712DA25E800AF80A2 /* RenderMathMLFraction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderMathMLFraction.cpp; path = mathml/RenderMathMLFraction.cpp; sourceTree = ""; }; + 439046C812DA25E800AF80A2 /* RenderMathMLFraction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderMathMLFraction.h; path = mathml/RenderMathMLFraction.h; sourceTree = ""; }; + 439046C912DA25E800AF80A2 /* RenderMathMLMath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderMathMLMath.cpp; path = mathml/RenderMathMLMath.cpp; sourceTree = ""; }; + 439046CA12DA25E800AF80A2 /* RenderMathMLMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderMathMLMath.h; path = mathml/RenderMathMLMath.h; sourceTree = ""; }; + 439046CB12DA25E800AF80A2 /* RenderMathMLOperator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderMathMLOperator.cpp; path = mathml/RenderMathMLOperator.cpp; sourceTree = ""; }; + 439046CC12DA25E800AF80A2 /* RenderMathMLOperator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderMathMLOperator.h; path = mathml/RenderMathMLOperator.h; sourceTree = ""; }; + 439046CD12DA25E800AF80A2 /* RenderMathMLRoot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderMathMLRoot.cpp; path = mathml/RenderMathMLRoot.cpp; sourceTree = ""; }; + 439046CE12DA25E800AF80A2 /* RenderMathMLRoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderMathMLRoot.h; path = mathml/RenderMathMLRoot.h; sourceTree = ""; }; + 439046CF12DA25E800AF80A2 /* RenderMathMLRow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderMathMLRow.cpp; path = mathml/RenderMathMLRow.cpp; sourceTree = ""; }; + 439046D012DA25E800AF80A2 /* RenderMathMLRow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderMathMLRow.h; path = mathml/RenderMathMLRow.h; sourceTree = ""; }; + 439046D112DA25E800AF80A2 /* RenderMathMLSquareRoot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderMathMLSquareRoot.cpp; path = mathml/RenderMathMLSquareRoot.cpp; sourceTree = ""; }; + 439046D212DA25E800AF80A2 /* RenderMathMLSquareRoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderMathMLSquareRoot.h; path = mathml/RenderMathMLSquareRoot.h; sourceTree = ""; }; + 439046D312DA25E800AF80A2 /* RenderMathMLSubSup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderMathMLSubSup.cpp; path = mathml/RenderMathMLSubSup.cpp; sourceTree = ""; }; + 439046D412DA25E800AF80A2 /* RenderMathMLSubSup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderMathMLSubSup.h; path = mathml/RenderMathMLSubSup.h; sourceTree = ""; }; + 439046D512DA25E800AF80A2 /* RenderMathMLUnderOver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderMathMLUnderOver.cpp; path = mathml/RenderMathMLUnderOver.cpp; sourceTree = ""; }; + 439046D612DA25E800AF80A2 /* RenderMathMLUnderOver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderMathMLUnderOver.h; path = mathml/RenderMathMLUnderOver.h; sourceTree = ""; }; + 439D334013A6911C00C20F4F /* SVGAnimatedType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedType.h; sourceTree = ""; }; + 439D334113A6911C00C20F4F /* SVGAnimatedTypeAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedTypeAnimator.h; sourceTree = ""; }; + 439D334213A6911C00C20F4F /* SVGAnimatorFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatorFactory.h; sourceTree = ""; }; + 43A0F0B013AC7D6D00A5F0A7 /* SVGAnimatedNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedNumber.cpp; sourceTree = ""; }; + 43A0F0B513ACCCFF00A5F0A7 /* SVGAnimatedType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedType.cpp; sourceTree = ""; }; + 43A625F613B3304000AC94B8 /* SVGAnimatedColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedColor.h; sourceTree = ""; }; + 43A625F713B3304000AC94B8 /* SVGAnimatedColor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedColor.cpp; sourceTree = ""; }; + 43A6266613B3D11000AC94B8 /* SVGAnimatedString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedString.cpp; sourceTree = ""; }; + 43B9336713B261B1004584BF /* SVGAnimatedPointList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedPointList.h; sourceTree = ""; }; + 43B9336813B261B1004584BF /* SVGAnimatedPointList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedPointList.cpp; sourceTree = ""; }; + 43C092B912D9E4EE00A989C3 /* RenderSVGForeignObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGForeignObject.cpp; sourceTree = ""; }; + 43C092BA12D9E4EE00A989C3 /* RenderSVGForeignObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGForeignObject.h; sourceTree = ""; }; + 43D2597613C816F400608559 /* ImageBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageBuffer.cpp; sourceTree = ""; }; + 43F6FD9513BCD0B100224052 /* SVGAnimatedInteger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedInteger.cpp; sourceTree = ""; }; + 4415292C0E1AE8A000C4A2D0 /* HTMLPlugInImageElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLPlugInImageElement.h; sourceTree = ""; }; + 4415292D0E1AE8A000C4A2D0 /* HTMLPlugInImageElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLPlugInImageElement.cpp; sourceTree = ""; }; + 4429AAFB0CB84E88007647C5 /* DOMHTMLEmbedElementPrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLEmbedElementPrivate.h; sourceTree = ""; }; + 4429AAFD0CB84EA5007647C5 /* DOMHTMLIFrameElementPrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLIFrameElementPrivate.h; sourceTree = ""; }; + 4429AAFF0CB84EC3007647C5 /* DOMHTMLObjectElementPrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLObjectElementPrivate.h; sourceTree = ""; }; + 4429AB070CB84F81007647C5 /* DOMTextEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMTextEventInternal.h; sourceTree = ""; }; + 44311CD412E4E22D000A8D19 /* DOMDocumentFragmentPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMDocumentFragmentPrivate.h; sourceTree = ""; }; + 44311CD512E4E22D000A8D19 /* DOMDocumentPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMDocumentPrivate.h; sourceTree = ""; }; + 447958021643B47B001E0A7F /* ParsedContentType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParsedContentType.cpp; sourceTree = ""; }; + 447958031643B47B001E0A7F /* ParsedContentType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParsedContentType.h; sourceTree = ""; }; + 448A29BD0A46D9CB0030759F /* JSHTMLOptionsCollection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLOptionsCollection.h; sourceTree = ""; }; + 448A29BE0A46D9CB0030759F /* JSHTMLOptionsCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLOptionsCollection.cpp; sourceTree = ""; }; + 448AD27A0A4813790023D179 /* JSHTMLOptionsCollectionCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLOptionsCollectionCustom.cpp; sourceTree = ""; }; + 449098B10F8F82520076A327 /* FeatureDefines.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FeatureDefines.xcconfig; sourceTree = ""; }; + 4496E39B1398136C003EE32A /* JSSVGAnimateMotionElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimateMotionElement.cpp; sourceTree = ""; }; + 4496E39C1398136C003EE32A /* JSSVGAnimateMotionElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimateMotionElement.h; sourceTree = ""; }; + 4496E39F139813A5003EE32A /* JSSVGMPathElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGMPathElement.h; sourceTree = ""; }; + 4496E3A1139813CB003EE32A /* JSSVGMPathElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGMPathElement.cpp; sourceTree = ""; }; + 449B19F30FA72ECE0015CA4A /* HTMLParserQuirks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLParserQuirks.h; sourceTree = ""; }; + 44A28AAB12DFB8AC00AE923B /* MathMLElementFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathMLElementFactory.h; sourceTree = ""; }; + 44A28AAE12DFB8BF00AE923B /* MathMLNames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathMLNames.h; sourceTree = ""; }; + 44D8DA98139545BE00337B75 /* SVGMPathElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGMPathElement.idl; sourceTree = ""; }; + 44D8DA9A139545CD00337B75 /* SVGAnimateMotionElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGAnimateMotionElement.idl; sourceTree = ""; }; + 44DAB5AF15A623580097C1E4 /* Extensions3DOpenGLCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Extensions3DOpenGLCommon.cpp; sourceTree = ""; }; + 44DAB5B015A623580097C1E4 /* Extensions3DOpenGLCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Extensions3DOpenGLCommon.h; sourceTree = ""; }; + 45099C401370A7800058D513 /* IconURL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IconURL.cpp; sourceTree = ""; }; + 450CEBEE15073BBE002BB149 /* LabelableElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LabelableElement.cpp; sourceTree = ""; }; + 450CEBEF15073BBE002BB149 /* LabelableElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelableElement.h; sourceTree = ""; }; + 4512502015DCE37D002F84E2 /* SpinButtonElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpinButtonElement.cpp; sourceTree = ""; }; + 4512502115DCE37D002F84E2 /* SpinButtonElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpinButtonElement.h; sourceTree = ""; }; + 453EB635159C570400001BB7 /* DateTimeFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateTimeFormat.h; sourceTree = ""; }; + 45830D4B1679B4F800ACF8C3 /* AutoscrollController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AutoscrollController.cpp; sourceTree = ""; }; + 45830D4C1679B4F800ACF8C3 /* AutoscrollController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoscrollController.h; sourceTree = ""; }; + 458FE4071589DF0B005609E6 /* RenderSearchField.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSearchField.cpp; sourceTree = ""; }; + 458FE4081589DF0B005609E6 /* RenderSearchField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSearchField.h; sourceTree = ""; }; + 45BAC2AF1360BBAB005DA258 /* IconURL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IconURL.h; sourceTree = ""; }; + 45FEA5CD156DDE8C00654101 /* Decimal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Decimal.cpp; sourceTree = ""; }; + 45FEA5CE156DDE8C00654101 /* Decimal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Decimal.h; sourceTree = ""; }; + 46700ECF127B96CB00F5D5D6 /* FileWriterSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileWriterSync.h; path = Modules/filesystem/FileWriterSync.h; sourceTree = ""; }; + 4689F1AE1267BAE100E8D380 /* FileMetadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileMetadata.h; path = platform/FileMetadata.h; sourceTree = ""; }; + 46BC724C129B104C0071C07E /* FileWriterBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileWriterBase.h; path = Modules/filesystem/FileWriterBase.h; sourceTree = ""; }; + 46BC724D129B104C0071C07E /* FileWriterBaseCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileWriterBaseCallback.h; path = Modules/filesystem/FileWriterBaseCallback.h; sourceTree = ""; }; + 46BD16E20B279473001F0839 /* noneCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = noneCursor.png; sourceTree = ""; }; + 46D4F2460AF97E810035385A /* cellCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cellCursor.png; sourceTree = ""; }; + 46D4F2480AF97E810035385A /* verticalTextCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = verticalTextCursor.png; sourceTree = ""; }; + 46DA844C1224A0710060D006 /* JSFileWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFileWriter.h; sourceTree = ""; }; + 46F9D5DA0B0D60170028EE36 /* aliasCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = aliasCursor.png; sourceTree = ""; }; + 46F9D5DC0B0D60170028EE36 /* progressCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = progressCursor.png; sourceTree = ""; }; + 490707E41219C04300D90E51 /* ANGLEWebKitBridge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ANGLEWebKitBridge.cpp; sourceTree = ""; }; + 490707E51219C04300D90E51 /* ANGLEWebKitBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANGLEWebKitBridge.h; sourceTree = ""; }; + 49140254168E02B4002D6C6A /* TimelineTraceEventProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TimelineTraceEventProcessor.cpp; sourceTree = ""; }; + 49140255168E02B4002D6C6A /* TimelineTraceEventProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimelineTraceEventProcessor.h; sourceTree = ""; }; + 49182B5015DCE6F000548418 /* PlatformInstrumentation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformInstrumentation.cpp; sourceTree = ""; }; + 49182B5115DCE6F000548418 /* PlatformInstrumentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformInstrumentation.h; sourceTree = ""; }; + 49291E4A134172C800E753DE /* ImageRenderingMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageRenderingMode.h; sourceTree = ""; }; + 493E5E0812D6420500020081 /* PlatformCALayerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformCALayerClient.h; path = ca/PlatformCALayerClient.h; sourceTree = ""; }; + 4945BFD113CF809000CC3B38 /* TransformState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TransformState.cpp; path = transforms/TransformState.cpp; sourceTree = ""; }; + 4945BFD213CF809000CC3B38 /* TransformState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformState.h; path = transforms/TransformState.h; sourceTree = ""; }; + 49484FB3102CF23C00187DD3 /* CanvasGradient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CanvasGradient.cpp; path = canvas/CanvasGradient.cpp; sourceTree = ""; }; + 49484FB4102CF23C00187DD3 /* CanvasGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CanvasGradient.h; path = canvas/CanvasGradient.h; sourceTree = ""; }; + 49484FB5102CF23C00187DD3 /* CanvasGradient.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CanvasGradient.idl; path = canvas/CanvasGradient.idl; sourceTree = ""; }; + 49484FB6102CF23C00187DD3 /* CanvasPattern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CanvasPattern.cpp; path = canvas/CanvasPattern.cpp; sourceTree = ""; }; + 49484FB7102CF23C00187DD3 /* CanvasPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CanvasPattern.h; path = canvas/CanvasPattern.h; sourceTree = ""; }; + 49484FB7102CF23C00188DD3 /* CanvasProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CanvasProxy.h; path = canvas/CanvasProxy.h; sourceTree = ""; }; + 49484FB8102CF23C00187DD3 /* CanvasPattern.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CanvasPattern.idl; path = canvas/CanvasPattern.idl; sourceTree = ""; }; + 49484FB8102CF23C00188DD3 /* CanvasProxy.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CanvasProxy.idl; path = canvas/CanvasProxy.idl; sourceTree = ""; }; + 49484FBC102CF23C00187DD3 /* CanvasRenderingContext2D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CanvasRenderingContext2D.cpp; path = canvas/CanvasRenderingContext2D.cpp; sourceTree = ""; }; + 49484FBD102CF23C00187DD3 /* CanvasRenderingContext2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CanvasRenderingContext2D.h; path = canvas/CanvasRenderingContext2D.h; sourceTree = ""; }; + 49484FBE102CF23C00187DD3 /* CanvasRenderingContext2D.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CanvasRenderingContext2D.idl; path = canvas/CanvasRenderingContext2D.idl; sourceTree = ""; }; + 49484FBF102CF23C00187DD3 /* CanvasStyle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CanvasStyle.cpp; path = canvas/CanvasStyle.cpp; sourceTree = ""; }; + 49484FC0102CF23C00187DD3 /* CanvasStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CanvasStyle.h; path = canvas/CanvasStyle.h; sourceTree = ""; }; + 494BC40C12AEDD9E00743BD2 /* TransformationMatrixCA.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TransformationMatrixCA.cpp; path = ca/TransformationMatrixCA.cpp; sourceTree = ""; }; + 494BD7930F55C8EE00747828 /* WebKitPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitPoint.h; sourceTree = ""; }; + 494BD7940F55C8EE00747828 /* WebKitPoint.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebKitPoint.idl; sourceTree = ""; }; + 494BD79B0F55C94C00747828 /* JSWebKitPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitPoint.cpp; sourceTree = ""; }; + 494BD79C0F55C94C00747828 /* JSWebKitPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebKitPoint.h; sourceTree = ""; }; + 4958781F12A57DDF007238AC /* PlatformCAAnimationMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PlatformCAAnimationMac.mm; path = ca/mac/PlatformCAAnimationMac.mm; sourceTree = ""; }; + 4958782012A57DDF007238AC /* PlatformCALayerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PlatformCALayerMac.mm; path = ca/mac/PlatformCALayerMac.mm; sourceTree = ""; }; + 4969B0F013D0B33F00DF3521 /* HitTestingTransformState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HitTestingTransformState.cpp; sourceTree = ""; }; + 4969B0F113D0B33F00DF3521 /* HitTestingTransformState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HitTestingTransformState.h; sourceTree = ""; }; + 4983913D0F1E767500C23782 /* JSWebKitCSSMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitCSSMatrix.cpp; sourceTree = ""; }; + 4983913E0F1E767500C23782 /* JSWebKitCSSMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebKitCSSMatrix.h; sourceTree = ""; }; + 4983914D0F1E76B400C23782 /* DOMWebKitCSSMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSMatrix.h; sourceTree = ""; }; + 4983914E0F1E76B400C23782 /* DOMWebKitCSSMatrix.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMWebKitCSSMatrix.mm; sourceTree = ""; }; + 4983914F0F1E76B400C23782 /* DOMWebKitCSSMatrixInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSMatrixInternal.h; sourceTree = ""; }; + 498391550F1E776900C23782 /* WebKitCSSMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitCSSMatrix.cpp; sourceTree = ""; }; + 498391560F1E776900C23782 /* WebKitCSSMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitCSSMatrix.h; sourceTree = ""; }; + 498391570F1E776900C23782 /* WebKitCSSMatrix.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebKitCSSMatrix.idl; sourceTree = ""; }; + 498770C21242C535002226BA /* DrawingBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DrawingBuffer.cpp; path = gpu/DrawingBuffer.cpp; sourceTree = ""; }; + 498770C31242C535002226BA /* DrawingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DrawingBuffer.h; path = gpu/DrawingBuffer.h; sourceTree = ""; }; + 498770D01242C535002226BA /* Shader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Shader.h; path = gpu/Shader.h; sourceTree = ""; }; + 498770D71242C535002226BA /* Texture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Texture.cpp; path = gpu/Texture.cpp; sourceTree = ""; }; + 498770D81242C535002226BA /* Texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Texture.h; path = gpu/Texture.h; sourceTree = ""; }; + 498770D91242C535002226BA /* TilingData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TilingData.cpp; path = gpu/TilingData.cpp; sourceTree = ""; }; + 498770DA1242C535002226BA /* TilingData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TilingData.h; path = gpu/TilingData.h; sourceTree = ""; }; + 498771521243F9FA002226BA /* DrawingBufferMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = DrawingBufferMac.mm; path = gpu/mac/DrawingBufferMac.mm; sourceTree = ""; }; + 4998AEC413F9D0EA0090B1AA /* RequestAnimationFrameCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RequestAnimationFrameCallback.h; sourceTree = ""; }; + 4998AEC513F9D0EA0090B1AA /* RequestAnimationFrameCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = RequestAnimationFrameCallback.idl; sourceTree = ""; }; + 4998AECB13F9D6C90090B1AA /* JSRequestAnimationFrameCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSRequestAnimationFrameCallback.cpp; sourceTree = ""; }; + 4998AECC13F9D6C90090B1AA /* JSRequestAnimationFrameCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSRequestAnimationFrameCallback.h; sourceTree = ""; }; + 4998AECF13FB224D0090B1AA /* ScriptedAnimationController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptedAnimationController.cpp; sourceTree = ""; }; + 4998AED013FB224D0090B1AA /* ScriptedAnimationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptedAnimationController.h; sourceTree = ""; }; + 4998AED313FC417F0090B1AA /* JSRequestAnimationFrameCallbackCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSRequestAnimationFrameCallbackCustom.cpp; sourceTree = ""; }; + 499B3EC3128CCC4700E726C2 /* PlatformCALayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformCALayer.h; path = ca/PlatformCALayer.h; sourceTree = ""; }; + 499B3ED4128CD31400E726C2 /* GraphicsLayerCA.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GraphicsLayerCA.cpp; path = ca/GraphicsLayerCA.cpp; sourceTree = ""; }; + 499B3ED5128CD31400E726C2 /* GraphicsLayerCA.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GraphicsLayerCA.h; path = ca/GraphicsLayerCA.h; sourceTree = ""; }; + 499B3EDC128DB50100E726C2 /* PlatformCAAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformCAAnimation.h; path = ca/PlatformCAAnimation.h; sourceTree = ""; }; + 49AE2D8C134EE50C0072920A /* CSSCalculationValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSCalculationValue.cpp; sourceTree = ""; }; + 49AE2D8D134EE50C0072920A /* CSSCalculationValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSCalculationValue.h; sourceTree = ""; }; + 49AE2D94134EE5F90072920A /* CalculationValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CalculationValue.cpp; sourceTree = ""; }; + 49AE2D95134EE5F90072920A /* CalculationValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CalculationValue.h; sourceTree = ""; }; + 49AF2D6814435D050016A784 /* DisplayRefreshMonitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DisplayRefreshMonitor.h; sourceTree = ""; }; + 49AF2D6B14435D210016A784 /* DisplayRefreshMonitorMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DisplayRefreshMonitorMac.cpp; sourceTree = ""; }; + 49B3760A15C6C6840059131D /* ArrayValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArrayValue.cpp; sourceTree = ""; }; + 49B3760B15C6C6840059131D /* ArrayValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArrayValue.h; sourceTree = ""; }; + 49C7B9801042D2D30009D447 /* JSWebGLBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLBuffer.cpp; sourceTree = ""; }; + 49C7B9811042D2D30009D447 /* JSWebGLBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLBuffer.h; sourceTree = ""; }; + 49C7B9821042D2D30009D447 /* JSInt8Array.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInt8Array.cpp; sourceTree = ""; }; + 49C7B9831042D2D30009D447 /* JSInt8Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSInt8Array.h; sourceTree = ""; }; + 49C7B9841042D2D30009D447 /* JSWebGLFramebuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLFramebuffer.cpp; sourceTree = ""; }; + 49C7B9851042D2D30009D447 /* JSWebGLFramebuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLFramebuffer.h; sourceTree = ""; }; + 49C7B9881042D2D30009D447 /* JSWebGLProgram.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLProgram.cpp; sourceTree = ""; }; + 49C7B9891042D2D30009D447 /* JSWebGLProgram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLProgram.h; sourceTree = ""; }; + 49C7B98A1042D2D30009D447 /* JSWebGLRenderbuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLRenderbuffer.cpp; sourceTree = ""; }; + 49C7B98B1042D2D30009D447 /* JSWebGLRenderbuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLRenderbuffer.h; sourceTree = ""; }; + 49C7B98F1042D2D30009D447 /* JSWebGLShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLShader.cpp; sourceTree = ""; }; + 49C7B9901042D2D30009D447 /* JSWebGLShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLShader.h; sourceTree = ""; }; + 49C7B9911042D2D30009D447 /* JSWebGLTexture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLTexture.cpp; sourceTree = ""; }; + 49C7B9921042D2D30009D447 /* JSWebGLTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLTexture.h; sourceTree = ""; }; + 49C7B9A81042D32E0009D447 /* WebGLBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLBuffer.cpp; path = canvas/WebGLBuffer.cpp; sourceTree = ""; }; + 49C7B9A91042D32E0009D447 /* WebGLBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLBuffer.h; path = canvas/WebGLBuffer.h; sourceTree = ""; }; + 49C7B9AA1042D32E0009D447 /* WebGLBuffer.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLBuffer.idl; path = canvas/WebGLBuffer.idl; sourceTree = ""; }; + 49C7B9AD1042D32E0009D447 /* Int8Array.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Int8Array.idl; path = canvas/Int8Array.idl; sourceTree = ""; }; + 49C7B9AE1042D32E0009D447 /* WebGLFramebuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLFramebuffer.cpp; path = canvas/WebGLFramebuffer.cpp; sourceTree = ""; }; + 49C7B9AF1042D32E0009D447 /* WebGLFramebuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLFramebuffer.h; path = canvas/WebGLFramebuffer.h; sourceTree = ""; }; + 49C7B9B01042D32E0009D447 /* WebGLFramebuffer.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLFramebuffer.idl; path = canvas/WebGLFramebuffer.idl; sourceTree = ""; }; + 49C7B9B41042D32F0009D447 /* WebGLObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLObject.cpp; path = canvas/WebGLObject.cpp; sourceTree = ""; }; + 49C7B9B51042D32F0009D447 /* WebGLObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLObject.h; path = canvas/WebGLObject.h; sourceTree = ""; }; + 49C7B9B61042D32F0009D447 /* WebGLProgram.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLProgram.cpp; path = canvas/WebGLProgram.cpp; sourceTree = ""; }; + 49C7B9B71042D32F0009D447 /* WebGLProgram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLProgram.h; path = canvas/WebGLProgram.h; sourceTree = ""; }; + 49C7B9B81042D32F0009D447 /* WebGLProgram.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLProgram.idl; path = canvas/WebGLProgram.idl; sourceTree = ""; }; + 49C7B9B91042D32F0009D447 /* WebGLRenderbuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLRenderbuffer.cpp; path = canvas/WebGLRenderbuffer.cpp; sourceTree = ""; }; + 49C7B9BA1042D32F0009D447 /* WebGLRenderbuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLRenderbuffer.h; path = canvas/WebGLRenderbuffer.h; sourceTree = ""; }; + 49C7B9BB1042D32F0009D447 /* WebGLRenderbuffer.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLRenderbuffer.idl; path = canvas/WebGLRenderbuffer.idl; sourceTree = ""; }; + 49C7B9BC1042D32F0009D447 /* CanvasRenderingContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CanvasRenderingContext.cpp; path = canvas/CanvasRenderingContext.cpp; sourceTree = ""; }; + 49C7B9BD1042D32F0009D447 /* CanvasRenderingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CanvasRenderingContext.h; path = canvas/CanvasRenderingContext.h; sourceTree = ""; }; + 49C7B9BE1042D32F0009D447 /* CanvasRenderingContext.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CanvasRenderingContext.idl; path = canvas/CanvasRenderingContext.idl; sourceTree = ""; }; + 49C7B9BF1042D32F0009D447 /* WebGLRenderingContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLRenderingContext.cpp; path = canvas/WebGLRenderingContext.cpp; sourceTree = ""; }; + 49C7B9C01042D32F0009D447 /* WebGLRenderingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLRenderingContext.h; path = canvas/WebGLRenderingContext.h; sourceTree = ""; }; + 49C7B9C11042D32F0009D447 /* WebGLRenderingContext.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLRenderingContext.idl; path = canvas/WebGLRenderingContext.idl; sourceTree = ""; }; + 49C7B9C21042D32F0009D447 /* WebGLShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLShader.cpp; path = canvas/WebGLShader.cpp; sourceTree = ""; }; + 49C7B9C31042D32F0009D447 /* WebGLShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLShader.h; path = canvas/WebGLShader.h; sourceTree = ""; }; + 49C7B9C41042D32F0009D447 /* WebGLShader.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLShader.idl; path = canvas/WebGLShader.idl; sourceTree = ""; }; + 49C7B9C51042D32F0009D447 /* WebGLTexture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLTexture.cpp; path = canvas/WebGLTexture.cpp; sourceTree = ""; }; + 49C7B9C61042D32F0009D447 /* WebGLTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLTexture.h; path = canvas/WebGLTexture.h; sourceTree = ""; }; + 49C7B9C71042D32F0009D447 /* WebGLTexture.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLTexture.idl; path = canvas/WebGLTexture.idl; sourceTree = ""; }; + 49C7B9FB1042D3650009D447 /* GraphicsContext3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsContext3D.h; sourceTree = ""; }; + 49C7BA781042EFAE0009D447 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; + 49C7BA8C1042F5B10009D447 /* JSDocumentCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDocumentCustom.cpp; sourceTree = ""; }; + 49D5DC270F423A73008F20FD /* Matrix3DTransformOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Matrix3DTransformOperation.cpp; path = transforms/Matrix3DTransformOperation.cpp; sourceTree = ""; }; + 49D5DC280F423A73008F20FD /* Matrix3DTransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Matrix3DTransformOperation.h; path = transforms/Matrix3DTransformOperation.h; sourceTree = ""; }; + 49D5DC290F423A73008F20FD /* PerspectiveTransformOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PerspectiveTransformOperation.cpp; path = transforms/PerspectiveTransformOperation.cpp; sourceTree = ""; }; + 49D5DC2A0F423A73008F20FD /* PerspectiveTransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PerspectiveTransformOperation.h; path = transforms/PerspectiveTransformOperation.h; sourceTree = ""; }; + 49E911B30EF86D47009D0CAF /* TransformationMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TransformationMatrix.cpp; path = transforms/TransformationMatrix.cpp; sourceTree = ""; }; + 49E911B40EF86D47009D0CAF /* TransformationMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformationMatrix.h; path = transforms/TransformationMatrix.h; sourceTree = ""; }; + 49E911B50EF86D47009D0CAF /* IdentityTransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IdentityTransformOperation.h; path = transforms/IdentityTransformOperation.h; sourceTree = ""; }; + 49E911B60EF86D47009D0CAF /* MatrixTransformOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MatrixTransformOperation.cpp; path = transforms/MatrixTransformOperation.cpp; sourceTree = ""; }; + 49E911B70EF86D47009D0CAF /* MatrixTransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MatrixTransformOperation.h; path = transforms/MatrixTransformOperation.h; sourceTree = ""; }; + 49E911B80EF86D47009D0CAF /* RotateTransformOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RotateTransformOperation.cpp; path = transforms/RotateTransformOperation.cpp; sourceTree = ""; }; + 49E911B90EF86D47009D0CAF /* RotateTransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RotateTransformOperation.h; path = transforms/RotateTransformOperation.h; sourceTree = ""; }; + 49E911BA0EF86D47009D0CAF /* ScaleTransformOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScaleTransformOperation.cpp; path = transforms/ScaleTransformOperation.cpp; sourceTree = ""; }; + 49E911BB0EF86D47009D0CAF /* ScaleTransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScaleTransformOperation.h; path = transforms/ScaleTransformOperation.h; sourceTree = ""; }; + 49E911BC0EF86D47009D0CAF /* SkewTransformOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkewTransformOperation.cpp; path = transforms/SkewTransformOperation.cpp; sourceTree = ""; }; + 49E911BD0EF86D47009D0CAF /* SkewTransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkewTransformOperation.h; path = transforms/SkewTransformOperation.h; sourceTree = ""; }; + 49E911BE0EF86D47009D0CAF /* TransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformOperation.h; path = transforms/TransformOperation.h; sourceTree = ""; }; + 49E911BF0EF86D47009D0CAF /* TransformOperations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TransformOperations.cpp; path = transforms/TransformOperations.cpp; sourceTree = ""; }; + 49E911C00EF86D47009D0CAF /* TransformOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformOperations.h; path = transforms/TransformOperations.h; sourceTree = ""; }; + 49E911C10EF86D47009D0CAF /* TranslateTransformOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TranslateTransformOperation.cpp; path = transforms/TranslateTransformOperation.cpp; sourceTree = ""; }; + 49E911C20EF86D47009D0CAF /* TranslateTransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TranslateTransformOperation.h; path = transforms/TranslateTransformOperation.h; sourceTree = ""; }; + 49E912A50EFAC906009D0CAF /* Animation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Animation.cpp; path = animation/Animation.cpp; sourceTree = ""; }; + 49E912A60EFAC906009D0CAF /* Animation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Animation.h; path = animation/Animation.h; sourceTree = ""; }; + 49E912A70EFAC906009D0CAF /* AnimationList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AnimationList.cpp; path = animation/AnimationList.cpp; sourceTree = ""; }; + 49E912A80EFAC906009D0CAF /* AnimationList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationList.h; path = animation/AnimationList.h; sourceTree = ""; }; + 49E912A90EFAC906009D0CAF /* TimingFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TimingFunction.h; path = animation/TimingFunction.h; sourceTree = ""; }; + 49ECEB631499790D00CDD3A4 /* FilterOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FilterOperation.cpp; path = filters/FilterOperation.cpp; sourceTree = ""; }; + 49ECEB641499790D00CDD3A4 /* FilterOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FilterOperation.h; path = filters/FilterOperation.h; sourceTree = ""; }; + 49ECEB651499790D00CDD3A4 /* FilterOperations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FilterOperations.cpp; path = filters/FilterOperations.cpp; sourceTree = ""; }; + 49ECEB661499790D00CDD3A4 /* FilterOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FilterOperations.h; path = filters/FilterOperations.h; sourceTree = ""; }; + 49EECDC910503C2300099FAB /* ArrayBufferView.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ArrayBufferView.idl; path = canvas/ArrayBufferView.idl; sourceTree = ""; }; + 49EECDCC10503C2300099FAB /* ArrayBuffer.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ArrayBuffer.idl; path = canvas/ArrayBuffer.idl; sourceTree = ""; }; + 49EECDCF10503C2300099FAB /* Float32Array.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Float32Array.idl; path = canvas/Float32Array.idl; sourceTree = ""; }; + 49EECDD210503C2300099FAB /* Int32Array.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Int32Array.idl; path = canvas/Int32Array.idl; sourceTree = ""; }; + 49EECDD510503C2300099FAB /* Int16Array.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Int16Array.idl; path = canvas/Int16Array.idl; sourceTree = ""; }; + 49EECDD810503C2300099FAB /* Uint8Array.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Uint8Array.idl; path = canvas/Uint8Array.idl; sourceTree = ""; }; + 49EECDDB10503C2300099FAB /* Uint32Array.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Uint32Array.idl; path = canvas/Uint32Array.idl; sourceTree = ""; }; + 49EECDDE10503C2400099FAB /* Uint16Array.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Uint16Array.idl; path = canvas/Uint16Array.idl; sourceTree = ""; }; + 49EECEF2105070C400099FAB /* JSArrayBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSArrayBuffer.cpp; sourceTree = ""; }; + 49EECEF3105070C400099FAB /* JSArrayBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSArrayBuffer.h; sourceTree = ""; }; + 49EECEF4105070C400099FAB /* JSFloat32Array.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFloat32Array.cpp; sourceTree = ""; }; + 49EECEF5105070C400099FAB /* JSFloat32Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFloat32Array.h; sourceTree = ""; }; + 49EECEF6105070C400099FAB /* JSInt32Array.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInt32Array.cpp; sourceTree = ""; }; + 49EECEF7105070C400099FAB /* JSInt32Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSInt32Array.h; sourceTree = ""; }; + 49EECEF8105070C400099FAB /* JSInt16Array.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInt16Array.cpp; sourceTree = ""; }; + 49EECEF9105070C400099FAB /* JSInt16Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSInt16Array.h; sourceTree = ""; }; + 49EECEFA105070C400099FAB /* JSUint8Array.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSUint8Array.cpp; sourceTree = ""; }; + 49EECEFB105070C400099FAB /* JSUint8Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSUint8Array.h; sourceTree = ""; }; + 49EECEFC105070C400099FAB /* JSUint32Array.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSUint32Array.cpp; sourceTree = ""; }; + 49EECEFD105070C400099FAB /* JSUint32Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSUint32Array.h; sourceTree = ""; }; + 49EECEFE105070C400099FAB /* JSUint16Array.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSUint16Array.cpp; sourceTree = ""; }; + 49EECEFF105070C400099FAB /* JSUint16Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSUint16Array.h; sourceTree = ""; }; + 49EECF19105072F300099FAB /* JSArrayBufferView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSArrayBufferView.cpp; sourceTree = ""; }; + 49EECF1A105072F300099FAB /* JSArrayBufferView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSArrayBufferView.h; sourceTree = ""; }; + 49EED13C1051969400099FAB /* JSCanvasRenderingContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCanvasRenderingContext.cpp; sourceTree = ""; }; + 49EED13D1051969400099FAB /* JSCanvasRenderingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCanvasRenderingContext.h; sourceTree = ""; }; + 49EED13E1051969400099FAB /* JSCanvasRenderingContext2D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCanvasRenderingContext2D.cpp; sourceTree = ""; }; + 49EED13F1051969400099FAB /* JSCanvasRenderingContext2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCanvasRenderingContext2D.h; sourceTree = ""; }; + 49EED1401051969400099FAB /* JSWebGLRenderingContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLRenderingContext.cpp; sourceTree = ""; }; + 49EED1411051969400099FAB /* JSWebGLRenderingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLRenderingContext.h; sourceTree = ""; }; + 49EED14B1051971900099FAB /* JSCanvasRenderingContext2DCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCanvasRenderingContext2DCustom.cpp; sourceTree = ""; }; + 49EED14C1051971A00099FAB /* JSWebGLRenderingContextCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLRenderingContextCustom.cpp; sourceTree = ""; }; + 49EED14D1051971A00099FAB /* JSCanvasRenderingContextCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCanvasRenderingContextCustom.cpp; sourceTree = ""; }; + 49FC7A4F1444AF5F00A5D864 /* DisplayRefreshMonitor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DisplayRefreshMonitor.cpp; sourceTree = ""; }; + 49FFBF1C11C8550E006A7118 /* GraphicsContext3DMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GraphicsContext3DMac.mm; sourceTree = ""; }; + 49FFBF3D11C93EE3006A7118 /* WebGLLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebGLLayer.h; sourceTree = ""; }; + 49FFBF3E11C93EE3006A7118 /* WebGLLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebGLLayer.mm; sourceTree = ""; }; + 4A0DA2FC129B241900AB61E1 /* FormAssociatedElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FormAssociatedElement.cpp; sourceTree = ""; }; + 4A0DA2FD129B241900AB61E1 /* FormAssociatedElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormAssociatedElement.h; sourceTree = ""; }; + 4A1E718E14E101E400626F9D /* JSHTMLContentElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLContentElement.cpp; sourceTree = ""; }; + 4A1E718F14E101E400626F9D /* JSHTMLContentElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLContentElement.h; sourceTree = ""; }; + 4A1E71A414E106AC00626F9D /* JSShadowRoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSShadowRoot.h; sourceTree = ""; }; + 4A38BF4E14FE1C0900612512 /* WebSocketDeflateFramer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSocketDeflateFramer.cpp; path = Modules/websockets/WebSocketDeflateFramer.cpp; sourceTree = ""; }; + 4A38BF4F14FE1C0900612512 /* WebSocketDeflateFramer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocketDeflateFramer.h; path = Modules/websockets/WebSocketDeflateFramer.h; sourceTree = ""; }; + 4A4F48A716B0DFC000EDBB29 /* DocumentRuleSets.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentRuleSets.cpp; sourceTree = ""; }; + 4A4F48A816B0DFC000EDBB29 /* DocumentRuleSets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentRuleSets.h; sourceTree = ""; }; + 4A5A2AD9161E7E00005889DD /* WebSocketExtensionParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSocketExtensionParser.cpp; path = Modules/websockets/WebSocketExtensionParser.cpp; sourceTree = ""; }; + 4A5A2ADA161E7E00005889DD /* WebSocketExtensionParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocketExtensionParser.h; path = Modules/websockets/WebSocketExtensionParser.h; sourceTree = ""; }; + 4A5CB1C316C3A5FD00AB2886 /* EventRetargeter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventRetargeter.cpp; sourceTree = ""; }; + 4A5CB1C416C3A5FD00AB2886 /* EventRetargeter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventRetargeter.h; sourceTree = ""; }; + 4A6A0C5915232F2400B09C6E /* ComposedShadowTreeWalker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComposedShadowTreeWalker.cpp; sourceTree = ""; }; + 4A6A0C5A15232F2400B09C6E /* ComposedShadowTreeWalker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ComposedShadowTreeWalker.h; sourceTree = ""; }; + 4A6E9FC113C17D1D0046A7F8 /* FontFeatureValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontFeatureValue.cpp; sourceTree = ""; }; + 4A6E9FC213C17D1D0046A7F8 /* FontFeatureValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontFeatureValue.h; sourceTree = ""; }; + 4A6E9FC513C17D570046A7F8 /* FontFeatureSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontFeatureSettings.cpp; sourceTree = ""; }; + 4A6E9FC613C17D570046A7F8 /* FontFeatureSettings.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = FontFeatureSettings.h; sourceTree = ""; }; + 4A8C96EA0BE69032004EEFF0 /* FrameSelectionMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = FrameSelectionMac.mm; path = mac/FrameSelectionMac.mm; sourceTree = ""; }; + 4A9CC81516BB9AC600EC645A /* CSSDefaultStyleSheets.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSDefaultStyleSheets.cpp; sourceTree = ""; }; + 4A9CC81616BB9AC600EC645A /* CSSDefaultStyleSheets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSDefaultStyleSheets.h; sourceTree = ""; }; + 4A9CC81E16BF9BB400EC645A /* InspectorCSSOMWrappers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorCSSOMWrappers.cpp; sourceTree = ""; }; + 4A9CC81F16BF9BB400EC645A /* InspectorCSSOMWrappers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorCSSOMWrappers.h; sourceTree = ""; }; + 4AAAB4C216D379B5001DA41B /* EventPathWalker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventPathWalker.cpp; sourceTree = ""; }; + 4AAAB4C316D379B5001DA41B /* EventPathWalker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventPathWalker.h; sourceTree = ""; }; + 4ACBC0BC12713CBD0094F9B2 /* ClassList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ClassList.cpp; sourceTree = ""; }; + 4ACBC0BD12713CBD0094F9B2 /* ClassList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClassList.h; sourceTree = ""; }; + 4ACBC0C012713CCA0094F9B2 /* DOMSettableTokenList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMSettableTokenList.cpp; sourceTree = ""; }; + 4ACBC0C112713CCA0094F9B2 /* DOMSettableTokenList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSettableTokenList.h; sourceTree = ""; }; + 4ACBC0C212713CCA0094F9B2 /* DOMSettableTokenList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMSettableTokenList.idl; sourceTree = ""; }; + 4ACBC0C812713D0A0094F9B2 /* JSDOMSettableTokenList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMSettableTokenList.cpp; sourceTree = ""; }; + 4ACBC0C912713D0A0094F9B2 /* JSDOMSettableTokenList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMSettableTokenList.h; sourceTree = ""; }; + 4AD01005127E642A0015035F /* HTMLOutputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLOutputElement.cpp; sourceTree = ""; }; + 4AD01006127E642A0015035F /* HTMLOutputElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLOutputElement.h; sourceTree = ""; }; + 4AD01007127E642A0015035F /* HTMLOutputElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLOutputElement.idl; sourceTree = ""; }; + 4AD0173A127E82860015035F /* JSHTMLOutputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLOutputElement.cpp; sourceTree = ""; }; + 4AD0173B127E82860015035F /* JSHTMLOutputElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLOutputElement.h; sourceTree = ""; }; + 4AF1AD3C13FD23A400AA9590 /* EventDispatchMediator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventDispatchMediator.cpp; sourceTree = ""; }; + 4AF1AD3D13FD23A400AA9590 /* EventDispatchMediator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventDispatchMediator.h; sourceTree = ""; }; + 4B2708C50AF19EE40065127F /* Pasteboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Pasteboard.h; sourceTree = ""; }; + 4B2709810AF2E5E00065127F /* PasteboardMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PasteboardMac.mm; sourceTree = ""; }; + 4B3043C60AE0370300A82647 /* Sound.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Sound.h; sourceTree = ""; }; + 4B3043C80AE0371D00A82647 /* SoundMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = SoundMac.mm; sourceTree = ""; }; + 4B3043CA0AE0373B00A82647 /* Editor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Editor.cpp; sourceTree = ""; }; + 4B3043CB0AE0373B00A82647 /* Editor.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Editor.h; sourceTree = ""; }; + 4B3480910EEF50D400AC1B41 /* ImageSourceCGMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ImageSourceCGMac.mm; sourceTree = ""; }; + 4B3480920EEF50D400AC1B41 /* ImageSourceCG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageSourceCG.h; sourceTree = ""; }; + 4B6FA6F20C39E48C00087011 /* SmartReplace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SmartReplace.h; sourceTree = ""; }; + 4B6FA6F60C39E4A100087011 /* SmartReplaceCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SmartReplaceCF.cpp; sourceTree = ""; }; + 4B8AF4A90B1CE02B00687690 /* ClipboardAccessPolicy.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ClipboardAccessPolicy.h; sourceTree = ""; }; + 4BAE95B00B2FA9CE00AED8A0 /* EditorDeleteAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditorDeleteAction.h; sourceTree = ""; }; + 4D273CF71669420800259CA1 /* InspectorInputAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorInputAgent.cpp; sourceTree = ""; }; + 4D273CF81669420800259CA1 /* InspectorInputAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorInputAgent.h; sourceTree = ""; }; + 4E19591F0A39DABA00220FE5 /* MediaFeatureNames.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MediaFeatureNames.cpp; sourceTree = ""; }; + 4E1959200A39DABA00220FE5 /* MediaFeatureNames.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MediaFeatureNames.h; sourceTree = ""; }; + 4E1959230A39DACC00220FE5 /* MediaQuery.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MediaQuery.cpp; sourceTree = ""; }; + 4E1959240A39DACC00220FE5 /* MediaQuery.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MediaQuery.h; sourceTree = ""; }; + 4E1959250A39DACC00220FE5 /* MediaQueryEvaluator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MediaQueryEvaluator.cpp; sourceTree = ""; }; + 4E1959260A39DACC00220FE5 /* MediaQueryEvaluator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MediaQueryEvaluator.h; sourceTree = ""; }; + 4E1959270A39DACC00220FE5 /* MediaQueryExp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MediaQueryExp.cpp; sourceTree = ""; }; + 4E1959280A39DACC00220FE5 /* MediaQueryExp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MediaQueryExp.h; sourceTree = ""; }; + 4F1534DD11B532EC0021FD86 /* EditingBehavior.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditingBehavior.h; sourceTree = ""; }; + 4F1534DF11B533020021FD86 /* EditingBehaviorTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditingBehaviorTypes.h; sourceTree = ""; }; + 4F2D205212EAE7B3005C2874 /* InspectorAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorAgent.h; sourceTree = ""; }; + 4F2D205312EAE7B3005C2874 /* InspectorAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorAgent.cpp; sourceTree = ""; }; + 4F3289B311A42AAB005ABE7E /* InspectorValues.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorValues.cpp; sourceTree = ""; }; + 4F3289B411A42AAB005ABE7E /* InspectorValues.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorValues.h; sourceTree = ""; }; + 4F4F5FFA11CBD2D200A186BF /* InspectorFrontend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorFrontend.cpp; sourceTree = ""; }; + 4F4F5FFC11CBD30100A186BF /* InspectorFrontend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorFrontend.h; sourceTree = ""; }; + 4F6FDD621341DEDD001F8EE3 /* InspectorPageAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorPageAgent.cpp; sourceTree = ""; }; + 4F6FDD631341DEDD001F8EE3 /* InspectorPageAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorPageAgent.h; sourceTree = ""; }; + 4F707A9711EF679400ACDA69 /* InspectorBackendDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorBackendDispatcher.cpp; sourceTree = ""; }; + 4F707A9811EF679400ACDA69 /* InspectorBackendDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorBackendDispatcher.h; sourceTree = ""; }; + 4FA3B908125CD12100300BAD /* InspectorState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorState.cpp; sourceTree = ""; }; + 4FA3B909125CD12200300BAD /* InspectorState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorState.h; sourceTree = ""; }; + 4FAB48641643A66D00F70C07 /* ElementRareData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ElementRareData.cpp; sourceTree = ""; }; + 4FAB48661643A67E00F70C07 /* NodeRareData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NodeRareData.cpp; sourceTree = ""; }; + 4FB390AC15EF61F3007AD51F /* GeneratedImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GeneratedImage.cpp; sourceTree = ""; }; + 4FD8D0F0119C718B002FA825 /* ScriptGCEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptGCEvent.cpp; sourceTree = ""; }; + 4FD8D0F1119C718B002FA825 /* ScriptGCEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptGCEvent.h; sourceTree = ""; }; + 501BAAA813950E2C00F7ACEB /* WindRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WindRule.h; sourceTree = ""; }; + 5038BC0614711CDB0095E0D1 /* WebKitCSSShaderValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitCSSShaderValue.cpp; sourceTree = ""; }; + 5038BE2D1472AD230095E0D1 /* StyleCachedShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleCachedShader.cpp; path = style/StyleCachedShader.cpp; sourceTree = ""; }; + 5038BE2E1472AD230095E0D1 /* StyleCachedShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleCachedShader.h; path = style/StyleCachedShader.h; sourceTree = ""; }; + 5038BE3E1472AD980095E0D1 /* CachedShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedShader.cpp; sourceTree = ""; }; + 5038BE3F1472AD980095E0D1 /* CachedShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedShader.h; sourceTree = ""; }; + 503D0CA714B5B08700F32F57 /* CustomFilterProgram.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CustomFilterProgram.cpp; path = filters/CustomFilterProgram.cpp; sourceTree = ""; }; + 503D0CA714B5B08700F32F58 /* CustomFilterRenderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CustomFilterRenderer.cpp; path = filters/CustomFilterRenderer.cpp; sourceTree = ""; }; + 503D0CA814B5B08700F32F57 /* CustomFilterProgram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterProgram.h; path = filters/CustomFilterProgram.h; sourceTree = ""; }; + 503D0CA814B5B08700F32F58 /* CustomFilterRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterRenderer.h; path = filters/CustomFilterRenderer.h; sourceTree = ""; }; + 503D0CA914B5B08700F32F57 /* CustomFilterProgramClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterProgramClient.h; path = filters/CustomFilterProgramClient.h; sourceTree = ""; }; + 503D0CAD14B5B0BA00F32F57 /* StyleCustomFilterProgram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleCustomFilterProgram.h; path = style/StyleCustomFilterProgram.h; sourceTree = ""; }; + 5081E3DF3CFC80C16EF8B48B /* CachedResourceRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CachedResourceRequest.cpp; sourceTree = ""; }; + 5081E3E13D0280C16EF8B48B /* CachedResourceRequest.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedResourceRequest.h; sourceTree = ""; }; + 508CCA4D13CF106B003151F3 /* RenderFlowThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderFlowThread.h; sourceTree = ""; }; + 508CCA4E13CF106B003151F3 /* RenderFlowThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderFlowThread.cpp; sourceTree = ""; }; + 5093334D163B0E4300099A60 /* CustomFilterParameterList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CustomFilterParameterList.cpp; path = filters/CustomFilterParameterList.cpp; sourceTree = ""; }; + 5093334E163B0E4300099A60 /* CustomFilterParameterList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterParameterList.h; path = filters/CustomFilterParameterList.h; sourceTree = ""; }; + 50987C24157D676D00BDA835 /* CustomFilterGlobalContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CustomFilterGlobalContext.cpp; path = filters/CustomFilterGlobalContext.cpp; sourceTree = ""; }; + 50987C25157D676D00BDA835 /* CustomFilterGlobalContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterGlobalContext.h; path = filters/CustomFilterGlobalContext.h; sourceTree = ""; }; + 509CC9FA14C069ED00BBECBD /* CustomFilterParameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterParameter.h; path = filters/CustomFilterParameter.h; sourceTree = ""; }; + 509EC10815E848CA00E82581 /* CustomFilterTransformParameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterTransformParameter.h; path = filters/CustomFilterTransformParameter.h; sourceTree = ""; }; + 50ACE2CA14B5D79300446666 /* CustomFilterOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterOperation.h; path = filters/CustomFilterOperation.h; sourceTree = ""; }; + 50B42157146976960087E604 /* WebKitCSSShaderValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitCSSShaderValue.h; sourceTree = ""; }; + 50CC089914C6E99C0017AB51 /* CustomFilterNumberParameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterNumberParameter.h; path = filters/CustomFilterNumberParameter.h; sourceTree = ""; }; + 50CC0A3814C6F5B10017AB51 /* CustomFilterOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CustomFilterOperation.cpp; path = filters/CustomFilterOperation.cpp; sourceTree = ""; }; + 50D10D971545F5760096D288 /* RenderLayerFilterInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderLayerFilterInfo.cpp; sourceTree = ""; }; + 50D10D981545F5760096D288 /* RenderLayerFilterInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderLayerFilterInfo.h; sourceTree = ""; }; + 50D32855163B313F0016111E /* ValidatedCustomFilterOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValidatedCustomFilterOperation.cpp; path = filters/ValidatedCustomFilterOperation.cpp; sourceTree = ""; }; + 50D32856163B313F0016111E /* ValidatedCustomFilterOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ValidatedCustomFilterOperation.h; path = filters/ValidatedCustomFilterOperation.h; sourceTree = ""; }; + 50D403C514768C9400D30BB5 /* FECustomFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FECustomFilter.cpp; path = filters/FECustomFilter.cpp; sourceTree = ""; }; + 50D403C614768C9400D30BB5 /* FECustomFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FECustomFilter.h; path = filters/FECustomFilter.h; sourceTree = ""; }; + 50D405F7147D31F300D30BB5 /* CustomFilterMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CustomFilterMesh.cpp; path = filters/CustomFilterMesh.cpp; sourceTree = ""; }; + 50D405F8147D31F300D30BB5 /* CustomFilterMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterMesh.h; path = filters/CustomFilterMesh.h; sourceTree = ""; }; + 50D4060F147D49DE00D30BB5 /* CustomFilterCompiledProgram.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CustomFilterCompiledProgram.cpp; path = filters/CustomFilterCompiledProgram.cpp; sourceTree = ""; }; + 50D40610147D49DE00D30BB5 /* CustomFilterCompiledProgram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterCompiledProgram.h; path = filters/CustomFilterCompiledProgram.h; sourceTree = ""; }; + 50D88CB315BDFDAA001809F4 /* CustomFilterProgramInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CustomFilterProgramInfo.cpp; path = filters/CustomFilterProgramInfo.cpp; sourceTree = ""; }; + 50D88CB415BDFDAA001809F4 /* CustomFilterProgramInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterProgramInfo.h; path = filters/CustomFilterProgramInfo.h; sourceTree = ""; }; + 50E18CD516F9285800C65486 /* StyleCustomFilterProgram.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleCustomFilterProgram.cpp; path = style/StyleCustomFilterProgram.cpp; sourceTree = ""; }; + 50E18CD616F9285800C65486 /* StyleCustomFilterProgramCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleCustomFilterProgramCache.cpp; path = style/StyleCustomFilterProgramCache.cpp; sourceTree = ""; }; + 50E18CD716F9285800C65486 /* StyleCustomFilterProgramCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleCustomFilterProgramCache.h; path = style/StyleCustomFilterProgramCache.h; sourceTree = ""; }; + 510184670B08602A004A825F /* CachedPage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedPage.h; sourceTree = ""; }; + 510184680B08602A004A825F /* CachedPage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedPage.cpp; sourceTree = ""; }; + 510D4A2D103165EE0049EA54 /* SocketStreamErrorBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SocketStreamErrorBase.cpp; sourceTree = ""; }; + 510D4A2E103165EE0049EA54 /* SocketStreamErrorBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketStreamErrorBase.h; sourceTree = ""; }; + 510D4A30103165EE0049EA54 /* SocketStreamHandleBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SocketStreamHandleBase.cpp; sourceTree = ""; }; + 510D4A31103165EE0049EA54 /* SocketStreamHandleBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketStreamHandleBase.h; sourceTree = ""; }; + 510D4A32103165EE0049EA54 /* SocketStreamHandleClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketStreamHandleClient.h; sourceTree = ""; }; + 511293613D6DB4B52FAF973F /* InspectorHeapProfilerAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorHeapProfilerAgent.cpp; sourceTree = ""; }; + 511293623D85B4B52FAF973F /* InspectorHeapProfilerAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorHeapProfilerAgent.h; sourceTree = ""; }; + 511F23150DC160DA004F0032 /* StorageThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageThread.cpp; sourceTree = ""; }; + 511F23160DC160DA004F0032 /* StorageThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageThread.h; sourceTree = ""; }; + 5126E6B90A2E3B12005C29FA /* IconDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = IconDatabase.cpp; sourceTree = ""; }; + 5126E6BA0A2E3B12005C29FA /* IconDatabase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = IconDatabase.h; sourceTree = ""; }; + 512DD8E20D91E2B4000F89EE /* SharedBufferCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SharedBufferCF.cpp; sourceTree = ""; }; + 512DD8EA0D91E6AF000F89EE /* LegacyWebArchive.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LegacyWebArchive.cpp; sourceTree = ""; }; + 512DD8EB0D91E6AF000F89EE /* LegacyWebArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LegacyWebArchive.h; sourceTree = ""; }; + 512DD8EC0D91E6AF000F89EE /* Archive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Archive.h; sourceTree = ""; }; + 512DD8ED0D91E6AF000F89EE /* ArchiveResourceCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArchiveResourceCollection.cpp; sourceTree = ""; }; + 512DD8EE0D91E6AF000F89EE /* ArchiveResourceCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArchiveResourceCollection.h; sourceTree = ""; }; + 512DD8F00D91E6AF000F89EE /* ArchiveFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArchiveFactory.cpp; sourceTree = ""; }; + 512DD8F10D91E6AF000F89EE /* ArchiveResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArchiveResource.cpp; sourceTree = ""; }; + 512DD8F20D91E6AF000F89EE /* ArchiveResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArchiveResource.h; sourceTree = ""; }; + 512DD8F30D91E6AF000F89EE /* ArchiveFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArchiveFactory.h; sourceTree = ""; }; + 51327D5E11A33A2B004F9D65 /* SinkDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SinkDocument.h; sourceTree = ""; }; + 51327D5F11A33A2B004F9D65 /* SinkDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SinkDocument.cpp; sourceTree = ""; }; + 513F14510AB634C400094DDF /* IconLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = IconLoader.cpp; sourceTree = ""; }; + 513F14520AB634C400094DDF /* IconLoader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = IconLoader.h; sourceTree = ""; }; + 514B3F720C722047000530DF /* FileSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileSystem.h; sourceTree = ""; }; + 514B3F750C722055000530DF /* FileSystemMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FileSystemMac.mm; sourceTree = ""; }; + 514BC83D161CF043004D52F4 /* ResourceBuffer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ResourceBuffer.mm; sourceTree = ""; }; + 514BC840161CF05C004D52F4 /* ResourceBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceBuffer.cpp; sourceTree = ""; }; + 514BC841161CF05C004D52F4 /* ResourceBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceBuffer.h; sourceTree = ""; }; + 514C76350CE9225E007EF3CD /* JSSQLError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLError.cpp; sourceTree = ""; }; + 514C76360CE9225E007EF3CD /* JSSQLTransaction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLTransaction.cpp; sourceTree = ""; }; + 514C76420CE9234E007EF3CD /* AuthenticationMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AuthenticationMac.h; sourceTree = ""; }; + 514C76430CE9234E007EF3CD /* AuthenticationMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AuthenticationMac.mm; sourceTree = ""; }; + 514C76440CE9234E007EF3CD /* FormDataStreamMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormDataStreamMac.h; sourceTree = ""; }; + 514C76450CE9234E007EF3CD /* FormDataStreamMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FormDataStreamMac.mm; sourceTree = ""; }; + 514C76460CE9234E007EF3CD /* ResourceErrorMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ResourceErrorMac.mm; sourceTree = ""; }; + 514C76470CE9234E007EF3CD /* ResourceHandleMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ResourceHandleMac.mm; sourceTree = ""; }; + 514C76490CE9234E007EF3CD /* ResourceRequestMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ResourceRequestMac.mm; sourceTree = ""; }; + 514C764B0CE9234E007EF3CD /* ResourceResponseMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ResourceResponseMac.mm; sourceTree = ""; }; + 514C76580CE923A1007EF3CD /* Credential.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Credential.cpp; sourceTree = ""; }; + 514C76590CE923A1007EF3CD /* Credential.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Credential.h; sourceTree = ""; }; + 514C765A0CE923A1007EF3CD /* FormData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FormData.cpp; sourceTree = ""; }; + 514C765B0CE923A1007EF3CD /* FormData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormData.h; sourceTree = ""; }; + 514C765C0CE923A1007EF3CD /* HTTPHeaderMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPHeaderMap.h; sourceTree = ""; }; + 514C765D0CE923A1007EF3CD /* HTTPParsers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTTPParsers.cpp; sourceTree = ""; }; + 514C765E0CE923A1007EF3CD /* HTTPParsers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPParsers.h; sourceTree = ""; }; + 514C765F0CE923A1007EF3CD /* ProtectionSpace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProtectionSpace.cpp; sourceTree = ""; }; + 514C76600CE923A1007EF3CD /* ProtectionSpace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProtectionSpace.h; sourceTree = ""; }; + 514C76630CE923A1007EF3CD /* ResourceHandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceHandle.cpp; sourceTree = ""; }; + 514C76640CE923A1007EF3CD /* ResourceHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceHandle.h; sourceTree = ""; }; + 514C76650CE923A1007EF3CD /* ResourceHandleClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceHandleClient.h; sourceTree = ""; }; + 514C76660CE923A1007EF3CD /* ResourceHandleInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceHandleInternal.h; sourceTree = ""; }; + 514C76670CE923A1007EF3CD /* ResourceRequestBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceRequestBase.cpp; sourceTree = ""; }; + 514C76680CE923A1007EF3CD /* ResourceRequestBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceRequestBase.h; sourceTree = ""; }; + 514C76690CE923A1007EF3CD /* ResourceResponseBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceResponseBase.cpp; sourceTree = ""; }; + 514C766A0CE923A1007EF3CD /* ResourceResponseBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceResponseBase.h; sourceTree = ""; }; + 515788C01207852C00A37C4A /* VisitedLinkStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VisitedLinkStrategy.h; sourceTree = ""; }; + 5160300A0CC4251200C8AC25 /* FileSystemPOSIX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileSystemPOSIX.cpp; sourceTree = ""; }; + 5160306B0CC4362300C8AC25 /* FileSystemCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileSystemCF.cpp; sourceTree = ""; }; + 5160F4970B0AA75F00C1D2AF /* HistoryItemMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = HistoryItemMac.mm; path = mac/HistoryItemMac.mm; sourceTree = ""; }; + 5162C7F211F77EFA00612EFE /* SchemeRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SchemeRegistry.cpp; sourceTree = ""; }; + 5162C7F311F77EFB00612EFE /* SchemeRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SchemeRegistry.h; sourceTree = ""; }; + 516953951329A3C800B92D04 /* IconDatabaseBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IconDatabaseBase.cpp; sourceTree = ""; }; + 516953961329A3C800B92D04 /* IconDatabaseBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IconDatabaseBase.h; sourceTree = ""; }; + 516BB7920CE91E6800512F79 /* JSTreeWalkerCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTreeWalkerCustom.cpp; sourceTree = ""; }; + 51741D0B0B07259A00ED442C /* BackForwardList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BackForwardList.h; sourceTree = ""; }; + 51741D0D0B07259A00ED442C /* HistoryItem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HistoryItem.h; sourceTree = ""; }; + 51741D0E0B07259A00ED442C /* HistoryItem.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HistoryItem.cpp; sourceTree = ""; }; + 5174E20810A1F44F00F95E6F /* PopStateEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PopStateEvent.h; sourceTree = ""; }; + 5174E20B10A1F49A00F95E6F /* PopStateEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PopStateEvent.idl; sourceTree = ""; }; + 517FBA17151AA71B00B57959 /* DOMWindowExtension.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMWindowExtension.cpp; sourceTree = ""; }; + 517FBA18151AA71B00B57959 /* DOMWindowExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWindowExtension.h; sourceTree = ""; }; + 5189F01B10B37BD900F3C739 /* JSPopStateEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPopStateEvent.cpp; sourceTree = ""; }; + 5189F01C10B37BD900F3C739 /* JSPopStateEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPopStateEvent.h; sourceTree = ""; }; + 5189F0DD10B46B0E00F3C739 /* PopStateEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PopStateEvent.cpp; sourceTree = ""; }; + 519FE0A10DAD446E00A08F21 /* HTMLAttributeNames.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLAttributeNames.in; sourceTree = ""; }; + 519FE0A20DAD446E00A08F21 /* HTMLTagNames.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLTagNames.in; sourceTree = ""; }; + 51A052311058774F00CC9E95 /* CredentialStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CredentialStorage.h; sourceTree = ""; }; + 51A052321058774F00CC9E95 /* CredentialStorage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CredentialStorage.cpp; sourceTree = ""; }; + 51A052551058874000CC9E95 /* ProtectionSpaceHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProtectionSpaceHash.h; sourceTree = ""; }; + 51AA3F6E0BD5AA9E00892971 /* ResourceLoaderMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ResourceLoaderMac.mm; sourceTree = ""; }; + 51ABAE1A103C18FF008C5260 /* SocketStreamError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketStreamError.h; sourceTree = ""; }; + 51ABAE1C103C1913008C5260 /* SocketStreamHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketStreamHandle.h; sourceTree = ""; }; + 51ABAE1D103C1913008C5260 /* SocketStreamHandleCFNet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SocketStreamHandleCFNet.cpp; sourceTree = ""; }; + 51ABF64C16392E2800132A7A /* LoaderStrategy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoaderStrategy.cpp; sourceTree = ""; }; + 51AF503516F100F60095B2E8 /* ResourceLoaderTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLoaderTypes.h; sourceTree = ""; }; + 51B2417A0D931F3F00E83F5C /* LegacyWebArchiveMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LegacyWebArchiveMac.mm; sourceTree = ""; }; + 51BE37DE0DAEE00E001085FC /* StorageArea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageArea.h; sourceTree = ""; }; + 51C0AA380F2AA10A001648C2 /* CachedFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedFrame.h; sourceTree = ""; }; + 51C0AA400F2AA15E001648C2 /* CachedFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedFrame.cpp; sourceTree = ""; }; + 51C81B870C4422F70019ECE3 /* FTPDirectoryParser.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FTPDirectoryParser.cpp; sourceTree = ""; }; + 51C81B880C4422F70019ECE3 /* FTPDirectoryParser.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FTPDirectoryParser.h; sourceTree = ""; }; + 51CBFC980D10E483002DBF51 /* CachedFramePlatformData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedFramePlatformData.h; sourceTree = ""; }; + 51D0C5150DAA90B7003B3831 /* JSStorageCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSStorageCustom.cpp; sourceTree = ""; }; + 51DCE8010CAC9F1C00488358 /* JSSQLResultSetRowListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLResultSetRowListCustom.cpp; sourceTree = ""; }; + 51DF6D7D0B92A16D00C2DC85 /* ThreadCheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadCheck.h; sourceTree = ""; }; + 51DF6D7F0B92A18E00C2DC85 /* ThreadCheck.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ThreadCheck.mm; sourceTree = ""; }; + 51E0BAB90DA5547100A9E417 /* StorageEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageEvent.h; sourceTree = ""; }; + 51E0BABA0DA5547100A9E417 /* StorageEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageEvent.cpp; sourceTree = ""; }; + 51E0BABD0DA5548400A9E417 /* StorageEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = StorageEvent.idl; sourceTree = ""; }; + 51E0BAE80DA55D4A00A9E417 /* JSStorageEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSStorageEvent.cpp; sourceTree = ""; }; + 51E0BAE90DA55D4A00A9E417 /* JSStorageEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStorageEvent.h; sourceTree = ""; }; + 51E0BB360DA5ACB600A9E417 /* StorageMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageMap.h; sourceTree = ""; }; + 51E0BB370DA5ACB600A9E417 /* StorageMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageMap.cpp; sourceTree = ""; }; + 51E1ECB80C91C90400DC255B /* IconDatabaseClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IconDatabaseClient.h; sourceTree = ""; }; + 51E1ECBA0C91C90400DC255B /* IconRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IconRecord.cpp; sourceTree = ""; }; + 51E1ECBB0C91C90400DC255B /* IconRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IconRecord.h; sourceTree = ""; }; + 51E1ECBC0C91C90400DC255B /* PageURLRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageURLRecord.cpp; sourceTree = ""; }; + 51E1ECBD0C91C90400DC255B /* PageURLRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageURLRecord.h; sourceTree = ""; }; + 51E3F9C40DA059DC00250911 /* Storage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Storage.h; sourceTree = ""; }; + 51E3F9C50DA059DC00250911 /* Storage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Storage.cpp; sourceTree = ""; }; + 51E3F9D10DA05D7100250911 /* Storage.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Storage.idl; sourceTree = ""; }; + 51E3F9D40DA05E1D00250911 /* JSStorage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSStorage.cpp; sourceTree = ""; }; + 51E3F9D50DA05E1D00250911 /* JSStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStorage.h; sourceTree = ""; }; + 51E4143216A6595100C633C7 /* ResourceHandleTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceHandleTypes.h; sourceTree = ""; }; + 51E6820F16387302003BBF3C /* LoaderStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoaderStrategy.h; sourceTree = ""; }; + 51EC925D0CE90DD400F90308 /* JSCustomSQLStatementErrorCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCustomSQLStatementErrorCallback.cpp; sourceTree = ""; }; + 51F6A3D50663BF04004D2919 /* HTMLCanvasElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLCanvasElement.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51F6A3D60663BF04004D2919 /* HTMLCanvasElement.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = HTMLCanvasElement.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51FB5502113E3E9100821176 /* JSCloseEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCloseEvent.h; sourceTree = ""; }; + 51FB5503113E3E9100821176 /* JSCloseEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCloseEvent.cpp; sourceTree = ""; }; + 521D46F511AEC98100514613 /* KillRingMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = KillRingMac.mm; sourceTree = ""; }; + 521D46F711AEC9B100514613 /* KillRing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KillRing.h; sourceTree = ""; }; + 52B6C9BD15E3F4DF00690B05 /* DOMNamedFlowCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMNamedFlowCollection.cpp; sourceTree = ""; }; + 52B6C9BE15E3F4DF00690B05 /* DOMNamedFlowCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMNamedFlowCollection.h; sourceTree = ""; }; + 52B6C9BF15E3F4DF00690B05 /* DOMNamedFlowCollection.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMNamedFlowCollection.idl; sourceTree = ""; }; + 52B6C9C015E3F4DF00690B05 /* NamedFlowCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NamedFlowCollection.cpp; sourceTree = ""; }; + 52B6C9C115E3F4DF00690B05 /* NamedFlowCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NamedFlowCollection.h; sourceTree = ""; }; + 52CCA9E015E3F62C0053C77F /* JSDOMNamedFlowCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMNamedFlowCollection.cpp; sourceTree = ""; }; + 52CCA9E115E3F62C0053C77F /* JSDOMNamedFlowCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMNamedFlowCollection.h; sourceTree = ""; }; + 52CCA9E515E3F64C0053C77F /* DOMDOMNamedFlowCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMDOMNamedFlowCollection.h; sourceTree = ""; }; + 52CCA9E615E3F64C0053C77F /* DOMDOMNamedFlowCollection.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMDOMNamedFlowCollection.mm; sourceTree = ""; }; + 52CCA9E715E3F64C0053C77F /* DOMDOMNamedFlowCollectionInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMDOMNamedFlowCollectionInternal.h; sourceTree = ""; }; + 52F10862162B6D82009AC81E /* MixedContentChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MixedContentChecker.cpp; sourceTree = ""; }; + 52F10863162B6D82009AC81E /* MixedContentChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MixedContentChecker.h; sourceTree = ""; }; + 52F52E1014A0134F00ACC397 /* NSScrollerImpDetails.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NSScrollerImpDetails.mm; sourceTree = ""; }; + 5317612013C516690026E454 /* StyleFlexibleBoxData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleFlexibleBoxData.cpp; path = style/StyleFlexibleBoxData.cpp; sourceTree = ""; }; + 5317612113C516690026E454 /* StyleFlexibleBoxData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleFlexibleBoxData.h; path = style/StyleFlexibleBoxData.h; sourceTree = ""; }; + 53C8298B13D8D92700DE2DEB /* RenderFlexibleBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderFlexibleBox.cpp; sourceTree = ""; }; + 53C8298C13D8D92700DE2DEB /* RenderFlexibleBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderFlexibleBox.h; sourceTree = ""; }; + 53E29E5C167A8A1900586D3D /* InternalSettingsGenerated.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InternalSettingsGenerated.cpp; sourceTree = ""; }; + 53E29E5D167A8A1900586D3D /* InternalSettingsGenerated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InternalSettingsGenerated.h; sourceTree = ""; }; + 53ED3FDC167A88E7006762E6 /* JSInternalSettingsGenerated.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInternalSettingsGenerated.cpp; sourceTree = ""; }; + 53ED3FDD167A88E7006762E6 /* JSInternalSettingsGenerated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSInternalSettingsGenerated.h; sourceTree = ""; }; + 53EF766A16530A61004CBE49 /* SettingsMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsMacros.h; sourceTree = ""; }; + 550A0BC7085F6039007353D6 /* QualifiedName.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = QualifiedName.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 550A0BC8085F6039007353D6 /* QualifiedName.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = QualifiedName.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 573D134514CE39FF0057ABCA /* InspectorTypeBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorTypeBuilder.cpp; sourceTree = ""; }; + 573D134614CE39FF0057ABCA /* InspectorTypeBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorTypeBuilder.h; sourceTree = ""; }; + 57B7919F14C6A62900F202D1 /* ContentDistributor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContentDistributor.cpp; sourceTree = ""; }; + 57B791A014C6A62900F202D1 /* ContentDistributor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContentDistributor.h; sourceTree = ""; }; + 57B791A714C6A63300F202D1 /* HTMLContentElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLContentElement.cpp; sourceTree = ""; }; + 57B791A814C6A63300F202D1 /* HTMLContentElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLContentElement.h; sourceTree = ""; }; + 57CF497214EE36D700ECFF14 /* InsertionPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InsertionPoint.cpp; sourceTree = ""; }; + 57CF497314EE36D700ECFF14 /* InsertionPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InsertionPoint.h; sourceTree = ""; }; + 57CF4C8414F7597A00ECFF14 /* ElementShadow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ElementShadow.cpp; sourceTree = ""; }; + 57CF4C8514F7597A00ECFF14 /* ElementShadow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ElementShadow.h; sourceTree = ""; }; + 5905ADBD1302F3CE00F116DF /* XMLTreeViewer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLTreeViewer.cpp; sourceTree = ""; }; + 5905ADBE1302F3CE00F116DF /* XMLTreeViewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLTreeViewer.h; sourceTree = ""; }; + 590E1B4811E4EF4B0069F784 /* DeviceOrientationData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceOrientationData.h; sourceTree = ""; }; + 590E1B4A11E4EF700069F784 /* JSDeviceOrientationEventCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDeviceOrientationEventCustom.cpp; sourceTree = ""; }; + 59102FB914327D3B003C9D04 /* ContentSearchUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContentSearchUtils.cpp; sourceTree = ""; }; + 59102FBA14327D3B003C9D04 /* ContentSearchUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContentSearchUtils.h; sourceTree = ""; }; + 5913A23F13D49EBA00F5B05C /* IdentifiersFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IdentifiersFactory.cpp; sourceTree = ""; }; + 5913A24013D49EBA00F5B05C /* IdentifiersFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IdentifiersFactory.h; sourceTree = ""; }; + 59309A1011F4AE5800250603 /* DeviceOrientationClientMock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DeviceOrientationClientMock.cpp; path = mock/DeviceOrientationClientMock.cpp; sourceTree = ""; }; + 59309A1211F4AE6A00250603 /* DeviceOrientationClientMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DeviceOrientationClientMock.h; path = mock/DeviceOrientationClientMock.h; sourceTree = ""; }; + 5958F1CB1343917C0080B31F /* XMLViewer.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = XMLViewer.css; sourceTree = ""; }; + 5958F1CC1343917C0080B31F /* XMLViewer.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = XMLViewer.js; sourceTree = ""; }; + 598365DC1355F53C001B185D /* JSPositionCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPositionCallback.h; sourceTree = ""; }; + 598365DE1355F562001B185D /* JSPositionErrorCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPositionErrorCallback.h; sourceTree = ""; }; + 598365E31355F604001B185D /* JSPositionCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPositionCallback.cpp; sourceTree = ""; }; + 598365E51355F60D001B185D /* JSPositionErrorCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPositionErrorCallback.cpp; sourceTree = ""; }; + 599E758F11055A1F00D904FA /* Bridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Bridge.h; path = bridge/Bridge.h; sourceTree = ""; }; + 59A85EA1119D68D900DEF1EF /* DeviceOrientationEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeviceOrientationEvent.cpp; sourceTree = ""; }; + 59A85EA3119D68EC00DEF1EF /* DeviceOrientationEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceOrientationEvent.h; sourceTree = ""; }; + 59A85EAA119D7B6E00DEF1EF /* DeviceOrientationEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DeviceOrientationEvent.idl; sourceTree = ""; }; + 59A86005119DAF7F00DEF1EF /* JSDeviceOrientationEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDeviceOrientationEvent.cpp; sourceTree = ""; }; + 59A86007119DAFA100DEF1EF /* JSDeviceOrientationEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDeviceOrientationEvent.h; sourceTree = ""; }; + 59A8F1D311A69508001AC34A /* DeviceOrientationController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeviceOrientationController.cpp; sourceTree = ""; }; + 59A8F1D511A69513001AC34A /* DeviceOrientationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceOrientationController.h; sourceTree = ""; }; + 59A8F1D711A69520001AC34A /* DeviceOrientationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceOrientationClient.h; sourceTree = ""; }; + 59B597721108656B007159E8 /* BridgeJSC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BridgeJSC.cpp; path = bridge/jsc/BridgeJSC.cpp; sourceTree = ""; }; + 59B5977411086579007159E8 /* BridgeJSC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BridgeJSC.h; path = bridge/jsc/BridgeJSC.h; sourceTree = ""; }; + 59C27F04138D28C10079B7E2 /* NetworkResourcesData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkResourcesData.cpp; sourceTree = ""; }; + 59C27F06138D28CF0079B7E2 /* NetworkResourcesData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkResourcesData.h; sourceTree = ""; }; + 59C28043138DC2410079B7E2 /* XMLErrors.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLErrors.cpp; sourceTree = ""; }; + 59C28044138DC2410079B7E2 /* XMLErrors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLErrors.h; sourceTree = ""; }; + 59D1C10311EB5DCF00B638C8 /* DeviceOrientationData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeviceOrientationData.cpp; sourceTree = ""; }; + 5A574F22131DB93900471B88 /* RenderQuote.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderQuote.cpp; sourceTree = ""; }; + 5A574F23131DB93900471B88 /* RenderQuote.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderQuote.h; sourceTree = ""; }; + 5A574F26131DB96D00471B88 /* QuotesData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = QuotesData.cpp; path = style/QuotesData.cpp; sourceTree = ""; }; + 5A574F27131DB96D00471B88 /* QuotesData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QuotesData.h; path = style/QuotesData.h; sourceTree = ""; }; + 5D21A80013ECE5DF00BB7064 /* WebVTTParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebVTTParser.cpp; sourceTree = ""; }; + 5D21A80113ECE5DF00BB7064 /* WebVTTParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebVTTParser.h; sourceTree = ""; }; + 5D4B8C5211E52C8B00BBB62F /* WebCore.exp.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebCore.exp.in; sourceTree = ""; }; + 5D87BB4F11E3EAEB00702B6F /* WebCoreExportFileGenerator */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = WebCoreExportFileGenerator; sourceTree = BUILT_PRODUCTS_DIR; }; + 5D87BB8211E3ED8600702B6F /* ExportFileGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ExportFileGenerator.cpp; path = DerivedSources/WebCore/ExportFileGenerator.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; + 5D8C4DBD1428222C0026CE72 /* DisplaySleepDisabler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DisplaySleepDisabler.cpp; sourceTree = ""; }; + 5D8C4DBE1428222C0026CE72 /* DisplaySleepDisabler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DisplaySleepDisabler.h; sourceTree = ""; }; + 5D925B650F64D4DD00B847F0 /* ScrollBehavior.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollBehavior.cpp; sourceTree = ""; }; + 5D925B660F64D4DD00B847F0 /* ScrollBehavior.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollBehavior.h; sourceTree = ""; }; + 5DA5E0FA102B953800088CF9 /* JSWebSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebSocket.cpp; sourceTree = ""; }; + 5DA5E0FB102B953800088CF9 /* JSWebSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebSocket.h; sourceTree = ""; }; + 5DA97ECB168E787B000E3676 /* SystemVersionMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SystemVersionMac.h; sourceTree = ""; }; + 5DA97ECC168E787B000E3676 /* SystemVersionMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SystemVersionMac.mm; sourceTree = ""; }; + 5DB1BC6810715A6400EFAA49 /* TransformSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TransformSource.h; sourceTree = ""; }; + 5DB1BC6910715A6400EFAA49 /* TransformSourceLibxslt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TransformSourceLibxslt.cpp; sourceTree = ""; }; + 5DC87EEF11716DF2001C0E6D /* EmptyProtocolDefinitions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EmptyProtocolDefinitions.h; sourceTree = ""; }; + 5FC7DC26CFE2563200B85AE5 /* JSEventTarget.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSEventTarget.h; sourceTree = ""; }; + 626CDE0C1140424C001E5A68 /* SpatialNavigation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpatialNavigation.cpp; sourceTree = ""; }; + 626CDE0D1140424C001E5A68 /* SpatialNavigation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpatialNavigation.h; sourceTree = ""; }; + 628D214B12131ED10055DCFC /* NetworkingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkingContext.h; sourceTree = ""; }; + 628D214D12131EF40055DCFC /* FrameNetworkingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameNetworkingContext.h; sourceTree = ""; }; + 62C1217A11AB9E76003C462C /* SuspendableTimer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SuspendableTimer.cpp; sourceTree = ""; }; + 62C1217B11AB9E77003C462C /* SuspendableTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SuspendableTimer.h; sourceTree = ""; }; + 62CD32561157E57C0063B0A7 /* CustomEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CustomEvent.cpp; sourceTree = ""; }; + 62CD32571157E57C0063B0A7 /* CustomEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomEvent.h; sourceTree = ""; }; + 62CD32581157E57C0063B0A7 /* CustomEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CustomEvent.idl; sourceTree = ""; }; + 63189AE20E83A33300012E41 /* NodeRareData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeRareData.h; sourceTree = ""; }; + 637B7ADE0E8767B800E32194 /* ElementRareData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ElementRareData.h; sourceTree = ""; }; + 63D7B32C0E78CD3F00F7617C /* NodeRenderStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeRenderStyle.h; sourceTree = ""; }; + 650F53DB09D15DDA00C9B0C8 /* CSSGrammar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSGrammar.h; sourceTree = ""; }; + 650FBF270D9AF046008FC292 /* SVGHKernElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGHKernElement.cpp; sourceTree = ""; }; + 650FBF280D9AF047008FC292 /* SVGHKernElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGHKernElement.h; sourceTree = ""; }; + 650FBF290D9AF047008FC292 /* SVGHKernElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGHKernElement.idl; sourceTree = ""; }; + 6515EC8F0D9723FF0063D49A /* JSSVGAltGlyphElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAltGlyphElement.cpp; sourceTree = ""; }; + 6515EC900D9723FF0063D49A /* JSSVGAltGlyphElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGAltGlyphElement.h; sourceTree = ""; }; + 652FBBBB0DE27CB60001D386 /* JSDOMWindowCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMWindowCustom.h; sourceTree = ""; }; + 6548E24809E1E04D00AF8020 /* Document.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = Document.idl; sourceTree = ""; }; + 6550B693099DF0270090D781 /* CDATASection.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CDATASection.cpp; sourceTree = ""; }; + 6550B694099DF0270090D781 /* CDATASection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CDATASection.h; sourceTree = ""; }; + 6550B695099DF0270090D781 /* CharacterData.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CharacterData.cpp; sourceTree = ""; }; + 6550B696099DF0270090D781 /* CharacterData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CharacterData.h; sourceTree = ""; }; + 6550B697099DF0270090D781 /* Comment.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Comment.cpp; sourceTree = ""; }; + 6550B698099DF0270090D781 /* Comment.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Comment.h; sourceTree = ""; }; + 6550B69B099DF0270090D781 /* Text.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Text.cpp; sourceTree = ""; }; + 6550B69C099DF0270090D781 /* Text.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Text.h; sourceTree = ""; }; + 65653F2A0D9727D200CA9723 /* SVGAltGlyphElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAltGlyphElement.cpp; sourceTree = ""; }; + 65653F2B0D9727D200CA9723 /* SVGAltGlyphElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAltGlyphElement.h; sourceTree = ""; }; + 65653F2C0D9727D200CA9723 /* SVGAltGlyphElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGAltGlyphElement.idl; sourceTree = ""; }; + 656580EE09D12B20000E61D7 /* CSSPropertyNames.gperf */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSPropertyNames.gperf; sourceTree = ""; }; + 656580EF09D12B20000E61D7 /* CSSPropertyNames.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSPropertyNames.h; sourceTree = ""; }; + 6565814409D13043000E61D7 /* CSSGrammar.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSGrammar.cpp; sourceTree = ""; }; + 6565814709D13043000E61D7 /* CSSValueKeywords.gperf */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSValueKeywords.gperf; sourceTree = ""; }; + 6565814809D13043000E61D7 /* CSSValueKeywords.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSValueKeywords.h; sourceTree = ""; }; + 656581AC09D14EE6000E61D7 /* CharsetData.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CharsetData.cpp; sourceTree = ""; }; + 656581AE09D14EE6000E61D7 /* UserAgentStyleSheets.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = UserAgentStyleSheets.h; sourceTree = ""; }; + 656581AF09D14EE6000E61D7 /* UserAgentStyleSheetsData.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = UserAgentStyleSheetsData.cpp; sourceTree = ""; }; + 656581E609D1508D000E61D7 /* SVGElementFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGElementFactory.cpp; sourceTree = ""; }; + 656581E709D1508D000E61D7 /* SVGElementFactory.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGElementFactory.h; sourceTree = ""; }; + 656581E809D1508D000E61D7 /* SVGNames.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGNames.cpp; sourceTree = ""; }; + 656581E909D1508D000E61D7 /* SVGNames.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGNames.h; sourceTree = ""; }; + 656581EA09D1508D000E61D7 /* XLinkNames.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XLinkNames.cpp; sourceTree = ""; }; + 656581EB09D1508D000E61D7 /* XLinkNames.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XLinkNames.h; sourceTree = ""; }; + 656D371A0ADBA5DE00A4554D /* LoaderNSURLExtras.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = LoaderNSURLExtras.h; sourceTree = ""; }; + 656D371B0ADBA5DE00A4554D /* LoaderNSURLExtras.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = LoaderNSURLExtras.mm; sourceTree = ""; }; + 656D371E0ADBA5DE00A4554D /* DocumentLoader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DocumentLoader.h; sourceTree = ""; }; + 656D37220ADBA5DE00A4554D /* FormState.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FormState.h; sourceTree = ""; }; + 656D37230ADBA5DE00A4554D /* FormState.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FormState.cpp; sourceTree = ""; }; + 656D37240ADBA5DE00A4554D /* FrameLoader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FrameLoader.h; sourceTree = ""; }; + 656D37260ADBA5DE00A4554D /* FrameLoaderClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FrameLoaderClient.h; sourceTree = ""; }; + 656D37270ADBA5DE00A4554D /* ResourceLoader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ResourceLoader.h; sourceTree = ""; }; + 656D372B0ADBA5DE00A4554D /* NetscapePlugInStreamLoader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NetscapePlugInStreamLoader.h; sourceTree = ""; }; + 656D37300ADBA5DE00A4554D /* SubresourceLoader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SubresourceLoader.h; sourceTree = ""; }; + 657EDA061385CB97004E0645 /* MemoryPressureHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryPressureHandler.cpp; sourceTree = ""; }; + 657EDA071385CB97004E0645 /* MemoryPressureHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryPressureHandler.h; sourceTree = ""; }; + 657EDA0A1385CBD8004E0645 /* MemoryPressureHandlerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MemoryPressureHandlerMac.mm; sourceTree = ""; }; + 658436850AE01B7400E53753 /* FrameLoadRequest.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FrameLoadRequest.h; sourceTree = ""; }; + 6593923509AE4346002C531F /* KURL.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = KURL.cpp; sourceTree = ""; }; + 6593923609AE4346002C531F /* KURL.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = KURL.h; sourceTree = ""; }; + 6593923909AE435C002C531F /* KURLMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = KURLMac.mm; sourceTree = ""; }; + 659A7D120B6DB4D9001155B3 /* SubstituteData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SubstituteData.h; sourceTree = ""; }; + 659DDC8009E198BA001BF3C6 /* JSDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDocument.cpp; sourceTree = ""; }; + 659DDC8109E198BA001BF3C6 /* JSDocument.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDocument.h; sourceTree = ""; }; + 65A21467097A329100B9050A /* Page.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Page.h; sourceTree = ""; }; + 65A21482097A3F5300B9050A /* FrameTree.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FrameTree.cpp; sourceTree = ""; }; + 65A21483097A3F5300B9050A /* FrameTree.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FrameTree.h; sourceTree = ""; }; + 65A640F00533BB1F0085E777 /* BlockExceptions.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = BlockExceptions.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 65BF02290974816300C43196 /* Frame.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Frame.cpp; sourceTree = ""; }; + 65BF022A0974816300C43196 /* Frame.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Frame.h; sourceTree = ""; }; + 65BF023C0974819000C43196 /* FrameMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = FrameMac.mm; sourceTree = ""; }; + 65C97AF208EA908800ACD273 /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; tabWidth = 4; usesTabs = 0; }; + 65CBFEF70974F607001DAC25 /* FrameView.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FrameView.cpp; sourceTree = ""; }; + 65CBFEF80974F607001DAC25 /* FrameView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FrameView.h; sourceTree = ""; }; + 65CC6BED16014EC0000ED27D /* Latin1TextIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Latin1TextIterator.h; sourceTree = ""; }; + 65DF31D809D1C122000BE325 /* JSAttr.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSAttr.cpp; sourceTree = ""; }; + 65DF31D909D1C123000BE325 /* JSAttr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSAttr.h; sourceTree = ""; }; + 65DF31DF09D1CC60000BE325 /* JSCharacterData.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCharacterData.cpp; sourceTree = ""; }; + 65DF31E009D1CC60000BE325 /* JSCharacterData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCharacterData.h; sourceTree = ""; }; + 65DF31E109D1CC60000BE325 /* JSDocumentType.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDocumentType.cpp; sourceTree = ""; }; + 65DF31E209D1CC60000BE325 /* JSDocumentType.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDocumentType.h; sourceTree = ""; }; + 65DF31E309D1CC60000BE325 /* JSDOMImplementation.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMImplementation.cpp; sourceTree = ""; }; + 65DF31E409D1CC60000BE325 /* JSDOMImplementation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDOMImplementation.h; sourceTree = ""; }; + 65DF31E509D1CC60000BE325 /* JSElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSElement.cpp; sourceTree = ""; }; + 65DF31E609D1CC60000BE325 /* JSElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSElement.h; sourceTree = ""; }; + 65DF31E709D1CC60000BE325 /* JSMutationEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSMutationEvent.cpp; sourceTree = ""; }; + 65DF31E809D1CC60000BE325 /* JSMutationEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSMutationEvent.h; sourceTree = ""; }; + 65DF31E909D1CC60000BE325 /* JSNotation.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNotation.cpp; sourceTree = ""; }; + 65DF31EA09D1CC60000BE325 /* JSNotation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSNotation.h; sourceTree = ""; }; + 65DF31EB09D1CC60000BE325 /* JSProcessingInstruction.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSProcessingInstruction.cpp; sourceTree = ""; }; + 65DF31EC09D1CC60000BE325 /* JSProcessingInstruction.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSProcessingInstruction.h; sourceTree = ""; }; + 65DF31ED09D1CC60000BE325 /* JSRange.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSRange.cpp; sourceTree = ""; }; + 65DF31EE09D1CC60000BE325 /* JSRange.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSRange.h; sourceTree = ""; }; + 65DF31EF09D1CC60000BE325 /* JSText.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSText.cpp; sourceTree = ""; }; + 65DF31F009D1CC60000BE325 /* JSText.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSText.h; sourceTree = ""; }; + 65DF31F109D1CC60000BE325 /* JSWheelEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSWheelEvent.cpp; sourceTree = ""; }; + 65DF31F209D1CC60000BE325 /* JSWheelEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSWheelEvent.h; sourceTree = ""; }; + 65DF322D09D1DDBC000BE325 /* JSEntity.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSEntity.cpp; sourceTree = ""; }; + 65DF322E09D1DDBC000BE325 /* JSEntity.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSEntity.h; sourceTree = ""; }; + 65DF323309D1DE65000BE325 /* JSCanvasGradient.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCanvasGradient.cpp; sourceTree = ""; }; + 65DF323409D1DE65000BE325 /* JSCanvasGradient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCanvasGradient.h; sourceTree = ""; }; + 65DF323509D1DE65000BE325 /* JSCanvasPattern.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCanvasPattern.cpp; sourceTree = ""; }; + 65DF323609D1DE65000BE325 /* JSCanvasPattern.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCanvasPattern.h; sourceTree = ""; }; + 65DF323609D1DE65001BE325 /* JSCanvasProxy.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCanvasProxy.h; sourceTree = ""; }; + 65E0E9431133C89F00B4CB10 /* JSDOMWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMWrapper.h; sourceTree = ""; }; + 65F80697054D9F86008BF776 /* BlockExceptions.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BlockExceptions.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 65FEA86809833ADE00BED4AB /* Page.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Page.cpp; sourceTree = ""; }; + 6B3480920EEF50D400AC1B41 /* NativeImagePtr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NativeImagePtr.h; sourceTree = ""; }; + 6C638893A96CCEE50C8C946C /* CachedResourceRequestInitiators.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedResourceRequestInitiators.h; sourceTree = ""; }; + 6C638894A96CCEE50C8C946C /* CachedResourceRequestInitiators.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CachedResourceRequestInitiators.cpp; sourceTree = ""; }; + 6C70A81417707C49009A446E /* RegionOversetState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegionOversetState.h; sourceTree = ""; }; + 6E21C6BF1126338500A7BE02 /* GraphicsContext3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsContext3D.cpp; sourceTree = ""; }; + 6E21C6C11126339900A7BE02 /* GraphicsContext3DCG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsContext3DCG.cpp; sourceTree = ""; }; + 6E3FAD3614733F4000E42306 /* JSWebGLCompressedTextureS3TC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLCompressedTextureS3TC.cpp; sourceTree = ""; }; + 6E3FAD3614733F4000E42307 /* JSWebGLDepthTexture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLDepthTexture.cpp; sourceTree = ""; }; + 6E3FAD3614733F4010E42307 /* JSWebGLDebugRendererInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLDebugRendererInfo.cpp; sourceTree = ""; }; + 6E3FAD3614733F4020E42307 /* JSWebGLDebugShaders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLDebugShaders.cpp; sourceTree = ""; }; + 6E3FAD3714733F4000E42306 /* JSWebGLCompressedTextureS3TC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLCompressedTextureS3TC.h; sourceTree = ""; }; + 6E3FAD3714733F4000E42307 /* JSWebGLDepthTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLDepthTexture.h; sourceTree = ""; }; + 6E3FAD3714733F4011E42307 /* JSWebGLDebugRendererInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLDebugRendererInfo.h; sourceTree = ""; }; + 6E3FAD3714733F4022E42307 /* JSWebGLDebugShaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLDebugShaders.h; sourceTree = ""; }; + 6E3FAE8C14733FDB00E42306 /* WebGLCompressedTextureS3TC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLCompressedTextureS3TC.cpp; path = canvas/WebGLCompressedTextureS3TC.cpp; sourceTree = ""; }; + 6E3FAE8C14733FDB00E42307 /* WebGLDepthTexture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLDepthTexture.cpp; path = canvas/WebGLDepthTexture.cpp; sourceTree = ""; }; + 6E3FAE8D14733FDB00E42306 /* WebGLCompressedTextureS3TC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLCompressedTextureS3TC.h; path = canvas/WebGLCompressedTextureS3TC.h; sourceTree = ""; }; + 6E3FAE8D14733FDB00E42307 /* WebGLDepthTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLDepthTexture.h; path = canvas/WebGLDepthTexture.h; sourceTree = ""; }; + 6E3FAE9014733FEA00E42306 /* WebGLCompressedTextureS3TC.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLCompressedTextureS3TC.idl; path = canvas/WebGLCompressedTextureS3TC.idl; sourceTree = ""; }; + 6E3FAE9014733FEA00E42307 /* WebGLDepthTexture.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLDepthTexture.idl; path = canvas/WebGLDepthTexture.idl; sourceTree = ""; }; + 6E47E65E10B7944B00B186C8 /* WebGLGetInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLGetInfo.cpp; path = canvas/WebGLGetInfo.cpp; sourceTree = ""; }; + 6E47E65F10B7944B00B186C8 /* WebGLGetInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLGetInfo.h; path = canvas/WebGLGetInfo.h; sourceTree = ""; }; + 6E4ABCD2138EA0B70071D291 /* JSHTMLUnknownElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLUnknownElement.cpp; sourceTree = ""; }; + 6E4ABCD3138EA0B70071D291 /* JSHTMLUnknownElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLUnknownElement.h; sourceTree = ""; }; + 6E4E91A710F7FB3100A2779C /* CanvasContextAttributes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CanvasContextAttributes.cpp; path = canvas/CanvasContextAttributes.cpp; sourceTree = ""; }; + 6E4E91A810F7FB3100A2779C /* CanvasContextAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CanvasContextAttributes.h; path = canvas/CanvasContextAttributes.h; sourceTree = ""; }; + 6E4E91A910F7FB3100A2779C /* WebGLContextAttributes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLContextAttributes.cpp; path = canvas/WebGLContextAttributes.cpp; sourceTree = ""; }; + 6E4E91AA10F7FB3100A2779C /* WebGLContextAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLContextAttributes.h; path = canvas/WebGLContextAttributes.h; sourceTree = ""; }; + 6E4E91AB10F7FB3100A2779C /* WebGLContextAttributes.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLContextAttributes.idl; path = canvas/WebGLContextAttributes.idl; sourceTree = ""; }; + 6E67D2A41280E8A4008758F7 /* Extensions3DOpenGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Extensions3DOpenGL.cpp; sourceTree = ""; }; + 6E67D2A51280E8A4008758F7 /* Extensions3DOpenGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Extensions3DOpenGL.h; sourceTree = ""; }; + 6E67D2A81280E8BD008758F7 /* Extensions3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Extensions3D.h; sourceTree = ""; }; + 6EBC5D80138B4C4E00A0CF8A /* Float64Array.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Float64Array.idl; path = canvas/Float64Array.idl; sourceTree = ""; }; + 6EBC5EAD138B50F200A0CF8A /* JSFloat64Array.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFloat64Array.cpp; sourceTree = ""; }; + 6EBC5EAE138B50F200A0CF8A /* JSFloat64Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFloat64Array.h; sourceTree = ""; }; + 6EBF0E4512A8926100DB1709 /* OESTextureFloat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OESTextureFloat.cpp; path = canvas/OESTextureFloat.cpp; sourceTree = ""; }; + 6EBF0E4612A8926100DB1709 /* OESTextureFloat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OESTextureFloat.h; path = canvas/OESTextureFloat.h; sourceTree = ""; }; + 6EBF0E4712A8926100DB1709 /* OESTextureFloat.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = OESTextureFloat.idl; path = canvas/OESTextureFloat.idl; sourceTree = ""; }; + 6EBF0E5212A8929800DB1709 /* WebGLExtension.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLExtension.cpp; path = canvas/WebGLExtension.cpp; sourceTree = ""; }; + 6EBF0E5312A8929800DB1709 /* WebGLExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLExtension.h; path = canvas/WebGLExtension.h; sourceTree = ""; }; + 6EBF0E7412A9868800DB1709 /* JSOESTextureFloat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSOESTextureFloat.cpp; sourceTree = ""; }; + 6EBF0E7412A9868800DB170A /* JSEXTDrawBuffers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSEXTDrawBuffers.cpp; sourceTree = ""; }; + 6EBF0E7512A9868800DB1709 /* JSOESTextureFloat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSOESTextureFloat.h; sourceTree = ""; }; + 6EBF0E7512A9868800DB170A /* JSEXTDrawBuffers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEXTDrawBuffers.h; sourceTree = ""; }; + 6EC4809F16EA638A00A48DCB /* FloatPolygon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FloatPolygon.cpp; sourceTree = ""; }; + 6EC480A016EA638A00A48DCB /* FloatPolygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FloatPolygon.h; sourceTree = ""; }; + 6ED878C2147493F4004C3597 /* RenderTableCaption.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTableCaption.cpp; sourceTree = ""; }; + 6ED878C3147493F4004C3597 /* RenderTableCaption.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderTableCaption.h; sourceTree = ""; }; + 6EE8A77010F803F3005A4A24 /* JSWebGLContextAttributes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLContextAttributes.cpp; sourceTree = ""; }; + 6EE8A77110F803F3005A4A24 /* JSWebGLContextAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLContextAttributes.h; sourceTree = ""; }; + 7117445614BC34E200EE5FC8 /* SVGTextMetricsBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextMetricsBuilder.cpp; sourceTree = ""; }; + 7117445714BC34E200EE5FC8 /* SVGTextMetricsBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTextMetricsBuilder.h; sourceTree = ""; }; + 7118FED215685CC60030B79A /* JSSVGViewSpec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGViewSpec.cpp; sourceTree = ""; }; + 7118FED315685CC60030B79A /* JSSVGViewSpec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGViewSpec.h; sourceTree = ""; }; + 7134496B146941B300720312 /* SVGLengthContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGLengthContext.cpp; sourceTree = ""; }; + 7134496C146941B300720312 /* SVGLengthContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGLengthContext.h; sourceTree = ""; }; + 713E70AF1733E8B300A22D00 /* plugIns.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = plugIns.js; sourceTree = ""; }; + 715379FE146BD9D6008BD615 /* SVGPathData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathData.cpp; sourceTree = ""; }; + 715379FF146BD9D6008BD615 /* SVGPathData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathData.h; sourceTree = ""; }; + 7157F061150B6564006EAABD /* SVGAnimatedTransformList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedTransformList.cpp; sourceTree = ""; }; + 71A57DEF154BE25C0009D120 /* SVGPathUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathUtilities.cpp; sourceTree = ""; }; + 71A57DF0154BE25C0009D120 /* SVGPathUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathUtilities.h; sourceTree = ""; }; + 71B1E123164048CC00B1880A /* InspectorLayerTreeAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorLayerTreeAgent.cpp; sourceTree = ""; }; + 71B1E124164048CC00B1880A /* InspectorLayerTreeAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorLayerTreeAgent.h; sourceTree = ""; }; + 71CC7A1F152A0BFE009EEAF9 /* SVGAnimatedEnumeration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedEnumeration.cpp; sourceTree = ""; }; + 71DCB6FF1568197600862271 /* JSSVGZoomAndPan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGZoomAndPan.cpp; sourceTree = ""; }; + 71DCB7001568197600862271 /* JSSVGZoomAndPan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGZoomAndPan.h; sourceTree = ""; }; + 71E2183817359FB8006E6E4D /* PlugInsResources.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = PlugInsResources.h; sourceTree = ""; }; + 71E2183917359FB8006E6E4D /* PlugInsResourcesData.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; path = PlugInsResourcesData.cpp; sourceTree = ""; }; + 71E623CE151F72A60036E2F4 /* SVGAnimatedIntegerOptionalInteger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedIntegerOptionalInteger.cpp; sourceTree = ""; }; + 71E623CF151F72A60036E2F4 /* SVGAnimatedIntegerOptionalInteger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedIntegerOptionalInteger.h; sourceTree = ""; }; + 71FB967A1383D64600AC8A4C /* SVGAnimatedEnumerationPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedEnumerationPropertyTearOff.h; sourceTree = ""; }; + 72626E010EF022FE00A07E20 /* FontFastPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontFastPath.cpp; sourceTree = ""; }; + 750D029211D0E7F300BD1B27 /* RenderInputSpeech.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderInputSpeech.h; sourceTree = ""; }; + 754133A7102E00E800075D00 /* InspectorTimelineAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorTimelineAgent.h; sourceTree = ""; }; + 754133A9102E00F400075D00 /* InspectorTimelineAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorTimelineAgent.cpp; sourceTree = ""; }; + 75415AF812958D5E003AD669 /* SpeechInputEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpeechInputEvent.h; sourceTree = ""; }; + 75415AF912958D5E003AD669 /* SpeechInputEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SpeechInputEvent.idl; sourceTree = ""; }; + 75415AFA12958D5E003AD669 /* SpeechInputResult.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SpeechInputResult.idl; sourceTree = ""; }; + 75415AFB12958D5E003AD669 /* SpeechInputResultList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpeechInputResultList.h; sourceTree = ""; }; + 75415AFC12958D5E003AD669 /* SpeechInputResultList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SpeechInputResultList.idl; sourceTree = ""; }; + 75415C27129A9920003AD669 /* SpeechInputResultList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpeechInputResultList.cpp; sourceTree = ""; }; + 75415D50129AB2D2003AD669 /* JSSpeechInputEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSpeechInputEvent.h; sourceTree = ""; }; + 75415D52129AB2D2003AD669 /* JSSpeechInputResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSpeechInputResult.h; sourceTree = ""; }; + 75415D53129AB2D2003AD669 /* JSSpeechInputResultList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSpeechInputResultList.cpp; sourceTree = ""; }; + 75415D54129AB2D2003AD669 /* JSSpeechInputResultList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSpeechInputResultList.h; sourceTree = ""; }; + 7553CFE6108F473F00EA281E /* TimelineRecordFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimelineRecordFactory.h; sourceTree = ""; }; + 7553CFE7108F473F00EA281E /* TimelineRecordFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TimelineRecordFactory.cpp; sourceTree = ""; }; + 7578F90911DDF26900D933C5 /* SpeechInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpeechInput.h; sourceTree = ""; }; + 7578F90A11DDF26900D933C5 /* SpeechInputClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpeechInputClient.h; sourceTree = ""; }; + 7578F91E11E4E32800D933C5 /* SpeechInputListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpeechInputListener.h; sourceTree = ""; }; + 75793E800D0CE0B3007FC0AC /* MessageEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = MessageEvent.cpp; path = dom/MessageEvent.cpp; sourceTree = SOURCE_ROOT; }; + 75793E810D0CE0B3007FC0AC /* MessageEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MessageEvent.h; path = dom/MessageEvent.h; sourceTree = SOURCE_ROOT; }; + 75793E820D0CE0B3007FC0AC /* MessageEvent.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = MessageEvent.idl; path = dom/MessageEvent.idl; sourceTree = SOURCE_ROOT; }; + 75793EC60D0CE72D007FC0AC /* JSMessageEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSMessageEvent.cpp; sourceTree = ""; }; + 75793EC70D0CE72D007FC0AC /* JSMessageEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSMessageEvent.h; sourceTree = ""; }; + 75793ED00D0CE85B007FC0AC /* DOMMessageEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMMessageEvent.h; sourceTree = ""; }; + 75793ED10D0CE85B007FC0AC /* DOMMessageEvent.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMMessageEvent.mm; sourceTree = ""; }; + 75793ED20D0CE85B007FC0AC /* DOMMessageEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMMessageEventInternal.h; sourceTree = ""; }; + 758978EB127090D60076D5A9 /* SpeechInputResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpeechInputResult.h; sourceTree = ""; }; + 762F1ED6159D960A007408F2 /* HTMLDialogElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLDialogElement.h; sourceTree = ""; }; + 762F1ED8159D961A007408F2 /* HTMLDialogElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLDialogElement.idl; sourceTree = ""; }; + 7633A72413D8B33A008501B6 /* LocaleToScriptMapping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocaleToScriptMapping.h; sourceTree = ""; }; + 7633A72513D8B33A008501B6 /* LocaleToScriptMappingDefault.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LocaleToScriptMappingDefault.cpp; sourceTree = ""; }; + 76808B4E159DADFA002B5233 /* JSHTMLDialogElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLDialogElement.h; sourceTree = ""; }; + 7694563A1214D97C0007CBAE /* JSDOMTokenList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMTokenList.cpp; sourceTree = ""; }; + 7694563B1214D97C0007CBAE /* JSDOMTokenList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMTokenList.h; sourceTree = ""; }; + 769456591214DB630007CBAE /* DOMDOMTokenList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMDOMTokenList.h; sourceTree = ""; }; + 7694565A1214DB630007CBAE /* DOMDOMTokenList.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMDOMTokenList.mm; sourceTree = ""; }; + 76CDD2EC1103DA6600680521 /* AccessibilityMenuList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityMenuList.cpp; sourceTree = ""; }; + 76CDD2ED1103DA6600680521 /* AccessibilityMenuList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityMenuList.h; sourceTree = ""; }; + 76CDD2EE1103DA6600680521 /* AccessibilityMenuListPopup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityMenuListPopup.cpp; sourceTree = ""; }; + 76CDD2EF1103DA6600680521 /* AccessibilityMenuListPopup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityMenuListPopup.h; sourceTree = ""; }; + 76CDD2F01103DA6600680521 /* AccessibilityMenuListOption.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityMenuListOption.cpp; sourceTree = ""; }; + 76CDD2F11103DA6600680521 /* AccessibilityMenuListOption.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityMenuListOption.h; sourceTree = ""; }; + 76F2E2EA15F74CEF005FF664 /* RenderDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderDialog.h; sourceTree = ""; }; + 76FC2B0812370DA0006A991A /* DOMTokenList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMTokenList.cpp; sourceTree = ""; }; + 76FC2B0912370DA0006A991A /* DOMTokenList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMTokenList.h; sourceTree = ""; }; + 76FC2B0A12370DA0006A991A /* DOMTokenList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMTokenList.idl; sourceTree = ""; }; + 76FF17E211235673001D61B5 /* PluginViewNone.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginViewNone.cpp; sourceTree = ""; }; + 7728694B14F8882500F484DC /* EXTTextureFilterAnisotropic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EXTTextureFilterAnisotropic.cpp; path = canvas/EXTTextureFilterAnisotropic.cpp; sourceTree = ""; }; + 7728694C14F8882500F484DC /* EXTTextureFilterAnisotropic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EXTTextureFilterAnisotropic.h; path = canvas/EXTTextureFilterAnisotropic.h; sourceTree = ""; }; + 7728694D14F8882500F484DC /* EXTTextureFilterAnisotropic.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = EXTTextureFilterAnisotropic.idl; path = canvas/EXTTextureFilterAnisotropic.idl; sourceTree = ""; }; + 7728698114FD9ADA00F484DC /* JSEXTTextureFilterAnisotropic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSEXTTextureFilterAnisotropic.cpp; sourceTree = ""; }; + 7728698214FD9ADA00F484DC /* JSEXTTextureFilterAnisotropic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEXTTextureFilterAnisotropic.h; sourceTree = ""; }; + 77A17A6E12F28182004E02F6 /* OESVertexArrayObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OESVertexArrayObject.cpp; path = canvas/OESVertexArrayObject.cpp; sourceTree = ""; }; + 77A17A6F12F28182004E02F6 /* OESVertexArrayObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OESVertexArrayObject.h; path = canvas/OESVertexArrayObject.h; sourceTree = ""; }; + 77A17A7012F28182004E02F6 /* OESVertexArrayObject.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = OESVertexArrayObject.idl; path = canvas/OESVertexArrayObject.idl; sourceTree = ""; }; + 77A17A7412F28642004E02F6 /* WebGLVertexArrayObjectOES.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLVertexArrayObjectOES.cpp; path = canvas/WebGLVertexArrayObjectOES.cpp; sourceTree = ""; }; + 77A17A7512F28642004E02F6 /* WebGLVertexArrayObjectOES.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLVertexArrayObjectOES.h; path = canvas/WebGLVertexArrayObjectOES.h; sourceTree = ""; }; + 77A17A7612F28642004E02F6 /* WebGLVertexArrayObjectOES.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLVertexArrayObjectOES.idl; path = canvas/WebGLVertexArrayObjectOES.idl; sourceTree = ""; }; + 77A17A7A12F2890B004E02F6 /* GraphicsTypes3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsTypes3D.h; sourceTree = ""; }; + 77A17AA212F28B2A004E02F6 /* JSOESVertexArrayObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSOESVertexArrayObject.cpp; sourceTree = ""; }; + 77A17AA312F28B2A004E02F6 /* JSOESVertexArrayObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSOESVertexArrayObject.h; sourceTree = ""; }; + 77EF62F112F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLVertexArrayObjectOES.cpp; sourceTree = ""; }; + 77EF62F212F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLVertexArrayObjectOES.h; sourceTree = ""; }; + 78D02BC3154A18DF00B62D05 /* CSSPropertyAnimation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CSSPropertyAnimation.cpp; path = animation/CSSPropertyAnimation.cpp; sourceTree = ""; }; + 78D02BC4154A18DF00B62D05 /* CSSPropertyAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CSSPropertyAnimation.h; path = animation/CSSPropertyAnimation.h; sourceTree = ""; }; + 79AC9216109945C80021266E /* JSCompositionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCompositionEvent.cpp; sourceTree = ""; }; + 79AC9217109945C80021266E /* JSCompositionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCompositionEvent.h; sourceTree = ""; }; + 79F2F59E1091939A000D87CB /* CompositionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CompositionEvent.cpp; sourceTree = ""; }; + 79F2F59F1091939A000D87CB /* CompositionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CompositionEvent.h; sourceTree = ""; }; + 79F2F5A01091939A000D87CB /* CompositionEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CompositionEvent.idl; sourceTree = ""; }; + 7A0E76D410BF050700A0276E /* JSInjectedScriptHostCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInjectedScriptHostCustom.cpp; sourceTree = ""; }; + 7A0E76D810BF059800A0276E /* JSInjectedScriptHost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInjectedScriptHost.cpp; sourceTree = ""; }; + 7A0E76D910BF059800A0276E /* JSInjectedScriptHost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSInjectedScriptHost.h; sourceTree = ""; }; + 7A0E76F610BF08ED00A0276E /* InjectedScriptHost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedScriptHost.cpp; sourceTree = ""; }; + 7A0E76F710BF08ED00A0276E /* InjectedScriptHost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedScriptHost.h; sourceTree = ""; }; + 7A0E76F810BF08ED00A0276E /* InjectedScriptHost.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = InjectedScriptHost.idl; sourceTree = ""; }; + 7A0E770B10C00A8800A0276E /* InspectorFrontendHost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorFrontendHost.cpp; sourceTree = ""; }; + 7A0E770C10C00A8800A0276E /* InspectorFrontendHost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorFrontendHost.h; sourceTree = ""; }; + 7A0E770D10C00A8800A0276E /* InspectorFrontendHost.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = InspectorFrontendHost.idl; sourceTree = ""; }; + 7A0E771C10C00DB100A0276E /* JSInspectorFrontendHost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInspectorFrontendHost.cpp; sourceTree = ""; }; + 7A0E771D10C00DB100A0276E /* JSInspectorFrontendHost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSInspectorFrontendHost.h; sourceTree = ""; }; + 7A1F2B51126C61B20006A7E6 /* InspectorClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorClient.cpp; sourceTree = ""; }; + 7A2458791021EAF4000A00AA /* InspectorDOMAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorDOMAgent.cpp; sourceTree = ""; }; + 7A24587A1021EAF4000A00AA /* InspectorDOMAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDOMAgent.h; sourceTree = ""; }; + 7A54857D14E02D51006AE05A /* InspectorHistory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorHistory.cpp; sourceTree = ""; }; + 7A54857E14E02D51006AE05A /* InspectorHistory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorHistory.h; sourceTree = ""; }; + 7A54881514E432A1006AE05A /* DOMPatchSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMPatchSupport.h; sourceTree = ""; }; + 7A54881614E432A1006AE05A /* DOMPatchSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMPatchSupport.cpp; sourceTree = ""; }; + 7A563E5412DE32B000F4536D /* InjectedScriptSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedScriptSource.h; sourceTree = ""; }; + 7A563F9512DF5C9100F4536D /* InjectedScriptSource.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = InjectedScriptSource.js; sourceTree = ""; }; + 7A674BD90F9EBF4E006CF099 /* PageGroupLoadDeferrer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageGroupLoadDeferrer.cpp; sourceTree = ""; }; + 7A674BDA0F9EBF4E006CF099 /* PageGroupLoadDeferrer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageGroupLoadDeferrer.h; sourceTree = ""; }; + 7A7256B915EB9F5B007323A7 /* InspectorOverlayPage.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = InspectorOverlayPage.html; sourceTree = ""; }; + 7A74ECB8101839A500BF939E /* InspectorDOMStorageAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorDOMStorageAgent.cpp; sourceTree = ""; }; + 7A74ECB9101839A600BF939E /* InspectorDOMStorageAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDOMStorageAgent.h; sourceTree = ""; }; + 7A74ECBC101839DA00BF939E /* JSInspectorFrontendHostCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInspectorFrontendHostCustom.cpp; sourceTree = ""; }; + 7AA365ED12E7265400DCA242 /* InspectorRuntimeAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorRuntimeAgent.cpp; sourceTree = ""; }; + 7AA51B6C1483B61600AD2752 /* InspectorBaseAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorBaseAgent.h; sourceTree = ""; }; + 7AA51B6D1483B61600AD2752 /* InspectorBaseAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorBaseAgent.cpp; sourceTree = ""; }; + 7AA51DD3148506A900AD2752 /* InspectorMemoryAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorMemoryAgent.cpp; sourceTree = ""; }; + 7AA51DD4148506A900AD2752 /* InspectorMemoryAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorMemoryAgent.h; sourceTree = ""; }; + 7AABA25714BC613300AA9A11 /* DOMEditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMEditor.cpp; sourceTree = ""; }; + 7AABA25814BC613300AA9A11 /* DOMEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMEditor.h; sourceTree = ""; }; + 7AB0B1BE1211A62200A76940 /* InspectorDatabaseAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorDatabaseAgent.cpp; sourceTree = ""; }; + 7AB0B1BF1211A62200A76940 /* InspectorDatabaseAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDatabaseAgent.h; sourceTree = ""; }; + 7ACD88D114C08BD60084EDD2 /* InspectorIndexedDBAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorIndexedDBAgent.cpp; sourceTree = ""; }; + 7ACD88D214C08BD60084EDD2 /* InspectorIndexedDBAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorIndexedDBAgent.h; sourceTree = ""; }; + 7ADE722510CBBB9B006B3B3A /* ContextMenuProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContextMenuProvider.h; sourceTree = ""; }; + 7AF11A5912E727490061F23C /* InspectorRuntimeAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorRuntimeAgent.h; sourceTree = ""; }; + 7AFD4A8A1131C2760035B883 /* ScriptBreakpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptBreakpoint.h; sourceTree = ""; }; + 7AFD4FF3113277B60035B883 /* ScriptDebugListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptDebugListener.h; sourceTree = ""; }; + 7C522D4915B477E8009B7C95 /* InspectorOverlay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorOverlay.cpp; sourceTree = ""; }; + 7C522D4A15B478B2009B7C95 /* InspectorOverlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorOverlay.h; sourceTree = ""; }; + 7C60128060078BB70E367A95 /* DNSResolveQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DNSResolveQueue.cpp; sourceTree = ""; }; + 7C6136F61710C35200FF4A57 /* Hasher.pm */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; name = Hasher.pm; path = scripts/Hasher.pm; sourceTree = ""; }; + 7C6136F71710C35200FF4A57 /* InFilesCompiler.pm */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; name = InFilesCompiler.pm; path = scripts/InFilesCompiler.pm; sourceTree = ""; }; + 7C6136F81710C35200FF4A57 /* InFilesParser.pm */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; name = InFilesParser.pm; path = scripts/InFilesParser.pm; sourceTree = ""; }; + 7C6136F91710C35200FF4A57 /* StaticString.pm */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; name = StaticString.pm; path = scripts/StaticString.pm; sourceTree = ""; }; + 7CC7E3D617208C0F003C5277 /* IDNScriptWhiteList.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDNScriptWhiteList.txt; sourceTree = ""; }; + 7CE30DA7171B63D200EC33E1 /* FrameSnapshottingMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FrameSnapshottingMac.mm; sourceTree = ""; }; + 7CE30DA8171B63D200EC33E1 /* FrameSnapshottingMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameSnapshottingMac.h; sourceTree = ""; }; + 7E12E90D15FA5D3A005E4126 /* CustomFilterMeshGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterMeshGenerator.h; path = filters/CustomFilterMeshGenerator.h; sourceTree = ""; }; + 7E12E90E15FA5D3A005E4126 /* CustomFilterMeshGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CustomFilterMeshGenerator.cpp; path = filters/CustomFilterMeshGenerator.cpp; sourceTree = ""; }; + 7E33CD00127F340D00BE8F17 /* PurgePriority.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PurgePriority.h; sourceTree = ""; }; + 7E37EF2D1339208800B29250 /* SubresourceLoaderCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SubresourceLoaderCF.cpp; path = cf/SubresourceLoaderCF.cpp; sourceTree = ""; }; + 7E46F6F81627A2C900062223 /* JSOESElementIndexUint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSOESElementIndexUint.cpp; sourceTree = ""; }; + 7E46F6F91627A2C900062223 /* JSOESElementIndexUint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSOESElementIndexUint.h; sourceTree = ""; }; + 7E5D7A73161D3F8F00896C34 /* OESElementIndexUint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OESElementIndexUint.cpp; path = canvas/OESElementIndexUint.cpp; sourceTree = ""; }; + 7E5D7A74161D3F8F00896C34 /* OESElementIndexUint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OESElementIndexUint.h; path = canvas/OESElementIndexUint.h; sourceTree = ""; }; + 7E66E23116D6EB6C00F7E7FF /* WebGLCompressedTextureATC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLCompressedTextureATC.cpp; path = canvas/WebGLCompressedTextureATC.cpp; sourceTree = ""; }; + 7E66E23117E6EB6C00F7E7FF /* WebGLCompressedTexturePVRTC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLCompressedTexturePVRTC.cpp; path = canvas/WebGLCompressedTexturePVRTC.cpp; sourceTree = ""; }; + 7E66E23216D6EB6C00F7E7FF /* WebGLCompressedTextureATC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLCompressedTextureATC.h; path = canvas/WebGLCompressedTextureATC.h; sourceTree = ""; }; + 7E66E23217E6EB6C00F7E7FF /* WebGLCompressedTexturePVRTC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLCompressedTexturePVRTC.h; path = canvas/WebGLCompressedTexturePVRTC.h; sourceTree = ""; }; + 7E99AF520B13846468FB01A5 /* WindowFocusAllowedIndicator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WindowFocusAllowedIndicator.cpp; sourceTree = ""; }; + 7E99AF540B13846468FB01A5 /* WindowFocusAllowedIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WindowFocusAllowedIndicator.h; sourceTree = ""; }; + 7EA30F6216DFD62700257D0B /* WebGLCompressedTextureATC.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLCompressedTextureATC.idl; path = canvas/WebGLCompressedTextureATC.idl; sourceTree = ""; }; + 7EA30F6217EFD62700257D0B /* WebGLCompressedTexturePVRTC.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLCompressedTexturePVRTC.idl; path = canvas/WebGLCompressedTexturePVRTC.idl; sourceTree = ""; }; + 7EA30F6716DFFE7500257D0B /* JSWebGLCompressedTextureATC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLCompressedTextureATC.cpp; sourceTree = ""; }; + 7EA30F6717EFFE7500257D0B /* JSWebGLCompressedTexturePVRTC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLCompressedTexturePVRTC.cpp; sourceTree = ""; }; + 7EA30F6816DFFE7500257D0B /* JSWebGLCompressedTextureATC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLCompressedTextureATC.h; sourceTree = ""; }; + 7EA30F6817EFFE7500257D0B /* JSWebGLCompressedTexturePVRTC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLCompressedTexturePVRTC.h; sourceTree = ""; }; + 7EE6844D12D26E3800E79415 /* AuthenticationCF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AuthenticationCF.h; sourceTree = ""; }; + 7EE6844E12D26E3800E79415 /* AuthenticationChallenge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AuthenticationChallenge.h; sourceTree = ""; }; + 7EE6845012D26E3800E79415 /* CookieStorageCFNet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CookieStorageCFNet.cpp; sourceTree = ""; }; + 7EE6845212D26E3800E79415 /* CredentialStorageCFNet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CredentialStorageCFNet.cpp; sourceTree = ""; }; + 7EE6845312D26E3800E79415 /* FormDataStreamCFNet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FormDataStreamCFNet.cpp; sourceTree = ""; }; + 7EE6845412D26E3800E79415 /* FormDataStreamCFNet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormDataStreamCFNet.h; sourceTree = ""; }; + 7EE6845512D26E3800E79415 /* LoaderRunLoopCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoaderRunLoopCF.cpp; sourceTree = ""; }; + 7EE6845612D26E3800E79415 /* LoaderRunLoopCF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoaderRunLoopCF.h; sourceTree = ""; }; + 7EE6845712D26E3800E79415 /* ResourceError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceError.h; sourceTree = ""; }; + 7EE6845812D26E3800E79415 /* ResourceErrorCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceErrorCF.cpp; sourceTree = ""; }; + 7EE6845912D26E3800E79415 /* ResourceHandleCFNet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceHandleCFNet.cpp; sourceTree = ""; }; + 7EE6845A12D26E3800E79415 /* ResourceRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceRequest.h; sourceTree = ""; }; + 7EE6845B12D26E3800E79415 /* ResourceRequestCFNet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceRequestCFNet.cpp; sourceTree = ""; }; + 7EE6845C12D26E3800E79415 /* ResourceRequestCFNet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceRequestCFNet.h; sourceTree = ""; }; + 7EE6845D12D26E3800E79415 /* ResourceResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceResponse.h; sourceTree = ""; }; + 7EE6845E12D26E3800E79415 /* ResourceResponseCFNet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceResponseCFNet.cpp; sourceTree = ""; }; + 7EE6847412D26E7000E79415 /* ResourceLoaderCFNet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ResourceLoaderCFNet.cpp; path = cf/ResourceLoaderCFNet.cpp; sourceTree = ""; }; + 8102C5871325BB1100DDE67A /* StringCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringCallback.cpp; sourceTree = ""; }; + 81AC5997131636E60009A7E0 /* DataTransferItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataTransferItem.h; sourceTree = ""; }; + 81AC5998131636E60009A7E0 /* DataTransferItemList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataTransferItemList.h; sourceTree = ""; }; + 81AC5AE81316392E0009A7E0 /* DataTransferItem.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DataTransferItem.idl; sourceTree = ""; }; + 81AC5AE91316392E0009A7E0 /* DataTransferItemList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DataTransferItemList.idl; sourceTree = ""; }; + 81AC6C34131C57C20009A7E0 /* StringCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = StringCallback.idl; sourceTree = ""; }; + 81AC6C35131C57D30009A7E0 /* StringCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringCallback.h; sourceTree = ""; }; + 81BE20A811F4B66F00915DFA /* JSIDBCursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBCursor.h; sourceTree = ""; }; + 81F65FF513788FAA00FF6F2D /* DragState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DragState.h; sourceTree = ""; }; + 82889B4A13C62392009A6156 /* InspectorStyleTextEditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorStyleTextEditor.cpp; sourceTree = ""; }; + 82889B4B13C62392009A6156 /* InspectorStyleTextEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorStyleTextEditor.h; sourceTree = ""; }; + 82AB1741124B99EC00C5069D /* InspectorCSSAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorCSSAgent.cpp; sourceTree = ""; }; + 82AB1742124B99EC00C5069D /* InspectorCSSAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorCSSAgent.h; sourceTree = ""; }; + 82AB176F125C826700C5069D /* InspectorStyleSheet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorStyleSheet.cpp; sourceTree = ""; }; + 82AB1770125C826700C5069D /* InspectorStyleSheet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorStyleSheet.h; sourceTree = ""; }; + 82AB1771125C826700C5069D /* InspectorResourceAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorResourceAgent.cpp; sourceTree = ""; }; + 82AB1772125C826700C5069D /* InspectorResourceAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorResourceAgent.h; sourceTree = ""; }; + 82E3D8DC122EA0D1003AE5BC /* CSSPropertySourceData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSPropertySourceData.cpp; sourceTree = ""; }; + 82E3D8DD122EA0D1003AE5BC /* CSSPropertySourceData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSPropertySourceData.h; sourceTree = ""; }; + 836FBCE9178C113200B21A15 /* SVGAnimatedTypeAnimator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedTypeAnimator.cpp; sourceTree = ""; }; + 836FBCEB178C117F00B21A15 /* SVGAnimatedProperty.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedProperty.cpp; sourceTree = ""; }; + 83C1D413178D5AB400141E68 /* SVGPathSegArcAbs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegArcAbs.h; sourceTree = ""; }; + 83C1D414178D5AB400141E68 /* SVGPathSegArcRel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegArcRel.h; sourceTree = ""; }; + 83C1D415178D5AB400141E68 /* SVGPathSegCurvetoCubicAbs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegCurvetoCubicAbs.h; sourceTree = ""; }; + 83C1D416178D5AB400141E68 /* SVGPathSegCurvetoCubicRel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegCurvetoCubicRel.h; sourceTree = ""; }; + 83C1D417178D5AB400141E68 /* SVGPathSegCurvetoCubicSmoothAbs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegCurvetoCubicSmoothAbs.h; sourceTree = ""; }; + 83C1D418178D5AB400141E68 /* SVGPathSegCurvetoCubicSmoothRel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegCurvetoCubicSmoothRel.h; sourceTree = ""; }; + 83C1D419178D5AB400141E68 /* SVGPathSegCurvetoQuadraticAbs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegCurvetoQuadraticAbs.h; sourceTree = ""; }; + 83C1D41A178D5AB400141E68 /* SVGPathSegCurvetoQuadraticRel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegCurvetoQuadraticRel.h; sourceTree = ""; }; + 83C1D41B178D5AB400141E68 /* SVGPathSegCurvetoQuadraticSmoothAbs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegCurvetoQuadraticSmoothAbs.h; sourceTree = ""; }; + 83C1D41C178D5AB400141E68 /* SVGPathSegCurvetoQuadraticSmoothRel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegCurvetoQuadraticSmoothRel.h; sourceTree = ""; }; + 83C1D41D178D5AB400141E68 /* SVGPathSegLinetoAbs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegLinetoAbs.h; sourceTree = ""; }; + 83C1D41E178D5AB400141E68 /* SVGPathSegLinetoHorizontalAbs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegLinetoHorizontalAbs.h; sourceTree = ""; }; + 83C1D41F178D5AB400141E68 /* SVGPathSegLinetoHorizontalRel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegLinetoHorizontalRel.h; sourceTree = ""; }; + 83C1D420178D5AB400141E68 /* SVGPathSegLinetoRel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegLinetoRel.h; sourceTree = ""; }; + 83C1D421178D5AB400141E68 /* SVGPathSegLinetoVerticalAbs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegLinetoVerticalAbs.h; sourceTree = ""; }; + 83C1D422178D5AB400141E68 /* SVGPathSegLinetoVerticalRel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegLinetoVerticalRel.h; sourceTree = ""; }; + 83C1D423178D5AB400141E68 /* SVGPathSegMovetoAbs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegMovetoAbs.h; sourceTree = ""; }; + 83C1D424178D5AB400141E68 /* SVGPathSegMovetoRel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegMovetoRel.h; sourceTree = ""; }; + 8419D2A4120D92D000141F8F /* SVGPathByteStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathByteStream.h; sourceTree = ""; }; + 8419D2A5120D92D000141F8F /* SVGPathByteStreamBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathByteStreamBuilder.cpp; sourceTree = ""; }; + 8419D2A6120D92D000141F8F /* SVGPathByteStreamBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathByteStreamBuilder.h; sourceTree = ""; }; + 8419D2AA120D92FC00141F8F /* SVGPathByteStreamSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathByteStreamSource.cpp; sourceTree = ""; }; + 8419D2AB120D92FC00141F8F /* SVGPathByteStreamSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathByteStreamSource.h; sourceTree = ""; }; + 8419D2B7120E0C7600141F8F /* SVGPathStringBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathStringBuilder.cpp; sourceTree = ""; }; + 8419D2B8120E0C7600141F8F /* SVGPathStringBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathStringBuilder.h; sourceTree = ""; }; + 84224181107E77F400766A87 /* JSSVGFEMorphologyElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEMorphologyElement.cpp; sourceTree = ""; }; + 84224182107E77F400766A87 /* JSSVGFEMorphologyElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGFEMorphologyElement.h; sourceTree = ""; }; + 84224190107E78A700766A87 /* SVGFEMorphologyElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEMorphologyElement.cpp; sourceTree = ""; }; + 84224191107E78A700766A87 /* SVGFEMorphologyElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGFEMorphologyElement.h; sourceTree = ""; }; + 84224192107E78A700766A87 /* SVGFEMorphologyElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGFEMorphologyElement.idl; sourceTree = ""; }; + 84300BD5120C9AAC0021954A /* SVGPathStringSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathStringSource.h; sourceTree = ""; }; + 84300BD7120C9AD40021954A /* SVGPathSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSource.h; sourceTree = ""; }; + 84300BD9120C9AED0021954A /* SVGPathStringSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathStringSource.cpp; sourceTree = ""; }; + 845E72F70FD261EE00A87D79 /* Filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Filter.h; path = filters/Filter.h; sourceTree = ""; }; + 845E72F90FD2623900A87D79 /* SVGFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFilter.cpp; sourceTree = ""; }; + 845E72FA0FD2623900A87D79 /* SVGFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGFilter.h; sourceTree = ""; }; + 84730D5A1248F0B300D3A9C9 /* DistantLightSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DistantLightSource.h; path = filters/DistantLightSource.h; sourceTree = ""; }; + 84730D5B1248F0B300D3A9C9 /* FEConvolveMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FEConvolveMatrix.cpp; path = filters/FEConvolveMatrix.cpp; sourceTree = ""; }; + 84730D5C1248F0B300D3A9C9 /* FEConvolveMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FEConvolveMatrix.h; path = filters/FEConvolveMatrix.h; sourceTree = ""; }; + 84730D5D1248F0B300D3A9C9 /* FEDiffuseLighting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FEDiffuseLighting.cpp; path = filters/FEDiffuseLighting.cpp; sourceTree = ""; }; + 84730D5E1248F0B300D3A9C9 /* FEDiffuseLighting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FEDiffuseLighting.h; path = filters/FEDiffuseLighting.h; sourceTree = ""; }; + 84730D5F1248F0B300D3A9C9 /* FEDisplacementMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FEDisplacementMap.cpp; path = filters/FEDisplacementMap.cpp; sourceTree = ""; }; + 84730D601248F0B300D3A9C9 /* FEDisplacementMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FEDisplacementMap.h; path = filters/FEDisplacementMap.h; sourceTree = ""; }; + 84730D611248F0B300D3A9C9 /* FEFlood.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FEFlood.cpp; path = filters/FEFlood.cpp; sourceTree = ""; }; + 84730D621248F0B300D3A9C9 /* FEFlood.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FEFlood.h; path = filters/FEFlood.h; sourceTree = ""; }; + 84730D631248F0B300D3A9C9 /* FELighting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FELighting.cpp; path = filters/FELighting.cpp; sourceTree = ""; }; + 84730D641248F0B300D3A9C9 /* FELighting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FELighting.h; path = filters/FELighting.h; sourceTree = ""; }; + 84730D651248F0B300D3A9C9 /* FEMerge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FEMerge.cpp; path = filters/FEMerge.cpp; sourceTree = ""; }; + 84730D661248F0B300D3A9C9 /* FEMerge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FEMerge.h; path = filters/FEMerge.h; sourceTree = ""; }; + 84730D671248F0B300D3A9C9 /* FEMorphology.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FEMorphology.cpp; path = filters/FEMorphology.cpp; sourceTree = ""; }; + 84730D681248F0B300D3A9C9 /* FEMorphology.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FEMorphology.h; path = filters/FEMorphology.h; sourceTree = ""; }; + 84730D691248F0B300D3A9C9 /* FEOffset.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FEOffset.cpp; path = filters/FEOffset.cpp; sourceTree = ""; }; + 84730D6A1248F0B300D3A9C9 /* FEOffset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FEOffset.h; path = filters/FEOffset.h; sourceTree = ""; }; + 84730D6B1248F0B300D3A9C9 /* FESpecularLighting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FESpecularLighting.cpp; path = filters/FESpecularLighting.cpp; sourceTree = ""; }; + 84730D6C1248F0B300D3A9C9 /* FESpecularLighting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FESpecularLighting.h; path = filters/FESpecularLighting.h; sourceTree = ""; }; + 84730D6D1248F0B300D3A9C9 /* FETile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FETile.cpp; path = filters/FETile.cpp; sourceTree = ""; }; + 84730D6E1248F0B300D3A9C9 /* FETile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FETile.h; path = filters/FETile.h; sourceTree = ""; }; + 84730D6F1248F0B300D3A9C9 /* FETurbulence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FETurbulence.cpp; path = filters/FETurbulence.cpp; sourceTree = ""; }; + 84730D701248F0B300D3A9C9 /* FETurbulence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FETurbulence.h; path = filters/FETurbulence.h; sourceTree = ""; }; + 84730D741248F0B300D3A9C9 /* LightSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LightSource.h; path = filters/LightSource.h; sourceTree = ""; }; + 84730D751248F0B300D3A9C9 /* PointLightSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PointLightSource.h; path = filters/PointLightSource.h; sourceTree = ""; }; + 84730D761248F0B300D3A9C9 /* SpotLightSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SpotLightSource.h; path = filters/SpotLightSource.h; sourceTree = ""; }; + 8476C9E311DF6A0B00555B02 /* SVGPathSegListBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegListBuilder.cpp; sourceTree = ""; }; + 8476C9E411DF6A0B00555B02 /* SVGPathSegListBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegListBuilder.h; sourceTree = ""; }; + 8476C9E711DF6A2900555B02 /* SVGPathBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathBuilder.cpp; sourceTree = ""; }; + 8476C9E811DF6A2900555B02 /* SVGPathBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathBuilder.h; sourceTree = ""; }; + 8476C9E911DF6A2900555B02 /* SVGPathConsumer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathConsumer.h; sourceTree = ""; }; + 8476C9ED11DF6A5800555B02 /* SVGPathParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathParser.cpp; sourceTree = ""; }; + 8476C9EE11DF6A5800555B02 /* SVGPathParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathParser.h; sourceTree = ""; }; + 84801952108BAFB300CB2B1F /* FEGaussianBlur.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FEGaussianBlur.cpp; path = filters/FEGaussianBlur.cpp; sourceTree = ""; }; + 84801953108BAFB300CB2B1F /* FEGaussianBlur.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FEGaussianBlur.h; path = filters/FEGaussianBlur.h; sourceTree = ""; }; + 8482B7441198C32E00BFB005 /* HashChangeEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HashChangeEvent.idl; sourceTree = ""; }; + 8482B74F1198CB6B00BFB005 /* JSHashChangeEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHashChangeEvent.cpp; sourceTree = ""; }; + 8482B7501198CB6B00BFB005 /* JSHashChangeEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHashChangeEvent.h; sourceTree = ""; }; + 848522771190162C006EDC7F /* JSSVGHKernElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGHKernElement.cpp; sourceTree = ""; }; + 848522781190162C006EDC7F /* JSSVGHKernElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGHKernElement.h; sourceTree = ""; }; + 848522791190162C006EDC7F /* JSSVGVKernElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGVKernElement.cpp; sourceTree = ""; }; + 8485227A1190162C006EDC7F /* JSSVGVKernElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGVKernElement.h; sourceTree = ""; }; + 848522871190173C006EDC7F /* SVGVKernElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGVKernElement.cpp; sourceTree = ""; }; + 848522881190173C006EDC7F /* SVGVKernElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGVKernElement.h; sourceTree = ""; }; + 848522891190173C006EDC7F /* SVGVKernElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGVKernElement.idl; sourceTree = ""; }; + 849F77750EFEC6200090849D /* StrokeStyleApplier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StrokeStyleApplier.h; sourceTree = ""; }; + 84A81F3B0FC7DFF000955300 /* SourceAlpha.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SourceAlpha.cpp; path = filters/SourceAlpha.cpp; sourceTree = ""; }; + 84A81F3C0FC7DFF000955300 /* SourceAlpha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SourceAlpha.h; path = filters/SourceAlpha.h; sourceTree = ""; }; + 84A81F3F0FC7E02700955300 /* SourceGraphic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SourceGraphic.cpp; path = filters/SourceGraphic.cpp; sourceTree = ""; }; + 84A81F400FC7E02700955300 /* SourceGraphic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SourceGraphic.h; path = filters/SourceGraphic.h; sourceTree = ""; }; + 84B2B24F056BF15F00D2B771 /* SSLKeyGeneratorMac.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SSLKeyGeneratorMac.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 84B62684133138F90095A489 /* FontPlatformData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontPlatformData.cpp; sourceTree = ""; }; + 84B6B975120F13E500B8EFAF /* SVGPathSegListSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegListSource.cpp; sourceTree = ""; }; + 84B6B976120F13E500B8EFAF /* SVGPathSegListSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegListSource.h; sourceTree = ""; }; + 84C5B2F81216DC810088B53A /* SVGPathTraversalStateBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathTraversalStateBuilder.cpp; sourceTree = ""; }; + 84C5B2F91216DC810088B53A /* SVGPathTraversalStateBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathTraversalStateBuilder.h; sourceTree = ""; }; + 84C6784A1214814700A92902 /* SVGPathBlender.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathBlender.cpp; sourceTree = ""; }; + 84C6784B1214814700A92902 /* SVGPathBlender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathBlender.h; sourceTree = ""; }; + 84D0C4031115F1D40018AA34 /* AffineTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AffineTransform.cpp; path = transforms/AffineTransform.cpp; sourceTree = ""; }; + 84D0C4051115F1EA0018AA34 /* AffineTransform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AffineTransform.h; path = transforms/AffineTransform.h; sourceTree = ""; }; + 85031B260A44EFC700F992E0 /* BeforeUnloadEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = BeforeUnloadEvent.cpp; sourceTree = ""; }; + 85031B270A44EFC700F992E0 /* BeforeUnloadEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = BeforeUnloadEvent.h; sourceTree = ""; }; + 85031B280A44EFC700F992E0 /* Clipboard.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Clipboard.h; sourceTree = ""; }; + 85031B290A44EFC700F992E0 /* ClipboardEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ClipboardEvent.cpp; sourceTree = ""; }; + 85031B2A0A44EFC700F992E0 /* ClipboardEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ClipboardEvent.h; sourceTree = ""; }; + 85031B2B0A44EFC700F992E0 /* Event.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Event.cpp; sourceTree = ""; }; + 85031B2C0A44EFC700F992E0 /* Event.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Event.h; sourceTree = ""; }; + 85031B2D0A44EFC700F992E0 /* KeyboardEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = KeyboardEvent.cpp; sourceTree = ""; }; + 85031B2E0A44EFC700F992E0 /* KeyboardEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = KeyboardEvent.h; sourceTree = ""; }; + 85031B2F0A44EFC700F992E0 /* MouseEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MouseEvent.cpp; sourceTree = ""; }; + 85031B300A44EFC700F992E0 /* MouseEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MouseEvent.h; sourceTree = ""; }; + 85031B310A44EFC700F992E0 /* MouseRelatedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MouseRelatedEvent.cpp; sourceTree = ""; }; + 85031B320A44EFC700F992E0 /* MouseRelatedEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MouseRelatedEvent.h; sourceTree = ""; }; + 85031B330A44EFC700F992E0 /* MutationEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MutationEvent.cpp; sourceTree = ""; }; + 85031B340A44EFC700F992E0 /* MutationEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MutationEvent.h; sourceTree = ""; }; + 85031B350A44EFC700F992E0 /* RegisteredEventListener.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RegisteredEventListener.cpp; sourceTree = ""; }; + 85031B360A44EFC700F992E0 /* RegisteredEventListener.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RegisteredEventListener.h; sourceTree = ""; }; + 85031B370A44EFC700F992E0 /* UIEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = UIEvent.cpp; sourceTree = ""; }; + 85031B380A44EFC700F992E0 /* UIEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = UIEvent.h; sourceTree = ""; }; + 85031B390A44EFC700F992E0 /* UIEventWithKeyState.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = UIEventWithKeyState.h; sourceTree = ""; }; + 85031B3A0A44EFC700F992E0 /* WheelEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = WheelEvent.cpp; sourceTree = ""; }; + 85031B3B0A44EFC700F992E0 /* WheelEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WheelEvent.h; sourceTree = ""; }; + 85032DC30AA8C9BE007D3B7D /* DOMCSSCharsetRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSCharsetRule.h; sourceTree = ""; }; + 85032DC40AA8C9BE007D3B7D /* DOMCSSCharsetRule.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSSCharsetRule.mm; sourceTree = ""; }; + 85032DC50AA8C9BE007D3B7D /* DOMCSSFontFaceRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSFontFaceRule.h; sourceTree = ""; }; + 85032DC60AA8C9BE007D3B7D /* DOMCSSFontFaceRule.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSSFontFaceRule.mm; sourceTree = ""; }; + 85032DC70AA8C9BE007D3B7D /* DOMCSSImportRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSImportRule.h; sourceTree = ""; }; + 85032DC80AA8C9BE007D3B7D /* DOMCSSImportRule.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSSImportRule.mm; sourceTree = ""; }; + 85032DC90AA8C9BE007D3B7D /* DOMCSSMediaRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSMediaRule.h; sourceTree = ""; }; + 85032DCA0AA8C9BE007D3B7D /* DOMCSSMediaRule.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSSMediaRule.mm; sourceTree = ""; }; + 85032DCB0AA8C9BE007D3B7D /* DOMCSSPageRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSPageRule.h; sourceTree = ""; }; + 85032DCC0AA8C9BE007D3B7D /* DOMCSSPageRule.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSSPageRule.mm; sourceTree = ""; }; + 85032DCD0AA8C9BE007D3B7D /* DOMCSSRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSRule.h; sourceTree = ""; }; + 85032DCE0AA8C9BE007D3B7D /* DOMCSSRule.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSSRule.mm; sourceTree = ""; }; + 85032DCF0AA8C9BE007D3B7D /* DOMCSSRuleList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSRuleList.h; sourceTree = ""; }; + 85032DD00AA8C9BE007D3B7D /* DOMCSSRuleList.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSSRuleList.mm; sourceTree = ""; }; + 85032DD10AA8C9BE007D3B7D /* DOMCSSStyleDeclaration.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSStyleDeclaration.h; sourceTree = ""; }; + 85032DD20AA8C9BE007D3B7D /* DOMCSSStyleDeclaration.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSSStyleDeclaration.mm; sourceTree = ""; }; + 85032DD30AA8C9BE007D3B7D /* DOMCSSStyleRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSStyleRule.h; sourceTree = ""; }; + 85032DD40AA8C9BE007D3B7D /* DOMCSSStyleRule.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSSStyleRule.mm; sourceTree = ""; }; + 85032DD50AA8C9BE007D3B7D /* DOMCSSUnknownRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSUnknownRule.h; sourceTree = ""; }; + 85032DD60AA8C9BE007D3B7D /* DOMCSSUnknownRule.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSSUnknownRule.mm; sourceTree = ""; }; + 850656DC0AAB44D9002D15C0 /* StyleSheet.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = StyleSheet.idl; sourceTree = ""; }; + 850656DF0AAB454F002D15C0 /* StyleSheetList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = StyleSheetList.idl; sourceTree = ""; }; + 850656F80AAB4763002D15C0 /* DOMMediaList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMMediaList.h; sourceTree = ""; }; + 850656F90AAB4763002D15C0 /* DOMMediaList.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMMediaList.mm; sourceTree = ""; }; + 850656FA0AAB4763002D15C0 /* DOMStyleSheet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMStyleSheet.h; sourceTree = ""; }; + 850656FB0AAB4763002D15C0 /* DOMStyleSheet.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMStyleSheet.mm; sourceTree = ""; }; + 850656FC0AAB4763002D15C0 /* DOMStyleSheetList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMStyleSheetList.h; sourceTree = ""; }; + 850656FD0AAB4763002D15C0 /* DOMStyleSheetList.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMStyleSheetList.mm; sourceTree = ""; }; + 85089CC70A98C22600A275AA /* Comment.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = Comment.idl; sourceTree = ""; }; + 85089CC90A98C2AB00A275AA /* CDATASection.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CDATASection.idl; sourceTree = ""; }; + 85089CCB0A98C33A00A275AA /* EntityReference.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = EntityReference.idl; sourceTree = ""; }; + 85089CCF0A98C42700A275AA /* DOMCDATASection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCDATASection.h; sourceTree = ""; }; + 85089CD00A98C42700A275AA /* DOMCDATASection.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCDATASection.mm; sourceTree = ""; }; + 85089CD10A98C42700A275AA /* DOMComment.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMComment.h; sourceTree = ""; }; + 85089CD20A98C42700A275AA /* DOMComment.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMComment.mm; sourceTree = ""; }; + 85089CD30A98C42800A275AA /* DOMDocumentFragment.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMDocumentFragment.h; sourceTree = ""; }; + 85089CD40A98C42800A275AA /* DOMDocumentFragment.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMDocumentFragment.mm; sourceTree = ""; }; + 85089CD50A98C42800A275AA /* DOMEntityReference.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMEntityReference.h; sourceTree = ""; }; + 85089CD60A98C42800A275AA /* DOMEntityReference.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMEntityReference.mm; sourceTree = ""; }; + 850B41C00AD9E7E700A6ED4F /* DOMNodeIteratorInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMNodeIteratorInternal.h; sourceTree = ""; }; + 850B41C10AD9E7E700A6ED4F /* DOMTreeWalkerInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMTreeWalkerInternal.h; sourceTree = ""; }; + 85136C890AED665800F90A3D /* eastResizeCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = eastResizeCursor.png; sourceTree = ""; }; + 85136C8A0AED665800F90A3D /* eastWestResizeCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = eastWestResizeCursor.png; sourceTree = ""; }; + 85136C8B0AED665800F90A3D /* helpCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = helpCursor.png; sourceTree = ""; }; + 85136C8C0AED665800F90A3D /* linkCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = linkCursor.png; sourceTree = ""; }; + 85136C8D0AED665800F90A3D /* moveCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = moveCursor.png; sourceTree = ""; }; + 85136C8E0AED665800F90A3D /* northEastResizeCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = northEastResizeCursor.png; sourceTree = ""; }; + 85136C8F0AED665900F90A3D /* northEastSouthWestResizeCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = northEastSouthWestResizeCursor.png; sourceTree = ""; }; + 85136C900AED665900F90A3D /* northResizeCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = northResizeCursor.png; sourceTree = ""; }; + 85136C910AED665900F90A3D /* northSouthResizeCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = northSouthResizeCursor.png; sourceTree = ""; }; + 85136C920AED665900F90A3D /* northWestResizeCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = northWestResizeCursor.png; sourceTree = ""; }; + 85136C930AED665900F90A3D /* northWestSouthEastResizeCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = northWestSouthEastResizeCursor.png; sourceTree = ""; }; + 85136C940AED665900F90A3D /* southEastResizeCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = southEastResizeCursor.png; sourceTree = ""; }; + 85136C950AED665900F90A3D /* southResizeCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = southResizeCursor.png; sourceTree = ""; }; + 85136C960AED665900F90A3D /* southWestResizeCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = southWestResizeCursor.png; sourceTree = ""; }; + 85136C970AED665900F90A3D /* waitCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = waitCursor.png; sourceTree = ""; }; + 85136C980AED665900F90A3D /* westResizeCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = westResizeCursor.png; sourceTree = ""; }; + 85183B380AA6926100F19FA3 /* DOMHTMLBRElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLBRElement.h; sourceTree = ""; }; + 85183B390AA6926100F19FA3 /* DOMHTMLBRElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLBRElement.mm; sourceTree = ""; }; + 85183B3A0AA6926100F19FA3 /* DOMHTMLHeadingElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLHeadingElement.h; sourceTree = ""; }; + 85183B3B0AA6926100F19FA3 /* DOMHTMLHeadingElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLHeadingElement.mm; sourceTree = ""; }; + 85183B3C0AA6926100F19FA3 /* DOMHTMLParagraphElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLParagraphElement.h; sourceTree = ""; }; + 85183B3D0AA6926100F19FA3 /* DOMHTMLParagraphElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLParagraphElement.mm; sourceTree = ""; }; + 85183B3E0AA6926100F19FA3 /* DOMHTMLPreElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLPreElement.h; sourceTree = ""; }; + 85183B3F0AA6926100F19FA3 /* DOMHTMLPreElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLPreElement.mm; sourceTree = ""; }; + 85183B400AA6926100F19FA3 /* DOMHTMLQuoteElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLQuoteElement.h; sourceTree = ""; }; + 85183B410AA6926100F19FA3 /* DOMHTMLQuoteElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLQuoteElement.mm; sourceTree = ""; }; + 8518DCE70A9CC80C0091B7A6 /* DOMDOMImplementation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMDOMImplementation.h; sourceTree = ""; }; + 8518DCE80A9CC80D0091B7A6 /* DOMDOMImplementation.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMDOMImplementation.mm; sourceTree = ""; }; + 8518DD760A9CF31B0091B7A6 /* DOMNamedNodeMap.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMNamedNodeMap.h; sourceTree = ""; }; + 8518DD770A9CF31B0091B7A6 /* DOMNamedNodeMap.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMNamedNodeMap.mm; sourceTree = ""; }; + 851EE8100ABCA39600A6AA33 /* DOMEventException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMEventException.h; sourceTree = ""; }; + 851EE8200ABCA58100A6AA33 /* DOMRangeException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMRangeException.h; sourceTree = ""; }; + 85217E000A5ECD4700DB8D00 /* XSLImportRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XSLImportRule.cpp; sourceTree = ""; }; + 85217E010A5ECD4700DB8D00 /* XSLImportRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XSLImportRule.h; sourceTree = ""; }; + 8538F0000AD71770006A81D1 /* AbstractView.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AbstractView.idl; sourceTree = ""; }; + 8538F0160AD718D8006A81D1 /* DOMAbstractView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMAbstractView.h; sourceTree = ""; }; + 8538F0180AD718D8006A81D1 /* DOMAbstractViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMAbstractViewInternal.h; sourceTree = ""; }; + 8538F0580AD722F1006A81D1 /* DOMRange.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMRange.h; sourceTree = ""; }; + 8538F0590AD722F1006A81D1 /* DOMRange.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMRange.mm; sourceTree = ""; }; + 8538F05A0AD722F1006A81D1 /* DOMRangeInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMRangeInternal.h; sourceTree = ""; }; + 8538F0840AD72CB6006A81D1 /* DOMRanges.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMRanges.h; sourceTree = ""; }; + 853BF4D90ABB6B55008647BB /* DOMNode.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMNode.h; sourceTree = ""; }; + 853BF4DA0ABB6B55008647BB /* DOMNode.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMNode.mm; sourceTree = ""; }; + 8540751F0AD6C5FB00620C57 /* DOMEventTarget.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMEventTarget.h; sourceTree = ""; }; + 854075250AD6C66700620C57 /* DOMNodeFilter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMNodeFilter.h; sourceTree = ""; }; + 854075640AD6CBF900620C57 /* DOMHTMLAppletElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLAppletElement.h; sourceTree = ""; }; + 854075650AD6CBF900620C57 /* DOMHTMLEmbedElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLEmbedElement.h; sourceTree = ""; }; + 854075660AD6CBF900620C57 /* DOMHTMLOptionElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLOptionElement.h; sourceTree = ""; }; + 854075670AD6CBF900620C57 /* DOMHTMLOptionElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLOptionElement.mm; sourceTree = ""; }; + 854075680AD6CBF900620C57 /* DOMHTMLOptionElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLOptionElementInternal.h; sourceTree = ""; }; + 854FE7260A2297BE0058D7AD /* NodeFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = NodeFilter.cpp; sourceTree = ""; }; + 854FE7270A2297BE0058D7AD /* NodeFilter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NodeFilter.h; sourceTree = ""; }; + 854FE7280A2297BE0058D7AD /* NodeFilterCondition.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = NodeFilterCondition.cpp; sourceTree = ""; }; + 854FE7290A2297BE0058D7AD /* NodeFilterCondition.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NodeFilterCondition.h; sourceTree = ""; }; + 854FE72A0A2297BE0058D7AD /* NodeIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = NodeIterator.cpp; sourceTree = ""; }; + 854FE72B0A2297BE0058D7AD /* NodeIterator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NodeIterator.h; sourceTree = ""; }; + 854FE72C0A2297BE0058D7AD /* Traversal.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Traversal.cpp; sourceTree = ""; }; + 854FE72D0A2297BE0058D7AD /* Traversal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Traversal.h; sourceTree = ""; }; + 854FE72E0A2297BE0058D7AD /* TreeWalker.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TreeWalker.cpp; sourceTree = ""; }; + 854FE72F0A2297BE0058D7AD /* TreeWalker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TreeWalker.h; sourceTree = ""; }; + 855247CD0AD850B80012093B /* DOMHTMLAppletElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLAppletElementInternal.h; sourceTree = ""; }; + 855247CE0AD850B80012093B /* DOMHTMLEmbedElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLEmbedElementInternal.h; sourceTree = ""; }; + 85526C350AB0A17E000302EA /* DOMNodeIterator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMNodeIterator.h; sourceTree = ""; }; + 85526C360AB0A17E000302EA /* DOMNodeIterator.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMNodeIterator.mm; sourceTree = ""; }; + 85526CD00AB0B7D9000302EA /* DOMTreeWalker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMTreeWalker.h; sourceTree = ""; }; + 85526CD10AB0B7D9000302EA /* DOMTreeWalker.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMTreeWalker.mm; sourceTree = ""; }; + 855542570AA48B1E00BA89F2 /* HTMLTableCaptionElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLTableCaptionElement.idl; sourceTree = ""; }; + 855542580AA48B1E00BA89F2 /* HTMLTableCellElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLTableCellElement.idl; sourceTree = ""; }; + 855542590AA48B1E00BA89F2 /* HTMLTableColElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLTableColElement.idl; sourceTree = ""; }; + 8555425A0AA48B1E00BA89F2 /* HTMLTableElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLTableElement.idl; sourceTree = ""; }; + 8555425B0AA48B1E00BA89F2 /* HTMLTableRowElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLTableRowElement.idl; sourceTree = ""; }; + 8555425C0AA48B1E00BA89F2 /* HTMLTableSectionElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLTableSectionElement.idl; sourceTree = ""; }; + 855542950AA4938800BA89F2 /* HTMLFrameElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLFrameElement.idl; sourceTree = ""; }; + 855542960AA4938800BA89F2 /* HTMLFrameSetElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLFrameSetElement.idl; sourceTree = ""; }; + 855542970AA4938800BA89F2 /* HTMLIFrameElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLIFrameElement.idl; sourceTree = ""; }; + 855542980AA4938800BA89F2 /* HTMLObjectElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLObjectElement.idl; sourceTree = ""; }; + 855542990AA4938800BA89F2 /* HTMLSelectElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLSelectElement.idl; sourceTree = ""; }; + 855D35890AD707310019AAC7 /* DOMRGBColor.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMRGBColor.h; sourceTree = ""; }; + 856C8AE20A912649005C687B /* DOMObject.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMObject.h; sourceTree = ""; }; + 856C8AE30A912649005C687B /* DOMObject.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMObject.mm; sourceTree = ""; }; + 8574D1F10ADE6122004CBA11 /* JSSVGElementWrapperFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGElementWrapperFactory.cpp; sourceTree = ""; }; + 8574D1F20ADE6122004CBA11 /* JSSVGElementWrapperFactory.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGElementWrapperFactory.h; sourceTree = ""; }; + 8574D1F30ADE6122004CBA11 /* JSSVGNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGNumber.cpp; sourceTree = ""; }; + 8574D1F40ADE6122004CBA11 /* JSSVGNumber.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = JSSVGNumber.h; sourceTree = ""; }; + 8574D1F50ADE6122004CBA11 /* JSSVGPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPoint.cpp; sourceTree = ""; }; + 8574D1F60ADE6122004CBA11 /* JSSVGPoint.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = JSSVGPoint.h; sourceTree = ""; }; + 8574D1F70ADE6122004CBA11 /* JSSVGRect.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGRect.cpp; sourceTree = ""; }; + 8574D1F80ADE6122004CBA11 /* JSSVGRect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = JSSVGRect.h; sourceTree = ""; }; + 857E0B230AB043460036E447 /* DOMMouseEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMMouseEvent.h; sourceTree = ""; }; + 857E0B240AB043460036E447 /* DOMMouseEvent.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMMouseEvent.mm; sourceTree = ""; }; + 858015CD0ABCA75D0080588D /* DOMXPathException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMXPathException.h; sourceTree = ""; }; + 858C381A0AA8E29600B187A4 /* DOMCSSValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSValue.h; sourceTree = ""; }; + 858C381B0AA8E29600B187A4 /* DOMCSSValue.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSSValue.mm; sourceTree = ""; }; + 858C382A0AA8E40500B187A4 /* DOMCSSPrimitiveValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSPrimitiveValue.h; sourceTree = ""; }; + 858C382B0AA8E40500B187A4 /* DOMCSSPrimitiveValue.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSSPrimitiveValue.mm; sourceTree = ""; }; + 858C383A0AA8ED8200B187A4 /* DOMCSSValueList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSValueList.h; sourceTree = ""; }; + 858C383B0AA8ED8200B187A4 /* DOMCSSValueList.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSSValueList.mm; sourceTree = ""; }; + 858C38A10AA8F20400B187A4 /* DOMCounter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCounter.h; sourceTree = ""; }; + 858C38A20AA8F20400B187A4 /* DOMCounter.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCounter.mm; sourceTree = ""; }; + 858C38A30AA8F20400B187A4 /* DOMRect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMRect.h; sourceTree = ""; }; + 858C38A40AA8F20400B187A4 /* DOMRect.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMRect.mm; sourceTree = ""; }; + 858C38EF0AA8FDD100B187A4 /* RGBColor.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = RGBColor.idl; sourceTree = ""; }; + 858C39100AA8FF0000B187A4 /* CSSStyleSheet.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSStyleSheet.idl; sourceTree = ""; }; + 858C39260AA8FF9D00B187A4 /* DOMCSSStyleSheet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSStyleSheet.h; sourceTree = ""; }; + 858C39270AA8FF9D00B187A4 /* DOMCSSStyleSheet.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSSStyleSheet.mm; sourceTree = ""; }; + 85909CD30ACC7A7E00DF01F1 /* DOMCSSCharsetRuleInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSCharsetRuleInternal.h; sourceTree = ""; }; + 85909CD40ACC7A7E00DF01F1 /* DOMCSSFontFaceRuleInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSFontFaceRuleInternal.h; sourceTree = ""; }; + 85909CD50ACC7A7E00DF01F1 /* DOMCSSImportRuleInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSImportRuleInternal.h; sourceTree = ""; }; + 85909CD60ACC7A7E00DF01F1 /* DOMCSSMediaRuleInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSMediaRuleInternal.h; sourceTree = ""; }; + 85909CD70ACC7A7E00DF01F1 /* DOMCSSPageRuleInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSPageRuleInternal.h; sourceTree = ""; }; + 85909CD90ACC7A7E00DF01F1 /* DOMCSSStyleRuleInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSStyleRuleInternal.h; sourceTree = ""; }; + 85909CDA0ACC7A7E00DF01F1 /* DOMCSSStyleSheetInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSStyleSheetInternal.h; sourceTree = ""; }; + 85909CDB0ACC7A7E00DF01F1 /* DOMCSSUnknownRuleInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSUnknownRuleInternal.h; sourceTree = ""; }; + 85909D260ACC7D5500DF01F1 /* DOMCSSPrimitiveValueInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSPrimitiveValueInternal.h; sourceTree = ""; }; + 85909D280ACC7D5500DF01F1 /* DOMCSSValueListInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSValueListInternal.h; sourceTree = ""; }; + 859128790AB222EC00202265 /* HTMLEmbedElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLEmbedElement.idl; sourceTree = ""; }; + 85989DC50ACC8BBD00A0BC51 /* DOMKeyboardEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMKeyboardEventInternal.h; sourceTree = ""; }; + 85989DC60ACC8BBD00A0BC51 /* DOMMouseEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMMouseEventInternal.h; sourceTree = ""; }; + 85989DC70ACC8BBD00A0BC51 /* DOMMutationEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMMutationEventInternal.h; sourceTree = ""; }; + 85989DC80ACC8BBD00A0BC51 /* DOMOverflowEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMOverflowEventInternal.h; sourceTree = ""; }; + 85989DC90ACC8BBD00A0BC51 /* DOMUIEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMUIEventInternal.h; sourceTree = ""; }; + 85989DCA0ACC8BBD00A0BC51 /* DOMWheelEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMWheelEventInternal.h; sourceTree = ""; }; + 85992EB20AA5069500AC0785 /* DOMHTMLHeadElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLHeadElement.h; sourceTree = ""; }; + 85992EB30AA5069500AC0785 /* DOMHTMLHeadElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLHeadElement.mm; sourceTree = ""; }; + 85992EB40AA5069500AC0785 /* DOMHTMLHtmlElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLHtmlElement.h; sourceTree = ""; }; + 85992EB50AA5069500AC0785 /* DOMHTMLHtmlElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLHtmlElement.mm; sourceTree = ""; }; + 85992EB60AA5069500AC0785 /* DOMHTMLLinkElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLLinkElement.h; sourceTree = ""; }; + 85992EB70AA5069500AC0785 /* DOMHTMLLinkElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLLinkElement.mm; sourceTree = ""; }; + 85992EB80AA5069500AC0785 /* DOMHTMLTitleElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTitleElement.h; sourceTree = ""; }; + 85992EB90AA5069500AC0785 /* DOMHTMLTitleElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLTitleElement.mm; sourceTree = ""; }; + 859A9C3D0AA5E3BD00B694B2 /* DOMHTMLBaseElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLBaseElement.h; sourceTree = ""; }; + 859A9C3E0AA5E3BD00B694B2 /* DOMHTMLBaseElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLBaseElement.mm; sourceTree = ""; }; + 859A9C3F0AA5E3BD00B694B2 /* DOMHTMLBodyElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLBodyElement.h; sourceTree = ""; }; + 859A9C400AA5E3BD00B694B2 /* DOMHTMLBodyElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLBodyElement.mm; sourceTree = ""; }; + 859A9C430AA5E3BD00B694B2 /* DOMHTMLMetaElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLMetaElement.h; sourceTree = ""; }; + 859A9C440AA5E3BD00B694B2 /* DOMHTMLMetaElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLMetaElement.mm; sourceTree = ""; }; + 859A9C450AA5E3BD00B694B2 /* DOMHTMLStyleElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLStyleElement.h; sourceTree = ""; }; + 859A9C460AA5E3BD00B694B2 /* DOMHTMLStyleElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLStyleElement.mm; sourceTree = ""; }; + 859B7FB90A8D288800A5F1EA /* CodeGeneratorObjC.pm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.perl; name = CodeGeneratorObjC.pm; path = bindings/scripts/CodeGeneratorObjC.pm; sourceTree = SOURCE_ROOT; tabWidth = 8; usesTabs = 0; }; + 85ACA9840A9B520300671E90 /* DOMCharacterData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCharacterData.h; sourceTree = ""; }; + 85ACA9850A9B520300671E90 /* DOMCharacterData.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCharacterData.mm; sourceTree = ""; }; + 85ACA99A0A9B575900671E90 /* DOMText.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMText.h; sourceTree = ""; }; + 85ACA99B0A9B575900671E90 /* DOMText.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMText.mm; sourceTree = ""; }; + 85ACA9BE0A9B5FA500671E90 /* DOMElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMElement.h; sourceTree = ""; }; + 85ACA9BF0A9B5FA500671E90 /* DOMElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMElement.mm; sourceTree = ""; }; + 85ACA9F90A9B631000671E90 /* NamedNodeMap.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = NamedNodeMap.idl; sourceTree = ""; }; + 85ACA9FA0A9B631000671E90 /* NodeList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = NodeList.idl; sourceTree = ""; }; + 85ACAA890A9B759C00671E90 /* DOMNodeList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMNodeList.h; sourceTree = ""; }; + 85ACAA8A0A9B759C00671E90 /* DOMNodeList.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMNodeList.mm; sourceTree = ""; }; + 85ACABAE0A9CAF8000671E90 /* DOMDocument.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMDocument.h; sourceTree = ""; }; + 85ACABAF0A9CAF8000671E90 /* DOMDocument.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMDocument.mm; sourceTree = ""; }; + 85AFA7410AAF298400E84305 /* EventListener.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = EventListener.idl; sourceTree = ""; }; + 85AFA7420AAF298400E84305 /* EventTarget.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = EventTarget.idl; sourceTree = ""; }; + 85AFA8200AAF528A00E84305 /* DOMEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMEvent.h; sourceTree = ""; }; + 85AFA8210AAF528A00E84305 /* DOMEvent.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMEvent.mm; sourceTree = ""; }; + 85B498EC0ADB32FB00925CBB /* DOMCSSRuleInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSRuleInternal.h; sourceTree = ""; }; + 85B498F20ADB336A00925CBB /* DOMCSSValueInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSValueInternal.h; sourceTree = ""; }; + 85B498F40ADB337A00925CBB /* DOMEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMEventInternal.h; sourceTree = ""; }; + 85B498FA0ADB340200925CBB /* DOMNodeInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMNodeInternal.h; sourceTree = ""; }; + 85B498FE0ADB348100925CBB /* DOMStyleSheetInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMStyleSheetInternal.h; sourceTree = ""; }; + 85BA4CD50AA6861B0088052D /* DOMHTMLButtonElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLButtonElement.h; sourceTree = ""; }; + 85BA4CD60AA6861B0088052D /* DOMHTMLButtonElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLButtonElement.mm; sourceTree = ""; }; + 85BA4CD70AA6861B0088052D /* DOMHTMLFieldSetElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLFieldSetElement.h; sourceTree = ""; }; + 85BA4CD80AA6861B0088052D /* DOMHTMLFieldSetElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLFieldSetElement.mm; sourceTree = ""; }; + 85BA4CD90AA6861B0088052D /* DOMHTMLLabelElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLLabelElement.h; sourceTree = ""; }; + 85BA4CDA0AA6861B0088052D /* DOMHTMLLabelElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLLabelElement.mm; sourceTree = ""; }; + 85BA4CDB0AA6861B0088052D /* DOMHTMLLegendElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLLegendElement.h; sourceTree = ""; }; + 85BA4CDC0AA6861B0088052D /* DOMHTMLLegendElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLLegendElement.mm; sourceTree = ""; }; + 85BA4CFD0AA688680088052D /* DOMHTMLDirectoryElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLDirectoryElement.h; sourceTree = ""; }; + 85BA4CFE0AA688680088052D /* DOMHTMLDirectoryElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLDirectoryElement.mm; sourceTree = ""; }; + 85BA4CFF0AA688680088052D /* DOMHTMLDivElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLDivElement.h; sourceTree = ""; }; + 85BA4D000AA688680088052D /* DOMHTMLDivElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLDivElement.mm; sourceTree = ""; }; + 85BA4D010AA688680088052D /* DOMHTMLDListElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLDListElement.h; sourceTree = ""; }; + 85BA4D020AA688680088052D /* DOMHTMLDListElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLDListElement.mm; sourceTree = ""; }; + 85BA4D030AA688680088052D /* DOMHTMLLIElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLLIElement.h; sourceTree = ""; }; + 85BA4D040AA688680088052D /* DOMHTMLLIElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLLIElement.mm; sourceTree = ""; }; + 85BA4D050AA688680088052D /* DOMHTMLMenuElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLMenuElement.h; sourceTree = ""; }; + 85BA4D060AA688680088052D /* DOMHTMLMenuElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLMenuElement.mm; sourceTree = ""; }; + 85BA4D070AA688680088052D /* DOMHTMLOListElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLOListElement.h; sourceTree = ""; }; + 85BA4D080AA688680088052D /* DOMHTMLOListElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLOListElement.mm; sourceTree = ""; }; + 85BA4D090AA688680088052D /* DOMHTMLUListElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLUListElement.h; sourceTree = ""; }; + 85BA4D0A0AA688680088052D /* DOMHTMLUListElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLUListElement.mm; sourceTree = ""; }; + 85BCBC110ABBA87D00381160 /* DOMHTMLDocument.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLDocument.h; sourceTree = ""; }; + 85BCBC120ABBA87D00381160 /* DOMHTMLDocument.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLDocument.mm; sourceTree = ""; }; + 85C050B80AD84F5E005532E7 /* DOMHTMLAppletElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLAppletElement.mm; sourceTree = ""; }; + 85C050B90AD84F5E005532E7 /* DOMHTMLEmbedElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLEmbedElement.mm; sourceTree = ""; }; + 85C56C5B0AA87AFD00D95755 /* MediaList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = MediaList.idl; sourceTree = ""; }; + 85C56CA10AA89AB400D95755 /* CSSStyleRule.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSStyleRule.idl; sourceTree = ""; }; + 85C56CA20AA89C1000D95755 /* CSSMediaRule.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSMediaRule.idl; sourceTree = ""; }; + 85C56CA30AA89CA400D95755 /* CSSFontFaceRule.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSFontFaceRule.idl; sourceTree = ""; }; + 85C56CA60AA89D5F00D95755 /* CSSPageRule.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSPageRule.idl; sourceTree = ""; }; + 85C56CA90AA89E6600D95755 /* CSSImportRule.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSImportRule.idl; sourceTree = ""; }; + 85C56CAC0AA89F8E00D95755 /* CSSCharsetRule.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSCharsetRule.idl; sourceTree = ""; }; + 85C56CAD0AA89FE000D95755 /* CSSUnknownRule.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSUnknownRule.idl; sourceTree = ""; }; + 85C78A670ABDE1B40044FC16 /* DOMException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMException.h; sourceTree = ""; }; + 85C7F48F0AAF79DC004014DD /* DOMUIEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMUIEvent.h; sourceTree = ""; }; + 85C7F4900AAF79DC004014DD /* DOMUIEvent.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMUIEvent.mm; sourceTree = ""; }; + 85C7F5BC0AAFB7CC004014DD /* DOMMutationEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMMutationEvent.h; sourceTree = ""; }; + 85C7F5BD0AAFB7CC004014DD /* DOMMutationEvent.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMMutationEvent.mm; sourceTree = ""; }; + 85C7F5CE0AAFB8D9004014DD /* DOMOverflowEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMOverflowEvent.h; sourceTree = ""; }; + 85C7F5CF0AAFB8D9004014DD /* DOMOverflowEvent.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMOverflowEvent.mm; sourceTree = ""; }; + 85C7F5E50AAFBAFB004014DD /* DOMWheelEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMWheelEvent.h; sourceTree = ""; }; + 85C7F5E60AAFBAFB004014DD /* DOMWheelEvent.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMWheelEvent.mm; sourceTree = ""; }; + 85CA96B60A9621A600690CCF /* DOMEntity.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMEntity.h; sourceTree = ""; }; + 85CA96B70A9621A600690CCF /* DOMEntity.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMEntity.mm; sourceTree = ""; }; + 85CA96E80A9624E900690CCF /* DOMNotation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMNotation.h; sourceTree = ""; }; + 85CA96E90A9624E900690CCF /* DOMNotation.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMNotation.mm; sourceTree = ""; }; + 85CA975A0A962E5400690CCF /* DOMDocumentType.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMDocumentType.h; sourceTree = ""; }; + 85CA975B0A962E5400690CCF /* DOMDocumentType.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMDocumentType.mm; sourceTree = ""; }; + 85D2AD670AB1A40A00C313EA /* DOMEventListener.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMEventListener.h; sourceTree = ""; }; + 85D389B00A991A7F00282145 /* DOMAttr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMAttr.h; sourceTree = ""; }; + 85D389B10A991A7F00282145 /* DOMAttr.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMAttr.mm; sourceTree = ""; }; + 85DF2C100AA341F600AD64C5 /* DOMHTMLFormElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLFormElement.h; sourceTree = ""; }; + 85DF2C110AA341F600AD64C5 /* DOMHTMLFormElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLFormElement.mm; sourceTree = ""; }; + 85DF2EEB0AA387CB00AD64C5 /* DOMHTMLElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLElement.h; sourceTree = ""; }; + 85DF2EEC0AA387CB00AD64C5 /* DOMHTMLElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLElement.mm; sourceTree = ""; }; + 85DF2F690AA3C74300AD64C5 /* HTMLCollection.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLCollection.idl; sourceTree = ""; }; + 85DF2F8C0AA3C88100AD64C5 /* DOMHTMLCollection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLCollection.h; sourceTree = ""; }; + 85DF2F8D0AA3C88100AD64C5 /* DOMHTMLCollection.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLCollection.mm; sourceTree = ""; }; + 85DF2F920AA3C9B600AD64C5 /* HTMLOptionsCollection.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLOptionsCollection.idl; sourceTree = ""; }; + 85DF2F990AA3CAE500AD64C5 /* DOMHTMLOptionsCollection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLOptionsCollection.h; sourceTree = ""; }; + 85DF2F9A0AA3CAE500AD64C5 /* DOMHTMLOptionsCollection.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLOptionsCollection.mm; sourceTree = ""; }; + 85DF81210AA7787200486AD7 /* DOMHTMLAnchorElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLAnchorElement.h; sourceTree = ""; }; + 85DF81220AA7787200486AD7 /* DOMHTMLAnchorElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLAnchorElement.mm; sourceTree = ""; }; + 85DF81230AA7787200486AD7 /* DOMHTMLImageElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLImageElement.h; sourceTree = ""; }; + 85DF81240AA7787200486AD7 /* DOMHTMLImageElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLImageElement.mm; sourceTree = ""; }; + 85DF81250AA7787200486AD7 /* DOMHTMLObjectElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLObjectElement.h; sourceTree = ""; }; + 85DF81260AA7787200486AD7 /* DOMHTMLObjectElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLObjectElement.mm; sourceTree = ""; }; + 85DF818D0AA77E4B00486AD7 /* DOMHTMLFrameElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLFrameElement.h; sourceTree = ""; }; + 85DF818E0AA77E4B00486AD7 /* DOMHTMLFrameElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLFrameElement.mm; sourceTree = ""; }; + 85DF818F0AA77E4B00486AD7 /* DOMHTMLFrameSetElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLFrameSetElement.h; sourceTree = ""; }; + 85DF81900AA77E4B00486AD7 /* DOMHTMLFrameSetElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLFrameSetElement.mm; sourceTree = ""; }; + 85DF81910AA77E4B00486AD7 /* DOMHTMLIFrameElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLIFrameElement.h; sourceTree = ""; }; + 85DF81920AA77E4B00486AD7 /* DOMHTMLIFrameElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLIFrameElement.mm; sourceTree = ""; }; + 85DF81930AA77E4B00486AD7 /* DOMHTMLScriptElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLScriptElement.h; sourceTree = ""; }; + 85DF81940AA77E4B00486AD7 /* DOMHTMLScriptElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLScriptElement.mm; sourceTree = ""; }; + 85DF82130AA7849E00486AD7 /* DOMHTMLTableCaptionElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTableCaptionElement.h; sourceTree = ""; }; + 85DF82140AA7849E00486AD7 /* DOMHTMLTableCaptionElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLTableCaptionElement.mm; sourceTree = ""; }; + 85DF82150AA7849E00486AD7 /* DOMHTMLTableCellElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTableCellElement.h; sourceTree = ""; }; + 85DF82160AA7849E00486AD7 /* DOMHTMLTableCellElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLTableCellElement.mm; sourceTree = ""; }; + 85DF82170AA7849E00486AD7 /* DOMHTMLTableColElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTableColElement.h; sourceTree = ""; }; + 85DF82180AA7849E00486AD7 /* DOMHTMLTableColElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLTableColElement.mm; sourceTree = ""; }; + 85DF82190AA7849E00486AD7 /* DOMHTMLTableRowElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTableRowElement.h; sourceTree = ""; }; + 85DF821A0AA7849E00486AD7 /* DOMHTMLTableRowElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLTableRowElement.mm; sourceTree = ""; }; + 85DF821B0AA7849E00486AD7 /* DOMHTMLTableSectionElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTableSectionElement.h; sourceTree = ""; }; + 85DF821C0AA7849E00486AD7 /* DOMHTMLTableSectionElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLTableSectionElement.mm; sourceTree = ""; }; + 85DF826E0AA78B8A00486AD7 /* DOMHTMLTableElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTableElement.h; sourceTree = ""; }; + 85DF826F0AA78B8A00486AD7 /* DOMHTMLTableElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLTableElement.mm; sourceTree = ""; }; + 85E7113E0AC5D5340053270F /* DOMAttrInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMAttrInternal.h; sourceTree = ""; }; + 85E7113F0AC5D5340053270F /* DOMCDATASectionInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCDATASectionInternal.h; sourceTree = ""; }; + 85E711400AC5D5340053270F /* DOMCharacterDataInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCharacterDataInternal.h; sourceTree = ""; }; + 85E711410AC5D5340053270F /* DOMCommentInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCommentInternal.h; sourceTree = ""; }; + 85E711420AC5D5340053270F /* DOMCounterInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCounterInternal.h; sourceTree = ""; }; + 85E711430AC5D5340053270F /* DOMCSSRuleListInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSRuleListInternal.h; sourceTree = ""; }; + 85E711440AC5D5340053270F /* DOMCSSStyleDeclarationInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSStyleDeclarationInternal.h; sourceTree = ""; }; + 85E711450AC5D5340053270F /* DOMDocumentFragmentInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMDocumentFragmentInternal.h; sourceTree = ""; }; + 85E711460AC5D5340053270F /* DOMDocumentInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMDocumentInternal.h; sourceTree = ""; }; + 85E711470AC5D5340053270F /* DOMDocumentTypeInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMDocumentTypeInternal.h; sourceTree = ""; }; + 85E711480AC5D5340053270F /* DOMDOMImplementationInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMDOMImplementationInternal.h; sourceTree = ""; }; + 85E711490AC5D5340053270F /* DOMElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMElementInternal.h; sourceTree = ""; }; + 85E7114A0AC5D5340053270F /* DOMEntityInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMEntityInternal.h; sourceTree = ""; }; + 85E7114B0AC5D5340053270F /* DOMEntityReferenceInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMEntityReferenceInternal.h; sourceTree = ""; }; + 85E7114C0AC5D5340053270F /* DOMHTMLAnchorElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLAnchorElementInternal.h; sourceTree = ""; }; + 85E7114D0AC5D5340053270F /* DOMHTMLAreaElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLAreaElementInternal.h; sourceTree = ""; }; + 85E7114E0AC5D5340053270F /* DOMHTMLBaseElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLBaseElementInternal.h; sourceTree = ""; }; + 85E7114F0AC5D5340053270F /* DOMHTMLBaseFontElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLBaseFontElementInternal.h; sourceTree = ""; }; + 85E711500AC5D5340053270F /* DOMHTMLBodyElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLBodyElementInternal.h; sourceTree = ""; }; + 85E711510AC5D5340053270F /* DOMHTMLBRElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLBRElementInternal.h; sourceTree = ""; }; + 85E711520AC5D5340053270F /* DOMHTMLButtonElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLButtonElementInternal.h; sourceTree = ""; }; + 85E711530AC5D5340053270F /* DOMHTMLCollectionInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLCollectionInternal.h; sourceTree = ""; }; + 85E711540AC5D5340053270F /* DOMHTMLDirectoryElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLDirectoryElementInternal.h; sourceTree = ""; }; + 85E711550AC5D5340053270F /* DOMHTMLDivElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLDivElementInternal.h; sourceTree = ""; }; + 85E711560AC5D5340053270F /* DOMHTMLDListElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLDListElementInternal.h; sourceTree = ""; }; + 85E711570AC5D5340053270F /* DOMHTMLDocumentInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLDocumentInternal.h; sourceTree = ""; }; + 85E711580AC5D5340053270F /* DOMHTMLElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLElementInternal.h; sourceTree = ""; }; + 85E711590AC5D5340053270F /* DOMHTMLFieldSetElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLFieldSetElementInternal.h; sourceTree = ""; }; + 85E7115A0AC5D5340053270F /* DOMHTMLFontElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLFontElementInternal.h; sourceTree = ""; }; + 85E7115B0AC5D5340053270F /* DOMHTMLFormElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLFormElementInternal.h; sourceTree = ""; }; + 85E7115C0AC5D5340053270F /* DOMHTMLFrameElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLFrameElementInternal.h; sourceTree = ""; }; + 85E7115D0AC5D5340053270F /* DOMHTMLFrameSetElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLFrameSetElementInternal.h; sourceTree = ""; }; + 85E7115E0AC5D5350053270F /* DOMHTMLHeadElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLHeadElementInternal.h; sourceTree = ""; }; + 85E7115F0AC5D5350053270F /* DOMHTMLHeadingElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLHeadingElementInternal.h; sourceTree = ""; }; + 85E711600AC5D5350053270F /* DOMHTMLHRElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLHRElementInternal.h; sourceTree = ""; }; + 85E711610AC5D5350053270F /* DOMHTMLHtmlElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLHtmlElementInternal.h; sourceTree = ""; }; + 85E711620AC5D5350053270F /* DOMHTMLIFrameElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLIFrameElementInternal.h; sourceTree = ""; }; + 85E711630AC5D5350053270F /* DOMHTMLImageElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLImageElementInternal.h; sourceTree = ""; }; + 85E711640AC5D5350053270F /* DOMHTMLInputElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLInputElementInternal.h; sourceTree = ""; }; + 85E711660AC5D5350053270F /* DOMHTMLLabelElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLLabelElementInternal.h; sourceTree = ""; }; + 85E711670AC5D5350053270F /* DOMHTMLLegendElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLLegendElementInternal.h; sourceTree = ""; }; + 85E711680AC5D5350053270F /* DOMHTMLLIElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLLIElementInternal.h; sourceTree = ""; }; + 85E711690AC5D5350053270F /* DOMHTMLLinkElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLLinkElementInternal.h; sourceTree = ""; }; + 85E7116A0AC5D5350053270F /* DOMHTMLMapElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLMapElementInternal.h; sourceTree = ""; }; + 85E7116B0AC5D5350053270F /* DOMHTMLMenuElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLMenuElementInternal.h; sourceTree = ""; }; + 85E7116C0AC5D5350053270F /* DOMHTMLMetaElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLMetaElementInternal.h; sourceTree = ""; }; + 85E7116D0AC5D5350053270F /* DOMHTMLModElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLModElementInternal.h; sourceTree = ""; }; + 85E7116E0AC5D5350053270F /* DOMHTMLObjectElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLObjectElementInternal.h; sourceTree = ""; }; + 85E7116F0AC5D5350053270F /* DOMHTMLOListElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLOListElementInternal.h; sourceTree = ""; }; + 85E711700AC5D5350053270F /* DOMHTMLOptGroupElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLOptGroupElementInternal.h; sourceTree = ""; }; + 85E711710AC5D5350053270F /* DOMHTMLOptionsCollectionInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLOptionsCollectionInternal.h; sourceTree = ""; }; + 85E711720AC5D5350053270F /* DOMHTMLParagraphElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLParagraphElementInternal.h; sourceTree = ""; }; + 85E711730AC5D5350053270F /* DOMHTMLParamElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLParamElementInternal.h; sourceTree = ""; }; + 85E711740AC5D5350053270F /* DOMHTMLPreElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLPreElementInternal.h; sourceTree = ""; }; + 85E711750AC5D5350053270F /* DOMHTMLQuoteElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLQuoteElementInternal.h; sourceTree = ""; }; + 85E711760AC5D5350053270F /* DOMHTMLScriptElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLScriptElementInternal.h; sourceTree = ""; }; + 85E711770AC5D5350053270F /* DOMHTMLSelectElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLSelectElementInternal.h; sourceTree = ""; }; + 85E711780AC5D5350053270F /* DOMHTMLStyleElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLStyleElementInternal.h; sourceTree = ""; }; + 85E711790AC5D5350053270F /* DOMHTMLTableCaptionElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTableCaptionElementInternal.h; sourceTree = ""; }; + 85E7117A0AC5D5350053270F /* DOMHTMLTableCellElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTableCellElementInternal.h; sourceTree = ""; }; + 85E7117B0AC5D5350053270F /* DOMHTMLTableColElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTableColElementInternal.h; sourceTree = ""; }; + 85E7117C0AC5D5350053270F /* DOMHTMLTableElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTableElementInternal.h; sourceTree = ""; }; + 85E7117D0AC5D5350053270F /* DOMHTMLTableRowElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTableRowElementInternal.h; sourceTree = ""; }; + 85E7117E0AC5D5350053270F /* DOMHTMLTableSectionElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTableSectionElementInternal.h; sourceTree = ""; }; + 85E7117F0AC5D5350053270F /* DOMHTMLTextAreaElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTextAreaElementInternal.h; sourceTree = ""; }; + 85E711800AC5D5350053270F /* DOMHTMLTitleElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTitleElementInternal.h; sourceTree = ""; }; + 85E711810AC5D5350053270F /* DOMHTMLUListElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLUListElementInternal.h; sourceTree = ""; }; + 85E711820AC5D5350053270F /* DOMMediaListInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMMediaListInternal.h; sourceTree = ""; }; + 85E711830AC5D5350053270F /* DOMNamedNodeMapInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMNamedNodeMapInternal.h; sourceTree = ""; }; + 85E711840AC5D5350053270F /* DOMNodeListInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMNodeListInternal.h; sourceTree = ""; }; + 85E711850AC5D5350053270F /* DOMNotationInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMNotationInternal.h; sourceTree = ""; }; + 85E711860AC5D5350053270F /* DOMProcessingInstructionInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMProcessingInstructionInternal.h; sourceTree = ""; }; + 85E711870AC5D5350053270F /* DOMRectInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMRectInternal.h; sourceTree = ""; }; + 85E711880AC5D5350053270F /* DOMStyleSheetListInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMStyleSheetListInternal.h; sourceTree = ""; }; + 85E7118A0AC5D5350053270F /* DOMTextInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMTextInternal.h; sourceTree = ""; }; + 85E7118B0AC5D5350053270F /* DOMXPathExpressionInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMXPathExpressionInternal.h; sourceTree = ""; }; + 85E7118C0AC5D5350053270F /* DOMXPathResultInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMXPathResultInternal.h; sourceTree = ""; }; + 85E9E09B0AB3A0C700069CD0 /* DOMXPathExpression.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMXPathExpression.h; sourceTree = ""; }; + 85E9E09C0AB3A0C700069CD0 /* DOMXPathExpression.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMXPathExpression.mm; sourceTree = ""; }; + 85E9E09E0AB3A0C700069CD0 /* DOMXPathNSResolver.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMXPathNSResolver.h; sourceTree = ""; }; + 85E9E09F0AB3A0C700069CD0 /* DOMXPathResult.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMXPathResult.h; sourceTree = ""; }; + 85E9E0A00AB3A0C700069CD0 /* DOMXPathResult.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMXPathResult.mm; sourceTree = ""; }; + 85EC9AF90A71A2C600EEEAED /* Language.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Language.h; sourceTree = ""; }; + 85ECBEDD0AA7626800544F0B /* DOMHTMLAreaElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLAreaElement.h; sourceTree = ""; }; + 85ECBEDE0AA7626800544F0B /* DOMHTMLAreaElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLAreaElement.mm; sourceTree = ""; }; + 85ECBEDF0AA7626800544F0B /* DOMHTMLBaseFontElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLBaseFontElement.h; sourceTree = ""; }; + 85ECBEE00AA7626800544F0B /* DOMHTMLBaseFontElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLBaseFontElement.mm; sourceTree = ""; }; + 85ECBEE10AA7626800544F0B /* DOMHTMLFontElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLFontElement.h; sourceTree = ""; }; + 85ECBEE20AA7626800544F0B /* DOMHTMLFontElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLFontElement.mm; sourceTree = ""; }; + 85ECBEE30AA7626800544F0B /* DOMHTMLHRElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLHRElement.h; sourceTree = ""; }; + 85ECBEE40AA7626800544F0B /* DOMHTMLHRElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLHRElement.mm; sourceTree = ""; }; + 85ECBEE50AA7626800544F0B /* DOMHTMLMapElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLMapElement.h; sourceTree = ""; }; + 85ECBEE60AA7626800544F0B /* DOMHTMLMapElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLMapElement.mm; sourceTree = ""; }; + 85ECBEE70AA7626800544F0B /* DOMHTMLModElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLModElement.h; sourceTree = ""; }; + 85ECBEE80AA7626900544F0B /* DOMHTMLModElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLModElement.mm; sourceTree = ""; }; + 85ECBEE90AA7626900544F0B /* DOMHTMLParamElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLParamElement.h; sourceTree = ""; }; + 85ECBEEA0AA7626900544F0B /* DOMHTMLParamElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLParamElement.mm; sourceTree = ""; }; + 85F32AE40AA63B8700FF3184 /* DOMHTMLInputElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLInputElement.h; sourceTree = ""; }; + 85F32AE50AA63B8700FF3184 /* DOMHTMLInputElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLInputElement.mm; sourceTree = ""; }; + 85F32AE60AA63B8700FF3184 /* DOMHTMLOptGroupElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLOptGroupElement.h; sourceTree = ""; }; + 85F32AE70AA63B8700FF3184 /* DOMHTMLOptGroupElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLOptGroupElement.mm; sourceTree = ""; }; + 85F32AE80AA63B8700FF3184 /* DOMHTMLSelectElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLSelectElement.h; sourceTree = ""; }; + 85F32AE90AA63B8700FF3184 /* DOMHTMLSelectElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLSelectElement.mm; sourceTree = ""; }; + 85F32AEA0AA63B8700FF3184 /* DOMHTMLTextAreaElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLTextAreaElement.h; sourceTree = ""; }; + 85F32AEB0AA63B8700FF3184 /* DOMHTMLTextAreaElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLTextAreaElement.mm; sourceTree = ""; }; + 85F56A780A98CE3700ADB60A /* DOMProcessingInstruction.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMProcessingInstruction.h; sourceTree = ""; }; + 85F56A790A98CE3700ADB60A /* DOMProcessingInstruction.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMProcessingInstruction.mm; sourceTree = ""; }; + 85FF31580AAFBFCB00374F38 /* DOMKeyboardEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMKeyboardEvent.h; sourceTree = ""; }; + 85FF31590AAFBFCB00374F38 /* DOMKeyboardEvent.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMKeyboardEvent.mm; sourceTree = ""; }; + 861C2EA313FB4FDD00062ABB /* DocumentLoadTiming.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentLoadTiming.cpp; sourceTree = ""; }; + 861C2EA513FB4FFF00062ABB /* ResourceLoadTiming.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceLoadTiming.cpp; sourceTree = ""; }; + 86243D0011BC31F700CC006A /* JSArrayBufferViewHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSArrayBufferViewHelper.h; sourceTree = ""; }; + 86512EDB154A2AEE00A90426 /* PerformanceResourceTiming.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PerformanceResourceTiming.cpp; sourceTree = ""; }; + 86512EDC154A2AEF00A90426 /* PerformanceResourceTiming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PerformanceResourceTiming.h; sourceTree = ""; }; + 86512EDD154A2AEF00A90426 /* PerformanceResourceTiming.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PerformanceResourceTiming.idl; sourceTree = ""; }; + 86BA766D166427A8005BE5D1 /* FrameLoadRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameLoadRequest.cpp; sourceTree = ""; }; + 86BE33FB15058CB200CE0FD8 /* PerformanceEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PerformanceEntry.h; sourceTree = ""; }; + 86BE33FC15058CB200CE0FD8 /* PerformanceEntry.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PerformanceEntry.idl; sourceTree = ""; }; + 86BE33FD15058CB200CE0FD8 /* PerformanceEntryList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PerformanceEntryList.cpp; sourceTree = ""; }; + 86BE33FE15058CB200CE0FD8 /* PerformanceEntryList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PerformanceEntryList.h; sourceTree = ""; }; + 86BE33FF15058CB200CE0FD8 /* PerformanceEntryList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PerformanceEntryList.idl; sourceTree = ""; }; + 86D982F6125C154000AD9E3D /* DocumentTiming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentTiming.h; sourceTree = ""; }; + 86FF885E15DE3B8200BD6B28 /* RenderTextTrackCue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTextTrackCue.cpp; sourceTree = ""; }; + 86FF885F15DE3B8200BD6B28 /* RenderTextTrackCue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderTextTrackCue.h; sourceTree = ""; }; + 890AE0E01256A07900F5968C /* DirectoryReaderBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DirectoryReaderBase.h; path = Modules/filesystem/DirectoryReaderBase.h; sourceTree = ""; }; + 892ABE5C16EEE2AA009F3587 /* JSNavigatorStorageQuota.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSNavigatorStorageQuota.cpp; path = ../../../../../../WebKitBuild/Release/DerivedSources/WebCore/JSNavigatorStorageQuota.cpp; sourceTree = ""; }; + 892ABE5D16EEE2AA009F3587 /* JSNavigatorStorageQuota.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSNavigatorStorageQuota.h; path = ../../../../../../WebKitBuild/Release/DerivedSources/WebCore/JSNavigatorStorageQuota.h; sourceTree = ""; }; + 892ABE5F16EEE2E5009F3587 /* JSDOMWindowQuota.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSDOMWindowQuota.h; path = ../../../../../../WebKitBuild/Release/DerivedSources/WebCore/JSDOMWindowQuota.h; sourceTree = ""; }; + 892ABE6016EEE2E5009F3587 /* JSStorageErrorCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSStorageErrorCallback.cpp; path = ../../../../../../WebKitBuild/Release/DerivedSources/WebCore/JSStorageErrorCallback.cpp; sourceTree = ""; }; + 892ABE6116EEE2E5009F3587 /* JSStorageErrorCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSStorageErrorCallback.h; path = ../../../../../../WebKitBuild/Release/DerivedSources/WebCore/JSStorageErrorCallback.h; sourceTree = ""; }; + 892ABE6216EEE2E5009F3587 /* JSStorageQuota.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSStorageQuota.cpp; path = ../../../../../../WebKitBuild/Release/DerivedSources/WebCore/JSStorageQuota.cpp; sourceTree = ""; }; + 892ABE6316EEE2E5009F3587 /* JSStorageQuota.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSStorageQuota.h; path = ../../../../../../WebKitBuild/Release/DerivedSources/WebCore/JSStorageQuota.h; sourceTree = ""; }; + 892ABE6416EEE2E5009F3587 /* JSStorageQuotaCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSStorageQuotaCallback.cpp; path = ../../../../../../WebKitBuild/Release/DerivedSources/WebCore/JSStorageQuotaCallback.cpp; sourceTree = ""; }; + 892ABE6516EEE2E5009F3587 /* JSStorageQuotaCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSStorageQuotaCallback.h; path = ../../../../../../WebKitBuild/Release/DerivedSources/WebCore/JSStorageQuotaCallback.h; sourceTree = ""; }; + 892ABE6616EEE2E5009F3587 /* JSStorageUsageCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSStorageUsageCallback.cpp; path = ../../../../../../WebKitBuild/Release/DerivedSources/WebCore/JSStorageUsageCallback.cpp; sourceTree = ""; }; + 892ABE6716EEE2E5009F3587 /* JSStorageUsageCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSStorageUsageCallback.h; path = ../../../../../../WebKitBuild/Release/DerivedSources/WebCore/JSStorageUsageCallback.h; sourceTree = ""; }; + 8931DE5A14C44C44000DC9D2 /* JSBlobCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSBlobCustom.cpp; sourceTree = ""; }; + 893C47A51238908B002B3D86 /* FileCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileCallback.h; path = Modules/filesystem/FileCallback.h; sourceTree = ""; }; + 893C47A61238908B002B3D86 /* FileWriterCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileWriterCallback.h; path = Modules/filesystem/FileWriterCallback.h; sourceTree = ""; }; + 893C47B61238A099002B3D86 /* JSFileCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFileCallback.h; sourceTree = ""; }; + 893C47B91238A0A9002B3D86 /* JSFileWriterCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFileWriterCallback.cpp; sourceTree = ""; }; + 893C47BA1238A0A9002B3D86 /* JSFileWriterCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFileWriterCallback.h; sourceTree = ""; }; + 893C47F11248BD39002B3D86 /* DirectoryEntrySync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DirectoryEntrySync.h; path = Modules/filesystem/DirectoryEntrySync.h; sourceTree = ""; }; + 893C47F21248BD39002B3D86 /* DirectoryReaderSync.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DirectoryReaderSync.cpp; path = Modules/filesystem/DirectoryReaderSync.cpp; sourceTree = ""; }; + 893C47F31248BD39002B3D86 /* DirectoryReaderSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DirectoryReaderSync.h; path = Modules/filesystem/DirectoryReaderSync.h; sourceTree = ""; }; + 893C47F51248BD39002B3D86 /* DOMFileSystemBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DOMFileSystemBase.h; path = Modules/filesystem/DOMFileSystemBase.h; sourceTree = ""; }; + 893C47F71248BD39002B3D86 /* DOMFileSystemSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DOMFileSystemSync.h; path = Modules/filesystem/DOMFileSystemSync.h; sourceTree = ""; }; + 893C47F91248BD39002B3D86 /* EntryArraySync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EntryArraySync.h; path = Modules/filesystem/EntryArraySync.h; sourceTree = ""; }; + 893C47FB1248BD39002B3D86 /* EntryBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EntryBase.h; path = Modules/filesystem/EntryBase.h; sourceTree = ""; }; + 893C47FD1248BD39002B3D86 /* EntrySync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EntrySync.h; path = Modules/filesystem/EntrySync.h; sourceTree = ""; }; + 893C47FF1248BD39002B3D86 /* FileEntrySync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileEntrySync.h; path = Modules/filesystem/FileEntrySync.h; sourceTree = ""; }; + 893C482712495472002B3D86 /* JSDirectoryEntrySync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDirectoryEntrySync.h; sourceTree = ""; }; + 893C482812495472002B3D86 /* JSDirectoryReaderSync.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDirectoryReaderSync.cpp; sourceTree = ""; }; + 893C482912495472002B3D86 /* JSDirectoryReaderSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDirectoryReaderSync.h; sourceTree = ""; }; + 893C482B12495472002B3D86 /* JSDOMFileSystemSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMFileSystemSync.h; sourceTree = ""; }; + 893C482D12495472002B3D86 /* JSEntryArraySync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEntryArraySync.h; sourceTree = ""; }; + 893C482F12495472002B3D86 /* JSEntrySync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEntrySync.h; sourceTree = ""; }; + 893C483112495472002B3D86 /* JSFileEntrySync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFileEntrySync.h; sourceTree = ""; }; + 8987853A122CA064003AABDA /* DirectoryEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DirectoryEntry.h; path = Modules/filesystem/DirectoryEntry.h; sourceTree = ""; }; + 8987853C122CA064003AABDA /* DirectoryReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DirectoryReader.h; path = Modules/filesystem/DirectoryReader.h; sourceTree = ""; }; + 8987853E122CA064003AABDA /* DOMFilePath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DOMFilePath.h; path = Modules/filesystem/DOMFilePath.h; sourceTree = ""; }; + 89878540122CA064003AABDA /* DOMFileSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DOMFileSystem.h; path = Modules/filesystem/DOMFileSystem.h; sourceTree = ""; }; + 89878541122CA064003AABDA /* EntriesCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EntriesCallback.h; path = Modules/filesystem/EntriesCallback.h; sourceTree = ""; }; + 89878543122CA064003AABDA /* Entry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Entry.h; path = Modules/filesystem/Entry.h; sourceTree = ""; }; + 89878545122CA064003AABDA /* EntryArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EntryArray.h; path = Modules/filesystem/EntryArray.h; sourceTree = ""; }; + 89878546122CA064003AABDA /* EntryCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EntryCallback.h; path = Modules/filesystem/EntryCallback.h; sourceTree = ""; }; + 89878547122CA064003AABDA /* ErrorCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ErrorCallback.h; path = Modules/filesystem/ErrorCallback.h; sourceTree = ""; }; + 89878549122CA064003AABDA /* FileEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileEntry.h; path = Modules/filesystem/FileEntry.h; sourceTree = ""; }; + 8987854A122CA064003AABDA /* FileSystemCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileSystemCallback.h; path = Modules/filesystem/FileSystemCallback.h; sourceTree = ""; }; + 8987854B122CA064003AABDA /* FileSystemCallbacks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileSystemCallbacks.cpp; path = Modules/filesystem/FileSystemCallbacks.cpp; sourceTree = ""; }; + 8987854C122CA064003AABDA /* FileSystemCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileSystemCallbacks.h; path = Modules/filesystem/FileSystemCallbacks.h; sourceTree = ""; }; + 8987854D122CA064003AABDA /* FileSystemFlags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileSystemFlags.h; path = Modules/filesystem/FileSystemFlags.h; sourceTree = ""; }; + 8987854F122CA064003AABDA /* LocalFileSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LocalFileSystem.h; path = Modules/filesystem/LocalFileSystem.h; sourceTree = ""; }; + 89878550122CA064003AABDA /* Metadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Metadata.h; path = Modules/filesystem/Metadata.h; sourceTree = ""; }; + 89878551122CA064003AABDA /* MetadataCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MetadataCallback.h; path = Modules/filesystem/MetadataCallback.h; sourceTree = ""; }; + 89878587122CA26A003AABDA /* JSDirectoryEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDirectoryEntry.h; sourceTree = ""; }; + 89878589122CA26A003AABDA /* JSDirectoryReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDirectoryReader.h; sourceTree = ""; }; + 8987858F122CA2A7003AABDA /* JSDOMFileSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMFileSystem.h; sourceTree = ""; }; + 89878591122CA2A7003AABDA /* JSEntriesCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEntriesCallback.h; sourceTree = ""; }; + 89878593122CA2A7003AABDA /* JSEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEntry.h; sourceTree = ""; }; + 89878595122CA2A7003AABDA /* JSEntryArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEntryArray.h; sourceTree = ""; }; + 89878597122CA2A7003AABDA /* JSEntryCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEntryCallback.h; sourceTree = ""; }; + 89878599122CA2A7003AABDA /* JSErrorCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSErrorCallback.h; sourceTree = ""; }; + 8987859B122CA2A7003AABDA /* JSFileEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFileEntry.h; sourceTree = ""; }; + 8987859C122CA2A7003AABDA /* JSFileSystemCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFileSystemCallback.cpp; sourceTree = ""; }; + 8987859D122CA2A7003AABDA /* JSFileSystemCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFileSystemCallback.h; sourceTree = ""; }; + 898785A1122CA2A7003AABDA /* JSMetadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMetadata.h; sourceTree = ""; }; + 898785A3122CA2A7003AABDA /* JSMetadataCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMetadataCallback.h; sourceTree = ""; }; + 898785EE122E1E87003AABDA /* JSFileException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFileException.cpp; sourceTree = ""; }; + 898785EF122E1E87003AABDA /* JSFileException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFileException.h; sourceTree = ""; }; + 898785F2122E1EAC003AABDA /* JSFileReaderSync.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFileReaderSync.cpp; sourceTree = ""; }; + 898785F3122E1EAC003AABDA /* JSFileReaderSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFileReaderSync.h; sourceTree = ""; }; + 89B5EA9F11E8003D00F2367E /* LineEnding.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LineEnding.cpp; sourceTree = ""; }; + 89B5EAA011E8003D00F2367E /* LineEnding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineEnding.h; sourceTree = ""; }; + 89C7C2E0155804F4007D5A7B /* FileSystemType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileSystemType.h; path = Modules/filesystem/FileSystemType.h; sourceTree = ""; }; + 89D08D9D12228451001241DF /* AsyncFileSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AsyncFileSystem.h; sourceTree = ""; }; + 89D08D9E12228451001241DF /* AsyncFileSystemCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AsyncFileSystemCallbacks.h; sourceTree = ""; }; + 89F60B0A157F686D0075E157 /* DOMWindowQuota.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DOMWindowQuota.h; path = Modules/quota/DOMWindowQuota.h; sourceTree = ""; }; + 89F60CD215809D760075E157 /* JSStorageInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStorageInfo.h; sourceTree = ""; }; + 89FD58D816EEDBD400E183F0 /* NavigatorStorageQuota.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NavigatorStorageQuota.h; path = Modules/quota/NavigatorStorageQuota.h; sourceTree = ""; }; + 8A12E35C11FA33280025836A /* DocumentLoadTiming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentLoadTiming.h; sourceTree = ""; }; + 8A19592F147EA16E00D1EA61 /* DOMWebKitNamedFlow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitNamedFlow.h; sourceTree = ""; }; + 8A195930147EA16E00D1EA61 /* DOMWebKitNamedFlow.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMWebKitNamedFlow.mm; sourceTree = ""; }; + 8A195931147EA16E00D1EA61 /* DOMWebKitNamedFlowInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitNamedFlowInternal.h; sourceTree = ""; }; + 8A309C9E123950BE00CB9204 /* NestingLevelIncrementer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NestingLevelIncrementer.h; path = parser/NestingLevelIncrementer.h; sourceTree = ""; }; + 8A413ADE1207BBA50082016E /* ScriptRunner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptRunner.h; sourceTree = ""; }; + 8A413ADF1207BBA50082016E /* ScriptRunner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptRunner.cpp; sourceTree = ""; }; + 8A7CC96A12076D73001D4588 /* PendingScript.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PendingScript.h; sourceTree = ""; }; + 8A7CC96F12076F8A001D4588 /* PendingScript.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PendingScript.cpp; sourceTree = ""; }; + 8A81BF8411DCFD9000DA2B98 /* ResourceLoadTiming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLoadTiming.h; sourceTree = ""; }; + 8A844D0211D3C18E0014065C /* Performance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Performance.h; sourceTree = ""; }; + 8A844D0311D3C18E0014065C /* Performance.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Performance.idl; sourceTree = ""; }; + 8A9A586E11E84C35008ACFD1 /* JSPerformanceNavigation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPerformanceNavigation.cpp; sourceTree = ""; }; + 8A9A586F11E84C36008ACFD1 /* JSPerformanceNavigation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPerformanceNavigation.h; sourceTree = ""; }; + 8A9A587311E84C81008ACFD1 /* JSPerformance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPerformance.h; sourceTree = ""; }; + 8A9A587711E84C98008ACFD1 /* JSPerformanceTiming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPerformanceTiming.h; sourceTree = ""; }; + 8AA61CFD144D595B00F37350 /* WebKitCSSRegionRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitCSSRegionRule.cpp; sourceTree = ""; }; + 8AA61CFE144D595B00F37350 /* WebKitCSSRegionRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitCSSRegionRule.h; sourceTree = ""; }; + 8AB4BC76126FDB7100DEB727 /* IgnoreDestructiveWriteCountIncrementer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IgnoreDestructiveWriteCountIncrementer.h; sourceTree = ""; }; + 8ACC24CD148E24B200EFCC0D /* JSWebKitCSSRegionRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitCSSRegionRule.cpp; sourceTree = ""; }; + 8ACC24CE148E24B200EFCC0D /* JSWebKitCSSRegionRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebKitCSSRegionRule.h; sourceTree = ""; }; + 8ACC2817148E47E700EFCC0D /* DOMWebKitCSSRegionRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSRegionRule.h; sourceTree = ""; }; + 8ACC2818148E47E700EFCC0D /* DOMWebKitCSSRegionRule.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMWebKitCSSRegionRule.mm; sourceTree = ""; }; + 8ACC2819148E47E700EFCC0D /* DOMWebKitCSSRegionRuleInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSRegionRuleInternal.h; sourceTree = ""; }; + 8AD0A55614C87425000D83C5 /* WebKitCSSRegionRule.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebKitCSSRegionRule.idl; sourceTree = ""; }; + 8AF4E55211DC5A36000ED3DE /* PerformanceNavigation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PerformanceNavigation.cpp; sourceTree = ""; }; + 8AF4E55311DC5A36000ED3DE /* PerformanceNavigation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PerformanceNavigation.h; sourceTree = ""; }; + 8AF4E55411DC5A36000ED3DE /* PerformanceNavigation.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PerformanceNavigation.idl; sourceTree = ""; }; + 8AF4E55911DC5A63000ED3DE /* PerformanceTiming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PerformanceTiming.h; sourceTree = ""; }; + 8AF4E55A11DC5A63000ED3DE /* PerformanceTiming.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PerformanceTiming.idl; sourceTree = ""; }; + 8C0E3349138A92C7008DA94F /* LevelDBTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LevelDBTransaction.h; sourceTree = ""; }; + 8C0E334B138A92C7008DA94F /* LevelDBWriteBatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LevelDBWriteBatch.h; sourceTree = ""; }; + 8C6EA61711EF7E0400FD8EE3 /* RuntimeEnabledFeatures.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RuntimeEnabledFeatures.cpp; path = generic/RuntimeEnabledFeatures.cpp; sourceTree = ""; }; + 8C6EA61811EF7E0400FD8EE3 /* RuntimeEnabledFeatures.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RuntimeEnabledFeatures.h; path = generic/RuntimeEnabledFeatures.h; sourceTree = ""; }; + 8CADF2A3135C7B36009EF43F /* LevelDBComparator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LevelDBComparator.h; sourceTree = ""; }; + 8CADF2A5135C7B36009EF43F /* LevelDBDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LevelDBDatabase.h; sourceTree = ""; }; + 8CADF2A7135C7B36009EF43F /* LevelDBIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LevelDBIterator.h; sourceTree = ""; }; + 8CADF2A8135C7B36009EF43F /* LevelDBSlice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LevelDBSlice.h; sourceTree = ""; }; + 8F6756191288B17B0047ACA3 /* EventQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventQueue.h; sourceTree = ""; }; + 8F934D831189F1EE00508D5D /* JSMainThreadExecState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMainThreadExecState.h; sourceTree = ""; }; + 8F934D841189F1EE00508D5D /* JSMainThreadExecState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMainThreadExecState.cpp; sourceTree = ""; }; + 9001773D12E0347800648462 /* OESStandardDerivatives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OESStandardDerivatives.cpp; path = canvas/OESStandardDerivatives.cpp; sourceTree = ""; }; + 9001773E12E0347800648462 /* OESStandardDerivatives.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OESStandardDerivatives.h; path = canvas/OESStandardDerivatives.h; sourceTree = ""; }; + 9001773F12E0347800648462 /* OESStandardDerivatives.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = OESStandardDerivatives.idl; path = canvas/OESStandardDerivatives.idl; sourceTree = ""; }; + 9001787E12E0370700648462 /* JSOESStandardDerivatives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSOESStandardDerivatives.cpp; sourceTree = ""; }; + 9001787F12E0370700648462 /* JSOESStandardDerivatives.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSOESStandardDerivatives.h; sourceTree = ""; }; + 91089D2F14C335CD005AFC49 /* JSUint8ClampedArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSUint8ClampedArray.cpp; sourceTree = ""; }; + 91089D3014C335CD005AFC49 /* JSUint8ClampedArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSUint8ClampedArray.h; sourceTree = ""; }; + 91A3905814C0F4B900F67901 /* Uint8ClampedArray.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = Uint8ClampedArray.idl; path = canvas/Uint8ClampedArray.idl; sourceTree = ""; }; + 9302B0BC0D79F82900C7EE83 /* PageGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageGroup.cpp; sourceTree = ""; }; + 9302B0BE0D79F82C00C7EE83 /* PageGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageGroup.h; sourceTree = ""; }; + 9305B24C098F1B6B00C28855 /* Timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Timer.h; sourceTree = ""; }; + 9307059009E0C75800B17FE4 /* CSSPrimitiveValue.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CSSPrimitiveValue.idl; sourceTree = ""; }; + 930705C709E0C95F00B17FE4 /* Counter.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Counter.idl; sourceTree = ""; }; + 930705D709E0C9B700B17FE4 /* JSCounter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCounter.cpp; sourceTree = ""; }; + 930705D909E0C9BF00B17FE4 /* JSCounter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCounter.h; sourceTree = ""; }; + 930705E809E0C9F000B17FE4 /* JSCSSPrimitiveValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSPrimitiveValue.cpp; sourceTree = ""; }; + 930705EA09E0C9F600B17FE4 /* JSCSSPrimitiveValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCSSPrimitiveValue.h; sourceTree = ""; }; + 9307061309E0CA8200B17FE4 /* DerivedSources.make */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; path = DerivedSources.make; sourceTree = ""; usesTabs = 1; }; + 9307F1D50AF2D59000DBA31A /* HitTestResult.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HitTestResult.cpp; sourceTree = ""; }; + 9307F1D60AF2D59000DBA31A /* HitTestResult.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HitTestResult.h; sourceTree = ""; }; + 930908900AF7EDE40081DF01 /* HitTestRequest.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HitTestRequest.h; sourceTree = ""; }; + 930FC6891072B9280045293E /* TextRenderingMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextRenderingMode.h; sourceTree = ""; }; + 93153BCC1417FBBF00FCF5BE /* deleteButton@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "deleteButton@2x.png"; sourceTree = ""; }; + 93153BCE1417FBDB00FCF5BE /* deleteButtonPressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "deleteButtonPressed@2x.png"; sourceTree = ""; }; + 93153BD914181F7A00FCF5BE /* missingImage@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "missingImage@2x.png"; sourceTree = ""; }; + 93153BDB141959BB00FCF5BE /* textAreaResizeCorner.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = textAreaResizeCorner.png; sourceTree = ""; }; + 93153BDD141959F400FCF5BE /* deleteButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = deleteButton.png; sourceTree = ""; }; + 93153BDF14195A2800FCF5BE /* deleteButtonPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = deleteButtonPressed.png; sourceTree = ""; }; + 93153BE114195A5700FCF5BE /* missingImage.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = missingImage.png; sourceTree = ""; }; + 93153BE314195B2900FCF5BE /* inputSpeech.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = inputSpeech.png; sourceTree = ""; }; + 931BCC601124DFCB00BE70DD /* MediaCanStartListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaCanStartListener.h; sourceTree = ""; }; + 931CBD06161A44E900E4C874 /* ScrollingStateNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingStateNode.cpp; sourceTree = ""; }; + 931CBD07161A44E900E4C874 /* ScrollingStateNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingStateNode.h; sourceTree = ""; }; + 931CBD08161A44E900E4C874 /* ScrollingStateScrollingNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingStateScrollingNode.cpp; sourceTree = ""; }; + 931CBD09161A44E900E4C874 /* ScrollingStateScrollingNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingStateScrollingNode.h; sourceTree = ""; }; + 931CBD0A161A44E900E4C874 /* ScrollingStateTree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingStateTree.cpp; sourceTree = ""; }; + 931CBD0B161A44E900E4C874 /* ScrollingStateTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingStateTree.h; sourceTree = ""; }; + 931CBD12161A44F800E4C874 /* ScrollingStateNodeMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingStateNodeMac.mm; sourceTree = ""; }; + 931D72F515FE695300C4C07E /* LayoutMilestones.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayoutMilestones.h; sourceTree = ""; }; + 9327A94109968D1A0068A546 /* HTMLOptionsCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLOptionsCollection.cpp; sourceTree = ""; }; + 932871BF0B20DEB70049035A /* PlatformMenuDescription.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PlatformMenuDescription.h; sourceTree = ""; }; + 932E16080AF578340025F408 /* FrameLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameLoader.cpp; sourceTree = ""; }; + 93309D87099E64910056E581 /* AppendNodeCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppendNodeCommand.cpp; sourceTree = ""; }; + 93309D88099E64910056E581 /* AppendNodeCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppendNodeCommand.h; sourceTree = ""; }; + 93309D89099E64910056E581 /* ApplyStyleCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = ApplyStyleCommand.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; + 93309D8A099E64910056E581 /* ApplyStyleCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplyStyleCommand.h; sourceTree = ""; }; + 93309D8B099E64910056E581 /* BreakBlockquoteCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BreakBlockquoteCommand.cpp; sourceTree = ""; }; + 93309D8C099E64910056E581 /* BreakBlockquoteCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BreakBlockquoteCommand.h; sourceTree = ""; }; + 93309D8D099E64910056E581 /* CompositeEditCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CompositeEditCommand.cpp; sourceTree = ""; }; + 93309D8E099E64910056E581 /* CompositeEditCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CompositeEditCommand.h; sourceTree = ""; }; + 93309D8F099E64910056E581 /* DeleteFromTextNodeCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeleteFromTextNodeCommand.cpp; sourceTree = ""; }; + 93309D90099E64910056E581 /* DeleteFromTextNodeCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeleteFromTextNodeCommand.h; sourceTree = ""; }; + 93309D91099E64910056E581 /* DeleteSelectionCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeleteSelectionCommand.cpp; sourceTree = ""; }; + 93309D92099E64910056E581 /* DeleteSelectionCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeleteSelectionCommand.h; sourceTree = ""; }; + 93309D93099E64910056E581 /* EditAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditAction.h; sourceTree = ""; }; + 93309D94099E64910056E581 /* EditCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EditCommand.cpp; sourceTree = ""; }; + 93309D95099E64910056E581 /* EditCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditCommand.h; sourceTree = ""; }; + 93309D96099E64910056E581 /* HTMLInterchange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLInterchange.cpp; sourceTree = ""; }; + 93309D97099E64910056E581 /* HTMLInterchange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLInterchange.h; sourceTree = ""; }; + 93309D98099E64910056E581 /* htmlediting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = htmlediting.cpp; sourceTree = ""; }; + 93309D99099E64910056E581 /* htmlediting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = htmlediting.h; sourceTree = ""; }; + 93309D9A099E64910056E581 /* InsertIntoTextNodeCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InsertIntoTextNodeCommand.cpp; sourceTree = ""; }; + 93309D9B099E64910056E581 /* InsertIntoTextNodeCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InsertIntoTextNodeCommand.h; sourceTree = ""; }; + 93309D9C099E64910056E581 /* InsertLineBreakCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InsertLineBreakCommand.cpp; sourceTree = ""; }; + 93309D9D099E64910056E581 /* InsertLineBreakCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InsertLineBreakCommand.h; sourceTree = ""; }; + 93309D9E099E64910056E581 /* InsertNodeBeforeCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InsertNodeBeforeCommand.cpp; sourceTree = ""; }; + 93309D9F099E64910056E581 /* InsertNodeBeforeCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InsertNodeBeforeCommand.h; sourceTree = ""; }; + 93309DA0099E64910056E581 /* InsertParagraphSeparatorCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InsertParagraphSeparatorCommand.cpp; sourceTree = ""; }; + 93309DA1099E64910056E581 /* InsertParagraphSeparatorCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InsertParagraphSeparatorCommand.h; sourceTree = ""; }; + 93309DA2099E64910056E581 /* InsertTextCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InsertTextCommand.cpp; sourceTree = ""; }; + 93309DA3099E64910056E581 /* InsertTextCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InsertTextCommand.h; sourceTree = ""; }; + 93309DA8099E64910056E581 /* markup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = markup.cpp; sourceTree = ""; }; + 93309DA9099E64910056E581 /* markup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = markup.h; sourceTree = ""; }; + 93309DAA099E64910056E581 /* MergeIdenticalElementsCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MergeIdenticalElementsCommand.cpp; sourceTree = ""; }; + 93309DAB099E64910056E581 /* MergeIdenticalElementsCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MergeIdenticalElementsCommand.h; sourceTree = ""; }; + 93309DAC099E64910056E581 /* MoveSelectionCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MoveSelectionCommand.cpp; sourceTree = ""; }; + 93309DAD099E64910056E581 /* MoveSelectionCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MoveSelectionCommand.h; sourceTree = ""; }; + 93309DB1099E64910056E581 /* RemoveCSSPropertyCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoveCSSPropertyCommand.cpp; sourceTree = ""; }; + 93309DB2099E64910056E581 /* RemoveCSSPropertyCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoveCSSPropertyCommand.h; sourceTree = ""; }; + 93309DB5099E64910056E581 /* RemoveNodeCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoveNodeCommand.cpp; sourceTree = ""; }; + 93309DB6099E64910056E581 /* RemoveNodeCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoveNodeCommand.h; sourceTree = ""; }; + 93309DB7099E64910056E581 /* RemoveNodePreservingChildrenCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoveNodePreservingChildrenCommand.cpp; sourceTree = ""; }; + 93309DB8099E64910056E581 /* RemoveNodePreservingChildrenCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoveNodePreservingChildrenCommand.h; sourceTree = ""; }; + 93309DBA099E64910056E581 /* ReplaceSelectionCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReplaceSelectionCommand.cpp; sourceTree = ""; }; + 93309DBB099E64910056E581 /* ReplaceSelectionCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReplaceSelectionCommand.h; sourceTree = ""; }; + 93309DBE099E64910056E581 /* FrameSelection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameSelection.cpp; sourceTree = ""; }; + 93309DBF099E64910056E581 /* FrameSelection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameSelection.h; sourceTree = ""; }; + 93309DC0099E64910056E581 /* SetNodeAttributeCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SetNodeAttributeCommand.cpp; sourceTree = ""; }; + 93309DC1099E64910056E581 /* SetNodeAttributeCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SetNodeAttributeCommand.h; sourceTree = ""; }; + 93309DC2099E64910056E581 /* SplitElementCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SplitElementCommand.cpp; sourceTree = ""; }; + 93309DC3099E64910056E581 /* SplitElementCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SplitElementCommand.h; sourceTree = ""; }; + 93309DC4099E64910056E581 /* SplitTextNodeCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SplitTextNodeCommand.cpp; sourceTree = ""; }; + 93309DC5099E64910056E581 /* SplitTextNodeCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SplitTextNodeCommand.h; sourceTree = ""; }; + 93309DC6099E64910056E581 /* SplitTextNodeContainingElementCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SplitTextNodeContainingElementCommand.cpp; sourceTree = ""; }; + 93309DC7099E64910056E581 /* SplitTextNodeContainingElementCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SplitTextNodeContainingElementCommand.h; sourceTree = ""; }; + 93309DC8099E64910056E581 /* TextAffinity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextAffinity.h; sourceTree = ""; }; + 93309DC9099E64910056E581 /* TextGranularity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextGranularity.h; sourceTree = ""; }; + 93309DCA099E64910056E581 /* TypingCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TypingCommand.cpp; sourceTree = ""; }; + 93309DCB099E64910056E581 /* TypingCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TypingCommand.h; sourceTree = ""; }; + 93309DCC099E64910056E581 /* TextIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextIterator.cpp; sourceTree = ""; }; + 93309DCD099E64910056E581 /* TextIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextIterator.h; sourceTree = ""; }; + 93309DCE099E64910056E581 /* VisibleUnits.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VisibleUnits.cpp; sourceTree = ""; }; + 93309DCF099E64910056E581 /* VisibleUnits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VisibleUnits.h; sourceTree = ""; }; + 93309DD0099E64910056E581 /* VisiblePosition.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VisiblePosition.cpp; sourceTree = ""; }; + 93309DD1099E64910056E581 /* VisiblePosition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VisiblePosition.h; sourceTree = ""; }; + 93309DD4099E64910056E581 /* WrapContentsInDummySpanCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WrapContentsInDummySpanCommand.cpp; sourceTree = ""; }; + 93309DD5099E64910056E581 /* WrapContentsInDummySpanCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WrapContentsInDummySpanCommand.h; sourceTree = ""; }; + 93309E9F099EB78C0056E581 /* SharedTimerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SharedTimerMac.mm; sourceTree = ""; }; + 93309EA0099EB78C0056E581 /* SharedTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SharedTimer.h; sourceTree = ""; }; + 93309EA1099EB78C0056E581 /* Timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Timer.cpp; sourceTree = ""; }; + 9332AB3D16515D7700D827EC /* GraphicsContext3DNEON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsContext3DNEON.h; sourceTree = ""; }; + 9332AB871653A97900D827EC /* FEBlendNEON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FEBlendNEON.h; sourceTree = ""; }; + 9332AB881653A97900D827EC /* FECompositeArithmeticNEON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FECompositeArithmeticNEON.h; sourceTree = ""; }; + 9332AB891653A97900D827EC /* FEGaussianBlurNEON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FEGaussianBlurNEON.h; sourceTree = ""; }; + 9332AB8A1653A97900D827EC /* FELightingNEON.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FELightingNEON.cpp; sourceTree = ""; }; + 9332AB8B1653A97900D827EC /* FELightingNEON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FELightingNEON.h; sourceTree = ""; }; + 9332AB8C1653A97900D827EC /* NEONHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NEONHelpers.h; sourceTree = ""; }; + 93354A3B0B24F8C9003F6DEA /* UIEventWithKeyState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UIEventWithKeyState.cpp; sourceTree = ""; }; + 933A142B0B7D188600A53FFD /* TextEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextEvent.cpp; sourceTree = ""; }; + 933A142C0B7D188600A53FFD /* TextEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TextEvent.idl; sourceTree = ""; }; + 933A142D0B7D188600A53FFD /* TextEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextEvent.h; sourceTree = ""; }; + 933A14750B7D1BAF00A53FFD /* DOMTextEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMTextEvent.h; sourceTree = ""; }; + 933A14A90B7D1D0900A53FFD /* DOMTextEvent.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMTextEvent.mm; sourceTree = ""; }; + 933A14B60B7D1D5200A53FFD /* JSTextEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextEvent.cpp; sourceTree = ""; }; + 933A14B70B7D1D5200A53FFD /* JSTextEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTextEvent.h; sourceTree = ""; }; + 9343CB7F12F25E510033C5EE /* TextCodecUTF8.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextCodecUTF8.cpp; sourceTree = ""; }; + 9343CB8012F25E510033C5EE /* TextCodecUTF8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextCodecUTF8.h; sourceTree = ""; }; + 93442C9D0D2B335C00338FF9 /* HTMLTableRowsCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLTableRowsCollection.h; sourceTree = ""; }; + 93442C9F0D2B336000338FF9 /* HTMLTableRowsCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLTableRowsCollection.cpp; sourceTree = ""; }; + 934907E3125BBBC8007F23A0 /* GraphicsContextCG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsContextCG.h; sourceTree = ""; }; + 934CC0DF0ED39D6F00A658F2 /* ScriptValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptValue.cpp; sourceTree = ""; }; + 934CC0E00ED39D6F00A658F2 /* ScriptValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptValue.h; sourceTree = ""; }; + 934CC1090EDB223900A658F2 /* ScriptSourceCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptSourceCode.h; sourceTree = ""; }; + 934D9BA40B8C116B007B42A9 /* WebCoreNSStringExtras.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreNSStringExtras.mm; sourceTree = ""; }; + 934D9BA60B8C1175007B42A9 /* WebCoreNSStringExtras.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebCoreNSStringExtras.h; sourceTree = ""; }; + 934F71370D5A6EFF00018D69 /* AuthenticationChallengeBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AuthenticationChallengeBase.cpp; sourceTree = ""; }; + 934F71390D5A6F1000018D69 /* AuthenticationChallengeBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AuthenticationChallengeBase.h; sourceTree = ""; }; + 934F713B0D5A6F1900018D69 /* ResourceErrorBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ResourceErrorBase.h; sourceTree = ""; }; + 934F713D0D5A6F2800018D69 /* ResourceErrorBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceErrorBase.cpp; sourceTree = ""; }; + 934FE9E40B5CA539003E4A73 /* FileChooser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileChooser.cpp; sourceTree = ""; }; + 93500F3113FDE3BE0099EC24 /* NSScrollerImpDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSScrollerImpDetails.h; sourceTree = ""; }; + 935207BD09BD410A00F2038D /* LocalizedStrings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocalizedStrings.h; sourceTree = ""; }; + 9352084409BD43B900F2038D /* Language.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Language.mm; sourceTree = ""; }; + 9353676A09AED88B00D35CD6 /* ScrollViewMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollViewMac.mm; sourceTree = ""; }; + 935C476209AC4CE600A6AAB4 /* MouseEventWithHitTestResults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MouseEventWithHitTestResults.h; sourceTree = ""; }; + 935C476609AC4D4300A6AAB4 /* PlatformKeyboardEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformKeyboardEvent.h; sourceTree = ""; }; + 935C476709AC4D4300A6AAB4 /* PlatformMouseEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformMouseEvent.h; sourceTree = ""; }; + 935C476A09AC4D4F00A6AAB4 /* PlatformWheelEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformWheelEvent.h; sourceTree = ""; }; + 935C476C09AC4D6300A6AAB4 /* FoundationExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FoundationExtras.h; sourceTree = ""; }; + 935C476E09AC4D7300A6AAB4 /* KeyEventMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = KeyEventMac.mm; sourceTree = ""; }; + 935C477409AC4D8D00A6AAB4 /* GapRects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GapRects.h; sourceTree = ""; }; + 935F45400F7C3B5F00D7C1FB /* JSLazyEventListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSLazyEventListener.cpp; sourceTree = ""; }; + 935F45410F7C3B5F00D7C1FB /* JSLazyEventListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSLazyEventListener.h; sourceTree = ""; }; + 935FBC4409BA00B900E230B1 /* EventListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventListener.h; sourceTree = ""; }; + 935FBCF109BA143B00E230B1 /* ExceptionCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExceptionCode.h; sourceTree = ""; }; + 9362640A0DE1137D009D5A00 /* CSSReflectionDirection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSReflectionDirection.h; sourceTree = ""; }; + 936DD03A09CEAC270056AE8C /* Range.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Range.idl; sourceTree = ""; }; + 9370918C1416D86B00477333 /* textAreaResizeCorner@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "textAreaResizeCorner@2x.png"; sourceTree = ""; }; + 9377AB9F15DEFEEF0031FD04 /* Pagination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Pagination.h; sourceTree = ""; }; + 93799EF60BF2743600D0F230 /* RenderWordBreak.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderWordBreak.cpp; sourceTree = ""; }; + 93799EF70BF2743600D0F230 /* RenderWordBreak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderWordBreak.h; sourceTree = ""; }; + 9380F47109A11AB4001FDB34 /* Widget.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Widget.cpp; sourceTree = ""; }; + 9380F47209A11AB4001FDB34 /* Widget.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Widget.h; sourceTree = ""; }; + 9380F47709A11ACC001FDB34 /* WidgetMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WidgetMac.mm; sourceTree = ""; }; + 9382AAB10D8C386100F357A6 /* NodeWithIndex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeWithIndex.h; sourceTree = ""; }; + 9382DF5710A8D5C900925652 /* ColorSpace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColorSpace.h; sourceTree = ""; }; + 938E65F009F09840008A48EC /* JSHTMLElementWrapperFactory.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLElementWrapperFactory.h; sourceTree = ""; }; + 938E65F609F0985D008A48EC /* JSHTMLElementWrapperFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLElementWrapperFactory.cpp; sourceTree = ""; }; + 938E662509F09956008A48EC /* HTMLCanvasElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLCanvasElement.idl; sourceTree = ""; }; + 938E665F09F09B81008A48EC /* JSHTMLCanvasElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLCanvasElement.cpp; sourceTree = ""; }; + 938E666109F09B87008A48EC /* JSHTMLCanvasElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLCanvasElement.h; sourceTree = ""; }; + 9391A990162746CB00297330 /* ScrollingCoordinatorMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingCoordinatorMac.h; sourceTree = ""; }; + 9391A99A1629D6FF00297330 /* ScrollingTreeScrollingNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingTreeScrollingNode.cpp; sourceTree = ""; }; + 9391A99B1629D70000297330 /* ScrollingTreeScrollingNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingTreeScrollingNode.h; sourceTree = ""; }; + 9392262C1032107B006E7D5D /* JSHTMLCanvasElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLCanvasElementCustom.cpp; sourceTree = ""; }; + 9392262E10321084006E7D5D /* JSCSSRuleListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSRuleListCustom.cpp; sourceTree = ""; }; + 9392F1410AD185F400691BD4 /* RenderCounter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderCounter.h; sourceTree = ""; }; + 9392F1430AD185FE00691BD4 /* RenderCounter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderCounter.cpp; sourceTree = ""; }; + 9392F14B0AD1861B00691BD4 /* CounterNode.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CounterNode.h; sourceTree = ""; }; + 9392F14F0AD1862300691BD4 /* CounterNode.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CounterNode.cpp; sourceTree = ""; }; + 9393E5FD151A99F200066F06 /* CSSImageSetValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSImageSetValue.cpp; sourceTree = ""; }; + 9393E5FE151A99F200066F06 /* CSSImageSetValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSImageSetValue.h; sourceTree = ""; }; + 9393E602151A9A1800066F06 /* StyleCachedImageSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleCachedImageSet.cpp; path = style/StyleCachedImageSet.cpp; sourceTree = ""; }; + 9393E603151A9A1800066F06 /* StyleCachedImageSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleCachedImageSet.h; path = style/StyleCachedImageSet.h; sourceTree = ""; }; + 93955A4103D72932008635CE /* RenderTreeAsText.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = RenderTreeAsText.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 93955A4203D72932008635CE /* RenderTreeAsText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTreeAsText.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 939885C108B7E3D100E707C4 /* EventNames.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventNames.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 939885C208B7E3D100E707C4 /* EventNames.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = EventNames.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 939B02EC0EA2DBC400C54570 /* WidthIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WidthIterator.cpp; sourceTree = ""; }; + 939B02ED0EA2DBC400C54570 /* WidthIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WidthIterator.h; sourceTree = ""; }; + 93A38B4A0D0E5808006872C2 /* EditorCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EditorCommand.cpp; sourceTree = ""; }; + 93B2D8150F9920D2006AE6B2 /* SuddenTermination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SuddenTermination.h; sourceTree = ""; }; + 93B2D8170F9920EE006AE6B2 /* SuddenTermination.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SuddenTermination.mm; sourceTree = ""; }; + 93B6A0E50B0BCA5C00F5027A /* ContextMenu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ContextMenu.h; sourceTree = ""; }; + 93B6A0E90B0BCA8400F5027A /* ContextMenuMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = ContextMenuMac.mm; sourceTree = ""; }; + 93B70D4709EB0C7C009D8468 /* JSDOMBinding.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMBinding.cpp; sourceTree = ""; }; + 93B70D4809EB0C7C009D8468 /* JSDOMBinding.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDOMBinding.h; sourceTree = ""; }; + 93B70D4D09EB0C7C009D8468 /* JSEventListener.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSEventListener.cpp; sourceTree = ""; }; + 93B70D4E09EB0C7C009D8468 /* JSEventListener.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSEventListener.h; sourceTree = ""; }; + 93B70D4F09EB0C7C009D8468 /* JSPluginElementFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSPluginElementFunctions.cpp; sourceTree = ""; }; + 93B70D5009EB0C7C009D8468 /* JSPluginElementFunctions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSPluginElementFunctions.h; sourceTree = ""; }; + 93B70D5309EB0C7C009D8468 /* ScriptController.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptController.cpp; sourceTree = ""; }; + 93B70D5409EB0C7C009D8468 /* ScriptController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ScriptController.h; sourceTree = ""; }; + 93B77A370ADD792500EA4B81 /* FrameLoaderTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameLoaderTypes.h; sourceTree = ""; }; + 93BA59B10F2AA5FE008E8E99 /* JSCDATASectionCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCDATASectionCustom.cpp; sourceTree = ""; }; + 93C09A520B064DB3005ABD4D /* EventHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventHandler.h; sourceTree = ""; }; + 93C09A7E0B064EEF005ABD4D /* EventHandlerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = EventHandlerMac.mm; sourceTree = ""; }; + 93C09A800B064F00005ABD4D /* EventHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventHandler.cpp; sourceTree = ""; }; + 93C09C850B0657AA005ABD4D /* ScrollTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollTypes.h; sourceTree = ""; }; + 93C38BFC164473C700091EB2 /* ScrollingStateFixedNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingStateFixedNode.cpp; sourceTree = ""; }; + 93C38BFD164473C700091EB2 /* ScrollingStateFixedNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingStateFixedNode.h; sourceTree = ""; }; + 93C38C01164473DD00091EB2 /* ScrollingTreeFixedNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingTreeFixedNode.h; sourceTree = ""; }; + 93C38C02164473DD00091EB2 /* ScrollingTreeFixedNode.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingTreeFixedNode.mm; sourceTree = ""; }; + 93C441FF0F813AE100C1A634 /* CollectionType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionType.h; sourceTree = ""; }; + 93C4A4131629DF5A00C3EB6E /* ScrollingTreeScrollingNodeMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingTreeScrollingNodeMac.h; sourceTree = ""; }; + 93C4A4141629DF5A00C3EB6E /* ScrollingTreeScrollingNodeMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollingTreeScrollingNodeMac.mm; sourceTree = ""; }; + 93C4F6E91108F9A50099D0DB /* AccessibilityScrollbar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityScrollbar.h; sourceTree = ""; }; + 93C841F709CE855C00DFF5E5 /* DOMImplementationFront.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMImplementationFront.h; sourceTree = ""; }; + 93C841FE09CE858300DFF5E5 /* DOMImplementationFront.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMImplementationFront.cpp; sourceTree = ""; }; + 93CA4C9909DF93FA00DF8677 /* html.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = html.css; sourceTree = ""; }; + 93CA4C9A09DF93FA00DF8677 /* make-css-file-arrays.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = "make-css-file-arrays.pl"; sourceTree = ""; }; + 93CA4C9B09DF93FA00DF8677 /* makeprop.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = makeprop.pl; sourceTree = ""; }; + 93CA4C9C09DF93FA00DF8677 /* maketokenizer */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = maketokenizer; sourceTree = ""; }; + 93CA4C9D09DF93FA00DF8677 /* makevalues.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = makevalues.pl; sourceTree = ""; }; + 93CA4C9F09DF93FA00DF8677 /* quirks.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = quirks.css; sourceTree = ""; }; + 93CA4CA209DF93FA00DF8677 /* svg.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = svg.css; sourceTree = ""; }; + 93CCF0260AF6C52900018E89 /* NavigationAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NavigationAction.h; sourceTree = ""; }; + 93CCF05F0AF6CA7600018E89 /* NavigationAction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NavigationAction.cpp; sourceTree = ""; }; + 93D3C1580F97A9D70053C013 /* DOMHTMLCanvasElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLCanvasElement.h; sourceTree = ""; }; + 93D9D53B0DA27E180077216C /* RangeBoundaryPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RangeBoundaryPoint.h; sourceTree = ""; }; + 93E227DB0AF589AD00D48324 /* DocumentLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentLoader.cpp; sourceTree = ""; }; + 93E227DD0AF589AD00D48324 /* NetscapePlugInStreamLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetscapePlugInStreamLoader.cpp; sourceTree = ""; }; + 93E227DE0AF589AD00D48324 /* ResourceLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceLoader.cpp; sourceTree = ""; }; + 93E227DF0AF589AD00D48324 /* SubresourceLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SubresourceLoader.cpp; sourceTree = ""; }; + 93E241FE0B2B4E4000C732A1 /* HTMLFrameOwnerElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLFrameOwnerElement.h; sourceTree = ""; }; + 93E2425E0B2B509500C732A1 /* HTMLFrameOwnerElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLFrameOwnerElement.cpp; sourceTree = ""; }; + 93E2A304123E9DC0009FE12A /* HTMLParserIdioms.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLParserIdioms.cpp; path = parser/HTMLParserIdioms.cpp; sourceTree = ""; }; + 93E2A305123E9DC0009FE12A /* HTMLParserIdioms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLParserIdioms.h; path = parser/HTMLParserIdioms.h; sourceTree = ""; }; + 93EB169409F880B00091F8FF /* WebCoreSystemInterface.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreSystemInterface.mm; sourceTree = ""; }; + 93EB169609F880C00091F8FF /* WebCoreSystemInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreSystemInterface.h; sourceTree = ""; }; + 93EB355E09E37FD600F43799 /* MouseEventWithHitTestResults.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MouseEventWithHitTestResults.cpp; sourceTree = ""; }; + 93EEC1E509C2877700C515D1 /* Attr.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Attr.idl; sourceTree = ""; }; + 93EEC1E609C2877700C515D1 /* CharacterData.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CharacterData.idl; sourceTree = ""; }; + 93EEC1E809C2877700C515D1 /* DocumentType.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DocumentType.idl; sourceTree = ""; }; + 93EEC1E909C2877700C515D1 /* DOMImplementation.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMImplementation.idl; sourceTree = ""; }; + 93EEC1EA09C2877700C515D1 /* Element.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Element.idl; sourceTree = ""; }; + 93EEC1EB09C2877700C515D1 /* Entity.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Entity.idl; sourceTree = ""; }; + 93EEC1F309C2877700C515D1 /* MutationEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MutationEvent.idl; sourceTree = ""; }; + 93EEC1F409C2877700C515D1 /* Notation.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Notation.idl; sourceTree = ""; }; + 93EEC1F509C2877700C515D1 /* ProcessingInstruction.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ProcessingInstruction.idl; sourceTree = ""; }; + 93EEC1F609C2877700C515D1 /* Text.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Text.idl; sourceTree = ""; }; + 93EEC1F709C2877700C515D1 /* WheelEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WheelEvent.idl; sourceTree = ""; }; + 93F19B1908245E59001E9ABC /* Info.plist */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 93F19B1A08245E5A001E9ABC /* WebCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = WebCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 93F1D31A0558CC5C00821BC0 /* libicucore.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicucore.dylib; path = /usr/lib/libicucore.dylib; sourceTree = ""; }; + 93F1D5B712D532C400832BEC /* WebGLLoseContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLLoseContext.cpp; path = canvas/WebGLLoseContext.cpp; sourceTree = ""; }; + 93F1D5B812D532C400832BEC /* WebGLLoseContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLLoseContext.h; path = canvas/WebGLLoseContext.h; sourceTree = ""; }; + 93F1D5B912D532C400832BEC /* WebGLLoseContext.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLLoseContext.idl; path = canvas/WebGLLoseContext.idl; sourceTree = ""; }; + 93F1D5BE12D5335600832BEC /* JSWebGLLoseContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLLoseContext.cpp; sourceTree = ""; }; + 93F1D5BF12D5335600832BEC /* JSWebGLLoseContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLLoseContext.h; sourceTree = ""; }; + 93F6F1EA127F70B10055CB06 /* WebGLContextEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLContextEvent.cpp; path = canvas/WebGLContextEvent.cpp; sourceTree = ""; }; + 93F6F1EB127F70B10055CB06 /* WebGLContextEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLContextEvent.h; path = canvas/WebGLContextEvent.h; sourceTree = ""; }; + 93F6F1EC127F70B10055CB06 /* WebGLContextEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLContextEvent.idl; path = canvas/WebGLContextEvent.idl; sourceTree = ""; }; + 93F72AF11666EDFC002A02BD /* LayerPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LayerPool.h; path = ca/mac/LayerPool.h; sourceTree = ""; }; + 93F72AF21666EDFC002A02BD /* LayerPool.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = LayerPool.mm; path = ca/mac/LayerPool.mm; sourceTree = ""; }; + 93F8B3050A300FE100F61AB8 /* CodeGenerator.pm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = CodeGenerator.pm; path = scripts/CodeGenerator.pm; sourceTree = ""; }; + 93F8B3060A300FEA00F61AB8 /* CodeGeneratorJS.pm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = CodeGeneratorJS.pm; path = ../scripts/CodeGeneratorJS.pm; sourceTree = ""; wrapsLines = 0; }; + 93F8B3070A300FEA00F61AB8 /* generate-bindings.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = "generate-bindings.pl"; path = "scripts/generate-bindings.pl"; sourceTree = ""; }; + 93F925410F7EF5B8007E37C9 /* CheckedRadioButtons.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CheckedRadioButtons.h; sourceTree = ""; }; + 93F925420F7EF5B8007E37C9 /* CheckedRadioButtons.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CheckedRadioButtons.cpp; sourceTree = ""; }; + 93F9B6540BA0F35E00854064 /* DOMHTMLCanvasElement.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLCanvasElement.mm; sourceTree = ""; }; + 93F9B6550BA0F35E00854064 /* DOMHTMLCanvasElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLCanvasElementInternal.h; sourceTree = ""; }; + 93F9B6DE0BA0FB7200854064 /* JSComment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSComment.cpp; sourceTree = ""; }; + 93F9B6DF0BA0FB7200854064 /* JSComment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSComment.h; sourceTree = ""; }; + 93F9B7720BA5FDDC00854064 /* JSEntityReference.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSEntityReference.cpp; sourceTree = ""; }; + 93F9B7730BA5FDDC00854064 /* JSEntityReference.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEntityReference.h; sourceTree = ""; }; + 93F9B79E0BA6032600854064 /* JSCDATASection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCDATASection.cpp; sourceTree = ""; }; + 93F9B79F0BA6032600854064 /* JSCDATASection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCDATASection.h; sourceTree = ""; }; + 93FDAFC90B11307400E2746F /* EditorInsertAction.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = EditorInsertAction.h; sourceTree = ""; }; + 96ABA42214BCB80E00D56204 /* GraphicsContext3DOpenGLCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsContext3DOpenGLCommon.cpp; sourceTree = ""; }; + 97059973107D975200A50A7C /* PolicyCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PolicyCallback.cpp; sourceTree = ""; }; + 97059974107D975200A50A7C /* PolicyCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PolicyCallback.h; sourceTree = ""; }; + 97059975107D975200A50A7C /* PolicyChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PolicyChecker.cpp; sourceTree = ""; }; + 97059976107D975200A50A7C /* PolicyChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PolicyChecker.h; sourceTree = ""; }; + 970B7289144FFAC600F00A37 /* EventInterfaces.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventInterfaces.h; sourceTree = ""; }; + 970B72A5145008EB00F00A37 /* EventHeaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventHeaders.h; sourceTree = ""; }; + 9711460014EF009A00674FD9 /* NavigatorGeolocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NavigatorGeolocation.cpp; path = Modules/geolocation/NavigatorGeolocation.cpp; sourceTree = ""; }; + 9711460114EF009A00674FD9 /* NavigatorGeolocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NavigatorGeolocation.h; path = Modules/geolocation/NavigatorGeolocation.h; sourceTree = ""; }; + 9711460214EF009A00674FD9 /* NavigatorGeolocation.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = NavigatorGeolocation.idl; path = Modules/geolocation/NavigatorGeolocation.idl; sourceTree = ""; }; + 9712A55415004EDA0048AF10 /* DOMWindowIndexedDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DOMWindowIndexedDatabase.cpp; path = Modules/indexeddb/DOMWindowIndexedDatabase.cpp; sourceTree = ""; }; + 9712A55515004EDA0048AF10 /* DOMWindowIndexedDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DOMWindowIndexedDatabase.h; path = Modules/indexeddb/DOMWindowIndexedDatabase.h; sourceTree = ""; }; + 9712A55615004EDA0048AF10 /* DOMWindowIndexedDatabase.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DOMWindowIndexedDatabase.idl; path = Modules/indexeddb/DOMWindowIndexedDatabase.idl; sourceTree = ""; }; + 9712A55815004EDA0048AF10 /* IDBAny.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBAny.h; path = Modules/indexeddb/IDBAny.h; sourceTree = ""; }; + 9712A55915004EDA0048AF10 /* IDBAny.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = IDBAny.idl; path = Modules/indexeddb/IDBAny.idl; sourceTree = ""; }; + 9712A55A15004EDA0048AF10 /* IDBBackingStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBBackingStore.h; path = Modules/indexeddb/IDBBackingStore.h; sourceTree = ""; }; + 9712A55B15004EDA0048AF10 /* IDBCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBCallbacks.h; path = Modules/indexeddb/IDBCallbacks.h; sourceTree = ""; }; + 9712A55D15004EDA0048AF10 /* IDBCursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBCursor.h; path = Modules/indexeddb/IDBCursor.h; sourceTree = ""; }; + 9712A55E15004EDA0048AF10 /* IDBCursor.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = IDBCursor.idl; path = Modules/indexeddb/IDBCursor.idl; sourceTree = ""; }; + 9712A55F15004EDA0048AF10 /* IDBCursorBackendImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IDBCursorBackendImpl.cpp; path = Modules/indexeddb/IDBCursorBackendImpl.cpp; sourceTree = ""; }; + 9712A56015004EDA0048AF10 /* IDBCursorBackendImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBCursorBackendImpl.h; path = Modules/indexeddb/IDBCursorBackendImpl.h; sourceTree = ""; }; + 9712A56115004EDA0048AF10 /* IDBCursorBackendInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBCursorBackendInterface.h; path = Modules/indexeddb/IDBCursorBackendInterface.h; sourceTree = ""; }; + 9712A56315004EDA0048AF10 /* IDBCursorWithValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBCursorWithValue.h; path = Modules/indexeddb/IDBCursorWithValue.h; sourceTree = ""; }; + 9712A56415004EDA0048AF10 /* IDBCursorWithValue.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = IDBCursorWithValue.idl; path = Modules/indexeddb/IDBCursorWithValue.idl; sourceTree = ""; }; + 9712A56615004EDA0048AF10 /* IDBDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBDatabase.h; path = Modules/indexeddb/IDBDatabase.h; sourceTree = ""; }; + 9712A56715004EDA0048AF10 /* IDBDatabase.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = IDBDatabase.idl; path = Modules/indexeddb/IDBDatabase.idl; sourceTree = ""; }; + 9712A56815004EDA0048AF10 /* IDBDatabaseBackendImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IDBDatabaseBackendImpl.cpp; path = Modules/indexeddb/IDBDatabaseBackendImpl.cpp; sourceTree = ""; }; + 9712A56915004EDA0048AF10 /* IDBDatabaseBackendImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBDatabaseBackendImpl.h; path = Modules/indexeddb/IDBDatabaseBackendImpl.h; sourceTree = ""; }; + 9712A56A15004EDA0048AF10 /* IDBDatabaseBackendInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBDatabaseBackendInterface.h; path = Modules/indexeddb/IDBDatabaseBackendInterface.h; sourceTree = ""; }; + 9712A56B15004EDA0048AF10 /* IDBDatabaseCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBDatabaseCallbacks.h; path = Modules/indexeddb/IDBDatabaseCallbacks.h; sourceTree = ""; }; + 9712A56C15004EDA0048AF10 /* IDBDatabaseCallbacksImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IDBDatabaseCallbacksImpl.cpp; path = Modules/indexeddb/IDBDatabaseCallbacksImpl.cpp; sourceTree = ""; }; + 9712A56D15004EDA0048AF10 /* IDBDatabaseCallbacksImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBDatabaseCallbacksImpl.h; path = Modules/indexeddb/IDBDatabaseCallbacksImpl.h; sourceTree = ""; }; + 9712A56E15004EDA0048AF10 /* IDBDatabaseError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBDatabaseError.h; path = Modules/indexeddb/IDBDatabaseError.h; sourceTree = ""; }; + 9712A57015004EDA0048AF10 /* IDBDatabaseException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IDBDatabaseException.cpp; path = Modules/indexeddb/IDBDatabaseException.cpp; sourceTree = ""; }; + 9712A57115004EDA0048AF10 /* IDBDatabaseException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBDatabaseException.h; path = Modules/indexeddb/IDBDatabaseException.h; sourceTree = ""; }; + 9712A57415004EDA0048AF10 /* IDBEventDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBEventDispatcher.h; path = Modules/indexeddb/IDBEventDispatcher.h; sourceTree = ""; }; + 9712A57615004EDA0048AF10 /* IDBFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBFactory.h; path = Modules/indexeddb/IDBFactory.h; sourceTree = ""; }; + 9712A57715004EDA0048AF10 /* IDBFactory.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = IDBFactory.idl; path = Modules/indexeddb/IDBFactory.idl; sourceTree = ""; }; + 9712A57815004EDA0048AF10 /* IDBFactoryBackendImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IDBFactoryBackendImpl.cpp; path = Modules/indexeddb/IDBFactoryBackendImpl.cpp; sourceTree = ""; }; + 9712A57915004EDA0048AF10 /* IDBFactoryBackendImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBFactoryBackendImpl.h; path = Modules/indexeddb/IDBFactoryBackendImpl.h; sourceTree = ""; }; + 9712A57A15004EDA0048AF10 /* IDBFactoryBackendInterface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IDBFactoryBackendInterface.cpp; path = Modules/indexeddb/IDBFactoryBackendInterface.cpp; sourceTree = ""; }; + 9712A57B15004EDA0048AF10 /* IDBFactoryBackendInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBFactoryBackendInterface.h; path = Modules/indexeddb/IDBFactoryBackendInterface.h; sourceTree = ""; }; + 9712A57D15004EDA0048AF10 /* IDBIndex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBIndex.h; path = Modules/indexeddb/IDBIndex.h; sourceTree = ""; }; + 9712A57E15004EDA0048AF10 /* IDBIndex.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = IDBIndex.idl; path = Modules/indexeddb/IDBIndex.idl; sourceTree = ""; }; + 9712A58315004EDA0048AF10 /* IDBKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBKey.h; path = Modules/indexeddb/IDBKey.h; sourceTree = ""; }; + 9712A58615004EDA0048AF10 /* IDBKeyPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBKeyPath.h; path = Modules/indexeddb/IDBKeyPath.h; sourceTree = ""; }; + 9712A58A15004EDA0048AF10 /* IDBKeyRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBKeyRange.h; path = Modules/indexeddb/IDBKeyRange.h; sourceTree = ""; }; + 9712A58B15004EDA0048AF10 /* IDBKeyRange.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = IDBKeyRange.idl; path = Modules/indexeddb/IDBKeyRange.idl; sourceTree = ""; }; + 9712A58F15004EDA0048AF10 /* IDBLevelDBCoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBLevelDBCoding.h; path = Modules/indexeddb/IDBLevelDBCoding.h; sourceTree = ""; }; + 9712A59115004EDA0048AF10 /* IDBObjectStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBObjectStore.h; path = Modules/indexeddb/IDBObjectStore.h; sourceTree = ""; }; + 9712A59215004EDA0048AF10 /* IDBObjectStore.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = IDBObjectStore.idl; path = Modules/indexeddb/IDBObjectStore.idl; sourceTree = ""; }; + 9712A59315004EDA0048AF10 /* IDBObjectStoreBackendImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IDBObjectStoreBackendImpl.cpp; path = Modules/indexeddb/IDBObjectStoreBackendImpl.cpp; sourceTree = ""; }; + 9712A59415004EDA0048AF10 /* IDBObjectStoreBackendImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBObjectStoreBackendImpl.h; path = Modules/indexeddb/IDBObjectStoreBackendImpl.h; sourceTree = ""; }; + 9712A59615004EDA0048AF10 /* IDBPendingTransactionMonitor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IDBPendingTransactionMonitor.cpp; path = Modules/indexeddb/IDBPendingTransactionMonitor.cpp; sourceTree = ""; }; + 9712A59715004EDA0048AF10 /* IDBPendingTransactionMonitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBPendingTransactionMonitor.h; path = Modules/indexeddb/IDBPendingTransactionMonitor.h; sourceTree = ""; }; + 9712A59915004EDA0048AF10 /* IDBRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBRequest.h; path = Modules/indexeddb/IDBRequest.h; sourceTree = ""; }; + 9712A59A15004EDA0048AF10 /* IDBRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = IDBRequest.idl; path = Modules/indexeddb/IDBRequest.idl; sourceTree = ""; }; + 9712A59B15004EDA0048AF10 /* IDBTracing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBTracing.h; path = Modules/indexeddb/IDBTracing.h; sourceTree = ""; }; + 9712A59D15004EDA0048AF10 /* IDBTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBTransaction.h; path = Modules/indexeddb/IDBTransaction.h; sourceTree = ""; }; + 9712A59E15004EDA0048AF10 /* IDBTransaction.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = IDBTransaction.idl; path = Modules/indexeddb/IDBTransaction.idl; sourceTree = ""; }; + 9712A59F15004EDA0048AF10 /* IDBTransactionBackendImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IDBTransactionBackendImpl.cpp; path = Modules/indexeddb/IDBTransactionBackendImpl.cpp; sourceTree = ""; }; + 9712A5A015004EDA0048AF10 /* IDBTransactionBackendImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBTransactionBackendImpl.h; path = Modules/indexeddb/IDBTransactionBackendImpl.h; sourceTree = ""; }; + 9712A5A215004EDA0048AF10 /* IDBTransactionCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBTransactionCallbacks.h; path = Modules/indexeddb/IDBTransactionCallbacks.h; sourceTree = ""; }; + 9712A5A315004EDA0048AF10 /* IDBTransactionCoordinator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IDBTransactionCoordinator.cpp; path = Modules/indexeddb/IDBTransactionCoordinator.cpp; sourceTree = ""; }; + 9712A5A415004EDA0048AF10 /* IDBTransactionCoordinator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBTransactionCoordinator.h; path = Modules/indexeddb/IDBTransactionCoordinator.h; sourceTree = ""; }; + 9712A5A515004EDA0048AF10 /* IDBVersionChangeEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IDBVersionChangeEvent.cpp; path = Modules/indexeddb/IDBVersionChangeEvent.cpp; sourceTree = ""; }; + 9712A5A615004EDA0048AF10 /* IDBVersionChangeEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBVersionChangeEvent.h; path = Modules/indexeddb/IDBVersionChangeEvent.h; sourceTree = ""; }; + 9712A5A715004EDA0048AF10 /* IDBVersionChangeEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = IDBVersionChangeEvent.idl; path = Modules/indexeddb/IDBVersionChangeEvent.idl; sourceTree = ""; }; + 9712A5AB15004EDA0048AF10 /* PageGroupIndexedDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PageGroupIndexedDatabase.cpp; path = Modules/indexeddb/PageGroupIndexedDatabase.cpp; sourceTree = ""; }; + 9712A5AC15004EDA0048AF10 /* PageGroupIndexedDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PageGroupIndexedDatabase.h; path = Modules/indexeddb/PageGroupIndexedDatabase.h; sourceTree = ""; }; + 9712A60E150090CE0048AF10 /* WorkerGlobalScopeIndexedDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WorkerGlobalScopeIndexedDatabase.cpp; path = Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.cpp; sourceTree = ""; }; + 9712A60F150090CE0048AF10 /* WorkerGlobalScopeIndexedDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerGlobalScopeIndexedDatabase.h; path = Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.h; sourceTree = ""; }; + 9712A610150090CE0048AF10 /* WorkerGlobalScopeIndexedDatabase.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WorkerGlobalScopeIndexedDatabase.idl; path = Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl; sourceTree = ""; }; + 97205AAD123928CA00B17380 /* FTPDirectoryDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FTPDirectoryDocument.cpp; sourceTree = ""; }; + 97205AAE123928CA00B17380 /* FTPDirectoryDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FTPDirectoryDocument.h; sourceTree = ""; }; + 97205AB11239291000B17380 /* ImageDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageDocument.cpp; sourceTree = ""; }; + 97205AB21239291000B17380 /* ImageDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageDocument.h; sourceTree = ""; }; + 97205AB31239291000B17380 /* MediaDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaDocument.cpp; sourceTree = ""; }; + 97205AB41239291000B17380 /* MediaDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaDocument.h; sourceTree = ""; }; + 97205AB91239292700B17380 /* PluginDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginDocument.cpp; sourceTree = ""; }; + 97205ABA1239292700B17380 /* PluginDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginDocument.h; sourceTree = ""; }; + 9728C3111268E4390041E89B /* MarkupAccumulator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MarkupAccumulator.cpp; sourceTree = ""; }; + 9728C3121268E4390041E89B /* MarkupAccumulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarkupAccumulator.h; sourceTree = ""; }; + 9738899E116EA9DC00ADF313 /* DocumentWriter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentWriter.cpp; sourceTree = ""; }; + 9738899F116EA9DC00ADF313 /* DocumentWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentWriter.h; sourceTree = ""; }; + 973AA3F215D088F000E38A85 /* BindingState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BindingState.cpp; sourceTree = ""; }; + 973AA3F315D088F000E38A85 /* BindingState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BindingState.h; sourceTree = ""; }; + 973AA3F715D0891B00E38A85 /* BindingSecurity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BindingSecurity.cpp; path = generic/BindingSecurity.cpp; sourceTree = ""; }; + 973AA3F815D0891B00E38A85 /* BindingSecurity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BindingSecurity.h; path = generic/BindingSecurity.h; sourceTree = ""; }; + 973DC63D145A9409002842C2 /* ExceptionCodeDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExceptionCodeDescription.cpp; sourceTree = ""; }; + 973DC63E145A9409002842C2 /* ExceptionCodeDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExceptionCodeDescription.h; sourceTree = ""; }; + 973E325410883B7C005BC493 /* ResourceLoadNotifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceLoadNotifier.cpp; sourceTree = ""; }; + 973E325510883B7C005BC493 /* ResourceLoadNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLoadNotifier.h; sourceTree = ""; }; + 973F4187169B95EF0006BF60 /* HTMLParserOptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLParserOptions.cpp; path = parser/HTMLParserOptions.cpp; sourceTree = ""; }; + 973F4188169B95EF0006BF60 /* HTMLParserOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLParserOptions.h; path = parser/HTMLParserOptions.h; sourceTree = ""; }; + 974187D116A7932200FA77A7 /* HTMLParserThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLParserThread.h; path = parser/HTMLParserThread.h; sourceTree = ""; }; + 9746AF1114F4DDE6003E7A70 /* Coordinates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Coordinates.h; path = Modules/geolocation/Coordinates.h; sourceTree = ""; }; + 9746AF1114F4DDE6003E7A72 /* Coordinates.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Coordinates.cpp; path = Modules/geolocation/Coordinates.cpp; sourceTree = ""; }; + 9746AF1214F4DDE6003E7A70 /* Coordinates.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Coordinates.idl; path = Modules/geolocation/Coordinates.idl; sourceTree = ""; }; + 9746AF1314F4DDE6003E7A70 /* Geolocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Geolocation.cpp; path = Modules/geolocation/Geolocation.cpp; sourceTree = ""; }; + 9746AF1414F4DDE6003E7A70 /* Geolocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Geolocation.h; path = Modules/geolocation/Geolocation.h; sourceTree = ""; }; + 9746AF1514F4DDE6003E7A70 /* Geolocation.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Geolocation.idl; path = Modules/geolocation/Geolocation.idl; sourceTree = ""; }; + 9746AF1514F4DDE6003E7A71 /* GeolocationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GeolocationClient.h; path = Modules/geolocation/GeolocationClient.h; sourceTree = ""; }; + 9746AF1614F4DDE6003E7A70 /* GeolocationController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GeolocationController.cpp; path = Modules/geolocation/GeolocationController.cpp; sourceTree = ""; }; + 9746AF1714F4DDE6003E7A70 /* GeolocationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GeolocationController.h; path = Modules/geolocation/GeolocationController.h; sourceTree = ""; }; + 9746AF1814F4DDE6003E7A70 /* GeolocationError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GeolocationError.h; path = Modules/geolocation/GeolocationError.h; sourceTree = ""; }; + 9746AF1914F4DDE6003E7A70 /* GeolocationPosition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GeolocationPosition.h; path = Modules/geolocation/GeolocationPosition.h; sourceTree = ""; }; + 9746AF1A14F4DDE6003E7A70 /* Geoposition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Geoposition.h; path = Modules/geolocation/Geoposition.h; sourceTree = ""; }; + 9746AF1B14F4DDE6003E7A70 /* Geoposition.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Geoposition.idl; path = Modules/geolocation/Geoposition.idl; sourceTree = ""; }; + 9746AF1C14F4DDE6003E7A70 /* PositionCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PositionCallback.h; path = Modules/geolocation/PositionCallback.h; sourceTree = ""; }; + 9746AF1D14F4DDE6003E7A70 /* PositionCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PositionCallback.idl; path = Modules/geolocation/PositionCallback.idl; sourceTree = ""; }; + 9746AF1E14F4DDE6003E7A70 /* PositionError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PositionError.h; path = Modules/geolocation/PositionError.h; sourceTree = ""; }; + 9746AF1F14F4DDE6003E7A70 /* PositionError.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PositionError.idl; path = Modules/geolocation/PositionError.idl; sourceTree = ""; }; + 9746AF2014F4DDE6003E7A70 /* PositionErrorCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PositionErrorCallback.h; path = Modules/geolocation/PositionErrorCallback.h; sourceTree = ""; }; + 9746AF2114F4DDE6003E7A70 /* PositionErrorCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PositionErrorCallback.idl; path = Modules/geolocation/PositionErrorCallback.idl; sourceTree = ""; }; + 9746AF2214F4DDE6003E7A70 /* PositionOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PositionOptions.h; path = Modules/geolocation/PositionOptions.h; sourceTree = ""; }; + 974A862014B7ADBB003FDC76 /* FrameDestructionObserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameDestructionObserver.cpp; sourceTree = ""; }; + 974A862114B7ADBB003FDC76 /* FrameDestructionObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameDestructionObserver.h; sourceTree = ""; }; + 974D2DA2146A535D00D51F8B /* SecurityPolicy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SecurityPolicy.cpp; sourceTree = ""; }; + 974D2DA3146A535D00D51F8B /* SecurityPolicy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecurityPolicy.h; sourceTree = ""; }; + 9752D38B1413104B003305BD /* JSHTMLSpanElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLSpanElement.cpp; sourceTree = ""; }; + 9752D38C1413104B003305BD /* JSHTMLSpanElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLSpanElement.h; sourceTree = ""; }; + 9759E93414EF1CF80026A2DD /* LoadableTextTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoadableTextTrack.cpp; sourceTree = ""; }; + 9759E93514EF1CF80026A2DD /* TextTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextTrack.cpp; sourceTree = ""; }; + 9759E93614EF1CF80026A2DD /* TextTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextTrack.h; sourceTree = ""; }; + 9759E93714EF1CF80026A2DD /* TextTrack.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TextTrack.idl; sourceTree = ""; }; + 9759E93814EF1CF80026A2DD /* TextTrackCue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextTrackCue.cpp; sourceTree = ""; }; + 9759E93914EF1CF80026A2DD /* TextTrackCue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextTrackCue.h; sourceTree = ""; }; + 9759E93A14EF1CF80026A2DD /* TextTrackCue.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TextTrackCue.idl; sourceTree = ""; }; + 9759E93B14EF1CF80026A2DD /* TextTrackCueList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextTrackCueList.cpp; sourceTree = ""; }; + 9759E93C14EF1CF80026A2DD /* TextTrackCueList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextTrackCueList.h; sourceTree = ""; }; + 9759E93D14EF1CF80026A2DD /* TextTrackCueList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TextTrackCueList.idl; sourceTree = ""; }; + 9759E94814EF1D490026A2DD /* LoadableTextTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoadableTextTrack.h; sourceTree = ""; }; + 975CA287130365F800E99AD9 /* Crypto.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Crypto.cpp; sourceTree = ""; }; + 975CA288130365F800E99AD9 /* Crypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Crypto.h; sourceTree = ""; }; + 975CA289130365F800E99AD9 /* Crypto.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Crypto.idl; sourceTree = ""; }; + 975CA29F1303679D00E99AD9 /* JSCrypto.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCrypto.cpp; sourceTree = ""; }; + 975CA2A01303679D00E99AD9 /* JSCrypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCrypto.h; sourceTree = ""; }; + 97627B8B14FB3CEE002CDCA1 /* ContextDestructionObserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContextDestructionObserver.cpp; sourceTree = ""; }; + 97627B8C14FB3CEE002CDCA1 /* ContextDestructionObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContextDestructionObserver.h; sourceTree = ""; }; + 97627B9714FB5424002CDCA1 /* Supplementable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Supplementable.h; sourceTree = ""; }; + 97665011144FAA4200F6BB51 /* EventFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventFactory.h; sourceTree = ""; }; + 9766504E144FBFFE00F6BB51 /* EventFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventFactory.cpp; sourceTree = ""; }; + 9767CE09145ABC12005E64DB /* ExceptionHeaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExceptionHeaders.h; sourceTree = ""; }; + 9767CE0A145ABC13005E64DB /* ExceptionInterfaces.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExceptionInterfaces.h; sourceTree = ""; }; + 976D6C58122B8A3D001FD1F7 /* AsyncFileWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AsyncFileWriter.h; path = Modules/filesystem/AsyncFileWriter.h; sourceTree = ""; }; + 976D6C59122B8A3D001FD1F7 /* Blob.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Blob.cpp; path = fileapi/Blob.cpp; sourceTree = ""; }; + 976D6C5A122B8A3D001FD1F7 /* Blob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Blob.h; path = fileapi/Blob.h; sourceTree = ""; }; + 976D6C5C122B8A3D001FD1F7 /* WebKitBlobBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebKitBlobBuilder.cpp; path = fileapi/WebKitBlobBuilder.cpp; sourceTree = ""; }; + 976D6C5D122B8A3D001FD1F7 /* WebKitBlobBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebKitBlobBuilder.h; path = fileapi/WebKitBlobBuilder.h; sourceTree = ""; }; + 976D6C5F122B8A3D001FD1F7 /* BlobURL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BlobURL.cpp; path = fileapi/BlobURL.cpp; sourceTree = ""; }; + 976D6C60122B8A3D001FD1F7 /* BlobURL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BlobURL.h; path = fileapi/BlobURL.h; sourceTree = ""; }; + 976D6C61122B8A3D001FD1F7 /* File.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = File.cpp; path = fileapi/File.cpp; sourceTree = ""; }; + 976D6C62122B8A3D001FD1F7 /* File.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = File.h; path = fileapi/File.h; sourceTree = ""; }; + 976D6C64122B8A3D001FD1F7 /* FileError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileError.h; path = fileapi/FileError.h; sourceTree = ""; }; + 976D6C66122B8A3D001FD1F7 /* FileList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileList.cpp; path = fileapi/FileList.cpp; sourceTree = ""; }; + 976D6C67122B8A3D001FD1F7 /* FileList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileList.h; path = fileapi/FileList.h; sourceTree = ""; }; + 976D6C69122B8A3D001FD1F7 /* FileReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileReader.cpp; path = fileapi/FileReader.cpp; sourceTree = ""; }; + 976D6C6A122B8A3D001FD1F7 /* FileReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileReader.h; path = fileapi/FileReader.h; sourceTree = ""; }; + 976D6C6E122B8A3D001FD1F7 /* FileThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileThread.cpp; path = fileapi/FileThread.cpp; sourceTree = ""; }; + 976D6C6F122B8A3D001FD1F7 /* FileThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileThread.h; path = fileapi/FileThread.h; sourceTree = ""; }; + 976D6C70122B8A3D001FD1F7 /* FileThreadTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileThreadTask.h; path = fileapi/FileThreadTask.h; sourceTree = ""; }; + 976D6C72122B8A3D001FD1F7 /* FileWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileWriter.h; path = Modules/filesystem/FileWriter.h; sourceTree = ""; }; + 976D6C74122B8A3D001FD1F7 /* AsyncFileWriterClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AsyncFileWriterClient.h; path = Modules/filesystem/AsyncFileWriterClient.h; sourceTree = ""; }; + 976D6C75122B8A3D001FD1F7 /* ThreadableBlobRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadableBlobRegistry.cpp; path = fileapi/ThreadableBlobRegistry.cpp; sourceTree = ""; }; + 976D6C76122B8A3D001FD1F7 /* ThreadableBlobRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadableBlobRegistry.h; path = fileapi/ThreadableBlobRegistry.h; sourceTree = ""; }; + 976F36E814686225005E93B4 /* SecurityContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SecurityContext.cpp; sourceTree = ""; }; + 976F36E914686225005E93B4 /* SecurityContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecurityContext.h; sourceTree = ""; }; + 977B371F1228721700B81FF8 /* HTMLElementStack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLElementStack.cpp; path = parser/HTMLElementStack.cpp; sourceTree = ""; }; + 977B37201228721700B81FF8 /* HTMLElementStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLElementStack.h; path = parser/HTMLElementStack.h; sourceTree = ""; }; + 977B37211228721700B81FF8 /* HTMLTreeBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLTreeBuilder.cpp; path = parser/HTMLTreeBuilder.cpp; sourceTree = ""; }; + 977B37221228721700B81FF8 /* HTMLTreeBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLTreeBuilder.h; path = parser/HTMLTreeBuilder.h; sourceTree = ""; }; + 977B3849122883E900B81FF8 /* CSSPreloadScanner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CSSPreloadScanner.cpp; path = parser/CSSPreloadScanner.cpp; sourceTree = ""; }; + 977B384A122883E900B81FF8 /* CSSPreloadScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CSSPreloadScanner.h; path = parser/CSSPreloadScanner.h; sourceTree = ""; }; + 977B384B122883E900B81FF8 /* HTMLConstructionSite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLConstructionSite.cpp; path = parser/HTMLConstructionSite.cpp; sourceTree = ""; }; + 977B384C122883E900B81FF8 /* HTMLConstructionSite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLConstructionSite.h; path = parser/HTMLConstructionSite.h; sourceTree = ""; }; + 977B384D122883E900B81FF8 /* HTMLDocumentParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLDocumentParser.cpp; path = parser/HTMLDocumentParser.cpp; sourceTree = ""; }; + 977B384E122883E900B81FF8 /* HTMLDocumentParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLDocumentParser.h; path = parser/HTMLDocumentParser.h; sourceTree = ""; }; + 977B384F122883E900B81FF8 /* HTMLEntityNames.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = HTMLEntityNames.in; path = parser/HTMLEntityNames.in; sourceTree = ""; }; + 977B3850122883E900B81FF8 /* HTMLEntityParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLEntityParser.cpp; path = parser/HTMLEntityParser.cpp; sourceTree = ""; }; + 977B3851122883E900B81FF8 /* HTMLEntityParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLEntityParser.h; path = parser/HTMLEntityParser.h; sourceTree = ""; }; + 977B3852122883E900B81FF8 /* HTMLEntitySearch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLEntitySearch.cpp; path = parser/HTMLEntitySearch.cpp; sourceTree = ""; }; + 977B3853122883E900B81FF8 /* HTMLEntitySearch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLEntitySearch.h; path = parser/HTMLEntitySearch.h; sourceTree = ""; }; + 977B3854122883E900B81FF8 /* HTMLEntityTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLEntityTable.h; path = parser/HTMLEntityTable.h; sourceTree = ""; }; + 977B3855122883E900B81FF8 /* HTMLFormattingElementList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLFormattingElementList.cpp; path = parser/HTMLFormattingElementList.cpp; sourceTree = ""; }; + 977B3856122883E900B81FF8 /* HTMLFormattingElementList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLFormattingElementList.h; path = parser/HTMLFormattingElementList.h; sourceTree = ""; }; + 977B3857122883E900B81FF8 /* HTMLParserScheduler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLParserScheduler.cpp; path = parser/HTMLParserScheduler.cpp; sourceTree = ""; }; + 977B3858122883E900B81FF8 /* HTMLParserScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLParserScheduler.h; path = parser/HTMLParserScheduler.h; sourceTree = ""; }; + 977B3859122883E900B81FF8 /* HTMLPreloadScanner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLPreloadScanner.cpp; path = parser/HTMLPreloadScanner.cpp; sourceTree = ""; }; + 977B385A122883E900B81FF8 /* HTMLPreloadScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLPreloadScanner.h; path = parser/HTMLPreloadScanner.h; sourceTree = ""; }; + 977B385B122883E900B81FF8 /* HTMLScriptRunner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLScriptRunner.cpp; path = parser/HTMLScriptRunner.cpp; sourceTree = ""; }; + 977B385C122883E900B81FF8 /* HTMLScriptRunner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLScriptRunner.h; path = parser/HTMLScriptRunner.h; sourceTree = ""; }; + 977B385D122883E900B81FF8 /* HTMLScriptRunnerHost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLScriptRunnerHost.h; path = parser/HTMLScriptRunnerHost.h; sourceTree = ""; }; + 977B385E122883E900B81FF8 /* HTMLTokenizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLTokenizer.cpp; path = parser/HTMLTokenizer.cpp; sourceTree = ""; }; + 977B385F122883E900B81FF8 /* HTMLTokenizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLTokenizer.h; path = parser/HTMLTokenizer.h; sourceTree = ""; }; + 977B3860122883E900B81FF8 /* HTMLViewSourceParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLViewSourceParser.cpp; path = parser/HTMLViewSourceParser.cpp; sourceTree = ""; }; + 977B3861122883E900B81FF8 /* HTMLViewSourceParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLViewSourceParser.h; path = parser/HTMLViewSourceParser.h; sourceTree = ""; }; + 977E2DCB12F0E28300C13379 /* HTMLSourceTracker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLSourceTracker.cpp; path = parser/HTMLSourceTracker.cpp; sourceTree = ""; }; + 977E2DCC12F0E28300C13379 /* HTMLSourceTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLSourceTracker.h; path = parser/HTMLSourceTracker.h; sourceTree = ""; }; + 977E2E0B12F0FC9C00C13379 /* XSSAuditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = XSSAuditor.cpp; path = parser/XSSAuditor.cpp; sourceTree = ""; }; + 977E2E0B12F0FC9C00C13380 /* XSSAuditorDelegate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = XSSAuditorDelegate.cpp; path = parser/XSSAuditorDelegate.cpp; sourceTree = ""; }; + 977E2E0C12F0FC9C00C13379 /* XSSAuditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XSSAuditor.h; path = parser/XSSAuditor.h; sourceTree = ""; }; + 977E2E0C12F0FC9C00C13380 /* XSSAuditorDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XSSAuditorDelegate.h; path = parser/XSSAuditorDelegate.h; sourceTree = ""; }; + 978AD67114130A8D00C7CAE3 /* HTMLSpanElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLSpanElement.cpp; sourceTree = ""; }; + 978AD67214130A8D00C7CAE3 /* HTMLSpanElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLSpanElement.h; sourceTree = ""; }; + 978AD67314130A8D00C7CAE3 /* HTMLSpanElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLSpanElement.idl; sourceTree = ""; }; + 978D07B5145A0F030096908D /* FileException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileException.cpp; path = fileapi/FileException.cpp; sourceTree = ""; }; + 978D07B9145A0F3C0096908D /* RangeException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RangeException.cpp; sourceTree = ""; }; + 978D07BB145A0F560096908D /* EventException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventException.cpp; sourceTree = ""; }; + 978D07BD145A0F6C0096908D /* DOMCoreException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMCoreException.cpp; sourceTree = ""; }; + 978D07C9145A10160096908D /* SVGException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGException.cpp; sourceTree = ""; }; + 978D07CB145A102E0096908D /* XPathException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XPathException.cpp; sourceTree = ""; }; + 978D07CD145A10370096908D /* XMLHttpRequestException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLHttpRequestException.cpp; sourceTree = ""; }; + 979DC03116A7992100807794 /* BackgroundHTMLParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BackgroundHTMLParser.cpp; path = parser/BackgroundHTMLParser.cpp; sourceTree = ""; }; + 979DC03216A7992100807794 /* BackgroundHTMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BackgroundHTMLParser.h; path = parser/BackgroundHTMLParser.h; sourceTree = ""; }; + 979DC03416A7992100807794 /* CompactHTMLToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CompactHTMLToken.h; path = parser/CompactHTMLToken.h; sourceTree = ""; }; + 979F43D11075E44A0000F83B /* NavigationScheduler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NavigationScheduler.cpp; sourceTree = ""; }; + 979F43D21075E44A0000F83B /* NavigationScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NavigationScheduler.h; sourceTree = ""; }; + 97AA3CA3145237CC003E1DA6 /* EventTargetHeaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventTargetHeaders.h; sourceTree = ""; }; + 97AA3CA4145237CC003E1DA6 /* EventTargetInterfaces.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventTargetInterfaces.h; sourceTree = ""; }; + 97AABCF814FA09D5007457AE /* CloseEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CloseEvent.h; path = Modules/websockets/CloseEvent.h; sourceTree = ""; }; + 97AABCF914FA09D5007457AE /* CloseEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CloseEvent.idl; path = Modules/websockets/CloseEvent.idl; sourceTree = ""; }; + 97AABCFB14FA09D5007457AE /* ThreadableWebSocketChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadableWebSocketChannel.cpp; path = Modules/websockets/ThreadableWebSocketChannel.cpp; sourceTree = ""; }; + 97AABCFC14FA09D5007457AE /* ThreadableWebSocketChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadableWebSocketChannel.h; path = Modules/websockets/ThreadableWebSocketChannel.h; sourceTree = ""; }; + 97AABCFD14FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadableWebSocketChannelClientWrapper.cpp; path = Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp; sourceTree = ""; }; + 97AABCFE14FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadableWebSocketChannelClientWrapper.h; path = Modules/websockets/ThreadableWebSocketChannelClientWrapper.h; sourceTree = ""; }; + 97AABCFF14FA09D5007457AE /* WebSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSocket.cpp; path = Modules/websockets/WebSocket.cpp; sourceTree = ""; }; + 97AABD0014FA09D5007457AE /* WebSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocket.h; path = Modules/websockets/WebSocket.h; sourceTree = ""; }; + 97AABD0114FA09D5007457AE /* WebSocket.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebSocket.idl; path = Modules/websockets/WebSocket.idl; sourceTree = ""; }; + 97AABD0214FA09D5007457AE /* WebSocketChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSocketChannel.cpp; path = Modules/websockets/WebSocketChannel.cpp; sourceTree = ""; }; + 97AABD0314FA09D5007457AE /* WebSocketChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocketChannel.h; path = Modules/websockets/WebSocketChannel.h; sourceTree = ""; }; + 97AABD0414FA09D5007457AE /* WebSocketChannelClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocketChannelClient.h; path = Modules/websockets/WebSocketChannelClient.h; sourceTree = ""; }; + 97AABD0514FA09D5007457AE /* WebSocketDeflater.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSocketDeflater.cpp; path = Modules/websockets/WebSocketDeflater.cpp; sourceTree = ""; }; + 97AABD0614FA09D5007457AE /* WebSocketDeflater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocketDeflater.h; path = Modules/websockets/WebSocketDeflater.h; sourceTree = ""; }; + 97AABD0714FA09D5007457AE /* WebSocketExtensionDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSocketExtensionDispatcher.cpp; path = Modules/websockets/WebSocketExtensionDispatcher.cpp; sourceTree = ""; }; + 97AABD0814FA09D5007457AE /* WebSocketExtensionDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocketExtensionDispatcher.h; path = Modules/websockets/WebSocketExtensionDispatcher.h; sourceTree = ""; }; + 97AABD0914FA09D5007457AE /* WebSocketExtensionProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocketExtensionProcessor.h; path = Modules/websockets/WebSocketExtensionProcessor.h; sourceTree = ""; }; + 97AABD0A14FA09D5007457AE /* WebSocketFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocketFrame.h; path = Modules/websockets/WebSocketFrame.h; sourceTree = ""; }; + 97AABD0B14FA09D5007457AE /* WebSocketHandshake.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSocketHandshake.cpp; path = Modules/websockets/WebSocketHandshake.cpp; sourceTree = ""; }; + 97AABD0C14FA09D5007457AE /* WebSocketHandshake.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocketHandshake.h; path = Modules/websockets/WebSocketHandshake.h; sourceTree = ""; }; + 97AABD1114FA09D5007457AE /* WorkerThreadableWebSocketChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WorkerThreadableWebSocketChannel.cpp; path = Modules/websockets/WorkerThreadableWebSocketChannel.cpp; sourceTree = ""; }; + 97AABD1214FA09D5007457AE /* WorkerThreadableWebSocketChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerThreadableWebSocketChannel.h; path = Modules/websockets/WorkerThreadableWebSocketChannel.h; sourceTree = ""; }; + 97B38E23151C4264004622E9 /* DOMWindowNotifications.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DOMWindowNotifications.cpp; path = Modules/notifications/DOMWindowNotifications.cpp; sourceTree = ""; }; + 97B38E24151C4264004622E9 /* DOMWindowNotifications.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DOMWindowNotifications.h; path = Modules/notifications/DOMWindowNotifications.h; sourceTree = ""; }; + 97B38E25151C4264004622E9 /* DOMWindowNotifications.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DOMWindowNotifications.idl; path = Modules/notifications/DOMWindowNotifications.idl; sourceTree = ""; }; + 97B8FFCF16AE7F920038388D /* CharacterReferenceParserInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CharacterReferenceParserInlines.h; sourceTree = ""; }; + 97BC69D61505F076001B74AC /* DatabaseBackendBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseBackendBase.cpp; path = Modules/webdatabase/DatabaseBackendBase.cpp; sourceTree = ""; }; + 97BC69D71505F076001B74AC /* DatabaseBackendBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseBackendBase.h; path = Modules/webdatabase/DatabaseBackendBase.h; sourceTree = ""; }; + 97BC69D81505F076001B74AC /* ChangeVersionWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ChangeVersionWrapper.cpp; path = Modules/webdatabase/ChangeVersionWrapper.cpp; sourceTree = ""; }; + 97BC69D91505F076001B74AC /* ChangeVersionWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ChangeVersionWrapper.h; path = Modules/webdatabase/ChangeVersionWrapper.h; sourceTree = ""; }; + 97BC69DE1505F081001B74AC /* Database.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Database.cpp; path = Modules/webdatabase/Database.cpp; sourceTree = ""; }; + 97BC69DF1505F081001B74AC /* Database.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Database.h; path = Modules/webdatabase/Database.h; sourceTree = ""; }; + 97BC69E01505F081001B74AC /* Database.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Database.idl; path = Modules/webdatabase/Database.idl; sourceTree = ""; }; + 97BC69E11505F081001B74AC /* DatabaseAuthorizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseAuthorizer.cpp; path = Modules/webdatabase/DatabaseAuthorizer.cpp; sourceTree = ""; }; + 97BC69E21505F081001B74AC /* DatabaseAuthorizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseAuthorizer.h; path = Modules/webdatabase/DatabaseAuthorizer.h; sourceTree = ""; }; + 97BC69E31505F081001B74AC /* DatabaseCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseCallback.h; path = Modules/webdatabase/DatabaseCallback.h; sourceTree = ""; }; + 97BC69E41505F081001B74AC /* DatabaseCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DatabaseCallback.idl; path = Modules/webdatabase/DatabaseCallback.idl; sourceTree = ""; }; + 97BC69E51505F081001B74AC /* DatabaseContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseContext.cpp; path = Modules/webdatabase/DatabaseContext.cpp; sourceTree = ""; }; + 97BC69E61505F081001B74AC /* DatabaseContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseContext.h; path = Modules/webdatabase/DatabaseContext.h; sourceTree = ""; }; + 97BC69E71505F081001B74AC /* DatabaseDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseDetails.h; path = Modules/webdatabase/DatabaseDetails.h; sourceTree = ""; }; + 97BC69E81505F081001B74AC /* DatabaseSync.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseSync.cpp; path = Modules/webdatabase/DatabaseSync.cpp; sourceTree = ""; }; + 97BC69E91505F081001B74AC /* DatabaseSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseSync.h; path = Modules/webdatabase/DatabaseSync.h; sourceTree = ""; }; + 97BC69EA1505F081001B74AC /* DatabaseSync.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DatabaseSync.idl; path = Modules/webdatabase/DatabaseSync.idl; sourceTree = ""; }; + 97BC69EB1505F081001B74AC /* DatabaseTask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseTask.cpp; path = Modules/webdatabase/DatabaseTask.cpp; sourceTree = ""; }; + 97BC69EC1505F081001B74AC /* DatabaseTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseTask.h; path = Modules/webdatabase/DatabaseTask.h; sourceTree = ""; }; + 97BC69ED1505F081001B74AC /* DatabaseThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseThread.cpp; path = Modules/webdatabase/DatabaseThread.cpp; sourceTree = ""; }; + 97BC69EE1505F081001B74AC /* DatabaseThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseThread.h; path = Modules/webdatabase/DatabaseThread.h; sourceTree = ""; }; + 97BC69EF1505F081001B74AC /* DatabaseTracker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseTracker.cpp; path = Modules/webdatabase/DatabaseTracker.cpp; sourceTree = ""; }; + 97BC69F01505F081001B74AC /* DatabaseTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseTracker.h; path = Modules/webdatabase/DatabaseTracker.h; sourceTree = ""; }; + 97BC69F11505F081001B74AC /* DatabaseManagerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseManagerClient.h; path = Modules/webdatabase/DatabaseManagerClient.h; sourceTree = ""; }; + 97BC69F91505F081001B74AC /* SQLCallbackWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLCallbackWrapper.h; path = Modules/webdatabase/SQLCallbackWrapper.h; sourceTree = ""; }; + 97BC69FA1505F081001B74AC /* SQLError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLError.h; path = Modules/webdatabase/SQLError.h; sourceTree = ""; }; + 97BC69FB1505F081001B74AC /* SQLError.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SQLError.idl; path = Modules/webdatabase/SQLError.idl; sourceTree = ""; }; + 97BC69FC1505F081001B74AC /* SQLException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLException.cpp; path = Modules/webdatabase/SQLException.cpp; sourceTree = ""; }; + 97BC69FD1505F081001B74AC /* SQLException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLException.h; path = Modules/webdatabase/SQLException.h; sourceTree = ""; }; + 97BC69FE1505F081001B74AC /* SQLException.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SQLException.idl; path = Modules/webdatabase/SQLException.idl; sourceTree = ""; }; + 97BC69FF1505F081001B74AC /* SQLResultSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLResultSet.cpp; path = Modules/webdatabase/SQLResultSet.cpp; sourceTree = ""; }; + 97BC6A001505F081001B74AC /* SQLResultSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLResultSet.h; path = Modules/webdatabase/SQLResultSet.h; sourceTree = ""; }; + 97BC6A011505F081001B74AC /* SQLResultSet.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SQLResultSet.idl; path = Modules/webdatabase/SQLResultSet.idl; sourceTree = ""; }; + 97BC6A021505F081001B74AC /* SQLResultSetRowList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLResultSetRowList.cpp; path = Modules/webdatabase/SQLResultSetRowList.cpp; sourceTree = ""; }; + 97BC6A031505F081001B74AC /* SQLResultSetRowList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLResultSetRowList.h; path = Modules/webdatabase/SQLResultSetRowList.h; sourceTree = ""; }; + 97BC6A041505F081001B74AC /* SQLResultSetRowList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SQLResultSetRowList.idl; path = Modules/webdatabase/SQLResultSetRowList.idl; sourceTree = ""; }; + 97BC6A051505F081001B74AC /* SQLStatement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLStatement.cpp; path = Modules/webdatabase/SQLStatement.cpp; sourceTree = ""; }; + 97BC6A061505F081001B74AC /* SQLStatement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLStatement.h; path = Modules/webdatabase/SQLStatement.h; sourceTree = ""; }; + 97BC6A071505F081001B74AC /* SQLStatementCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLStatementCallback.h; path = Modules/webdatabase/SQLStatementCallback.h; sourceTree = ""; }; + 97BC6A081505F081001B74AC /* SQLStatementCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SQLStatementCallback.idl; path = Modules/webdatabase/SQLStatementCallback.idl; sourceTree = ""; }; + 97BC6A091505F081001B74AC /* SQLStatementErrorCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLStatementErrorCallback.h; path = Modules/webdatabase/SQLStatementErrorCallback.h; sourceTree = ""; }; + 97BC6A0A1505F081001B74AC /* SQLStatementErrorCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SQLStatementErrorCallback.idl; path = Modules/webdatabase/SQLStatementErrorCallback.idl; sourceTree = ""; }; + 97BC6A0B1505F081001B74AC /* SQLStatementSync.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLStatementSync.cpp; path = Modules/webdatabase/SQLStatementSync.cpp; sourceTree = ""; }; + 97BC6A0C1505F081001B74AC /* SQLStatementSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLStatementSync.h; path = Modules/webdatabase/SQLStatementSync.h; sourceTree = ""; }; + 97BC6A0D1505F081001B74AC /* SQLTransaction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLTransaction.cpp; path = Modules/webdatabase/SQLTransaction.cpp; sourceTree = ""; }; + 97BC6A0E1505F081001B74AC /* SQLTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLTransaction.h; path = Modules/webdatabase/SQLTransaction.h; sourceTree = ""; }; + 97BC6A0F1505F081001B74AC /* SQLTransaction.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SQLTransaction.idl; path = Modules/webdatabase/SQLTransaction.idl; sourceTree = ""; }; + 97BC6A101505F081001B74AC /* SQLTransactionCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLTransactionCallback.h; path = Modules/webdatabase/SQLTransactionCallback.h; sourceTree = ""; }; + 97BC6A111505F081001B74AC /* SQLTransactionCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SQLTransactionCallback.idl; path = Modules/webdatabase/SQLTransactionCallback.idl; sourceTree = ""; }; + 97BC6A121505F081001B74AC /* SQLTransactionClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLTransactionClient.cpp; path = Modules/webdatabase/SQLTransactionClient.cpp; sourceTree = ""; }; + 97BC6A131505F081001B74AC /* SQLTransactionClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLTransactionClient.h; path = Modules/webdatabase/SQLTransactionClient.h; sourceTree = ""; }; + 97BC6A141505F081001B74AC /* SQLTransactionCoordinator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLTransactionCoordinator.cpp; path = Modules/webdatabase/SQLTransactionCoordinator.cpp; sourceTree = ""; }; + 97BC6A151505F081001B74AC /* SQLTransactionCoordinator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLTransactionCoordinator.h; path = Modules/webdatabase/SQLTransactionCoordinator.h; sourceTree = ""; }; + 97BC6A161505F081001B74AC /* SQLTransactionErrorCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLTransactionErrorCallback.h; path = Modules/webdatabase/SQLTransactionErrorCallback.h; sourceTree = ""; }; + 97BC6A171505F081001B74AC /* SQLTransactionErrorCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SQLTransactionErrorCallback.idl; path = Modules/webdatabase/SQLTransactionErrorCallback.idl; sourceTree = ""; }; + 97BC6A181505F081001B74AC /* SQLTransactionSync.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLTransactionSync.cpp; path = Modules/webdatabase/SQLTransactionSync.cpp; sourceTree = ""; }; + 97BC6A191505F081001B74AC /* SQLTransactionSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLTransactionSync.h; path = Modules/webdatabase/SQLTransactionSync.h; sourceTree = ""; }; + 97BC6A1A1505F081001B74AC /* SQLTransactionSync.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SQLTransactionSync.idl; path = Modules/webdatabase/SQLTransactionSync.idl; sourceTree = ""; }; + 97BC6A1B1505F081001B74AC /* SQLTransactionSyncCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLTransactionSyncCallback.h; path = Modules/webdatabase/SQLTransactionSyncCallback.h; sourceTree = ""; }; + 97BC6A1C1505F081001B74AC /* SQLTransactionSyncCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SQLTransactionSyncCallback.idl; path = Modules/webdatabase/SQLTransactionSyncCallback.idl; sourceTree = ""; }; + 97BC84811236FD93000C6161 /* TextDocumentParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TextDocumentParser.cpp; path = parser/TextDocumentParser.cpp; sourceTree = ""; }; + 97BC84821236FD93000C6161 /* TextDocumentParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TextDocumentParser.h; path = parser/TextDocumentParser.h; sourceTree = ""; }; + 97BC849A12370A4B000C6161 /* HTMLInputStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLInputStream.h; path = parser/HTMLInputStream.h; sourceTree = ""; }; + 97BC84A212370DC7000C6161 /* TextViewSourceParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TextViewSourceParser.cpp; path = parser/TextViewSourceParser.cpp; sourceTree = ""; }; + 97BC84A312370DC8000C6161 /* TextViewSourceParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TextViewSourceParser.h; path = parser/TextViewSourceParser.h; sourceTree = ""; }; + 97BC84B112371180000C6161 /* TextDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextDocument.cpp; sourceTree = ""; }; + 97BC84B212371180000C6161 /* TextDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextDocument.h; sourceTree = ""; }; + 97C0784F1165D5BE003A32EF /* SuffixTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SuffixTree.h; sourceTree = ""; }; + 97C1F552122855CB00EDE615 /* HTMLStackItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLStackItem.h; path = parser/HTMLStackItem.h; sourceTree = ""; }; + 97C1F552122855CB00EDE616 /* HTMLToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLToken.h; path = parser/HTMLToken.h; sourceTree = ""; }; + 97C1F552122855CB00EDE617 /* AtomicHTMLToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AtomicHTMLToken.h; path = parser/AtomicHTMLToken.h; sourceTree = ""; }; + 97C471D912F925BC0086354B /* ContentSecurityPolicy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContentSecurityPolicy.cpp; sourceTree = ""; }; + 97C471DA12F925BD0086354B /* ContentSecurityPolicy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContentSecurityPolicy.h; sourceTree = ""; }; + 97C740121603F7A10011FF2D /* FeatureObserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FeatureObserver.cpp; sourceTree = ""; }; + 97C740131603F7A10011FF2D /* FeatureObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FeatureObserver.h; sourceTree = ""; }; + 97D2AD0114B823A60093DF32 /* DOMWindowProperty.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMWindowProperty.cpp; sourceTree = ""; }; + 97D2AD0214B823A60093DF32 /* DOMWindowProperty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWindowProperty.h; sourceTree = ""; }; + 97DC69E916B9F50E008CFD6F /* BackgroundHTMLInputStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BackgroundHTMLInputStream.cpp; path = parser/BackgroundHTMLInputStream.cpp; sourceTree = ""; }; + 97DC69EA16B9F50E008CFD6F /* BackgroundHTMLInputStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BackgroundHTMLInputStream.h; path = parser/BackgroundHTMLInputStream.h; sourceTree = ""; }; + 97DCE1FF10807C750057D394 /* HistoryController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HistoryController.cpp; sourceTree = ""; }; + 97DCE20010807C750057D394 /* HistoryController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryController.h; sourceTree = ""; }; + 97E4028D13A696ED00913D67 /* IconController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IconController.cpp; sourceTree = ""; }; + 97E4028E13A696ED00913D67 /* IconController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IconController.h; sourceTree = ""; }; + 97E9EC8B15DC492F004F2E71 /* JSVoidCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSVoidCallback.cpp; sourceTree = ""; }; + 97E9EC8C15DC492F004F2E71 /* JSVoidCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVoidCallback.h; sourceTree = ""; }; + 97EF7DFD107E55B700D7C49C /* ScriptControllerBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptControllerBase.cpp; sourceTree = ""; }; + 97F8E661151D4A3F00D2D181 /* WorkerGlobalScopeNotifications.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WorkerGlobalScopeNotifications.cpp; path = Modules/notifications/WorkerGlobalScopeNotifications.cpp; sourceTree = ""; }; + 97F8E662151D4A3F00D2D181 /* WorkerGlobalScopeNotifications.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerGlobalScopeNotifications.h; path = Modules/notifications/WorkerGlobalScopeNotifications.h; sourceTree = ""; }; + 97F8E663151D4A3F00D2D181 /* WorkerGlobalScopeNotifications.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WorkerGlobalScopeNotifications.idl; path = Modules/notifications/WorkerGlobalScopeNotifications.idl; sourceTree = ""; }; + 9831AE49154225A200FE2644 /* ReferrerPolicy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReferrerPolicy.h; sourceTree = ""; }; + 984264EF12D5280A000D88A4 /* LinkLoaderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinkLoaderClient.h; sourceTree = ""; }; + 985BB96B13A94058007A0B69 /* LinkRelAttribute.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LinkRelAttribute.cpp; sourceTree = ""; }; + 985BB96C13A94058007A0B69 /* LinkRelAttribute.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinkRelAttribute.h; sourceTree = ""; }; + 98CE4325129E00BD005821DC /* LinkLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LinkLoader.cpp; sourceTree = ""; }; + 98CE4329129E00E5005821DC /* LinkLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinkLoader.h; sourceTree = ""; }; + 98EB1F941313FE0500D0E1EA /* NotImplemented.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotImplemented.h; sourceTree = ""; }; + 9A1B6F96158869C80011A8C4 /* JSDOMStringListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMStringListCustom.cpp; sourceTree = ""; }; + 9B1AB0791648C69D0051F3F2 /* HTMLFormControlsCollection.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = HTMLFormControlsCollection.idl; sourceTree = ""; }; + 9B1AB07B1648C7C40051F3F2 /* JSHTMLFormControlsCollectionCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLFormControlsCollectionCustom.cpp; sourceTree = ""; }; + 9B24DE8C15194B9500C59C27 /* HTMLBDIElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLBDIElement.h; sourceTree = ""; }; + 9B2D8A7814997CCF00ECEF3E /* UndoStep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UndoStep.h; sourceTree = ""; }; + 9B2F7CF814562120007F8B50 /* MicroDataItemValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MicroDataItemValue.h; sourceTree = ""; }; + 9B32CDA713DF7FA900F34D13 /* RenderedPosition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderedPosition.h; sourceTree = ""; }; + 9B32CDA813DF7FA900F34D13 /* RenderedPosition.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderedPosition.cpp; sourceTree = ""; }; + 9B375ED914478A0100F3CAE5 /* MicroDataItemList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MicroDataItemList.h; sourceTree = ""; }; + 9B3A8871145632F9003AE8F5 /* DOMDOMSettableTokenList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMDOMSettableTokenList.h; sourceTree = ""; }; + 9B417062125662B3006B28FC /* ApplyBlockElementCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplyBlockElementCommand.h; sourceTree = ""; }; + 9B417063125662B3006B28FC /* ApplyBlockElementCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplyBlockElementCommand.cpp; sourceTree = ""; }; + 9B6C41521344949000085B62 /* StringWithDirection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringWithDirection.h; sourceTree = ""; }; + 9B7E78BA16F16CAE00126914 /* HTMLTreeBuilderSimulator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLTreeBuilderSimulator.cpp; path = parser/HTMLTreeBuilderSimulator.cpp; sourceTree = ""; }; + 9B7E78BB16F16CAE00126914 /* HTMLTreeBuilderSimulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLTreeBuilderSimulator.h; path = parser/HTMLTreeBuilderSimulator.h; sourceTree = ""; }; + 9BA273F3172206BB0097CE47 /* LogicalSelectionOffsetCaches.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogicalSelectionOffsetCaches.h; sourceTree = ""; }; + 9BAB6C6A12550631001626D4 /* EditingStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditingStyle.h; sourceTree = ""; }; + 9BAB6C6B12550631001626D4 /* EditingStyle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EditingStyle.cpp; sourceTree = ""; }; + 9BAF3B2312C1A39800014BF1 /* WritingDirection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WritingDirection.h; sourceTree = ""; }; + 9BC6C21913CCC97B008E0337 /* HTMLTextFormControlElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLTextFormControlElement.h; sourceTree = ""; }; + 9BC6C21A13CCC97B008E0337 /* HTMLTextFormControlElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLTextFormControlElement.cpp; sourceTree = ""; }; + 9BD0BF9112A42BF50072FD43 /* ScopedEventQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScopedEventQueue.h; sourceTree = ""; }; + 9BD0BF9212A42BF50072FD43 /* ScopedEventQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScopedEventQueue.cpp; sourceTree = ""; }; + 9BF9A87E1648DD2F001C6B23 /* JSHTMLFormControlsCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLFormControlsCollection.cpp; sourceTree = ""; }; + 9BF9A87F1648DD2F001C6B23 /* JSHTMLFormControlsCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLFormControlsCollection.h; sourceTree = ""; }; + 9F0D6B2C121BFEBA006C0288 /* InspectorProfilerAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorProfilerAgent.cpp; sourceTree = ""; }; + 9F0D6B2D121BFEBA006C0288 /* InspectorProfilerAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorProfilerAgent.h; sourceTree = ""; }; + 9F3B947D12241758005304E7 /* ScriptHeapSnapshot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptHeapSnapshot.h; sourceTree = ""; }; + 9F6FC1941122E82A00E80196 /* ScriptDebugServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptDebugServer.cpp; sourceTree = ""; }; + 9F6FC1951122E82A00E80196 /* ScriptDebugServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptDebugServer.h; sourceTree = ""; }; + 9F72304C11184B4100AD0126 /* ScriptProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptProfile.h; sourceTree = ""; }; + 9F72304D11184B4100AD0126 /* ScriptProfiler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptProfiler.cpp; sourceTree = ""; }; + 9F72304E11184B4100AD0126 /* ScriptProfiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptProfiler.h; sourceTree = ""; }; + 9FA37EE31172FC8000C4CD55 /* ScriptProfileNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptProfileNode.h; sourceTree = ""; }; + 9FA37EEF1172FD4100C4CD55 /* ScriptProfile.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ScriptProfile.idl; sourceTree = ""; }; + 9FA37EF01172FD4100C4CD55 /* ScriptProfileNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ScriptProfileNode.idl; sourceTree = ""; }; + 9FA37EF61172FD9300C4CD55 /* JSScriptProfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSScriptProfile.cpp; sourceTree = ""; }; + 9FA37EF71172FD9300C4CD55 /* JSScriptProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSScriptProfile.h; sourceTree = ""; }; + 9FA37EF81172FD9300C4CD55 /* JSScriptProfileNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSScriptProfileNode.cpp; sourceTree = ""; }; + 9FA37EF91172FD9300C4CD55 /* JSScriptProfileNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSScriptProfileNode.h; sourceTree = ""; }; + A024574E16CEAA27000E5671 /* EXTDrawBuffers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EXTDrawBuffers.cpp; path = canvas/EXTDrawBuffers.cpp; sourceTree = ""; }; + A024574F16CEAA27000E5671 /* EXTDrawBuffers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EXTDrawBuffers.h; path = canvas/EXTDrawBuffers.h; sourceTree = ""; }; + A024575016CEAA27000E5671 /* EXTDrawBuffers.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = EXTDrawBuffers.idl; path = canvas/EXTDrawBuffers.idl; sourceTree = ""; }; + A07D3353152B630E001B6393 /* JSWebGLShaderPrecisionFormat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLShaderPrecisionFormat.cpp; sourceTree = ""; }; + A07D3354152B630E001B6393 /* JSWebGLShaderPrecisionFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLShaderPrecisionFormat.h; sourceTree = ""; }; + A07D3357152B632D001B6393 /* WebGLShaderPrecisionFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLShaderPrecisionFormat.h; path = canvas/WebGLShaderPrecisionFormat.h; sourceTree = ""; }; + A07D3359152B633E001B6393 /* WebGLShaderPrecisionFormat.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLShaderPrecisionFormat.idl; path = canvas/WebGLShaderPrecisionFormat.idl; sourceTree = ""; }; + A08CF153152B77B3009C5775 /* WebGLShaderPrecisionFormat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLShaderPrecisionFormat.cpp; path = canvas/WebGLShaderPrecisionFormat.cpp; sourceTree = ""; }; + A0EE0DEF144F823200F80B0D /* WebGLDebugShaders.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLDebugShaders.idl; path = canvas/WebGLDebugShaders.idl; sourceTree = ""; }; + A0EE0DF0144F824300F80B0D /* WebGLDebugRendererInfo.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLDebugRendererInfo.idl; path = canvas/WebGLDebugRendererInfo.idl; sourceTree = ""; }; + A0EE0DF1144F825500F80B0D /* WebGLDebugRendererInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLDebugRendererInfo.cpp; path = canvas/WebGLDebugRendererInfo.cpp; sourceTree = ""; }; + A0EE0DF2144F825500F80B0D /* WebGLDebugRendererInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLDebugRendererInfo.h; path = canvas/WebGLDebugRendererInfo.h; sourceTree = ""; }; + A0EE0DF3144F825500F80B0D /* WebGLDebugShaders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLDebugShaders.cpp; path = canvas/WebGLDebugShaders.cpp; sourceTree = ""; }; + A0EE0DF4144F825500F80B0D /* WebGLDebugShaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLDebugShaders.h; path = canvas/WebGLDebugShaders.h; sourceTree = ""; }; + A104F24114C71F7A009E2C23 /* CachedSVGDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedSVGDocument.cpp; sourceTree = ""; }; + A104F24214C71F7A009E2C23 /* CachedSVGDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedSVGDocument.h; sourceTree = ""; }; + A10BB5821484E3A700B2E87A /* RenderSVGRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGRect.cpp; sourceTree = ""; }; + A10BB5831484E3A700B2E87A /* RenderSVGRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGRect.h; sourceTree = ""; }; + A10BB5881484E3B300B2E87A /* RenderSVGShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGShape.cpp; sourceTree = ""; }; + A10BB5891484E3B300B2E87A /* RenderSVGShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGShape.h; sourceTree = ""; }; + A10DC76814747BAB005E2471 /* StyleGridData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleGridData.cpp; path = style/StyleGridData.cpp; sourceTree = ""; }; + A10DC76914747BAB005E2471 /* StyleGridData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleGridData.h; path = style/StyleGridData.h; sourceTree = ""; }; + A110DB9A14F5DF7700A03B93 /* StyleGridItemData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleGridItemData.h; path = style/StyleGridItemData.h; sourceTree = ""; }; + A110DB9C14F5DF8700A03B93 /* StyleGridItemData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleGridItemData.cpp; path = style/StyleGridItemData.cpp; sourceTree = ""; }; + A120ACA013F9983700FE4AC7 /* LayoutRepainter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayoutRepainter.h; sourceTree = ""; }; + A120ACA113F9984600FE4AC7 /* LayoutRepainter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LayoutRepainter.cpp; sourceTree = ""; }; + A12705C21656BD6500C2E27C /* GridPosition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GridPosition.h; path = style/GridPosition.h; sourceTree = ""; }; + A12A104E166444DC008FA311 /* GridTrackSize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GridTrackSize.h; path = style/GridTrackSize.h; sourceTree = ""; }; + A136A00A1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLHttpRequestProgressEventThrottle.cpp; sourceTree = ""; }; + A136A00B1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLHttpRequestProgressEventThrottle.h; sourceTree = ""; }; + A17C81200F2A5CF7005DAAEB /* HTMLElementFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLElementFactory.cpp; sourceTree = ""; }; + A17C81210F2A5CF7005DAAEB /* HTMLElementFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLElementFactory.h; sourceTree = ""; }; + A1C7FAA1133A5D3500D6732D /* JSXPathResultCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSXPathResultCustom.cpp; sourceTree = ""; }; + A1E1154313015C3D0054AC8C /* DistantLightSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DistantLightSource.cpp; path = filters/DistantLightSource.cpp; sourceTree = ""; }; + A1E1154513015C4E0054AC8C /* PointLightSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PointLightSource.cpp; path = filters/PointLightSource.cpp; sourceTree = ""; }; + A1E1154713015C5D0054AC8C /* SpotLightSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SpotLightSource.cpp; path = filters/SpotLightSource.cpp; sourceTree = ""; }; + A24BF77915CC3BAF003191F2 /* WebKitCSSMixFunctionValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitCSSMixFunctionValue.h; sourceTree = ""; }; + A24BF77A15CC3BAF003191F2 /* WebKitCSSMixFunctionValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitCSSMixFunctionValue.cpp; sourceTree = ""; }; + A29532CD15DD5E1700469EBC /* CustomFilterValidatedProgram.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CustomFilterValidatedProgram.cpp; path = filters/CustomFilterValidatedProgram.cpp; sourceTree = ""; }; + A29532CE15DD5E1700469EBC /* CustomFilterValidatedProgram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterValidatedProgram.h; path = filters/CustomFilterValidatedProgram.h; sourceTree = ""; }; + A2B2AE7B16375EE500CFA50B /* CustomFilterConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterConstants.h; path = filters/CustomFilterConstants.h; sourceTree = ""; }; + A2B9217216C5CC420041DCD9 /* IntRectExtent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntRectExtent.h; sourceTree = ""; }; + A2E8AE2E16A48E1C006BB3AA /* WebKitCSSFilterRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitCSSFilterRule.cpp; sourceTree = ""; }; + A2E8AE2F16A48E1C006BB3AA /* WebKitCSSFilterRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitCSSFilterRule.h; sourceTree = ""; }; + A2E8AE3516A49840006BB3AA /* JSWebKitCSSFilterRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitCSSFilterRule.cpp; sourceTree = ""; }; + A2E8AE3616A49840006BB3AA /* JSWebKitCSSFilterRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebKitCSSFilterRule.h; sourceTree = ""; }; + A2E8AE3D16A498CF006BB3AA /* DOMWebKitCSSFilterRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSFilterRule.h; sourceTree = ""; }; + A2E8AE3E16A498CF006BB3AA /* DOMWebKitCSSFilterRule.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMWebKitCSSFilterRule.mm; sourceTree = ""; }; + A2E8AE3F16A498CF006BB3AA /* DOMWebKitCSSFilterRuleInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitCSSFilterRuleInternal.h; sourceTree = ""; }; + A31C4E4C16E02AA6002F7957 /* OESTextureHalfFloat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OESTextureHalfFloat.cpp; path = canvas/OESTextureHalfFloat.cpp; sourceTree = ""; }; + A31C4E4E16E02AB4002F7957 /* OESTextureHalfFloat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OESTextureHalfFloat.h; path = canvas/OESTextureHalfFloat.h; sourceTree = ""; }; + A31C4E5016E02AC5002F7957 /* OESTextureHalfFloat.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = OESTextureHalfFloat.idl; path = canvas/OESTextureHalfFloat.idl; sourceTree = ""; }; + A31C4E5116E02B08002F7957 /* JSOESTextureHalfFloat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSOESTextureHalfFloat.cpp; sourceTree = ""; }; + A31C4E5316E02B40002F7957 /* JSOESTextureHalfFloat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSOESTextureHalfFloat.h; sourceTree = ""; }; + A3BB59F11457A40D00AC56FE /* DocumentEventQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentEventQueue.cpp; sourceTree = ""; }; + A3BB59F21457A40D00AC56FE /* DocumentEventQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentEventQueue.h; sourceTree = ""; }; + A3E2642E14748991005A8588 /* WorkerEventQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WorkerEventQueue.cpp; path = workers/WorkerEventQueue.cpp; sourceTree = ""; }; + A3E2642F14748991005A8588 /* WorkerEventQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerEventQueue.h; path = workers/WorkerEventQueue.h; sourceTree = ""; }; + A409C982116D0DDD007197BD /* AccessibilityProgressIndicator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityProgressIndicator.cpp; sourceTree = ""; }; + A409C983116D0DDD007197BD /* AccessibilityProgressIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityProgressIndicator.h; sourceTree = ""; }; + A4226E591163D667008B8397 /* JSHTMLProgressElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLProgressElement.cpp; sourceTree = ""; }; + A4226E5B1163D695008B8397 /* JSHTMLProgressElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLProgressElement.h; sourceTree = ""; }; + A4226E921163D73A008B8397 /* DOMHTMLProgressElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLProgressElement.h; sourceTree = ""; }; + A4226E931163D73A008B8397 /* DOMHTMLProgressElement.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLProgressElement.mm; sourceTree = ""; }; + A4226E981163D7CC008B8397 /* DOMHTMLProgressElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLProgressElementInternal.h; sourceTree = ""; }; + A4226EA51163D84D008B8397 /* HTMLProgressElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLProgressElement.idl; sourceTree = ""; }; + A43BF5961149290A00C643CA /* HTMLProgressElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLProgressElement.cpp; sourceTree = ""; }; + A43BF5971149290A00C643CA /* HTMLProgressElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLProgressElement.h; sourceTree = ""; }; + A43BF59A1149292800C643CA /* RenderProgress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderProgress.cpp; sourceTree = ""; }; + A43BF59B1149292800C643CA /* RenderProgress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderProgress.h; sourceTree = ""; }; + A4544248119B3661009BE912 /* HTMLMeterElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLMeterElement.cpp; sourceTree = ""; }; + A4544249119B3661009BE912 /* HTMLMeterElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLMeterElement.h; sourceTree = ""; }; + A454424C119B3687009BE912 /* RenderMeter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMeter.cpp; sourceTree = ""; }; + A454424D119B3687009BE912 /* RenderMeter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMeter.h; sourceTree = ""; }; + A456FA2411AD4A830020B420 /* LabelsNodeList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LabelsNodeList.cpp; sourceTree = ""; }; + A456FA2511AD4A830020B420 /* LabelsNodeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelsNodeList.h; sourceTree = ""; }; + A54A82EA15228CA300C72BA6 /* DOMNodePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMNodePrivate.h; sourceTree = ""; }; + A5732B08136A161D005C8D7C /* DateComponents.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DateComponents.cpp; sourceTree = ""; }; + A5732B09136A161D005C8D7C /* DateComponents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateComponents.h; sourceTree = ""; }; + A5ABB78613B904BC00F197E3 /* LineBreakIteratorPoolICU.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineBreakIteratorPoolICU.h; sourceTree = ""; }; + A5AFB34D115151A700B045CB /* StepRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StepRange.cpp; sourceTree = ""; }; + A5AFB34E115151A700B045CB /* StepRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StepRange.h; sourceTree = ""; }; + A5C974CF11485FF10066F2AB /* KeyEventCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KeyEventCocoa.h; path = cocoa/KeyEventCocoa.h; sourceTree = ""; }; + A5C974D011485FF10066F2AB /* KeyEventCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = KeyEventCocoa.mm; path = cocoa/KeyEventCocoa.mm; sourceTree = ""; }; + A6148A6112E41D3A0044A784 /* DOMHTMLKeygenElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLKeygenElementInternal.h; sourceTree = ""; }; + A6148A6512E41D940044A784 /* DOMHTMLKeygenElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLKeygenElement.h; sourceTree = ""; }; + A6148A6612E41D940044A784 /* DOMHTMLKeygenElement.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLKeygenElement.mm; sourceTree = ""; }; + A6148A7612E41E3B0044A784 /* JSHTMLKeygenElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLKeygenElement.cpp; sourceTree = ""; }; + A6148A7712E41E3B0044A784 /* JSHTMLKeygenElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLKeygenElement.h; sourceTree = ""; }; + A6148A7F12E41ED10044A784 /* HTMLKeygenElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLKeygenElement.idl; sourceTree = ""; }; + A622A8F9122C44A600A785B3 /* GenericBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GenericBinding.h; path = generic/GenericBinding.h; sourceTree = ""; }; + A6D169611346B49B000EB770 /* ShadowRoot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShadowRoot.cpp; sourceTree = ""; }; + A6D169631346B4C1000EB770 /* ShadowRoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShadowRoot.h; sourceTree = ""; }; + A7151BD712F1558F005A0F64 /* TextCheckerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextCheckerClient.h; sourceTree = ""; }; + A715E650134BBBEC00D8E713 /* ProgressShadowElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProgressShadowElement.cpp; sourceTree = ""; }; + A715E651134BBBEC00D8E713 /* ProgressShadowElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProgressShadowElement.h; sourceTree = ""; }; + A718760D0B2A120100A16ECE /* DragActions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DragActions.h; sourceTree = ""; }; + A718788F0B2D04AC00A16ECE /* DragControllerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DragControllerMac.mm; sourceTree = ""; }; + A7197F23175689C4007B9442 /* PageThrottler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageThrottler.h; sourceTree = ""; }; + A7197F2517568AE5007B9442 /* PageThrottler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageThrottler.cpp; sourceTree = ""; }; + A71A70C911AFB02000989D6D /* HTMLMeterElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLMeterElement.idl; sourceTree = ""; }; + A7211F231678A54200957444 /* NodeRenderingTraversal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NodeRenderingTraversal.cpp; sourceTree = ""; }; + A7211F241678A54200957444 /* NodeRenderingTraversal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeRenderingTraversal.h; sourceTree = ""; }; + A723F77A1484CA4C008C6DBE /* PlatformExportMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformExportMacros.h; sourceTree = ""; }; + A72763BE16689BFB002FCACB /* UserActionElementSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserActionElementSet.h; sourceTree = ""; }; + A72EA3BA1585CF55004FAA26 /* RefCountedSupplement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RefCountedSupplement.h; sourceTree = ""; }; + A73F95FC12C97BFE0031AAF9 /* RoundedRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RoundedRect.cpp; sourceTree = ""; }; + A73F95FD12C97BFE0031AAF9 /* RoundedRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoundedRect.h; sourceTree = ""; }; + A74BB76A13BDA86300FF7BF0 /* ExceptionCodePlaceholder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExceptionCodePlaceholder.h; sourceTree = ""; }; + A75E497410752ACB00C9B896 /* SerializedScriptValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SerializedScriptValue.h; sourceTree = ""; }; + A75E497510752ACB00C9B896 /* SerializedScriptValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SerializedScriptValue.cpp; sourceTree = ""; }; + A75E8B800E1DE2D6007F2481 /* FEBlend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FEBlend.cpp; path = filters/FEBlend.cpp; sourceTree = ""; }; + A75E8B810E1DE2D6007F2481 /* FEBlend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FEBlend.h; path = filters/FEBlend.h; sourceTree = ""; }; + A75E8B820E1DE2D6007F2481 /* FEColorMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FEColorMatrix.cpp; path = filters/FEColorMatrix.cpp; sourceTree = ""; }; + A75E8B830E1DE2D6007F2481 /* FEColorMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FEColorMatrix.h; path = filters/FEColorMatrix.h; sourceTree = ""; }; + A75E8B840E1DE2D6007F2481 /* FEComponentTransfer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FEComponentTransfer.cpp; path = filters/FEComponentTransfer.cpp; sourceTree = ""; }; + A75E8B850E1DE2D6007F2481 /* FEComponentTransfer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FEComponentTransfer.h; path = filters/FEComponentTransfer.h; sourceTree = ""; }; + A75E8B860E1DE2D6007F2481 /* FEComposite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FEComposite.cpp; path = filters/FEComposite.cpp; sourceTree = ""; }; + A75E8B870E1DE2D6007F2481 /* FEComposite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FEComposite.h; path = filters/FEComposite.h; sourceTree = ""; }; + A769E96916689D0C005D4529 /* UserActionElementSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserActionElementSet.cpp; sourceTree = ""; }; + A76E5F7E135E0DCF00A69837 /* RenderedDocumentMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderedDocumentMarker.h; sourceTree = ""; }; + A77979130D6B9D0C003851B9 /* ImageData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageData.cpp; sourceTree = ""; }; + A77979140D6B9D0C003851B9 /* ImageData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageData.h; sourceTree = ""; }; + A77979150D6B9D0C003851B9 /* ImageData.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ImageData.idl; sourceTree = ""; }; + A77979240D6B9E64003851B9 /* JSImageData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSImageData.cpp; sourceTree = ""; }; + A77979250D6B9E64003851B9 /* JSImageData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSImageData.h; sourceTree = ""; }; + A77B419F12E675A90054343D /* TextEventInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextEventInputType.h; sourceTree = ""; }; + A77D0011133B0AEB00D6658C /* TextChecking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextChecking.h; sourceTree = ""; }; + A77E1FED14AACB6E005B7CB6 /* TreeScopeAdopter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TreeScopeAdopter.cpp; sourceTree = ""; }; + A77E1FEE14AACB6E005B7CB6 /* TreeScopeAdopter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreeScopeAdopter.h; sourceTree = ""; }; + A781C6A613828B5D0012A62A /* DocumentMarker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentMarker.cpp; sourceTree = ""; }; + A784941A0B5FE507001E237A /* Clipboard.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Clipboard.cpp; sourceTree = ""; }; + A78E526D1346BD1700AD9C31 /* MeterShadowElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MeterShadowElement.cpp; sourceTree = ""; }; + A78E526E1346BD1700AD9C31 /* MeterShadowElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MeterShadowElement.h; sourceTree = ""; }; + A78FE13912366B1000ACE8D0 /* SpellChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpellChecker.cpp; sourceTree = ""; }; + A78FE13A12366B1000ACE8D0 /* SpellChecker.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = SpellChecker.h; sourceTree = ""; }; + A795463D0B5C4C80007B438F /* DragDataMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DragDataMac.mm; sourceTree = ""; }; + A79546420B5C4CB4007B438F /* DragData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DragData.cpp; sourceTree = ""; }; + A79BAD9D161E7F3F00C2E652 /* RuleFeature.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RuleFeature.cpp; sourceTree = ""; }; + A79BAD9E161E7F3F00C2E652 /* RuleFeature.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RuleFeature.h; sourceTree = ""; }; + A79BAD9F161E7F3F00C2E652 /* RuleSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RuleSet.cpp; sourceTree = ""; }; + A79BADA0161E7F3F00C2E652 /* RuleSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RuleSet.h; sourceTree = ""; }; + A7A78CD41532BA62006C21E4 /* ContainerNodeAlgorithms.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContainerNodeAlgorithms.cpp; sourceTree = ""; }; + A7AD2F850EC89D07008AB002 /* LinkHash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LinkHash.cpp; sourceTree = ""; }; + A7AD2F860EC89D07008AB002 /* LinkHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinkHash.h; sourceTree = ""; }; + A7B070D0130A409C00A3763C /* FrameActionScheduler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameActionScheduler.cpp; sourceTree = ""; }; + A7B070D1130A409C00A3763C /* FrameActionScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameActionScheduler.h; sourceTree = ""; }; + A7B4EA6814C9348400C8F5BF /* JSMallocStatistics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMallocStatistics.cpp; sourceTree = ""; }; + A7B4EA6914C9348400C8F5BF /* JSMallocStatistics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMallocStatistics.h; sourceTree = ""; }; + A7B4EA7814C9348400C8F5BF /* JSInternalSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInternalSettings.cpp; sourceTree = ""; }; + A7B4EA7914C9348400C8F5BF /* JSInternalSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSInternalSettings.h; sourceTree = ""; }; + A7B6E69D0B291A9600D0529F /* DragData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DragData.h; sourceTree = ""; }; + A7B7619F161EE526002083D3 /* StyleScopeResolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleScopeResolver.h; sourceTree = ""; }; + A7B7749614CF6353004044BB /* HTMLContentElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLContentElement.idl; sourceTree = ""; }; + A7BBE26411AFB3F20005EA03 /* JSHTMLMeterElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLMeterElement.cpp; sourceTree = ""; }; + A7BBE26511AFB3F20005EA03 /* JSHTMLMeterElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLMeterElement.h; sourceTree = ""; }; + A7BE7EDD14C9175A0014489D /* MallocStatistics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MallocStatistics.h; sourceTree = ""; }; + A7BE7EDE14C9175A0014489D /* MallocStatistics.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MallocStatistics.idl; sourceTree = ""; }; + A7BF7EDC14C9175A0014489D /* InternalSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InternalSettings.cpp; sourceTree = ""; }; + A7BF7EDD14C9175A0014489D /* InternalSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InternalSettings.h; sourceTree = ""; }; + A7BF7EDE14C9175A0014489D /* InternalSettings.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = InternalSettings.idl; sourceTree = ""; }; + A7C9ABF61357A3BF00F5503F /* DetailsMarkerControl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetailsMarkerControl.cpp; sourceTree = ""; }; + A7C9ABF71357A3BF00F5503F /* DetailsMarkerControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetailsMarkerControl.h; sourceTree = ""; }; + A7CA595B0B27BD9E00FA021D /* DragController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DragController.h; sourceTree = ""; }; + A7CA595C0B27BD9E00FA021D /* DragController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DragController.cpp; sourceTree = ""; }; + A7CA59620B27C1F200FA021D /* DragClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DragClient.h; sourceTree = ""; }; + A7CACDB013CE875B00BBBE3F /* ExceptionCodePlaceholder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExceptionCodePlaceholder.cpp; sourceTree = ""; }; + A7CFB3CF0B7ED10A0070C32D /* DragImage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DragImage.cpp; sourceTree = ""; }; + A7CFB3D00B7ED10A0070C32D /* DragImage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DragImage.h; sourceTree = ""; }; + A7CFB3D40B7ED1180070C32D /* DragImageMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DragImageMac.mm; sourceTree = ""; }; + A7D0318D0E93540300E24ACD /* JSImageDataCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSImageDataCustom.cpp; sourceTree = ""; }; + A7D20F3B107F373800A80392 /* WebGLActiveInfo.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLActiveInfo.idl; path = canvas/WebGLActiveInfo.idl; sourceTree = ""; }; + A7D20F60107F406900A80392 /* JSWebGLActiveInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLActiveInfo.cpp; sourceTree = ""; }; + A7D20F61107F406900A80392 /* JSWebGLActiveInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLActiveInfo.h; sourceTree = ""; }; + A7D20F6B107F438B00A80392 /* WebGLActiveInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLActiveInfo.h; path = canvas/WebGLActiveInfo.h; sourceTree = ""; }; + A7D3CA0E157DF8E900860A97 /* ContextFeatures.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContextFeatures.cpp; sourceTree = ""; }; + A7D3CA0F157DF8E900860A97 /* ContextFeatures.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContextFeatures.h; sourceTree = ""; }; + A7D6B3470F61104500B79FD1 /* WorkerScriptLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerScriptLoader.h; path = workers/WorkerScriptLoader.h; sourceTree = ""; }; + A7D6B3480F61104500B79FD1 /* WorkerScriptLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WorkerScriptLoader.cpp; path = workers/WorkerScriptLoader.cpp; sourceTree = ""; }; + A7DB418114CE1F0A00A2E316 /* ShadowRoot.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ShadowRoot.idl; sourceTree = ""; }; + A7DBF8DB1276919C006B6008 /* TextCheckingHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextCheckingHelper.cpp; sourceTree = ""; }; + A7DBF8DC1276919C006B6008 /* TextCheckingHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextCheckingHelper.h; sourceTree = ""; }; + A7F1F4BA17148BDB00CD4852 /* DOMWindowQuota.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = DOMWindowQuota.idl; path = Modules/quota/DOMWindowQuota.idl; sourceTree = SOURCE_ROOT; }; + A7F1F4BB17148BDB00CD4852 /* NavigatorStorageQuota.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = NavigatorStorageQuota.idl; path = Modules/quota/NavigatorStorageQuota.idl; sourceTree = SOURCE_ROOT; }; + A7F1F4BC17148BDB00CD4852 /* StorageErrorCallback.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = StorageErrorCallback.idl; path = Modules/quota/StorageErrorCallback.idl; sourceTree = SOURCE_ROOT; }; + A7F1F4BD17148BDB00CD4852 /* StorageInfo.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = StorageInfo.idl; path = Modules/quota/StorageInfo.idl; sourceTree = SOURCE_ROOT; }; + A7F1F4BE17148BDB00CD4852 /* StorageQuota.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = StorageQuota.idl; path = Modules/quota/StorageQuota.idl; sourceTree = SOURCE_ROOT; }; + A7F1F4BF17148BDB00CD4852 /* StorageQuotaCallback.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = StorageQuotaCallback.idl; path = Modules/quota/StorageQuotaCallback.idl; sourceTree = SOURCE_ROOT; }; + A7F1F4C017148BDB00CD4852 /* StorageUsageCallback.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = StorageUsageCallback.idl; path = Modules/quota/StorageUsageCallback.idl; sourceTree = SOURCE_ROOT; }; + A7F1F4C117148BDB00CD4852 /* WorkerNavigatorStorageQuota.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = WorkerNavigatorStorageQuota.idl; path = Modules/quota/WorkerNavigatorStorageQuota.idl; sourceTree = SOURCE_ROOT; }; + A7F5D94D1384F02D00A29A87 /* NodeRenderingContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NodeRenderingContext.cpp; sourceTree = ""; }; + A7F5D94E1384F02D00A29A87 /* NodeRenderingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeRenderingContext.h; sourceTree = ""; }; + A7F73ED9169AD7AA00CBAA4B /* DOMShadowRoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMShadowRoot.h; sourceTree = ""; }; + A7F73EDA169AD7AA00CBAA4B /* DOMShadowRoot.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMShadowRoot.mm; sourceTree = ""; }; + A80A38FD0E50CC8200A25EBC /* PatternCG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PatternCG.cpp; sourceTree = ""; }; + A80D67070E9E9DEB00E420F0 /* GraphicsContextPlatformPrivateCG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsContextPlatformPrivateCG.h; sourceTree = ""; }; + A80E6CBA0A1989CA007FB8C5 /* CSSValueList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSValueList.cpp; sourceTree = ""; }; + A80E6CBC0A1989CA007FB8C5 /* CSSPrimitiveValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSPrimitiveValue.h; sourceTree = ""; }; + A80E6CBD0A1989CA007FB8C5 /* CSSFontFaceRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSFontFaceRule.cpp; sourceTree = ""; }; + A80E6CBE0A1989CA007FB8C5 /* ShadowValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ShadowValue.h; sourceTree = ""; }; + A80E6CBF0A1989CA007FB8C5 /* CSSValueList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSValueList.h; sourceTree = ""; }; + A80E6CC10A1989CA007FB8C5 /* CSSImportRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSImportRule.cpp; sourceTree = ""; }; + A80E6CC30A1989CA007FB8C5 /* FontValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FontValue.h; sourceTree = ""; }; + A80E6CC40A1989CA007FB8C5 /* CSSValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSValue.h; sourceTree = ""; }; + A80E6CC50A1989CA007FB8C5 /* CSSStyleRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSStyleRule.cpp; sourceTree = ""; }; + A80E6CC60A1989CA007FB8C5 /* CSSInheritedValue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSInheritedValue.cpp; sourceTree = ""; }; + A80E6CC70A1989CA007FB8C5 /* FontValue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FontValue.cpp; sourceTree = ""; }; + A80E6CC80A1989CA007FB8C5 /* CSSRuleList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSRuleList.h; sourceTree = ""; }; + A80E6CCA0A1989CA007FB8C5 /* ShadowValue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ShadowValue.cpp; sourceTree = ""; }; + A80E6CCB0A1989CA007FB8C5 /* CSSPageRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSPageRule.cpp; sourceTree = ""; }; + A80E6CCC0A1989CA007FB8C5 /* CSSImportRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSImportRule.h; sourceTree = ""; }; + A80E6CCD0A1989CA007FB8C5 /* CSSProperty.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSProperty.cpp; sourceTree = ""; }; + A80E6CCE0A1989CA007FB8C5 /* CSSUnknownRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSUnknownRule.h; sourceTree = ""; }; + A80E6CCF0A1989CA007FB8C5 /* CSSCharsetRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSCharsetRule.h; sourceTree = ""; }; + A80E6CD00A1989CA007FB8C5 /* CSSImageValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSImageValue.h; sourceTree = ""; }; + A80E6CD10A1989CA007FB8C5 /* Pair.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Pair.h; sourceTree = ""; }; + A80E6CD20A1989CA007FB8C5 /* CSSMediaRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSMediaRule.cpp; sourceTree = ""; }; + A80E6CD30A1989CA007FB8C5 /* CSSFontFaceRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSFontFaceRule.h; sourceTree = ""; }; + A80E6CD40A1989CA007FB8C5 /* CSSImageValue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSImageValue.cpp; sourceTree = ""; }; + A80E6CD50A1989CA007FB8C5 /* CSSProperty.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSProperty.h; sourceTree = ""; }; + A80E6CD60A1989CA007FB8C5 /* CSSPageRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSPageRule.h; sourceTree = ""; }; + A80E6CD70A1989CA007FB8C5 /* CSSInheritedValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSInheritedValue.h; sourceTree = ""; }; + A80E6CD80A1989CA007FB8C5 /* CSSInitialValue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSInitialValue.cpp; sourceTree = ""; }; + A80E6CD90A1989CA007FB8C5 /* CSSMediaRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMediaRule.h; sourceTree = ""; }; + A80E6CDA0A1989CA007FB8C5 /* Counter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Counter.h; sourceTree = ""; }; + A80E6CDB0A1989CA007FB8C5 /* CSSPrimitiveValue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSPrimitiveValue.cpp; sourceTree = ""; }; + A80E6CDC0A1989CA007FB8C5 /* CSSRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSRule.cpp; sourceTree = ""; }; + A80E6CDE0A1989CA007FB8C5 /* CSSInitialValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSInitialValue.h; sourceTree = ""; }; + A80E6CDF0A1989CA007FB8C5 /* CSSRuleList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSRuleList.cpp; sourceTree = ""; }; + A80E6CE10A1989CA007FB8C5 /* DashboardRegion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DashboardRegion.h; sourceTree = ""; }; + A80E6CE20A1989CA007FB8C5 /* CSSStyleRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSStyleRule.h; sourceTree = ""; }; + A80E6CE30A1989CA007FB8C5 /* CSSRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSRule.h; sourceTree = ""; }; + A80E6DF90A199067007FB8C5 /* StylePropertySet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = StylePropertySet.cpp; sourceTree = ""; }; + A80E6DFA0A199067007FB8C5 /* StylePropertySet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = StylePropertySet.h; sourceTree = ""; }; + A80E6E0D0A19911C007FB8C5 /* CSSStyleDeclaration.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSStyleDeclaration.h; sourceTree = ""; }; + A80E73480A199C77007FB8C5 /* CSSSelector.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSSelector.cpp; sourceTree = ""; }; + A80E734B0A199C77007FB8C5 /* CSSSelector.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSSelector.h; sourceTree = ""; }; + A80E79960A19BD21007FB8C5 /* Rect.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = Rect.idl; sourceTree = ""; }; + A80E79FC0A19C307007FB8C5 /* HTMLMetaElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLMetaElement.idl; sourceTree = ""; }; + A80E7A150A19C3D6007FB8C5 /* JSHTMLMetaElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLMetaElement.cpp; sourceTree = ""; }; + A80E7A160A19C3D6007FB8C5 /* JSHTMLMetaElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLMetaElement.h; sourceTree = ""; }; + A80E7AAE0A19D1F1007FB8C5 /* HTMLTitleElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLTitleElement.idl; sourceTree = ""; }; + A80E7AAF0A19D1F1007FB8C5 /* HTMLBaseElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLBaseElement.idl; sourceTree = ""; }; + A80E7AB00A19D1F1007FB8C5 /* HTMLLinkElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLLinkElement.idl; sourceTree = ""; }; + A80E7AB10A19D1F1007FB8C5 /* HTMLHeadElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLHeadElement.idl; sourceTree = ""; }; + A80E7AB20A19D1F1007FB8C5 /* HTMLStyleElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLStyleElement.idl; sourceTree = ""; }; + A80E7B020A19D606007FB8C5 /* JSHTMLTitleElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLTitleElement.h; sourceTree = ""; }; + A80E7B030A19D606007FB8C5 /* JSHTMLLinkElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLLinkElement.h; sourceTree = ""; }; + A80E7B040A19D606007FB8C5 /* JSHTMLStyleElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLStyleElement.h; sourceTree = ""; }; + A80E7B050A19D606007FB8C5 /* JSHTMLStyleElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLStyleElement.cpp; sourceTree = ""; }; + A80E7B060A19D606007FB8C5 /* JSHTMLLinkElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLLinkElement.cpp; sourceTree = ""; }; + A80E7B070A19D606007FB8C5 /* JSHTMLBaseElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLBaseElement.h; sourceTree = ""; }; + A80E7B080A19D606007FB8C5 /* JSHTMLBaseElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLBaseElement.cpp; sourceTree = ""; }; + A80E7B090A19D606007FB8C5 /* JSHTMLTitleElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLTitleElement.cpp; sourceTree = ""; }; + A80E7B0A0A19D606007FB8C5 /* JSHTMLHeadElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLHeadElement.cpp; sourceTree = ""; }; + A80E7B0B0A19D606007FB8C5 /* JSHTMLHeadElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLHeadElement.h; sourceTree = ""; }; + A80E7E160A1A7CCB007FB8C5 /* HTMLTextAreaElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLTextAreaElement.idl; sourceTree = ""; }; + A80E7E170A1A7CCB007FB8C5 /* HTMLInputElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLInputElement.idl; sourceTree = ""; }; + A80E7E180A1A7CCB007FB8C5 /* HTMLOptionElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLOptionElement.idl; sourceTree = ""; }; + A80E7E190A1A7CCB007FB8C5 /* HTMLOptGroupElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLOptGroupElement.idl; sourceTree = ""; }; + A80E7E550A1A7FB3007FB8C5 /* HTMLButtonElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLButtonElement.idl; sourceTree = ""; }; + A80E7E8D0A1A83E3007FB8C5 /* JSHTMLInputElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLInputElement.h; sourceTree = ""; }; + A80E7E8E0A1A83E3007FB8C5 /* JSHTMLInputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLInputElement.cpp; sourceTree = ""; }; + A80E7E8F0A1A83E3007FB8C5 /* JSHTMLOptionElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLOptionElement.h; sourceTree = ""; }; + A80E7E900A1A83E3007FB8C5 /* JSHTMLOptionElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLOptionElement.cpp; sourceTree = ""; }; + A80E7E910A1A83E3007FB8C5 /* JSHTMLOptGroupElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLOptGroupElement.h; sourceTree = ""; }; + A80E7E920A1A83E3007FB8C5 /* JSHTMLOptGroupElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLOptGroupElement.cpp; sourceTree = ""; }; + A80E7E930A1A83E3007FB8C5 /* JSHTMLTextAreaElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLTextAreaElement.h; sourceTree = ""; }; + A80E7E940A1A83E3007FB8C5 /* JSHTMLTextAreaElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLTextAreaElement.cpp; sourceTree = ""; }; + A80E7E950A1A83E3007FB8C5 /* JSHTMLButtonElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLButtonElement.h; sourceTree = ""; }; + A80E7E960A1A83E3007FB8C5 /* JSHTMLButtonElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLButtonElement.cpp; sourceTree = ""; }; + A81369B0097374F500D74463 /* HTMLInputElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLInputElement.h; sourceTree = ""; }; + A81369B1097374F500D74463 /* HTMLInputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLInputElement.cpp; sourceTree = ""; }; + A81369B2097374F500D74463 /* HTMLFormControlElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLFormControlElement.h; sourceTree = ""; }; + A81369B3097374F500D74463 /* HTMLFormControlElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLFormControlElement.cpp; sourceTree = ""; }; + A81369B4097374F500D74463 /* HTMLFormElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLFormElement.h; sourceTree = ""; }; + A81369B5097374F500D74463 /* HTMLFormElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLFormElement.cpp; sourceTree = ""; }; + A81369B6097374F500D74463 /* HTMLButtonElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLButtonElement.h; sourceTree = ""; }; + A81369B7097374F500D74463 /* HTMLButtonElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLButtonElement.cpp; sourceTree = ""; }; + A81369B8097374F500D74463 /* HTMLFieldSetElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLFieldSetElement.h; sourceTree = ""; }; + A81369B9097374F500D74463 /* HTMLFieldSetElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLFieldSetElement.cpp; sourceTree = ""; }; + A81369BA097374F500D74463 /* HTMLTextAreaElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLTextAreaElement.h; sourceTree = ""; }; + A81369BB097374F500D74463 /* HTMLTextAreaElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLTextAreaElement.cpp; sourceTree = ""; }; + A81369BC097374F500D74463 /* HTMLSelectElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLSelectElement.h; sourceTree = ""; }; + A81369BD097374F500D74463 /* HTMLSelectElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLSelectElement.cpp; sourceTree = ""; }; + A81369BE097374F500D74463 /* HTMLOptionsCollection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLOptionsCollection.h; sourceTree = ""; }; + A81369C0097374F500D74463 /* HTMLOptionElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLOptionElement.h; sourceTree = ""; }; + A81369C1097374F500D74463 /* HTMLOptionElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLOptionElement.cpp; sourceTree = ""; }; + A81369C2097374F500D74463 /* HTMLOptGroupElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLOptGroupElement.h; sourceTree = ""; }; + A81369C3097374F500D74463 /* HTMLOptGroupElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLOptGroupElement.cpp; sourceTree = ""; }; + A81369C4097374F500D74463 /* HTMLLegendElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLLegendElement.h; sourceTree = ""; }; + A81369C5097374F500D74463 /* HTMLLegendElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLLegendElement.cpp; sourceTree = ""; }; + A81369C6097374F500D74463 /* HTMLLabelElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLLabelElement.h; sourceTree = ""; }; + A81369C7097374F500D74463 /* HTMLLabelElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLLabelElement.cpp; sourceTree = ""; }; + A81369C8097374F500D74463 /* HTMLKeygenElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLKeygenElement.h; sourceTree = ""; }; + A81369C9097374F600D74463 /* HTMLKeygenElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLKeygenElement.cpp; sourceTree = ""; }; + A8136D360973A8E700D74463 /* FormDataList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FormDataList.h; sourceTree = ""; }; + A8136D370973A8E700D74463 /* FormDataList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FormDataList.cpp; sourceTree = ""; }; + A8185F3109765765005826D9 /* DocumentType.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DocumentType.h; sourceTree = ""; }; + A8185F3209765765005826D9 /* DocumentType.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentType.cpp; sourceTree = ""; }; + A8185F3309765765005826D9 /* DOMImplementation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMImplementation.h; sourceTree = ""; }; + A8185F3409765765005826D9 /* Document.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Document.cpp; sourceTree = ""; }; + A8185F3509765765005826D9 /* DocumentFragment.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DocumentFragment.h; sourceTree = ""; }; + A8185F3609765765005826D9 /* DOMImplementation.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DOMImplementation.cpp; sourceTree = ""; }; + A8185F3709765765005826D9 /* DocumentFragment.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentFragment.cpp; sourceTree = ""; }; + A8185F3809765765005826D9 /* Document.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Document.h; sourceTree = ""; }; + A81872100977D3C0005826D9 /* NodeList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NodeList.h; sourceTree = ""; }; + A81872110977D3C0005826D9 /* ContainerNode.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ContainerNode.h; sourceTree = ""; }; + A81872130977D3C0005826D9 /* NameNodeList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NameNodeList.h; sourceTree = ""; }; + A81872140977D3C0005826D9 /* ContainerNode.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContainerNode.cpp; sourceTree = ""; }; + A81872150977D3C0005826D9 /* ChildNodeList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ChildNodeList.h; sourceTree = ""; }; + A81872180977D3C0005826D9 /* NamedNodeMap.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NamedNodeMap.h; sourceTree = ""; }; + A81872190977D3C0005826D9 /* NameNodeList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = NameNodeList.cpp; sourceTree = ""; }; + A818721A0977D3C0005826D9 /* ChildNodeList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ChildNodeList.cpp; sourceTree = ""; }; + A8239DFE09B3CF8A00B60641 /* Logging.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Logging.cpp; sourceTree = ""; }; + A8239DFF09B3CF8A00B60641 /* Logging.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Logging.h; sourceTree = ""; }; + A824B4640E2EF2EA0081A7B7 /* TextRun.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextRun.h; sourceTree = ""; }; + A833C7F60A2CF1D800D57664 /* xmlattrs.in */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = xmlattrs.in; sourceTree = ""; }; + A833C80A0A2CF25600D57664 /* XMLNames.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XMLNames.cpp; sourceTree = ""; }; + A833C80B0A2CF25600D57664 /* XMLNames.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XMLNames.h; sourceTree = ""; }; + A83B533814F399BB00720D9D /* IDLAttributes.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = IDLAttributes.txt; path = scripts/IDLAttributes.txt; sourceTree = ""; }; + A83B538014FBB2EC00720D9D /* preprocess-idls.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = "preprocess-idls.pl"; path = "scripts/preprocess-idls.pl"; sourceTree = ""; }; + A83B78F20CCAFF15000B0825 /* JSSVGFontFaceUriElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGFontFaceUriElement.h; sourceTree = ""; }; + A83B78F30CCAFF15000B0825 /* JSSVGFontFaceUriElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFontFaceUriElement.cpp; sourceTree = ""; }; + A83B78F40CCAFF15000B0825 /* JSSVGFontFaceSrcElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGFontFaceSrcElement.h; sourceTree = ""; }; + A83B78F50CCAFF15000B0825 /* JSSVGFontFaceSrcElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFontFaceSrcElement.cpp; sourceTree = ""; }; + A83B78F60CCAFF15000B0825 /* JSSVGFontFaceFormatElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGFontFaceFormatElement.h; sourceTree = ""; }; + A83B78F70CCAFF15000B0825 /* JSSVGFontFaceFormatElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFontFaceFormatElement.cpp; sourceTree = ""; }; + A83B78F80CCAFF15000B0825 /* JSSVGFontFaceNameElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGFontFaceNameElement.h; sourceTree = ""; }; + A83B78F90CCAFF15000B0825 /* JSSVGFontFaceNameElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFontFaceNameElement.cpp; sourceTree = ""; }; + A83B78FA0CCAFF15000B0825 /* JSSVGFontFaceElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFontFaceElement.cpp; sourceTree = ""; }; + A83B78FB0CCAFF15000B0825 /* JSSVGFontFaceElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGFontFaceElement.h; sourceTree = ""; }; + A83E1C720E49042B00140B9C /* ScriptControllerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScriptControllerMac.mm; sourceTree = ""; }; + A84D827B11D333ED00972990 /* RawDataDocumentParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RawDataDocumentParser.h; sourceTree = ""; }; + A84D82BF11D3474800972990 /* ScriptableDocumentParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptableDocumentParser.h; sourceTree = ""; }; + A84D82C011D3474800972990 /* ScriptableDocumentParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptableDocumentParser.cpp; sourceTree = ""; }; + A84EBD770CB8C89200079609 /* JSStyleSheetListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSStyleSheetListCustom.cpp; sourceTree = ""; }; + A84EBD810CB8C97700079609 /* JSStyleSheetList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStyleSheetList.h; sourceTree = ""; }; + A84EBD820CB8C97700079609 /* JSStyleSheetList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSStyleSheetList.cpp; sourceTree = ""; }; + A853123C11D0471B00D4D077 /* FragmentScriptingPermission.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FragmentScriptingPermission.h; sourceTree = ""; }; + A85D7A2F0879EBA9006A9172 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = ""; }; + A85F22081430377D007CC884 /* JSPopStateEventCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPopStateEventCustom.cpp; sourceTree = ""; }; + A863E2001343412000274926 /* UnicodeBidi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnicodeBidi.h; sourceTree = ""; }; + A86629C909DA2B47009633A5 /* JSUIEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSUIEvent.h; sourceTree = ""; }; + A86629CA09DA2B47009633A5 /* JSUIEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSUIEvent.cpp; sourceTree = ""; }; + A86629CB09DA2B47009633A5 /* JSMouseEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSMouseEvent.h; sourceTree = ""; }; + A86629CC09DA2B47009633A5 /* JSMouseEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSMouseEvent.cpp; sourceTree = ""; }; + A86629CD09DA2B47009633A5 /* JSKeyboardEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSKeyboardEvent.h; sourceTree = ""; }; + A86629CE09DA2B47009633A5 /* JSKeyboardEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSKeyboardEvent.cpp; sourceTree = ""; }; + A871D44C0A127CBC00B12A68 /* HTMLPlugInElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLPlugInElement.h; sourceTree = ""; }; + A871D44D0A127CBC00B12A68 /* HTMLPlugInElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLPlugInElement.cpp; sourceTree = ""; }; + A871D44E0A127CBC00B12A68 /* HTMLParamElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLParamElement.h; sourceTree = ""; }; + A871D44F0A127CBC00B12A68 /* HTMLParamElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLParamElement.cpp; sourceTree = ""; }; + A871D4500A127CBC00B12A68 /* HTMLObjectElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLObjectElement.h; sourceTree = ""; }; + A871D4510A127CBC00B12A68 /* HTMLObjectElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLObjectElement.cpp; sourceTree = ""; }; + A871D4520A127CBC00B12A68 /* HTMLEmbedElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLEmbedElement.h; sourceTree = ""; }; + A871D4530A127CBC00B12A68 /* HTMLAppletElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLAppletElement.h; sourceTree = ""; }; + A871D4540A127CBC00B12A68 /* HTMLAppletElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLAppletElement.cpp; sourceTree = ""; }; + A871D4550A127CBC00B12A68 /* HTMLEmbedElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLEmbedElement.cpp; sourceTree = ""; }; + A871DB170A150BD600B12A68 /* HTMLTableSectionElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLTableSectionElement.h; sourceTree = ""; }; + A871DB180A150BD600B12A68 /* HTMLTableSectionElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLTableSectionElement.cpp; sourceTree = ""; }; + A871DB190A150BD600B12A68 /* HTMLTableElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLTableElement.h; sourceTree = ""; }; + A871DB1A0A150BD600B12A68 /* HTMLTableElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLTableElement.cpp; sourceTree = ""; }; + A871DB1B0A150BD600B12A68 /* HTMLTableColElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLTableColElement.cpp; sourceTree = ""; }; + A871DB1C0A150BD600B12A68 /* HTMLTableCellElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLTableCellElement.h; sourceTree = ""; }; + A871DB1D0A150BD600B12A68 /* HTMLTableCaptionElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLTableCaptionElement.h; sourceTree = ""; }; + A871DB1E0A150BD600B12A68 /* HTMLTablePartElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLTablePartElement.h; sourceTree = ""; }; + A871DB1F0A150BD600B12A68 /* HTMLTablePartElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLTablePartElement.cpp; sourceTree = ""; }; + A871DB200A150BD600B12A68 /* HTMLTableCellElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLTableCellElement.cpp; sourceTree = ""; }; + A871DB210A150BD600B12A68 /* HTMLTableColElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLTableColElement.h; sourceTree = ""; }; + A871DB220A150BD600B12A68 /* HTMLTableRowElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLTableRowElement.cpp; sourceTree = ""; }; + A871DB230A150BD600B12A68 /* HTMLTableRowElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLTableRowElement.h; sourceTree = ""; }; + A871DB240A150BD600B12A68 /* HTMLTableCaptionElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLTableCaptionElement.cpp; sourceTree = ""; }; + A871DC130A15205700B12A68 /* HTMLBaseElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLBaseElement.h; sourceTree = ""; }; + A871DC140A15205700B12A68 /* HTMLLinkElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLLinkElement.h; sourceTree = ""; }; + A871DC150A15205700B12A68 /* HTMLLinkElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLLinkElement.cpp; sourceTree = ""; }; + A871DC160A15205700B12A68 /* HTMLScriptElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLScriptElement.cpp; sourceTree = ""; }; + A871DC170A15205700B12A68 /* HTMLStyleElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLStyleElement.h; sourceTree = ""; }; + A871DC180A15205700B12A68 /* HTMLMetaElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLMetaElement.h; sourceTree = ""; }; + A871DC190A15205700B12A68 /* HTMLScriptElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLScriptElement.h; sourceTree = ""; }; + A871DC1A0A15205700B12A68 /* HTMLStyleElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLStyleElement.cpp; sourceTree = ""; }; + A871DC1B0A15205700B12A68 /* HTMLMetaElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLMetaElement.cpp; sourceTree = ""; }; + A871DC1C0A15205700B12A68 /* HTMLTitleElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLTitleElement.h; sourceTree = ""; }; + A871DC1D0A15205700B12A68 /* HTMLTitleElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLTitleElement.cpp; sourceTree = ""; }; + A871DC1E0A15205700B12A68 /* HTMLBaseElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLBaseElement.cpp; sourceTree = ""; }; + A871DE170A152AC800B12A68 /* HTMLFrameElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLFrameElement.cpp; sourceTree = ""; }; + A871DE180A152AC800B12A68 /* HTMLIFrameElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLIFrameElement.cpp; sourceTree = ""; }; + A871DE190A152AC800B12A68 /* HTMLHeadElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLHeadElement.cpp; sourceTree = ""; }; + A871DE1A0A152AC800B12A68 /* HTMLHtmlElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLHtmlElement.cpp; sourceTree = ""; }; + A871DE1B0A152AC800B12A68 /* HTMLHtmlElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLHtmlElement.h; sourceTree = ""; }; + A871DE1C0A152AC800B12A68 /* HTMLFrameSetElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLFrameSetElement.h; sourceTree = ""; }; + A871DE1D0A152AC800B12A68 /* HTMLBodyElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLBodyElement.cpp; sourceTree = ""; }; + A871DE1E0A152AC800B12A68 /* HTMLIFrameElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLIFrameElement.h; sourceTree = ""; }; + A871DE1F0A152AC800B12A68 /* HTMLFrameElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLFrameElement.h; sourceTree = ""; }; + A871DE200A152AC800B12A68 /* HTMLBodyElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLBodyElement.h; sourceTree = ""; }; + A871DE210A152AC800B12A68 /* HTMLHeadElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLHeadElement.h; sourceTree = ""; }; + A871DE220A152AC800B12A68 /* HTMLFrameSetElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLFrameSetElement.cpp; sourceTree = ""; }; + A871DEC80A1530C700B12A68 /* RenderPart.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderPart.cpp; sourceTree = ""; }; + A871DEC90A1530C700B12A68 /* RenderFrameSet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderFrameSet.h; sourceTree = ""; }; + A871DECA0A1530C700B12A68 /* RenderFrameSet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderFrameSet.cpp; sourceTree = ""; }; + A871DECB0A1530C700B12A68 /* RenderFrame.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderFrame.h; sourceTree = ""; }; + A871DECC0A1530C700B12A68 /* RenderFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderFrame.cpp; sourceTree = ""; }; + A871DECF0A1530C700B12A68 /* RenderPart.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderPart.h; sourceTree = ""; }; + A871DFDE0A15376B00B12A68 /* RenderReplaced.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderReplaced.cpp; sourceTree = ""; }; + A871DFDF0A15376B00B12A68 /* RenderReplaced.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderReplaced.h; sourceTree = ""; }; + A871DFE00A15376B00B12A68 /* RenderWidget.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderWidget.h; sourceTree = ""; }; + A871DFE10A15376B00B12A68 /* RenderWidget.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderWidget.cpp; sourceTree = ""; }; + A8748BDF12CBF2DC001FBA41 /* HashTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashTools.h; sourceTree = ""; }; + A8748D6612CC3763001FBA41 /* ImageOrientation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageOrientation.h; sourceTree = ""; }; + A8748D7412CC3F89001FBA41 /* ImageOrientation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageOrientation.cpp; sourceTree = ""; }; + A8805AF116C96AEA000E9D98 /* InputStreamPreprocessor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = InputStreamPreprocessor.h; path = parser/InputStreamPreprocessor.h; sourceTree = ""; }; + A882DA1F1593846A000115ED /* CSSToStyleMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSToStyleMap.cpp; sourceTree = ""; }; + A882DA221593848D000115ED /* CSSToStyleMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSToStyleMap.h; sourceTree = ""; }; + A883DF250F3D045D00F19BF6 /* VisibleSelection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VisibleSelection.cpp; sourceTree = ""; }; + A883DF260F3D045D00F19BF6 /* VisibleSelection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VisibleSelection.h; sourceTree = ""; }; + A88DD4860B4629A300C02990 /* PathTraversalState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PathTraversalState.h; sourceTree = ""; }; + A88DD4880B4629B000C02990 /* PathTraversalState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PathTraversalState.cpp; sourceTree = ""; }; + A895709E16E9BD5900184E55 /* HTMLIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLIdentifier.h; path = parser/HTMLIdentifier.h; sourceTree = ""; }; + A89943260B42338700D7C802 /* BitmapImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitmapImage.h; sourceTree = ""; }; + A89943270B42338700D7C802 /* BitmapImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BitmapImage.cpp; sourceTree = ""; }; + A89CCC500F44E98100B5DA10 /* ReplaceNodeWithSpanCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReplaceNodeWithSpanCommand.cpp; sourceTree = ""; }; + A89CCC510F44E98100B5DA10 /* ReplaceNodeWithSpanCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReplaceNodeWithSpanCommand.h; sourceTree = ""; }; + A8BC04911214F69600B5F122 /* HTMLEntityTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLEntityTable.cpp; sourceTree = ""; }; + A8C2280D11D4A59700D5A7D3 /* DocumentParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentParser.cpp; sourceTree = ""; }; + A8C2289F11D5722E00D5A7D3 /* DecodedDataDocumentParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DecodedDataDocumentParser.h; sourceTree = ""; }; + A8C228A011D5722E00D5A7D3 /* DecodedDataDocumentParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DecodedDataDocumentParser.cpp; sourceTree = ""; }; + A8C402921348B2220063F1E5 /* BidiRunList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BidiRunList.h; sourceTree = ""; }; + A8C4A7EB09D563270003AC8D /* StyledElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = StyledElement.h; sourceTree = ""; }; + A8C4A7EC09D563270003AC8D /* StyledElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = StyledElement.cpp; sourceTree = ""; }; + A8C4A7EE09D563270003AC8D /* Node.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Node.cpp; sourceTree = ""; }; + A8C4A7F509D563270003AC8D /* Element.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Element.h; sourceTree = ""; }; + A8C4A7F609D563270003AC8D /* Element.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Element.cpp; sourceTree = ""; }; + A8C4A7F909D563270003AC8D /* Attribute.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Attribute.h; sourceTree = ""; }; + A8C4A7FB09D563270003AC8D /* Attr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Attr.h; sourceTree = ""; }; + A8C4A7FC09D563270003AC8D /* Attr.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Attr.cpp; sourceTree = ""; }; + A8CB41020E85B8A50032C4F0 /* DashArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DashArray.h; sourceTree = ""; }; + A8CCBB46151F831600AB7CE9 /* DOMWindowWebDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DOMWindowWebDatabase.cpp; path = Modules/webdatabase/DOMWindowWebDatabase.cpp; sourceTree = ""; }; + A8CCBB47151F831600AB7CE9 /* DOMWindowWebDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DOMWindowWebDatabase.h; path = Modules/webdatabase/DOMWindowWebDatabase.h; sourceTree = ""; }; + A8CCBB4A151F833B00AB7CE9 /* WorkerGlobalScopeWebDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WorkerGlobalScopeWebDatabase.cpp; path = Modules/webdatabase/WorkerGlobalScopeWebDatabase.cpp; sourceTree = ""; }; + A8CCBB4B151F833B00AB7CE9 /* WorkerGlobalScopeWebDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerGlobalScopeWebDatabase.h; path = Modules/webdatabase/WorkerGlobalScopeWebDatabase.h; sourceTree = ""; }; + A8CCBB4E151F835A00AB7CE9 /* DOMWindowWebDatabase.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DOMWindowWebDatabase.idl; path = Modules/webdatabase/DOMWindowWebDatabase.idl; sourceTree = ""; }; + A8CCBB4F151F837500AB7CE9 /* WorkerGlobalScopeWebDatabase.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WorkerGlobalScopeWebDatabase.idl; path = Modules/webdatabase/WorkerGlobalScopeWebDatabase.idl; sourceTree = ""; }; + A8CFF0480A154F09000A4234 /* FixedTableLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FixedTableLayout.cpp; sourceTree = ""; }; + A8CFF0490A154F09000A4234 /* AutoTableLayout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AutoTableLayout.h; sourceTree = ""; }; + A8CFF04A0A154F09000A4234 /* FixedTableLayout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FixedTableLayout.h; sourceTree = ""; }; + A8CFF04B0A154F09000A4234 /* AutoTableLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AutoTableLayout.cpp; sourceTree = ""; }; + A8CFF04C0A154F09000A4234 /* TableLayout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TableLayout.h; sourceTree = ""; }; + A8CFF5DA0A155A05000A4234 /* RootInlineBox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RootInlineBox.h; sourceTree = ""; }; + A8CFF5DC0A155A05000A4234 /* InlineFlowBox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = InlineFlowBox.h; sourceTree = ""; }; + A8CFF5DD0A155A05000A4234 /* InlineFlowBox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = InlineFlowBox.cpp; sourceTree = ""; }; + A8CFF5DE0A155A05000A4234 /* InlineBox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = InlineBox.h; sourceTree = ""; }; + A8CFF5DF0A155A05000A4234 /* InlineBox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = InlineBox.cpp; sourceTree = ""; }; + A8CFF5E00A155A05000A4234 /* RootInlineBox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RootInlineBox.cpp; sourceTree = ""; }; + A8CFF6BD0A156118000A4234 /* EllipsisBox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = EllipsisBox.h; sourceTree = ""; }; + A8CFF6CA0A1561CD000A4234 /* EllipsisBox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = EllipsisBox.cpp; sourceTree = ""; }; + A8CFF7980A156978000A4234 /* HTMLFontElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLFontElement.cpp; sourceTree = ""; }; + A8CFF7990A156978000A4234 /* HTMLQuoteElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLQuoteElement.h; sourceTree = ""; }; + A8CFF79A0A156978000A4234 /* HTMLAnchorElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLAnchorElement.cpp; sourceTree = ""; }; + A8CFF79B0A156978000A4234 /* HTMLQuoteElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLQuoteElement.cpp; sourceTree = ""; }; + A8CFF79C0A156978000A4234 /* HTMLFontElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLFontElement.h; sourceTree = ""; }; + A8CFF79D0A156978000A4234 /* HTMLModElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLModElement.h; sourceTree = ""; }; + A8CFF79E0A156978000A4234 /* HTMLBRElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLBRElement.cpp; sourceTree = ""; }; + A8CFF79F0A156978000A4234 /* HTMLModElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLModElement.cpp; sourceTree = ""; }; + A8CFF7A00A156978000A4234 /* HTMLBRElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLBRElement.h; sourceTree = ""; }; + A8CFF7A10A156978000A4234 /* HTMLAnchorElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLAnchorElement.h; sourceTree = ""; }; + A8D05FA50A23B301005E7203 /* JSCSSRuleList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSRuleList.cpp; sourceTree = ""; }; + A8D05FA60A23B301005E7203 /* JSCSSRuleList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCSSRuleList.h; sourceTree = ""; }; + A8D05FA90A23B30F005E7203 /* JSCSSValueList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSValueList.cpp; sourceTree = ""; }; + A8D05FAA0A23B30F005E7203 /* JSCSSValueList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCSSValueList.h; sourceTree = ""; }; + A8D064EF0A23BFEA005E7203 /* HTMLFormElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = HTMLFormElement.idl; sourceTree = ""; }; + A8D064F90A23C0CC005E7203 /* JSHTMLFormElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLFormElement.cpp; sourceTree = ""; }; + A8D064FA0A23C0CC005E7203 /* JSHTMLFormElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLFormElement.h; sourceTree = ""; }; + A8D0651B0A23C1FE005E7203 /* CSSRuleList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSRuleList.idl; sourceTree = ""; }; + A8D0651C0A23C1FE005E7203 /* CSSValueList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSValueList.idl; sourceTree = ""; }; + A8D065AD0A2446CD005E7203 /* JSHTMLFormElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLFormElementCustom.cpp; sourceTree = ""; }; + A8D06B370A265DCD005E7203 /* HTMLNames.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLNames.h; sourceTree = ""; }; + A8D06B380A265DCD005E7203 /* HTMLNames.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLNames.cpp; sourceTree = ""; }; + A8D223FB16B52E4E00157288 /* HTMLResourcePreloader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLResourcePreloader.cpp; path = parser/HTMLResourcePreloader.cpp; sourceTree = ""; }; + A8D223FC16B52E4E00157288 /* HTMLResourcePreloader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLResourcePreloader.h; path = parser/HTMLResourcePreloader.h; sourceTree = ""; }; + A8DF3FC6097FA0FB0052981B /* HTMLFormControlsCollection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLFormControlsCollection.h; sourceTree = ""; }; + A8DF3FC7097FA0FB0052981B /* HTMLFormControlsCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLFormControlsCollection.cpp; sourceTree = ""; }; + A8DF3FC8097FA0FB0052981B /* HTMLCollection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLCollection.h; sourceTree = ""; }; + A8DF3FC9097FA0FB0052981B /* HTMLCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLCollection.cpp; sourceTree = ""; }; + A8DF3FCA097FA0FB0052981B /* HTMLBaseFontElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLBaseFontElement.h; sourceTree = ""; }; + A8DF3FCB097FA0FB0052981B /* HTMLBaseFontElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLBaseFontElement.cpp; sourceTree = ""; }; + A8DF3FCC097FA0FB0052981B /* HTMLNameCollection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLNameCollection.h; sourceTree = ""; }; + A8DF3FCD097FA0FB0052981B /* HTMLNameCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLNameCollection.cpp; sourceTree = ""; }; + A8DF4ADE0980C42C0052981B /* RenderTableCol.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTableCol.cpp; sourceTree = ""; }; + A8DF4ADF0980C42C0052981B /* RenderTableCell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderTableCell.h; sourceTree = ""; }; + A8DF4AE00980C42C0052981B /* RenderTableCell.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTableCell.cpp; sourceTree = ""; }; + A8DF4AE10980C42C0052981B /* RenderTable.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderTable.h; sourceTree = ""; }; + A8DF4AE20980C42C0052981B /* RenderTable.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTable.cpp; sourceTree = ""; }; + A8DF4AE30980C42C0052981B /* RenderTableSection.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTableSection.cpp; sourceTree = ""; }; + A8DF4AE40980C42C0052981B /* RenderTableRow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderTableRow.h; sourceTree = ""; }; + A8DF4AE50980C42C0052981B /* RenderTableSection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderTableSection.h; sourceTree = ""; }; + A8DF4AE60980C42C0052981B /* RenderTableRow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTableRow.cpp; sourceTree = ""; }; + A8DF4AE70980C42C0052981B /* RenderTableCol.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderTableCol.h; sourceTree = ""; }; + A8EA73AF0A1900E300A8EF5F /* RenderFieldset.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderFieldset.cpp; sourceTree = ""; }; + A8EA73B00A1900E300A8EF5F /* RenderFieldset.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderFieldset.h; sourceTree = ""; }; + A8EA79E50A1916DF00A8EF5F /* HTMLOListElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLOListElement.h; sourceTree = ""; }; + A8EA79E60A1916DF00A8EF5F /* HTMLUListElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLUListElement.h; sourceTree = ""; }; + A8EA79E70A1916DF00A8EF5F /* HTMLUListElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLUListElement.cpp; sourceTree = ""; }; + A8EA79E80A1916DF00A8EF5F /* HTMLMenuElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLMenuElement.h; sourceTree = ""; }; + A8EA79E90A1916DF00A8EF5F /* HTMLDListElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLDListElement.cpp; sourceTree = ""; }; + A8EA79EA0A1916DF00A8EF5F /* HTMLLIElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLLIElement.h; sourceTree = ""; }; + A8EA79EB0A1916DF00A8EF5F /* HTMLDListElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLDListElement.h; sourceTree = ""; }; + A8EA79EC0A1916DF00A8EF5F /* HTMLMenuElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLMenuElement.cpp; sourceTree = ""; }; + A8EA79ED0A1916DF00A8EF5F /* HTMLDirectoryElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLDirectoryElement.cpp; sourceTree = ""; }; + A8EA79EE0A1916DF00A8EF5F /* HTMLDirectoryElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLDirectoryElement.h; sourceTree = ""; }; + A8EA79EF0A1916DF00A8EF5F /* HTMLOListElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLOListElement.cpp; sourceTree = ""; }; + A8EA79F00A1916DF00A8EF5F /* HTMLLIElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLLIElement.cpp; sourceTree = ""; }; + A8EA7A480A191A5200A8EF5F /* RenderListItem.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderListItem.cpp; sourceTree = ""; }; + A8EA7A4A0A191A5200A8EF5F /* RenderListMarker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderListMarker.h; sourceTree = ""; }; + A8EA7A4B0A191A5200A8EF5F /* RenderListMarker.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderListMarker.cpp; sourceTree = ""; }; + A8EA7A4C0A191A5200A8EF5F /* RenderListItem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderListItem.h; sourceTree = ""; }; + A8EA7C9D0A192B9C00A8EF5F /* HTMLMarqueeElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLMarqueeElement.h; sourceTree = ""; }; + A8EA7C9E0A192B9C00A8EF5F /* HTMLMarqueeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLMarqueeElement.cpp; sourceTree = ""; }; + A8EA7C9F0A192B9C00A8EF5F /* HTMLPreElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLPreElement.cpp; sourceTree = ""; }; + A8EA7CA00A192B9C00A8EF5F /* HTMLHeadingElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLHeadingElement.cpp; sourceTree = ""; }; + A8EA7CA10A192B9C00A8EF5F /* HTMLHRElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLHRElement.h; sourceTree = ""; }; + A8EA7CA20A192B9C00A8EF5F /* HTMLPreElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLPreElement.h; sourceTree = ""; }; + A8EA7CA30A192B9C00A8EF5F /* HTMLDivElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLDivElement.cpp; sourceTree = ""; }; + A8EA7CA40A192B9C00A8EF5F /* HTMLParagraphElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLParagraphElement.cpp; sourceTree = ""; }; + A8EA7CA50A192B9C00A8EF5F /* HTMLHRElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLHRElement.cpp; sourceTree = ""; }; + A8EA7CA70A192B9C00A8EF5F /* HTMLParagraphElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLParagraphElement.h; sourceTree = ""; }; + A8EA7CA90A192B9C00A8EF5F /* HTMLDivElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLDivElement.h; sourceTree = ""; }; + A8EA7CAA0A192B9C00A8EF5F /* HTMLHeadingElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLHeadingElement.h; sourceTree = ""; }; + A8EA7D230A19385500A8EF5F /* HTMLImageLoader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLImageLoader.h; sourceTree = ""; }; + A8EA7D240A19385500A8EF5F /* HTMLMapElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLMapElement.h; sourceTree = ""; }; + A8EA7D250A19385500A8EF5F /* HTMLImageElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLImageElement.h; sourceTree = ""; }; + A8EA7D260A19385500A8EF5F /* HTMLAreaElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLAreaElement.h; sourceTree = ""; }; + A8EA7D270A19385500A8EF5F /* HTMLAreaElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLAreaElement.cpp; sourceTree = ""; }; + A8EA7D280A19385500A8EF5F /* HTMLImageLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLImageLoader.cpp; sourceTree = ""; }; + A8EA7D290A19385500A8EF5F /* HTMLImageElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLImageElement.cpp; sourceTree = ""; }; + A8EA7D2A0A19385500A8EF5F /* HTMLMapElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLMapElement.cpp; sourceTree = ""; }; + A8EA7EB40A1945D000A8EF5F /* ProcessingInstruction.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ProcessingInstruction.h; sourceTree = ""; }; + A8EA7EB50A1945D000A8EF5F /* ProcessingInstruction.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessingInstruction.cpp; sourceTree = ""; }; + A8EA7EB60A1945D000A8EF5F /* Notation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Notation.h; sourceTree = ""; }; + A8EA7EB70A1945D000A8EF5F /* Notation.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Notation.cpp; sourceTree = ""; }; + A8EA7EB80A1945D000A8EF5F /* EntityReference.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = EntityReference.h; sourceTree = ""; }; + A8EA7EB90A1945D000A8EF5F /* EntityReference.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = EntityReference.cpp; sourceTree = ""; }; + A8EA7EBA0A1945D000A8EF5F /* Entity.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Entity.h; sourceTree = ""; }; + A8EA7FFF0A19516E00A8EF5F /* CSSStyleSheet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSStyleSheet.h; sourceTree = ""; }; + A8EA80000A19516E00A8EF5F /* CSSStyleSheet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSStyleSheet.cpp; sourceTree = ""; }; + A8EA80010A19516E00A8EF5F /* MediaList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MediaList.cpp; sourceTree = ""; }; + A8EA80020A19516E00A8EF5F /* StyleSheetList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = StyleSheetList.h; sourceTree = ""; }; + A8EA80030A19516E00A8EF5F /* StyleSheetList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = StyleSheetList.cpp; sourceTree = ""; }; + A8EA80040A19516E00A8EF5F /* StyleSheet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = StyleSheet.h; sourceTree = ""; }; + A8EA80050A19516E00A8EF5F /* StyleSheet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = StyleSheet.cpp; sourceTree = ""; }; + A8EA80060A19516E00A8EF5F /* MediaList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MediaList.h; sourceTree = ""; }; + A8FA6E5B0E4CFDED00D5CF49 /* Pattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Pattern.h; sourceTree = ""; }; + A8FA6E5C0E4CFDED00D5CF49 /* Pattern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Pattern.cpp; sourceTree = ""; }; + A9C6E4E10D745E05006442E9 /* DOMMimeType.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DOMMimeType.cpp; sourceTree = ""; }; + A9C6E4E20D745E05006442E9 /* DOMMimeType.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMMimeType.h; sourceTree = ""; }; + A9C6E4E50D745E18006442E9 /* DOMMimeTypeArray.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DOMMimeTypeArray.cpp; sourceTree = ""; }; + A9C6E4E60D745E18006442E9 /* DOMMimeTypeArray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMMimeTypeArray.h; sourceTree = ""; }; + A9C6E4E90D745E2B006442E9 /* DOMPlugin.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DOMPlugin.cpp; sourceTree = ""; }; + A9C6E4EA0D745E2B006442E9 /* DOMPlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMPlugin.h; sourceTree = ""; }; + A9C6E4ED0D745E38006442E9 /* DOMPluginArray.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DOMPluginArray.cpp; sourceTree = ""; }; + A9C6E4EE0D745E38006442E9 /* DOMPluginArray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMPluginArray.h; sourceTree = ""; }; + A9C6E4F10D745E48006442E9 /* PluginData.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PluginData.cpp; sourceTree = ""; }; + A9C6E4F20D745E48006442E9 /* PluginData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PluginData.h; sourceTree = ""; }; + A9C6E5A30D746458006442E9 /* Navigator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Navigator.cpp; sourceTree = ""; }; + A9C6E5A40D746458006442E9 /* Navigator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Navigator.h; sourceTree = ""; }; + A9C6E6460D7465CA006442E9 /* JSDOMMimeTypeArrayCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMMimeTypeArrayCustom.cpp; sourceTree = ""; }; + A9C6E64A0D7465E7006442E9 /* JSDOMPluginArrayCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMPluginArrayCustom.cpp; sourceTree = ""; }; + A9C6E64B0D7465E7006442E9 /* JSDOMPluginCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMPluginCustom.cpp; sourceTree = ""; }; + A9C6E65D0D746694006442E9 /* Navigator.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = Navigator.idl; sourceTree = ""; }; + A9C6E65E0D7466F2006442E9 /* DOMMimeType.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = DOMMimeType.idl; sourceTree = ""; }; + A9C6E65F0D746700006442E9 /* DOMMimeTypeArray.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = DOMMimeTypeArray.idl; sourceTree = ""; }; + A9C6E6600D74670C006442E9 /* DOMPlugin.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = DOMPlugin.idl; sourceTree = ""; }; + A9C6E6610D74671E006442E9 /* DOMPluginArray.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = DOMPluginArray.idl; sourceTree = ""; }; + A9D247F50D757E3300FDF959 /* JSNavigator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNavigator.cpp; sourceTree = ""; }; + A9D247F60D757E3300FDF959 /* JSNavigator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSNavigator.h; sourceTree = ""; }; + A9D247FA0D757E6900FDF959 /* JSDOMPlugin.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMPlugin.cpp; sourceTree = ""; }; + A9D247FB0D757E6900FDF959 /* JSDOMPlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDOMPlugin.h; sourceTree = ""; }; + A9D247FC0D757E6900FDF959 /* JSDOMPluginArray.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMPluginArray.cpp; sourceTree = ""; }; + A9D247FD0D757E6900FDF959 /* JSDOMPluginArray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDOMPluginArray.h; sourceTree = ""; }; + A9D248020D757E7D00FDF959 /* JSDOMMimeType.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMMimeType.cpp; sourceTree = ""; }; + A9D248030D757E7D00FDF959 /* JSDOMMimeType.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDOMMimeType.h; sourceTree = ""; }; + A9D248040D757E7D00FDF959 /* JSDOMMimeTypeArray.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMMimeTypeArray.cpp; sourceTree = ""; }; + A9D248050D757E7D00FDF959 /* JSDOMMimeTypeArray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDOMMimeTypeArray.h; sourceTree = ""; }; + AA0978ED0ABAA6E100874480 /* CSSCursorImageValue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSCursorImageValue.cpp; sourceTree = ""; }; + AA0978EE0ABAA6E100874480 /* CSSCursorImageValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSCursorImageValue.h; sourceTree = ""; }; + AA2A5AB816A485D500975A25 /* DOMWindowSpeechSynthesis.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DOMWindowSpeechSynthesis.cpp; path = Modules/speech/DOMWindowSpeechSynthesis.cpp; sourceTree = ""; }; + AA2A5AB916A485D500975A25 /* DOMWindowSpeechSynthesis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DOMWindowSpeechSynthesis.h; path = Modules/speech/DOMWindowSpeechSynthesis.h; sourceTree = ""; }; + AA2A5ABA16A485D500975A25 /* DOMWindowSpeechSynthesis.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = DOMWindowSpeechSynthesis.idl; path = Modules/speech/DOMWindowSpeechSynthesis.idl; sourceTree = ""; }; + AA2A5ABD16A485D500975A25 /* SpeechSynthesis.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpeechSynthesis.cpp; path = Modules/speech/SpeechSynthesis.cpp; sourceTree = ""; }; + AA2A5ABE16A485D500975A25 /* SpeechSynthesis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpeechSynthesis.h; path = Modules/speech/SpeechSynthesis.h; sourceTree = ""; }; + AA2A5ABF16A485D500975A25 /* SpeechSynthesis.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = SpeechSynthesis.idl; path = Modules/speech/SpeechSynthesis.idl; sourceTree = ""; }; + AA2A5AC016A485D500975A25 /* SpeechSynthesisEvent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpeechSynthesisEvent.cpp; path = Modules/speech/SpeechSynthesisEvent.cpp; sourceTree = ""; }; + AA2A5AC016A485D500976A25 /* JSSpeechSynthesisEvent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSSpeechSynthesisEvent.cpp; sourceTree = ""; }; + AA2A5AC116A485D500975A25 /* SpeechSynthesisEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpeechSynthesisEvent.h; path = Modules/speech/SpeechSynthesisEvent.h; sourceTree = ""; }; + AA2A5AC116A485D500976A25 /* JSSpeechSynthesisEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSSpeechSynthesisEvent.h; sourceTree = ""; }; + AA2A5AC216A485D500975A25 /* SpeechSynthesisEvent.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = SpeechSynthesisEvent.idl; path = Modules/speech/SpeechSynthesisEvent.idl; sourceTree = ""; }; + AA2A5AC316A485D500975A25 /* SpeechSynthesisUtterance.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = SpeechSynthesisUtterance.idl; path = Modules/speech/SpeechSynthesisUtterance.idl; sourceTree = ""; }; + AA2A5AC416A485D500975A25 /* SpeechSynthesisUtterance.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpeechSynthesisUtterance.cpp; path = Modules/speech/SpeechSynthesisUtterance.cpp; sourceTree = ""; }; + AA2A5AC516A485D500975A25 /* SpeechSynthesisUtterance.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpeechSynthesisUtterance.h; path = Modules/speech/SpeechSynthesisUtterance.h; sourceTree = ""; }; + AA2A5AC616A485D500975A25 /* SpeechSynthesisVoice.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpeechSynthesisVoice.cpp; path = Modules/speech/SpeechSynthesisVoice.cpp; sourceTree = ""; }; + AA2A5AC716A485D500975A25 /* SpeechSynthesisVoice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpeechSynthesisVoice.h; path = Modules/speech/SpeechSynthesisVoice.h; sourceTree = ""; }; + AA2A5AC816A485D500975A25 /* SpeechSynthesisVoice.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = SpeechSynthesisVoice.idl; path = Modules/speech/SpeechSynthesisVoice.idl; sourceTree = ""; }; + AA4739CF1757AFEC00E76767 /* UIRequestEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UIRequestEvent.cpp; path = Modules/indieui/UIRequestEvent.cpp; sourceTree = ""; }; + AA4739D01757AFEC00E76767 /* UIRequestEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UIRequestEvent.h; path = Modules/indieui/UIRequestEvent.h; sourceTree = ""; }; + AA478A7D16CD70C3007D1BB4 /* WebAccessibilityObjectWrapperMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAccessibilityObjectWrapperMac.h; sourceTree = ""; }; + AA478A7E16CD70C3007D1BB4 /* WebAccessibilityObjectWrapperMac.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = WebAccessibilityObjectWrapperMac.mm; sourceTree = ""; }; + AA4C3A740B2B1679002334A2 /* StyleElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = StyleElement.cpp; sourceTree = ""; }; + AA4C3A750B2B1679002334A2 /* StyleElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = StyleElement.h; sourceTree = ""; }; + AA5F3B9016CC5BEB00455EB0 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; + AA73183C159255B900A93E6E /* InjectedScriptCanvasModule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedScriptCanvasModule.cpp; sourceTree = ""; }; + AA73183D159255B900A93E6E /* InjectedScriptCanvasModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedScriptCanvasModule.h; sourceTree = ""; }; + AA7EA0AA17557B9000DF4643 /* UIRequestEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = UIRequestEvent.idl; path = Modules/indieui/UIRequestEvent.idl; sourceTree = ""; }; + AA7FEE9C16A4E6F3004C0C33 /* JSSpeechSynthesis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSpeechSynthesis.cpp; sourceTree = ""; }; + AA7FEE9E16A4E6F3004C0C33 /* JSSpeechSynthesisUtterance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSpeechSynthesisUtterance.cpp; sourceTree = ""; }; + AA7FEE9F16A4E6F3004C0C33 /* JSSpeechSynthesisUtterance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSpeechSynthesisUtterance.h; sourceTree = ""; }; + AA7FEEA016A4E6F3004C0C33 /* JSSpeechSynthesisVoice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSpeechSynthesisVoice.cpp; sourceTree = ""; }; + AA7FEEA116A4E6F3004C0C33 /* JSSpeechSynthesisVoice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSpeechSynthesisVoice.h; sourceTree = ""; }; + AA7FEEAC16A4E74B004C0C33 /* JSSpeechSynthesis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSpeechSynthesis.h; sourceTree = ""; }; + AA9030FE157E16A000276247 /* InjectedScriptCanvasModuleSource.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = InjectedScriptCanvasModuleSource.js; sourceTree = ""; }; + AA912750157E35A500454E54 /* InjectedScriptCanvasModuleSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedScriptCanvasModuleSource.h; sourceTree = ""; }; + AAA4FACE175D5CB300743873 /* JSUIRequestEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSUIRequestEvent.h; sourceTree = ""; }; + AAA4FACF175D5CB300743873 /* JSUIRequestEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSUIRequestEvent.cpp; sourceTree = ""; }; + AAA728F016D1D8BC00D3BBC6 /* AccessibilityObjectIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AccessibilityObjectIOS.mm; sourceTree = ""; }; + AAA728F116D1D8BC00D3BBC6 /* WebAccessibilityObjectWrapperIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAccessibilityObjectWrapperIOS.h; sourceTree = ""; }; + AAA728F216D1D8BC00D3BBC6 /* WebAccessibilityObjectWrapperIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebAccessibilityObjectWrapperIOS.mm; sourceTree = ""; }; + AAA728F316D1D8BC00D3BBC6 /* AXObjectCacheIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AXObjectCacheIOS.mm; sourceTree = ""; }; + AAB6054A15874C58007B5031 /* InjectedScriptBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedScriptBase.cpp; sourceTree = ""; }; + AAB6054B15874C58007B5031 /* InjectedScriptBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedScriptBase.h; sourceTree = ""; }; + AAB6054C15874C58007B5031 /* InjectedScriptModule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedScriptModule.cpp; sourceTree = ""; }; + AAB6054D15874C58007B5031 /* InjectedScriptModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedScriptModule.h; sourceTree = ""; }; + AAC08CED15F933D600F1E188 /* SVGImageChromeClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGImageChromeClient.h; sourceTree = ""; }; + AAC08CF015F941FC00F1E188 /* AccessibilitySVGRoot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilitySVGRoot.cpp; sourceTree = ""; }; + AAC08CF115F941FC00F1E188 /* AccessibilitySVGRoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilitySVGRoot.h; sourceTree = ""; }; + AAD766E8157E502F00E85423 /* InspectorCanvasAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorCanvasAgent.cpp; sourceTree = ""; }; + AAD766E9157E502F00E85423 /* InspectorCanvasAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorCanvasAgent.h; sourceTree = ""; }; + AAD766EA157E502F00E85423 /* InspectorCanvasInstrumentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorCanvasInstrumentation.h; sourceTree = ""; }; + AAE27B7416CBFC0D00623043 /* PlatformSpeechSynthesizerMock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PlatformSpeechSynthesizerMock.cpp; path = mock/PlatformSpeechSynthesizerMock.cpp; sourceTree = ""; }; + AAE27B7516CBFC0D00623043 /* PlatformSpeechSynthesizerMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformSpeechSynthesizerMock.h; path = mock/PlatformSpeechSynthesizerMock.h; sourceTree = ""; }; + AAF5B7B11524B4BD0004CB49 /* WebSocketFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSocketFrame.cpp; path = Modules/websockets/WebSocketFrame.cpp; sourceTree = ""; }; + AB23A32509BBA7D00067CC53 /* BeforeTextInsertedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = BeforeTextInsertedEvent.cpp; sourceTree = ""; }; + AB23A32609BBA7D00067CC53 /* BeforeTextInsertedEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = BeforeTextInsertedEvent.h; sourceTree = ""; }; + AB247A6A0AFD6383003FA5FD /* RenderSlider.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSlider.cpp; sourceTree = ""; }; + AB247A6B0AFD6383003FA5FD /* RenderSlider.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderSlider.h; sourceTree = ""; }; + AB31C91D10AE1B8E000C7B92 /* LineClampValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LineClampValue.h; path = style/LineClampValue.h; sourceTree = ""; }; + AB4CB4EA0B8BDA3D009F40B0 /* JSHTMLSelectElementCustom.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLSelectElementCustom.h; sourceTree = ""; }; + AB67D1A6097F3AE300F9392E /* RenderTextControl.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTextControl.cpp; sourceTree = ""; }; + AB67D1A7097F3AE300F9392E /* RenderTextControl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderTextControl.h; sourceTree = ""; }; + AB7170880B3118080017123E /* SearchPopupMenu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SearchPopupMenu.h; sourceTree = ""; }; + ABAF22070C03B1C700B0BCF0 /* ChromeMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = ChromeMac.mm; sourceTree = ""; }; + ABB5419C0ACDDFE4002820EB /* RenderListBox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderListBox.cpp; sourceTree = ""; }; + ABB5419D0ACDDFE4002820EB /* RenderListBox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderListBox.h; sourceTree = ""; }; + ABC128760B33AA6D00C693D5 /* PopupMenuClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PopupMenuClient.h; sourceTree = ""; }; + ABDDFE730A5C6E6F00A3E11D /* RenderMenuList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMenuList.cpp; sourceTree = ""; }; + ABDDFE740A5C6E7000A3E11D /* RenderMenuList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderMenuList.h; sourceTree = ""; }; + AD03AAF81468453900A39B5B /* CSSValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSValue.cpp; sourceTree = ""; }; + AD4495F1141FC08900541EDF /* EventListenerMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventListenerMap.cpp; sourceTree = ""; }; + AD4495F2141FC08900541EDF /* EventListenerMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventListenerMap.h; sourceTree = ""; }; + AD6E71AA1668899D00320C13 /* DocumentSharedObjectPool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentSharedObjectPool.cpp; sourceTree = ""; }; + AD6E71AB1668899D00320C13 /* DocumentSharedObjectPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentSharedObjectPool.h; sourceTree = ""; }; + AD726FE716D9F204003A4E6D /* JSMediaListCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMediaListCustom.h; sourceTree = ""; }; + AD726FE916D9F40A003A4E6D /* JSCSSRuleCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCSSRuleCustom.h; sourceTree = ""; }; + AD726FEA16D9F40B003A4E6D /* JSCSSStyleDeclarationCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCSSStyleDeclarationCustom.h; sourceTree = ""; }; + AD726FEC16D9F4B9003A4E6D /* JSStyleSheetCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStyleSheetCustom.h; sourceTree = ""; }; + ADDF1AD41257CD9A0003A759 /* RenderSVGPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGPath.cpp; sourceTree = ""; }; + ADDF1AD51257CD9A0003A759 /* RenderSVGPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGPath.h; sourceTree = ""; }; + B10B697D140C174000BC1C26 /* WebVTTToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebVTTToken.h; sourceTree = ""; }; + B10B697E140C174000BC1C26 /* WebVTTTokenizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebVTTTokenizer.cpp; sourceTree = ""; }; + B10B697F140C174000BC1C26 /* WebVTTTokenizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebVTTTokenizer.h; sourceTree = ""; }; + B1827492134CA4C100B98C2D /* CallbackFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CallbackFunction.cpp; sourceTree = ""; }; + B1A942DE15B5CE2200D525D1 /* MediaSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaSource.cpp; sourceTree = ""; }; + B1A942DF15B5CE2200D525D1 /* MediaSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaSource.h; sourceTree = ""; }; + B1A942E015B5CE2200D525D1 /* MediaSource.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaSource.idl; sourceTree = ""; }; + B1A942E115B5CE2200D525D1 /* MediaSourceRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaSourceRegistry.cpp; sourceTree = ""; }; + B1A942E215B5CE2200D525D1 /* MediaSourceRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaSourceRegistry.h; sourceTree = ""; }; + B1A942E315B5CE2200D525D1 /* SourceBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SourceBuffer.cpp; sourceTree = ""; }; + B1A942E415B5CE2200D525D1 /* SourceBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SourceBuffer.h; sourceTree = ""; }; + B1A942E515B5CE2200D525D1 /* SourceBuffer.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SourceBuffer.idl; sourceTree = ""; }; + B1A942E615B5CE2200D525D1 /* SourceBufferList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SourceBufferList.cpp; sourceTree = ""; }; + B1A942E715B5CE2200D525D1 /* SourceBufferList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SourceBufferList.h; sourceTree = ""; }; + B1A942E815B5CE2200D525D1 /* SourceBufferList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SourceBufferList.idl; sourceTree = ""; }; + B1AD4E7113A12A4600846B27 /* TextTrackLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TextTrackLoader.cpp; path = loader/TextTrackLoader.cpp; sourceTree = SOURCE_ROOT; }; + B1AD4E7213A12A4600846B27 /* TextTrackLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TextTrackLoader.h; path = loader/TextTrackLoader.h; sourceTree = SOURCE_ROOT; }; + B1D5ECB4134B58DA0087C78F /* CallbackFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallbackFunction.h; sourceTree = ""; }; + B20111050AB7740500DB0E68 /* JSSVGAElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAElement.cpp; sourceTree = ""; }; + B20111060AB7740500DB0E68 /* JSSVGAElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAElement.h; sourceTree = ""; }; + B22277CB0D00BF1F0071B782 /* ColorDistance.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ColorDistance.cpp; sourceTree = ""; }; + B22277CC0D00BF1F0071B782 /* ColorDistance.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ColorDistance.h; sourceTree = ""; }; + B22277CD0D00BF1F0071B782 /* GradientAttributes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = GradientAttributes.h; sourceTree = ""; }; + B22277CE0D00BF1F0071B782 /* LinearGradientAttributes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = LinearGradientAttributes.h; sourceTree = ""; }; + B22277DB0D00BF1F0071B782 /* PatternAttributes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PatternAttributes.h; sourceTree = ""; }; + B22277DC0D00BF1F0071B782 /* RadialGradientAttributes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RadialGradientAttributes.h; sourceTree = ""; }; + B22277DD0D00BF1F0071B782 /* SVGAElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAElement.cpp; sourceTree = ""; }; + B22277DE0D00BF1F0071B782 /* SVGAElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGAElement.h; sourceTree = ""; }; + B22277DF0D00BF1F0071B782 /* SVGAElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAElement.idl; sourceTree = ""; }; + B22277E00D00BF1F0071B782 /* SVGAngle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAngle.cpp; sourceTree = ""; }; + B22277E10D00BF1F0071B782 /* SVGAngle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGAngle.h; sourceTree = ""; }; + B22277E20D00BF1F0071B782 /* SVGAngle.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAngle.idl; sourceTree = ""; }; + B22277E30D00BF1F0071B782 /* SVGAnimateColorElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimateColorElement.cpp; sourceTree = ""; }; + B22277E40D00BF1F0071B782 /* SVGAnimateColorElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGAnimateColorElement.h; sourceTree = ""; }; + B22277E50D00BF1F0071B782 /* SVGAnimateColorElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimateColorElement.idl; sourceTree = ""; }; + B22277E60D00BF1F0071B782 /* SVGAnimatedAngle.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedAngle.idl; sourceTree = ""; }; + B22277E70D00BF1F0071B782 /* SVGAnimatedBoolean.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedBoolean.idl; sourceTree = ""; }; + B22277E80D00BF1F0071B782 /* SVGAnimatedEnumeration.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedEnumeration.idl; sourceTree = ""; }; + B22277E90D00BF1F0071B782 /* SVGAnimatedInteger.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedInteger.idl; sourceTree = ""; }; + B22277EA0D00BF1F0071B782 /* SVGAnimatedLength.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedLength.idl; sourceTree = ""; }; + B22277EB0D00BF1F0071B782 /* SVGAnimatedLengthList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedLengthList.idl; sourceTree = ""; }; + B22277EC0D00BF1F0071B782 /* SVGAnimatedNumber.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedNumber.idl; sourceTree = ""; }; + B22277ED0D00BF1F0071B782 /* SVGAnimatedNumberList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedNumberList.idl; sourceTree = ""; }; + B22277F40D00BF1F0071B782 /* SVGAnimatedPreserveAspectRatio.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedPreserveAspectRatio.idl; sourceTree = ""; }; + B22277F50D00BF1F0071B782 /* SVGAnimatedRect.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedRect.idl; sourceTree = ""; }; + B22277F60D00BF1F0071B782 /* SVGAnimatedString.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedString.idl; sourceTree = ""; }; + B22277F80D00BF1F0071B782 /* SVGAnimatedTransformList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedTransformList.idl; sourceTree = ""; }; + B22277F90D00BF1F0071B782 /* SVGAnimateElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimateElement.cpp; sourceTree = ""; }; + B22277FA0D00BF1F0071B782 /* SVGAnimateElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGAnimateElement.h; sourceTree = ""; }; + B22277FB0D00BF1F0071B782 /* SVGAnimateElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimateElement.idl; sourceTree = ""; }; + B22277FC0D00BF1F0071B782 /* SVGAnimateMotionElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimateMotionElement.cpp; sourceTree = ""; }; + B22277FD0D00BF1F0071B782 /* SVGAnimateMotionElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGAnimateMotionElement.h; sourceTree = ""; }; + B22277FE0D00BF1F0071B782 /* SVGAnimateTransformElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimateTransformElement.cpp; sourceTree = ""; }; + B22277FF0D00BF1F0071B782 /* SVGAnimateTransformElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGAnimateTransformElement.h; sourceTree = ""; }; + B22278000D00BF1F0071B782 /* SVGAnimateTransformElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimateTransformElement.idl; sourceTree = ""; }; + B22278010D00BF1F0071B782 /* SVGAnimationElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimationElement.cpp; sourceTree = ""; }; + B22278020D00BF1F0071B782 /* SVGAnimationElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGAnimationElement.h; sourceTree = ""; }; + B22278030D00BF1F0071B782 /* SVGAnimationElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimationElement.idl; sourceTree = ""; }; + B22278040D00BF1F0071B782 /* svgattrs.in */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = svgattrs.in; sourceTree = ""; }; + B22278050D00BF1F0071B782 /* SVGCircleElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGCircleElement.cpp; sourceTree = ""; }; + B22278060D00BF1F0071B782 /* SVGCircleElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGCircleElement.h; sourceTree = ""; }; + B22278070D00BF1F0071B782 /* SVGCircleElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGCircleElement.idl; sourceTree = ""; }; + B22278080D00BF1F0071B782 /* SVGClipPathElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGClipPathElement.cpp; sourceTree = ""; }; + B22278090D00BF1F0071B782 /* SVGClipPathElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGClipPathElement.h; sourceTree = ""; }; + B222780A0D00BF1F0071B782 /* SVGClipPathElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGClipPathElement.idl; sourceTree = ""; }; + B222780B0D00BF1F0071B782 /* SVGColor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGColor.cpp; sourceTree = ""; }; + B222780C0D00BF1F0071B782 /* SVGColor.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGColor.h; sourceTree = ""; }; + B222780D0D00BF1F0071B782 /* SVGColor.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGColor.idl; sourceTree = ""; }; + B222780E0D00BF1F0071B782 /* SVGComponentTransferFunctionElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGComponentTransferFunctionElement.cpp; sourceTree = ""; }; + B222780F0D00BF1F0071B782 /* SVGComponentTransferFunctionElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGComponentTransferFunctionElement.h; sourceTree = ""; }; + B22278100D00BF1F0071B782 /* SVGComponentTransferFunctionElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGComponentTransferFunctionElement.idl; sourceTree = ""; }; + B22278110D00BF1F0071B782 /* SVGCursorElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGCursorElement.cpp; sourceTree = ""; }; + B22278120D00BF1F0071B782 /* SVGCursorElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGCursorElement.h; sourceTree = ""; }; + B22278130D00BF1F0071B782 /* SVGCursorElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGCursorElement.idl; sourceTree = ""; }; + B22278170D00BF1F0071B782 /* SVGDefsElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGDefsElement.cpp; sourceTree = ""; }; + B22278180D00BF1F0071B782 /* SVGDefsElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGDefsElement.h; sourceTree = ""; }; + B22278190D00BF1F0071B782 /* SVGDefsElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGDefsElement.idl; sourceTree = ""; }; + B222781A0D00BF1F0071B782 /* SVGDescElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGDescElement.cpp; sourceTree = ""; }; + B222781B0D00BF1F0071B782 /* SVGDescElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGDescElement.h; sourceTree = ""; }; + B222781C0D00BF1F0071B782 /* SVGDescElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGDescElement.idl; sourceTree = ""; }; + B222781D0D00BF1F0071B782 /* SVGDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGDocument.cpp; sourceTree = ""; }; + B222781E0D00BF1F0071B782 /* SVGDocument.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGDocument.h; sourceTree = ""; }; + B222781F0D00BF1F0071B782 /* SVGDocument.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGDocument.idl; sourceTree = ""; }; + B22278200D00BF1F0071B782 /* SVGElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGElement.cpp; sourceTree = ""; }; + B22278210D00BF1F0071B782 /* SVGElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGElement.h; sourceTree = ""; }; + B22278220D00BF1F0071B782 /* SVGElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGElement.idl; sourceTree = ""; }; + B22278230D00BF1F0071B782 /* SVGElementInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGElementInstance.cpp; sourceTree = ""; }; + B22278240D00BF1F0071B782 /* SVGElementInstance.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGElementInstance.h; sourceTree = ""; }; + B22278250D00BF1F0071B782 /* SVGElementInstance.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGElementInstance.idl; sourceTree = ""; }; + B22278260D00BF1F0071B782 /* SVGElementInstanceList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGElementInstanceList.cpp; sourceTree = ""; }; + B22278270D00BF1F0071B782 /* SVGElementInstanceList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGElementInstanceList.h; sourceTree = ""; }; + B22278280D00BF1F0071B782 /* SVGElementInstanceList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGElementInstanceList.idl; sourceTree = ""; }; + B22278290D00BF1F0071B782 /* SVGEllipseElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGEllipseElement.cpp; sourceTree = ""; }; + B222782A0D00BF1F0071B782 /* SVGEllipseElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGEllipseElement.h; sourceTree = ""; }; + B222782B0D00BF1F0071B782 /* SVGEllipseElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGEllipseElement.idl; sourceTree = ""; }; + B222782C0D00BF1F0071B782 /* SVGException.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGException.h; sourceTree = ""; }; + B222782D0D00BF1F0071B782 /* SVGException.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGException.idl; sourceTree = ""; }; + B222782E0D00BF1F0071B782 /* SVGExternalResourcesRequired.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGExternalResourcesRequired.cpp; sourceTree = ""; }; + B222782F0D00BF1F0071B782 /* SVGExternalResourcesRequired.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGExternalResourcesRequired.h; sourceTree = ""; }; + B22278300D00BF1F0071B782 /* SVGExternalResourcesRequired.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGExternalResourcesRequired.idl; sourceTree = ""; }; + B22278310D00BF1F0071B782 /* SVGFEBlendElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEBlendElement.cpp; sourceTree = ""; }; + B22278320D00BF1F0071B782 /* SVGFEBlendElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEBlendElement.h; sourceTree = ""; }; + B22278330D00BF1F0071B782 /* SVGFEBlendElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEBlendElement.idl; sourceTree = ""; }; + B22278340D00BF1F0071B782 /* SVGFEColorMatrixElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEColorMatrixElement.cpp; sourceTree = ""; }; + B22278350D00BF1F0071B782 /* SVGFEColorMatrixElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEColorMatrixElement.h; sourceTree = ""; }; + B22278360D00BF1F0071B782 /* SVGFEColorMatrixElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEColorMatrixElement.idl; sourceTree = ""; }; + B22278370D00BF1F0071B782 /* SVGFEComponentTransferElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEComponentTransferElement.cpp; sourceTree = ""; }; + B22278380D00BF1F0071B782 /* SVGFEComponentTransferElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEComponentTransferElement.h; sourceTree = ""; }; + B22278390D00BF1F0071B782 /* SVGFEComponentTransferElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEComponentTransferElement.idl; sourceTree = ""; }; + B222783A0D00BF1F0071B782 /* SVGFECompositeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFECompositeElement.cpp; sourceTree = ""; }; + B222783B0D00BF1F0071B782 /* SVGFECompositeElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFECompositeElement.h; sourceTree = ""; }; + B222783C0D00BF1F0071B782 /* SVGFECompositeElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFECompositeElement.idl; sourceTree = ""; }; + B222783D0D00BF1F0071B782 /* SVGFEDiffuseLightingElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEDiffuseLightingElement.cpp; sourceTree = ""; }; + B222783E0D00BF1F0071B782 /* SVGFEDiffuseLightingElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEDiffuseLightingElement.h; sourceTree = ""; }; + B222783F0D00BF1F0071B782 /* SVGFEDiffuseLightingElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEDiffuseLightingElement.idl; sourceTree = ""; }; + B22278400D00BF1F0071B782 /* SVGFEDisplacementMapElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEDisplacementMapElement.cpp; sourceTree = ""; }; + B22278410D00BF1F0071B782 /* SVGFEDisplacementMapElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEDisplacementMapElement.h; sourceTree = ""; }; + B22278420D00BF1F0071B782 /* SVGFEDisplacementMapElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEDisplacementMapElement.idl; sourceTree = ""; }; + B22278430D00BF1F0071B782 /* SVGFEDistantLightElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEDistantLightElement.cpp; sourceTree = ""; }; + B22278440D00BF1F0071B782 /* SVGFEDistantLightElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEDistantLightElement.h; sourceTree = ""; }; + B22278450D00BF1F0071B782 /* SVGFEDistantLightElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEDistantLightElement.idl; sourceTree = ""; }; + B22278460D00BF1F0071B782 /* SVGFEFloodElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEFloodElement.cpp; sourceTree = ""; }; + B22278470D00BF1F0071B782 /* SVGFEFloodElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEFloodElement.h; sourceTree = ""; }; + B22278480D00BF1F0071B782 /* SVGFEFloodElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEFloodElement.idl; sourceTree = ""; }; + B22278490D00BF1F0071B782 /* SVGFEFuncAElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEFuncAElement.cpp; sourceTree = ""; }; + B222784A0D00BF1F0071B782 /* SVGFEFuncAElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEFuncAElement.h; sourceTree = ""; }; + B222784B0D00BF1F0071B782 /* SVGFEFuncAElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEFuncAElement.idl; sourceTree = ""; }; + B222784C0D00BF1F0071B782 /* SVGFEFuncBElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEFuncBElement.cpp; sourceTree = ""; }; + B222784D0D00BF1F0071B782 /* SVGFEFuncBElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEFuncBElement.h; sourceTree = ""; }; + B222784E0D00BF1F0071B782 /* SVGFEFuncBElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEFuncBElement.idl; sourceTree = ""; }; + B222784F0D00BF1F0071B782 /* SVGFEFuncGElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEFuncGElement.cpp; sourceTree = ""; }; + B22278500D00BF1F0071B782 /* SVGFEFuncGElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEFuncGElement.h; sourceTree = ""; }; + B22278510D00BF200071B782 /* SVGFEFuncGElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEFuncGElement.idl; sourceTree = ""; }; + B22278520D00BF200071B782 /* SVGFEFuncRElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEFuncRElement.cpp; sourceTree = ""; }; + B22278530D00BF200071B782 /* SVGFEFuncRElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEFuncRElement.h; sourceTree = ""; }; + B22278540D00BF200071B782 /* SVGFEFuncRElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEFuncRElement.idl; sourceTree = ""; }; + B22278550D00BF200071B782 /* SVGFEGaussianBlurElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEGaussianBlurElement.cpp; sourceTree = ""; }; + B22278560D00BF200071B782 /* SVGFEGaussianBlurElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEGaussianBlurElement.h; sourceTree = ""; }; + B22278570D00BF200071B782 /* SVGFEGaussianBlurElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEGaussianBlurElement.idl; sourceTree = ""; }; + B22278580D00BF200071B782 /* SVGFEImageElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEImageElement.cpp; sourceTree = ""; }; + B22278590D00BF200071B782 /* SVGFEImageElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEImageElement.h; sourceTree = ""; }; + B222785A0D00BF200071B782 /* SVGFEImageElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEImageElement.idl; sourceTree = ""; }; + B222785B0D00BF200071B782 /* SVGFELightElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFELightElement.cpp; sourceTree = ""; }; + B222785C0D00BF200071B782 /* SVGFELightElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFELightElement.h; sourceTree = ""; }; + B222785D0D00BF200071B782 /* SVGFEMergeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEMergeElement.cpp; sourceTree = ""; }; + B222785E0D00BF200071B782 /* SVGFEMergeElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEMergeElement.h; sourceTree = ""; }; + B222785F0D00BF200071B782 /* SVGFEMergeElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEMergeElement.idl; sourceTree = ""; }; + B22278600D00BF200071B782 /* SVGFEMergeNodeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEMergeNodeElement.cpp; sourceTree = ""; }; + B22278610D00BF200071B782 /* SVGFEMergeNodeElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEMergeNodeElement.h; sourceTree = ""; }; + B22278620D00BF200071B782 /* SVGFEMergeNodeElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEMergeNodeElement.idl; sourceTree = ""; }; + B22278630D00BF200071B782 /* SVGFEOffsetElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEOffsetElement.cpp; sourceTree = ""; }; + B22278640D00BF200071B782 /* SVGFEOffsetElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEOffsetElement.h; sourceTree = ""; }; + B22278650D00BF200071B782 /* SVGFEOffsetElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEOffsetElement.idl; sourceTree = ""; }; + B22278660D00BF200071B782 /* SVGFEPointLightElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEPointLightElement.cpp; sourceTree = ""; }; + B22278670D00BF200071B782 /* SVGFEPointLightElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEPointLightElement.h; sourceTree = ""; }; + B22278680D00BF200071B782 /* SVGFEPointLightElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFEPointLightElement.idl; sourceTree = ""; }; + B22278690D00BF200071B782 /* SVGFESpecularLightingElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFESpecularLightingElement.cpp; sourceTree = ""; }; + B222786A0D00BF200071B782 /* SVGFESpecularLightingElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFESpecularLightingElement.h; sourceTree = ""; }; + B222786B0D00BF200071B782 /* SVGFESpecularLightingElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFESpecularLightingElement.idl; sourceTree = ""; }; + B222786C0D00BF200071B782 /* SVGFESpotLightElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFESpotLightElement.cpp; sourceTree = ""; }; + B222786D0D00BF200071B782 /* SVGFESpotLightElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFESpotLightElement.h; sourceTree = ""; }; + B222786E0D00BF200071B782 /* SVGFESpotLightElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFESpotLightElement.idl; sourceTree = ""; }; + B222786F0D00BF200071B782 /* SVGFETileElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFETileElement.cpp; sourceTree = ""; }; + B22278700D00BF200071B782 /* SVGFETileElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFETileElement.h; sourceTree = ""; }; + B22278710D00BF200071B782 /* SVGFETileElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFETileElement.idl; sourceTree = ""; }; + B22278720D00BF200071B782 /* SVGFETurbulenceElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFETurbulenceElement.cpp; sourceTree = ""; }; + B22278730D00BF200071B782 /* SVGFETurbulenceElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFETurbulenceElement.h; sourceTree = ""; }; + B22278740D00BF200071B782 /* SVGFETurbulenceElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFETurbulenceElement.idl; sourceTree = ""; }; + B22278750D00BF200071B782 /* SVGFilterElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFilterElement.cpp; sourceTree = ""; }; + B22278760D00BF200071B782 /* SVGFilterElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFilterElement.h; sourceTree = ""; }; + B22278770D00BF200071B782 /* SVGFilterElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFilterElement.idl; sourceTree = ""; }; + B22278780D00BF200071B782 /* SVGFilterPrimitiveStandardAttributes.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFilterPrimitiveStandardAttributes.cpp; sourceTree = ""; }; + B22278790D00BF200071B782 /* SVGFilterPrimitiveStandardAttributes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFilterPrimitiveStandardAttributes.h; sourceTree = ""; }; + B222787A0D00BF200071B782 /* SVGFilterPrimitiveStandardAttributes.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFilterPrimitiveStandardAttributes.idl; sourceTree = ""; }; + B222787B0D00BF200071B782 /* SVGFitToViewBox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFitToViewBox.cpp; sourceTree = ""; }; + B222787C0D00BF200071B782 /* SVGFitToViewBox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFitToViewBox.h; sourceTree = ""; }; + B222787D0D00BF200071B782 /* SVGFitToViewBox.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFitToViewBox.idl; sourceTree = ""; }; + B222787E0D00BF200071B782 /* SVGFontFaceElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFontFaceElement.cpp; sourceTree = ""; }; + B222787F0D00BF200071B782 /* SVGFontFaceElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFontFaceElement.h; sourceTree = ""; }; + B22278800D00BF200071B782 /* SVGFontFaceElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFontFaceElement.idl; sourceTree = ""; }; + B22278810D00BF200071B782 /* SVGFontFaceFormatElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFontFaceFormatElement.cpp; sourceTree = ""; }; + B22278820D00BF200071B782 /* SVGFontFaceFormatElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFontFaceFormatElement.h; sourceTree = ""; }; + B22278830D00BF200071B782 /* SVGFontFaceFormatElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFontFaceFormatElement.idl; sourceTree = ""; }; + B22278840D00BF200071B782 /* SVGFontFaceNameElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFontFaceNameElement.cpp; sourceTree = ""; }; + B22278850D00BF200071B782 /* SVGFontFaceNameElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFontFaceNameElement.h; sourceTree = ""; }; + B22278860D00BF200071B782 /* SVGFontFaceNameElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFontFaceNameElement.idl; sourceTree = ""; }; + B22278870D00BF200071B782 /* SVGFontFaceSrcElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFontFaceSrcElement.cpp; sourceTree = ""; }; + B22278880D00BF200071B782 /* SVGFontFaceSrcElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFontFaceSrcElement.h; sourceTree = ""; }; + B22278890D00BF200071B782 /* SVGFontFaceSrcElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFontFaceSrcElement.idl; sourceTree = ""; }; + B222788A0D00BF200071B782 /* SVGFontFaceUriElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFontFaceUriElement.cpp; sourceTree = ""; }; + B222788B0D00BF200071B782 /* SVGFontFaceUriElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFontFaceUriElement.h; sourceTree = ""; }; + B222788C0D00BF200071B782 /* SVGFontFaceUriElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFontFaceUriElement.idl; sourceTree = ""; }; + B222788D0D00BF200071B782 /* SVGForeignObjectElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGForeignObjectElement.cpp; sourceTree = ""; }; + B222788E0D00BF200071B782 /* SVGForeignObjectElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGForeignObjectElement.h; sourceTree = ""; }; + B222788F0D00BF200071B782 /* SVGForeignObjectElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGForeignObjectElement.idl; sourceTree = ""; }; + B22278900D00BF200071B782 /* SVGGElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGGElement.cpp; sourceTree = ""; }; + B22278910D00BF200071B782 /* SVGGElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGGElement.h; sourceTree = ""; }; + B22278920D00BF200071B782 /* SVGGElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGGElement.idl; sourceTree = ""; }; + B22278930D00BF200071B782 /* SVGGradientElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGGradientElement.cpp; sourceTree = ""; }; + B22278940D00BF200071B782 /* SVGGradientElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGGradientElement.h; sourceTree = ""; }; + B22278950D00BF200071B782 /* SVGGradientElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGGradientElement.idl; sourceTree = ""; }; + B22278960D00BF200071B782 /* SVGImageElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGImageElement.cpp; sourceTree = ""; }; + B22278970D00BF200071B782 /* SVGImageElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGImageElement.h; sourceTree = ""; }; + B22278980D00BF200071B782 /* SVGImageElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGImageElement.idl; sourceTree = ""; }; + B22278990D00BF200071B782 /* SVGLangSpace.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGLangSpace.cpp; sourceTree = ""; }; + B222789A0D00BF200071B782 /* SVGLangSpace.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGLangSpace.h; sourceTree = ""; }; + B222789C0D00BF200071B782 /* SVGLength.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGLength.cpp; sourceTree = ""; }; + B222789D0D00BF200071B782 /* SVGLength.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGLength.h; sourceTree = ""; }; + B222789E0D00BF200071B782 /* SVGLength.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGLength.idl; sourceTree = ""; }; + B222789F0D00BF200071B782 /* SVGLengthList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGLengthList.cpp; sourceTree = ""; }; + B22278A00D00BF200071B782 /* SVGLengthList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGLengthList.h; sourceTree = ""; }; + B22278A10D00BF200071B782 /* SVGLengthList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGLengthList.idl; sourceTree = ""; }; + B22278A20D00BF200071B782 /* SVGLinearGradientElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGLinearGradientElement.cpp; sourceTree = ""; }; + B22278A30D00BF200071B782 /* SVGLinearGradientElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGLinearGradientElement.h; sourceTree = ""; }; + B22278A40D00BF200071B782 /* SVGLinearGradientElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGLinearGradientElement.idl; sourceTree = ""; }; + B22278A50D00BF200071B782 /* SVGLineElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGLineElement.cpp; sourceTree = ""; }; + B22278A60D00BF200071B782 /* SVGLineElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGLineElement.h; sourceTree = ""; }; + B22278A70D00BF200071B782 /* SVGLineElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGLineElement.idl; sourceTree = ""; }; + B22278AA0D00BF200071B782 /* SVGLocatable.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGLocatable.cpp; sourceTree = ""; }; + B22278AB0D00BF200071B782 /* SVGLocatable.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGLocatable.h; sourceTree = ""; }; + B22278AD0D00BF200071B782 /* SVGMarkerElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGMarkerElement.cpp; sourceTree = ""; }; + B22278AE0D00BF200071B782 /* SVGMarkerElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGMarkerElement.h; sourceTree = ""; }; + B22278AF0D00BF200071B782 /* SVGMarkerElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGMarkerElement.idl; sourceTree = ""; }; + B22278B00D00BF200071B782 /* SVGMaskElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGMaskElement.cpp; sourceTree = ""; }; + B22278B10D00BF200071B782 /* SVGMaskElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGMaskElement.h; sourceTree = ""; }; + B22278B20D00BF200071B782 /* SVGMaskElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGMaskElement.idl; sourceTree = ""; }; + B22278B30D00BF200071B782 /* SVGMatrix.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGMatrix.idl; sourceTree = ""; }; + B22278B40D00BF200071B782 /* SVGMetadataElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGMetadataElement.cpp; sourceTree = ""; }; + B22278B50D00BF200071B782 /* SVGMetadataElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGMetadataElement.h; sourceTree = ""; }; + B22278B60D00BF200071B782 /* SVGMetadataElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGMetadataElement.idl; sourceTree = ""; }; + B22278B70D00BF200071B782 /* SVGMPathElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGMPathElement.cpp; sourceTree = ""; }; + B22278B80D00BF200071B782 /* SVGMPathElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGMPathElement.h; sourceTree = ""; }; + B22278B90D00BF200071B782 /* SVGNumber.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGNumber.idl; sourceTree = ""; }; + B22278BA0D00BF200071B782 /* SVGNumberList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGNumberList.cpp; sourceTree = ""; }; + B22278BB0D00BF200071B782 /* SVGNumberList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGNumberList.h; sourceTree = ""; }; + B22278BC0D00BF200071B782 /* SVGNumberList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGNumberList.idl; sourceTree = ""; }; + B22278BD0D00BF200071B782 /* SVGPaint.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPaint.cpp; sourceTree = ""; }; + B22278BE0D00BF200071B782 /* SVGPaint.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPaint.h; sourceTree = ""; }; + B22278BF0D00BF200071B782 /* SVGPaint.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPaint.idl; sourceTree = ""; }; + B22278C00D00BF200071B782 /* SVGParserUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGParserUtilities.cpp; sourceTree = ""; }; + B22278C10D00BF200071B782 /* SVGParserUtilities.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGParserUtilities.h; sourceTree = ""; }; + B22278C20D00BF200071B782 /* SVGPathElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathElement.cpp; sourceTree = ""; }; + B22278C30D00BF200071B782 /* SVGPathElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathElement.h; sourceTree = ""; }; + B22278C40D00BF200071B782 /* SVGPathElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathElement.idl; sourceTree = ""; }; + B22278C50D00BF200071B782 /* SVGPathSeg.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSeg.h; sourceTree = ""; }; + B22278C60D00BF200071B782 /* SVGPathSeg.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSeg.idl; sourceTree = ""; }; + B22278C80D00BF200071B782 /* SVGPathSegArc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegArc.h; sourceTree = ""; }; + B22278C90D00BF200071B782 /* SVGPathSegArcAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegArcAbs.idl; sourceTree = ""; }; + B22278CA0D00BF200071B782 /* SVGPathSegArcRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegArcRel.idl; sourceTree = ""; }; + B22278CC0D00BF200071B782 /* SVGPathSegClosePath.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegClosePath.h; sourceTree = ""; }; + B22278CD0D00BF200071B782 /* SVGPathSegClosePath.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegClosePath.idl; sourceTree = ""; }; + B22278CF0D00BF200071B782 /* SVGPathSegCurvetoCubic.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegCurvetoCubic.h; sourceTree = ""; }; + B22278D00D00BF200071B782 /* SVGPathSegCurvetoCubicAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoCubicAbs.idl; sourceTree = ""; }; + B22278D10D00BF200071B782 /* SVGPathSegCurvetoCubicRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoCubicRel.idl; sourceTree = ""; }; + B22278D30D00BF200071B782 /* SVGPathSegCurvetoCubicSmooth.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegCurvetoCubicSmooth.h; sourceTree = ""; }; + B22278D40D00BF200071B782 /* SVGPathSegCurvetoCubicSmoothAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoCubicSmoothAbs.idl; sourceTree = ""; }; + B22278D50D00BF200071B782 /* SVGPathSegCurvetoCubicSmoothRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoCubicSmoothRel.idl; sourceTree = ""; }; + B22278D70D00BF200071B782 /* SVGPathSegCurvetoQuadratic.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegCurvetoQuadratic.h; sourceTree = ""; }; + B22278D80D00BF200071B782 /* SVGPathSegCurvetoQuadraticAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoQuadraticAbs.idl; sourceTree = ""; }; + B22278D90D00BF200071B782 /* SVGPathSegCurvetoQuadraticRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoQuadraticRel.idl; sourceTree = ""; }; + B22278DC0D00BF200071B782 /* SVGPathSegCurvetoQuadraticSmoothAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoQuadraticSmoothAbs.idl; sourceTree = ""; }; + B22278DD0D00BF200071B782 /* SVGPathSegCurvetoQuadraticSmoothRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoQuadraticSmoothRel.idl; sourceTree = ""; }; + B22278E00D00BF200071B782 /* SVGPathSegLinetoAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegLinetoAbs.idl; sourceTree = ""; }; + B22278E20D00BF200071B782 /* SVGPathSegLinetoHorizontal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegLinetoHorizontal.h; sourceTree = ""; }; + B22278E30D00BF200071B782 /* SVGPathSegLinetoHorizontalAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegLinetoHorizontalAbs.idl; sourceTree = ""; }; + B22278E40D00BF200071B782 /* SVGPathSegLinetoHorizontalRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegLinetoHorizontalRel.idl; sourceTree = ""; }; + B22278E50D00BF200071B782 /* SVGPathSegLinetoRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegLinetoRel.idl; sourceTree = ""; }; + B22278E70D00BF200071B782 /* SVGPathSegLinetoVertical.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegLinetoVertical.h; sourceTree = ""; }; + B22278E80D00BF200071B782 /* SVGPathSegLinetoVerticalAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegLinetoVerticalAbs.idl; sourceTree = ""; }; + B22278E90D00BF200071B782 /* SVGPathSegLinetoVerticalRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegLinetoVerticalRel.idl; sourceTree = ""; }; + B22278EA0D00BF200071B782 /* SVGPathSegList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegList.cpp; sourceTree = ""; }; + B22278EB0D00BF200071B782 /* SVGPathSegList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegList.h; sourceTree = ""; }; + B22278EC0D00BF210071B782 /* SVGPathSegList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegList.idl; sourceTree = ""; }; + B22278EF0D00BF210071B782 /* SVGPathSegMovetoAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegMovetoAbs.idl; sourceTree = ""; }; + B22278F00D00BF210071B782 /* SVGPathSegMovetoRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegMovetoRel.idl; sourceTree = ""; }; + B22278F10D00BF210071B782 /* SVGPatternElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPatternElement.cpp; sourceTree = ""; }; + B22278F20D00BF210071B782 /* SVGPatternElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPatternElement.h; sourceTree = ""; }; + B22278F30D00BF210071B782 /* SVGPatternElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPatternElement.idl; sourceTree = ""; }; + B22278F40D00BF210071B782 /* SVGPoint.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPoint.idl; sourceTree = ""; }; + B22278F50D00BF210071B782 /* SVGPointList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPointList.cpp; sourceTree = ""; }; + B22278F60D00BF210071B782 /* SVGPointList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPointList.h; sourceTree = ""; }; + B22278F70D00BF210071B782 /* SVGPointList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPointList.idl; sourceTree = ""; }; + B22278F80D00BF210071B782 /* SVGPolyElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPolyElement.cpp; sourceTree = ""; }; + B22278F90D00BF210071B782 /* SVGPolyElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPolyElement.h; sourceTree = ""; }; + B22278FA0D00BF210071B782 /* SVGPolygonElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPolygonElement.cpp; sourceTree = ""; }; + B22278FB0D00BF210071B782 /* SVGPolygonElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPolygonElement.h; sourceTree = ""; }; + B22278FC0D00BF210071B782 /* SVGPolygonElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPolygonElement.idl; sourceTree = ""; }; + B22278FD0D00BF210071B782 /* SVGPolylineElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPolylineElement.cpp; sourceTree = ""; }; + B22278FE0D00BF210071B782 /* SVGPolylineElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPolylineElement.h; sourceTree = ""; }; + B22278FF0D00BF210071B782 /* SVGPolylineElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPolylineElement.idl; sourceTree = ""; }; + B22279000D00BF210071B782 /* SVGPreserveAspectRatio.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPreserveAspectRatio.cpp; sourceTree = ""; }; + B22279010D00BF210071B782 /* SVGPreserveAspectRatio.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPreserveAspectRatio.h; sourceTree = ""; }; + B22279020D00BF210071B782 /* SVGPreserveAspectRatio.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPreserveAspectRatio.idl; sourceTree = ""; }; + B22279030D00BF210071B782 /* SVGRadialGradientElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGRadialGradientElement.cpp; sourceTree = ""; }; + B22279040D00BF210071B782 /* SVGRadialGradientElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGRadialGradientElement.h; sourceTree = ""; }; + B22279050D00BF210071B782 /* SVGRadialGradientElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGRadialGradientElement.idl; sourceTree = ""; }; + B22279060D00BF210071B782 /* SVGRect.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGRect.idl; sourceTree = ""; }; + B22279070D00BF210071B782 /* SVGRectElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGRectElement.cpp; sourceTree = ""; }; + B22279080D00BF210071B782 /* SVGRectElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGRectElement.h; sourceTree = ""; }; + B22279090D00BF210071B782 /* SVGRectElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGRectElement.idl; sourceTree = ""; }; + B222790A0D00BF210071B782 /* SVGRenderingIntent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGRenderingIntent.h; sourceTree = ""; }; + B222790B0D00BF210071B782 /* SVGRenderingIntent.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGRenderingIntent.idl; sourceTree = ""; }; + B222790C0D00BF210071B782 /* SVGScriptElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGScriptElement.cpp; sourceTree = ""; }; + B222790D0D00BF210071B782 /* SVGScriptElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGScriptElement.h; sourceTree = ""; }; + B222790E0D00BF210071B782 /* SVGScriptElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGScriptElement.idl; sourceTree = ""; }; + B222790F0D00BF210071B782 /* SVGSetElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGSetElement.cpp; sourceTree = ""; }; + B22279100D00BF210071B782 /* SVGSetElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGSetElement.h; sourceTree = ""; }; + B22279110D00BF210071B782 /* SVGSetElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGSetElement.idl; sourceTree = ""; }; + B22279120D00BF210071B782 /* SVGStopElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGStopElement.cpp; sourceTree = ""; }; + B22279130D00BF210071B782 /* SVGStopElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGStopElement.h; sourceTree = ""; }; + B22279140D00BF210071B782 /* SVGStopElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGStopElement.idl; sourceTree = ""; }; + B22279150D00BF210071B782 /* SVGStringList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGStringList.cpp; sourceTree = ""; }; + B22279160D00BF210071B782 /* SVGStringList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGStringList.h; sourceTree = ""; }; + B22279170D00BF210071B782 /* SVGStringList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGStringList.idl; sourceTree = ""; }; + B222791F0D00BF210071B782 /* SVGGraphicsElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGGraphicsElement.cpp; sourceTree = ""; }; + B22279200D00BF210071B782 /* SVGGraphicsElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGGraphicsElement.h; sourceTree = ""; }; + B22279210D00BF210071B782 /* SVGStyleElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGStyleElement.cpp; sourceTree = ""; }; + B22279210D00BF210071B783 /* SVGStyledElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGStyledElement.cpp; sourceTree = ""; }; + B22279220D00BF210071B782 /* SVGStyleElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGStyleElement.h; sourceTree = ""; }; + B22279220D00BF210071B783 /* SVGStyledElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGStyledElement.h; sourceTree = ""; }; + B22279230D00BF210071B782 /* SVGStyleElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGStyleElement.idl; sourceTree = ""; }; + B22279230D00BF210071B783 /* SVGStyledElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGStyledElement.idl; sourceTree = ""; }; + B22279240D00BF210071B782 /* SVGSVGElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGSVGElement.cpp; sourceTree = ""; }; + B22279250D00BF210071B782 /* SVGSVGElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGSVGElement.h; sourceTree = ""; }; + B22279260D00BF210071B782 /* SVGSVGElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGSVGElement.idl; sourceTree = ""; }; + B22279270D00BF210071B782 /* SVGSwitchElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGSwitchElement.cpp; sourceTree = ""; }; + B22279280D00BF210071B782 /* SVGSwitchElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGSwitchElement.h; sourceTree = ""; }; + B22279290D00BF210071B782 /* SVGSwitchElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGSwitchElement.idl; sourceTree = ""; }; + B222792A0D00BF210071B782 /* SVGSymbolElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGSymbolElement.cpp; sourceTree = ""; }; + B222792B0D00BF210071B782 /* SVGSymbolElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGSymbolElement.h; sourceTree = ""; }; + B222792C0D00BF210071B782 /* SVGSymbolElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGSymbolElement.idl; sourceTree = ""; }; + B222792D0D00BF210071B782 /* svgtags.in */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = svgtags.in; sourceTree = ""; }; + B222792E0D00BF210071B782 /* SVGTests.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTests.cpp; sourceTree = ""; }; + B222792F0D00BF210071B782 /* SVGTests.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGTests.h; sourceTree = ""; }; + B22279300D00BF210071B782 /* SVGTests.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGTests.idl; sourceTree = ""; }; + B22279310D00BF210071B782 /* SVGTextContentElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextContentElement.cpp; sourceTree = ""; }; + B22279320D00BF210071B782 /* SVGTextContentElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGTextContentElement.h; sourceTree = ""; }; + B22279330D00BF210071B782 /* SVGTextContentElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGTextContentElement.idl; sourceTree = ""; }; + B22279340D00BF210071B782 /* SVGTextElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextElement.cpp; sourceTree = ""; }; + B22279350D00BF210071B782 /* SVGTextElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGTextElement.h; sourceTree = ""; }; + B22279360D00BF210071B782 /* SVGTextElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGTextElement.idl; sourceTree = ""; }; + B22279370D00BF210071B782 /* SVGTextPathElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextPathElement.cpp; sourceTree = ""; }; + B22279380D00BF210071B782 /* SVGTextPathElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGTextPathElement.h; sourceTree = ""; }; + B22279390D00BF210071B782 /* SVGTextPathElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGTextPathElement.idl; sourceTree = ""; }; + B222793A0D00BF210071B782 /* SVGTextPositioningElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextPositioningElement.cpp; sourceTree = ""; }; + B222793B0D00BF210071B782 /* SVGTextPositioningElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGTextPositioningElement.h; sourceTree = ""; }; + B222793C0D00BF210071B782 /* SVGTextPositioningElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGTextPositioningElement.idl; sourceTree = ""; }; + B222793D0D00BF210071B782 /* SVGTitleElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTitleElement.cpp; sourceTree = ""; }; + B222793E0D00BF210071B782 /* SVGTitleElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGTitleElement.h; sourceTree = ""; }; + B222793F0D00BF210071B782 /* SVGTitleElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGTitleElement.idl; sourceTree = ""; }; + B22279400D00BF210071B782 /* SVGTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTransform.cpp; sourceTree = ""; }; + B22279410D00BF210071B782 /* SVGTransform.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGTransform.h; sourceTree = ""; }; + B22279420D00BF210071B782 /* SVGTransform.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGTransform.idl; sourceTree = ""; }; + B22279430D00BF210071B782 /* SVGTransformable.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTransformable.cpp; sourceTree = ""; }; + B22279440D00BF210071B782 /* SVGTransformable.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGTransformable.h; sourceTree = ""; }; + B22279460D00BF210071B782 /* SVGTransformDistance.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTransformDistance.cpp; sourceTree = ""; }; + B22279470D00BF210071B782 /* SVGTransformDistance.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGTransformDistance.h; sourceTree = ""; }; + B22279480D00BF210071B782 /* SVGTransformList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTransformList.cpp; sourceTree = ""; }; + B22279490D00BF210071B782 /* SVGTransformList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGTransformList.h; sourceTree = ""; }; + B222794A0D00BF210071B782 /* SVGTransformList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGTransformList.idl; sourceTree = ""; }; + B222794B0D00BF210071B782 /* SVGTRefElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTRefElement.cpp; sourceTree = ""; }; + B222794C0D00BF210071B782 /* SVGTRefElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGTRefElement.h; sourceTree = ""; }; + B222794D0D00BF210071B782 /* SVGTRefElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGTRefElement.idl; sourceTree = ""; }; + B222794E0D00BF210071B782 /* SVGTSpanElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTSpanElement.cpp; sourceTree = ""; }; + B222794F0D00BF210071B782 /* SVGTSpanElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGTSpanElement.h; sourceTree = ""; }; + B22279500D00BF210071B782 /* SVGTSpanElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGTSpanElement.idl; sourceTree = ""; }; + B22279510D00BF210071B782 /* SVGUnitTypes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGUnitTypes.h; sourceTree = ""; }; + B22279520D00BF210071B782 /* SVGUnitTypes.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGUnitTypes.idl; sourceTree = ""; }; + B22279530D00BF210071B782 /* SVGURIReference.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGURIReference.cpp; sourceTree = ""; }; + B22279540D00BF210071B782 /* SVGURIReference.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGURIReference.h; sourceTree = ""; }; + B22279550D00BF210071B782 /* SVGURIReference.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGURIReference.idl; sourceTree = ""; }; + B22279560D00BF210071B782 /* SVGUseElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGUseElement.cpp; sourceTree = ""; }; + B22279570D00BF210071B782 /* SVGUseElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGUseElement.h; sourceTree = ""; }; + B22279580D00BF210071B782 /* SVGUseElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGUseElement.idl; sourceTree = ""; }; + B22279590D00BF210071B782 /* SVGViewElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGViewElement.cpp; sourceTree = ""; }; + B222795A0D00BF210071B782 /* SVGViewElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGViewElement.h; sourceTree = ""; }; + B222795B0D00BF210071B782 /* SVGViewElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGViewElement.idl; sourceTree = ""; }; + B222795C0D00BF210071B782 /* SVGViewSpec.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGViewSpec.cpp; sourceTree = ""; }; + B222795D0D00BF210071B782 /* SVGViewSpec.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGViewSpec.h; sourceTree = ""; }; + B222795E0D00BF210071B782 /* SVGViewSpec.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGViewSpec.idl; sourceTree = ""; }; + B222795F0D00BF210071B782 /* SVGZoomAndPan.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGZoomAndPan.cpp; sourceTree = ""; }; + B22279600D00BF210071B782 /* SVGZoomAndPan.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGZoomAndPan.h; sourceTree = ""; }; + B22279610D00BF210071B782 /* SVGZoomAndPan.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGZoomAndPan.idl; sourceTree = ""; }; + B2227B000D00BFF10071B782 /* SVGCSSComputedStyleDeclaration.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGCSSComputedStyleDeclaration.cpp; sourceTree = ""; }; + B2227B010D00BFF10071B782 /* SVGCSSParser.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGCSSParser.cpp; sourceTree = ""; }; + B2227B020D00BFF10071B782 /* SVGCSSPropertyNames.in */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGCSSPropertyNames.in; sourceTree = ""; }; + B2227B030D00BFF10071B782 /* SVGCSSStyleSelector.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGCSSStyleSelector.cpp; sourceTree = ""; }; + B2227B040D00BFF10071B782 /* SVGCSSValueKeywords.in */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGCSSValueKeywords.in; sourceTree = ""; }; + B222F6960AB771950022EFAD /* JSSVGAngle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAngle.cpp; sourceTree = ""; }; + B222F6970AB771950022EFAD /* JSSVGAngle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAngle.h; sourceTree = ""; }; + B222F69A0AB771B80022EFAD /* JSSVGElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGElement.cpp; sourceTree = ""; }; + B222F69B0AB771B80022EFAD /* JSSVGElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGElement.h; sourceTree = ""; }; + B22362260C3AF04A0008CA9B /* JSSVGTextPathElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGTextPathElement.cpp; sourceTree = ""; }; + B22362270C3AF04A0008CA9B /* JSSVGTextPathElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGTextPathElement.h; sourceTree = ""; }; + B23540F00D00782E002382FA /* StringTruncator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = StringTruncator.cpp; sourceTree = ""; }; + B23540F10D00782E002382FA /* StringTruncator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = StringTruncator.h; sourceTree = ""; }; + B237C8A50D344D110013F707 /* SVGFontData.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFontData.cpp; sourceTree = ""; }; + B237C8A60D344D110013F707 /* SVGFontData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFontData.h; sourceTree = ""; }; + B25598EA0D00D8B900BB825C /* SVGFEImage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEImage.cpp; sourceTree = ""; }; + B25598EB0D00D8B900BB825C /* SVGFEImage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEImage.h; sourceTree = ""; }; + B255990B0D00D8B900BB825C /* SVGImage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGImage.cpp; sourceTree = ""; }; + B255990C0D00D8B900BB825C /* SVGImage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGImage.h; sourceTree = ""; }; + B255990D0D00D8B900BB825C /* EmptyClients.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = EmptyClients.h; sourceTree = ""; }; + B266CD4B0C3AEC6500EB08D2 /* JSSVGException.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGException.cpp; sourceTree = ""; }; + B266CD4C0C3AEC6500EB08D2 /* JSSVGException.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGException.h; sourceTree = ""; }; + B275352A0B053814002CE64F /* TransformationMatrixCG.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TransformationMatrixCG.cpp; sourceTree = ""; }; + B275352B0B053814002CE64F /* FloatPointCG.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FloatPointCG.cpp; sourceTree = ""; }; + B275352C0B053814002CE64F /* FloatRectCG.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FloatRectCG.cpp; sourceTree = ""; }; + B275352D0B053814002CE64F /* FloatSizeCG.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FloatSizeCG.cpp; sourceTree = ""; }; + B27535300B053814002CE64F /* ImageCG.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ImageCG.cpp; sourceTree = ""; }; + B27535310B053814002CE64F /* ImageSourceCG.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ImageSourceCG.cpp; sourceTree = ""; }; + B27535320B053814002CE64F /* IntPointCG.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = IntPointCG.cpp; sourceTree = ""; }; + B27535330B053814002CE64F /* IntRectCG.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = IntRectCG.cpp; sourceTree = ""; }; + B27535340B053814002CE64F /* IntSizeCG.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = IntSizeCG.cpp; sourceTree = ""; }; + B27535350B053814002CE64F /* PathCG.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PathCG.cpp; sourceTree = ""; }; + B27535360B053814002CE64F /* PDFDocumentImage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PDFDocumentImage.cpp; sourceTree = ""; }; + B27535370B053814002CE64F /* PDFDocumentImage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PDFDocumentImage.h; sourceTree = ""; }; + B27535380B053814002CE64F /* Color.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Color.cpp; sourceTree = ""; }; + B27535390B053814002CE64F /* Color.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Color.h; sourceTree = ""; }; + B275353A0B053814002CE64F /* FloatPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FloatPoint.cpp; sourceTree = ""; }; + B275353B0B053814002CE64F /* FloatPoint.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FloatPoint.h; sourceTree = ""; }; + B275353C0B053814002CE64F /* FloatRect.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FloatRect.cpp; sourceTree = ""; }; + B275353D0B053814002CE64F /* FloatRect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FloatRect.h; sourceTree = ""; }; + B275353E0B053814002CE64F /* FloatSize.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FloatSize.cpp; sourceTree = ""; }; + B275353F0B053814002CE64F /* FloatSize.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FloatSize.h; sourceTree = ""; }; + B27535400B053814002CE64F /* Icon.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Icon.h; sourceTree = ""; }; + B27535410B053814002CE64F /* Image.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Image.cpp; sourceTree = ""; }; + B27535420B053814002CE64F /* Image.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Image.h; sourceTree = ""; }; + B27535430B053814002CE64F /* ImageSource.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ImageSource.h; sourceTree = ""; }; + B27535440B053814002CE64F /* IntPoint.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = IntPoint.h; sourceTree = ""; }; + B27535450B053814002CE64F /* IntRect.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = IntRect.cpp; sourceTree = ""; }; + B27535460B053814002CE64F /* IntRect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = IntRect.h; sourceTree = ""; }; + B27535470B053814002CE64F /* IntSize.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = IntSize.h; sourceTree = ""; }; + B27535480B053814002CE64F /* IntSizeHash.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = IntSizeHash.h; sourceTree = ""; }; + B275354A0B053814002CE64F /* ColorMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = ColorMac.mm; sourceTree = ""; }; + B275354B0B053814002CE64F /* FloatPointMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = FloatPointMac.mm; sourceTree = ""; }; + B275354C0B053814002CE64F /* FloatRectMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = FloatRectMac.mm; sourceTree = ""; }; + B275354D0B053814002CE64F /* FloatSizeMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = FloatSizeMac.mm; sourceTree = ""; }; + B275354E0B053814002CE64F /* ImageMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = ImageMac.mm; sourceTree = ""; }; + B275354F0B053814002CE64F /* IntPointMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = IntPointMac.mm; sourceTree = ""; }; + B27535500B053814002CE64F /* IntRectMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = IntRectMac.mm; sourceTree = ""; }; + B27535510B053814002CE64F /* IntSizeMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = IntSizeMac.mm; sourceTree = ""; }; + B27535520B053814002CE64F /* Path.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Path.cpp; sourceTree = ""; }; + B27535530B053814002CE64F /* Path.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Path.h; sourceTree = ""; }; + B275358D0B053A66002CE64F /* IconMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = IconMac.mm; sourceTree = ""; }; + B277B4030B22F37C0004BEC6 /* GraphicsContextMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = GraphicsContextMac.mm; sourceTree = ""; }; + B27B281F0CEF0C0700D39D54 /* JSSVGFontElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFontElement.cpp; sourceTree = ""; }; + B27B28200CEF0C0700D39D54 /* JSSVGFontElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFontElement.h; sourceTree = ""; }; + B27B28210CEF0C0700D39D54 /* JSSVGGlyphElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGGlyphElement.cpp; sourceTree = ""; }; + B27B28220CEF0C0700D39D54 /* JSSVGGlyphElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGGlyphElement.h; sourceTree = ""; }; + B27B28230CEF0C0700D39D54 /* JSSVGMissingGlyphElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGMissingGlyphElement.cpp; sourceTree = ""; }; + B27B28240CEF0C0700D39D54 /* JSSVGMissingGlyphElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGMissingGlyphElement.h; sourceTree = ""; }; + B28C6A1E0D00C44800334AA4 /* SVGDocumentExtensions.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGDocumentExtensions.cpp; sourceTree = ""; }; + B28C6A1F0D00C44800334AA4 /* SVGDocumentExtensions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGDocumentExtensions.h; sourceTree = ""; }; + B28C6A200D00C44800334AA4 /* SVGImageLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGImageLoader.cpp; sourceTree = ""; }; + B28C6A210D00C44800334AA4 /* SVGImageLoader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGImageLoader.h; sourceTree = ""; }; + B28C6A260D00C44800334AA4 /* xlinkattrs.in */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = xlinkattrs.in; sourceTree = ""; }; + B2A015920AF6CD53006BCE0E /* GraphicsContext.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsContext.cpp; sourceTree = ""; }; + B2A015930AF6CD53006BCE0E /* GraphicsContext.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = GraphicsContext.h; sourceTree = ""; }; + B2A015940AF6CD53006BCE0E /* GraphicsTypes.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsTypes.cpp; sourceTree = ""; }; + B2A015950AF6CD53006BCE0E /* GraphicsTypes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = GraphicsTypes.h; sourceTree = ""; }; + B2A10B910B3818BD00099AA4 /* ImageBuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ImageBuffer.h; sourceTree = ""; }; + B2A10B930B3818D700099AA4 /* ImageBufferCG.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ImageBufferCG.cpp; sourceTree = ""; }; + B2A1F2A10CEF0ABF00442F6A /* SVGFontElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFontElement.cpp; sourceTree = ""; }; + B2A1F2A20CEF0ABF00442F6A /* SVGFontElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFontElement.h; sourceTree = ""; }; + B2A1F2A30CEF0ABF00442F6A /* SVGFontElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGFontElement.idl; sourceTree = ""; }; + B2A1F2A40CEF0ABF00442F6A /* SVGGlyphElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGGlyphElement.cpp; sourceTree = ""; }; + B2A1F2A50CEF0ABF00442F6A /* SVGGlyphElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGGlyphElement.h; sourceTree = ""; }; + B2A1F2A60CEF0ABF00442F6A /* SVGGlyphElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGGlyphElement.idl; sourceTree = ""; }; + B2A1F2A70CEF0ABF00442F6A /* SVGMissingGlyphElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGMissingGlyphElement.cpp; sourceTree = ""; }; + B2A1F2A80CEF0ABF00442F6A /* SVGMissingGlyphElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGMissingGlyphElement.h; sourceTree = ""; }; + B2A1F2A90CEF0ABF00442F6A /* SVGMissingGlyphElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGMissingGlyphElement.idl; sourceTree = ""; }; + B2AFFC740D00A5C10030074D /* FontCacheMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = FontCacheMac.mm; sourceTree = ""; }; + B2AFFC750D00A5C10030074D /* FontCustomPlatformData.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FontCustomPlatformData.cpp; sourceTree = ""; }; + B2AFFC760D00A5C10030074D /* FontCustomPlatformData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FontCustomPlatformData.h; sourceTree = ""; }; + B2AFFC770D00A5C10030074D /* SimpleFontDataMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = SimpleFontDataMac.mm; sourceTree = ""; }; + B2AFFC780D00A5C10030074D /* FontMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = FontMac.mm; sourceTree = ""; }; + B2AFFC7B0D00A5C10030074D /* GlyphPageTreeNodeMac.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = GlyphPageTreeNodeMac.cpp; sourceTree = ""; }; + B2AFFC850D00A5DF0030074D /* character-sets.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = "character-sets.txt"; sourceTree = ""; }; + B2AFFC860D00A5DF0030074D /* mac-encodings.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = "mac-encodings.txt"; sourceTree = ""; }; + B2AFFC870D00A5DF0030074D /* make-charset-table.pl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.perl; path = "make-charset-table.pl"; sourceTree = ""; }; + B2AFFC8A0D00A5DF0030074D /* StringImplMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = StringImplMac.mm; sourceTree = ""; }; + B2AFFC8B0D00A5DF0030074D /* StringMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = StringMac.mm; sourceTree = ""; }; + B2AFFC8C0D00A5DF0030074D /* TextBoundaries.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = TextBoundaries.mm; sourceTree = ""; }; + B2AFFC8D0D00A5DF0030074D /* TextBreakIteratorInternalICUMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = TextBreakIteratorInternalICUMac.mm; sourceTree = ""; }; + B2AFFC8E0D00A5DF0030074D /* TextCodecMac.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TextCodecMac.cpp; sourceTree = ""; }; + B2AFFC8F0D00A5DF0030074D /* TextCodecMac.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TextCodecMac.h; sourceTree = ""; }; + B2B1F7140D00CAA8004AEA64 /* PointerEventsHitRules.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PointerEventsHitRules.cpp; sourceTree = ""; }; + B2B1F7150D00CAA8004AEA64 /* PointerEventsHitRules.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PointerEventsHitRules.h; sourceTree = ""; }; + B2B2645A0D00A77E000ACC1D /* StringCF.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = StringCF.cpp; sourceTree = ""; }; + B2B2645B0D00A77E000ACC1D /* StringImplCF.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = StringImplCF.cpp; sourceTree = ""; }; + B2C3D9F20D006C1D00EF6F26 /* BidiContext.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = BidiContext.cpp; sourceTree = ""; }; + B2C3D9F30D006C1D00EF6F26 /* BidiContext.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = BidiContext.h; sourceTree = ""; }; + B2C3D9F40D006C1D00EF6F26 /* BidiResolver.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = BidiResolver.h; sourceTree = ""; }; + B2C3D9FA0D006C1D00EF6F26 /* CharsetData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CharsetData.h; sourceTree = ""; }; + B2C3D9FC0D006C1D00EF6F26 /* RegularExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RegularExpression.cpp; sourceTree = ""; }; + B2C3D9FD0D006C1D00EF6F26 /* RegularExpression.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RegularExpression.h; sourceTree = ""; }; + B2C3D9FE0D006C1D00EF6F26 /* SegmentedString.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SegmentedString.cpp; sourceTree = ""; }; + B2C3D9FF0D006C1D00EF6F26 /* SegmentedString.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SegmentedString.h; sourceTree = ""; }; + B2C3DA040D006C1D00EF6F26 /* TextBoundaries.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TextBoundaries.h; sourceTree = ""; }; + B2C3DA060D006C1D00EF6F26 /* TextBreakIterator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TextBreakIterator.h; sourceTree = ""; }; + B2C3DA070D006C1D00EF6F26 /* TextBreakIteratorICU.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TextBreakIteratorICU.cpp; sourceTree = ""; }; + B2C3DA080D006C1D00EF6F26 /* TextBreakIteratorInternalICU.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TextBreakIteratorInternalICU.h; sourceTree = ""; }; + B2C3DA090D006C1D00EF6F26 /* TextCodec.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TextCodec.cpp; sourceTree = ""; }; + B2C3DA0A0D006C1D00EF6F26 /* TextCodec.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TextCodec.h; sourceTree = ""; }; + B2C3DA0B0D006C1D00EF6F26 /* TextCodecICU.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TextCodecICU.cpp; sourceTree = ""; }; + B2C3DA0C0D006C1D00EF6F26 /* TextCodecICU.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TextCodecICU.h; sourceTree = ""; }; + B2C3DA0D0D006C1D00EF6F26 /* TextCodecLatin1.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TextCodecLatin1.cpp; sourceTree = ""; }; + B2C3DA0E0D006C1D00EF6F26 /* TextCodecLatin1.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TextCodecLatin1.h; sourceTree = ""; }; + B2C3DA0F0D006C1D00EF6F26 /* TextCodecUserDefined.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TextCodecUserDefined.cpp; sourceTree = ""; }; + B2C3DA100D006C1D00EF6F26 /* TextCodecUserDefined.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TextCodecUserDefined.h; sourceTree = ""; }; + B2C3DA110D006C1D00EF6F26 /* TextCodecUTF16.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TextCodecUTF16.cpp; sourceTree = ""; }; + B2C3DA120D006C1D00EF6F26 /* TextCodecUTF16.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TextCodecUTF16.h; sourceTree = ""; }; + B2C3DA150D006C1D00EF6F26 /* TextDirection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TextDirection.h; sourceTree = ""; }; + B2C3DA160D006C1D00EF6F26 /* TextEncoding.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TextEncoding.cpp; sourceTree = ""; }; + B2C3DA170D006C1D00EF6F26 /* TextEncoding.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TextEncoding.h; sourceTree = ""; }; + B2C3DA180D006C1D00EF6F26 /* TextEncodingRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TextEncodingRegistry.cpp; sourceTree = ""; }; + B2C3DA190D006C1D00EF6F26 /* TextEncodingRegistry.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TextEncodingRegistry.h; sourceTree = ""; }; + B2C3DA1A0D006C1D00EF6F26 /* TextStream.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TextStream.cpp; sourceTree = ""; }; + B2C3DA1B0D006C1D00EF6F26 /* TextStream.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TextStream.h; sourceTree = ""; }; + B2C3DA1C0D006C1D00EF6F26 /* UnicodeRange.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = UnicodeRange.cpp; sourceTree = ""; }; + B2C3DA1D0D006C1D00EF6F26 /* UnicodeRange.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = UnicodeRange.h; sourceTree = ""; }; + B2C3DA4F0D006CD600EF6F26 /* Font.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Font.cpp; sourceTree = ""; }; + B2C3DA500D006CD600EF6F26 /* Font.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Font.h; sourceTree = ""; }; + B2C3DA510D006CD600EF6F26 /* FontCache.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FontCache.cpp; sourceTree = ""; }; + B2C3DA520D006CD600EF6F26 /* FontCache.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FontCache.h; sourceTree = ""; }; + B2C3DA530D006CD600EF6F26 /* SimpleFontData.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SimpleFontData.cpp; sourceTree = ""; }; + B2C3DA540D006CD600EF6F26 /* SimpleFontData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SimpleFontData.h; sourceTree = ""; }; + B2C3DA550D006CD600EF6F26 /* FontDescription.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FontDescription.h; sourceTree = ""; }; + B2C3DA560D006CD600EF6F26 /* FontGlyphs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FontGlyphs.cpp; sourceTree = ""; }; + B2C3DA570D006CD600EF6F26 /* FontGlyphs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FontGlyphs.h; sourceTree = ""; }; + B2C3DA5A0D006CD600EF6F26 /* FontSelector.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FontSelector.h; sourceTree = ""; }; + B2C3DA5B0D006CD600EF6F26 /* GlyphBuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = GlyphBuffer.h; sourceTree = ""; }; + B2C3DA5C0D006CD600EF6F26 /* GlyphPageTreeNode.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = GlyphPageTreeNode.cpp; sourceTree = ""; }; + B2C3DA5D0D006CD600EF6F26 /* GlyphPageTreeNode.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = GlyphPageTreeNode.h; sourceTree = ""; }; + B2C96D8C0B3AF2B7005E80EC /* JSSVGPathSegCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegCustom.cpp; sourceTree = ""; }; + B2CB923B0B5BD941009BAA78 /* JSSVGElementInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGElementInstance.cpp; sourceTree = ""; }; + B2CB923C0B5BD941009BAA78 /* JSSVGElementInstance.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGElementInstance.h; sourceTree = ""; }; + B2CB923D0B5BD941009BAA78 /* JSSVGElementInstanceList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGElementInstanceList.cpp; sourceTree = ""; }; + B2CB923E0B5BD941009BAA78 /* JSSVGElementInstanceList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGElementInstanceList.h; sourceTree = ""; }; + B2E27C9D0B0F2B0900F17C7B /* FloatPoint3D.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FloatPoint3D.cpp; sourceTree = ""; }; + B2E27C9E0B0F2B0900F17C7B /* FloatPoint3D.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FloatPoint3D.h; sourceTree = ""; }; + B2E4EC940D00C22B00432643 /* SVGZoomEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGZoomEvent.cpp; sourceTree = ""; }; + B2E4EC950D00C22B00432643 /* SVGZoomEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGZoomEvent.h; sourceTree = ""; }; + B2E4EC960D00C22B00432643 /* SVGZoomEvent.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGZoomEvent.idl; sourceTree = ""; }; + B2ED97700B1F55CE00257D0F /* GraphicsContextCG.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsContextCG.cpp; sourceTree = ""; }; + B2F34FE50E82F81400F627CD /* DNS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DNS.h; sourceTree = ""; }; + B2F34FE80E82F82700F627CD /* DNSCFNet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DNSCFNet.cpp; sourceTree = ""; }; + B2FA3C4E0AB75A6E000E5AC4 /* JSSVGAnimateColorElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimateColorElement.cpp; sourceTree = ""; }; + B2FA3C4F0AB75A6E000E5AC4 /* JSSVGAnimateColorElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimateColorElement.h; sourceTree = ""; }; + B2FA3C500AB75A6E000E5AC4 /* JSSVGAnimatedAngle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimatedAngle.cpp; sourceTree = ""; }; + B2FA3C510AB75A6E000E5AC4 /* JSSVGAnimatedAngle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimatedAngle.h; sourceTree = ""; }; + B2FA3C520AB75A6E000E5AC4 /* JSSVGAnimatedBoolean.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimatedBoolean.cpp; sourceTree = ""; }; + B2FA3C530AB75A6E000E5AC4 /* JSSVGAnimatedBoolean.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimatedBoolean.h; sourceTree = ""; }; + B2FA3C540AB75A6E000E5AC4 /* JSSVGAnimatedEnumeration.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimatedEnumeration.cpp; sourceTree = ""; }; + B2FA3C550AB75A6E000E5AC4 /* JSSVGAnimatedEnumeration.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimatedEnumeration.h; sourceTree = ""; }; + B2FA3C560AB75A6E000E5AC4 /* JSSVGAnimatedInteger.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimatedInteger.cpp; sourceTree = ""; }; + B2FA3C570AB75A6E000E5AC4 /* JSSVGAnimatedInteger.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimatedInteger.h; sourceTree = ""; }; + B2FA3C580AB75A6E000E5AC4 /* JSSVGAnimatedLength.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimatedLength.cpp; sourceTree = ""; }; + B2FA3C590AB75A6E000E5AC4 /* JSSVGAnimatedLength.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimatedLength.h; sourceTree = ""; }; + B2FA3C5A0AB75A6E000E5AC4 /* JSSVGAnimatedLengthList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimatedLengthList.cpp; sourceTree = ""; }; + B2FA3C5B0AB75A6E000E5AC4 /* JSSVGAnimatedLengthList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimatedLengthList.h; sourceTree = ""; }; + B2FA3C5C0AB75A6E000E5AC4 /* JSSVGAnimatedNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimatedNumber.cpp; sourceTree = ""; }; + B2FA3C5D0AB75A6E000E5AC4 /* JSSVGAnimatedNumber.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimatedNumber.h; sourceTree = ""; }; + B2FA3C5E0AB75A6E000E5AC4 /* JSSVGAnimatedNumberList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimatedNumberList.cpp; sourceTree = ""; }; + B2FA3C5F0AB75A6E000E5AC4 /* JSSVGAnimatedNumberList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimatedNumberList.h; sourceTree = ""; }; + B2FA3C620AB75A6E000E5AC4 /* JSSVGAnimatedPreserveAspectRatio.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimatedPreserveAspectRatio.cpp; sourceTree = ""; }; + B2FA3C630AB75A6E000E5AC4 /* JSSVGAnimatedPreserveAspectRatio.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimatedPreserveAspectRatio.h; sourceTree = ""; }; + B2FA3C640AB75A6E000E5AC4 /* JSSVGAnimatedRect.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimatedRect.cpp; sourceTree = ""; }; + B2FA3C650AB75A6E000E5AC4 /* JSSVGAnimatedRect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimatedRect.h; sourceTree = ""; }; + B2FA3C660AB75A6E000E5AC4 /* JSSVGAnimatedString.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimatedString.cpp; sourceTree = ""; }; + B2FA3C670AB75A6E000E5AC4 /* JSSVGAnimatedString.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimatedString.h; sourceTree = ""; }; + B2FA3C680AB75A6E000E5AC4 /* JSSVGAnimatedTransformList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimatedTransformList.cpp; sourceTree = ""; }; + B2FA3C690AB75A6E000E5AC4 /* JSSVGAnimatedTransformList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimatedTransformList.h; sourceTree = ""; }; + B2FA3C6A0AB75A6E000E5AC4 /* JSSVGAnimateElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimateElement.cpp; sourceTree = ""; }; + B2FA3C6B0AB75A6E000E5AC4 /* JSSVGAnimateElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimateElement.h; sourceTree = ""; }; + B2FA3C6C0AB75A6E000E5AC4 /* JSSVGAnimateTransformElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimateTransformElement.cpp; sourceTree = ""; }; + B2FA3C6D0AB75A6E000E5AC4 /* JSSVGAnimateTransformElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimateTransformElement.h; sourceTree = ""; }; + B2FA3C6E0AB75A6E000E5AC4 /* JSSVGAnimationElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAnimationElement.cpp; sourceTree = ""; }; + B2FA3C6F0AB75A6E000E5AC4 /* JSSVGAnimationElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAnimationElement.h; sourceTree = ""; }; + B2FA3C700AB75A6E000E5AC4 /* JSSVGCircleElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGCircleElement.cpp; sourceTree = ""; }; + B2FA3C710AB75A6E000E5AC4 /* JSSVGCircleElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGCircleElement.h; sourceTree = ""; }; + B2FA3C720AB75A6E000E5AC4 /* JSSVGClipPathElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGClipPathElement.cpp; sourceTree = ""; }; + B2FA3C730AB75A6E000E5AC4 /* JSSVGClipPathElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGClipPathElement.h; sourceTree = ""; }; + B2FA3C740AB75A6E000E5AC4 /* JSSVGColor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGColor.cpp; sourceTree = ""; }; + B2FA3C750AB75A6E000E5AC4 /* JSSVGColor.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGColor.h; sourceTree = ""; }; + B2FA3C760AB75A6E000E5AC4 /* JSSVGComponentTransferFunctionElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGComponentTransferFunctionElement.cpp; sourceTree = ""; }; + B2FA3C770AB75A6E000E5AC4 /* JSSVGComponentTransferFunctionElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGComponentTransferFunctionElement.h; sourceTree = ""; }; + B2FA3C780AB75A6E000E5AC4 /* JSSVGCursorElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGCursorElement.cpp; sourceTree = ""; }; + B2FA3C790AB75A6E000E5AC4 /* JSSVGCursorElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGCursorElement.h; sourceTree = ""; }; + B2FA3C7A0AB75A6E000E5AC4 /* JSSVGDefsElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGDefsElement.cpp; sourceTree = ""; }; + B2FA3C7B0AB75A6E000E5AC4 /* JSSVGDefsElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGDefsElement.h; sourceTree = ""; }; + B2FA3C7C0AB75A6E000E5AC4 /* JSSVGDescElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGDescElement.cpp; sourceTree = ""; }; + B2FA3C7D0AB75A6E000E5AC4 /* JSSVGDescElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGDescElement.h; sourceTree = ""; }; + B2FA3C7E0AB75A6E000E5AC4 /* JSSVGDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGDocument.cpp; sourceTree = ""; }; + B2FA3C7F0AB75A6E000E5AC4 /* JSSVGDocument.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGDocument.h; sourceTree = ""; }; + B2FA3C800AB75A6E000E5AC4 /* JSSVGEllipseElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGEllipseElement.cpp; sourceTree = ""; }; + B2FA3C810AB75A6E000E5AC4 /* JSSVGEllipseElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGEllipseElement.h; sourceTree = ""; }; + B2FA3C820AB75A6E000E5AC4 /* JSSVGFEBlendElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEBlendElement.cpp; sourceTree = ""; }; + B2FA3C830AB75A6E000E5AC4 /* JSSVGFEBlendElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEBlendElement.h; sourceTree = ""; }; + B2FA3C840AB75A6E000E5AC4 /* JSSVGFEColorMatrixElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEColorMatrixElement.cpp; sourceTree = ""; }; + B2FA3C850AB75A6E000E5AC4 /* JSSVGFEColorMatrixElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEColorMatrixElement.h; sourceTree = ""; }; + B2FA3C860AB75A6E000E5AC4 /* JSSVGFEComponentTransferElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEComponentTransferElement.cpp; sourceTree = ""; }; + B2FA3C870AB75A6E000E5AC4 /* JSSVGFEComponentTransferElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEComponentTransferElement.h; sourceTree = ""; }; + B2FA3C880AB75A6E000E5AC4 /* JSSVGFECompositeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFECompositeElement.cpp; sourceTree = ""; }; + B2FA3C890AB75A6E000E5AC4 /* JSSVGFECompositeElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFECompositeElement.h; sourceTree = ""; }; + B2FA3C8A0AB75A6E000E5AC4 /* JSSVGFEDiffuseLightingElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEDiffuseLightingElement.cpp; sourceTree = ""; }; + B2FA3C8B0AB75A6E000E5AC4 /* JSSVGFEDiffuseLightingElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEDiffuseLightingElement.h; sourceTree = ""; }; + B2FA3C8C0AB75A6E000E5AC4 /* JSSVGFEDisplacementMapElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEDisplacementMapElement.cpp; sourceTree = ""; }; + B2FA3C8D0AB75A6E000E5AC4 /* JSSVGFEDisplacementMapElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEDisplacementMapElement.h; sourceTree = ""; }; + B2FA3C8E0AB75A6E000E5AC4 /* JSSVGFEDistantLightElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEDistantLightElement.cpp; sourceTree = ""; }; + B2FA3C8F0AB75A6E000E5AC4 /* JSSVGFEDistantLightElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEDistantLightElement.h; sourceTree = ""; }; + B2FA3C900AB75A6E000E5AC4 /* JSSVGFEFloodElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEFloodElement.cpp; sourceTree = ""; }; + B2FA3C910AB75A6E000E5AC4 /* JSSVGFEFloodElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEFloodElement.h; sourceTree = ""; }; + B2FA3C920AB75A6E000E5AC4 /* JSSVGFEFuncAElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEFuncAElement.cpp; sourceTree = ""; }; + B2FA3C930AB75A6E000E5AC4 /* JSSVGFEFuncAElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEFuncAElement.h; sourceTree = ""; }; + B2FA3C940AB75A6E000E5AC4 /* JSSVGFEFuncBElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEFuncBElement.cpp; sourceTree = ""; }; + B2FA3C950AB75A6E000E5AC4 /* JSSVGFEFuncBElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEFuncBElement.h; sourceTree = ""; }; + B2FA3C960AB75A6E000E5AC4 /* JSSVGFEFuncGElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEFuncGElement.cpp; sourceTree = ""; }; + B2FA3C970AB75A6E000E5AC4 /* JSSVGFEFuncGElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEFuncGElement.h; sourceTree = ""; }; + B2FA3C980AB75A6E000E5AC4 /* JSSVGFEFuncRElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEFuncRElement.cpp; sourceTree = ""; }; + B2FA3C990AB75A6E000E5AC4 /* JSSVGFEFuncRElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEFuncRElement.h; sourceTree = ""; }; + B2FA3C9A0AB75A6E000E5AC4 /* JSSVGFEGaussianBlurElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEGaussianBlurElement.cpp; sourceTree = ""; }; + B2FA3C9B0AB75A6E000E5AC4 /* JSSVGFEGaussianBlurElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEGaussianBlurElement.h; sourceTree = ""; }; + B2FA3C9C0AB75A6E000E5AC4 /* JSSVGFEImageElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEImageElement.cpp; sourceTree = ""; }; + B2FA3C9D0AB75A6E000E5AC4 /* JSSVGFEImageElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEImageElement.h; sourceTree = ""; }; + B2FA3C9E0AB75A6E000E5AC4 /* JSSVGFEMergeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEMergeElement.cpp; sourceTree = ""; }; + B2FA3C9F0AB75A6E000E5AC4 /* JSSVGFEMergeElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEMergeElement.h; sourceTree = ""; }; + B2FA3CA00AB75A6E000E5AC4 /* JSSVGFEMergeNodeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEMergeNodeElement.cpp; sourceTree = ""; }; + B2FA3CA10AB75A6E000E5AC4 /* JSSVGFEMergeNodeElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEMergeNodeElement.h; sourceTree = ""; }; + B2FA3CA20AB75A6E000E5AC4 /* JSSVGFEOffsetElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEOffsetElement.cpp; sourceTree = ""; }; + B2FA3CA30AB75A6E000E5AC4 /* JSSVGFEOffsetElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEOffsetElement.h; sourceTree = ""; }; + B2FA3CA40AB75A6E000E5AC4 /* JSSVGFEPointLightElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFEPointLightElement.cpp; sourceTree = ""; }; + B2FA3CA50AB75A6E000E5AC4 /* JSSVGFEPointLightElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFEPointLightElement.h; sourceTree = ""; }; + B2FA3CA60AB75A6E000E5AC4 /* JSSVGFESpecularLightingElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFESpecularLightingElement.cpp; sourceTree = ""; }; + B2FA3CA70AB75A6E000E5AC4 /* JSSVGFESpecularLightingElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFESpecularLightingElement.h; sourceTree = ""; }; + B2FA3CA80AB75A6E000E5AC4 /* JSSVGFESpotLightElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFESpotLightElement.cpp; sourceTree = ""; }; + B2FA3CA90AB75A6E000E5AC4 /* JSSVGFESpotLightElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFESpotLightElement.h; sourceTree = ""; }; + B2FA3CAA0AB75A6E000E5AC4 /* JSSVGFETileElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFETileElement.cpp; sourceTree = ""; }; + B2FA3CAB0AB75A6E000E5AC4 /* JSSVGFETileElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFETileElement.h; sourceTree = ""; }; + B2FA3CAC0AB75A6E000E5AC4 /* JSSVGFETurbulenceElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFETurbulenceElement.cpp; sourceTree = ""; }; + B2FA3CAD0AB75A6E000E5AC4 /* JSSVGFETurbulenceElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFETurbulenceElement.h; sourceTree = ""; }; + B2FA3CAE0AB75A6E000E5AC4 /* JSSVGFilterElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGFilterElement.cpp; sourceTree = ""; }; + B2FA3CAF0AB75A6E000E5AC4 /* JSSVGFilterElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGFilterElement.h; sourceTree = ""; }; + B2FA3CB00AB75A6E000E5AC4 /* JSSVGForeignObjectElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGForeignObjectElement.cpp; sourceTree = ""; }; + B2FA3CB10AB75A6E000E5AC4 /* JSSVGForeignObjectElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGForeignObjectElement.h; sourceTree = ""; }; + B2FA3CB20AB75A6E000E5AC4 /* JSSVGGElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGGElement.cpp; sourceTree = ""; }; + B2FA3CB30AB75A6E000E5AC4 /* JSSVGGElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGGElement.h; sourceTree = ""; }; + B2FA3CB40AB75A6E000E5AC4 /* JSSVGGradientElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGGradientElement.cpp; sourceTree = ""; }; + B2FA3CB50AB75A6E000E5AC4 /* JSSVGGradientElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGGradientElement.h; sourceTree = ""; }; + 5A91469E8E9F8485C37A2876 /* JSSVGGraphicsElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGGraphicsElement.cpp; sourceTree = ""; }; + 950C4C02BED8936F818E2F99 /* JSSVGGraphicsElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGGraphicsElement.h; sourceTree = ""; }; + B2FA3CB60AB75A6E000E5AC4 /* JSSVGImageElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGImageElement.cpp; sourceTree = ""; }; + B2FA3CB70AB75A6E000E5AC4 /* JSSVGImageElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGImageElement.h; sourceTree = ""; }; + B2FA3CB80AB75A6E000E5AC4 /* JSSVGLength.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGLength.cpp; sourceTree = ""; }; + B2FA3CB90AB75A6E000E5AC4 /* JSSVGLength.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGLength.h; sourceTree = ""; }; + B2FA3CBA0AB75A6E000E5AC4 /* JSSVGLengthList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGLengthList.cpp; sourceTree = ""; }; + B2FA3CBB0AB75A6E000E5AC4 /* JSSVGLengthList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGLengthList.h; sourceTree = ""; }; + B2FA3CBC0AB75A6E000E5AC4 /* JSSVGLinearGradientElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGLinearGradientElement.cpp; sourceTree = ""; }; + B2FA3CBD0AB75A6E000E5AC4 /* JSSVGLinearGradientElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGLinearGradientElement.h; sourceTree = ""; }; + B2FA3CBE0AB75A6E000E5AC4 /* JSSVGLineElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGLineElement.cpp; sourceTree = ""; }; + B2FA3CBF0AB75A6E000E5AC4 /* JSSVGLineElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGLineElement.h; sourceTree = ""; }; + B2FA3CC00AB75A6E000E5AC4 /* JSSVGMarkerElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGMarkerElement.cpp; sourceTree = ""; }; + B2FA3CC10AB75A6E000E5AC4 /* JSSVGMarkerElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGMarkerElement.h; sourceTree = ""; }; + B2FA3CC20AB75A6E000E5AC4 /* JSSVGMaskElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGMaskElement.cpp; sourceTree = ""; }; + B2FA3CC30AB75A6E000E5AC4 /* JSSVGMaskElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGMaskElement.h; sourceTree = ""; }; + B2FA3CC40AB75A6E000E5AC4 /* JSSVGMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGMatrix.cpp; sourceTree = ""; }; + B2FA3CC50AB75A6E000E5AC4 /* JSSVGMatrix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGMatrix.h; sourceTree = ""; }; + B2FA3CC60AB75A6E000E5AC4 /* JSSVGMetadataElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGMetadataElement.cpp; sourceTree = ""; }; + B2FA3CC70AB75A6E000E5AC4 /* JSSVGMetadataElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGMetadataElement.h; sourceTree = ""; }; + B2FA3CC80AB75A6E000E5AC4 /* JSSVGNumberList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGNumberList.cpp; sourceTree = ""; }; + B2FA3CC90AB75A6E000E5AC4 /* JSSVGNumberList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGNumberList.h; sourceTree = ""; }; + B2FA3CCA0AB75A6E000E5AC4 /* JSSVGPaint.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPaint.cpp; sourceTree = ""; }; + B2FA3CCB0AB75A6E000E5AC4 /* JSSVGPaint.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPaint.h; sourceTree = ""; }; + B2FA3CCC0AB75A6E000E5AC4 /* JSSVGPathElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathElement.cpp; sourceTree = ""; }; + B2FA3CCD0AB75A6E000E5AC4 /* JSSVGPathElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathElement.h; sourceTree = ""; }; + B2FA3CCE0AB75A6E000E5AC4 /* JSSVGPathSeg.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSeg.cpp; sourceTree = ""; }; + B2FA3CCF0AB75A6E000E5AC4 /* JSSVGPathSeg.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSeg.h; sourceTree = ""; }; + B2FA3CD00AB75A6E000E5AC4 /* JSSVGPathSegArcAbs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegArcAbs.cpp; sourceTree = ""; }; + B2FA3CD10AB75A6E000E5AC4 /* JSSVGPathSegArcAbs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegArcAbs.h; sourceTree = ""; }; + B2FA3CD20AB75A6E000E5AC4 /* JSSVGPathSegArcRel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegArcRel.cpp; sourceTree = ""; }; + B2FA3CD30AB75A6E000E5AC4 /* JSSVGPathSegArcRel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegArcRel.h; sourceTree = ""; }; + B2FA3CD40AB75A6E000E5AC4 /* JSSVGPathSegClosePath.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegClosePath.cpp; sourceTree = ""; }; + B2FA3CD50AB75A6E000E5AC4 /* JSSVGPathSegClosePath.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegClosePath.h; sourceTree = ""; }; + B2FA3CD60AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicAbs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegCurvetoCubicAbs.cpp; sourceTree = ""; }; + B2FA3CD70AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicAbs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegCurvetoCubicAbs.h; sourceTree = ""; }; + B2FA3CD80AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicRel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegCurvetoCubicRel.cpp; sourceTree = ""; }; + B2FA3CD90AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicRel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegCurvetoCubicRel.h; sourceTree = ""; }; + B2FA3CDA0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothAbs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegCurvetoCubicSmoothAbs.cpp; sourceTree = ""; }; + B2FA3CDB0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothAbs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegCurvetoCubicSmoothAbs.h; sourceTree = ""; }; + B2FA3CDC0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothRel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegCurvetoCubicSmoothRel.cpp; sourceTree = ""; }; + B2FA3CDD0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothRel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegCurvetoCubicSmoothRel.h; sourceTree = ""; }; + B2FA3CDE0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticAbs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegCurvetoQuadraticAbs.cpp; sourceTree = ""; }; + B2FA3CDF0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticAbs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegCurvetoQuadraticAbs.h; sourceTree = ""; }; + B2FA3CE00AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticRel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegCurvetoQuadraticRel.cpp; sourceTree = ""; }; + B2FA3CE10AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticRel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegCurvetoQuadraticRel.h; sourceTree = ""; }; + B2FA3CE20AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothAbs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegCurvetoQuadraticSmoothAbs.cpp; sourceTree = ""; }; + B2FA3CE30AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothAbs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegCurvetoQuadraticSmoothAbs.h; sourceTree = ""; }; + B2FA3CE40AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothRel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegCurvetoQuadraticSmoothRel.cpp; sourceTree = ""; }; + B2FA3CE50AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothRel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegCurvetoQuadraticSmoothRel.h; sourceTree = ""; }; + B2FA3CE60AB75A6E000E5AC4 /* JSSVGPathSegLinetoAbs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegLinetoAbs.cpp; sourceTree = ""; }; + B2FA3CE70AB75A6E000E5AC4 /* JSSVGPathSegLinetoAbs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegLinetoAbs.h; sourceTree = ""; }; + B2FA3CE80AB75A6E000E5AC4 /* JSSVGPathSegLinetoHorizontalAbs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegLinetoHorizontalAbs.cpp; sourceTree = ""; }; + B2FA3CE90AB75A6E000E5AC4 /* JSSVGPathSegLinetoHorizontalAbs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegLinetoHorizontalAbs.h; sourceTree = ""; }; + B2FA3CEA0AB75A6E000E5AC4 /* JSSVGPathSegLinetoHorizontalRel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegLinetoHorizontalRel.cpp; sourceTree = ""; }; + B2FA3CEB0AB75A6E000E5AC4 /* JSSVGPathSegLinetoHorizontalRel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegLinetoHorizontalRel.h; sourceTree = ""; }; + B2FA3CEC0AB75A6E000E5AC4 /* JSSVGPathSegLinetoRel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegLinetoRel.cpp; sourceTree = ""; }; + B2FA3CED0AB75A6E000E5AC4 /* JSSVGPathSegLinetoRel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegLinetoRel.h; sourceTree = ""; }; + B2FA3CEE0AB75A6E000E5AC4 /* JSSVGPathSegLinetoVerticalAbs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegLinetoVerticalAbs.cpp; sourceTree = ""; }; + B2FA3CEF0AB75A6E000E5AC4 /* JSSVGPathSegLinetoVerticalAbs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegLinetoVerticalAbs.h; sourceTree = ""; }; + B2FA3CF00AB75A6E000E5AC4 /* JSSVGPathSegLinetoVerticalRel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegLinetoVerticalRel.cpp; sourceTree = ""; }; + B2FA3CF10AB75A6E000E5AC4 /* JSSVGPathSegLinetoVerticalRel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegLinetoVerticalRel.h; sourceTree = ""; }; + B2FA3CF20AB75A6E000E5AC4 /* JSSVGPathSegList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegList.cpp; sourceTree = ""; }; + B2FA3CF30AB75A6E000E5AC4 /* JSSVGPathSegList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegList.h; sourceTree = ""; }; + B2FA3CF40AB75A6E000E5AC4 /* JSSVGPathSegMovetoAbs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegMovetoAbs.cpp; sourceTree = ""; }; + B2FA3CF50AB75A6E000E5AC4 /* JSSVGPathSegMovetoAbs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegMovetoAbs.h; sourceTree = ""; }; + B2FA3CF60AB75A6E000E5AC4 /* JSSVGPathSegMovetoRel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegMovetoRel.cpp; sourceTree = ""; }; + B2FA3CF70AB75A6E000E5AC4 /* JSSVGPathSegMovetoRel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPathSegMovetoRel.h; sourceTree = ""; }; + B2FA3CF80AB75A6E000E5AC4 /* JSSVGPatternElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPatternElement.cpp; sourceTree = ""; }; + B2FA3CF90AB75A6E000E5AC4 /* JSSVGPatternElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPatternElement.h; sourceTree = ""; }; + B2FA3CFA0AB75A6E000E5AC4 /* JSSVGPointList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPointList.cpp; sourceTree = ""; }; + B2FA3CFB0AB75A6E000E5AC4 /* JSSVGPointList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPointList.h; sourceTree = ""; }; + B2FA3CFD0AB75A6E000E5AC4 /* JSSVGPolygonElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPolygonElement.cpp; sourceTree = ""; }; + B2FA3CFE0AB75A6E000E5AC4 /* JSSVGPolygonElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPolygonElement.h; sourceTree = ""; }; + B2FA3CFF0AB75A6E000E5AC4 /* JSSVGPolylineElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPolylineElement.cpp; sourceTree = ""; }; + B2FA3D000AB75A6E000E5AC4 /* JSSVGPolylineElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPolylineElement.h; sourceTree = ""; }; + B2FA3D010AB75A6E000E5AC4 /* JSSVGPreserveAspectRatio.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPreserveAspectRatio.cpp; sourceTree = ""; }; + B2FA3D020AB75A6E000E5AC4 /* JSSVGPreserveAspectRatio.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGPreserveAspectRatio.h; sourceTree = ""; }; + B2FA3D030AB75A6E000E5AC4 /* JSSVGRadialGradientElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGRadialGradientElement.cpp; sourceTree = ""; }; + B2FA3D040AB75A6E000E5AC4 /* JSSVGRadialGradientElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGRadialGradientElement.h; sourceTree = ""; }; + B2FA3D050AB75A6E000E5AC4 /* JSSVGRectElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGRectElement.cpp; sourceTree = ""; }; + B2FA3D060AB75A6E000E5AC4 /* JSSVGRectElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGRectElement.h; sourceTree = ""; }; + B2FA3D080AB75A6E000E5AC4 /* JSSVGRenderingIntent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGRenderingIntent.cpp; sourceTree = ""; }; + B2FA3D090AB75A6E000E5AC4 /* JSSVGRenderingIntent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGRenderingIntent.h; sourceTree = ""; }; + B2FA3D0A0AB75A6E000E5AC4 /* JSSVGScriptElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGScriptElement.cpp; sourceTree = ""; }; + B2FA3D0B0AB75A6E000E5AC4 /* JSSVGScriptElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGScriptElement.h; sourceTree = ""; }; + B2FA3D0C0AB75A6E000E5AC4 /* JSSVGSetElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGSetElement.cpp; sourceTree = ""; }; + B2FA3D0D0AB75A6E000E5AC4 /* JSSVGSetElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGSetElement.h; sourceTree = ""; }; + B2FA3D0E0AB75A6E000E5AC4 /* JSSVGStopElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGStopElement.cpp; sourceTree = ""; }; + B2FA3D0F0AB75A6E000E5AC4 /* JSSVGStopElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGStopElement.h; sourceTree = ""; }; + B2FA3D100AB75A6E000E5AC4 /* JSSVGStringList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGStringList.cpp; sourceTree = ""; }; + B2FA3D110AB75A6E000E5AC4 /* JSSVGStringList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGStringList.h; sourceTree = ""; }; + B2FA3D120AB75A6E000E5AC4 /* JSSVGStyleElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGStyleElement.cpp; sourceTree = ""; }; + B2FA3D120AB75A6E000E5AC5 /* JSSVGStyledElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGStyledElement.cpp; sourceTree = ""; }; + B2FA3D130AB75A6E000E5AC4 /* JSSVGStyleElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGStyleElement.h; sourceTree = ""; }; + B2FA3D130AB75A6E000E5AC5 /* JSSVGStyledElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGStyledElement.h; sourceTree = ""; }; + B2FA3D140AB75A6F000E5AC4 /* JSSVGSVGElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGSVGElement.cpp; sourceTree = ""; }; + B2FA3D150AB75A6F000E5AC4 /* JSSVGSVGElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGSVGElement.h; sourceTree = ""; }; + B2FA3D160AB75A6F000E5AC4 /* JSSVGSwitchElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGSwitchElement.cpp; sourceTree = ""; }; + B2FA3D170AB75A6F000E5AC4 /* JSSVGSwitchElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGSwitchElement.h; sourceTree = ""; }; + B2FA3D180AB75A6F000E5AC4 /* JSSVGSymbolElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGSymbolElement.cpp; sourceTree = ""; }; + B2FA3D190AB75A6F000E5AC4 /* JSSVGSymbolElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGSymbolElement.h; sourceTree = ""; }; + B2FA3D1A0AB75A6F000E5AC4 /* JSSVGTextContentElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGTextContentElement.cpp; sourceTree = ""; }; + B2FA3D1B0AB75A6F000E5AC4 /* JSSVGTextContentElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGTextContentElement.h; sourceTree = ""; }; + B2FA3D1C0AB75A6F000E5AC4 /* JSSVGTextElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGTextElement.cpp; sourceTree = ""; }; + B2FA3D1D0AB75A6F000E5AC4 /* JSSVGTextElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGTextElement.h; sourceTree = ""; }; + B2FA3D1E0AB75A6F000E5AC4 /* JSSVGTextPositioningElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGTextPositioningElement.cpp; sourceTree = ""; }; + B2FA3D1F0AB75A6F000E5AC4 /* JSSVGTextPositioningElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGTextPositioningElement.h; sourceTree = ""; }; + B2FA3D200AB75A6F000E5AC4 /* JSSVGTitleElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGTitleElement.cpp; sourceTree = ""; }; + B2FA3D210AB75A6F000E5AC4 /* JSSVGTitleElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGTitleElement.h; sourceTree = ""; }; + B2FA3D220AB75A6F000E5AC4 /* JSSVGTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGTransform.cpp; sourceTree = ""; }; + B2FA3D230AB75A6F000E5AC4 /* JSSVGTransform.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGTransform.h; sourceTree = ""; }; + B2FA3D240AB75A6F000E5AC4 /* JSSVGTransformList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGTransformList.cpp; sourceTree = ""; }; + B2FA3D250AB75A6F000E5AC4 /* JSSVGTransformList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGTransformList.h; sourceTree = ""; }; + B2FA3D260AB75A6F000E5AC4 /* JSSVGTRefElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGTRefElement.cpp; sourceTree = ""; }; + B2FA3D270AB75A6F000E5AC4 /* JSSVGTRefElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGTRefElement.h; sourceTree = ""; }; + B2FA3D280AB75A6F000E5AC4 /* JSSVGTSpanElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGTSpanElement.cpp; sourceTree = ""; }; + B2FA3D290AB75A6F000E5AC4 /* JSSVGTSpanElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGTSpanElement.h; sourceTree = ""; }; + B2FA3D2A0AB75A6F000E5AC4 /* JSSVGUnitTypes.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGUnitTypes.cpp; sourceTree = ""; }; + B2FA3D2B0AB75A6F000E5AC4 /* JSSVGUnitTypes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGUnitTypes.h; sourceTree = ""; }; + B2FA3D2C0AB75A6F000E5AC4 /* JSSVGUseElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGUseElement.cpp; sourceTree = ""; }; + B2FA3D2D0AB75A6F000E5AC4 /* JSSVGUseElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGUseElement.h; sourceTree = ""; }; + B2FA3D2E0AB75A6F000E5AC4 /* JSSVGViewElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGViewElement.cpp; sourceTree = ""; }; + B2FA3D2F0AB75A6F000E5AC4 /* JSSVGViewElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGViewElement.h; sourceTree = ""; }; + B2FA3D300AB75A6F000E5AC4 /* JSSVGZoomEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGZoomEvent.cpp; sourceTree = ""; }; + B2FA3D310AB75A6F000E5AC4 /* JSSVGZoomEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGZoomEvent.h; sourceTree = ""; }; + B50F5B800E96CD9900AD71A6 /* WebCoreObjCExtras.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreObjCExtras.mm; sourceTree = ""; }; + B525A96311CA2340003A23A8 /* JSSQLException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSQLException.h; sourceTree = ""; }; + B525A96411CA2340003A23A8 /* JSSQLException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLException.cpp; sourceTree = ""; }; + B5320D69122A24E9002D1440 /* FontPlatformData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontPlatformData.h; sourceTree = ""; }; + B5320D6A122A24E9002D1440 /* FontPlatformDataCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FontPlatformDataCocoa.mm; sourceTree = ""; }; + B55D5AA2119131FC00BCC315 /* JSSQLTransactionSyncCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSQLTransactionSyncCallback.h; sourceTree = ""; }; + B55D5AA3119131FC00BCC315 /* JSSQLTransactionSyncCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLTransactionSyncCallback.cpp; sourceTree = ""; }; + B55D5AA71191325000BCC315 /* JSSQLTransactionSyncCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLTransactionSyncCustom.cpp; sourceTree = ""; }; + B58CEB6711913607002A6790 /* JSDatabaseSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDatabaseSync.h; sourceTree = ""; }; + B58CEB6811913607002A6790 /* JSDatabaseSync.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDatabaseSync.cpp; sourceTree = ""; }; + B58CEB6B1191361C002A6790 /* JSSQLTransactionSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSQLTransactionSync.h; sourceTree = ""; }; + B58CEB6C1191361C002A6790 /* JSSQLTransactionSync.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLTransactionSync.cpp; sourceTree = ""; }; + B59DD697119029E5007E9684 /* JSDatabaseCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDatabaseCallback.h; sourceTree = ""; }; + B59DD698119029E5007E9684 /* JSDatabaseCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDatabaseCallback.cpp; sourceTree = ""; }; + B59DD69B11902A42007E9684 /* JSSQLTransactionCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSQLTransactionCallback.h; sourceTree = ""; }; + B59DD69C11902A42007E9684 /* JSSQLTransactionCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLTransactionCallback.cpp; sourceTree = ""; }; + B59DD69F11902A52007E9684 /* JSSQLTransactionErrorCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSQLTransactionErrorCallback.h; sourceTree = ""; }; + B59DD6A011902A52007E9684 /* JSSQLTransactionErrorCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLTransactionErrorCallback.cpp; sourceTree = ""; }; + B59DD6A311902A62007E9684 /* JSSQLStatementCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSQLStatementCallback.h; sourceTree = ""; }; + B59DD6A411902A62007E9684 /* JSSQLStatementCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLStatementCallback.cpp; sourceTree = ""; }; + B59DD6A711902A71007E9684 /* JSSQLStatementErrorCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSQLStatementErrorCallback.h; sourceTree = ""; }; + B59DD6A811902A71007E9684 /* JSSQLStatementErrorCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLStatementErrorCallback.cpp; sourceTree = ""; }; + B5A684210FFABE9800D24689 /* SQLiteFileSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLiteFileSystem.h; path = sql/SQLiteFileSystem.h; sourceTree = ""; }; + B5A684230FFABEAA00D24689 /* SQLiteFileSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLiteFileSystem.cpp; path = sql/SQLiteFileSystem.cpp; sourceTree = ""; }; + B5D31DF811CF610B009F22B4 /* ActiveDOMCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ActiveDOMCallback.cpp; path = generic/ActiveDOMCallback.cpp; sourceTree = ""; }; + B5D31DF911CF610B009F22B4 /* ActiveDOMCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ActiveDOMCallback.h; path = generic/ActiveDOMCallback.h; sourceTree = ""; }; + B656626E120B1227006EA85C /* JSIDBTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBTransaction.h; sourceTree = ""; }; + B658FF9F1522EF3A00DD5595 /* JSRadioNodeList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSRadioNodeList.cpp; sourceTree = ""; }; + B658FFA01522EF3A00DD5595 /* JSRadioNodeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSRadioNodeList.h; sourceTree = ""; }; + B658FFA31522EFAA00DD5595 /* RadioNodeList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RadioNodeList.cpp; sourceTree = ""; }; + B658FFA41522EFAA00DD5595 /* RadioNodeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RadioNodeList.h; sourceTree = ""; }; + B6D9D23314EABD260090D75E /* FocusEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FocusEvent.h; sourceTree = ""; }; + B6D9D23414EABD260090D75E /* FocusEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FocusEvent.cpp; sourceTree = ""; }; + B6D9D27214EABF030090D75E /* FocusEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = FocusEvent.idl; sourceTree = ""; }; + B6D9D27914EAC0860090D75E /* JSFocusEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFocusEvent.h; sourceTree = ""; }; + B6D9D27A14EAC0860090D75E /* JSFocusEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFocusEvent.cpp; sourceTree = ""; }; + B734B180119B9911006587BD /* FontTranscoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FontTranscoder.cpp; path = transcoder/FontTranscoder.cpp; sourceTree = ""; }; + B734B182119B991D006587BD /* FontTranscoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FontTranscoder.h; path = transcoder/FontTranscoder.h; sourceTree = ""; }; + B776D43A1104525D00BEB0EC /* PrintContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrintContext.h; sourceTree = ""; }; + B776D43C1104527500BEB0EC /* PrintContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PrintContext.cpp; sourceTree = ""; }; + B885E8D211E06DD2009FFBF4 /* InspectorApplicationCacheAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorApplicationCacheAgent.cpp; sourceTree = ""; }; + B885E8D311E06DD2009FFBF4 /* InspectorApplicationCacheAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorApplicationCacheAgent.h; sourceTree = ""; }; + B8DBDB47130B0F8A00F5CDB1 /* SetSelectionCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SetSelectionCommand.cpp; sourceTree = ""; }; + B8DBDB48130B0F8A00F5CDB1 /* SetSelectionCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SetSelectionCommand.h; sourceTree = ""; }; + B8DBDB49130B0F8A00F5CDB1 /* SpellingCorrectionCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpellingCorrectionCommand.cpp; sourceTree = ""; }; + B8DBDB4A130B0F8A00F5CDB1 /* SpellingCorrectionCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpellingCorrectionCommand.h; sourceTree = ""; }; + BC00EFFE0E0A185500FD04E3 /* DOMFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMFile.h; sourceTree = ""; }; + BC00EFFF0E0A185500FD04E3 /* DOMFile.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMFile.mm; sourceTree = ""; }; + BC00F0000E0A185500FD04E3 /* DOMFileInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMFileInternal.h; sourceTree = ""; }; + BC00F0010E0A185500FD04E3 /* DOMFileList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMFileList.h; sourceTree = ""; }; + BC00F0020E0A185500FD04E3 /* DOMFileList.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMFileList.mm; sourceTree = ""; }; + BC00F0030E0A185500FD04E3 /* DOMFileListInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMFileListInternal.h; sourceTree = ""; }; + BC00F0100E0A189500FD04E3 /* JSFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFile.cpp; sourceTree = ""; }; + BC00F0110E0A189500FD04E3 /* JSFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFile.h; sourceTree = ""; }; + BC00F0120E0A189500FD04E3 /* JSFileList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFileList.cpp; sourceTree = ""; }; + BC00F0130E0A189500FD04E3 /* JSFileList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFileList.h; sourceTree = ""; }; + BC02A4B60E0997B9004B6D2B /* CSSParserValues.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSParserValues.h; sourceTree = ""; }; + BC02A53F0E099C5A004B6D2B /* CSSParserValues.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSParserValues.cpp; sourceTree = ""; }; + BC02A63B0E09A9CF004B6D2B /* CSSFunctionValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSFunctionValue.h; sourceTree = ""; }; + BC02A6450E09AAE9004B6D2B /* CSSFunctionValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSFunctionValue.cpp; sourceTree = ""; }; + BC06ED040BFD5BAE00856E9D /* JSHTMLTableSectionElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLTableSectionElement.cpp; sourceTree = ""; }; + BC06ED050BFD5BAE00856E9D /* JSHTMLTableSectionElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLTableSectionElement.h; sourceTree = ""; }; + BC06ED990BFD660600856E9D /* JSHTMLTableColElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLTableColElement.cpp; sourceTree = ""; }; + BC06ED9A0BFD660600856E9D /* JSHTMLTableColElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLTableColElement.h; sourceTree = ""; }; + BC06ED9B0BFD660600856E9D /* JSHTMLTableRowElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLTableRowElement.cpp; sourceTree = ""; }; + BC06ED9C0BFD660600856E9D /* JSHTMLTableRowElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLTableRowElement.h; sourceTree = ""; }; + BC06EDE10BFD6D0D00856E9D /* JSHTMLTableCellElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLTableCellElement.cpp; sourceTree = ""; }; + BC06EDE20BFD6D0D00856E9D /* JSHTMLTableCellElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLTableCellElement.h; sourceTree = ""; }; + BC06EE020BFD71AA00856E9D /* JSHTMLTableElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLTableElement.cpp; sourceTree = ""; }; + BC06EE030BFD71AA00856E9D /* JSHTMLTableElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLTableElement.h; sourceTree = ""; }; + BC06F24906D18A7E004A6FA3 /* XSLStyleSheetLibxslt.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XSLStyleSheetLibxslt.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BC06F24A06D18A7E004A6FA3 /* XSLStyleSheet.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = XSLStyleSheet.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BC06F24B06D18A7E004A6FA3 /* XSLTProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XSLTProcessor.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BC06F24C06D18A7E004A6FA3 /* XSLTProcessor.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = XSLTProcessor.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BC06F24D06D18A7E004A6FA3 /* XSLTProcessorLibxslt.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XSLTProcessorLibxslt.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BC073BA90C399B1F000F5979 /* FloatConversion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FloatConversion.h; sourceTree = ""; }; + BC0B358214C4F9540055E22A /* RunLoopMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RunLoopMac.mm; sourceTree = ""; }; + BC0B358514C4F9830055E22A /* RunLoop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RunLoop.cpp; sourceTree = ""; }; + BC0B358614C4F9830055E22A /* RunLoop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RunLoop.h; sourceTree = ""; }; + BC0B36A10CD3C67C00AC7EB5 /* Console.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Console.cpp; sourceTree = ""; }; + BC0B36A20CD3C67C00AC7EB5 /* Console.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Console.h; sourceTree = ""; }; + BC0B36A30CD3C67C00AC7EB5 /* Console.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = Console.idl; sourceTree = ""; }; + BC124EE40C2641CD009E2349 /* BarProp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = BarProp.cpp; sourceTree = ""; }; + BC124EE50C2641CD009E2349 /* BarProp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = BarProp.h; sourceTree = ""; }; + BC124EE60C2641CD009E2349 /* BarProp.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = BarProp.idl; sourceTree = ""; }; + BC124EFD0C26447A009E2349 /* JSBarProp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSBarProp.cpp; sourceTree = ""; }; + BC124EFE0C26447A009E2349 /* JSBarProp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSBarProp.h; sourceTree = ""; }; + BC128A72137C867C00CAC845 /* RenderGrid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderGrid.h; sourceTree = ""; }; + BC128B00137C8D4600CAC845 /* RenderGrid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderGrid.cpp; sourceTree = ""; }; + BC1402880E83680800319717 /* ScrollbarThemeComposite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollbarThemeComposite.cpp; sourceTree = ""; }; + BC1402890E83680800319717 /* ScrollbarThemeComposite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollbarThemeComposite.h; sourceTree = ""; }; + BC17F9650B64EBB8004A65CB /* JSHTMLSelectElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLSelectElementCustom.cpp; sourceTree = ""; }; + BC1A3797097C715F0019F3D8 /* DOM.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOM.h; sourceTree = ""; }; + BC1A3798097C715F0019F3D8 /* DOM.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOM.mm; sourceTree = ""; }; + BC1A3799097C715F0019F3D8 /* DOMCore.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCore.h; sourceTree = ""; }; + BC1A379A097C715F0019F3D8 /* DOMCSS.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSS.h; sourceTree = ""; }; + BC1A379B097C715F0019F3D8 /* DOMCSS.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSS.mm; sourceTree = ""; }; + BC1A379C097C715F0019F3D8 /* DOMEvents.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMEvents.h; sourceTree = ""; }; + BC1A379D097C715F0019F3D8 /* DOMEvents.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMEvents.mm; sourceTree = ""; }; + BC1A379F097C715F0019F3D8 /* DOMExtensions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMExtensions.h; sourceTree = ""; }; + BC1A37A0097C715F0019F3D8 /* DOMHTML.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTML.h; sourceTree = ""; }; + BC1A37A1097C715F0019F3D8 /* DOMHTML.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTML.mm; sourceTree = ""; }; + BC1A37A3097C715F0019F3D8 /* DOMInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMInternal.h; sourceTree = ""; }; + BC1A37A4097C715F0019F3D8 /* DOMInternal.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMInternal.mm; sourceTree = ""; }; + BC1A37A5097C715F0019F3D8 /* DOMPrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMPrivate.h; sourceTree = ""; }; + BC1A37A7097C715F0019F3D8 /* DOMStylesheets.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMStylesheets.h; sourceTree = ""; }; + BC1A37A8097C715F0019F3D8 /* DOMTraversal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMTraversal.h; sourceTree = ""; }; + BC1A37A9097C715F0019F3D8 /* DOMUtility.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMUtility.mm; sourceTree = ""; }; + BC1A37AA097C715F0019F3D8 /* DOMViews.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMViews.h; sourceTree = ""; }; + BC1BDF20156C17A9001C1243 /* DOMError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMError.cpp; sourceTree = ""; }; + BC1BDF21156C17A9001C1243 /* DOMError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMError.h; sourceTree = ""; }; + BC1BDF22156C17A9001C1243 /* DOMError.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMError.idl; sourceTree = ""; }; + BC20FB7E0C0E8E6C00D1447F /* JSCSSValueCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSValueCustom.cpp; sourceTree = ""; }; + BC2272860E82E70700E7F975 /* StyleReflection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleReflection.h; path = style/StyleReflection.h; sourceTree = ""; }; + BC2272A10E82E87C00E7F975 /* CursorData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CursorData.h; path = style/CursorData.h; sourceTree = ""; }; + BC2272AC0E82E8F300E7F975 /* CursorList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CursorList.h; path = style/CursorList.h; sourceTree = ""; }; + BC2272BA0E82EAAE00E7F975 /* StyleRareNonInheritedData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleRareNonInheritedData.cpp; path = style/StyleRareNonInheritedData.cpp; sourceTree = ""; }; + BC2272BB0E82EAAE00E7F975 /* StyleRareNonInheritedData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleRareNonInheritedData.h; path = style/StyleRareNonInheritedData.h; sourceTree = ""; }; + BC2272E10E82EE9B00E7F975 /* StyleRareInheritedData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleRareInheritedData.cpp; path = style/StyleRareInheritedData.cpp; sourceTree = ""; }; + BC2272E20E82EE9B00E7F975 /* StyleRareInheritedData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleRareInheritedData.h; path = style/StyleRareInheritedData.h; sourceTree = ""; }; + BC2273010E82F1E600E7F975 /* StyleInheritedData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleInheritedData.cpp; path = style/StyleInheritedData.cpp; sourceTree = ""; }; + BC2273020E82F1E600E7F975 /* StyleInheritedData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleInheritedData.h; path = style/StyleInheritedData.h; sourceTree = ""; }; + BC22746E0E83664500E7F975 /* DataRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DataRef.h; path = style/DataRef.h; sourceTree = ""; }; + BC2274740E8366E200E7F975 /* SVGRenderStyle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SVGRenderStyle.cpp; path = style/SVGRenderStyle.cpp; sourceTree = ""; }; + BC2274750E8366E200E7F975 /* SVGRenderStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SVGRenderStyle.h; path = style/SVGRenderStyle.h; sourceTree = ""; }; + BC2274760E8366E200E7F975 /* SVGRenderStyleDefs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SVGRenderStyleDefs.cpp; path = style/SVGRenderStyleDefs.cpp; sourceTree = ""; }; + BC2274770E8366E200E7F975 /* SVGRenderStyleDefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SVGRenderStyleDefs.h; path = style/SVGRenderStyleDefs.h; sourceTree = ""; }; + BC23E4E00DAACE0F009FDC91 /* CSSGradientValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSGradientValue.cpp; sourceTree = ""; }; + BC23E76B0DAE88A9009FDC91 /* CSSImageGeneratorValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSImageGeneratorValue.cpp; sourceTree = ""; }; + BC23EE910DAED2BC009FDC91 /* CSSImageGeneratorValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSImageGeneratorValue.h; sourceTree = ""; }; + BC23F0DA0DAFF4A4009FDC91 /* GeneratedImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeneratedImage.h; sourceTree = ""; }; + BC2441C30E8B65D00055320F /* ScrollView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollView.cpp; sourceTree = ""; }; + BC25B528131C6D3900180E10 /* LocalizedStringsMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LocalizedStringsMac.cpp; sourceTree = ""; }; + BC274B2E140EBEB200EADFA6 /* CSSBorderImageSliceValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSBorderImageSliceValue.h; sourceTree = ""; }; + BC274B30140EBED800EADFA6 /* CSSBorderImageSliceValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSBorderImageSliceValue.cpp; sourceTree = ""; }; + BC275B7811C5D1C300C9206C /* JSWebKitPointCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitPointCustom.cpp; sourceTree = ""; }; + BC275CB211C5E85C00C9206C /* JSArrayBufferCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSArrayBufferCustom.cpp; sourceTree = ""; }; + BC2CBF4B140F1A65003879BE /* JSWebGLContextEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLContextEvent.h; sourceTree = ""; }; + BC2CBF7A140F1D58003879BE /* JSWebGLContextEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLContextEvent.cpp; sourceTree = ""; }; + BC2CC8DE0F32881000A9DF26 /* RenderObjectChildList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderObjectChildList.h; sourceTree = ""; }; + BC2ED5540C6B9BD300920BFF /* JSElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSElementCustom.cpp; sourceTree = ""; }; + BC2ED6BB0C6BD2F000920BFF /* JSAttrCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAttrCustom.cpp; sourceTree = ""; }; + BC2ED7A40C6C0F3600920BFF /* JSHTMLFrameElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLFrameElementCustom.cpp; sourceTree = ""; }; + BC305C770C076BB300CD20F0 /* JSHTMLObjectElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLObjectElement.cpp; sourceTree = ""; }; + BC305C780C076BB300CD20F0 /* JSHTMLObjectElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLObjectElement.h; sourceTree = ""; }; + BC305CA30C0781BB00CD20F0 /* JSHTMLObjectElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLObjectElementCustom.cpp; sourceTree = ""; }; + BC33FB1A0F30EE85002CDD7C /* RenderLineBoxList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderLineBoxList.cpp; sourceTree = ""; }; + BC348BA70DB7F1B8004ABAB9 /* XMLHttpRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = XMLHttpRequest.idl; sourceTree = ""; }; + BC348BBD0DB7F531004ABAB9 /* JSXMLHttpRequestCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSXMLHttpRequestCustom.cpp; sourceTree = ""; }; + BC348BD10DB7F804004ABAB9 /* JSXMLHttpRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSXMLHttpRequest.cpp; sourceTree = ""; }; + BC348BD20DB7F804004ABAB9 /* JSXMLHttpRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSXMLHttpRequest.h; sourceTree = ""; }; + BC3BC29B0E91AB0F00835588 /* HostWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HostWindow.h; sourceTree = ""; }; + BC3BE12A0E98092F00835588 /* PopupMenuStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PopupMenuStyle.h; sourceTree = ""; }; + BC3BE9900E9C1C7C00835588 /* RenderScrollbar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderScrollbar.cpp; sourceTree = ""; }; + BC3BE9910E9C1C7C00835588 /* RenderScrollbar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderScrollbar.h; sourceTree = ""; }; + BC3BE9920E9C1C7C00835588 /* RenderScrollbarPart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderScrollbarPart.h; sourceTree = ""; }; + BC3BE9980E9C1E5D00835588 /* RenderScrollbarTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderScrollbarTheme.h; sourceTree = ""; }; + BC3BE9A40E9C239600835588 /* RenderScrollbarTheme.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderScrollbarTheme.cpp; sourceTree = ""; }; + BC3BE9AA0E9C242000835588 /* RenderScrollbarPart.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderScrollbarPart.cpp; sourceTree = ""; }; + BC3C39B40C0D3D8D005F4D7A /* JSMediaList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaList.cpp; sourceTree = ""; }; + BC3C39B50C0D3D8D005F4D7A /* JSMediaList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSMediaList.h; sourceTree = ""; }; + BC4368E70C226E32005EFB5F /* Rect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Rect.h; sourceTree = ""; }; + BC45827E151299C10061A556 /* RenderMultiColumnBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMultiColumnBlock.cpp; sourceTree = ""; }; + BC46C1ED0C0DDBDF0020CFC3 /* JSCSSRuleCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSRuleCustom.cpp; sourceTree = ""; }; + BC46C1F00C0DDC8F0020CFC3 /* JSCSSCharsetRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSCharsetRule.cpp; sourceTree = ""; }; + BC46C1F10C0DDC8F0020CFC3 /* JSCSSCharsetRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCSSCharsetRule.h; sourceTree = ""; }; + BC46C1F20C0DDC8F0020CFC3 /* JSCSSFontFaceRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSFontFaceRule.cpp; sourceTree = ""; }; + BC46C1F30C0DDC8F0020CFC3 /* JSCSSFontFaceRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCSSFontFaceRule.h; sourceTree = ""; }; + BC46C1F40C0DDC8F0020CFC3 /* JSCSSImportRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSImportRule.cpp; sourceTree = ""; }; + BC46C1F50C0DDC8F0020CFC3 /* JSCSSImportRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCSSImportRule.h; sourceTree = ""; }; + BC46C1F60C0DDC8F0020CFC3 /* JSCSSMediaRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSMediaRule.cpp; sourceTree = ""; }; + BC46C1F70C0DDC8F0020CFC3 /* JSCSSMediaRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCSSMediaRule.h; sourceTree = ""; }; + BC46C1F80C0DDC8F0020CFC3 /* JSCSSPageRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSPageRule.cpp; sourceTree = ""; }; + BC46C1F90C0DDC8F0020CFC3 /* JSCSSPageRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCSSPageRule.h; sourceTree = ""; }; + BC46C2040C0DDCA10020CFC3 /* JSCSSStyleRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSStyleRule.cpp; sourceTree = ""; }; + BC46C2050C0DDCA10020CFC3 /* JSCSSStyleRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCSSStyleRule.h; sourceTree = ""; }; + BC4918C00BFEA050009D6316 /* JSHTMLFrameElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLFrameElement.cpp; sourceTree = ""; }; + BC4918C10BFEA050009D6316 /* JSHTMLFrameElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLFrameElement.h; sourceTree = ""; }; + BC4918C20BFEA050009D6316 /* JSHTMLIFrameElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLIFrameElement.cpp; sourceTree = ""; }; + BC4918C30BFEA050009D6316 /* JSHTMLIFrameElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLIFrameElement.h; sourceTree = ""; }; + BC491B4E0C023E2D009D6316 /* HTMLMarqueeElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLMarqueeElement.idl; sourceTree = ""; }; + BC491B760C023EFD009D6316 /* JSHTMLMarqueeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLMarqueeElement.cpp; sourceTree = ""; }; + BC491B770C023EFD009D6316 /* JSHTMLMarqueeElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLMarqueeElement.h; sourceTree = ""; }; + BC4EDEF30C08F3FB007EDD49 /* JSHTMLAppletElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLAppletElementCustom.cpp; sourceTree = ""; }; + BC51156D12B1749C00C96754 /* ScrollAnimatorMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollAnimatorMac.mm; sourceTree = ""; }; + BC5156E50C03B741008BB0EE /* DOMHTMLMarqueeElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLMarqueeElement.h; sourceTree = ""; }; + BC5156E60C03B741008BB0EE /* DOMHTMLMarqueeElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLMarqueeElement.mm; sourceTree = ""; }; + BC5156E70C03B741008BB0EE /* DOMHTMLMarqueeElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLMarqueeElementInternal.h; sourceTree = ""; }; + BC51580A0C03D404008BB0EE /* JSHTMLDocumentCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLDocumentCustom.cpp; sourceTree = ""; }; + BC53C5F40DA56B920021EB5D /* Gradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Gradient.h; sourceTree = ""; }; + BC53C6070DA56C570021EB5D /* Gradient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Gradient.cpp; sourceTree = ""; }; + BC53C60A0DA56CF10021EB5D /* GradientCG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GradientCG.cpp; sourceTree = ""; }; + BC53C6910DA591140021EB5D /* CSSGradientValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSGradientValue.h; sourceTree = ""; }; + BC53D910114310CC000D817E /* WebCoreJSClientData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreJSClientData.h; sourceTree = ""; }; + BC53DA2D1143121E000D817E /* DOMWrapperWorld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWrapperWorld.h; sourceTree = ""; }; + BC53DA471143134D000D817E /* DOMWrapperWorld.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMWrapperWorld.cpp; sourceTree = ""; }; + BC53DA5F1143141A000D817E /* DOMObjectHashTableMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMObjectHashTableMap.h; sourceTree = ""; }; + BC53DA61114314BD000D817E /* DOMObjectHashTableMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMObjectHashTableMap.cpp; sourceTree = ""; }; + BC5823F40C0A98DF0053F1B5 /* JSHTMLElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLElementCustom.cpp; sourceTree = ""; }; + BC5825F20C0B89380053F1B5 /* JSCSSStyleDeclarationCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSStyleDeclarationCustom.cpp; sourceTree = ""; }; + BC588AEF0BFA6CF900EE679E /* HTMLParserErrorCodes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLParserErrorCodes.h; sourceTree = ""; }; + BC588B4A0BFA723C00EE679E /* HTMLParserErrorCodes.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLParserErrorCodes.cpp; sourceTree = ""; }; + BC59DEF8169DEDC30016AC34 /* Settings.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Settings.in; sourceTree = ""; }; + BC59DEFA169DEDD80016AC34 /* make_settings.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = make_settings.pl; sourceTree = ""; }; + BC5A12DD0DC0414800C9AFAD /* CSSReflectValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSReflectValue.cpp; sourceTree = ""; }; + BC5A12DE0DC0414800C9AFAD /* CSSReflectValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSReflectValue.h; sourceTree = ""; }; + BC5A86810C33676000EEA649 /* DOMSelection.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DOMSelection.cpp; sourceTree = ""; }; + BC5A86820C33676000EEA649 /* DOMSelection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSelection.h; sourceTree = ""; }; + BC5A86830C33676000EEA649 /* DOMSelection.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = DOMSelection.idl; sourceTree = ""; }; + BC5A86B30C3367E800EEA649 /* JSDOMSelection.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMSelection.cpp; sourceTree = ""; }; + BC5A86B40C3367E800EEA649 /* JSDOMSelection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDOMSelection.h; sourceTree = ""; }; + BC5C76291497FE1400BC4775 /* PlatformEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformEvent.h; sourceTree = ""; }; + BC5EB5DA0E81B7EA00B25965 /* BorderValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BorderValue.h; path = style/BorderValue.h; sourceTree = ""; }; + BC5EB5DC0E81B8DD00B25965 /* OutlineValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OutlineValue.h; path = style/OutlineValue.h; sourceTree = ""; }; + BC5EB5DE0E81B9AB00B25965 /* CollapsedBorderValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CollapsedBorderValue.h; path = style/CollapsedBorderValue.h; sourceTree = ""; }; + BC5EB5E00E81BE8700B25965 /* BorderData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BorderData.h; path = style/BorderData.h; sourceTree = ""; }; + BC5EB5E40E81BF6D00B25965 /* StyleSurroundData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleSurroundData.h; path = style/StyleSurroundData.h; sourceTree = ""; }; + BC5EB5E60E81BFEF00B25965 /* StyleSurroundData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleSurroundData.cpp; path = style/StyleSurroundData.cpp; sourceTree = ""; }; + BC5EB6670E81CB7100B25965 /* RenderStyleConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderStyleConstants.h; path = style/RenderStyleConstants.h; sourceTree = ""; }; + BC5EB67A0E81D3BE00B25965 /* StyleBoxData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleBoxData.h; path = style/StyleBoxData.h; sourceTree = ""; }; + BC5EB67C0E81D42000B25965 /* StyleBoxData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleBoxData.cpp; path = style/StyleBoxData.cpp; sourceTree = ""; }; + BC5EB67E0E81D4A700B25965 /* StyleDashboardRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleDashboardRegion.h; path = style/StyleDashboardRegion.h; sourceTree = ""; }; + BC5EB6970E81DA6300B25965 /* StyleVisualData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleVisualData.cpp; path = style/StyleVisualData.cpp; sourceTree = ""; }; + BC5EB6980E81DA6300B25965 /* StyleVisualData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleVisualData.h; path = style/StyleVisualData.h; sourceTree = ""; }; + BC5EB6980E81DA6300B25966 /* StyleVariableData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleVariableData.h; path = style/StyleVariableData.h; sourceTree = ""; }; + BC5EB69C0E81DAEB00B25965 /* FillLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FillLayer.cpp; path = style/FillLayer.cpp; sourceTree = ""; }; + BC5EB69D0E81DAEB00B25965 /* FillLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FillLayer.h; path = style/FillLayer.h; sourceTree = ""; }; + BC5EB6A00E81DC4F00B25965 /* StyleBackgroundData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleBackgroundData.cpp; path = style/StyleBackgroundData.cpp; sourceTree = ""; }; + BC5EB6A10E81DC4F00B25965 /* StyleBackgroundData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleBackgroundData.h; path = style/StyleBackgroundData.h; sourceTree = ""; }; + BC5EB7270E81DE8100B25965 /* StyleMarqueeData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleMarqueeData.cpp; path = style/StyleMarqueeData.cpp; sourceTree = ""; }; + BC5EB7280E81DE8100B25965 /* StyleMarqueeData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleMarqueeData.h; path = style/StyleMarqueeData.h; sourceTree = ""; }; + BC5EB74B0E81E06700B25965 /* StyleMultiColData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleMultiColData.cpp; path = style/StyleMultiColData.cpp; sourceTree = ""; }; + BC5EB74C0E81E06700B25965 /* StyleMultiColData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleMultiColData.h; path = style/StyleMultiColData.h; sourceTree = ""; }; + BC5EB80D0E81F2CE00B25965 /* StyleTransformData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleTransformData.cpp; path = style/StyleTransformData.cpp; sourceTree = ""; }; + BC5EB80E0E81F2CE00B25965 /* StyleTransformData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleTransformData.h; path = style/StyleTransformData.h; sourceTree = ""; }; + BC5EB8B60E8201BD00B25965 /* StyleDeprecatedFlexibleBoxData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleDeprecatedFlexibleBoxData.cpp; path = style/StyleDeprecatedFlexibleBoxData.cpp; sourceTree = ""; }; + BC5EB8B70E8201BD00B25965 /* StyleDeprecatedFlexibleBoxData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleDeprecatedFlexibleBoxData.h; path = style/StyleDeprecatedFlexibleBoxData.h; sourceTree = ""; }; + BC5EB8C10E82031B00B25965 /* ShadowData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ShadowData.cpp; path = style/ShadowData.cpp; sourceTree = ""; }; + BC5EB8C20E82031B00B25965 /* ShadowData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ShadowData.h; path = style/ShadowData.h; sourceTree = ""; }; + BC5EB94E0E82056B00B25965 /* CounterDirectives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CounterDirectives.cpp; path = style/CounterDirectives.cpp; sourceTree = ""; }; + BC5EB94F0E82056B00B25965 /* CounterDirectives.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CounterDirectives.h; path = style/CounterDirectives.h; sourceTree = ""; }; + BC5EB9780E82069200B25965 /* CounterContent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CounterContent.h; path = style/CounterContent.h; sourceTree = ""; }; + BC5EB97E0E82072500B25965 /* ContentData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ContentData.cpp; path = style/ContentData.cpp; sourceTree = ""; }; + BC5EB97F0E82072500B25965 /* ContentData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ContentData.h; path = style/ContentData.h; sourceTree = ""; }; + BC5EBA0E0E823E4700B25965 /* KeyframeList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = KeyframeList.cpp; path = style/KeyframeList.cpp; sourceTree = ""; }; + BC5EBA0F0E823E4700B25965 /* KeyframeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KeyframeList.h; path = style/KeyframeList.h; sourceTree = ""; }; + BC5EC1760A507E3E006007F5 /* view-source.css */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = "view-source.css"; sourceTree = ""; }; + BC6049CB0DB560C200204739 /* CSSCanvasValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSCanvasValue.h; sourceTree = ""; }; + BC604A420DB5634E00204739 /* CSSCanvasValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSCanvasValue.cpp; sourceTree = ""; }; + BC60901E0E91B8EC000C68B5 /* JSEventTargetCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSEventTargetCustom.cpp; sourceTree = ""; }; + BC60D6E80D28D83400B9918F /* DOMCoreException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMCoreException.h; sourceTree = ""; }; + BC60D6EB0D28D99900B9918F /* DOMCoreException.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMCoreException.idl; sourceTree = ""; }; + BC60D7BE0D29A46300B9918F /* JSDOMCoreException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMCoreException.cpp; sourceTree = ""; }; + BC60D7BF0D29A46300B9918F /* JSDOMCoreException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMCoreException.h; sourceTree = ""; }; + BC60D8F00D2A11E000B9918F /* ExceptionBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExceptionBase.cpp; sourceTree = ""; }; + BC60D8F10D2A11E000B9918F /* ExceptionBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExceptionBase.h; sourceTree = ""; }; + BC60D9090D2A17CE00B9918F /* EventException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventException.h; sourceTree = ""; }; + BC60D90A0D2A17CE00B9918F /* EventException.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = EventException.idl; sourceTree = ""; }; + BC60D9BD0D2A269A00B9918F /* JSEventException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSEventException.cpp; sourceTree = ""; }; + BC60D9BE0D2A269A00B9918F /* JSEventException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEventException.h; sourceTree = ""; }; + BC60D9C70D2A29E500B9918F /* XMLHttpRequestException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLHttpRequestException.h; sourceTree = ""; }; + BC60D9C80D2A29E500B9918F /* XMLHttpRequestException.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = XMLHttpRequestException.idl; sourceTree = ""; }; + BC60DA370D2A302800B9918F /* JSXMLHttpRequestException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSXMLHttpRequestException.cpp; sourceTree = ""; }; + BC60DA380D2A302800B9918F /* JSXMLHttpRequestException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSXMLHttpRequestException.h; sourceTree = ""; }; + BC60DA590D2A31F700B9918F /* XPathException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPathException.h; sourceTree = ""; }; + BC60DA5A0D2A31F700B9918F /* XPathException.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = XPathException.idl; sourceTree = ""; }; + BC60DB470D2A3D1E00B9918F /* JSXPathException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSXPathException.cpp; sourceTree = ""; }; + BC60DB480D2A3D1E00B9918F /* JSXPathException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSXPathException.h; sourceTree = ""; }; + BC60EFB60F33A0E700812A93 /* RenderObjectChildList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderObjectChildList.cpp; sourceTree = ""; }; + BC64640711D7F304006455B0 /* DOMStringMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMStringMap.cpp; sourceTree = ""; }; + BC64640811D7F304006455B0 /* DOMStringMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMStringMap.h; sourceTree = ""; }; + BC64641A11D7F416006455B0 /* DatasetDOMStringMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatasetDOMStringMap.h; sourceTree = ""; }; + BC64641B11D7F416006455B0 /* DatasetDOMStringMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DatasetDOMStringMap.cpp; sourceTree = ""; }; + BC64647911D800CD006455B0 /* DOMStringMap.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMStringMap.idl; sourceTree = ""; }; + BC64649511D82349006455B0 /* JSDOMStringMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMStringMap.cpp; sourceTree = ""; }; + BC64649611D82349006455B0 /* JSDOMStringMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMStringMap.h; sourceTree = ""; }; + BC64649B11D8238C006455B0 /* JSDOMStringMapCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMStringMapCustom.cpp; sourceTree = ""; }; + BC64B4C90CB4295D005F2B62 /* CachedFont.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedFont.cpp; sourceTree = ""; }; + BC64B4CA0CB4295D005F2B62 /* CachedFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedFont.h; sourceTree = ""; }; + BC64B4CD0CB4298A005F2B62 /* CSSFontFace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSFontFace.cpp; sourceTree = ""; }; + BC64B4CE0CB4298A005F2B62 /* CSSFontFace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSFontFace.h; sourceTree = ""; }; + BC64B4CF0CB4298A005F2B62 /* CSSFontFaceSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSFontFaceSource.cpp; sourceTree = ""; }; + BC64B4D00CB4298A005F2B62 /* CSSFontFaceSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSFontFaceSource.h; sourceTree = ""; }; + BC64B4D10CB4298A005F2B62 /* CSSFontFaceSrcValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSFontFaceSrcValue.cpp; sourceTree = ""; }; + BC64B4D20CB4298A005F2B62 /* CSSFontFaceSrcValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSFontFaceSrcValue.h; sourceTree = ""; }; + BC64B4D30CB4298A005F2B62 /* CSSFontSelector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSFontSelector.cpp; sourceTree = ""; }; + BC64B4D40CB4298A005F2B62 /* CSSFontSelector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSFontSelector.h; sourceTree = ""; }; + BC6932710D7E293900AE44D1 /* JSDOMWindowBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMWindowBase.cpp; sourceTree = ""; }; + BC6932720D7E293900AE44D1 /* JSDOMWindowBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMWindowBase.h; sourceTree = ""; }; + BC6C49F10D7DBA0500FFA558 /* JSImageConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSImageConstructor.cpp; sourceTree = ""; }; + BC6C49F20D7DBA0500FFA558 /* JSImageConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSImageConstructor.h; sourceTree = ""; }; + BC6D44BD0C07EFB60072D2C9 /* JSHTMLEmbedElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLEmbedElementCustom.cpp; sourceTree = ""; }; + BC6D44EA0C07F2ED0072D2C9 /* JSHTMLEmbedElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLEmbedElement.cpp; sourceTree = ""; }; + BC6D44EB0C07F2ED0072D2C9 /* JSHTMLEmbedElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLEmbedElement.h; sourceTree = ""; }; + BC6D6E2509AF943500F59759 /* ScrollView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ScrollView.h; sourceTree = ""; }; + BC6DADEE0A195FDF00E5CD14 /* WebFontCache.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebFontCache.h; sourceTree = ""; }; + BC6DADF90A19602B00E5CD14 /* WebFontCache.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebFontCache.mm; sourceTree = ""; }; + BC74DA351013F3F7007987AD /* RGBColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RGBColor.h; sourceTree = ""; }; + BC74DA361013F3F7007987AD /* RGBColor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RGBColor.cpp; sourceTree = ""; }; + BC74DA461013F468007987AD /* JSRGBColor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSRGBColor.cpp; sourceTree = ""; }; + BC74DA471013F468007987AD /* JSRGBColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSRGBColor.h; sourceTree = ""; }; + BC76AC110DD7AD5C00415F34 /* ParserUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParserUtilities.h; sourceTree = ""; }; + BC772B360C4EA91E0083285F /* CSSHelper.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSHelper.h; sourceTree = ""; }; + BC772B370C4EA91E0083285F /* CSSParser.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSParser.cpp; sourceTree = ""; }; + BC772B380C4EA91E0083285F /* CSSParser.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSParser.h; sourceTree = ""; }; + BC772C440C4EB2C60083285F /* XMLHttpRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XMLHttpRequest.cpp; sourceTree = ""; }; + BC772C450C4EB2C60083285F /* XMLHttpRequest.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XMLHttpRequest.h; sourceTree = ""; }; + BC772C4C0C4EB3040083285F /* MIMETypeRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MIMETypeRegistry.cpp; sourceTree = ""; }; + BC772C4D0C4EB3040083285F /* MIMETypeRegistry.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MIMETypeRegistry.h; sourceTree = ""; }; + BC772C5D0C4EB3440083285F /* MIMETypeRegistryMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = MIMETypeRegistryMac.mm; sourceTree = ""; }; + BC772E121331620C001EC9CE /* CSSLineBoxContainValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSLineBoxContainValue.h; sourceTree = ""; }; + BC772E15133162C2001EC9CE /* CSSLineBoxContainValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSLineBoxContainValue.cpp; sourceTree = ""; }; + BC7B2AF80450824100A8000F /* Scrollbar.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Scrollbar.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BC7F44A70B9E324E00A9D081 /* ImageObserver.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ImageObserver.h; sourceTree = ""; }; + BC7FA61E0D1F0CBD00DB22A9 /* LiveNodeList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LiveNodeList.cpp; sourceTree = ""; }; + BC7FA61F0D1F0CBD00DB22A9 /* LiveNodeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LiveNodeList.h; sourceTree = ""; }; + BC7FA62B0D1F0EFF00DB22A9 /* StaticNodeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StaticNodeList.h; sourceTree = ""; }; + BC7FA62C0D1F0EFF00DB22A9 /* StaticNodeList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StaticNodeList.cpp; sourceTree = ""; }; + BC80C9850CD294EE00A0B7B3 /* CSSTimingFunctionValue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSTimingFunctionValue.cpp; sourceTree = ""; }; + BC80C9860CD294EE00A0B7B3 /* CSSTimingFunctionValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSTimingFunctionValue.h; sourceTree = ""; }; + BC8243250D0CE8A200460C8F /* JSSQLError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSQLError.h; sourceTree = ""; }; + BC8243260D0CE8A200460C8F /* JSSQLTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSQLTransaction.h; sourceTree = ""; }; + BC8243E60D0CFD7500460C8F /* WindowFeatures.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WindowFeatures.cpp; sourceTree = ""; }; + BC8243E70D0CFD7500460C8F /* WindowFeatures.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WindowFeatures.h; sourceTree = ""; }; + BC85F23C151915E000BC17BE /* RenderNamedFlowThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderNamedFlowThread.h; sourceTree = ""; }; + BC85F23E1519187300BC17BE /* RenderNamedFlowThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderNamedFlowThread.cpp; sourceTree = ""; }; + BC8AE34C12EA096A00EB3AE6 /* ScrollableArea.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollableArea.cpp; sourceTree = ""; }; + BC8AE34D12EA096A00EB3AE6 /* ScrollableArea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollableArea.h; sourceTree = ""; }; + BC8B853C0E7C7F1100AB6984 /* ScrollbarThemeMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollbarThemeMac.h; sourceTree = ""; }; + BC8B854A0E7C7F5600AB6984 /* ScrollbarTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollbarTheme.h; sourceTree = ""; }; + BC8BF150105813BF00A40A07 /* UserStyleSheet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserStyleSheet.h; sourceTree = ""; }; + BC8BF1591058141800A40A07 /* UserStyleSheetTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserStyleSheetTypes.h; sourceTree = ""; }; + BC8C8FAB0DDCD31B00B592F4 /* RenderStyle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderStyle.cpp; path = style/RenderStyle.cpp; sourceTree = ""; }; + BC8C8FAC0DDCD31B00B592F4 /* RenderStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderStyle.h; path = style/RenderStyle.h; sourceTree = ""; }; + BC904B720D10998F00680D32 /* ClassNodeList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ClassNodeList.cpp; sourceTree = ""; }; + BC904B730D10998F00680D32 /* ClassNodeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClassNodeList.h; sourceTree = ""; }; + BC926F7E0C0552470082776B /* JSHTMLFrameSetElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLFrameSetElement.cpp; sourceTree = ""; }; + BC926F7F0C0552470082776B /* JSHTMLFrameSetElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLFrameSetElement.h; sourceTree = ""; }; + BC9439C2116CF4940048C750 /* JSNodeCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNodeCustom.h; sourceTree = ""; }; + BC9462CB107A7A3900857193 /* BeforeLoadEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = BeforeLoadEvent.idl; sourceTree = ""; }; + BC9462D7107A7B4C00857193 /* BeforeLoadEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BeforeLoadEvent.h; sourceTree = ""; }; + BC946345107A934B00857193 /* JSBeforeLoadEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSBeforeLoadEvent.cpp; sourceTree = ""; }; + BC946347107A936600857193 /* JSBeforeLoadEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBeforeLoadEvent.h; sourceTree = ""; }; + BC946EED107FDBAC00857193 /* DOMBeforeLoadEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMBeforeLoadEvent.h; sourceTree = ""; }; + BC946EEE107FDBAC00857193 /* DOMBeforeLoadEvent.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMBeforeLoadEvent.mm; sourceTree = ""; }; + BC94D1070C274F88006BC617 /* PlatformScreenMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = PlatformScreenMac.mm; sourceTree = ""; }; + BC94D14C0C275C68006BC617 /* JSHistory.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHistory.cpp; sourceTree = ""; }; + BC94D14D0C275C68006BC617 /* JSHistory.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHistory.h; sourceTree = ""; }; + BC94D1500C275C8B006BC617 /* History.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = History.cpp; sourceTree = ""; }; + BC94D1510C275C8B006BC617 /* History.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = History.h; sourceTree = ""; }; + BC94D1520C275C8B006BC617 /* History.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = History.idl; sourceTree = ""; }; + BC9585DF12F0989500755821 /* PlatformGestureEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformGestureEvent.h; sourceTree = ""; }; + BC96DB420F3A880E00573CB3 /* RenderBoxModelObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderBoxModelObject.h; sourceTree = ""; }; + BC96DB450F3A882200573CB3 /* RenderBoxModelObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderBoxModelObject.cpp; sourceTree = ""; }; + BC97E238109144950010D361 /* HTMLAllCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLAllCollection.h; sourceTree = ""; }; + BC97E239109144950010D361 /* HTMLAllCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLAllCollection.cpp; sourceTree = ""; }; + BC97E23C109146F10010D361 /* HTMLAllCollection.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLAllCollection.idl; sourceTree = ""; }; + BC97E410109154FA0010D361 /* JSHTMLAllCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLAllCollection.cpp; sourceTree = ""; }; + BC97E411109154FA0010D361 /* JSHTMLAllCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLAllCollection.h; sourceTree = ""; }; + BC97E42B10915B060010D361 /* JSHTMLAllCollectionCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLAllCollectionCustom.cpp; sourceTree = ""; }; + BC98543B0CD3D98B00069BC1 /* JSConsole.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSConsole.cpp; sourceTree = ""; }; + BC98543C0CD3D98B00069BC1 /* JSConsole.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSConsole.h; sourceTree = ""; }; + BC98A27C0C0C9950004BEBF7 /* JSStyleSheetCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSStyleSheetCustom.cpp; sourceTree = ""; }; + BC99812D0DBE807A008CE9EF /* DOMAbstractViewFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMAbstractViewFrame.h; sourceTree = ""; }; + BC9A6141146859D9006057FD /* DOMExceptions.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = DOMExceptions.in; sourceTree = ""; }; + BC9A6142146859D9006057FD /* EventNames.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = EventNames.in; sourceTree = ""; }; + BC9A6144146859D9006057FD /* make_dom_exceptions.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = make_dom_exceptions.pl; sourceTree = ""; }; + BC9A6145146859D9006057FD /* make_event_factory.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = make_event_factory.pl; sourceTree = ""; }; + BC9A6146146859D9006057FD /* make_names.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = make_names.pl; sourceTree = ""; }; + BC9ADD220CC4032600098C4C /* WebKitCSSTransformValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebKitCSSTransformValue.h; sourceTree = ""; }; + BC9ADD7F0CC4092200098C4C /* WebKitCSSTransformValue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitCSSTransformValue.cpp; sourceTree = ""; }; + BCA169A00BFD55B40019CA76 /* JSHTMLTableCaptionElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLTableCaptionElement.cpp; sourceTree = ""; }; + BCA169A10BFD55B40019CA76 /* JSHTMLTableCaptionElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLTableCaptionElement.h; sourceTree = ""; }; + BCA257141293C010007A263D /* VerticalPositionCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VerticalPositionCache.h; sourceTree = ""; }; + BCA2B0601050475F0043BD1C /* UserScript.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserScript.h; sourceTree = ""; }; + BCA2B08A10505BCD0043BD1C /* UserScriptTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserScriptTypes.h; sourceTree = ""; }; + BCA378BA0D15F64200B793D6 /* ScheduledAction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScheduledAction.cpp; sourceTree = ""; }; + BCA378BB0D15F64200B793D6 /* ScheduledAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScheduledAction.h; sourceTree = ""; }; + BCA83E360D7CDC4E003421A8 /* Clipboard.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Clipboard.idl; sourceTree = ""; }; + BCA83E4D0D7CE1E9003421A8 /* JSClipboard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSClipboard.cpp; sourceTree = ""; }; + BCA83E4E0D7CE1E9003421A8 /* JSClipboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSClipboard.h; sourceTree = ""; }; + BCA83E510D7CE205003421A8 /* JSClipboardCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSClipboardCustom.cpp; sourceTree = ""; }; + BCA846D40DC67A350026C309 /* RenderReplica.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderReplica.cpp; sourceTree = ""; }; + BCA846D50DC67A350026C309 /* RenderReplica.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderReplica.h; sourceTree = ""; }; + BCA8C81C11E3D36900812FB7 /* BackForwardController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BackForwardController.h; sourceTree = ""; }; + BCA8C81D11E3D36900812FB7 /* BackForwardController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BackForwardController.cpp; sourceTree = ""; }; + BCA8CA5D11E4E6D100812FB7 /* BackForwardListImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BackForwardListImpl.cpp; sourceTree = ""; }; + BCA8CA5E11E4E6D100812FB7 /* BackForwardListImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BackForwardListImpl.h; sourceTree = ""; }; + BCAA486D14A052530088FAC4 /* PlatformEventFactoryMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PlatformEventFactoryMac.mm; sourceTree = ""; }; + BCAA486E14A052530088FAC4 /* PlatformEventFactoryMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformEventFactoryMac.h; sourceTree = ""; }; + BCAA90C20A7EBA60008B1229 /* Scrollbar.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Scrollbar.cpp; sourceTree = ""; }; + BCAB417F13E356E800D8AAF3 /* Region.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Region.cpp; sourceTree = ""; }; + BCAB418013E356E800D8AAF3 /* Region.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Region.h; sourceTree = ""; }; + BCACF3BA1072921A00C0C8A3 /* UserContentURLPattern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserContentURLPattern.cpp; sourceTree = ""; }; + BCACF3BB1072921A00C0C8A3 /* UserContentURLPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserContentURLPattern.h; sourceTree = ""; }; + BCAD1809131C7A0D00990406 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; }; + BCAE1FA512939DB7004CB026 /* ScrollAnimatorMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollAnimatorMac.h; sourceTree = ""; }; + BCAEFCAD1016CE4A0040D34E /* DOMRGBColor.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMRGBColor.mm; sourceTree = ""; }; + BCB16BFE0979C3BD00467741 /* MemoryCache.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryCache.cpp; sourceTree = ""; }; + BCB16BFF0979C3BD00467741 /* MemoryCache.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MemoryCache.h; sourceTree = ""; }; + BCB16C000979C3BD00467741 /* CachedCSSStyleSheet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CachedCSSStyleSheet.cpp; sourceTree = ""; }; + BCB16C010979C3BD00467741 /* CachedCSSStyleSheet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedCSSStyleSheet.h; sourceTree = ""; }; + BCB16C020979C3BD00467741 /* CachedImage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CachedImage.cpp; sourceTree = ""; }; + BCB16C030979C3BD00467741 /* CachedImage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedImage.h; sourceTree = ""; }; + BCB16C060979C3BD00467741 /* CachedResource.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CachedResource.cpp; sourceTree = ""; }; + BCB16C070979C3BD00467741 /* CachedResource.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedResource.h; sourceTree = ""; }; + BCB16C090979C3BD00467741 /* CachedResourceClientWalker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedResourceClientWalker.h; sourceTree = ""; }; + BCB16C0A0979C3BD00467741 /* CachedScript.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CachedScript.cpp; sourceTree = ""; }; + BCB16C0B0979C3BD00467741 /* CachedScript.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedScript.h; sourceTree = ""; }; + BCB16C0E0979C3BD00467741 /* CachedXSLStyleSheet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CachedXSLStyleSheet.cpp; sourceTree = ""; }; + BCB16C0F0979C3BD00467741 /* CachedXSLStyleSheet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedXSLStyleSheet.h; sourceTree = ""; }; + BCB16C100979C3BD00467741 /* CachedResourceLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CachedResourceLoader.cpp; sourceTree = ""; }; + BCB16C110979C3BD00467741 /* CachedResourceLoader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedResourceLoader.h; sourceTree = ""; }; + BCB7735E0C17853D00132BA4 /* JSNodeFilterCondition.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNodeFilterCondition.cpp; sourceTree = ""; }; + BCB7735F0C17853D00132BA4 /* JSNodeFilterCondition.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSNodeFilterCondition.h; sourceTree = ""; }; + BCB773600C17853D00132BA4 /* JSNodeFilterCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNodeFilterCustom.cpp; sourceTree = ""; }; + BCB92D4E1293550B00C8387F /* FontBaseline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontBaseline.h; sourceTree = ""; }; + BCBB8AB413F1AFB000734DF0 /* PODArena.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PODArena.h; sourceTree = ""; }; + BCBB8AB513F1AFB000734DF0 /* PODInterval.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PODInterval.h; sourceTree = ""; }; + BCBB8AB613F1AFB000734DF0 /* PODIntervalTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PODIntervalTree.h; sourceTree = ""; }; + BCBB8AB713F1AFB000734DF0 /* PODRedBlackTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PODRedBlackTree.h; sourceTree = ""; }; + BCBD21AA0E417AD400A070F2 /* KURLHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KURLHash.h; sourceTree = ""; }; + BCBFB53A0DCD29CF0019B3E5 /* JSDOMWindowShell.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMWindowShell.cpp; sourceTree = ""; }; + BCBFB53B0DCD29CF0019B3E5 /* JSDOMWindowShell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMWindowShell.h; sourceTree = ""; }; + BCC065770F3CE1B700CD2D87 /* ClientRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ClientRect.cpp; sourceTree = ""; }; + BCC065780F3CE1B700CD2D87 /* ClientRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClientRect.h; sourceTree = ""; }; + BCC065790F3CE1B700CD2D87 /* ClientRect.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ClientRect.idl; sourceTree = ""; }; + BCC0657A0F3CE1B700CD2D87 /* ClientRectList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ClientRectList.cpp; sourceTree = ""; }; + BCC0657B0F3CE1B700CD2D87 /* ClientRectList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClientRectList.h; sourceTree = ""; }; + BCC0657C0F3CE1B700CD2D87 /* ClientRectList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ClientRectList.idl; sourceTree = ""; }; + BCC065830F3CE2A700CD2D87 /* JSClientRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSClientRect.cpp; sourceTree = ""; }; + BCC065840F3CE2A700CD2D87 /* JSClientRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSClientRect.h; sourceTree = ""; }; + BCC065850F3CE2A700CD2D87 /* JSClientRectList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSClientRectList.cpp; sourceTree = ""; }; + BCC065860F3CE2A700CD2D87 /* JSClientRectList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSClientRectList.h; sourceTree = ""; }; + BCC438770E886CC700533DD5 /* JSHTMLInputElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLInputElementCustom.cpp; sourceTree = ""; }; + BCC52FD5151298D1003F914B /* RenderMultiColumnBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMultiColumnBlock.h; sourceTree = ""; }; + BCC573330D695BBE006EF517 /* DOMProgressEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMProgressEvent.h; sourceTree = ""; }; + BCC573340D695BBE006EF517 /* DOMProgressEvent.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMProgressEvent.mm; sourceTree = ""; }; + BCC573370D695BD7006EF517 /* DOMProgressEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMProgressEventInternal.h; sourceTree = ""; }; + BCC5BDFE0C0E93110011C2DB /* JSCSSStyleSheet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSStyleSheet.cpp; sourceTree = ""; }; + BCC5BDFF0C0E93110011C2DB /* JSCSSStyleSheet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCSSStyleSheet.h; sourceTree = ""; }; + BCC64F600DCFB84E0081EF3B /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = sourcecode.javascript; name = English; path = English.lproj/localizedStrings.js; sourceTree = SOURCE_ROOT; }; + BCC65145159294C300ACC9E4 /* IDBMetadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IDBMetadata.h; path = Modules/indexeddb/IDBMetadata.h; sourceTree = ""; }; + BCC8CFCA0986CD2400140BF2 /* ColorData.gperf */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = ColorData.gperf; sourceTree = ""; }; + BCCBAD3A0C18BFF800CE890F /* JSHTMLCollectionCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLCollectionCustom.cpp; sourceTree = ""; }; + BCCBAD3E0C18C14200CE890F /* JSHTMLCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLCollection.cpp; sourceTree = ""; }; + BCCBAD3F0C18C14200CE890F /* JSHTMLCollection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSHTMLCollection.h; sourceTree = ""; }; + BCCD74DB0A4C8D35005FDA6D /* HTMLViewSourceDocument.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLViewSourceDocument.h; sourceTree = ""; }; + BCCD74E40A4C8DDF005FDA6D /* HTMLViewSourceDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLViewSourceDocument.cpp; sourceTree = ""; }; + BCCFBAE70B5152ED0001F1D7 /* DocumentParser.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DocumentParser.h; sourceTree = ""; }; + BCD0E0F70E972C3500265DEA /* SecurityOrigin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SecurityOrigin.cpp; sourceTree = ""; }; + BCD0E0F80E972C3500265DEA /* SecurityOrigin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecurityOrigin.h; sourceTree = ""; }; + BCD0E0F90E972C3500265DEA /* SecurityOriginHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecurityOriginHash.h; sourceTree = ""; }; + BCD0FBCF0DBD625E00B2F630 /* DOMAbstractView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMAbstractView.mm; sourceTree = ""; }; + BCD0FC4E0DBD720B00B2F630 /* DOMRGBColorInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMRGBColorInternal.h; sourceTree = ""; }; + BCD3F9821326C93700098A60 /* NonCJKGlyphOrientation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NonCJKGlyphOrientation.h; sourceTree = ""; }; + BCD41ABA0C060DE800C0E446 /* JSHTMLFrameSetElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLFrameSetElementCustom.cpp; sourceTree = ""; }; + BCD533630ED6848900887468 /* CachedScriptSourceProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedScriptSourceProvider.h; sourceTree = ""; }; + BCD8A5EF15F56F2C0098D071 /* TextBreakIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextBreakIterator.cpp; sourceTree = ""; }; + BCD9C25E0C17AA67005C90A2 /* JSDOMWindowCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMWindowCustom.cpp; sourceTree = ""; }; + BCD9C25F0C17AA67005C90A2 /* JSNamedNodeMapCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNamedNodeMapCustom.cpp; sourceTree = ""; }; + BCD9C2600C17AA67005C90A2 /* JSNodeCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNodeCustom.cpp; sourceTree = ""; }; + BCD9C2610C17AA67005C90A2 /* JSNodeListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNodeListCustom.cpp; sourceTree = ""; }; + BCD9C2BC0C17B69E005C90A2 /* JSNamedNodeMap.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNamedNodeMap.cpp; sourceTree = ""; }; + BCD9C2BD0C17B69E005C90A2 /* JSNamedNodeMap.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSNamedNodeMap.h; sourceTree = ""; }; + BCD9C2BE0C17B69E005C90A2 /* JSNodeList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNodeList.cpp; sourceTree = ""; }; + BCD9C2BF0C17B69E005C90A2 /* JSNodeList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSNodeList.h; sourceTree = ""; }; + BCDD454D1236C95C009A7985 /* ColumnInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColumnInfo.h; sourceTree = ""; }; + BCDF317911F8D683003C5BF8 /* UserTypingGestureIndicator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserTypingGestureIndicator.cpp; sourceTree = ""; }; + BCDF317A11F8D683003C5BF8 /* UserTypingGestureIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserTypingGestureIndicator.h; sourceTree = ""; }; + BCDFD48C0E305290009D10AD /* XMLHttpRequestUpload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLHttpRequestUpload.h; sourceTree = ""; }; + BCDFD48D0E305290009D10AD /* XMLHttpRequestUpload.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLHttpRequestUpload.cpp; sourceTree = ""; }; + BCDFD4900E305644009D10AD /* XMLHttpRequestUpload.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = XMLHttpRequestUpload.idl; sourceTree = ""; }; + BCDFD4910E3056BD009D10AD /* JSXMLHttpRequestUploadCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSXMLHttpRequestUploadCustom.cpp; sourceTree = ""; }; + BCDFD4930E30592F009D10AD /* JSXMLHttpRequestUpload.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSXMLHttpRequestUpload.cpp; sourceTree = ""; }; + BCDFD4940E30592F009D10AD /* JSXMLHttpRequestUpload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSXMLHttpRequestUpload.h; sourceTree = ""; }; + BCE013980C0BEF180043860A /* JSStyleSheet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSStyleSheet.cpp; sourceTree = ""; }; + BCE013990C0BEF180043860A /* JSStyleSheet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSStyleSheet.h; sourceTree = ""; }; + BCE1C4190D982980003B02F2 /* Location.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Location.h; sourceTree = ""; }; + BCE1C41A0D982980003B02F2 /* Location.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Location.cpp; sourceTree = ""; }; + BCE1C4220D9829F2003B02F2 /* Location.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Location.idl; sourceTree = ""; }; + BCE1C4390D9830D3003B02F2 /* JSLocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSLocation.cpp; sourceTree = ""; }; + BCE1C43A0D9830D3003B02F2 /* JSLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSLocation.h; sourceTree = ""; }; + BCE1C43F0D9830F4003B02F2 /* JSLocationCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSLocationCustom.cpp; sourceTree = ""; }; + BCE32B9B1517C0B100F542EC /* RenderMultiColumnSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMultiColumnSet.h; sourceTree = ""; }; + BCE32B9D1517C22700F542EC /* RenderMultiColumnSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMultiColumnSet.cpp; sourceTree = ""; }; + BCE3BEC00D222B1D007E06E4 /* TagNodeList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TagNodeList.cpp; sourceTree = ""; }; + BCE3BEC10D222B1D007E06E4 /* TagNodeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TagNodeList.h; sourceTree = ""; }; + BCE4389B140B1BA7005E437E /* JSDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDictionary.h; sourceTree = ""; }; + BCE438A1140C0DBF005E437E /* JSDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDictionary.cpp; sourceTree = ""; }; + BCE4413112F748E2009B84B8 /* RenderCombineText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderCombineText.cpp; sourceTree = ""; }; + BCE4413212F748E2009B84B8 /* RenderCombineText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderCombineText.h; sourceTree = ""; }; + BCE4413512F7490B009B84B8 /* FontWidthVariant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontWidthVariant.h; sourceTree = ""; }; + BCE5644D137A34D6007D2934 /* ConsoleTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConsoleTypes.h; sourceTree = ""; }; + BCE658FE0EA9248A007E4533 /* Theme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Theme.h; sourceTree = ""; }; + BCE659A80EA927B9007E4533 /* ThemeTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThemeTypes.h; sourceTree = ""; }; + BCE659E50EA92FB2007E4533 /* ThemeMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThemeMac.h; sourceTree = ""; }; + BCE659E80EA92FFA007E4533 /* ThemeMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ThemeMac.mm; sourceTree = ""; }; + BCE65BE80EACDF16007E4533 /* Length.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Length.cpp; sourceTree = ""; }; + BCE65BE90EACDF16007E4533 /* Length.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Length.h; sourceTree = ""; }; + BCE65D310EAD1211007E4533 /* Theme.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Theme.cpp; sourceTree = ""; }; + BCE789151120D6080060ECE5 /* InlineIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InlineIterator.h; sourceTree = ""; }; + BCE789851120E7A60060ECE5 /* BidiRun.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BidiRun.h; sourceTree = ""; }; + BCE7898A1120E8020060ECE5 /* BidiRun.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BidiRun.cpp; sourceTree = ""; }; + BCE7B1920D4E86960075A539 /* JSHistoryCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHistoryCustom.cpp; sourceTree = ""; }; + BCE93F441517C567008CCF74 /* RenderRegionSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderRegionSet.h; sourceTree = ""; }; + BCE93F461517C6D5008CCF74 /* RenderRegionSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderRegionSet.cpp; sourceTree = ""; }; + BCEA477C097CAAC80094C9E4 /* CSSComputedStyleDeclaration.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSComputedStyleDeclaration.cpp; sourceTree = ""; }; + BCEA477D097CAAC80094C9E4 /* CSSComputedStyleDeclaration.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSComputedStyleDeclaration.h; sourceTree = ""; }; + BCEA4789097CAAC80094C9E4 /* CSSPropertyNames.in */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSPropertyNames.in; sourceTree = ""; }; + BCEA478C097CAAC80094C9E4 /* CSSValueKeywords.in */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSValueKeywords.in; sourceTree = ""; }; + BCEA4813097D93020094C9E4 /* RenderBlockLineLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderBlockLineLayout.cpp; sourceTree = ""; }; + BCEA4815097D93020094C9E4 /* break_lines.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = break_lines.cpp; sourceTree = ""; }; + BCEA4816097D93020094C9E4 /* break_lines.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = break_lines.h; sourceTree = ""; }; + BCEA481A097D93020094C9E4 /* InlineTextBox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = InlineTextBox.cpp; sourceTree = ""; }; + BCEA481B097D93020094C9E4 /* InlineTextBox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = InlineTextBox.h; sourceTree = ""; }; + BCEA481C097D93020094C9E4 /* RenderApplet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderApplet.cpp; sourceTree = ""; }; + BCEA481D097D93020094C9E4 /* RenderApplet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderApplet.h; sourceTree = ""; }; + BCEA481E097D93020094C9E4 /* RenderArena.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderArena.cpp; sourceTree = ""; }; + BCEA481F097D93020094C9E4 /* RenderArena.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderArena.h; sourceTree = ""; }; + BCEA4820097D93020094C9E4 /* RenderBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderBlock.cpp; sourceTree = ""; }; + BCEA4821097D93020094C9E4 /* RenderBlock.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderBlock.h; sourceTree = ""; }; + BCEA4822097D93020094C9E4 /* RenderBox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderBox.cpp; sourceTree = ""; }; + BCEA4823097D93020094C9E4 /* RenderBox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderBox.h; sourceTree = ""; }; + BCEA4824097D93020094C9E4 /* RenderBR.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderBR.cpp; sourceTree = ""; }; + BCEA4825097D93020094C9E4 /* RenderBR.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderBR.h; sourceTree = ""; }; + BCEA4826097D93020094C9E4 /* RenderButton.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderButton.cpp; sourceTree = ""; }; + BCEA4827097D93020094C9E4 /* RenderButton.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderButton.h; sourceTree = ""; }; + BCEA4828097D93020094C9E4 /* RenderView.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderView.cpp; sourceTree = ""; }; + BCEA4829097D93020094C9E4 /* RenderView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderView.h; sourceTree = ""; }; + BCEA482A097D93020094C9E4 /* RenderHTMLCanvas.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderHTMLCanvas.cpp; sourceTree = ""; }; + BCEA482B097D93020094C9E4 /* RenderHTMLCanvas.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderHTMLCanvas.h; sourceTree = ""; }; + BCEA482E097D93020094C9E4 /* RenderDeprecatedFlexibleBox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderDeprecatedFlexibleBox.cpp; sourceTree = ""; }; + BCEA482F097D93020094C9E4 /* RenderDeprecatedFlexibleBox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderDeprecatedFlexibleBox.h; sourceTree = ""; }; + BCEA4836097D93020094C9E4 /* RenderImage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderImage.cpp; sourceTree = ""; }; + BCEA4837097D93020094C9E4 /* RenderImage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderImage.h; sourceTree = ""; }; + BCEA4838097D93020094C9E4 /* RenderInline.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderInline.cpp; sourceTree = ""; }; + BCEA4839097D93020094C9E4 /* RenderInline.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderInline.h; sourceTree = ""; }; + BCEA483A097D93020094C9E4 /* RenderLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderLayer.cpp; sourceTree = ""; }; + BCEA483B097D93020094C9E4 /* RenderLayer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderLayer.h; sourceTree = ""; }; + BCEA4840097D93020094C9E4 /* RenderObject.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderObject.cpp; sourceTree = ""; }; + BCEA4841097D93020094C9E4 /* RenderObject.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderObject.h; sourceTree = ""; }; + BCEA4848097D93020094C9E4 /* RenderThemeMac.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderThemeMac.h; sourceTree = ""; }; + BCEA4849097D93020094C9E4 /* RenderThemeMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = RenderThemeMac.mm; sourceTree = ""; }; + BCEA484A097D93020094C9E4 /* RenderTheme.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTheme.cpp; sourceTree = ""; }; + BCEA484B097D93020094C9E4 /* RenderTheme.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderTheme.h; sourceTree = ""; }; + BCEA484C097D93020094C9E4 /* RenderText.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderText.cpp; sourceTree = ""; }; + BCEA484D097D93020094C9E4 /* RenderText.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderText.h; sourceTree = ""; }; + BCEA484E097D93020094C9E4 /* RenderTextFragment.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTextFragment.cpp; sourceTree = ""; }; + BCEA484F097D93020094C9E4 /* RenderTextFragment.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderTextFragment.h; sourceTree = ""; }; + BCEB179B143379F50052EAE9 /* RenderBoxRegionInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderBoxRegionInfo.h; sourceTree = ""; }; + BCEC01BA0C274DAC009F4EC9 /* Screen.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Screen.cpp; sourceTree = ""; }; + BCEC01BB0C274DAC009F4EC9 /* Screen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Screen.h; sourceTree = ""; }; + BCEC01BC0C274DAC009F4EC9 /* Screen.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = Screen.idl; sourceTree = ""; }; + BCEC01C00C274DDD009F4EC9 /* JSScreen.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSScreen.cpp; sourceTree = ""; }; + BCEC01C10C274DDD009F4EC9 /* JSScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSScreen.h; sourceTree = ""; }; + BCEC01D60C274EB4009F4EC9 /* PlatformScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PlatformScreen.h; sourceTree = ""; }; + BCEF43CE0E673DA1001C1287 /* StyleImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleImage.h; path = style/StyleImage.h; sourceTree = ""; }; + BCEF43DC0E674012001C1287 /* NinePieceImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NinePieceImage.h; path = style/NinePieceImage.h; sourceTree = ""; }; + BCEF43DF0E674110001C1287 /* NinePieceImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NinePieceImage.cpp; path = style/NinePieceImage.cpp; sourceTree = ""; }; + BCEF44490E6745E0001C1287 /* StyleGeneratedImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleGeneratedImage.h; path = style/StyleGeneratedImage.h; sourceTree = ""; }; + BCEF444C0E674628001C1287 /* StyleCachedImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleCachedImage.h; path = style/StyleCachedImage.h; sourceTree = ""; }; + BCEF44790E6747D0001C1287 /* StyleCachedImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleCachedImage.cpp; path = style/StyleCachedImage.cpp; sourceTree = ""; }; + BCEF447C0E674806001C1287 /* StyleGeneratedImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleGeneratedImage.cpp; path = style/StyleGeneratedImage.cpp; sourceTree = ""; }; + BCEF453F0E676AC1001C1287 /* TextMetrics.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TextMetrics.idl; sourceTree = ""; }; + BCEF45E80E687767001C1287 /* TextMetrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextMetrics.h; sourceTree = ""; }; + BCEF45F30E687B5C001C1287 /* JSTextMetrics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextMetrics.cpp; sourceTree = ""; }; + BCEF45F40E687B5C001C1287 /* JSTextMetrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTextMetrics.h; sourceTree = ""; }; + BCEF869E0E844E9D00A85CD5 /* ScrollbarThemeMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollbarThemeMac.mm; sourceTree = ""; }; + BCEFAF4D0C317E6900FA81F6 /* JSEventCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSEventCustom.cpp; sourceTree = ""; }; + BCEFE1DC0DCA5CFD00739219 /* XSLTProcessor.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = XSLTProcessor.idl; sourceTree = ""; }; + BCEFE1E40DCA5F3300739219 /* JSXSLTProcessorCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSXSLTProcessorCustom.cpp; sourceTree = ""; }; + BCEFE1E80DCA5F6400739219 /* JSXSLTProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSXSLTProcessor.cpp; sourceTree = ""; }; + BCEFE1E90DCA5F6400739219 /* JSXSLTProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSXSLTProcessor.h; sourceTree = ""; }; + BCF34A3611A231CD00C71804 /* NamedNodeMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NamedNodeMap.cpp; sourceTree = ""; }; + BCF48CE61370D114004E87D6 /* AdjustViewSizeOrNot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdjustViewSizeOrNot.h; sourceTree = ""; }; + BCFA930710333193007B25D1 /* RenderOverflow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderOverflow.h; sourceTree = ""; }; + BCFB2E5D0979E46400BA703D /* CachedResourceClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedResourceClient.h; sourceTree = ""; }; + BCFB2F74097A2E1A00BA703D /* Arena.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Arena.cpp; sourceTree = ""; }; + BCFB2F75097A2E1A00BA703D /* Arena.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Arena.h; sourceTree = ""; }; + BCFE2F0F0C1B58370020235F /* JSRect.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSRect.cpp; sourceTree = ""; }; + BCFE2F100C1B58370020235F /* JSRect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSRect.h; sourceTree = ""; }; + BCFF648F0EAD15C200C1D6F7 /* LengthBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LengthBox.h; sourceTree = ""; }; + BCFF64900EAD15C200C1D6F7 /* LengthSize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LengthSize.h; sourceTree = ""; }; + BE6DF708171CA2C500DD52B8 /* JSVideoTrackCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSVideoTrackCustom.cpp; sourceTree = ""; }; + BE6DF70A171CA2C500DD52B8 /* JSVideoTrackListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSVideoTrackListCustom.cpp; sourceTree = ""; }; + BE6DF70E171CA2DA00DD52B8 /* JSAudioTrackCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioTrackCustom.cpp; sourceTree = ""; }; + BE6DF710171CA2DA00DD52B8 /* JSAudioTrackListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioTrackListCustom.cpp; sourceTree = ""; }; + BE855F7F0701E83500239769 /* WebCoreView.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreView.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BE8560510701F91100239769 /* WebCoreView.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebCoreView.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BE88E0BF1715CE2600658D98 /* TrackListBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TrackListBase.cpp; sourceTree = ""; }; + BE88E0C01715CE2600658D98 /* TrackListBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackListBase.h; sourceTree = ""; }; + BE88E0CC1715D2A200658D98 /* AudioTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioTrack.cpp; sourceTree = ""; }; + BE88E0CD1715D2A200658D98 /* AudioTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioTrack.h; sourceTree = ""; }; + BE88E0CE1715D2A200658D98 /* AudioTrack.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioTrack.idl; sourceTree = ""; }; + BE88E0CF1715D2A200658D98 /* AudioTrackList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioTrackList.cpp; sourceTree = ""; }; + BE88E0D01715D2A200658D98 /* AudioTrackList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioTrackList.h; sourceTree = ""; }; + BE88E0D11715D2A200658D98 /* AudioTrackList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioTrackList.idl; sourceTree = ""; }; + BE88E0D21715D2A200658D98 /* VideoTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VideoTrack.cpp; sourceTree = ""; }; + BE88E0D31715D2A200658D98 /* VideoTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoTrack.h; sourceTree = ""; }; + BE88E0D41715D2A200658D98 /* VideoTrack.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VideoTrack.idl; sourceTree = ""; }; + BE88E0D51715D2A200658D98 /* VideoTrackList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VideoTrackList.cpp; sourceTree = ""; }; + BE88E0D61715D2A200658D98 /* VideoTrackList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoTrackList.h; sourceTree = ""; }; + BE88E0D71715D2A200658D98 /* VideoTrackList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VideoTrackList.idl; sourceTree = ""; }; + BE8EF03E171C8FF9009B48C3 /* JSAudioTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioTrack.cpp; sourceTree = ""; }; + BE8EF03F171C8FF9009B48C3 /* JSAudioTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioTrack.h; sourceTree = ""; }; + BE8EF040171C8FF9009B48C3 /* JSAudioTrackList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioTrackList.cpp; sourceTree = ""; }; + BE8EF041171C8FF9009B48C3 /* JSAudioTrackList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioTrackList.h; sourceTree = ""; }; + BE8EF046171C9014009B48C3 /* JSVideoTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSVideoTrack.cpp; sourceTree = ""; }; + BE8EF047171C9014009B48C3 /* JSVideoTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVideoTrack.h; sourceTree = ""; }; + BE8EF048171C9014009B48C3 /* JSVideoTrackList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSVideoTrackList.cpp; sourceTree = ""; }; + BE8EF049171C9014009B48C3 /* JSVideoTrackList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVideoTrackList.h; sourceTree = ""; }; + BE91FC8B06133666005E3790 /* Position.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Position.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BE91FC8C06133666005E3790 /* Position.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Position.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BE983D95052A2E0A00892D85 /* WebCoreKeyboardUIMode.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreKeyboardUIMode.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BEF29EE91715DD0900C4B4C9 /* AudioTrackPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioTrackPrivate.h; sourceTree = ""; }; + BEF29EEA1715DD0900C4B4C9 /* VideoTrackPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoTrackPrivate.h; sourceTree = ""; }; + C046E1AB1208A9FE00BA2CF7 /* LocalizedStrings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LocalizedStrings.cpp; sourceTree = ""; }; + C0DFC86F0DB6841A003EAE7C /* JSConsoleCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSConsoleCustom.cpp; sourceTree = ""; }; + C0F2A43F13869A280066C534 /* preprocessor.pm */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; name = preprocessor.pm; path = scripts/preprocessor.pm; sourceTree = ""; }; + C105DA610F3AA68F001DD44F /* TextEncodingDetectorICU.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextEncodingDetectorICU.cpp; sourceTree = ""; }; + C105DA630F3AA6B8001DD44F /* TextEncodingDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextEncodingDetector.h; sourceTree = ""; }; + C330A22113EC196B0000B45B /* ColorChooser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColorChooser.h; sourceTree = ""; }; + C33EE5C214FB49610002095A /* BaseClickableWithKeyInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BaseClickableWithKeyInputType.cpp; sourceTree = ""; }; + C33EE5C314FB49610002095A /* BaseClickableWithKeyInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseClickableWithKeyInputType.h; sourceTree = ""; }; + C348612115FDE21E007A1CC9 /* InputTypeNames.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InputTypeNames.cpp; sourceTree = ""; }; + C348612215FDE21E007A1CC9 /* InputTypeNames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InputTypeNames.h; sourceTree = ""; }; + C375D7FB16639519006184AB /* TypeAhead.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TypeAhead.cpp; sourceTree = ""; }; + C375D7FC16639519006184AB /* TypeAhead.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TypeAhead.h; sourceTree = ""; }; + C37CDEBC149EF2030042090D /* ColorChooserClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColorChooserClient.h; sourceTree = ""; }; + C3CF17A015B0063F00276D39 /* IdTargetObserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IdTargetObserver.cpp; sourceTree = ""; }; + C3CF17A115B0063F00276D39 /* IdTargetObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IdTargetObserver.h; sourceTree = ""; }; + C3CF17A215B0063F00276D39 /* IdTargetObserverRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IdTargetObserverRegistry.cpp; sourceTree = ""; }; + C3CF17A315B0063F00276D39 /* IdTargetObserverRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IdTargetObserverRegistry.h; sourceTree = ""; }; + C50B561412119D23008B46E0 /* GroupSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GroupSettings.cpp; sourceTree = ""; }; + C50B561512119D23008B46E0 /* GroupSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupSettings.h; sourceTree = ""; }; + C50D0E800FF4272900AC2644 /* StorageNamespace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageNamespace.cpp; sourceTree = ""; }; + C50D0E810FF4272900AC2644 /* StorageNamespace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageNamespace.h; sourceTree = ""; }; + C5102D920FD9AA2D00FAFF04 /* StorageSyncManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageSyncManager.h; sourceTree = ""; }; + C5102D930FD9AA2D00FAFF04 /* StorageSyncManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageSyncManager.cpp; sourceTree = ""; }; + C5102ECD0FD9EF8C00FAFF04 /* StorageAreaSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageAreaSync.h; sourceTree = ""; }; + C5102ECE0FD9EF8C00FAFF04 /* StorageAreaSync.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageAreaSync.cpp; sourceTree = ""; }; + C5137CF011A58378004ADB99 /* JSDOMStringList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMStringList.cpp; sourceTree = ""; }; + C5137CF111A58378004ADB99 /* JSDOMStringList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMStringList.h; sourceTree = ""; }; + C5160EE81004543A00A7CEE2 /* StorageAreaImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageAreaImpl.cpp; sourceTree = ""; }; + C5160EE91004543A00A7CEE2 /* StorageAreaImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageAreaImpl.h; sourceTree = ""; }; + C5392D331326AD0100043D35 /* HTMLConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLConverter.h; sourceTree = ""; }; + C5392D341326AD0100043D35 /* HTMLConverter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = HTMLConverter.mm; sourceTree = ""; }; + C544274911A57E7A0063A749 /* DOMStringList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMStringList.h; sourceTree = ""; }; + C544274A11A57E7A0063A749 /* DOMStringList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMStringList.idl; sourceTree = ""; }; + C55610F011A704EB00B82D27 /* DOMStringList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMStringList.cpp; sourceTree = ""; }; + C55E38BB10040D5D00A56BDB /* StorageNamespaceImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageNamespaceImpl.h; sourceTree = ""; }; + C55E38BC10040D5D00A56BDB /* StorageNamespaceImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageNamespaceImpl.cpp; sourceTree = ""; }; + C572EE1D1201C9BC007D8F82 /* JSIDBIndex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBIndex.h; sourceTree = ""; }; + C57FEDE01212EE9C0097BE65 /* FileSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileSystem.cpp; sourceTree = ""; }; + C585381713A7DD4E00A3BBEE /* ClipboardIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClipboardIOS.h; path = ios/ClipboardIOS.h; sourceTree = ""; }; + C585381813A7DD4E00A3BBEE /* ClipboardIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ClipboardIOS.mm; path = ios/ClipboardIOS.mm; sourceTree = ""; }; + C585A66011D4FAC5004C3E4B /* IDBBindingUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBBindingUtilities.cpp; sourceTree = ""; }; + C585A66111D4FAC5004C3E4B /* IDBBindingUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBBindingUtilities.h; sourceTree = ""; }; + C585A66511D4FB07004C3E4B /* JSIDBAny.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBAny.h; sourceTree = ""; }; + C585A66B11D4FB07004C3E4B /* JSIDBDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBDatabase.h; sourceTree = ""; }; + C585A67511D4FB07004C3E4B /* JSIDBKeyRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBKeyRange.h; sourceTree = ""; }; + C585A67711D4FB07004C3E4B /* JSIDBObjectStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBObjectStore.h; sourceTree = ""; }; + C585A67911D4FB07004C3E4B /* JSIDBRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBRequest.h; sourceTree = ""; }; + C585A69511D4FB13004C3E4B /* JSIDBFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBFactory.h; sourceTree = ""; }; + C5A1EA79152BC486004D00B6 /* SimplifyMarkupCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SimplifyMarkupCommand.cpp; sourceTree = ""; }; + C5A1EA7A152BC486004D00B6 /* SimplifyMarkupCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimplifyMarkupCommand.h; sourceTree = ""; }; + C5B4C24B1509236C00A6EF37 /* WebCoreNSURLExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreNSURLExtras.h; sourceTree = ""; }; + C5B4C24C1509236C00A6EF37 /* WebCoreNSURLExtras.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreNSURLExtras.mm; sourceTree = ""; }; + C5BAC16F14E30E4700008837 /* PlatformPasteboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformPasteboard.h; sourceTree = ""; }; + C5D4AA78116BAFB60069CA93 /* GlyphMetricsMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GlyphMetricsMap.h; sourceTree = ""; }; + C5E9B67610697E1300C7BB1A /* StorageEventDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageEventDispatcher.cpp; sourceTree = ""; }; + C5EBDD81105EDDEC0056816F /* StorageEventDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageEventDispatcher.h; sourceTree = ""; }; + C5F765B414E1D414006C899B /* PasteboardStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PasteboardStrategy.h; sourceTree = ""; }; + C5F765BA14E1ECF4006C899B /* PlatformPasteboardMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PlatformPasteboardMac.mm; sourceTree = ""; }; + C65046A8167BFB5500CC2A4D /* TemplateContentDocumentFragment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemplateContentDocumentFragment.h; sourceTree = ""; }; + C691614714F6EBA70046375C /* ScrollbarThemeClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollbarThemeClient.h; sourceTree = ""; }; + C6A703325C9D0B6CDCBC4D78 /* JSEventTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSEventTarget.cpp; sourceTree = ""; }; + C6D74AD309AA282E000B0A52 /* ModifySelectionListLevel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModifySelectionListLevel.h; sourceTree = ""; }; + C6D74AE309AA290A000B0A52 /* ModifySelectionListLevel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ModifySelectionListLevel.cpp; sourceTree = ""; }; + C6F08FB91430FE8F00685849 /* MutationRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MutationRecord.cpp; sourceTree = ""; }; + C6F08FBA1430FE8F00685849 /* MutationRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MutationRecord.h; sourceTree = ""; }; + C6F08FBB1430FE8F00685849 /* MutationRecord.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MutationRecord.idl; sourceTree = ""; }; + C6F08FC71431000D00685849 /* JSMutationRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMutationRecord.cpp; sourceTree = ""; }; + C6F08FC81431000D00685849 /* JSMutationRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMutationRecord.h; sourceTree = ""; }; + C6F0900114327B6100685849 /* MutationCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MutationCallback.h; sourceTree = ""; }; + C6F0900514327B6100685849 /* MutationObserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MutationObserver.cpp; sourceTree = ""; }; + C6F0900614327B6100685849 /* MutationObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MutationObserver.h; sourceTree = ""; }; + C6F0900714327B6100685849 /* MutationObserver.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MutationObserver.idl; sourceTree = ""; }; + C6F0902414327D4F00685849 /* JSMutationObserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMutationObserver.cpp; sourceTree = ""; }; + C6F0902514327D4F00685849 /* JSMutationObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMutationObserver.h; sourceTree = ""; }; + C6F0917E143A2BB900685849 /* JSMutationObserverCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMutationObserverCustom.cpp; sourceTree = ""; }; + C6F420A016B7164E0052A9F2 /* JSMutationCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMutationCallback.cpp; sourceTree = ""; }; + C6F420A116B7164E0052A9F2 /* JSMutationCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMutationCallback.h; sourceTree = ""; }; + CA3BF67B10D99BAE00E6CE53 /* ScrollAnimator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollAnimator.cpp; sourceTree = ""; }; + CA3BF67D10D99BAE00E6CE53 /* ScrollAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollAnimator.h; sourceTree = ""; }; + CAE9F90D146441F000C245B0 /* CSSAspectRatioValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSAspectRatioValue.cpp; sourceTree = ""; }; + CAE9F90E146441F000C245B0 /* CSSAspectRatioValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSAspectRatioValue.h; sourceTree = ""; }; + CAE9F90E146441F000C245B1 /* CSSVariableValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSVariableValue.h; sourceTree = ""; }; + CCC2B51015F613060048CDD6 /* DeviceClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceClient.h; sourceTree = ""; }; + CCC2B51115F613060048CDD6 /* DeviceController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeviceController.cpp; sourceTree = ""; }; + CCC2B51215F613060048CDD6 /* DeviceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceController.h; sourceTree = ""; }; + CD08285A1757250800EC5FB7 /* PageActivityAssertionToken.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PageActivityAssertionToken.cpp; sourceTree = ""; }; + CD08285B1757250800EC5FB7 /* PageActivityAssertionToken.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PageActivityAssertionToken.h; sourceTree = ""; }; + CD0EEE0A14743E34003EAFA2 /* AudioDestinationIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioDestinationIOS.h; path = ios/AudioDestinationIOS.h; sourceTree = ""; }; + CD0EEE0B14743E35003EAFA2 /* AudioDestinationIOS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDestinationIOS.cpp; path = ios/AudioDestinationIOS.cpp; sourceTree = ""; }; + CD127DEA14F3097900E84779 /* WebCoreFullScreenWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreFullScreenWindow.h; sourceTree = ""; }; + CD127DEB14F3097900E84779 /* WebCoreFullScreenWindow.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreFullScreenWindow.mm; sourceTree = ""; }; + CD1E7346167BC78E009A885D /* TextTrackRepresentation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextTrackRepresentation.cpp; sourceTree = ""; }; + CD27F6E014575C1B0078207D /* MediaController.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = MediaController.idl; sourceTree = ""; }; + CD27F6E2145767580078207D /* JSMediaController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaController.cpp; sourceTree = ""; }; + CD27F6E3145767580078207D /* JSMediaController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMediaController.h; sourceTree = ""; }; + CD27F6E4145767870078207D /* MediaController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaController.h; sourceTree = ""; }; + CD27F6E6145770D30078207D /* MediaController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaController.cpp; sourceTree = ""; }; + CD37B37415C1A7E1006DC898 /* DiagnosticLoggingKeys.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DiagnosticLoggingKeys.cpp; sourceTree = ""; }; + CD37B37515C1A7E1006DC898 /* DiagnosticLoggingKeys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiagnosticLoggingKeys.h; sourceTree = ""; }; + CD47B3F916CC34F800A21EC8 /* CDMPrivateAVFoundation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDMPrivateAVFoundation.h; path = Modules/encryptedmedia/CDMPrivateAVFoundation.h; sourceTree = ""; }; + CD47B3FA16CC34F800A21EC8 /* CDMPrivateAVFoundation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = CDMPrivateAVFoundation.mm; path = Modules/encryptedmedia/CDMPrivateAVFoundation.mm; sourceTree = ""; }; + CD4AC5281496AE2F0087C4EF /* Composite.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = Composite.wav; path = platform/audio/resources/Composite.wav; sourceTree = SOURCE_ROOT; }; + CD4E0AFA11F7BC27009D3811 /* fullscreen.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = fullscreen.css; sourceTree = ""; }; + CD5393CB175DCCE600C07123 /* MemoryInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryInfo.h; sourceTree = ""; }; + CD5393CC175DCCE600C07123 /* MemoryInfo.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MemoryInfo.idl; sourceTree = ""; }; + CD5393D1175E018600C07123 /* JSMemoryInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMemoryInfo.cpp; sourceTree = ""; }; + CD5393D2175E018600C07123 /* JSMemoryInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMemoryInfo.h; sourceTree = ""; }; + CD54DE4517468B6F005E5B36 /* AudioSessionManagerMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioSessionManagerMac.cpp; sourceTree = ""; }; + CD54DE4917469C6D005E5B36 /* AudioSessionMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioSessionMac.cpp; sourceTree = ""; }; + CD7E05201651A84100C1201F /* WebCoreAVFResourceLoader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WebCoreAVFResourceLoader.h; path = objc/WebCoreAVFResourceLoader.h; sourceTree = ""; }; + CD7E05211651A84100C1201F /* WebCoreAVFResourceLoader.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = WebCoreAVFResourceLoader.mm; path = objc/WebCoreAVFResourceLoader.mm; sourceTree = ""; }; + CD8203061395AB6A00F956C6 /* WebVideoFullscreenController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebVideoFullscreenController.h; sourceTree = ""; }; + CD8203071395AB6A00F956C6 /* WebVideoFullscreenController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebVideoFullscreenController.mm; sourceTree = ""; }; + CD8203081395AB6A00F956C6 /* WebVideoFullscreenHUDWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebVideoFullscreenHUDWindowController.h; sourceTree = ""; }; + CD8203091395AB6A00F956C6 /* WebVideoFullscreenHUDWindowController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebVideoFullscreenHUDWindowController.mm; sourceTree = ""; }; + CD82030E1395ACE700F956C6 /* WebWindowAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebWindowAnimation.h; sourceTree = ""; }; + CD82030F1395ACE700F956C6 /* WebWindowAnimation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebWindowAnimation.mm; sourceTree = ""; }; + CDA79821170A22DC00D45C55 /* AudioSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AudioSession.h; sourceTree = ""; }; + CDA79822170A24F400D45C55 /* AudioSessionListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AudioSessionListener.h; sourceTree = ""; }; + CDA79823170A258300D45C55 /* AudioSession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioSession.cpp; sourceTree = ""; }; + CDA79825170A279000D45C55 /* AudioSessionIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AudioSessionIOS.mm; path = ios/AudioSessionIOS.mm; sourceTree = ""; }; + CDA98D9B160128A500FEA3B1 /* JSMediaKeyError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaKeyError.cpp; sourceTree = ""; }; + CDA98D9C160128A500FEA3B1 /* JSMediaKeyError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMediaKeyError.h; sourceTree = ""; }; + CDA98DC216014EEE00FEA3B1 /* MediaKeyNeededEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MediaKeyNeededEvent.cpp; path = Modules/encryptedmedia/MediaKeyNeededEvent.cpp; sourceTree = ""; }; + CDA98DC316014EEE00FEA3B1 /* MediaKeyNeededEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaKeyNeededEvent.h; path = Modules/encryptedmedia/MediaKeyNeededEvent.h; sourceTree = ""; }; + CDA98DC416014EEE00FEA3B1 /* MediaKeyNeededEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = MediaKeyNeededEvent.idl; path = Modules/encryptedmedia/MediaKeyNeededEvent.idl; sourceTree = ""; }; + CDA98DC716014F2C00FEA3B1 /* MediaKeySession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MediaKeySession.cpp; path = Modules/encryptedmedia/MediaKeySession.cpp; sourceTree = ""; }; + CDA98DC816014F2C00FEA3B1 /* MediaKeySession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaKeySession.h; path = Modules/encryptedmedia/MediaKeySession.h; sourceTree = ""; }; + CDA98DC916014F4000FEA3B1 /* MediaKeySession.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = MediaKeySession.idl; path = Modules/encryptedmedia/MediaKeySession.idl; sourceTree = ""; }; + CDA98DCA1601508A00FEA3B1 /* MediaKeys.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MediaKeys.cpp; path = Modules/encryptedmedia/MediaKeys.cpp; sourceTree = ""; }; + CDA98DCB1601508A00FEA3B1 /* MediaKeys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaKeys.h; path = Modules/encryptedmedia/MediaKeys.h; sourceTree = ""; }; + CDA98DCC1601508A00FEA3B1 /* MediaKeys.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = MediaKeys.idl; path = Modules/encryptedmedia/MediaKeys.idl; sourceTree = ""; }; + CDA98DCE1601597900FEA3B1 /* JSMediaKeys.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaKeys.cpp; sourceTree = ""; }; + CDA98DCF1601597900FEA3B1 /* JSMediaKeys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMediaKeys.h; sourceTree = ""; }; + CDA98DD01601597900FEA3B1 /* JSMediaKeySession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaKeySession.cpp; sourceTree = ""; }; + CDA98DD11601597900FEA3B1 /* JSMediaKeySession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMediaKeySession.h; sourceTree = ""; }; + CDA98DD516025BED00FEA3B1 /* MediaKeyMessageEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MediaKeyMessageEvent.cpp; path = Modules/encryptedmedia/MediaKeyMessageEvent.cpp; sourceTree = ""; }; + CDA98DD616025BED00FEA3B1 /* MediaKeyMessageEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaKeyMessageEvent.h; path = Modules/encryptedmedia/MediaKeyMessageEvent.h; sourceTree = ""; }; + CDA98DD716025BEE00FEA3B1 /* MediaKeyMessageEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = MediaKeyMessageEvent.idl; path = Modules/encryptedmedia/MediaKeyMessageEvent.idl; sourceTree = ""; }; + CDA98DDB16026A1800FEA3B1 /* JSMediaKeyMessageEvent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaKeyMessageEvent.cpp; sourceTree = ""; }; + CDA98DDC16026A1900FEA3B1 /* JSMediaKeyMessageEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSMediaKeyMessageEvent.h; sourceTree = ""; }; + CDA98DDD16026A1900FEA3B1 /* JSMediaKeyNeededEvent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaKeyNeededEvent.cpp; sourceTree = ""; }; + CDA98DDE16026A1900FEA3B1 /* JSMediaKeyNeededEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSMediaKeyNeededEvent.h; sourceTree = ""; }; + CDA98E091603CD5900FEA3B1 /* CDM.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CDM.cpp; path = Modules/encryptedmedia/CDM.cpp; sourceTree = ""; }; + CDA98E0A1603CD5900FEA3B1 /* CDM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CDM.h; path = Modules/encryptedmedia/CDM.h; sourceTree = ""; }; + CDA98E0C1603CF3C00FEA3B1 /* CDMPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDMPrivate.h; path = Modules/encryptedmedia/CDMPrivate.h; sourceTree = ""; }; + CDAA8D0714D385600061EA60 /* PlatformClockCM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformClockCM.h; sourceTree = ""; }; + CDAA8D0814D385600061EA60 /* PlatformClockCM.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PlatformClockCM.mm; sourceTree = ""; }; + CDAE8C071746B95700532D78 /* AudioSessionManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioSessionManager.cpp; sourceTree = ""; }; + CDAE8C081746B95700532D78 /* AudioSessionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioSessionManager.h; sourceTree = ""; }; + CDB859F2160D489900E5B07F /* MediaKeyError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaKeyError.h; sourceTree = ""; }; + CDB859F3160D489900E5B07F /* MediaKeyError.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaKeyError.idl; sourceTree = ""; }; + CDB859F4160D489900E5B07F /* MediaKeyEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaKeyEvent.cpp; sourceTree = ""; }; + CDB859F5160D489900E5B07F /* MediaKeyEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaKeyEvent.h; sourceTree = ""; }; + CDB859F6160D489900E5B07F /* MediaKeyEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaKeyEvent.idl; sourceTree = ""; }; + CDB859F8160D493E00E5B07F /* JSMediaKeyEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaKeyEvent.cpp; sourceTree = ""; }; + CDB859F9160D493E00E5B07F /* JSMediaKeyEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMediaKeyEvent.h; sourceTree = ""; }; + CDBD93BA1333BD4B002570E3 /* fullscreenQuickTime.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = fullscreenQuickTime.css; sourceTree = ""; }; + CDC26B3C160A62B00026757B /* MockCDM.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MockCDM.cpp; sourceTree = ""; }; + CDC26B3D160A62B00026757B /* MockCDM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MockCDM.h; sourceTree = ""; }; + CDC69DD41632026C007C38DF /* WebCoreFullScreenWarningView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreFullScreenWarningView.h; sourceTree = ""; }; + CDC69DD51632026C007C38DF /* WebCoreFullScreenWarningView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreFullScreenWarningView.mm; sourceTree = ""; }; + CDC69DD816371FD3007C38DF /* WebCoreFullScreenPlaceholderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreFullScreenPlaceholderView.h; sourceTree = ""; }; + CDC69DD916371FD3007C38DF /* WebCoreFullScreenPlaceholderView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreFullScreenPlaceholderView.mm; sourceTree = ""; }; + CDCE5CD014633BC900D47CCA /* EventTargetFactory.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = EventTargetFactory.in; sourceTree = ""; }; + CDD1E525167BA56400CE820B /* TextTrackRepresentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextTrackRepresentation.h; sourceTree = ""; }; + CDDE691D171DF89100A44D89 /* JSAudioBufferCustom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioBufferCustom.cpp; sourceTree = ""; }; + CDEA762C14608224008B31F1 /* Clock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Clock.h; sourceTree = ""; }; + CDEA762E146084DE008B31F1 /* PlatformClockCA.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformClockCA.cpp; sourceTree = ""; }; + CDEA762F146084EE008B31F1 /* PlatformClockCA.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformClockCA.h; sourceTree = ""; }; + CDEA76311460AE1B008B31F1 /* ClockGeneric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClockGeneric.h; sourceTree = ""; }; + CDEA76321460AE29008B31F1 /* ClockGeneric.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ClockGeneric.cpp; sourceTree = ""; }; + CDEA76331460B462008B31F1 /* Clock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Clock.cpp; sourceTree = ""; }; + CDEA7C821276230400B846DD /* RenderFullScreen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderFullScreen.h; sourceTree = ""; }; + CDEA7C831276230400B846DD /* RenderFullScreen.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderFullScreen.cpp; sourceTree = ""; }; + CDF65CC9145B43A700C4C7AA /* MediaControllerInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaControllerInterface.h; sourceTree = ""; }; + CDF65CCC145B6AFE00C4C7AA /* JSHTMLMediaElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLMediaElementCustom.cpp; sourceTree = ""; }; + CE02F0C311E83ADD00C6684A /* ScriptControllerBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptControllerBase.h; sourceTree = ""; }; + CE057FA31220731100A476D5 /* DocumentMarkerController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentMarkerController.cpp; sourceTree = ""; }; + CE057FA41220731100A476D5 /* DocumentMarkerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentMarkerController.h; sourceTree = ""; }; + CE08C3CF152B599A0021B8C2 /* AlternativeTextController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AlternativeTextController.cpp; sourceTree = ""; }; + CE08C3D0152B599A0021B8C2 /* AlternativeTextController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AlternativeTextController.h; sourceTree = ""; }; + CE5CB1B314EDAB6F00BB2795 /* EventSender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventSender.h; sourceTree = ""; }; + CE7B2DAF1586ABAD0098B3FA /* AlternativeTextUIController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AlternativeTextUIController.h; path = mac/AlternativeTextUIController.h; sourceTree = ""; }; + CE7B2DB01586ABAD0098B3FA /* AlternativeTextUIController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AlternativeTextUIController.mm; path = mac/AlternativeTextUIController.mm; sourceTree = ""; }; + CE7B2DB11586ABAD0098B3FA /* TextAlternativeWithRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TextAlternativeWithRange.h; path = mac/TextAlternativeWithRange.h; sourceTree = ""; }; + CE7B2DB21586ABAD0098B3FA /* TextAlternativeWithRange.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = TextAlternativeWithRange.mm; path = mac/TextAlternativeWithRange.mm; sourceTree = ""; }; + CECADFC2153778FF00E37068 /* DictationAlternative.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DictationAlternative.cpp; sourceTree = ""; }; + CECADFC3153778FF00E37068 /* DictationAlternative.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DictationAlternative.h; sourceTree = ""; }; + CECADFC4153778FF00E37068 /* DictationCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DictationCommand.cpp; sourceTree = ""; }; + CECADFC5153778FF00E37068 /* DictationCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DictationCommand.h; sourceTree = ""; }; + CECADFCB1537791D00E37068 /* TextInsertionBaseCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextInsertionBaseCommand.cpp; sourceTree = ""; }; + CECADFCC1537791D00E37068 /* TextInsertionBaseCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextInsertionBaseCommand.h; sourceTree = ""; }; + CECCFC3A141973D5002A0AC1 /* DecodeEscapeSequences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DecodeEscapeSequences.h; sourceTree = ""; }; + CEDA12D6152CA1CB00D9E08D /* AlternativeTextClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AlternativeTextClient.h; sourceTree = ""; }; + CEF418CC1179678C009D112C /* ViewportArguments.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ViewportArguments.cpp; sourceTree = ""; }; + CEF418CD1179678C009D112C /* ViewportArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewportArguments.h; sourceTree = ""; }; + D000EBA011BDAFD400C47726 /* FrameLoaderStateMachine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameLoaderStateMachine.cpp; sourceTree = ""; }; + D000EBA111BDAFD400C47726 /* FrameLoaderStateMachine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameLoaderStateMachine.h; sourceTree = ""; }; + D000ED2511C1B9CD00C47726 /* SubframeLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SubframeLoader.cpp; sourceTree = ""; }; + D000ED2611C1B9CD00C47726 /* SubframeLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubframeLoader.h; sourceTree = ""; }; + D01A27AB10C9BFD800026A42 /* SpaceSplitString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpaceSplitString.cpp; sourceTree = ""; }; + D01A27AC10C9BFD800026A42 /* SpaceSplitString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpaceSplitString.h; sourceTree = ""; }; + D05CED270A40BB2C00C5AF38 /* FormatBlockCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FormatBlockCommand.cpp; sourceTree = ""; }; + D05CED280A40BB2C00C5AF38 /* FormatBlockCommand.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FormatBlockCommand.h; sourceTree = ""; }; + D06C0D8D0CFD11460065F43F /* RemoveFormatCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoveFormatCommand.h; sourceTree = ""; }; + D06C0D8E0CFD11460065F43F /* RemoveFormatCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoveFormatCommand.cpp; sourceTree = ""; }; + D07DEAB70A36554A00CA30F8 /* InsertListCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = InsertListCommand.cpp; sourceTree = ""; }; + D07DEAB80A36554A00CA30F8 /* InsertListCommand.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = InsertListCommand.h; sourceTree = ""; }; + D086FE9609D53AAB005BC74D /* UnlinkCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnlinkCommand.h; sourceTree = ""; }; + D086FE9709D53AAB005BC74D /* UnlinkCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UnlinkCommand.cpp; sourceTree = ""; }; + D0A3A7301405A39800FB8ED3 /* ResourceLoaderOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLoaderOptions.h; sourceTree = ""; }; + D0B0556609C6700100307E43 /* CreateLinkCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CreateLinkCommand.h; sourceTree = ""; }; + D0B0556709C6700100307E43 /* CreateLinkCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CreateLinkCommand.cpp; sourceTree = ""; }; + D0BC54481443AC4A00E105DA /* CachedStyleSheetClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedStyleSheetClient.h; sourceTree = ""; }; + D0CE58F6125E4CC200F3F199 /* ResourceLoadScheduler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceLoadScheduler.cpp; sourceTree = ""; }; + D0CE58F7125E4CC200F3F199 /* ResourceLoadScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLoadScheduler.h; sourceTree = ""; }; + D0EDA772143E303C0028E383 /* CachedRawResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedRawResource.cpp; sourceTree = ""; }; + D0EDA773143E303C0028E383 /* CachedRawResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedRawResource.h; sourceTree = ""; }; + D0FF2A5B11F8C45A007E74E0 /* PingLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PingLoader.cpp; sourceTree = ""; }; + D0FF2A5C11F8C45A007E74E0 /* PingLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PingLoader.h; sourceTree = ""; }; + D23CA5480AB0E983005108A5 /* RangeException.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = RangeException.idl; sourceTree = ""; }; + D23CA55C0AB0EAAE005108A5 /* JSRangeException.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSRangeException.h; sourceTree = ""; }; + D23CA55E0AB0EAB6005108A5 /* JSRangeException.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSRangeException.cpp; sourceTree = ""; }; + D23CA56B0AB0EB8D005108A5 /* RangeException.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RangeException.h; sourceTree = ""; }; + D302754512A5FE84004BD828 /* RenderDetailsMarker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderDetailsMarker.cpp; sourceTree = ""; }; + D302754612A5FE84004BD828 /* RenderDetailsMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderDetailsMarker.h; sourceTree = ""; }; + D340629A1253BC8C009E4259 /* MediaQueryListListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaQueryListListener.cpp; sourceTree = ""; }; + D359D786129CA2710006E5D2 /* HTMLDetailsElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLDetailsElement.cpp; sourceTree = ""; }; + D359D787129CA2710006E5D2 /* HTMLDetailsElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLDetailsElement.h; sourceTree = ""; }; + D359D788129CA2710006E5D2 /* HTMLDetailsElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLDetailsElement.idl; sourceTree = ""; }; + D359D78E129CA3C00006E5D2 /* DOMHTMLDetailsElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLDetailsElement.h; sourceTree = ""; }; + D359D78F129CA3C00006E5D2 /* DOMHTMLDetailsElement.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLDetailsElement.mm; sourceTree = ""; }; + D359D790129CA3C00006E5D2 /* DOMHTMLDetailsElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLDetailsElementInternal.h; sourceTree = ""; }; + D359D8BC129CA55C0006E5D2 /* JSHTMLDetailsElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLDetailsElement.cpp; sourceTree = ""; }; + D359D8BD129CA55C0006E5D2 /* JSHTMLDetailsElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLDetailsElement.h; sourceTree = ""; }; + D3A94A31122DABAC00A37BBC /* MediaQueryList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaQueryList.cpp; sourceTree = ""; }; + D3A94A32122DABAC00A37BBC /* MediaQueryList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaQueryList.h; sourceTree = ""; }; + D3A94A33122DABAC00A37BBC /* MediaQueryList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaQueryList.idl; sourceTree = ""; }; + D3A94A34122DABAC00A37BBC /* MediaQueryListListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaQueryListListener.h; sourceTree = ""; }; + D3A94A35122DABAC00A37BBC /* MediaQueryListListener.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaQueryListListener.idl; sourceTree = ""; }; + D3A94A42122DC40F00A37BBC /* JSMediaQueryList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaQueryList.cpp; sourceTree = ""; }; + D3A94A43122DC40F00A37BBC /* JSMediaQueryList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMediaQueryList.h; sourceTree = ""; }; + D3AA10F1123A98AA0092152B /* MediaQueryMatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaQueryMatcher.cpp; sourceTree = ""; }; + D3AA10F2123A98AA0092152B /* MediaQueryMatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaQueryMatcher.h; sourceTree = ""; }; + D3D4E970130C7CFE007BA540 /* HTMLSummaryElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLSummaryElement.cpp; sourceTree = ""; }; + D3D4E971130C7CFE007BA540 /* HTMLSummaryElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLSummaryElement.h; sourceTree = ""; }; + D619A305144E00BE004BC302 /* ChildListMutationScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ChildListMutationScope.cpp; sourceTree = ""; }; + D619A306144E00BE004BC302 /* ChildListMutationScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChildListMutationScope.h; sourceTree = ""; }; + D630E2AB149BF344005B2F93 /* HistogramSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistogramSupport.h; sourceTree = ""; }; + D6489D23166FFCF1007C031B /* JSHTMLTemplateElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLTemplateElement.cpp; sourceTree = ""; }; + D6489D24166FFCF1007C031B /* JSHTMLTemplateElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLTemplateElement.h; sourceTree = ""; }; + D6E276AD14637455001D280A /* MutationObserverRegistration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MutationObserverRegistration.cpp; sourceTree = ""; }; + D6E276AE14637455001D280A /* MutationObserverRegistration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MutationObserverRegistration.h; sourceTree = ""; }; + D6E528A1149A926D00EFE1F3 /* MutationObserverInterestGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MutationObserverInterestGroup.cpp; sourceTree = ""; }; + D6E528A2149A926D00EFE1F3 /* MutationObserverInterestGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MutationObserverInterestGroup.h; sourceTree = ""; }; + D6EFC0BB1666DF7A003D291E /* HTMLTemplateElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLTemplateElement.cpp; sourceTree = ""; }; + D6EFC0BC1666DF7A003D291E /* HTMLTemplateElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLTemplateElement.h; sourceTree = ""; }; + D6EFC0BD1666DF7A003D291E /* HTMLTemplateElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLTemplateElement.idl; sourceTree = ""; }; + D6F7960C166FFECE0076DD18 /* JSHTMLTemplateElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLTemplateElementCustom.cpp; sourceTree = ""; }; + D6FDAEF2149C06190037B1E1 /* HistogramSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HistogramSupport.cpp; sourceTree = ""; }; + D70AD65513E1342B005B50B4 /* RenderRegion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderRegion.cpp; sourceTree = ""; }; + D70AD65613E1342B005B50B4 /* RenderRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderRegion.h; sourceTree = ""; }; + D72F6D77153159A3001EE44E /* FlowThreadController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FlowThreadController.cpp; sourceTree = ""; }; + D72F6D78153159A3001EE44E /* FlowThreadController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FlowThreadController.h; sourceTree = ""; }; + D7613A4A1474EE9500DB8606 /* WebKitNamedFlow.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebKitNamedFlow.idl; sourceTree = ""; }; + D7613A4D1474F13F00DB8606 /* WebKitNamedFlow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitNamedFlow.h; sourceTree = ""; }; + D7613A4E1474F13F00DB8606 /* WebKitNamedFlow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitNamedFlow.cpp; sourceTree = ""; }; + D7613AC214753E5600DB8606 /* JSWebKitNamedFlow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitNamedFlow.cpp; sourceTree = ""; }; + D7613AC314753E5600DB8606 /* JSWebKitNamedFlow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebKitNamedFlow.h; sourceTree = ""; }; + D8B6152E1032495100C8554A /* Cookie.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Cookie.h; sourceTree = ""; }; + DAACB3D916F2416400666135 /* PageConsole.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageConsole.cpp; sourceTree = ""; }; + DAACB3DA16F2416400666135 /* PageConsole.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageConsole.h; sourceTree = ""; }; + DB23C2C90A508D29002489EB /* IndentOutdentCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = IndentOutdentCommand.cpp; sourceTree = ""; }; + DB23C2CA0A508D29002489EB /* IndentOutdentCommand.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = IndentOutdentCommand.h; sourceTree = ""; }; + DBFCB0EBFF5CD77EBEB35395 /* RenderMathMLSpace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderMathMLSpace.cpp; path = rendering/mathml/RenderMathMLSpace.cpp; sourceTree = SOURCE_ROOT; }; + DD05FE0B0B8BA3C6009ACDFE /* WebCoreObjCExtras.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebCoreObjCExtras.h; sourceTree = ""; }; + DD763BB10992C2C900740B8E /* libxml2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.dylib; path = /usr/lib/libxml2.dylib; sourceTree = ""; }; + DE49B2FF165F2FC60010338D /* MediaControlElementTypes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaControlElementTypes.cpp; sourceTree = ""; }; + DE49B300165F2FC60010338D /* MediaControlElementTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaControlElementTypes.h; sourceTree = ""; }; + DE49B307165F2FE10010338D /* RenderMediaControlElements.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMediaControlElements.cpp; sourceTree = ""; }; + DE49B308165F2FE10010338D /* RenderMediaControlElements.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMediaControlElements.h; sourceTree = ""; }; + DF9AFD7013FC31D80015FEB7 /* MediaPlayerPrivateAVFoundationObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaPlayerPrivateAVFoundationObjC.h; path = objc/MediaPlayerPrivateAVFoundationObjC.h; sourceTree = ""; }; + DF9AFD7113FC31D80015FEB7 /* MediaPlayerPrivateAVFoundationObjC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MediaPlayerPrivateAVFoundationObjC.mm; path = objc/MediaPlayerPrivateAVFoundationObjC.mm; sourceTree = ""; }; + E0FEF371B07C53EAC1C1FBEE /* EventSource.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = EventSource.idl; sourceTree = ""; }; + E0FEF371B17C53EAC1C1FBEE /* EventSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventSource.h; sourceTree = ""; }; + E0FEF371B27C53EAC1C1FBEE /* EventSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventSource.cpp; sourceTree = ""; }; + E0FEF371B37C53EAC1C1FBEE /* JSEventSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEventSource.h; sourceTree = ""; }; + E0FEF371B47C53EAC1C1FBEE /* JSEventSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSEventSource.cpp; sourceTree = ""; }; + E100EE731546EAC100BA11D1 /* DeprecatedStyleBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeprecatedStyleBuilder.cpp; sourceTree = ""; }; + E100EE741546EAC100BA11D1 /* DeprecatedStyleBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeprecatedStyleBuilder.h; sourceTree = ""; }; + E107400B0E77BDC00033AF24 /* JSMessageChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMessageChannel.cpp; sourceTree = ""; }; + E107400C0E77BDC00033AF24 /* JSMessageChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMessageChannel.h; sourceTree = ""; }; + E10B937B0B73C00A003ED890 /* JSCustomXPathNSResolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCustomXPathNSResolver.h; sourceTree = ""; }; + E10B93C20B73C291003ED890 /* JSCustomXPathNSResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCustomXPathNSResolver.cpp; sourceTree = ""; }; + E10B9B6A0B747599003ED890 /* NativeXPathNSResolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NativeXPathNSResolver.h; sourceTree = ""; }; + E10B9B6B0B747599003ED890 /* NativeXPathNSResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NativeXPathNSResolver.cpp; sourceTree = ""; }; + E10B9CCA0B747A44003ED890 /* DOMCustomXPathNSResolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMCustomXPathNSResolver.h; sourceTree = ""; }; + E10B9CCB0B747A44003ED890 /* DOMCustomXPathNSResolver.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCustomXPathNSResolver.mm; sourceTree = ""; }; + E11AF15011B9A1A300805103 /* Cursor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Cursor.cpp; sourceTree = ""; }; + E11C9D9A0EB3681200E409DB /* ScriptExecutionContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptExecutionContext.h; sourceTree = ""; }; + E11C9DAF0EB3699500E409DB /* ScriptExecutionContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptExecutionContext.cpp; sourceTree = ""; }; + E124748310AA161D00B79493 /* AuthenticationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AuthenticationClient.h; sourceTree = ""; }; + E12719C60EEEC16800F61213 /* NavigatorBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NavigatorBase.h; sourceTree = ""; }; + E12719C90EEEC21300F61213 /* NavigatorBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NavigatorBase.cpp; sourceTree = ""; }; + E1271A0A0EEEC77A00F61213 /* WorkerNavigator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerNavigator.h; sourceTree = ""; }; + E1271A130EEEC80400F61213 /* WorkerNavigator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerNavigator.cpp; sourceTree = ""; }; + E1271A510EEECD1C00F61213 /* WorkerNavigator.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WorkerNavigator.idl; sourceTree = ""; }; + E1271A560EEECDE400F61213 /* JSWorkerNavigator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWorkerNavigator.h; sourceTree = ""; }; + E1271A570EEECDE400F61213 /* JSWorkerNavigator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWorkerNavigator.cpp; sourceTree = ""; }; + E1284AD910447AEB00EAEB52 /* PageTransitionEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PageTransitionEvent.idl; sourceTree = ""; }; + E1284AE010447D4500EAEB52 /* PageTransitionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageTransitionEvent.h; sourceTree = ""; }; + E1284AE910447DEE00EAEB52 /* PageTransitionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageTransitionEvent.cpp; sourceTree = ""; }; + E1284BAF10449FFA00EAEB52 /* JSPageTransitionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPageTransitionEvent.h; sourceTree = ""; }; + E1284BB010449FFA00EAEB52 /* JSPageTransitionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPageTransitionEvent.cpp; sourceTree = ""; }; + E1284BD31044A01E00EAEB52 /* DOMPageTransitionEvent.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMPageTransitionEvent.mm; sourceTree = ""; }; + E1284BD41044A01E00EAEB52 /* DOMPageTransitionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMPageTransitionEvent.h; sourceTree = ""; }; + E12EDB7A0B308A78002704B6 /* EventTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventTarget.h; sourceTree = ""; }; + E12EDBE90B308E0B002704B6 /* EventTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventTarget.cpp; sourceTree = ""; }; + E134F5AA12EE343F004EC58D /* IntRectHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntRectHash.h; sourceTree = ""; }; + E139866115478474001E3F65 /* StyleResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleResolver.cpp; sourceTree = ""; }; + E139866215478474001E3F65 /* StyleResolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleResolver.h; sourceTree = ""; }; + E13EF3421684ECF40034C83F /* NetworkStorageSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkStorageSession.h; sourceTree = ""; }; + E13EF34716850C470034C83F /* NetworkStorageSessionCFNet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkStorageSessionCFNet.cpp; sourceTree = ""; }; + E13F01EA1270E10D00DFBA71 /* CookieStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CookieStorage.h; sourceTree = ""; }; + E13F01F01270E19000DFBA71 /* CookieStorageMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CookieStorageMac.mm; sourceTree = ""; }; + E1424C89164B3B4E00F32D40 /* PlatformCookieJar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformCookieJar.h; path = network/PlatformCookieJar.h; sourceTree = ""; }; + E1424C8F164B460B00F32D40 /* CookieJarMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CookieJarMac.mm; sourceTree = ""; }; + E1424C91164B52C800F32D40 /* CookieJar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CookieJar.cpp; sourceTree = ""; }; + E1424C92164B52C800F32D40 /* CookieJar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CookieJar.h; sourceTree = ""; }; + E145349416A9BB6A000F6FD2 /* DOMTransitionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMTransitionEvent.h; sourceTree = ""; }; + E145349516A9BB6A000F6FD2 /* DOMTransitionEvent.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMTransitionEvent.mm; sourceTree = ""; }; + E145349616A9BB6A000F6FD2 /* DOMTransitionEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMTransitionEventInternal.h; sourceTree = ""; }; + E14A94D616DFDF950068DE82 /* BlobRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BlobRegistry.cpp; sourceTree = ""; }; + E14F1C4214B5DAC600EA9009 /* HTMLFormControlElementWithState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLFormControlElementWithState.cpp; sourceTree = ""; }; + E14F1C4314B5DAC600EA9009 /* HTMLFormControlElementWithState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLFormControlElementWithState.h; sourceTree = ""; }; + E1513D4E1677EA8300149FCB /* InitializeLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InitializeLogging.h; sourceTree = ""; }; + E1513D501677F08800149FCB /* NotImplemented.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NotImplemented.cpp; sourceTree = ""; }; + E152551316FD234F003D7ADB /* WebCoreResourceHandleAsOperationQueueDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreResourceHandleAsOperationQueueDelegate.h; sourceTree = ""; }; + E152551416FD234F003D7ADB /* WebCoreResourceHandleAsOperationQueueDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreResourceHandleAsOperationQueueDelegate.mm; sourceTree = ""; }; + E15A36D61104572000B7B639 /* XMLNSNames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLNSNames.h; sourceTree = ""; }; + E15A36D81104572700B7B639 /* XMLNSNames.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLNSNames.cpp; sourceTree = ""; }; + E169803C1133542D00894115 /* CRuntimeObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CRuntimeObject.h; sourceTree = ""; }; + E16980481133644700894115 /* CRuntimeObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CRuntimeObject.cpp; sourceTree = ""; }; + E16982541134629D00894115 /* ObjCRuntimeObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjCRuntimeObject.h; sourceTree = ""; }; + E169825F1134636A00894115 /* ObjCRuntimeObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ObjCRuntimeObject.mm; sourceTree = ""; }; + E16A84F714C85CCC002977DF /* CSSBorderImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSBorderImage.cpp; sourceTree = ""; }; + E16A84F814C85CCC002977DF /* CSSBorderImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSBorderImage.h; sourceTree = ""; }; + E17B490B16A97269001C8839 /* TransitionEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TransitionEvent.idl; sourceTree = ""; }; + E17B491316A9B093001C8839 /* TransitionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TransitionEvent.cpp; sourceTree = ""; }; + E17B491416A9B093001C8839 /* TransitionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TransitionEvent.h; sourceTree = ""; }; + E17B491F16A9B8FF001C8839 /* JSTransitionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTransitionEvent.h; sourceTree = ""; }; + E17B492016A9B8FF001C8839 /* JSTransitionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTransitionEvent.cpp; sourceTree = ""; }; + E180810C16FCECDF00B80D07 /* WebCoreResourceHandleAsDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreResourceHandleAsDelegate.mm; sourceTree = ""; }; + E180810D16FCECDF00B80D07 /* WebCoreResourceHandleAsDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreResourceHandleAsDelegate.h; sourceTree = ""; }; + E180811016FCF42E00B80D07 /* SynchronousLoaderClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SynchronousLoaderClient.cpp; sourceTree = ""; }; + E180811416FCF9CB00B80D07 /* SynchronousLoaderClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SynchronousLoaderClient.mm; sourceTree = ""; }; + E180811516FCF9CB00B80D07 /* SynchronousLoaderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SynchronousLoaderClient.h; sourceTree = ""; }; + E182568D0EF2B02D00933242 /* JSWorkerGlobalScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWorkerGlobalScope.cpp; sourceTree = ""; }; + E182568E0EF2B02D00933242 /* JSWorkerGlobalScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWorkerGlobalScope.h; sourceTree = ""; }; + E18258AB0EF3CD7000933242 /* JSWorkerGlobalScopeCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWorkerGlobalScopeCustom.cpp; sourceTree = ""; }; + E187056216E54A0D00585E97 /* MainThreadTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainThreadTask.h; sourceTree = ""; }; + E18772F0126E2629003DD586 /* Language.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Language.cpp; sourceTree = ""; }; + E1A1470711102B1500EEC0F3 /* ContainerNodeAlgorithms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContainerNodeAlgorithms.h; sourceTree = ""; }; + E1A3162B134BC32D007C9A4F /* WebNSAttributedStringExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNSAttributedStringExtras.h; sourceTree = ""; }; + E1A3162C134BC32D007C9A4F /* WebNSAttributedStringExtras.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNSAttributedStringExtras.mm; sourceTree = ""; }; + E1A5F99A0E7EAA2500AF85EA /* JSMessageChannelCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMessageChannelCustom.cpp; sourceTree = ""; }; + E1A643F10EC0972500779668 /* WorkerScriptController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerScriptController.h; sourceTree = ""; }; + E1A643FC0EC097A000779668 /* WorkerScriptController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerScriptController.cpp; sourceTree = ""; }; + E1A8E56417552B2A007488E7 /* CFURLExtras.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CFURLExtras.cpp; sourceTree = ""; }; + E1A8E56517552B2A007488E7 /* CFURLExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CFURLExtras.h; sourceTree = ""; }; + E1AB1EA814E9E27D00449E13 /* FileList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = FileList.idl; path = fileapi/FileList.idl; sourceTree = ""; }; + E1AB1EAB14E9E2EF00449E13 /* DirectoryEntry.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = DirectoryEntry.idl; path = Modules/filesystem/DirectoryEntry.idl; sourceTree = ""; }; + E1AB1EAC14E9E2F800449E13 /* DirectoryEntrySync.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = DirectoryEntrySync.idl; path = Modules/filesystem/DirectoryEntrySync.idl; sourceTree = ""; }; + E1AB1EAD14E9E30500449E13 /* DirectoryReader.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = DirectoryReader.idl; path = Modules/filesystem/DirectoryReader.idl; sourceTree = ""; }; + E1AB1EAE14E9E30B00449E13 /* DirectoryReaderSync.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = DirectoryReaderSync.idl; path = Modules/filesystem/DirectoryReaderSync.idl; sourceTree = ""; }; + E1AB1EAF14E9E31700449E13 /* DOMFileSystemSync.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = DOMFileSystemSync.idl; path = Modules/filesystem/DOMFileSystemSync.idl; sourceTree = ""; }; + E1AB1EB014E9E32300449E13 /* EntriesCallback.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = EntriesCallback.idl; path = Modules/filesystem/EntriesCallback.idl; sourceTree = ""; }; + E1AB1EB114E9E32A00449E13 /* Entry.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = Entry.idl; path = Modules/filesystem/Entry.idl; sourceTree = ""; }; + E1AB1EB214E9E33200449E13 /* EntryArray.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = EntryArray.idl; path = Modules/filesystem/EntryArray.idl; sourceTree = ""; }; + E1AB1EB314E9E33900449E13 /* EntryArraySync.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = EntryArraySync.idl; path = Modules/filesystem/EntryArraySync.idl; sourceTree = ""; }; + E1AB1EB414E9E34500449E13 /* EntryCallback.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = EntryCallback.idl; path = Modules/filesystem/EntryCallback.idl; sourceTree = ""; }; + E1AB1EB514E9E34B00449E13 /* EntrySync.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = EntrySync.idl; path = Modules/filesystem/EntrySync.idl; sourceTree = ""; }; + E1AB1EB614E9E35200449E13 /* ErrorCallback.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = ErrorCallback.idl; path = Modules/filesystem/ErrorCallback.idl; sourceTree = ""; }; + E1AB1EB714E9E35800449E13 /* File.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = File.idl; path = fileapi/File.idl; sourceTree = ""; }; + E1AB1EB814E9E36200449E13 /* FileCallback.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = FileCallback.idl; path = Modules/filesystem/FileCallback.idl; sourceTree = ""; }; + E1AB1EB914E9E36D00449E13 /* FileEntry.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = FileEntry.idl; path = Modules/filesystem/FileEntry.idl; sourceTree = ""; }; + E1AB1EBA14E9E37200449E13 /* FileEntrySync.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = FileEntrySync.idl; path = Modules/filesystem/FileEntrySync.idl; sourceTree = ""; }; + E1AB1EBB14E9E37A00449E13 /* FileError.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = FileError.idl; path = fileapi/FileError.idl; sourceTree = ""; }; + E1AB1EBC14E9E39700449E13 /* FileException.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = FileException.idl; path = fileapi/FileException.idl; sourceTree = ""; }; + E1AB1EBD14E9E3A800449E13 /* FileReaderSync.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = FileReaderSync.idl; path = fileapi/FileReaderSync.idl; sourceTree = ""; }; + E1AB1EBE14E9E3B200449E13 /* FileSystemCallback.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = FileSystemCallback.idl; path = Modules/filesystem/FileSystemCallback.idl; sourceTree = ""; }; + E1AB1EBF14E9E3BE00449E13 /* FileWriterCallback.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = FileWriterCallback.idl; path = Modules/filesystem/FileWriterCallback.idl; sourceTree = ""; }; + E1AB1EC014E9E3C400449E13 /* FileWriterSync.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = FileWriterSync.idl; path = Modules/filesystem/FileWriterSync.idl; sourceTree = ""; }; + E1AB1EC114E9E3CC00449E13 /* Metadata.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = Metadata.idl; path = Modules/filesystem/Metadata.idl; sourceTree = ""; }; + E1AB1EC214E9E3D500449E13 /* MetadataCallback.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = MetadataCallback.idl; path = Modules/filesystem/MetadataCallback.idl; sourceTree = ""; }; + E1ACAF4A0E791AAF0087D12B /* DOMMessagePort.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMMessagePort.mm; sourceTree = ""; }; + E1ACAF4B0E791AAF0087D12B /* DOMMessagePort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMMessagePort.h; sourceTree = ""; }; + E1AD12D51295D0BD00ACA989 /* JSProcessingInstructionCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSProcessingInstructionCustom.cpp; sourceTree = ""; }; + E1AD139A1295D92600ACA989 /* JSHTMLLinkElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLLinkElementCustom.cpp; sourceTree = ""; }; + E1AD139D1295D96100ACA989 /* JSHTMLStyleElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLStyleElementCustom.cpp; sourceTree = ""; }; + E1AD14221295EA7F00ACA989 /* JSHTMLInputElementCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLInputElementCustom.h; sourceTree = ""; }; + E1AD147B1297307E00ACA989 /* JSCSSImportRuleCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSImportRuleCustom.cpp; sourceTree = ""; }; + E1AD14901297337400ACA989 /* JSCSSFontFaceRuleCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSFontFaceRuleCustom.cpp; sourceTree = ""; }; + E1AD14A21297345300ACA989 /* JSCSSMediaRuleCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSMediaRuleCustom.cpp; sourceTree = ""; }; + E1AD14B4129734CA00ACA989 /* JSWebKitCSSKeyframesRuleCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitCSSKeyframesRuleCustom.cpp; sourceTree = ""; }; + E1AD14C41297354900ACA989 /* JSWebKitCSSKeyframeRuleCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitCSSKeyframeRuleCustom.cpp; sourceTree = ""; }; + E1AD14CC129735A400ACA989 /* JSCSSPageRuleCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSPageRuleCustom.cpp; sourceTree = ""; }; + E1AD14E71297377400ACA989 /* JSCSSStyleRuleCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSStyleRuleCustom.cpp; sourceTree = ""; }; + E1ADECBD0E76ACF1004A1A5E /* MessagePort.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = MessagePort.h; sourceTree = ""; }; + E1ADECBE0E76ACF1004A1A5E /* MessagePort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MessagePort.cpp; sourceTree = ""; }; + E1ADECC60E76AD1F004A1A5E /* MessagePort.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MessagePort.idl; sourceTree = ""; }; + E1ADECCC0E76AD8B004A1A5E /* MessageChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageChannel.h; sourceTree = ""; }; + E1ADECCD0E76AD8B004A1A5E /* MessageChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MessageChannel.cpp; sourceTree = ""; }; + E1ADECD00E76ADAB004A1A5E /* MessageChannel.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MessageChannel.idl; sourceTree = ""; }; + E1ADED460E76B8DD004A1A5E /* JSMessagePortCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMessagePortCustom.cpp; sourceTree = ""; }; + E1ADEDD40E76BD60004A1A5E /* DOMMessagePortInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMMessagePortInternal.h; sourceTree = ""; }; + E1ADEDD80E76BD93004A1A5E /* JSMessagePort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMessagePort.h; sourceTree = ""; }; + E1ADEDD90E76BD93004A1A5E /* JSMessagePort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMessagePort.cpp; sourceTree = ""; }; + E1B25104152A0BAF0069B779 /* StylePropertyShorthand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StylePropertyShorthand.cpp; sourceTree = ""; }; + E1B25105152A0BAF0069B779 /* StylePropertyShorthand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StylePropertyShorthand.h; sourceTree = ""; }; + E1B4CD2410B322E200BFFD7E /* CredentialStorageMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CredentialStorageMac.mm; sourceTree = ""; }; + E1B533461717D0A000F205F9 /* CachedSVGDocumentReference.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedSVGDocumentReference.cpp; sourceTree = ""; }; + E1B533481717DEE300F205F9 /* CachedRawResourceClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedRawResourceClient.h; sourceTree = ""; }; + E1B7839B163740A70007B692 /* SharedWorkerStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SharedWorkerStrategy.h; path = workers/SharedWorkerStrategy.h; sourceTree = ""; }; + E1B7841F1639CBBE0007B692 /* SharedWorkerRepository.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SharedWorkerRepository.cpp; path = workers/SharedWorkerRepository.cpp; sourceTree = ""; }; + E1BA003016FB92AC00BA7A35 /* ResourceHandleClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceHandleClient.cpp; sourceTree = ""; }; + E1BA66F01742BD8600C20251 /* DynamicLinkerInterposing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicLinkerInterposing.h; sourceTree = ""; }; + E1BA66F21742BDCC00C20251 /* WebCoreTestShim.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = WebCoreTestShim.xcconfig; sourceTree = ""; }; + E1BA67161742BDE000C20251 /* libWebCoreTestShim.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libWebCoreTestShim.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + E1BA67191742BEF400C20251 /* WebCoreTestShimLibrary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebCoreTestShimLibrary.cpp; sourceTree = ""; }; + E1BE512B0CF6C512002EA959 /* XSLTUnicodeSort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XSLTUnicodeSort.cpp; sourceTree = ""; }; + E1BE512C0CF6C512002EA959 /* XSLTUnicodeSort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XSLTUnicodeSort.h; sourceTree = ""; }; + E1C2F2481533A2120083F974 /* SettingsMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SettingsMac.mm; sourceTree = ""; }; + E1C362ED0EAF2AA9007410BC /* JSWorkerLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWorkerLocation.h; sourceTree = ""; }; + E1C362EE0EAF2AA9007410BC /* JSWorkerLocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWorkerLocation.cpp; sourceTree = ""; }; + E1C36C020EB076D6007410BC /* JSDOMGlobalObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMGlobalObject.h; sourceTree = ""; }; + E1C36CBC0EB08062007410BC /* JSDOMGlobalObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMGlobalObject.cpp; sourceTree = ""; }; + E1C36D320EB0A094007410BC /* JSWorkerGlobalScopeBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWorkerGlobalScopeBase.cpp; sourceTree = ""; }; + E1C36D330EB0A094007410BC /* JSWorkerGlobalScopeBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWorkerGlobalScopeBase.h; sourceTree = ""; }; + E1C415D90F655D6F0092D2FB /* CrossOriginPreflightResultCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossOriginPreflightResultCache.h; sourceTree = ""; }; + E1C415DD0F655D7C0092D2FB /* CrossOriginPreflightResultCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CrossOriginPreflightResultCache.cpp; sourceTree = ""; }; + E1C416110F6562FD0092D2FB /* CrossOriginAccessControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossOriginAccessControl.h; sourceTree = ""; }; + E1C416160F6563180092D2FB /* CrossOriginAccessControl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CrossOriginAccessControl.cpp; sourceTree = ""; }; + E1C4DE680EA75C1E0023CCD6 /* ActiveDOMObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ActiveDOMObject.h; sourceTree = ""; }; + E1C4DE6D0EA75C650023CCD6 /* ActiveDOMObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ActiveDOMObject.cpp; sourceTree = ""; }; + E1C6CFC21746D293007B87A1 /* DOMWindowConstructors.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = DOMWindowConstructors.idl; sourceTree = ""; }; + E1C8BE5C0E8BD15A0064CB7D /* JSWorker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWorker.cpp; sourceTree = ""; }; + E1CA5CBB0E8CDCAF00E8EF90 /* JSWorkerCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWorkerCustom.cpp; sourceTree = ""; }; + E1CAA5C50E8BD23600A73ECA /* JSWorker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWorker.h; sourceTree = ""; }; + E1CDE91F15018ED000862CC5 /* AsyncFileStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AsyncFileStream.cpp; path = fileapi/AsyncFileStream.cpp; sourceTree = ""; }; + E1CDE9211501916900862CC5 /* AsyncFileStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AsyncFileStream.h; path = fileapi/AsyncFileStream.h; sourceTree = ""; }; + E1E1BEFF115FF6FB006F52CA /* WindowsKeyboardCodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WindowsKeyboardCodes.h; sourceTree = ""; }; + E1E6EEA30B628DA8005F2F70 /* JSHTMLSelectElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLSelectElement.cpp; sourceTree = ""; }; + E1E6EEA70B628DB3005F2F70 /* JSHTMLSelectElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = JSHTMLSelectElement.h; sourceTree = ""; }; + E1EBBBD30AAC9B87001FE8E2 /* CSSCharsetRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSCharsetRule.cpp; sourceTree = ""; }; + E1EC299D0BB04C6B00EA187B /* XPathNodeSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XPathNodeSet.cpp; sourceTree = ""; }; + E1EC299E0BB04C6B00EA187B /* XPathNodeSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPathNodeSet.h; sourceTree = ""; }; + E1ED8AC20CC49BE000BFC557 /* CSSPrimitiveValueMappings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSPrimitiveValueMappings.h; sourceTree = ""; }; + E1F1E82D0C3C2BB9006DB391 /* XSLTExtensions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XSLTExtensions.cpp; sourceTree = ""; }; + E1F1E82E0C3C2BB9006DB391 /* XSLTExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XSLTExtensions.h; sourceTree = ""; }; + E1FF57A20F01255B00891EBB /* ThreadGlobalData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadGlobalData.h; sourceTree = ""; }; + E1FF57A50F01256B00891EBB /* ThreadGlobalData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadGlobalData.cpp; sourceTree = ""; }; + E406F3FB1198307D009D59D6 /* ColorData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ColorData.cpp; sourceTree = ""; }; + E41EA038119836DB00710BC5 /* CSSPropertyNames.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSPropertyNames.cpp; sourceTree = ""; }; + E41EA0391198374900710BC5 /* CSSValueKeywords.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSValueKeywords.cpp; sourceTree = ""; }; + E4295FA312B0614E00D1ACE0 /* ResourceLoadPriority.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLoadPriority.h; sourceTree = ""; }; + E43105B716750F0C00DB2FB8 /* NodeTraversal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NodeTraversal.cpp; sourceTree = ""; }; + E43105BA16750F1600DB2FB8 /* NodeTraversal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeTraversal.h; sourceTree = ""; }; + E446138F0CD6331000FADA75 /* HTMLAudioElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLAudioElement.cpp; sourceTree = ""; }; + E44613900CD6331000FADA75 /* HTMLAudioElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLAudioElement.h; sourceTree = ""; }; + E44613910CD6331000FADA75 /* HTMLAudioElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLAudioElement.idl; sourceTree = ""; }; + E44613920CD6331000FADA75 /* HTMLMediaElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLMediaElement.cpp; sourceTree = ""; }; + E44613930CD6331000FADA75 /* HTMLMediaElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLMediaElement.h; sourceTree = ""; }; + E44613940CD6331000FADA75 /* HTMLMediaElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLMediaElement.idl; sourceTree = ""; }; + E44613950CD6331000FADA75 /* HTMLSourceElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLSourceElement.cpp; sourceTree = ""; }; + E44613960CD6331000FADA75 /* HTMLSourceElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLSourceElement.h; sourceTree = ""; }; + E44613970CD6331000FADA75 /* HTMLSourceElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLSourceElement.idl; sourceTree = ""; }; + E44613980CD6331000FADA75 /* HTMLVideoElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLVideoElement.cpp; sourceTree = ""; }; + E44613990CD6331000FADA75 /* HTMLVideoElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLVideoElement.h; sourceTree = ""; }; + E446139A0CD6331000FADA75 /* HTMLVideoElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLVideoElement.idl; sourceTree = ""; }; + E446139B0CD6331000FADA75 /* MediaError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaError.h; sourceTree = ""; }; + E446139C0CD6331000FADA75 /* MediaError.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaError.idl; sourceTree = ""; }; + E446139D0CD6331000FADA75 /* TimeRanges.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TimeRanges.cpp; sourceTree = ""; }; + E446139E0CD6331000FADA75 /* TimeRanges.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimeRanges.h; sourceTree = ""; }; + E446139F0CD6331000FADA75 /* TimeRanges.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TimeRanges.idl; sourceTree = ""; }; + E44613A00CD6331000FADA75 /* VoidCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VoidCallback.idl; sourceTree = ""; }; + E44613B40CD6344E00FADA75 /* VoidCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VoidCallback.h; sourceTree = ""; }; + E446140E0CD6826900FADA75 /* JSHTMLVideoElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLVideoElement.cpp; sourceTree = ""; }; + E446140F0CD6826900FADA75 /* JSHTMLVideoElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLVideoElement.h; sourceTree = ""; }; + E44614100CD6826900FADA75 /* JSMediaError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaError.cpp; sourceTree = ""; }; + E44614110CD6826900FADA75 /* JSMediaError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMediaError.h; sourceTree = ""; }; + E44614120CD6826900FADA75 /* JSTimeRanges.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTimeRanges.cpp; sourceTree = ""; }; + E44614130CD6826900FADA75 /* JSTimeRanges.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTimeRanges.h; sourceTree = ""; }; + E44B4BB1141650D7002B1D8B /* SelectorChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SelectorChecker.cpp; sourceTree = ""; }; + E44B4BB2141650D7002B1D8B /* SelectorChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SelectorChecker.h; sourceTree = ""; }; + E44EE3A617576E5500EEE8CF /* FontGenericFamilies.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FontGenericFamilies.cpp; sourceTree = ""; }; + E44EE3A717576E5500EEE8CF /* FontGenericFamilies.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FontGenericFamilies.h; sourceTree = ""; }; + E45322A9140CE267005A0F92 /* SelectorQuery.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SelectorQuery.cpp; sourceTree = ""; }; + E45322AA140CE267005A0F92 /* SelectorQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SelectorQuery.h; sourceTree = ""; }; + E45390190EAFCACA003695C8 /* PasteboardIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PasteboardIOS.mm; path = ios/PasteboardIOS.mm; sourceTree = ""; }; + E45390350EAFD637003695C8 /* SharedTimerIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SharedTimerIOS.mm; path = ios/SharedTimerIOS.mm; sourceTree = ""; }; + E462A4A0113E71BE004A4220 /* IntPointHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntPointHash.h; sourceTree = ""; }; + E4778B7D115A581A00B5D372 /* JSCustomEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCustomEvent.cpp; sourceTree = ""; }; + E4778B7E115A581A00B5D372 /* JSCustomEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCustomEvent.h; sourceTree = ""; }; + E47A97CE163059FC005DCD99 /* StyleInvalidationAnalysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleInvalidationAnalysis.cpp; sourceTree = ""; }; + E47A97CF163059FC005DCD99 /* StyleInvalidationAnalysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleInvalidationAnalysis.h; sourceTree = ""; }; + E47B4BE60E71241600038854 /* CachedResourceHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedResourceHandle.h; sourceTree = ""; }; + E47B4BE70E71241600038854 /* CachedResourceHandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedResourceHandle.cpp; sourceTree = ""; }; + E47E276416036ED200EE2AFB /* DocumentStyleSheetCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentStyleSheetCollection.h; sourceTree = ""; }; + E47E276716036EDC00EE2AFB /* DocumentStyleSheetCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentStyleSheetCollection.cpp; sourceTree = ""; }; + E4946EAC156E64DD00D3297F /* StyleRuleImport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleRuleImport.cpp; sourceTree = ""; }; + E4946EAD156E64DD00D3297F /* StyleRuleImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleRuleImport.h; sourceTree = ""; }; + E49BD9F9131FD2ED003C56F0 /* CSSValuePool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSValuePool.h; sourceTree = ""; }; + E49BDA0A131FD3E5003C56F0 /* CSSValuePool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSValuePool.cpp; sourceTree = ""; }; + E4AFCFA40DAF29A300F5F55C /* UnitBezier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnitBezier.h; sourceTree = ""; }; + E4AFD0050DAF335400F5F55C /* SMILTime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SMILTime.cpp; sourceTree = ""; }; + E4AFD0060DAF335400F5F55C /* SMILTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMILTime.h; sourceTree = ""; }; + E4AFD0070DAF335400F5F55C /* SMILTimeContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SMILTimeContainer.cpp; sourceTree = ""; }; + E4AFD0080DAF335400F5F55C /* SMILTimeContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMILTimeContainer.h; sourceTree = ""; }; + E4AFD0090DAF335400F5F55C /* SVGSMILElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGSMILElement.cpp; sourceTree = ""; }; + E4AFD00A0DAF335400F5F55C /* SVGSMILElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGSMILElement.h; sourceTree = ""; }; + E4B41E010CBF8EAA00AF2ECE /* ProgressEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProgressEvent.cpp; sourceTree = ""; }; + E4B41E020CBF8EAA00AF2ECE /* ProgressEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProgressEvent.h; sourceTree = ""; }; + E4B41E030CBF8EAA00AF2ECE /* ProgressEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ProgressEvent.idl; sourceTree = ""; }; + E4B41E0C0CBF90BD00AF2ECE /* MediaPlayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaPlayer.cpp; sourceTree = ""; }; + E4B41E0D0CBF90BD00AF2ECE /* MediaPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaPlayer.h; sourceTree = ""; }; + E4B41E100CBF90EF00AF2ECE /* MediaPlayerPrivateQTKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaPlayerPrivateQTKit.h; sourceTree = ""; }; + E4B41E110CBF90EF00AF2ECE /* MediaPlayerPrivateQTKit.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MediaPlayerPrivateQTKit.mm; sourceTree = ""; }; + E4B41E330CBFB60900AF2ECE /* RenderVideo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderVideo.cpp; sourceTree = ""; }; + E4B41E340CBFB60900AF2ECE /* RenderVideo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderVideo.h; sourceTree = ""; }; + E4B423710CBFB6E000AF2ECE /* JSHTMLSourceElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLSourceElement.cpp; sourceTree = ""; }; + E4B423720CBFB6E000AF2ECE /* JSHTMLSourceElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLSourceElement.h; sourceTree = ""; }; + E4B4237D0CBFB73C00AF2ECE /* JSHTMLAudioElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLAudioElement.cpp; sourceTree = ""; }; + E4B4237E0CBFB73C00AF2ECE /* JSHTMLAudioElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLAudioElement.h; sourceTree = ""; }; + E4B4237F0CBFB73C00AF2ECE /* JSHTMLMediaElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLMediaElement.cpp; sourceTree = ""; }; + E4B423800CBFB73C00AF2ECE /* JSHTMLMediaElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLMediaElement.h; sourceTree = ""; }; + E4B423850CBFB73C00AF2ECE /* JSProgressEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSProgressEvent.cpp; sourceTree = ""; }; + E4B423860CBFB73C00AF2ECE /* JSProgressEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSProgressEvent.h; sourceTree = ""; }; + E4BBED0C14F4025D003F0B98 /* PropertySetCSSStyleDeclaration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PropertySetCSSStyleDeclaration.cpp; sourceTree = ""; }; + E4BBED0D14F4025D003F0B98 /* PropertySetCSSStyleDeclaration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PropertySetCSSStyleDeclaration.h; sourceTree = ""; }; + E4BBED4A14FCDBA1003F0B98 /* StyleRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleRule.cpp; sourceTree = ""; }; + E4BBED4B14FCDBA1003F0B98 /* StyleRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleRule.h; sourceTree = ""; }; + E4C178950EE6903800824D69 /* CSSSelectorList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSSelectorList.cpp; sourceTree = ""; }; + E4C178960EE6903800824D69 /* CSSSelectorList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSSelectorList.h; sourceTree = ""; }; + E4C279560CF9741900E97B98 /* RenderMedia.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMedia.cpp; sourceTree = ""; }; + E4C279570CF9741900E97B98 /* RenderMedia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMedia.h; sourceTree = ""; }; + E4D687760ED7AE3D006EA978 /* PurgeableBufferMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PurgeableBufferMac.cpp; sourceTree = ""; }; + E4D687780ED7AE4F006EA978 /* PurgeableBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PurgeableBuffer.h; sourceTree = ""; }; + E4F9EEF0156D84C400D23E7E /* StyleSheetContents.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleSheetContents.cpp; sourceTree = ""; }; + E4F9EEF1156D84C400D23E7E /* StyleSheetContents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleSheetContents.h; sourceTree = ""; }; + E51A81DE17298D7700BFCA61 /* JSPerformance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPerformance.cpp; sourceTree = ""; }; + E526AF3E1727F8F200E41781 /* Performance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Performance.cpp; sourceTree = ""; }; + E55F4979151B888000BB67DB /* LengthFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LengthFunctions.cpp; sourceTree = ""; }; + E5BA7D62151437CA00FE1E3F /* LengthFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LengthFunctions.h; sourceTree = ""; }; + EB081CD81696084400553730 /* TypeConversions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TypeConversions.h; sourceTree = ""; }; + EB081CD91696084400553730 /* TypeConversions.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = TypeConversions.idl; sourceTree = ""; }; + EBF5121A1696496C0056BD25 /* JSTypeConversions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTypeConversions.cpp; sourceTree = ""; }; + EBF5121B1696496C0056BD25 /* JSTypeConversions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTypeConversions.h; sourceTree = ""; }; + ED2BA83B09A24B91006C0AC4 /* DocumentMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentMarker.h; sourceTree = ""; }; + ED501DC50B249F2900AE18D9 /* EditorMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = EditorMac.mm; path = mac/EditorMac.mm; sourceTree = ""; }; + EDE3A4FF0C7A430600956A37 /* ColorMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColorMac.h; sourceTree = ""; }; + EDEC98020AED7E170059137F /* WebCorePrefix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebCorePrefix.h; sourceTree = ""; tabWidth = 4; usesTabs = 0; }; + F12171F316A8BC63000053CA /* WebVTTElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebVTTElement.cpp; sourceTree = ""; }; + F12171F416A8BC63000053CA /* WebVTTElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebVTTElement.h; sourceTree = ""; }; + F31639691329481A00A649CB /* InjectedScriptManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedScriptManager.cpp; sourceTree = ""; }; + F316396A1329481A00A649CB /* InjectedScriptManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedScriptManager.h; sourceTree = ""; }; + F316396D1329487600A649CB /* JSInjectedScriptManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInjectedScriptManager.cpp; sourceTree = ""; }; + F325A40814EE36FA007324E2 /* InspectorCounters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorCounters.cpp; sourceTree = ""; }; + F325A40914EE36FA007324E2 /* InspectorCounters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorCounters.h; sourceTree = ""; }; + F3335BF612E07DC300D33011 /* InspectorConsoleAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorConsoleAgent.cpp; sourceTree = ""; }; + F3335BF712E07DC300D33011 /* InspectorConsoleAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorConsoleAgent.h; sourceTree = ""; }; + F33F0281120947F200E5743A /* ScriptProfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptProfile.cpp; sourceTree = ""; }; + F33F053B120B0DA500E5743A /* InspectorDebuggerAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorDebuggerAgent.cpp; sourceTree = ""; }; + F33F053C120B0DA500E5743A /* InspectorDebuggerAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDebuggerAgent.h; sourceTree = ""; }; + F344C7121125B82C00F26EEE /* InspectorFrontendClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorFrontendClient.h; sourceTree = ""; }; + F344C75211294D9D00F26EEE /* InspectorFrontendClientLocal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorFrontendClientLocal.h; sourceTree = ""; }; + F344C75711294FF600F26EEE /* InspectorFrontendClientLocal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorFrontendClientLocal.cpp; sourceTree = ""; }; + F34742DA134362F000531BC2 /* PageDebuggerAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageDebuggerAgent.cpp; sourceTree = ""; }; + F34742DB134362F000531BC2 /* PageDebuggerAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageDebuggerAgent.h; sourceTree = ""; }; + F34742DE1343631F00531BC2 /* WorkerDebuggerAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerDebuggerAgent.cpp; sourceTree = ""; }; + F34742DF1343631F00531BC2 /* WorkerDebuggerAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerDebuggerAgent.h; sourceTree = ""; }; + F34742E21343633C00531BC2 /* PageScriptDebugServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageScriptDebugServer.cpp; sourceTree = ""; }; + F34742E31343633C00531BC2 /* PageScriptDebugServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageScriptDebugServer.h; sourceTree = ""; }; + F34742E61343635000531BC2 /* WorkerScriptDebugServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerScriptDebugServer.cpp; sourceTree = ""; }; + F34742E71343635000531BC2 /* WorkerScriptDebugServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerScriptDebugServer.h; sourceTree = ""; }; + F350B73413F1377D00880C43 /* InstrumentingAgents.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InstrumentingAgents.cpp; sourceTree = ""; }; + F35AE5AB14925F5B004D5776 /* BindingVisitors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BindingVisitors.h; sourceTree = ""; }; + F3644AFD1119805900E0D537 /* InjectedScript.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedScript.cpp; sourceTree = ""; }; + F3644AFE1119805900E0D537 /* InjectedScript.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedScript.h; sourceTree = ""; }; + F36E07A21358A8BE00AACBC9 /* WorkerInspectorController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerInspectorController.cpp; sourceTree = ""; }; + F36E07A31358A8BE00AACBC9 /* WorkerInspectorController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerInspectorController.h; sourceTree = ""; }; + F375CC061150D300008DDB81 /* InspectorWorkerResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorWorkerResource.h; sourceTree = ""; }; + F3810C191365A49600ED6E33 /* InspectorWorkerAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorWorkerAgent.cpp; sourceTree = ""; }; + F3810C1A1365A49600ED6E33 /* InspectorWorkerAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorWorkerAgent.h; sourceTree = ""; }; + F382088A147D35F90010BC06 /* PageConsoleAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageConsoleAgent.cpp; sourceTree = ""; }; + F382088B147D35F90010BC06 /* PageConsoleAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageConsoleAgent.h; sourceTree = ""; }; + F382088C147D35F90010BC06 /* PageRuntimeAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageRuntimeAgent.cpp; sourceTree = ""; }; + F382088D147D35F90010BC06 /* PageRuntimeAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageRuntimeAgent.h; sourceTree = ""; }; + F382088E147D35F90010BC06 /* WorkerConsoleAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerConsoleAgent.cpp; sourceTree = ""; }; + F382088F147D35F90010BC06 /* WorkerConsoleAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerConsoleAgent.h; sourceTree = ""; }; + F3820890147D35F90010BC06 /* WorkerRuntimeAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerRuntimeAgent.cpp; sourceTree = ""; }; + F3820891147D35F90010BC06 /* WorkerRuntimeAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerRuntimeAgent.h; sourceTree = ""; }; + F392249A126F11AE00A926D9 /* ScriptCallStackFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptCallStackFactory.cpp; sourceTree = ""; }; + F392249B126F11AE00A926D9 /* ScriptCallStackFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptCallStackFactory.h; sourceTree = ""; }; + F39BE95912673BF400E0A674 /* ScriptArguments.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptArguments.cpp; sourceTree = ""; }; + F39BE95A12673BF400E0A674 /* ScriptArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptArguments.h; sourceTree = ""; }; + F3ABFE0B130E9DA000E7F7D1 /* InstrumentingAgents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InstrumentingAgents.h; sourceTree = ""; }; + F3D461461161D53200CA0D09 /* JSErrorHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSErrorHandler.cpp; sourceTree = ""; }; + F3D461471161D53200CA0D09 /* JSErrorHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSErrorHandler.h; sourceTree = ""; }; + F3D4C47612E07663003DA150 /* InspectorDOMDebuggerAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorDOMDebuggerAgent.cpp; sourceTree = ""; }; + F3D4C47712E07663003DA150 /* InspectorDOMDebuggerAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDOMDebuggerAgent.h; sourceTree = ""; }; + F3F5CF1012ED81A80084C569 /* InspectorConsoleInstrumentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorConsoleInstrumentation.h; sourceTree = ""; }; + F3F5CF1212ED81B30084C569 /* InspectorDatabaseInstrumentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDatabaseInstrumentation.h; sourceTree = ""; }; + F3F68DA5143CAC5A00C2F887 /* InspectorStateClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorStateClient.h; sourceTree = ""; }; + F4EAF4AD10C742B1009100D3 /* OpenTypeSanitizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenTypeSanitizer.h; path = opentype/OpenTypeSanitizer.h; sourceTree = ""; }; + F50664F5157F52DC00AC226F /* FormController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FormController.cpp; sourceTree = ""; }; + F50664F6157F52DC00AC226F /* FormController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormController.h; sourceTree = ""; }; + F513A3E915FF4841001526DB /* ValidationMessageClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValidationMessageClient.h; sourceTree = ""; }; + F523D23B02DE4396018635CA /* HTMLDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLDocument.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F523D23C02DE4396018635CA /* HTMLDocument.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = HTMLDocument.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F523D23E02DE4396018635CA /* HTMLElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLElement.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F523D23F02DE4396018635CA /* HTMLElement.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = HTMLElement.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F523D27802DE43D7018635CA /* TextResourceDecoder.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextResourceDecoder.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F523D27902DE43D7018635CA /* TextResourceDecoder.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = TextResourceDecoder.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F523D30302DE4476018635CA /* Range.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Range.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F523D30402DE4476018635CA /* Range.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Range.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F52AD5E31534245F0059FBE6 /* EmptyClients.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EmptyClients.cpp; sourceTree = ""; }; + F544F78615CFB2A800AF33A8 /* PlatformLocale.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformLocale.cpp; sourceTree = ""; }; + F544F78715CFB2A800AF33A8 /* PlatformLocale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformLocale.h; sourceTree = ""; }; + F55B3D791251F12D003EF269 /* BaseTextInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BaseTextInputType.cpp; sourceTree = ""; }; + F55B3D7A1251F12D003EF269 /* BaseTextInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseTextInputType.h; sourceTree = ""; }; + F55B3D7B1251F12D003EF269 /* ButtonInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ButtonInputType.cpp; sourceTree = ""; }; + F55B3D7C1251F12D003EF269 /* ButtonInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ButtonInputType.h; sourceTree = ""; }; + F55B3D7D1251F12D003EF269 /* CheckboxInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CheckboxInputType.cpp; sourceTree = ""; }; + F55B3D7E1251F12D003EF269 /* CheckboxInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CheckboxInputType.h; sourceTree = ""; }; + F55B3D801251F12D003EF269 /* ColorInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColorInputType.h; sourceTree = ""; }; + F55B3D811251F12D003EF269 /* DateInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DateInputType.cpp; sourceTree = ""; }; + F55B3D821251F12D003EF269 /* DateInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateInputType.h; sourceTree = ""; }; + F55B3D831251F12D003EF269 /* DateTimeInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DateTimeInputType.cpp; sourceTree = ""; }; + F55B3D841251F12D003EF269 /* DateTimeInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateTimeInputType.h; sourceTree = ""; }; + F55B3D851251F12D003EF269 /* DateTimeLocalInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DateTimeLocalInputType.cpp; sourceTree = ""; }; + F55B3D861251F12D003EF269 /* DateTimeLocalInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateTimeLocalInputType.h; sourceTree = ""; }; + F55B3D871251F12D003EF269 /* EmailInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EmailInputType.cpp; sourceTree = ""; }; + F55B3D881251F12D003EF269 /* EmailInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EmailInputType.h; sourceTree = ""; }; + F55B3D891251F12D003EF269 /* FileInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileInputType.cpp; sourceTree = ""; }; + F55B3D8A1251F12D003EF269 /* FileInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileInputType.h; sourceTree = ""; }; + F55B3D8B1251F12D003EF269 /* HiddenInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HiddenInputType.cpp; sourceTree = ""; }; + F55B3D8C1251F12D003EF269 /* HiddenInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HiddenInputType.h; sourceTree = ""; }; + F55B3D8D1251F12D003EF269 /* ImageInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageInputType.cpp; sourceTree = ""; }; + F55B3D8E1251F12D003EF269 /* ImageInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageInputType.h; sourceTree = ""; }; + F55B3D911251F12D003EF269 /* MonthInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MonthInputType.cpp; sourceTree = ""; }; + F55B3D921251F12D003EF269 /* MonthInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MonthInputType.h; sourceTree = ""; }; + F55B3D931251F12D003EF269 /* NumberInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NumberInputType.cpp; sourceTree = ""; }; + F55B3D941251F12D003EF269 /* NumberInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumberInputType.h; sourceTree = ""; }; + F55B3D951251F12D003EF269 /* PasswordInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PasswordInputType.cpp; sourceTree = ""; }; + F55B3D961251F12D003EF269 /* PasswordInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PasswordInputType.h; sourceTree = ""; }; + F55B3D971251F12D003EF269 /* RadioInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RadioInputType.cpp; sourceTree = ""; }; + F55B3D981251F12D003EF269 /* RadioInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RadioInputType.h; sourceTree = ""; }; + F55B3D991251F12D003EF269 /* RangeInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RangeInputType.cpp; sourceTree = ""; }; + F55B3D9A1251F12D003EF269 /* RangeInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RangeInputType.h; sourceTree = ""; }; + F55B3D9B1251F12D003EF269 /* ResetInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResetInputType.cpp; sourceTree = ""; }; + F55B3D9C1251F12D003EF269 /* ResetInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResetInputType.h; sourceTree = ""; }; + F55B3D9D1251F12D003EF269 /* SearchInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SearchInputType.cpp; sourceTree = ""; }; + F55B3D9E1251F12D003EF269 /* SearchInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchInputType.h; sourceTree = ""; }; + F55B3D9F1251F12D003EF269 /* SubmitInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SubmitInputType.cpp; sourceTree = ""; }; + F55B3DA01251F12D003EF269 /* SubmitInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubmitInputType.h; sourceTree = ""; }; + F55B3DA11251F12D003EF269 /* TelephoneInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TelephoneInputType.cpp; sourceTree = ""; }; + F55B3DA21251F12D003EF269 /* TelephoneInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TelephoneInputType.h; sourceTree = ""; }; + F55B3DA31251F12D003EF269 /* TextFieldInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextFieldInputType.cpp; sourceTree = ""; }; + F55B3DA41251F12D003EF269 /* TextFieldInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextFieldInputType.h; sourceTree = ""; }; + F55B3DA51251F12D003EF269 /* TextInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextInputType.cpp; sourceTree = ""; }; + F55B3DA61251F12D003EF269 /* TextInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextInputType.h; sourceTree = ""; }; + F55B3DA71251F12D003EF269 /* TimeInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TimeInputType.cpp; sourceTree = ""; }; + F55B3DA81251F12D003EF269 /* TimeInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimeInputType.h; sourceTree = ""; }; + F55B3DA91251F12D003EF269 /* URLInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = URLInputType.cpp; sourceTree = ""; }; + F55B3DAA1251F12D003EF269 /* URLInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = URLInputType.h; sourceTree = ""; }; + F55B3DAB1251F12D003EF269 /* WeekInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WeekInputType.cpp; sourceTree = ""; }; + F55B3DAC1251F12D003EF269 /* WeekInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeekInputType.h; sourceTree = ""; }; + F58784F002DE375901EA4122 /* CursorMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CursorMac.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F587854C02DE375901EA4122 /* WebCoreFrameView.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreFrameView.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F587863A02DE3A1401EA4122 /* Settings.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Settings.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F587864902DE3A9A01EA4122 /* CachePolicy.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = CachePolicy.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F587866202DE3B1101EA4122 /* SSLKeyGenerator.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = SSLKeyGenerator.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F587868402DE3B8601EA4122 /* Cursor.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Cursor.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5973DDE15CFB2030027F804 /* LocaleMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocaleMac.h; sourceTree = ""; }; + F5973DDF15CFB2030027F804 /* LocaleMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LocaleMac.mm; sourceTree = ""; }; + F59C95FD1255B23F000623C0 /* BaseDateAndTimeInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BaseDateAndTimeInputType.cpp; sourceTree = ""; }; + F59C95FE1255B23F000623C0 /* BaseDateAndTimeInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseDateAndTimeInputType.h; sourceTree = ""; }; + F5A154251279534D00D0B0C0 /* ValidationMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ValidationMessage.cpp; sourceTree = ""; }; + F5A154261279534D00D0B0C0 /* ValidationMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValidationMessage.h; sourceTree = ""; }; + F5C041D70FFCA7CE00839D4A /* HTMLDataListElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLDataListElement.cpp; sourceTree = ""; }; + F5C041D80FFCA7CE00839D4A /* HTMLDataListElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLDataListElement.h; sourceTree = ""; }; + F5C041D90FFCA7CE00839D4A /* HTMLDataListElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLDataListElement.idl; sourceTree = ""; }; + F5C041DE0FFCA96D00839D4A /* DOMHTMLDataListElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLDataListElement.h; sourceTree = ""; }; + F5C041DF0FFCA96D00839D4A /* DOMHTMLDataListElement.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLDataListElement.mm; sourceTree = ""; }; + F5C041E00FFCA96D00839D4A /* DOMHTMLDataListElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLDataListElementInternal.h; sourceTree = ""; }; + F5C041E10FFCA96D00839D4A /* JSHTMLDataListElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLDataListElement.cpp; sourceTree = ""; }; + F5C041E20FFCA96D00839D4A /* JSHTMLDataListElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLDataListElement.h; sourceTree = ""; }; + F5C2869302846DCD018635CA /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; + F5C2869402846DCD018635CA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; + F5C2869502846DCD018635CA /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + F5E0C6591643C42C00D6CB69 /* BaseChooserOnlyDateAndTimeInputType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BaseChooserOnlyDateAndTimeInputType.cpp; sourceTree = ""; }; + F5E0C65A1643C42C00D6CB69 /* BaseChooserOnlyDateAndTimeInputType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseChooserOnlyDateAndTimeInputType.h; sourceTree = ""; }; + F7A034C3126BF6BE007DC19E /* FontOrientation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontOrientation.h; sourceTree = ""; }; + F8216299029F4FB501000131 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = JavaScriptCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F916C48B0DB510F80076CD83 /* JSXMLHttpRequestProgressEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSXMLHttpRequestProgressEvent.cpp; sourceTree = ""; }; + F916C48C0DB510F80076CD83 /* JSXMLHttpRequestProgressEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSXMLHttpRequestProgressEvent.h; sourceTree = ""; }; + F98FFF4211A2676200F548E8 /* CSSOMUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSOMUtils.cpp; sourceTree = ""; }; + F98FFF4311A2676200F548E8 /* CSSOMUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSOMUtils.h; sourceTree = ""; }; + F9F0ED770DB50CA200D16DB9 /* XMLHttpRequestProgressEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XMLHttpRequestProgressEvent.h; sourceTree = ""; }; + F9F0ED780DB50CA200D16DB9 /* XMLHttpRequestProgressEvent.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = XMLHttpRequestProgressEvent.idl; sourceTree = ""; }; + FA654A631108ABB7002615E0 /* mathml.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = mathml.css; sourceTree = ""; }; + FA654A671108ABE2002615E0 /* mathattrs.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mathattrs.in; sourceTree = ""; }; + FA654A691108ABED002615E0 /* MathMLTextElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MathMLTextElement.cpp; sourceTree = ""; }; + FA654A6A1108ABED002615E0 /* MathMLTextElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathMLTextElement.h; sourceTree = ""; }; + FA6E466FCD0418A9966A5B60 /* DNSResolveQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DNSResolveQueue.h; sourceTree = ""; }; + FABE72ED1059C1EB00D999DD /* MathMLElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MathMLElement.cpp; sourceTree = ""; }; + FABE72EE1059C1EB00D999DD /* MathMLElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathMLElement.h; sourceTree = ""; }; + FABE72EF1059C1EB00D999DD /* MathMLInlineContainerElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MathMLInlineContainerElement.cpp; sourceTree = ""; }; + FABE72F01059C1EB00D999DD /* MathMLInlineContainerElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathMLInlineContainerElement.h; sourceTree = ""; }; + FABE72F11059C1EB00D999DD /* MathMLMathElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MathMLMathElement.cpp; sourceTree = ""; }; + FABE72F21059C1EB00D999DD /* MathMLMathElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathMLMathElement.h; sourceTree = ""; }; + FABE72F31059C1EB00D999DD /* mathtags.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mathtags.in; sourceTree = ""; }; + FABE72FB1059C21100D999DD /* MathMLElementFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MathMLElementFactory.cpp; sourceTree = ""; }; + FABE72FC1059C21100D999DD /* MathMLNames.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MathMLNames.cpp; sourceTree = ""; }; + FB0B75EE1723428500F05D2A /* WebKitCSSMatFunctionValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitCSSMatFunctionValue.cpp; sourceTree = ""; }; + FB0B75EF1723428500F05D2A /* WebKitCSSMatFunctionValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitCSSMatFunctionValue.h; sourceTree = ""; }; + FB1A66D917225A6600BAA7AF /* CustomFilterColorParameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomFilterColorParameter.h; path = filters/CustomFilterColorParameter.h; sourceTree = ""; }; + FB2C15C2165D64900039C9F8 /* CachedSVGDocumentReference.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedSVGDocumentReference.h; sourceTree = ""; }; + FB3056C1169E5DAC0096A232 /* CSSGroupingRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSGroupingRule.h; sourceTree = ""; }; + FB484F4A171F821E00040755 /* TransformFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TransformFunctions.cpp; sourceTree = ""; }; + FB484F4B171F821E00040755 /* TransformFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TransformFunctions.h; sourceTree = ""; }; + FB49C39C16784947007FFB5D /* CSSHostRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSHostRule.h; sourceTree = ""; }; + FB49C39E16784954007FFB5D /* CSSHostRule.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CSSHostRule.idl; sourceTree = ""; }; + FB78AD2C151BF5D200FE54D3 /* CSSParserMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSParserMode.h; sourceTree = ""; }; + FB91391E16AE4B0B001FE682 /* CanvasPathMethods.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CanvasPathMethods.cpp; path = canvas/CanvasPathMethods.cpp; sourceTree = ""; }; + FB91391F16AE4B0B001FE682 /* CanvasPathMethods.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CanvasPathMethods.h; path = canvas/CanvasPathMethods.h; sourceTree = ""; }; + FB91392016AE4B0B001FE682 /* DOMPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DOMPath.h; path = canvas/DOMPath.h; sourceTree = ""; }; + FB91392116AE4B0B001FE682 /* DOMPath.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DOMPath.idl; path = canvas/DOMPath.idl; sourceTree = ""; }; + FB91392816AE4FC0001FE682 /* JSDOMPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMPath.h; sourceTree = ""; }; + FB91392916AE4FC0001FE682 /* JSDOMPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMPath.cpp; sourceTree = ""; }; + FB92DF4915FED08700994433 /* ClipPathOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClipPathOperation.h; sourceTree = ""; }; + FBC220DE1237FBEB00BCF788 /* GraphicsContext3DOpenGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsContext3DOpenGL.cpp; sourceTree = ""; }; + FBD6AF8215EF21A3008B7110 /* BasicShapes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BasicShapes.cpp; path = style/BasicShapes.cpp; sourceTree = ""; }; + FBD6AF8315EF21A3008B7110 /* BasicShapes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BasicShapes.h; path = style/BasicShapes.h; sourceTree = ""; }; + FBD6AF8415EF21D4008B7110 /* BasicShapeFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BasicShapeFunctions.cpp; sourceTree = ""; }; + FBD6AF8515EF21D4008B7110 /* BasicShapeFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BasicShapeFunctions.h; sourceTree = ""; }; + FBD6AF8615EF21D4008B7110 /* CSSBasicShapes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSBasicShapes.cpp; sourceTree = ""; }; + FBD6AF8715EF21D4008B7110 /* CSSBasicShapes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSBasicShapes.h; sourceTree = ""; }; + FBDB619A16D6032A00BB3394 /* ElementRuleCollector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ElementRuleCollector.cpp; sourceTree = ""; }; + FBDB619C16D6034600BB3394 /* PageRuleCollector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageRuleCollector.cpp; sourceTree = ""; }; + FBDB619E16D6036500BB3394 /* ElementRuleCollector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ElementRuleCollector.h; sourceTree = ""; }; + FBDB61A016D6037E00BB3394 /* PageRuleCollector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageRuleCollector.h; sourceTree = ""; }; + FBF89044169E9F1F0052D86E /* CSSGroupingRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSGroupingRule.cpp; sourceTree = ""; }; + FC63BDB1167AABAC00F9380F /* CSSSupportsRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSSupportsRule.h; sourceTree = ""; }; + FC63BDB2167AABAC00F9380F /* CSSSupportsRule.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CSSSupportsRule.idl; sourceTree = ""; }; + FC84802E167AB444008CD100 /* JSCSSSupportsRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCSSSupportsRule.h; sourceTree = ""; }; + FC9A0F72164094CF003D6B8D /* DOMWindowCSS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWindowCSS.h; sourceTree = ""; }; + FC9A0F73164094CF003D6B8D /* DOMWindowCSS.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMWindowCSS.idl; sourceTree = ""; }; + FC9E0E4B16419C1E00392BE3 /* JSDOMWindowCSS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMWindowCSS.h; sourceTree = ""; }; + FCD8832816A49F8200962227 /* DOMCSSSupportsRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMCSSSupportsRule.h; sourceTree = ""; }; + FCD8832916A49F8200962227 /* DOMCSSSupportsRule.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMCSSSupportsRule.mm; sourceTree = ""; }; + FCEBBAAA16A4967A00FA20A6 /* DOMCSSSupportsRuleInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMCSSSupportsRuleInternal.h; sourceTree = ""; }; + FCEBCD711623A7910029965E /* CSSGrammar.y.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.yacc; path = CSSGrammar.y.in; sourceTree = ""; }; + FCEBCD721623A7910029965E /* CSSGrammar.y.includes */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.yacc; path = CSSGrammar.y.includes; sourceTree = ""; }; + FD00D7A214A3F61900734011 /* SincResampler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SincResampler.cpp; sourceTree = ""; }; + FD00D7A314A3F61900734011 /* SincResampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SincResampler.h; sourceTree = ""; }; + FD06DFA3134A4DEF006F5D7D /* DefaultAudioDestinationNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DefaultAudioDestinationNode.cpp; sourceTree = ""; }; + FD06DFA4134A4DEF006F5D7D /* DefaultAudioDestinationNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DefaultAudioDestinationNode.h; sourceTree = ""; }; + FD08A87A175D3926002CD360 /* PolygonShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PolygonShape.cpp; sourceTree = ""; }; + FD08A87B175D3926002CD360 /* PolygonShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PolygonShape.h; sourceTree = ""; }; + FD08A87C175D3926002CD360 /* RectangleShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RectangleShape.cpp; sourceTree = ""; }; + FD08A87D175D3926002CD360 /* RectangleShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RectangleShape.h; sourceTree = ""; }; + FD08A87E175D3926002CD360 /* Shape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Shape.cpp; sourceTree = ""; }; + FD08A87F175D3926002CD360 /* Shape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Shape.h; sourceTree = ""; }; + FD08A880175D3926002CD360 /* ShapeInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShapeInfo.cpp; sourceTree = ""; }; + FD08A881175D3926002CD360 /* ShapeInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShapeInfo.h; sourceTree = ""; }; + FD08A882175D3926002CD360 /* ShapeInsideInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShapeInsideInfo.cpp; sourceTree = ""; }; + FD08A883175D3926002CD360 /* ShapeInsideInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShapeInsideInfo.h; sourceTree = ""; }; + FD08A884175D3926002CD360 /* ShapeInterval.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShapeInterval.cpp; sourceTree = ""; }; + FD08A885175D3926002CD360 /* ShapeInterval.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShapeInterval.h; sourceTree = ""; }; + FD08A886175D3926002CD360 /* ShapeOutsideInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShapeOutsideInfo.cpp; sourceTree = ""; }; + FD08A887175D3926002CD360 /* ShapeOutsideInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShapeOutsideInfo.h; sourceTree = ""; }; + FD1660A413787C6D001FFA7B /* DenormalDisabler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DenormalDisabler.h; sourceTree = ""; }; + FD1AF14E1656F12100C6D4F7 /* ShapeValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ShapeValue.h; path = style/ShapeValue.h; sourceTree = ""; }; + FD1762DD176686D900D836A8 /* UpSampler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UpSampler.cpp; sourceTree = ""; }; + FD1762DE176686D900D836A8 /* UpSampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UpSampler.h; sourceTree = ""; }; + FD1762E1176686EA00D836A8 /* DownSampler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DownSampler.cpp; sourceTree = ""; }; + FD1762E2176686EA00D836A8 /* DownSampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DownSampler.h; sourceTree = ""; }; + FD23A12313F5FA5900F67001 /* JSMediaElementAudioSourceNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaElementAudioSourceNode.cpp; sourceTree = ""; }; + FD23A12413F5FA5900F67001 /* JSMediaElementAudioSourceNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMediaElementAudioSourceNode.h; sourceTree = ""; }; + FD2DBF0E12B048A300ED98C6 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = /System/Library/Frameworks/Accelerate.framework; sourceTree = ""; }; + FD2DBF0F12B048A300ED98C6 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; + FD2DBF1012B048A300ED98C6 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = ""; }; + FD2DBF1112B048A300ED98C6 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; + FD315FAC12B0267500C1A359 /* AudioBasicProcessorNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioBasicProcessorNode.cpp; sourceTree = ""; }; + FD315FAD12B0267500C1A359 /* AudioBasicProcessorNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioBasicProcessorNode.h; sourceTree = ""; }; + FD315FAE12B0267500C1A359 /* AudioBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioBuffer.cpp; sourceTree = ""; }; + FD315FAF12B0267500C1A359 /* AudioBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioBuffer.h; sourceTree = ""; }; + FD315FB012B0267500C1A359 /* AudioBuffer.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioBuffer.idl; sourceTree = ""; }; + FD315FB112B0267500C1A359 /* AudioBufferSourceNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioBufferSourceNode.cpp; sourceTree = ""; }; + FD315FB212B0267500C1A359 /* AudioBufferSourceNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioBufferSourceNode.h; sourceTree = ""; }; + FD315FB312B0267500C1A359 /* AudioBufferSourceNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioBufferSourceNode.idl; sourceTree = ""; }; + FD315FB412B0267500C1A359 /* ChannelMergerNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ChannelMergerNode.cpp; sourceTree = ""; }; + FD315FB512B0267500C1A359 /* ChannelMergerNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChannelMergerNode.h; sourceTree = ""; }; + FD315FB612B0267500C1A359 /* ChannelMergerNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ChannelMergerNode.idl; sourceTree = ""; }; + FD315FB712B0267500C1A359 /* ChannelSplitterNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ChannelSplitterNode.cpp; sourceTree = ""; }; + FD315FB812B0267500C1A359 /* ChannelSplitterNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChannelSplitterNode.h; sourceTree = ""; }; + FD315FB912B0267500C1A359 /* ChannelSplitterNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ChannelSplitterNode.idl; sourceTree = ""; }; + FD315FBA12B0267500C1A359 /* AudioContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioContext.cpp; sourceTree = ""; }; + FD315FBB12B0267500C1A359 /* AudioContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioContext.h; sourceTree = ""; }; + FD315FBC12B0267500C1A359 /* AudioContext.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioContext.idl; sourceTree = ""; }; + FD315FBD12B0267500C1A359 /* AudioDestinationNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioDestinationNode.cpp; sourceTree = ""; }; + FD315FBE12B0267500C1A359 /* AudioDestinationNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioDestinationNode.h; sourceTree = ""; }; + FD315FBF12B0267500C1A359 /* AudioDestinationNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioDestinationNode.idl; sourceTree = ""; }; + FD315FC212B0267500C1A359 /* GainNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GainNode.cpp; sourceTree = ""; }; + FD315FC312B0267500C1A359 /* GainNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GainNode.h; sourceTree = ""; }; + FD315FC412B0267500C1A359 /* GainNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GainNode.idl; sourceTree = ""; }; + FD315FC512B0267500C1A359 /* AudioListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioListener.cpp; sourceTree = ""; }; + FD315FC612B0267500C1A359 /* AudioListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioListener.h; sourceTree = ""; }; + FD315FC712B0267500C1A359 /* AudioListener.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioListener.idl; sourceTree = ""; }; + FD315FC812B0267500C1A359 /* AudioNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioNode.cpp; sourceTree = ""; }; + FD315FC912B0267500C1A359 /* AudioNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioNode.h; sourceTree = ""; }; + FD315FCA12B0267500C1A359 /* AudioNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioNode.idl; sourceTree = ""; }; + FD315FCB12B0267500C1A359 /* AudioNodeInput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioNodeInput.cpp; sourceTree = ""; }; + FD315FCC12B0267500C1A359 /* AudioNodeInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioNodeInput.h; sourceTree = ""; }; + FD315FCD12B0267500C1A359 /* AudioNodeOutput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioNodeOutput.cpp; sourceTree = ""; }; + FD315FCE12B0267500C1A359 /* AudioNodeOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioNodeOutput.h; sourceTree = ""; }; + FD315FCF12B0267500C1A359 /* PannerNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PannerNode.cpp; sourceTree = ""; }; + FD315FD012B0267500C1A359 /* PannerNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PannerNode.h; sourceTree = ""; }; + FD315FD112B0267500C1A359 /* PannerNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PannerNode.idl; sourceTree = ""; }; + FD315FD212B0267500C1A359 /* AudioParam.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioParam.cpp; sourceTree = ""; }; + FD315FD312B0267500C1A359 /* AudioParam.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioParam.h; sourceTree = ""; }; + FD315FD412B0267500C1A359 /* AudioParam.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioParam.idl; sourceTree = ""; }; + FD315FD512B0267600C1A359 /* AudioProcessingEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioProcessingEvent.cpp; sourceTree = ""; }; + FD315FD612B0267600C1A359 /* AudioProcessingEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioProcessingEvent.h; sourceTree = ""; }; + FD315FD712B0267600C1A359 /* AudioProcessingEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioProcessingEvent.idl; sourceTree = ""; }; + FD315FDA12B0267600C1A359 /* BiquadDSPKernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BiquadDSPKernel.cpp; sourceTree = ""; }; + FD315FDB12B0267600C1A359 /* BiquadDSPKernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BiquadDSPKernel.h; sourceTree = ""; }; + FD315FDC12B0267600C1A359 /* BiquadProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BiquadProcessor.cpp; sourceTree = ""; }; + FD315FDD12B0267600C1A359 /* BiquadProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BiquadProcessor.h; sourceTree = ""; }; + FD315FDE12B0267600C1A359 /* ConvolverNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConvolverNode.cpp; sourceTree = ""; }; + FD315FDF12B0267600C1A359 /* ConvolverNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConvolverNode.h; sourceTree = ""; }; + FD315FE012B0267600C1A359 /* ConvolverNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ConvolverNode.idl; sourceTree = ""; }; + FD315FE112B0267600C1A359 /* DelayDSPKernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DelayDSPKernel.cpp; sourceTree = ""; }; + FD315FE212B0267600C1A359 /* DelayDSPKernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DelayDSPKernel.h; sourceTree = ""; }; + FD315FE312B0267600C1A359 /* DelayNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DelayNode.cpp; sourceTree = ""; }; + FD315FE412B0267600C1A359 /* DelayNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DelayNode.h; sourceTree = ""; }; + FD315FE512B0267600C1A359 /* DelayNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DelayNode.idl; sourceTree = ""; }; + FD315FE612B0267600C1A359 /* DelayProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DelayProcessor.cpp; sourceTree = ""; }; + FD315FE712B0267600C1A359 /* DelayProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DelayProcessor.h; sourceTree = ""; }; + FD315FEB12B0267600C1A359 /* ScriptProcessorNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptProcessorNode.cpp; sourceTree = ""; }; + FD315FEC12B0267600C1A359 /* ScriptProcessorNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptProcessorNode.h; sourceTree = ""; }; + FD315FED12B0267600C1A359 /* ScriptProcessorNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ScriptProcessorNode.idl; sourceTree = ""; }; + FD315FF112B0267600C1A359 /* RealtimeAnalyser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RealtimeAnalyser.cpp; sourceTree = ""; }; + FD315FF212B0267600C1A359 /* RealtimeAnalyser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RealtimeAnalyser.h; sourceTree = ""; }; + FD315FF312B0267600C1A359 /* AnalyserNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AnalyserNode.cpp; sourceTree = ""; }; + FD315FF412B0267600C1A359 /* AnalyserNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnalyserNode.h; sourceTree = ""; }; + FD315FF512B0267600C1A359 /* AnalyserNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AnalyserNode.idl; sourceTree = ""; }; + FD31604412B026F700C1A359 /* AudioArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioArray.h; sourceTree = ""; }; + FD31604512B026F700C1A359 /* AudioBus.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioBus.cpp; sourceTree = ""; }; + FD31604612B026F700C1A359 /* AudioBus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioBus.h; sourceTree = ""; }; + FD31604712B026F700C1A359 /* AudioChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioChannel.cpp; sourceTree = ""; }; + FD31604812B026F700C1A359 /* AudioChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioChannel.h; sourceTree = ""; }; + FD31604912B026F700C1A359 /* AudioDestination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioDestination.h; sourceTree = ""; }; + FD31604A12B026F700C1A359 /* AudioDSPKernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioDSPKernel.h; sourceTree = ""; }; + FD31604B12B026F700C1A359 /* AudioDSPKernelProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioDSPKernelProcessor.cpp; sourceTree = ""; }; + FD31604C12B026F700C1A359 /* AudioDSPKernelProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioDSPKernelProcessor.h; sourceTree = ""; }; + FD31604D12B026F700C1A359 /* AudioFileReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioFileReader.h; sourceTree = ""; }; + FD31604E12B026F700C1A359 /* AudioProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioProcessor.h; sourceTree = ""; }; + FD31604F12B026F700C1A359 /* AudioResampler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioResampler.cpp; sourceTree = ""; }; + FD31605012B026F700C1A359 /* AudioResampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioResampler.h; sourceTree = ""; }; + FD31605112B026F700C1A359 /* AudioResamplerKernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioResamplerKernel.cpp; sourceTree = ""; }; + FD31605212B026F700C1A359 /* AudioResamplerKernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioResamplerKernel.h; sourceTree = ""; }; + FD31605312B026F700C1A359 /* AudioSourceProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioSourceProvider.h; sourceTree = ""; }; + FD31605412B026F700C1A359 /* AudioUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioUtilities.cpp; sourceTree = ""; }; + FD31605512B026F700C1A359 /* AudioUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioUtilities.h; sourceTree = ""; }; + FD31605612B026F700C1A359 /* Biquad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Biquad.cpp; sourceTree = ""; }; + FD31605712B026F700C1A359 /* Biquad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Biquad.h; sourceTree = ""; }; + FD31605812B026F700C1A359 /* Cone.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Cone.cpp; sourceTree = ""; }; + FD31605912B026F700C1A359 /* Cone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Cone.h; sourceTree = ""; }; + FD31605A12B026F700C1A359 /* Distance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Distance.cpp; sourceTree = ""; }; + FD31605B12B026F700C1A359 /* Distance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Distance.h; sourceTree = ""; }; + FD31605C12B026F700C1A359 /* EqualPowerPanner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EqualPowerPanner.cpp; sourceTree = ""; }; + FD31605D12B026F700C1A359 /* EqualPowerPanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EqualPowerPanner.h; sourceTree = ""; }; + FD31605E12B026F700C1A359 /* FFTConvolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FFTConvolver.cpp; sourceTree = ""; }; + FD31605F12B026F700C1A359 /* FFTConvolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FFTConvolver.h; sourceTree = ""; }; + FD31606012B026F700C1A359 /* FFTFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FFTFrame.cpp; sourceTree = ""; }; + FD31606112B026F700C1A359 /* FFTFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FFTFrame.h; sourceTree = ""; }; + FD31606212B026F700C1A359 /* HRTFDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HRTFDatabase.cpp; sourceTree = ""; }; + FD31606312B026F700C1A359 /* HRTFDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HRTFDatabase.h; sourceTree = ""; }; + FD31606412B026F700C1A359 /* HRTFDatabaseLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HRTFDatabaseLoader.cpp; sourceTree = ""; }; + FD31606512B026F700C1A359 /* HRTFDatabaseLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HRTFDatabaseLoader.h; sourceTree = ""; }; + FD31606612B026F700C1A359 /* HRTFElevation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HRTFElevation.cpp; sourceTree = ""; }; + FD31606712B026F700C1A359 /* HRTFElevation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HRTFElevation.h; sourceTree = ""; }; + FD31606812B026F700C1A359 /* HRTFKernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HRTFKernel.cpp; sourceTree = ""; }; + FD31606912B026F700C1A359 /* HRTFKernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HRTFKernel.h; sourceTree = ""; }; + FD31606A12B026F700C1A359 /* HRTFPanner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HRTFPanner.cpp; sourceTree = ""; }; + FD31606B12B026F700C1A359 /* HRTFPanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HRTFPanner.h; sourceTree = ""; }; + FD31606C12B026F700C1A359 /* Panner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Panner.cpp; sourceTree = ""; }; + FD31606D12B026F700C1A359 /* Panner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Panner.h; sourceTree = ""; }; + FD31606E12B026F700C1A359 /* Reverb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Reverb.cpp; sourceTree = ""; }; + FD31606F12B026F700C1A359 /* Reverb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reverb.h; sourceTree = ""; }; + FD31607012B026F700C1A359 /* ReverbAccumulationBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReverbAccumulationBuffer.cpp; sourceTree = ""; }; + FD31607112B026F700C1A359 /* ReverbAccumulationBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReverbAccumulationBuffer.h; sourceTree = ""; }; + FD31607212B026F700C1A359 /* ReverbConvolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReverbConvolver.cpp; sourceTree = ""; }; + FD31607312B026F700C1A359 /* ReverbConvolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReverbConvolver.h; sourceTree = ""; }; + FD31607412B026F700C1A359 /* ReverbConvolverStage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReverbConvolverStage.cpp; sourceTree = ""; }; + FD31607512B026F700C1A359 /* ReverbConvolverStage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReverbConvolverStage.h; sourceTree = ""; }; + FD31607612B026F700C1A359 /* ReverbInputBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReverbInputBuffer.cpp; sourceTree = ""; }; + FD31607712B026F700C1A359 /* ReverbInputBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReverbInputBuffer.h; sourceTree = ""; }; + FD31607812B026F700C1A359 /* VectorMath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VectorMath.cpp; sourceTree = ""; }; + FD31607912B026F700C1A359 /* VectorMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VectorMath.h; sourceTree = ""; }; + FD3160B512B0272A00C1A359 /* AudioBusMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AudioBusMac.mm; sourceTree = ""; }; + FD3160B612B0272A00C1A359 /* AudioDestinationMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioDestinationMac.cpp; sourceTree = ""; }; + FD3160B712B0272A00C1A359 /* AudioDestinationMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioDestinationMac.h; sourceTree = ""; }; + FD3160B812B0272A00C1A359 /* AudioFileReaderMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioFileReaderMac.cpp; sourceTree = ""; }; + FD3160B912B0272A00C1A359 /* AudioFileReaderMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioFileReaderMac.h; sourceTree = ""; }; + FD3160BA12B0272A00C1A359 /* FFTFrameMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FFTFrameMac.cpp; sourceTree = ""; }; + FD35918D138DB22000E1EBEC /* AudioParamTimeline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioParamTimeline.cpp; sourceTree = ""; }; + FD35918E138DB22000E1EBEC /* AudioParamTimeline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioParamTimeline.h; sourceTree = ""; }; + FD537350137B651800008DCE /* ZeroPole.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ZeroPole.cpp; sourceTree = ""; }; + FD537351137B651800008DCE /* ZeroPole.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZeroPole.h; sourceTree = ""; }; + FD537354137B653B00008DCE /* DynamicsCompressorKernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicsCompressorKernel.cpp; sourceTree = ""; }; + FD537355137B653B00008DCE /* DynamicsCompressorKernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicsCompressorKernel.h; sourceTree = ""; }; + FD5686C713AC180200B69C68 /* AsyncAudioDecoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AsyncAudioDecoder.cpp; sourceTree = ""; }; + FD5686C813AC180200B69C68 /* AsyncAudioDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AsyncAudioDecoder.h; sourceTree = ""; }; + FD5686CB13AC181400B69C68 /* AudioBufferCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioBufferCallback.h; sourceTree = ""; }; + FD5686CD13AC183E00B69C68 /* AudioBufferCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioBufferCallback.idl; sourceTree = ""; }; + FD581FAB1520F91F003A7A75 /* OscillatorNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OscillatorNode.cpp; sourceTree = ""; }; + FD581FAC1520F91F003A7A75 /* OscillatorNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OscillatorNode.h; sourceTree = ""; }; + FD581FAD1520F91F003A7A75 /* OscillatorNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = OscillatorNode.idl; sourceTree = ""; }; + FD581FB11520F93B003A7A75 /* PeriodicWave.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PeriodicWave.cpp; sourceTree = ""; }; + FD581FB21520F93B003A7A75 /* PeriodicWave.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PeriodicWave.h; sourceTree = ""; }; + FD581FB31520F93B003A7A75 /* PeriodicWave.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PeriodicWave.idl; sourceTree = ""; }; + FD629EA1154B47160006D026 /* AudioBasicInspectorNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioBasicInspectorNode.h; sourceTree = ""; }; + FD629EA2154B47160006D026 /* AudioBasicInspectorNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioBasicInspectorNode.cpp; sourceTree = ""; }; + FD62F52D145898D80094B0ED /* AudioSourceProviderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioSourceProviderClient.h; sourceTree = ""; }; + FD671A74159BB07000197559 /* MediaStreamAudioSourceNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaStreamAudioSourceNode.cpp; sourceTree = ""; }; + FD671A75159BB07000197559 /* MediaStreamAudioSourceNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaStreamAudioSourceNode.h; sourceTree = ""; }; + FD671A76159BB07000197559 /* MediaStreamAudioSourceNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaStreamAudioSourceNode.idl; sourceTree = ""; }; + FD6ED2C1136B8E42003CF072 /* DynamicsCompressorNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicsCompressorNode.cpp; sourceTree = ""; }; + FD6ED2C2136B8E42003CF072 /* DynamicsCompressorNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicsCompressorNode.h; sourceTree = ""; }; + FD6ED2C5136B8E66003CF072 /* DynamicsCompressor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicsCompressor.cpp; sourceTree = ""; }; + FD6ED2C6136B8E66003CF072 /* DynamicsCompressor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicsCompressor.h; sourceTree = ""; }; + FD6ED2C9136B8E9D003CF072 /* DynamicsCompressorNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DynamicsCompressorNode.idl; sourceTree = ""; }; + FD6F252913F5EF0E0065165F /* MediaElementAudioSourceNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaElementAudioSourceNode.cpp; sourceTree = ""; }; + FD6F252A13F5EF0E0065165F /* MediaElementAudioSourceNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaElementAudioSourceNode.h; sourceTree = ""; }; + FD6F252B13F5EF0E0065165F /* MediaElementAudioSourceNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaElementAudioSourceNode.idl; sourceTree = ""; }; + FD7868B7136B999200D403DF /* JSDynamicsCompressorNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDynamicsCompressorNode.cpp; sourceTree = ""; }; + FD7868B8136B999200D403DF /* JSDynamicsCompressorNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDynamicsCompressorNode.h; sourceTree = ""; }; + FD7F298A13D4C0CB00AD9535 /* WaveShaperDSPKernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WaveShaperDSPKernel.cpp; sourceTree = ""; }; + FD7F298B13D4C0CB00AD9535 /* WaveShaperDSPKernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WaveShaperDSPKernel.h; sourceTree = ""; }; + FD7F298C13D4C0CB00AD9535 /* WaveShaperNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WaveShaperNode.cpp; sourceTree = ""; }; + FD7F298D13D4C0CB00AD9535 /* WaveShaperNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WaveShaperNode.h; sourceTree = ""; }; + FD7F298E13D4C0CB00AD9535 /* WaveShaperNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WaveShaperNode.idl; sourceTree = ""; }; + FD7F298F13D4C0CB00AD9535 /* WaveShaperProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WaveShaperProcessor.cpp; sourceTree = ""; }; + FD7F299013D4C0CB00AD9535 /* WaveShaperProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WaveShaperProcessor.h; sourceTree = ""; }; + FD82D7F513D4C8BD004E4372 /* JSWaveShaperNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWaveShaperNode.cpp; sourceTree = ""; }; + FD82D7F613D4C8BD004E4372 /* JSWaveShaperNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWaveShaperNode.h; sourceTree = ""; }; + FD8AA63B1695148E00D2EA68 /* JSBiquadFilterNodeCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSBiquadFilterNodeCustom.cpp; sourceTree = ""; }; + FD8AA63D169514A700D2EA68 /* JSPannerNodeCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPannerNodeCustom.cpp; sourceTree = ""; }; + FD8C46E9154608E700A5910C /* AudioScheduledSourceNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioScheduledSourceNode.cpp; sourceTree = ""; }; + FD8C46EA154608E700A5910C /* AudioScheduledSourceNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioScheduledSourceNode.h; sourceTree = ""; }; + FDA15E8112B03EE1003A583A /* JSAudioBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioBuffer.cpp; sourceTree = ""; }; + FDA15E8212B03EE1003A583A /* JSAudioBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioBuffer.h; sourceTree = ""; }; + FDA15E8312B03EE1003A583A /* JSAudioBufferSourceNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioBufferSourceNode.cpp; sourceTree = ""; }; + FDA15E8412B03EE1003A583A /* JSAudioBufferSourceNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioBufferSourceNode.h; sourceTree = ""; }; + FDA15E8512B03EE1003A583A /* JSChannelMergerNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSChannelMergerNode.cpp; sourceTree = ""; }; + FDA15E8612B03EE1003A583A /* JSChannelMergerNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSChannelMergerNode.h; sourceTree = ""; }; + FDA15E8712B03EE1003A583A /* JSChannelSplitterNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSChannelSplitterNode.cpp; sourceTree = ""; }; + FDA15E8812B03EE1003A583A /* JSChannelSplitterNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSChannelSplitterNode.h; sourceTree = ""; }; + FDA15E8912B03EE1003A583A /* JSAudioContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioContext.cpp; sourceTree = ""; }; + FDA15E8A12B03EE1003A583A /* JSAudioContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioContext.h; sourceTree = ""; }; + FDA15E8B12B03EE1003A583A /* JSAudioDestinationNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioDestinationNode.cpp; sourceTree = ""; }; + FDA15E8C12B03EE1003A583A /* JSAudioDestinationNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioDestinationNode.h; sourceTree = ""; }; + FDA15E8F12B03EE1003A583A /* JSGainNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSGainNode.cpp; sourceTree = ""; }; + FDA15E9012B03EE1003A583A /* JSGainNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSGainNode.h; sourceTree = ""; }; + FDA15E9112B03EE1003A583A /* JSAudioListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioListener.cpp; sourceTree = ""; }; + FDA15E9212B03EE1003A583A /* JSAudioListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioListener.h; sourceTree = ""; }; + FDA15E9312B03EE1003A583A /* JSAudioNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioNode.cpp; sourceTree = ""; }; + FDA15E9412B03EE1003A583A /* JSAudioNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioNode.h; sourceTree = ""; }; + FDA15E9512B03EE1003A583A /* JSPannerNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPannerNode.cpp; sourceTree = ""; }; + FDA15E9612B03EE1003A583A /* JSPannerNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPannerNode.h; sourceTree = ""; }; + FDA15E9712B03EE1003A583A /* JSAudioParam.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioParam.cpp; sourceTree = ""; }; + FDA15E9812B03EE1003A583A /* JSAudioParam.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioParam.h; sourceTree = ""; }; + FDA15E9912B03EE1003A583A /* JSAudioProcessingEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioProcessingEvent.cpp; sourceTree = ""; }; + FDA15E9A12B03EE1003A583A /* JSAudioProcessingEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioProcessingEvent.h; sourceTree = ""; }; + FDA15EBB12B03F0B003A583A /* JSConvolverNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSConvolverNode.cpp; sourceTree = ""; }; + FDA15EBC12B03F0B003A583A /* JSConvolverNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSConvolverNode.h; sourceTree = ""; }; + FDA15EC712B03F50003A583A /* JSAnalyserNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAnalyserNode.cpp; sourceTree = ""; }; + FDA15EC812B03F50003A583A /* JSAnalyserNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAnalyserNode.h; sourceTree = ""; }; + FDA15ECB12B03F61003A583A /* JSScriptProcessorNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSScriptProcessorNode.cpp; sourceTree = ""; }; + FDA15ECC12B03F61003A583A /* JSScriptProcessorNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSScriptProcessorNode.h; sourceTree = ""; }; + FDA15ECF12B03F94003A583A /* JSDelayNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDelayNode.cpp; sourceTree = ""; }; + FDA15ED012B03F94003A583A /* JSDelayNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDelayNode.h; sourceTree = ""; }; + FDA3E955134A49EF008D4B5A /* OfflineAudioCompletionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OfflineAudioCompletionEvent.cpp; sourceTree = ""; }; + FDA3E956134A49EF008D4B5A /* OfflineAudioCompletionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OfflineAudioCompletionEvent.h; sourceTree = ""; }; + FDA3E957134A49EF008D4B5A /* OfflineAudioDestinationNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OfflineAudioDestinationNode.cpp; sourceTree = ""; }; + FDA3E958134A49EF008D4B5A /* OfflineAudioDestinationNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OfflineAudioDestinationNode.h; sourceTree = ""; }; + FDA3E95D134A49FF008D4B5A /* OfflineAudioCompletionEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = OfflineAudioCompletionEvent.idl; sourceTree = ""; }; + FDA9325A16703B2A008982DC /* OfflineAudioContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OfflineAudioContext.cpp; sourceTree = ""; }; + FDA9325B16703B2A008982DC /* OfflineAudioContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OfflineAudioContext.h; sourceTree = ""; }; + FDA9325C16703B2A008982DC /* OfflineAudioContext.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = OfflineAudioContext.idl; sourceTree = ""; }; + FDA9326416703BA9008982DC /* JSOfflineAudioContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSOfflineAudioContext.cpp; sourceTree = ""; }; + FDA9326516703BA9008982DC /* JSOfflineAudioContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSOfflineAudioContext.h; sourceTree = ""; }; + FDAF19961513D131008DB0C3 /* DirectConvolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DirectConvolver.cpp; sourceTree = ""; }; + FDAF19971513D131008DB0C3 /* DirectConvolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirectConvolver.h; sourceTree = ""; }; + FDB052DD1561A42C00B500D6 /* AudioSummingJunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioSummingJunction.cpp; sourceTree = ""; }; + FDB052DE1561A42C00B500D6 /* AudioSummingJunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioSummingJunction.h; sourceTree = ""; }; + FDB1700314A2BAB200A2B5D9 /* MultiChannelResampler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MultiChannelResampler.cpp; sourceTree = ""; }; + FDB1700414A2BAB200A2B5D9 /* MultiChannelResampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultiChannelResampler.h; sourceTree = ""; }; + FDBD1DFB167FE27D0051A11E /* JSOscillatorNodeCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSOscillatorNodeCustom.cpp; sourceTree = ""; }; + FDBD480A159BC6870093EB4F /* JSMediaStreamAudioSourceNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaStreamAudioSourceNode.cpp; sourceTree = ""; }; + FDBD480B159BC6870093EB4F /* JSMediaStreamAudioSourceNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMediaStreamAudioSourceNode.h; sourceTree = ""; }; + FDC54F011399B0DA008D9117 /* BiquadFilterNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BiquadFilterNode.cpp; sourceTree = ""; }; + FDC54F021399B0DA008D9117 /* BiquadFilterNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BiquadFilterNode.h; sourceTree = ""; }; + FDC54F031399B0DA008D9117 /* BiquadFilterNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = BiquadFilterNode.idl; sourceTree = ""; }; + FDE2D55A159E66EB00DCCCF8 /* AudioIOCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioIOCallback.h; sourceTree = ""; }; + FDEA6240152102E200479DF0 /* JSOscillatorNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSOscillatorNode.cpp; sourceTree = ""; }; + FDEA6241152102E200479DF0 /* JSOscillatorNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSOscillatorNode.h; sourceTree = ""; }; + FDEA6244152102FC00479DF0 /* JSPeriodicWave.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPeriodicWave.cpp; sourceTree = ""; }; + FDEA6245152102FC00479DF0 /* JSPeriodicWave.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPeriodicWave.h; sourceTree = ""; }; + FDEAAAEF12B02EE400DCF33B /* JSAudioBufferSourceNodeCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioBufferSourceNodeCustom.cpp; sourceTree = ""; }; + FDEAAAF012B02EE400DCF33B /* JSAudioContextCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioContextCustom.cpp; sourceTree = ""; }; + FDF09DC61399B62200688E5B /* JSBiquadFilterNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSBiquadFilterNode.cpp; sourceTree = ""; }; + FDF09DC71399B62200688E5B /* JSBiquadFilterNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBiquadFilterNode.h; sourceTree = ""; }; + FDF6BAF6134A4C9800822920 /* JSOfflineAudioCompletionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSOfflineAudioCompletionEvent.cpp; sourceTree = ""; }; + FDF6BAF7134A4C9800822920 /* JSOfflineAudioCompletionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSOfflineAudioCompletionEvent.h; sourceTree = ""; }; + FDF7E9C113AC21DB00A51EAC /* JSAudioBufferCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioBufferCallback.cpp; sourceTree = ""; }; + FDF7E9C213AC21DB00A51EAC /* JSAudioBufferCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioBufferCallback.h; sourceTree = ""; }; + FE09DB46169E2D6E00622557 /* DatabaseError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseError.h; path = Modules/webdatabase/DatabaseError.h; sourceTree = ""; }; + FE115FA9167988CD00249134 /* AbstractDatabaseServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AbstractDatabaseServer.h; path = Modules/webdatabase/AbstractDatabaseServer.h; sourceTree = ""; }; + FE16CFCF169D1DEC00D3A0C7 /* DatabaseBackend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseBackend.cpp; path = Modules/webdatabase/DatabaseBackend.cpp; sourceTree = ""; }; + FE16CFD0169D1DEC00D3A0C7 /* DatabaseBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseBackend.h; path = Modules/webdatabase/DatabaseBackend.h; sourceTree = ""; }; + FE16CFD1169D1DEC00D3A0C7 /* DatabaseBackendSync.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseBackendSync.cpp; path = Modules/webdatabase/DatabaseBackendSync.cpp; sourceTree = ""; }; + FE16CFD2169D1DEC00D3A0C7 /* DatabaseBackendSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseBackendSync.h; path = Modules/webdatabase/DatabaseBackendSync.h; sourceTree = ""; }; + FE3371A0167C11D400EDB752 /* DatabaseBasicTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseBasicTypes.h; path = Modules/webdatabase/DatabaseBasicTypes.h; sourceTree = ""; }; + FE36FD1116C7826400F887C1 /* ChangeVersionData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ChangeVersionData.h; path = Modules/webdatabase/ChangeVersionData.h; sourceTree = ""; }; + FE36FD1216C7826400F887C1 /* SQLTransactionStateMachine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLTransactionStateMachine.cpp; path = Modules/webdatabase/SQLTransactionStateMachine.cpp; sourceTree = ""; }; + FE36FD1316C7826400F887C1 /* SQLTransactionStateMachine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLTransactionStateMachine.h; path = Modules/webdatabase/SQLTransactionStateMachine.h; sourceTree = ""; }; + FE36FD1416C7826400F887C1 /* SQLTransactionState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLTransactionState.h; path = Modules/webdatabase/SQLTransactionState.h; sourceTree = ""; }; + FE456F161677D74E005EDDF9 /* DatabaseManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseManager.cpp; path = Modules/webdatabase/DatabaseManager.cpp; sourceTree = ""; }; + FE456F171677D74E005EDDF9 /* DatabaseManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseManager.h; path = Modules/webdatabase/DatabaseManager.h; sourceTree = ""; }; + FE4AADEC16D2C37400026FFC /* AbstractSQLStatement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AbstractSQLStatement.h; path = Modules/webdatabase/AbstractSQLStatement.h; sourceTree = ""; }; + FE4AADED16D2C37400026FFC /* AbstractSQLStatementBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AbstractSQLStatementBackend.h; path = Modules/webdatabase/AbstractSQLStatementBackend.h; sourceTree = ""; }; + FE6F6AAD169E057500FC30A2 /* DatabaseBackendContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseBackendContext.cpp; path = Modules/webdatabase/DatabaseBackendContext.cpp; sourceTree = ""; }; + FE6F6AAE169E057500FC30A2 /* DatabaseBackendContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseBackendContext.h; path = Modules/webdatabase/DatabaseBackendContext.h; sourceTree = ""; }; + FE6FD48B0F676E9300092873 /* JSCoordinates.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCoordinates.cpp; sourceTree = ""; }; + FE6FD48C0F676E9300092873 /* JSCoordinates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCoordinates.h; sourceTree = ""; }; + FE80D7A60E9C1ED2000D6F75 /* JSGeolocationCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSGeolocationCustom.cpp; sourceTree = ""; }; + FE80DA5F0E9C4703000D6F75 /* JSGeolocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSGeolocation.cpp; sourceTree = ""; }; + FE80DA600E9C4703000D6F75 /* JSGeolocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSGeolocation.h; sourceTree = ""; }; + FE80DA610E9C4703000D6F75 /* JSGeoposition.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSGeoposition.cpp; sourceTree = ""; }; + FE80DA620E9C4703000D6F75 /* JSGeoposition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSGeoposition.h; sourceTree = ""; }; + FE80DA6D0E9C472F000D6F75 /* JSPositionError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPositionError.cpp; sourceTree = ""; }; + FE80DA6E0E9C472F000D6F75 /* JSPositionError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPositionError.h; sourceTree = ""; }; + FE8A674516CDD19E00930BF8 /* SQLStatementBackend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLStatementBackend.cpp; path = Modules/webdatabase/SQLStatementBackend.cpp; sourceTree = ""; }; + FE8A674616CDD19E00930BF8 /* SQLStatementBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLStatementBackend.h; path = Modules/webdatabase/SQLStatementBackend.h; sourceTree = ""; }; + FE9E89F916E2DC0400A908F8 /* OriginLock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OriginLock.cpp; path = Modules/webdatabase/OriginLock.cpp; sourceTree = ""; }; + FE9E89FA16E2DC0400A908F8 /* OriginLock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OriginLock.h; path = Modules/webdatabase/OriginLock.h; sourceTree = ""; }; + FEAD7D8516C339EE00D4670B /* SQLTransactionBackendSync.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLTransactionBackendSync.cpp; path = Modules/webdatabase/SQLTransactionBackendSync.cpp; sourceTree = ""; }; + FEAD7D8616C339EE00D4670B /* SQLTransactionBackendSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLTransactionBackendSync.h; path = Modules/webdatabase/SQLTransactionBackendSync.h; sourceTree = ""; }; + FEAF6653167970070062D0C5 /* DatabaseServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseServer.h; path = Modules/webdatabase/DatabaseServer.h; sourceTree = ""; }; + FEB26D27167A8F2A00FDD26B /* DatabaseServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseServer.cpp; path = Modules/webdatabase/DatabaseServer.cpp; sourceTree = ""; }; + FEBC5F2F16BD0CC300659BD3 /* DatabaseBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseBase.cpp; path = Modules/webdatabase/DatabaseBase.cpp; sourceTree = ""; }; + FEBC5F3016BD0CC300659BD3 /* DatabaseBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseBase.h; path = Modules/webdatabase/DatabaseBase.h; sourceTree = ""; }; + FEDEF83F16797108000E444A /* DatabaseStrategy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DatabaseStrategy.cpp; sourceTree = ""; }; + FEDEF84016797108000E444A /* DatabaseStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseStrategy.h; sourceTree = ""; }; + FEE1811116C319E800084849 /* SQLTransactionBackend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLTransactionBackend.cpp; path = Modules/webdatabase/SQLTransactionBackend.cpp; sourceTree = ""; }; + FEE1811216C319E800084849 /* SQLTransactionBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLTransactionBackend.h; path = Modules/webdatabase/SQLTransactionBackend.h; sourceTree = ""; }; + FF945EC9161F7F3600971BC8 /* PseudoElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PseudoElement.cpp; sourceTree = ""; }; + FF945ECA161F7F3600971BC8 /* PseudoElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PseudoElement.h; sourceTree = ""; }; + FFD5B977135CC97800D5E92A /* PageVisibilityState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageVisibilityState.cpp; sourceTree = ""; }; + FFD5B978135CC97800D5E92A /* PageVisibilityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageVisibilityState.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 417DA6CE13734E02007C57FB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + AA5F3B9116CC5BEB00455EB0 /* CoreFoundation.framework in Frameworks */, + 41230913138C42FF00BCCFCA /* JavaScriptCore.framework in Frameworks */, + 4123081B138C429700BCCFCA /* WebCore.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5D87BB4D11E3EAEB00702B6F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 93F19B1208245E59001E9ABC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + FD2DBF1212B048A300ED98C6 /* Accelerate.framework in Frameworks */, + 93F19B1308245E59001E9ABC /* ApplicationServices.framework in Frameworks */, + FD2DBF1312B048A300ED98C6 /* AudioToolbox.framework in Frameworks */, + FD2DBF1412B048A300ED98C6 /* AudioUnit.framework in Frameworks */, + 93F19B1408245E59001E9ABC /* Carbon.framework in Frameworks */, + 93F19B1508245E59001E9ABC /* Cocoa.framework in Frameworks */, + FD2DBF1512B048A300ED98C6 /* CoreAudio.framework in Frameworks */, + 1AB33DA512551E320024457A /* IOKit.framework in Frameworks */, + 93F19B1608245E59001E9ABC /* JavaScriptCore.framework in Frameworks */, + 93F19B1708245E59001E9ABC /* libicucore.dylib in Frameworks */, + 1CFAE3230A6D6A3F0032593D /* libobjc.dylib in Frameworks */, + DD763BB20992C2C900740B8E /* libxml2.dylib in Frameworks */, + 379919B21200DE5000EA041C /* libz.dylib in Frameworks */, + 49C7BA791042EFAE0009D447 /* OpenGL.framework in Frameworks */, + A88AD52F09524B92001DD196 /* QuartzCore.framework in Frameworks */, + 1A7FA7CC0DDA4B770028F8A5 /* SystemConfiguration.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E1BA670E1742BDE000C20251 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E1BA67181742BEE600C20251 /* Carbon.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 00B9318013BA867F0035A948 /* parser */ = { + isa = PBXGroup; + children = ( + 97B8FFCF16AE7F920038388D /* CharacterReferenceParserInlines.h */, + 00C60E3E13D76D7E0092A275 /* MarkupTokenizerInlines.h */, + 00B9318113BA867F0035A948 /* XMLDocumentParser.cpp */, + 00B9318213BA867F0035A948 /* XMLDocumentParser.h */, + 00B9318313BA867F0035A948 /* XMLDocumentParserLibxml2.cpp */, + 00B9318513BA867F0035A948 /* XMLDocumentParserScope.cpp */, + 00B9318613BA867F0035A948 /* XMLDocumentParserScope.h */, + ); + path = parser; + sourceTree = ""; + }; + 034768DFFF38A50411DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + 5D87BB4F11E3EAEB00702B6F /* WebCoreExportFileGenerator */, + E1BA67161742BDE000C20251 /* libWebCoreTestShim.dylib */, + 417DA6D013734E02007C57FB /* libWebCoreTestSupport.dylib */, + 93F19B1A08245E5A001E9ABC /* WebCore.framework */, + ); + name = Products; + sourceTree = SOURCE_ROOT; + tabWidth = 4; + usesTabs = 0; + }; + 076F0D0812B8192700C26AA4 /* avfoundation */ = { + isa = PBXGroup; + children = ( + DF9AFD6F13FC31B00015FEB7 /* objc */, + 07B442D4166C70B000556CAD /* InbandTextTrackPrivateAVF.cpp */, + 07B442D5166C70B000556CAD /* InbandTextTrackPrivateAVF.h */, + 076F0D0912B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.cpp */, + 076F0D0A12B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.h */, + ); + path = avfoundation; + sourceTree = ""; + }; + 081CDFBD126ECFE800D215CA /* properties */ = { + isa = PBXGroup; + children = ( + 71FB967A1383D64600AC8A4C /* SVGAnimatedEnumerationPropertyTearOff.h */, + 088A0DFB126EF1DB00978F7A /* SVGAnimatedListPropertyTearOff.h */, + 089A8E06128D8B3D00E7A534 /* SVGAnimatedPathSegListPropertyTearOff.h */, + 836FBCEB178C117F00B21A15 /* SVGAnimatedProperty.cpp */, + 088A0DFC126EF1DB00978F7A /* SVGAnimatedProperty.h */, + 088A0DFD126EF1DB00978F7A /* SVGAnimatedPropertyDescription.h */, + 088A0DFE126EF1DB00978F7A /* SVGAnimatedPropertyMacros.h */, + 088A0DFF126EF1DB00978F7A /* SVGAnimatedPropertyTearOff.h */, + 08525E621278C00100A84778 /* SVGAnimatedStaticPropertyTearOff.h */, + 085A15921289A8DD002710E3 /* SVGAnimatedTransformListPropertyTearOff.h */, + 08FB17C013BC7E9100040086 /* SVGAttributeToPropertyMap.cpp */, + 08FB3F8313BC754C0099FC18 /* SVGAttributeToPropertyMap.h */, + 0810764312828556007C63BA /* SVGListProperty.h */, + 088A0E00126EF1DB00978F7A /* SVGListPropertyTearOff.h */, + 08FF101F12950F5900F00276 /* SVGPathSegListPropertyTearOff.cpp */, + 084A0828128D7867002DB1F1 /* SVGPathSegListPropertyTearOff.h */, + 088A0E01126EF1DB00978F7A /* SVGProperty.h */, + 081DD49B13BA1A6000DC7627 /* SVGPropertyInfo.h */, + 088A0E02126EF1DB00978F7A /* SVGPropertyTearOff.h */, + 088A0E03126EF1DB00978F7A /* SVGPropertyTraits.h */, + 0880F70D1282B46D00948505 /* SVGStaticListPropertyTearOff.h */, + 0813A4E91284132600992511 /* SVGStaticPropertyTearOff.h */, + 08CA3D4312894A3800FFF260 /* SVGStaticPropertyWithParentTearOff.h */, + 08C7136D128956A3001B107E /* SVGTransformListPropertyTearOff.h */, + ); + path = properties; + sourceTree = ""; + }; + 0867D691FE84028FC02AAC07 /* WebKit */ = { + isa = PBXGroup; + children = ( + 65C97AF208EA908800ACD273 /* config.h */, + EDEC98020AED7E170059137F /* WebCorePrefix.h */, + 9307061309E0CA8200B17FE4 /* DerivedSources.make */, + 93F19B1908245E59001E9ABC /* Info.plist */, + 971145FE14EF006E00674FD9 /* Modules */, + 29A812040FBB9B4100510293 /* accessibility */, + BC1A3790097C6F970019F3D8 /* bindings */, + 1A569CC40D7E2B60007C3983 /* bridge */, + F523D18402DE42E8018635CA /* css */, + F523D32402DE4478018635CA /* dom */, + 93309D86099E64910056E581 /* editing */, + 976D6C57122B8A18001FD1F7 /* fileapi */, + 51741D080B07257000ED442C /* history */, + 93EEC1EC09C2877700C515D1 /* html */, + 1C81B94D0E9732D900266E07 /* inspector */, + BCB16BFB0979C38700467741 /* loader */, + FABE72EC1059C1EB00D999DD /* mathml */, + 65BF02180974806300C43196 /* page */, + BCF1A5BA097832090061A123 /* platform */, + 5DCF83690D59157800953BC6 /* plugins */, + F523D2F302DE443B018635CA /* rendering */, + 1AE82EC90CAAE177002237AE /* storage */, + B22277CA0D00BF1E0071B782 /* svg */, + 417DA4CD13734204007C57FB /* testing */, + 2E4346310F546A6800B0F1BA /* workers */, + E1F0424309839389006694EA /* xml */, + 656580EC09D12B20000E61D7 /* Derived Sources */, + 089C1665FE841158C02AAC07 /* Resources */, + 0867D69AFE84028FC02AAC07 /* Frameworks */, + 034768DFFF38A50411DB9C8B /* Products */, + 1CDD44660BA9C80000F90147 /* Configurations */, + 449195900FBE175B00D9F824 /* Exports */, + DBFCB0EBFF5CD77EBEB35395 /* RenderMathMLSpace.cpp */, + 331FF67DE197B57393C46AA7 /* RenderMathMLSpace.h */, + ); + name = WebKit; + sourceTree = ""; + }; + 0867D69AFE84028FC02AAC07 /* Frameworks */ = { + isa = PBXGroup; + children = ( + FD2DBF0E12B048A300ED98C6 /* Accelerate.framework */, + F5C2869302846DCD018635CA /* ApplicationServices.framework */, + FD2DBF0F12B048A300ED98C6 /* AudioToolbox.framework */, + FD2DBF1012B048A300ED98C6 /* AudioUnit.framework */, + F5C2869402846DCD018635CA /* Carbon.framework */, + F5C2869502846DCD018635CA /* Cocoa.framework */, + FD2DBF1112B048A300ED98C6 /* CoreAudio.framework */, + AA5F3B9016CC5BEB00455EB0 /* CoreFoundation.framework */, + 1AB33DA412551E320024457A /* IOKit.framework */, + F8216299029F4FB501000131 /* JavaScriptCore.framework */, + 93F1D31A0558CC5C00821BC0 /* libicucore.dylib */, + 1CFAE3220A6D6A3F0032593D /* libobjc.dylib */, + DD763BB10992C2C900740B8E /* libxml2.dylib */, + 379919B11200DE5000EA041C /* libz.dylib */, + 49C7BA781042EFAE0009D447 /* OpenGL.framework */, + A85D7A2F0879EBA9006A9172 /* QuartzCore.framework */, + 1A7FA7CB0DDA4B770028F8A5 /* SystemConfiguration.framework */, + ); + name = Frameworks; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 088C2F7412390080003D65CE /* svg */ = { + isa = PBXGroup; + children = ( + 0F4E57161313276200CF85AF /* RenderSVGAllInOne.cpp */, + 4367088112D9CA4A00044234 /* RenderSVGBlock.cpp */, + 4367088212D9CA4A00044234 /* RenderSVGBlock.h */, + 4367088312D9CA4A00044234 /* RenderSVGContainer.cpp */, + 4367088412D9CA4A00044234 /* RenderSVGContainer.h */, + 2B42359F15250F6000DBBCD8 /* RenderSVGEllipse.cpp */, + 2B4235A015250F6000DBBCD8 /* RenderSVGEllipse.h */, + 43C092B912D9E4EE00A989C3 /* RenderSVGForeignObject.cpp */, + 43C092BA12D9E4EE00A989C3 /* RenderSVGForeignObject.h */, + 4367088512D9CA4A00044234 /* RenderSVGGradientStop.cpp */, + 4367088612D9CA4A00044234 /* RenderSVGGradientStop.h */, + 4367088712D9CA4A00044234 /* RenderSVGHiddenContainer.cpp */, + 4367088812D9CA4A00044234 /* RenderSVGHiddenContainer.h */, + 4367088912D9CA4A00044234 /* RenderSVGImage.cpp */, + 4367088A12D9CA4A00044234 /* RenderSVGImage.h */, + 0854B0021255E4E600B9CDD0 /* RenderSVGInline.cpp */, + 0854B0031255E4E600B9CDD0 /* RenderSVGInline.h */, + 0854B0041255E4E600B9CDD0 /* RenderSVGInlineText.cpp */, + 0854B0051255E4E600B9CDD0 /* RenderSVGInlineText.h */, + 4367088B12D9CA4A00044234 /* RenderSVGModelObject.cpp */, + 4367088C12D9CA4A00044234 /* RenderSVGModelObject.h */, + ADDF1AD41257CD9A0003A759 /* RenderSVGPath.cpp */, + ADDF1AD51257CD9A0003A759 /* RenderSVGPath.h */, + A10BB5821484E3A700B2E87A /* RenderSVGRect.cpp */, + A10BB5831484E3A700B2E87A /* RenderSVGRect.h */, + 4367088D12D9CA4A00044234 /* RenderSVGResource.cpp */, + 4367088E12D9CA4A00044234 /* RenderSVGResource.h */, + 4367088F12D9CA4A00044234 /* RenderSVGResourceClipper.cpp */, + 4367089012D9CA4A00044234 /* RenderSVGResourceClipper.h */, + 4367089112D9CA4A00044234 /* RenderSVGResourceContainer.cpp */, + 4367089212D9CA4A00044234 /* RenderSVGResourceContainer.h */, + 4367089312D9CA4A00044234 /* RenderSVGResourceFilter.cpp */, + 4367089412D9CA4A00044234 /* RenderSVGResourceFilter.h */, + 4367089512D9CA4A00044234 /* RenderSVGResourceFilterPrimitive.cpp */, + 4367089612D9CA4A00044234 /* RenderSVGResourceFilterPrimitive.h */, + 4367089712D9CA4A00044234 /* RenderSVGResourceGradient.cpp */, + 4367089812D9CA4A00044234 /* RenderSVGResourceGradient.h */, + 4367089912D9CA4B00044234 /* RenderSVGResourceLinearGradient.cpp */, + 4367089A12D9CA4B00044234 /* RenderSVGResourceLinearGradient.h */, + 4367089B12D9CA4B00044234 /* RenderSVGResourceMarker.cpp */, + 4367089C12D9CA4B00044234 /* RenderSVGResourceMarker.h */, + 4367089D12D9CA4B00044234 /* RenderSVGResourceMasker.cpp */, + 4367089E12D9CA4B00044234 /* RenderSVGResourceMasker.h */, + 4367089F12D9CA4B00044234 /* RenderSVGResourcePattern.cpp */, + 436708A012D9CA4B00044234 /* RenderSVGResourcePattern.h */, + 436708A112D9CA4B00044234 /* RenderSVGResourceRadialGradient.cpp */, + 436708A212D9CA4B00044234 /* RenderSVGResourceRadialGradient.h */, + 436708A312D9CA4B00044234 /* RenderSVGResourceSolidColor.cpp */, + 436708A412D9CA4B00044234 /* RenderSVGResourceSolidColor.h */, + 436708A512D9CA4B00044234 /* RenderSVGRoot.cpp */, + 436708A612D9CA4B00044234 /* RenderSVGRoot.h */, + A10BB5881484E3B300B2E87A /* RenderSVGShape.cpp */, + A10BB5891484E3B300B2E87A /* RenderSVGShape.h */, + 0854B0061255E4E600B9CDD0 /* RenderSVGText.cpp */, + 0854B0071255E4E600B9CDD0 /* RenderSVGText.h */, + 0854B0081255E4E600B9CDD0 /* RenderSVGTextPath.cpp */, + 0854B0091255E4E600B9CDD0 /* RenderSVGTextPath.h */, + 436708A912D9CA4B00044234 /* RenderSVGTransformableContainer.cpp */, + 436708AA12D9CA4B00044234 /* RenderSVGTransformableContainer.h */, + 0854B00A1255E4E600B9CDD0 /* RenderSVGTSpan.cpp */, + 0854B00B1255E4E600B9CDD0 /* RenderSVGTSpan.h */, + 436708AB12D9CA4B00044234 /* RenderSVGViewportContainer.cpp */, + 436708AC12D9CA4B00044234 /* RenderSVGViewportContainer.h */, + 0854B00C1255E4E600B9CDD0 /* SVGInlineFlowBox.cpp */, + 0854B00D1255E4E600B9CDD0 /* SVGInlineFlowBox.h */, + 0854B00E1255E4E600B9CDD0 /* SVGInlineTextBox.cpp */, + 0854B00F1255E4E600B9CDD0 /* SVGInlineTextBox.h */, + 436708AF12D9CA4B00044234 /* SVGMarkerData.h */, + 715379FE146BD9D6008BD615 /* SVGPathData.cpp */, + 715379FF146BD9D6008BD615 /* SVGPathData.h */, + 197B180A150634C000E4ADA8 /* SVGRenderingContext.cpp */, + 197B180B150634C000E4ADA8 /* SVGRenderingContext.h */, + 436708B212D9CA4B00044234 /* SVGRenderSupport.cpp */, + 436708B312D9CA4B00044234 /* SVGRenderSupport.h */, + 436708B412D9CA4B00044234 /* SVGRenderTreeAsText.cpp */, + 436708B512D9CA4B00044234 /* SVGRenderTreeAsText.h */, + 436708B612D9CA4B00044234 /* SVGResources.cpp */, + 436708B712D9CA4B00044234 /* SVGResources.h */, + 436708B812D9CA4B00044234 /* SVGResourcesCache.cpp */, + 436708B912D9CA4B00044234 /* SVGResourcesCache.h */, + 436708BA12D9CA4B00044234 /* SVGResourcesCycleSolver.cpp */, + 436708BB12D9CA4B00044234 /* SVGResourcesCycleSolver.h */, + 0854B0101255E4E600B9CDD0 /* SVGRootInlineBox.cpp */, + 0854B0111255E4E600B9CDD0 /* SVGRootInlineBox.h */, + 08F0BFBD1255C53C00075185 /* SVGTextChunk.cpp */, + 08F0BFBE1255C53C00075185 /* SVGTextChunk.h */, + 081668D1125603BF006F25DE /* SVGTextChunkBuilder.cpp */, + 081668D2125603BF006F25DE /* SVGTextChunkBuilder.h */, + 08F0BFBF1255C53C00075185 /* SVGTextFragment.h */, + 088C2F7512390080003D65CE /* SVGTextLayoutAttributes.cpp */, + 088C2F7612390080003D65CE /* SVGTextLayoutAttributes.h */, + 081093D91255F0E700ED9D29 /* SVGTextLayoutAttributesBuilder.cpp */, + 081093DA1255F0E700ED9D29 /* SVGTextLayoutAttributesBuilder.h */, + 081668D7125603D5006F25DE /* SVGTextLayoutEngine.cpp */, + 081668D8125603D5006F25DE /* SVGTextLayoutEngine.h */, + 080E49211255F3BD00EFCA27 /* SVGTextLayoutEngineBaseline.cpp */, + 080E49221255F3BD00EFCA27 /* SVGTextLayoutEngineBaseline.h */, + 080E49231255F3BD00EFCA27 /* SVGTextLayoutEngineSpacing.cpp */, + 080E49241255F3BD00EFCA27 /* SVGTextLayoutEngineSpacing.h */, + 08F0BFC01255C53C00075185 /* SVGTextMetrics.cpp */, + 08F0BFC11255C53C00075185 /* SVGTextMetrics.h */, + 7117445614BC34E200EE5FC8 /* SVGTextMetricsBuilder.cpp */, + 7117445714BC34E200EE5FC8 /* SVGTextMetricsBuilder.h */, + 0854B0121255E4E600B9CDD0 /* SVGTextQuery.cpp */, + 0854B0131255E4E600B9CDD0 /* SVGTextQuery.h */, + 08D29440138669E40097C89B /* SVGTextRunRenderingContext.cpp */, + 085CD274138BB8E000907F2D /* SVGTextRunRenderingContext.h */, + ); + path = svg; + sourceTree = ""; + }; + 089C1665FE841158C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + CD0DBB3E142274E600280263 /* audio */, + 46F9D5DA0B0D60170028EE36 /* aliasCursor.png */, + 46D4F2460AF97E810035385A /* cellCursor.png */, + 93153BDD141959F400FCF5BE /* deleteButton.png */, + 93153BCC1417FBBF00FCF5BE /* deleteButton@2x.png */, + 93153BDF14195A2800FCF5BE /* deleteButtonPressed.png */, + 93153BCE1417FBDB00FCF5BE /* deleteButtonPressed@2x.png */, + 85136C890AED665800F90A3D /* eastResizeCursor.png */, + 85136C8A0AED665800F90A3D /* eastWestResizeCursor.png */, + 85136C8B0AED665800F90A3D /* helpCursor.png */, + 7CC7E3D617208C0F003C5277 /* IDNScriptWhiteList.txt */, + 93153BE314195B2900FCF5BE /* inputSpeech.png */, + 2D9F0E1214FF1CBF00BA0FF7 /* linearSRGB.icc */, + 85136C8C0AED665800F90A3D /* linkCursor.png */, + BCAD1808131C7A0D00990406 /* Localizable.strings */, + 93153BE114195A5700FCF5BE /* missingImage.png */, + 93153BD914181F7A00FCF5BE /* missingImage@2x.png */, + 85136C8D0AED665800F90A3D /* moveCursor.png */, + 46BD16E20B279473001F0839 /* noneCursor.png */, + 85136C8E0AED665800F90A3D /* northEastResizeCursor.png */, + 85136C8F0AED665900F90A3D /* northEastSouthWestResizeCursor.png */, + 85136C900AED665900F90A3D /* northResizeCursor.png */, + 85136C910AED665900F90A3D /* northSouthResizeCursor.png */, + 85136C920AED665900F90A3D /* northWestResizeCursor.png */, + 85136C930AED665900F90A3D /* northWestSouthEastResizeCursor.png */, + 713E70AF1733E8B300A22D00 /* plugIns.js */, + 46F9D5DC0B0D60170028EE36 /* progressCursor.png */, + 85136C940AED665900F90A3D /* southEastResizeCursor.png */, + 85136C950AED665900F90A3D /* southResizeCursor.png */, + 85136C960AED665900F90A3D /* southWestResizeCursor.png */, + 93153BDB141959BB00FCF5BE /* textAreaResizeCorner.png */, + 9370918C1416D86B00477333 /* textAreaResizeCorner@2x.png */, + 46D4F2480AF97E810035385A /* verticalTextCursor.png */, + 85136C970AED665900F90A3D /* waitCursor.png */, + 85136C980AED665900F90A3D /* westResizeCursor.png */, + 1AB1AE780C051FDE00139F4F /* zoomInCursor.png */, + 1AB1AE790C051FDE00139F4F /* zoomOutCursor.png */, + ); + path = Resources; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 14DFB33F0A7DF7630018F769 /* Derived Sources */ = { + isa = PBXGroup; + children = ( + A83B79100CCB001B000B0825 /* Core */, + A83B790E0CCAFF97000B0825 /* CSS */, + CDA98DCD1601515C00FEA3B1 /* EncryptedMedia */, + A83B79120CCB003F000B0825 /* Events */, + 89878576122CA1DA003AABDA /* FileAPI */, + A83B79080CCAFF2B000B0825 /* HTML */, + AA93C850175D5B2000FD3CE3 /* IndieUI */, + 1C5FAECA0DCFD8C900D58F78 /* Inspector */, + 33503C9C10179A9A003B47E1 /* Notifications */, + 1AC226020DB69EA70089B669 /* Offline */, + A9D247F90D757E4100FDF959 /* Plugins */, + 89F60B17157F6A020075E157 /* Quota */, + BC9854460CD3DA5F00069BC1 /* Ranges */, + AA7FEE9B16A491A1004C0C33 /* Speech */, + A83B79150CCB0078000B0825 /* Storage */, + A83B790A0CCAFF47000B0825 /* SVG */, + 417DA71213735D90007C57FB /* Testing */, + E1C8BE4B0E8BD0D10064CB7D /* Threads */, + BC9854530CD3DA8F00069BC1 /* Traversal */, + FDA15E7B12B03E04003A583A /* WebAudio */, + 5DA5E0F9102B950400088CF9 /* WebSockets */, + BC9854430CD3D9D000069BC1 /* Window */, + A83B79220CCB00F0000B0825 /* XML */, + A83B790C0CCAFF83000B0825 /* XPath */, + ); + name = "Derived Sources"; + path = DerivedSources/WebCore; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 1A2E6E560CC551E0004A2062 /* sql */ = { + isa = PBXGroup; + children = ( + 1A2E6E780CC556D5004A2062 /* SQLiteAuthorizer.cpp */, + 1A2246430CC98DDB00C05240 /* SQLiteDatabase.cpp */, + 1A2246440CC98DDB00C05240 /* SQLiteDatabase.h */, + B5A684230FFABEAA00D24689 /* SQLiteFileSystem.cpp */, + B5A684210FFABE9800D24689 /* SQLiteFileSystem.h */, + 1A2246450CC98DDB00C05240 /* SQLiteStatement.cpp */, + 1A2246460CC98DDB00C05240 /* SQLiteStatement.h */, + 1A2246470CC98DDB00C05240 /* SQLiteTransaction.cpp */, + 1A2246480CC98DDB00C05240 /* SQLiteTransaction.h */, + 1A2E6E570CC55213004A2062 /* SQLValue.cpp */, + 1A2E6E580CC55213004A2062 /* SQLValue.h */, + ); + name = sql; + sourceTree = ""; + }; + 1A569CC40D7E2B60007C3983 /* bridge */ = { + isa = PBXGroup; + children = ( + 1A569CC50D7E2B82007C3983 /* c */, + 59B5977111086556007159E8 /* jsc */, + 1A569CE20D7E2B82007C3983 /* objc */, + 599E758F11055A1F00D904FA /* Bridge.h */, + 1A71D5790F33819000F9CE4E /* IdentifierRep.cpp */, + 1A71D57A0F33819000F9CE4E /* IdentifierRep.h */, + 1A569CDA0D7E2B82007C3983 /* NP_jsobject.cpp */, + 1A569CDB0D7E2B82007C3983 /* NP_jsobject.h */, + 1A569CDD0D7E2B82007C3983 /* npruntime.cpp */, + 1A569CDF0D7E2B82007C3983 /* npruntime_impl.h */, + 1A569CE00D7E2B82007C3983 /* npruntime_internal.h */, + 1A569CE10D7E2B82007C3983 /* npruntime_priv.h */, + 1A569CEF0D7E2B82007C3983 /* runtime_array.cpp */, + 1A569CF00D7E2B82007C3983 /* runtime_array.h */, + 1A569CF10D7E2B82007C3983 /* runtime_method.cpp */, + 1A569CF20D7E2B82007C3983 /* runtime_method.h */, + 1A569CF30D7E2B82007C3983 /* runtime_object.cpp */, + 1A569CF40D7E2B82007C3983 /* runtime_object.h */, + 1A569CF50D7E2B82007C3983 /* runtime_root.cpp */, + 1A569CF60D7E2B82007C3983 /* runtime_root.h */, + ); + name = bridge; + sourceTree = ""; + }; + 1A569CC50D7E2B82007C3983 /* c */ = { + isa = PBXGroup; + children = ( + 1A569CC60D7E2B82007C3983 /* c_class.cpp */, + 1A569CC70D7E2B82007C3983 /* c_class.h */, + 1A569CC80D7E2B82007C3983 /* c_instance.cpp */, + 1A569CC90D7E2B82007C3983 /* c_instance.h */, + 1A569CCA0D7E2B82007C3983 /* c_runtime.cpp */, + 1A569CCB0D7E2B82007C3983 /* c_runtime.h */, + 1A569CCC0D7E2B82007C3983 /* c_utility.cpp */, + 1A569CCD0D7E2B82007C3983 /* c_utility.h */, + E16980481133644700894115 /* CRuntimeObject.cpp */, + E169803C1133542D00894115 /* CRuntimeObject.h */, + ); + name = c; + path = bridge/c; + sourceTree = ""; + }; + 1A569CE20D7E2B82007C3983 /* objc */ = { + isa = PBXGroup; + children = ( + 1A569CE30D7E2B82007C3983 /* objc_class.h */, + 1A569CE40D7E2B82007C3983 /* objc_class.mm */, + 1A569CE50D7E2B82007C3983 /* objc_header.h */, + 1A569CE60D7E2B82007C3983 /* objc_instance.h */, + 1A569CE70D7E2B82007C3983 /* objc_instance.mm */, + 1A569CE80D7E2B82007C3983 /* objc_runtime.h */, + 1A569CE90D7E2B82007C3983 /* objc_runtime.mm */, + 1A569CEA0D7E2B82007C3983 /* objc_utility.h */, + 1A569CEB0D7E2B82007C3983 /* objc_utility.mm */, + E16982541134629D00894115 /* ObjCRuntimeObject.h */, + E169825F1134636A00894115 /* ObjCRuntimeObject.mm */, + 1A569CEC0D7E2B82007C3983 /* WebScriptObject.h */, + ); + name = objc; + path = bridge/objc; + sourceTree = ""; + }; + 1A88A90117553CD7000C74F9 /* forms */ = { + isa = PBXGroup; + children = ( + 1A88A90217553CD7000C74F9 /* FileIconLoader.cpp */, + 1A88A90317553CD7000C74F9 /* FileIconLoader.h */, + ); + path = forms; + sourceTree = ""; + }; + 1A8F6BB00DB55CDC001DB794 /* appcache */ = { + isa = PBXGroup; + children = ( + 1A8F6BB10DB55CDC001DB794 /* ApplicationCache.cpp */, + 1A8F6BB20DB55CDC001DB794 /* ApplicationCache.h */, + 1A8F6BB30DB55CDC001DB794 /* ApplicationCacheGroup.cpp */, + 1A8F6BB40DB55CDC001DB794 /* ApplicationCacheGroup.h */, + 24F54EAA101FE914000AE741 /* ApplicationCacheHost.cpp */, + 24F54EAB101FE914000AE741 /* ApplicationCacheHost.h */, + 1A8F6BB50DB55CDC001DB794 /* ApplicationCacheResource.cpp */, + 1A8F6BB60DB55CDC001DB794 /* ApplicationCacheResource.h */, + 1A2AAC560DC2A3B100A20D9A /* ApplicationCacheStorage.cpp */, + 1A2AAC570DC2A3B100A20D9A /* ApplicationCacheStorage.h */, + 1A8F6BB70DB55CDC001DB794 /* DOMApplicationCache.cpp */, + 1A8F6BB80DB55CDC001DB794 /* DOMApplicationCache.h */, + 1A8F6BB90DB55CDC001DB794 /* DOMApplicationCache.idl */, + 1A8F6BBA0DB55CDC001DB794 /* ManifestParser.cpp */, + 1A8F6BBB0DB55CDC001DB794 /* ManifestParser.h */, + ); + path = appcache; + sourceTree = ""; + }; + 1AC226020DB69EA70089B669 /* Offline */ = { + isa = PBXGroup; + children = ( + 1AC2260A0DB69F190089B669 /* JSDOMApplicationCache.cpp */, + 1AC2260B0DB69F190089B669 /* JSDOMApplicationCache.h */, + ); + name = Offline; + sourceTree = ""; + }; + 1AE42F670AA4B8CB00C8612D /* cf */ = { + isa = PBXGroup; + children = ( + E1A8E56417552B2A007488E7 /* CFURLExtras.cpp */, + E1A8E56517552B2A007488E7 /* CFURLExtras.h */, + 5160306B0CC4362300C8AC25 /* FileSystemCF.cpp */, + 1A98956A0AA78F80005EF5EF /* KURLCFNet.cpp */, + 29A309AB1561C99B00BBD8E5 /* RunLoopCF.cpp */, + 512DD8E20D91E2B4000F89EE /* SharedBufferCF.cpp */, + ); + path = cf; + sourceTree = ""; + }; + 1AE82EC90CAAE177002237AE /* storage */ = { + isa = PBXGroup; + children = ( + 51E3F9C50DA059DC00250911 /* Storage.cpp */, + 51E3F9C40DA059DC00250911 /* Storage.h */, + 51E3F9D10DA05D7100250911 /* Storage.idl */, + 51BE37DE0DAEE00E001085FC /* StorageArea.h */, + C5160EE81004543A00A7CEE2 /* StorageAreaImpl.cpp */, + C5160EE91004543A00A7CEE2 /* StorageAreaImpl.h */, + C5102ECE0FD9EF8C00FAFF04 /* StorageAreaSync.cpp */, + C5102ECD0FD9EF8C00FAFF04 /* StorageAreaSync.h */, + 51E0BABA0DA5547100A9E417 /* StorageEvent.cpp */, + 51E0BAB90DA5547100A9E417 /* StorageEvent.h */, + 51E0BABD0DA5548400A9E417 /* StorageEvent.idl */, + C5E9B67610697E1300C7BB1A /* StorageEventDispatcher.cpp */, + C5EBDD81105EDDEC0056816F /* StorageEventDispatcher.h */, + 51E0BB370DA5ACB600A9E417 /* StorageMap.cpp */, + 51E0BB360DA5ACB600A9E417 /* StorageMap.h */, + C50D0E800FF4272900AC2644 /* StorageNamespace.cpp */, + C50D0E810FF4272900AC2644 /* StorageNamespace.h */, + C55E38BC10040D5D00A56BDB /* StorageNamespaceImpl.cpp */, + C55E38BB10040D5D00A56BDB /* StorageNamespaceImpl.h */, + 1AB09DB216AF5F6C008538E7 /* StorageStrategy.cpp */, + 1AB09DB316AF5F6C008538E7 /* StorageStrategy.h */, + C5102D930FD9AA2D00FAFF04 /* StorageSyncManager.cpp */, + C5102D920FD9AA2D00FAFF04 /* StorageSyncManager.h */, + 511F23150DC160DA004F0032 /* StorageThread.cpp */, + 511F23160DC160DA004F0032 /* StorageThread.h */, + 3AB02D2912D4F91600FBB694 /* StorageTracker.cpp */, + 3AB02D2812D4F91600FBB694 /* StorageTracker.h */, + 3AC367FE12EF7A09006A3D6F /* StorageTrackerClient.h */, + ); + indentWidth = 4; + path = storage; + sourceTree = ""; + tabWidth = 8; + usesTabs = 0; + }; + 1AF62EE114DA22A70041556C /* scrolling */ = { + isa = PBXGroup; + children = ( + 1AF62EE214DA22A70041556C /* mac */, + 0F605AEA15F94848004DF0C0 /* ScrollingConstraints.cpp */, + 0F605AEB15F94848004DF0C0 /* ScrollingConstraints.h */, + 1AF62EE414DA22A70041556C /* ScrollingCoordinator.cpp */, + 1AF62EE514DA22A70041556C /* ScrollingCoordinator.h */, + 93C38BFC164473C700091EB2 /* ScrollingStateFixedNode.cpp */, + 93C38BFD164473C700091EB2 /* ScrollingStateFixedNode.h */, + 931CBD06161A44E900E4C874 /* ScrollingStateNode.cpp */, + 931CBD07161A44E900E4C874 /* ScrollingStateNode.h */, + 931CBD08161A44E900E4C874 /* ScrollingStateScrollingNode.cpp */, + 931CBD09161A44E900E4C874 /* ScrollingStateScrollingNode.h */, + 0FB8890C167D30160010CDA5 /* ScrollingStateStickyNode.cpp */, + 0FB8890D167D30160010CDA5 /* ScrollingStateStickyNode.h */, + 931CBD0A161A44E900E4C874 /* ScrollingStateTree.cpp */, + 931CBD0B161A44E900E4C874 /* ScrollingStateTree.h */, + 1AF62F2014DAFE790041556C /* ScrollingThread.cpp */, + 1AF62F2114DAFE790041556C /* ScrollingThread.h */, + 1AAADDA114DB409F00AF64B3 /* ScrollingTree.cpp */, + 1AAADDA214DB409F00AF64B3 /* ScrollingTree.h */, + 1AAADDE114DC8C8F00AF64B3 /* ScrollingTreeNode.cpp */, + 1AAADDE214DC8C8F00AF64B3 /* ScrollingTreeNode.h */, + 9391A99A1629D6FF00297330 /* ScrollingTreeScrollingNode.cpp */, + 9391A99B1629D70000297330 /* ScrollingTreeScrollingNode.h */, + ); + path = scrolling; + sourceTree = ""; + }; + 1AF62EE214DA22A70041556C /* mac */ = { + isa = PBXGroup; + children = ( + 9391A990162746CB00297330 /* ScrollingCoordinatorMac.h */, + 1AF62EE314DA22A70041556C /* ScrollingCoordinatorMac.mm */, + 931CBD12161A44F800E4C874 /* ScrollingStateNodeMac.mm */, + 0FA88EBC16A8D1BD00F99984 /* ScrollingStateScrollingNodeMac.mm */, + 1AF62F2314DAFE910041556C /* ScrollingThreadMac.mm */, + 93C38C01164473DD00091EB2 /* ScrollingTreeFixedNode.h */, + 93C38C02164473DD00091EB2 /* ScrollingTreeFixedNode.mm */, + 93C4A4131629DF5A00C3EB6E /* ScrollingTreeScrollingNodeMac.h */, + 93C4A4141629DF5A00C3EB6E /* ScrollingTreeScrollingNodeMac.mm */, + 0FB88908167D2FA10010CDA5 /* ScrollingTreeStickyNode.h */, + 0FB88909167D2FA10010CDA5 /* ScrollingTreeStickyNode.mm */, + ); + path = mac; + sourceTree = ""; + }; + 1C5FAECA0DCFD8C900D58F78 /* Inspector */ = { + isa = PBXGroup; + children = ( + AA912750157E35A500454E54 /* InjectedScriptCanvasModuleSource.h */, + 7A563E5412DE32B000F4536D /* InjectedScriptSource.h */, + 4F707A9711EF679400ACDA69 /* InspectorBackendDispatcher.cpp */, + 4F707A9811EF679400ACDA69 /* InspectorBackendDispatcher.h */, + 4F4F5FFA11CBD2D200A186BF /* InspectorFrontend.cpp */, + 4F4F5FFC11CBD30100A186BF /* InspectorFrontend.h */, + 573D134514CE39FF0057ABCA /* InspectorTypeBuilder.cpp */, + 573D134614CE39FF0057ABCA /* InspectorTypeBuilder.h */, + 7A0E76D810BF059800A0276E /* JSInjectedScriptHost.cpp */, + 7A0E76D910BF059800A0276E /* JSInjectedScriptHost.h */, + 7A0E771C10C00DB100A0276E /* JSInspectorFrontendHost.cpp */, + 7A0E771D10C00DB100A0276E /* JSInspectorFrontendHost.h */, + 1C5FAECF0DCFD90100D58F78 /* JSJavaScriptCallFrame.cpp */, + 1C5FAED00DCFD90100D58F78 /* JSJavaScriptCallFrame.h */, + 9FA37EF61172FD9300C4CD55 /* JSScriptProfile.cpp */, + 9FA37EF71172FD9300C4CD55 /* JSScriptProfile.h */, + 9FA37EF81172FD9300C4CD55 /* JSScriptProfileNode.cpp */, + 9FA37EF91172FD9300C4CD55 /* JSScriptProfileNode.h */, + ); + name = Inspector; + sourceTree = ""; + }; + 1C81B94D0E9732D900266E07 /* inspector */ = { + isa = PBXGroup; + children = ( + F35AE5AB14925F5B004D5776 /* BindingVisitors.h */, + 2DF2E9D4166E39740035BEF2 /* ConsoleAPITypes.h */, + 41F0618D0F5F069800A07EAC /* ConsoleMessage.cpp */, + 41F0618C0F5F069800A07EAC /* ConsoleMessage.h */, + 59102FB914327D3B003C9D04 /* ContentSearchUtils.cpp */, + 59102FBA14327D3B003C9D04 /* ContentSearchUtils.h */, + 7AABA25714BC613300AA9A11 /* DOMEditor.cpp */, + 7AABA25814BC613300AA9A11 /* DOMEditor.h */, + 7A54881614E432A1006AE05A /* DOMPatchSupport.cpp */, + 7A54881514E432A1006AE05A /* DOMPatchSupport.h */, + 5913A23F13D49EBA00F5B05C /* IdentifiersFactory.cpp */, + 5913A24013D49EBA00F5B05C /* IdentifiersFactory.h */, + F3644AFD1119805900E0D537 /* InjectedScript.cpp */, + F3644AFE1119805900E0D537 /* InjectedScript.h */, + AAB6054A15874C58007B5031 /* InjectedScriptBase.cpp */, + AAB6054B15874C58007B5031 /* InjectedScriptBase.h */, + AA73183C159255B900A93E6E /* InjectedScriptCanvasModule.cpp */, + AA73183D159255B900A93E6E /* InjectedScriptCanvasModule.h */, + AA9030FE157E16A000276247 /* InjectedScriptCanvasModuleSource.js */, + 7A0E76F610BF08ED00A0276E /* InjectedScriptHost.cpp */, + 7A0E76F710BF08ED00A0276E /* InjectedScriptHost.h */, + 7A0E76F810BF08ED00A0276E /* InjectedScriptHost.idl */, + F31639691329481A00A649CB /* InjectedScriptManager.cpp */, + F316396A1329481A00A649CB /* InjectedScriptManager.h */, + AAB6054C15874C58007B5031 /* InjectedScriptModule.cpp */, + AAB6054D15874C58007B5031 /* InjectedScriptModule.h */, + 7A563F9512DF5C9100F4536D /* InjectedScriptSource.js */, + 1C435CD414E8545B004E10EA /* Inspector-0.1.json */, + 1C435CD514E8545B004E10EA /* Inspector-1.0.json */, + 1C435CD314E8544F004E10EA /* Inspector.json */, + 4F2D205312EAE7B3005C2874 /* InspectorAgent.cpp */, + 4F2D205212EAE7B3005C2874 /* InspectorAgent.h */, + B885E8D211E06DD2009FFBF4 /* InspectorApplicationCacheAgent.cpp */, + B885E8D311E06DD2009FFBF4 /* InspectorApplicationCacheAgent.h */, + 7AA51B6D1483B61600AD2752 /* InspectorBaseAgent.cpp */, + 7AA51B6C1483B61600AD2752 /* InspectorBaseAgent.h */, + AAD766E8157E502F00E85423 /* InspectorCanvasAgent.cpp */, + AAD766E9157E502F00E85423 /* InspectorCanvasAgent.h */, + AAD766EA157E502F00E85423 /* InspectorCanvasInstrumentation.h */, + 7A1F2B51126C61B20006A7E6 /* InspectorClient.cpp */, + 1C81B9580E97330800266E07 /* InspectorClient.h */, + F3335BF612E07DC300D33011 /* InspectorConsoleAgent.cpp */, + F3335BF712E07DC300D33011 /* InspectorConsoleAgent.h */, + F3F5CF1012ED81A80084C569 /* InspectorConsoleInstrumentation.h */, + 1C81B9570E97330800266E07 /* InspectorController.cpp */, + 1C81B9560E97330800266E07 /* InspectorController.h */, + F325A40814EE36FA007324E2 /* InspectorCounters.cpp */, + F325A40914EE36FA007324E2 /* InspectorCounters.h */, + 82AB1741124B99EC00C5069D /* InspectorCSSAgent.cpp */, + 82AB1742124B99EC00C5069D /* InspectorCSSAgent.h */, + 7AB0B1BE1211A62200A76940 /* InspectorDatabaseAgent.cpp */, + 7AB0B1BF1211A62200A76940 /* InspectorDatabaseAgent.h */, + F3F5CF1212ED81B30084C569 /* InspectorDatabaseInstrumentation.h */, + 41F062130F5F192600A07EAC /* InspectorDatabaseResource.cpp */, + 41F062120F5F192600A07EAC /* InspectorDatabaseResource.h */, + F33F053B120B0DA500E5743A /* InspectorDebuggerAgent.cpp */, + F33F053C120B0DA500E5743A /* InspectorDebuggerAgent.h */, + 7A2458791021EAF4000A00AA /* InspectorDOMAgent.cpp */, + 7A24587A1021EAF4000A00AA /* InspectorDOMAgent.h */, + F3D4C47612E07663003DA150 /* InspectorDOMDebuggerAgent.cpp */, + F3D4C47712E07663003DA150 /* InspectorDOMDebuggerAgent.h */, + 7A74ECB8101839A500BF939E /* InspectorDOMStorageAgent.cpp */, + 7A74ECB9101839A600BF939E /* InspectorDOMStorageAgent.h */, + 15D17D1E147231EB005EBCA6 /* InspectorFileSystemAgent.cpp */, + 15D17D1F147231EB005EBCA6 /* InspectorFileSystemAgent.h */, + 2277775F1345DEA9008EA455 /* InspectorFrontendChannel.h */, + F344C7121125B82C00F26EEE /* InspectorFrontendClient.h */, + F344C75711294FF600F26EEE /* InspectorFrontendClientLocal.cpp */, + F344C75211294D9D00F26EEE /* InspectorFrontendClientLocal.h */, + 7A0E770B10C00A8800A0276E /* InspectorFrontendHost.cpp */, + 7A0E770C10C00A8800A0276E /* InspectorFrontendHost.h */, + 7A0E770D10C00A8800A0276E /* InspectorFrontendHost.idl */, + 511293613D6DB4B52FAF973F /* InspectorHeapProfilerAgent.cpp */, + 511293623D85B4B52FAF973F /* InspectorHeapProfilerAgent.h */, + 7A54857D14E02D51006AE05A /* InspectorHistory.cpp */, + 7A54857E14E02D51006AE05A /* InspectorHistory.h */, + 7ACD88D114C08BD60084EDD2 /* InspectorIndexedDBAgent.cpp */, + 7ACD88D214C08BD60084EDD2 /* InspectorIndexedDBAgent.h */, + 4D273CF71669420800259CA1 /* InspectorInputAgent.cpp */, + 4D273CF81669420800259CA1 /* InspectorInputAgent.h */, + 20D629241253690B00081543 /* InspectorInstrumentation.cpp */, + 20D629251253690B00081543 /* InspectorInstrumentation.h */, + 71B1E123164048CC00B1880A /* InspectorLayerTreeAgent.cpp */, + 71B1E124164048CC00B1880A /* InspectorLayerTreeAgent.h */, + 7AA51DD3148506A900AD2752 /* InspectorMemoryAgent.cpp */, + 7AA51DD4148506A900AD2752 /* InspectorMemoryAgent.h */, + 7C522D4915B477E8009B7C95 /* InspectorOverlay.cpp */, + 7C522D4A15B478B2009B7C95 /* InspectorOverlay.h */, + 7A7256B915EB9F5B007323A7 /* InspectorOverlayPage.html */, + 4F6FDD621341DEDD001F8EE3 /* InspectorPageAgent.cpp */, + 4F6FDD631341DEDD001F8EE3 /* InspectorPageAgent.h */, + 9F0D6B2C121BFEBA006C0288 /* InspectorProfilerAgent.cpp */, + 9F0D6B2D121BFEBA006C0288 /* InspectorProfilerAgent.h */, + 82AB1771125C826700C5069D /* InspectorResourceAgent.cpp */, + 82AB1772125C826700C5069D /* InspectorResourceAgent.h */, + 7AA365ED12E7265400DCA242 /* InspectorRuntimeAgent.cpp */, + 7AF11A5912E727490061F23C /* InspectorRuntimeAgent.h */, + 4FA3B908125CD12100300BAD /* InspectorState.cpp */, + 4FA3B909125CD12200300BAD /* InspectorState.h */, + F3F68DA5143CAC5A00C2F887 /* InspectorStateClient.h */, + 82AB176F125C826700C5069D /* InspectorStyleSheet.cpp */, + 82AB1770125C826700C5069D /* InspectorStyleSheet.h */, + 82889B4A13C62392009A6156 /* InspectorStyleTextEditor.cpp */, + 82889B4B13C62392009A6156 /* InspectorStyleTextEditor.h */, + 754133A9102E00F400075D00 /* InspectorTimelineAgent.cpp */, + 754133A7102E00E800075D00 /* InspectorTimelineAgent.h */, + 4F3289B311A42AAB005ABE7E /* InspectorValues.cpp */, + 4F3289B411A42AAB005ABE7E /* InspectorValues.h */, + F3810C191365A49600ED6E33 /* InspectorWorkerAgent.cpp */, + F3810C1A1365A49600ED6E33 /* InspectorWorkerAgent.h */, + F375CC061150D300008DDB81 /* InspectorWorkerResource.h */, + F350B73413F1377D00880C43 /* InstrumentingAgents.cpp */, + F3ABFE0B130E9DA000E7F7D1 /* InstrumentingAgents.h */, + 1C81BA050E97348300266E07 /* JavaScriptCallFrame.idl */, + BCC64F5F0DCFB84E0081EF3B /* localizedStrings.js */, + 59C27F04138D28C10079B7E2 /* NetworkResourcesData.cpp */, + 59C27F06138D28CF0079B7E2 /* NetworkResourcesData.h */, + F382088A147D35F90010BC06 /* PageConsoleAgent.cpp */, + F382088B147D35F90010BC06 /* PageConsoleAgent.h */, + F34742DA134362F000531BC2 /* PageDebuggerAgent.cpp */, + F34742DB134362F000531BC2 /* PageDebuggerAgent.h */, + F382088C147D35F90010BC06 /* PageRuntimeAgent.cpp */, + F382088D147D35F90010BC06 /* PageRuntimeAgent.h */, + F39BE95912673BF400E0A674 /* ScriptArguments.cpp */, + F39BE95A12673BF400E0A674 /* ScriptArguments.h */, + 7AFD4A8A1131C2760035B883 /* ScriptBreakpoint.h */, + 416E75CA0EDF90C700360E1D /* ScriptCallFrame.cpp */, + 416E75C90EDF90C700360E1D /* ScriptCallFrame.h */, + 416E75BD0EDF8FD700360E1D /* ScriptCallStack.cpp */, + 416E75BC0EDF8FD700360E1D /* ScriptCallStack.h */, + 7AFD4FF3113277B60035B883 /* ScriptDebugListener.h */, + 9FA37EEF1172FD4100C4CD55 /* ScriptProfile.idl */, + 9FA37EF01172FD4100C4CD55 /* ScriptProfileNode.idl */, + 7553CFE7108F473F00EA281E /* TimelineRecordFactory.cpp */, + 7553CFE6108F473F00EA281E /* TimelineRecordFactory.h */, + 49140254168E02B4002D6C6A /* TimelineTraceEventProcessor.cpp */, + 49140255168E02B4002D6C6A /* TimelineTraceEventProcessor.h */, + F382088E147D35F90010BC06 /* WorkerConsoleAgent.cpp */, + F382088F147D35F90010BC06 /* WorkerConsoleAgent.h */, + F34742DE1343631F00531BC2 /* WorkerDebuggerAgent.cpp */, + F34742DF1343631F00531BC2 /* WorkerDebuggerAgent.h */, + F36E07A21358A8BE00AACBC9 /* WorkerInspectorController.cpp */, + F36E07A31358A8BE00AACBC9 /* WorkerInspectorController.h */, + F3820890147D35F90010BC06 /* WorkerRuntimeAgent.cpp */, + F3820891147D35F90010BC06 /* WorkerRuntimeAgent.h */, + ); + path = inspector; + sourceTree = ""; + tabWidth = 8; + usesTabs = 0; + }; + 1CDD44660BA9C80000F90147 /* Configurations */ = { + isa = PBXGroup; + children = ( + 1CDD45E60BA9C84600F90147 /* Base.xcconfig */, + 1CDD45E40BA9C84600F90147 /* DebugRelease.xcconfig */, + 449098B10F8F82520076A327 /* FeatureDefines.xcconfig */, + 1C904DF90BA9D2C80081E9D0 /* Version.xcconfig */, + 1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */, + E1BA66F21742BDCC00C20251 /* WebCoreTestShim.xcconfig */, + 4181707D1386EDF20057AAA4 /* WebCoreTestSupport.xcconfig */, + ); + path = Configurations; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 29A812040FBB9B4100510293 /* accessibility */ = { + isa = PBXGroup; + children = ( + AAA728EF16D1D8BC00D3BBC6 /* ios */, + 29A812050FBB9B5200510293 /* mac */, + 0F29C16D1300C2E2002D794E /* AccessibilityAllInOne.cpp */, + 2981CA9D131822EC00D12F2A /* AccessibilityARIAGrid.cpp */, + 29A812160FBB9C1D00510293 /* AccessibilityARIAGrid.h */, + 2981CA9E131822EC00D12F2A /* AccessibilityARIAGridCell.cpp */, + 29A812100FBB9C1D00510293 /* AccessibilityARIAGridCell.h */, + 2981CA9F131822EC00D12F2A /* AccessibilityARIAGridRow.cpp */, + 29A812150FBB9C1D00510293 /* AccessibilityARIAGridRow.h */, + 2981CAA0131822EC00D12F2A /* AccessibilityImageMapLink.cpp */, + 29A8121D0FBB9C1D00510293 /* AccessibilityImageMapLink.h */, + 2981CAA1131822EC00D12F2A /* AccessibilityList.cpp */, + 29A8120E0FBB9C1D00510293 /* AccessibilityList.h */, + 2981CAA2131822EC00D12F2A /* AccessibilityListBox.cpp */, + 29A812250FBB9C1D00510293 /* AccessibilityListBox.h */, + 2981CAA3131822EC00D12F2A /* AccessibilityListBoxOption.cpp */, + 29A812240FBB9C1D00510293 /* AccessibilityListBoxOption.h */, + 2981CAA4131822EC00D12F2A /* AccessibilityMediaControls.cpp */, + 07B0113E1032242200FBDC33 /* AccessibilityMediaControls.h */, + 76CDD2EC1103DA6600680521 /* AccessibilityMenuList.cpp */, + 76CDD2ED1103DA6600680521 /* AccessibilityMenuList.h */, + 76CDD2F01103DA6600680521 /* AccessibilityMenuListOption.cpp */, + 76CDD2F11103DA6600680521 /* AccessibilityMenuListOption.h */, + 76CDD2EE1103DA6600680521 /* AccessibilityMenuListPopup.cpp */, + 76CDD2EF1103DA6600680521 /* AccessibilityMenuListPopup.h */, + 29ACB213143E7498006BCA5F /* AccessibilityMockObject.cpp */, + 29ACB211143E7128006BCA5F /* AccessibilityMockObject.h */, + 2985709215CC532D006355CD /* AccessibilityNodeObject.cpp */, + 2985709315CC532D006355CD /* AccessibilityNodeObject.h */, + 2981CAA5131822EC00D12F2A /* AccessibilityObject.cpp */, + 29A812180FBB9C1D00510293 /* AccessibilityObject.h */, + A409C982116D0DDD007197BD /* AccessibilityProgressIndicator.cpp */, + A409C983116D0DDD007197BD /* AccessibilityProgressIndicator.h */, + 2981CAA6131822EC00D12F2A /* AccessibilityRenderObject.cpp */, + 29A8121B0FBB9C1D00510293 /* AccessibilityRenderObject.h */, + 2981CAA7131822EC00D12F2A /* AccessibilityScrollbar.cpp */, + 93C4F6E91108F9A50099D0DB /* AccessibilityScrollbar.h */, + 2981CAA8131822EC00D12F2A /* AccessibilityScrollView.cpp */, + 29489FC512C00F0300D83F0F /* AccessibilityScrollView.h */, + 2981CAA9131822EC00D12F2A /* AccessibilitySlider.cpp */, + 0709FC4D1025DEE30059CDBA /* AccessibilitySlider.h */, + 29D7BCF51444AF580070619C /* AccessibilitySpinButton.cpp */, + 29D7BCF91444AF7D0070619C /* AccessibilitySpinButton.h */, + AAC08CF015F941FC00F1E188 /* AccessibilitySVGRoot.cpp */, + AAC08CF115F941FC00F1E188 /* AccessibilitySVGRoot.h */, + 2981CAAA131822EC00D12F2A /* AccessibilityTable.cpp */, + 29A8120D0FBB9C1D00510293 /* AccessibilityTable.h */, + 2981CAAB131822EC00D12F2A /* AccessibilityTableCell.cpp */, + 29A812140FBB9C1D00510293 /* AccessibilityTableCell.h */, + 2981CAAC131822EC00D12F2A /* AccessibilityTableColumn.cpp */, + 29A812230FBB9C1D00510293 /* AccessibilityTableColumn.h */, + 2981CAAD131822EC00D12F2A /* AccessibilityTableHeaderContainer.cpp */, + 29A812210FBB9C1D00510293 /* AccessibilityTableHeaderContainer.h */, + 2981CAAE131822EC00D12F2A /* AccessibilityTableRow.cpp */, + 29A812130FBB9C1D00510293 /* AccessibilityTableRow.h */, + 2981CAAF131822EC00D12F2A /* AXObjectCache.cpp */, + 29A8121A0FBB9C1D00510293 /* AXObjectCache.h */, + ); + path = accessibility; + sourceTree = ""; + }; + 29A812050FBB9B5200510293 /* mac */ = { + isa = PBXGroup; + children = ( + 29A812440FBB9CA900510293 /* AccessibilityObjectMac.mm */, + 29A812470FBB9CA900510293 /* AXObjectCacheMac.mm */, + 29A812450FBB9CA900510293 /* WebAccessibilityObjectWrapperBase.h */, + 29A812460FBB9CA900510293 /* WebAccessibilityObjectWrapperBase.mm */, + AA478A7D16CD70C3007D1BB4 /* WebAccessibilityObjectWrapperMac.h */, + AA478A7E16CD70C3007D1BB4 /* WebAccessibilityObjectWrapperMac.mm */, + ); + path = mac; + sourceTree = ""; + }; + 2E4346310F546A6800B0F1BA /* workers */ = { + isa = PBXGroup; + children = ( + 41E1B1CA0FF5986900576B3B /* AbstractWorker.cpp */, + 41E1B1CB0FF5986900576B3B /* AbstractWorker.h */, + 41E1B1CC0FF5986900576B3B /* AbstractWorker.idl */, + 4162A44D101145AE00DFF3ED /* DedicatedWorkerGlobalScope.cpp */, + 4162A44E101145AE00DFF3ED /* DedicatedWorkerGlobalScope.h */, + 4162A44F101145AE00DFF3ED /* DedicatedWorkerGlobalScope.idl */, + 41A3D58C101C152D00316D07 /* DedicatedWorkerThread.cpp */, + 41A3D58D101C152D00316D07 /* DedicatedWorkerThread.h */, + 4167EBF3102962BA003D252A /* DefaultSharedWorkerRepository.cpp */, + 4167EBF4102962BA003D252A /* DefaultSharedWorkerRepository.h */, + 41E1B1CD0FF5986900576B3B /* SharedWorker.cpp */, + 41E1B1CE0FF5986900576B3B /* SharedWorker.h */, + 41E1B1CF0FF5986900576B3B /* SharedWorker.idl */, + 41D168DF10226E89009BC827 /* SharedWorkerGlobalScope.cpp */, + 41D168E010226E89009BC827 /* SharedWorkerGlobalScope.h */, + 41D168E110226E89009BC827 /* SharedWorkerGlobalScope.idl */, + E1B7841F1639CBBE0007B692 /* SharedWorkerRepository.cpp */, + 41D168E210226E89009BC827 /* SharedWorkerRepository.h */, + E1B7839B163740A70007B692 /* SharedWorkerStrategy.h */, + 41D168E510226E89009BC827 /* SharedWorkerThread.cpp */, + 41D168E610226E89009BC827 /* SharedWorkerThread.h */, + 2E4346330F546A8200B0F1BA /* Worker.cpp */, + 2E4346340F546A8200B0F1BA /* Worker.h */, + 2E4346350F546A8200B0F1BA /* Worker.idl */, + A3E2642E14748991005A8588 /* WorkerEventQueue.cpp */, + A3E2642F14748991005A8588 /* WorkerEventQueue.h */, + 2E4346360F546A8200B0F1BA /* WorkerGlobalScope.cpp */, + 2E4346370F546A8200B0F1BA /* WorkerGlobalScope.h */, + 2E4346380F546A8200B0F1BA /* WorkerGlobalScope.idl */, + 2E4346390F546A8200B0F1BA /* WorkerGlobalScopeProxy.h */, + 18F831B70FD48C7800D8C56B /* WorkerLoaderProxy.h */, + 2E43463A0F546A8200B0F1BA /* WorkerLocation.cpp */, + 2E43463B0F546A8200B0F1BA /* WorkerLocation.h */, + 2E43463C0F546A8200B0F1BA /* WorkerLocation.idl */, + 2E43463D0F546A8200B0F1BA /* WorkerMessagingProxy.cpp */, + 2E43463E0F546A8200B0F1BA /* WorkerMessagingProxy.h */, + 2E43463F0F546A8200B0F1BA /* WorkerObjectProxy.h */, + 416E29A5102FA962007FC14E /* WorkerReportingProxy.h */, + 2E4346400F546A8200B0F1BA /* WorkerRunLoop.cpp */, + 2E4346410F546A8200B0F1BA /* WorkerRunLoop.h */, + A7D6B3480F61104500B79FD1 /* WorkerScriptLoader.cpp */, + A7D6B3470F61104500B79FD1 /* WorkerScriptLoader.h */, + 2EA768030FE7126400AB9C8A /* WorkerScriptLoaderClient.h */, + 2E4346420F546A8200B0F1BA /* WorkerThread.cpp */, + 2E4346430F546A8200B0F1BA /* WorkerThread.h */, + ); + name = workers; + sourceTree = ""; + }; + 316FE1060E6E1D8400BF6088 /* animation */ = { + isa = PBXGroup; + children = ( + 316FE1070E6E1DA700BF6088 /* AnimationBase.cpp */, + 316FE1080E6E1DA700BF6088 /* AnimationBase.h */, + 316FE1090E6E1DA700BF6088 /* AnimationController.cpp */, + 316FE10A0E6E1DA700BF6088 /* AnimationController.h */, + 0F15DA890F3AAEE70000CE47 /* AnimationControllerPrivate.h */, + 316FE10B0E6E1DA700BF6088 /* CompositeAnimation.cpp */, + 316FE10C0E6E1DA700BF6088 /* CompositeAnimation.h */, + 78D02BC3154A18DF00B62D05 /* CSSPropertyAnimation.cpp */, + 78D02BC4154A18DF00B62D05 /* CSSPropertyAnimation.h */, + 316FE10D0E6E1DA700BF6088 /* ImplicitAnimation.cpp */, + 316FE10E0E6E1DA700BF6088 /* ImplicitAnimation.h */, + 316FE10F0E6E1DA700BF6088 /* KeyframeAnimation.cpp */, + 316FE1100E6E1DA700BF6088 /* KeyframeAnimation.h */, + ); + name = animation; + sourceTree = ""; + }; + 333F703D0FB49C16008E12A6 /* notifications */ = { + isa = PBXGroup; + children = ( + 97B38E23151C4264004622E9 /* DOMWindowNotifications.cpp */, + 97B38E24151C4264004622E9 /* DOMWindowNotifications.h */, + 97B38E25151C4264004622E9 /* DOMWindowNotifications.idl */, + 33503CC61017A1B1003B47E1 /* Notification.cpp */, + 333F704F0FB49CA2008E12A6 /* Notification.h */, + 333F704E0FB49CA2008E12A6 /* Notification.idl */, + 3390CA510FFC157B00921962 /* NotificationCenter.cpp */, + 3390CA520FFC157B00921962 /* NotificationCenter.h */, + 3390CA530FFC157B00921962 /* NotificationCenter.idl */, + 33503C9910179A74003B47E1 /* NotificationClient.h */, + 3128CA67147331520074C72A /* NotificationController.cpp */, + 3128CA6A147331630074C72A /* NotificationController.h */, + 31EC1DAC14FF26EA00C94662 /* NotificationPermissionCallback.h */, + 31EC1D5014FEFD0800C94662 /* NotificationPermissionCallback.idl */, + 97F8E661151D4A3F00D2D181 /* WorkerGlobalScopeNotifications.cpp */, + 97F8E662151D4A3F00D2D181 /* WorkerGlobalScopeNotifications.h */, + 97F8E663151D4A3F00D2D181 /* WorkerGlobalScopeNotifications.idl */, + ); + name = notifications; + sourceTree = ""; + }; + 33503C9C10179A9A003B47E1 /* Notifications */ = { + isa = PBXGroup; + children = ( + 33503C9F10179AD7003B47E1 /* JSNotification.cpp */, + 33503CA010179AD7003B47E1 /* JSNotification.h */, + 33503CA110179AD7003B47E1 /* JSNotificationCenter.cpp */, + 33503CA210179AD7003B47E1 /* JSNotificationCenter.h */, + 31EC1E2614FF60EE00C94662 /* JSNotificationPermissionCallback.cpp */, + 31EC1E2714FF60EE00C94662 /* JSNotificationPermissionCallback.h */, + ); + name = Notifications; + sourceTree = ""; + }; + 37DDCD9F1384501C0008B793 /* mhtml */ = { + isa = PBXGroup; + children = ( + 37DDCDA11384501C0008B793 /* MHTMLArchive.h */, + 37DDCDA31384501C0008B793 /* MHTMLParser.h */, + ); + path = mhtml; + sourceTree = ""; + }; + 4150F9ED12B6E0990008C860 /* shadow */ = { + isa = PBXGroup; + children = ( + 57B7919F14C6A62900F202D1 /* ContentDistributor.cpp */, + 57B791A014C6A62900F202D1 /* ContentDistributor.h */, + A7C9ABF61357A3BF00F5503F /* DetailsMarkerControl.cpp */, + A7C9ABF71357A3BF00F5503F /* DetailsMarkerControl.h */, + 57B791A714C6A63300F202D1 /* HTMLContentElement.cpp */, + 57B791A814C6A63300F202D1 /* HTMLContentElement.h */, + A7B7749614CF6353004044BB /* HTMLContentElement.idl */, + 57CF497214EE36D700ECFF14 /* InsertionPoint.cpp */, + 57CF497314EE36D700ECFF14 /* InsertionPoint.h */, + 417253A81354BBBC00360F2A /* MediaControlElements.cpp */, + 417253A91354BBBC00360F2A /* MediaControlElements.h */, + DE49B2FF165F2FC60010338D /* MediaControlElementTypes.cpp */, + DE49B300165F2FC60010338D /* MediaControlElementTypes.h */, + 1F3C3BE8135CAF3C00B8C1AC /* MediaControls.cpp */, + 1F3C3BE9135CAF3C00B8C1AC /* MediaControls.h */, + 4157AF7F12F1FB0400A8C6F5 /* MediaControlsApple.cpp */, + 4157AF7E12F1FB0400A8C6F5 /* MediaControlsApple.h */, + A78E526D1346BD1700AD9C31 /* MeterShadowElement.cpp */, + A78E526E1346BD1700AD9C31 /* MeterShadowElement.h */, + A715E650134BBBEC00D8E713 /* ProgressShadowElement.cpp */, + A715E651134BBBEC00D8E713 /* ProgressShadowElement.h */, + 4150F9F012B6E0E70008C860 /* SliderThumbElement.cpp */, + 4150F9EF12B6E0E70008C860 /* SliderThumbElement.h */, + 4512502015DCE37D002F84E2 /* SpinButtonElement.cpp */, + 4512502115DCE37D002F84E2 /* SpinButtonElement.h */, + 142B97C713138943008BEF4B /* TextControlInnerElements.cpp */, + 142B97C813138943008BEF4B /* TextControlInnerElements.h */, + ); + path = shadow; + sourceTree = ""; + }; + 417DA4CD13734204007C57FB /* testing */ = { + isa = PBXGroup; + children = ( + 41815C1B138319630057AAA4 /* js */, + 417DA4CF13734326007C57FB /* Internals.cpp */, + 417DA4CE13734326007C57FB /* Internals.h */, + 41813F9113818AD60057AAA4 /* Internals.idl */, + A7BF7EDC14C9175A0014489D /* InternalSettings.cpp */, + A7BF7EDD14C9175A0014489D /* InternalSettings.h */, + A7BF7EDE14C9175A0014489D /* InternalSettings.idl */, + A7BE7EDD14C9175A0014489D /* MallocStatistics.h */, + A7BE7EDE14C9175A0014489D /* MallocStatistics.idl */, + CD5393CB175DCCE600C07123 /* MemoryInfo.h */, + CD5393CC175DCCE600C07123 /* MemoryInfo.idl */, + CDC26B3C160A62B00026757B /* MockCDM.cpp */, + CDC26B3D160A62B00026757B /* MockCDM.h */, + EB081CD81696084400553730 /* TypeConversions.h */, + EB081CD91696084400553730 /* TypeConversions.idl */, + E1BA67191742BEF400C20251 /* WebCoreTestShimLibrary.cpp */, + ); + path = testing; + sourceTree = ""; + }; + 417DA71213735D90007C57FB /* Testing */ = { + isa = PBXGroup; + children = ( + 417DA71B13735DFA007C57FB /* JSInternals.cpp */, + 417DA71C13735DFA007C57FB /* JSInternals.h */, + A7B4EA7814C9348400C8F5BF /* JSInternalSettings.cpp */, + A7B4EA7914C9348400C8F5BF /* JSInternalSettings.h */, + 53ED3FDC167A88E7006762E6 /* JSInternalSettingsGenerated.cpp */, + 53ED3FDD167A88E7006762E6 /* JSInternalSettingsGenerated.h */, + A7B4EA6814C9348400C8F5BF /* JSMallocStatistics.cpp */, + A7B4EA6914C9348400C8F5BF /* JSMallocStatistics.h */, + CD5393D1175E018600C07123 /* JSMemoryInfo.cpp */, + CD5393D2175E018600C07123 /* JSMemoryInfo.h */, + EBF5121A1696496C0056BD25 /* JSTypeConversions.cpp */, + EBF5121B1696496C0056BD25 /* JSTypeConversions.h */, + ); + name = Testing; + sourceTree = ""; + }; + 41815C1B138319630057AAA4 /* js */ = { + isa = PBXGroup; + children = ( + 41815C1C138319830057AAA4 /* WebCoreTestSupport.cpp */, + 41815C1D138319830057AAA4 /* WebCoreTestSupport.h */, + ); + path = js; + sourceTree = ""; + }; + 439046C212DA25CE00AF80A2 /* mathml */ = { + isa = PBXGroup; + children = ( + 439046C312DA25E800AF80A2 /* RenderMathMLBlock.cpp */, + 439046C412DA25E800AF80A2 /* RenderMathMLBlock.h */, + 439046C512DA25E800AF80A2 /* RenderMathMLFenced.cpp */, + 439046C612DA25E800AF80A2 /* RenderMathMLFenced.h */, + 439046C712DA25E800AF80A2 /* RenderMathMLFraction.cpp */, + 439046C812DA25E800AF80A2 /* RenderMathMLFraction.h */, + 439046C912DA25E800AF80A2 /* RenderMathMLMath.cpp */, + 439046CA12DA25E800AF80A2 /* RenderMathMLMath.h */, + 439046CB12DA25E800AF80A2 /* RenderMathMLOperator.cpp */, + 439046CC12DA25E800AF80A2 /* RenderMathMLOperator.h */, + 439046CD12DA25E800AF80A2 /* RenderMathMLRoot.cpp */, + 439046CE12DA25E800AF80A2 /* RenderMathMLRoot.h */, + 439046CF12DA25E800AF80A2 /* RenderMathMLRow.cpp */, + 439046D012DA25E800AF80A2 /* RenderMathMLRow.h */, + 439046D112DA25E800AF80A2 /* RenderMathMLSquareRoot.cpp */, + 439046D212DA25E800AF80A2 /* RenderMathMLSquareRoot.h */, + 439046D312DA25E800AF80A2 /* RenderMathMLSubSup.cpp */, + 439046D412DA25E800AF80A2 /* RenderMathMLSubSup.h */, + 439046D512DA25E800AF80A2 /* RenderMathMLUnderOver.cpp */, + 439046D612DA25E800AF80A2 /* RenderMathMLUnderOver.h */, + ); + name = mathml; + sourceTree = ""; + }; + 449195900FBE175B00D9F824 /* Exports */ = { + isa = PBXGroup; + children = ( + 5D87BB8211E3ED8600702B6F /* ExportFileGenerator.cpp */, + 5D4B8C5211E52C8B00BBB62F /* WebCore.exp.in */, + ); + name = Exports; + sourceTree = ""; + }; + 49484FAE102CF01E00187DD3 /* canvas */ = { + isa = PBXGroup; + children = ( + 49EECDCC10503C2300099FAB /* ArrayBuffer.idl */, + 49EECDC910503C2300099FAB /* ArrayBufferView.idl */, + 6E4E91A710F7FB3100A2779C /* CanvasContextAttributes.cpp */, + 6E4E91A810F7FB3100A2779C /* CanvasContextAttributes.h */, + 49484FB3102CF23C00187DD3 /* CanvasGradient.cpp */, + 49484FB4102CF23C00187DD3 /* CanvasGradient.h */, + 49484FB5102CF23C00187DD3 /* CanvasGradient.idl */, + FB91391E16AE4B0B001FE682 /* CanvasPathMethods.cpp */, + FB91391F16AE4B0B001FE682 /* CanvasPathMethods.h */, + 49484FB6102CF23C00187DD3 /* CanvasPattern.cpp */, + 49484FB7102CF23C00187DD3 /* CanvasPattern.h */, + 49484FB8102CF23C00187DD3 /* CanvasPattern.idl */, + 49484FB7102CF23C00188DD3 /* CanvasProxy.h */, + 49484FB8102CF23C00188DD3 /* CanvasProxy.idl */, + 49C7B9BC1042D32F0009D447 /* CanvasRenderingContext.cpp */, + 49C7B9BD1042D32F0009D447 /* CanvasRenderingContext.h */, + 49C7B9BE1042D32F0009D447 /* CanvasRenderingContext.idl */, + 49484FBC102CF23C00187DD3 /* CanvasRenderingContext2D.cpp */, + 49484FBD102CF23C00187DD3 /* CanvasRenderingContext2D.h */, + 49484FBE102CF23C00187DD3 /* CanvasRenderingContext2D.idl */, + 49484FBF102CF23C00187DD3 /* CanvasStyle.cpp */, + 49484FC0102CF23C00187DD3 /* CanvasStyle.h */, + 2E97CCE712939CB800C5C8FF /* DataView.cpp */, + 2E97CCE812939CB800C5C8FF /* DataView.h */, + 2E97CCE912939CB800C5C8FF /* DataView.idl */, + FB91392016AE4B0B001FE682 /* DOMPath.h */, + FB91392116AE4B0B001FE682 /* DOMPath.idl */, + A024574E16CEAA27000E5671 /* EXTDrawBuffers.cpp */, + A024574F16CEAA27000E5671 /* EXTDrawBuffers.h */, + A024575016CEAA27000E5671 /* EXTDrawBuffers.idl */, + 7728694B14F8882500F484DC /* EXTTextureFilterAnisotropic.cpp */, + 7728694C14F8882500F484DC /* EXTTextureFilterAnisotropic.h */, + 7728694D14F8882500F484DC /* EXTTextureFilterAnisotropic.idl */, + 49EECDCF10503C2300099FAB /* Float32Array.idl */, + 6EBC5D80138B4C4E00A0CF8A /* Float64Array.idl */, + 49EECDD510503C2300099FAB /* Int16Array.idl */, + 49EECDD210503C2300099FAB /* Int32Array.idl */, + 49C7B9AD1042D32E0009D447 /* Int8Array.idl */, + 7E5D7A73161D3F8F00896C34 /* OESElementIndexUint.cpp */, + 7E5D7A74161D3F8F00896C34 /* OESElementIndexUint.h */, + 9001773D12E0347800648462 /* OESStandardDerivatives.cpp */, + 9001773E12E0347800648462 /* OESStandardDerivatives.h */, + 9001773F12E0347800648462 /* OESStandardDerivatives.idl */, + 6EBF0E4512A8926100DB1709 /* OESTextureFloat.cpp */, + 6EBF0E4612A8926100DB1709 /* OESTextureFloat.h */, + 6EBF0E4712A8926100DB1709 /* OESTextureFloat.idl */, + A31C4E4C16E02AA6002F7957 /* OESTextureHalfFloat.cpp */, + A31C4E4E16E02AB4002F7957 /* OESTextureHalfFloat.h */, + A31C4E5016E02AC5002F7957 /* OESTextureHalfFloat.idl */, + 77A17A6E12F28182004E02F6 /* OESVertexArrayObject.cpp */, + 77A17A6F12F28182004E02F6 /* OESVertexArrayObject.h */, + 77A17A7012F28182004E02F6 /* OESVertexArrayObject.idl */, + 49EECDDE10503C2400099FAB /* Uint16Array.idl */, + 49EECDDB10503C2300099FAB /* Uint32Array.idl */, + 49EECDD810503C2300099FAB /* Uint8Array.idl */, + 91A3905814C0F4B900F67901 /* Uint8ClampedArray.idl */, + A7D20F6B107F438B00A80392 /* WebGLActiveInfo.h */, + A7D20F3B107F373800A80392 /* WebGLActiveInfo.idl */, + 49C7B9A81042D32E0009D447 /* WebGLBuffer.cpp */, + 49C7B9A91042D32E0009D447 /* WebGLBuffer.h */, + 49C7B9AA1042D32E0009D447 /* WebGLBuffer.idl */, + 7E66E23116D6EB6C00F7E7FF /* WebGLCompressedTextureATC.cpp */, + 7E66E23216D6EB6C00F7E7FF /* WebGLCompressedTextureATC.h */, + 7EA30F6216DFD62700257D0B /* WebGLCompressedTextureATC.idl */, + 7E66E23117E6EB6C00F7E7FF /* WebGLCompressedTexturePVRTC.cpp */, + 7E66E23217E6EB6C00F7E7FF /* WebGLCompressedTexturePVRTC.h */, + 7EA30F6217EFD62700257D0B /* WebGLCompressedTexturePVRTC.idl */, + 6E3FAE8C14733FDB00E42306 /* WebGLCompressedTextureS3TC.cpp */, + 6E3FAE8D14733FDB00E42306 /* WebGLCompressedTextureS3TC.h */, + 6E3FAE9014733FEA00E42306 /* WebGLCompressedTextureS3TC.idl */, + 6E4E91A910F7FB3100A2779C /* WebGLContextAttributes.cpp */, + 6E4E91AA10F7FB3100A2779C /* WebGLContextAttributes.h */, + 6E4E91AB10F7FB3100A2779C /* WebGLContextAttributes.idl */, + 93F6F1EA127F70B10055CB06 /* WebGLContextEvent.cpp */, + 93F6F1EB127F70B10055CB06 /* WebGLContextEvent.h */, + 93F6F1EC127F70B10055CB06 /* WebGLContextEvent.idl */, + 01D3CF7C14BD0A3000FE9970 /* WebGLContextGroup.cpp */, + 01D3CF7D14BD0A3000FE9970 /* WebGLContextGroup.h */, + 01D3CF7E14BD0A3000FE9970 /* WebGLContextObject.cpp */, + 01D3CF7F14BD0A3000FE9970 /* WebGLContextObject.h */, + A0EE0DF1144F825500F80B0D /* WebGLDebugRendererInfo.cpp */, + A0EE0DF2144F825500F80B0D /* WebGLDebugRendererInfo.h */, + A0EE0DF0144F824300F80B0D /* WebGLDebugRendererInfo.idl */, + A0EE0DF3144F825500F80B0D /* WebGLDebugShaders.cpp */, + A0EE0DF4144F825500F80B0D /* WebGLDebugShaders.h */, + A0EE0DEF144F823200F80B0D /* WebGLDebugShaders.idl */, + 6E3FAE8C14733FDB00E42307 /* WebGLDepthTexture.cpp */, + 6E3FAE8D14733FDB00E42307 /* WebGLDepthTexture.h */, + 6E3FAE9014733FEA00E42307 /* WebGLDepthTexture.idl */, + 6EBF0E5212A8929800DB1709 /* WebGLExtension.cpp */, + 6EBF0E5312A8929800DB1709 /* WebGLExtension.h */, + 49C7B9AE1042D32E0009D447 /* WebGLFramebuffer.cpp */, + 49C7B9AF1042D32E0009D447 /* WebGLFramebuffer.h */, + 49C7B9B01042D32E0009D447 /* WebGLFramebuffer.idl */, + 6E47E65E10B7944B00B186C8 /* WebGLGetInfo.cpp */, + 6E47E65F10B7944B00B186C8 /* WebGLGetInfo.h */, + 93F1D5B712D532C400832BEC /* WebGLLoseContext.cpp */, + 93F1D5B812D532C400832BEC /* WebGLLoseContext.h */, + 93F1D5B912D532C400832BEC /* WebGLLoseContext.idl */, + 49C7B9B41042D32F0009D447 /* WebGLObject.cpp */, + 49C7B9B51042D32F0009D447 /* WebGLObject.h */, + 49C7B9B61042D32F0009D447 /* WebGLProgram.cpp */, + 49C7B9B71042D32F0009D447 /* WebGLProgram.h */, + 49C7B9B81042D32F0009D447 /* WebGLProgram.idl */, + 49C7B9B91042D32F0009D447 /* WebGLRenderbuffer.cpp */, + 49C7B9BA1042D32F0009D447 /* WebGLRenderbuffer.h */, + 49C7B9BB1042D32F0009D447 /* WebGLRenderbuffer.idl */, + 49C7B9BF1042D32F0009D447 /* WebGLRenderingContext.cpp */, + 49C7B9C01042D32F0009D447 /* WebGLRenderingContext.h */, + 49C7B9C11042D32F0009D447 /* WebGLRenderingContext.idl */, + 49C7B9C21042D32F0009D447 /* WebGLShader.cpp */, + 49C7B9C31042D32F0009D447 /* WebGLShader.h */, + 49C7B9C41042D32F0009D447 /* WebGLShader.idl */, + A08CF153152B77B3009C5775 /* WebGLShaderPrecisionFormat.cpp */, + A07D3357152B632D001B6393 /* WebGLShaderPrecisionFormat.h */, + A07D3359152B633E001B6393 /* WebGLShaderPrecisionFormat.idl */, + 01D3CF8014BD0A3000FE9970 /* WebGLSharedObject.cpp */, + 01D3CF8114BD0A3000FE9970 /* WebGLSharedObject.h */, + 49C7B9C51042D32F0009D447 /* WebGLTexture.cpp */, + 49C7B9C61042D32F0009D447 /* WebGLTexture.h */, + 49C7B9C71042D32F0009D447 /* WebGLTexture.idl */, + 0C3F1F5710C8871200D72CE1 /* WebGLUniformLocation.cpp */, + 0C3F1F5810C8871200D72CE1 /* WebGLUniformLocation.h */, + 0C3F1F5910C8871200D72CE1 /* WebGLUniformLocation.idl */, + 77A17A7412F28642004E02F6 /* WebGLVertexArrayObjectOES.cpp */, + 77A17A7512F28642004E02F6 /* WebGLVertexArrayObjectOES.h */, + 77A17A7612F28642004E02F6 /* WebGLVertexArrayObjectOES.idl */, + ); + name = canvas; + sourceTree = ""; + }; + 4958781E12A57DBC007238AC /* mac */ = { + isa = PBXGroup; + children = ( + 2917B565147349950052C9D0 /* LayerFlushSchedulerMac.cpp */, + 93F72AF11666EDFC002A02BD /* LayerPool.h */, + 93F72AF21666EDFC002A02BD /* LayerPool.mm */, + 4958781F12A57DDF007238AC /* PlatformCAAnimationMac.mm */, + 0F13163F16ED0CDE0035CC04 /* PlatformCAFiltersMac.mm */, + 4958782012A57DDF007238AC /* PlatformCALayerMac.mm */, + 1AA71609149BC4DB0016EC19 /* TileController.h */, + 1AA71608149BC4DA0016EC19 /* TileController.mm */, + 0F580FA11496939100FB5BD8 /* WebTiledBackingLayer.h */, + 0F580FA21496939100FB5BD8 /* WebTiledBackingLayer.mm */, + 1AA71625149BFFB20016EC19 /* WebTileLayer.h */, + 1AA7161C149BF2FA0016EC19 /* WebTileLayer.mm */, + ); + name = mac; + sourceTree = ""; + }; + 498770C11242C50D002226BA /* gpu */ = { + isa = PBXGroup; + children = ( + 498771161242CD7F002226BA /* mac */, + 498770C21242C535002226BA /* DrawingBuffer.cpp */, + 498770C31242C535002226BA /* DrawingBuffer.h */, + 498770D01242C535002226BA /* Shader.h */, + 498770D71242C535002226BA /* Texture.cpp */, + 498770D81242C535002226BA /* Texture.h */, + 498770D91242C535002226BA /* TilingData.cpp */, + 498770DA1242C535002226BA /* TilingData.h */, + ); + name = gpu; + sourceTree = ""; + }; + 498771161242CD7F002226BA /* mac */ = { + isa = PBXGroup; + children = ( + 498771521243F9FA002226BA /* DrawingBufferMac.mm */, + ); + name = mac; + sourceTree = ""; + }; + 499B3EC0128CCC1800E726C2 /* ca */ = { + isa = PBXGroup; + children = ( + 4958781E12A57DBC007238AC /* mac */, + 499B3ED4128CD31400E726C2 /* GraphicsLayerCA.cpp */, + 499B3ED5128CD31400E726C2 /* GraphicsLayerCA.h */, + 2917B55E1473496C0052C9D0 /* LayerFlushScheduler.cpp */, + 2917B55F1473496C0052C9D0 /* LayerFlushScheduler.h */, + 2917B5601473496C0052C9D0 /* LayerFlushSchedulerClient.h */, + 499B3EDC128DB50100E726C2 /* PlatformCAAnimation.h */, + 0F13163D16ED0CC80035CC04 /* PlatformCAFilters.h */, + 499B3EC3128CCC4700E726C2 /* PlatformCALayer.h */, + 493E5E0812D6420500020081 /* PlatformCALayerClient.h */, + 494BC40C12AEDD9E00743BD2 /* TransformationMatrixCA.cpp */, + ); + name = ca; + sourceTree = ""; + }; + 49E911B20EF86D27009D0CAF /* transforms */ = { + isa = PBXGroup; + children = ( + 84D0C4031115F1D40018AA34 /* AffineTransform.cpp */, + 84D0C4051115F1EA0018AA34 /* AffineTransform.h */, + 49E911B50EF86D47009D0CAF /* IdentityTransformOperation.h */, + 49D5DC270F423A73008F20FD /* Matrix3DTransformOperation.cpp */, + 49D5DC280F423A73008F20FD /* Matrix3DTransformOperation.h */, + 49E911B60EF86D47009D0CAF /* MatrixTransformOperation.cpp */, + 49E911B70EF86D47009D0CAF /* MatrixTransformOperation.h */, + 49D5DC290F423A73008F20FD /* PerspectiveTransformOperation.cpp */, + 49D5DC2A0F423A73008F20FD /* PerspectiveTransformOperation.h */, + 49E911B80EF86D47009D0CAF /* RotateTransformOperation.cpp */, + 49E911B90EF86D47009D0CAF /* RotateTransformOperation.h */, + 49E911BA0EF86D47009D0CAF /* ScaleTransformOperation.cpp */, + 49E911BB0EF86D47009D0CAF /* ScaleTransformOperation.h */, + 49E911BC0EF86D47009D0CAF /* SkewTransformOperation.cpp */, + 49E911BD0EF86D47009D0CAF /* SkewTransformOperation.h */, + 849F77750EFEC6200090849D /* StrokeStyleApplier.h */, + 49E911B30EF86D47009D0CAF /* TransformationMatrix.cpp */, + 49E911B40EF86D47009D0CAF /* TransformationMatrix.h */, + 49E911BE0EF86D47009D0CAF /* TransformOperation.h */, + 49E911BF0EF86D47009D0CAF /* TransformOperations.cpp */, + 49E911C00EF86D47009D0CAF /* TransformOperations.h */, + 4945BFD113CF809000CC3B38 /* TransformState.cpp */, + 4945BFD213CF809000CC3B38 /* TransformState.h */, + 49E911C10EF86D47009D0CAF /* TranslateTransformOperation.cpp */, + 49E911C20EF86D47009D0CAF /* TranslateTransformOperation.h */, + ); + name = transforms; + sourceTree = ""; + }; + 49E912A40EFAC8E6009D0CAF /* animation */ = { + isa = PBXGroup; + children = ( + 49E912A50EFAC906009D0CAF /* Animation.cpp */, + 49E912A60EFAC906009D0CAF /* Animation.h */, + 49E912A70EFAC906009D0CAF /* AnimationList.cpp */, + 49E912A80EFAC906009D0CAF /* AnimationList.h */, + 0F580FAE149800D400FB5BD8 /* AnimationUtilities.h */, + 49E912A90EFAC906009D0CAF /* TimingFunction.h */, + ); + name = animation; + sourceTree = ""; + }; + 5126E6B60A2E3AEF005C29FA /* icon */ = { + isa = PBXGroup; + children = ( + 97E4028D13A696ED00913D67 /* IconController.cpp */, + 97E4028E13A696ED00913D67 /* IconController.h */, + 5126E6B90A2E3B12005C29FA /* IconDatabase.cpp */, + 5126E6BA0A2E3B12005C29FA /* IconDatabase.h */, + 516953951329A3C800B92D04 /* IconDatabaseBase.cpp */, + 516953961329A3C800B92D04 /* IconDatabaseBase.h */, + 51E1ECB80C91C90400DC255B /* IconDatabaseClient.h */, + 513F14510AB634C400094DDF /* IconLoader.cpp */, + 513F14520AB634C400094DDF /* IconLoader.h */, + 51E1ECBA0C91C90400DC255B /* IconRecord.cpp */, + 51E1ECBB0C91C90400DC255B /* IconRecord.h */, + 51E1ECBC0C91C90400DC255B /* PageURLRecord.cpp */, + 51E1ECBD0C91C90400DC255B /* PageURLRecord.h */, + ); + path = icon; + sourceTree = ""; + }; + 512DD8E80D91E691000F89EE /* archive */ = { + isa = PBXGroup; + children = ( + 512DD8E90D91E6AF000F89EE /* cf */, + 37DDCD9F1384501C0008B793 /* mhtml */, + 37DDCD9D13844FFA0008B793 /* Archive.cpp */, + 512DD8EC0D91E6AF000F89EE /* Archive.h */, + 512DD8F00D91E6AF000F89EE /* ArchiveFactory.cpp */, + 512DD8F30D91E6AF000F89EE /* ArchiveFactory.h */, + 512DD8F10D91E6AF000F89EE /* ArchiveResource.cpp */, + 512DD8F20D91E6AF000F89EE /* ArchiveResource.h */, + 512DD8ED0D91E6AF000F89EE /* ArchiveResourceCollection.cpp */, + 512DD8EE0D91E6AF000F89EE /* ArchiveResourceCollection.h */, + ); + path = archive; + sourceTree = ""; + }; + 512DD8E90D91E6AF000F89EE /* cf */ = { + isa = PBXGroup; + children = ( + 512DD8EA0D91E6AF000F89EE /* LegacyWebArchive.cpp */, + 512DD8EB0D91E6AF000F89EE /* LegacyWebArchive.h */, + 51B2417A0D931F3F00E83F5C /* LegacyWebArchiveMac.mm */, + ); + path = cf; + sourceTree = ""; + }; + 516030090CC4245400C8AC25 /* posix */ = { + isa = PBXGroup; + children = ( + 5160300A0CC4251200C8AC25 /* FileSystemPOSIX.cpp */, + ); + path = posix; + sourceTree = ""; + }; + 5160F4920B0AA71500C1D2AF /* mac */ = { + isa = PBXGroup; + children = ( + 5160F4970B0AA75F00C1D2AF /* HistoryItemMac.mm */, + ); + name = mac; + sourceTree = ""; + }; + 51741D080B07257000ED442C /* history */ = { + isa = PBXGroup; + children = ( + 5160F4920B0AA71500C1D2AF /* mac */, + BCA8C81D11E3D36900812FB7 /* BackForwardController.cpp */, + BCA8C81C11E3D36900812FB7 /* BackForwardController.h */, + 51741D0B0B07259A00ED442C /* BackForwardList.h */, + BCA8CA5D11E4E6D100812FB7 /* BackForwardListImpl.cpp */, + BCA8CA5E11E4E6D100812FB7 /* BackForwardListImpl.h */, + 51C0AA400F2AA15E001648C2 /* CachedFrame.cpp */, + 51C0AA380F2AA10A001648C2 /* CachedFrame.h */, + 51CBFC980D10E483002DBF51 /* CachedFramePlatformData.h */, + 510184680B08602A004A825F /* CachedPage.cpp */, + 510184670B08602A004A825F /* CachedPage.h */, + 51741D0E0B07259A00ED442C /* HistoryItem.cpp */, + 51741D0D0B07259A00ED442C /* HistoryItem.h */, + 1477E7740BF4134A00152872 /* PageCache.cpp */, + 1477E7750BF4134A00152872 /* PageCache.h */, + ); + path = history; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 59B5977111086556007159E8 /* jsc */ = { + isa = PBXGroup; + children = ( + 59B597721108656B007159E8 /* BridgeJSC.cpp */, + 59B5977411086579007159E8 /* BridgeJSC.h */, + ); + name = jsc; + sourceTree = ""; + }; + 59C77F101054591C00506104 /* mock */ = { + isa = PBXGroup; + children = ( + 59309A1011F4AE5800250603 /* DeviceOrientationClientMock.cpp */, + 59309A1211F4AE6A00250603 /* DeviceOrientationClientMock.h */, + AAE27B7416CBFC0D00623043 /* PlatformSpeechSynthesizerMock.cpp */, + AAE27B7516CBFC0D00623043 /* PlatformSpeechSynthesizerMock.h */, + 0FE71403142170B800DB33BA /* ScrollbarThemeMock.cpp */, + 0FE71404142170B800DB33BA /* ScrollbarThemeMock.h */, + ); + name = mock; + sourceTree = ""; + }; + 5DA5E0F9102B950400088CF9 /* WebSockets */ = { + isa = PBXGroup; + children = ( + 51FB5503113E3E9100821176 /* JSCloseEvent.cpp */, + 51FB5502113E3E9100821176 /* JSCloseEvent.h */, + 5DA5E0FA102B953800088CF9 /* JSWebSocket.cpp */, + 5DA5E0FB102B953800088CF9 /* JSWebSocket.h */, + ); + name = WebSockets; + sourceTree = ""; + }; + 5DCF83690D59157800953BC6 /* plugins */ = { + isa = PBXGroup; + children = ( + A9C6E4E10D745E05006442E9 /* DOMMimeType.cpp */, + A9C6E4E20D745E05006442E9 /* DOMMimeType.h */, + A9C6E65E0D7466F2006442E9 /* DOMMimeType.idl */, + A9C6E4E50D745E18006442E9 /* DOMMimeTypeArray.cpp */, + A9C6E4E60D745E18006442E9 /* DOMMimeTypeArray.h */, + A9C6E65F0D746700006442E9 /* DOMMimeTypeArray.idl */, + A9C6E4E90D745E2B006442E9 /* DOMPlugin.cpp */, + A9C6E4EA0D745E2B006442E9 /* DOMPlugin.h */, + A9C6E6600D74670C006442E9 /* DOMPlugin.idl */, + A9C6E4ED0D745E38006442E9 /* DOMPluginArray.cpp */, + A9C6E4EE0D745E38006442E9 /* DOMPluginArray.h */, + A9C6E6610D74671E006442E9 /* DOMPluginArray.idl */, + 1A927FCF1416A15B003A83C8 /* npapi.h */, + 1A219B3A0DCA87AB0040E3A0 /* npfunctions.h */, + 1A927FD01416A15B003A83C8 /* npruntime.h */, + 1A927FD11416A15B003A83C8 /* nptypes.h */, + A9C6E4F10D745E48006442E9 /* PluginData.cpp */, + A9C6E4F20D745E48006442E9 /* PluginData.h */, + 1ADA140E0E1AE5D900023EE5 /* PluginMainThreadScheduler.cpp */, + 1ADA140F0E1AE5D900023EE5 /* PluginMainThreadScheduler.h */, + 1AA8798F11CBE846003C664F /* PluginStrategy.h */, + 0AFDAC3C10F5448C00E1F3D2 /* PluginViewBase.h */, + 76FF17E211235673001D61B5 /* PluginViewNone.cpp */, + ); + path = plugins; + sourceTree = ""; + }; + 656580EC09D12B20000E61D7 /* Derived Sources */ = { + isa = PBXGroup; + children = ( + 656581AC09D14EE6000E61D7 /* CharsetData.cpp */, + E406F3FB1198307D009D59D6 /* ColorData.cpp */, + 6565814409D13043000E61D7 /* CSSGrammar.cpp */, + 650F53DB09D15DDA00C9B0C8 /* CSSGrammar.h */, + E41EA038119836DB00710BC5 /* CSSPropertyNames.cpp */, + 656580EE09D12B20000E61D7 /* CSSPropertyNames.gperf */, + 656580EF09D12B20000E61D7 /* CSSPropertyNames.h */, + E41EA0391198374900710BC5 /* CSSValueKeywords.cpp */, + 6565814709D13043000E61D7 /* CSSValueKeywords.gperf */, + 6565814809D13043000E61D7 /* CSSValueKeywords.h */, + 9B3A8871145632F9003AE8F5 /* DOMDOMSettableTokenList.h */, + E1C6CFC21746D293007B87A1 /* DOMWindowConstructors.idl */, + 9766504E144FBFFE00F6BB51 /* EventFactory.cpp */, + 970B72A5145008EB00F00A37 /* EventHeaders.h */, + 970B7289144FFAC600F00A37 /* EventInterfaces.h */, + 97AA3CA3145237CC003E1DA6 /* EventTargetHeaders.h */, + 97AA3CA4145237CC003E1DA6 /* EventTargetInterfaces.h */, + 973DC63D145A9409002842C2 /* ExceptionCodeDescription.cpp */, + 973DC63E145A9409002842C2 /* ExceptionCodeDescription.h */, + 9767CE09145ABC12005E64DB /* ExceptionHeaders.h */, + 9767CE0A145ABC13005E64DB /* ExceptionInterfaces.h */, + A17C81200F2A5CF7005DAAEB /* HTMLElementFactory.cpp */, + A17C81210F2A5CF7005DAAEB /* HTMLElementFactory.h */, + A8BC04911214F69600B5F122 /* HTMLEntityTable.cpp */, + A8D06B380A265DCD005E7203 /* HTMLNames.cpp */, + A8D06B370A265DCD005E7203 /* HTMLNames.h */, + 53E29E5C167A8A1900586D3D /* InternalSettingsGenerated.cpp */, + 53E29E5D167A8A1900586D3D /* InternalSettingsGenerated.h */, + 409EBDC416B7F3CA00CBA3FC /* JSCSSFontFaceLoadEvent.cpp */, + 409EBDC216B7F3A600CBA3FC /* JSCSSFontFaceLoadEvent.h */, + 40ECAE8016B8B68A00C36103 /* JSDOMError.cpp */, + 40ECAE7D16B8B67200C36103 /* JSDOMError.h */, + 409EBDBF16B7F38E00CBA3FC /* JSFontLoader.h */, + 938E65F609F0985D008A48EC /* JSHTMLElementWrapperFactory.cpp */, + 938E65F009F09840008A48EC /* JSHTMLElementWrapperFactory.h */, + 8574D1F10ADE6122004CBA11 /* JSSVGElementWrapperFactory.cpp */, + 8574D1F20ADE6122004CBA11 /* JSSVGElementWrapperFactory.h */, + FABE72FB1059C21100D999DD /* MathMLElementFactory.cpp */, + 44A28AAB12DFB8AC00AE923B /* MathMLElementFactory.h */, + FABE72FC1059C21100D999DD /* MathMLNames.cpp */, + 44A28AAE12DFB8BF00AE923B /* MathMLNames.h */, + 71E2183817359FB8006E6E4D /* PlugInsResources.h */, + 71E2183917359FB8006E6E4D /* PlugInsResourcesData.cpp */, + 53EF766A16530A61004CBE49 /* SettingsMacros.h */, + 656581E609D1508D000E61D7 /* SVGElementFactory.cpp */, + 656581E709D1508D000E61D7 /* SVGElementFactory.h */, + 656581E809D1508D000E61D7 /* SVGNames.cpp */, + 656581E909D1508D000E61D7 /* SVGNames.h */, + 656581AE09D14EE6000E61D7 /* UserAgentStyleSheets.h */, + 656581AF09D14EE6000E61D7 /* UserAgentStyleSheetsData.cpp */, + 1A1414B313A0F0500019996C /* WebKitFontFamilyNames.cpp */, + 1A1414B413A0F0500019996C /* WebKitFontFamilyNames.h */, + 656581EA09D1508D000E61D7 /* XLinkNames.cpp */, + 656581EB09D1508D000E61D7 /* XLinkNames.h */, + A833C80A0A2CF25600D57664 /* XMLNames.cpp */, + A833C80B0A2CF25600D57664 /* XMLNames.h */, + E15A36D81104572700B7B639 /* XMLNSNames.cpp */, + E15A36D61104572000B7B639 /* XMLNSNames.h */, + 1A7629D30A07425100989F5B /* XPathGrammar.cpp */, + 1A7629D40A07425100989F5B /* XPathGrammar.h */, + ); + name = "Derived Sources"; + path = DerivedSources/WebCore; + sourceTree = BUILT_PRODUCTS_DIR; + tabWidth = 4; + usesTabs = 0; + }; + 656B84D70AEA1CE900A095B4 /* network */ = { + isa = PBXGroup; + children = ( + B2F34FE70E82F81700F627CD /* cf */, + 656B84E70AEA1DAE00A095B4 /* mac */, + 934F71370D5A6EFF00018D69 /* AuthenticationChallengeBase.cpp */, + 934F71390D5A6F1000018D69 /* AuthenticationChallengeBase.h */, + E124748310AA161D00B79493 /* AuthenticationClient.h */, + 2EDEF1ED121B0EFC00726DB2 /* BlobData.cpp */, + 2EDEF1EE121B0EFC00726DB2 /* BlobData.h */, + E14A94D616DFDF950068DE82 /* BlobRegistry.cpp */, + 2EDEF1EF121B0EFC00726DB2 /* BlobRegistry.h */, + 2EDEF1F0121B0EFC00726DB2 /* BlobRegistryImpl.cpp */, + 2EDEF1F1121B0EFC00726DB2 /* BlobRegistryImpl.h */, + 2EB4BCD0121F03E300EC4885 /* BlobResourceHandle.cpp */, + 2EB4BCD1121F03E300EC4885 /* BlobResourceHandle.h */, + 2EDEF1F2121B0EFC00726DB2 /* BlobStorageData.h */, + E13F01EA1270E10D00DFBA71 /* CookieStorage.h */, + 514C76580CE923A1007EF3CD /* Credential.cpp */, + 514C76590CE923A1007EF3CD /* Credential.h */, + 51A052321058774F00CC9E95 /* CredentialStorage.cpp */, + 51A052311058774F00CC9E95 /* CredentialStorage.h */, + B2F34FE50E82F81400F627CD /* DNS.h */, + 7C60128060078BB70E367A95 /* DNSResolveQueue.cpp */, + FA6E466FCD0418A9966A5B60 /* DNSResolveQueue.h */, + 514C765A0CE923A1007EF3CD /* FormData.cpp */, + 514C765B0CE923A1007EF3CD /* FormData.h */, + 085B92B80EFDE73D00E6123C /* FormDataBuilder.cpp */, + 085B92B90EFDE73D00E6123C /* FormDataBuilder.h */, + 0B8C56D30F28627F000502E1 /* HTTPHeaderMap.cpp */, + 514C765C0CE923A1007EF3CD /* HTTPHeaderMap.h */, + 514C765D0CE923A1007EF3CD /* HTTPParsers.cpp */, + 514C765E0CE923A1007EF3CD /* HTTPParsers.h */, + 37DDCD9213844FD50008B793 /* MIMEHeader.cpp */, + 37DDCD9313844FD50008B793 /* MIMEHeader.h */, + 628D214B12131ED10055DCFC /* NetworkingContext.h */, + 1A7FA61A0DDA3BBE0028F8A5 /* NetworkStateNotifier.cpp */, + 1A7FA6180DDA3B3A0028F8A5 /* NetworkStateNotifier.h */, + E13EF3421684ECF40034C83F /* NetworkStorageSession.h */, + 447958021643B47B001E0A7F /* ParsedContentType.cpp */, + 447958031643B47B001E0A7F /* ParsedContentType.h */, + 514C765F0CE923A1007EF3CD /* ProtectionSpace.cpp */, + 514C76600CE923A1007EF3CD /* ProtectionSpace.h */, + 51A052551058874000CC9E95 /* ProtectionSpaceHash.h */, + 1AF8E13212565A4400230FF7 /* ProxyServer.cpp */, + 1AF8E1191256592600230FF7 /* ProxyServer.h */, + 934F713D0D5A6F2800018D69 /* ResourceErrorBase.cpp */, + 934F713B0D5A6F1900018D69 /* ResourceErrorBase.h */, + 514C76630CE923A1007EF3CD /* ResourceHandle.cpp */, + 514C76640CE923A1007EF3CD /* ResourceHandle.h */, + E1BA003016FB92AC00BA7A35 /* ResourceHandleClient.cpp */, + 514C76650CE923A1007EF3CD /* ResourceHandleClient.h */, + 514C76660CE923A1007EF3CD /* ResourceHandleInternal.h */, + 51E4143216A6595100C633C7 /* ResourceHandleTypes.h */, + E4295FA312B0614E00D1ACE0 /* ResourceLoadPriority.h */, + 861C2EA513FB4FFF00062ABB /* ResourceLoadTiming.cpp */, + 8A81BF8411DCFD9000DA2B98 /* ResourceLoadTiming.h */, + 514C76670CE923A1007EF3CD /* ResourceRequestBase.cpp */, + 514C76680CE923A1007EF3CD /* ResourceRequestBase.h */, + 514C76690CE923A1007EF3CD /* ResourceResponseBase.cpp */, + 514C766A0CE923A1007EF3CD /* ResourceResponseBase.h */, + 510D4A2D103165EE0049EA54 /* SocketStreamErrorBase.cpp */, + 510D4A2E103165EE0049EA54 /* SocketStreamErrorBase.h */, + 510D4A30103165EE0049EA54 /* SocketStreamHandleBase.cpp */, + 510D4A31103165EE0049EA54 /* SocketStreamHandleBase.h */, + 510D4A32103165EE0049EA54 /* SocketStreamHandleClient.h */, + E180811016FCF42E00B80D07 /* SynchronousLoaderClient.cpp */, + E180811516FCF9CB00B80D07 /* SynchronousLoaderClient.h */, + ); + path = network; + sourceTree = ""; + }; + 656B84E70AEA1DAE00A095B4 /* mac */ = { + isa = PBXGroup; + children = ( + 514C76420CE9234E007EF3CD /* AuthenticationMac.h */, + 514C76430CE9234E007EF3CD /* AuthenticationMac.mm */, + E1424C8F164B460B00F32D40 /* CookieJarMac.mm */, + E13F01F01270E19000DFBA71 /* CookieStorageMac.mm */, + E1B4CD2410B322E200BFFD7E /* CredentialStorageMac.mm */, + 514C76440CE9234E007EF3CD /* FormDataStreamMac.h */, + 514C76450CE9234E007EF3CD /* FormDataStreamMac.mm */, + 1A7FA6470DDA3CBA0028F8A5 /* NetworkStateNotifierMac.cpp */, + 514C76460CE9234E007EF3CD /* ResourceErrorMac.mm */, + 514C76470CE9234E007EF3CD /* ResourceHandleMac.mm */, + 514C76490CE9234E007EF3CD /* ResourceRequestMac.mm */, + 514C764B0CE9234E007EF3CD /* ResourceResponseMac.mm */, + E180811416FCF9CB00B80D07 /* SynchronousLoaderClient.mm */, + 1FAFBF1615A5FA5200083A20 /* UTIUtilities.h */, + 1FAFBF1715A5FA5200083A20 /* UTIUtilities.mm */, + E180810D16FCECDF00B80D07 /* WebCoreResourceHandleAsDelegate.h */, + E180810C16FCECDF00B80D07 /* WebCoreResourceHandleAsDelegate.mm */, + E152551316FD234F003D7ADB /* WebCoreResourceHandleAsOperationQueueDelegate.h */, + E152551416FD234F003D7ADB /* WebCoreResourceHandleAsOperationQueueDelegate.mm */, + 37F818FB0D657606005E1F05 /* WebCoreURLResponse.h */, + 37F818FC0D657606005E1F05 /* WebCoreURLResponse.mm */, + ); + path = mac; + sourceTree = ""; + }; + 6582A14809999D6C00BEEB6D /* mac */ = { + isa = PBXGroup; + children = ( + 65A640F00533BB1F0085E777 /* BlockExceptions.h */, + 65F80697054D9F86008BF776 /* BlockExceptions.mm */, + 2D90660C0665D937006B6F1A /* ClipboardMac.mm */, + 2919A1EA16B3378900787213 /* ContentFilterMac.mm */, + 06027CB20B1CC03D00884B2D /* ContextMenuItemMac.mm */, + 93B6A0E90B0BCA8400F5027A /* ContextMenuMac.mm */, + F58784F002DE375901EA4122 /* CursorMac.mm */, + 5D8C4DBD1428222C0026CE72 /* DisplaySleepDisabler.cpp */, + 5D8C4DBE1428222C0026CE72 /* DisplaySleepDisabler.h */, + A795463D0B5C4C80007B438F /* DragDataMac.mm */, + A7CFB3D40B7ED1180070C32D /* DragImageMac.mm */, + E1BA66F01742BD8600C20251 /* DynamicLinkerInterposing.h */, + 5DC87EEF11716DF2001C0E6D /* EmptyProtocolDefinitions.h */, + 1CA19E030DC255950065A994 /* EventLoopMac.mm */, + 514B3F750C722055000530DF /* FileSystemMac.mm */, + 935C476C09AC4D6300A6AAB4 /* FoundationExtras.h */, + C5392D331326AD0100043D35 /* HTMLConverter.h */, + C5392D341326AD0100043D35 /* HTMLConverter.mm */, + 935C476E09AC4D7300A6AAB4 /* KeyEventMac.mm */, + 521D46F511AEC98100514613 /* KillRingMac.mm */, + 6593923909AE435C002C531F /* KURLMac.mm */, + 9352084409BD43B900F2038D /* Language.mm */, + 06E81ED60AB5D5E900C87837 /* LocalCurrentGraphicsContext.h */, + 06E81EEB0AB5DA9700C87837 /* LocalCurrentGraphicsContext.mm */, + BC25B528131C6D3900180E10 /* LocalizedStringsMac.cpp */, + 1402645D0AFDC19B005919E2 /* LoggingMac.mm */, + 657EDA0A1385CBD8004E0645 /* MemoryPressureHandlerMac.mm */, + BC772C5D0C4EB3440083285F /* MIMETypeRegistryMac.mm */, + 93500F3113FDE3BE0099EC24 /* NSScrollerImpDetails.h */, + 52F52E1014A0134F00ACC397 /* NSScrollerImpDetails.mm */, + 4B2709810AF2E5E00065127F /* PasteboardMac.mm */, + CDEA762E146084DE008B31F1 /* PlatformClockCA.cpp */, + CDEA762F146084EE008B31F1 /* PlatformClockCA.h */, + CDAA8D0714D385600061EA60 /* PlatformClockCM.h */, + CDAA8D0814D385600061EA60 /* PlatformClockCM.mm */, + BCAA486E14A052530088FAC4 /* PlatformEventFactoryMac.h */, + BCAA486D14A052530088FAC4 /* PlatformEventFactoryMac.mm */, + C5F765BA14E1ECF4006C899B /* PlatformPasteboardMac.mm */, + BC94D1070C274F88006BC617 /* PlatformScreenMac.mm */, + 29E4D8E016B0959800C84704 /* PlatformSpeechSynthesizerMac.mm */, + 0081FEFE16B0A2B6008AAA7A /* PublicSuffixMac.mm */, + E4D687760ED7AE3D006EA978 /* PurgeableBufferMac.cpp */, + BC0B358214C4F9540055E22A /* RunLoopMac.mm */, + BCAE1FA512939DB7004CB026 /* ScrollAnimatorMac.h */, + BC51156D12B1749C00C96754 /* ScrollAnimatorMac.mm */, + BC8B853C0E7C7F1100AB6984 /* ScrollbarThemeMac.h */, + BCEF869E0E844E9D00A85CD5 /* ScrollbarThemeMac.mm */, + 1AA84F03143BA7BD0051D153 /* ScrollElasticityController.h */, + 1AA84F02143BA7BD0051D153 /* ScrollElasticityController.mm */, + 9353676A09AED88B00D35CD6 /* ScrollViewMac.mm */, + 1A4A95510B4EDCFF002D8C3C /* SharedBufferMac.mm */, + 93309E9F099EB78C0056E581 /* SharedTimerMac.mm */, + 0A4844980CA44CB200B7BD48 /* SoftLinking.h */, + 4B3043C80AE0371D00A82647 /* SoundMac.mm */, + 84B2B24F056BF15F00D2B771 /* SSLKeyGeneratorMac.cpp */, + 93B2D8170F9920EE006AE6B2 /* SuddenTermination.mm */, + 5DA97ECB168E787B000E3676 /* SystemVersionMac.h */, + 5DA97ECC168E787B000E3676 /* SystemVersionMac.mm */, + BCE659E50EA92FB2007E4533 /* ThemeMac.h */, + BCE659E80EA92FFA007E4533 /* ThemeMac.mm */, + 51DF6D7F0B92A18E00C2DC85 /* ThreadCheck.mm */, + CDC69DD816371FD3007C38DF /* WebCoreFullScreenPlaceholderView.h */, + CDC69DD916371FD3007C38DF /* WebCoreFullScreenPlaceholderView.mm */, + CDC69DD41632026C007C38DF /* WebCoreFullScreenWarningView.h */, + CDC69DD51632026C007C38DF /* WebCoreFullScreenWarningView.mm */, + CD127DEA14F3097900E84779 /* WebCoreFullScreenWindow.h */, + CD127DEB14F3097900E84779 /* WebCoreFullScreenWindow.mm */, + 371941951566B37200A276D8 /* WebCoreNSCellExtras.h */, + 371941941566B37200A276D8 /* WebCoreNSCellExtras.m */, + 934D9BA60B8C1175007B42A9 /* WebCoreNSStringExtras.h */, + 934D9BA40B8C116B007B42A9 /* WebCoreNSStringExtras.mm */, + C5B4C24B1509236C00A6EF37 /* WebCoreNSURLExtras.h */, + C5B4C24C1509236C00A6EF37 /* WebCoreNSURLExtras.mm */, + DD05FE0B0B8BA3C6009ACDFE /* WebCoreObjCExtras.h */, + B50F5B800E96CD9900AD71A6 /* WebCoreObjCExtras.mm */, + 93EB169609F880C00091F8FF /* WebCoreSystemInterface.h */, + 93EB169409F880B00091F8FF /* WebCoreSystemInterface.mm */, + BE855F7F0701E83500239769 /* WebCoreView.h */, + BE8560510701F91100239769 /* WebCoreView.m */, + BC6DADEE0A195FDF00E5CD14 /* WebFontCache.h */, + BC6DADF90A19602B00E5CD14 /* WebFontCache.mm */, + E1A3162B134BC32D007C9A4F /* WebNSAttributedStringExtras.h */, + E1A3162C134BC32D007C9A4F /* WebNSAttributedStringExtras.mm */, + CD8203061395AB6A00F956C6 /* WebVideoFullscreenController.h */, + CD8203071395AB6A00F956C6 /* WebVideoFullscreenController.mm */, + CD8203081395AB6A00F956C6 /* WebVideoFullscreenHUDWindowController.h */, + CD8203091395AB6A00F956C6 /* WebVideoFullscreenHUDWindowController.mm */, + CD82030E1395ACE700F956C6 /* WebWindowAnimation.h */, + CD82030F1395ACE700F956C6 /* WebWindowAnimation.mm */, + 9380F47709A11ACC001FDB34 /* WidgetMac.mm */, + ); + path = mac; + sourceTree = ""; + }; + 65BF02180974806300C43196 /* page */ = { + isa = PBXGroup; + children = ( + 316FE1060E6E1D8400BF6088 /* animation */, + 93C09A820B064F05005ABD4D /* mac */, + 1AF62EE114DA22A70041556C /* scrolling */, + 8538F0000AD71770006A81D1 /* AbstractView.idl */, + BCF48CE61370D114004E87D6 /* AdjustViewSizeOrNot.h */, + CEDA12D6152CA1CB00D9E08D /* AlternativeTextClient.h */, + 45830D4B1679B4F800ACF8C3 /* AutoscrollController.cpp */, + 45830D4C1679B4F800ACF8C3 /* AutoscrollController.h */, + BC124EE40C2641CD009E2349 /* BarProp.cpp */, + BC124EE50C2641CD009E2349 /* BarProp.h */, + BC124EE60C2641CD009E2349 /* BarProp.idl */, + 072CA86016CB4DC3008AE131 /* CaptionUserPreferences.cpp */, + 079D0867162F20E800DB8658 /* CaptionUserPreferences.h */, + 079D086A162F21F900DB8658 /* CaptionUserPreferencesMediaAF.cpp */, + 079D0869162F21F900DB8658 /* CaptionUserPreferencesMediaAF.h */, + 14D8238A0AF92DF60004F057 /* Chrome.cpp */, + 14D823500AF92A790004F057 /* Chrome.h */, + 14D824060AF93AEB0004F057 /* ChromeClient.h */, + BC0B36A10CD3C67C00AC7EB5 /* Console.cpp */, + BC0B36A20CD3C67C00AC7EB5 /* Console.h */, + BC0B36A30CD3C67C00AC7EB5 /* Console.idl */, + BCE5644D137A34D6007D2934 /* ConsoleTypes.h */, + 97C471D912F925BC0086354B /* ContentSecurityPolicy.cpp */, + 97C471DA12F925BD0086354B /* ContentSecurityPolicy.h */, + 065AD4F20B0C2EDA005A2B1D /* ContextMenuClient.h */, + 065AD4F30B0C2EDA005A2B1D /* ContextMenuController.cpp */, + 065AD4F40B0C2EDA005A2B1D /* ContextMenuController.h */, + 7ADE722510CBBB9B006B3B3A /* ContextMenuProvider.h */, + 975CA287130365F800E99AD9 /* Crypto.cpp */, + 975CA288130365F800E99AD9 /* Crypto.h */, + 975CA289130365F800E99AD9 /* Crypto.idl */, + CCC2B51015F613060048CDD6 /* DeviceClient.h */, + CCC2B51115F613060048CDD6 /* DeviceController.cpp */, + CCC2B51215F613060048CDD6 /* DeviceController.h */, + CD37B37415C1A7E1006DC898 /* DiagnosticLoggingKeys.cpp */, + CD37B37515C1A7E1006DC898 /* DiagnosticLoggingKeys.h */, + 2D9A246A15B9BBDD00D34527 /* DOMSecurityPolicy.cpp */, + 2D9A246B15B9BBDD00D34527 /* DOMSecurityPolicy.h */, + BC5A86810C33676000EEA649 /* DOMSelection.cpp */, + BC5A86820C33676000EEA649 /* DOMSelection.h */, + BC5A86830C33676000EEA649 /* DOMSelection.idl */, + 188604B10F2E654A000B6443 /* DOMTimer.cpp */, + 188604B20F2E654A000B6443 /* DOMTimer.h */, + 1403B99609EB13AF00797C7F /* DOMWindow.cpp */, + 1403B99509EB13AF00797C7F /* DOMWindow.h */, + 1403B90C09EB124500797C7F /* DOMWindow.idl */, + 517FBA17151AA71B00B57959 /* DOMWindowExtension.cpp */, + 517FBA18151AA71B00B57959 /* DOMWindowExtension.h */, + 97D2AD0114B823A60093DF32 /* DOMWindowProperty.cpp */, + 97D2AD0214B823A60093DF32 /* DOMWindowProperty.h */, + A718760D0B2A120100A16ECE /* DragActions.h */, + A7CA59620B27C1F200FA021D /* DragClient.h */, + A7CA595C0B27BD9E00FA021D /* DragController.cpp */, + A7CA595B0B27BD9E00FA021D /* DragController.h */, + 3169379A14609C5B00C01362 /* DragSession.h */, + 81F65FF513788FAA00FF6F2D /* DragState.h */, + 1AF326770D78B9440068F0C4 /* EditorClient.h */, + 93C09A800B064F00005ABD4D /* EventHandler.cpp */, + 93C09A520B064DB3005ABD4D /* EventHandler.h */, + E0FEF371B27C53EAC1C1FBEE /* EventSource.cpp */, + E0FEF371B17C53EAC1C1FBEE /* EventSource.h */, + E0FEF371B07C53EAC1C1FBEE /* EventSource.idl */, + 97C740121603F7A10011FF2D /* FeatureObserver.cpp */, + 97C740131603F7A10011FF2D /* FeatureObserver.h */, + 14993BE30B2F2B1C0050497F /* FocusController.cpp */, + 14993BE40B2F2B1C0050497F /* FocusController.h */, + 062287830B4DB322000C34DF /* FocusDirection.h */, + 65BF02290974816300C43196 /* Frame.cpp */, + 65BF022A0974816300C43196 /* Frame.h */, + A7B070D0130A409C00A3763C /* FrameActionScheduler.cpp */, + A7B070D1130A409C00A3763C /* FrameActionScheduler.h */, + 974A862014B7ADBB003FDC76 /* FrameDestructionObserver.cpp */, + 974A862114B7ADBB003FDC76 /* FrameDestructionObserver.h */, + 65A21482097A3F5300B9050A /* FrameTree.cpp */, + 65A21483097A3F5300B9050A /* FrameTree.h */, + 65CBFEF70974F607001DAC25 /* FrameView.cpp */, + 65CBFEF80974F607001DAC25 /* FrameView.h */, + C50B561412119D23008B46E0 /* GroupSettings.cpp */, + C50B561512119D23008B46E0 /* GroupSettings.h */, + BC94D1500C275C8B006BC617 /* History.cpp */, + BC94D1510C275C8B006BC617 /* History.h */, + BC94D1520C275C8B006BC617 /* History.idl */, + 931D72F515FE695300C4C07E /* LayoutMilestones.h */, + BCE1C41A0D982980003B02F2 /* Location.cpp */, + BCE1C4190D982980003B02F2 /* Location.h */, + BCE1C4220D9829F2003B02F2 /* Location.idl */, + BC59DEFA169DEDD80016AC34 /* make_settings.pl */, + 931BCC601124DFCB00BE70DD /* MediaCanStartListener.h */, + 93EB355E09E37FD600F43799 /* MouseEventWithHitTestResults.cpp */, + 935C476209AC4CE600A6AAB4 /* MouseEventWithHitTestResults.h */, + A9C6E5A30D746458006442E9 /* Navigator.cpp */, + A9C6E5A40D746458006442E9 /* Navigator.h */, + A9C6E65D0D746694006442E9 /* Navigator.idl */, + E12719C90EEEC21300F61213 /* NavigatorBase.cpp */, + E12719C60EEEC16800F61213 /* NavigatorBase.h */, + 00146288103CD1DE000B20DB /* OriginAccessEntry.cpp */, + 00146289103CD1DE000B20DB /* OriginAccessEntry.h */, + 65FEA86809833ADE00BED4AB /* Page.cpp */, + 65A21467097A329100B9050A /* Page.h */, + CD08285A1757250800EC5FB7 /* PageActivityAssertionToken.cpp */, + CD08285B1757250800EC5FB7 /* PageActivityAssertionToken.h */, + DAACB3D916F2416400666135 /* PageConsole.cpp */, + DAACB3DA16F2416400666135 /* PageConsole.h */, + 9302B0BC0D79F82900C7EE83 /* PageGroup.cpp */, + 9302B0BE0D79F82C00C7EE83 /* PageGroup.h */, + 7A674BD90F9EBF4E006CF099 /* PageGroupLoadDeferrer.cpp */, + 7A674BDA0F9EBF4E006CF099 /* PageGroupLoadDeferrer.h */, + 371E65CD13661EED00BEEDB0 /* PageSerializer.cpp */, + 371E65CB13661EDC00BEEDB0 /* PageSerializer.h */, + A7197F2517568AE5007B9442 /* PageThrottler.cpp */, + A7197F23175689C4007B9442 /* PageThrottler.h */, + FFD5B977135CC97800D5E92A /* PageVisibilityState.cpp */, + FFD5B978135CC97800D5E92A /* PageVisibilityState.h */, + E526AF3E1727F8F200E41781 /* Performance.cpp */, + 8A844D0211D3C18E0014065C /* Performance.h */, + 8A844D0311D3C18E0014065C /* Performance.idl */, + 86BE33FB15058CB200CE0FD8 /* PerformanceEntry.h */, + 86BE33FC15058CB200CE0FD8 /* PerformanceEntry.idl */, + 86BE33FD15058CB200CE0FD8 /* PerformanceEntryList.cpp */, + 86BE33FE15058CB200CE0FD8 /* PerformanceEntryList.h */, + 86BE33FF15058CB200CE0FD8 /* PerformanceEntryList.idl */, + 8AF4E55211DC5A36000ED3DE /* PerformanceNavigation.cpp */, + 8AF4E55311DC5A36000ED3DE /* PerformanceNavigation.h */, + 8AF4E55411DC5A36000ED3DE /* PerformanceNavigation.idl */, + 86512EDB154A2AEE00A90426 /* PerformanceResourceTiming.cpp */, + 86512EDC154A2AEF00A90426 /* PerformanceResourceTiming.h */, + 86512EDD154A2AEF00A90426 /* PerformanceResourceTiming.idl */, + 8AF4E55911DC5A63000ED3DE /* PerformanceTiming.h */, + 8AF4E55A11DC5A63000ED3DE /* PerformanceTiming.idl */, + 31D591B116697A6C00E6BF02 /* PlugInClient.h */, + 3772B09516535856000A49CA /* PopupOpeningObserver.h */, + B776D43C1104527500BEB0EC /* PrintContext.cpp */, + B776D43A1104525D00BEB0EC /* PrintContext.h */, + BCEC01BA0C274DAC009F4EC9 /* Screen.cpp */, + BCEC01BB0C274DAC009F4EC9 /* Screen.h */, + BCEC01BC0C274DAC009F4EC9 /* Screen.idl */, + BCD0E0F70E972C3500265DEA /* SecurityOrigin.cpp */, + BCD0E0F80E972C3500265DEA /* SecurityOrigin.h */, + BCD0E0F90E972C3500265DEA /* SecurityOriginHash.h */, + 974D2DA2146A535D00D51F8B /* SecurityPolicy.cpp */, + 974D2DA3146A535D00D51F8B /* SecurityPolicy.h */, + 14C9A5E90B3D105F005A0232 /* Settings.cpp */, + F587863A02DE3A1401EA4122 /* Settings.h */, + BC59DEF8169DEDC30016AC34 /* Settings.in */, + 626CDE0C1140424C001E5A68 /* SpatialNavigation.cpp */, + 626CDE0D1140424C001E5A68 /* SpatialNavigation.h */, + 7578F90911DDF26900D933C5 /* SpeechInput.h */, + 7578F90A11DDF26900D933C5 /* SpeechInputClient.h */, + 75415AF812958D5E003AD669 /* SpeechInputEvent.h */, + 75415AF912958D5E003AD669 /* SpeechInputEvent.idl */, + 7578F91E11E4E32800D933C5 /* SpeechInputListener.h */, + 758978EB127090D60076D5A9 /* SpeechInputResult.h */, + 75415AFA12958D5E003AD669 /* SpeechInputResult.idl */, + 75415C27129A9920003AD669 /* SpeechInputResultList.cpp */, + 75415AFB12958D5E003AD669 /* SpeechInputResultList.h */, + 75415AFC12958D5E003AD669 /* SpeechInputResultList.idl */, + 62C1217A11AB9E76003C462C /* SuspendableTimer.cpp */, + 62C1217B11AB9E77003C462C /* SuspendableTimer.h */, + 003F1FE911E6AB43008258D9 /* UserContentTypes.h */, + BCACF3BA1072921A00C0C8A3 /* UserContentURLPattern.cpp */, + BCACF3BB1072921A00C0C8A3 /* UserContentURLPattern.h */, + BCA2B0601050475F0043BD1C /* UserScript.h */, + BCA2B08A10505BCD0043BD1C /* UserScriptTypes.h */, + BC8BF150105813BF00A40A07 /* UserStyleSheet.h */, + BC8BF1591058141800A40A07 /* UserStyleSheetTypes.h */, + F513A3E915FF4841001526DB /* ValidationMessageClient.h */, + BE983D95052A2E0A00892D85 /* WebCoreKeyboardUIMode.h */, + 494BD7930F55C8EE00747828 /* WebKitPoint.h */, + 494BD7940F55C8EE00747828 /* WebKitPoint.idl */, + BC8243E60D0CFD7500460C8F /* WindowFeatures.cpp */, + BC8243E70D0CFD7500460C8F /* WindowFeatures.h */, + 7E99AF520B13846468FB01A5 /* WindowFocusAllowedIndicator.cpp */, + 7E99AF540B13846468FB01A5 /* WindowFocusAllowedIndicator.h */, + E1271A130EEEC80400F61213 /* WorkerNavigator.cpp */, + E1271A0A0EEEC77A00F61213 /* WorkerNavigator.h */, + E1271A510EEECD1C00F61213 /* WorkerNavigator.idl */, + ); + path = page; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 7EE6847312D26E5500E79415 /* cf */ = { + isa = PBXGroup; + children = ( + 7EE6847412D26E7000E79415 /* ResourceLoaderCFNet.cpp */, + 7E37EF2D1339208800B29250 /* SubresourceLoaderCF.cpp */, + ); + name = cf; + sourceTree = ""; + }; + 850657040AAB476C002D15C0 /* StyleSheets */ = { + isa = PBXGroup; + children = ( + 850656F80AAB4763002D15C0 /* DOMMediaList.h */, + 850656F90AAB4763002D15C0 /* DOMMediaList.mm */, + 0FF50259102BA9010066F39A /* DOMStyleMedia.h */, + 0FF5025A102BA9010066F39A /* DOMStyleMedia.mm */, + 850656FA0AAB4763002D15C0 /* DOMStyleSheet.h */, + 850656FB0AAB4763002D15C0 /* DOMStyleSheet.mm */, + 850656FC0AAB4763002D15C0 /* DOMStyleSheetList.h */, + 850656FD0AAB4763002D15C0 /* DOMStyleSheetList.mm */, + ); + name = StyleSheets; + sourceTree = ""; + }; + 8538F0150AD718AF006A81D1 /* Views */ = { + isa = PBXGroup; + children = ( + 8538F0160AD718D8006A81D1 /* DOMAbstractView.h */, + ); + name = Views; + sourceTree = ""; + }; + 8538F0570AD722B9006A81D1 /* Ranges */ = { + isa = PBXGroup; + children = ( + 8538F0580AD722F1006A81D1 /* DOMRange.h */, + 8538F0590AD722F1006A81D1 /* DOMRange.mm */, + ); + name = Ranges; + sourceTree = ""; + }; + 854075420AD6C73E00620C57 /* DOMExceptions */ = { + isa = PBXGroup; + children = ( + 851EE8100ABCA39600A6AA33 /* DOMEventException.h */, + 85C78A670ABDE1B40044FC16 /* DOMException.h */, + 851EE8200ABCA58100A6AA33 /* DOMRangeException.h */, + 858015CD0ABCA75D0080588D /* DOMXPathException.h */, + ); + name = DOMExceptions; + sourceTree = ""; + }; + 854F12AC0A8EBC18000940B5 /* Core */ = { + isa = PBXGroup; + children = ( + 93C841FE09CE858300DFF5E5 /* DOMImplementationFront.cpp */, + 93C841F709CE855C00DFF5E5 /* DOMImplementationFront.h */, + 856C8AE20A912649005C687B /* DOMObject.h */, + 856C8AE30A912649005C687B /* DOMObject.mm */, + ); + name = Core; + sourceTree = ""; + }; + 85526C150AB0A12A000302EA /* Traversal */ = { + isa = PBXGroup; + children = ( + 854075250AD6C66700620C57 /* DOMNodeFilter.h */, + 85526C350AB0A17E000302EA /* DOMNodeIterator.h */, + 85526C360AB0A17E000302EA /* DOMNodeIterator.mm */, + 85526CD00AB0B7D9000302EA /* DOMTreeWalker.h */, + 85526CD10AB0B7D9000302EA /* DOMTreeWalker.mm */, + ); + name = Traversal; + sourceTree = ""; + }; + 85967D9F0AA8BB59005FEDEE /* Core */ = { + isa = PBXGroup; + children = ( + 85D389B00A991A7F00282145 /* DOMAttr.h */, + 85D389B10A991A7F00282145 /* DOMAttr.mm */, + 85089CCF0A98C42700A275AA /* DOMCDATASection.h */, + 85089CD00A98C42700A275AA /* DOMCDATASection.mm */, + 85ACA9840A9B520300671E90 /* DOMCharacterData.h */, + 85ACA9850A9B520300671E90 /* DOMCharacterData.mm */, + 85089CD10A98C42700A275AA /* DOMComment.h */, + 85089CD20A98C42700A275AA /* DOMComment.mm */, + 85ACABAE0A9CAF8000671E90 /* DOMDocument.h */, + 85ACABAF0A9CAF8000671E90 /* DOMDocument.mm */, + 85089CD30A98C42800A275AA /* DOMDocumentFragment.h */, + 85089CD40A98C42800A275AA /* DOMDocumentFragment.mm */, + 44311CD412E4E22D000A8D19 /* DOMDocumentFragmentPrivate.h */, + 44311CD512E4E22D000A8D19 /* DOMDocumentPrivate.h */, + 85CA975A0A962E5400690CCF /* DOMDocumentType.h */, + 85CA975B0A962E5400690CCF /* DOMDocumentType.mm */, + 8518DCE70A9CC80C0091B7A6 /* DOMDOMImplementation.h */, + 8518DCE80A9CC80D0091B7A6 /* DOMDOMImplementation.mm */, + 52CCA9E515E3F64C0053C77F /* DOMDOMNamedFlowCollection.h */, + 52CCA9E615E3F64C0053C77F /* DOMDOMNamedFlowCollection.mm */, + 52CCA9E715E3F64C0053C77F /* DOMDOMNamedFlowCollectionInternal.h */, + 2D9A247015B9C29500D34527 /* DOMDOMSecurityPolicy.h */, + 2D9A247215B9C2C700D34527 /* DOMDOMSecurityPolicy.mm */, + 2D9A247115B9C29500D34527 /* DOMDOMSecurityPolicyInternal.h */, + 85ACA9BE0A9B5FA500671E90 /* DOMElement.h */, + 85ACA9BF0A9B5FA500671E90 /* DOMElement.mm */, + 85CA96B60A9621A600690CCF /* DOMEntity.h */, + 85CA96B70A9621A600690CCF /* DOMEntity.mm */, + 85089CD50A98C42800A275AA /* DOMEntityReference.h */, + 85089CD60A98C42800A275AA /* DOMEntityReference.mm */, + 8518DD760A9CF31B0091B7A6 /* DOMNamedNodeMap.h */, + 8518DD770A9CF31B0091B7A6 /* DOMNamedNodeMap.mm */, + 853BF4D90ABB6B55008647BB /* DOMNode.h */, + 853BF4DA0ABB6B55008647BB /* DOMNode.mm */, + 85ACAA890A9B759C00671E90 /* DOMNodeList.h */, + 85ACAA8A0A9B759C00671E90 /* DOMNodeList.mm */, + A54A82EA15228CA300C72BA6 /* DOMNodePrivate.h */, + 85CA96E80A9624E900690CCF /* DOMNotation.h */, + 85CA96E90A9624E900690CCF /* DOMNotation.mm */, + 85F56A780A98CE3700ADB60A /* DOMProcessingInstruction.h */, + 85F56A790A98CE3700ADB60A /* DOMProcessingInstruction.mm */, + A7F73ED9169AD7AA00CBAA4B /* DOMShadowRoot.h */, + A7F73EDA169AD7AA00CBAA4B /* DOMShadowRoot.mm */, + 85ACA99A0A9B575900671E90 /* DOMText.h */, + 85ACA99B0A9B575900671E90 /* DOMText.mm */, + 8A19592F147EA16E00D1EA61 /* DOMWebKitNamedFlow.h */, + 8A195930147EA16E00D1EA61 /* DOMWebKitNamedFlow.mm */, + 8A195931147EA16E00D1EA61 /* DOMWebKitNamedFlowInternal.h */, + ); + name = Core; + sourceTree = ""; + }; + 85967DCA0AA8BF0F005FEDEE /* CSS */ = { + isa = PBXGroup; + children = ( + 858C38A10AA8F20400B187A4 /* DOMCounter.h */, + 858C38A20AA8F20400B187A4 /* DOMCounter.mm */, + 85032DC30AA8C9BE007D3B7D /* DOMCSSCharsetRule.h */, + 85032DC40AA8C9BE007D3B7D /* DOMCSSCharsetRule.mm */, + 85032DC50AA8C9BE007D3B7D /* DOMCSSFontFaceRule.h */, + 85032DC60AA8C9BE007D3B7D /* DOMCSSFontFaceRule.mm */, + 85032DC70AA8C9BE007D3B7D /* DOMCSSImportRule.h */, + 85032DC80AA8C9BE007D3B7D /* DOMCSSImportRule.mm */, + 85032DC90AA8C9BE007D3B7D /* DOMCSSMediaRule.h */, + 85032DCA0AA8C9BE007D3B7D /* DOMCSSMediaRule.mm */, + 85032DCB0AA8C9BE007D3B7D /* DOMCSSPageRule.h */, + 85032DCC0AA8C9BE007D3B7D /* DOMCSSPageRule.mm */, + 858C382A0AA8E40500B187A4 /* DOMCSSPrimitiveValue.h */, + 858C382B0AA8E40500B187A4 /* DOMCSSPrimitiveValue.mm */, + 85032DCD0AA8C9BE007D3B7D /* DOMCSSRule.h */, + 85032DCE0AA8C9BE007D3B7D /* DOMCSSRule.mm */, + 85032DCF0AA8C9BE007D3B7D /* DOMCSSRuleList.h */, + 85032DD00AA8C9BE007D3B7D /* DOMCSSRuleList.mm */, + 85032DD10AA8C9BE007D3B7D /* DOMCSSStyleDeclaration.h */, + 85032DD20AA8C9BE007D3B7D /* DOMCSSStyleDeclaration.mm */, + 85032DD30AA8C9BE007D3B7D /* DOMCSSStyleRule.h */, + 85032DD40AA8C9BE007D3B7D /* DOMCSSStyleRule.mm */, + 858C39260AA8FF9D00B187A4 /* DOMCSSStyleSheet.h */, + 858C39270AA8FF9D00B187A4 /* DOMCSSStyleSheet.mm */, + FCD8832816A49F8200962227 /* DOMCSSSupportsRule.h */, + FCD8832916A49F8200962227 /* DOMCSSSupportsRule.mm */, + 85032DD50AA8C9BE007D3B7D /* DOMCSSUnknownRule.h */, + 85032DD60AA8C9BE007D3B7D /* DOMCSSUnknownRule.mm */, + 858C381A0AA8E29600B187A4 /* DOMCSSValue.h */, + 858C381B0AA8E29600B187A4 /* DOMCSSValue.mm */, + 858C383A0AA8ED8200B187A4 /* DOMCSSValueList.h */, + 858C383B0AA8ED8200B187A4 /* DOMCSSValueList.mm */, + 858C38A30AA8F20400B187A4 /* DOMRect.h */, + 858C38A40AA8F20400B187A4 /* DOMRect.mm */, + 855D35890AD707310019AAC7 /* DOMRGBColor.h */, + BCAEFCAD1016CE4A0040D34E /* DOMRGBColor.mm */, + A2E8AE3D16A498CF006BB3AA /* DOMWebKitCSSFilterRule.h */, + A2E8AE3E16A498CF006BB3AA /* DOMWebKitCSSFilterRule.mm */, + A2E8AE3F16A498CF006BB3AA /* DOMWebKitCSSFilterRuleInternal.h */, + 31060376143281CD00ABF4BA /* DOMWebKitCSSFilterValue.h */, + 31060377143281CD00ABF4BA /* DOMWebKitCSSFilterValue.mm */, + 31060378143281CD00ABF4BA /* DOMWebKitCSSFilterValueInternal.h */, + 316FE0770E6CCC2800BF6088 /* DOMWebKitCSSKeyframeRule.h */, + 316FE0780E6CCC2800BF6088 /* DOMWebKitCSSKeyframeRule.mm */, + 316FE0790E6CCC2800BF6088 /* DOMWebKitCSSKeyframeRuleInternal.h */, + 316FE07A0E6CCC2800BF6088 /* DOMWebKitCSSKeyframesRule.h */, + 316FE07B0E6CCC2800BF6088 /* DOMWebKitCSSKeyframesRule.mm */, + 316FE07C0E6CCC2800BF6088 /* DOMWebKitCSSKeyframesRuleInternal.h */, + 4983914D0F1E76B400C23782 /* DOMWebKitCSSMatrix.h */, + 4983914E0F1E76B400C23782 /* DOMWebKitCSSMatrix.mm */, + 4983914F0F1E76B400C23782 /* DOMWebKitCSSMatrixInternal.h */, + 8ACC2817148E47E700EFCC0D /* DOMWebKitCSSRegionRule.h */, + 8ACC2818148E47E700EFCC0D /* DOMWebKitCSSRegionRule.mm */, + 8ACC2819148E47E700EFCC0D /* DOMWebKitCSSRegionRuleInternal.h */, + 31611E5E0E1C4E1400F6A579 /* DOMWebKitCSSTransformValue.h */, + 31611E5F0E1C4E1400F6A579 /* DOMWebKitCSSTransformValue.mm */, + 31611E600E1C4E1400F6A579 /* DOMWebKitCSSTransformValueInternal.h */, + 3F2B33E6165AF15500E3987C /* DOMWebKitCSSViewportRule.h */, + 3F2B33E7165AF15500E3987C /* DOMWebKitCSSViewportRule.mm */, + 3F2B33E8165AF15500E3987C /* DOMWebKitCSSViewportRuleInternal.h */, + ); + name = CSS; + sourceTree = ""; + }; + 85AFA7AB0AAF3BB000E84305 /* Events */ = { + isa = PBXGroup; + children = ( + BC946EED107FDBAC00857193 /* DOMBeforeLoadEvent.h */, + BC946EEE107FDBAC00857193 /* DOMBeforeLoadEvent.mm */, + 85AFA8200AAF528A00E84305 /* DOMEvent.h */, + 85AFA8210AAF528A00E84305 /* DOMEvent.mm */, + 85D2AD670AB1A40A00C313EA /* DOMEventListener.h */, + 8540751F0AD6C5FB00620C57 /* DOMEventTarget.h */, + 85FF31580AAFBFCB00374F38 /* DOMKeyboardEvent.h */, + 85FF31590AAFBFCB00374F38 /* DOMKeyboardEvent.mm */, + 75793ED00D0CE85B007FC0AC /* DOMMessageEvent.h */, + 75793ED10D0CE85B007FC0AC /* DOMMessageEvent.mm */, + E1ACAF4B0E791AAF0087D12B /* DOMMessagePort.h */, + E1ACAF4A0E791AAF0087D12B /* DOMMessagePort.mm */, + 857E0B230AB043460036E447 /* DOMMouseEvent.h */, + 857E0B240AB043460036E447 /* DOMMouseEvent.mm */, + 85C7F5BC0AAFB7CC004014DD /* DOMMutationEvent.h */, + 85C7F5BD0AAFB7CC004014DD /* DOMMutationEvent.mm */, + 85C7F5CE0AAFB8D9004014DD /* DOMOverflowEvent.h */, + 85C7F5CF0AAFB8D9004014DD /* DOMOverflowEvent.mm */, + E1284BD41044A01E00EAEB52 /* DOMPageTransitionEvent.h */, + E1284BD31044A01E00EAEB52 /* DOMPageTransitionEvent.mm */, + BCC573330D695BBE006EF517 /* DOMProgressEvent.h */, + BCC573340D695BBE006EF517 /* DOMProgressEvent.mm */, + 933A14750B7D1BAF00A53FFD /* DOMTextEvent.h */, + 933A14A90B7D1D0900A53FFD /* DOMTextEvent.mm */, + E145349416A9BB6A000F6FD2 /* DOMTransitionEvent.h */, + E145349516A9BB6A000F6FD2 /* DOMTransitionEvent.mm */, + E145349616A9BB6A000F6FD2 /* DOMTransitionEventInternal.h */, + 85C7F48F0AAF79DC004014DD /* DOMUIEvent.h */, + 85C7F4900AAF79DC004014DD /* DOMUIEvent.mm */, + 31C0FF430E4CEFDD007D6FE5 /* DOMWebKitAnimationEvent.h */, + 31C0FF440E4CEFDD007D6FE5 /* DOMWebKitAnimationEvent.mm */, + 31C0FF450E4CEFDD007D6FE5 /* DOMWebKitAnimationEventInternal.h */, + 31C0FF460E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.h */, + 31C0FF470E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.mm */, + 31C0FF480E4CEFDD007D6FE5 /* DOMWebKitTransitionEventInternal.h */, + 85C7F5E50AAFBAFB004014DD /* DOMWheelEvent.h */, + 85C7F5E60AAFBAFB004014DD /* DOMWheelEvent.mm */, + ); + name = Events; + sourceTree = ""; + }; + 85B232260A8BF3A100FDF47B /* Derived Sources */ = { + isa = PBXGroup; + children = ( + 85967D9F0AA8BB59005FEDEE /* Core */, + 85967DCA0AA8BF0F005FEDEE /* CSS */, + 85AFA7AB0AAF3BB000E84305 /* Events */, + 85C56D030AA8BAA700D95755 /* HTML */, + 85E7113D0AC5D4A10053270F /* Internal */, + 8538F0570AD722B9006A81D1 /* Ranges */, + 850657040AAB476C002D15C0 /* StyleSheets */, + 85526C150AB0A12A000302EA /* Traversal */, + 8538F0150AD718AF006A81D1 /* Views */, + 85E9E0A70AB3A0CC00069CD0 /* XPath */, + ); + name = "Derived Sources"; + path = DerivedSources/WebCore; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 85C56D030AA8BAA700D95755 /* HTML */ = { + isa = PBXGroup; + children = ( + 2E2D99E510E2BC1C00496337 /* DOMBlob.h */, + 2E2D99E610E2BC1C00496337 /* DOMBlob.mm */, + 769456591214DB630007CBAE /* DOMDOMTokenList.h */, + 7694565A1214DB630007CBAE /* DOMDOMTokenList.mm */, + BC00EFFE0E0A185500FD04E3 /* DOMFile.h */, + BC00EFFF0E0A185500FD04E3 /* DOMFile.mm */, + 2E3BC106117D479800B9409A /* DOMFileError.h */, + 2E3BC107117D479800B9409A /* DOMFileError.mm */, + BC00F0010E0A185500FD04E3 /* DOMFileList.h */, + BC00F0020E0A185500FD04E3 /* DOMFileList.mm */, + 85DF81210AA7787200486AD7 /* DOMHTMLAnchorElement.h */, + 85DF81220AA7787200486AD7 /* DOMHTMLAnchorElement.mm */, + 854075640AD6CBF900620C57 /* DOMHTMLAppletElement.h */, + 85C050B80AD84F5E005532E7 /* DOMHTMLAppletElement.mm */, + 85ECBEDD0AA7626800544F0B /* DOMHTMLAreaElement.h */, + 85ECBEDE0AA7626800544F0B /* DOMHTMLAreaElement.mm */, + 859A9C3D0AA5E3BD00B694B2 /* DOMHTMLBaseElement.h */, + 859A9C3E0AA5E3BD00B694B2 /* DOMHTMLBaseElement.mm */, + 85ECBEDF0AA7626800544F0B /* DOMHTMLBaseFontElement.h */, + 85ECBEE00AA7626800544F0B /* DOMHTMLBaseFontElement.mm */, + 859A9C3F0AA5E3BD00B694B2 /* DOMHTMLBodyElement.h */, + 859A9C400AA5E3BD00B694B2 /* DOMHTMLBodyElement.mm */, + 85183B380AA6926100F19FA3 /* DOMHTMLBRElement.h */, + 85183B390AA6926100F19FA3 /* DOMHTMLBRElement.mm */, + 85BA4CD50AA6861B0088052D /* DOMHTMLButtonElement.h */, + 85BA4CD60AA6861B0088052D /* DOMHTMLButtonElement.mm */, + 93D3C1580F97A9D70053C013 /* DOMHTMLCanvasElement.h */, + 93F9B6540BA0F35E00854064 /* DOMHTMLCanvasElement.mm */, + 85DF2F8C0AA3C88100AD64C5 /* DOMHTMLCollection.h */, + 85DF2F8D0AA3C88100AD64C5 /* DOMHTMLCollection.mm */, + F5C041DE0FFCA96D00839D4A /* DOMHTMLDataListElement.h */, + F5C041DF0FFCA96D00839D4A /* DOMHTMLDataListElement.mm */, + D359D78E129CA3C00006E5D2 /* DOMHTMLDetailsElement.h */, + D359D78F129CA3C00006E5D2 /* DOMHTMLDetailsElement.mm */, + D359D790129CA3C00006E5D2 /* DOMHTMLDetailsElementInternal.h */, + 85BA4CFD0AA688680088052D /* DOMHTMLDirectoryElement.h */, + 85BA4CFE0AA688680088052D /* DOMHTMLDirectoryElement.mm */, + 85BA4CFF0AA688680088052D /* DOMHTMLDivElement.h */, + 85BA4D000AA688680088052D /* DOMHTMLDivElement.mm */, + 85BA4D010AA688680088052D /* DOMHTMLDListElement.h */, + 85BA4D020AA688680088052D /* DOMHTMLDListElement.mm */, + 85BCBC110ABBA87D00381160 /* DOMHTMLDocument.h */, + 85BCBC120ABBA87D00381160 /* DOMHTMLDocument.mm */, + 85DF2EEB0AA387CB00AD64C5 /* DOMHTMLElement.h */, + 85DF2EEC0AA387CB00AD64C5 /* DOMHTMLElement.mm */, + 854075650AD6CBF900620C57 /* DOMHTMLEmbedElement.h */, + 85C050B90AD84F5E005532E7 /* DOMHTMLEmbedElement.mm */, + 4429AAFB0CB84E88007647C5 /* DOMHTMLEmbedElementPrivate.h */, + 85BA4CD70AA6861B0088052D /* DOMHTMLFieldSetElement.h */, + 85BA4CD80AA6861B0088052D /* DOMHTMLFieldSetElement.mm */, + 85ECBEE10AA7626800544F0B /* DOMHTMLFontElement.h */, + 85ECBEE20AA7626800544F0B /* DOMHTMLFontElement.mm */, + 85DF2C100AA341F600AD64C5 /* DOMHTMLFormElement.h */, + 85DF2C110AA341F600AD64C5 /* DOMHTMLFormElement.mm */, + 85DF818D0AA77E4B00486AD7 /* DOMHTMLFrameElement.h */, + 85DF818E0AA77E4B00486AD7 /* DOMHTMLFrameElement.mm */, + 85DF818F0AA77E4B00486AD7 /* DOMHTMLFrameSetElement.h */, + 85DF81900AA77E4B00486AD7 /* DOMHTMLFrameSetElement.mm */, + 85992EB20AA5069500AC0785 /* DOMHTMLHeadElement.h */, + 85992EB30AA5069500AC0785 /* DOMHTMLHeadElement.mm */, + 85183B3A0AA6926100F19FA3 /* DOMHTMLHeadingElement.h */, + 85183B3B0AA6926100F19FA3 /* DOMHTMLHeadingElement.mm */, + 85ECBEE30AA7626800544F0B /* DOMHTMLHRElement.h */, + 85ECBEE40AA7626800544F0B /* DOMHTMLHRElement.mm */, + 85992EB40AA5069500AC0785 /* DOMHTMLHtmlElement.h */, + 85992EB50AA5069500AC0785 /* DOMHTMLHtmlElement.mm */, + 85DF81910AA77E4B00486AD7 /* DOMHTMLIFrameElement.h */, + 85DF81920AA77E4B00486AD7 /* DOMHTMLIFrameElement.mm */, + 4429AAFD0CB84EA5007647C5 /* DOMHTMLIFrameElementPrivate.h */, + 85DF81230AA7787200486AD7 /* DOMHTMLImageElement.h */, + 85DF81240AA7787200486AD7 /* DOMHTMLImageElement.mm */, + 85F32AE40AA63B8700FF3184 /* DOMHTMLInputElement.h */, + 85F32AE50AA63B8700FF3184 /* DOMHTMLInputElement.mm */, + 1CCA732110ADD43E00FD440D /* DOMHTMLInputElementPrivate.h */, + A6148A6512E41D940044A784 /* DOMHTMLKeygenElement.h */, + A6148A6612E41D940044A784 /* DOMHTMLKeygenElement.mm */, + 85BA4CD90AA6861B0088052D /* DOMHTMLLabelElement.h */, + 85BA4CDA0AA6861B0088052D /* DOMHTMLLabelElement.mm */, + 85BA4CDB0AA6861B0088052D /* DOMHTMLLegendElement.h */, + 85BA4CDC0AA6861B0088052D /* DOMHTMLLegendElement.mm */, + 85BA4D030AA688680088052D /* DOMHTMLLIElement.h */, + 85BA4D040AA688680088052D /* DOMHTMLLIElement.mm */, + 85992EB60AA5069500AC0785 /* DOMHTMLLinkElement.h */, + 85992EB70AA5069500AC0785 /* DOMHTMLLinkElement.mm */, + 85ECBEE50AA7626800544F0B /* DOMHTMLMapElement.h */, + 85ECBEE60AA7626800544F0B /* DOMHTMLMapElement.mm */, + BC5156E50C03B741008BB0EE /* DOMHTMLMarqueeElement.h */, + BC5156E60C03B741008BB0EE /* DOMHTMLMarqueeElement.mm */, + 85BA4D050AA688680088052D /* DOMHTMLMenuElement.h */, + 85BA4D060AA688680088052D /* DOMHTMLMenuElement.mm */, + 859A9C430AA5E3BD00B694B2 /* DOMHTMLMetaElement.h */, + 859A9C440AA5E3BD00B694B2 /* DOMHTMLMetaElement.mm */, + 85ECBEE70AA7626800544F0B /* DOMHTMLModElement.h */, + 85ECBEE80AA7626900544F0B /* DOMHTMLModElement.mm */, + 85DF81250AA7787200486AD7 /* DOMHTMLObjectElement.h */, + 85DF81260AA7787200486AD7 /* DOMHTMLObjectElement.mm */, + 4429AAFF0CB84EC3007647C5 /* DOMHTMLObjectElementPrivate.h */, + 85BA4D070AA688680088052D /* DOMHTMLOListElement.h */, + 85BA4D080AA688680088052D /* DOMHTMLOListElement.mm */, + 85F32AE60AA63B8700FF3184 /* DOMHTMLOptGroupElement.h */, + 85F32AE70AA63B8700FF3184 /* DOMHTMLOptGroupElement.mm */, + 854075660AD6CBF900620C57 /* DOMHTMLOptionElement.h */, + 854075670AD6CBF900620C57 /* DOMHTMLOptionElement.mm */, + 854075680AD6CBF900620C57 /* DOMHTMLOptionElementInternal.h */, + 85DF2F990AA3CAE500AD64C5 /* DOMHTMLOptionsCollection.h */, + 85DF2F9A0AA3CAE500AD64C5 /* DOMHTMLOptionsCollection.mm */, + 85183B3C0AA6926100F19FA3 /* DOMHTMLParagraphElement.h */, + 85183B3D0AA6926100F19FA3 /* DOMHTMLParagraphElement.mm */, + 85ECBEE90AA7626900544F0B /* DOMHTMLParamElement.h */, + 85ECBEEA0AA7626900544F0B /* DOMHTMLParamElement.mm */, + 85183B3E0AA6926100F19FA3 /* DOMHTMLPreElement.h */, + 85183B3F0AA6926100F19FA3 /* DOMHTMLPreElement.mm */, + A4226E921163D73A008B8397 /* DOMHTMLProgressElement.h */, + A4226E931163D73A008B8397 /* DOMHTMLProgressElement.mm */, + 85183B400AA6926100F19FA3 /* DOMHTMLQuoteElement.h */, + 85183B410AA6926100F19FA3 /* DOMHTMLQuoteElement.mm */, + 85DF81930AA77E4B00486AD7 /* DOMHTMLScriptElement.h */, + 85DF81940AA77E4B00486AD7 /* DOMHTMLScriptElement.mm */, + 85F32AE80AA63B8700FF3184 /* DOMHTMLSelectElement.h */, + 85F32AE90AA63B8700FF3184 /* DOMHTMLSelectElement.mm */, + 859A9C450AA5E3BD00B694B2 /* DOMHTMLStyleElement.h */, + 859A9C460AA5E3BD00B694B2 /* DOMHTMLStyleElement.mm */, + 85DF82130AA7849E00486AD7 /* DOMHTMLTableCaptionElement.h */, + 85DF82140AA7849E00486AD7 /* DOMHTMLTableCaptionElement.mm */, + 85DF82150AA7849E00486AD7 /* DOMHTMLTableCellElement.h */, + 85DF82160AA7849E00486AD7 /* DOMHTMLTableCellElement.mm */, + 85DF82170AA7849E00486AD7 /* DOMHTMLTableColElement.h */, + 85DF82180AA7849E00486AD7 /* DOMHTMLTableColElement.mm */, + 85DF826E0AA78B8A00486AD7 /* DOMHTMLTableElement.h */, + 85DF826F0AA78B8A00486AD7 /* DOMHTMLTableElement.mm */, + 85DF82190AA7849E00486AD7 /* DOMHTMLTableRowElement.h */, + 85DF821A0AA7849E00486AD7 /* DOMHTMLTableRowElement.mm */, + 85DF821B0AA7849E00486AD7 /* DOMHTMLTableSectionElement.h */, + 85DF821C0AA7849E00486AD7 /* DOMHTMLTableSectionElement.mm */, + 85F32AEA0AA63B8700FF3184 /* DOMHTMLTextAreaElement.h */, + 85F32AEB0AA63B8700FF3184 /* DOMHTMLTextAreaElement.mm */, + 85992EB80AA5069500AC0785 /* DOMHTMLTitleElement.h */, + 85992EB90AA5069500AC0785 /* DOMHTMLTitleElement.mm */, + 85BA4D090AA688680088052D /* DOMHTMLUListElement.h */, + 85BA4D0A0AA688680088052D /* DOMHTMLUListElement.mm */, + 15C770A4100D41CD005BA267 /* DOMValidityState.h */, + 15C770A3100D41CD005BA267 /* DOMValidityState.mm */, + ); + name = HTML; + sourceTree = ""; + }; + 85E7113D0AC5D4A10053270F /* Internal */ = { + isa = PBXGroup; + children = ( + 8538F0180AD718D8006A81D1 /* DOMAbstractViewInternal.h */, + 85E7113E0AC5D5340053270F /* DOMAttrInternal.h */, + 2E2D99E910E2BC3800496337 /* DOMBlobInternal.h */, + 85E7113F0AC5D5340053270F /* DOMCDATASectionInternal.h */, + 85E711400AC5D5340053270F /* DOMCharacterDataInternal.h */, + 85E711410AC5D5340053270F /* DOMCommentInternal.h */, + 85E711420AC5D5340053270F /* DOMCounterInternal.h */, + 85909CD30ACC7A7E00DF01F1 /* DOMCSSCharsetRuleInternal.h */, + 85909CD40ACC7A7E00DF01F1 /* DOMCSSFontFaceRuleInternal.h */, + 85909CD50ACC7A7E00DF01F1 /* DOMCSSImportRuleInternal.h */, + 85909CD60ACC7A7E00DF01F1 /* DOMCSSMediaRuleInternal.h */, + 85909CD70ACC7A7E00DF01F1 /* DOMCSSPageRuleInternal.h */, + 85909D260ACC7D5500DF01F1 /* DOMCSSPrimitiveValueInternal.h */, + 85B498EC0ADB32FB00925CBB /* DOMCSSRuleInternal.h */, + 85E711430AC5D5340053270F /* DOMCSSRuleListInternal.h */, + 85E711440AC5D5340053270F /* DOMCSSStyleDeclarationInternal.h */, + 85909CD90ACC7A7E00DF01F1 /* DOMCSSStyleRuleInternal.h */, + 85909CDA0ACC7A7E00DF01F1 /* DOMCSSStyleSheetInternal.h */, + FCEBBAAA16A4967A00FA20A6 /* DOMCSSSupportsRuleInternal.h */, + 85909CDB0ACC7A7E00DF01F1 /* DOMCSSUnknownRuleInternal.h */, + 85B498F20ADB336A00925CBB /* DOMCSSValueInternal.h */, + 85909D280ACC7D5500DF01F1 /* DOMCSSValueListInternal.h */, + 85E711450AC5D5340053270F /* DOMDocumentFragmentInternal.h */, + 85E711460AC5D5340053270F /* DOMDocumentInternal.h */, + 85E711470AC5D5340053270F /* DOMDocumentTypeInternal.h */, + 85E711480AC5D5340053270F /* DOMDOMImplementationInternal.h */, + 85E711490AC5D5340053270F /* DOMElementInternal.h */, + 85E7114A0AC5D5340053270F /* DOMEntityInternal.h */, + 85E7114B0AC5D5340053270F /* DOMEntityReferenceInternal.h */, + 85B498F40ADB337A00925CBB /* DOMEventInternal.h */, + 2E3BC10A117D47C800B9409A /* DOMFileErrorInternal.h */, + BC00F0000E0A185500FD04E3 /* DOMFileInternal.h */, + BC00F0030E0A185500FD04E3 /* DOMFileListInternal.h */, + 85E7114C0AC5D5340053270F /* DOMHTMLAnchorElementInternal.h */, + 855247CD0AD850B80012093B /* DOMHTMLAppletElementInternal.h */, + 85E7114D0AC5D5340053270F /* DOMHTMLAreaElementInternal.h */, + 85E7114E0AC5D5340053270F /* DOMHTMLBaseElementInternal.h */, + 85E7114F0AC5D5340053270F /* DOMHTMLBaseFontElementInternal.h */, + 85E711500AC5D5340053270F /* DOMHTMLBodyElementInternal.h */, + 85E711510AC5D5340053270F /* DOMHTMLBRElementInternal.h */, + 85E711520AC5D5340053270F /* DOMHTMLButtonElementInternal.h */, + 93F9B6550BA0F35E00854064 /* DOMHTMLCanvasElementInternal.h */, + 85E711530AC5D5340053270F /* DOMHTMLCollectionInternal.h */, + F5C041E00FFCA96D00839D4A /* DOMHTMLDataListElementInternal.h */, + 85E711540AC5D5340053270F /* DOMHTMLDirectoryElementInternal.h */, + 85E711550AC5D5340053270F /* DOMHTMLDivElementInternal.h */, + 85E711560AC5D5340053270F /* DOMHTMLDListElementInternal.h */, + 85E711570AC5D5340053270F /* DOMHTMLDocumentInternal.h */, + 85E711580AC5D5340053270F /* DOMHTMLElementInternal.h */, + 855247CE0AD850B80012093B /* DOMHTMLEmbedElementInternal.h */, + 85E711590AC5D5340053270F /* DOMHTMLFieldSetElementInternal.h */, + 85E7115A0AC5D5340053270F /* DOMHTMLFontElementInternal.h */, + 85E7115B0AC5D5340053270F /* DOMHTMLFormElementInternal.h */, + 85E7115C0AC5D5340053270F /* DOMHTMLFrameElementInternal.h */, + 85E7115D0AC5D5340053270F /* DOMHTMLFrameSetElementInternal.h */, + 85E7115E0AC5D5350053270F /* DOMHTMLHeadElementInternal.h */, + 85E7115F0AC5D5350053270F /* DOMHTMLHeadingElementInternal.h */, + 85E711600AC5D5350053270F /* DOMHTMLHRElementInternal.h */, + 85E711610AC5D5350053270F /* DOMHTMLHtmlElementInternal.h */, + 85E711620AC5D5350053270F /* DOMHTMLIFrameElementInternal.h */, + 85E711630AC5D5350053270F /* DOMHTMLImageElementInternal.h */, + 85E711640AC5D5350053270F /* DOMHTMLInputElementInternal.h */, + A6148A6112E41D3A0044A784 /* DOMHTMLKeygenElementInternal.h */, + 85E711660AC5D5350053270F /* DOMHTMLLabelElementInternal.h */, + 85E711670AC5D5350053270F /* DOMHTMLLegendElementInternal.h */, + 85E711680AC5D5350053270F /* DOMHTMLLIElementInternal.h */, + 85E711690AC5D5350053270F /* DOMHTMLLinkElementInternal.h */, + 85E7116A0AC5D5350053270F /* DOMHTMLMapElementInternal.h */, + BC5156E70C03B741008BB0EE /* DOMHTMLMarqueeElementInternal.h */, + 85E7116B0AC5D5350053270F /* DOMHTMLMenuElementInternal.h */, + 85E7116C0AC5D5350053270F /* DOMHTMLMetaElementInternal.h */, + 85E7116D0AC5D5350053270F /* DOMHTMLModElementInternal.h */, + 85E7116E0AC5D5350053270F /* DOMHTMLObjectElementInternal.h */, + 85E7116F0AC5D5350053270F /* DOMHTMLOListElementInternal.h */, + 85E711700AC5D5350053270F /* DOMHTMLOptGroupElementInternal.h */, + 85E711710AC5D5350053270F /* DOMHTMLOptionsCollectionInternal.h */, + 85E711720AC5D5350053270F /* DOMHTMLParagraphElementInternal.h */, + 85E711730AC5D5350053270F /* DOMHTMLParamElementInternal.h */, + 85E711740AC5D5350053270F /* DOMHTMLPreElementInternal.h */, + A4226E981163D7CC008B8397 /* DOMHTMLProgressElementInternal.h */, + 85E711750AC5D5350053270F /* DOMHTMLQuoteElementInternal.h */, + 85E711760AC5D5350053270F /* DOMHTMLScriptElementInternal.h */, + 85E711770AC5D5350053270F /* DOMHTMLSelectElementInternal.h */, + 85E711780AC5D5350053270F /* DOMHTMLStyleElementInternal.h */, + 85E711790AC5D5350053270F /* DOMHTMLTableCaptionElementInternal.h */, + 85E7117A0AC5D5350053270F /* DOMHTMLTableCellElementInternal.h */, + 85E7117B0AC5D5350053270F /* DOMHTMLTableColElementInternal.h */, + 85E7117C0AC5D5350053270F /* DOMHTMLTableElementInternal.h */, + 85E7117D0AC5D5350053270F /* DOMHTMLTableRowElementInternal.h */, + 85E7117E0AC5D5350053270F /* DOMHTMLTableSectionElementInternal.h */, + 85E7117F0AC5D5350053270F /* DOMHTMLTextAreaElementInternal.h */, + 85E711800AC5D5350053270F /* DOMHTMLTitleElementInternal.h */, + 85E711810AC5D5350053270F /* DOMHTMLUListElementInternal.h */, + 85989DC50ACC8BBD00A0BC51 /* DOMKeyboardEventInternal.h */, + 85E711820AC5D5350053270F /* DOMMediaListInternal.h */, + 75793ED20D0CE85B007FC0AC /* DOMMessageEventInternal.h */, + E1ADEDD40E76BD60004A1A5E /* DOMMessagePortInternal.h */, + 85989DC60ACC8BBD00A0BC51 /* DOMMouseEventInternal.h */, + 85989DC70ACC8BBD00A0BC51 /* DOMMutationEventInternal.h */, + 85E711830AC5D5350053270F /* DOMNamedNodeMapInternal.h */, + 85B498FA0ADB340200925CBB /* DOMNodeInternal.h */, + 850B41C00AD9E7E700A6ED4F /* DOMNodeIteratorInternal.h */, + 85E711840AC5D5350053270F /* DOMNodeListInternal.h */, + 85E711850AC5D5350053270F /* DOMNotationInternal.h */, + 85989DC80ACC8BBD00A0BC51 /* DOMOverflowEventInternal.h */, + 85E711860AC5D5350053270F /* DOMProcessingInstructionInternal.h */, + BCC573370D695BD7006EF517 /* DOMProgressEventInternal.h */, + 8538F05A0AD722F1006A81D1 /* DOMRangeInternal.h */, + 85E711870AC5D5350053270F /* DOMRectInternal.h */, + BCD0FC4E0DBD720B00B2F630 /* DOMRGBColorInternal.h */, + 0FF50262102BA92B0066F39A /* DOMStyleMediaInternal.h */, + 85B498FE0ADB348100925CBB /* DOMStyleSheetInternal.h */, + 85E711880AC5D5350053270F /* DOMStyleSheetListInternal.h */, + 4429AB070CB84F81007647C5 /* DOMTextEventInternal.h */, + 85E7118A0AC5D5350053270F /* DOMTextInternal.h */, + 850B41C10AD9E7E700A6ED4F /* DOMTreeWalkerInternal.h */, + 85989DC90ACC8BBD00A0BC51 /* DOMUIEventInternal.h */, + 85989DCA0ACC8BBD00A0BC51 /* DOMWheelEventInternal.h */, + 85E7118B0AC5D5350053270F /* DOMXPathExpressionInternal.h */, + 85E7118C0AC5D5350053270F /* DOMXPathResultInternal.h */, + ); + name = Internal; + sourceTree = ""; + }; + 85E9E0A70AB3A0CC00069CD0 /* XPath */ = { + isa = PBXGroup; + children = ( + 85E9E09B0AB3A0C700069CD0 /* DOMXPathExpression.h */, + 85E9E09C0AB3A0C700069CD0 /* DOMXPathExpression.mm */, + 85E9E09E0AB3A0C700069CD0 /* DOMXPathNSResolver.h */, + 85E9E09F0AB3A0C700069CD0 /* DOMXPathResult.h */, + 85E9E0A00AB3A0C700069CD0 /* DOMXPathResult.mm */, + ); + name = XPath; + sourceTree = ""; + }; + 89878576122CA1DA003AABDA /* FileAPI */ = { + isa = PBXGroup; + children = ( + 2E2D99CB10E2BBDA00496337 /* JSBlob.cpp */, + 2E2D99CC10E2BBDA00496337 /* JSBlob.h */, + 89878587122CA26A003AABDA /* JSDirectoryEntry.h */, + 893C482712495472002B3D86 /* JSDirectoryEntrySync.h */, + 89878589122CA26A003AABDA /* JSDirectoryReader.h */, + 893C482812495472002B3D86 /* JSDirectoryReaderSync.cpp */, + 893C482912495472002B3D86 /* JSDirectoryReaderSync.h */, + 8987858F122CA2A7003AABDA /* JSDOMFileSystem.h */, + 893C482B12495472002B3D86 /* JSDOMFileSystemSync.h */, + 89878591122CA2A7003AABDA /* JSEntriesCallback.h */, + 89878593122CA2A7003AABDA /* JSEntry.h */, + 89878595122CA2A7003AABDA /* JSEntryArray.h */, + 893C482D12495472002B3D86 /* JSEntryArraySync.h */, + 89878597122CA2A7003AABDA /* JSEntryCallback.h */, + 893C482F12495472002B3D86 /* JSEntrySync.h */, + 89878599122CA2A7003AABDA /* JSErrorCallback.h */, + BC00F0100E0A189500FD04E3 /* JSFile.cpp */, + BC00F0110E0A189500FD04E3 /* JSFile.h */, + 893C47B61238A099002B3D86 /* JSFileCallback.h */, + 8987859B122CA2A7003AABDA /* JSFileEntry.h */, + 893C483112495472002B3D86 /* JSFileEntrySync.h */, + 2E3BC0C8117D3E0800B9409A /* JSFileError.cpp */, + 2E3BC0C9117D3E0800B9409A /* JSFileError.h */, + 898785EE122E1E87003AABDA /* JSFileException.cpp */, + 898785EF122E1E87003AABDA /* JSFileException.h */, + BC00F0120E0A189500FD04E3 /* JSFileList.cpp */, + BC00F0130E0A189500FD04E3 /* JSFileList.h */, + 2E94F439119207DA00B7F75D /* JSFileReader.cpp */, + 2E94F43A119207DA00B7F75D /* JSFileReader.h */, + 898785F2122E1EAC003AABDA /* JSFileReaderSync.cpp */, + 898785F3122E1EAC003AABDA /* JSFileReaderSync.h */, + 8987859C122CA2A7003AABDA /* JSFileSystemCallback.cpp */, + 8987859D122CA2A7003AABDA /* JSFileSystemCallback.h */, + 46DA844C1224A0710060D006 /* JSFileWriter.h */, + 893C47B91238A0A9002B3D86 /* JSFileWriterCallback.cpp */, + 893C47BA1238A0A9002B3D86 /* JSFileWriterCallback.h */, + 898785A1122CA2A7003AABDA /* JSMetadata.h */, + 898785A3122CA2A7003AABDA /* JSMetadataCallback.h */, + ); + name = FileAPI; + sourceTree = ""; + }; + 89F60B08157F68350075E157 /* quota */ = { + isa = PBXGroup; + children = ( + 89F60B0A157F686D0075E157 /* DOMWindowQuota.h */, + 89FD58D816EEDBD400E183F0 /* NavigatorStorageQuota.h */, + 1ABC7108170E5E1B00F9A9D6 /* WorkerNavigatorStorageQuota.h */, + ); + name = quota; + sourceTree = ""; + }; + 89F60B17157F6A020075E157 /* Quota */ = { + isa = PBXGroup; + children = ( + A7F1F4BA17148BDB00CD4852 /* DOMWindowQuota.idl */, + 892ABE5F16EEE2E5009F3587 /* JSDOMWindowQuota.h */, + 892ABE5C16EEE2AA009F3587 /* JSNavigatorStorageQuota.cpp */, + 892ABE5D16EEE2AA009F3587 /* JSNavigatorStorageQuota.h */, + 892ABE6016EEE2E5009F3587 /* JSStorageErrorCallback.cpp */, + 892ABE6116EEE2E5009F3587 /* JSStorageErrorCallback.h */, + 89F60CD215809D760075E157 /* JSStorageInfo.h */, + 892ABE6216EEE2E5009F3587 /* JSStorageQuota.cpp */, + 892ABE6316EEE2E5009F3587 /* JSStorageQuota.h */, + 892ABE6416EEE2E5009F3587 /* JSStorageQuotaCallback.cpp */, + 892ABE6516EEE2E5009F3587 /* JSStorageQuotaCallback.h */, + 892ABE6616EEE2E5009F3587 /* JSStorageUsageCallback.cpp */, + 892ABE6716EEE2E5009F3587 /* JSStorageUsageCallback.h */, + A7F1F4BB17148BDB00CD4852 /* NavigatorStorageQuota.idl */, + A7F1F4BC17148BDB00CD4852 /* StorageErrorCallback.idl */, + A7F1F4BD17148BDB00CD4852 /* StorageInfo.idl */, + A7F1F4BE17148BDB00CD4852 /* StorageQuota.idl */, + A7F1F4BF17148BDB00CD4852 /* StorageQuotaCallback.idl */, + A7F1F4C017148BDB00CD4852 /* StorageUsageCallback.idl */, + A7F1F4C117148BDB00CD4852 /* WorkerNavigatorStorageQuota.idl */, + ); + name = Quota; + sourceTree = ""; + }; + 8CADF2A2135C7B36009EF43F /* leveldb */ = { + isa = PBXGroup; + children = ( + 8CADF2A3135C7B36009EF43F /* LevelDBComparator.h */, + 8CADF2A5135C7B36009EF43F /* LevelDBDatabase.h */, + 8CADF2A7135C7B36009EF43F /* LevelDBIterator.h */, + 8CADF2A8135C7B36009EF43F /* LevelDBSlice.h */, + 8C0E3349138A92C7008DA94F /* LevelDBTransaction.h */, + 8C0E334B138A92C7008DA94F /* LevelDBWriteBatch.h */, + ); + path = leveldb; + sourceTree = ""; + }; + 93309D86099E64910056E581 /* editing */ = { + isa = PBXGroup; + children = ( + ED501DC90B249F3900AE18D9 /* mac */, + CE08C3CF152B599A0021B8C2 /* AlternativeTextController.cpp */, + CE08C3D0152B599A0021B8C2 /* AlternativeTextController.h */, + 93309D87099E64910056E581 /* AppendNodeCommand.cpp */, + 93309D88099E64910056E581 /* AppendNodeCommand.h */, + 9B417063125662B3006B28FC /* ApplyBlockElementCommand.cpp */, + 9B417062125662B3006B28FC /* ApplyBlockElementCommand.h */, + 93309D89099E64910056E581 /* ApplyStyleCommand.cpp */, + 93309D8A099E64910056E581 /* ApplyStyleCommand.h */, + 93309D8B099E64910056E581 /* BreakBlockquoteCommand.cpp */, + 93309D8C099E64910056E581 /* BreakBlockquoteCommand.h */, + 93309D8D099E64910056E581 /* CompositeEditCommand.cpp */, + 93309D8E099E64910056E581 /* CompositeEditCommand.h */, + D0B0556709C6700100307E43 /* CreateLinkCommand.cpp */, + D0B0556609C6700100307E43 /* CreateLinkCommand.h */, + 1C4C8F630AD8655D009475CE /* DeleteButton.cpp */, + 1C4C8F640AD8655D009475CE /* DeleteButton.h */, + 1C4C8EFF0AD85D87009475CE /* DeleteButtonController.cpp */, + 1C4C8F000AD85D87009475CE /* DeleteButtonController.h */, + 93309D8F099E64910056E581 /* DeleteFromTextNodeCommand.cpp */, + 93309D90099E64910056E581 /* DeleteFromTextNodeCommand.h */, + 93309D91099E64910056E581 /* DeleteSelectionCommand.cpp */, + 93309D92099E64910056E581 /* DeleteSelectionCommand.h */, + CECADFC2153778FF00E37068 /* DictationAlternative.cpp */, + CECADFC3153778FF00E37068 /* DictationAlternative.h */, + CECADFC4153778FF00E37068 /* DictationCommand.cpp */, + CECADFC5153778FF00E37068 /* DictationCommand.h */, + 93309D93099E64910056E581 /* EditAction.h */, + 93309D94099E64910056E581 /* EditCommand.cpp */, + 93309D95099E64910056E581 /* EditCommand.h */, + 4F1534DD11B532EC0021FD86 /* EditingBehavior.h */, + 4F1534DF11B533020021FD86 /* EditingBehaviorTypes.h */, + 3AC648B1129E146500C3EB25 /* EditingBoundary.h */, + 9BAB6C6B12550631001626D4 /* EditingStyle.cpp */, + 9BAB6C6A12550631001626D4 /* EditingStyle.h */, + 4B3043CA0AE0373B00A82647 /* Editor.cpp */, + 4B3043CB0AE0373B00A82647 /* Editor.h */, + 93A38B4A0D0E5808006872C2 /* EditorCommand.cpp */, + 4BAE95B00B2FA9CE00AED8A0 /* EditorDeleteAction.h */, + 93FDAFC90B11307400E2746F /* EditorInsertAction.h */, + 372C00D8129619F8005C9575 /* FindOptions.h */, + D05CED270A40BB2C00C5AF38 /* FormatBlockCommand.cpp */, + D05CED280A40BB2C00C5AF38 /* FormatBlockCommand.h */, + 93309DBE099E64910056E581 /* FrameSelection.cpp */, + 93309DBF099E64910056E581 /* FrameSelection.h */, + 93309D98099E64910056E581 /* htmlediting.cpp */, + 93309D99099E64910056E581 /* htmlediting.h */, + 93309D96099E64910056E581 /* HTMLInterchange.cpp */, + 93309D97099E64910056E581 /* HTMLInterchange.h */, + DB23C2C90A508D29002489EB /* IndentOutdentCommand.cpp */, + DB23C2CA0A508D29002489EB /* IndentOutdentCommand.h */, + 93309D9A099E64910056E581 /* InsertIntoTextNodeCommand.cpp */, + 93309D9B099E64910056E581 /* InsertIntoTextNodeCommand.h */, + 93309D9C099E64910056E581 /* InsertLineBreakCommand.cpp */, + 93309D9D099E64910056E581 /* InsertLineBreakCommand.h */, + D07DEAB70A36554A00CA30F8 /* InsertListCommand.cpp */, + D07DEAB80A36554A00CA30F8 /* InsertListCommand.h */, + 93309D9E099E64910056E581 /* InsertNodeBeforeCommand.cpp */, + 93309D9F099E64910056E581 /* InsertNodeBeforeCommand.h */, + 93309DA0099E64910056E581 /* InsertParagraphSeparatorCommand.cpp */, + 93309DA1099E64910056E581 /* InsertParagraphSeparatorCommand.h */, + 93309DA2099E64910056E581 /* InsertTextCommand.cpp */, + 93309DA3099E64910056E581 /* InsertTextCommand.h */, + 93309DA8099E64910056E581 /* markup.cpp */, + 93309DA9099E64910056E581 /* markup.h */, + 9728C3111268E4390041E89B /* MarkupAccumulator.cpp */, + 9728C3121268E4390041E89B /* MarkupAccumulator.h */, + 93309DAA099E64910056E581 /* MergeIdenticalElementsCommand.cpp */, + 93309DAB099E64910056E581 /* MergeIdenticalElementsCommand.h */, + C6D74AE309AA290A000B0A52 /* ModifySelectionListLevel.cpp */, + C6D74AD309AA282E000B0A52 /* ModifySelectionListLevel.h */, + 93309DAC099E64910056E581 /* MoveSelectionCommand.cpp */, + 93309DAD099E64910056E581 /* MoveSelectionCommand.h */, + 93309DB1099E64910056E581 /* RemoveCSSPropertyCommand.cpp */, + 93309DB2099E64910056E581 /* RemoveCSSPropertyCommand.h */, + D06C0D8E0CFD11460065F43F /* RemoveFormatCommand.cpp */, + D06C0D8D0CFD11460065F43F /* RemoveFormatCommand.h */, + 93309DB5099E64910056E581 /* RemoveNodeCommand.cpp */, + 93309DB6099E64910056E581 /* RemoveNodeCommand.h */, + 93309DB7099E64910056E581 /* RemoveNodePreservingChildrenCommand.cpp */, + 93309DB8099E64910056E581 /* RemoveNodePreservingChildrenCommand.h */, + 9B32CDA813DF7FA900F34D13 /* RenderedPosition.cpp */, + 9B32CDA713DF7FA900F34D13 /* RenderedPosition.h */, + A89CCC500F44E98100B5DA10 /* ReplaceNodeWithSpanCommand.cpp */, + A89CCC510F44E98100B5DA10 /* ReplaceNodeWithSpanCommand.h */, + 93309DBA099E64910056E581 /* ReplaceSelectionCommand.cpp */, + 93309DBB099E64910056E581 /* ReplaceSelectionCommand.h */, + 93309DC0099E64910056E581 /* SetNodeAttributeCommand.cpp */, + 93309DC1099E64910056E581 /* SetNodeAttributeCommand.h */, + B8DBDB47130B0F8A00F5CDB1 /* SetSelectionCommand.cpp */, + B8DBDB48130B0F8A00F5CDB1 /* SetSelectionCommand.h */, + C5A1EA79152BC486004D00B6 /* SimplifyMarkupCommand.cpp */, + C5A1EA7A152BC486004D00B6 /* SimplifyMarkupCommand.h */, + 4B6FA6F20C39E48C00087011 /* SmartReplace.h */, + 4B6FA6F60C39E4A100087011 /* SmartReplaceCF.cpp */, + A78FE13912366B1000ACE8D0 /* SpellChecker.cpp */, + A78FE13A12366B1000ACE8D0 /* SpellChecker.h */, + B8DBDB49130B0F8A00F5CDB1 /* SpellingCorrectionCommand.cpp */, + B8DBDB4A130B0F8A00F5CDB1 /* SpellingCorrectionCommand.h */, + 93309DC2099E64910056E581 /* SplitElementCommand.cpp */, + 93309DC3099E64910056E581 /* SplitElementCommand.h */, + 93309DC4099E64910056E581 /* SplitTextNodeCommand.cpp */, + 93309DC5099E64910056E581 /* SplitTextNodeCommand.h */, + 93309DC6099E64910056E581 /* SplitTextNodeContainingElementCommand.cpp */, + 93309DC7099E64910056E581 /* SplitTextNodeContainingElementCommand.h */, + 93309DC8099E64910056E581 /* TextAffinity.h */, + A7DBF8DB1276919C006B6008 /* TextCheckingHelper.cpp */, + A7DBF8DC1276919C006B6008 /* TextCheckingHelper.h */, + 93309DC9099E64910056E581 /* TextGranularity.h */, + CECADFCB1537791D00E37068 /* TextInsertionBaseCommand.cpp */, + CECADFCC1537791D00E37068 /* TextInsertionBaseCommand.h */, + 93309DCC099E64910056E581 /* TextIterator.cpp */, + 93309DCD099E64910056E581 /* TextIterator.h */, + 93309DCA099E64910056E581 /* TypingCommand.cpp */, + 93309DCB099E64910056E581 /* TypingCommand.h */, + 9B2D8A7814997CCF00ECEF3E /* UndoStep.h */, + D086FE9709D53AAB005BC74D /* UnlinkCommand.cpp */, + D086FE9609D53AAB005BC74D /* UnlinkCommand.h */, + 93309DD0099E64910056E581 /* VisiblePosition.cpp */, + 93309DD1099E64910056E581 /* VisiblePosition.h */, + A883DF250F3D045D00F19BF6 /* VisibleSelection.cpp */, + A883DF260F3D045D00F19BF6 /* VisibleSelection.h */, + 93309DCE099E64910056E581 /* VisibleUnits.cpp */, + 93309DCF099E64910056E581 /* VisibleUnits.h */, + 93309DD4099E64910056E581 /* WrapContentsInDummySpanCommand.cpp */, + 93309DD5099E64910056E581 /* WrapContentsInDummySpanCommand.h */, + 9BAF3B2312C1A39800014BF1 /* WritingDirection.h */, + ); + path = editing; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 9332AB3B16515D7700D827EC /* cpu */ = { + isa = PBXGroup; + children = ( + 9332AB3C16515D7700D827EC /* arm */, + ); + path = cpu; + sourceTree = ""; + }; + 9332AB3C16515D7700D827EC /* arm */ = { + isa = PBXGroup; + children = ( + 9332AB861653A97900D827EC /* filters */, + 9332AB3D16515D7700D827EC /* GraphicsContext3DNEON.h */, + ); + path = arm; + sourceTree = ""; + }; + 9332AB861653A97900D827EC /* filters */ = { + isa = PBXGroup; + children = ( + 9332AB871653A97900D827EC /* FEBlendNEON.h */, + 9332AB881653A97900D827EC /* FECompositeArithmeticNEON.h */, + 9332AB891653A97900D827EC /* FEGaussianBlurNEON.h */, + 9332AB8A1653A97900D827EC /* FELightingNEON.cpp */, + 9332AB8B1653A97900D827EC /* FELightingNEON.h */, + 9332AB8C1653A97900D827EC /* NEONHelpers.h */, + ); + path = filters; + sourceTree = ""; + }; + 93A1EAA20A5634D8006960A0 /* mac */ = { + isa = PBXGroup; + children = ( + 1C2649790D7E248A00BD10F2 /* DocumentLoaderMac.cpp */, + 656D371A0ADBA5DE00A4554D /* LoaderNSURLExtras.h */, + 656D371B0ADBA5DE00A4554D /* LoaderNSURLExtras.mm */, + 514BC83D161CF043004D52F4 /* ResourceBuffer.mm */, + 51AA3F6E0BD5AA9E00892971 /* ResourceLoaderMac.mm */, + ); + path = mac; + sourceTree = ""; + }; + 93C09A820B064F05005ABD4D /* mac */ = { + isa = PBXGroup; + children = ( + ABAF22070C03B1C700B0BCF0 /* ChromeMac.mm */, + A718788F0B2D04AC00A16ECE /* DragControllerMac.mm */, + 93C09A7E0B064EEF005ABD4D /* EventHandlerMac.mm */, + 65BF023C0974819000C43196 /* FrameMac.mm */, + 7CE30DA8171B63D200EC33E1 /* FrameSnapshottingMac.h */, + 7CE30DA7171B63D200EC33E1 /* FrameSnapshottingMac.mm */, + 1C26497B0D7E24EC00BD10F2 /* PageMac.cpp */, + E1C2F2481533A2120083F974 /* SettingsMac.mm */, + F587854C02DE375901EA4122 /* WebCoreFrameView.h */, + ); + path = mac; + sourceTree = ""; + }; + 93EEC1EC09C2877700C515D1 /* html */ = { + isa = PBXGroup; + children = ( + 49484FAE102CF01E00187DD3 /* canvas */, + 1A88A90117553CD7000C74F9 /* forms */, + 97C1F5511228558800EDE616 /* parser */, + 4150F9ED12B6E0990008C860 /* shadow */, + B1AD4E7713A12A7200846B27 /* track */, + 379E61C5126CA5C300B63E8D /* BaseButtonInputType.cpp */, + 379E61C6126CA5C300B63E8D /* BaseButtonInputType.h */, + 379E61C7126CA5C300B63E8D /* BaseCheckableInputType.cpp */, + 379E61C8126CA5C300B63E8D /* BaseCheckableInputType.h */, + F5E0C6591643C42C00D6CB69 /* BaseChooserOnlyDateAndTimeInputType.cpp */, + F5E0C65A1643C42C00D6CB69 /* BaseChooserOnlyDateAndTimeInputType.h */, + C33EE5C214FB49610002095A /* BaseClickableWithKeyInputType.cpp */, + C33EE5C314FB49610002095A /* BaseClickableWithKeyInputType.h */, + F59C95FD1255B23F000623C0 /* BaseDateAndTimeInputType.cpp */, + F59C95FE1255B23F000623C0 /* BaseDateAndTimeInputType.h */, + F55B3D791251F12D003EF269 /* BaseTextInputType.cpp */, + F55B3D7A1251F12D003EF269 /* BaseTextInputType.h */, + F55B3D7B1251F12D003EF269 /* ButtonInputType.cpp */, + F55B3D7C1251F12D003EF269 /* ButtonInputType.h */, + F55B3D7D1251F12D003EF269 /* CheckboxInputType.cpp */, + F55B3D7E1251F12D003EF269 /* CheckboxInputType.h */, + 4ACBC0BC12713CBD0094F9B2 /* ClassList.cpp */, + 4ACBC0BD12713CBD0094F9B2 /* ClassList.h */, + 93C441FF0F813AE100C1A634 /* CollectionType.h */, + F55B3D801251F12D003EF269 /* ColorInputType.h */, + F55B3D811251F12D003EF269 /* DateInputType.cpp */, + F55B3D821251F12D003EF269 /* DateInputType.h */, + F55B3D831251F12D003EF269 /* DateTimeInputType.cpp */, + F55B3D841251F12D003EF269 /* DateTimeInputType.h */, + F55B3D851251F12D003EF269 /* DateTimeLocalInputType.cpp */, + F55B3D861251F12D003EF269 /* DateTimeLocalInputType.h */, + 2ED609BA1145B07100C8684E /* DOMFormData.cpp */, + 2ED609BB1145B07100C8684E /* DOMFormData.h */, + 2E0888C3114883A900AF4265 /* DOMFormData.idl */, + 4ACBC0C012713CCA0094F9B2 /* DOMSettableTokenList.cpp */, + 4ACBC0C112713CCA0094F9B2 /* DOMSettableTokenList.h */, + 4ACBC0C212713CCA0094F9B2 /* DOMSettableTokenList.idl */, + 76FC2B0812370DA0006A991A /* DOMTokenList.cpp */, + 76FC2B0912370DA0006A991A /* DOMTokenList.h */, + 76FC2B0A12370DA0006A991A /* DOMTokenList.idl */, + 2E37DFD712DBAFB800A6B233 /* DOMURL.cpp */, + 2E37DFD812DBAFB800A6B233 /* DOMURL.h */, + 2E37DFD912DBAFB800A6B233 /* DOMURL.idl */, + F55B3D871251F12D003EF269 /* EmailInputType.cpp */, + F55B3D881251F12D003EF269 /* EmailInputType.h */, + F55B3D891251F12D003EF269 /* FileInputType.cpp */, + F55B3D8A1251F12D003EF269 /* FileInputType.h */, + 4A0DA2FC129B241900AB61E1 /* FormAssociatedElement.cpp */, + 4A0DA2FD129B241900AB61E1 /* FormAssociatedElement.h */, + F50664F5157F52DC00AC226F /* FormController.cpp */, + F50664F6157F52DC00AC226F /* FormController.h */, + A8136D370973A8E700D74463 /* FormDataList.cpp */, + A8136D360973A8E700D74463 /* FormDataList.h */, + 97205AAD123928CA00B17380 /* FTPDirectoryDocument.cpp */, + 97205AAE123928CA00B17380 /* FTPDirectoryDocument.h */, + F55B3D8B1251F12D003EF269 /* HiddenInputType.cpp */, + F55B3D8C1251F12D003EF269 /* HiddenInputType.h */, + BC97E239109144950010D361 /* HTMLAllCollection.cpp */, + BC97E238109144950010D361 /* HTMLAllCollection.h */, + BC97E23C109146F10010D361 /* HTMLAllCollection.idl */, + A8CFF79A0A156978000A4234 /* HTMLAnchorElement.cpp */, + A8CFF7A10A156978000A4234 /* HTMLAnchorElement.h */, + 1A4A2DD30A1B845100C807F8 /* HTMLAnchorElement.idl */, + A871D4540A127CBC00B12A68 /* HTMLAppletElement.cpp */, + A871D4530A127CBC00B12A68 /* HTMLAppletElement.h */, + 1A4A2DBA0A1B83A800C807F8 /* HTMLAppletElement.idl */, + A8EA7D270A19385500A8EF5F /* HTMLAreaElement.cpp */, + A8EA7D260A19385500A8EF5F /* HTMLAreaElement.h */, + 1AE2A9F00A1CDA5700B42B25 /* HTMLAreaElement.idl */, + 519FE0A10DAD446E00A08F21 /* HTMLAttributeNames.in */, + E446138F0CD6331000FADA75 /* HTMLAudioElement.cpp */, + E44613900CD6331000FADA75 /* HTMLAudioElement.h */, + E44613910CD6331000FADA75 /* HTMLAudioElement.idl */, + A871DC1E0A15205700B12A68 /* HTMLBaseElement.cpp */, + A871DC130A15205700B12A68 /* HTMLBaseElement.h */, + A80E7AAF0A19D1F1007FB8C5 /* HTMLBaseElement.idl */, + A8DF3FCB097FA0FB0052981B /* HTMLBaseFontElement.cpp */, + A8DF3FCA097FA0FB0052981B /* HTMLBaseFontElement.h */, + 1AE2A9F10A1CDA5700B42B25 /* HTMLBaseFontElement.idl */, + 9B24DE8C15194B9500C59C27 /* HTMLBDIElement.h */, + A871DE1D0A152AC800B12A68 /* HTMLBodyElement.cpp */, + A871DE200A152AC800B12A68 /* HTMLBodyElement.h */, + 1AE2A9F20A1CDA5700B42B25 /* HTMLBodyElement.idl */, + A8CFF79E0A156978000A4234 /* HTMLBRElement.cpp */, + A8CFF7A00A156978000A4234 /* HTMLBRElement.h */, + 1AE2A9F30A1CDA5700B42B25 /* HTMLBRElement.idl */, + A81369B7097374F500D74463 /* HTMLButtonElement.cpp */, + A81369B6097374F500D74463 /* HTMLButtonElement.h */, + A80E7E550A1A7FB3007FB8C5 /* HTMLButtonElement.idl */, + 51F6A3D50663BF04004D2919 /* HTMLCanvasElement.cpp */, + 51F6A3D60663BF04004D2919 /* HTMLCanvasElement.h */, + 938E662509F09956008A48EC /* HTMLCanvasElement.idl */, + A8DF3FC9097FA0FB0052981B /* HTMLCollection.cpp */, + A8DF3FC8097FA0FB0052981B /* HTMLCollection.h */, + 85DF2F690AA3C74300AD64C5 /* HTMLCollection.idl */, + F5C041D70FFCA7CE00839D4A /* HTMLDataListElement.cpp */, + F5C041D80FFCA7CE00839D4A /* HTMLDataListElement.h */, + F5C041D90FFCA7CE00839D4A /* HTMLDataListElement.idl */, + D359D786129CA2710006E5D2 /* HTMLDetailsElement.cpp */, + D359D787129CA2710006E5D2 /* HTMLDetailsElement.h */, + D359D788129CA2710006E5D2 /* HTMLDetailsElement.idl */, + 762F1ED6159D960A007408F2 /* HTMLDialogElement.h */, + 762F1ED8159D961A007408F2 /* HTMLDialogElement.idl */, + A8EA79ED0A1916DF00A8EF5F /* HTMLDirectoryElement.cpp */, + A8EA79EE0A1916DF00A8EF5F /* HTMLDirectoryElement.h */, + 1A85B1D90A1B23A400D8C87C /* HTMLDirectoryElement.idl */, + A8EA7CA30A192B9C00A8EF5F /* HTMLDivElement.cpp */, + A8EA7CA90A192B9C00A8EF5F /* HTMLDivElement.h */, + 1A85B2AD0A1B2A6D00D8C87C /* HTMLDivElement.idl */, + A8EA79E90A1916DF00A8EF5F /* HTMLDListElement.cpp */, + A8EA79EB0A1916DF00A8EF5F /* HTMLDListElement.h */, + 1A85B1D10A1B235B00D8C87C /* HTMLDListElement.idl */, + F523D23B02DE4396018635CA /* HTMLDocument.cpp */, + F523D23C02DE4396018635CA /* HTMLDocument.h */, + 1A494E290A12354300FDAFC1 /* HTMLDocument.idl */, + F523D23E02DE4396018635CA /* HTMLElement.cpp */, + F523D23F02DE4396018635CA /* HTMLElement.h */, + 1A494BBB0A122DCD00FDAFC1 /* HTMLElement.idl */, + A871D4550A127CBC00B12A68 /* HTMLEmbedElement.cpp */, + A871D4520A127CBC00B12A68 /* HTMLEmbedElement.h */, + 859128790AB222EC00202265 /* HTMLEmbedElement.idl */, + A81369B9097374F500D74463 /* HTMLFieldSetElement.cpp */, + A81369B8097374F500D74463 /* HTMLFieldSetElement.h */, + 1AE2A9F40A1CDA5700B42B25 /* HTMLFieldSetElement.idl */, + A8CFF7980A156978000A4234 /* HTMLFontElement.cpp */, + A8CFF79C0A156978000A4234 /* HTMLFontElement.h */, + 1AE2A9F50A1CDA5700B42B25 /* HTMLFontElement.idl */, + A81369B3097374F500D74463 /* HTMLFormControlElement.cpp */, + A81369B2097374F500D74463 /* HTMLFormControlElement.h */, + E14F1C4214B5DAC600EA9009 /* HTMLFormControlElementWithState.cpp */, + E14F1C4314B5DAC600EA9009 /* HTMLFormControlElementWithState.h */, + A8DF3FC7097FA0FB0052981B /* HTMLFormControlsCollection.cpp */, + A8DF3FC6097FA0FB0052981B /* HTMLFormControlsCollection.h */, + 9B1AB0791648C69D0051F3F2 /* HTMLFormControlsCollection.idl */, + A81369B5097374F500D74463 /* HTMLFormElement.cpp */, + A81369B4097374F500D74463 /* HTMLFormElement.h */, + A8D064EF0A23BFEA005E7203 /* HTMLFormElement.idl */, + A871DE170A152AC800B12A68 /* HTMLFrameElement.cpp */, + A871DE1F0A152AC800B12A68 /* HTMLFrameElement.h */, + 855542950AA4938800BA89F2 /* HTMLFrameElement.idl */, + 14FFE31C0AE1963300136BF5 /* HTMLFrameElementBase.cpp */, + 14FFE31B0AE1963300136BF5 /* HTMLFrameElementBase.h */, + 93E2425E0B2B509500C732A1 /* HTMLFrameOwnerElement.cpp */, + 93E241FE0B2B4E4000C732A1 /* HTMLFrameOwnerElement.h */, + A871DE220A152AC800B12A68 /* HTMLFrameSetElement.cpp */, + A871DE1C0A152AC800B12A68 /* HTMLFrameSetElement.h */, + 855542960AA4938800BA89F2 /* HTMLFrameSetElement.idl */, + A871DE190A152AC800B12A68 /* HTMLHeadElement.cpp */, + A871DE210A152AC800B12A68 /* HTMLHeadElement.h */, + A80E7AB10A19D1F1007FB8C5 /* HTMLHeadElement.idl */, + A8EA7CA00A192B9C00A8EF5F /* HTMLHeadingElement.cpp */, + A8EA7CAA0A192B9C00A8EF5F /* HTMLHeadingElement.h */, + 1AE2A9F80A1CDA5700B42B25 /* HTMLHeadingElement.idl */, + A8EA7CA50A192B9C00A8EF5F /* HTMLHRElement.cpp */, + A8EA7CA10A192B9C00A8EF5F /* HTMLHRElement.h */, + 1AE2A9F90A1CDA5700B42B25 /* HTMLHRElement.idl */, + A871DE1A0A152AC800B12A68 /* HTMLHtmlElement.cpp */, + A871DE1B0A152AC800B12A68 /* HTMLHtmlElement.h */, + 1A85B17D0A1B183600D8C87C /* HTMLHtmlElement.idl */, + A871DE180A152AC800B12A68 /* HTMLIFrameElement.cpp */, + A871DE1E0A152AC800B12A68 /* HTMLIFrameElement.h */, + 855542970AA4938800BA89F2 /* HTMLIFrameElement.idl */, + A8EA7D290A19385500A8EF5F /* HTMLImageElement.cpp */, + A8EA7D250A19385500A8EF5F /* HTMLImageElement.h */, + 1AE2AA790A1CDC6100B42B25 /* HTMLImageElement.idl */, + A8EA7D280A19385500A8EF5F /* HTMLImageLoader.cpp */, + A8EA7D230A19385500A8EF5F /* HTMLImageLoader.h */, + A81369B1097374F500D74463 /* HTMLInputElement.cpp */, + A81369B0097374F500D74463 /* HTMLInputElement.h */, + A80E7E170A1A7CCB007FB8C5 /* HTMLInputElement.idl */, + A81369C9097374F600D74463 /* HTMLKeygenElement.cpp */, + A81369C8097374F500D74463 /* HTMLKeygenElement.h */, + A6148A7F12E41ED10044A784 /* HTMLKeygenElement.idl */, + A81369C7097374F500D74463 /* HTMLLabelElement.cpp */, + A81369C6097374F500D74463 /* HTMLLabelElement.h */, + 1AE2AABE0A1CDD8300B42B25 /* HTMLLabelElement.idl */, + A81369C5097374F500D74463 /* HTMLLegendElement.cpp */, + A81369C4097374F500D74463 /* HTMLLegendElement.h */, + 1AE2AACC0A1CDDDB00B42B25 /* HTMLLegendElement.idl */, + A8EA79F00A1916DF00A8EF5F /* HTMLLIElement.cpp */, + A8EA79EA0A1916DF00A8EF5F /* HTMLLIElement.h */, + 1AE2AAE60A1CE52E00B42B25 /* HTMLLIElement.idl */, + A871DC150A15205700B12A68 /* HTMLLinkElement.cpp */, + A871DC140A15205700B12A68 /* HTMLLinkElement.h */, + A80E7AB00A19D1F1007FB8C5 /* HTMLLinkElement.idl */, + A8EA7D2A0A19385500A8EF5F /* HTMLMapElement.cpp */, + A8EA7D240A19385500A8EF5F /* HTMLMapElement.h */, + 1AE2AAF70A1CE58600B42B25 /* HTMLMapElement.idl */, + A8EA7C9E0A192B9C00A8EF5F /* HTMLMarqueeElement.cpp */, + A8EA7C9D0A192B9C00A8EF5F /* HTMLMarqueeElement.h */, + BC491B4E0C023E2D009D6316 /* HTMLMarqueeElement.idl */, + E44613920CD6331000FADA75 /* HTMLMediaElement.cpp */, + E44613930CD6331000FADA75 /* HTMLMediaElement.h */, + E44613940CD6331000FADA75 /* HTMLMediaElement.idl */, + A8EA79EC0A1916DF00A8EF5F /* HTMLMenuElement.cpp */, + A8EA79E80A1916DF00A8EF5F /* HTMLMenuElement.h */, + 1AE2AE430A1D269E00B42B25 /* HTMLMenuElement.idl */, + A871DC1B0A15205700B12A68 /* HTMLMetaElement.cpp */, + A871DC180A15205700B12A68 /* HTMLMetaElement.h */, + A80E79FC0A19C307007FB8C5 /* HTMLMetaElement.idl */, + A4544248119B3661009BE912 /* HTMLMeterElement.cpp */, + A4544249119B3661009BE912 /* HTMLMeterElement.h */, + A71A70C911AFB02000989D6D /* HTMLMeterElement.idl */, + A8CFF79F0A156978000A4234 /* HTMLModElement.cpp */, + A8CFF79D0A156978000A4234 /* HTMLModElement.h */, + 1AE2AB070A1CE5CF00B42B25 /* HTMLModElement.idl */, + A8DF3FCD097FA0FB0052981B /* HTMLNameCollection.cpp */, + A8DF3FCC097FA0FB0052981B /* HTMLNameCollection.h */, + A871D4510A127CBC00B12A68 /* HTMLObjectElement.cpp */, + A871D4500A127CBC00B12A68 /* HTMLObjectElement.h */, + 855542980AA4938800BA89F2 /* HTMLObjectElement.idl */, + A8EA79EF0A1916DF00A8EF5F /* HTMLOListElement.cpp */, + A8EA79E50A1916DF00A8EF5F /* HTMLOListElement.h */, + 1A85B1CB0A1B22DC00D8C87C /* HTMLOListElement.idl */, + A81369C3097374F500D74463 /* HTMLOptGroupElement.cpp */, + A81369C2097374F500D74463 /* HTMLOptGroupElement.h */, + A80E7E190A1A7CCB007FB8C5 /* HTMLOptGroupElement.idl */, + A81369C1097374F500D74463 /* HTMLOptionElement.cpp */, + A81369C0097374F500D74463 /* HTMLOptionElement.h */, + A80E7E180A1A7CCB007FB8C5 /* HTMLOptionElement.idl */, + 9327A94109968D1A0068A546 /* HTMLOptionsCollection.cpp */, + A81369BE097374F500D74463 /* HTMLOptionsCollection.h */, + 85DF2F920AA3C9B600AD64C5 /* HTMLOptionsCollection.idl */, + 4AD01005127E642A0015035F /* HTMLOutputElement.cpp */, + 4AD01006127E642A0015035F /* HTMLOutputElement.h */, + 4AD01007127E642A0015035F /* HTMLOutputElement.idl */, + A8EA7CA40A192B9C00A8EF5F /* HTMLParagraphElement.cpp */, + A8EA7CA70A192B9C00A8EF5F /* HTMLParagraphElement.h */, + 1AE2AB610A1CE7CA00B42B25 /* HTMLParagraphElement.idl */, + A871D44F0A127CBC00B12A68 /* HTMLParamElement.cpp */, + A871D44E0A127CBC00B12A68 /* HTMLParamElement.h */, + 1AE2AB720A1CE81500B42B25 /* HTMLParamElement.idl */, + BC588B4A0BFA723C00EE679E /* HTMLParserErrorCodes.cpp */, + BC588AEF0BFA6CF900EE679E /* HTMLParserErrorCodes.h */, + 449B19F30FA72ECE0015CA4A /* HTMLParserQuirks.h */, + A871D44D0A127CBC00B12A68 /* HTMLPlugInElement.cpp */, + A871D44C0A127CBC00B12A68 /* HTMLPlugInElement.h */, + 4415292D0E1AE8A000C4A2D0 /* HTMLPlugInImageElement.cpp */, + 4415292C0E1AE8A000C4A2D0 /* HTMLPlugInImageElement.h */, + A8EA7C9F0A192B9C00A8EF5F /* HTMLPreElement.cpp */, + A8EA7CA20A192B9C00A8EF5F /* HTMLPreElement.h */, + 1AE2AB850A1CE85000B42B25 /* HTMLPreElement.idl */, + A43BF5961149290A00C643CA /* HTMLProgressElement.cpp */, + A43BF5971149290A00C643CA /* HTMLProgressElement.h */, + A4226EA51163D84D008B8397 /* HTMLProgressElement.idl */, + 033A6A7D147E07E700509B36 /* HTMLPropertiesCollection.cpp */, + 033A6A7B147E07D200509B36 /* HTMLPropertiesCollection.h */, + 033A6A7F147E07F900509B36 /* HTMLPropertiesCollection.idl */, + A8CFF79B0A156978000A4234 /* HTMLQuoteElement.cpp */, + A8CFF7990A156978000A4234 /* HTMLQuoteElement.h */, + 1AE2AEA30A1D28E800B42B25 /* HTMLQuoteElement.idl */, + A871DC160A15205700B12A68 /* HTMLScriptElement.cpp */, + A871DC190A15205700B12A68 /* HTMLScriptElement.h */, + 1AE2AB960A1CE88D00B42B25 /* HTMLScriptElement.idl */, + A81369BD097374F500D74463 /* HTMLSelectElement.cpp */, + A81369BC097374F500D74463 /* HTMLSelectElement.h */, + 855542990AA4938800BA89F2 /* HTMLSelectElement.idl */, + E44613950CD6331000FADA75 /* HTMLSourceElement.cpp */, + E44613960CD6331000FADA75 /* HTMLSourceElement.h */, + E44613970CD6331000FADA75 /* HTMLSourceElement.idl */, + 978AD67114130A8D00C7CAE3 /* HTMLSpanElement.cpp */, + 978AD67214130A8D00C7CAE3 /* HTMLSpanElement.h */, + 978AD67314130A8D00C7CAE3 /* HTMLSpanElement.idl */, + A871DC1A0A15205700B12A68 /* HTMLStyleElement.cpp */, + A871DC170A15205700B12A68 /* HTMLStyleElement.h */, + A80E7AB20A19D1F1007FB8C5 /* HTMLStyleElement.idl */, + D3D4E970130C7CFE007BA540 /* HTMLSummaryElement.cpp */, + D3D4E971130C7CFE007BA540 /* HTMLSummaryElement.h */, + A871DB240A150BD600B12A68 /* HTMLTableCaptionElement.cpp */, + A871DB1D0A150BD600B12A68 /* HTMLTableCaptionElement.h */, + 855542570AA48B1E00BA89F2 /* HTMLTableCaptionElement.idl */, + A871DB200A150BD600B12A68 /* HTMLTableCellElement.cpp */, + A871DB1C0A150BD600B12A68 /* HTMLTableCellElement.h */, + 855542580AA48B1E00BA89F2 /* HTMLTableCellElement.idl */, + A871DB1B0A150BD600B12A68 /* HTMLTableColElement.cpp */, + A871DB210A150BD600B12A68 /* HTMLTableColElement.h */, + 855542590AA48B1E00BA89F2 /* HTMLTableColElement.idl */, + A871DB1A0A150BD600B12A68 /* HTMLTableElement.cpp */, + A871DB190A150BD600B12A68 /* HTMLTableElement.h */, + 8555425A0AA48B1E00BA89F2 /* HTMLTableElement.idl */, + A871DB1F0A150BD600B12A68 /* HTMLTablePartElement.cpp */, + A871DB1E0A150BD600B12A68 /* HTMLTablePartElement.h */, + A871DB220A150BD600B12A68 /* HTMLTableRowElement.cpp */, + A871DB230A150BD600B12A68 /* HTMLTableRowElement.h */, + 8555425B0AA48B1E00BA89F2 /* HTMLTableRowElement.idl */, + 93442C9F0D2B336000338FF9 /* HTMLTableRowsCollection.cpp */, + 93442C9D0D2B335C00338FF9 /* HTMLTableRowsCollection.h */, + A871DB180A150BD600B12A68 /* HTMLTableSectionElement.cpp */, + A871DB170A150BD600B12A68 /* HTMLTableSectionElement.h */, + 8555425C0AA48B1E00BA89F2 /* HTMLTableSectionElement.idl */, + 519FE0A20DAD446E00A08F21 /* HTMLTagNames.in */, + D6EFC0BB1666DF7A003D291E /* HTMLTemplateElement.cpp */, + D6EFC0BC1666DF7A003D291E /* HTMLTemplateElement.h */, + D6EFC0BD1666DF7A003D291E /* HTMLTemplateElement.idl */, + A81369BB097374F500D74463 /* HTMLTextAreaElement.cpp */, + A81369BA097374F500D74463 /* HTMLTextAreaElement.h */, + A80E7E160A1A7CCB007FB8C5 /* HTMLTextAreaElement.idl */, + 9BC6C21A13CCC97B008E0337 /* HTMLTextFormControlElement.cpp */, + 9BC6C21913CCC97B008E0337 /* HTMLTextFormControlElement.h */, + A871DC1D0A15205700B12A68 /* HTMLTitleElement.cpp */, + A871DC1C0A15205700B12A68 /* HTMLTitleElement.h */, + A80E7AAE0A19D1F1007FB8C5 /* HTMLTitleElement.idl */, + 07075688142262D600414161 /* HTMLTrackElement.cpp */, + 07075689142262D600414161 /* HTMLTrackElement.h */, + 0707568A142262D600414161 /* HTMLTrackElement.idl */, + A8EA79E70A1916DF00A8EF5F /* HTMLUListElement.cpp */, + A8EA79E60A1916DF00A8EF5F /* HTMLUListElement.h */, + 1A85B1D50A1B236C00D8C87C /* HTMLUListElement.idl */, + E44613980CD6331000FADA75 /* HTMLVideoElement.cpp */, + E44613990CD6331000FADA75 /* HTMLVideoElement.h */, + E446139A0CD6331000FADA75 /* HTMLVideoElement.idl */, + BCCD74E40A4C8DDF005FDA6D /* HTMLViewSourceDocument.cpp */, + BCCD74DB0A4C8D35005FDA6D /* HTMLViewSourceDocument.h */, + A77979130D6B9D0C003851B9 /* ImageData.cpp */, + A77979140D6B9D0C003851B9 /* ImageData.h */, + A77979150D6B9D0C003851B9 /* ImageData.idl */, + 97205AB11239291000B17380 /* ImageDocument.cpp */, + 97205AB21239291000B17380 /* ImageDocument.h */, + F55B3D8D1251F12D003EF269 /* ImageInputType.cpp */, + F55B3D8E1251F12D003EF269 /* ImageInputType.h */, + 37E3524A12450C5200BAF5D9 /* InputType.cpp */, + 37E3524C12450C6600BAF5D9 /* InputType.h */, + C348612115FDE21E007A1CC9 /* InputTypeNames.cpp */, + C348612215FDE21E007A1CC9 /* InputTypeNames.h */, + 450CEBEE15073BBE002BB149 /* LabelableElement.cpp */, + 450CEBEF15073BBE002BB149 /* LabelableElement.h */, + A456FA2411AD4A830020B420 /* LabelsNodeList.cpp */, + A456FA2511AD4A830020B420 /* LabelsNodeList.h */, + 985BB96B13A94058007A0B69 /* LinkRelAttribute.cpp */, + 985BB96C13A94058007A0B69 /* LinkRelAttribute.h */, + CD27F6E6145770D30078207D /* MediaController.cpp */, + CD27F6E4145767870078207D /* MediaController.h */, + CD27F6E014575C1B0078207D /* MediaController.idl */, + CDF65CC9145B43A700C4C7AA /* MediaControllerInterface.h */, + 97205AB31239291000B17380 /* MediaDocument.cpp */, + 97205AB41239291000B17380 /* MediaDocument.h */, + E446139B0CD6331000FADA75 /* MediaError.h */, + E446139C0CD6331000FADA75 /* MediaError.idl */, + 07A6D1E91491137700051D0C /* MediaFragmentURIParser.cpp */, + 07A6D1EA1491137700051D0C /* MediaFragmentURIParser.h */, + CDB859F2160D489900E5B07F /* MediaKeyError.h */, + CDB859F3160D489900E5B07F /* MediaKeyError.idl */, + CDB859F4160D489900E5B07F /* MediaKeyEvent.cpp */, + CDB859F5160D489900E5B07F /* MediaKeyEvent.h */, + CDB859F6160D489900E5B07F /* MediaKeyEvent.idl */, + 2E07753016B1BD13004D9936 /* MicroDataAttributeTokenList.cpp */, + 2E07753316B1BD4C004D9936 /* MicroDataAttributeTokenList.h */, + 9B2F7CF814562120007F8B50 /* MicroDataItemValue.h */, + 1059457115B428C3004D37FD /* MicroDataItemValue.idl */, + F55B3D911251F12D003EF269 /* MonthInputType.cpp */, + F55B3D921251F12D003EF269 /* MonthInputType.h */, + F55B3D931251F12D003EF269 /* NumberInputType.cpp */, + F55B3D941251F12D003EF269 /* NumberInputType.h */, + F55B3D951251F12D003EF269 /* PasswordInputType.cpp */, + F55B3D961251F12D003EF269 /* PasswordInputType.h */, + 97205AB91239292700B17380 /* PluginDocument.cpp */, + 97205ABA1239292700B17380 /* PluginDocument.h */, + 10FB084A14E15C7E00A3DB98 /* PublicURLManager.h */, + F55B3D971251F12D003EF269 /* RadioInputType.cpp */, + F55B3D981251F12D003EF269 /* RadioInputType.h */, + B658FFA31522EFAA00DD5595 /* RadioNodeList.cpp */, + B658FFA41522EFAA00DD5595 /* RadioNodeList.h */, + F55B3D991251F12D003EF269 /* RangeInputType.cpp */, + F55B3D9A1251F12D003EF269 /* RangeInputType.h */, + F55B3D9B1251F12D003EF269 /* ResetInputType.cpp */, + F55B3D9C1251F12D003EF269 /* ResetInputType.h */, + F55B3D9D1251F12D003EF269 /* SearchInputType.cpp */, + F55B3D9E1251F12D003EF269 /* SearchInputType.h */, + A5AFB34D115151A700B045CB /* StepRange.cpp */, + A5AFB34E115151A700B045CB /* StepRange.h */, + F55B3D9F1251F12D003EF269 /* SubmitInputType.cpp */, + F55B3DA01251F12D003EF269 /* SubmitInputType.h */, + F55B3DA11251F12D003EF269 /* TelephoneInputType.cpp */, + F55B3DA21251F12D003EF269 /* TelephoneInputType.h */, + 97BC84B112371180000C6161 /* TextDocument.cpp */, + 97BC84B212371180000C6161 /* TextDocument.h */, + F55B3DA31251F12D003EF269 /* TextFieldInputType.cpp */, + F55B3DA41251F12D003EF269 /* TextFieldInputType.h */, + F55B3DA51251F12D003EF269 /* TextInputType.cpp */, + F55B3DA61251F12D003EF269 /* TextInputType.h */, + BCEF45E80E687767001C1287 /* TextMetrics.h */, + BCEF453F0E676AC1001C1287 /* TextMetrics.idl */, + F55B3DA71251F12D003EF269 /* TimeInputType.cpp */, + F55B3DA81251F12D003EF269 /* TimeInputType.h */, + E446139D0CD6331000FADA75 /* TimeRanges.cpp */, + E446139E0CD6331000FADA75 /* TimeRanges.h */, + E446139F0CD6331000FADA75 /* TimeRanges.idl */, + C375D7FB16639519006184AB /* TypeAhead.cpp */, + C375D7FC16639519006184AB /* TypeAhead.h */, + F55B3DA91251F12D003EF269 /* URLInputType.cpp */, + F55B3DAA1251F12D003EF269 /* URLInputType.h */, + F5A154251279534D00D0B0C0 /* ValidationMessage.cpp */, + F5A154261279534D00D0B0C0 /* ValidationMessage.h */, + 15C7708B100D3C6A005BA267 /* ValidityState.cpp */, + 15C7708A100D3C6A005BA267 /* ValidityState.h */, + 15C77089100D3C6A005BA267 /* ValidityState.idl */, + E44613B40CD6344E00FADA75 /* VoidCallback.h */, + E44613A00CD6331000FADA75 /* VoidCallback.idl */, + F55B3DAB1251F12D003EF269 /* WeekInputType.cpp */, + F55B3DAC1251F12D003EF269 /* WeekInputType.h */, + ); + path = html; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 971145FE14EF006E00674FD9 /* Modules */ = { + isa = PBXGroup; + children = ( + CDA98DBD16014E0800FEA3B1 /* encryptedmedia */, + 971145FF14EF007900674FD9 /* geolocation */, + 9712A55315004E3C0048AF10 /* indexeddb */, + AA7EA0A917557B1C00DF4643 /* indieui */, + B1A942DD15B5CE2200D525D1 /* mediasource */, + 333F703D0FB49C16008E12A6 /* notifications */, + 89F60B08157F68350075E157 /* quota */, + AA2A5AB716A485A400975A25 /* speech */, + FD315FA212B025B100C1A359 /* webaudio */, + 97BC69D51505F054001B74AC /* webdatabase */, + 97AABCF714FA09B5007457AE /* websockets */, + ); + name = Modules; + sourceTree = ""; + }; + 971145FF14EF007900674FD9 /* geolocation */ = { + isa = PBXGroup; + children = ( + 9746AF1114F4DDE6003E7A72 /* Coordinates.cpp */, + 9746AF1114F4DDE6003E7A70 /* Coordinates.h */, + 9746AF1214F4DDE6003E7A70 /* Coordinates.idl */, + 9746AF1314F4DDE6003E7A70 /* Geolocation.cpp */, + 9746AF1414F4DDE6003E7A70 /* Geolocation.h */, + 9746AF1514F4DDE6003E7A70 /* Geolocation.idl */, + 9746AF1514F4DDE6003E7A71 /* GeolocationClient.h */, + 9746AF1614F4DDE6003E7A70 /* GeolocationController.cpp */, + 9746AF1714F4DDE6003E7A70 /* GeolocationController.h */, + 9746AF1814F4DDE6003E7A70 /* GeolocationError.h */, + 9746AF1914F4DDE6003E7A70 /* GeolocationPosition.h */, + 9746AF1A14F4DDE6003E7A70 /* Geoposition.h */, + 9746AF1B14F4DDE6003E7A70 /* Geoposition.idl */, + 9711460014EF009A00674FD9 /* NavigatorGeolocation.cpp */, + 9711460114EF009A00674FD9 /* NavigatorGeolocation.h */, + 9711460214EF009A00674FD9 /* NavigatorGeolocation.idl */, + 9746AF1C14F4DDE6003E7A70 /* PositionCallback.h */, + 9746AF1D14F4DDE6003E7A70 /* PositionCallback.idl */, + 9746AF1E14F4DDE6003E7A70 /* PositionError.h */, + 9746AF1F14F4DDE6003E7A70 /* PositionError.idl */, + 9746AF2014F4DDE6003E7A70 /* PositionErrorCallback.h */, + 9746AF2114F4DDE6003E7A70 /* PositionErrorCallback.idl */, + 9746AF2214F4DDE6003E7A70 /* PositionOptions.h */, + ); + name = geolocation; + sourceTree = ""; + }; + 9712A55315004E3C0048AF10 /* indexeddb */ = { + isa = PBXGroup; + children = ( + 9712A55415004EDA0048AF10 /* DOMWindowIndexedDatabase.cpp */, + 9712A55515004EDA0048AF10 /* DOMWindowIndexedDatabase.h */, + 9712A55615004EDA0048AF10 /* DOMWindowIndexedDatabase.idl */, + 9712A55815004EDA0048AF10 /* IDBAny.h */, + 9712A55915004EDA0048AF10 /* IDBAny.idl */, + 9712A55A15004EDA0048AF10 /* IDBBackingStore.h */, + 9712A55B15004EDA0048AF10 /* IDBCallbacks.h */, + 9712A55D15004EDA0048AF10 /* IDBCursor.h */, + 9712A55E15004EDA0048AF10 /* IDBCursor.idl */, + 9712A55F15004EDA0048AF10 /* IDBCursorBackendImpl.cpp */, + 9712A56015004EDA0048AF10 /* IDBCursorBackendImpl.h */, + 9712A56115004EDA0048AF10 /* IDBCursorBackendInterface.h */, + 9712A56315004EDA0048AF10 /* IDBCursorWithValue.h */, + 9712A56415004EDA0048AF10 /* IDBCursorWithValue.idl */, + 9712A56615004EDA0048AF10 /* IDBDatabase.h */, + 9712A56715004EDA0048AF10 /* IDBDatabase.idl */, + 9712A56815004EDA0048AF10 /* IDBDatabaseBackendImpl.cpp */, + 9712A56915004EDA0048AF10 /* IDBDatabaseBackendImpl.h */, + 9712A56A15004EDA0048AF10 /* IDBDatabaseBackendInterface.h */, + 9712A56B15004EDA0048AF10 /* IDBDatabaseCallbacks.h */, + 9712A56C15004EDA0048AF10 /* IDBDatabaseCallbacksImpl.cpp */, + 9712A56D15004EDA0048AF10 /* IDBDatabaseCallbacksImpl.h */, + 9712A56E15004EDA0048AF10 /* IDBDatabaseError.h */, + 9712A57015004EDA0048AF10 /* IDBDatabaseException.cpp */, + 9712A57115004EDA0048AF10 /* IDBDatabaseException.h */, + 9712A57415004EDA0048AF10 /* IDBEventDispatcher.h */, + 9712A57615004EDA0048AF10 /* IDBFactory.h */, + 9712A57715004EDA0048AF10 /* IDBFactory.idl */, + 9712A57815004EDA0048AF10 /* IDBFactoryBackendImpl.cpp */, + 9712A57915004EDA0048AF10 /* IDBFactoryBackendImpl.h */, + 9712A57A15004EDA0048AF10 /* IDBFactoryBackendInterface.cpp */, + 9712A57B15004EDA0048AF10 /* IDBFactoryBackendInterface.h */, + 9712A57D15004EDA0048AF10 /* IDBIndex.h */, + 9712A57E15004EDA0048AF10 /* IDBIndex.idl */, + 9712A58315004EDA0048AF10 /* IDBKey.h */, + 9712A58615004EDA0048AF10 /* IDBKeyPath.h */, + 9712A58A15004EDA0048AF10 /* IDBKeyRange.h */, + 9712A58B15004EDA0048AF10 /* IDBKeyRange.idl */, + 9712A58F15004EDA0048AF10 /* IDBLevelDBCoding.h */, + BCC65145159294C300ACC9E4 /* IDBMetadata.h */, + 9712A59115004EDA0048AF10 /* IDBObjectStore.h */, + 9712A59215004EDA0048AF10 /* IDBObjectStore.idl */, + 9712A59315004EDA0048AF10 /* IDBObjectStoreBackendImpl.cpp */, + 9712A59415004EDA0048AF10 /* IDBObjectStoreBackendImpl.h */, + 9712A59615004EDA0048AF10 /* IDBPendingTransactionMonitor.cpp */, + 9712A59715004EDA0048AF10 /* IDBPendingTransactionMonitor.h */, + 9712A59915004EDA0048AF10 /* IDBRequest.h */, + 9712A59A15004EDA0048AF10 /* IDBRequest.idl */, + 9712A59B15004EDA0048AF10 /* IDBTracing.h */, + 9712A59D15004EDA0048AF10 /* IDBTransaction.h */, + 9712A59E15004EDA0048AF10 /* IDBTransaction.idl */, + 9712A59F15004EDA0048AF10 /* IDBTransactionBackendImpl.cpp */, + 9712A5A015004EDA0048AF10 /* IDBTransactionBackendImpl.h */, + 9712A5A215004EDA0048AF10 /* IDBTransactionCallbacks.h */, + 9712A5A315004EDA0048AF10 /* IDBTransactionCoordinator.cpp */, + 9712A5A415004EDA0048AF10 /* IDBTransactionCoordinator.h */, + 9712A5A515004EDA0048AF10 /* IDBVersionChangeEvent.cpp */, + 9712A5A615004EDA0048AF10 /* IDBVersionChangeEvent.h */, + 9712A5A715004EDA0048AF10 /* IDBVersionChangeEvent.idl */, + 9712A5AB15004EDA0048AF10 /* PageGroupIndexedDatabase.cpp */, + 9712A5AC15004EDA0048AF10 /* PageGroupIndexedDatabase.h */, + 9712A60E150090CE0048AF10 /* WorkerGlobalScopeIndexedDatabase.cpp */, + 9712A60F150090CE0048AF10 /* WorkerGlobalScopeIndexedDatabase.h */, + 9712A610150090CE0048AF10 /* WorkerGlobalScopeIndexedDatabase.idl */, + ); + name = indexeddb; + sourceTree = ""; + }; + 976D6C57122B8A18001FD1F7 /* fileapi */ = { + isa = PBXGroup; + children = ( + E1CDE91F15018ED000862CC5 /* AsyncFileStream.cpp */, + E1CDE9211501916900862CC5 /* AsyncFileStream.h */, + 976D6C58122B8A3D001FD1F7 /* AsyncFileWriter.h */, + 976D6C74122B8A3D001FD1F7 /* AsyncFileWriterClient.h */, + 976D6C59122B8A3D001FD1F7 /* Blob.cpp */, + 976D6C5A122B8A3D001FD1F7 /* Blob.h */, + 14A98E05136386A200C9FED2 /* Blob.idl */, + 976D6C5F122B8A3D001FD1F7 /* BlobURL.cpp */, + 976D6C60122B8A3D001FD1F7 /* BlobURL.h */, + 8987853A122CA064003AABDA /* DirectoryEntry.h */, + E1AB1EAB14E9E2EF00449E13 /* DirectoryEntry.idl */, + 893C47F11248BD39002B3D86 /* DirectoryEntrySync.h */, + E1AB1EAC14E9E2F800449E13 /* DirectoryEntrySync.idl */, + 8987853C122CA064003AABDA /* DirectoryReader.h */, + E1AB1EAD14E9E30500449E13 /* DirectoryReader.idl */, + 890AE0E01256A07900F5968C /* DirectoryReaderBase.h */, + 893C47F21248BD39002B3D86 /* DirectoryReaderSync.cpp */, + 893C47F31248BD39002B3D86 /* DirectoryReaderSync.h */, + E1AB1EAE14E9E30B00449E13 /* DirectoryReaderSync.idl */, + 8987853E122CA064003AABDA /* DOMFilePath.h */, + 89878540122CA064003AABDA /* DOMFileSystem.h */, + 14BDF5971365392C00148393 /* DOMFileSystem.idl */, + 893C47F51248BD39002B3D86 /* DOMFileSystemBase.h */, + 893C47F71248BD39002B3D86 /* DOMFileSystemSync.h */, + E1AB1EAF14E9E31700449E13 /* DOMFileSystemSync.idl */, + 89878541122CA064003AABDA /* EntriesCallback.h */, + E1AB1EB014E9E32300449E13 /* EntriesCallback.idl */, + 89878543122CA064003AABDA /* Entry.h */, + E1AB1EB114E9E32A00449E13 /* Entry.idl */, + 89878545122CA064003AABDA /* EntryArray.h */, + E1AB1EB214E9E33200449E13 /* EntryArray.idl */, + 893C47F91248BD39002B3D86 /* EntryArraySync.h */, + E1AB1EB314E9E33900449E13 /* EntryArraySync.idl */, + 893C47FB1248BD39002B3D86 /* EntryBase.h */, + 89878546122CA064003AABDA /* EntryCallback.h */, + E1AB1EB414E9E34500449E13 /* EntryCallback.idl */, + 893C47FD1248BD39002B3D86 /* EntrySync.h */, + E1AB1EB514E9E34B00449E13 /* EntrySync.idl */, + 89878547122CA064003AABDA /* ErrorCallback.h */, + E1AB1EB614E9E35200449E13 /* ErrorCallback.idl */, + 976D6C61122B8A3D001FD1F7 /* File.cpp */, + 976D6C62122B8A3D001FD1F7 /* File.h */, + E1AB1EB714E9E35800449E13 /* File.idl */, + 893C47A51238908B002B3D86 /* FileCallback.h */, + E1AB1EB814E9E36200449E13 /* FileCallback.idl */, + 89878549122CA064003AABDA /* FileEntry.h */, + E1AB1EB914E9E36D00449E13 /* FileEntry.idl */, + 893C47FF1248BD39002B3D86 /* FileEntrySync.h */, + E1AB1EBA14E9E37200449E13 /* FileEntrySync.idl */, + 976D6C64122B8A3D001FD1F7 /* FileError.h */, + E1AB1EBB14E9E37A00449E13 /* FileError.idl */, + 978D07B5145A0F030096908D /* FileException.cpp */, + 2EDF369E122C94C8002F7D4E /* FileException.h */, + E1AB1EBC14E9E39700449E13 /* FileException.idl */, + 976D6C66122B8A3D001FD1F7 /* FileList.cpp */, + 976D6C67122B8A3D001FD1F7 /* FileList.h */, + E1AB1EA814E9E27D00449E13 /* FileList.idl */, + 4689F1AE1267BAE100E8D380 /* FileMetadata.h */, + 976D6C69122B8A3D001FD1F7 /* FileReader.cpp */, + 976D6C6A122B8A3D001FD1F7 /* FileReader.h */, + 14BDF59A1365399100148393 /* FileReader.idl */, + 2E75841A12779ADA0062628B /* FileReaderLoader.cpp */, + 2E75841B12779ADA0062628B /* FileReaderLoader.h */, + 2E75841C12779ADA0062628B /* FileReaderLoaderClient.h */, + 2EDF369A122C94B4002F7D4E /* FileReaderSync.cpp */, + 2EDF369B122C94B4002F7D4E /* FileReaderSync.h */, + E1AB1EBD14E9E3A800449E13 /* FileReaderSync.idl */, + 8987854A122CA064003AABDA /* FileSystemCallback.h */, + E1AB1EBE14E9E3B200449E13 /* FileSystemCallback.idl */, + 8987854B122CA064003AABDA /* FileSystemCallbacks.cpp */, + 8987854C122CA064003AABDA /* FileSystemCallbacks.h */, + 8987854D122CA064003AABDA /* FileSystemFlags.h */, + 89C7C2E0155804F4007D5A7B /* FileSystemType.h */, + 976D6C6E122B8A3D001FD1F7 /* FileThread.cpp */, + 976D6C6F122B8A3D001FD1F7 /* FileThread.h */, + 976D6C70122B8A3D001FD1F7 /* FileThreadTask.h */, + 976D6C72122B8A3D001FD1F7 /* FileWriter.h */, + 14BDF59C136539BE00148393 /* FileWriter.idl */, + 46BC724C129B104C0071C07E /* FileWriterBase.h */, + 46BC724D129B104C0071C07E /* FileWriterBaseCallback.h */, + 893C47A61238908B002B3D86 /* FileWriterCallback.h */, + E1AB1EBF14E9E3BE00449E13 /* FileWriterCallback.idl */, + 46700ECF127B96CB00F5D5D6 /* FileWriterSync.h */, + E1AB1EC014E9E3C400449E13 /* FileWriterSync.idl */, + 8987854F122CA064003AABDA /* LocalFileSystem.h */, + 89878550122CA064003AABDA /* Metadata.h */, + E1AB1EC114E9E3CC00449E13 /* Metadata.idl */, + 89878551122CA064003AABDA /* MetadataCallback.h */, + E1AB1EC214E9E3D500449E13 /* MetadataCallback.idl */, + 976D6C75122B8A3D001FD1F7 /* ThreadableBlobRegistry.cpp */, + 976D6C76122B8A3D001FD1F7 /* ThreadableBlobRegistry.h */, + 976D6C5C122B8A3D001FD1F7 /* WebKitBlobBuilder.cpp */, + 976D6C5D122B8A3D001FD1F7 /* WebKitBlobBuilder.h */, + ); + name = fileapi; + sourceTree = ""; + }; + 97AABCF714FA09B5007457AE /* websockets */ = { + isa = PBXGroup; + children = ( + 97AABCF814FA09D5007457AE /* CloseEvent.h */, + 97AABCF914FA09D5007457AE /* CloseEvent.idl */, + 97AABCFB14FA09D5007457AE /* ThreadableWebSocketChannel.cpp */, + 97AABCFC14FA09D5007457AE /* ThreadableWebSocketChannel.h */, + 97AABCFD14FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.cpp */, + 97AABCFE14FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.h */, + 97AABCFF14FA09D5007457AE /* WebSocket.cpp */, + 97AABD0014FA09D5007457AE /* WebSocket.h */, + 97AABD0114FA09D5007457AE /* WebSocket.idl */, + 97AABD0214FA09D5007457AE /* WebSocketChannel.cpp */, + 97AABD0314FA09D5007457AE /* WebSocketChannel.h */, + 97AABD0414FA09D5007457AE /* WebSocketChannelClient.h */, + 4A38BF4E14FE1C0900612512 /* WebSocketDeflateFramer.cpp */, + 4A38BF4F14FE1C0900612512 /* WebSocketDeflateFramer.h */, + 97AABD0514FA09D5007457AE /* WebSocketDeflater.cpp */, + 97AABD0614FA09D5007457AE /* WebSocketDeflater.h */, + 97AABD0714FA09D5007457AE /* WebSocketExtensionDispatcher.cpp */, + 97AABD0814FA09D5007457AE /* WebSocketExtensionDispatcher.h */, + 4A5A2AD9161E7E00005889DD /* WebSocketExtensionParser.cpp */, + 4A5A2ADA161E7E00005889DD /* WebSocketExtensionParser.h */, + 97AABD0914FA09D5007457AE /* WebSocketExtensionProcessor.h */, + AAF5B7B11524B4BD0004CB49 /* WebSocketFrame.cpp */, + 97AABD0A14FA09D5007457AE /* WebSocketFrame.h */, + 97AABD0B14FA09D5007457AE /* WebSocketHandshake.cpp */, + 97AABD0C14FA09D5007457AE /* WebSocketHandshake.h */, + 97AABD1114FA09D5007457AE /* WorkerThreadableWebSocketChannel.cpp */, + 97AABD1214FA09D5007457AE /* WorkerThreadableWebSocketChannel.h */, + ); + name = websockets; + sourceTree = ""; + }; + 97BC69D51505F054001B74AC /* webdatabase */ = { + isa = PBXGroup; + children = ( + FE115FA9167988CD00249134 /* AbstractDatabaseServer.h */, + FE4AADEC16D2C37400026FFC /* AbstractSQLStatement.h */, + FE4AADED16D2C37400026FFC /* AbstractSQLStatementBackend.h */, + FE36FD1116C7826400F887C1 /* ChangeVersionData.h */, + 97BC69D81505F076001B74AC /* ChangeVersionWrapper.cpp */, + 97BC69D91505F076001B74AC /* ChangeVersionWrapper.h */, + 97BC69DE1505F081001B74AC /* Database.cpp */, + 97BC69DF1505F081001B74AC /* Database.h */, + 97BC69E01505F081001B74AC /* Database.idl */, + 97BC69E11505F081001B74AC /* DatabaseAuthorizer.cpp */, + 97BC69E21505F081001B74AC /* DatabaseAuthorizer.h */, + FE16CFCF169D1DEC00D3A0C7 /* DatabaseBackend.cpp */, + FE16CFD0169D1DEC00D3A0C7 /* DatabaseBackend.h */, + 97BC69D61505F076001B74AC /* DatabaseBackendBase.cpp */, + 97BC69D71505F076001B74AC /* DatabaseBackendBase.h */, + FE6F6AAD169E057500FC30A2 /* DatabaseBackendContext.cpp */, + FE6F6AAE169E057500FC30A2 /* DatabaseBackendContext.h */, + FE16CFD1169D1DEC00D3A0C7 /* DatabaseBackendSync.cpp */, + FE16CFD2169D1DEC00D3A0C7 /* DatabaseBackendSync.h */, + FEBC5F2F16BD0CC300659BD3 /* DatabaseBase.cpp */, + FEBC5F3016BD0CC300659BD3 /* DatabaseBase.h */, + FE3371A0167C11D400EDB752 /* DatabaseBasicTypes.h */, + 97BC69E31505F081001B74AC /* DatabaseCallback.h */, + 97BC69E41505F081001B74AC /* DatabaseCallback.idl */, + 97BC69E51505F081001B74AC /* DatabaseContext.cpp */, + 97BC69E61505F081001B74AC /* DatabaseContext.h */, + 97BC69E71505F081001B74AC /* DatabaseDetails.h */, + FE09DB46169E2D6E00622557 /* DatabaseError.h */, + FE456F161677D74E005EDDF9 /* DatabaseManager.cpp */, + FE456F171677D74E005EDDF9 /* DatabaseManager.h */, + 97BC69F11505F081001B74AC /* DatabaseManagerClient.h */, + FEB26D27167A8F2A00FDD26B /* DatabaseServer.cpp */, + FEAF6653167970070062D0C5 /* DatabaseServer.h */, + 97BC69E81505F081001B74AC /* DatabaseSync.cpp */, + 97BC69E91505F081001B74AC /* DatabaseSync.h */, + 97BC69EA1505F081001B74AC /* DatabaseSync.idl */, + 97BC69EB1505F081001B74AC /* DatabaseTask.cpp */, + 97BC69EC1505F081001B74AC /* DatabaseTask.h */, + 97BC69ED1505F081001B74AC /* DatabaseThread.cpp */, + 97BC69EE1505F081001B74AC /* DatabaseThread.h */, + 97BC69EF1505F081001B74AC /* DatabaseTracker.cpp */, + 97BC69F01505F081001B74AC /* DatabaseTracker.h */, + A8CCBB46151F831600AB7CE9 /* DOMWindowWebDatabase.cpp */, + A8CCBB47151F831600AB7CE9 /* DOMWindowWebDatabase.h */, + A8CCBB4E151F835A00AB7CE9 /* DOMWindowWebDatabase.idl */, + FE9E89F916E2DC0400A908F8 /* OriginLock.cpp */, + FE9E89FA16E2DC0400A908F8 /* OriginLock.h */, + 97BC69F91505F081001B74AC /* SQLCallbackWrapper.h */, + 97BC69FA1505F081001B74AC /* SQLError.h */, + 97BC69FB1505F081001B74AC /* SQLError.idl */, + 97BC69FC1505F081001B74AC /* SQLException.cpp */, + 97BC69FD1505F081001B74AC /* SQLException.h */, + 97BC69FE1505F081001B74AC /* SQLException.idl */, + 97BC69FF1505F081001B74AC /* SQLResultSet.cpp */, + 97BC6A001505F081001B74AC /* SQLResultSet.h */, + 97BC6A011505F081001B74AC /* SQLResultSet.idl */, + 97BC6A021505F081001B74AC /* SQLResultSetRowList.cpp */, + 97BC6A031505F081001B74AC /* SQLResultSetRowList.h */, + 97BC6A041505F081001B74AC /* SQLResultSetRowList.idl */, + 97BC6A051505F081001B74AC /* SQLStatement.cpp */, + 97BC6A061505F081001B74AC /* SQLStatement.h */, + FE8A674516CDD19E00930BF8 /* SQLStatementBackend.cpp */, + FE8A674616CDD19E00930BF8 /* SQLStatementBackend.h */, + 97BC6A071505F081001B74AC /* SQLStatementCallback.h */, + 97BC6A081505F081001B74AC /* SQLStatementCallback.idl */, + 97BC6A091505F081001B74AC /* SQLStatementErrorCallback.h */, + 97BC6A0A1505F081001B74AC /* SQLStatementErrorCallback.idl */, + 97BC6A0B1505F081001B74AC /* SQLStatementSync.cpp */, + 97BC6A0C1505F081001B74AC /* SQLStatementSync.h */, + 97BC6A0D1505F081001B74AC /* SQLTransaction.cpp */, + 97BC6A0E1505F081001B74AC /* SQLTransaction.h */, + 97BC6A0F1505F081001B74AC /* SQLTransaction.idl */, + FEE1811116C319E800084849 /* SQLTransactionBackend.cpp */, + FEE1811216C319E800084849 /* SQLTransactionBackend.h */, + FEAD7D8516C339EE00D4670B /* SQLTransactionBackendSync.cpp */, + FEAD7D8616C339EE00D4670B /* SQLTransactionBackendSync.h */, + 97BC6A101505F081001B74AC /* SQLTransactionCallback.h */, + 97BC6A111505F081001B74AC /* SQLTransactionCallback.idl */, + 97BC6A121505F081001B74AC /* SQLTransactionClient.cpp */, + 97BC6A131505F081001B74AC /* SQLTransactionClient.h */, + 97BC6A141505F081001B74AC /* SQLTransactionCoordinator.cpp */, + 97BC6A151505F081001B74AC /* SQLTransactionCoordinator.h */, + 97BC6A161505F081001B74AC /* SQLTransactionErrorCallback.h */, + 97BC6A171505F081001B74AC /* SQLTransactionErrorCallback.idl */, + FE36FD1416C7826400F887C1 /* SQLTransactionState.h */, + FE36FD1216C7826400F887C1 /* SQLTransactionStateMachine.cpp */, + FE36FD1316C7826400F887C1 /* SQLTransactionStateMachine.h */, + 97BC6A181505F081001B74AC /* SQLTransactionSync.cpp */, + 97BC6A191505F081001B74AC /* SQLTransactionSync.h */, + 97BC6A1A1505F081001B74AC /* SQLTransactionSync.idl */, + 97BC6A1B1505F081001B74AC /* SQLTransactionSyncCallback.h */, + 97BC6A1C1505F081001B74AC /* SQLTransactionSyncCallback.idl */, + A8CCBB4A151F833B00AB7CE9 /* WorkerGlobalScopeWebDatabase.cpp */, + A8CCBB4B151F833B00AB7CE9 /* WorkerGlobalScopeWebDatabase.h */, + A8CCBB4F151F837500AB7CE9 /* WorkerGlobalScopeWebDatabase.idl */, + ); + name = webdatabase; + sourceTree = ""; + }; + 97C1F5511228558800EDE616 /* parser */ = { + isa = PBXGroup; + children = ( + 97C1F552122855CB00EDE617 /* AtomicHTMLToken.h */, + 97DC69E916B9F50E008CFD6F /* BackgroundHTMLInputStream.cpp */, + 97DC69EA16B9F50E008CFD6F /* BackgroundHTMLInputStream.h */, + 979DC03116A7992100807794 /* BackgroundHTMLParser.cpp */, + 979DC03216A7992100807794 /* BackgroundHTMLParser.h */, + 979DC03416A7992100807794 /* CompactHTMLToken.h */, + 977B3849122883E900B81FF8 /* CSSPreloadScanner.cpp */, + 977B384A122883E900B81FF8 /* CSSPreloadScanner.h */, + 977B384B122883E900B81FF8 /* HTMLConstructionSite.cpp */, + 977B384C122883E900B81FF8 /* HTMLConstructionSite.h */, + 977B384D122883E900B81FF8 /* HTMLDocumentParser.cpp */, + 977B384E122883E900B81FF8 /* HTMLDocumentParser.h */, + 977B371F1228721700B81FF8 /* HTMLElementStack.cpp */, + 977B37201228721700B81FF8 /* HTMLElementStack.h */, + 977B384F122883E900B81FF8 /* HTMLEntityNames.in */, + 977B3850122883E900B81FF8 /* HTMLEntityParser.cpp */, + 977B3851122883E900B81FF8 /* HTMLEntityParser.h */, + 977B3852122883E900B81FF8 /* HTMLEntitySearch.cpp */, + 977B3853122883E900B81FF8 /* HTMLEntitySearch.h */, + 977B3854122883E900B81FF8 /* HTMLEntityTable.h */, + 977B3855122883E900B81FF8 /* HTMLFormattingElementList.cpp */, + 977B3856122883E900B81FF8 /* HTMLFormattingElementList.h */, + A895709E16E9BD5900184E55 /* HTMLIdentifier.h */, + 97BC849A12370A4B000C6161 /* HTMLInputStream.h */, + 2BE8E2C812A58A0100FAD550 /* HTMLMetaCharsetParser.cpp */, + 2BE8E2C612A589EC00FAD550 /* HTMLMetaCharsetParser.h */, + 93E2A304123E9DC0009FE12A /* HTMLParserIdioms.cpp */, + 93E2A305123E9DC0009FE12A /* HTMLParserIdioms.h */, + 973F4187169B95EF0006BF60 /* HTMLParserOptions.cpp */, + 973F4188169B95EF0006BF60 /* HTMLParserOptions.h */, + 977B3857122883E900B81FF8 /* HTMLParserScheduler.cpp */, + 977B3858122883E900B81FF8 /* HTMLParserScheduler.h */, + 974187D116A7932200FA77A7 /* HTMLParserThread.h */, + 977B3859122883E900B81FF8 /* HTMLPreloadScanner.cpp */, + 977B385A122883E900B81FF8 /* HTMLPreloadScanner.h */, + A8D223FB16B52E4E00157288 /* HTMLResourcePreloader.cpp */, + A8D223FC16B52E4E00157288 /* HTMLResourcePreloader.h */, + 977B385B122883E900B81FF8 /* HTMLScriptRunner.cpp */, + 977B385C122883E900B81FF8 /* HTMLScriptRunner.h */, + 977B385D122883E900B81FF8 /* HTMLScriptRunnerHost.h */, + 977E2DCB12F0E28300C13379 /* HTMLSourceTracker.cpp */, + 977E2DCC12F0E28300C13379 /* HTMLSourceTracker.h */, + 97C1F552122855CB00EDE615 /* HTMLStackItem.h */, + 97C1F552122855CB00EDE616 /* HTMLToken.h */, + 977B385E122883E900B81FF8 /* HTMLTokenizer.cpp */, + 977B385F122883E900B81FF8 /* HTMLTokenizer.h */, + 977B37211228721700B81FF8 /* HTMLTreeBuilder.cpp */, + 977B37221228721700B81FF8 /* HTMLTreeBuilder.h */, + 9B7E78BA16F16CAE00126914 /* HTMLTreeBuilderSimulator.cpp */, + 9B7E78BB16F16CAE00126914 /* HTMLTreeBuilderSimulator.h */, + 977B3860122883E900B81FF8 /* HTMLViewSourceParser.cpp */, + 977B3861122883E900B81FF8 /* HTMLViewSourceParser.h */, + A8805AF116C96AEA000E9D98 /* InputStreamPreprocessor.h */, + 8A309C9E123950BE00CB9204 /* NestingLevelIncrementer.h */, + 97BC84811236FD93000C6161 /* TextDocumentParser.cpp */, + 97BC84821236FD93000C6161 /* TextDocumentParser.h */, + 97BC84A212370DC7000C6161 /* TextViewSourceParser.cpp */, + 97BC84A312370DC8000C6161 /* TextViewSourceParser.h */, + 977E2E0B12F0FC9C00C13379 /* XSSAuditor.cpp */, + 977E2E0C12F0FC9C00C13379 /* XSSAuditor.h */, + 977E2E0B12F0FC9C00C13380 /* XSSAuditorDelegate.cpp */, + 977E2E0C12F0FC9C00C13380 /* XSSAuditorDelegate.h */, + ); + name = parser; + sourceTree = ""; + }; + A59E3C1B11580F340072928E /* ios */ = { + isa = PBXGroup; + children = ( + C585381713A7DD4E00A3BBEE /* ClipboardIOS.h */, + C585381813A7DD4E00A3BBEE /* ClipboardIOS.mm */, + 2655414B1489AA2B000DFC5D /* CursorIOS.cpp */, + 26F40D4914904A6300CA67C4 /* EventLoopIOS.mm */, + 26C17A3C1491D2D400D12BA2 /* FileSystemIOS.h */, + 26C17A3D1491D2D400D12BA2 /* FileSystemIOS.mm */, + 265541371489811C000DFC5D /* KeyEventCodesIOS.h */, + 265541381489811C000DFC5D /* KeyEventIOS.mm */, + E45390190EAFCACA003695C8 /* PasteboardIOS.mm */, + E45390350EAFD637003695C8 /* SharedTimerIOS.mm */, + ); + name = ios; + sourceTree = ""; + }; + A5C974CE11485FDA0066F2AB /* cocoa */ = { + isa = PBXGroup; + children = ( + A5C974CF11485FF10066F2AB /* KeyEventCocoa.h */, + A5C974D011485FF10066F2AB /* KeyEventCocoa.mm */, + ); + name = cocoa; + sourceTree = ""; + }; + A75E8B7F0E1DE2B0007F2481 /* filters */ = { + isa = PBXGroup; + children = ( + 15B3FC1715FB217800A81BCB /* CustomFilterArrayParameter.h */, + FB1A66D917225A6600BAA7AF /* CustomFilterColorParameter.h */, + 50D4060F147D49DE00D30BB5 /* CustomFilterCompiledProgram.cpp */, + 50D40610147D49DE00D30BB5 /* CustomFilterCompiledProgram.h */, + A2B2AE7B16375EE500CFA50B /* CustomFilterConstants.h */, + 50987C24157D676D00BDA835 /* CustomFilterGlobalContext.cpp */, + 50987C25157D676D00BDA835 /* CustomFilterGlobalContext.h */, + 50D405F7147D31F300D30BB5 /* CustomFilterMesh.cpp */, + 50D405F8147D31F300D30BB5 /* CustomFilterMesh.h */, + 7E12E90E15FA5D3A005E4126 /* CustomFilterMeshGenerator.cpp */, + 7E12E90D15FA5D3A005E4126 /* CustomFilterMeshGenerator.h */, + 50CC089914C6E99C0017AB51 /* CustomFilterNumberParameter.h */, + 50CC0A3814C6F5B10017AB51 /* CustomFilterOperation.cpp */, + 50ACE2CA14B5D79300446666 /* CustomFilterOperation.h */, + 509CC9FA14C069ED00BBECBD /* CustomFilterParameter.h */, + 5093334D163B0E4300099A60 /* CustomFilterParameterList.cpp */, + 5093334E163B0E4300099A60 /* CustomFilterParameterList.h */, + 503D0CA714B5B08700F32F57 /* CustomFilterProgram.cpp */, + 503D0CA814B5B08700F32F57 /* CustomFilterProgram.h */, + 503D0CA914B5B08700F32F57 /* CustomFilterProgramClient.h */, + 50D88CB315BDFDAA001809F4 /* CustomFilterProgramInfo.cpp */, + 50D88CB415BDFDAA001809F4 /* CustomFilterProgramInfo.h */, + 503D0CA714B5B08700F32F58 /* CustomFilterRenderer.cpp */, + 503D0CA814B5B08700F32F58 /* CustomFilterRenderer.h */, + 509EC10815E848CA00E82581 /* CustomFilterTransformParameter.h */, + A29532CD15DD5E1700469EBC /* CustomFilterValidatedProgram.cpp */, + A29532CE15DD5E1700469EBC /* CustomFilterValidatedProgram.h */, + A1E1154313015C3D0054AC8C /* DistantLightSource.cpp */, + 84730D5A1248F0B300D3A9C9 /* DistantLightSource.h */, + A75E8B800E1DE2D6007F2481 /* FEBlend.cpp */, + A75E8B810E1DE2D6007F2481 /* FEBlend.h */, + A75E8B820E1DE2D6007F2481 /* FEColorMatrix.cpp */, + A75E8B830E1DE2D6007F2481 /* FEColorMatrix.h */, + A75E8B840E1DE2D6007F2481 /* FEComponentTransfer.cpp */, + A75E8B850E1DE2D6007F2481 /* FEComponentTransfer.h */, + A75E8B860E1DE2D6007F2481 /* FEComposite.cpp */, + A75E8B870E1DE2D6007F2481 /* FEComposite.h */, + 84730D5B1248F0B300D3A9C9 /* FEConvolveMatrix.cpp */, + 84730D5C1248F0B300D3A9C9 /* FEConvolveMatrix.h */, + 50D403C514768C9400D30BB5 /* FECustomFilter.cpp */, + 50D403C614768C9400D30BB5 /* FECustomFilter.h */, + 84730D5D1248F0B300D3A9C9 /* FEDiffuseLighting.cpp */, + 84730D5E1248F0B300D3A9C9 /* FEDiffuseLighting.h */, + 84730D5F1248F0B300D3A9C9 /* FEDisplacementMap.cpp */, + 84730D601248F0B300D3A9C9 /* FEDisplacementMap.h */, + 4358E87E1360A31700E4748C /* FEDropShadow.cpp */, + 4358E87F1360A31700E4748C /* FEDropShadow.h */, + 84730D611248F0B300D3A9C9 /* FEFlood.cpp */, + 84730D621248F0B300D3A9C9 /* FEFlood.h */, + 84801952108BAFB300CB2B1F /* FEGaussianBlur.cpp */, + 84801953108BAFB300CB2B1F /* FEGaussianBlur.h */, + 84730D631248F0B300D3A9C9 /* FELighting.cpp */, + 84730D641248F0B300D3A9C9 /* FELighting.h */, + 84730D651248F0B300D3A9C9 /* FEMerge.cpp */, + 84730D661248F0B300D3A9C9 /* FEMerge.h */, + 84730D671248F0B300D3A9C9 /* FEMorphology.cpp */, + 84730D681248F0B300D3A9C9 /* FEMorphology.h */, + 84730D691248F0B300D3A9C9 /* FEOffset.cpp */, + 84730D6A1248F0B300D3A9C9 /* FEOffset.h */, + 84730D6B1248F0B300D3A9C9 /* FESpecularLighting.cpp */, + 84730D6C1248F0B300D3A9C9 /* FESpecularLighting.h */, + 84730D6D1248F0B300D3A9C9 /* FETile.cpp */, + 84730D6E1248F0B300D3A9C9 /* FETile.h */, + 84730D6F1248F0B300D3A9C9 /* FETurbulence.cpp */, + 84730D701248F0B300D3A9C9 /* FETurbulence.h */, + 845E72F70FD261EE00A87D79 /* Filter.h */, + 08C925170FCC7C4A00480DEC /* FilterEffect.cpp */, + 08C925180FCC7C4A00480DEC /* FilterEffect.h */, + 49ECEB631499790D00CDD3A4 /* FilterOperation.cpp */, + 49ECEB641499790D00CDD3A4 /* FilterOperation.h */, + 49ECEB651499790D00CDD3A4 /* FilterOperations.cpp */, + 49ECEB661499790D00CDD3A4 /* FilterOperations.h */, + 84730D741248F0B300D3A9C9 /* LightSource.h */, + A1E1154513015C4E0054AC8C /* PointLightSource.cpp */, + 84730D751248F0B300D3A9C9 /* PointLightSource.h */, + 84A81F3B0FC7DFF000955300 /* SourceAlpha.cpp */, + 84A81F3C0FC7DFF000955300 /* SourceAlpha.h */, + 84A81F3F0FC7E02700955300 /* SourceGraphic.cpp */, + 84A81F400FC7E02700955300 /* SourceGraphic.h */, + A1E1154713015C5D0054AC8C /* SpotLightSource.cpp */, + 84730D761248F0B300D3A9C9 /* SpotLightSource.h */, + 50D32855163B313F0016111E /* ValidatedCustomFilterOperation.cpp */, + 50D32856163B313F0016111E /* ValidatedCustomFilterOperation.h */, + ); + name = filters; + sourceTree = ""; + }; + A83B79080CCAFF2B000B0825 /* HTML */ = { + isa = PBXGroup; + children = ( + 49EECEF2105070C400099FAB /* JSArrayBuffer.cpp */, + 49EECEF3105070C400099FAB /* JSArrayBuffer.h */, + 49EECF19105072F300099FAB /* JSArrayBufferView.cpp */, + 49EECF1A105072F300099FAB /* JSArrayBufferView.h */, + BE8EF03E171C8FF9009B48C3 /* JSAudioTrack.cpp */, + BE8EF03F171C8FF9009B48C3 /* JSAudioTrack.h */, + BE8EF040171C8FF9009B48C3 /* JSAudioTrackList.cpp */, + BE8EF041171C8FF9009B48C3 /* JSAudioTrackList.h */, + 65DF323309D1DE65000BE325 /* JSCanvasGradient.cpp */, + 65DF323409D1DE65000BE325 /* JSCanvasGradient.h */, + 65DF323509D1DE65000BE325 /* JSCanvasPattern.cpp */, + 65DF323609D1DE65000BE325 /* JSCanvasPattern.h */, + 65DF323609D1DE65001BE325 /* JSCanvasProxy.h */, + 49EED13C1051969400099FAB /* JSCanvasRenderingContext.cpp */, + 49EED13D1051969400099FAB /* JSCanvasRenderingContext.h */, + 49EED13E1051969400099FAB /* JSCanvasRenderingContext2D.cpp */, + 49EED13F1051969400099FAB /* JSCanvasRenderingContext2D.h */, + 2E97CE6D1293AD6B00C5C8FF /* JSDataView.cpp */, + 2E97CE6E1293AD6B00C5C8FF /* JSDataView.h */, + 2E0888D21148848A00AF4265 /* JSDOMFormData.cpp */, + 2E0888D31148848A00AF4265 /* JSDOMFormData.h */, + FB91392916AE4FC0001FE682 /* JSDOMPath.cpp */, + FB91392816AE4FC0001FE682 /* JSDOMPath.h */, + 4ACBC0C812713D0A0094F9B2 /* JSDOMSettableTokenList.cpp */, + 4ACBC0C912713D0A0094F9B2 /* JSDOMSettableTokenList.h */, + 7694563A1214D97C0007CBAE /* JSDOMTokenList.cpp */, + 7694563B1214D97C0007CBAE /* JSDOMTokenList.h */, + 2E37E00312DBC5A400A6B233 /* JSDOMURL.cpp */, + 2E37E00412DBC5A400A6B233 /* JSDOMURL.h */, + 6EBF0E7412A9868800DB170A /* JSEXTDrawBuffers.cpp */, + 6EBF0E7512A9868800DB170A /* JSEXTDrawBuffers.h */, + 7728698114FD9ADA00F484DC /* JSEXTTextureFilterAnisotropic.cpp */, + 7728698214FD9ADA00F484DC /* JSEXTTextureFilterAnisotropic.h */, + 49EECEF4105070C400099FAB /* JSFloat32Array.cpp */, + 49EECEF5105070C400099FAB /* JSFloat32Array.h */, + 6EBC5EAD138B50F200A0CF8A /* JSFloat64Array.cpp */, + 6EBC5EAE138B50F200A0CF8A /* JSFloat64Array.h */, + BC97E410109154FA0010D361 /* JSHTMLAllCollection.cpp */, + BC97E411109154FA0010D361 /* JSHTMLAllCollection.h */, + 1A4A2DEB0A1B852A00C807F8 /* JSHTMLAnchorElement.cpp */, + 1A4A2DEC0A1B852A00C807F8 /* JSHTMLAnchorElement.h */, + 1A4A2DED0A1B852A00C807F8 /* JSHTMLAppletElement.cpp */, + 1A4A2DEE0A1B852A00C807F8 /* JSHTMLAppletElement.h */, + 1AE2AA0A0A1CDAB300B42B25 /* JSHTMLAreaElement.cpp */, + 1AE2AA0B0A1CDAB300B42B25 /* JSHTMLAreaElement.h */, + E4B4237D0CBFB73C00AF2ECE /* JSHTMLAudioElement.cpp */, + E4B4237E0CBFB73C00AF2ECE /* JSHTMLAudioElement.h */, + A80E7B080A19D606007FB8C5 /* JSHTMLBaseElement.cpp */, + A80E7B070A19D606007FB8C5 /* JSHTMLBaseElement.h */, + 1AE2AA0C0A1CDAB300B42B25 /* JSHTMLBaseFontElement.cpp */, + 1AE2AA0D0A1CDAB300B42B25 /* JSHTMLBaseFontElement.h */, + 1AE2AA0E0A1CDAB300B42B25 /* JSHTMLBodyElement.cpp */, + 1AE2AA0F0A1CDAB300B42B25 /* JSHTMLBodyElement.h */, + 1AE2AA100A1CDAB300B42B25 /* JSHTMLBRElement.cpp */, + 1AE2AA110A1CDAB300B42B25 /* JSHTMLBRElement.h */, + A80E7E960A1A83E3007FB8C5 /* JSHTMLButtonElement.cpp */, + A80E7E950A1A83E3007FB8C5 /* JSHTMLButtonElement.h */, + 938E665F09F09B81008A48EC /* JSHTMLCanvasElement.cpp */, + 938E666109F09B87008A48EC /* JSHTMLCanvasElement.h */, + BCCBAD3E0C18C14200CE890F /* JSHTMLCollection.cpp */, + BCCBAD3F0C18C14200CE890F /* JSHTMLCollection.h */, + 4A1E718E14E101E400626F9D /* JSHTMLContentElement.cpp */, + 4A1E718F14E101E400626F9D /* JSHTMLContentElement.h */, + F5C041E10FFCA96D00839D4A /* JSHTMLDataListElement.cpp */, + F5C041E20FFCA96D00839D4A /* JSHTMLDataListElement.h */, + D359D8BC129CA55C0006E5D2 /* JSHTMLDetailsElement.cpp */, + D359D8BD129CA55C0006E5D2 /* JSHTMLDetailsElement.h */, + 76808B4E159DADFA002B5233 /* JSHTMLDialogElement.h */, + 1A85B1E00A1B240500D8C87C /* JSHTMLDirectoryElement.cpp */, + 1A85B1E10A1B240500D8C87C /* JSHTMLDirectoryElement.h */, + 1A85B2B40A1B2AC700D8C87C /* JSHTMLDivElement.cpp */, + 1A85B2B50A1B2AC700D8C87C /* JSHTMLDivElement.h */, + 1A85B1E20A1B240500D8C87C /* JSHTMLDListElement.cpp */, + 1A85B1E30A1B240500D8C87C /* JSHTMLDListElement.h */, + 1A494E320A12358A00FDAFC1 /* JSHTMLDocument.cpp */, + 1A494E330A12358B00FDAFC1 /* JSHTMLDocument.h */, + 1A494BF80A122F4400FDAFC1 /* JSHTMLElement.cpp */, + 1A494BF90A122F4400FDAFC1 /* JSHTMLElement.h */, + BC6D44EA0C07F2ED0072D2C9 /* JSHTMLEmbedElement.cpp */, + BC6D44EB0C07F2ED0072D2C9 /* JSHTMLEmbedElement.h */, + 1AE2AA120A1CDAB300B42B25 /* JSHTMLFieldSetElement.cpp */, + 1AE2AA130A1CDAB300B42B25 /* JSHTMLFieldSetElement.h */, + 1AE2AA140A1CDAB300B42B25 /* JSHTMLFontElement.cpp */, + 1AE2AA150A1CDAB300B42B25 /* JSHTMLFontElement.h */, + 9BF9A87E1648DD2F001C6B23 /* JSHTMLFormControlsCollection.cpp */, + 9BF9A87F1648DD2F001C6B23 /* JSHTMLFormControlsCollection.h */, + A8D064F90A23C0CC005E7203 /* JSHTMLFormElement.cpp */, + A8D064FA0A23C0CC005E7203 /* JSHTMLFormElement.h */, + BC4918C00BFEA050009D6316 /* JSHTMLFrameElement.cpp */, + BC4918C10BFEA050009D6316 /* JSHTMLFrameElement.h */, + BC926F7E0C0552470082776B /* JSHTMLFrameSetElement.cpp */, + BC926F7F0C0552470082776B /* JSHTMLFrameSetElement.h */, + A80E7B0A0A19D606007FB8C5 /* JSHTMLHeadElement.cpp */, + A80E7B0B0A19D606007FB8C5 /* JSHTMLHeadElement.h */, + 1AE2AA1A0A1CDAB400B42B25 /* JSHTMLHeadingElement.cpp */, + 1AE2AA1B0A1CDAB400B42B25 /* JSHTMLHeadingElement.h */, + 1AE2AA1C0A1CDAB400B42B25 /* JSHTMLHRElement.cpp */, + 1AE2AA1D0A1CDAB400B42B25 /* JSHTMLHRElement.h */, + 1A85B18D0A1B18A200D8C87C /* JSHTMLHtmlElement.cpp */, + 1A85B18E0A1B18A200D8C87C /* JSHTMLHtmlElement.h */, + BC4918C20BFEA050009D6316 /* JSHTMLIFrameElement.cpp */, + BC4918C30BFEA050009D6316 /* JSHTMLIFrameElement.h */, + 1AE2AA930A1CDD2D00B42B25 /* JSHTMLImageElement.cpp */, + 1AE2AA940A1CDD2D00B42B25 /* JSHTMLImageElement.h */, + A80E7E8E0A1A83E3007FB8C5 /* JSHTMLInputElement.cpp */, + A80E7E8D0A1A83E3007FB8C5 /* JSHTMLInputElement.h */, + A6148A7612E41E3B0044A784 /* JSHTMLKeygenElement.cpp */, + A6148A7712E41E3B0044A784 /* JSHTMLKeygenElement.h */, + 1AE2AB170A1CE63B00B42B25 /* JSHTMLLabelElement.cpp */, + 1AE2AB180A1CE63B00B42B25 /* JSHTMLLabelElement.h */, + 1AE2AB190A1CE63B00B42B25 /* JSHTMLLegendElement.cpp */, + 1AE2AB1A0A1CE63B00B42B25 /* JSHTMLLegendElement.h */, + 1AE2AB1B0A1CE63B00B42B25 /* JSHTMLLIElement.cpp */, + 1AE2AB1C0A1CE63B00B42B25 /* JSHTMLLIElement.h */, + A80E7B060A19D606007FB8C5 /* JSHTMLLinkElement.cpp */, + A80E7B030A19D606007FB8C5 /* JSHTMLLinkElement.h */, + 1AE2AB1D0A1CE63B00B42B25 /* JSHTMLMapElement.cpp */, + 1AE2AB1E0A1CE63B00B42B25 /* JSHTMLMapElement.h */, + BC491B760C023EFD009D6316 /* JSHTMLMarqueeElement.cpp */, + BC491B770C023EFD009D6316 /* JSHTMLMarqueeElement.h */, + E4B4237F0CBFB73C00AF2ECE /* JSHTMLMediaElement.cpp */, + E4B423800CBFB73C00AF2ECE /* JSHTMLMediaElement.h */, + 1AE2AE590A1D26F200B42B25 /* JSHTMLMenuElement.cpp */, + 1AE2AE5A0A1D26F200B42B25 /* JSHTMLMenuElement.h */, + A80E7A150A19C3D6007FB8C5 /* JSHTMLMetaElement.cpp */, + A80E7A160A19C3D6007FB8C5 /* JSHTMLMetaElement.h */, + A7BBE26411AFB3F20005EA03 /* JSHTMLMeterElement.cpp */, + A7BBE26511AFB3F20005EA03 /* JSHTMLMeterElement.h */, + 1AE2AB1F0A1CE63B00B42B25 /* JSHTMLModElement.cpp */, + 1AE2AB200A1CE63B00B42B25 /* JSHTMLModElement.h */, + BC305C770C076BB300CD20F0 /* JSHTMLObjectElement.cpp */, + BC305C780C076BB300CD20F0 /* JSHTMLObjectElement.h */, + 1A85B1E40A1B240500D8C87C /* JSHTMLOListElement.cpp */, + 1A85B1E50A1B240500D8C87C /* JSHTMLOListElement.h */, + A80E7E920A1A83E3007FB8C5 /* JSHTMLOptGroupElement.cpp */, + A80E7E910A1A83E3007FB8C5 /* JSHTMLOptGroupElement.h */, + A80E7E900A1A83E3007FB8C5 /* JSHTMLOptionElement.cpp */, + A80E7E8F0A1A83E3007FB8C5 /* JSHTMLOptionElement.h */, + 448A29BE0A46D9CB0030759F /* JSHTMLOptionsCollection.cpp */, + 448A29BD0A46D9CB0030759F /* JSHTMLOptionsCollection.h */, + 4AD0173A127E82860015035F /* JSHTMLOutputElement.cpp */, + 4AD0173B127E82860015035F /* JSHTMLOutputElement.h */, + 1AE2AB9E0A1CE90500B42B25 /* JSHTMLParagraphElement.cpp */, + 1AE2AB9F0A1CE90500B42B25 /* JSHTMLParagraphElement.h */, + 1AE2ABA00A1CE90500B42B25 /* JSHTMLParamElement.cpp */, + 1AE2ABA10A1CE90500B42B25 /* JSHTMLParamElement.h */, + 1AE2ABA20A1CE90500B42B25 /* JSHTMLPreElement.cpp */, + 1AE2ABA30A1CE90500B42B25 /* JSHTMLPreElement.h */, + A4226E591163D667008B8397 /* JSHTMLProgressElement.cpp */, + A4226E5B1163D695008B8397 /* JSHTMLProgressElement.h */, + 033A6A80147E088600509B36 /* JSHTMLPropertiesCollection.cpp */, + 033A6A82147E08A600509B36 /* JSHTMLPropertiesCollection.h */, + 1AE2AEC30A1D297B00B42B25 /* JSHTMLQuoteElement.cpp */, + 1AE2AEC40A1D297B00B42B25 /* JSHTMLQuoteElement.h */, + 1AE2ABA40A1CE90500B42B25 /* JSHTMLScriptElement.cpp */, + 1AE2ABA50A1CE90500B42B25 /* JSHTMLScriptElement.h */, + E1E6EEA30B628DA8005F2F70 /* JSHTMLSelectElement.cpp */, + E1E6EEA70B628DB3005F2F70 /* JSHTMLSelectElement.h */, + E4B423710CBFB6E000AF2ECE /* JSHTMLSourceElement.cpp */, + E4B423720CBFB6E000AF2ECE /* JSHTMLSourceElement.h */, + 9752D38B1413104B003305BD /* JSHTMLSpanElement.cpp */, + 9752D38C1413104B003305BD /* JSHTMLSpanElement.h */, + A80E7B050A19D606007FB8C5 /* JSHTMLStyleElement.cpp */, + A80E7B040A19D606007FB8C5 /* JSHTMLStyleElement.h */, + BCA169A00BFD55B40019CA76 /* JSHTMLTableCaptionElement.cpp */, + BCA169A10BFD55B40019CA76 /* JSHTMLTableCaptionElement.h */, + BC06EDE10BFD6D0D00856E9D /* JSHTMLTableCellElement.cpp */, + BC06EDE20BFD6D0D00856E9D /* JSHTMLTableCellElement.h */, + BC06ED990BFD660600856E9D /* JSHTMLTableColElement.cpp */, + BC06ED9A0BFD660600856E9D /* JSHTMLTableColElement.h */, + BC06EE020BFD71AA00856E9D /* JSHTMLTableElement.cpp */, + BC06EE030BFD71AA00856E9D /* JSHTMLTableElement.h */, + BC06ED9B0BFD660600856E9D /* JSHTMLTableRowElement.cpp */, + BC06ED9C0BFD660600856E9D /* JSHTMLTableRowElement.h */, + BC06ED040BFD5BAE00856E9D /* JSHTMLTableSectionElement.cpp */, + BC06ED050BFD5BAE00856E9D /* JSHTMLTableSectionElement.h */, + D6489D23166FFCF1007C031B /* JSHTMLTemplateElement.cpp */, + D6489D24166FFCF1007C031B /* JSHTMLTemplateElement.h */, + A80E7E940A1A83E3007FB8C5 /* JSHTMLTextAreaElement.cpp */, + A80E7E930A1A83E3007FB8C5 /* JSHTMLTextAreaElement.h */, + A80E7B090A19D606007FB8C5 /* JSHTMLTitleElement.cpp */, + A80E7B020A19D606007FB8C5 /* JSHTMLTitleElement.h */, + 070756D114239A4E00414161 /* JSHTMLTrackElement.cpp */, + 070756D214239A4E00414161 /* JSHTMLTrackElement.h */, + 1A85B20E0A1B258700D8C87C /* JSHTMLUListElement.cpp */, + 1A85B20F0A1B258700D8C87C /* JSHTMLUListElement.h */, + 6E4ABCD2138EA0B70071D291 /* JSHTMLUnknownElement.cpp */, + 6E4ABCD3138EA0B70071D291 /* JSHTMLUnknownElement.h */, + E446140E0CD6826900FADA75 /* JSHTMLVideoElement.cpp */, + E446140F0CD6826900FADA75 /* JSHTMLVideoElement.h */, + A77979240D6B9E64003851B9 /* JSImageData.cpp */, + A77979250D6B9E64003851B9 /* JSImageData.h */, + 49EECEF8105070C400099FAB /* JSInt16Array.cpp */, + 49EECEF9105070C400099FAB /* JSInt16Array.h */, + 49EECEF6105070C400099FAB /* JSInt32Array.cpp */, + 49EECEF7105070C400099FAB /* JSInt32Array.h */, + 49C7B9821042D2D30009D447 /* JSInt8Array.cpp */, + 49C7B9831042D2D30009D447 /* JSInt8Array.h */, + CD27F6E2145767580078207D /* JSMediaController.cpp */, + CD27F6E3145767580078207D /* JSMediaController.h */, + E44614100CD6826900FADA75 /* JSMediaError.cpp */, + E44614110CD6826900FADA75 /* JSMediaError.h */, + CDB859F8160D493E00E5B07F /* JSMediaKeyEvent.cpp */, + CDB859F9160D493E00E5B07F /* JSMediaKeyEvent.h */, + 1059457915B42A43004D37FD /* JSMicroDataItemValue.h */, + 7E46F6F81627A2C900062223 /* JSOESElementIndexUint.cpp */, + 7E46F6F91627A2C900062223 /* JSOESElementIndexUint.h */, + 9001787E12E0370700648462 /* JSOESStandardDerivatives.cpp */, + 9001787F12E0370700648462 /* JSOESStandardDerivatives.h */, + 6EBF0E7412A9868800DB1709 /* JSOESTextureFloat.cpp */, + 6EBF0E7512A9868800DB1709 /* JSOESTextureFloat.h */, + A31C4E5116E02B08002F7957 /* JSOESTextureHalfFloat.cpp */, + A31C4E5316E02B40002F7957 /* JSOESTextureHalfFloat.h */, + 77A17AA212F28B2A004E02F6 /* JSOESVertexArrayObject.cpp */, + 77A17AA312F28B2A004E02F6 /* JSOESVertexArrayObject.h */, + B658FF9F1522EF3A00DD5595 /* JSRadioNodeList.cpp */, + B658FFA01522EF3A00DD5595 /* JSRadioNodeList.h */, + BCEF45F30E687B5C001C1287 /* JSTextMetrics.cpp */, + BCEF45F40E687B5C001C1287 /* JSTextMetrics.h */, + 0707568E1422668C00414161 /* JSTextTrack.cpp */, + 0707568F1422668C00414161 /* JSTextTrack.h */, + 070756D714239B4B00414161 /* JSTextTrackCue.cpp */, + 070756D814239B4B00414161 /* JSTextTrackCue.h */, + 070756D914239B4C00414161 /* JSTextTrackCueList.cpp */, + 070756DA14239B4E00414161 /* JSTextTrackCueList.h */, + 07B5A2D91464320A00A81ECE /* JSTextTrackList.cpp */, + 07B5A2DA1464320A00A81ECE /* JSTextTrackList.h */, + E44614120CD6826900FADA75 /* JSTimeRanges.cpp */, + E44614130CD6826900FADA75 /* JSTimeRanges.h */, + 07846340145B151A00A58DF1 /* JSTrackEvent.cpp */, + 07846341145B151A00A58DF1 /* JSTrackEvent.h */, + 49EECEFE105070C400099FAB /* JSUint16Array.cpp */, + 49EECEFF105070C400099FAB /* JSUint16Array.h */, + 49EECEFC105070C400099FAB /* JSUint32Array.cpp */, + 49EECEFD105070C400099FAB /* JSUint32Array.h */, + 49EECEFA105070C400099FAB /* JSUint8Array.cpp */, + 49EECEFB105070C400099FAB /* JSUint8Array.h */, + 91089D2F14C335CD005AFC49 /* JSUint8ClampedArray.cpp */, + 91089D3014C335CD005AFC49 /* JSUint8ClampedArray.h */, + 15C77092100D3CA8005BA267 /* JSValidityState.cpp */, + 15C77091100D3CA8005BA267 /* JSValidityState.h */, + BE8EF046171C9014009B48C3 /* JSVideoTrack.cpp */, + BE8EF047171C9014009B48C3 /* JSVideoTrack.h */, + BE8EF048171C9014009B48C3 /* JSVideoTrackList.cpp */, + BE8EF049171C9014009B48C3 /* JSVideoTrackList.h */, + 97E9EC8B15DC492F004F2E71 /* JSVoidCallback.cpp */, + 97E9EC8C15DC492F004F2E71 /* JSVoidCallback.h */, + A7D20F60107F406900A80392 /* JSWebGLActiveInfo.cpp */, + A7D20F61107F406900A80392 /* JSWebGLActiveInfo.h */, + 49C7B9801042D2D30009D447 /* JSWebGLBuffer.cpp */, + 49C7B9811042D2D30009D447 /* JSWebGLBuffer.h */, + 7EA30F6716DFFE7500257D0B /* JSWebGLCompressedTextureATC.cpp */, + 7EA30F6816DFFE7500257D0B /* JSWebGLCompressedTextureATC.h */, + 7EA30F6717EFFE7500257D0B /* JSWebGLCompressedTexturePVRTC.cpp */, + 7EA30F6817EFFE7500257D0B /* JSWebGLCompressedTexturePVRTC.h */, + 6E3FAD3614733F4000E42306 /* JSWebGLCompressedTextureS3TC.cpp */, + 6E3FAD3714733F4000E42306 /* JSWebGLCompressedTextureS3TC.h */, + 6EE8A77010F803F3005A4A24 /* JSWebGLContextAttributes.cpp */, + 6EE8A77110F803F3005A4A24 /* JSWebGLContextAttributes.h */, + BC2CBF7A140F1D58003879BE /* JSWebGLContextEvent.cpp */, + BC2CBF4B140F1A65003879BE /* JSWebGLContextEvent.h */, + 6E3FAD3614733F4010E42307 /* JSWebGLDebugRendererInfo.cpp */, + 6E3FAD3714733F4011E42307 /* JSWebGLDebugRendererInfo.h */, + 6E3FAD3614733F4020E42307 /* JSWebGLDebugShaders.cpp */, + 6E3FAD3714733F4022E42307 /* JSWebGLDebugShaders.h */, + 6E3FAD3614733F4000E42307 /* JSWebGLDepthTexture.cpp */, + 6E3FAD3714733F4000E42307 /* JSWebGLDepthTexture.h */, + 49C7B9841042D2D30009D447 /* JSWebGLFramebuffer.cpp */, + 49C7B9851042D2D30009D447 /* JSWebGLFramebuffer.h */, + 93F1D5BE12D5335600832BEC /* JSWebGLLoseContext.cpp */, + 93F1D5BF12D5335600832BEC /* JSWebGLLoseContext.h */, + 49C7B9881042D2D30009D447 /* JSWebGLProgram.cpp */, + 49C7B9891042D2D30009D447 /* JSWebGLProgram.h */, + 49C7B98A1042D2D30009D447 /* JSWebGLRenderbuffer.cpp */, + 49C7B98B1042D2D30009D447 /* JSWebGLRenderbuffer.h */, + 49EED1401051969400099FAB /* JSWebGLRenderingContext.cpp */, + 49EED1411051969400099FAB /* JSWebGLRenderingContext.h */, + 49C7B98F1042D2D30009D447 /* JSWebGLShader.cpp */, + 49C7B9901042D2D30009D447 /* JSWebGLShader.h */, + A07D3353152B630E001B6393 /* JSWebGLShaderPrecisionFormat.cpp */, + A07D3354152B630E001B6393 /* JSWebGLShaderPrecisionFormat.h */, + 49C7B9911042D2D30009D447 /* JSWebGLTexture.cpp */, + 49C7B9921042D2D30009D447 /* JSWebGLTexture.h */, + 0C45342510CDBBFA00869157 /* JSWebGLUniformLocation.cpp */, + 0C45342610CDBBFA00869157 /* JSWebGLUniformLocation.h */, + 77EF62F112F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp */, + 77EF62F212F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h */, + ); + name = HTML; + sourceTree = ""; + }; + A83B790A0CCAFF47000B0825 /* SVG */ = { + isa = PBXGroup; + children = ( + B20111050AB7740500DB0E68 /* JSSVGAElement.cpp */, + B20111060AB7740500DB0E68 /* JSSVGAElement.h */, + 24D9128F13CA951E00D21915 /* JSSVGAltGlyphDefElement.cpp */, + 24D9129013CA951E00D21915 /* JSSVGAltGlyphDefElement.h */, + 6515EC8F0D9723FF0063D49A /* JSSVGAltGlyphElement.cpp */, + 6515EC900D9723FF0063D49A /* JSSVGAltGlyphElement.h */, + 24D9129313CA956100D21915 /* JSSVGAltGlyphItemElement.cpp */, + 24D9129413CA956100D21915 /* JSSVGAltGlyphItemElement.h */, + B222F6960AB771950022EFAD /* JSSVGAngle.cpp */, + B222F6970AB771950022EFAD /* JSSVGAngle.h */, + B2FA3C4E0AB75A6E000E5AC4 /* JSSVGAnimateColorElement.cpp */, + B2FA3C4F0AB75A6E000E5AC4 /* JSSVGAnimateColorElement.h */, + B2FA3C500AB75A6E000E5AC4 /* JSSVGAnimatedAngle.cpp */, + B2FA3C510AB75A6E000E5AC4 /* JSSVGAnimatedAngle.h */, + B2FA3C520AB75A6E000E5AC4 /* JSSVGAnimatedBoolean.cpp */, + B2FA3C530AB75A6E000E5AC4 /* JSSVGAnimatedBoolean.h */, + B2FA3C540AB75A6E000E5AC4 /* JSSVGAnimatedEnumeration.cpp */, + B2FA3C550AB75A6E000E5AC4 /* JSSVGAnimatedEnumeration.h */, + B2FA3C560AB75A6E000E5AC4 /* JSSVGAnimatedInteger.cpp */, + B2FA3C570AB75A6E000E5AC4 /* JSSVGAnimatedInteger.h */, + B2FA3C580AB75A6E000E5AC4 /* JSSVGAnimatedLength.cpp */, + B2FA3C590AB75A6E000E5AC4 /* JSSVGAnimatedLength.h */, + B2FA3C5A0AB75A6E000E5AC4 /* JSSVGAnimatedLengthList.cpp */, + B2FA3C5B0AB75A6E000E5AC4 /* JSSVGAnimatedLengthList.h */, + B2FA3C5C0AB75A6E000E5AC4 /* JSSVGAnimatedNumber.cpp */, + B2FA3C5D0AB75A6E000E5AC4 /* JSSVGAnimatedNumber.h */, + B2FA3C5E0AB75A6E000E5AC4 /* JSSVGAnimatedNumberList.cpp */, + B2FA3C5F0AB75A6E000E5AC4 /* JSSVGAnimatedNumberList.h */, + B2FA3C620AB75A6E000E5AC4 /* JSSVGAnimatedPreserveAspectRatio.cpp */, + B2FA3C630AB75A6E000E5AC4 /* JSSVGAnimatedPreserveAspectRatio.h */, + B2FA3C640AB75A6E000E5AC4 /* JSSVGAnimatedRect.cpp */, + B2FA3C650AB75A6E000E5AC4 /* JSSVGAnimatedRect.h */, + B2FA3C660AB75A6E000E5AC4 /* JSSVGAnimatedString.cpp */, + B2FA3C670AB75A6E000E5AC4 /* JSSVGAnimatedString.h */, + B2FA3C680AB75A6E000E5AC4 /* JSSVGAnimatedTransformList.cpp */, + B2FA3C690AB75A6E000E5AC4 /* JSSVGAnimatedTransformList.h */, + B2FA3C6A0AB75A6E000E5AC4 /* JSSVGAnimateElement.cpp */, + B2FA3C6B0AB75A6E000E5AC4 /* JSSVGAnimateElement.h */, + 4496E39B1398136C003EE32A /* JSSVGAnimateMotionElement.cpp */, + 4496E39C1398136C003EE32A /* JSSVGAnimateMotionElement.h */, + B2FA3C6C0AB75A6E000E5AC4 /* JSSVGAnimateTransformElement.cpp */, + B2FA3C6D0AB75A6E000E5AC4 /* JSSVGAnimateTransformElement.h */, + B2FA3C6E0AB75A6E000E5AC4 /* JSSVGAnimationElement.cpp */, + B2FA3C6F0AB75A6E000E5AC4 /* JSSVGAnimationElement.h */, + B2FA3C700AB75A6E000E5AC4 /* JSSVGCircleElement.cpp */, + B2FA3C710AB75A6E000E5AC4 /* JSSVGCircleElement.h */, + B2FA3C720AB75A6E000E5AC4 /* JSSVGClipPathElement.cpp */, + B2FA3C730AB75A6E000E5AC4 /* JSSVGClipPathElement.h */, + B2FA3C740AB75A6E000E5AC4 /* JSSVGColor.cpp */, + B2FA3C750AB75A6E000E5AC4 /* JSSVGColor.h */, + B2FA3C760AB75A6E000E5AC4 /* JSSVGComponentTransferFunctionElement.cpp */, + B2FA3C770AB75A6E000E5AC4 /* JSSVGComponentTransferFunctionElement.h */, + B2FA3C780AB75A6E000E5AC4 /* JSSVGCursorElement.cpp */, + B2FA3C790AB75A6E000E5AC4 /* JSSVGCursorElement.h */, + B2FA3C7A0AB75A6E000E5AC4 /* JSSVGDefsElement.cpp */, + B2FA3C7B0AB75A6E000E5AC4 /* JSSVGDefsElement.h */, + B2FA3C7C0AB75A6E000E5AC4 /* JSSVGDescElement.cpp */, + B2FA3C7D0AB75A6E000E5AC4 /* JSSVGDescElement.h */, + B2FA3C7E0AB75A6E000E5AC4 /* JSSVGDocument.cpp */, + B2FA3C7F0AB75A6E000E5AC4 /* JSSVGDocument.h */, + B222F69A0AB771B80022EFAD /* JSSVGElement.cpp */, + B222F69B0AB771B80022EFAD /* JSSVGElement.h */, + B2CB923B0B5BD941009BAA78 /* JSSVGElementInstance.cpp */, + B2CB923C0B5BD941009BAA78 /* JSSVGElementInstance.h */, + B2CB923D0B5BD941009BAA78 /* JSSVGElementInstanceList.cpp */, + B2CB923E0B5BD941009BAA78 /* JSSVGElementInstanceList.h */, + B2FA3C800AB75A6E000E5AC4 /* JSSVGEllipseElement.cpp */, + B2FA3C810AB75A6E000E5AC4 /* JSSVGEllipseElement.h */, + B266CD4B0C3AEC6500EB08D2 /* JSSVGException.cpp */, + B266CD4C0C3AEC6500EB08D2 /* JSSVGException.h */, + B2FA3C820AB75A6E000E5AC4 /* JSSVGFEBlendElement.cpp */, + B2FA3C830AB75A6E000E5AC4 /* JSSVGFEBlendElement.h */, + B2FA3C840AB75A6E000E5AC4 /* JSSVGFEColorMatrixElement.cpp */, + B2FA3C850AB75A6E000E5AC4 /* JSSVGFEColorMatrixElement.h */, + B2FA3C860AB75A6E000E5AC4 /* JSSVGFEComponentTransferElement.cpp */, + B2FA3C870AB75A6E000E5AC4 /* JSSVGFEComponentTransferElement.h */, + B2FA3C880AB75A6E000E5AC4 /* JSSVGFECompositeElement.cpp */, + B2FA3C890AB75A6E000E5AC4 /* JSSVGFECompositeElement.h */, + 19BFF64911C0F2AC00B8C04D /* JSSVGFEConvolveMatrixElement.cpp */, + 19BFF64A11C0F2AC00B8C04D /* JSSVGFEConvolveMatrixElement.h */, + B2FA3C8A0AB75A6E000E5AC4 /* JSSVGFEDiffuseLightingElement.cpp */, + B2FA3C8B0AB75A6E000E5AC4 /* JSSVGFEDiffuseLightingElement.h */, + B2FA3C8C0AB75A6E000E5AC4 /* JSSVGFEDisplacementMapElement.cpp */, + B2FA3C8D0AB75A6E000E5AC4 /* JSSVGFEDisplacementMapElement.h */, + B2FA3C8E0AB75A6E000E5AC4 /* JSSVGFEDistantLightElement.cpp */, + B2FA3C8F0AB75A6E000E5AC4 /* JSSVGFEDistantLightElement.h */, + 4358E87A1360A2EE00E4748C /* JSSVGFEDropShadowElement.cpp */, + 4358E87B1360A2EE00E4748C /* JSSVGFEDropShadowElement.h */, + B2FA3C900AB75A6E000E5AC4 /* JSSVGFEFloodElement.cpp */, + B2FA3C910AB75A6E000E5AC4 /* JSSVGFEFloodElement.h */, + B2FA3C920AB75A6E000E5AC4 /* JSSVGFEFuncAElement.cpp */, + B2FA3C930AB75A6E000E5AC4 /* JSSVGFEFuncAElement.h */, + B2FA3C940AB75A6E000E5AC4 /* JSSVGFEFuncBElement.cpp */, + B2FA3C950AB75A6E000E5AC4 /* JSSVGFEFuncBElement.h */, + B2FA3C960AB75A6E000E5AC4 /* JSSVGFEFuncGElement.cpp */, + B2FA3C970AB75A6E000E5AC4 /* JSSVGFEFuncGElement.h */, + B2FA3C980AB75A6E000E5AC4 /* JSSVGFEFuncRElement.cpp */, + B2FA3C990AB75A6E000E5AC4 /* JSSVGFEFuncRElement.h */, + B2FA3C9A0AB75A6E000E5AC4 /* JSSVGFEGaussianBlurElement.cpp */, + B2FA3C9B0AB75A6E000E5AC4 /* JSSVGFEGaussianBlurElement.h */, + B2FA3C9C0AB75A6E000E5AC4 /* JSSVGFEImageElement.cpp */, + B2FA3C9D0AB75A6E000E5AC4 /* JSSVGFEImageElement.h */, + B2FA3C9E0AB75A6E000E5AC4 /* JSSVGFEMergeElement.cpp */, + B2FA3C9F0AB75A6E000E5AC4 /* JSSVGFEMergeElement.h */, + B2FA3CA00AB75A6E000E5AC4 /* JSSVGFEMergeNodeElement.cpp */, + B2FA3CA10AB75A6E000E5AC4 /* JSSVGFEMergeNodeElement.h */, + 84224181107E77F400766A87 /* JSSVGFEMorphologyElement.cpp */, + 84224182107E77F400766A87 /* JSSVGFEMorphologyElement.h */, + B2FA3CA20AB75A6E000E5AC4 /* JSSVGFEOffsetElement.cpp */, + B2FA3CA30AB75A6E000E5AC4 /* JSSVGFEOffsetElement.h */, + B2FA3CA40AB75A6E000E5AC4 /* JSSVGFEPointLightElement.cpp */, + B2FA3CA50AB75A6E000E5AC4 /* JSSVGFEPointLightElement.h */, + B2FA3CA60AB75A6E000E5AC4 /* JSSVGFESpecularLightingElement.cpp */, + B2FA3CA70AB75A6E000E5AC4 /* JSSVGFESpecularLightingElement.h */, + B2FA3CA80AB75A6E000E5AC4 /* JSSVGFESpotLightElement.cpp */, + B2FA3CA90AB75A6E000E5AC4 /* JSSVGFESpotLightElement.h */, + B2FA3CAA0AB75A6E000E5AC4 /* JSSVGFETileElement.cpp */, + B2FA3CAB0AB75A6E000E5AC4 /* JSSVGFETileElement.h */, + B2FA3CAC0AB75A6E000E5AC4 /* JSSVGFETurbulenceElement.cpp */, + B2FA3CAD0AB75A6E000E5AC4 /* JSSVGFETurbulenceElement.h */, + B2FA3CAE0AB75A6E000E5AC4 /* JSSVGFilterElement.cpp */, + B2FA3CAF0AB75A6E000E5AC4 /* JSSVGFilterElement.h */, + B27B281F0CEF0C0700D39D54 /* JSSVGFontElement.cpp */, + B27B28200CEF0C0700D39D54 /* JSSVGFontElement.h */, + A83B78FA0CCAFF15000B0825 /* JSSVGFontFaceElement.cpp */, + A83B78FB0CCAFF15000B0825 /* JSSVGFontFaceElement.h */, + A83B78F70CCAFF15000B0825 /* JSSVGFontFaceFormatElement.cpp */, + A83B78F60CCAFF15000B0825 /* JSSVGFontFaceFormatElement.h */, + A83B78F90CCAFF15000B0825 /* JSSVGFontFaceNameElement.cpp */, + A83B78F80CCAFF15000B0825 /* JSSVGFontFaceNameElement.h */, + A83B78F50CCAFF15000B0825 /* JSSVGFontFaceSrcElement.cpp */, + A83B78F40CCAFF15000B0825 /* JSSVGFontFaceSrcElement.h */, + A83B78F30CCAFF15000B0825 /* JSSVGFontFaceUriElement.cpp */, + A83B78F20CCAFF15000B0825 /* JSSVGFontFaceUriElement.h */, + B2FA3CB00AB75A6E000E5AC4 /* JSSVGForeignObjectElement.cpp */, + B2FA3CB10AB75A6E000E5AC4 /* JSSVGForeignObjectElement.h */, + B2FA3CB20AB75A6E000E5AC4 /* JSSVGGElement.cpp */, + B2FA3CB30AB75A6E000E5AC4 /* JSSVGGElement.h */, + B27B28210CEF0C0700D39D54 /* JSSVGGlyphElement.cpp */, + B27B28220CEF0C0700D39D54 /* JSSVGGlyphElement.h */, + 24D9129713CA96DE00D21915 /* JSSVGGlyphRefElement.cpp */, + 24D9129913CA971400D21915 /* JSSVGGlyphRefElement.h */, + B2FA3CB40AB75A6E000E5AC4 /* JSSVGGradientElement.cpp */, + B2FA3CB50AB75A6E000E5AC4 /* JSSVGGradientElement.h */, + 5A91469E8E9F8485C37A2876 /* JSSVGGraphicsElement.cpp */, + 950C4C02BED8936F818E2F99 /* JSSVGGraphicsElement.h */, + 848522771190162C006EDC7F /* JSSVGHKernElement.cpp */, + 848522781190162C006EDC7F /* JSSVGHKernElement.h */, + B2FA3CB60AB75A6E000E5AC4 /* JSSVGImageElement.cpp */, + B2FA3CB70AB75A6E000E5AC4 /* JSSVGImageElement.h */, + B2FA3CB80AB75A6E000E5AC4 /* JSSVGLength.cpp */, + B2FA3CB90AB75A6E000E5AC4 /* JSSVGLength.h */, + B2FA3CBA0AB75A6E000E5AC4 /* JSSVGLengthList.cpp */, + B2FA3CBB0AB75A6E000E5AC4 /* JSSVGLengthList.h */, + B2FA3CBC0AB75A6E000E5AC4 /* JSSVGLinearGradientElement.cpp */, + B2FA3CBD0AB75A6E000E5AC4 /* JSSVGLinearGradientElement.h */, + B2FA3CBE0AB75A6E000E5AC4 /* JSSVGLineElement.cpp */, + B2FA3CBF0AB75A6E000E5AC4 /* JSSVGLineElement.h */, + B2FA3CC00AB75A6E000E5AC4 /* JSSVGMarkerElement.cpp */, + B2FA3CC10AB75A6E000E5AC4 /* JSSVGMarkerElement.h */, + B2FA3CC20AB75A6E000E5AC4 /* JSSVGMaskElement.cpp */, + B2FA3CC30AB75A6E000E5AC4 /* JSSVGMaskElement.h */, + B2FA3CC40AB75A6E000E5AC4 /* JSSVGMatrix.cpp */, + B2FA3CC50AB75A6E000E5AC4 /* JSSVGMatrix.h */, + B2FA3CC60AB75A6E000E5AC4 /* JSSVGMetadataElement.cpp */, + B2FA3CC70AB75A6E000E5AC4 /* JSSVGMetadataElement.h */, + B27B28230CEF0C0700D39D54 /* JSSVGMissingGlyphElement.cpp */, + B27B28240CEF0C0700D39D54 /* JSSVGMissingGlyphElement.h */, + 4496E3A1139813CB003EE32A /* JSSVGMPathElement.cpp */, + 4496E39F139813A5003EE32A /* JSSVGMPathElement.h */, + 8574D1F30ADE6122004CBA11 /* JSSVGNumber.cpp */, + 8574D1F40ADE6122004CBA11 /* JSSVGNumber.h */, + B2FA3CC80AB75A6E000E5AC4 /* JSSVGNumberList.cpp */, + B2FA3CC90AB75A6E000E5AC4 /* JSSVGNumberList.h */, + B2FA3CCA0AB75A6E000E5AC4 /* JSSVGPaint.cpp */, + B2FA3CCB0AB75A6E000E5AC4 /* JSSVGPaint.h */, + B2FA3CCC0AB75A6E000E5AC4 /* JSSVGPathElement.cpp */, + B2FA3CCD0AB75A6E000E5AC4 /* JSSVGPathElement.h */, + B2FA3CCE0AB75A6E000E5AC4 /* JSSVGPathSeg.cpp */, + B2FA3CCF0AB75A6E000E5AC4 /* JSSVGPathSeg.h */, + B2FA3CD00AB75A6E000E5AC4 /* JSSVGPathSegArcAbs.cpp */, + B2FA3CD10AB75A6E000E5AC4 /* JSSVGPathSegArcAbs.h */, + B2FA3CD20AB75A6E000E5AC4 /* JSSVGPathSegArcRel.cpp */, + B2FA3CD30AB75A6E000E5AC4 /* JSSVGPathSegArcRel.h */, + B2FA3CD40AB75A6E000E5AC4 /* JSSVGPathSegClosePath.cpp */, + B2FA3CD50AB75A6E000E5AC4 /* JSSVGPathSegClosePath.h */, + B2FA3CD60AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicAbs.cpp */, + B2FA3CD70AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicAbs.h */, + B2FA3CD80AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicRel.cpp */, + B2FA3CD90AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicRel.h */, + B2FA3CDA0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothAbs.cpp */, + B2FA3CDB0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothAbs.h */, + B2FA3CDC0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothRel.cpp */, + B2FA3CDD0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothRel.h */, + B2FA3CDE0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticAbs.cpp */, + B2FA3CDF0AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticAbs.h */, + B2FA3CE00AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticRel.cpp */, + B2FA3CE10AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticRel.h */, + B2FA3CE20AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothAbs.cpp */, + B2FA3CE30AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothAbs.h */, + B2FA3CE40AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothRel.cpp */, + B2FA3CE50AB75A6E000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothRel.h */, + B2FA3CE60AB75A6E000E5AC4 /* JSSVGPathSegLinetoAbs.cpp */, + B2FA3CE70AB75A6E000E5AC4 /* JSSVGPathSegLinetoAbs.h */, + B2FA3CE80AB75A6E000E5AC4 /* JSSVGPathSegLinetoHorizontalAbs.cpp */, + B2FA3CE90AB75A6E000E5AC4 /* JSSVGPathSegLinetoHorizontalAbs.h */, + B2FA3CEA0AB75A6E000E5AC4 /* JSSVGPathSegLinetoHorizontalRel.cpp */, + B2FA3CEB0AB75A6E000E5AC4 /* JSSVGPathSegLinetoHorizontalRel.h */, + B2FA3CEC0AB75A6E000E5AC4 /* JSSVGPathSegLinetoRel.cpp */, + B2FA3CED0AB75A6E000E5AC4 /* JSSVGPathSegLinetoRel.h */, + B2FA3CEE0AB75A6E000E5AC4 /* JSSVGPathSegLinetoVerticalAbs.cpp */, + B2FA3CEF0AB75A6E000E5AC4 /* JSSVGPathSegLinetoVerticalAbs.h */, + B2FA3CF00AB75A6E000E5AC4 /* JSSVGPathSegLinetoVerticalRel.cpp */, + B2FA3CF10AB75A6E000E5AC4 /* JSSVGPathSegLinetoVerticalRel.h */, + B2FA3CF20AB75A6E000E5AC4 /* JSSVGPathSegList.cpp */, + B2FA3CF30AB75A6E000E5AC4 /* JSSVGPathSegList.h */, + B2FA3CF40AB75A6E000E5AC4 /* JSSVGPathSegMovetoAbs.cpp */, + B2FA3CF50AB75A6E000E5AC4 /* JSSVGPathSegMovetoAbs.h */, + B2FA3CF60AB75A6E000E5AC4 /* JSSVGPathSegMovetoRel.cpp */, + B2FA3CF70AB75A6E000E5AC4 /* JSSVGPathSegMovetoRel.h */, + B2FA3CF80AB75A6E000E5AC4 /* JSSVGPatternElement.cpp */, + B2FA3CF90AB75A6E000E5AC4 /* JSSVGPatternElement.h */, + 8574D1F50ADE6122004CBA11 /* JSSVGPoint.cpp */, + 8574D1F60ADE6122004CBA11 /* JSSVGPoint.h */, + B2FA3CFA0AB75A6E000E5AC4 /* JSSVGPointList.cpp */, + B2FA3CFB0AB75A6E000E5AC4 /* JSSVGPointList.h */, + B2FA3CFD0AB75A6E000E5AC4 /* JSSVGPolygonElement.cpp */, + B2FA3CFE0AB75A6E000E5AC4 /* JSSVGPolygonElement.h */, + B2FA3CFF0AB75A6E000E5AC4 /* JSSVGPolylineElement.cpp */, + B2FA3D000AB75A6E000E5AC4 /* JSSVGPolylineElement.h */, + B2FA3D010AB75A6E000E5AC4 /* JSSVGPreserveAspectRatio.cpp */, + B2FA3D020AB75A6E000E5AC4 /* JSSVGPreserveAspectRatio.h */, + B2FA3D030AB75A6E000E5AC4 /* JSSVGRadialGradientElement.cpp */, + B2FA3D040AB75A6E000E5AC4 /* JSSVGRadialGradientElement.h */, + 8574D1F70ADE6122004CBA11 /* JSSVGRect.cpp */, + 8574D1F80ADE6122004CBA11 /* JSSVGRect.h */, + B2FA3D050AB75A6E000E5AC4 /* JSSVGRectElement.cpp */, + B2FA3D060AB75A6E000E5AC4 /* JSSVGRectElement.h */, + B2FA3D080AB75A6E000E5AC4 /* JSSVGRenderingIntent.cpp */, + B2FA3D090AB75A6E000E5AC4 /* JSSVGRenderingIntent.h */, + B2FA3D0A0AB75A6E000E5AC4 /* JSSVGScriptElement.cpp */, + B2FA3D0B0AB75A6E000E5AC4 /* JSSVGScriptElement.h */, + B2FA3D0C0AB75A6E000E5AC4 /* JSSVGSetElement.cpp */, + B2FA3D0D0AB75A6E000E5AC4 /* JSSVGSetElement.h */, + B2FA3D0E0AB75A6E000E5AC4 /* JSSVGStopElement.cpp */, + B2FA3D0F0AB75A6E000E5AC4 /* JSSVGStopElement.h */, + B2FA3D100AB75A6E000E5AC4 /* JSSVGStringList.cpp */, + B2FA3D110AB75A6E000E5AC4 /* JSSVGStringList.h */, + B2FA3D120AB75A6E000E5AC5 /* JSSVGStyledElement.cpp */, + B2FA3D130AB75A6E000E5AC5 /* JSSVGStyledElement.h */, + B2FA3D120AB75A6E000E5AC4 /* JSSVGStyleElement.cpp */, + B2FA3D130AB75A6E000E5AC4 /* JSSVGStyleElement.h */, + B2FA3D140AB75A6F000E5AC4 /* JSSVGSVGElement.cpp */, + B2FA3D150AB75A6F000E5AC4 /* JSSVGSVGElement.h */, + B2FA3D160AB75A6F000E5AC4 /* JSSVGSwitchElement.cpp */, + B2FA3D170AB75A6F000E5AC4 /* JSSVGSwitchElement.h */, + B2FA3D180AB75A6F000E5AC4 /* JSSVGSymbolElement.cpp */, + B2FA3D190AB75A6F000E5AC4 /* JSSVGSymbolElement.h */, + B2FA3D1A0AB75A6F000E5AC4 /* JSSVGTextContentElement.cpp */, + B2FA3D1B0AB75A6F000E5AC4 /* JSSVGTextContentElement.h */, + B2FA3D1C0AB75A6F000E5AC4 /* JSSVGTextElement.cpp */, + B2FA3D1D0AB75A6F000E5AC4 /* JSSVGTextElement.h */, + B22362260C3AF04A0008CA9B /* JSSVGTextPathElement.cpp */, + B22362270C3AF04A0008CA9B /* JSSVGTextPathElement.h */, + B2FA3D1E0AB75A6F000E5AC4 /* JSSVGTextPositioningElement.cpp */, + B2FA3D1F0AB75A6F000E5AC4 /* JSSVGTextPositioningElement.h */, + B2FA3D200AB75A6F000E5AC4 /* JSSVGTitleElement.cpp */, + B2FA3D210AB75A6F000E5AC4 /* JSSVGTitleElement.h */, + B2FA3D220AB75A6F000E5AC4 /* JSSVGTransform.cpp */, + B2FA3D230AB75A6F000E5AC4 /* JSSVGTransform.h */, + B2FA3D240AB75A6F000E5AC4 /* JSSVGTransformList.cpp */, + B2FA3D250AB75A6F000E5AC4 /* JSSVGTransformList.h */, + B2FA3D260AB75A6F000E5AC4 /* JSSVGTRefElement.cpp */, + B2FA3D270AB75A6F000E5AC4 /* JSSVGTRefElement.h */, + B2FA3D280AB75A6F000E5AC4 /* JSSVGTSpanElement.cpp */, + B2FA3D290AB75A6F000E5AC4 /* JSSVGTSpanElement.h */, + B2FA3D2A0AB75A6F000E5AC4 /* JSSVGUnitTypes.cpp */, + B2FA3D2B0AB75A6F000E5AC4 /* JSSVGUnitTypes.h */, + B2FA3D2C0AB75A6F000E5AC4 /* JSSVGUseElement.cpp */, + B2FA3D2D0AB75A6F000E5AC4 /* JSSVGUseElement.h */, + B2FA3D2E0AB75A6F000E5AC4 /* JSSVGViewElement.cpp */, + B2FA3D2F0AB75A6F000E5AC4 /* JSSVGViewElement.h */, + 7118FED215685CC60030B79A /* JSSVGViewSpec.cpp */, + 7118FED315685CC60030B79A /* JSSVGViewSpec.h */, + 848522791190162C006EDC7F /* JSSVGVKernElement.cpp */, + 8485227A1190162C006EDC7F /* JSSVGVKernElement.h */, + 71DCB6FF1568197600862271 /* JSSVGZoomAndPan.cpp */, + 71DCB7001568197600862271 /* JSSVGZoomAndPan.h */, + B2FA3D300AB75A6F000E5AC4 /* JSSVGZoomEvent.cpp */, + B2FA3D310AB75A6F000E5AC4 /* JSSVGZoomEvent.h */, + ); + name = SVG; + sourceTree = ""; + }; + A83B790C0CCAFF83000B0825 /* XPath */ = { + isa = PBXGroup; + children = ( + 1A762C6B0A074F2600989F5B /* JSXPathEvaluator.cpp */, + 1A762C6C0A074F2600989F5B /* JSXPathEvaluator.h */, + BC60DB470D2A3D1E00B9918F /* JSXPathException.cpp */, + BC60DB480D2A3D1E00B9918F /* JSXPathException.h */, + 1A762C6D0A074F2600989F5B /* JSXPathExpression.cpp */, + 1A762C6E0A074F2600989F5B /* JSXPathExpression.h */, + 1A762C6F0A074F2600989F5B /* JSXPathNSResolver.cpp */, + 1A762C700A074F2600989F5B /* JSXPathNSResolver.h */, + 1A762C710A074F2600989F5B /* JSXPathResult.cpp */, + 1A762C720A074F2600989F5B /* JSXPathResult.h */, + ); + name = XPath; + sourceTree = ""; + }; + A83B790E0CCAFF97000B0825 /* CSS */ = { + isa = PBXGroup; + children = ( + BCC065830F3CE2A700CD2D87 /* JSClientRect.cpp */, + BCC065840F3CE2A700CD2D87 /* JSClientRect.h */, + BCC065850F3CE2A700CD2D87 /* JSClientRectList.cpp */, + BCC065860F3CE2A700CD2D87 /* JSClientRectList.h */, + 930705D709E0C9B700B17FE4 /* JSCounter.cpp */, + 930705D909E0C9BF00B17FE4 /* JSCounter.h */, + BC46C1F00C0DDC8F0020CFC3 /* JSCSSCharsetRule.cpp */, + BC46C1F10C0DDC8F0020CFC3 /* JSCSSCharsetRule.h */, + BC46C1F20C0DDC8F0020CFC3 /* JSCSSFontFaceRule.cpp */, + BC46C1F30C0DDC8F0020CFC3 /* JSCSSFontFaceRule.h */, + BC46C1F40C0DDC8F0020CFC3 /* JSCSSImportRule.cpp */, + BC46C1F50C0DDC8F0020CFC3 /* JSCSSImportRule.h */, + BC46C1F60C0DDC8F0020CFC3 /* JSCSSMediaRule.cpp */, + BC46C1F70C0DDC8F0020CFC3 /* JSCSSMediaRule.h */, + BC46C1F80C0DDC8F0020CFC3 /* JSCSSPageRule.cpp */, + BC46C1F90C0DDC8F0020CFC3 /* JSCSSPageRule.h */, + 930705E809E0C9F000B17FE4 /* JSCSSPrimitiveValue.cpp */, + 930705EA09E0C9F600B17FE4 /* JSCSSPrimitiveValue.h */, + 14CF7B3109F6ECD700EB3665 /* JSCSSRule.cpp */, + 14CF7B3209F6ECD700EB3665 /* JSCSSRule.h */, + A8D05FA50A23B301005E7203 /* JSCSSRuleList.cpp */, + A8D05FA60A23B301005E7203 /* JSCSSRuleList.h */, + 142011B40A003133008303F9 /* JSCSSStyleDeclaration.cpp */, + 142011B50A003133008303F9 /* JSCSSStyleDeclaration.h */, + BC46C2040C0DDCA10020CFC3 /* JSCSSStyleRule.cpp */, + BC46C2050C0DDCA10020CFC3 /* JSCSSStyleRule.h */, + BCC5BDFE0C0E93110011C2DB /* JSCSSStyleSheet.cpp */, + BCC5BDFF0C0E93110011C2DB /* JSCSSStyleSheet.h */, + FC84802E167AB444008CD100 /* JSCSSSupportsRule.h */, + 14CF78A309F58CBF00EB3665 /* JSCSSValue.cpp */, + 14CF78A509F58CD800EB3665 /* JSCSSValue.h */, + A8D05FA90A23B30F005E7203 /* JSCSSValueList.cpp */, + A8D05FAA0A23B30F005E7203 /* JSCSSValueList.h */, + FC9E0E4B16419C1E00392BE3 /* JSDOMWindowCSS.h */, + BC3C39B40C0D3D8D005F4D7A /* JSMediaList.cpp */, + BC3C39B50C0D3D8D005F4D7A /* JSMediaList.h */, + D3A94A42122DC40F00A37BBC /* JSMediaQueryList.cpp */, + D3A94A43122DC40F00A37BBC /* JSMediaQueryList.h */, + BCFE2F0F0C1B58370020235F /* JSRect.cpp */, + BCFE2F100C1B58370020235F /* JSRect.h */, + BC74DA461013F468007987AD /* JSRGBColor.cpp */, + BC74DA471013F468007987AD /* JSRGBColor.h */, + 0FF50267102BA9430066F39A /* JSStyleMedia.cpp */, + 0FF50268102BA9430066F39A /* JSStyleMedia.h */, + BCE013980C0BEF180043860A /* JSStyleSheet.cpp */, + BCE013990C0BEF180043860A /* JSStyleSheet.h */, + A84EBD820CB8C97700079609 /* JSStyleSheetList.cpp */, + A84EBD810CB8C97700079609 /* JSStyleSheetList.h */, + A2E8AE3516A49840006BB3AA /* JSWebKitCSSFilterRule.cpp */, + A2E8AE3616A49840006BB3AA /* JSWebKitCSSFilterRule.h */, + 310603721432819C00ABF4BA /* JSWebKitCSSFilterValue.cpp */, + 310603731432819C00ABF4BA /* JSWebKitCSSFilterValue.h */, + 316FE06D0E6CCBEE00BF6088 /* JSWebKitCSSKeyframeRule.cpp */, + 316FE06E0E6CCBEE00BF6088 /* JSWebKitCSSKeyframeRule.h */, + 316FE06F0E6CCBEE00BF6088 /* JSWebKitCSSKeyframesRule.cpp */, + 316FE0700E6CCBEE00BF6088 /* JSWebKitCSSKeyframesRule.h */, + 4983913D0F1E767500C23782 /* JSWebKitCSSMatrix.cpp */, + 4983913E0F1E767500C23782 /* JSWebKitCSSMatrix.h */, + 15B8B7C61652C5220036EF55 /* JSWebKitCSSMixFunctionValue.cpp */, + 15B8B7C71652C5220036EF55 /* JSWebKitCSSMixFunctionValue.h */, + 8ACC24CD148E24B200EFCC0D /* JSWebKitCSSRegionRule.cpp */, + 8ACC24CE148E24B200EFCC0D /* JSWebKitCSSRegionRule.h */, + 31611E580E1C4DE000F6A579 /* JSWebKitCSSTransformValue.cpp */, + 31611E590E1C4DE000F6A579 /* JSWebKitCSSTransformValue.h */, + 3F2B33E9165AF15500E3987C /* JSWebKitCSSViewportRule.cpp */, + 3F2B33EA165AF15500E3987C /* JSWebKitCSSViewportRule.h */, + ); + name = CSS; + sourceTree = ""; + }; + A83B79100CCB001B000B0825 /* Core */ = { + isa = PBXGroup; + children = ( + 65DF31D809D1C122000BE325 /* JSAttr.cpp */, + 65DF31D909D1C123000BE325 /* JSAttr.h */, + 93F9B79E0BA6032600854064 /* JSCDATASection.cpp */, + 93F9B79F0BA6032600854064 /* JSCDATASection.h */, + 65DF31DF09D1CC60000BE325 /* JSCharacterData.cpp */, + 65DF31E009D1CC60000BE325 /* JSCharacterData.h */, + BCA83E4D0D7CE1E9003421A8 /* JSClipboard.cpp */, + BCA83E4E0D7CE1E9003421A8 /* JSClipboard.h */, + 93F9B6DE0BA0FB7200854064 /* JSComment.cpp */, + 93F9B6DF0BA0FB7200854064 /* JSComment.h */, + FE6FD48B0F676E9300092873 /* JSCoordinates.cpp */, + FE6FD48C0F676E9300092873 /* JSCoordinates.h */, + 31FB1A63120A5D3F00DC02A0 /* JSDeviceMotionEvent.cpp */, + 31FB1A64120A5D3F00DC02A0 /* JSDeviceMotionEvent.h */, + 59A86005119DAF7F00DEF1EF /* JSDeviceOrientationEvent.cpp */, + 59A86007119DAFA100DEF1EF /* JSDeviceOrientationEvent.h */, + 659DDC8009E198BA001BF3C6 /* JSDocument.cpp */, + 659DDC8109E198BA001BF3C6 /* JSDocument.h */, + 1A494EDC0A123F4C00FDAFC1 /* JSDocumentFragment.cpp */, + 1A494EDD0A123F4C00FDAFC1 /* JSDocumentFragment.h */, + 65DF31E109D1CC60000BE325 /* JSDocumentType.cpp */, + 65DF31E209D1CC60000BE325 /* JSDocumentType.h */, + BC60D7BE0D29A46300B9918F /* JSDOMCoreException.cpp */, + BC60D7BF0D29A46300B9918F /* JSDOMCoreException.h */, + 65DF31E309D1CC60000BE325 /* JSDOMImplementation.cpp */, + 65DF31E409D1CC60000BE325 /* JSDOMImplementation.h */, + 52CCA9E015E3F62C0053C77F /* JSDOMNamedFlowCollection.cpp */, + 52CCA9E115E3F62C0053C77F /* JSDOMNamedFlowCollection.h */, + C5137CF011A58378004ADB99 /* JSDOMStringList.cpp */, + C5137CF111A58378004ADB99 /* JSDOMStringList.h */, + BC64649511D82349006455B0 /* JSDOMStringMap.cpp */, + BC64649611D82349006455B0 /* JSDOMStringMap.h */, + 65DF31E509D1CC60000BE325 /* JSElement.cpp */, + 65DF31E609D1CC60000BE325 /* JSElement.h */, + 65DF322D09D1DDBC000BE325 /* JSEntity.cpp */, + 65DF322E09D1DDBC000BE325 /* JSEntity.h */, + 93F9B7720BA5FDDC00854064 /* JSEntityReference.cpp */, + 93F9B7730BA5FDDC00854064 /* JSEntityReference.h */, + FE80DA5F0E9C4703000D6F75 /* JSGeolocation.cpp */, + FE80DA600E9C4703000D6F75 /* JSGeolocation.h */, + FE80DA610E9C4703000D6F75 /* JSGeoposition.cpp */, + FE80DA620E9C4703000D6F75 /* JSGeoposition.h */, + C6F0902414327D4F00685849 /* JSMutationObserver.cpp */, + C6F0902514327D4F00685849 /* JSMutationObserver.h */, + C6F08FC71431000D00685849 /* JSMutationRecord.cpp */, + C6F08FC81431000D00685849 /* JSMutationRecord.h */, + BCD9C2BC0C17B69E005C90A2 /* JSNamedNodeMap.cpp */, + BCD9C2BD0C17B69E005C90A2 /* JSNamedNodeMap.h */, + 14DC0D3509FED073007B0235 /* JSNode.cpp */, + 14DC0D3609FED073007B0235 /* JSNode.h */, + BCD9C2BE0C17B69E005C90A2 /* JSNodeList.cpp */, + BCD9C2BF0C17B69E005C90A2 /* JSNodeList.h */, + 65DF31E909D1CC60000BE325 /* JSNotation.cpp */, + 65DF31EA09D1CC60000BE325 /* JSNotation.h */, + 598365E31355F604001B185D /* JSPositionCallback.cpp */, + 598365DC1355F53C001B185D /* JSPositionCallback.h */, + FE80DA6D0E9C472F000D6F75 /* JSPositionError.cpp */, + FE80DA6E0E9C472F000D6F75 /* JSPositionError.h */, + 598365E51355F60D001B185D /* JSPositionErrorCallback.cpp */, + 598365DE1355F562001B185D /* JSPositionErrorCallback.h */, + 65DF31EB09D1CC60000BE325 /* JSProcessingInstruction.cpp */, + 65DF31EC09D1CC60000BE325 /* JSProcessingInstruction.h */, + E4B423850CBFB73C00AF2ECE /* JSProgressEvent.cpp */, + E4B423860CBFB73C00AF2ECE /* JSProgressEvent.h */, + 1059459E15B42B1A004D37FD /* JSPropertyNodeList.h */, + 4998AECB13F9D6C90090B1AA /* JSRequestAnimationFrameCallback.cpp */, + 4998AECC13F9D6C90090B1AA /* JSRequestAnimationFrameCallback.h */, + 4A1E71A414E106AC00626F9D /* JSShadowRoot.h */, + 75415D50129AB2D2003AD669 /* JSSpeechInputEvent.h */, + 75415D52129AB2D2003AD669 /* JSSpeechInputResult.h */, + 75415D53129AB2D2003AD669 /* JSSpeechInputResultList.cpp */, + 75415D54129AB2D2003AD669 /* JSSpeechInputResultList.h */, + 65DF31EF09D1CC60000BE325 /* JSText.cpp */, + 65DF31F009D1CC60000BE325 /* JSText.h */, + D7613AC214753E5600DB8606 /* JSWebKitNamedFlow.cpp */, + D7613AC314753E5600DB8606 /* JSWebKitNamedFlow.h */, + ); + name = Core; + sourceTree = ""; + }; + A83B79120CCB003F000B0825 /* Events */ = { + isa = PBXGroup; + children = ( + BC946345107A934B00857193 /* JSBeforeLoadEvent.cpp */, + BC946347107A936600857193 /* JSBeforeLoadEvent.h */, + 79AC9216109945C80021266E /* JSCompositionEvent.cpp */, + 79AC9217109945C80021266E /* JSCompositionEvent.h */, + E4778B7D115A581A00B5D372 /* JSCustomEvent.cpp */, + E4778B7E115A581A00B5D372 /* JSCustomEvent.h */, + 2ECF7ADA10162B3800427DE7 /* JSErrorEvent.cpp */, + 2ECF7ADB10162B3800427DE7 /* JSErrorEvent.h */, + 14E8378309F85D1C00B85AE4 /* JSEvent.cpp */, + 14E8378D09F85D4F00B85AE4 /* JSEvent.h */, + BC60D9BD0D2A269A00B9918F /* JSEventException.cpp */, + BC60D9BE0D2A269A00B9918F /* JSEventException.h */, + C6A703325C9D0B6CDCBC4D78 /* JSEventTarget.cpp */, + 5FC7DC26CFE2563200B85AE5 /* JSEventTarget.h */, + B6D9D27A14EAC0860090D75E /* JSFocusEvent.cpp */, + B6D9D27914EAC0860090D75E /* JSFocusEvent.h */, + 8482B74F1198CB6B00BFB005 /* JSHashChangeEvent.cpp */, + 8482B7501198CB6B00BFB005 /* JSHashChangeEvent.h */, + A86629CE09DA2B47009633A5 /* JSKeyboardEvent.cpp */, + A86629CD09DA2B47009633A5 /* JSKeyboardEvent.h */, + E107400B0E77BDC00033AF24 /* JSMessageChannel.cpp */, + E107400C0E77BDC00033AF24 /* JSMessageChannel.h */, + 75793EC60D0CE72D007FC0AC /* JSMessageEvent.cpp */, + 75793EC70D0CE72D007FC0AC /* JSMessageEvent.h */, + E1ADEDD90E76BD93004A1A5E /* JSMessagePort.cpp */, + E1ADEDD80E76BD93004A1A5E /* JSMessagePort.h */, + A86629CC09DA2B47009633A5 /* JSMouseEvent.cpp */, + A86629CB09DA2B47009633A5 /* JSMouseEvent.h */, + 65DF31E709D1CC60000BE325 /* JSMutationEvent.cpp */, + 65DF31E809D1CC60000BE325 /* JSMutationEvent.h */, + 1A0D573E0A5C7867007EDD4C /* JSOverflowEvent.cpp */, + 1A0D573F0A5C7867007EDD4C /* JSOverflowEvent.h */, + E1284BB010449FFA00EAEB52 /* JSPageTransitionEvent.cpp */, + E1284BAF10449FFA00EAEB52 /* JSPageTransitionEvent.h */, + 5189F01B10B37BD900F3C739 /* JSPopStateEvent.cpp */, + 5189F01C10B37BD900F3C739 /* JSPopStateEvent.h */, + 933A14B60B7D1D5200A53FFD /* JSTextEvent.cpp */, + 933A14B70B7D1D5200A53FFD /* JSTextEvent.h */, + E17B492016A9B8FF001C8839 /* JSTransitionEvent.cpp */, + E17B491F16A9B8FF001C8839 /* JSTransitionEvent.h */, + A86629CA09DA2B47009633A5 /* JSUIEvent.cpp */, + A86629C909DA2B47009633A5 /* JSUIEvent.h */, + 31C0FF390E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.cpp */, + 31C0FF3A0E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.h */, + 31C0FF3B0E4CEFAC007D6FE5 /* JSWebKitTransitionEvent.cpp */, + 31C0FF3C0E4CEFAC007D6FE5 /* JSWebKitTransitionEvent.h */, + 65DF31F109D1CC60000BE325 /* JSWheelEvent.cpp */, + 65DF31F209D1CC60000BE325 /* JSWheelEvent.h */, + ); + name = Events; + sourceTree = ""; + }; + A83B79150CCB0078000B0825 /* Storage */ = { + isa = PBXGroup; + children = ( + 1AE82F8D0CAAFA9D002237AE /* JSDatabase.cpp */, + 1AE82F8E0CAAFA9D002237AE /* JSDatabase.h */, + B59DD698119029E5007E9684 /* JSDatabaseCallback.cpp */, + B59DD697119029E5007E9684 /* JSDatabaseCallback.h */, + B58CEB6811913607002A6790 /* JSDatabaseSync.cpp */, + B58CEB6711913607002A6790 /* JSDatabaseSync.h */, + C585A66511D4FB07004C3E4B /* JSIDBAny.h */, + 81BE20A811F4B66F00915DFA /* JSIDBCursor.h */, + C585A66B11D4FB07004C3E4B /* JSIDBDatabase.h */, + C585A69511D4FB13004C3E4B /* JSIDBFactory.h */, + C572EE1D1201C9BC007D8F82 /* JSIDBIndex.h */, + C585A67511D4FB07004C3E4B /* JSIDBKeyRange.h */, + C585A67711D4FB07004C3E4B /* JSIDBObjectStore.h */, + C585A67911D4FB07004C3E4B /* JSIDBRequest.h */, + B656626E120B1227006EA85C /* JSIDBTransaction.h */, + 269239911505E1AA009E57FC /* JSIDBVersionChangeEvent.cpp */, + 269239921505E1AA009E57FC /* JSIDBVersionChangeEvent.h */, + 514C76350CE9225E007EF3CD /* JSSQLError.cpp */, + BC8243250D0CE8A200460C8F /* JSSQLError.h */, + B525A96411CA2340003A23A8 /* JSSQLException.cpp */, + B525A96311CA2340003A23A8 /* JSSQLException.h */, + 1AE82FEA0CAB07EE002237AE /* JSSQLResultSet.cpp */, + 1AE82FEB0CAB07EE002237AE /* JSSQLResultSet.h */, + 1AFE11970CBFFCC4003017FA /* JSSQLResultSetRowList.cpp */, + 1AFE11980CBFFCC4003017FA /* JSSQLResultSetRowList.h */, + B59DD6A411902A62007E9684 /* JSSQLStatementCallback.cpp */, + B59DD6A311902A62007E9684 /* JSSQLStatementCallback.h */, + B59DD6A811902A71007E9684 /* JSSQLStatementErrorCallback.cpp */, + B59DD6A711902A71007E9684 /* JSSQLStatementErrorCallback.h */, + 514C76360CE9225E007EF3CD /* JSSQLTransaction.cpp */, + BC8243260D0CE8A200460C8F /* JSSQLTransaction.h */, + B59DD69C11902A42007E9684 /* JSSQLTransactionCallback.cpp */, + B59DD69B11902A42007E9684 /* JSSQLTransactionCallback.h */, + B59DD6A011902A52007E9684 /* JSSQLTransactionErrorCallback.cpp */, + B59DD69F11902A52007E9684 /* JSSQLTransactionErrorCallback.h */, + B58CEB6C1191361C002A6790 /* JSSQLTransactionSync.cpp */, + B58CEB6B1191361C002A6790 /* JSSQLTransactionSync.h */, + B55D5AA3119131FC00BCC315 /* JSSQLTransactionSyncCallback.cpp */, + B55D5AA2119131FC00BCC315 /* JSSQLTransactionSyncCallback.h */, + 51E3F9D40DA05E1D00250911 /* JSStorage.cpp */, + 51E3F9D50DA05E1D00250911 /* JSStorage.h */, + 51E0BAE80DA55D4A00A9E417 /* JSStorageEvent.cpp */, + 51E0BAE90DA55D4A00A9E417 /* JSStorageEvent.h */, + ); + name = Storage; + sourceTree = ""; + }; + A83B79220CCB00F0000B0825 /* XML */ = { + isa = PBXGroup; + children = ( + 1ACE53DD0A8D18810022947D /* JSDOMParser.cpp */, + 1ACE53DE0A8D18810022947D /* JSDOMParser.h */, + BC348BD10DB7F804004ABAB9 /* JSXMLHttpRequest.cpp */, + BC348BD20DB7F804004ABAB9 /* JSXMLHttpRequest.h */, + BC60DA370D2A302800B9918F /* JSXMLHttpRequestException.cpp */, + BC60DA380D2A302800B9918F /* JSXMLHttpRequestException.h */, + F916C48B0DB510F80076CD83 /* JSXMLHttpRequestProgressEvent.cpp */, + F916C48C0DB510F80076CD83 /* JSXMLHttpRequestProgressEvent.h */, + BCDFD4930E30592F009D10AD /* JSXMLHttpRequestUpload.cpp */, + BCDFD4940E30592F009D10AD /* JSXMLHttpRequestUpload.h */, + 1ACE53F40A8D19470022947D /* JSXMLSerializer.cpp */, + 1ACE53F50A8D19470022947D /* JSXMLSerializer.h */, + BCEFE1E80DCA5F6400739219 /* JSXSLTProcessor.cpp */, + BCEFE1E90DCA5F6400739219 /* JSXSLTProcessor.h */, + ); + name = XML; + sourceTree = ""; + }; + A8D2B2521287A56000AF4DDA /* cache */ = { + isa = PBXGroup; + children = ( + BCB16C000979C3BD00467741 /* CachedCSSStyleSheet.cpp */, + BCB16C010979C3BD00467741 /* CachedCSSStyleSheet.h */, + BC64B4C90CB4295D005F2B62 /* CachedFont.cpp */, + BC64B4CA0CB4295D005F2B62 /* CachedFont.h */, + 1AEF4E66170E160300AB2799 /* CachedFontClient.h */, + BCB16C020979C3BD00467741 /* CachedImage.cpp */, + BCB16C030979C3BD00467741 /* CachedImage.h */, + 319FBD5D15D2F444009640A6 /* CachedImageClient.h */, + D0EDA772143E303C0028E383 /* CachedRawResource.cpp */, + D0EDA773143E303C0028E383 /* CachedRawResource.h */, + E1B533481717DEE300F205F9 /* CachedRawResourceClient.h */, + BCB16C060979C3BD00467741 /* CachedResource.cpp */, + BCB16C070979C3BD00467741 /* CachedResource.h */, + BCFB2E5D0979E46400BA703D /* CachedResourceClient.h */, + BCB16C090979C3BD00467741 /* CachedResourceClientWalker.h */, + E47B4BE70E71241600038854 /* CachedResourceHandle.cpp */, + E47B4BE60E71241600038854 /* CachedResourceHandle.h */, + BCB16C100979C3BD00467741 /* CachedResourceLoader.cpp */, + BCB16C110979C3BD00467741 /* CachedResourceLoader.h */, + 5081E3DF3CFC80C16EF8B48B /* CachedResourceRequest.cpp */, + 5081E3E13D0280C16EF8B48B /* CachedResourceRequest.h */, + 6C638894A96CCEE50C8C946C /* CachedResourceRequestInitiators.cpp */, + 6C638893A96CCEE50C8C946C /* CachedResourceRequestInitiators.h */, + BCB16C0A0979C3BD00467741 /* CachedScript.cpp */, + BCB16C0B0979C3BD00467741 /* CachedScript.h */, + 5038BE3E1472AD980095E0D1 /* CachedShader.cpp */, + 5038BE3F1472AD980095E0D1 /* CachedShader.h */, + D0BC54481443AC4A00E105DA /* CachedStyleSheetClient.h */, + A104F24114C71F7A009E2C23 /* CachedSVGDocument.cpp */, + A104F24214C71F7A009E2C23 /* CachedSVGDocument.h */, + 1AEF4E68170E174800AB2799 /* CachedSVGDocumentClient.h */, + E1B533461717D0A000F205F9 /* CachedSVGDocumentReference.cpp */, + FB2C15C2165D64900039C9F8 /* CachedSVGDocumentReference.h */, + 0753860014489E9800B78452 /* CachedTextTrack.cpp */, + 0753860114489E9800B78452 /* CachedTextTrack.h */, + BCB16C0E0979C3BD00467741 /* CachedXSLStyleSheet.cpp */, + BCB16C0F0979C3BD00467741 /* CachedXSLStyleSheet.h */, + F587864902DE3A9A01EA4122 /* CachePolicy.h */, + BCB16BFE0979C3BD00467741 /* MemoryCache.cpp */, + BCB16BFF0979C3BD00467741 /* MemoryCache.h */, + ); + path = cache; + sourceTree = ""; + }; + A9D247F90D757E4100FDF959 /* Plugins */ = { + isa = PBXGroup; + children = ( + A9D248020D757E7D00FDF959 /* JSDOMMimeType.cpp */, + A9D248030D757E7D00FDF959 /* JSDOMMimeType.h */, + A9D248040D757E7D00FDF959 /* JSDOMMimeTypeArray.cpp */, + A9D248050D757E7D00FDF959 /* JSDOMMimeTypeArray.h */, + A9D247FA0D757E6900FDF959 /* JSDOMPlugin.cpp */, + A9D247FB0D757E6900FDF959 /* JSDOMPlugin.h */, + A9D247FC0D757E6900FDF959 /* JSDOMPluginArray.cpp */, + A9D247FD0D757E6900FDF959 /* JSDOMPluginArray.h */, + ); + name = Plugins; + sourceTree = ""; + }; + AA2A5AB716A485A400975A25 /* speech */ = { + isa = PBXGroup; + children = ( + AA2A5AB816A485D500975A25 /* DOMWindowSpeechSynthesis.cpp */, + AA2A5AB916A485D500975A25 /* DOMWindowSpeechSynthesis.h */, + AA2A5ABA16A485D500975A25 /* DOMWindowSpeechSynthesis.idl */, + AA2A5ABD16A485D500975A25 /* SpeechSynthesis.cpp */, + AA2A5ABE16A485D500975A25 /* SpeechSynthesis.h */, + AA2A5ABF16A485D500975A25 /* SpeechSynthesis.idl */, + AA2A5AC016A485D500975A25 /* SpeechSynthesisEvent.cpp */, + AA2A5AC116A485D500975A25 /* SpeechSynthesisEvent.h */, + AA2A5AC216A485D500975A25 /* SpeechSynthesisEvent.idl */, + AA2A5AC416A485D500975A25 /* SpeechSynthesisUtterance.cpp */, + AA2A5AC516A485D500975A25 /* SpeechSynthesisUtterance.h */, + AA2A5AC316A485D500975A25 /* SpeechSynthesisUtterance.idl */, + AA2A5AC616A485D500975A25 /* SpeechSynthesisVoice.cpp */, + AA2A5AC716A485D500975A25 /* SpeechSynthesisVoice.h */, + AA2A5AC816A485D500975A25 /* SpeechSynthesisVoice.idl */, + ); + name = speech; + sourceTree = ""; + }; + AA7EA0A917557B1C00DF4643 /* indieui */ = { + isa = PBXGroup; + children = ( + AA4739CF1757AFEC00E76767 /* UIRequestEvent.cpp */, + AA4739D01757AFEC00E76767 /* UIRequestEvent.h */, + AA7EA0AA17557B9000DF4643 /* UIRequestEvent.idl */, + ); + name = indieui; + sourceTree = ""; + }; + AA7FEE9B16A491A1004C0C33 /* Speech */ = { + isa = PBXGroup; + children = ( + AA7FEE9C16A4E6F3004C0C33 /* JSSpeechSynthesis.cpp */, + AA7FEEAC16A4E74B004C0C33 /* JSSpeechSynthesis.h */, + AA2A5AC016A485D500976A25 /* JSSpeechSynthesisEvent.cpp */, + AA2A5AC116A485D500976A25 /* JSSpeechSynthesisEvent.h */, + AA7FEE9E16A4E6F3004C0C33 /* JSSpeechSynthesisUtterance.cpp */, + AA7FEE9F16A4E6F3004C0C33 /* JSSpeechSynthesisUtterance.h */, + AA7FEEA016A4E6F3004C0C33 /* JSSpeechSynthesisVoice.cpp */, + AA7FEEA116A4E6F3004C0C33 /* JSSpeechSynthesisVoice.h */, + ); + name = Speech; + sourceTree = ""; + }; + AA93C850175D5B2000FD3CE3 /* IndieUI */ = { + isa = PBXGroup; + children = ( + AAA4FACF175D5CB300743873 /* JSUIRequestEvent.cpp */, + AAA4FACE175D5CB300743873 /* JSUIRequestEvent.h */, + ); + name = IndieUI; + sourceTree = ""; + }; + AAA728EF16D1D8BC00D3BBC6 /* ios */ = { + isa = PBXGroup; + children = ( + AAA728F016D1D8BC00D3BBC6 /* AccessibilityObjectIOS.mm */, + AAA728F316D1D8BC00D3BBC6 /* AXObjectCacheIOS.mm */, + AAA728F116D1D8BC00D3BBC6 /* WebAccessibilityObjectWrapperIOS.h */, + AAA728F216D1D8BC00D3BBC6 /* WebAccessibilityObjectWrapperIOS.mm */, + ); + path = ios; + sourceTree = ""; + }; + B1A942DD15B5CE2200D525D1 /* mediasource */ = { + isa = PBXGroup; + children = ( + B1A942DE15B5CE2200D525D1 /* MediaSource.cpp */, + B1A942DF15B5CE2200D525D1 /* MediaSource.h */, + B1A942E015B5CE2200D525D1 /* MediaSource.idl */, + B1A942E115B5CE2200D525D1 /* MediaSourceRegistry.cpp */, + B1A942E215B5CE2200D525D1 /* MediaSourceRegistry.h */, + B1A942E315B5CE2200D525D1 /* SourceBuffer.cpp */, + B1A942E415B5CE2200D525D1 /* SourceBuffer.h */, + B1A942E515B5CE2200D525D1 /* SourceBuffer.idl */, + B1A942E615B5CE2200D525D1 /* SourceBufferList.cpp */, + B1A942E715B5CE2200D525D1 /* SourceBufferList.h */, + B1A942E815B5CE2200D525D1 /* SourceBufferList.idl */, + ); + name = mediasource; + path = Modules/mediasource; + sourceTree = ""; + }; + B1AD4E7713A12A7200846B27 /* track */ = { + isa = PBXGroup; + children = ( + BE88E0CC1715D2A200658D98 /* AudioTrack.cpp */, + BE88E0CD1715D2A200658D98 /* AudioTrack.h */, + BE88E0CE1715D2A200658D98 /* AudioTrack.idl */, + BE88E0CF1715D2A200658D98 /* AudioTrackList.cpp */, + BE88E0D01715D2A200658D98 /* AudioTrackList.h */, + BE88E0D11715D2A200658D98 /* AudioTrackList.idl */, + 0794178F166E855F009416C2 /* InbandTextTrack.cpp */, + 07941790166E855F009416C2 /* InbandTextTrack.h */, + 9759E93414EF1CF80026A2DD /* LoadableTextTrack.cpp */, + 9759E94814EF1D490026A2DD /* LoadableTextTrack.h */, + 9759E93514EF1CF80026A2DD /* TextTrack.cpp */, + 9759E93614EF1CF80026A2DD /* TextTrack.h */, + 9759E93714EF1CF80026A2DD /* TextTrack.idl */, + 9759E93814EF1CF80026A2DD /* TextTrackCue.cpp */, + 9759E93914EF1CF80026A2DD /* TextTrackCue.h */, + 9759E93A14EF1CF80026A2DD /* TextTrackCue.idl */, + 071A9EC0168FB56C002629F9 /* TextTrackCueGeneric.cpp */, + 071A9EC1168FB56C002629F9 /* TextTrackCueGeneric.h */, + 9759E93B14EF1CF80026A2DD /* TextTrackCueList.cpp */, + 9759E93C14EF1CF80026A2DD /* TextTrackCueList.h */, + 9759E93D14EF1CF80026A2DD /* TextTrackCueList.idl */, + 076970841463AD8700F502CF /* TextTrackList.cpp */, + 076970851463AD8700F502CF /* TextTrackList.h */, + 07B5A3061468537100A81ECE /* TextTrackList.idl */, + 070334D8145A006F008D8D45 /* TrackBase.cpp */, + 070334D61459FFD5008D8D45 /* TrackBase.h */, + 070334D01459FFAC008D8D45 /* TrackEvent.cpp */, + 070334D11459FFAC008D8D45 /* TrackEvent.h */, + 070334D21459FFAC008D8D45 /* TrackEvent.idl */, + BE88E0BF1715CE2600658D98 /* TrackListBase.cpp */, + BE88E0C01715CE2600658D98 /* TrackListBase.h */, + BE88E0D21715D2A200658D98 /* VideoTrack.cpp */, + BE88E0D31715D2A200658D98 /* VideoTrack.h */, + BE88E0D41715D2A200658D98 /* VideoTrack.idl */, + BE88E0D51715D2A200658D98 /* VideoTrackList.cpp */, + BE88E0D61715D2A200658D98 /* VideoTrackList.h */, + BE88E0D71715D2A200658D98 /* VideoTrackList.idl */, + F12171F316A8BC63000053CA /* WebVTTElement.cpp */, + F12171F416A8BC63000053CA /* WebVTTElement.h */, + 5D21A80013ECE5DF00BB7064 /* WebVTTParser.cpp */, + 5D21A80113ECE5DF00BB7064 /* WebVTTParser.h */, + B10B697D140C174000BC1C26 /* WebVTTToken.h */, + B10B697E140C174000BC1C26 /* WebVTTTokenizer.cpp */, + B10B697F140C174000BC1C26 /* WebVTTTokenizer.h */, + ); + path = track; + sourceTree = ""; + }; + B22277CA0D00BF1E0071B782 /* svg */ = { + isa = PBXGroup; + children = ( + E46E97860DAAD61B0071E894 /* animation */, + B25598860D00D8B800BB825C /* graphics */, + 081CDFBD126ECFE800D215CA /* properties */, + B22277CB0D00BF1F0071B782 /* ColorDistance.cpp */, + B22277CC0D00BF1F0071B782 /* ColorDistance.h */, + B22277CD0D00BF1F0071B782 /* GradientAttributes.h */, + B22277CE0D00BF1F0071B782 /* LinearGradientAttributes.h */, + B22277DB0D00BF1F0071B782 /* PatternAttributes.h */, + B22277DC0D00BF1F0071B782 /* RadialGradientAttributes.h */, + B22277DD0D00BF1F0071B782 /* SVGAElement.cpp */, + B22277DE0D00BF1F0071B782 /* SVGAElement.h */, + B22277DF0D00BF1F0071B782 /* SVGAElement.idl */, + 24D912AD13CA9A1F00D21915 /* SVGAltGlyphDefElement.cpp */, + 24D912AE13CA9A1F00D21915 /* SVGAltGlyphDefElement.h */, + 24D912AF13CA9A1F00D21915 /* SVGAltGlyphDefElement.idl */, + 65653F2A0D9727D200CA9723 /* SVGAltGlyphElement.cpp */, + 65653F2B0D9727D200CA9723 /* SVGAltGlyphElement.h */, + 65653F2C0D9727D200CA9723 /* SVGAltGlyphElement.idl */, + 24D912B413CA9A6900D21915 /* SVGAltGlyphItemElement.cpp */, + 24D912B513CA9A6900D21915 /* SVGAltGlyphItemElement.h */, + 24D912B613CA9A6900D21915 /* SVGAltGlyphItemElement.idl */, + B22277E00D00BF1F0071B782 /* SVGAngle.cpp */, + B22277E10D00BF1F0071B782 /* SVGAngle.h */, + B22277E20D00BF1F0071B782 /* SVGAngle.idl */, + B22277E30D00BF1F0071B782 /* SVGAnimateColorElement.cpp */, + B22277E40D00BF1F0071B782 /* SVGAnimateColorElement.h */, + B22277E50D00BF1F0071B782 /* SVGAnimateColorElement.idl */, + 4362C7B813AC6F1A00344BEB /* SVGAnimatedAngle.cpp */, + 087B84951272CEC700A14417 /* SVGAnimatedAngle.h */, + B22277E60D00BF1F0071B782 /* SVGAnimatedAngle.idl */, + 431A308713B8F978007791E4 /* SVGAnimatedBoolean.cpp */, + 085797081278394C00A8EC5F /* SVGAnimatedBoolean.h */, + B22277E70D00BF1F0071B782 /* SVGAnimatedBoolean.idl */, + 43A625F713B3304000AC94B8 /* SVGAnimatedColor.cpp */, + 43A625F613B3304000AC94B8 /* SVGAnimatedColor.h */, + 71CC7A1F152A0BFE009EEAF9 /* SVGAnimatedEnumeration.cpp */, + 08D46CE2127AD5FC0089694B /* SVGAnimatedEnumeration.h */, + B22277E80D00BF1F0071B782 /* SVGAnimatedEnumeration.idl */, + 43F6FD9513BCD0B100224052 /* SVGAnimatedInteger.cpp */, + 0823D158127AD6AC000EBC95 /* SVGAnimatedInteger.h */, + B22277E90D00BF1F0071B782 /* SVGAnimatedInteger.idl */, + 71E623CE151F72A60036E2F4 /* SVGAnimatedIntegerOptionalInteger.cpp */, + 71E623CF151F72A60036E2F4 /* SVGAnimatedIntegerOptionalInteger.h */, + 4381763A13A697D4007D1187 /* SVGAnimatedLength.cpp */, + 089021A8126EF5DE0092D5EA /* SVGAnimatedLength.h */, + B22277EA0D00BF1F0071B782 /* SVGAnimatedLength.idl */, + 431A2FD613B7707A007791E4 /* SVGAnimatedLengthList.cpp */, + 089021AC126EF5E90092D5EA /* SVGAnimatedLengthList.h */, + B22277EB0D00BF1F0071B782 /* SVGAnimatedLengthList.idl */, + 43A0F0B013AC7D6D00A5F0A7 /* SVGAnimatedNumber.cpp */, + 08B35B12127B6A7C005314DD /* SVGAnimatedNumber.h */, + B22277EC0D00BF1F0071B782 /* SVGAnimatedNumber.idl */, + 4331AC7713B6870000A9E5AE /* SVGAnimatedNumberList.cpp */, + 08B35B16127B6A88005314DD /* SVGAnimatedNumberList.h */, + B22277ED0D00BF1F0071B782 /* SVGAnimatedNumberList.idl */, + 431A2F9B13B6F2B0007791E4 /* SVGAnimatedNumberOptionalNumber.cpp */, + 431A2F9A13B6F2B0007791E4 /* SVGAnimatedNumberOptionalNumber.h */, + 0863951313B5FE5700BB344D /* SVGAnimatedPath.cpp */, + 0863951413B5FE5700BB344D /* SVGAnimatedPath.h */, + 43B9336813B261B1004584BF /* SVGAnimatedPointList.cpp */, + 43B9336713B261B1004584BF /* SVGAnimatedPointList.h */, + 431A302013B89DCC007791E4 /* SVGAnimatedPreserveAspectRatio.cpp */, + 08FE0BC4127E2AC1000C4FB5 /* SVGAnimatedPreserveAspectRatio.h */, + B22277F40D00BF1F0071B782 /* SVGAnimatedPreserveAspectRatio.idl */, + 43142E7913B1E97700F1C871 /* SVGAnimatedRect.cpp */, + 08C859BF1274575300A5728D /* SVGAnimatedRect.h */, + B22277F50D00BF1F0071B782 /* SVGAnimatedRect.idl */, + 43A6266613B3D11000AC94B8 /* SVGAnimatedString.cpp */, + 084DB59A128008CC002A6D64 /* SVGAnimatedString.h */, + B22277F60D00BF1F0071B782 /* SVGAnimatedString.idl */, + 7157F061150B6564006EAABD /* SVGAnimatedTransformList.cpp */, + 08250938128BD4D800E2ED8E /* SVGAnimatedTransformList.h */, + B22277F80D00BF1F0071B782 /* SVGAnimatedTransformList.idl */, + 43A0F0B513ACCCFF00A5F0A7 /* SVGAnimatedType.cpp */, + 439D334013A6911C00C20F4F /* SVGAnimatedType.h */, + 836FBCE9178C113200B21A15 /* SVGAnimatedTypeAnimator.cpp */, + 439D334113A6911C00C20F4F /* SVGAnimatedTypeAnimator.h */, + B22277F90D00BF1F0071B782 /* SVGAnimateElement.cpp */, + B22277FA0D00BF1F0071B782 /* SVGAnimateElement.h */, + B22277FB0D00BF1F0071B782 /* SVGAnimateElement.idl */, + B22277FC0D00BF1F0071B782 /* SVGAnimateMotionElement.cpp */, + B22277FD0D00BF1F0071B782 /* SVGAnimateMotionElement.h */, + 44D8DA9A139545CD00337B75 /* SVGAnimateMotionElement.idl */, + B22277FE0D00BF1F0071B782 /* SVGAnimateTransformElement.cpp */, + B22277FF0D00BF1F0071B782 /* SVGAnimateTransformElement.h */, + B22278000D00BF1F0071B782 /* SVGAnimateTransformElement.idl */, + B22278010D00BF1F0071B782 /* SVGAnimationElement.cpp */, + B22278020D00BF1F0071B782 /* SVGAnimationElement.h */, + B22278030D00BF1F0071B782 /* SVGAnimationElement.idl */, + 439D334213A6911C00C20F4F /* SVGAnimatorFactory.h */, + B22278040D00BF1F0071B782 /* svgattrs.in */, + B22278050D00BF1F0071B782 /* SVGCircleElement.cpp */, + B22278060D00BF1F0071B782 /* SVGCircleElement.h */, + B22278070D00BF1F0071B782 /* SVGCircleElement.idl */, + B22278080D00BF1F0071B782 /* SVGClipPathElement.cpp */, + B22278090D00BF1F0071B782 /* SVGClipPathElement.h */, + B222780A0D00BF1F0071B782 /* SVGClipPathElement.idl */, + B222780B0D00BF1F0071B782 /* SVGColor.cpp */, + B222780C0D00BF1F0071B782 /* SVGColor.h */, + B222780D0D00BF1F0071B782 /* SVGColor.idl */, + B222780E0D00BF1F0071B782 /* SVGComponentTransferFunctionElement.cpp */, + B222780F0D00BF1F0071B782 /* SVGComponentTransferFunctionElement.h */, + B22278100D00BF1F0071B782 /* SVGComponentTransferFunctionElement.idl */, + B22278110D00BF1F0071B782 /* SVGCursorElement.cpp */, + B22278120D00BF1F0071B782 /* SVGCursorElement.h */, + B22278130D00BF1F0071B782 /* SVGCursorElement.idl */, + B22278170D00BF1F0071B782 /* SVGDefsElement.cpp */, + B22278180D00BF1F0071B782 /* SVGDefsElement.h */, + B22278190D00BF1F0071B782 /* SVGDefsElement.idl */, + B222781A0D00BF1F0071B782 /* SVGDescElement.cpp */, + B222781B0D00BF1F0071B782 /* SVGDescElement.h */, + B222781C0D00BF1F0071B782 /* SVGDescElement.idl */, + B222781D0D00BF1F0071B782 /* SVGDocument.cpp */, + B222781E0D00BF1F0071B782 /* SVGDocument.h */, + B222781F0D00BF1F0071B782 /* SVGDocument.idl */, + B28C6A1E0D00C44800334AA4 /* SVGDocumentExtensions.cpp */, + B28C6A1F0D00C44800334AA4 /* SVGDocumentExtensions.h */, + B22278200D00BF1F0071B782 /* SVGElement.cpp */, + B22278210D00BF1F0071B782 /* SVGElement.h */, + B22278220D00BF1F0071B782 /* SVGElement.idl */, + B22278230D00BF1F0071B782 /* SVGElementInstance.cpp */, + B22278240D00BF1F0071B782 /* SVGElementInstance.h */, + B22278250D00BF1F0071B782 /* SVGElementInstance.idl */, + B22278260D00BF1F0071B782 /* SVGElementInstanceList.cpp */, + B22278270D00BF1F0071B782 /* SVGElementInstanceList.h */, + B22278280D00BF1F0071B782 /* SVGElementInstanceList.idl */, + 081AA8D91111237E002AB06E /* SVGElementRareData.h */, + B22278290D00BF1F0071B782 /* SVGEllipseElement.cpp */, + B222782A0D00BF1F0071B782 /* SVGEllipseElement.h */, + B222782B0D00BF1F0071B782 /* SVGEllipseElement.idl */, + 978D07C9145A10160096908D /* SVGException.cpp */, + B222782C0D00BF1F0071B782 /* SVGException.h */, + B222782D0D00BF1F0071B782 /* SVGException.idl */, + B222782E0D00BF1F0071B782 /* SVGExternalResourcesRequired.cpp */, + B222782F0D00BF1F0071B782 /* SVGExternalResourcesRequired.h */, + B22278300D00BF1F0071B782 /* SVGExternalResourcesRequired.idl */, + B22278310D00BF1F0071B782 /* SVGFEBlendElement.cpp */, + B22278320D00BF1F0071B782 /* SVGFEBlendElement.h */, + B22278330D00BF1F0071B782 /* SVGFEBlendElement.idl */, + B22278340D00BF1F0071B782 /* SVGFEColorMatrixElement.cpp */, + B22278350D00BF1F0071B782 /* SVGFEColorMatrixElement.h */, + B22278360D00BF1F0071B782 /* SVGFEColorMatrixElement.idl */, + B22278370D00BF1F0071B782 /* SVGFEComponentTransferElement.cpp */, + B22278380D00BF1F0071B782 /* SVGFEComponentTransferElement.h */, + B22278390D00BF1F0071B782 /* SVGFEComponentTransferElement.idl */, + B222783A0D00BF1F0071B782 /* SVGFECompositeElement.cpp */, + B222783B0D00BF1F0071B782 /* SVGFECompositeElement.h */, + B222783C0D00BF1F0071B782 /* SVGFECompositeElement.idl */, + 1921327111C0E6BB00456238 /* SVGFEConvolveMatrixElement.cpp */, + 1921327211C0E6BB00456238 /* SVGFEConvolveMatrixElement.h */, + 1921327311C0E6BB00456238 /* SVGFEConvolveMatrixElement.idl */, + B222783D0D00BF1F0071B782 /* SVGFEDiffuseLightingElement.cpp */, + B222783E0D00BF1F0071B782 /* SVGFEDiffuseLightingElement.h */, + B222783F0D00BF1F0071B782 /* SVGFEDiffuseLightingElement.idl */, + B22278400D00BF1F0071B782 /* SVGFEDisplacementMapElement.cpp */, + B22278410D00BF1F0071B782 /* SVGFEDisplacementMapElement.h */, + B22278420D00BF1F0071B782 /* SVGFEDisplacementMapElement.idl */, + B22278430D00BF1F0071B782 /* SVGFEDistantLightElement.cpp */, + B22278440D00BF1F0071B782 /* SVGFEDistantLightElement.h */, + B22278450D00BF1F0071B782 /* SVGFEDistantLightElement.idl */, + 4358E8821360A33B00E4748C /* SVGFEDropShadowElement.cpp */, + 4358E8831360A33B00E4748C /* SVGFEDropShadowElement.h */, + 4358E8841360A33B00E4748C /* SVGFEDropShadowElement.idl */, + B22278460D00BF1F0071B782 /* SVGFEFloodElement.cpp */, + B22278470D00BF1F0071B782 /* SVGFEFloodElement.h */, + B22278480D00BF1F0071B782 /* SVGFEFloodElement.idl */, + B22278490D00BF1F0071B782 /* SVGFEFuncAElement.cpp */, + B222784A0D00BF1F0071B782 /* SVGFEFuncAElement.h */, + B222784B0D00BF1F0071B782 /* SVGFEFuncAElement.idl */, + B222784C0D00BF1F0071B782 /* SVGFEFuncBElement.cpp */, + B222784D0D00BF1F0071B782 /* SVGFEFuncBElement.h */, + B222784E0D00BF1F0071B782 /* SVGFEFuncBElement.idl */, + B222784F0D00BF1F0071B782 /* SVGFEFuncGElement.cpp */, + B22278500D00BF1F0071B782 /* SVGFEFuncGElement.h */, + B22278510D00BF200071B782 /* SVGFEFuncGElement.idl */, + B22278520D00BF200071B782 /* SVGFEFuncRElement.cpp */, + B22278530D00BF200071B782 /* SVGFEFuncRElement.h */, + B22278540D00BF200071B782 /* SVGFEFuncRElement.idl */, + B22278550D00BF200071B782 /* SVGFEGaussianBlurElement.cpp */, + B22278560D00BF200071B782 /* SVGFEGaussianBlurElement.h */, + B22278570D00BF200071B782 /* SVGFEGaussianBlurElement.idl */, + B22278580D00BF200071B782 /* SVGFEImageElement.cpp */, + B22278590D00BF200071B782 /* SVGFEImageElement.h */, + B222785A0D00BF200071B782 /* SVGFEImageElement.idl */, + B222785B0D00BF200071B782 /* SVGFELightElement.cpp */, + B222785C0D00BF200071B782 /* SVGFELightElement.h */, + B222785D0D00BF200071B782 /* SVGFEMergeElement.cpp */, + B222785E0D00BF200071B782 /* SVGFEMergeElement.h */, + B222785F0D00BF200071B782 /* SVGFEMergeElement.idl */, + B22278600D00BF200071B782 /* SVGFEMergeNodeElement.cpp */, + B22278610D00BF200071B782 /* SVGFEMergeNodeElement.h */, + B22278620D00BF200071B782 /* SVGFEMergeNodeElement.idl */, + 84224190107E78A700766A87 /* SVGFEMorphologyElement.cpp */, + 84224191107E78A700766A87 /* SVGFEMorphologyElement.h */, + 84224192107E78A700766A87 /* SVGFEMorphologyElement.idl */, + B22278630D00BF200071B782 /* SVGFEOffsetElement.cpp */, + B22278640D00BF200071B782 /* SVGFEOffsetElement.h */, + B22278650D00BF200071B782 /* SVGFEOffsetElement.idl */, + B22278660D00BF200071B782 /* SVGFEPointLightElement.cpp */, + B22278670D00BF200071B782 /* SVGFEPointLightElement.h */, + B22278680D00BF200071B782 /* SVGFEPointLightElement.idl */, + B22278690D00BF200071B782 /* SVGFESpecularLightingElement.cpp */, + B222786A0D00BF200071B782 /* SVGFESpecularLightingElement.h */, + B222786B0D00BF200071B782 /* SVGFESpecularLightingElement.idl */, + B222786C0D00BF200071B782 /* SVGFESpotLightElement.cpp */, + B222786D0D00BF200071B782 /* SVGFESpotLightElement.h */, + B222786E0D00BF200071B782 /* SVGFESpotLightElement.idl */, + B222786F0D00BF200071B782 /* SVGFETileElement.cpp */, + B22278700D00BF200071B782 /* SVGFETileElement.h */, + B22278710D00BF200071B782 /* SVGFETileElement.idl */, + B22278720D00BF200071B782 /* SVGFETurbulenceElement.cpp */, + B22278730D00BF200071B782 /* SVGFETurbulenceElement.h */, + B22278740D00BF200071B782 /* SVGFETurbulenceElement.idl */, + B22278750D00BF200071B782 /* SVGFilterElement.cpp */, + B22278760D00BF200071B782 /* SVGFilterElement.h */, + B22278770D00BF200071B782 /* SVGFilterElement.idl */, + B22278780D00BF200071B782 /* SVGFilterPrimitiveStandardAttributes.cpp */, + B22278790D00BF200071B782 /* SVGFilterPrimitiveStandardAttributes.h */, + B222787A0D00BF200071B782 /* SVGFilterPrimitiveStandardAttributes.idl */, + B222787B0D00BF200071B782 /* SVGFitToViewBox.cpp */, + B222787C0D00BF200071B782 /* SVGFitToViewBox.h */, + B222787D0D00BF200071B782 /* SVGFitToViewBox.idl */, + B237C8A50D344D110013F707 /* SVGFontData.cpp */, + B237C8A60D344D110013F707 /* SVGFontData.h */, + B2A1F2A10CEF0ABF00442F6A /* SVGFontElement.cpp */, + B2A1F2A20CEF0ABF00442F6A /* SVGFontElement.h */, + B2A1F2A30CEF0ABF00442F6A /* SVGFontElement.idl */, + B222787E0D00BF200071B782 /* SVGFontFaceElement.cpp */, + B222787F0D00BF200071B782 /* SVGFontFaceElement.h */, + B22278800D00BF200071B782 /* SVGFontFaceElement.idl */, + B22278810D00BF200071B782 /* SVGFontFaceFormatElement.cpp */, + B22278820D00BF200071B782 /* SVGFontFaceFormatElement.h */, + B22278830D00BF200071B782 /* SVGFontFaceFormatElement.idl */, + B22278840D00BF200071B782 /* SVGFontFaceNameElement.cpp */, + B22278850D00BF200071B782 /* SVGFontFaceNameElement.h */, + B22278860D00BF200071B782 /* SVGFontFaceNameElement.idl */, + B22278870D00BF200071B782 /* SVGFontFaceSrcElement.cpp */, + B22278880D00BF200071B782 /* SVGFontFaceSrcElement.h */, + B22278890D00BF200071B782 /* SVGFontFaceSrcElement.idl */, + B222788A0D00BF200071B782 /* SVGFontFaceUriElement.cpp */, + B222788B0D00BF200071B782 /* SVGFontFaceUriElement.h */, + B222788C0D00BF200071B782 /* SVGFontFaceUriElement.idl */, + B222788D0D00BF200071B782 /* SVGForeignObjectElement.cpp */, + B222788E0D00BF200071B782 /* SVGForeignObjectElement.h */, + B222788F0D00BF200071B782 /* SVGForeignObjectElement.idl */, + B22278900D00BF200071B782 /* SVGGElement.cpp */, + B22278910D00BF200071B782 /* SVGGElement.h */, + B22278920D00BF200071B782 /* SVGGElement.idl */, + B2A1F2A40CEF0ABF00442F6A /* SVGGlyphElement.cpp */, + B2A1F2A50CEF0ABF00442F6A /* SVGGlyphElement.h */, + B2A1F2A60CEF0ABF00442F6A /* SVGGlyphElement.idl */, + 3744570E0DB05FA500AE0992 /* SVGGlyphMap.h */, + 24D912BA13CA9A9700D21915 /* SVGGlyphRefElement.cpp */, + 24D912BB13CA9A9700D21915 /* SVGGlyphRefElement.h */, + 24D912BC13CA9A9700D21915 /* SVGGlyphRefElement.idl */, + B22278930D00BF200071B782 /* SVGGradientElement.cpp */, + B22278940D00BF200071B782 /* SVGGradientElement.h */, + B22278950D00BF200071B782 /* SVGGradientElement.idl */, + B222791F0D00BF210071B782 /* SVGGraphicsElement.cpp */, + B22279200D00BF210071B782 /* SVGGraphicsElement.h */, + 650FBF270D9AF046008FC292 /* SVGHKernElement.cpp */, + 650FBF280D9AF047008FC292 /* SVGHKernElement.h */, + 650FBF290D9AF047008FC292 /* SVGHKernElement.idl */, + B22278960D00BF200071B782 /* SVGImageElement.cpp */, + B22278970D00BF200071B782 /* SVGImageElement.h */, + B22278980D00BF200071B782 /* SVGImageElement.idl */, + B28C6A200D00C44800334AA4 /* SVGImageLoader.cpp */, + B28C6A210D00C44800334AA4 /* SVGImageLoader.h */, + B22278990D00BF200071B782 /* SVGLangSpace.cpp */, + B222789A0D00BF200071B782 /* SVGLangSpace.h */, + B222789C0D00BF200071B782 /* SVGLength.cpp */, + B222789D0D00BF200071B782 /* SVGLength.h */, + B222789E0D00BF200071B782 /* SVGLength.idl */, + 7134496B146941B300720312 /* SVGLengthContext.cpp */, + 7134496C146941B300720312 /* SVGLengthContext.h */, + B222789F0D00BF200071B782 /* SVGLengthList.cpp */, + B22278A00D00BF200071B782 /* SVGLengthList.h */, + B22278A10D00BF200071B782 /* SVGLengthList.idl */, + B22278A20D00BF200071B782 /* SVGLinearGradientElement.cpp */, + B22278A30D00BF200071B782 /* SVGLinearGradientElement.h */, + B22278A40D00BF200071B782 /* SVGLinearGradientElement.idl */, + B22278A50D00BF200071B782 /* SVGLineElement.cpp */, + B22278A60D00BF200071B782 /* SVGLineElement.h */, + B22278A70D00BF200071B782 /* SVGLineElement.idl */, + B22278AA0D00BF200071B782 /* SVGLocatable.cpp */, + B22278AB0D00BF200071B782 /* SVGLocatable.h */, + B22278AD0D00BF200071B782 /* SVGMarkerElement.cpp */, + B22278AE0D00BF200071B782 /* SVGMarkerElement.h */, + B22278AF0D00BF200071B782 /* SVGMarkerElement.idl */, + B22278B00D00BF200071B782 /* SVGMaskElement.cpp */, + B22278B10D00BF200071B782 /* SVGMaskElement.h */, + B22278B20D00BF200071B782 /* SVGMaskElement.idl */, + 0806E57912893045007CED32 /* SVGMatrix.h */, + B22278B30D00BF200071B782 /* SVGMatrix.idl */, + B22278B40D00BF200071B782 /* SVGMetadataElement.cpp */, + B22278B50D00BF200071B782 /* SVGMetadataElement.h */, + B22278B60D00BF200071B782 /* SVGMetadataElement.idl */, + B2A1F2A70CEF0ABF00442F6A /* SVGMissingGlyphElement.cpp */, + B2A1F2A80CEF0ABF00442F6A /* SVGMissingGlyphElement.h */, + B2A1F2A90CEF0ABF00442F6A /* SVGMissingGlyphElement.idl */, + B22278B70D00BF200071B782 /* SVGMPathElement.cpp */, + B22278B80D00BF200071B782 /* SVGMPathElement.h */, + 44D8DA98139545BE00337B75 /* SVGMPathElement.idl */, + B22278B90D00BF200071B782 /* SVGNumber.idl */, + B22278BA0D00BF200071B782 /* SVGNumberList.cpp */, + B22278BB0D00BF200071B782 /* SVGNumberList.h */, + B22278BC0D00BF200071B782 /* SVGNumberList.idl */, + B22278BD0D00BF200071B782 /* SVGPaint.cpp */, + B22278BE0D00BF200071B782 /* SVGPaint.h */, + B22278BF0D00BF200071B782 /* SVGPaint.idl */, + B22278C00D00BF200071B782 /* SVGParserUtilities.cpp */, + B22278C10D00BF200071B782 /* SVGParserUtilities.h */, + 2D3A0E3513A7D76100E85AF0 /* SVGParsingError.h */, + 84C6784A1214814700A92902 /* SVGPathBlender.cpp */, + 84C6784B1214814700A92902 /* SVGPathBlender.h */, + 8476C9E711DF6A2900555B02 /* SVGPathBuilder.cpp */, + 8476C9E811DF6A2900555B02 /* SVGPathBuilder.h */, + 8419D2A4120D92D000141F8F /* SVGPathByteStream.h */, + 8419D2A5120D92D000141F8F /* SVGPathByteStreamBuilder.cpp */, + 8419D2A6120D92D000141F8F /* SVGPathByteStreamBuilder.h */, + 8419D2AA120D92FC00141F8F /* SVGPathByteStreamSource.cpp */, + 8419D2AB120D92FC00141F8F /* SVGPathByteStreamSource.h */, + 8476C9E911DF6A2900555B02 /* SVGPathConsumer.h */, + B22278C20D00BF200071B782 /* SVGPathElement.cpp */, + B22278C30D00BF200071B782 /* SVGPathElement.h */, + B22278C40D00BF200071B782 /* SVGPathElement.idl */, + 8476C9ED11DF6A5800555B02 /* SVGPathParser.cpp */, + 8476C9EE11DF6A5800555B02 /* SVGPathParser.h */, + B22278C50D00BF200071B782 /* SVGPathSeg.h */, + B22278C60D00BF200071B782 /* SVGPathSeg.idl */, + B22278C80D00BF200071B782 /* SVGPathSegArc.h */, + 83C1D413178D5AB400141E68 /* SVGPathSegArcAbs.h */, + B22278C90D00BF200071B782 /* SVGPathSegArcAbs.idl */, + 83C1D414178D5AB400141E68 /* SVGPathSegArcRel.h */, + B22278CA0D00BF200071B782 /* SVGPathSegArcRel.idl */, + B22278CC0D00BF200071B782 /* SVGPathSegClosePath.h */, + B22278CD0D00BF200071B782 /* SVGPathSegClosePath.idl */, + B22278CF0D00BF200071B782 /* SVGPathSegCurvetoCubic.h */, + 83C1D415178D5AB400141E68 /* SVGPathSegCurvetoCubicAbs.h */, + B22278D00D00BF200071B782 /* SVGPathSegCurvetoCubicAbs.idl */, + 83C1D416178D5AB400141E68 /* SVGPathSegCurvetoCubicRel.h */, + B22278D10D00BF200071B782 /* SVGPathSegCurvetoCubicRel.idl */, + B22278D30D00BF200071B782 /* SVGPathSegCurvetoCubicSmooth.h */, + 83C1D417178D5AB400141E68 /* SVGPathSegCurvetoCubicSmoothAbs.h */, + B22278D40D00BF200071B782 /* SVGPathSegCurvetoCubicSmoothAbs.idl */, + 83C1D418178D5AB400141E68 /* SVGPathSegCurvetoCubicSmoothRel.h */, + B22278D50D00BF200071B782 /* SVGPathSegCurvetoCubicSmoothRel.idl */, + B22278D70D00BF200071B782 /* SVGPathSegCurvetoQuadratic.h */, + 83C1D419178D5AB400141E68 /* SVGPathSegCurvetoQuadraticAbs.h */, + B22278D80D00BF200071B782 /* SVGPathSegCurvetoQuadraticAbs.idl */, + 83C1D41A178D5AB400141E68 /* SVGPathSegCurvetoQuadraticRel.h */, + B22278D90D00BF200071B782 /* SVGPathSegCurvetoQuadraticRel.idl */, + 83C1D41B178D5AB400141E68 /* SVGPathSegCurvetoQuadraticSmoothAbs.h */, + B22278DC0D00BF200071B782 /* SVGPathSegCurvetoQuadraticSmoothAbs.idl */, + 83C1D41C178D5AB400141E68 /* SVGPathSegCurvetoQuadraticSmoothRel.h */, + B22278DD0D00BF200071B782 /* SVGPathSegCurvetoQuadraticSmoothRel.idl */, + 83C1D41D178D5AB400141E68 /* SVGPathSegLinetoAbs.h */, + B22278E00D00BF200071B782 /* SVGPathSegLinetoAbs.idl */, + B22278E20D00BF200071B782 /* SVGPathSegLinetoHorizontal.h */, + 83C1D41E178D5AB400141E68 /* SVGPathSegLinetoHorizontalAbs.h */, + B22278E30D00BF200071B782 /* SVGPathSegLinetoHorizontalAbs.idl */, + 83C1D41F178D5AB400141E68 /* SVGPathSegLinetoHorizontalRel.h */, + B22278E40D00BF200071B782 /* SVGPathSegLinetoHorizontalRel.idl */, + 83C1D420178D5AB400141E68 /* SVGPathSegLinetoRel.h */, + B22278E50D00BF200071B782 /* SVGPathSegLinetoRel.idl */, + B22278E70D00BF200071B782 /* SVGPathSegLinetoVertical.h */, + 83C1D421178D5AB400141E68 /* SVGPathSegLinetoVerticalAbs.h */, + B22278E80D00BF200071B782 /* SVGPathSegLinetoVerticalAbs.idl */, + 83C1D422178D5AB400141E68 /* SVGPathSegLinetoVerticalRel.h */, + B22278E90D00BF200071B782 /* SVGPathSegLinetoVerticalRel.idl */, + B22278EA0D00BF200071B782 /* SVGPathSegList.cpp */, + B22278EB0D00BF200071B782 /* SVGPathSegList.h */, + B22278EC0D00BF210071B782 /* SVGPathSegList.idl */, + 8476C9E311DF6A0B00555B02 /* SVGPathSegListBuilder.cpp */, + 8476C9E411DF6A0B00555B02 /* SVGPathSegListBuilder.h */, + 84B6B975120F13E500B8EFAF /* SVGPathSegListSource.cpp */, + 84B6B976120F13E500B8EFAF /* SVGPathSegListSource.h */, + 83C1D423178D5AB400141E68 /* SVGPathSegMovetoAbs.h */, + B22278EF0D00BF210071B782 /* SVGPathSegMovetoAbs.idl */, + 83C1D424178D5AB400141E68 /* SVGPathSegMovetoRel.h */, + B22278F00D00BF210071B782 /* SVGPathSegMovetoRel.idl */, + 082DE42C1292621600D923DF /* SVGPathSegWithContext.h */, + 84300BD7120C9AD40021954A /* SVGPathSource.h */, + 8419D2B7120E0C7600141F8F /* SVGPathStringBuilder.cpp */, + 8419D2B8120E0C7600141F8F /* SVGPathStringBuilder.h */, + 84300BD9120C9AED0021954A /* SVGPathStringSource.cpp */, + 84300BD5120C9AAC0021954A /* SVGPathStringSource.h */, + 84C5B2F81216DC810088B53A /* SVGPathTraversalStateBuilder.cpp */, + 84C5B2F91216DC810088B53A /* SVGPathTraversalStateBuilder.h */, + 71A57DEF154BE25C0009D120 /* SVGPathUtilities.cpp */, + 71A57DF0154BE25C0009D120 /* SVGPathUtilities.h */, + B22278F10D00BF210071B782 /* SVGPatternElement.cpp */, + B22278F20D00BF210071B782 /* SVGPatternElement.h */, + B22278F30D00BF210071B782 /* SVGPatternElement.idl */, + B22278F40D00BF210071B782 /* SVGPoint.idl */, + B22278F50D00BF210071B782 /* SVGPointList.cpp */, + B22278F60D00BF210071B782 /* SVGPointList.h */, + B22278F70D00BF210071B782 /* SVGPointList.idl */, + B22278F80D00BF210071B782 /* SVGPolyElement.cpp */, + B22278F90D00BF210071B782 /* SVGPolyElement.h */, + B22278FA0D00BF210071B782 /* SVGPolygonElement.cpp */, + B22278FB0D00BF210071B782 /* SVGPolygonElement.h */, + B22278FC0D00BF210071B782 /* SVGPolygonElement.idl */, + B22278FD0D00BF210071B782 /* SVGPolylineElement.cpp */, + B22278FE0D00BF210071B782 /* SVGPolylineElement.h */, + B22278FF0D00BF210071B782 /* SVGPolylineElement.idl */, + B22279000D00BF210071B782 /* SVGPreserveAspectRatio.cpp */, + B22279010D00BF210071B782 /* SVGPreserveAspectRatio.h */, + B22279020D00BF210071B782 /* SVGPreserveAspectRatio.idl */, + B22279030D00BF210071B782 /* SVGRadialGradientElement.cpp */, + B22279040D00BF210071B782 /* SVGRadialGradientElement.h */, + B22279050D00BF210071B782 /* SVGRadialGradientElement.idl */, + 08EDE19E12A50B8E00B95797 /* SVGRect.h */, + B22279060D00BF210071B782 /* SVGRect.idl */, + B22279070D00BF210071B782 /* SVGRectElement.cpp */, + B22279080D00BF210071B782 /* SVGRectElement.h */, + B22279090D00BF210071B782 /* SVGRectElement.idl */, + B222790A0D00BF210071B782 /* SVGRenderingIntent.h */, + B222790B0D00BF210071B782 /* SVGRenderingIntent.idl */, + B222790C0D00BF210071B782 /* SVGScriptElement.cpp */, + B222790D0D00BF210071B782 /* SVGScriptElement.h */, + B222790E0D00BF210071B782 /* SVGScriptElement.idl */, + B222790F0D00BF210071B782 /* SVGSetElement.cpp */, + B22279100D00BF210071B782 /* SVGSetElement.h */, + B22279110D00BF210071B782 /* SVGSetElement.idl */, + B22279120D00BF210071B782 /* SVGStopElement.cpp */, + B22279130D00BF210071B782 /* SVGStopElement.h */, + B22279140D00BF210071B782 /* SVGStopElement.idl */, + B22279150D00BF210071B782 /* SVGStringList.cpp */, + B22279160D00BF210071B782 /* SVGStringList.h */, + B22279170D00BF210071B782 /* SVGStringList.idl */, + B22279210D00BF210071B783 /* SVGStyledElement.cpp */, + B22279220D00BF210071B783 /* SVGStyledElement.h */, + B22279230D00BF210071B783 /* SVGStyledElement.idl */, + B22279210D00BF210071B782 /* SVGStyleElement.cpp */, + B22279220D00BF210071B782 /* SVGStyleElement.h */, + B22279230D00BF210071B782 /* SVGStyleElement.idl */, + B22279240D00BF210071B782 /* SVGSVGElement.cpp */, + B22279250D00BF210071B782 /* SVGSVGElement.h */, + B22279260D00BF210071B782 /* SVGSVGElement.idl */, + B22279270D00BF210071B782 /* SVGSwitchElement.cpp */, + B22279280D00BF210071B782 /* SVGSwitchElement.h */, + B22279290D00BF210071B782 /* SVGSwitchElement.idl */, + B222792A0D00BF210071B782 /* SVGSymbolElement.cpp */, + B222792B0D00BF210071B782 /* SVGSymbolElement.h */, + B222792C0D00BF210071B782 /* SVGSymbolElement.idl */, + B222792D0D00BF210071B782 /* svgtags.in */, + B222792E0D00BF210071B782 /* SVGTests.cpp */, + B222792F0D00BF210071B782 /* SVGTests.h */, + B22279300D00BF210071B782 /* SVGTests.idl */, + B22279310D00BF210071B782 /* SVGTextContentElement.cpp */, + B22279320D00BF210071B782 /* SVGTextContentElement.h */, + B22279330D00BF210071B782 /* SVGTextContentElement.idl */, + B22279340D00BF210071B782 /* SVGTextElement.cpp */, + B22279350D00BF210071B782 /* SVGTextElement.h */, + B22279360D00BF210071B782 /* SVGTextElement.idl */, + B22279370D00BF210071B782 /* SVGTextPathElement.cpp */, + B22279380D00BF210071B782 /* SVGTextPathElement.h */, + B22279390D00BF210071B782 /* SVGTextPathElement.idl */, + B222793A0D00BF210071B782 /* SVGTextPositioningElement.cpp */, + B222793B0D00BF210071B782 /* SVGTextPositioningElement.h */, + B222793C0D00BF210071B782 /* SVGTextPositioningElement.idl */, + B222793D0D00BF210071B782 /* SVGTitleElement.cpp */, + B222793E0D00BF210071B782 /* SVGTitleElement.h */, + B222793F0D00BF210071B782 /* SVGTitleElement.idl */, + B22279400D00BF210071B782 /* SVGTransform.cpp */, + B22279410D00BF210071B782 /* SVGTransform.h */, + B22279420D00BF210071B782 /* SVGTransform.idl */, + B22279430D00BF210071B782 /* SVGTransformable.cpp */, + B22279440D00BF210071B782 /* SVGTransformable.h */, + B22279460D00BF210071B782 /* SVGTransformDistance.cpp */, + B22279470D00BF210071B782 /* SVGTransformDistance.h */, + B22279480D00BF210071B782 /* SVGTransformList.cpp */, + B22279490D00BF210071B782 /* SVGTransformList.h */, + B222794A0D00BF210071B782 /* SVGTransformList.idl */, + B222794B0D00BF210071B782 /* SVGTRefElement.cpp */, + B222794C0D00BF210071B782 /* SVGTRefElement.h */, + B222794D0D00BF210071B782 /* SVGTRefElement.idl */, + B222794E0D00BF210071B782 /* SVGTSpanElement.cpp */, + B222794F0D00BF210071B782 /* SVGTSpanElement.h */, + B22279500D00BF210071B782 /* SVGTSpanElement.idl */, + B22279510D00BF210071B782 /* SVGUnitTypes.h */, + B22279520D00BF210071B782 /* SVGUnitTypes.idl */, + B22279530D00BF210071B782 /* SVGURIReference.cpp */, + B22279540D00BF210071B782 /* SVGURIReference.h */, + B22279550D00BF210071B782 /* SVGURIReference.idl */, + B22279560D00BF210071B782 /* SVGUseElement.cpp */, + B22279570D00BF210071B782 /* SVGUseElement.h */, + B22279580D00BF210071B782 /* SVGUseElement.idl */, + B22279590D00BF210071B782 /* SVGViewElement.cpp */, + B222795A0D00BF210071B782 /* SVGViewElement.h */, + B222795B0D00BF210071B782 /* SVGViewElement.idl */, + B222795C0D00BF210071B782 /* SVGViewSpec.cpp */, + B222795D0D00BF210071B782 /* SVGViewSpec.h */, + B222795E0D00BF210071B782 /* SVGViewSpec.idl */, + 848522871190173C006EDC7F /* SVGVKernElement.cpp */, + 848522881190173C006EDC7F /* SVGVKernElement.h */, + 848522891190173C006EDC7F /* SVGVKernElement.idl */, + B222795F0D00BF210071B782 /* SVGZoomAndPan.cpp */, + B22279600D00BF210071B782 /* SVGZoomAndPan.h */, + B22279610D00BF210071B782 /* SVGZoomAndPan.idl */, + B2E4EC940D00C22B00432643 /* SVGZoomEvent.cpp */, + B2E4EC950D00C22B00432643 /* SVGZoomEvent.h */, + B2E4EC960D00C22B00432643 /* SVGZoomEvent.idl */, + B28C6A260D00C44800334AA4 /* xlinkattrs.in */, + ); + path = svg; + sourceTree = ""; + }; + B25598860D00D8B800BB825C /* graphics */ = { + isa = PBXGroup; + children = ( + B255989C0D00D8B800BB825C /* filters */, + B255990B0D00D8B900BB825C /* SVGImage.cpp */, + B255990C0D00D8B900BB825C /* SVGImage.h */, + 08F859D21463F9CD0067D933 /* SVGImageCache.cpp */, + 08F859D31463F9CD0067D933 /* SVGImageCache.h */, + AAC08CED15F933D600F1E188 /* SVGImageChromeClient.h */, + 08F859D21463F9CD0067D934 /* SVGImageForContainer.cpp */, + 08F859D31463F9CD0067D934 /* SVGImageForContainer.h */, + ); + path = graphics; + sourceTree = ""; + }; + B255989C0D00D8B800BB825C /* filters */ = { + isa = PBXGroup; + children = ( + B25598EA0D00D8B900BB825C /* SVGFEImage.cpp */, + B25598EB0D00D8B900BB825C /* SVGFEImage.h */, + 845E72F90FD2623900A87D79 /* SVGFilter.cpp */, + 845E72FA0FD2623900A87D79 /* SVGFilter.h */, + 081EBF380FD34F4100DA7559 /* SVGFilterBuilder.cpp */, + 081EBF390FD34F4100DA7559 /* SVGFilterBuilder.h */, + ); + path = filters; + sourceTree = ""; + }; + B27535290B053814002CE64F /* cg */ = { + isa = PBXGroup; + children = ( + 377A3A8F15EFCE9A0059F5C7 /* BitmapImageCG.cpp */, + 0FCF33230F2B9715004B6795 /* ColorCG.cpp */, + B275352B0B053814002CE64F /* FloatPointCG.cpp */, + B275352C0B053814002CE64F /* FloatRectCG.cpp */, + B275352D0B053814002CE64F /* FloatSizeCG.cpp */, + BC53C60A0DA56CF10021EB5D /* GradientCG.cpp */, + 6E21C6C11126339900A7BE02 /* GraphicsContext3DCG.cpp */, + B2ED97700B1F55CE00257D0F /* GraphicsContextCG.cpp */, + 934907E3125BBBC8007F23A0 /* GraphicsContextCG.h */, + A80D67070E9E9DEB00E420F0 /* GraphicsContextPlatformPrivateCG.h */, + B2A10B930B3818D700099AA4 /* ImageBufferCG.cpp */, + 2292B27B1356669400CF11EF /* ImageBufferDataCG.cpp */, + 22BD9F80135364FE009BD102 /* ImageBufferDataCG.h */, + B27535300B053814002CE64F /* ImageCG.cpp */, + B27535310B053814002CE64F /* ImageSourceCG.cpp */, + 4B3480920EEF50D400AC1B41 /* ImageSourceCG.h */, + 4B3480910EEF50D400AC1B41 /* ImageSourceCGMac.mm */, + B27535320B053814002CE64F /* IntPointCG.cpp */, + B27535330B053814002CE64F /* IntRectCG.cpp */, + B27535340B053814002CE64F /* IntSizeCG.cpp */, + B27535350B053814002CE64F /* PathCG.cpp */, + A80A38FD0E50CC8200A25EBC /* PatternCG.cpp */, + B27535360B053814002CE64F /* PDFDocumentImage.cpp */, + B27535370B053814002CE64F /* PDFDocumentImage.h */, + 1FC40FB81655C5910040F29E /* SubimageCacheWithTimer.cpp */, + 1FC40FB71655C5910040F29E /* SubimageCacheWithTimer.h */, + B275352A0B053814002CE64F /* TransformationMatrixCG.cpp */, + ); + path = cg; + sourceTree = ""; + }; + B27535490B053814002CE64F /* mac */ = { + isa = PBXGroup; + children = ( + EDE3A4FF0C7A430600956A37 /* ColorMac.h */, + B275354A0B053814002CE64F /* ColorMac.mm */, + 37C2360E1097EE7700EF9F72 /* ComplexTextController.cpp */, + 37C2360F1097EE7700EF9F72 /* ComplexTextController.h */, + 37C238201098C84200EF9F72 /* ComplexTextControllerCoreText.mm */, + 49AF2D6B14435D210016A784 /* DisplayRefreshMonitorMac.cpp */, + B275354B0B053814002CE64F /* FloatPointMac.mm */, + B275354C0B053814002CE64F /* FloatRectMac.mm */, + B275354D0B053814002CE64F /* FloatSizeMac.mm */, + B2AFFC740D00A5C10030074D /* FontCacheMac.mm */, + 37C2360A1097EDED00EF9F72 /* FontComplexTextMac.cpp */, + B2AFFC750D00A5C10030074D /* FontCustomPlatformData.cpp */, + B2AFFC760D00A5C10030074D /* FontCustomPlatformData.h */, + B2AFFC780D00A5C10030074D /* FontMac.mm */, + B2AFFC7B0D00A5C10030074D /* GlyphPageTreeNodeMac.cpp */, + 49FFBF1C11C8550E006A7118 /* GraphicsContext3DMac.mm */, + B277B4030B22F37C0004BEC6 /* GraphicsContextMac.mm */, + B275358D0B053A66002CE64F /* IconMac.mm */, + B275354E0B053814002CE64F /* ImageMac.mm */, + B275354F0B053814002CE64F /* IntPointMac.mm */, + B27535500B053814002CE64F /* IntRectMac.mm */, + B27535510B053814002CE64F /* IntSizeMac.mm */, + E4B41E100CBF90EF00AF2ECE /* MediaPlayerPrivateQTKit.h */, + E4B41E110CBF90EF00AF2ECE /* MediaPlayerPrivateQTKit.mm */, + 0735EE690F40C5E4004A2604 /* MediaPlayerProxy.h */, + 163E88F5118A39D200ED9231 /* SimpleFontDataCoreText.cpp */, + B2AFFC770D00A5C10030074D /* SimpleFontDataMac.mm */, + 49FFBF3D11C93EE3006A7118 /* WebGLLayer.h */, + 49FFBF3E11C93EE3006A7118 /* WebGLLayer.mm */, + 0FCF332B0F2B9A25004B6795 /* WebLayer.h */, + 0FCF332A0F2B9A25004B6795 /* WebLayer.mm */, + 0FCF33290F2B9A25004B6795 /* WebTiledLayer.h */, + 0FCF33280F2B9A25004B6795 /* WebTiledLayer.mm */, + ); + path = mac; + sourceTree = ""; + }; + B2A015910AF6CD53006BCE0E /* graphics */ = { + isa = PBXGroup; + children = ( + 076F0D0812B8192700C26AA4 /* avfoundation */, + 499B3EC0128CCC1800E726C2 /* ca */, + B27535290B053814002CE64F /* cg */, + B5320D68122A24E9002D1440 /* cocoa */, + 9332AB3B16515D7700D827EC /* cpu */, + A75E8B7F0E1DE2B0007F2481 /* filters */, + 498770C11242C50D002226BA /* gpu */, + B27535490B053814002CE64F /* mac */, + FBC220DD1237FBEB00BCF788 /* opengl */, + F4EAF4AB10C74268009100D3 /* opentype */, + 49E911B20EF86D27009D0CAF /* transforms */, + 490707E41219C04300D90E51 /* ANGLEWebKitBridge.cpp */, + 490707E51219C04300D90E51 /* ANGLEWebKitBridge.h */, + BEF29EE91715DD0900C4B4C9 /* AudioTrackPrivate.h */, + A89943270B42338700D7C802 /* BitmapImage.cpp */, + A89943260B42338700D7C802 /* BitmapImage.h */, + B27535380B053814002CE64F /* Color.cpp */, + B27535390B053814002CE64F /* Color.h */, + 9382DF5710A8D5C900925652 /* ColorSpace.h */, + 2D2FC0541460CD6F00263633 /* CrossfadeGeneratedImage.cpp */, + 2D2FC0551460CD6F00263633 /* CrossfadeGeneratedImage.h */, + A8CB41020E85B8A50032C4F0 /* DashArray.h */, + 49FC7A4F1444AF5F00A5D864 /* DisplayRefreshMonitor.cpp */, + 49AF2D6814435D050016A784 /* DisplayRefreshMonitor.h */, + 6E67D2A81280E8BD008758F7 /* Extensions3D.h */, + B275353A0B053814002CE64F /* FloatPoint.cpp */, + B275353B0B053814002CE64F /* FloatPoint.h */, + B2E27C9D0B0F2B0900F17C7B /* FloatPoint3D.cpp */, + B2E27C9E0B0F2B0900F17C7B /* FloatPoint3D.h */, + 6EC4809F16EA638A00A48DCB /* FloatPolygon.cpp */, + 6EC480A016EA638A00A48DCB /* FloatPolygon.h */, + 0FD723810EC8BD9300CA5DD7 /* FloatQuad.cpp */, + 0FD723800EC8BD9300CA5DD7 /* FloatQuad.h */, + B275353C0B053814002CE64F /* FloatRect.cpp */, + B275353D0B053814002CE64F /* FloatRect.h */, + B275353E0B053814002CE64F /* FloatSize.cpp */, + B275353F0B053814002CE64F /* FloatSize.h */, + B2C3DA4F0D006CD600EF6F26 /* Font.cpp */, + B2C3DA500D006CD600EF6F26 /* Font.h */, + BCB92D4E1293550B00C8387F /* FontBaseline.h */, + B2C3DA510D006CD600EF6F26 /* FontCache.cpp */, + B2C3DA520D006CD600EF6F26 /* FontCache.h */, + 371F4F3F0D25B9AF00ECE0D5 /* FontData.cpp */, + 371F4F3E0D25B9AF00ECE0D5 /* FontData.h */, + 37ACCE620DA2AA960089E602 /* FontDescription.cpp */, + B2C3DA550D006CD600EF6F26 /* FontDescription.h */, + 72626E010EF022FE00A07E20 /* FontFastPath.cpp */, + 4A6E9FC513C17D570046A7F8 /* FontFeatureSettings.cpp */, + 4A6E9FC613C17D570046A7F8 /* FontFeatureSettings.h */, + E44EE3A617576E5500EEE8CF /* FontGenericFamilies.cpp */, + E44EE3A717576E5500EEE8CF /* FontGenericFamilies.h */, + B2C3DA560D006CD600EF6F26 /* FontGlyphs.cpp */, + B2C3DA570D006CD600EF6F26 /* FontGlyphs.h */, + 0845680712B90DA600960A9F /* FontMetrics.h */, + F7A034C3126BF6BE007DC19E /* FontOrientation.h */, + 84B62684133138F90095A489 /* FontPlatformData.cpp */, + B5320D69122A24E9002D1440 /* FontPlatformData.h */, + 37ACCE410DA2980F0089E602 /* FontRenderingMode.h */, + B2C3DA5A0D006CD600EF6F26 /* FontSelector.h */, + 37202198106213C600F25C4B /* FontSmoothingMode.h */, + 3784C34A0E11AA34007D8D48 /* FontTraitsMask.h */, + BCE4413512F7490B009B84B8 /* FontWidthVariant.h */, + 4FB390AC15EF61F3007AD51F /* GeneratedImage.cpp */, + BC23F0DA0DAFF4A4009FDC91 /* GeneratedImage.h */, + 2D2FC0561460CD6F00263633 /* GeneratorGeneratedImage.cpp */, + 2D2FC0571460CD6F00263633 /* GeneratorGeneratedImage.h */, + 086BBD0E136039C2008B15D8 /* Glyph.h */, + B2C3DA5B0D006CD600EF6F26 /* GlyphBuffer.h */, + C5D4AA78116BAFB60069CA93 /* GlyphMetricsMap.h */, + 0873B86A136064EA00A522C2 /* GlyphPage.h */, + B2C3DA5C0D006CD600EF6F26 /* GlyphPageTreeNode.cpp */, + B2C3DA5D0D006CD600EF6F26 /* GlyphPageTreeNode.h */, + BC53C6070DA56C570021EB5D /* Gradient.cpp */, + BC53C5F40DA56B920021EB5D /* Gradient.h */, + B2A015920AF6CD53006BCE0E /* GraphicsContext.cpp */, + B2A015930AF6CD53006BCE0E /* GraphicsContext.h */, + 6E21C6BF1126338500A7BE02 /* GraphicsContext3D.cpp */, + 49C7B9FB1042D3650009D447 /* GraphicsContext3D.h */, + 0F580B090F12A2690051D689 /* GraphicsLayer.cpp */, + 0F580B0A0F12A2690051D689 /* GraphicsLayer.h */, + 0F580B0B0F12A2690051D689 /* GraphicsLayerClient.h */, + 1AC69592161A1E53003732CB /* GraphicsLayerFactory.h */, + 0FA24D77162DF91900A3F4C0 /* GraphicsLayerUpdater.cpp */, + 0FA24D78162DF91900A3F4C0 /* GraphicsLayerUpdater.h */, + B2A015940AF6CD53006BCE0E /* GraphicsTypes.cpp */, + B2A015950AF6CD53006BCE0E /* GraphicsTypes.h */, + 77A17A7A12F2890B004E02F6 /* GraphicsTypes3D.h */, + B27535400B053814002CE64F /* Icon.h */, + B27535410B053814002CE64F /* Image.cpp */, + B27535420B053814002CE64F /* Image.h */, + 43D2597613C816F400608559 /* ImageBuffer.cpp */, + B2A10B910B3818BD00099AA4 /* ImageBuffer.h */, + 22BD9F7D1353625C009BD102 /* ImageBufferData.h */, + BC7F44A70B9E324E00A9D081 /* ImageObserver.h */, + A8748D7412CC3F89001FBA41 /* ImageOrientation.cpp */, + A8748D6612CC3763001FBA41 /* ImageOrientation.h */, + 49291E4A134172C800E753DE /* ImageRenderingMode.h */, + B27535430B053814002CE64F /* ImageSource.h */, + 07941793166EA04E009416C2 /* InbandTextTrackPrivate.h */, + 07CE77D416712A6A00C55A47 /* InbandTextTrackPrivateClient.h */, + B27535440B053814002CE64F /* IntPoint.h */, + E462A4A0113E71BE004A4220 /* IntPointHash.h */, + B27535450B053814002CE64F /* IntRect.cpp */, + B27535460B053814002CE64F /* IntRect.h */, + A2B9217216C5CC420041DCD9 /* IntRectExtent.h */, + E134F5AA12EE343F004EC58D /* IntRectHash.h */, + B27535470B053814002CE64F /* IntSize.h */, + B27535480B053814002CE64F /* IntSizeHash.h */, + 65CC6BED16014EC0000ED27D /* Latin1TextIterator.h */, + 141DC049164834B900371E5A /* LayoutBoxExtent.cpp */, + 141DC04A164834B900371E5A /* LayoutBoxExtent.h */, + 141DC04B164834B900371E5A /* LayoutPoint.h */, + 141DC04C164834B900371E5A /* LayoutRect.cpp */, + 141DC04D164834B900371E5A /* LayoutRect.h */, + 141DC04E164834B900371E5A /* LayoutSize.h */, + E4B41E0C0CBF90BD00AF2ECE /* MediaPlayer.cpp */, + E4B41E0D0CBF90BD00AF2ECE /* MediaPlayer.h */, + 079F5E4B0F3BEBEA005E0782 /* MediaPlayerPrivate.h */, + 6B3480920EEF50D400AC1B41 /* NativeImagePtr.h */, + B27535520B053814002CE64F /* Path.cpp */, + B27535530B053814002CE64F /* Path.h */, + A88DD4880B4629B000C02990 /* PathTraversalState.cpp */, + A88DD4860B4629A300C02990 /* PathTraversalState.h */, + A8FA6E5C0E4CFDED00D5CF49 /* Pattern.cpp */, + A8FA6E5B0E4CFDED00D5CF49 /* Pattern.h */, + 0562F9601573F88F0031CA16 /* PlatformLayer.h */, + 072847E216EBC5B00043CFA4 /* PlatformTextTrack.h */, + 072847E316EBC5B00043CFA4 /* PlatformTextTrackMenu.h */, + BCAB417F13E356E800D8AAF3 /* Region.cpp */, + BCAB418013E356E800D8AAF3 /* Region.h */, + A73F95FC12C97BFE0031AAF9 /* RoundedRect.cpp */, + A73F95FD12C97BFE0031AAF9 /* RoundedRect.h */, + 371F4FFB0D25E7F300ECE0D5 /* SegmentedFontData.cpp */, + 371F4FFA0D25E7F300ECE0D5 /* SegmentedFontData.h */, + 0F3DD44D12F5EA1B000D9190 /* ShadowBlur.cpp */, + 0F3DD44E12F5EA1B000D9190 /* ShadowBlur.h */, + B2C3DA530D006CD600EF6F26 /* SimpleFontData.cpp */, + B2C3DA540D006CD600EF6F26 /* SimpleFontData.h */, + B23540F00D00782E002382FA /* StringTruncator.cpp */, + B23540F10D00782E002382FA /* StringTruncator.h */, + 087558C313B4A57D00F49307 /* SurrogatePairAwareTextIterator.cpp */, + 087558C413B4A57D00F49307 /* SurrogatePairAwareTextIterator.h */, + 087E0AF413606D0B00FA4BA8 /* SVGGlyph.cpp */, + 087E0AF513606D0B00FA4BA8 /* SVGGlyph.h */, + 930FC6891072B9280045293E /* TextRenderingMode.h */, + 376DCCE013B4F966002EBEFC /* TextRun.cpp */, + A824B4640E2EF2EA0081A7B7 /* TextRun.h */, + CD1E7346167BC78E009A885D /* TextTrackRepresentation.cpp */, + CDD1E525167BA56400CE820B /* TextTrackRepresentation.h */, + 1AF89A411518FDEA00E547B5 /* TiledBacking.h */, + 37C28A6710F659CC008C7813 /* TypesettingFeatures.h */, + E4AFCFA40DAF29A300F5F55C /* UnitBezier.h */, + BEF29EEA1715DD0900C4B4C9 /* VideoTrackPrivate.h */, + 1411DCB0164C39A800D49BC1 /* WidthCache.h */, + 939B02EC0EA2DBC400C54570 /* WidthIterator.cpp */, + 939B02ED0EA2DBC400C54570 /* WidthIterator.h */, + 501BAAA813950E2C00F7ACEB /* WindRule.h */, + 379919941200DDF400EA041C /* WOFFFileFormat.cpp */, + 379919951200DDF400EA041C /* WOFFFileFormat.h */, + ); + path = graphics; + sourceTree = ""; + }; + B2B264590D00A77E000ACC1D /* cf */ = { + isa = PBXGroup; + children = ( + 1AA2124F163F0DA80000E63F /* AtomicStringCF.cpp */, + 371A67CA11C6C7DB00047B8B /* HyphenationCF.cpp */, + B2B2645A0D00A77E000ACC1D /* StringCF.cpp */, + B2B2645B0D00A77E000ACC1D /* StringImplCF.cpp */, + ); + path = cf; + sourceTree = ""; + }; + B2C3D9EC0D006C1D00EF6F26 /* text */ = { + isa = PBXGroup; + children = ( + B2B264590D00A77E000ACC1D /* cf */, + B2C3D9F90D006C1D00EF6F26 /* mac */, + B734B17F119B98DB006587BD /* transcoder */, + 37C61F0012095C87007A3C67 /* AtomicStringKeyedMRUCache.h */, + B2C3D9F20D006C1D00EF6F26 /* BidiContext.cpp */, + B2C3D9F30D006C1D00EF6F26 /* BidiContext.h */, + B2C3D9F40D006C1D00EF6F26 /* BidiResolver.h */, + A8C402921348B2220063F1E5 /* BidiRunList.h */, + 453EB635159C570400001BB7 /* DateTimeFormat.h */, + CECCFC3A141973D5002A0AC1 /* DecodeEscapeSequences.h */, + 375CD231119D43C800A2A859 /* Hyphenation.h */, + A5ABB78613B904BC00F197E3 /* LineBreakIteratorPoolICU.h */, + 89B5EA9F11E8003D00F2367E /* LineEnding.cpp */, + 89B5EAA011E8003D00F2367E /* LineEnding.h */, + 7633A72413D8B33A008501B6 /* LocaleToScriptMapping.h */, + 7633A72513D8B33A008501B6 /* LocaleToScriptMappingDefault.cpp */, + BCD3F9821326C93700098A60 /* NonCJKGlyphOrientation.h */, + BC76AC110DD7AD5C00415F34 /* ParserUtilities.h */, + F544F78615CFB2A800AF33A8 /* PlatformLocale.cpp */, + F544F78715CFB2A800AF33A8 /* PlatformLocale.h */, + 379E371413736A6600B9E919 /* QuotedPrintable.cpp */, + 379E371513736A6600B9E919 /* QuotedPrintable.h */, + B2C3D9FC0D006C1D00EF6F26 /* RegularExpression.cpp */, + B2C3D9FD0D006C1D00EF6F26 /* RegularExpression.h */, + B2C3D9FE0D006C1D00EF6F26 /* SegmentedString.cpp */, + B2C3D9FF0D006C1D00EF6F26 /* SegmentedString.h */, + 9B6C41521344949000085B62 /* StringWithDirection.h */, + 97C0784F1165D5BE003A32EF /* SuffixTree.h */, + 372C00C3129611F1005C9575 /* TextBoundaries.cpp */, + B2C3DA040D006C1D00EF6F26 /* TextBoundaries.h */, + BCD8A5EF15F56F2C0098D071 /* TextBreakIterator.cpp */, + B2C3DA060D006C1D00EF6F26 /* TextBreakIterator.h */, + B2C3DA070D006C1D00EF6F26 /* TextBreakIteratorICU.cpp */, + B2C3DA080D006C1D00EF6F26 /* TextBreakIteratorInternalICU.h */, + A7151BD712F1558F005A0F64 /* TextCheckerClient.h */, + A77D0011133B0AEB00D6658C /* TextChecking.h */, + B2C3DA090D006C1D00EF6F26 /* TextCodec.cpp */, + B2C3DA0A0D006C1D00EF6F26 /* TextCodec.h */, + 26E98A0F130A9FCA008EB7B2 /* TextCodecASCIIFastPath.h */, + B2C3DA0B0D006C1D00EF6F26 /* TextCodecICU.cpp */, + B2C3DA0C0D006C1D00EF6F26 /* TextCodecICU.h */, + B2C3DA0D0D006C1D00EF6F26 /* TextCodecLatin1.cpp */, + B2C3DA0E0D006C1D00EF6F26 /* TextCodecLatin1.h */, + B2C3DA0F0D006C1D00EF6F26 /* TextCodecUserDefined.cpp */, + B2C3DA100D006C1D00EF6F26 /* TextCodecUserDefined.h */, + B2C3DA110D006C1D00EF6F26 /* TextCodecUTF16.cpp */, + B2C3DA120D006C1D00EF6F26 /* TextCodecUTF16.h */, + 9343CB7F12F25E510033C5EE /* TextCodecUTF8.cpp */, + 9343CB8012F25E510033C5EE /* TextCodecUTF8.h */, + B2C3DA150D006C1D00EF6F26 /* TextDirection.h */, + B2C3DA160D006C1D00EF6F26 /* TextEncoding.cpp */, + B2C3DA170D006C1D00EF6F26 /* TextEncoding.h */, + C105DA630F3AA6B8001DD44F /* TextEncodingDetector.h */, + C105DA610F3AA68F001DD44F /* TextEncodingDetectorICU.cpp */, + B2C3DA180D006C1D00EF6F26 /* TextEncodingRegistry.cpp */, + B2C3DA190D006C1D00EF6F26 /* TextEncodingRegistry.h */, + B2C3DA1A0D006C1D00EF6F26 /* TextStream.cpp */, + B2C3DA1B0D006C1D00EF6F26 /* TextStream.h */, + A863E2001343412000274926 /* UnicodeBidi.h */, + B2C3DA1C0D006C1D00EF6F26 /* UnicodeRange.cpp */, + B2C3DA1D0D006C1D00EF6F26 /* UnicodeRange.h */, + 14476AA715DC4BB100305DB2 /* WritingMode.h */, + ); + path = text; + sourceTree = ""; + }; + B2C3D9F90D006C1D00EF6F26 /* mac */ = { + isa = PBXGroup; + children = ( + B2AFFC850D00A5DF0030074D /* character-sets.txt */, + B2C3D9FA0D006C1D00EF6F26 /* CharsetData.h */, + 375CD239119D44EA00A2A859 /* HyphenationMac.mm */, + F5973DDE15CFB2030027F804 /* LocaleMac.h */, + F5973DDF15CFB2030027F804 /* LocaleMac.mm */, + B2AFFC860D00A5DF0030074D /* mac-encodings.txt */, + B2AFFC870D00A5DF0030074D /* make-charset-table.pl */, + B2AFFC8A0D00A5DF0030074D /* StringImplMac.mm */, + B2AFFC8B0D00A5DF0030074D /* StringMac.mm */, + B2AFFC8C0D00A5DF0030074D /* TextBoundaries.mm */, + B2AFFC8D0D00A5DF0030074D /* TextBreakIteratorInternalICUMac.mm */, + B2AFFC8E0D00A5DF0030074D /* TextCodecMac.cpp */, + B2AFFC8F0D00A5DF0030074D /* TextCodecMac.h */, + ); + path = mac; + sourceTree = ""; + }; + B2F34FE70E82F81700F627CD /* cf */ = { + isa = PBXGroup; + children = ( + 7EE6844D12D26E3800E79415 /* AuthenticationCF.h */, + 7EE6844E12D26E3800E79415 /* AuthenticationChallenge.h */, + 7EE6845012D26E3800E79415 /* CookieStorageCFNet.cpp */, + 7EE6845212D26E3800E79415 /* CredentialStorageCFNet.cpp */, + B2F34FE80E82F82700F627CD /* DNSCFNet.cpp */, + 7EE6845312D26E3800E79415 /* FormDataStreamCFNet.cpp */, + 7EE6845412D26E3800E79415 /* FormDataStreamCFNet.h */, + 7EE6845512D26E3800E79415 /* LoaderRunLoopCF.cpp */, + 7EE6845612D26E3800E79415 /* LoaderRunLoopCF.h */, + E13EF34716850C470034C83F /* NetworkStorageSessionCFNet.cpp */, + 1AF8E1C1125673E000230FF7 /* ProxyServerCFNet.cpp */, + 7EE6845712D26E3800E79415 /* ResourceError.h */, + 7EE6845812D26E3800E79415 /* ResourceErrorCF.cpp */, + 7EE6845912D26E3800E79415 /* ResourceHandleCFNet.cpp */, + 7EE6845A12D26E3800E79415 /* ResourceRequest.h */, + 7EE6845B12D26E3800E79415 /* ResourceRequestCFNet.cpp */, + 7EE6845C12D26E3800E79415 /* ResourceRequestCFNet.h */, + 7EE6845D12D26E3800E79415 /* ResourceResponse.h */, + 7EE6845E12D26E3800E79415 /* ResourceResponseCFNet.cpp */, + 51ABAE1A103C18FF008C5260 /* SocketStreamError.h */, + 51ABAE1C103C1913008C5260 /* SocketStreamHandle.h */, + 51ABAE1D103C1913008C5260 /* SocketStreamHandleCFNet.cpp */, + ); + path = cf; + sourceTree = ""; + }; + B5320D68122A24E9002D1440 /* cocoa */ = { + isa = PBXGroup; + children = ( + B5320D6A122A24E9002D1440 /* FontPlatformDataCocoa.mm */, + ); + path = cocoa; + sourceTree = ""; + }; + B5D31DF711CF60E5009F22B4 /* generic */ = { + isa = PBXGroup; + children = ( + B5D31DF811CF610B009F22B4 /* ActiveDOMCallback.cpp */, + B5D31DF911CF610B009F22B4 /* ActiveDOMCallback.h */, + 973AA3F715D0891B00E38A85 /* BindingSecurity.cpp */, + 973AA3F815D0891B00E38A85 /* BindingSecurity.h */, + A622A8F9122C44A600A785B3 /* GenericBinding.h */, + ); + name = generic; + sourceTree = ""; + }; + B734B17F119B98DB006587BD /* transcoder */ = { + isa = PBXGroup; + children = ( + B734B180119B9911006587BD /* FontTranscoder.cpp */, + B734B182119B991D006587BD /* FontTranscoder.h */, + ); + name = transcoder; + sourceTree = ""; + }; + BC1A3790097C6F970019F3D8 /* bindings */ = { + isa = PBXGroup; + children = ( + B5D31DF711CF60E5009F22B4 /* generic */, + BC1A3793097C6FB10019F3D8 /* js */, + BC1A3794097C6FC40019F3D8 /* objc */, + 93F8B3050A300FE100F61AB8 /* CodeGenerator.pm */, + 93F8B3070A300FEA00F61AB8 /* generate-bindings.pl */, + 7C6136F61710C35200FF4A57 /* Hasher.pm */, + A83B533814F399BB00720D9D /* IDLAttributes.txt */, + 14813BF309EDF88E00F757E1 /* IDLParser.pm */, + 7C6136F71710C35200FF4A57 /* InFilesCompiler.pm */, + 7C6136F81710C35200FF4A57 /* InFilesParser.pm */, + A83B538014FBB2EC00720D9D /* preprocess-idls.pl */, + C0F2A43F13869A280066C534 /* preprocessor.pm */, + 8C6EA61711EF7E0400FD8EE3 /* RuntimeEnabledFeatures.cpp */, + 8C6EA61811EF7E0400FD8EE3 /* RuntimeEnabledFeatures.h */, + 97EF7DFD107E55B700D7C49C /* ScriptControllerBase.cpp */, + CE02F0C311E83ADD00C6684A /* ScriptControllerBase.h */, + 7C6136F91710C35200FF4A57 /* StaticString.pm */, + ); + path = bindings; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + BC1A3793097C6FB10019F3D8 /* js */ = { + isa = PBXGroup; + children = ( + BCCE58A71061E82F008FB35A /* Callback Objects */, + BCCE58B41061E925008FB35A /* Constructors */, + BC4EDEF70C08F414007EDD49 /* Custom */, + 14DFB33F0A7DF7630018F769 /* Derived Sources */, + 49B3760A15C6C6840059131D /* ArrayValue.cpp */, + 49B3760B15C6C6840059131D /* ArrayValue.h */, + 973AA3F215D088F000E38A85 /* BindingState.cpp */, + 973AA3F315D088F000E38A85 /* BindingState.h */, + BCD533630ED6848900887468 /* CachedScriptSourceProvider.h */, + 93F8B3060A300FEA00F61AB8 /* CodeGeneratorJS.pm */, + 312D67B01535691F00563D0D /* Dictionary.cpp */, + 316023EF1532C40C00D50FF4 /* Dictionary.h */, + BC53DA61114314BD000D817E /* DOMObjectHashTableMap.cpp */, + BC53DA5F1143141A000D817E /* DOMObjectHashTableMap.h */, + BC53DA471143134D000D817E /* DOMWrapperWorld.cpp */, + BC53DA2D1143121E000D817E /* DOMWrapperWorld.h */, + 1432E8480C51493F00B1500F /* GCController.cpp */, + 1432E8460C51493800B1500F /* GCController.h */, + C585A66011D4FAC5004C3E4B /* IDBBindingUtilities.cpp */, + C585A66111D4FAC5004C3E4B /* IDBBindingUtilities.h */, + 1C81BA030E97348300266E07 /* JavaScriptCallFrame.cpp */, + 1C81BA040E97348300266E07 /* JavaScriptCallFrame.h */, + BCE438A1140C0DBF005E437E /* JSDictionary.cpp */, + BCE4389B140B1BA7005E437E /* JSDictionary.h */, + 93B70D4709EB0C7C009D8468 /* JSDOMBinding.cpp */, + 93B70D4809EB0C7C009D8468 /* JSDOMBinding.h */, + E1C36CBC0EB08062007410BC /* JSDOMGlobalObject.cpp */, + E1C36C020EB076D6007410BC /* JSDOMGlobalObject.h */, + BC6932710D7E293900AE44D1 /* JSDOMWindowBase.cpp */, + BC6932720D7E293900AE44D1 /* JSDOMWindowBase.h */, + BCBFB53A0DCD29CF0019B3E5 /* JSDOMWindowShell.cpp */, + BCBFB53B0DCD29CF0019B3E5 /* JSDOMWindowShell.h */, + 65E0E9431133C89F00B4CB10 /* JSDOMWrapper.h */, + F3D461461161D53200CA0D09 /* JSErrorHandler.cpp */, + F3D461471161D53200CA0D09 /* JSErrorHandler.h */, + BC60901E0E91B8EC000C68B5 /* JSEventTargetCustom.cpp */, + 3314ACE910892086000F0E56 /* JSExceptionBase.cpp */, + 3314ACEA10892086000F0E56 /* JSExceptionBase.h */, + 8F934D841189F1EE00508D5D /* JSMainThreadExecState.cpp */, + 8F934D831189F1EE00508D5D /* JSMainThreadExecState.h */, + C6F420A016B7164E0052A9F2 /* JSMutationCallback.cpp */, + C6F420A116B7164E0052A9F2 /* JSMutationCallback.h */, + 93B70D4F09EB0C7C009D8468 /* JSPluginElementFunctions.cpp */, + 93B70D5009EB0C7C009D8468 /* JSPluginElementFunctions.h */, + 14CD8D81106B529000A46D23 /* JSSharedWorkerCustom.cpp */, + E1C36D320EB0A094007410BC /* JSWorkerGlobalScopeBase.cpp */, + E1C36D330EB0A094007410BC /* JSWorkerGlobalScopeBase.h */, + F34742E21343633C00531BC2 /* PageScriptDebugServer.cpp */, + F34742E31343633C00531BC2 /* PageScriptDebugServer.h */, + BCA378BA0D15F64200B793D6 /* ScheduledAction.cpp */, + BCA378BB0D15F64200B793D6 /* ScheduledAction.h */, + 41F1D21E0EF35C2A00DA8753 /* ScriptCachedFrameData.cpp */, + 41F1D21D0EF35C2A00DA8753 /* ScriptCachedFrameData.h */, + F392249A126F11AE00A926D9 /* ScriptCallStackFactory.cpp */, + F392249B126F11AE00A926D9 /* ScriptCallStackFactory.h */, + 93B70D5309EB0C7C009D8468 /* ScriptController.cpp */, + 93B70D5409EB0C7C009D8468 /* ScriptController.h */, + A83E1C720E49042B00140B9C /* ScriptControllerMac.mm */, + 9F6FC1941122E82A00E80196 /* ScriptDebugServer.cpp */, + 9F6FC1951122E82A00E80196 /* ScriptDebugServer.h */, + 411046400FA222A600BA436A /* ScriptEventListener.cpp */, + 4110463F0FA222A600BA436A /* ScriptEventListener.h */, + 41002CCC0F66EDEF009E660D /* ScriptFunctionCall.cpp */, + 41002CCB0F66EDEF009E660D /* ScriptFunctionCall.h */, + 4FD8D0F0119C718B002FA825 /* ScriptGCEvent.cpp */, + 4FD8D0F1119C718B002FA825 /* ScriptGCEvent.h */, + 9F3B947D12241758005304E7 /* ScriptHeapSnapshot.h */, + 41F066E30F64BCF600A07EAC /* ScriptObject.cpp */, + 41F066E20F64BCF600A07EAC /* ScriptObject.h */, + F33F0281120947F200E5743A /* ScriptProfile.cpp */, + 9F72304C11184B4100AD0126 /* ScriptProfile.h */, + 9FA37EE31172FC8000C4CD55 /* ScriptProfileNode.h */, + 9F72304D11184B4100AD0126 /* ScriptProfiler.cpp */, + 9F72304E11184B4100AD0126 /* ScriptProfiler.h */, + 934CC1090EDB223900A658F2 /* ScriptSourceCode.h */, + 4127D5360F8AAB1D00E424F5 /* ScriptState.cpp */, + 41C760B00EDE03D300C1655F /* ScriptState.h */, + 934CC0DF0ED39D6F00A658F2 /* ScriptValue.cpp */, + 934CC0E00ED39D6F00A658F2 /* ScriptValue.h */, + 228C284410D82500009D0D0E /* ScriptWrappable.h */, + 1400D7A717136EA70077CE05 /* ScriptWrappableInlines.h */, + A75E497510752ACB00C9B896 /* SerializedScriptValue.cpp */, + A75E497410752ACB00C9B896 /* SerializedScriptValue.h */, + BC53D910114310CC000D817E /* WebCoreJSClientData.h */, + E1A643FC0EC097A000779668 /* WorkerScriptController.cpp */, + E1A643F10EC0972500779668 /* WorkerScriptController.h */, + F34742E61343635000531BC2 /* WorkerScriptDebugServer.cpp */, + F34742E71343635000531BC2 /* WorkerScriptDebugServer.h */, + ); + path = js; + sourceTree = ""; + }; + BC1A3794097C6FC40019F3D8 /* objc */ = { + isa = PBXGroup; + children = ( + 854F12AC0A8EBC18000940B5 /* Core */, + 85B232260A8BF3A100FDF47B /* Derived Sources */, + 854075420AD6C73E00620C57 /* DOMExceptions */, + BCD0FBCE0DBD624100B2F630 /* Views */, + 859B7FB90A8D288800A5F1EA /* CodeGeneratorObjC.pm */, + BC1A3797097C715F0019F3D8 /* DOM.h */, + BC1A3798097C715F0019F3D8 /* DOM.mm */, + BC1A3799097C715F0019F3D8 /* DOMCore.h */, + BC1A379A097C715F0019F3D8 /* DOMCSS.h */, + BC1A379B097C715F0019F3D8 /* DOMCSS.mm */, + E10B9CCA0B747A44003ED890 /* DOMCustomXPathNSResolver.h */, + E10B9CCB0B747A44003ED890 /* DOMCustomXPathNSResolver.mm */, + BC1A379C097C715F0019F3D8 /* DOMEvents.h */, + BC1A379D097C715F0019F3D8 /* DOMEvents.mm */, + BC1A379F097C715F0019F3D8 /* DOMExtensions.h */, + BC1A37A0097C715F0019F3D8 /* DOMHTML.h */, + BC1A37A1097C715F0019F3D8 /* DOMHTML.mm */, + BC1A37A3097C715F0019F3D8 /* DOMInternal.h */, + BC1A37A4097C715F0019F3D8 /* DOMInternal.mm */, + BC1A37A5097C715F0019F3D8 /* DOMPrivate.h */, + 8538F0840AD72CB6006A81D1 /* DOMRanges.h */, + BC1A37A7097C715F0019F3D8 /* DOMStylesheets.h */, + BC1A37A8097C715F0019F3D8 /* DOMTraversal.h */, + BC1A37A9097C715F0019F3D8 /* DOMUtility.mm */, + BC1A37AA097C715F0019F3D8 /* DOMViews.h */, + 1A1D137E0A5325520064BF5F /* DOMXPath.h */, + 1A1D137F0A5325520064BF5F /* DOMXPath.mm */, + 148AFDA30AF58360008CC700 /* ExceptionHandlers.h */, + 148AFDA40AF58360008CC700 /* ExceptionHandlers.mm */, + 1CF6BDF80E9BB26A0025E1CD /* ObjCEventListener.h */, + 1CF6BDF90E9BB26A0025E1CD /* ObjCEventListener.mm */, + 1CF6BE130E9BB4670025E1CD /* ObjCNodeFilterCondition.h */, + 1CF6BE120E9BB4670025E1CD /* ObjCNodeFilterCondition.mm */, + 1CD0B6200AABDB5000D0A3FF /* PublicDOMInterfaces.h */, + 1CAF347E0A6C405200ABE06E /* WebScriptObject.h */, + 1CAF347F0A6C405200ABE06E /* WebScriptObject.mm */, + 1CAF34800A6C405200ABE06E /* WebScriptObjectPrivate.h */, + ); + path = objc; + sourceTree = ""; + }; + BC4EDEF70C08F414007EDD49 /* Custom */ = { + isa = PBXGroup; + children = ( + BC275CB211C5E85C00C9206C /* JSArrayBufferCustom.cpp */, + 86243D0011BC31F700CC006A /* JSArrayBufferViewHelper.h */, + BC2ED6BB0C6BD2F000920BFF /* JSAttrCustom.cpp */, + CDDE691D171DF89100A44D89 /* JSAudioBufferCustom.cpp */, + FDEAAAEF12B02EE400DCF33B /* JSAudioBufferSourceNodeCustom.cpp */, + FDEAAAF012B02EE400DCF33B /* JSAudioContextCustom.cpp */, + BE6DF70E171CA2DA00DD52B8 /* JSAudioTrackCustom.cpp */, + BE6DF710171CA2DA00DD52B8 /* JSAudioTrackListCustom.cpp */, + FD8AA63B1695148E00D2EA68 /* JSBiquadFilterNodeCustom.cpp */, + 8931DE5A14C44C44000DC9D2 /* JSBlobCustom.cpp */, + 49EED14B1051971900099FAB /* JSCanvasRenderingContext2DCustom.cpp */, + 49EED14D1051971A00099FAB /* JSCanvasRenderingContextCustom.cpp */, + 93BA59B10F2AA5FE008E8E99 /* JSCDATASectionCustom.cpp */, + BCA83E510D7CE205003421A8 /* JSClipboardCustom.cpp */, + C0DFC86F0DB6841A003EAE7C /* JSConsoleCustom.cpp */, + 209B456A16796A7E00E54E4E /* JSCryptoCustom.cpp */, + E1AD14901297337400ACA989 /* JSCSSFontFaceRuleCustom.cpp */, + E1AD147B1297307E00ACA989 /* JSCSSImportRuleCustom.cpp */, + E1AD14A21297345300ACA989 /* JSCSSMediaRuleCustom.cpp */, + E1AD14CC129735A400ACA989 /* JSCSSPageRuleCustom.cpp */, + BC46C1ED0C0DDBDF0020CFC3 /* JSCSSRuleCustom.cpp */, + AD726FE916D9F40A003A4E6D /* JSCSSRuleCustom.h */, + 9392262E10321084006E7D5D /* JSCSSRuleListCustom.cpp */, + BC5825F20C0B89380053F1B5 /* JSCSSStyleDeclarationCustom.cpp */, + AD726FEA16D9F40B003A4E6D /* JSCSSStyleDeclarationCustom.h */, + E1AD14E71297377400ACA989 /* JSCSSStyleRuleCustom.cpp */, + BC20FB7E0C0E8E6C00D1447F /* JSCSSValueCustom.cpp */, + 2E97CCF61293A43A00C5C8FF /* JSDataViewCustom.cpp */, + 4162A453101145E300DFF3ED /* JSDedicatedWorkerGlobalScopeCustom.cpp */, + 31FB1A6B120A5D6900DC02A0 /* JSDeviceMotionEventCustom.cpp */, + 590E1B4A11E4EF700069F784 /* JSDeviceOrientationEventCustom.cpp */, + 49C7BA8C1042F5B10009D447 /* JSDocumentCustom.cpp */, + 2E0888E5114884E200AF4265 /* JSDOMFormDataCustom.cpp */, + 22885E631301AE4C00526E68 /* JSDOMImplementationCustom.cpp */, + A9C6E6460D7465CA006442E9 /* JSDOMMimeTypeArrayCustom.cpp */, + A9C6E64A0D7465E7006442E9 /* JSDOMPluginArrayCustom.cpp */, + A9C6E64B0D7465E7006442E9 /* JSDOMPluginCustom.cpp */, + 9A1B6F96158869C80011A8C4 /* JSDOMStringListCustom.cpp */, + BC64649B11D8238C006455B0 /* JSDOMStringMapCustom.cpp */, + 14E0BC55136148A8002AD12E /* JSDOMTokenListCustom.cpp */, + BCD9C25E0C17AA67005C90A2 /* JSDOMWindowCustom.cpp */, + 652FBBBB0DE27CB60001D386 /* JSDOMWindowCustom.h */, + BC2ED5540C6B9BD300920BFF /* JSElementCustom.cpp */, + BCEFAF4D0C317E6900FA81F6 /* JSEventCustom.cpp */, + 2E7582ED12764F260062628B /* JSFileReaderCustom.cpp */, + FE80D7A60E9C1ED2000D6F75 /* JSGeolocationCustom.cpp */, + BCE7B1920D4E86960075A539 /* JSHistoryCustom.cpp */, + BC97E42B10915B060010D361 /* JSHTMLAllCollectionCustom.cpp */, + BC4EDEF30C08F3FB007EDD49 /* JSHTMLAppletElementCustom.cpp */, + 9392262C1032107B006E7D5D /* JSHTMLCanvasElementCustom.cpp */, + BCCBAD3A0C18BFF800CE890F /* JSHTMLCollectionCustom.cpp */, + BC51580A0C03D404008BB0EE /* JSHTMLDocumentCustom.cpp */, + BC5823F40C0A98DF0053F1B5 /* JSHTMLElementCustom.cpp */, + BC6D44BD0C07EFB60072D2C9 /* JSHTMLEmbedElementCustom.cpp */, + 9B1AB07B1648C7C40051F3F2 /* JSHTMLFormControlsCollectionCustom.cpp */, + A8D065AD0A2446CD005E7203 /* JSHTMLFormElementCustom.cpp */, + BC2ED7A40C6C0F3600920BFF /* JSHTMLFrameElementCustom.cpp */, + BCD41ABA0C060DE800C0E446 /* JSHTMLFrameSetElementCustom.cpp */, + BCC438770E886CC700533DD5 /* JSHTMLInputElementCustom.cpp */, + E1AD14221295EA7F00ACA989 /* JSHTMLInputElementCustom.h */, + E1AD139A1295D92600ACA989 /* JSHTMLLinkElementCustom.cpp */, + CDF65CCC145B6AFE00C4C7AA /* JSHTMLMediaElementCustom.cpp */, + BC305CA30C0781BB00CD20F0 /* JSHTMLObjectElementCustom.cpp */, + 448AD27A0A4813790023D179 /* JSHTMLOptionsCollectionCustom.cpp */, + BC17F9650B64EBB8004A65CB /* JSHTMLSelectElementCustom.cpp */, + AB4CB4EA0B8BDA3D009F40B0 /* JSHTMLSelectElementCustom.h */, + E1AD139D1295D96100ACA989 /* JSHTMLStyleElementCustom.cpp */, + D6F7960C166FFECE0076DD18 /* JSHTMLTemplateElementCustom.cpp */, + A7D0318D0E93540300E24ACD /* JSImageDataCustom.cpp */, + 7A0E76D410BF050700A0276E /* JSInjectedScriptHostCustom.cpp */, + F316396D1329487600A649CB /* JSInjectedScriptManager.cpp */, + 7A74ECBC101839DA00BF939E /* JSInspectorFrontendHostCustom.cpp */, + 1C5FAEE60DCFDA6800D58F78 /* JSJavaScriptCallFrameCustom.cpp */, + BCE1C43F0D9830F4003B02F2 /* JSLocationCustom.cpp */, + AD726FE716D9F204003A4E6D /* JSMediaListCustom.h */, + E1A5F99A0E7EAA2500AF85EA /* JSMessageChannelCustom.cpp */, + 410B7E711045FAB000D8224F /* JSMessageEventCustom.cpp */, + E1ADED460E76B8DD004A1A5E /* JSMessagePortCustom.cpp */, + 41F584C6104652CB009CAA64 /* JSMessagePortCustom.h */, + 1059457215B42953004D37FD /* JSMicroDataItemValueCustom.cpp */, + C6F0917E143A2BB900685849 /* JSMutationObserverCustom.cpp */, + BCD9C25F0C17AA67005C90A2 /* JSNamedNodeMapCustom.cpp */, + BCD9C2600C17AA67005C90A2 /* JSNodeCustom.cpp */, + BC9439C2116CF4940048C750 /* JSNodeCustom.h */, + BCB773600C17853D00132BA4 /* JSNodeFilterCustom.cpp */, + 1A750DD30A90E729000FF215 /* JSNodeIteratorCustom.cpp */, + BCD9C2610C17AA67005C90A2 /* JSNodeListCustom.cpp */, + FDBD1DFB167FE27D0051A11E /* JSOscillatorNodeCustom.cpp */, + FD8AA63D169514A700D2EA68 /* JSPannerNodeCustom.cpp */, + A85F22081430377D007CC884 /* JSPopStateEventCustom.cpp */, + E1AD12D51295D0BD00ACA989 /* JSProcessingInstructionCustom.cpp */, + 4998AED313FC417F0090B1AA /* JSRequestAnimationFrameCallbackCustom.cpp */, + 51DCE8010CAC9F1C00488358 /* JSSQLResultSetRowListCustom.cpp */, + 1AD2316D0CD269E700C1F194 /* JSSQLTransactionCustom.cpp */, + B55D5AA71191325000BCC315 /* JSSQLTransactionSyncCustom.cpp */, + 51D0C5150DAA90B7003B3831 /* JSStorageCustom.cpp */, + BC98A27C0C0C9950004BEBF7 /* JSStyleSheetCustom.cpp */, + AD726FEC16D9F4B9003A4E6D /* JSStyleSheetCustom.h */, + A84EBD770CB8C89200079609 /* JSStyleSheetListCustom.cpp */, + 08A48A6D0E86CF6D00E225DD /* JSSVGElementInstanceCustom.cpp */, + 08E4FE450E2BD41400F4CAE0 /* JSSVGLengthCustom.cpp */, + B2C96D8C0B3AF2B7005E80EC /* JSSVGPathSegCustom.cpp */, + 1A2C40AA0DEB55AA005AF19E /* JSTextCustom.cpp */, + 07E117061489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp */, + 07E116B01489C9A100EC5ACE /* JSTextTrackCustom.cpp */, + 07B5A30C14687D7100A81ECE /* JSTextTrackListCustom.cpp */, + 070334E8145A1F35008D8D45 /* JSTrackCustom.cpp */, + 07846384145B1B8E00A58DF1 /* JSTrackCustom.h */, + 07B5A30A14687B8400A81ECE /* JSTrackEventCustom.cpp */, + 516BB7920CE91E6800512F79 /* JSTreeWalkerCustom.cpp */, + BE6DF708171CA2C500DD52B8 /* JSVideoTrackCustom.cpp */, + BE6DF70A171CA2C500DD52B8 /* JSVideoTrackListCustom.cpp */, + 49EED14C1051971A00099FAB /* JSWebGLRenderingContextCustom.cpp */, + E1AD14C41297354900ACA989 /* JSWebKitCSSKeyframeRuleCustom.cpp */, + E1AD14B4129734CA00ACA989 /* JSWebKitCSSKeyframesRuleCustom.cpp */, + BC275B7811C5D1C300C9206C /* JSWebKitPointCustom.cpp */, + E1CA5CBB0E8CDCAF00E8EF90 /* JSWorkerCustom.cpp */, + E18258AB0EF3CD7000933242 /* JSWorkerGlobalScopeCustom.cpp */, + BC348BBD0DB7F531004ABAB9 /* JSXMLHttpRequestCustom.cpp */, + BCDFD4910E3056BD009D10AD /* JSXMLHttpRequestUploadCustom.cpp */, + A1C7FAA1133A5D3500D6732D /* JSXPathResultCustom.cpp */, + BCEFE1E40DCA5F3300739219 /* JSXSLTProcessorCustom.cpp */, + ); + name = Custom; + sourceTree = ""; + }; + BC8C8FAA0DDCD2F200B592F4 /* style */ = { + isa = PBXGroup; + children = ( + FBD6AF8215EF21A3008B7110 /* BasicShapes.cpp */, + FBD6AF8315EF21A3008B7110 /* BasicShapes.h */, + BC5EB5E00E81BE8700B25965 /* BorderData.h */, + BC5EB5DA0E81B7EA00B25965 /* BorderValue.h */, + FB92DF4915FED08700994433 /* ClipPathOperation.h */, + BC5EB5DE0E81B9AB00B25965 /* CollapsedBorderValue.h */, + BC5EB97E0E82072500B25965 /* ContentData.cpp */, + BC5EB97F0E82072500B25965 /* ContentData.h */, + BC5EB9780E82069200B25965 /* CounterContent.h */, + BC5EB94E0E82056B00B25965 /* CounterDirectives.cpp */, + BC5EB94F0E82056B00B25965 /* CounterDirectives.h */, + BC2272A10E82E87C00E7F975 /* CursorData.h */, + BC2272AC0E82E8F300E7F975 /* CursorList.h */, + BC22746E0E83664500E7F975 /* DataRef.h */, + BC5EB69C0E81DAEB00B25965 /* FillLayer.cpp */, + BC5EB69D0E81DAEB00B25965 /* FillLayer.h */, + A12705C21656BD6500C2E27C /* GridPosition.h */, + A12A104E166444DC008FA311 /* GridTrackSize.h */, + BC5EBA0E0E823E4700B25965 /* KeyframeList.cpp */, + BC5EBA0F0E823E4700B25965 /* KeyframeList.h */, + AB31C91D10AE1B8E000C7B92 /* LineClampValue.h */, + BCEF43DF0E674110001C1287 /* NinePieceImage.cpp */, + BCEF43DC0E674012001C1287 /* NinePieceImage.h */, + BC5EB5DC0E81B8DD00B25965 /* OutlineValue.h */, + 5A574F26131DB96D00471B88 /* QuotesData.cpp */, + 5A574F27131DB96D00471B88 /* QuotesData.h */, + BC8C8FAB0DDCD31B00B592F4 /* RenderStyle.cpp */, + BC8C8FAC0DDCD31B00B592F4 /* RenderStyle.h */, + BC5EB6670E81CB7100B25965 /* RenderStyleConstants.h */, + BC5EB8C10E82031B00B25965 /* ShadowData.cpp */, + BC5EB8C20E82031B00B25965 /* ShadowData.h */, + FD1AF14E1656F12100C6D4F7 /* ShapeValue.h */, + BC5EB6A00E81DC4F00B25965 /* StyleBackgroundData.cpp */, + BC5EB6A10E81DC4F00B25965 /* StyleBackgroundData.h */, + BC5EB67C0E81D42000B25965 /* StyleBoxData.cpp */, + BC5EB67A0E81D3BE00B25965 /* StyleBoxData.h */, + BCEF44790E6747D0001C1287 /* StyleCachedImage.cpp */, + BCEF444C0E674628001C1287 /* StyleCachedImage.h */, + 9393E602151A9A1800066F06 /* StyleCachedImageSet.cpp */, + 9393E603151A9A1800066F06 /* StyleCachedImageSet.h */, + 5038BE2D1472AD230095E0D1 /* StyleCachedShader.cpp */, + 5038BE2E1472AD230095E0D1 /* StyleCachedShader.h */, + 50E18CD516F9285800C65486 /* StyleCustomFilterProgram.cpp */, + 503D0CAD14B5B0BA00F32F57 /* StyleCustomFilterProgram.h */, + 50E18CD616F9285800C65486 /* StyleCustomFilterProgramCache.cpp */, + 50E18CD716F9285800C65486 /* StyleCustomFilterProgramCache.h */, + BC5EB67E0E81D4A700B25965 /* StyleDashboardRegion.h */, + BC5EB8B60E8201BD00B25965 /* StyleDeprecatedFlexibleBoxData.cpp */, + BC5EB8B70E8201BD00B25965 /* StyleDeprecatedFlexibleBoxData.h */, + 319AE061142D6B24006563A1 /* StyleFilterData.cpp */, + 319AE062142D6B24006563A1 /* StyleFilterData.h */, + 5317612013C516690026E454 /* StyleFlexibleBoxData.cpp */, + 5317612113C516690026E454 /* StyleFlexibleBoxData.h */, + BCEF447C0E674806001C1287 /* StyleGeneratedImage.cpp */, + BCEF44490E6745E0001C1287 /* StyleGeneratedImage.h */, + A10DC76814747BAB005E2471 /* StyleGridData.cpp */, + A10DC76914747BAB005E2471 /* StyleGridData.h */, + A110DB9C14F5DF8700A03B93 /* StyleGridItemData.cpp */, + A110DB9A14F5DF7700A03B93 /* StyleGridItemData.h */, + BCEF43CE0E673DA1001C1287 /* StyleImage.h */, + BC2273010E82F1E600E7F975 /* StyleInheritedData.cpp */, + BC2273020E82F1E600E7F975 /* StyleInheritedData.h */, + BC5EB7270E81DE8100B25965 /* StyleMarqueeData.cpp */, + BC5EB7280E81DE8100B25965 /* StyleMarqueeData.h */, + BC5EB74B0E81E06700B25965 /* StyleMultiColData.cpp */, + BC5EB74C0E81E06700B25965 /* StyleMultiColData.h */, + BC2272E10E82EE9B00E7F975 /* StyleRareInheritedData.cpp */, + BC2272E20E82EE9B00E7F975 /* StyleRareInheritedData.h */, + BC2272BA0E82EAAE00E7F975 /* StyleRareNonInheritedData.cpp */, + BC2272BB0E82EAAE00E7F975 /* StyleRareNonInheritedData.h */, + BC2272860E82E70700E7F975 /* StyleReflection.h */, + 3138A9E41474434600B0ED12 /* StyleShader.h */, + BC5EB5E60E81BFEF00B25965 /* StyleSurroundData.cpp */, + BC5EB5E40E81BF6D00B25965 /* StyleSurroundData.h */, + BC5EB80D0E81F2CE00B25965 /* StyleTransformData.cpp */, + BC5EB80E0E81F2CE00B25965 /* StyleTransformData.h */, + BC5EB6980E81DA6300B25966 /* StyleVariableData.h */, + BC5EB6970E81DA6300B25965 /* StyleVisualData.cpp */, + BC5EB6980E81DA6300B25965 /* StyleVisualData.h */, + BC2274740E8366E200E7F975 /* SVGRenderStyle.cpp */, + BC2274750E8366E200E7F975 /* SVGRenderStyle.h */, + BC2274760E8366E200E7F975 /* SVGRenderStyleDefs.cpp */, + BC2274770E8366E200E7F975 /* SVGRenderStyleDefs.h */, + ); + name = style; + sourceTree = ""; + }; + BC9854430CD3D9D000069BC1 /* Window */ = { + isa = PBXGroup; + children = ( + BC124EFD0C26447A009E2349 /* JSBarProp.cpp */, + BC124EFE0C26447A009E2349 /* JSBarProp.h */, + BC98543B0CD3D98B00069BC1 /* JSConsole.cpp */, + BC98543C0CD3D98B00069BC1 /* JSConsole.h */, + 975CA29F1303679D00E99AD9 /* JSCrypto.cpp */, + 975CA2A01303679D00E99AD9 /* JSCrypto.h */, + BC5A86B30C3367E800EEA649 /* JSDOMSelection.cpp */, + BC5A86B40C3367E800EEA649 /* JSDOMSelection.h */, + 1403BA0B09EB18C700797C7F /* JSDOMWindow.cpp */, + 1403BA0E09EB18F800797C7F /* JSDOMWindow.h */, + E0FEF371B47C53EAC1C1FBEE /* JSEventSource.cpp */, + E0FEF371B37C53EAC1C1FBEE /* JSEventSource.h */, + BC94D14C0C275C68006BC617 /* JSHistory.cpp */, + BC94D14D0C275C68006BC617 /* JSHistory.h */, + BCE1C4390D9830D3003B02F2 /* JSLocation.cpp */, + BCE1C43A0D9830D3003B02F2 /* JSLocation.h */, + A9D247F50D757E3300FDF959 /* JSNavigator.cpp */, + A9D247F60D757E3300FDF959 /* JSNavigator.h */, + E51A81DE17298D7700BFCA61 /* JSPerformance.cpp */, + 8A9A587311E84C81008ACFD1 /* JSPerformance.h */, + 8A9A586E11E84C35008ACFD1 /* JSPerformanceNavigation.cpp */, + 8A9A586F11E84C36008ACFD1 /* JSPerformanceNavigation.h */, + 8A9A587711E84C98008ACFD1 /* JSPerformanceTiming.h */, + BCEC01C00C274DDD009F4EC9 /* JSScreen.cpp */, + BCEC01C10C274DDD009F4EC9 /* JSScreen.h */, + 494BD79B0F55C94C00747828 /* JSWebKitPoint.cpp */, + 494BD79C0F55C94C00747828 /* JSWebKitPoint.h */, + ); + name = Window; + sourceTree = ""; + }; + BC9854460CD3DA5F00069BC1 /* Ranges */ = { + isa = PBXGroup; + children = ( + 65DF31ED09D1CC60000BE325 /* JSRange.cpp */, + 65DF31EE09D1CC60000BE325 /* JSRange.h */, + D23CA55E0AB0EAB6005108A5 /* JSRangeException.cpp */, + D23CA55C0AB0EAAE005108A5 /* JSRangeException.h */, + ); + name = Ranges; + sourceTree = ""; + }; + BC9854530CD3DA8F00069BC1 /* Traversal */ = { + isa = PBXGroup; + children = ( + 14115B7009F84CD600CA4FC1 /* JSNodeFilter.cpp */, + 14115B7109F84CD600CA4FC1 /* JSNodeFilter.h */, + 1A750D8B0A90E521000FF215 /* JSNodeIterator.cpp */, + 1A750D8C0A90E521000FF215 /* JSNodeIterator.h */, + 1A750D5A0A90DEE1000FF215 /* JSTreeWalker.cpp */, + 1A750D5B0A90DEE1000FF215 /* JSTreeWalker.h */, + ); + name = Traversal; + sourceTree = ""; + }; + BCB16BFB0979C38700467741 /* loader */ = { + isa = PBXGroup; + children = ( + 1A8F6BB00DB55CDC001DB794 /* appcache */, + 512DD8E80D91E691000F89EE /* archive */, + A8D2B2521287A56000AF4DDA /* cache */, + 7EE6847312D26E5500E79415 /* cf */, + 5126E6B60A2E3AEF005C29FA /* icon */, + 93A1EAA20A5634D8006960A0 /* mac */, + E1424C91164B52C800F32D40 /* CookieJar.cpp */, + E1424C92164B52C800F32D40 /* CookieJar.h */, + E1C416160F6563180092D2FB /* CrossOriginAccessControl.cpp */, + E1C416110F6562FD0092D2FB /* CrossOriginAccessControl.h */, + E1C415DD0F655D7C0092D2FB /* CrossOriginPreflightResultCache.cpp */, + E1C415D90F655D6F0092D2FB /* CrossOriginPreflightResultCache.h */, + 93E227DB0AF589AD00D48324 /* DocumentLoader.cpp */, + 656D371E0ADBA5DE00A4554D /* DocumentLoader.h */, + 861C2EA313FB4FDD00062ABB /* DocumentLoadTiming.cpp */, + 8A12E35C11FA33280025836A /* DocumentLoadTiming.h */, + 0B9056150F2578BE0095FF6A /* DocumentThreadableLoader.cpp */, + 0B9056160F2578BE0095FF6A /* DocumentThreadableLoader.h */, + 9738899E116EA9DC00ADF313 /* DocumentWriter.cpp */, + 9738899F116EA9DC00ADF313 /* DocumentWriter.h */, + F52AD5E31534245F0059FBE6 /* EmptyClients.cpp */, + B255990D0D00D8B900BB825C /* EmptyClients.h */, + 656D37230ADBA5DE00A4554D /* FormState.cpp */, + 656D37220ADBA5DE00A4554D /* FormState.h */, + 41885B9211B6FDA6003383BB /* FormSubmission.cpp */, + 41885B9111B6FDA6003383BB /* FormSubmission.h */, + 932E16080AF578340025F408 /* FrameLoader.cpp */, + 656D37240ADBA5DE00A4554D /* FrameLoader.h */, + 656D37260ADBA5DE00A4554D /* FrameLoaderClient.h */, + D000EBA011BDAFD400C47726 /* FrameLoaderStateMachine.cpp */, + D000EBA111BDAFD400C47726 /* FrameLoaderStateMachine.h */, + 93B77A370ADD792500EA4B81 /* FrameLoaderTypes.h */, + 86BA766D166427A8005BE5D1 /* FrameLoadRequest.cpp */, + 658436850AE01B7400E53753 /* FrameLoadRequest.h */, + 628D214D12131EF40055DCFC /* FrameNetworkingContext.h */, + 51C81B870C4422F70019ECE3 /* FTPDirectoryParser.cpp */, + 51C81B880C4422F70019ECE3 /* FTPDirectoryParser.h */, + 97DCE1FF10807C750057D394 /* HistoryController.cpp */, + 97DCE20010807C750057D394 /* HistoryController.h */, + 089582530E857A7E00F82C83 /* ImageLoader.cpp */, + 089582540E857A7E00F82C83 /* ImageLoader.h */, + 98CE4325129E00BD005821DC /* LinkLoader.cpp */, + 98CE4329129E00E5005821DC /* LinkLoader.h */, + 984264EF12D5280A000D88A4 /* LinkLoaderClient.h */, + 51ABF64C16392E2800132A7A /* LoaderStrategy.cpp */, + 51E6820F16387302003BBF3C /* LoaderStrategy.h */, + 52F10862162B6D82009AC81E /* MixedContentChecker.cpp */, + 52F10863162B6D82009AC81E /* MixedContentChecker.h */, + 93CCF05F0AF6CA7600018E89 /* NavigationAction.cpp */, + 93CCF0260AF6C52900018E89 /* NavigationAction.h */, + 979F43D11075E44A0000F83B /* NavigationScheduler.cpp */, + 979F43D21075E44A0000F83B /* NavigationScheduler.h */, + 93E227DD0AF589AD00D48324 /* NetscapePlugInStreamLoader.cpp */, + 656D372B0ADBA5DE00A4554D /* NetscapePlugInStreamLoader.h */, + D0FF2A5B11F8C45A007E74E0 /* PingLoader.cpp */, + D0FF2A5C11F8C45A007E74E0 /* PingLoader.h */, + 377C4CDE1014E9F600B9AE42 /* PlaceholderDocument.cpp */, + 377C4CDD1014E9F600B9AE42 /* PlaceholderDocument.h */, + 97059973107D975200A50A7C /* PolicyCallback.cpp */, + 97059974107D975200A50A7C /* PolicyCallback.h */, + 97059975107D975200A50A7C /* PolicyChecker.cpp */, + 97059976107D975200A50A7C /* PolicyChecker.h */, + 1A2A68210B5BEDE70002A480 /* ProgressTracker.cpp */, + 1A2A68220B5BEDE70002A480 /* ProgressTracker.h */, + 514BC840161CF05C004D52F4 /* ResourceBuffer.cpp */, + 514BC841161CF05C004D52F4 /* ResourceBuffer.h */, + 93E227DE0AF589AD00D48324 /* ResourceLoader.cpp */, + 656D37270ADBA5DE00A4554D /* ResourceLoader.h */, + D0A3A7301405A39800FB8ED3 /* ResourceLoaderOptions.h */, + 51AF503516F100F60095B2E8 /* ResourceLoaderTypes.h */, + 973E325410883B7C005BC493 /* ResourceLoadNotifier.cpp */, + 973E325510883B7C005BC493 /* ResourceLoadNotifier.h */, + D0CE58F6125E4CC200F3F199 /* ResourceLoadScheduler.cpp */, + D0CE58F7125E4CC200F3F199 /* ResourceLoadScheduler.h */, + 51327D5F11A33A2B004F9D65 /* SinkDocument.cpp */, + 51327D5E11A33A2B004F9D65 /* SinkDocument.h */, + D000ED2511C1B9CD00C47726 /* SubframeLoader.cpp */, + D000ED2611C1B9CD00C47726 /* SubframeLoader.h */, + 93E227DF0AF589AD00D48324 /* SubresourceLoader.cpp */, + 656D37300ADBA5DE00A4554D /* SubresourceLoader.h */, + 659A7D120B6DB4D9001155B3 /* SubstituteData.h */, + 1A8F6B010DB53006001DB794 /* SubstituteResource.h */, + F523D27802DE43D7018635CA /* TextResourceDecoder.cpp */, + F523D27902DE43D7018635CA /* TextResourceDecoder.h */, + B1AD4E7113A12A4600846B27 /* TextTrackLoader.cpp */, + B1AD4E7213A12A4600846B27 /* TextTrackLoader.h */, + 0B90561D0F257E930095FF6A /* ThreadableLoader.cpp */, + 0B9056170F2578BE0095FF6A /* ThreadableLoader.h */, + 0B9056180F2578BE0095FF6A /* ThreadableLoaderClient.h */, + 1A7E3C281710997300367935 /* ThreadableLoaderClientWrapper.h */, + 0B9056F60F2685F30095FF6A /* WorkerThreadableLoader.cpp */, + 0B9056F70F2685F30095FF6A /* WorkerThreadableLoader.h */, + ); + path = loader; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + BCCE58A71061E82F008FB35A /* Callback Objects */ = { + isa = PBXGroup; + children = ( + B1827492134CA4C100B98C2D /* CallbackFunction.cpp */, + B1D5ECB4134B58DA0087C78F /* CallbackFunction.h */, + 1449E286107D4DB400B5793F /* JSCallbackData.cpp */, + 1449E24A107D4A8400B5793F /* JSCallbackData.h */, + 51EC925D0CE90DD400F90308 /* JSCustomSQLStatementErrorCallback.cpp */, + E10B93C20B73C291003ED890 /* JSCustomXPathNSResolver.cpp */, + E10B937B0B73C00A003ED890 /* JSCustomXPathNSResolver.h */, + 93B70D4D09EB0C7C009D8468 /* JSEventListener.cpp */, + 93B70D4E09EB0C7C009D8468 /* JSEventListener.h */, + 935F45400F7C3B5F00D7C1FB /* JSLazyEventListener.cpp */, + 935F45410F7C3B5F00D7C1FB /* JSLazyEventListener.h */, + BCB7735E0C17853D00132BA4 /* JSNodeFilterCondition.cpp */, + BCB7735F0C17853D00132BA4 /* JSNodeFilterCondition.h */, + ); + name = "Callback Objects"; + sourceTree = ""; + }; + BCCE58B41061E925008FB35A /* Constructors */ = { + isa = PBXGroup; + children = ( + BC6C49F10D7DBA0500FFA558 /* JSImageConstructor.cpp */, + BC6C49F20D7DBA0500FFA558 /* JSImageConstructor.h */, + ); + name = Constructors; + sourceTree = ""; + }; + BCD0FBCE0DBD624100B2F630 /* Views */ = { + isa = PBXGroup; + children = ( + BCD0FBCF0DBD625E00B2F630 /* DOMAbstractView.mm */, + BC99812D0DBE807A008CE9EF /* DOMAbstractViewFrame.h */, + ); + name = Views; + sourceTree = ""; + }; + BCF1A5BA097832090061A123 /* platform */ = { + isa = PBXGroup; + children = ( + 49E912A40EFAC8E6009D0CAF /* animation */, + FD31604012B026A300C1A359 /* audio */, + 1AE42F670AA4B8CB00C8612D /* cf */, + A5C974CE11485FDA0066F2AB /* cocoa */, + B2A015910AF6CD53006BCE0E /* graphics */, + A59E3C1B11580F340072928E /* ios */, + 8CADF2A2135C7B36009EF43F /* leveldb */, + 6582A14809999D6C00BEEB6D /* mac */, + 59C77F101054591C00506104 /* mock */, + 656B84D70AEA1CE900A095B4 /* network */, + 516030090CC4245400C8AC25 /* posix */, + 1A2E6E560CC551E0004A2062 /* sql */, + B2C3D9EC0D006C1D00EF6F26 /* text */, + BCFB2F74097A2E1A00BA703D /* Arena.cpp */, + BCFB2F75097A2E1A00BA703D /* Arena.h */, + 89D08D9D12228451001241DF /* AsyncFileSystem.h */, + 89D08D9E12228451001241DF /* AsyncFileSystemCallbacks.h */, + 49AE2D94134EE5F90072920A /* CalculationValue.cpp */, + 49AE2D95134EE5F90072920A /* CalculationValue.h */, + CDEA76331460B462008B31F1 /* Clock.cpp */, + CDEA762C14608224008B31F1 /* Clock.h */, + CDEA76321460AE29008B31F1 /* ClockGeneric.cpp */, + CDEA76311460AE1B008B31F1 /* ClockGeneric.h */, + C330A22113EC196B0000B45B /* ColorChooser.h */, + C37CDEBC149EF2030042090D /* ColorChooserClient.h */, + BCC8CFCA0986CD2400140BF2 /* ColorData.gperf */, + 2919A1E816B3376600787213 /* ContentFilter.h */, + 41D015C90F4B5C71004A662F /* ContentType.cpp */, + 41D015C80F4B5C71004A662F /* ContentType.h */, + 93B6A0E50B0BCA5C00F5027A /* ContextMenu.h */, + 06027CAC0B1CBFC000884B2D /* ContextMenuItem.h */, + D8B6152E1032495100C8554A /* Cookie.h */, + 339B5B62131DAA3200F48D02 /* CookiesStrategy.h */, + 2E4346560F546A9900B0F1BA /* CrossThreadCopier.cpp */, + 2E4346570F546A9900B0F1BA /* CrossThreadCopier.h */, + E11AF15011B9A1A300805103 /* Cursor.cpp */, + F587868402DE3B8601EA4122 /* Cursor.h */, + FEDEF83F16797108000E444A /* DatabaseStrategy.cpp */, + FEDEF84016797108000E444A /* DatabaseStrategy.h */, + A5732B08136A161D005C8D7C /* DateComponents.cpp */, + A5732B09136A161D005C8D7C /* DateComponents.h */, + 45FEA5CD156DDE8C00654101 /* Decimal.cpp */, + 45FEA5CE156DDE8C00654101 /* Decimal.h */, + A79546420B5C4CB4007B438F /* DragData.cpp */, + A7B6E69D0B291A9600D0529F /* DragData.h */, + A7CFB3CF0B7ED10A0070C32D /* DragImage.cpp */, + A7CFB3D00B7ED10A0070C32D /* DragImage.h */, + 1CA19E150DC255CA0065A994 /* EventLoop.h */, + 934FE9E40B5CA539003E4A73 /* FileChooser.cpp */, + 066C772A0AB603B700238CC4 /* FileChooser.h */, + 2EF1BFE8121C9F4200C27627 /* FileStream.cpp */, + 2EF1BFE9121C9F4200C27627 /* FileStream.h */, + 2EF1BFF8121CB0CE00C27627 /* FileStreamClient.h */, + C57FEDE01212EE9C0097BE65 /* FileSystem.cpp */, + 514B3F720C722047000530DF /* FileSystem.h */, + BC073BA90C399B1F000F5979 /* FloatConversion.h */, + A8748BDF12CBF2DC001FBA41 /* HashTools.h */, + D6FDAEF2149C06190037B1E1 /* HistogramSupport.cpp */, + D630E2AB149BF344005B2F93 /* HistogramSupport.h */, + BC3BC29B0E91AB0F00835588 /* HostWindow.h */, + E1513D4E1677EA8300149FCB /* InitializeLogging.h */, + 521D46F711AEC9B100514613 /* KillRing.h */, + 4306E4E514955543007F17AC /* KillRingNone.cpp */, + 6593923509AE4346002C531F /* KURL.cpp */, + 6593923609AE4346002C531F /* KURL.h */, + BCBD21AA0E417AD400A070F2 /* KURLHash.h */, + E18772F0126E2629003DD586 /* Language.cpp */, + 85EC9AF90A71A2C600EEEAED /* Language.h */, + 141DC0471648348F00371E5A /* LayoutUnit.h */, + BCE65BE80EACDF16007E4533 /* Length.cpp */, + BCE65BE90EACDF16007E4533 /* Length.h */, + 146CC113156988BD00109E37 /* LengthBox.cpp */, + BCFF648F0EAD15C200C1D6F7 /* LengthBox.h */, + BCFF64900EAD15C200C1D6F7 /* LengthSize.h */, + A7AD2F850EC89D07008AB002 /* LinkHash.cpp */, + A7AD2F860EC89D07008AB002 /* LinkHash.h */, + C046E1AB1208A9FE00BA2CF7 /* LocalizedStrings.cpp */, + 935207BD09BD410A00F2038D /* LocalizedStrings.h */, + A8239DFE09B3CF8A00B60641 /* Logging.cpp */, + A8239DFF09B3CF8A00B60641 /* Logging.h */, + E187056216E54A0D00585E97 /* MainThreadTask.h */, + 657EDA061385CB97004E0645 /* MemoryPressureHandler.cpp */, + 657EDA071385CB97004E0645 /* MemoryPressureHandler.h */, + BC772C4C0C4EB3040083285F /* MIMETypeRegistry.cpp */, + BC772C4D0C4EB3040083285F /* MIMETypeRegistry.h */, + E1513D501677F08800149FCB /* NotImplemented.cpp */, + 98EB1F941313FE0500D0E1EA /* NotImplemented.h */, + 4B2708C50AF19EE40065127F /* Pasteboard.h */, + C5F765B414E1D414006C899B /* PasteboardStrategy.h */, + E1424C89164B3B4E00F32D40 /* PlatformCookieJar.h */, + BC5C76291497FE1400BC4775 /* PlatformEvent.h */, + A723F77A1484CA4C008C6DBE /* PlatformExportMacros.h */, + BC9585DF12F0989500755821 /* PlatformGestureEvent.h */, + 49182B5015DCE6F000548418 /* PlatformInstrumentation.cpp */, + 49182B5115DCE6F000548418 /* PlatformInstrumentation.h */, + 935C476609AC4D4300A6AAB4 /* PlatformKeyboardEvent.h */, + 932871BF0B20DEB70049035A /* PlatformMenuDescription.h */, + 935C476709AC4D4300A6AAB4 /* PlatformMouseEvent.h */, + C5BAC16F14E30E4700008837 /* PlatformPasteboard.h */, + BCEC01D60C274EB4009F4EC9 /* PlatformScreen.h */, + 2527CC9516BF95DD009DDAC0 /* PlatformSpeechSynthesisUtterance.cpp */, + 2527CC9116BF8BA1009DDAC0 /* PlatformSpeechSynthesisUtterance.h */, + 2527CC9316BF92EC009DDAC0 /* PlatformSpeechSynthesisVoice.cpp */, + 2527CC9216BF90B4009DDAC0 /* PlatformSpeechSynthesisVoice.h */, + 297BE3D916C043D8003316BD /* PlatformSpeechSynthesizer.cpp */, + 29E4D8DF16B0940F00C84704 /* PlatformSpeechSynthesizer.h */, + 1AD8F81A11CAB9E900E93E54 /* PlatformStrategies.cpp */, + 1AD8F81911CAB9E900E93E54 /* PlatformStrategies.h */, + 935C476A09AC4D4F00A6AAB4 /* PlatformWheelEvent.h */, + BCBB8AB413F1AFB000734DF0 /* PODArena.h */, + 1F3F19521499CA7600A5AEA7 /* PODFreeListArena.h */, + BCBB8AB513F1AFB000734DF0 /* PODInterval.h */, + BCBB8AB613F1AFB000734DF0 /* PODIntervalTree.h */, + BCBB8AB713F1AFB000734DF0 /* PODRedBlackTree.h */, + 0668E1890ADD9624004128E0 /* PopupMenu.h */, + ABC128760B33AA6D00C693D5 /* PopupMenuClient.h */, + BC3BE12A0E98092F00835588 /* PopupMenuStyle.h */, + 0081FEFD16B0A244008AAA7A /* PublicSuffix.h */, + E4D687780ED7AE4F006EA978 /* PurgeableBuffer.h */, + 7E33CD00127F340D00BE8F17 /* PurgePriority.h */, + A72EA3BA1585CF55004FAA26 /* RefCountedSupplement.h */, + 9831AE49154225A200FE2644 /* ReferrerPolicy.h */, + BC0B358514C4F9830055E22A /* RunLoop.cpp */, + BC0B358614C4F9830055E22A /* RunLoop.h */, + 293EAE201356B32E0067ACF9 /* RuntimeApplicationChecks.cpp */, + 293EAE1E1356B2FE0067ACF9 /* RuntimeApplicationChecks.h */, + 5162C7F211F77EFA00612EFE /* SchemeRegistry.cpp */, + 5162C7F311F77EFB00612EFE /* SchemeRegistry.h */, + BC8AE34C12EA096A00EB3AE6 /* ScrollableArea.cpp */, + BC8AE34D12EA096A00EB3AE6 /* ScrollableArea.h */, + CA3BF67B10D99BAE00E6CE53 /* ScrollAnimator.cpp */, + CA3BF67D10D99BAE00E6CE53 /* ScrollAnimator.h */, + BCAA90C20A7EBA60008B1229 /* Scrollbar.cpp */, + BC7B2AF80450824100A8000F /* Scrollbar.h */, + 0FE71415142189FC00DB33BA /* ScrollbarTheme.cpp */, + BC8B854A0E7C7F5600AB6984 /* ScrollbarTheme.h */, + C691614714F6EBA70046375C /* ScrollbarThemeClient.h */, + BC1402880E83680800319717 /* ScrollbarThemeComposite.cpp */, + BC1402890E83680800319717 /* ScrollbarThemeComposite.h */, + 93C09C850B0657AA005ABD4D /* ScrollTypes.h */, + BC2441C30E8B65D00055320F /* ScrollView.cpp */, + BC6D6E2509AF943500F59759 /* ScrollView.h */, + AB7170880B3118080017123E /* SearchPopupMenu.h */, + 1A4A954B0B4EDCCB002D8C3C /* SharedBuffer.cpp */, + 1A4A954C0B4EDCCB002D8C3C /* SharedBuffer.h */, + 37569E0013AF172C00CDBA8E /* SharedBufferChunkReader.cpp */, + 37569E0213AF172C00CDBA8E /* SharedBufferChunkReader.h */, + 93309EA0099EB78C0056E581 /* SharedTimer.h */, + 4B3043C60AE0370300A82647 /* Sound.h */, + F587866202DE3B1101EA4122 /* SSLKeyGenerator.h */, + 93B2D8150F9920D2006AE6B2 /* SuddenTermination.h */, + 97627B9714FB5424002CDCA1 /* Supplementable.h */, + BCE65D310EAD1211007E4533 /* Theme.cpp */, + BCE658FE0EA9248A007E4533 /* Theme.h */, + BCE659A80EA927B9007E4533 /* ThemeTypes.h */, + 51DF6D7D0B92A16D00C2DC85 /* ThreadCheck.h */, + E1FF57A50F01256B00891EBB /* ThreadGlobalData.cpp */, + E1FF57A20F01255B00891EBB /* ThreadGlobalData.h */, + 185BCF260F3279CE000EA262 /* ThreadTimers.cpp */, + 185BCF270F3279CE000EA262 /* ThreadTimers.h */, + 93309EA1099EB78C0056E581 /* Timer.cpp */, + 9305B24C098F1B6B00C28855 /* Timer.h */, + 1419D2C40CEA6F6100FF507A /* TreeShared.h */, + 2E3BBF051162DA1100B9409A /* UUID.cpp */, + 2E3BBF061162DA1100B9409A /* UUID.h */, + 515788C01207852C00A37C4A /* VisitedLinkStrategy.h */, + 9380F47109A11AB4001FDB34 /* Widget.cpp */, + 9380F47209A11AB4001FDB34 /* Widget.h */, + E1E1BEFF115FF6FB006F52CA /* WindowsKeyboardCodes.h */, + ); + path = platform; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + CD0DBB3E142274E600280263 /* audio */ = { + isa = PBXGroup; + children = ( + CD4AC5281496AE2F0087C4EF /* Composite.wav */, + ); + name = audio; + sourceTree = ""; + }; + CD0EEE0D14743E48003EAFA2 /* ios */ = { + isa = PBXGroup; + children = ( + CD0EEE0B14743E35003EAFA2 /* AudioDestinationIOS.cpp */, + CD0EEE0A14743E34003EAFA2 /* AudioDestinationIOS.h */, + CDA79825170A279000D45C55 /* AudioSessionIOS.mm */, + ); + name = ios; + sourceTree = ""; + }; + CDA98DBD16014E0800FEA3B1 /* encryptedmedia */ = { + isa = PBXGroup; + children = ( + CDA98E091603CD5900FEA3B1 /* CDM.cpp */, + CDA98E0A1603CD5900FEA3B1 /* CDM.h */, + CDA98E0C1603CF3C00FEA3B1 /* CDMPrivate.h */, + CD47B3F916CC34F800A21EC8 /* CDMPrivateAVFoundation.h */, + CD47B3FA16CC34F800A21EC8 /* CDMPrivateAVFoundation.mm */, + CDA98DD516025BED00FEA3B1 /* MediaKeyMessageEvent.cpp */, + CDA98DD616025BED00FEA3B1 /* MediaKeyMessageEvent.h */, + CDA98DD716025BEE00FEA3B1 /* MediaKeyMessageEvent.idl */, + CDA98DC216014EEE00FEA3B1 /* MediaKeyNeededEvent.cpp */, + CDA98DC316014EEE00FEA3B1 /* MediaKeyNeededEvent.h */, + CDA98DC416014EEE00FEA3B1 /* MediaKeyNeededEvent.idl */, + CDA98DCA1601508A00FEA3B1 /* MediaKeys.cpp */, + CDA98DCB1601508A00FEA3B1 /* MediaKeys.h */, + CDA98DCC1601508A00FEA3B1 /* MediaKeys.idl */, + CDA98DC716014F2C00FEA3B1 /* MediaKeySession.cpp */, + CDA98DC816014F2C00FEA3B1 /* MediaKeySession.h */, + CDA98DC916014F4000FEA3B1 /* MediaKeySession.idl */, + ); + name = encryptedmedia; + sourceTree = ""; + }; + CDA98DCD1601515C00FEA3B1 /* EncryptedMedia */ = { + isa = PBXGroup; + children = ( + CDA98D9B160128A500FEA3B1 /* JSMediaKeyError.cpp */, + CDA98D9C160128A500FEA3B1 /* JSMediaKeyError.h */, + CDA98DDB16026A1800FEA3B1 /* JSMediaKeyMessageEvent.cpp */, + CDA98DDC16026A1900FEA3B1 /* JSMediaKeyMessageEvent.h */, + CDA98DDD16026A1900FEA3B1 /* JSMediaKeyNeededEvent.cpp */, + CDA98DDE16026A1900FEA3B1 /* JSMediaKeyNeededEvent.h */, + CDA98DCE1601597900FEA3B1 /* JSMediaKeys.cpp */, + CDA98DCF1601597900FEA3B1 /* JSMediaKeys.h */, + CDA98DD01601597900FEA3B1 /* JSMediaKeySession.cpp */, + CDA98DD11601597900FEA3B1 /* JSMediaKeySession.h */, + ); + name = EncryptedMedia; + sourceTree = ""; + }; + DF9AFD6F13FC31B00015FEB7 /* objc */ = { + isa = PBXGroup; + children = ( + 07AA6B69166D019500D45671 /* InbandTextTrackPrivateAVFObjC.h */, + 07AA6B6A166D019500D45671 /* InbandTextTrackPrivateAVFObjC.mm */, + 07367DDD172CA67F00D861B9 /* InbandTextTrackPrivateLegacyAVFObjC.h */, + 07367DDE172CA67F00D861B9 /* InbandTextTrackPrivateLegacyAVFObjC.mm */, + DF9AFD7013FC31D80015FEB7 /* MediaPlayerPrivateAVFoundationObjC.h */, + DF9AFD7113FC31D80015FEB7 /* MediaPlayerPrivateAVFoundationObjC.mm */, + CD7E05201651A84100C1201F /* WebCoreAVFResourceLoader.h */, + CD7E05211651A84100C1201F /* WebCoreAVFResourceLoader.mm */, + ); + name = objc; + sourceTree = ""; + }; + E1C8BE4B0E8BD0D10064CB7D /* Threads */ = { + isa = PBXGroup; + children = ( + 418F88020FF957AE0080F045 /* JSAbstractWorker.cpp */, + 418F88030FF957AE0080F045 /* JSAbstractWorker.h */, + 4162A4551011464700DFF3ED /* JSDedicatedWorkerGlobalScope.cpp */, + 4162A4561011464700DFF3ED /* JSDedicatedWorkerGlobalScope.h */, + 41D07A7C0FF935CA0095EDCE /* JSSharedWorker.cpp */, + 41D07A7D0FF935CA0095EDCE /* JSSharedWorker.h */, + 41D1690310238B66009BC827 /* JSSharedWorkerGlobalScope.cpp */, + 41D1690410238B66009BC827 /* JSSharedWorkerGlobalScope.h */, + E1C8BE5C0E8BD15A0064CB7D /* JSWorker.cpp */, + E1CAA5C50E8BD23600A73ECA /* JSWorker.h */, + E182568D0EF2B02D00933242 /* JSWorkerGlobalScope.cpp */, + E182568E0EF2B02D00933242 /* JSWorkerGlobalScope.h */, + E1C362EE0EAF2AA9007410BC /* JSWorkerLocation.cpp */, + E1C362ED0EAF2AA9007410BC /* JSWorkerLocation.h */, + E1271A570EEECDE400F61213 /* JSWorkerNavigator.cpp */, + E1271A560EEECDE400F61213 /* JSWorkerNavigator.h */, + ); + name = Threads; + sourceTree = ""; + }; + E1F0424309839389006694EA /* xml */ = { + isa = PBXGroup; + children = ( + 00B9318013BA867F0035A948 /* parser */, + 1ACE53E10A8D18E70022947D /* DOMParser.cpp */, + 1ACE53E20A8D18E70022947D /* DOMParser.h */, + 1ACE53E30A8D18E70022947D /* DOMParser.idl */, + E10B9B6B0B747599003ED890 /* NativeXPathNSResolver.cpp */, + E10B9B6A0B747599003ED890 /* NativeXPathNSResolver.h */, + A833C7F60A2CF1D800D57664 /* xmlattrs.in */, + 59C28043138DC2410079B7E2 /* XMLErrors.cpp */, + 59C28044138DC2410079B7E2 /* XMLErrors.h */, + BC772C440C4EB2C60083285F /* XMLHttpRequest.cpp */, + BC772C450C4EB2C60083285F /* XMLHttpRequest.h */, + BC348BA70DB7F1B8004ABAB9 /* XMLHttpRequest.idl */, + 978D07CD145A10370096908D /* XMLHttpRequestException.cpp */, + BC60D9C70D2A29E500B9918F /* XMLHttpRequestException.h */, + BC60D9C80D2A29E500B9918F /* XMLHttpRequestException.idl */, + F9F0ED770DB50CA200D16DB9 /* XMLHttpRequestProgressEvent.h */, + F9F0ED780DB50CA200D16DB9 /* XMLHttpRequestProgressEvent.idl */, + A136A00A1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.cpp */, + A136A00B1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.h */, + BCDFD48D0E305290009D10AD /* XMLHttpRequestUpload.cpp */, + BCDFD48C0E305290009D10AD /* XMLHttpRequestUpload.h */, + BCDFD4900E305644009D10AD /* XMLHttpRequestUpload.idl */, + 1ACE53E40A8D18E70022947D /* XMLSerializer.cpp */, + 1ACE53E50A8D18E70022947D /* XMLSerializer.h */, + 1ACE53E60A8D18E70022947D /* XMLSerializer.idl */, + 5905ADBD1302F3CE00F116DF /* XMLTreeViewer.cpp */, + 5905ADBE1302F3CE00F116DF /* XMLTreeViewer.h */, + 5958F1CB1343917C0080B31F /* XMLViewer.css */, + 5958F1CC1343917C0080B31F /* XMLViewer.js */, + 1AB7FC470A8B92EC00D9D37B /* XPathEvaluator.cpp */, + 1AB7FC480A8B92EC00D9D37B /* XPathEvaluator.h */, + 1AB7FC490A8B92EC00D9D37B /* XPathEvaluator.idl */, + 978D07CB145A102E0096908D /* XPathException.cpp */, + BC60DA590D2A31F700B9918F /* XPathException.h */, + BC60DA5A0D2A31F700B9918F /* XPathException.idl */, + 1AB7FC4A0A8B92EC00D9D37B /* XPathExpression.cpp */, + 1AB7FC4B0A8B92EC00D9D37B /* XPathExpression.h */, + 1AB7FC4C0A8B92EC00D9D37B /* XPathExpression.idl */, + 1AB7FC4D0A8B92EC00D9D37B /* XPathExpressionNode.cpp */, + 1AB7FC4E0A8B92EC00D9D37B /* XPathExpressionNode.h */, + 1AB7FC4F0A8B92EC00D9D37B /* XPathFunctions.cpp */, + 1AB7FC500A8B92EC00D9D37B /* XPathFunctions.h */, + 1AB7FC510A8B92EC00D9D37B /* XPathGrammar.y */, + E1EC299D0BB04C6B00EA187B /* XPathNodeSet.cpp */, + E1EC299E0BB04C6B00EA187B /* XPathNodeSet.h */, + 1AB7FC540A8B92EC00D9D37B /* XPathNSResolver.cpp */, + 1AB7FC550A8B92EC00D9D37B /* XPathNSResolver.h */, + 1AB7FC560A8B92EC00D9D37B /* XPathNSResolver.idl */, + 1AB7FC570A8B92EC00D9D37B /* XPathParser.cpp */, + 1AB7FC580A8B92EC00D9D37B /* XPathParser.h */, + 1AB7FC590A8B92EC00D9D37B /* XPathPath.cpp */, + 1AB7FC5A0A8B92EC00D9D37B /* XPathPath.h */, + 1AB7FC5B0A8B92EC00D9D37B /* XPathPredicate.cpp */, + 1AB7FC5C0A8B92EC00D9D37B /* XPathPredicate.h */, + 1AB7FC5D0A8B92EC00D9D37B /* XPathResult.cpp */, + 1AB7FC5E0A8B92EC00D9D37B /* XPathResult.h */, + 1AB7FC5F0A8B92EC00D9D37B /* XPathResult.idl */, + 1AB7FC600A8B92EC00D9D37B /* XPathStep.cpp */, + 1AB7FC610A8B92EC00D9D37B /* XPathStep.h */, + 1AB7FC620A8B92EC00D9D37B /* XPathUtil.cpp */, + 1AB7FC630A8B92EC00D9D37B /* XPathUtil.h */, + 1AB7FC640A8B92EC00D9D37B /* XPathValue.cpp */, + 1AB7FC650A8B92EC00D9D37B /* XPathValue.h */, + 1AB7FC660A8B92EC00D9D37B /* XPathVariableReference.cpp */, + 1AB7FC670A8B92EC00D9D37B /* XPathVariableReference.h */, + 85217E000A5ECD4700DB8D00 /* XSLImportRule.cpp */, + 85217E010A5ECD4700DB8D00 /* XSLImportRule.h */, + BC06F24A06D18A7E004A6FA3 /* XSLStyleSheet.h */, + BC06F24906D18A7E004A6FA3 /* XSLStyleSheetLibxslt.cpp */, + E1F1E82D0C3C2BB9006DB391 /* XSLTExtensions.cpp */, + E1F1E82E0C3C2BB9006DB391 /* XSLTExtensions.h */, + BC06F24B06D18A7E004A6FA3 /* XSLTProcessor.cpp */, + BC06F24C06D18A7E004A6FA3 /* XSLTProcessor.h */, + BCEFE1DC0DCA5CFD00739219 /* XSLTProcessor.idl */, + BC06F24D06D18A7E004A6FA3 /* XSLTProcessorLibxslt.cpp */, + E1BE512B0CF6C512002EA959 /* XSLTUnicodeSort.cpp */, + E1BE512C0CF6C512002EA959 /* XSLTUnicodeSort.h */, + ); + path = xml; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + E46E97860DAAD61B0071E894 /* animation */ = { + isa = PBXGroup; + children = ( + E4AFD0050DAF335400F5F55C /* SMILTime.cpp */, + E4AFD0060DAF335400F5F55C /* SMILTime.h */, + E4AFD0070DAF335400F5F55C /* SMILTimeContainer.cpp */, + E4AFD0080DAF335400F5F55C /* SMILTimeContainer.h */, + E4AFD0090DAF335400F5F55C /* SVGSMILElement.cpp */, + E4AFD00A0DAF335400F5F55C /* SVGSMILElement.h */, + ); + path = animation; + sourceTree = ""; + }; + ED501DC90B249F3900AE18D9 /* mac */ = { + isa = PBXGroup; + children = ( + CE7B2DAF1586ABAD0098B3FA /* AlternativeTextUIController.h */, + CE7B2DB01586ABAD0098B3FA /* AlternativeTextUIController.mm */, + ED501DC50B249F2900AE18D9 /* EditorMac.mm */, + 4A8C96EA0BE69032004EEFF0 /* FrameSelectionMac.mm */, + CE7B2DB11586ABAD0098B3FA /* TextAlternativeWithRange.h */, + CE7B2DB21586ABAD0098B3FA /* TextAlternativeWithRange.mm */, + ); + name = mac; + sourceTree = ""; + }; + F4EAF4AB10C74268009100D3 /* opentype */ = { + isa = PBXGroup; + children = ( + F4EAF4AD10C742B1009100D3 /* OpenTypeSanitizer.h */, + ); + name = opentype; + sourceTree = ""; + }; + F523D18402DE42E8018635CA /* css */ = { + isa = PBXGroup; + children = ( + 93CA4C9C09DF93FA00DF8677 /* maketokenizer */, + FBD6AF8415EF21D4008B7110 /* BasicShapeFunctions.cpp */, + FBD6AF8515EF21D4008B7110 /* BasicShapeFunctions.h */, + A80E6CDA0A1989CA007FB8C5 /* Counter.h */, + 930705C709E0C95F00B17FE4 /* Counter.idl */, + CAE9F90D146441F000C245B0 /* CSSAspectRatioValue.cpp */, + CAE9F90E146441F000C245B0 /* CSSAspectRatioValue.h */, + FBD6AF8615EF21D4008B7110 /* CSSBasicShapes.cpp */, + FBD6AF8715EF21D4008B7110 /* CSSBasicShapes.h */, + E16A84F714C85CCC002977DF /* CSSBorderImage.cpp */, + E16A84F814C85CCC002977DF /* CSSBorderImage.h */, + BC274B30140EBED800EADFA6 /* CSSBorderImageSliceValue.cpp */, + BC274B2E140EBEB200EADFA6 /* CSSBorderImageSliceValue.h */, + 49AE2D8C134EE50C0072920A /* CSSCalculationValue.cpp */, + 49AE2D8D134EE50C0072920A /* CSSCalculationValue.h */, + BC604A420DB5634E00204739 /* CSSCanvasValue.cpp */, + BC6049CB0DB560C200204739 /* CSSCanvasValue.h */, + E1EBBBD30AAC9B87001FE8E2 /* CSSCharsetRule.cpp */, + A80E6CCF0A1989CA007FB8C5 /* CSSCharsetRule.h */, + 85C56CAC0AA89F8E00D95755 /* CSSCharsetRule.idl */, + BCEA477C097CAAC80094C9E4 /* CSSComputedStyleDeclaration.cpp */, + BCEA477D097CAAC80094C9E4 /* CSSComputedStyleDeclaration.h */, + 2D8FEBDA143E3EF70072502B /* CSSCrossfadeValue.cpp */, + 2D8FEBDB143E3EF70072502B /* CSSCrossfadeValue.h */, + AA0978ED0ABAA6E100874480 /* CSSCursorImageValue.cpp */, + AA0978EE0ABAA6E100874480 /* CSSCursorImageValue.h */, + 4A9CC81516BB9AC600EC645A /* CSSDefaultStyleSheets.cpp */, + 4A9CC81616BB9AC600EC645A /* CSSDefaultStyleSheets.h */, + BC64B4CD0CB4298A005F2B62 /* CSSFontFace.cpp */, + BC64B4CE0CB4298A005F2B62 /* CSSFontFace.h */, + 409EBDAC16B7EE1C00CBA3FC /* CSSFontFaceLoadEvent.cpp */, + 409EBDAE16B7EE2800CBA3FC /* CSSFontFaceLoadEvent.h */, + 409EBDAF16B7EE5700CBA3FC /* CSSFontFaceLoadEvent.idl */, + A80E6CBD0A1989CA007FB8C5 /* CSSFontFaceRule.cpp */, + A80E6CD30A1989CA007FB8C5 /* CSSFontFaceRule.h */, + 85C56CA30AA89CA400D95755 /* CSSFontFaceRule.idl */, + BC64B4CF0CB4298A005F2B62 /* CSSFontFaceSource.cpp */, + BC64B4D00CB4298A005F2B62 /* CSSFontFaceSource.h */, + BC64B4D10CB4298A005F2B62 /* CSSFontFaceSrcValue.cpp */, + BC64B4D20CB4298A005F2B62 /* CSSFontFaceSrcValue.h */, + BC64B4D30CB4298A005F2B62 /* CSSFontSelector.cpp */, + BC64B4D40CB4298A005F2B62 /* CSSFontSelector.h */, + BC02A6450E09AAE9004B6D2B /* CSSFunctionValue.cpp */, + BC02A63B0E09A9CF004B6D2B /* CSSFunctionValue.h */, + BC23E4E00DAACE0F009FDC91 /* CSSGradientValue.cpp */, + BC53C6910DA591140021EB5D /* CSSGradientValue.h */, + FCEBCD711623A7910029965E /* CSSGrammar.y.in */, + FCEBCD721623A7910029965E /* CSSGrammar.y.includes */, + FBF89044169E9F1F0052D86E /* CSSGroupingRule.cpp */, + FB3056C1169E5DAC0096A232 /* CSSGroupingRule.h */, + BC772B360C4EA91E0083285F /* CSSHelper.h */, + FB49C39C16784947007FFB5D /* CSSHostRule.h */, + FB49C39E16784954007FFB5D /* CSSHostRule.idl */, + BC23E76B0DAE88A9009FDC91 /* CSSImageGeneratorValue.cpp */, + BC23EE910DAED2BC009FDC91 /* CSSImageGeneratorValue.h */, + 9393E5FD151A99F200066F06 /* CSSImageSetValue.cpp */, + 9393E5FE151A99F200066F06 /* CSSImageSetValue.h */, + A80E6CD40A1989CA007FB8C5 /* CSSImageValue.cpp */, + A80E6CD00A1989CA007FB8C5 /* CSSImageValue.h */, + A80E6CC10A1989CA007FB8C5 /* CSSImportRule.cpp */, + A80E6CCC0A1989CA007FB8C5 /* CSSImportRule.h */, + 85C56CA90AA89E6600D95755 /* CSSImportRule.idl */, + A80E6CC60A1989CA007FB8C5 /* CSSInheritedValue.cpp */, + A80E6CD70A1989CA007FB8C5 /* CSSInheritedValue.h */, + A80E6CD80A1989CA007FB8C5 /* CSSInitialValue.cpp */, + A80E6CDE0A1989CA007FB8C5 /* CSSInitialValue.h */, + BC772E15133162C2001EC9CE /* CSSLineBoxContainValue.cpp */, + BC772E121331620C001EC9CE /* CSSLineBoxContainValue.h */, + A80E6CD20A1989CA007FB8C5 /* CSSMediaRule.cpp */, + A80E6CD90A1989CA007FB8C5 /* CSSMediaRule.h */, + 85C56CA20AA89C1000D95755 /* CSSMediaRule.idl */, + F98FFF4211A2676200F548E8 /* CSSOMUtils.cpp */, + F98FFF4311A2676200F548E8 /* CSSOMUtils.h */, + A80E6CCB0A1989CA007FB8C5 /* CSSPageRule.cpp */, + A80E6CD60A1989CA007FB8C5 /* CSSPageRule.h */, + 85C56CA60AA89D5F00D95755 /* CSSPageRule.idl */, + BC772B370C4EA91E0083285F /* CSSParser.cpp */, + BC772B380C4EA91E0083285F /* CSSParser.h */, + FB78AD2C151BF5D200FE54D3 /* CSSParserMode.h */, + BC02A53F0E099C5A004B6D2B /* CSSParserValues.cpp */, + BC02A4B60E0997B9004B6D2B /* CSSParserValues.h */, + A80E6CDB0A1989CA007FB8C5 /* CSSPrimitiveValue.cpp */, + A80E6CBC0A1989CA007FB8C5 /* CSSPrimitiveValue.h */, + 9307059009E0C75800B17FE4 /* CSSPrimitiveValue.idl */, + E1ED8AC20CC49BE000BFC557 /* CSSPrimitiveValueMappings.h */, + A80E6CCD0A1989CA007FB8C5 /* CSSProperty.cpp */, + A80E6CD50A1989CA007FB8C5 /* CSSProperty.h */, + BCEA4789097CAAC80094C9E4 /* CSSPropertyNames.in */, + 82E3D8DC122EA0D1003AE5BC /* CSSPropertySourceData.cpp */, + 82E3D8DD122EA0D1003AE5BC /* CSSPropertySourceData.h */, + 9362640A0DE1137D009D5A00 /* CSSReflectionDirection.h */, + BC5A12DD0DC0414800C9AFAD /* CSSReflectValue.cpp */, + BC5A12DE0DC0414800C9AFAD /* CSSReflectValue.h */, + A80E6CDC0A1989CA007FB8C5 /* CSSRule.cpp */, + A80E6CE30A1989CA007FB8C5 /* CSSRule.h */, + 14CF7A7009F5CF9A00EB3665 /* CSSRule.idl */, + A80E6CDF0A1989CA007FB8C5 /* CSSRuleList.cpp */, + A80E6CC80A1989CA007FB8C5 /* CSSRuleList.h */, + A8D0651B0A23C1FE005E7203 /* CSSRuleList.idl */, + 371F51A00D262FA000ECE0D5 /* CSSSegmentedFontFace.cpp */, + 371F519F0D262FA000ECE0D5 /* CSSSegmentedFontFace.h */, + A80E73480A199C77007FB8C5 /* CSSSelector.cpp */, + A80E734B0A199C77007FB8C5 /* CSSSelector.h */, + E4C178950EE6903800824D69 /* CSSSelectorList.cpp */, + E4C178960EE6903800824D69 /* CSSSelectorList.h */, + A80E6E0D0A19911C007FB8C5 /* CSSStyleDeclaration.h */, + 142011AE0A003117008303F9 /* CSSStyleDeclaration.idl */, + A80E6CC50A1989CA007FB8C5 /* CSSStyleRule.cpp */, + A80E6CE20A1989CA007FB8C5 /* CSSStyleRule.h */, + 85C56CA10AA89AB400D95755 /* CSSStyleRule.idl */, + A8EA80000A19516E00A8EF5F /* CSSStyleSheet.cpp */, + A8EA7FFF0A19516E00A8EF5F /* CSSStyleSheet.h */, + 858C39100AA8FF0000B187A4 /* CSSStyleSheet.idl */, + FC63BDB1167AABAC00F9380F /* CSSSupportsRule.h */, + FC63BDB2167AABAC00F9380F /* CSSSupportsRule.idl */, + BC80C9850CD294EE00A0B7B3 /* CSSTimingFunctionValue.cpp */, + BC80C9860CD294EE00A0B7B3 /* CSSTimingFunctionValue.h */, + A882DA1F1593846A000115ED /* CSSToStyleMap.cpp */, + A882DA221593848D000115ED /* CSSToStyleMap.h */, + 371F53E80D2704F900ECE0D5 /* CSSUnicodeRangeValue.cpp */, + 371F53E70D2704F900ECE0D5 /* CSSUnicodeRangeValue.h */, + A80E6CCE0A1989CA007FB8C5 /* CSSUnknownRule.h */, + 85C56CAD0AA89FE000D95755 /* CSSUnknownRule.idl */, + AD03AAF81468453900A39B5B /* CSSValue.cpp */, + A80E6CC40A1989CA007FB8C5 /* CSSValue.h */, + 14CF787109F587CA00EB3665 /* CSSValue.idl */, + BCEA478C097CAAC80094C9E4 /* CSSValueKeywords.in */, + A80E6CBA0A1989CA007FB8C5 /* CSSValueList.cpp */, + A80E6CBF0A1989CA007FB8C5 /* CSSValueList.h */, + A8D0651C0A23C1FE005E7203 /* CSSValueList.idl */, + E49BDA0A131FD3E5003C56F0 /* CSSValuePool.cpp */, + E49BD9F9131FD2ED003C56F0 /* CSSValuePool.h */, + CAE9F90E146441F000C245B1 /* CSSVariableValue.h */, + A80E6CE10A1989CA007FB8C5 /* DashboardRegion.h */, + E100EE731546EAC100BA11D1 /* DeprecatedStyleBuilder.cpp */, + E100EE741546EAC100BA11D1 /* DeprecatedStyleBuilder.h */, + 4A4F48A716B0DFC000EDBB29 /* DocumentRuleSets.cpp */, + 4A4F48A816B0DFC000EDBB29 /* DocumentRuleSets.h */, + FC9A0F72164094CF003D6B8D /* DOMWindowCSS.h */, + FC9A0F73164094CF003D6B8D /* DOMWindowCSS.idl */, + FBDB619A16D6032A00BB3394 /* ElementRuleCollector.cpp */, + FBDB619E16D6036500BB3394 /* ElementRuleCollector.h */, + 4A6E9FC113C17D1D0046A7F8 /* FontFeatureValue.cpp */, + 4A6E9FC213C17D1D0046A7F8 /* FontFeatureValue.h */, + 409EBDB516B7EEA300CBA3FC /* FontLoader.h */, + 409EBDB716B7EEBA00CBA3FC /* FontLoader.idl */, + A80E6CC70A1989CA007FB8C5 /* FontValue.cpp */, + A80E6CC30A1989CA007FB8C5 /* FontValue.h */, + CD4E0AFA11F7BC27009D3811 /* fullscreen.css */, + CDBD93BA1333BD4B002570E3 /* fullscreenQuickTime.css */, + 93CA4C9909DF93FA00DF8677 /* html.css */, + 4A9CC81E16BF9BB400EC645A /* InspectorCSSOMWrappers.cpp */, + 4A9CC81F16BF9BB400EC645A /* InspectorCSSOMWrappers.h */, + E55F4979151B888000BB67DB /* LengthFunctions.cpp */, + E5BA7D62151437CA00FE1E3F /* LengthFunctions.h */, + 93CA4C9A09DF93FA00DF8677 /* make-css-file-arrays.pl */, + 93CA4C9B09DF93FA00DF8677 /* makeprop.pl */, + 93CA4C9D09DF93FA00DF8677 /* makevalues.pl */, + FA654A631108ABB7002615E0 /* mathml.css */, + 070DD8F50F01868000727DEB /* mediaControls.css */, + 07AFE5900F1446BD00841617 /* mediaControlsQuickTime.css */, + 4E19591F0A39DABA00220FE5 /* MediaFeatureNames.cpp */, + 4E1959200A39DABA00220FE5 /* MediaFeatureNames.h */, + A8EA80010A19516E00A8EF5F /* MediaList.cpp */, + A8EA80060A19516E00A8EF5F /* MediaList.h */, + 85C56C5B0AA87AFD00D95755 /* MediaList.idl */, + 4E1959230A39DACC00220FE5 /* MediaQuery.cpp */, + 4E1959240A39DACC00220FE5 /* MediaQuery.h */, + 4E1959250A39DACC00220FE5 /* MediaQueryEvaluator.cpp */, + 4E1959260A39DACC00220FE5 /* MediaQueryEvaluator.h */, + 4E1959270A39DACC00220FE5 /* MediaQueryExp.cpp */, + 4E1959280A39DACC00220FE5 /* MediaQueryExp.h */, + D3A94A31122DABAC00A37BBC /* MediaQueryList.cpp */, + D3A94A32122DABAC00A37BBC /* MediaQueryList.h */, + D3A94A33122DABAC00A37BBC /* MediaQueryList.idl */, + D340629A1253BC8C009E4259 /* MediaQueryListListener.cpp */, + D3A94A34122DABAC00A37BBC /* MediaQueryListListener.h */, + D3A94A35122DABAC00A37BBC /* MediaQueryListListener.idl */, + D3AA10F1123A98AA0092152B /* MediaQueryMatcher.cpp */, + D3AA10F2123A98AA0092152B /* MediaQueryMatcher.h */, + FBDB619C16D6034600BB3394 /* PageRuleCollector.cpp */, + FBDB61A016D6037E00BB3394 /* PageRuleCollector.h */, + A80E6CD10A1989CA007FB8C5 /* Pair.h */, + 3189E6DB16B2103500386EA3 /* plugIns.css */, + E4BBED0C14F4025D003F0B98 /* PropertySetCSSStyleDeclaration.cpp */, + E4BBED0D14F4025D003F0B98 /* PropertySetCSSStyleDeclaration.h */, + 93CA4C9F09DF93FA00DF8677 /* quirks.css */, + BC4368E70C226E32005EFB5F /* Rect.h */, + A80E79960A19BD21007FB8C5 /* Rect.idl */, + BC74DA361013F3F7007987AD /* RGBColor.cpp */, + BC74DA351013F3F7007987AD /* RGBColor.h */, + 858C38EF0AA8FDD100B187A4 /* RGBColor.idl */, + A79BAD9D161E7F3F00C2E652 /* RuleFeature.cpp */, + A79BAD9E161E7F3F00C2E652 /* RuleFeature.h */, + A79BAD9F161E7F3F00C2E652 /* RuleSet.cpp */, + A79BADA0161E7F3F00C2E652 /* RuleSet.h */, + E44B4BB1141650D7002B1D8B /* SelectorChecker.cpp */, + E44B4BB2141650D7002B1D8B /* SelectorChecker.h */, + 41B8CD4316D04591000E8CC0 /* SelectorCheckerFastPath.cpp */, + 41B8CD4416D04591000E8CC0 /* SelectorCheckerFastPath.h */, + 415071551685067300C3C7B3 /* SelectorFilter.cpp */, + 415071561685067300C3C7B3 /* SelectorFilter.h */, + A80E6CCA0A1989CA007FB8C5 /* ShadowValue.cpp */, + A80E6CBE0A1989CA007FB8C5 /* ShadowValue.h */, + E47A97CE163059FC005DCD99 /* StyleInvalidationAnalysis.cpp */, + E47A97CF163059FC005DCD99 /* StyleInvalidationAnalysis.h */, + 0FF5026E102BA9660066F39A /* StyleMedia.cpp */, + 0FF5026F102BA96A0066F39A /* StyleMedia.h */, + 0FF50270102BA96A0066F39A /* StyleMedia.idl */, + A80E6DF90A199067007FB8C5 /* StylePropertySet.cpp */, + A80E6DFA0A199067007FB8C5 /* StylePropertySet.h */, + E1B25104152A0BAF0069B779 /* StylePropertyShorthand.cpp */, + E1B25105152A0BAF0069B779 /* StylePropertyShorthand.h */, + E139866115478474001E3F65 /* StyleResolver.cpp */, + E139866215478474001E3F65 /* StyleResolver.h */, + E4BBED4A14FCDBA1003F0B98 /* StyleRule.cpp */, + E4BBED4B14FCDBA1003F0B98 /* StyleRule.h */, + E4946EAC156E64DD00D3297F /* StyleRuleImport.cpp */, + E4946EAD156E64DD00D3297F /* StyleRuleImport.h */, + A7B7619F161EE526002083D3 /* StyleScopeResolver.h */, + A8EA80050A19516E00A8EF5F /* StyleSheet.cpp */, + A8EA80040A19516E00A8EF5F /* StyleSheet.h */, + 850656DC0AAB44D9002D15C0 /* StyleSheet.idl */, + E4F9EEF0156D84C400D23E7E /* StyleSheetContents.cpp */, + E4F9EEF1156D84C400D23E7E /* StyleSheetContents.h */, + A8EA80030A19516E00A8EF5F /* StyleSheetList.cpp */, + A8EA80020A19516E00A8EF5F /* StyleSheetList.h */, + 850656DF0AAB454F002D15C0 /* StyleSheetList.idl */, + 93CA4CA209DF93FA00DF8677 /* svg.css */, + B2227B000D00BFF10071B782 /* SVGCSSComputedStyleDeclaration.cpp */, + B2227B010D00BFF10071B782 /* SVGCSSParser.cpp */, + B2227B020D00BFF10071B782 /* SVGCSSPropertyNames.in */, + B2227B030D00BFF10071B782 /* SVGCSSStyleSelector.cpp */, + B2227B040D00BFF10071B782 /* SVGCSSValueKeywords.in */, + FB484F4A171F821E00040755 /* TransformFunctions.cpp */, + FB484F4B171F821E00040755 /* TransformFunctions.h */, + BC5EC1760A507E3E006007F5 /* view-source.css */, + 3FFFF9AB159D9B060020BBD5 /* ViewportStyleResolver.cpp */, + 3FFFF9AC159D9B060020BBD5 /* ViewportStyleResolver.h */, + 150B923715F08DC400E10986 /* WebKitCSSArrayFunctionValue.cpp */, + 150B923815F08DC400E10986 /* WebKitCSSArrayFunctionValue.h */, + A2E8AE2E16A48E1C006BB3AA /* WebKitCSSFilterRule.cpp */, + A2E8AE2F16A48E1C006BB3AA /* WebKitCSSFilterRule.h */, + 3106036C14327D2E00ABF4BA /* WebKitCSSFilterValue.cpp */, + 3106036D14327D2E00ABF4BA /* WebKitCSSFilterValue.h */, + 3106036E14327D2E00ABF4BA /* WebKitCSSFilterValue.idl */, + 31288E6E0E3005D6003619AE /* WebKitCSSKeyframeRule.cpp */, + 31288E6F0E3005D6003619AE /* WebKitCSSKeyframeRule.h */, + 316FE0910E6CCD7F00BF6088 /* WebKitCSSKeyframeRule.idl */, + 31288E700E3005D6003619AE /* WebKitCSSKeyframesRule.cpp */, + 31288E710E3005D6003619AE /* WebKitCSSKeyframesRule.h */, + 316FE0920E6CCD7F00BF6088 /* WebKitCSSKeyframesRule.idl */, + FB0B75EE1723428500F05D2A /* WebKitCSSMatFunctionValue.cpp */, + FB0B75EF1723428500F05D2A /* WebKitCSSMatFunctionValue.h */, + 498391550F1E776900C23782 /* WebKitCSSMatrix.cpp */, + 498391560F1E776900C23782 /* WebKitCSSMatrix.h */, + 498391570F1E776900C23782 /* WebKitCSSMatrix.idl */, + A24BF77A15CC3BAF003191F2 /* WebKitCSSMixFunctionValue.cpp */, + A24BF77915CC3BAF003191F2 /* WebKitCSSMixFunctionValue.h */, + 8AA61CFD144D595B00F37350 /* WebKitCSSRegionRule.cpp */, + 8AA61CFE144D595B00F37350 /* WebKitCSSRegionRule.h */, + 8AD0A55614C87425000D83C5 /* WebKitCSSRegionRule.idl */, + 5038BC0614711CDB0095E0D1 /* WebKitCSSShaderValue.cpp */, + 50B42157146976960087E604 /* WebKitCSSShaderValue.h */, + 0562F9441573ECEB0031CA16 /* WebKitCSSSVGDocumentValue.cpp */, + 0562F9451573ECEB0031CA16 /* WebKitCSSSVGDocumentValue.h */, + BC9ADD7F0CC4092200098C4C /* WebKitCSSTransformValue.cpp */, + BC9ADD220CC4032600098C4C /* WebKitCSSTransformValue.h */, + 31611E540E1C4D4A00F6A579 /* WebKitCSSTransformValue.idl */, + 3FFFF9A6159D9A550020BBD5 /* WebKitCSSViewportRule.cpp */, + 3FFFF9A7159D9A550020BBD5 /* WebKitCSSViewportRule.h */, + 3F2B33E3165ABD3500E3987C /* WebKitCSSViewportRule.idl */, + ); + path = css; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + F523D2F302DE443B018635CA /* rendering */ = { + isa = PBXGroup; + children = ( + 439046C212DA25CE00AF80A2 /* mathml */, + FD08A879175D3926002CD360 /* shapes */, + BC8C8FAA0DDCD2F200B592F4 /* style */, + 088C2F7412390080003D65CE /* svg */, + A8CFF04B0A154F09000A4234 /* AutoTableLayout.cpp */, + A8CFF0490A154F09000A4234 /* AutoTableLayout.h */, + BCE7898A1120E8020060ECE5 /* BidiRun.cpp */, + BCE789851120E7A60060ECE5 /* BidiRun.h */, + BCEA4815097D93020094C9E4 /* break_lines.cpp */, + BCEA4816097D93020094C9E4 /* break_lines.h */, + BCDD454D1236C95C009A7985 /* ColumnInfo.h */, + 9392F14F0AD1862300691BD4 /* CounterNode.cpp */, + 9392F14B0AD1861B00691BD4 /* CounterNode.h */, + A8CFF6CA0A1561CD000A4234 /* EllipsisBox.cpp */, + A8CFF6BD0A156118000A4234 /* EllipsisBox.h */, + 31313F631443B35E006E2A90 /* FilterEffectRenderer.cpp */, + 31313F641443B35E006E2A90 /* FilterEffectRenderer.h */, + A8CFF0480A154F09000A4234 /* FixedTableLayout.cpp */, + A8CFF04A0A154F09000A4234 /* FixedTableLayout.h */, + D72F6D77153159A3001EE44E /* FlowThreadController.cpp */, + D72F6D78153159A3001EE44E /* FlowThreadController.h */, + 935C477409AC4D8D00A6AAB4 /* GapRects.h */, + 4969B0F013D0B33F00DF3521 /* HitTestingTransformState.cpp */, + 4969B0F113D0B33F00DF3521 /* HitTestingTransformState.h */, + 2D8287F416E4A0380086BD00 /* HitTestLocation.cpp */, + 2D8287F516E4A0380086BD00 /* HitTestLocation.h */, + 930908900AF7EDE40081DF01 /* HitTestRequest.h */, + 9307F1D50AF2D59000DBA31A /* HitTestResult.cpp */, + 9307F1D60AF2D59000DBA31A /* HitTestResult.h */, + A8CFF5DF0A155A05000A4234 /* InlineBox.cpp */, + A8CFF5DE0A155A05000A4234 /* InlineBox.h */, + A8CFF5DD0A155A05000A4234 /* InlineFlowBox.cpp */, + A8CFF5DC0A155A05000A4234 /* InlineFlowBox.h */, + BCE789151120D6080060ECE5 /* InlineIterator.h */, + BCEA481A097D93020094C9E4 /* InlineTextBox.cpp */, + BCEA481B097D93020094C9E4 /* InlineTextBox.h */, + A120ACA113F9984600FE4AC7 /* LayoutRepainter.cpp */, + A120ACA013F9983700FE4AC7 /* LayoutRepainter.h */, + 2D9066040BE141D400956998 /* LayoutState.cpp */, + 2D9066050BE141D400956998 /* LayoutState.h */, + 9BA273F3172206BB0097CE47 /* LogicalSelectionOffsetCaches.h */, + 3774ABA30FA21EB400AD7DE9 /* OverlapTestRequestClient.h */, + 9377AB9F15DEFEEF0031FD04 /* Pagination.h */, + 0885067D11DA045B00182B98 /* PaintInfo.h */, + 0885067E11DA045B00182B98 /* PaintPhase.h */, + B2B1F7140D00CAA8004AEA64 /* PointerEventsHitRules.cpp */, + B2B1F7150D00CAA8004AEA64 /* PointerEventsHitRules.h */, + 6C70A81417707C49009A446E /* RegionOversetState.h */, + BCEA481C097D93020094C9E4 /* RenderApplet.cpp */, + BCEA481D097D93020094C9E4 /* RenderApplet.h */, + BCEA481E097D93020094C9E4 /* RenderArena.cpp */, + BCEA481F097D93020094C9E4 /* RenderArena.h */, + BCEA4820097D93020094C9E4 /* RenderBlock.cpp */, + BCEA4821097D93020094C9E4 /* RenderBlock.h */, + BCEA4813097D93020094C9E4 /* RenderBlockLineLayout.cpp */, + BCEA4822097D93020094C9E4 /* RenderBox.cpp */, + BCEA4823097D93020094C9E4 /* RenderBox.h */, + BC96DB450F3A882200573CB3 /* RenderBoxModelObject.cpp */, + BC96DB420F3A880E00573CB3 /* RenderBoxModelObject.h */, + BCEB179B143379F50052EAE9 /* RenderBoxRegionInfo.h */, + BCEA4824097D93020094C9E4 /* RenderBR.cpp */, + BCEA4825097D93020094C9E4 /* RenderBR.h */, + BCEA4826097D93020094C9E4 /* RenderButton.cpp */, + BCEA4827097D93020094C9E4 /* RenderButton.h */, + BCE4413112F748E2009B84B8 /* RenderCombineText.cpp */, + BCE4413212F748E2009B84B8 /* RenderCombineText.h */, + 9392F1430AD185FE00691BD4 /* RenderCounter.cpp */, + 9392F1410AD185F400691BD4 /* RenderCounter.h */, + BCEA482E097D93020094C9E4 /* RenderDeprecatedFlexibleBox.cpp */, + BCEA482F097D93020094C9E4 /* RenderDeprecatedFlexibleBox.h */, + D302754512A5FE84004BD828 /* RenderDetailsMarker.cpp */, + D302754612A5FE84004BD828 /* RenderDetailsMarker.h */, + 76F2E2EA15F74CEF005FF664 /* RenderDialog.h */, + 0F5B7A5210F65D7A00376302 /* RenderEmbeddedObject.cpp */, + 0F5B7A5310F65D7A00376302 /* RenderEmbeddedObject.h */, + A8EA73AF0A1900E300A8EF5F /* RenderFieldset.cpp */, + A8EA73B00A1900E300A8EF5F /* RenderFieldset.h */, + 066C772E0AB603FD00238CC4 /* RenderFileUploadControl.cpp */, + 066C772F0AB603FD00238CC4 /* RenderFileUploadControl.h */, + 53C8298B13D8D92700DE2DEB /* RenderFlexibleBox.cpp */, + 53C8298C13D8D92700DE2DEB /* RenderFlexibleBox.h */, + 508CCA4E13CF106B003151F3 /* RenderFlowThread.cpp */, + 508CCA4D13CF106B003151F3 /* RenderFlowThread.h */, + A871DECC0A1530C700B12A68 /* RenderFrame.cpp */, + A871DECB0A1530C700B12A68 /* RenderFrame.h */, + 0FD3080C117CF7E700A791F7 /* RenderFrameBase.cpp */, + 0FD3080D117CF7E700A791F7 /* RenderFrameBase.h */, + A871DECA0A1530C700B12A68 /* RenderFrameSet.cpp */, + A871DEC90A1530C700B12A68 /* RenderFrameSet.h */, + CDEA7C831276230400B846DD /* RenderFullScreen.cpp */, + CDEA7C821276230400B846DD /* RenderFullScreen.h */, + 0F3F0E57157030C3006DA57F /* RenderGeometryMap.cpp */, + 0F3F0E58157030C3006DA57F /* RenderGeometryMap.h */, + BC128B00137C8D4600CAC845 /* RenderGrid.cpp */, + BC128A72137C867C00CAC845 /* RenderGrid.h */, + BCEA482A097D93020094C9E4 /* RenderHTMLCanvas.cpp */, + BCEA482B097D93020094C9E4 /* RenderHTMLCanvas.h */, + 0FD308D3117D168400A791F7 /* RenderIFrame.cpp */, + 0FD308D4117D168400A791F7 /* RenderIFrame.h */, + BCEA4836097D93020094C9E4 /* RenderImage.cpp */, + BCEA4837097D93020094C9E4 /* RenderImage.h */, + 08F2F0071213E61700DCEC48 /* RenderImageResource.cpp */, + 08F2F0081213E61700DCEC48 /* RenderImageResource.h */, + 08641D4512142F7D008DE9F6 /* RenderImageResourceStyleImage.cpp */, + 08641D4612142F7D008DE9F6 /* RenderImageResourceStyleImage.h */, + BCEA4838097D93020094C9E4 /* RenderInline.cpp */, + BCEA4839097D93020094C9E4 /* RenderInline.h */, + 750D029211D0E7F300BD1B27 /* RenderInputSpeech.h */, + BCEA483A097D93020094C9E4 /* RenderLayer.cpp */, + BCEA483B097D93020094C9E4 /* RenderLayer.h */, + 0F580CFC0F12DE9B0051D689 /* RenderLayerBacking.cpp */, + 0F580CFB0F12DE9B0051D689 /* RenderLayerBacking.h */, + 0F580CFA0F12DE9B0051D689 /* RenderLayerCompositor.cpp */, + 0F580CF90F12DE9B0051D689 /* RenderLayerCompositor.h */, + 50D10D971545F5760096D288 /* RenderLayerFilterInfo.cpp */, + 50D10D981545F5760096D288 /* RenderLayerFilterInfo.h */, + 3C244FE5A375AC633F88BE6F /* RenderLayerModelObject.cpp */, + 3C244FE4A375AC633F88BE6F /* RenderLayerModelObject.h */, + BC33FB1A0F30EE85002CDD7C /* RenderLineBoxList.cpp */, + 0BE030A10F3112FB003C1A46 /* RenderLineBoxList.h */, + ABB5419C0ACDDFE4002820EB /* RenderListBox.cpp */, + ABB5419D0ACDDFE4002820EB /* RenderListBox.h */, + A8EA7A480A191A5200A8EF5F /* RenderListItem.cpp */, + A8EA7A4C0A191A5200A8EF5F /* RenderListItem.h */, + A8EA7A4B0A191A5200A8EF5F /* RenderListMarker.cpp */, + A8EA7A4A0A191A5200A8EF5F /* RenderListMarker.h */, + 0F56028E0E4B76580065B038 /* RenderMarquee.cpp */, + 0F56028D0E4B76580065B038 /* RenderMarquee.h */, + E4C279560CF9741900E97B98 /* RenderMedia.cpp */, + E4C279570CF9741900E97B98 /* RenderMedia.h */, + DE49B307165F2FE10010338D /* RenderMediaControlElements.cpp */, + DE49B308165F2FE10010338D /* RenderMediaControlElements.h */, + 41FA303C1316C29C00C0BFC5 /* RenderMediaControls.cpp */, + 41FA303D1316C29C00C0BFC5 /* RenderMediaControls.h */, + ABDDFE730A5C6E6F00A3E11D /* RenderMenuList.cpp */, + ABDDFE740A5C6E7000A3E11D /* RenderMenuList.h */, + A454424C119B3687009BE912 /* RenderMeter.cpp */, + A454424D119B3687009BE912 /* RenderMeter.h */, + BC45827E151299C10061A556 /* RenderMultiColumnBlock.cpp */, + BCC52FD5151298D1003F914B /* RenderMultiColumnBlock.h */, + 1A3586DD15264C450022A659 /* RenderMultiColumnFlowThread.cpp */, + 1A3586DE15264C450022A659 /* RenderMultiColumnFlowThread.h */, + BCE32B9D1517C22700F542EC /* RenderMultiColumnSet.cpp */, + BCE32B9B1517C0B100F542EC /* RenderMultiColumnSet.h */, + BC85F23E1519187300BC17BE /* RenderNamedFlowThread.cpp */, + BC85F23C151915E000BC17BE /* RenderNamedFlowThread.h */, + BCEA4840097D93020094C9E4 /* RenderObject.cpp */, + BCEA4841097D93020094C9E4 /* RenderObject.h */, + BC60EFB60F33A0E700812A93 /* RenderObjectChildList.cpp */, + BC2CC8DE0F32881000A9DF26 /* RenderObjectChildList.h */, + BCFA930710333193007B25D1 /* RenderOverflow.h */, + A871DEC80A1530C700B12A68 /* RenderPart.cpp */, + A871DECF0A1530C700B12A68 /* RenderPart.h */, + A43BF59A1149292800C643CA /* RenderProgress.cpp */, + A43BF59B1149292800C643CA /* RenderProgress.h */, + 5A574F22131DB93900471B88 /* RenderQuote.cpp */, + 5A574F23131DB93900471B88 /* RenderQuote.h */, + D70AD65513E1342B005B50B4 /* RenderRegion.cpp */, + D70AD65613E1342B005B50B4 /* RenderRegion.h */, + BCE93F461517C6D5008CCF74 /* RenderRegionSet.cpp */, + BCE93F441517C567008CCF74 /* RenderRegionSet.h */, + A871DFDE0A15376B00B12A68 /* RenderReplaced.cpp */, + A871DFDF0A15376B00B12A68 /* RenderReplaced.h */, + BCA846D40DC67A350026C309 /* RenderReplica.cpp */, + BCA846D50DC67A350026C309 /* RenderReplica.h */, + 1479FAE5109AE37500DED655 /* RenderRuby.cpp */, + 1479FAE6109AE37500DED655 /* RenderRuby.h */, + 1479FAE7109AE37500DED655 /* RenderRubyBase.cpp */, + 1479FAE8109AE37500DED655 /* RenderRubyBase.h */, + 1479FAE9109AE37500DED655 /* RenderRubyRun.cpp */, + 1479FAEA109AE37500DED655 /* RenderRubyRun.h */, + 1479FAEB109AE37500DED655 /* RenderRubyText.cpp */, + 1479FAEC109AE37500DED655 /* RenderRubyText.h */, + BC3BE9900E9C1C7C00835588 /* RenderScrollbar.cpp */, + BC3BE9910E9C1C7C00835588 /* RenderScrollbar.h */, + BC3BE9AA0E9C242000835588 /* RenderScrollbarPart.cpp */, + BC3BE9920E9C1C7C00835588 /* RenderScrollbarPart.h */, + BC3BE9A40E9C239600835588 /* RenderScrollbarTheme.cpp */, + BC3BE9980E9C1E5D00835588 /* RenderScrollbarTheme.h */, + 458FE4071589DF0B005609E6 /* RenderSearchField.cpp */, + 458FE4081589DF0B005609E6 /* RenderSearchField.h */, + 0F11A54E0F39233100C37884 /* RenderSelectionInfo.h */, + AB247A6A0AFD6383003FA5FD /* RenderSlider.cpp */, + AB247A6B0AFD6383003FA5FD /* RenderSlider.h */, + 31E8D8BA160BC94B004CE8F5 /* RenderSnapshottedPlugIn.cpp */, + 31E8D8BB160BC94C004CE8F5 /* RenderSnapshottedPlugIn.h */, + A8DF4AE20980C42C0052981B /* RenderTable.cpp */, + A8DF4AE10980C42C0052981B /* RenderTable.h */, + 6ED878C2147493F4004C3597 /* RenderTableCaption.cpp */, + 6ED878C3147493F4004C3597 /* RenderTableCaption.h */, + A8DF4AE00980C42C0052981B /* RenderTableCell.cpp */, + A8DF4ADF0980C42C0052981B /* RenderTableCell.h */, + A8DF4ADE0980C42C0052981B /* RenderTableCol.cpp */, + A8DF4AE70980C42C0052981B /* RenderTableCol.h */, + A8DF4AE60980C42C0052981B /* RenderTableRow.cpp */, + A8DF4AE40980C42C0052981B /* RenderTableRow.h */, + A8DF4AE30980C42C0052981B /* RenderTableSection.cpp */, + A8DF4AE50980C42C0052981B /* RenderTableSection.h */, + BCEA484C097D93020094C9E4 /* RenderText.cpp */, + BCEA484D097D93020094C9E4 /* RenderText.h */, + AB67D1A6097F3AE300F9392E /* RenderTextControl.cpp */, + AB67D1A7097F3AE300F9392E /* RenderTextControl.h */, + 083DAEA20F01A7FB00342754 /* RenderTextControlMultiLine.cpp */, + 083DAEA30F01A7FB00342754 /* RenderTextControlMultiLine.h */, + 083DAEA40F01A7FB00342754 /* RenderTextControlSingleLine.cpp */, + 083DAEA50F01A7FB00342754 /* RenderTextControlSingleLine.h */, + BCEA484E097D93020094C9E4 /* RenderTextFragment.cpp */, + BCEA484F097D93020094C9E4 /* RenderTextFragment.h */, + 86FF885E15DE3B8200BD6B28 /* RenderTextTrackCue.cpp */, + 86FF885F15DE3B8200BD6B28 /* RenderTextTrackCue.h */, + BCEA484A097D93020094C9E4 /* RenderTheme.cpp */, + BCEA484B097D93020094C9E4 /* RenderTheme.h */, + BCEA4848097D93020094C9E4 /* RenderThemeMac.h */, + BCEA4849097D93020094C9E4 /* RenderThemeMac.mm */, + 93955A4203D72932008635CE /* RenderTreeAsText.cpp */, + 93955A4103D72932008635CE /* RenderTreeAsText.h */, + E4B41E330CBFB60900AF2ECE /* RenderVideo.cpp */, + E4B41E340CBFB60900AF2ECE /* RenderVideo.h */, + BCEA4828097D93020094C9E4 /* RenderView.cpp */, + BCEA4829097D93020094C9E4 /* RenderView.h */, + A871DFE10A15376B00B12A68 /* RenderWidget.cpp */, + A871DFE00A15376B00B12A68 /* RenderWidget.h */, + 93799EF60BF2743600D0F230 /* RenderWordBreak.cpp */, + 93799EF70BF2743600D0F230 /* RenderWordBreak.h */, + A8CFF5E00A155A05000A4234 /* RootInlineBox.cpp */, + A8CFF5DA0A155A05000A4234 /* RootInlineBox.h */, + 5D925B650F64D4DD00B847F0 /* ScrollBehavior.cpp */, + 5D925B660F64D4DD00B847F0 /* ScrollBehavior.h */, + A8CFF04C0A154F09000A4234 /* TableLayout.h */, + 37FC96DA1104ED71003E1FAD /* TrailingFloatsRootInlineBox.h */, + BCA257141293C010007A263D /* VerticalPositionCache.h */, + ); + path = rendering; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + F523D32402DE4478018635CA /* dom */ = { + isa = PBXGroup; + children = ( + E1C4DE6D0EA75C650023CCD6 /* ActiveDOMObject.cpp */, + E1C4DE680EA75C1E0023CCD6 /* ActiveDOMObject.h */, + A8C4A7FC09D563270003AC8D /* Attr.cpp */, + A8C4A7FB09D563270003AC8D /* Attr.h */, + 93EEC1E509C2877700C515D1 /* Attr.idl */, + A8C4A7F909D563270003AC8D /* Attribute.h */, + BC9462D7107A7B4C00857193 /* BeforeLoadEvent.h */, + BC9462CB107A7A3900857193 /* BeforeLoadEvent.idl */, + AB23A32509BBA7D00067CC53 /* BeforeTextInsertedEvent.cpp */, + AB23A32609BBA7D00067CC53 /* BeforeTextInsertedEvent.h */, + 85031B260A44EFC700F992E0 /* BeforeUnloadEvent.cpp */, + 85031B270A44EFC700F992E0 /* BeforeUnloadEvent.h */, + 6550B693099DF0270090D781 /* CDATASection.cpp */, + 6550B694099DF0270090D781 /* CDATASection.h */, + 85089CC90A98C2AB00A275AA /* CDATASection.idl */, + 6550B695099DF0270090D781 /* CharacterData.cpp */, + 6550B696099DF0270090D781 /* CharacterData.h */, + 93EEC1E609C2877700C515D1 /* CharacterData.idl */, + 93F925420F7EF5B8007E37C9 /* CheckedRadioButtons.cpp */, + 93F925410F7EF5B8007E37C9 /* CheckedRadioButtons.h */, + D619A305144E00BE004BC302 /* ChildListMutationScope.cpp */, + D619A306144E00BE004BC302 /* ChildListMutationScope.h */, + A818721A0977D3C0005826D9 /* ChildNodeList.cpp */, + A81872150977D3C0005826D9 /* ChildNodeList.h */, + BC904B720D10998F00680D32 /* ClassNodeList.cpp */, + BC904B730D10998F00680D32 /* ClassNodeList.h */, + BCC065770F3CE1B700CD2D87 /* ClientRect.cpp */, + BCC065780F3CE1B700CD2D87 /* ClientRect.h */, + BCC065790F3CE1B700CD2D87 /* ClientRect.idl */, + BCC0657A0F3CE1B700CD2D87 /* ClientRectList.cpp */, + BCC0657B0F3CE1B700CD2D87 /* ClientRectList.h */, + BCC0657C0F3CE1B700CD2D87 /* ClientRectList.idl */, + A784941A0B5FE507001E237A /* Clipboard.cpp */, + 85031B280A44EFC700F992E0 /* Clipboard.h */, + BCA83E360D7CDC4E003421A8 /* Clipboard.idl */, + 4B8AF4A90B1CE02B00687690 /* ClipboardAccessPolicy.h */, + 85031B290A44EFC700F992E0 /* ClipboardEvent.cpp */, + 85031B2A0A44EFC700F992E0 /* ClipboardEvent.h */, + 6550B697099DF0270090D781 /* Comment.cpp */, + 6550B698099DF0270090D781 /* Comment.h */, + 85089CC70A98C22600A275AA /* Comment.idl */, + 4A6A0C5915232F2400B09C6E /* ComposedShadowTreeWalker.cpp */, + 4A6A0C5A15232F2400B09C6E /* ComposedShadowTreeWalker.h */, + 79F2F59E1091939A000D87CB /* CompositionEvent.cpp */, + 79F2F59F1091939A000D87CB /* CompositionEvent.h */, + 79F2F5A01091939A000D87CB /* CompositionEvent.idl */, + A81872140977D3C0005826D9 /* ContainerNode.cpp */, + A81872110977D3C0005826D9 /* ContainerNode.h */, + A7A78CD41532BA62006C21E4 /* ContainerNodeAlgorithms.cpp */, + E1A1470711102B1500EEC0F3 /* ContainerNodeAlgorithms.h */, + 97627B8B14FB3CEE002CDCA1 /* ContextDestructionObserver.cpp */, + 97627B8C14FB3CEE002CDCA1 /* ContextDestructionObserver.h */, + A7D3CA0E157DF8E900860A97 /* ContextFeatures.cpp */, + A7D3CA0F157DF8E900860A97 /* ContextFeatures.h */, + 2E3FAA0811A36BF100576624 /* CrossThreadTask.h */, + 62CD32561157E57C0063B0A7 /* CustomEvent.cpp */, + 62CD32571157E57C0063B0A7 /* CustomEvent.h */, + 62CD32581157E57C0063B0A7 /* CustomEvent.idl */, + BC64641B11D7F416006455B0 /* DatasetDOMStringMap.cpp */, + BC64641A11D7F416006455B0 /* DatasetDOMStringMap.h */, + 81AC5997131636E60009A7E0 /* DataTransferItem.h */, + 81AC5AE81316392E0009A7E0 /* DataTransferItem.idl */, + 81AC5998131636E60009A7E0 /* DataTransferItemList.h */, + 81AC5AE91316392E0009A7E0 /* DataTransferItemList.idl */, + A8C228A011D5722E00D5A7D3 /* DecodedDataDocumentParser.cpp */, + A8C2289F11D5722E00D5A7D3 /* DecodedDataDocumentParser.h */, + 31FB1A4F120A5D0600DC02A0 /* DeviceMotionClient.h */, + 31FB1A50120A5D0600DC02A0 /* DeviceMotionController.cpp */, + 31FB1A51120A5D0600DC02A0 /* DeviceMotionController.h */, + 31FB1A52120A5D0600DC02A0 /* DeviceMotionData.cpp */, + 31FB1A53120A5D0600DC02A0 /* DeviceMotionData.h */, + 31FB1A54120A5D0600DC02A0 /* DeviceMotionEvent.cpp */, + 31FB1A55120A5D0600DC02A0 /* DeviceMotionEvent.h */, + 31FB1A56120A5D0600DC02A0 /* DeviceMotionEvent.idl */, + 59A8F1D711A69520001AC34A /* DeviceOrientationClient.h */, + 59A8F1D311A69508001AC34A /* DeviceOrientationController.cpp */, + 59A8F1D511A69513001AC34A /* DeviceOrientationController.h */, + 59D1C10311EB5DCF00B638C8 /* DeviceOrientationData.cpp */, + 590E1B4811E4EF4B0069F784 /* DeviceOrientationData.h */, + 59A85EA1119D68D900DEF1EF /* DeviceOrientationEvent.cpp */, + 59A85EA3119D68EC00DEF1EF /* DeviceOrientationEvent.h */, + 59A85EAA119D7B6E00DEF1EF /* DeviceOrientationEvent.idl */, + A8185F3409765765005826D9 /* Document.cpp */, + A8185F3809765765005826D9 /* Document.h */, + 6548E24809E1E04D00AF8020 /* Document.idl */, + A3BB59F11457A40D00AC56FE /* DocumentEventQueue.cpp */, + A3BB59F21457A40D00AC56FE /* DocumentEventQueue.h */, + A8185F3709765765005826D9 /* DocumentFragment.cpp */, + A8185F3509765765005826D9 /* DocumentFragment.h */, + 1A494ED50A123F1A00FDAFC1 /* DocumentFragment.idl */, + A781C6A613828B5D0012A62A /* DocumentMarker.cpp */, + ED2BA83B09A24B91006C0AC4 /* DocumentMarker.h */, + CE057FA31220731100A476D5 /* DocumentMarkerController.cpp */, + CE057FA41220731100A476D5 /* DocumentMarkerController.h */, + 14947FFB12F80CD200A0F631 /* DocumentOrderedMap.cpp */, + 14947FFC12F80CD200A0F631 /* DocumentOrderedMap.h */, + A8C2280D11D4A59700D5A7D3 /* DocumentParser.cpp */, + BCCFBAE70B5152ED0001F1D7 /* DocumentParser.h */, + AD6E71AA1668899D00320C13 /* DocumentSharedObjectPool.cpp */, + AD6E71AB1668899D00320C13 /* DocumentSharedObjectPool.h */, + E47E276716036EDC00EE2AFB /* DocumentStyleSheetCollection.cpp */, + E47E276416036ED200EE2AFB /* DocumentStyleSheetCollection.h */, + 86D982F6125C154000AD9E3D /* DocumentTiming.h */, + A8185F3209765765005826D9 /* DocumentType.cpp */, + A8185F3109765765005826D9 /* DocumentType.h */, + 93EEC1E809C2877700C515D1 /* DocumentType.idl */, + 978D07BD145A0F6C0096908D /* DOMCoreException.cpp */, + BC60D6E80D28D83400B9918F /* DOMCoreException.h */, + BC60D6EB0D28D99900B9918F /* DOMCoreException.idl */, + BC1BDF20156C17A9001C1243 /* DOMError.cpp */, + BC1BDF21156C17A9001C1243 /* DOMError.h */, + BC1BDF22156C17A9001C1243 /* DOMError.idl */, + BC9A6141146859D9006057FD /* DOMExceptions.in */, + A8185F3609765765005826D9 /* DOMImplementation.cpp */, + A8185F3309765765005826D9 /* DOMImplementation.h */, + 93EEC1E909C2877700C515D1 /* DOMImplementation.idl */, + 52B6C9BD15E3F4DF00690B05 /* DOMNamedFlowCollection.cpp */, + 52B6C9BE15E3F4DF00690B05 /* DOMNamedFlowCollection.h */, + 52B6C9BF15E3F4DF00690B05 /* DOMNamedFlowCollection.idl */, + C55610F011A704EB00B82D27 /* DOMStringList.cpp */, + C544274911A57E7A0063A749 /* DOMStringList.h */, + C544274A11A57E7A0063A749 /* DOMStringList.idl */, + BC64640711D7F304006455B0 /* DOMStringMap.cpp */, + BC64640811D7F304006455B0 /* DOMStringMap.h */, + BC64647911D800CD006455B0 /* DOMStringMap.idl */, + 05FD69DF12845D4300B2BEB3 /* DOMTimeStamp.h */, + A8C4A7F609D563270003AC8D /* Element.cpp */, + A8C4A7F509D563270003AC8D /* Element.h */, + 93EEC1EA09C2877700C515D1 /* Element.idl */, + 4FAB48641643A66D00F70C07 /* ElementRareData.cpp */, + 637B7ADE0E8767B800E32194 /* ElementRareData.h */, + 57CF4C8414F7597A00ECFF14 /* ElementShadow.cpp */, + 57CF4C8514F7597A00ECFF14 /* ElementShadow.h */, + A8EA7EBA0A1945D000A8EF5F /* Entity.h */, + 93EEC1EB09C2877700C515D1 /* Entity.idl */, + A8EA7EB90A1945D000A8EF5F /* EntityReference.cpp */, + A8EA7EB80A1945D000A8EF5F /* EntityReference.h */, + 85089CCB0A98C33A00A275AA /* EntityReference.idl */, + 2ECF7ADE10162B5800427DE7 /* ErrorEvent.cpp */, + 2ECF7ADF10162B5800427DE7 /* ErrorEvent.h */, + 2ECF7AE010162B5800427DE7 /* ErrorEvent.idl */, + 85031B2B0A44EFC700F992E0 /* Event.cpp */, + 85031B2C0A44EFC700F992E0 /* Event.h */, + 14E836D209F8512000B85AE4 /* Event.idl */, + 4138D3341244054800323D33 /* EventContext.cpp */, + 4138D3331244054800323D33 /* EventContext.h */, + 418A06CF133C04D500CD379C /* EventDispatcher.cpp */, + 418A06CE133C04D500CD379C /* EventDispatcher.h */, + 4AF1AD3C13FD23A400AA9590 /* EventDispatchMediator.cpp */, + 4AF1AD3D13FD23A400AA9590 /* EventDispatchMediator.h */, + 978D07BB145A0F560096908D /* EventException.cpp */, + BC60D9090D2A17CE00B9918F /* EventException.h */, + BC60D90A0D2A17CE00B9918F /* EventException.idl */, + 97665011144FAA4200F6BB51 /* EventFactory.h */, + 935FBC4409BA00B900E230B1 /* EventListener.h */, + 85AFA7410AAF298400E84305 /* EventListener.idl */, + AD4495F1141FC08900541EDF /* EventListenerMap.cpp */, + AD4495F2141FC08900541EDF /* EventListenerMap.h */, + 939885C108B7E3D100E707C4 /* EventNames.cpp */, + 939885C208B7E3D100E707C4 /* EventNames.h */, + BC9A6142146859D9006057FD /* EventNames.in */, + 4AAAB4C216D379B5001DA41B /* EventPathWalker.cpp */, + 4AAAB4C316D379B5001DA41B /* EventPathWalker.h */, + 8F6756191288B17B0047ACA3 /* EventQueue.h */, + 4A5CB1C316C3A5FD00AB2886 /* EventRetargeter.cpp */, + 4A5CB1C416C3A5FD00AB2886 /* EventRetargeter.h */, + CE5CB1B314EDAB6F00BB2795 /* EventSender.h */, + E12EDBE90B308E0B002704B6 /* EventTarget.cpp */, + E12EDB7A0B308A78002704B6 /* EventTarget.h */, + 85AFA7420AAF298400E84305 /* EventTarget.idl */, + CDCE5CD014633BC900D47CCA /* EventTargetFactory.in */, + BC60D8F00D2A11E000B9918F /* ExceptionBase.cpp */, + BC60D8F10D2A11E000B9918F /* ExceptionBase.h */, + 935FBCF109BA143B00E230B1 /* ExceptionCode.h */, + A7CACDB013CE875B00BBBE3F /* ExceptionCodePlaceholder.cpp */, + A74BB76A13BDA86300FF7BF0 /* ExceptionCodePlaceholder.h */, + B6D9D23414EABD260090D75E /* FocusEvent.cpp */, + B6D9D23314EABD260090D75E /* FocusEvent.h */, + B6D9D27214EABF030090D75E /* FocusEvent.idl */, + A853123C11D0471B00D4D077 /* FragmentScriptingPermission.h */, + 0720B09E14D3323500642955 /* GenericEventQueue.cpp */, + 0720B09F14D3323500642955 /* GenericEventQueue.h */, + 0720B09F14D3323500642956 /* GestureEvent.cpp */, + 0720B09F14D3323500642957 /* GestureEvent.h */, + 2442BBF81194C9D300D49469 /* HashChangeEvent.h */, + 8482B7441198C32E00BFB005 /* HashChangeEvent.idl */, + 45099C401370A7800058D513 /* IconURL.cpp */, + 45BAC2AF1360BBAB005DA258 /* IconURL.h */, + C3CF17A015B0063F00276D39 /* IdTargetObserver.cpp */, + C3CF17A115B0063F00276D39 /* IdTargetObserver.h */, + C3CF17A215B0063F00276D39 /* IdTargetObserverRegistry.cpp */, + C3CF17A315B0063F00276D39 /* IdTargetObserverRegistry.h */, + 8AB4BC76126FDB7100DEB727 /* IgnoreDestructiveWriteCountIncrementer.h */, + 85031B2D0A44EFC700F992E0 /* KeyboardEvent.cpp */, + 85031B2E0A44EFC700F992E0 /* KeyboardEvent.h */, + 14CF7C2009F7110600EB3665 /* KeyboardEvent.idl */, + BC7FA61E0D1F0CBD00DB22A9 /* LiveNodeList.cpp */, + BC7FA61F0D1F0CBD00DB22A9 /* LiveNodeList.h */, + BC9A6144146859D9006057FD /* make_dom_exceptions.pl */, + BC9A6145146859D9006057FD /* make_event_factory.pl */, + BC9A6146146859D9006057FD /* make_names.pl */, + E1ADECCD0E76AD8B004A1A5E /* MessageChannel.cpp */, + E1ADECCC0E76AD8B004A1A5E /* MessageChannel.h */, + E1ADECD00E76ADAB004A1A5E /* MessageChannel.idl */, + 75793E800D0CE0B3007FC0AC /* MessageEvent.cpp */, + 75793E810D0CE0B3007FC0AC /* MessageEvent.h */, + 75793E820D0CE0B3007FC0AC /* MessageEvent.idl */, + E1ADECBE0E76ACF1004A1A5E /* MessagePort.cpp */, + E1ADECBD0E76ACF1004A1A5E /* MessagePort.h */, + E1ADECC60E76AD1F004A1A5E /* MessagePort.idl */, + 41BF700A0FE86F49005E8DEC /* MessagePortChannel.h */, + 9B375ED914478A0100F3CAE5 /* MicroDataItemList.h */, + 85031B2F0A44EFC700F992E0 /* MouseEvent.cpp */, + 85031B300A44EFC700F992E0 /* MouseEvent.h */, + 141B94E509EC4223000E9413 /* MouseEvent.idl */, + 85031B310A44EFC700F992E0 /* MouseRelatedEvent.cpp */, + 85031B320A44EFC700F992E0 /* MouseRelatedEvent.h */, + C6F0900114327B6100685849 /* MutationCallback.h */, + 85031B330A44EFC700F992E0 /* MutationEvent.cpp */, + 85031B340A44EFC700F992E0 /* MutationEvent.h */, + 93EEC1F309C2877700C515D1 /* MutationEvent.idl */, + C6F0900514327B6100685849 /* MutationObserver.cpp */, + C6F0900614327B6100685849 /* MutationObserver.h */, + C6F0900714327B6100685849 /* MutationObserver.idl */, + D6E528A1149A926D00EFE1F3 /* MutationObserverInterestGroup.cpp */, + D6E528A2149A926D00EFE1F3 /* MutationObserverInterestGroup.h */, + D6E276AD14637455001D280A /* MutationObserverRegistration.cpp */, + D6E276AE14637455001D280A /* MutationObserverRegistration.h */, + C6F08FB91430FE8F00685849 /* MutationRecord.cpp */, + C6F08FBA1430FE8F00685849 /* MutationRecord.h */, + C6F08FBB1430FE8F00685849 /* MutationRecord.idl */, + 52B6C9C015E3F4DF00690B05 /* NamedFlowCollection.cpp */, + 52B6C9C115E3F4DF00690B05 /* NamedFlowCollection.h */, + BCF34A3611A231CD00C71804 /* NamedNodeMap.cpp */, + A81872180977D3C0005826D9 /* NamedNodeMap.h */, + 85ACA9F90A9B631000671E90 /* NamedNodeMap.idl */, + A81872190977D3C0005826D9 /* NameNodeList.cpp */, + A81872130977D3C0005826D9 /* NameNodeList.h */, + A8C4A7EE09D563270003AC8D /* Node.cpp */, + 14115B5109F84B7100CA4FC1 /* Node.h */, + 14DC0D0B09FECFA4007B0235 /* Node.idl */, + 854FE7260A2297BE0058D7AD /* NodeFilter.cpp */, + 854FE7270A2297BE0058D7AD /* NodeFilter.h */, + 14115AF909F847D600CA4FC1 /* NodeFilter.idl */, + 854FE7280A2297BE0058D7AD /* NodeFilterCondition.cpp */, + 854FE7290A2297BE0058D7AD /* NodeFilterCondition.h */, + 854FE72A0A2297BE0058D7AD /* NodeIterator.cpp */, + 854FE72B0A2297BE0058D7AD /* NodeIterator.h */, + 1A750D870A90E394000FF215 /* NodeIterator.idl */, + A81872100977D3C0005826D9 /* NodeList.h */, + 85ACA9FA0A9B631000671E90 /* NodeList.idl */, + 4FAB48661643A67E00F70C07 /* NodeRareData.cpp */, + 63189AE20E83A33300012E41 /* NodeRareData.h */, + A7F5D94D1384F02D00A29A87 /* NodeRenderingContext.cpp */, + A7F5D94E1384F02D00A29A87 /* NodeRenderingContext.h */, + A7211F231678A54200957444 /* NodeRenderingTraversal.cpp */, + A7211F241678A54200957444 /* NodeRenderingTraversal.h */, + 63D7B32C0E78CD3F00F7617C /* NodeRenderStyle.h */, + E43105B716750F0C00DB2FB8 /* NodeTraversal.cpp */, + E43105BA16750F1600DB2FB8 /* NodeTraversal.h */, + 9382AAB10D8C386100F357A6 /* NodeWithIndex.h */, + A8EA7EB70A1945D000A8EF5F /* Notation.cpp */, + A8EA7EB60A1945D000A8EF5F /* Notation.h */, + 93EEC1F409C2877700C515D1 /* Notation.idl */, + 1A0D57340A5C77FE007EDD4C /* OverflowEvent.cpp */, + 1A0D57350A5C77FE007EDD4C /* OverflowEvent.h */, + 1A0D57380A5C7812007EDD4C /* OverflowEvent.idl */, + E1284AE910447DEE00EAEB52 /* PageTransitionEvent.cpp */, + E1284AE010447D4500EAEB52 /* PageTransitionEvent.h */, + E1284AD910447AEB00EAEB52 /* PageTransitionEvent.idl */, + 8A7CC96F12076F8A001D4588 /* PendingScript.cpp */, + 8A7CC96A12076D73001D4588 /* PendingScript.h */, + 41BF700D0FE86F61005E8DEC /* PlatformMessagePortChannel.cpp */, + 41BF700E0FE86F61005E8DEC /* PlatformMessagePortChannel.h */, + 5189F0DD10B46B0E00F3C739 /* PopStateEvent.cpp */, + 5174E20810A1F44F00F95E6F /* PopStateEvent.h */, + 5174E20B10A1F49A00F95E6F /* PopStateEvent.idl */, + BE91FC8C06133666005E3790 /* Position.cpp */, + BE91FC8B06133666005E3790 /* Position.h */, + 37919C210B7D188600A56998 /* PositionIterator.cpp */, + 37919C220B7D188600A56998 /* PositionIterator.h */, + A8EA7EB50A1945D000A8EF5F /* ProcessingInstruction.cpp */, + A8EA7EB40A1945D000A8EF5F /* ProcessingInstruction.h */, + 93EEC1F509C2877700C515D1 /* ProcessingInstruction.idl */, + E4B41E010CBF8EAA00AF2ECE /* ProgressEvent.cpp */, + E4B41E020CBF8EAA00AF2ECE /* ProgressEvent.h */, + E4B41E030CBF8EAA00AF2ECE /* ProgressEvent.idl */, + 1059459815B42AA0004D37FD /* PropertyNodeList.h */, + 1059459A15B42AC0004D37FD /* PropertyNodeList.idl */, + FF945EC9161F7F3600971BC8 /* PseudoElement.cpp */, + FF945ECA161F7F3600971BC8 /* PseudoElement.h */, + 550A0BC7085F6039007353D6 /* QualifiedName.cpp */, + 550A0BC8085F6039007353D6 /* QualifiedName.h */, + F523D30302DE4476018635CA /* Range.cpp */, + F523D30402DE4476018635CA /* Range.h */, + 936DD03A09CEAC270056AE8C /* Range.idl */, + 93D9D53B0DA27E180077216C /* RangeBoundaryPoint.h */, + 978D07B9145A0F3C0096908D /* RangeException.cpp */, + D23CA56B0AB0EB8D005108A5 /* RangeException.h */, + D23CA5480AB0E983005108A5 /* RangeException.idl */, + A84D827B11D333ED00972990 /* RawDataDocumentParser.h */, + 85031B350A44EFC700F992E0 /* RegisteredEventListener.cpp */, + 85031B360A44EFC700F992E0 /* RegisteredEventListener.h */, + A76E5F7E135E0DCF00A69837 /* RenderedDocumentMarker.h */, + 4998AEC413F9D0EA0090B1AA /* RequestAnimationFrameCallback.h */, + 4998AEC513F9D0EA0090B1AA /* RequestAnimationFrameCallback.idl */, + 9BD0BF9212A42BF50072FD43 /* ScopedEventQueue.cpp */, + 9BD0BF9112A42BF50072FD43 /* ScopedEventQueue.h */, + A84D82C011D3474800972990 /* ScriptableDocumentParser.cpp */, + A84D82BF11D3474800972990 /* ScriptableDocumentParser.h */, + 4998AECF13FB224D0090B1AA /* ScriptedAnimationController.cpp */, + 4998AED013FB224D0090B1AA /* ScriptedAnimationController.h */, + 08A484750E5272C500C3FE76 /* ScriptElement.cpp */, + 08A484760E5272C500C3FE76 /* ScriptElement.h */, + E11C9DAF0EB3699500E409DB /* ScriptExecutionContext.cpp */, + E11C9D9A0EB3681200E409DB /* ScriptExecutionContext.h */, + 8A413ADF1207BBA50082016E /* ScriptRunner.cpp */, + 8A413ADE1207BBA50082016E /* ScriptRunner.h */, + 976F36E814686225005E93B4 /* SecurityContext.cpp */, + 976F36E914686225005E93B4 /* SecurityContext.h */, + 2D5BC42516F882BE007048D0 /* SecurityPolicyViolationEvent.h */, + 2D5BC42616F882BE007048D0 /* SecurityPolicyViolationEvent.idl */, + E45322A9140CE267005A0F92 /* SelectorQuery.cpp */, + E45322AA140CE267005A0F92 /* SelectorQuery.h */, + A6D169611346B49B000EB770 /* ShadowRoot.cpp */, + A6D169631346B4C1000EB770 /* ShadowRoot.h */, + A7DB418114CE1F0A00A2E316 /* ShadowRoot.idl */, + 31741AAB16635E45008A5B7E /* SimulatedClickOptions.h */, + D01A27AB10C9BFD800026A42 /* SpaceSplitString.cpp */, + D01A27AC10C9BFD800026A42 /* SpaceSplitString.h */, + BC7FA62C0D1F0EFF00DB22A9 /* StaticNodeList.cpp */, + BC7FA62B0D1F0EFF00DB22A9 /* StaticNodeList.h */, + 8102C5871325BB1100DDE67A /* StringCallback.cpp */, + 81AC6C35131C57D30009A7E0 /* StringCallback.h */, + 81AC6C34131C57C20009A7E0 /* StringCallback.idl */, + A8C4A7EC09D563270003AC8D /* StyledElement.cpp */, + A8C4A7EB09D563270003AC8D /* StyledElement.h */, + AA4C3A740B2B1679002334A2 /* StyleElement.cpp */, + AA4C3A750B2B1679002334A2 /* StyleElement.h */, + BCE3BEC00D222B1D007E06E4 /* TagNodeList.cpp */, + BCE3BEC10D222B1D007E06E4 /* TagNodeList.h */, + C65046A8167BFB5500CC2A4D /* TemplateContentDocumentFragment.h */, + 6550B69B099DF0270090D781 /* Text.cpp */, + 6550B69C099DF0270090D781 /* Text.h */, + 93EEC1F609C2877700C515D1 /* Text.idl */, + 933A142B0B7D188600A53FFD /* TextEvent.cpp */, + 933A142D0B7D188600A53FFD /* TextEvent.h */, + 933A142C0B7D188600A53FFD /* TextEvent.idl */, + A77B419F12E675A90054343D /* TextEventInputType.h */, + 5DB1BC6810715A6400EFAA49 /* TransformSource.h */, + 5DB1BC6910715A6400EFAA49 /* TransformSourceLibxslt.cpp */, + E17B491316A9B093001C8839 /* TransitionEvent.cpp */, + E17B491416A9B093001C8839 /* TransitionEvent.h */, + E17B490B16A97269001C8839 /* TransitionEvent.idl */, + 854FE72C0A2297BE0058D7AD /* Traversal.cpp */, + 854FE72D0A2297BE0058D7AD /* Traversal.h */, + 37FD4297118368460093C029 /* TreeDepthLimit.h */, + 14D64B5A134A5B6B00E58FDA /* TreeScope.cpp */, + 14D64B5B134A5B6B00E58FDA /* TreeScope.h */, + A77E1FED14AACB6E005B7CB6 /* TreeScopeAdopter.cpp */, + A77E1FEE14AACB6E005B7CB6 /* TreeScopeAdopter.h */, + 854FE72E0A2297BE0058D7AD /* TreeWalker.cpp */, + 854FE72F0A2297BE0058D7AD /* TreeWalker.h */, + 1A750D3C0A90DE35000FF215 /* TreeWalker.idl */, + 85031B370A44EFC700F992E0 /* UIEvent.cpp */, + 85031B380A44EFC700F992E0 /* UIEvent.h */, + 141B94EE09EC425A000E9413 /* UIEvent.idl */, + 93354A3B0B24F8C9003F6DEA /* UIEventWithKeyState.cpp */, + 85031B390A44EFC700F992E0 /* UIEventWithKeyState.h */, + A769E96916689D0C005D4529 /* UserActionElementSet.cpp */, + A72763BE16689BFB002FCACB /* UserActionElementSet.h */, + 2542F4D81166C25A00E89A86 /* UserGestureIndicator.cpp */, + 2542F4D91166C25A00E89A86 /* UserGestureIndicator.h */, + BCDF317911F8D683003C5BF8 /* UserTypingGestureIndicator.cpp */, + BCDF317A11F8D683003C5BF8 /* UserTypingGestureIndicator.h */, + CEF418CC1179678C009D112C /* ViewportArguments.cpp */, + CEF418CD1179678C009D112C /* ViewportArguments.h */, + 419BC2DC1685329900D64D6D /* VisitedLinkState.cpp */, + 419BC2DD1685329900D64D6D /* VisitedLinkState.h */, + 31C0FF1B0E4CEB6E007D6FE5 /* WebKitAnimationEvent.cpp */, + 31C0FF1C0E4CEB6E007D6FE5 /* WebKitAnimationEvent.h */, + 31C0FF1D0E4CEB6E007D6FE5 /* WebKitAnimationEvent.idl */, + D7613A4E1474F13F00DB8606 /* WebKitNamedFlow.cpp */, + D7613A4D1474F13F00DB8606 /* WebKitNamedFlow.h */, + D7613A4A1474EE9500DB8606 /* WebKitNamedFlow.idl */, + 31C0FF1E0E4CEB6E007D6FE5 /* WebKitTransitionEvent.cpp */, + 31C0FF1F0E4CEB6E007D6FE5 /* WebKitTransitionEvent.h */, + 31C0FF200E4CEB6E007D6FE5 /* WebKitTransitionEvent.idl */, + 85031B3A0A44EFC700F992E0 /* WheelEvent.cpp */, + 85031B3B0A44EFC700F992E0 /* WheelEvent.h */, + 93EEC1F709C2877700C515D1 /* WheelEvent.idl */, + 4123E568127B3041000FEEA7 /* WindowEventContext.cpp */, + 4123E567127B3041000FEEA7 /* WindowEventContext.h */, + ); + path = dom; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + FABE72EC1059C1EB00D999DD /* mathml */ = { + isa = PBXGroup; + children = ( + FA654A671108ABE2002615E0 /* mathattrs.in */, + FABE72ED1059C1EB00D999DD /* MathMLElement.cpp */, + FABE72EE1059C1EB00D999DD /* MathMLElement.h */, + FABE72EF1059C1EB00D999DD /* MathMLInlineContainerElement.cpp */, + FABE72F01059C1EB00D999DD /* MathMLInlineContainerElement.h */, + FABE72F11059C1EB00D999DD /* MathMLMathElement.cpp */, + FABE72F21059C1EB00D999DD /* MathMLMathElement.h */, + FA654A691108ABED002615E0 /* MathMLTextElement.cpp */, + FA654A6A1108ABED002615E0 /* MathMLTextElement.h */, + FABE72F31059C1EB00D999DD /* mathtags.in */, + ); + path = mathml; + sourceTree = ""; + }; + FBC220DD1237FBEB00BCF788 /* opengl */ = { + isa = PBXGroup; + children = ( + 6E67D2A41280E8A4008758F7 /* Extensions3DOpenGL.cpp */, + 6E67D2A51280E8A4008758F7 /* Extensions3DOpenGL.h */, + 44DAB5AF15A623580097C1E4 /* Extensions3DOpenGLCommon.cpp */, + 44DAB5B015A623580097C1E4 /* Extensions3DOpenGLCommon.h */, + FBC220DE1237FBEB00BCF788 /* GraphicsContext3DOpenGL.cpp */, + 96ABA42214BCB80E00D56204 /* GraphicsContext3DOpenGLCommon.cpp */, + ); + path = opengl; + sourceTree = ""; + }; + FD08A879175D3926002CD360 /* shapes */ = { + isa = PBXGroup; + children = ( + FD08A87A175D3926002CD360 /* PolygonShape.cpp */, + FD08A87B175D3926002CD360 /* PolygonShape.h */, + FD08A87C175D3926002CD360 /* RectangleShape.cpp */, + FD08A87D175D3926002CD360 /* RectangleShape.h */, + FD08A87E175D3926002CD360 /* Shape.cpp */, + FD08A87F175D3926002CD360 /* Shape.h */, + FD08A880175D3926002CD360 /* ShapeInfo.cpp */, + FD08A881175D3926002CD360 /* ShapeInfo.h */, + FD08A882175D3926002CD360 /* ShapeInsideInfo.cpp */, + FD08A883175D3926002CD360 /* ShapeInsideInfo.h */, + FD08A884175D3926002CD360 /* ShapeInterval.cpp */, + FD08A885175D3926002CD360 /* ShapeInterval.h */, + FD08A886175D3926002CD360 /* ShapeOutsideInfo.cpp */, + FD08A887175D3926002CD360 /* ShapeOutsideInfo.h */, + ); + path = shapes; + sourceTree = ""; + }; + FD315FA212B025B100C1A359 /* webaudio */ = { + isa = PBXGroup; + children = ( + FD315FF312B0267600C1A359 /* AnalyserNode.cpp */, + FD315FF412B0267600C1A359 /* AnalyserNode.h */, + FD315FF512B0267600C1A359 /* AnalyserNode.idl */, + FD5686C713AC180200B69C68 /* AsyncAudioDecoder.cpp */, + FD5686C813AC180200B69C68 /* AsyncAudioDecoder.h */, + FD629EA2154B47160006D026 /* AudioBasicInspectorNode.cpp */, + FD629EA1154B47160006D026 /* AudioBasicInspectorNode.h */, + FD315FAC12B0267500C1A359 /* AudioBasicProcessorNode.cpp */, + FD315FAD12B0267500C1A359 /* AudioBasicProcessorNode.h */, + FD315FAE12B0267500C1A359 /* AudioBuffer.cpp */, + FD315FAF12B0267500C1A359 /* AudioBuffer.h */, + FD315FB012B0267500C1A359 /* AudioBuffer.idl */, + FD5686CB13AC181400B69C68 /* AudioBufferCallback.h */, + FD5686CD13AC183E00B69C68 /* AudioBufferCallback.idl */, + FD315FB112B0267500C1A359 /* AudioBufferSourceNode.cpp */, + FD315FB212B0267500C1A359 /* AudioBufferSourceNode.h */, + FD315FB312B0267500C1A359 /* AudioBufferSourceNode.idl */, + FD315FBA12B0267500C1A359 /* AudioContext.cpp */, + FD315FBB12B0267500C1A359 /* AudioContext.h */, + FD315FBC12B0267500C1A359 /* AudioContext.idl */, + FD315FBD12B0267500C1A359 /* AudioDestinationNode.cpp */, + FD315FBE12B0267500C1A359 /* AudioDestinationNode.h */, + FD315FBF12B0267500C1A359 /* AudioDestinationNode.idl */, + FD315FC512B0267500C1A359 /* AudioListener.cpp */, + FD315FC612B0267500C1A359 /* AudioListener.h */, + FD315FC712B0267500C1A359 /* AudioListener.idl */, + FD315FC812B0267500C1A359 /* AudioNode.cpp */, + FD315FC912B0267500C1A359 /* AudioNode.h */, + FD315FCA12B0267500C1A359 /* AudioNode.idl */, + FD315FCB12B0267500C1A359 /* AudioNodeInput.cpp */, + FD315FCC12B0267500C1A359 /* AudioNodeInput.h */, + FD315FCD12B0267500C1A359 /* AudioNodeOutput.cpp */, + FD315FCE12B0267500C1A359 /* AudioNodeOutput.h */, + FD315FD212B0267500C1A359 /* AudioParam.cpp */, + FD315FD312B0267500C1A359 /* AudioParam.h */, + FD315FD412B0267500C1A359 /* AudioParam.idl */, + FD35918D138DB22000E1EBEC /* AudioParamTimeline.cpp */, + FD35918E138DB22000E1EBEC /* AudioParamTimeline.h */, + FD315FD512B0267600C1A359 /* AudioProcessingEvent.cpp */, + FD315FD612B0267600C1A359 /* AudioProcessingEvent.h */, + FD315FD712B0267600C1A359 /* AudioProcessingEvent.idl */, + FD8C46E9154608E700A5910C /* AudioScheduledSourceNode.cpp */, + FD8C46EA154608E700A5910C /* AudioScheduledSourceNode.h */, + FDB052DD1561A42C00B500D6 /* AudioSummingJunction.cpp */, + FDB052DE1561A42C00B500D6 /* AudioSummingJunction.h */, + FD315FDA12B0267600C1A359 /* BiquadDSPKernel.cpp */, + FD315FDB12B0267600C1A359 /* BiquadDSPKernel.h */, + FDC54F011399B0DA008D9117 /* BiquadFilterNode.cpp */, + FDC54F021399B0DA008D9117 /* BiquadFilterNode.h */, + FDC54F031399B0DA008D9117 /* BiquadFilterNode.idl */, + FD315FDC12B0267600C1A359 /* BiquadProcessor.cpp */, + FD315FDD12B0267600C1A359 /* BiquadProcessor.h */, + FD315FB412B0267500C1A359 /* ChannelMergerNode.cpp */, + FD315FB512B0267500C1A359 /* ChannelMergerNode.h */, + FD315FB612B0267500C1A359 /* ChannelMergerNode.idl */, + FD315FB712B0267500C1A359 /* ChannelSplitterNode.cpp */, + FD315FB812B0267500C1A359 /* ChannelSplitterNode.h */, + FD315FB912B0267500C1A359 /* ChannelSplitterNode.idl */, + FD315FDE12B0267600C1A359 /* ConvolverNode.cpp */, + FD315FDF12B0267600C1A359 /* ConvolverNode.h */, + FD315FE012B0267600C1A359 /* ConvolverNode.idl */, + FD06DFA3134A4DEF006F5D7D /* DefaultAudioDestinationNode.cpp */, + FD06DFA4134A4DEF006F5D7D /* DefaultAudioDestinationNode.h */, + FD315FE112B0267600C1A359 /* DelayDSPKernel.cpp */, + FD315FE212B0267600C1A359 /* DelayDSPKernel.h */, + FD315FE312B0267600C1A359 /* DelayNode.cpp */, + FD315FE412B0267600C1A359 /* DelayNode.h */, + FD315FE512B0267600C1A359 /* DelayNode.idl */, + FD315FE612B0267600C1A359 /* DelayProcessor.cpp */, + FD315FE712B0267600C1A359 /* DelayProcessor.h */, + FD6ED2C1136B8E42003CF072 /* DynamicsCompressorNode.cpp */, + FD6ED2C2136B8E42003CF072 /* DynamicsCompressorNode.h */, + FD6ED2C9136B8E9D003CF072 /* DynamicsCompressorNode.idl */, + FD315FC212B0267500C1A359 /* GainNode.cpp */, + FD315FC312B0267500C1A359 /* GainNode.h */, + FD315FC412B0267500C1A359 /* GainNode.idl */, + FD6F252913F5EF0E0065165F /* MediaElementAudioSourceNode.cpp */, + FD6F252A13F5EF0E0065165F /* MediaElementAudioSourceNode.h */, + FD6F252B13F5EF0E0065165F /* MediaElementAudioSourceNode.idl */, + FD671A74159BB07000197559 /* MediaStreamAudioSourceNode.cpp */, + FD671A75159BB07000197559 /* MediaStreamAudioSourceNode.h */, + FD671A76159BB07000197559 /* MediaStreamAudioSourceNode.idl */, + FDA3E955134A49EF008D4B5A /* OfflineAudioCompletionEvent.cpp */, + FDA3E956134A49EF008D4B5A /* OfflineAudioCompletionEvent.h */, + FDA3E95D134A49FF008D4B5A /* OfflineAudioCompletionEvent.idl */, + FDA9325A16703B2A008982DC /* OfflineAudioContext.cpp */, + FDA9325B16703B2A008982DC /* OfflineAudioContext.h */, + FDA9325C16703B2A008982DC /* OfflineAudioContext.idl */, + FDA3E957134A49EF008D4B5A /* OfflineAudioDestinationNode.cpp */, + FDA3E958134A49EF008D4B5A /* OfflineAudioDestinationNode.h */, + FD581FAB1520F91F003A7A75 /* OscillatorNode.cpp */, + FD581FAC1520F91F003A7A75 /* OscillatorNode.h */, + FD581FAD1520F91F003A7A75 /* OscillatorNode.idl */, + FD315FCF12B0267500C1A359 /* PannerNode.cpp */, + FD315FD012B0267500C1A359 /* PannerNode.h */, + FD315FD112B0267500C1A359 /* PannerNode.idl */, + FD581FB11520F93B003A7A75 /* PeriodicWave.cpp */, + FD581FB21520F93B003A7A75 /* PeriodicWave.h */, + FD581FB31520F93B003A7A75 /* PeriodicWave.idl */, + FD315FF112B0267600C1A359 /* RealtimeAnalyser.cpp */, + FD315FF212B0267600C1A359 /* RealtimeAnalyser.h */, + FD315FEB12B0267600C1A359 /* ScriptProcessorNode.cpp */, + FD315FEC12B0267600C1A359 /* ScriptProcessorNode.h */, + FD315FED12B0267600C1A359 /* ScriptProcessorNode.idl */, + FD7F298A13D4C0CB00AD9535 /* WaveShaperDSPKernel.cpp */, + FD7F298B13D4C0CB00AD9535 /* WaveShaperDSPKernel.h */, + FD7F298C13D4C0CB00AD9535 /* WaveShaperNode.cpp */, + FD7F298D13D4C0CB00AD9535 /* WaveShaperNode.h */, + FD7F298E13D4C0CB00AD9535 /* WaveShaperNode.idl */, + FD7F298F13D4C0CB00AD9535 /* WaveShaperProcessor.cpp */, + FD7F299013D4C0CB00AD9535 /* WaveShaperProcessor.h */, + ); + name = webaudio; + path = Modules/webaudio; + sourceTree = ""; + }; + FD31604012B026A300C1A359 /* audio */ = { + isa = PBXGroup; + children = ( + CD0EEE0D14743E48003EAFA2 /* ios */, + FD3160B012B0270700C1A359 /* mac */, + FD31604412B026F700C1A359 /* AudioArray.h */, + FD31604512B026F700C1A359 /* AudioBus.cpp */, + FD31604612B026F700C1A359 /* AudioBus.h */, + FD31604712B026F700C1A359 /* AudioChannel.cpp */, + FD31604812B026F700C1A359 /* AudioChannel.h */, + FD31604912B026F700C1A359 /* AudioDestination.h */, + FD31604A12B026F700C1A359 /* AudioDSPKernel.h */, + FD31604B12B026F700C1A359 /* AudioDSPKernelProcessor.cpp */, + FD31604C12B026F700C1A359 /* AudioDSPKernelProcessor.h */, + FD31604D12B026F700C1A359 /* AudioFileReader.h */, + FDE2D55A159E66EB00DCCCF8 /* AudioIOCallback.h */, + FD31604E12B026F700C1A359 /* AudioProcessor.h */, + FD31604F12B026F700C1A359 /* AudioResampler.cpp */, + FD31605012B026F700C1A359 /* AudioResampler.h */, + FD31605112B026F700C1A359 /* AudioResamplerKernel.cpp */, + FD31605212B026F700C1A359 /* AudioResamplerKernel.h */, + CDA79823170A258300D45C55 /* AudioSession.cpp */, + CDA79821170A22DC00D45C55 /* AudioSession.h */, + CDA79822170A24F400D45C55 /* AudioSessionListener.h */, + CDAE8C071746B95700532D78 /* AudioSessionManager.cpp */, + CDAE8C081746B95700532D78 /* AudioSessionManager.h */, + FD31605312B026F700C1A359 /* AudioSourceProvider.h */, + FD62F52D145898D80094B0ED /* AudioSourceProviderClient.h */, + FD31605412B026F700C1A359 /* AudioUtilities.cpp */, + FD31605512B026F700C1A359 /* AudioUtilities.h */, + FD31605612B026F700C1A359 /* Biquad.cpp */, + FD31605712B026F700C1A359 /* Biquad.h */, + FD31605812B026F700C1A359 /* Cone.cpp */, + FD31605912B026F700C1A359 /* Cone.h */, + FD1660A413787C6D001FFA7B /* DenormalDisabler.h */, + FDAF19961513D131008DB0C3 /* DirectConvolver.cpp */, + FDAF19971513D131008DB0C3 /* DirectConvolver.h */, + FD31605A12B026F700C1A359 /* Distance.cpp */, + FD31605B12B026F700C1A359 /* Distance.h */, + FD1762E1176686EA00D836A8 /* DownSampler.cpp */, + FD1762E2176686EA00D836A8 /* DownSampler.h */, + FD6ED2C5136B8E66003CF072 /* DynamicsCompressor.cpp */, + FD6ED2C6136B8E66003CF072 /* DynamicsCompressor.h */, + FD537354137B653B00008DCE /* DynamicsCompressorKernel.cpp */, + FD537355137B653B00008DCE /* DynamicsCompressorKernel.h */, + FD31605C12B026F700C1A359 /* EqualPowerPanner.cpp */, + FD31605D12B026F700C1A359 /* EqualPowerPanner.h */, + FD31605E12B026F700C1A359 /* FFTConvolver.cpp */, + FD31605F12B026F700C1A359 /* FFTConvolver.h */, + FD31606012B026F700C1A359 /* FFTFrame.cpp */, + FD31606112B026F700C1A359 /* FFTFrame.h */, + FD31606212B026F700C1A359 /* HRTFDatabase.cpp */, + FD31606312B026F700C1A359 /* HRTFDatabase.h */, + FD31606412B026F700C1A359 /* HRTFDatabaseLoader.cpp */, + FD31606512B026F700C1A359 /* HRTFDatabaseLoader.h */, + FD31606612B026F700C1A359 /* HRTFElevation.cpp */, + FD31606712B026F700C1A359 /* HRTFElevation.h */, + FD31606812B026F700C1A359 /* HRTFKernel.cpp */, + FD31606912B026F700C1A359 /* HRTFKernel.h */, + FD31606A12B026F700C1A359 /* HRTFPanner.cpp */, + FD31606B12B026F700C1A359 /* HRTFPanner.h */, + FDB1700314A2BAB200A2B5D9 /* MultiChannelResampler.cpp */, + FDB1700414A2BAB200A2B5D9 /* MultiChannelResampler.h */, + FD31606C12B026F700C1A359 /* Panner.cpp */, + FD31606D12B026F700C1A359 /* Panner.h */, + FD31606E12B026F700C1A359 /* Reverb.cpp */, + FD31606F12B026F700C1A359 /* Reverb.h */, + FD31607012B026F700C1A359 /* ReverbAccumulationBuffer.cpp */, + FD31607112B026F700C1A359 /* ReverbAccumulationBuffer.h */, + FD31607212B026F700C1A359 /* ReverbConvolver.cpp */, + FD31607312B026F700C1A359 /* ReverbConvolver.h */, + FD31607412B026F700C1A359 /* ReverbConvolverStage.cpp */, + FD31607512B026F700C1A359 /* ReverbConvolverStage.h */, + FD31607612B026F700C1A359 /* ReverbInputBuffer.cpp */, + FD31607712B026F700C1A359 /* ReverbInputBuffer.h */, + FD00D7A214A3F61900734011 /* SincResampler.cpp */, + FD00D7A314A3F61900734011 /* SincResampler.h */, + FD1762DD176686D900D836A8 /* UpSampler.cpp */, + FD1762DE176686D900D836A8 /* UpSampler.h */, + FD31607812B026F700C1A359 /* VectorMath.cpp */, + FD31607912B026F700C1A359 /* VectorMath.h */, + FD537350137B651800008DCE /* ZeroPole.cpp */, + FD537351137B651800008DCE /* ZeroPole.h */, + ); + path = audio; + sourceTree = ""; + }; + FD3160B012B0270700C1A359 /* mac */ = { + isa = PBXGroup; + children = ( + FD3160B512B0272A00C1A359 /* AudioBusMac.mm */, + FD3160B612B0272A00C1A359 /* AudioDestinationMac.cpp */, + FD3160B712B0272A00C1A359 /* AudioDestinationMac.h */, + FD3160B812B0272A00C1A359 /* AudioFileReaderMac.cpp */, + FD3160B912B0272A00C1A359 /* AudioFileReaderMac.h */, + CD54DE4917469C6D005E5B36 /* AudioSessionMac.cpp */, + CD54DE4517468B6F005E5B36 /* AudioSessionManagerMac.cpp */, + FD3160BA12B0272A00C1A359 /* FFTFrameMac.cpp */, + ); + path = mac; + sourceTree = ""; + }; + FDA15E7B12B03E04003A583A /* WebAudio */ = { + isa = PBXGroup; + children = ( + FDA15EC712B03F50003A583A /* JSAnalyserNode.cpp */, + FDA15EC812B03F50003A583A /* JSAnalyserNode.h */, + FDA15E8112B03EE1003A583A /* JSAudioBuffer.cpp */, + FDA15E8212B03EE1003A583A /* JSAudioBuffer.h */, + FDF7E9C113AC21DB00A51EAC /* JSAudioBufferCallback.cpp */, + FDF7E9C213AC21DB00A51EAC /* JSAudioBufferCallback.h */, + FDA15E8312B03EE1003A583A /* JSAudioBufferSourceNode.cpp */, + FDA15E8412B03EE1003A583A /* JSAudioBufferSourceNode.h */, + FDA15E8912B03EE1003A583A /* JSAudioContext.cpp */, + FDA15E8A12B03EE1003A583A /* JSAudioContext.h */, + FDA15E8B12B03EE1003A583A /* JSAudioDestinationNode.cpp */, + FDA15E8C12B03EE1003A583A /* JSAudioDestinationNode.h */, + FDA15E9112B03EE1003A583A /* JSAudioListener.cpp */, + FDA15E9212B03EE1003A583A /* JSAudioListener.h */, + FDA15E9312B03EE1003A583A /* JSAudioNode.cpp */, + FDA15E9412B03EE1003A583A /* JSAudioNode.h */, + FDA15E9712B03EE1003A583A /* JSAudioParam.cpp */, + FDA15E9812B03EE1003A583A /* JSAudioParam.h */, + FDA15E9912B03EE1003A583A /* JSAudioProcessingEvent.cpp */, + FDA15E9A12B03EE1003A583A /* JSAudioProcessingEvent.h */, + FDF09DC61399B62200688E5B /* JSBiquadFilterNode.cpp */, + FDF09DC71399B62200688E5B /* JSBiquadFilterNode.h */, + FDA15E8512B03EE1003A583A /* JSChannelMergerNode.cpp */, + FDA15E8612B03EE1003A583A /* JSChannelMergerNode.h */, + FDA15E8712B03EE1003A583A /* JSChannelSplitterNode.cpp */, + FDA15E8812B03EE1003A583A /* JSChannelSplitterNode.h */, + FDA15EBB12B03F0B003A583A /* JSConvolverNode.cpp */, + FDA15EBC12B03F0B003A583A /* JSConvolverNode.h */, + FDA15ECF12B03F94003A583A /* JSDelayNode.cpp */, + FDA15ED012B03F94003A583A /* JSDelayNode.h */, + FD7868B7136B999200D403DF /* JSDynamicsCompressorNode.cpp */, + FD7868B8136B999200D403DF /* JSDynamicsCompressorNode.h */, + FDA15E8F12B03EE1003A583A /* JSGainNode.cpp */, + FDA15E9012B03EE1003A583A /* JSGainNode.h */, + FD23A12313F5FA5900F67001 /* JSMediaElementAudioSourceNode.cpp */, + FD23A12413F5FA5900F67001 /* JSMediaElementAudioSourceNode.h */, + FDBD480A159BC6870093EB4F /* JSMediaStreamAudioSourceNode.cpp */, + FDBD480B159BC6870093EB4F /* JSMediaStreamAudioSourceNode.h */, + FDF6BAF6134A4C9800822920 /* JSOfflineAudioCompletionEvent.cpp */, + FDF6BAF7134A4C9800822920 /* JSOfflineAudioCompletionEvent.h */, + FDA9326416703BA9008982DC /* JSOfflineAudioContext.cpp */, + FDA9326516703BA9008982DC /* JSOfflineAudioContext.h */, + FDEA6240152102E200479DF0 /* JSOscillatorNode.cpp */, + FDEA6241152102E200479DF0 /* JSOscillatorNode.h */, + FDA15E9512B03EE1003A583A /* JSPannerNode.cpp */, + FDA15E9612B03EE1003A583A /* JSPannerNode.h */, + FDEA6244152102FC00479DF0 /* JSPeriodicWave.cpp */, + FDEA6245152102FC00479DF0 /* JSPeriodicWave.h */, + FDA15ECB12B03F61003A583A /* JSScriptProcessorNode.cpp */, + FDA15ECC12B03F61003A583A /* JSScriptProcessorNode.h */, + FD82D7F513D4C8BD004E4372 /* JSWaveShaperNode.cpp */, + FD82D7F613D4C8BD004E4372 /* JSWaveShaperNode.h */, + ); + name = WebAudio; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 417DA6CC13734E02007C57FB /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 417DA6DA13734E6E007C57FB /* Internals.h in Headers */, + A7BF7EE014C9175A0014489D /* InternalSettings.h in Headers */, + 53E29E5F167A8A1900586D3D /* InternalSettingsGenerated.h in Headers */, + 417DA71E13735DFA007C57FB /* JSInternals.h in Headers */, + A740B5A514C935AB00A77FA4 /* JSInternalSettings.h in Headers */, + 53ED3FDF167A88E7006762E6 /* JSInternalSettingsGenerated.h in Headers */, + A740B59514C935AB00A77FA4 /* JSMallocStatistics.h in Headers */, + CD5393D4175E018600C07123 /* JSMemoryInfo.h in Headers */, + EBF5121D1696496C0056BD25 /* JSTypeConversions.h in Headers */, + CDC26B41160A8CCE0026757B /* MockCDM.h in Headers */, + AA5F3B8D16CC33D100455EB0 /* PlatformSpeechSynthesizerMock.h in Headers */, + 41815C1F138319830057AAA4 /* WebCoreTestSupport.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 93F198A608245E59001E9ABC /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + FE115FAB167988CD00249134 /* AbstractDatabaseServer.h in Headers */, + FE4AADEE16D2C37400026FFC /* AbstractSQLStatement.h in Headers */, + FE4AADEF16D2C37400026FFC /* AbstractSQLStatementBackend.h in Headers */, + 41E1B1D10FF5986900576B3B /* AbstractWorker.h in Headers */, + 29A8122E0FBB9C1D00510293 /* AccessibilityARIAGridCell.h in Headers */, + 29A812330FBB9C1D00510293 /* AccessibilityARIAGridRow.h in Headers */, + 29A8123B0FBB9C1D00510293 /* AccessibilityImageMapLink.h in Headers */, + 29A8122C0FBB9C1D00510293 /* AccessibilityList.h in Headers */, + 29A812430FBB9C1D00510293 /* AccessibilityListBox.h in Headers */, + 29A812420FBB9C1D00510293 /* AccessibilityListBoxOption.h in Headers */, + 07B0113F1032242200FBDC33 /* AccessibilityMediaControls.h in Headers */, + 76CDD2F31103DA6600680521 /* AccessibilityMenuList.h in Headers */, + 76CDD2F71103DA6600680521 /* AccessibilityMenuListOption.h in Headers */, + 76CDD2F51103DA6600680521 /* AccessibilityMenuListPopup.h in Headers */, + 29ACB212143E7128006BCA5F /* AccessibilityMockObject.h in Headers */, + 29A812360FBB9C1D00510293 /* AccessibilityObject.h in Headers */, + A409C985116D0DDD007197BD /* AccessibilityProgressIndicator.h in Headers */, + 29A812390FBB9C1D00510293 /* AccessibilityRenderObject.h in Headers */, + 93C4F6EB1108F9A50099D0DB /* AccessibilityScrollbar.h in Headers */, + 29489FC712C00F0300D83F0F /* AccessibilityScrollView.h in Headers */, + 0709FC4E1025DEE30059CDBA /* AccessibilitySlider.h in Headers */, + 29D7BCFA1444AF7D0070619C /* AccessibilitySpinButton.h in Headers */, + AAC08CF315F941FD00F1E188 /* AccessibilitySVGRoot.h in Headers */, + 29A8122B0FBB9C1D00510293 /* AccessibilityTable.h in Headers */, + 29A812320FBB9C1D00510293 /* AccessibilityTableCell.h in Headers */, + 29A812410FBB9C1D00510293 /* AccessibilityTableColumn.h in Headers */, + 29A8123F0FBB9C1D00510293 /* AccessibilityTableHeaderContainer.h in Headers */, + 29A812310FBB9C1D00510293 /* AccessibilityTableRow.h in Headers */, + B5D31DFB11CF610B009F22B4 /* ActiveDOMCallback.h in Headers */, + E1C4DE690EA75C1E0023CCD6 /* ActiveDOMObject.h in Headers */, + BCF7E491137CD7C7001DDAE7 /* AdjustViewSizeOrNot.h in Headers */, + 84D0C4061115F1EA0018AA34 /* AffineTransform.h in Headers */, + CEDA12D7152CA1CB00D9E08D /* AlternativeTextClient.h in Headers */, + CE08C3D2152B599A0021B8C2 /* AlternativeTextController.h in Headers */, + CE7B2DB31586ABAD0098B3FA /* AlternativeTextUIController.h in Headers */, + FD31603E12B0267600C1A359 /* AnalyserNode.h in Headers */, + 490707E71219C04300D90E51 /* ANGLEWebKitBridge.h in Headers */, + 49E912AB0EFAC906009D0CAF /* Animation.h in Headers */, + 316FE1120E6E1DA700BF6088 /* AnimationBase.h in Headers */, + 316FE1140E6E1DA700BF6088 /* AnimationController.h in Headers */, + 0F15DA8A0F3AAEE70000CE47 /* AnimationControllerPrivate.h in Headers */, + 49E912AD0EFAC906009D0CAF /* AnimationList.h in Headers */, + 0F580FAF149800D400FB5BD8 /* AnimationUtilities.h in Headers */, + 93309DD7099E64920056E581 /* AppendNodeCommand.h in Headers */, + 1A8F6BBD0DB55CDC001DB794 /* ApplicationCache.h in Headers */, + 1A8F6BBF0DB55CDC001DB794 /* ApplicationCacheGroup.h in Headers */, + 24F54EAD101FE914000AE741 /* ApplicationCacheHost.h in Headers */, + 1A8F6BC10DB55CDC001DB794 /* ApplicationCacheResource.h in Headers */, + 1A2AAC590DC2A3B100A20D9A /* ApplicationCacheStorage.h in Headers */, + 9B417064125662B3006B28FC /* ApplyBlockElementCommand.h in Headers */, + 93309DD9099E64920056E581 /* ApplyStyleCommand.h in Headers */, + 512DD8F60D91E6AF000F89EE /* Archive.h in Headers */, + 512DD8FD0D91E6AF000F89EE /* ArchiveFactory.h in Headers */, + 512DD8FC0D91E6AF000F89EE /* ArchiveResource.h in Headers */, + 512DD8F80D91E6AF000F89EE /* ArchiveResourceCollection.h in Headers */, + BCFB2F77097A2E1A00BA703D /* Arena.h in Headers */, + 49B3760D15C6C6840059131D /* ArrayValue.h in Headers */, + FD5686CA13AC180200B69C68 /* AsyncAudioDecoder.h in Headers */, + E1CDE9221501916900862CC5 /* AsyncFileStream.h in Headers */, + 89D08DA012228451001241DF /* AsyncFileSystem.h in Headers */, + 89D08DA112228451001241DF /* AsyncFileSystemCallbacks.h in Headers */, + 976D6C77122B8A3D001FD1F7 /* AsyncFileWriter.h in Headers */, + 976D6C93122B8A3D001FD1F7 /* AsyncFileWriterClient.h in Headers */, + 37C61F0112095C87007A3C67 /* AtomicStringKeyedMRUCache.h in Headers */, + A8C4A80D09D563270003AC8D /* Attr.h in Headers */, + A8C4A80B09D563270003AC8D /* Attribute.h in Headers */, + FD31607A12B026F700C1A359 /* AudioArray.h in Headers */, + FD629EA3154B47160006D026 /* AudioBasicInspectorNode.h in Headers */, + FD315FF712B0267600C1A359 /* AudioBasicProcessorNode.h in Headers */, + FD315FF912B0267600C1A359 /* AudioBuffer.h in Headers */, + FD5686CC13AC181400B69C68 /* AudioBufferCallback.h in Headers */, + FD315FFC12B0267600C1A359 /* AudioBufferSourceNode.h in Headers */, + FD31607C12B026F700C1A359 /* AudioBus.h in Headers */, + FD31607E12B026F700C1A359 /* AudioChannel.h in Headers */, + FD31600512B0267600C1A359 /* AudioContext.h in Headers */, + FD31607F12B026F700C1A359 /* AudioDestination.h in Headers */, + FD3160BD12B0272A00C1A359 /* AudioDestinationMac.h in Headers */, + FD31600812B0267600C1A359 /* AudioDestinationNode.h in Headers */, + FD31608012B026F700C1A359 /* AudioDSPKernel.h in Headers */, + FD31608212B026F700C1A359 /* AudioDSPKernelProcessor.h in Headers */, + FD31608312B026F700C1A359 /* AudioFileReader.h in Headers */, + FD3160BF12B0272A00C1A359 /* AudioFileReaderMac.h in Headers */, + FDE2D55B159E66EB00DCCCF8 /* AudioIOCallback.h in Headers */, + FD31601012B0267600C1A359 /* AudioListener.h in Headers */, + FD31601312B0267600C1A359 /* AudioNode.h in Headers */, + FD31601612B0267600C1A359 /* AudioNodeInput.h in Headers */, + FD31601812B0267600C1A359 /* AudioNodeOutput.h in Headers */, + FD31601D12B0267600C1A359 /* AudioParam.h in Headers */, + FD359190138DB22000E1EBEC /* AudioParamTimeline.h in Headers */, + FD31602012B0267600C1A359 /* AudioProcessingEvent.h in Headers */, + FD31608412B026F700C1A359 /* AudioProcessor.h in Headers */, + FD31608612B026F700C1A359 /* AudioResampler.h in Headers */, + FD31608812B026F700C1A359 /* AudioResamplerKernel.h in Headers */, + FD8C46EC154608E700A5910C /* AudioScheduledSourceNode.h in Headers */, + CDA7982A170A3D0000D45C55 /* AudioSession.h in Headers */, + FD31608912B026F700C1A359 /* AudioSourceProvider.h in Headers */, + FD62F52E145898D80094B0ED /* AudioSourceProviderClient.h in Headers */, + FDB052E01561A42C00B500D6 /* AudioSummingJunction.h in Headers */, + BE88E0D91715D2A200658D98 /* AudioTrack.h in Headers */, + BE88E0DC1715D2A200658D98 /* AudioTrackList.h in Headers */, + BEF29EEB1715DD0900C4B4C9 /* AudioTrackPrivate.h in Headers */, + FD31608B12B026F700C1A359 /* AudioUtilities.h in Headers */, + 7EE6846012D26E3800E79415 /* AuthenticationCF.h in Headers */, + 7EE6846112D26E3800E79415 /* AuthenticationChallenge.h in Headers */, + 934F713A0D5A6F1000018D69 /* AuthenticationChallengeBase.h in Headers */, + E124748410AA161D00B79493 /* AuthenticationClient.h in Headers */, + 514C764C0CE9234E007EF3CD /* AuthenticationMac.h in Headers */, + 45830D4E1679B4F800ACF8C3 /* AutoscrollController.h in Headers */, + A8CFF04E0A154F09000A4234 /* AutoTableLayout.h in Headers */, + 29A812380FBB9C1D00510293 /* AXObjectCache.h in Headers */, + BCA8C81E11E3D36900812FB7 /* BackForwardController.h in Headers */, + 51741D0F0B07259A00ED442C /* BackForwardList.h in Headers */, + BCA8CA6011E4E6D100812FB7 /* BackForwardListImpl.h in Headers */, + 97DC69ED16B9F52C008CFD6F /* BackgroundHTMLInputStream.h in Headers */, + 979DC03816A7993300807794 /* BackgroundHTMLParser.h in Headers */, + BC124EE80C2641CD009E2349 /* BarProp.h in Headers */, + 379E61CA126CA5C400B63E8D /* BaseButtonInputType.h in Headers */, + 379E61CC126CA5C400B63E8D /* BaseCheckableInputType.h in Headers */, + F5E0C65C1643C42C00D6CB69 /* BaseChooserOnlyDateAndTimeInputType.h in Headers */, + C33EE5C514FB49610002095A /* BaseClickableWithKeyInputType.h in Headers */, + F59C96001255B23F000623C0 /* BaseDateAndTimeInputType.h in Headers */, + F55B3DAE1251F12D003EF269 /* BaseTextInputType.h in Headers */, + FBD6AF8A15EF25DF008B7110 /* BasicShapeFunctions.h in Headers */, + FBD6AF8C15EF2604008B7110 /* BasicShapes.h in Headers */, + BC9462D8107A7B4C00857193 /* BeforeLoadEvent.h in Headers */, + AB23A32809BBA7D00067CC53 /* BeforeTextInsertedEvent.h in Headers */, + 85031B3D0A44EFC700F992E0 /* BeforeUnloadEvent.h in Headers */, + B2C3DA240D006C1D00EF6F26 /* BidiContext.h in Headers */, + B2C3DA250D006C1D00EF6F26 /* BidiResolver.h in Headers */, + BCE789861120E7A60060ECE5 /* BidiRun.h in Headers */, + A8C402931348B2220063F1E5 /* BidiRunList.h in Headers */, + 973AA3FA15D0891B00E38A85 /* BindingSecurity.h in Headers */, + 973AA3F515D088F000E38A85 /* BindingState.h in Headers */, + F35AE5AC14925F5B004D5776 /* BindingVisitors.h in Headers */, + FD31608D12B026F700C1A359 /* Biquad.h in Headers */, + FD31602512B0267600C1A359 /* BiquadDSPKernel.h in Headers */, + FDC54F051399B0DA008D9117 /* BiquadFilterNode.h in Headers */, + FD31602712B0267600C1A359 /* BiquadProcessor.h in Headers */, + A89943280B42338800D7C802 /* BitmapImage.h in Headers */, + 976D6C79122B8A3D001FD1F7 /* Blob.h in Headers */, + 2EDEF1F4121B0EFC00726DB2 /* BlobData.h in Headers */, + 2EDEF1F5121B0EFC00726DB2 /* BlobRegistry.h in Headers */, + 2EDEF1F7121B0EFC00726DB2 /* BlobRegistryImpl.h in Headers */, + 2EB4BCD3121F03E300EC4885 /* BlobResourceHandle.h in Headers */, + 2EDEF1F8121B0EFC00726DB2 /* BlobStorageData.h in Headers */, + 976D6C7F122B8A3D001FD1F7 /* BlobURL.h in Headers */, + 93F199BE08245E59001E9ABC /* BlockExceptions.h in Headers */, + BC5EB5E10E81BE8700B25965 /* BorderData.h in Headers */, + BC5EB5DB0E81B7EA00B25965 /* BorderValue.h in Headers */, + BCEA4855097D93020094C9E4 /* break_lines.h in Headers */, + 93309DDB099E64920056E581 /* BreakBlockquoteCommand.h in Headers */, + 599E759011055A1F00D904FA /* Bridge.h in Headers */, + 59B5977511086579007159E8 /* BridgeJSC.h in Headers */, + F55B3DB01251F12D003EF269 /* ButtonInputType.h in Headers */, + 1A569CF80D7E2B82007C3983 /* c_class.h in Headers */, + 1A569CFA0D7E2B82007C3983 /* c_instance.h in Headers */, + 1A569CFC0D7E2B82007C3983 /* c_runtime.h in Headers */, + 1A569CFE0D7E2B82007C3983 /* c_utility.h in Headers */, + BCB16C1A0979C3BD00467741 /* CachedCSSStyleSheet.h in Headers */, + BC64B4CC0CB4295D005F2B62 /* CachedFont.h in Headers */, + 1AEF4E67170E160300AB2799 /* CachedFontClient.h in Headers */, + 51C0AA390F2AA10A001648C2 /* CachedFrame.h in Headers */, + 51CBFC990D10E483002DBF51 /* CachedFramePlatformData.h in Headers */, + BCB16C1C0979C3BD00467741 /* CachedImage.h in Headers */, + 319FBD5F15D2F464009640A6 /* CachedImageClient.h in Headers */, + 510184690B08602A004A825F /* CachedPage.h in Headers */, + D0EDA775143E303C0028E383 /* CachedRawResource.h in Headers */, + E1B533491717DEE300F205F9 /* CachedRawResourceClient.h in Headers */, + BCB16C200979C3BD00467741 /* CachedResource.h in Headers */, + BCFB2E5E0979E46400BA703D /* CachedResourceClient.h in Headers */, + BCB16C220979C3BD00467741 /* CachedResourceClientWalker.h in Headers */, + E47B4BE80E71241600038854 /* CachedResourceHandle.h in Headers */, + BCB16C2A0979C3BD00467741 /* CachedResourceLoader.h in Headers */, + 5081E3E03CFF80C16EF8B48B /* CachedResourceRequest.h in Headers */, + 6C638895A96CCEE50C8C946C /* CachedResourceRequestInitiators.h in Headers */, + BCB16C240979C3BD00467741 /* CachedScript.h in Headers */, + BCD533640ED6848900887468 /* CachedScriptSourceProvider.h in Headers */, + 5038BE411472AD980095E0D1 /* CachedShader.h in Headers */, + D0BC54491443AC4A00E105DA /* CachedStyleSheetClient.h in Headers */, + A104F24414C71F7A009E2C23 /* CachedSVGDocument.h in Headers */, + 1AEF4E69170E174800AB2799 /* CachedSVGDocumentClient.h in Headers */, + FB2C15C3165D649D0039C9F8 /* CachedSVGDocumentReference.h in Headers */, + 0753860314489E9800B78452 /* CachedTextTrack.h in Headers */, + BCB16C280979C3BD00467741 /* CachedXSLStyleSheet.h in Headers */, + 93F1995008245E59001E9ABC /* CachePolicy.h in Headers */, + 49AE2D97134EE5F90072920A /* CalculationValue.h in Headers */, + B1D5ECB5134B58DA0087C78F /* CallbackFunction.h in Headers */, + 6E4E91AD10F7FB3100A2779C /* CanvasContextAttributes.h in Headers */, + 49484FC2102CF23C00187DD3 /* CanvasGradient.h in Headers */, + FB91392616AE4C2F001FE682 /* CanvasPathMethods.h in Headers */, + 49484FC5102CF23C00187DD3 /* CanvasPattern.h in Headers */, + 49484FC5102CF23C00188DD3 /* CanvasProxy.h in Headers */, + 49C7B9DD1042D32F0009D447 /* CanvasRenderingContext.h in Headers */, + 49484FCB102CF23C00187DD3 /* CanvasRenderingContext2D.h in Headers */, + 49484FCE102CF23C00187DD3 /* CanvasStyle.h in Headers */, + 079D0868162F20E800DB8658 /* CaptionUserPreferences.h in Headers */, + 079D086B162F21F900DB8658 /* CaptionUserPreferencesMediaAF.h in Headers */, + 6550B69E099DF0270090D781 /* CDATASection.h in Headers */, + E1A8E56717552B2A007488E7 /* CFURLExtras.h in Headers */, + FE36FD1516C7826500F887C1 /* ChangeVersionData.h in Headers */, + 97BC69DD1505F076001B74AC /* ChangeVersionWrapper.h in Headers */, + FD315FFF12B0267600C1A359 /* ChannelMergerNode.h in Headers */, + FD31600212B0267600C1A359 /* ChannelSplitterNode.h in Headers */, + 6550B6A0099DF0270090D781 /* CharacterData.h in Headers */, + 97B8FFD116AE7F960038388D /* CharacterReferenceParserInlines.h in Headers */, + B2C3DA2A0D006C1D00EF6F26 /* CharsetData.h in Headers */, + F55B3DB21251F12D003EF269 /* CheckboxInputType.h in Headers */, + 93F925430F7EF5B8007E37C9 /* CheckedRadioButtons.h in Headers */, + D619A308144E00BE004BC302 /* ChildListMutationScope.h in Headers */, + A81872200977D3C0005826D9 /* ChildNodeList.h in Headers */, + 14D823520AF92A790004F057 /* Chrome.h in Headers */, + 14D824080AF93AEB0004F057 /* ChromeClient.h in Headers */, + 4ACBC0BF12713CBD0094F9B2 /* ClassList.h in Headers */, + BC904B770D10998F00680D32 /* ClassNodeList.h in Headers */, + BCC0657E0F3CE1B700CD2D87 /* ClientRect.h in Headers */, + BCC065810F3CE1B700CD2D87 /* ClientRectList.h in Headers */, + 85031B3E0A44EFC700F992E0 /* Clipboard.h in Headers */, + 4B8AF4AA0B1CE02B00687690 /* ClipboardAccessPolicy.h in Headers */, + 85031B400A44EFC700F992E0 /* ClipboardEvent.h in Headers */, + C585381913A7DD4E00A3BBEE /* ClipboardIOS.h in Headers */, + FB92DF4B15FED08700994433 /* ClipPathOperation.h in Headers */, + 97AABD1314FA09D5007457AE /* CloseEvent.h in Headers */, + C0C054CB1118C8E400CE2636 /* CodeGenerator.pm in Headers */, + BC5EB5DF0E81B9AB00B25965 /* CollapsedBorderValue.h in Headers */, + 93C442000F813AE100C1A634 /* CollectionType.h in Headers */, + B27535670B053814002CE64F /* Color.h in Headers */, + C330A22313EC196B0000B45B /* ColorChooser.h in Headers */, + C37CDEBD149EF2030042090D /* ColorChooserClient.h in Headers */, + B22279630D00BF220071B782 /* ColorDistance.h in Headers */, + F55B3DB41251F12D003EF269 /* ColorInputType.h in Headers */, + EDE3A5000C7A430600956A37 /* ColorMac.h in Headers */, + 9382DF5810A8D5C900925652 /* ColorSpace.h in Headers */, + BCDD454E1236C95C009A7985 /* ColumnInfo.h in Headers */, + 6550B6A2099DF0270090D781 /* Comment.h in Headers */, + 979DC03716A7992E00807794 /* CompactHTMLToken.h in Headers */, + 37C236111097EE7700EF9F72 /* ComplexTextController.h in Headers */, + 4A6A0C5C15232F2400B09C6E /* ComposedShadowTreeWalker.h in Headers */, + 316FE1160E6E1DA700BF6088 /* CompositeAnimation.h in Headers */, + 93309DDD099E64920056E581 /* CompositeEditCommand.h in Headers */, + 79F2F5A21091939A000D87CB /* CompositionEvent.h in Headers */, + FD31608F12B026F700C1A359 /* Cone.h in Headers */, + 65C97AF308EA908800ACD273 /* config.h in Headers */, + BC0B36A50CD3C67C00AC7EB5 /* Console.h in Headers */, + 2DF2E9D5166E39750035BEF2 /* ConsoleAPITypes.h in Headers */, + 41F0618E0F5F069800A07EAC /* ConsoleMessage.h in Headers */, + BCE5644E137A34D6007D2934 /* ConsoleTypes.h in Headers */, + A818721C0977D3C0005826D9 /* ContainerNode.h in Headers */, + E1A1470811102B1500EEC0F3 /* ContainerNodeAlgorithms.h in Headers */, + BC5EB9810E82072500B25965 /* ContentData.h in Headers */, + 57B791A414C6A62900F202D1 /* ContentDistributor.h in Headers */, + 2919A1E916B3376600787213 /* ContentFilter.h in Headers */, + 59102FBC14327D3B003C9D04 /* ContentSearchUtils.h in Headers */, + 97C471DC12F925BD0086354B /* ContentSecurityPolicy.h in Headers */, + 41D015CA0F4B5C71004A662F /* ContentType.h in Headers */, + 97627B8E14FB3CEE002CDCA1 /* ContextDestructionObserver.h in Headers */, + A7D3CA11157DF8E900860A97 /* ContextFeatures.h in Headers */, + 93B6A0E60B0BCA5C00F5027A /* ContextMenu.h in Headers */, + 065AD4F50B0C2EDA005A2B1D /* ContextMenuClient.h in Headers */, + 065AD4F70B0C2EDA005A2B1D /* ContextMenuController.h in Headers */, + 06027CAD0B1CBFC000884B2D /* ContextMenuItem.h in Headers */, + 7ADE722610CBBB9B006B3B3A /* ContextMenuProvider.h in Headers */, + FD31602912B0267600C1A359 /* ConvolverNode.h in Headers */, + D8B6152F1032495100C8554A /* Cookie.h in Headers */, + E1424C94164B52C800F32D40 /* CookieJar.h in Headers */, + 339B5B63131DAA3200F48D02 /* CookiesStrategy.h in Headers */, + 33D0212D131DB37B004091A8 /* CookieStorage.h in Headers */, + 9746AF2114F4DDE6003E7A71 /* Coordinates.h in Headers */, + A80E6D040A1989CA007FB8C5 /* Counter.h in Headers */, + BC5EB9790E82069200B25965 /* CounterContent.h in Headers */, + BC5EB9510E82056B00B25965 /* CounterDirectives.h in Headers */, + 9392F14C0AD1861B00691BD4 /* CounterNode.h in Headers */, + D0B0556809C6700100307E43 /* CreateLinkCommand.h in Headers */, + 514C766E0CE923A1007EF3CD /* Credential.h in Headers */, + 51A052331058774F00CC9E95 /* CredentialStorage.h in Headers */, + 2D481F02146B5C5500AA7834 /* CrossfadeGeneratedImage.h in Headers */, + E1C416120F6562FD0092D2FB /* CrossOriginAccessControl.h in Headers */, + E1C415DA0F655D6F0092D2FB /* CrossOriginPreflightResultCache.h in Headers */, + 2E4346590F546A9900B0F1BA /* CrossThreadCopier.h in Headers */, + 2E3FAA0911A36BF100576624 /* CrossThreadTask.h in Headers */, + E169803D1133542D00894115 /* CRuntimeObject.h in Headers */, + 975CA28B130365F800E99AD9 /* Crypto.h in Headers */, + CAE9F910146441F000C245B0 /* CSSAspectRatioValue.h in Headers */, + FBD6AF8815EF25C9008B7110 /* CSSBasicShapes.h in Headers */, + E16A84FA14C85CCC002977DF /* CSSBorderImage.h in Headers */, + BC274B2F140EBEB200EADFA6 /* CSSBorderImageSliceValue.h in Headers */, + 49AE2D8F134EE50C0072920A /* CSSCalculationValue.h in Headers */, + BC6049CC0DB560C200204739 /* CSSCanvasValue.h in Headers */, + A80E6CF90A1989CA007FB8C5 /* CSSCharsetRule.h in Headers */, + BCEA4790097CAAC80094C9E4 /* CSSComputedStyleDeclaration.h in Headers */, + 2D8FEBDD143E3EF70072502B /* CSSCrossfadeValue.h in Headers */, + AA21ECCD0ABF0FC6002B834C /* CSSCursorImageValue.h in Headers */, + 4A9CC81816BB9AC600EC645A /* CSSDefaultStyleSheets.h in Headers */, + BC64B4D60CB4298A005F2B62 /* CSSFontFace.h in Headers */, + 409EBDB116B7EE7100CBA3FC /* CSSFontFaceLoadEvent.h in Headers */, + A80E6CFD0A1989CA007FB8C5 /* CSSFontFaceRule.h in Headers */, + BC64B4D80CB4298A005F2B62 /* CSSFontFaceSource.h in Headers */, + BC64B4DA0CB4298A005F2B62 /* CSSFontFaceSrcValue.h in Headers */, + BC64B4DC0CB4298A005F2B62 /* CSSFontSelector.h in Headers */, + BC02A63C0E09A9CF004B6D2B /* CSSFunctionValue.h in Headers */, + BC53C6920DA591140021EB5D /* CSSGradientValue.h in Headers */, + 650F53DC09D15DDA00C9B0C8 /* CSSGrammar.h in Headers */, + FB3056C2169E5DAC0096A232 /* CSSGroupingRule.h in Headers */, + BC772B3C0C4EA91E0083285F /* CSSHelper.h in Headers */, + FB49C39D16784947007FFB5D /* CSSHostRule.h in Headers */, + BC23EE920DAED2BC009FDC91 /* CSSImageGeneratorValue.h in Headers */, + 9393E600151A99F200066F06 /* CSSImageSetValue.h in Headers */, + A80E6CFA0A1989CA007FB8C5 /* CSSImageValue.h in Headers */, + A80E6CF60A1989CA007FB8C5 /* CSSImportRule.h in Headers */, + A80E6D010A1989CA007FB8C5 /* CSSInheritedValue.h in Headers */, + A80E6D080A1989CA007FB8C5 /* CSSInitialValue.h in Headers */, + BC772E131331620C001EC9CE /* CSSLineBoxContainValue.h in Headers */, + A80E6D030A1989CA007FB8C5 /* CSSMediaRule.h in Headers */, + F98FFF4511A2676200F548E8 /* CSSOMUtils.h in Headers */, + A80E6D000A1989CA007FB8C5 /* CSSPageRule.h in Headers */, + BC772B3E0C4EA91E0083285F /* CSSParser.h in Headers */, + FB78AD2E151BF5E600FE54D3 /* CSSParserMode.h in Headers */, + BC02A4B70E0997B9004B6D2B /* CSSParserValues.h in Headers */, + 977B3863122883E900B81FF8 /* CSSPreloadScanner.h in Headers */, + A80E6CE60A1989CA007FB8C5 /* CSSPrimitiveValue.h in Headers */, + E1ED8AC30CC49BE000BFC557 /* CSSPrimitiveValueMappings.h in Headers */, + A80E6CFF0A1989CA007FB8C5 /* CSSProperty.h in Headers */, + 78D02BC6154A18DF00B62D05 /* CSSPropertyAnimation.h in Headers */, + 656580F409D12B20000E61D7 /* CSSPropertyNames.h in Headers */, + 82E3D8DF122EA0D1003AE5BC /* CSSPropertySourceData.h in Headers */, + 9362640B0DE1137D009D5A00 /* CSSReflectionDirection.h in Headers */, + BC5A12E00DC0414800C9AFAD /* CSSReflectValue.h in Headers */, + A80E6D0D0A1989CA007FB8C5 /* CSSRule.h in Headers */, + A80E6CF20A1989CA007FB8C5 /* CSSRuleList.h in Headers */, + 371F51A10D262FA000ECE0D5 /* CSSSegmentedFontFace.h in Headers */, + A80E73520A199C77007FB8C5 /* CSSSelector.h in Headers */, + E4C1789B0EE6903800824D69 /* CSSSelectorList.h in Headers */, + A80E6E0F0A19911C007FB8C5 /* CSSStyleDeclaration.h in Headers */, + A80E6D0C0A1989CA007FB8C5 /* CSSStyleRule.h in Headers */, + A8EA80070A19516E00A8EF5F /* CSSStyleSheet.h in Headers */, + FC54D05716A7673100575E4D /* CSSSupportsRule.h in Headers */, + BC80C9880CD294EE00A0B7B3 /* CSSTimingFunctionValue.h in Headers */, + A882DA231593848D000115ED /* CSSToStyleMap.h in Headers */, + 371F53E90D2704F900ECE0D5 /* CSSUnicodeRangeValue.h in Headers */, + DD7CDF250A23CF9800069928 /* CSSUnknownRule.h in Headers */, + A80E6CEE0A1989CA007FB8C5 /* CSSValue.h in Headers */, + 6565815109D13043000E61D7 /* CSSValueKeywords.h in Headers */, + A80E6CE90A1989CA007FB8C5 /* CSSValueList.h in Headers */, + E49BD9FA131FD2ED003C56F0 /* CSSValuePool.h in Headers */, + CAE9F910146441F000C245B1 /* CSSVariableValue.h in Headers */, + 93F1992F08245E59001E9ABC /* Cursor.h in Headers */, + BC2272A20E82E87C00E7F975 /* CursorData.h in Headers */, + BC2272AD0E82E8F300E7F975 /* CursorList.h in Headers */, + 62CD325A1157E57C0063B0A7 /* CustomEvent.h in Headers */, + 15B3FC1915FB217800A81BCB /* CustomFilterArrayParameter.h in Headers */, + 50D40612147D49DE00D30BB5 /* CustomFilterCompiledProgram.h in Headers */, + A2B2AE7C16375EE500CFA50B /* CustomFilterConstants.h in Headers */, + 50987C27157D676D00BDA835 /* CustomFilterGlobalContext.h in Headers */, + 50D405FA147D31F300D30BB5 /* CustomFilterMesh.h in Headers */, + 7E12E90F15FA5D3A005E4126 /* CustomFilterMeshGenerator.h in Headers */, + 50CC089A14C6E99C0017AB51 /* CustomFilterNumberParameter.h in Headers */, + 50ACE2CB14B5D79300446666 /* CustomFilterOperation.h in Headers */, + 509CC9FB14C069ED00BBECBD /* CustomFilterParameter.h in Headers */, + 50933350163B0E4300099A60 /* CustomFilterParameterList.h in Headers */, + 503D0CAB14B5B08700F32F57 /* CustomFilterProgram.h in Headers */, + 503D0CAC14B5B08700F32F57 /* CustomFilterProgramClient.h in Headers */, + 50D88CB615BDFDAA001809F4 /* CustomFilterProgramInfo.h in Headers */, + 503D0CAB14B5B08700F32F58 /* CustomFilterRenderer.h in Headers */, + A29532D015DD5E1700469EBC /* CustomFilterValidatedProgram.h in Headers */, + A8CB413E0E8633FD0032C4F0 /* DashArray.h in Headers */, + A80E6D0B0A1989CA007FB8C5 /* DashboardRegion.h in Headers */, + 97BC6A211505F081001B74AC /* Database.h in Headers */, + 97BC6A241505F081001B74AC /* DatabaseAuthorizer.h in Headers */, + FE16CFD4169D1DED00D3A0C7 /* DatabaseBackend.h in Headers */, + 97BC69DB1505F076001B74AC /* DatabaseBackendBase.h in Headers */, + FE6F6AB0169E057500FC30A2 /* DatabaseBackendContext.h in Headers */, + FE16CFD6169D1DED00D3A0C7 /* DatabaseBackendSync.h in Headers */, + FEBC5F3216BD0CC300659BD3 /* DatabaseBase.h in Headers */, + FE3371A2167C11D400EDB752 /* DatabaseBasicTypes.h in Headers */, + 97BC6A251505F081001B74AC /* DatabaseCallback.h in Headers */, + 97BC6A281505F081001B74AC /* DatabaseContext.h in Headers */, + 97BC6A291505F081001B74AC /* DatabaseDetails.h in Headers */, + FE09DB49169E2D6E00622557 /* DatabaseError.h in Headers */, + FE456F191677D74E005EDDF9 /* DatabaseManager.h in Headers */, + 97BC6A331505F081001B74AC /* DatabaseManagerClient.h in Headers */, + FEAF6654167970320062D0C5 /* DatabaseServer.h in Headers */, + FEDEF84216797108000E444A /* DatabaseStrategy.h in Headers */, + 97BC6A2B1505F081001B74AC /* DatabaseSync.h in Headers */, + 97BC6A2E1505F081001B74AC /* DatabaseTask.h in Headers */, + 97BC6A301505F081001B74AC /* DatabaseThread.h in Headers */, + 97BC6A321505F081001B74AC /* DatabaseTracker.h in Headers */, + BC22746F0E83664500E7F975 /* DataRef.h in Headers */, + BC64641C11D7F416006455B0 /* DatasetDOMStringMap.h in Headers */, + 81AC5999131636E60009A7E0 /* DataTransferItem.h in Headers */, + 81AC599A131636E60009A7E0 /* DataTransferItemList.h in Headers */, + 2E97CCEB12939CB800C5C8FF /* DataView.h in Headers */, + A5732B0B136A161D005C8D7C /* DateComponents.h in Headers */, + F55B3DB61251F12D003EF269 /* DateInputType.h in Headers */, + 453EB637159C570400001BB7 /* DateTimeFormat.h in Headers */, + F55B3DB81251F12D003EF269 /* DateTimeInputType.h in Headers */, + F55B3DBA1251F12D003EF269 /* DateTimeLocalInputType.h in Headers */, + 45FEA5D0156DDE8C00654101 /* Decimal.h in Headers */, + A8C228A111D5722E00D5A7D3 /* DecodedDataDocumentParser.h in Headers */, + CECCFC3B141973D5002A0AC1 /* DecodeEscapeSequences.h in Headers */, + 4162A451101145AE00DFF3ED /* DedicatedWorkerGlobalScope.h in Headers */, + 41A3D58F101C152D00316D07 /* DedicatedWorkerThread.h in Headers */, + FD06DFA6134A4DEF006F5D7D /* DefaultAudioDestinationNode.h in Headers */, + 4167EBF6102962BA003D252A /* DefaultSharedWorkerRepository.h in Headers */, + FD31602C12B0267600C1A359 /* DelayDSPKernel.h in Headers */, + FD31602E12B0267600C1A359 /* DelayNode.h in Headers */, + FD31603112B0267600C1A359 /* DelayProcessor.h in Headers */, + 1C4C8F660AD8655D009475CE /* DeleteButton.h in Headers */, + 1C4C8F020AD85D87009475CE /* DeleteButtonController.h in Headers */, + 93309DDF099E64920056E581 /* DeleteFromTextNodeCommand.h in Headers */, + 93309DE1099E64920056E581 /* DeleteSelectionCommand.h in Headers */, + FD1660A513787C6D001FFA7B /* DenormalDisabler.h in Headers */, + E100EE761546EAC100BA11D1 /* DeprecatedStyleBuilder.h in Headers */, + A7C9ABF91357A3BF00F5503F /* DetailsMarkerControl.h in Headers */, + CCC2B51415F613060048CDD6 /* DeviceClient.h in Headers */, + CCC2B51615F613060048CDD6 /* DeviceController.h in Headers */, + 31FB1A57120A5D0600DC02A0 /* DeviceMotionClient.h in Headers */, + 31FB1A59120A5D0600DC02A0 /* DeviceMotionController.h in Headers */, + 31FB1A5B120A5D0600DC02A0 /* DeviceMotionData.h in Headers */, + 31FB1A5D120A5D0600DC02A0 /* DeviceMotionEvent.h in Headers */, + 59A8F1D811A69520001AC34A /* DeviceOrientationClient.h in Headers */, + 59309A1311F4AE6A00250603 /* DeviceOrientationClientMock.h in Headers */, + 59A8F1D611A69513001AC34A /* DeviceOrientationController.h in Headers */, + 590E1B4911E4EF4B0069F784 /* DeviceOrientationData.h in Headers */, + 59A85EA4119D68EC00DEF1EF /* DeviceOrientationEvent.h in Headers */, + CECADFC7153778FF00E37068 /* DictationAlternative.h in Headers */, + CECADFC9153778FF00E37068 /* DictationCommand.h in Headers */, + 316023F01532C40C00D50FF4 /* Dictionary.h in Headers */, + FDAF19991513D131008DB0C3 /* DirectConvolver.h in Headers */, + 89878553122CA064003AABDA /* DirectoryEntry.h in Headers */, + 893C48011248BD3A002B3D86 /* DirectoryEntrySync.h in Headers */, + 89878555122CA064003AABDA /* DirectoryReader.h in Headers */, + 890AE0E11256A07900F5968C /* DirectoryReaderBase.h in Headers */, + 893C48031248BD3A002B3D86 /* DirectoryReaderSync.h in Headers */, + 49AF2D6914435D050016A784 /* DisplayRefreshMonitor.h in Headers */, + 5D8C4DC01428222C0026CE72 /* DisplaySleepDisabler.h in Headers */, + FD31609112B026F700C1A359 /* Distance.h in Headers */, + 84730D771248F0B300D3A9C9 /* DistantLightSource.h in Headers */, + B2F34FE60E82F81400F627CD /* DNS.h in Headers */, + A8185F4009765766005826D9 /* Document.h in Headers */, + A3BB59F41457A40D00AC56FE /* DocumentEventQueue.h in Headers */, + A8185F3D09765766005826D9 /* DocumentFragment.h in Headers */, + 656D37360ADBA5DE00A4554D /* DocumentLoader.h in Headers */, + 8A12E35D11FA33280025836A /* DocumentLoadTiming.h in Headers */, + ED2BA83C09A24B91006C0AC4 /* DocumentMarker.h in Headers */, + CE057FA61220731100A476D5 /* DocumentMarkerController.h in Headers */, + 14947FFE12F80CD200A0F631 /* DocumentOrderedMap.h in Headers */, + BCCFBAE80B5152ED0001F1D7 /* DocumentParser.h in Headers */, + 4A4F48AA16B0DFC000EDBB29 /* DocumentRuleSets.h in Headers */, + AD6E71AD1668899D00320C13 /* DocumentSharedObjectPool.h in Headers */, + E47E276516036ED200EE2AFB /* DocumentStyleSheetCollection.h in Headers */, + 0B90561A0F2578BF0095FF6A /* DocumentThreadableLoader.h in Headers */, + 86D982F7125C154000AD9E3D /* DocumentTiming.h in Headers */, + A8185F3909765766005826D9 /* DocumentType.h in Headers */, + 973889A1116EA9DC00ADF313 /* DocumentWriter.h in Headers */, + BC1A37AD097C715F0019F3D8 /* DOM.h in Headers */, + 8538F0190AD718D8006A81D1 /* DOMAbstractView.h in Headers */, + BC99812E0DBE807A008CE9EF /* DOMAbstractViewFrame.h in Headers */, + 8538F01B0AD718D8006A81D1 /* DOMAbstractViewInternal.h in Headers */, + 1A8F6BC30DB55CDC001DB794 /* DOMApplicationCache.h in Headers */, + 85D389B20A991A7F00282145 /* DOMAttr.h in Headers */, + 85E7118D0AC5D5350053270F /* DOMAttrInternal.h in Headers */, + BC946EEF107FDBAC00857193 /* DOMBeforeLoadEvent.h in Headers */, + 2E2D99E710E2BC1C00496337 /* DOMBlob.h in Headers */, + 2E2D99EA10E2BC3800496337 /* DOMBlobInternal.h in Headers */, + 85089CD70A98C42800A275AA /* DOMCDATASection.h in Headers */, + 85E7118E0AC5D5350053270F /* DOMCDATASectionInternal.h in Headers */, + 85ACA9860A9B520300671E90 /* DOMCharacterData.h in Headers */, + 85E7118F0AC5D5350053270F /* DOMCharacterDataInternal.h in Headers */, + 85089CD90A98C42800A275AA /* DOMComment.h in Headers */, + 85E711900AC5D5350053270F /* DOMCommentInternal.h in Headers */, + BC1A37AF097C715F0019F3D8 /* DOMCore.h in Headers */, + BC60D6E90D28D83400B9918F /* DOMCoreException.h in Headers */, + 858C38A50AA8F20400B187A4 /* DOMCounter.h in Headers */, + 85E711910AC5D5350053270F /* DOMCounterInternal.h in Headers */, + BC1A37B0097C715F0019F3D8 /* DOMCSS.h in Headers */, + 85032DD70AA8C9BE007D3B7D /* DOMCSSCharsetRule.h in Headers */, + 85909CDC0ACC7A7E00DF01F1 /* DOMCSSCharsetRuleInternal.h in Headers */, + 85032DD90AA8C9BE007D3B7D /* DOMCSSFontFaceRule.h in Headers */, + 85909CDD0ACC7A7E00DF01F1 /* DOMCSSFontFaceRuleInternal.h in Headers */, + 85032DDB0AA8C9BE007D3B7D /* DOMCSSImportRule.h in Headers */, + 85909CDE0ACC7A7E00DF01F1 /* DOMCSSImportRuleInternal.h in Headers */, + 85032DDD0AA8C9BE007D3B7D /* DOMCSSMediaRule.h in Headers */, + 85909CDF0ACC7A7E00DF01F1 /* DOMCSSMediaRuleInternal.h in Headers */, + 85032DDF0AA8C9BE007D3B7D /* DOMCSSPageRule.h in Headers */, + 85909CE00ACC7A7E00DF01F1 /* DOMCSSPageRuleInternal.h in Headers */, + 858C382C0AA8E40500B187A4 /* DOMCSSPrimitiveValue.h in Headers */, + 85909D290ACC7D5500DF01F1 /* DOMCSSPrimitiveValueInternal.h in Headers */, + 85032DE10AA8C9BE007D3B7D /* DOMCSSRule.h in Headers */, + 85B498ED0ADB32FB00925CBB /* DOMCSSRuleInternal.h in Headers */, + 85032DE30AA8C9BE007D3B7D /* DOMCSSRuleList.h in Headers */, + 85E711920AC5D5350053270F /* DOMCSSRuleListInternal.h in Headers */, + 85032DE50AA8C9BE007D3B7D /* DOMCSSStyleDeclaration.h in Headers */, + 85E711930AC5D5350053270F /* DOMCSSStyleDeclarationInternal.h in Headers */, + 85032DE70AA8C9BE007D3B7D /* DOMCSSStyleRule.h in Headers */, + 85909CE20ACC7A7E00DF01F1 /* DOMCSSStyleRuleInternal.h in Headers */, + 858C39280AA8FF9D00B187A4 /* DOMCSSStyleSheet.h in Headers */, + 85909CE30ACC7A7E00DF01F1 /* DOMCSSStyleSheetInternal.h in Headers */, + FCD8832A16A49F8200962227 /* DOMCSSSupportsRule.h in Headers */, + FCEBBAAB16A4967A00FA20A6 /* DOMCSSSupportsRuleInternal.h in Headers */, + 85032DE90AA8C9BE007D3B7D /* DOMCSSUnknownRule.h in Headers */, + 85909CE40ACC7A7E00DF01F1 /* DOMCSSUnknownRuleInternal.h in Headers */, + 858C381C0AA8E29600B187A4 /* DOMCSSValue.h in Headers */, + 85B498F30ADB336A00925CBB /* DOMCSSValueInternal.h in Headers */, + 858C383C0AA8ED8200B187A4 /* DOMCSSValueList.h in Headers */, + 85909D2B0ACC7D5500DF01F1 /* DOMCSSValueListInternal.h in Headers */, + E10B9CCC0B747A44003ED890 /* DOMCustomXPathNSResolver.h in Headers */, + 85ACABB00A9CAF8000671E90 /* DOMDocument.h in Headers */, + 85089CDB0A98C42800A275AA /* DOMDocumentFragment.h in Headers */, + 44311F8212E4E66C000A8D19 /* DOMDocumentFragmentInternal.h in Headers */, + 44311CD612E4E22D000A8D19 /* DOMDocumentFragmentPrivate.h in Headers */, + 85E711950AC5D5350053270F /* DOMDocumentInternal.h in Headers */, + 44311CD712E4E22D000A8D19 /* DOMDocumentPrivate.h in Headers */, + 85CA975C0A962E5400690CCF /* DOMDocumentType.h in Headers */, + 85E711960AC5D5350053270F /* DOMDocumentTypeInternal.h in Headers */, + 8518DCE90A9CC80D0091B7A6 /* DOMDOMImplementation.h in Headers */, + 85E711970AC5D5350053270F /* DOMDOMImplementationInternal.h in Headers */, + 52CCA9E815E3F64C0053C77F /* DOMDOMNamedFlowCollection.h in Headers */, + 52CCA9EA15E3F64C0053C77F /* DOMDOMNamedFlowCollectionInternal.h in Headers */, + 2D9A247415B9C2E300D34527 /* DOMDOMSecurityPolicy.h in Headers */, + 2D9A247515B9C2E300D34527 /* DOMDOMSecurityPolicyInternal.h in Headers */, + 9B3A8872145632F9003AE8F5 /* DOMDOMSettableTokenList.h in Headers */, + 7694565B1214DB630007CBAE /* DOMDOMTokenList.h in Headers */, + 7AABA25A14BC613300AA9A11 /* DOMEditor.h in Headers */, + 85ACA9C00A9B5FA500671E90 /* DOMElement.h in Headers */, + 85E711980AC5D5350053270F /* DOMElementInternal.h in Headers */, + 85CA96B80A9621A600690CCF /* DOMEntity.h in Headers */, + 85E711990AC5D5350053270F /* DOMEntityInternal.h in Headers */, + 85089CDD0A98C42800A275AA /* DOMEntityReference.h in Headers */, + 85E7119A0AC5D5350053270F /* DOMEntityReferenceInternal.h in Headers */, + BC1BDF25156C18C7001C1243 /* DOMError.h in Headers */, + 85AFA8220AAF528A00E84305 /* DOMEvent.h in Headers */, + 851EE8110ABCA39600A6AA33 /* DOMEventException.h in Headers */, + 85B498F50ADB337A00925CBB /* DOMEventInternal.h in Headers */, + 85D2AD680AB1A40A00C313EA /* DOMEventListener.h in Headers */, + BC1A37B2097C715F0019F3D8 /* DOMEvents.h in Headers */, + 854075200AD6C5FB00620C57 /* DOMEventTarget.h in Headers */, + 85C78A680ABDE1B40044FC16 /* DOMException.h in Headers */, + BC1A37B5097C715F0019F3D8 /* DOMExtensions.h in Headers */, + BC00F0040E0A185500FD04E3 /* DOMFile.h in Headers */, + 2E3BC108117D479800B9409A /* DOMFileError.h in Headers */, + 2E3BC10B117D47C800B9409A /* DOMFileErrorInternal.h in Headers */, + BC00F0060E0A185500FD04E3 /* DOMFileInternal.h in Headers */, + BC00F0070E0A185500FD04E3 /* DOMFileList.h in Headers */, + BC00F0090E0A185500FD04E3 /* DOMFileListInternal.h in Headers */, + 89878557122CA064003AABDA /* DOMFilePath.h in Headers */, + 89878559122CA064003AABDA /* DOMFileSystem.h in Headers */, + 893C48051248BD3A002B3D86 /* DOMFileSystemBase.h in Headers */, + 893C48071248BD3A002B3D86 /* DOMFileSystemSync.h in Headers */, + 2ED609BD1145B07100C8684E /* DOMFormData.h in Headers */, + BC1A37B6097C715F0019F3D8 /* DOMHTML.h in Headers */, + 85DF81270AA7787200486AD7 /* DOMHTMLAnchorElement.h in Headers */, + 85E7119B0AC5D5350053270F /* DOMHTMLAnchorElementInternal.h in Headers */, + 854075690AD6CBF900620C57 /* DOMHTMLAppletElement.h in Headers */, + 855247CF0AD850B80012093B /* DOMHTMLAppletElementInternal.h in Headers */, + 85ECBEEB0AA7626900544F0B /* DOMHTMLAreaElement.h in Headers */, + 85E7119C0AC5D5350053270F /* DOMHTMLAreaElementInternal.h in Headers */, + 859A9C470AA5E3BD00B694B2 /* DOMHTMLBaseElement.h in Headers */, + 85E7119D0AC5D5350053270F /* DOMHTMLBaseElementInternal.h in Headers */, + 85ECBEED0AA7626900544F0B /* DOMHTMLBaseFontElement.h in Headers */, + 85E7119E0AC5D5350053270F /* DOMHTMLBaseFontElementInternal.h in Headers */, + 859A9C490AA5E3BD00B694B2 /* DOMHTMLBodyElement.h in Headers */, + 85E7119F0AC5D5350053270F /* DOMHTMLBodyElementInternal.h in Headers */, + 85183B420AA6926100F19FA3 /* DOMHTMLBRElement.h in Headers */, + 85E711A00AC5D5350053270F /* DOMHTMLBRElementInternal.h in Headers */, + 85BA4CDD0AA6861B0088052D /* DOMHTMLButtonElement.h in Headers */, + 85E711A10AC5D5350053270F /* DOMHTMLButtonElementInternal.h in Headers */, + 93D3C1590F97A9D70053C013 /* DOMHTMLCanvasElement.h in Headers */, + 93F9B6580BA0F35E00854064 /* DOMHTMLCanvasElementInternal.h in Headers */, + 85DF2F8E0AA3C88100AD64C5 /* DOMHTMLCollection.h in Headers */, + 85E711A20AC5D5350053270F /* DOMHTMLCollectionInternal.h in Headers */, + F5C041E30FFCA96D00839D4A /* DOMHTMLDataListElement.h in Headers */, + F5C041E50FFCA96D00839D4A /* DOMHTMLDataListElementInternal.h in Headers */, + D359D791129CA3C00006E5D2 /* DOMHTMLDetailsElement.h in Headers */, + D359D793129CA3C00006E5D2 /* DOMHTMLDetailsElementInternal.h in Headers */, + 85BA4D0B0AA688680088052D /* DOMHTMLDirectoryElement.h in Headers */, + 85E711A30AC5D5350053270F /* DOMHTMLDirectoryElementInternal.h in Headers */, + 85BA4D0D0AA688680088052D /* DOMHTMLDivElement.h in Headers */, + 85E711A40AC5D5350053270F /* DOMHTMLDivElementInternal.h in Headers */, + 85BA4D0F0AA688680088052D /* DOMHTMLDListElement.h in Headers */, + 85E711A50AC5D5350053270F /* DOMHTMLDListElementInternal.h in Headers */, + 85BCBC130ABBA87D00381160 /* DOMHTMLDocument.h in Headers */, + 85E711A60AC5D5350053270F /* DOMHTMLDocumentInternal.h in Headers */, + 85DF2EED0AA387CB00AD64C5 /* DOMHTMLElement.h in Headers */, + 85E711A70AC5D5350053270F /* DOMHTMLElementInternal.h in Headers */, + 8540756A0AD6CBF900620C57 /* DOMHTMLEmbedElement.h in Headers */, + 855247D00AD850B80012093B /* DOMHTMLEmbedElementInternal.h in Headers */, + 85BA4CDF0AA6861B0088052D /* DOMHTMLFieldSetElement.h in Headers */, + 85E711A80AC5D5350053270F /* DOMHTMLFieldSetElementInternal.h in Headers */, + 85ECBEEF0AA7626900544F0B /* DOMHTMLFontElement.h in Headers */, + 85E711A90AC5D5350053270F /* DOMHTMLFontElementInternal.h in Headers */, + 85DF2C5C0AA341F600AD64C5 /* DOMHTMLFormElement.h in Headers */, + 85E711AA0AC5D5350053270F /* DOMHTMLFormElementInternal.h in Headers */, + 85DF81950AA77E4B00486AD7 /* DOMHTMLFrameElement.h in Headers */, + 85E711AB0AC5D5350053270F /* DOMHTMLFrameElementInternal.h in Headers */, + 85DF81970AA77E4B00486AD7 /* DOMHTMLFrameSetElement.h in Headers */, + 85E711AC0AC5D5350053270F /* DOMHTMLFrameSetElementInternal.h in Headers */, + 85992EBA0AA5069500AC0785 /* DOMHTMLHeadElement.h in Headers */, + 85E711AD0AC5D5350053270F /* DOMHTMLHeadElementInternal.h in Headers */, + 85183B440AA6926100F19FA3 /* DOMHTMLHeadingElement.h in Headers */, + 85E711AE0AC5D5350053270F /* DOMHTMLHeadingElementInternal.h in Headers */, + 85ECBEF10AA7626900544F0B /* DOMHTMLHRElement.h in Headers */, + 85E711AF0AC5D5350053270F /* DOMHTMLHRElementInternal.h in Headers */, + 85992EBC0AA5069500AC0785 /* DOMHTMLHtmlElement.h in Headers */, + 85E711B00AC5D5350053270F /* DOMHTMLHtmlElementInternal.h in Headers */, + 85DF81990AA77E4B00486AD7 /* DOMHTMLIFrameElement.h in Headers */, + 85E711B10AC5D5350053270F /* DOMHTMLIFrameElementInternal.h in Headers */, + 85DF81290AA7787200486AD7 /* DOMHTMLImageElement.h in Headers */, + 85E711B20AC5D5350053270F /* DOMHTMLImageElementInternal.h in Headers */, + 85F32AEC0AA63B8700FF3184 /* DOMHTMLInputElement.h in Headers */, + 85E711B30AC5D5350053270F /* DOMHTMLInputElementInternal.h in Headers */, + A6148A6712E41D940044A784 /* DOMHTMLKeygenElement.h in Headers */, + A6148A6212E41D3A0044A784 /* DOMHTMLKeygenElementInternal.h in Headers */, + 85BA4CE10AA6861B0088052D /* DOMHTMLLabelElement.h in Headers */, + 85E711B50AC5D5350053270F /* DOMHTMLLabelElementInternal.h in Headers */, + 85BA4CE30AA6861B0088052D /* DOMHTMLLegendElement.h in Headers */, + 85E711B60AC5D5350053270F /* DOMHTMLLegendElementInternal.h in Headers */, + 85BA4D110AA688680088052D /* DOMHTMLLIElement.h in Headers */, + 85E711B70AC5D5350053270F /* DOMHTMLLIElementInternal.h in Headers */, + 85992EBE0AA5069500AC0785 /* DOMHTMLLinkElement.h in Headers */, + 85E711B80AC5D5350053270F /* DOMHTMLLinkElementInternal.h in Headers */, + 85ECBEF30AA7626900544F0B /* DOMHTMLMapElement.h in Headers */, + 85E711B90AC5D5350053270F /* DOMHTMLMapElementInternal.h in Headers */, + BC51579F0C03BBD3008BB0EE /* DOMHTMLMarqueeElement.h in Headers */, + BC5156EA0C03B741008BB0EE /* DOMHTMLMarqueeElementInternal.h in Headers */, + 85BA4D130AA688680088052D /* DOMHTMLMenuElement.h in Headers */, + 85E711BA0AC5D5350053270F /* DOMHTMLMenuElementInternal.h in Headers */, + 859A9C4D0AA5E3BD00B694B2 /* DOMHTMLMetaElement.h in Headers */, + 85E711BB0AC5D5350053270F /* DOMHTMLMetaElementInternal.h in Headers */, + 85ECBEF50AA7626900544F0B /* DOMHTMLModElement.h in Headers */, + 85E711BC0AC5D5350053270F /* DOMHTMLModElementInternal.h in Headers */, + 85DF812B0AA7787200486AD7 /* DOMHTMLObjectElement.h in Headers */, + 85E711BD0AC5D5350053270F /* DOMHTMLObjectElementInternal.h in Headers */, + 85BA4D150AA688680088052D /* DOMHTMLOListElement.h in Headers */, + 85E711BE0AC5D5350053270F /* DOMHTMLOListElementInternal.h in Headers */, + 85F32AEE0AA63B8700FF3184 /* DOMHTMLOptGroupElement.h in Headers */, + 85E711BF0AC5D5350053270F /* DOMHTMLOptGroupElementInternal.h in Headers */, + 8540756B0AD6CBF900620C57 /* DOMHTMLOptionElement.h in Headers */, + 8540756D0AD6CBF900620C57 /* DOMHTMLOptionElementInternal.h in Headers */, + 85DF2F9B0AA3CAE500AD64C5 /* DOMHTMLOptionsCollection.h in Headers */, + 85E711C00AC5D5350053270F /* DOMHTMLOptionsCollectionInternal.h in Headers */, + 85183B460AA6926100F19FA3 /* DOMHTMLParagraphElement.h in Headers */, + 85E711C10AC5D5350053270F /* DOMHTMLParagraphElementInternal.h in Headers */, + 85ECBEF70AA7626900544F0B /* DOMHTMLParamElement.h in Headers */, + 85E711C20AC5D5350053270F /* DOMHTMLParamElementInternal.h in Headers */, + 85183B480AA6926100F19FA3 /* DOMHTMLPreElement.h in Headers */, + 85E711C30AC5D5350053270F /* DOMHTMLPreElementInternal.h in Headers */, + A4226E951163D73A008B8397 /* DOMHTMLProgressElement.h in Headers */, + A4226E991163D7CC008B8397 /* DOMHTMLProgressElementInternal.h in Headers */, + 85183B4A0AA6926100F19FA3 /* DOMHTMLQuoteElement.h in Headers */, + 85E711C40AC5D5350053270F /* DOMHTMLQuoteElementInternal.h in Headers */, + 85DF819B0AA77E4B00486AD7 /* DOMHTMLScriptElement.h in Headers */, + 85E711C50AC5D5350053270F /* DOMHTMLScriptElementInternal.h in Headers */, + 85F32AF00AA63B8700FF3184 /* DOMHTMLSelectElement.h in Headers */, + 85E711C60AC5D5350053270F /* DOMHTMLSelectElementInternal.h in Headers */, + 859A9C4F0AA5E3BD00B694B2 /* DOMHTMLStyleElement.h in Headers */, + 85E711C70AC5D5350053270F /* DOMHTMLStyleElementInternal.h in Headers */, + 85DF821D0AA7849E00486AD7 /* DOMHTMLTableCaptionElement.h in Headers */, + 85E711C80AC5D5350053270F /* DOMHTMLTableCaptionElementInternal.h in Headers */, + 85DF821F0AA7849E00486AD7 /* DOMHTMLTableCellElement.h in Headers */, + 85E711C90AC5D5350053270F /* DOMHTMLTableCellElementInternal.h in Headers */, + 85DF82210AA7849E00486AD7 /* DOMHTMLTableColElement.h in Headers */, + 85E711CA0AC5D5350053270F /* DOMHTMLTableColElementInternal.h in Headers */, + 85DF82700AA78B8B00486AD7 /* DOMHTMLTableElement.h in Headers */, + 85E711CB0AC5D5350053270F /* DOMHTMLTableElementInternal.h in Headers */, + 85DF82230AA7849E00486AD7 /* DOMHTMLTableRowElement.h in Headers */, + 85E711CC0AC5D5350053270F /* DOMHTMLTableRowElementInternal.h in Headers */, + 85DF82250AA7849E00486AD7 /* DOMHTMLTableSectionElement.h in Headers */, + 85E711CD0AC5D5350053270F /* DOMHTMLTableSectionElementInternal.h in Headers */, + 85F32AF20AA63B8700FF3184 /* DOMHTMLTextAreaElement.h in Headers */, + 85E711CE0AC5D5350053270F /* DOMHTMLTextAreaElementInternal.h in Headers */, + 85992EC00AA5069500AC0785 /* DOMHTMLTitleElement.h in Headers */, + 85E711CF0AC5D5350053270F /* DOMHTMLTitleElementInternal.h in Headers */, + 85BA4D170AA688680088052D /* DOMHTMLUListElement.h in Headers */, + 85E711D00AC5D5350053270F /* DOMHTMLUListElementInternal.h in Headers */, + A8185F3B09765766005826D9 /* DOMImplementation.h in Headers */, + 93C841F809CE855C00DFF5E5 /* DOMImplementationFront.h in Headers */, + BC1A37B9097C715F0019F3D8 /* DOMInternal.h in Headers */, + 85FF315A0AAFBFCB00374F38 /* DOMKeyboardEvent.h in Headers */, + 85989DCC0ACC8BBD00A0BC51 /* DOMKeyboardEventInternal.h in Headers */, + 850656FE0AAB4763002D15C0 /* DOMMediaList.h in Headers */, + 85E711D10AC5D5350053270F /* DOMMediaListInternal.h in Headers */, + 75793ED30D0CE85B007FC0AC /* DOMMessageEvent.h in Headers */, + 75793ED50D0CE85B007FC0AC /* DOMMessageEventInternal.h in Headers */, + E1ACAF4D0E791AAF0087D12B /* DOMMessagePort.h in Headers */, + E1ADEDD50E76BD60004A1A5E /* DOMMessagePortInternal.h in Headers */, + A9C6E4E40D745E05006442E9 /* DOMMimeType.h in Headers */, + A9C6E4E80D745E18006442E9 /* DOMMimeTypeArray.h in Headers */, + 857E0B250AB043460036E447 /* DOMMouseEvent.h in Headers */, + 85989DCD0ACC8BBD00A0BC51 /* DOMMouseEventInternal.h in Headers */, + 85C7F5BF0AAFB7CC004014DD /* DOMMutationEvent.h in Headers */, + 85989DCE0ACC8BBD00A0BC51 /* DOMMutationEventInternal.h in Headers */, + 52B6C9C315E3F4DF00690B05 /* DOMNamedFlowCollection.h in Headers */, + 8518DD780A9CF31B0091B7A6 /* DOMNamedNodeMap.h in Headers */, + 85E711D20AC5D5350053270F /* DOMNamedNodeMapInternal.h in Headers */, + 853BF4DB0ABB6B55008647BB /* DOMNode.h in Headers */, + 854075260AD6C66700620C57 /* DOMNodeFilter.h in Headers */, + 85B498FB0ADB340200925CBB /* DOMNodeInternal.h in Headers */, + 85526C370AB0A17E000302EA /* DOMNodeIterator.h in Headers */, + 850B41C20AD9E7E700A6ED4F /* DOMNodeIteratorInternal.h in Headers */, + 85ACAA8D0A9B759C00671E90 /* DOMNodeList.h in Headers */, + 85E711D30AC5D5350053270F /* DOMNodeListInternal.h in Headers */, + A54A82EC15228D2F00C72BA6 /* DOMNodePrivate.h in Headers */, + 85CA96EA0A9624E900690CCF /* DOMNotation.h in Headers */, + 85E711D40AC5D5350053270F /* DOMNotationInternal.h in Headers */, + 856C8AE40A912649005C687B /* DOMObject.h in Headers */, + BC53DA601143141A000D817E /* DOMObjectHashTableMap.h in Headers */, + 85C7F5D00AAFB8D9004014DD /* DOMOverflowEvent.h in Headers */, + 85989DCF0ACC8BBD00A0BC51 /* DOMOverflowEventInternal.h in Headers */, + E1284BD61044A01E00EAEB52 /* DOMPageTransitionEvent.h in Headers */, + 1ACE53E80A8D18E70022947D /* DOMParser.h in Headers */, + 7A54881714E432A1006AE05A /* DOMPatchSupport.h in Headers */, + FB91392416AE4C17001FE682 /* DOMPath.h in Headers */, + A9C6E4EC0D745E2B006442E9 /* DOMPlugin.h in Headers */, + A9C6E4F00D745E38006442E9 /* DOMPluginArray.h in Headers */, + BC1A37BB097C715F0019F3D8 /* DOMPrivate.h in Headers */, + 85F56A7A0A98CE3700ADB60A /* DOMProcessingInstruction.h in Headers */, + 85E711D50AC5D5350053270F /* DOMProcessingInstructionInternal.h in Headers */, + BCC573350D695BBE006EF517 /* DOMProgressEvent.h in Headers */, + BCC573380D695BD7006EF517 /* DOMProgressEventInternal.h in Headers */, + 8538F05B0AD722F1006A81D1 /* DOMRange.h in Headers */, + 851EE8210ABCA58100A6AA33 /* DOMRangeException.h in Headers */, + 8538F05D0AD722F1006A81D1 /* DOMRangeInternal.h in Headers */, + 8538F0850AD72CB6006A81D1 /* DOMRanges.h in Headers */, + 858C38A70AA8F20400B187A4 /* DOMRect.h in Headers */, + 85E711D60AC5D5350053270F /* DOMRectInternal.h in Headers */, + 855D358A0AD707310019AAC7 /* DOMRGBColor.h in Headers */, + BCD0FC4F0DBD720B00B2F630 /* DOMRGBColorInternal.h in Headers */, + 2D9A246E15B9BD0000D34527 /* DOMSecurityPolicy.h in Headers */, + BC5A86850C33676000EEA649 /* DOMSelection.h in Headers */, + 4ACBC0C412713CCA0094F9B2 /* DOMSettableTokenList.h in Headers */, + C544274B11A57E7A0063A749 /* DOMStringList.h in Headers */, + BC64640A11D7F304006455B0 /* DOMStringMap.h in Headers */, + 0FF5025B102BA9010066F39A /* DOMStyleMedia.h in Headers */, + 0FF50263102BA92C0066F39A /* DOMStyleMediaInternal.h in Headers */, + 850657000AAB4763002D15C0 /* DOMStyleSheet.h in Headers */, + 85B498FF0ADB348100925CBB /* DOMStyleSheetInternal.h in Headers */, + 850657020AAB4763002D15C0 /* DOMStyleSheetList.h in Headers */, + 85E711D70AC5D5350053270F /* DOMStyleSheetListInternal.h in Headers */, + BC1A37BD097C715F0019F3D8 /* DOMStylesheets.h in Headers */, + 85ACA99C0A9B575900671E90 /* DOMText.h in Headers */, + DDE63ED50B7D45A800226998 /* DOMTextEvent.h in Headers */, + 85E711D90AC5D5350053270F /* DOMTextInternal.h in Headers */, + 188604B40F2E654A000B6443 /* DOMTimer.h in Headers */, + 05FD69E012845D4300B2BEB3 /* DOMTimeStamp.h in Headers */, + 76FC2B0C12370DA0006A991A /* DOMTokenList.h in Headers */, + E145349716A9BB6A000F6FD2 /* DOMTransitionEvent.h in Headers */, + E145349916A9BB6A000F6FD2 /* DOMTransitionEventInternal.h in Headers */, + BC1A37BE097C715F0019F3D8 /* DOMTraversal.h in Headers */, + 85526CD20AB0B7D9000302EA /* DOMTreeWalker.h in Headers */, + 850B41C30AD9E7E700A6ED4F /* DOMTreeWalkerInternal.h in Headers */, + 85C7F4910AAF79DC004014DD /* DOMUIEvent.h in Headers */, + 85989DD00ACC8BBD00A0BC51 /* DOMUIEventInternal.h in Headers */, + 2E37DFDB12DBAFB800A6B233 /* DOMURL.h in Headers */, + 15C770A6100D41CD005BA267 /* DOMValidityState.h in Headers */, + BC1A37C0097C715F0019F3D8 /* DOMViews.h in Headers */, + 31C0FF490E4CEFDD007D6FE5 /* DOMWebKitAnimationEvent.h in Headers */, + 31C0FF4B0E4CEFDD007D6FE5 /* DOMWebKitAnimationEventInternal.h in Headers */, + A2E8AE4016A498CF006BB3AA /* DOMWebKitCSSFilterRule.h in Headers */, + A2E8AE4216A498CF006BB3AA /* DOMWebKitCSSFilterRuleInternal.h in Headers */, + 31060379143281CD00ABF4BA /* DOMWebKitCSSFilterValue.h in Headers */, + 3106037B143281CD00ABF4BA /* DOMWebKitCSSFilterValueInternal.h in Headers */, + 316FE07D0E6CCC2800BF6088 /* DOMWebKitCSSKeyframeRule.h in Headers */, + 316FE07F0E6CCC2800BF6088 /* DOMWebKitCSSKeyframeRuleInternal.h in Headers */, + 316FE0800E6CCC2800BF6088 /* DOMWebKitCSSKeyframesRule.h in Headers */, + 316FE0820E6CCC2800BF6088 /* DOMWebKitCSSKeyframesRuleInternal.h in Headers */, + 498391500F1E76B400C23782 /* DOMWebKitCSSMatrix.h in Headers */, + 498391520F1E76B400C23782 /* DOMWebKitCSSMatrixInternal.h in Headers */, + 8AD0A59614C88358000D83C5 /* DOMWebKitCSSRegionRule.h in Headers */, + 8AD0A59814C88358000D83C5 /* DOMWebKitCSSRegionRuleInternal.h in Headers */, + 31611E610E1C4E1400F6A579 /* DOMWebKitCSSTransformValue.h in Headers */, + 31611E630E1C4E1400F6A579 /* DOMWebKitCSSTransformValueInternal.h in Headers */, + 3F2B33EB165AF15600E3987C /* DOMWebKitCSSViewportRule.h in Headers */, + 3F2B33ED165AF15600E3987C /* DOMWebKitCSSViewportRuleInternal.h in Headers */, + 8A195932147EA16E00D1EA61 /* DOMWebKitNamedFlow.h in Headers */, + 8A195934147EA16E00D1EA61 /* DOMWebKitNamedFlowInternal.h in Headers */, + 31C0FF4C0E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.h in Headers */, + 31C0FF4E0E4CEFDD007D6FE5 /* DOMWebKitTransitionEventInternal.h in Headers */, + 85C7F5E70AAFBAFB004014DD /* DOMWheelEvent.h in Headers */, + 85989DD10ACC8BBD00A0BC51 /* DOMWheelEventInternal.h in Headers */, + 1403B99709EB13AF00797C7F /* DOMWindow.h in Headers */, + FC9A0F75164094CF003D6B8D /* DOMWindowCSS.h in Headers */, + 51FA2D78152132B300C1BA0B /* DOMWindowExtension.h in Headers */, + 9712A5AE15004EDA0048AF10 /* DOMWindowIndexedDatabase.h in Headers */, + 97B38E27151C4271004622E9 /* DOMWindowNotifications.h in Headers */, + 97D2AD0414B823A60093DF32 /* DOMWindowProperty.h in Headers */, + 89F60B11157F686E0075E157 /* DOMWindowQuota.h in Headers */, + AA2A5AD616A4861600975A25 /* DOMWindowSpeechSynthesis.h in Headers */, + A8CCBB49151F831600AB7CE9 /* DOMWindowWebDatabase.h in Headers */, + BC53DA2E1143121E000D817E /* DOMWrapperWorld.h in Headers */, + 1A1D13800A5325520064BF5F /* DOMXPath.h in Headers */, + 858015CE0ABCA75D0080588D /* DOMXPathException.h in Headers */, + 85E9E0A10AB3A0C700069CD0 /* DOMXPathExpression.h in Headers */, + 85E711DA0AC5D5350053270F /* DOMXPathExpressionInternal.h in Headers */, + 85E9E0A40AB3A0C700069CD0 /* DOMXPathNSResolver.h in Headers */, + 85E9E0A50AB3A0C700069CD0 /* DOMXPathResult.h in Headers */, + 85E711DB0AC5D5350053270F /* DOMXPathResultInternal.h in Headers */, + A718760E0B2A120100A16ECE /* DragActions.h in Headers */, + A7CA59630B27C1F200FA021D /* DragClient.h in Headers */, + A7CA595D0B27BD9E00FA021D /* DragController.h in Headers */, + A7B6E69F0B291A9600D0529F /* DragData.h in Headers */, + A7CFB3D20B7ED10A0070C32D /* DragImage.h in Headers */, + 3169379C14609C6C00C01362 /* DragSession.h in Headers */, + 81F65FF613788FAA00FF6F2D /* DragState.h in Headers */, + 498770DC1242C535002226BA /* DrawingBuffer.h in Headers */, + E1BA66F11742BD8600C20251 /* DynamicLinkerInterposing.h in Headers */, + FD6ED2C8136B8E66003CF072 /* DynamicsCompressor.h in Headers */, + FD537357137B653B00008DCE /* DynamicsCompressorKernel.h in Headers */, + FD6ED2C4136B8E42003CF072 /* DynamicsCompressorNode.h in Headers */, + 93309DE2099E64920056E581 /* EditAction.h in Headers */, + 93309DE4099E64920056E581 /* EditCommand.h in Headers */, + 4F1534DE11B532EC0021FD86 /* EditingBehavior.h in Headers */, + 4F1534E011B533020021FD86 /* EditingBehaviorTypes.h in Headers */, + 3AC648B2129E146500C3EB25 /* EditingBoundary.h in Headers */, + 9BAB6C6C12550631001626D4 /* EditingStyle.h in Headers */, + 4B3043CD0AE0373B00A82647 /* Editor.h in Headers */, + 1AF326790D78B9440068F0C4 /* EditorClient.h in Headers */, + 4BAE95B10B2FA9CE00AED8A0 /* EditorDeleteAction.h in Headers */, + 93FDAFCA0B11307400E2746F /* EditorInsertAction.h in Headers */, + A8C4A80709D563270003AC8D /* Element.h in Headers */, + 63F5D4F70E8C4B7100C0BD04 /* ElementRareData.h in Headers */, + FBDB619F16D6036500BB3394 /* ElementRuleCollector.h in Headers */, + 57CF4C8714F7597A00ECFF14 /* ElementShadow.h in Headers */, + A8CFF6BE0A156118000A4234 /* EllipsisBox.h in Headers */, + F55B3DBC1251F12D003EF269 /* EmailInputType.h in Headers */, + B25599A50D00D8BA00BB825C /* EmptyClients.h in Headers */, + 5DC87EF011716DF2001C0E6D /* EmptyProtocolDefinitions.h in Headers */, + A8EA7EC20A1945D000A8EF5F /* Entity.h in Headers */, + A8EA7EC00A1945D000A8EF5F /* EntityReference.h in Headers */, + 8987855A122CA064003AABDA /* EntriesCallback.h in Headers */, + 8987855C122CA064003AABDA /* Entry.h in Headers */, + 8987855E122CA064003AABDA /* EntryArray.h in Headers */, + 893C48091248BD3A002B3D86 /* EntryArraySync.h in Headers */, + 893C480B1248BD3A002B3D86 /* EntryBase.h in Headers */, + 8987855F122CA064003AABDA /* EntryCallback.h in Headers */, + 893C480D1248BD3A002B3D86 /* EntrySync.h in Headers */, + FD31609312B026F700C1A359 /* EqualPowerPanner.h in Headers */, + 89878560122CA064003AABDA /* ErrorCallback.h in Headers */, + 2ECF7AE210162B5800427DE7 /* ErrorEvent.h in Headers */, + 85031B420A44EFC700F992E0 /* Event.h in Headers */, + 4138D3351244054800323D33 /* EventContext.h in Headers */, + 418A06D0133C04D500CD379C /* EventDispatcher.h in Headers */, + 4AF1AD3F13FD23A400AA9590 /* EventDispatchMediator.h in Headers */, + BC60D90C0D2A17CE00B9918F /* EventException.h in Headers */, + 97665013144FAA4200F6BB51 /* EventFactory.h in Headers */, + 93C09A530B064DB3005ABD4D /* EventHandler.h in Headers */, + 970B72A6145008EB00F00A37 /* EventHeaders.h in Headers */, + 970B728A144FFAC600F00A37 /* EventInterfaces.h in Headers */, + 935FBC4509BA00B900E230B1 /* EventListener.h in Headers */, + AD4495F4141FC08900541EDF /* EventListenerMap.h in Headers */, + 1CA19E160DC255CA0065A994 /* EventLoop.h in Headers */, + 939885C408B7E3D100E707C4 /* EventNames.h in Headers */, + 4AAAB4C516D379B5001DA41B /* EventPathWalker.h in Headers */, + 8F67561B1288B17B0047ACA3 /* EventQueue.h in Headers */, + 4A5CB1C616C3A5FD00AB2886 /* EventRetargeter.h in Headers */, + E0FEF372B17C53EAC1C1FBEE /* EventSource.h in Headers */, + E12EDB7B0B308A78002704B6 /* EventTarget.h in Headers */, + 97AA3CA5145237CC003E1DA6 /* EventTargetHeaders.h in Headers */, + 97AA3CA6145237CC003E1DA6 /* EventTargetInterfaces.h in Headers */, + BC60D8F30D2A11E000B9918F /* ExceptionBase.h in Headers */, + 935FBCF209BA143B00E230B1 /* ExceptionCode.h in Headers */, + 973DC640145A9409002842C2 /* ExceptionCodeDescription.h in Headers */, + A74BB76B13BDA86300FF7BF0 /* ExceptionCodePlaceholder.h in Headers */, + 148AFDA50AF58360008CC700 /* ExceptionHandlers.h in Headers */, + 9767CE0B145ABC13005E64DB /* ExceptionHeaders.h in Headers */, + 9767CE0C145ABC13005E64DB /* ExceptionInterfaces.h in Headers */, + A024575216CEAA27000E5671 /* EXTDrawBuffers.h in Headers */, + 6E67D2A91280E8BD008758F7 /* Extensions3D.h in Headers */, + 6E67D2A71280E8A4008758F7 /* Extensions3DOpenGL.h in Headers */, + 44DAB5B215A623580097C1E4 /* Extensions3DOpenGLCommon.h in Headers */, + 7728694F14F8882500F484DC /* EXTTextureFilterAnisotropic.h in Headers */, + 97C740151603F7A10011FF2D /* FeatureObserver.h in Headers */, + A75E8B890E1DE2D6007F2481 /* FEBlend.h in Headers */, + A75E8B8B0E1DE2D6007F2481 /* FEColorMatrix.h in Headers */, + A75E8B8D0E1DE2D6007F2481 /* FEComponentTransfer.h in Headers */, + A75E8B8F0E1DE2D6007F2481 /* FEComposite.h in Headers */, + 84730D791248F0B300D3A9C9 /* FEConvolveMatrix.h in Headers */, + 50D403C814768C9400D30BB5 /* FECustomFilter.h in Headers */, + 84730D7B1248F0B300D3A9C9 /* FEDiffuseLighting.h in Headers */, + 84730D7D1248F0B300D3A9C9 /* FEDisplacementMap.h in Headers */, + 4358E8811360A31700E4748C /* FEDropShadow.h in Headers */, + 84730D7F1248F0B300D3A9C9 /* FEFlood.h in Headers */, + 84801955108BAFB300CB2B1F /* FEGaussianBlur.h in Headers */, + 84730D811248F0B300D3A9C9 /* FELighting.h in Headers */, + 84730D831248F0B300D3A9C9 /* FEMerge.h in Headers */, + 84730D851248F0B300D3A9C9 /* FEMorphology.h in Headers */, + 84730D871248F0B300D3A9C9 /* FEOffset.h in Headers */, + 84730D891248F0B300D3A9C9 /* FESpecularLighting.h in Headers */, + 84730D8B1248F0B300D3A9C9 /* FETile.h in Headers */, + 84730D8D1248F0B300D3A9C9 /* FETurbulence.h in Headers */, + FD31609512B026F700C1A359 /* FFTConvolver.h in Headers */, + FD31609712B026F700C1A359 /* FFTFrame.h in Headers */, + 976D6C81122B8A3D001FD1F7 /* File.h in Headers */, + 893C47A71238908B002B3D86 /* FileCallback.h in Headers */, + 066C772B0AB603B700238CC4 /* FileChooser.h in Headers */, + 89878562122CA064003AABDA /* FileEntry.h in Headers */, + 893C480F1248BD3A002B3D86 /* FileEntrySync.h in Headers */, + 976D6C83122B8A3D001FD1F7 /* FileError.h in Headers */, + 2EDF369F122C94C8002F7D4E /* FileException.h in Headers */, + 1A88A90517553CD7000C74F9 /* FileIconLoader.h in Headers */, + F55B3DBE1251F12D003EF269 /* FileInputType.h in Headers */, + 976D6C86122B8A3D001FD1F7 /* FileList.h in Headers */, + 4689F1AF1267BAE100E8D380 /* FileMetadata.h in Headers */, + 976D6C89122B8A3D001FD1F7 /* FileReader.h in Headers */, + 2E75841E12779ADA0062628B /* FileReaderLoader.h in Headers */, + 2E75841F12779ADA0062628B /* FileReaderLoaderClient.h in Headers */, + 2EDF369D122C94B4002F7D4E /* FileReaderSync.h in Headers */, + 2EF1BFEB121C9F4200C27627 /* FileStream.h in Headers */, + 2EF1BFF9121CB0CE00C27627 /* FileStreamClient.h in Headers */, + 514B3F730C722047000530DF /* FileSystem.h in Headers */, + 89878563122CA064003AABDA /* FileSystemCallback.h in Headers */, + 89878565122CA064003AABDA /* FileSystemCallbacks.h in Headers */, + 89878566122CA064003AABDA /* FileSystemFlags.h in Headers */, + 26C17A3E1491D2D400D12BA2 /* FileSystemIOS.h in Headers */, + 89C7C2E1155804F4007D5A7B /* FileSystemType.h in Headers */, + 976D6C8E122B8A3D001FD1F7 /* FileThread.h in Headers */, + 976D6C8F122B8A3D001FD1F7 /* FileThreadTask.h in Headers */, + 976D6C91122B8A3D001FD1F7 /* FileWriter.h in Headers */, + 46BC724F129B104C0071C07E /* FileWriterBase.h in Headers */, + 46BC7250129B104C0071C07E /* FileWriterBaseCallback.h in Headers */, + 893C47A81238908B002B3D86 /* FileWriterCallback.h in Headers */, + 46700ED1127B96CB00F5D5D6 /* FileWriterSync.h in Headers */, + BC5EB69F0E81DAEB00B25965 /* FillLayer.h in Headers */, + 845E72F80FD261EE00A87D79 /* Filter.h in Headers */, + 08C9251A0FCC7C4A00480DEC /* FilterEffect.h in Headers */, + 31313F661443B35F006E2A90 /* FilterEffectRenderer.h in Headers */, + 49ECEB6E1499790D00CDD3A4 /* FilterOperation.h in Headers */, + 49ECEB701499790D00CDD3A4 /* FilterOperations.h in Headers */, + 372C00D9129619F8005C9575 /* FindOptions.h in Headers */, + A8CFF04F0A154F09000A4234 /* FixedTableLayout.h in Headers */, + BC073BAA0C399B1F000F5979 /* FloatConversion.h in Headers */, + B27535690B053814002CE64F /* FloatPoint.h in Headers */, + B2E27CA00B0F2B0900F17C7B /* FloatPoint3D.h in Headers */, + 6EC480A216EA638A00A48DCB /* FloatPolygon.h in Headers */, + 0FD723820EC8BD9300CA5DD7 /* FloatQuad.h in Headers */, + B275356B0B053814002CE64F /* FloatRect.h in Headers */, + B275356D0B053814002CE64F /* FloatSize.h in Headers */, + D72F6D7A153159A3001EE44E /* FlowThreadController.h in Headers */, + 14993BE60B2F2B1C0050497F /* FocusController.h in Headers */, + 062287840B4DB322000C34DF /* FocusDirection.h in Headers */, + B6D9D23514EABD260090D75E /* FocusEvent.h in Headers */, + B2C3DA610D006CD600EF6F26 /* Font.h in Headers */, + BCB92D4F1293550B00C8387F /* FontBaseline.h in Headers */, + B2C3DA630D006CD600EF6F26 /* FontCache.h in Headers */, + B2AFFC7E0D00A5C10030074D /* FontCustomPlatformData.h in Headers */, + 371F4F400D25B9AF00ECE0D5 /* FontData.h in Headers */, + B2C3DA660D006CD600EF6F26 /* FontDescription.h in Headers */, + 4A6E9FC813C17D570046A7F8 /* FontFeatureSettings.h in Headers */, + 4A6E9FC413C17D1D0046A7F8 /* FontFeatureValue.h in Headers */, + B2C3DA680D006CD600EF6F26 /* FontGlyphs.h in Headers */, + 409EBDB616B7EEA300CBA3FC /* FontLoader.h in Headers */, + 0845680812B90DA600960A9F /* FontMetrics.h in Headers */, + F7A034C4126BF6BE007DC19E /* FontOrientation.h in Headers */, + B5320D6B122A24E9002D1440 /* FontPlatformData.h in Headers */, + 37ACCE420DA2980F0089E602 /* FontRenderingMode.h in Headers */, + B2C3DA6B0D006CD600EF6F26 /* FontSelector.h in Headers */, + 37202199106213C600F25C4B /* FontSmoothingMode.h in Headers */, + 3784C34B0E11AA34007D8D48 /* FontTraitsMask.h in Headers */, + B734B183119B991D006587BD /* FontTranscoder.h in Headers */, + A80E6CED0A1989CA007FB8C5 /* FontValue.h in Headers */, + BCE4413612F7490B009B84B8 /* FontWidthVariant.h in Headers */, + 4A0DA2FF129B241900AB61E1 /* FormAssociatedElement.h in Headers */, + D05CED2A0A40BB2C00C5AF38 /* FormatBlockCommand.h in Headers */, + F50664F8157F52DC00AC226F /* FormController.h in Headers */, + 514C76700CE923A1007EF3CD /* FormData.h in Headers */, + 085B92BB0EFDE73D00E6123C /* FormDataBuilder.h in Headers */, + A8136D380973A8E700D74463 /* FormDataList.h in Headers */, + 7EE6846712D26E3800E79415 /* FormDataStreamCFNet.h in Headers */, + 514C764E0CE9234E007EF3CD /* FormDataStreamMac.h in Headers */, + 656D373A0ADBA5DE00A4554D /* FormState.h in Headers */, + 41885B9311B6FDA6003383BB /* FormSubmission.h in Headers */, + 935C476D09AC4D6300A6AAB4 /* FoundationExtras.h in Headers */, + A853123D11D0471B00D4D077 /* FragmentScriptingPermission.h in Headers */, + 65BF022F0974816300C43196 /* Frame.h in Headers */, + A7B070D3130A409C00A3763C /* FrameActionScheduler.h in Headers */, + 974A862314B7ADBB003FDC76 /* FrameDestructionObserver.h in Headers */, + 656D373C0ADBA5DE00A4554D /* FrameLoader.h in Headers */, + 656D373E0ADBA5DE00A4554D /* FrameLoaderClient.h in Headers */, + D000EBA311BDAFD400C47726 /* FrameLoaderStateMachine.h in Headers */, + 93B77A380ADD792500EA4B81 /* FrameLoaderTypes.h in Headers */, + 658436860AE01B7400E53753 /* FrameLoadRequest.h in Headers */, + 628D214E12131EF40055DCFC /* FrameNetworkingContext.h in Headers */, + 93309E0E099E64920056E581 /* FrameSelection.h in Headers */, + 7CE30DAA171B63D200EC33E1 /* FrameSnapshottingMac.h in Headers */, + 65A21485097A3F5300B9050A /* FrameTree.h in Headers */, + 65CBFEFA0974F607001DAC25 /* FrameView.h in Headers */, + 97205AB0123928CA00B17380 /* FTPDirectoryDocument.h in Headers */, + 51C81B8A0C4422F70019ECE3 /* FTPDirectoryParser.h in Headers */, + FD31600D12B0267600C1A359 /* GainNode.h in Headers */, + 935C477509AC4D8E00A6AAB4 /* GapRects.h in Headers */, + 1432E8470C51493800B1500F /* GCController.h in Headers */, + C0C054CC1118C8E400CE2636 /* generate-bindings.pl in Headers */, + BC23F0DB0DAFF4A4009FDC91 /* GeneratedImage.h in Headers */, + 2D481F04146B5C6B00AA7834 /* GeneratorGeneratedImage.h in Headers */, + A622A8FF122C44A600A785B3 /* GenericBinding.h in Headers */, + 0720B0A114D3323500642955 /* GenericEventQueue.h in Headers */, + 9746AF2414F4DDE6003E7A70 /* Geolocation.h in Headers */, + 9746AF2514F4DDE6003E7A71 /* GeolocationClient.h in Headers */, + 9746AF2714F4DDE6003E7A70 /* GeolocationController.h in Headers */, + 9746AF2814F4DDE6003E7A70 /* GeolocationError.h in Headers */, + 9746AF2914F4DDE6003E7A70 /* GeolocationPosition.h in Headers */, + 9746AF2A14F4DDE6003E7A70 /* Geoposition.h in Headers */, + 0720B0A114D3323500642957 /* GestureEvent.h in Headers */, + 086BBD0F136039C2008B15D8 /* Glyph.h in Headers */, + B2C3DA6C0D006CD600EF6F26 /* GlyphBuffer.h in Headers */, + C5D4AA7A116BAFB60069CA93 /* GlyphMetricsMap.h in Headers */, + 0873B86B136064EA00A522C2 /* GlyphPage.h in Headers */, + B2C3DA6E0D006CD600EF6F26 /* GlyphPageTreeNode.h in Headers */, + BC53C5F50DA56B920021EB5D /* Gradient.h in Headers */, + B22279640D00BF220071B782 /* GradientAttributes.h in Headers */, + B2A015A90AF6CD53006BCE0E /* GraphicsContext.h in Headers */, + 49C7B9FC1042D3650009D447 /* GraphicsContext3D.h in Headers */, + 934907E4125BBBC8007F23A0 /* GraphicsContextCG.h in Headers */, + A80D67080E9E9DEB00E420F0 /* GraphicsContextPlatformPrivateCG.h in Headers */, + 0F580B0D0F12A2690051D689 /* GraphicsLayer.h in Headers */, + 499B3ED7128CD31400E726C2 /* GraphicsLayerCA.h in Headers */, + 0F580B0E0F12A2690051D689 /* GraphicsLayerClient.h in Headers */, + 1AC69593161A1E53003732CB /* GraphicsLayerFactory.h in Headers */, + 0FA24D7A162DF91900A3F4C0 /* GraphicsLayerUpdater.h in Headers */, + B2A015AB0AF6CD53006BCE0E /* GraphicsTypes.h in Headers */, + 77A17A7B12F2890B004E02F6 /* GraphicsTypes3D.h in Headers */, + A12705C31656BD6500C2E27C /* GridPosition.h in Headers */, + A12A1050166444FD008FA311 /* GridTrackSize.h in Headers */, + C50B561712119D23008B46E0 /* GroupSettings.h in Headers */, + 8482B7461198C35400BFB005 /* HashChangeEvent.h in Headers */, + A8748BE012CBF2DC001FBA41 /* HashTools.h in Headers */, + F55B3DC01251F12D003EF269 /* HiddenInputType.h in Headers */, + BC94D1540C275C8B006BC617 /* History.h in Headers */, + 97DCE20210807C750057D394 /* HistoryController.h in Headers */, + 51741D110B07259A00ED442C /* HistoryItem.h in Headers */, + 4969B0F313D0B33F00DF3521 /* HitTestingTransformState.h in Headers */, + 2D8287F716E4A0380086BD00 /* HitTestLocation.h in Headers */, + 930908910AF7EDE40081DF01 /* HitTestRequest.h in Headers */, + 9307F1D80AF2D59000DBA31A /* HitTestResult.h in Headers */, + BC3BC29C0E91AB0F00835588 /* HostWindow.h in Headers */, + FD31609912B026F700C1A359 /* HRTFDatabase.h in Headers */, + FD31609B12B026F700C1A359 /* HRTFDatabaseLoader.h in Headers */, + FD31609D12B026F700C1A359 /* HRTFElevation.h in Headers */, + FD31609F12B026F700C1A359 /* HRTFKernel.h in Headers */, + FD3160A112B026F700C1A359 /* HRTFPanner.h in Headers */, + BC97E23A109144950010D361 /* HTMLAllCollection.h in Headers */, + A8CFF7AB0A156978000A4234 /* HTMLAnchorElement.h in Headers */, + A871D45D0A127CBC00B12A68 /* HTMLAppletElement.h in Headers */, + A8EA7D2E0A19385500A8EF5F /* HTMLAreaElement.h in Headers */, + E44613A20CD6331000FADA75 /* HTMLAudioElement.h in Headers */, + A871DC1F0A15205700B12A68 /* HTMLBaseElement.h in Headers */, + A8DF3FD2097FA0FC0052981B /* HTMLBaseFontElement.h in Headers */, + 9B24DE8E15194B9500C59C27 /* HTMLBDIElement.h in Headers */, + A871DE2C0A152AC800B12A68 /* HTMLBodyElement.h in Headers */, + A8CFF7AA0A156978000A4234 /* HTMLBRElement.h in Headers */, + A81369D2097374F600D74463 /* HTMLButtonElement.h in Headers */, + 93F199E508245E59001E9ABC /* HTMLCanvasElement.h in Headers */, + A8DF3FD0097FA0FC0052981B /* HTMLCollection.h in Headers */, + 977B3865122883E900B81FF8 /* HTMLConstructionSite.h in Headers */, + 57B791AA14C6A63300F202D1 /* HTMLContentElement.h in Headers */, + E1A31663134BCAE8007C9A4F /* HTMLConverter.h in Headers */, + F5C041DB0FFCA7CE00839D4A /* HTMLDataListElement.h in Headers */, + D359D78A129CA2710006E5D2 /* HTMLDetailsElement.h in Headers */, + 762F1ED7159D960A007408F2 /* HTMLDialogElement.h in Headers */, + A8EA79FA0A1916DF00A8EF5F /* HTMLDirectoryElement.h in Headers */, + A8EA7CB70A192B9C00A8EF5F /* HTMLDivElement.h in Headers */, + A8EA79F70A1916DF00A8EF5F /* HTMLDListElement.h in Headers */, + 93F198E508245E59001E9ABC /* HTMLDocument.h in Headers */, + 977B3867122883E900B81FF8 /* HTMLDocumentParser.h in Headers */, + 93309DE8099E64920056E581 /* htmlediting.h in Headers */, + 93F198E608245E59001E9ABC /* HTMLElement.h in Headers */, + A17C81230F2A5CF7005DAAEB /* HTMLElementFactory.h in Headers */, + 977B37241228721700B81FF8 /* HTMLElementStack.h in Headers */, + A871D45C0A127CBC00B12A68 /* HTMLEmbedElement.h in Headers */, + 977B386A122883E900B81FF8 /* HTMLEntityParser.h in Headers */, + 977B386C122883E900B81FF8 /* HTMLEntitySearch.h in Headers */, + 977B386D122883E900B81FF8 /* HTMLEntityTable.h in Headers */, + A81369D4097374F600D74463 /* HTMLFieldSetElement.h in Headers */, + A8CFF7A60A156978000A4234 /* HTMLFontElement.h in Headers */, + 977B386F122883E900B81FF8 /* HTMLFormattingElementList.h in Headers */, + A81369CE097374F600D74463 /* HTMLFormControlElement.h in Headers */, + E14F1C4514B5DAC600EA9009 /* HTMLFormControlElementWithState.h in Headers */, + A8DF3FCE097FA0FC0052981B /* HTMLFormControlsCollection.h in Headers */, + A81369D0097374F600D74463 /* HTMLFormElement.h in Headers */, + A871DE2B0A152AC800B12A68 /* HTMLFrameElement.h in Headers */, + 14FFE31D0AE1963300136BF5 /* HTMLFrameElementBase.h in Headers */, + 93E241FF0B2B4E4000C732A1 /* HTMLFrameOwnerElement.h in Headers */, + A871DE280A152AC800B12A68 /* HTMLFrameSetElement.h in Headers */, + A871DE2D0A152AC800B12A68 /* HTMLHeadElement.h in Headers */, + A8EA7CB80A192B9C00A8EF5F /* HTMLHeadingElement.h in Headers */, + A8EA7CAF0A192B9C00A8EF5F /* HTMLHRElement.h in Headers */, + A871DE270A152AC800B12A68 /* HTMLHtmlElement.h in Headers */, + A89570A016E9BD5900184E55 /* HTMLIdentifier.h in Headers */, + A871DE2A0A152AC800B12A68 /* HTMLIFrameElement.h in Headers */, + A8EA7D2D0A19385500A8EF5F /* HTMLImageElement.h in Headers */, + A8EA7D2B0A19385500A8EF5F /* HTMLImageLoader.h in Headers */, + A81369CC097374F600D74463 /* HTMLInputElement.h in Headers */, + 97BC849B12370A4B000C6161 /* HTMLInputStream.h in Headers */, + 93309DE6099E64920056E581 /* HTMLInterchange.h in Headers */, + A81369E4097374F600D74463 /* HTMLKeygenElement.h in Headers */, + A81369E2097374F600D74463 /* HTMLLabelElement.h in Headers */, + A81369E0097374F600D74463 /* HTMLLegendElement.h in Headers */, + A8EA79F60A1916DF00A8EF5F /* HTMLLIElement.h in Headers */, + A871DC200A15205700B12A68 /* HTMLLinkElement.h in Headers */, + A8EA7D2C0A19385500A8EF5F /* HTMLMapElement.h in Headers */, + A8EA7CAB0A192B9C00A8EF5F /* HTMLMarqueeElement.h in Headers */, + E44613A50CD6331000FADA75 /* HTMLMediaElement.h in Headers */, + A8EA79F40A1916DF00A8EF5F /* HTMLMenuElement.h in Headers */, + 2BE8E2C712A589EC00FAD550 /* HTMLMetaCharsetParser.h in Headers */, + A871DC240A15205700B12A68 /* HTMLMetaElement.h in Headers */, + A454424B119B3661009BE912 /* HTMLMeterElement.h in Headers */, + A8CFF7A70A156978000A4234 /* HTMLModElement.h in Headers */, + A8DF3FD4097FA0FC0052981B /* HTMLNameCollection.h in Headers */, + A871D45A0A127CBC00B12A68 /* HTMLObjectElement.h in Headers */, + A8EA79F10A1916DF00A8EF5F /* HTMLOListElement.h in Headers */, + A81369DE097374F600D74463 /* HTMLOptGroupElement.h in Headers */, + A81369DC097374F600D74463 /* HTMLOptionElement.h in Headers */, + A81369DA097374F600D74463 /* HTMLOptionsCollection.h in Headers */, + 4AD01009127E642A0015035F /* HTMLOutputElement.h in Headers */, + A8EA7CB50A192B9C00A8EF5F /* HTMLParagraphElement.h in Headers */, + A871D4580A127CBC00B12A68 /* HTMLParamElement.h in Headers */, + BC588AF00BFA6CF900EE679E /* HTMLParserErrorCodes.h in Headers */, + 93E2A307123E9DC0009FE12A /* HTMLParserIdioms.h in Headers */, + 973F418A169B95FF0006BF60 /* HTMLParserOptions.h in Headers */, + 449B19F50FA72ECE0015CA4A /* HTMLParserQuirks.h in Headers */, + 977B3871122883E900B81FF8 /* HTMLParserScheduler.h in Headers */, + 974187D416A7932900FA77A7 /* HTMLParserThread.h in Headers */, + A871D4560A127CBC00B12A68 /* HTMLPlugInElement.h in Headers */, + 4415292E0E1AE8A000C4A2D0 /* HTMLPlugInImageElement.h in Headers */, + A8EA7CB00A192B9C00A8EF5F /* HTMLPreElement.h in Headers */, + 977B3873122883E900B81FF8 /* HTMLPreloadScanner.h in Headers */, + A43BF5991149290A00C643CA /* HTMLProgressElement.h in Headers */, + 033A6A7C147E07D200509B36 /* HTMLPropertiesCollection.h in Headers */, + A8CFF7A30A156978000A4234 /* HTMLQuoteElement.h in Headers */, + A8D223FE16B52E4E00157288 /* HTMLResourcePreloader.h in Headers */, + A871DC250A15205700B12A68 /* HTMLScriptElement.h in Headers */, + 977B3875122883E900B81FF8 /* HTMLScriptRunner.h in Headers */, + 977B3876122883E900B81FF8 /* HTMLScriptRunnerHost.h in Headers */, + A81369D8097374F600D74463 /* HTMLSelectElement.h in Headers */, + E44613A80CD6331000FADA75 /* HTMLSourceElement.h in Headers */, + 977E2DCE12F0E28300C13379 /* HTMLSourceTracker.h in Headers */, + 978AD67514130A8D00C7CAE3 /* HTMLSpanElement.h in Headers */, + A871DC230A15205700B12A68 /* HTMLStyleElement.h in Headers */, + D3D4E973130C7CFE007BA540 /* HTMLSummaryElement.h in Headers */, + A871DB2B0A150BD600B12A68 /* HTMLTableCaptionElement.h in Headers */, + A871DB2A0A150BD600B12A68 /* HTMLTableCellElement.h in Headers */, + A871DB2F0A150BD600B12A68 /* HTMLTableColElement.h in Headers */, + A871DB270A150BD600B12A68 /* HTMLTableElement.h in Headers */, + A871DB2C0A150BD600B12A68 /* HTMLTablePartElement.h in Headers */, + A871DB310A150BD600B12A68 /* HTMLTableRowElement.h in Headers */, + 93442C9E0D2B335C00338FF9 /* HTMLTableRowsCollection.h in Headers */, + A871DB250A150BD600B12A68 /* HTMLTableSectionElement.h in Headers */, + D66817FB166FE6D700FA07B4 /* HTMLTemplateElement.h in Headers */, + A81369D6097374F600D74463 /* HTMLTextAreaElement.h in Headers */, + 9BC6C21B13CCC97B008E0337 /* HTMLTextFormControlElement.h in Headers */, + A871DC280A15205700B12A68 /* HTMLTitleElement.h in Headers */, + 977B3878122883E900B81FF8 /* HTMLTokenizer.h in Headers */, + 0707568C142262D600414161 /* HTMLTrackElement.h in Headers */, + 977B37261228721700B81FF8 /* HTMLTreeBuilder.h in Headers */, + 9B7E78BE16F16CC800126914 /* HTMLTreeBuilderSimulator.h in Headers */, + A8EA79F20A1916DF00A8EF5F /* HTMLUListElement.h in Headers */, + E44613AB0CD6331000FADA75 /* HTMLVideoElement.h in Headers */, + BCCD74DC0A4C8D35005FDA6D /* HTMLViewSourceDocument.h in Headers */, + 977B387A122883E900B81FF8 /* HTMLViewSourceParser.h in Headers */, + 514C76710CE923A1007EF3CD /* HTTPHeaderMap.h in Headers */, + 514C76730CE923A1007EF3CD /* HTTPParsers.h in Headers */, + 375CD232119D43C800A2A859 /* Hyphenation.h in Headers */, + B275356E0B053814002CE64F /* Icon.h in Headers */, + 97E4029013A696ED00913D67 /* IconController.h in Headers */, + 5126E6BC0A2E3B12005C29FA /* IconDatabase.h in Headers */, + 516953981329A3C800B92D04 /* IconDatabaseBase.h in Headers */, + 51E1ECBE0C91C90400DC255B /* IconDatabaseClient.h in Headers */, + 513F14540AB634C400094DDF /* IconLoader.h in Headers */, + 51E1ECC10C91C90400DC255B /* IconRecord.h in Headers */, + 45BAC2B01360BBAB005DA258 /* IconURL.h in Headers */, + 9712A5B115004EDA0048AF10 /* IDBAny.h in Headers */, + 9712A5B315004EDA0048AF10 /* IDBBackingStore.h in Headers */, + C585A66311D4FAC5004C3E4B /* IDBBindingUtilities.h in Headers */, + 9712A5B415004EDA0048AF10 /* IDBCallbacks.h in Headers */, + 9712A5B615004EDA0048AF10 /* IDBCursor.h in Headers */, + 9712A5B915004EDA0048AF10 /* IDBCursorBackendImpl.h in Headers */, + 9712A5BA15004EDA0048AF10 /* IDBCursorBackendInterface.h in Headers */, + 9712A5BC15004EDA0048AF10 /* IDBCursorWithValue.h in Headers */, + 9712A5BF15004EDA0048AF10 /* IDBDatabase.h in Headers */, + 9712A5C215004EDA0048AF10 /* IDBDatabaseBackendImpl.h in Headers */, + 9712A5C315004EDA0048AF10 /* IDBDatabaseBackendInterface.h in Headers */, + 9712A5C415004EDA0048AF10 /* IDBDatabaseCallbacks.h in Headers */, + 9712A5C615004EDA0048AF10 /* IDBDatabaseCallbacksImpl.h in Headers */, + 9712A5C715004EDA0048AF10 /* IDBDatabaseError.h in Headers */, + 9712A5CA15004EDA0048AF10 /* IDBDatabaseException.h in Headers */, + 9712A5CD15004EDA0048AF10 /* IDBEventDispatcher.h in Headers */, + 9712A5CF15004EDA0048AF10 /* IDBFactory.h in Headers */, + 9712A5D215004EDA0048AF10 /* IDBFactoryBackendImpl.h in Headers */, + 9712A5D415004EDA0048AF10 /* IDBFactoryBackendInterface.h in Headers */, + 9712A5D615004EDA0048AF10 /* IDBIndex.h in Headers */, + 9712A5DC15004EDA0048AF10 /* IDBKey.h in Headers */, + 9712A5DF15004EDA0048AF10 /* IDBKeyPath.h in Headers */, + 9712A5E315004EDA0048AF10 /* IDBKeyRange.h in Headers */, + 9712A5E815004EDA0048AF10 /* IDBLevelDBCoding.h in Headers */, + 9712A5EA15004EDA0048AF10 /* IDBObjectStore.h in Headers */, + 9712A5ED15004EDA0048AF10 /* IDBObjectStoreBackendImpl.h in Headers */, + 9712A5F015004EDA0048AF10 /* IDBPendingTransactionMonitor.h in Headers */, + 9712A5F215004EDA0048AF10 /* IDBRequest.h in Headers */, + 9712A5F415004EDA0048AF10 /* IDBTracing.h in Headers */, + 9712A5F615004EDA0048AF10 /* IDBTransaction.h in Headers */, + 9712A5F915004EDA0048AF10 /* IDBTransactionBackendImpl.h in Headers */, + 9712A5FB15004EDA0048AF10 /* IDBTransactionCallbacks.h in Headers */, + 9712A5FD15004EDA0048AF10 /* IDBTransactionCoordinator.h in Headers */, + 9712A5FF15004EDA0048AF10 /* IDBVersionChangeEvent.h in Headers */, + 1A71D57C0F33819000F9CE4E /* IdentifierRep.h in Headers */, + 5913A24213D49EBA00F5B05C /* IdentifiersFactory.h in Headers */, + 49E911C50EF86D47009D0CAF /* IdentityTransformOperation.h in Headers */, + C0C054CD1118C8E400CE2636 /* IDLParser.pm in Headers */, + C3CF17A515B0063F00276D39 /* IdTargetObserver.h in Headers */, + C3CF17A715B0063F00276D39 /* IdTargetObserverRegistry.h in Headers */, + 8AB4BC77126FDB7100DEB727 /* IgnoreDestructiveWriteCountIncrementer.h in Headers */, + B27535700B053814002CE64F /* Image.h in Headers */, + B2A10B920B3818BD00099AA4 /* ImageBuffer.h in Headers */, + 22BD9F7F1353625C009BD102 /* ImageBufferData.h in Headers */, + 22BD9F81135364FE009BD102 /* ImageBufferDataCG.h in Headers */, + A779791A0D6B9D0C003851B9 /* ImageData.h in Headers */, + 97205AB61239291000B17380 /* ImageDocument.h in Headers */, + F55B3DC21251F12D003EF269 /* ImageInputType.h in Headers */, + 089582560E857A7E00F82C83 /* ImageLoader.h in Headers */, + BC7F44A80B9E324E00A9D081 /* ImageObserver.h in Headers */, + 2D5A5931152525D00036EE51 /* ImageOrientation.h in Headers */, + 49291E4B134172C800E753DE /* ImageRenderingMode.h in Headers */, + B27535710B053814002CE64F /* ImageSource.h in Headers */, + 4B3480940EEF50D400AC1B41 /* ImageSourceCG.h in Headers */, + 316FE1180E6E1DA700BF6088 /* ImplicitAnimation.h in Headers */, + 07941792166E855F009416C2 /* InbandTextTrack.h in Headers */, + 07941794166EA04E009416C2 /* InbandTextTrackPrivate.h in Headers */, + 07B442D7166C70B000556CAD /* InbandTextTrackPrivateAVF.h in Headers */, + 07AA6B6C166D2C1300D45671 /* InbandTextTrackPrivateAVFObjC.h in Headers */, + 07CE77D516712A6A00C55A47 /* InbandTextTrackPrivateClient.h in Headers */, + 07367DDF172CA67F00D861B9 /* InbandTextTrackPrivateLegacyAVFObjC.h in Headers */, + DB23C2CC0A508D29002489EB /* IndentOutdentCommand.h in Headers */, + E1513D4F1677EA8300149FCB /* InitializeLogging.h in Headers */, + F3644B001119805900E0D537 /* InjectedScript.h in Headers */, + AAB6054F15874C58007B5031 /* InjectedScriptBase.h in Headers */, + AA73183F159255B900A93E6E /* InjectedScriptCanvasModule.h in Headers */, + 7A0E76FA10BF08ED00A0276E /* InjectedScriptHost.h in Headers */, + F316396C1329481A00A649CB /* InjectedScriptManager.h in Headers */, + AAB6055115874C58007B5031 /* InjectedScriptModule.h in Headers */, + A8CFF5E50A155A05000A4234 /* InlineBox.h in Headers */, + A8CFF5E30A155A05000A4234 /* InlineFlowBox.h in Headers */, + BCE789161120D6080060ECE5 /* InlineIterator.h in Headers */, + BCEA485A097D93020094C9E4 /* InlineTextBox.h in Headers */, + 37E3524D12450C6600BAF5D9 /* InputType.h in Headers */, + C348612415FDE21E007A1CC9 /* InputTypeNames.h in Headers */, + 93309DEA099E64920056E581 /* InsertIntoTextNodeCommand.h in Headers */, + 57CF497514EE36D700ECFF14 /* InsertionPoint.h in Headers */, + 93309DEC099E64920056E581 /* InsertLineBreakCommand.h in Headers */, + D07DEABA0A36554A00CA30F8 /* InsertListCommand.h in Headers */, + 93309DEE099E64920056E581 /* InsertNodeBeforeCommand.h in Headers */, + 93309DF0099E64920056E581 /* InsertParagraphSeparatorCommand.h in Headers */, + 93309DF2099E64920056E581 /* InsertTextCommand.h in Headers */, + 4F2D205412EAE7B3005C2874 /* InspectorAgent.h in Headers */, + B885E8D511E06DD2009FFBF4 /* InspectorApplicationCacheAgent.h in Headers */, + 4F707A9A11EF679400ACDA69 /* InspectorBackendDispatcher.h in Headers */, + 7AA51B6E1483B61600AD2752 /* InspectorBaseAgent.h in Headers */, + AAD766EC157E502F00E85423 /* InspectorCanvasAgent.h in Headers */, + AAD766ED157E502F00E85423 /* InspectorCanvasInstrumentation.h in Headers */, + 1C81B95C0E97330800266E07 /* InspectorClient.h in Headers */, + F3335BF912E07DC300D33011 /* InspectorConsoleAgent.h in Headers */, + F3F5CF1112ED81A80084C569 /* InspectorConsoleInstrumentation.h in Headers */, + 1C81B95A0E97330800266E07 /* InspectorController.h in Headers */, + F325A40B14EE36FA007324E2 /* InspectorCounters.h in Headers */, + 82AB1744124B99EC00C5069D /* InspectorCSSAgent.h in Headers */, + 4A9CC82116BF9BB400EC645A /* InspectorCSSOMWrappers.h in Headers */, + 7AB0B1C11211A62200A76940 /* InspectorDatabaseAgent.h in Headers */, + F3F5CF1312ED81B30084C569 /* InspectorDatabaseInstrumentation.h in Headers */, + 41F062140F5F192600A07EAC /* InspectorDatabaseResource.h in Headers */, + F33F053E120B0DA500E5743A /* InspectorDebuggerAgent.h in Headers */, + 7A24587C1021EAF4000A00AA /* InspectorDOMAgent.h in Headers */, + F3D4C47912E07663003DA150 /* InspectorDOMDebuggerAgent.h in Headers */, + 7A74ECBB101839A600BF939E /* InspectorDOMStorageAgent.h in Headers */, + 15D17D22147231EB005EBCA6 /* InspectorFileSystemAgent.h in Headers */, + 578DA20E1520EB8C006141C1 /* InspectorFrontend.h in Headers */, + 227777601345DEA9008EA455 /* InspectorFrontendChannel.h in Headers */, + F344C7141125B82C00F26EEE /* InspectorFrontendClient.h in Headers */, + F344C75311294D9D00F26EEE /* InspectorFrontendClientLocal.h in Headers */, + 7A0E770F10C00A8800A0276E /* InspectorFrontendHost.h in Headers */, + 511293603D60B4B52FAF973F /* InspectorHeapProfilerAgent.h in Headers */, + 7A54858014E02D51006AE05A /* InspectorHistory.h in Headers */, + 7ACD88D414C08BD60084EDD2 /* InspectorIndexedDBAgent.h in Headers */, + 4D273CFA1669420800259CA1 /* InspectorInputAgent.h in Headers */, + 20D629271253690B00081543 /* InspectorInstrumentation.h in Headers */, + 71B1E125164048F700B1880A /* InspectorLayerTreeAgent.h in Headers */, + 7AA51DD6148506A900AD2752 /* InspectorMemoryAgent.h in Headers */, + 4F6FDD651341DEDD001F8EE3 /* InspectorPageAgent.h in Headers */, + 9F0D6B2F121BFEBA006C0288 /* InspectorProfilerAgent.h in Headers */, + 82AB1776125C826700C5069D /* InspectorResourceAgent.h in Headers */, + 7AF11A5A12E727490061F23C /* InspectorRuntimeAgent.h in Headers */, + 4FA3B90B125CD12200300BAD /* InspectorState.h in Headers */, + F3F68DA6143CAC5A00C2F887 /* InspectorStateClient.h in Headers */, + 82AB1774125C826700C5069D /* InspectorStyleSheet.h in Headers */, + 82889B4D13C62392009A6156 /* InspectorStyleTextEditor.h in Headers */, + 754133A8102E00E800075D00 /* InspectorTimelineAgent.h in Headers */, + 578DA20F1520EBA3006141C1 /* InspectorTypeBuilder.h in Headers */, + 4F3289B611A42AAB005ABE7E /* InspectorValues.h in Headers */, + F3810C1C1365A49600ED6E33 /* InspectorWorkerAgent.h in Headers */, + F375CC071150D300008DDB81 /* InspectorWorkerResource.h in Headers */, + F3ABFE0C130E9DA000E7F7D1 /* InstrumentingAgents.h in Headers */, + B27535720B053814002CE64F /* IntPoint.h in Headers */, + E462A4A1113E71BE004A4220 /* IntPointHash.h in Headers */, + B27535740B053814002CE64F /* IntRect.h in Headers */, + A2B9217316C5CC420041DCD9 /* IntRectExtent.h in Headers */, + E134F5AB12EE343F004EC58D /* IntRectHash.h in Headers */, + B27535750B053814002CE64F /* IntSize.h in Headers */, + B27535760B053814002CE64F /* IntSizeHash.h in Headers */, + 1C81BA0A0E97348300266E07 /* JavaScriptCallFrame.h in Headers */, + 418F88050FF957AF0080F045 /* JSAbstractWorker.h in Headers */, + FDA15ECA12B03F50003A583A /* JSAnalyserNode.h in Headers */, + 49EECF01105070C400099FAB /* JSArrayBuffer.h in Headers */, + 49EECF1C105072F300099FAB /* JSArrayBufferView.h in Headers */, + 86243D0111BC31F700CC006A /* JSArrayBufferViewHelper.h in Headers */, + 65DF31DB09D1C123000BE325 /* JSAttr.h in Headers */, + FDA15E9E12B03EE1003A583A /* JSAudioBuffer.h in Headers */, + FDF7E9C413AC21DB00A51EAC /* JSAudioBufferCallback.h in Headers */, + FDA15EA012B03EE1003A583A /* JSAudioBufferSourceNode.h in Headers */, + FDA15EA612B03EE1003A583A /* JSAudioContext.h in Headers */, + FDA15EA812B03EE1003A583A /* JSAudioDestinationNode.h in Headers */, + FDA15EAE12B03EE1003A583A /* JSAudioListener.h in Headers */, + FDA15EB012B03EE1003A583A /* JSAudioNode.h in Headers */, + FDA15EB412B03EE1003A583A /* JSAudioParam.h in Headers */, + FDA15EB612B03EE1003A583A /* JSAudioProcessingEvent.h in Headers */, + BE8EF043171C8FF9009B48C3 /* JSAudioTrack.h in Headers */, + BE8EF045171C8FF9009B48C3 /* JSAudioTrackList.h in Headers */, + BC124F000C26447A009E2349 /* JSBarProp.h in Headers */, + BC946348107A936600857193 /* JSBeforeLoadEvent.h in Headers */, + FDF09DC91399B62200688E5B /* JSBiquadFilterNode.h in Headers */, + 2E2D99CE10E2BBDA00496337 /* JSBlob.h in Headers */, + 1449E24C107D4A8400B5793F /* JSCallbackData.h in Headers */, + 65DF323A09D1DE65000BE325 /* JSCanvasGradient.h in Headers */, + 65DF323C09D1DE65000BE325 /* JSCanvasPattern.h in Headers */, + 65DF323C09D1DE65001BE325 /* JSCanvasProxy.h in Headers */, + 49EED1431051969400099FAB /* JSCanvasRenderingContext.h in Headers */, + 49EED1451051969400099FAB /* JSCanvasRenderingContext2D.h in Headers */, + 93F9B7A10BA6032600854064 /* JSCDATASection.h in Headers */, + FDA15EA212B03EE1003A583A /* JSChannelMergerNode.h in Headers */, + FDA15EA412B03EE1003A583A /* JSChannelSplitterNode.h in Headers */, + 65DF31F409D1CC60000BE325 /* JSCharacterData.h in Headers */, + BCC065880F3CE2A700CD2D87 /* JSClientRect.h in Headers */, + BCC0658A0F3CE2A700CD2D87 /* JSClientRectList.h in Headers */, + BCA83E500D7CE1E9003421A8 /* JSClipboard.h in Headers */, + 51FB5504113E3E9100821176 /* JSCloseEvent.h in Headers */, + 93F9B6E10BA0FB7200854064 /* JSComment.h in Headers */, + 79AC9219109945C80021266E /* JSCompositionEvent.h in Headers */, + BC98543E0CD3D98C00069BC1 /* JSConsole.h in Headers */, + FDA15EBE12B03F0B003A583A /* JSConvolverNode.h in Headers */, + FE6FD48E0F676E9300092873 /* JSCoordinates.h in Headers */, + 930705DA09E0C9BF00B17FE4 /* JSCounter.h in Headers */, + 975CA2A21303679D00E99AD9 /* JSCrypto.h in Headers */, + BC46C1FB0C0DDC8F0020CFC3 /* JSCSSCharsetRule.h in Headers */, + 409EBDC316B7F3A600CBA3FC /* JSCSSFontFaceLoadEvent.h in Headers */, + BC46C1FD0C0DDC8F0020CFC3 /* JSCSSFontFaceRule.h in Headers */, + BC46C1FF0C0DDC8F0020CFC3 /* JSCSSImportRule.h in Headers */, + BC46C2010C0DDC8F0020CFC3 /* JSCSSMediaRule.h in Headers */, + BC46C2030C0DDC8F0020CFC3 /* JSCSSPageRule.h in Headers */, + 930705EB09E0C9F600B17FE4 /* JSCSSPrimitiveValue.h in Headers */, + 14CF7B3409F6ECD700EB3665 /* JSCSSRule.h in Headers */, + AD726FEF16DA11F5003A4E6D /* JSCSSRuleCustom.h in Headers */, + A8D05FA80A23B301005E7203 /* JSCSSRuleList.h in Headers */, + 142011B70A003133008303F9 /* JSCSSStyleDeclaration.h in Headers */, + AD726FED16DA1171003A4E6D /* JSCSSStyleDeclarationCustom.h in Headers */, + BC46C2070C0DDCA10020CFC3 /* JSCSSStyleRule.h in Headers */, + BCC5BE010C0E93110011C2DB /* JSCSSStyleSheet.h in Headers */, + FC54D05816A7676E00575E4D /* JSCSSSupportsRule.h in Headers */, + 14CF78A609F58CD800EB3665 /* JSCSSValue.h in Headers */, + A8D05FAC0A23B30F005E7203 /* JSCSSValueList.h in Headers */, + E4778B80115A581A00B5D372 /* JSCustomEvent.h in Headers */, + E10B937C0B73C00A003ED890 /* JSCustomXPathNSResolver.h in Headers */, + 1AE82F900CAAFA9D002237AE /* JSDatabase.h in Headers */, + B59DD699119029E5007E9684 /* JSDatabaseCallback.h in Headers */, + B58CEB6911913607002A6790 /* JSDatabaseSync.h in Headers */, + 2E97CE701293AD6B00C5C8FF /* JSDataView.h in Headers */, + 4162A4581011464700DFF3ED /* JSDedicatedWorkerGlobalScope.h in Headers */, + FDA15ED212B03F94003A583A /* JSDelayNode.h in Headers */, + 31FB1A66120A5D3F00DC02A0 /* JSDeviceMotionEvent.h in Headers */, + 59A86008119DAFA100DEF1EF /* JSDeviceOrientationEvent.h in Headers */, + BCE4389C140B1BA8005E437E /* JSDictionary.h in Headers */, + 8987858B122CA26A003AABDA /* JSDirectoryEntry.h in Headers */, + 893C483312495472002B3D86 /* JSDirectoryEntrySync.h in Headers */, + 8987858D122CA26A003AABDA /* JSDirectoryReader.h in Headers */, + 893C483512495472002B3D86 /* JSDirectoryReaderSync.h in Headers */, + 659DDC8309E198BA001BF3C6 /* JSDocument.h in Headers */, + 1A494EDF0A123F4C00FDAFC1 /* JSDocumentFragment.h in Headers */, + 65DF31F609D1CC60000BE325 /* JSDocumentType.h in Headers */, + 1AC2260D0DB69F190089B669 /* JSDOMApplicationCache.h in Headers */, + 93B70D6409EB0C7C009D8468 /* JSDOMBinding.h in Headers */, + BC60D7C10D29A46300B9918F /* JSDOMCoreException.h in Headers */, + 40ECAE7E16B8B67200C36103 /* JSDOMError.h in Headers */, + 898785A5122CA2A7003AABDA /* JSDOMFileSystem.h in Headers */, + 893C483712495472002B3D86 /* JSDOMFileSystemSync.h in Headers */, + 2E0888D51148848A00AF4265 /* JSDOMFormData.h in Headers */, + E1C36C030EB076D6007410BC /* JSDOMGlobalObject.h in Headers */, + 65DF31F809D1CC60000BE325 /* JSDOMImplementation.h in Headers */, + A9D248070D757E7D00FDF959 /* JSDOMMimeType.h in Headers */, + A9D248090D757E7D00FDF959 /* JSDOMMimeTypeArray.h in Headers */, + 52CCA9E315E3F62C0053C77F /* JSDOMNamedFlowCollection.h in Headers */, + 1ACE53E00A8D18810022947D /* JSDOMParser.h in Headers */, + FB91392A16AE4FC0001FE682 /* JSDOMPath.h in Headers */, + A9D247FF0D757E6900FDF959 /* JSDOMPlugin.h in Headers */, + A9D248010D757E6900FDF959 /* JSDOMPluginArray.h in Headers */, + BC5A86B60C3367E800EEA649 /* JSDOMSelection.h in Headers */, + 4ACBC0CB12713D0A0094F9B2 /* JSDOMSettableTokenList.h in Headers */, + C5137CF311A58378004ADB99 /* JSDOMStringList.h in Headers */, + BC64649811D82349006455B0 /* JSDOMStringMap.h in Headers */, + 7694563D1214D97C0007CBAE /* JSDOMTokenList.h in Headers */, + 2E37E00612DBC5A400A6B233 /* JSDOMURL.h in Headers */, + BC6932740D7E293900AE44D1 /* JSDOMWindowBase.h in Headers */, + FC9E0E4D16419C1E00392BE3 /* JSDOMWindowCSS.h in Headers */, + 652FBBBC0DE27CB60001D386 /* JSDOMWindowCustom.h in Headers */, + BCBFB53D0DCD29CF0019B3E5 /* JSDOMWindowShell.h in Headers */, + 65E0E9441133C89F00B4CB10 /* JSDOMWrapper.h in Headers */, + FD7868BA136B999200D403DF /* JSDynamicsCompressorNode.h in Headers */, + 65DF31FA09D1CC60000BE325 /* JSElement.h in Headers */, + 65DF323009D1DDBC000BE325 /* JSEntity.h in Headers */, + 93F9B7750BA5FDDD00854064 /* JSEntityReference.h in Headers */, + 898785A7122CA2A7003AABDA /* JSEntriesCallback.h in Headers */, + 898785A9122CA2A7003AABDA /* JSEntry.h in Headers */, + 898785AB122CA2A7003AABDA /* JSEntryArray.h in Headers */, + 893C483912495472002B3D86 /* JSEntryArraySync.h in Headers */, + 898785AD122CA2A7003AABDA /* JSEntryCallback.h in Headers */, + 893C483B12495472002B3D86 /* JSEntrySync.h in Headers */, + 898785AF122CA2A7003AABDA /* JSErrorCallback.h in Headers */, + 2ECF7ADD10162B3800427DE7 /* JSErrorEvent.h in Headers */, + F3D461491161D53200CA0D09 /* JSErrorHandler.h in Headers */, + 14E8378E09F85D4F00B85AE4 /* JSEvent.h in Headers */, + BC60D9C00D2A269A00B9918F /* JSEventException.h in Headers */, + 93B70D6A09EB0C7C009D8468 /* JSEventListener.h in Headers */, + E0FEF372B37C53EAC1C1FBEE /* JSEventSource.h in Headers */, + 5FC7DC26CFE2563200B85AE4 /* JSEventTarget.h in Headers */, + 3314ACEC10892086000F0E56 /* JSExceptionBase.h in Headers */, + 6EBF0E7712A9868800DB170A /* JSEXTDrawBuffers.h in Headers */, + 7728698414FD9ADA00F484DC /* JSEXTTextureFilterAnisotropic.h in Headers */, + BC00F0150E0A189500FD04E3 /* JSFile.h in Headers */, + 893C47B81238A099002B3D86 /* JSFileCallback.h in Headers */, + 898785B1122CA2A7003AABDA /* JSFileEntry.h in Headers */, + 893C483D12495472002B3D86 /* JSFileEntrySync.h in Headers */, + 2E3BC0CB117D3E0800B9409A /* JSFileError.h in Headers */, + 898785F1122E1E87003AABDA /* JSFileException.h in Headers */, + BC00F0170E0A189500FD04E3 /* JSFileList.h in Headers */, + 2E94F43C119207DA00B7F75D /* JSFileReader.h in Headers */, + 898785F5122E1EAC003AABDA /* JSFileReaderSync.h in Headers */, + 898785B3122CA2A7003AABDA /* JSFileSystemCallback.h in Headers */, + 46DA844E1224A0710060D006 /* JSFileWriter.h in Headers */, + 893C47BC1238A0A9002B3D86 /* JSFileWriterCallback.h in Headers */, + 49EECF03105070C400099FAB /* JSFloat32Array.h in Headers */, + 6EBC5EB0138B50F200A0CF8A /* JSFloat64Array.h in Headers */, + B6D9D27B14EAC0860090D75E /* JSFocusEvent.h in Headers */, + 409EBDC016B7F38E00CBA3FC /* JSFontLoader.h in Headers */, + FDA15EAC12B03EE1003A583A /* JSGainNode.h in Headers */, + FE80DA640E9C4703000D6F75 /* JSGeolocation.h in Headers */, + FE80DA660E9C4703000D6F75 /* JSGeoposition.h in Headers */, + 8482B7521198CB6B00BFB005 /* JSHashChangeEvent.h in Headers */, + BC94D14F0C275C68006BC617 /* JSHistory.h in Headers */, + BC97E413109154FA0010D361 /* JSHTMLAllCollection.h in Headers */, + 1A4A2DF00A1B852A00C807F8 /* JSHTMLAnchorElement.h in Headers */, + 1A4A2DF20A1B852A00C807F8 /* JSHTMLAppletElement.h in Headers */, + 1AE2AA1F0A1CDAB400B42B25 /* JSHTMLAreaElement.h in Headers */, + E44614380CD689C500FADA75 /* JSHTMLAudioElement.h in Headers */, + A80E7B110A19D606007FB8C5 /* JSHTMLBaseElement.h in Headers */, + 1AE2AA210A1CDAB400B42B25 /* JSHTMLBaseFontElement.h in Headers */, + 1AE2AA230A1CDAB400B42B25 /* JSHTMLBodyElement.h in Headers */, + 1AE2AA250A1CDAB400B42B25 /* JSHTMLBRElement.h in Headers */, + A80E7E9F0A1A83E3007FB8C5 /* JSHTMLButtonElement.h in Headers */, + 938E666209F09B87008A48EC /* JSHTMLCanvasElement.h in Headers */, + BCCBAD410C18C14200CE890F /* JSHTMLCollection.h in Headers */, + 4A1E719114E101E400626F9D /* JSHTMLContentElement.h in Headers */, + F5C041E70FFCA96D00839D4A /* JSHTMLDataListElement.h in Headers */, + D359D8BF129CA55C0006E5D2 /* JSHTMLDetailsElement.h in Headers */, + 76808B50159DADFA002B5233 /* JSHTMLDialogElement.h in Headers */, + 1A85B1E70A1B240500D8C87C /* JSHTMLDirectoryElement.h in Headers */, + 1A85B2B70A1B2AC700D8C87C /* JSHTMLDivElement.h in Headers */, + 1A85B1E90A1B240500D8C87C /* JSHTMLDListElement.h in Headers */, + 1A494E350A12358B00FDAFC1 /* JSHTMLDocument.h in Headers */, + 1A494BFB0A122F4400FDAFC1 /* JSHTMLElement.h in Headers */, + 938E65F109F09840008A48EC /* JSHTMLElementWrapperFactory.h in Headers */, + BC6D44ED0C07F2ED0072D2C9 /* JSHTMLEmbedElement.h in Headers */, + 1AE2AA270A1CDAB400B42B25 /* JSHTMLFieldSetElement.h in Headers */, + 1AE2AA290A1CDAB400B42B25 /* JSHTMLFontElement.h in Headers */, + 9BF9A8811648DD2F001C6B23 /* JSHTMLFormControlsCollection.h in Headers */, + A8D064FC0A23C0CC005E7203 /* JSHTMLFormElement.h in Headers */, + BC4918C70BFEA050009D6316 /* JSHTMLFrameElement.h in Headers */, + BC926F810C0552470082776B /* JSHTMLFrameSetElement.h in Headers */, + A80E7B150A19D606007FB8C5 /* JSHTMLHeadElement.h in Headers */, + 1AE2AA2F0A1CDAB400B42B25 /* JSHTMLHeadingElement.h in Headers */, + 1AE2AA310A1CDAB400B42B25 /* JSHTMLHRElement.h in Headers */, + 1A85B1900A1B18A200D8C87C /* JSHTMLHtmlElement.h in Headers */, + BC4918C90BFEA050009D6316 /* JSHTMLIFrameElement.h in Headers */, + 1AE2AA980A1CDD2D00B42B25 /* JSHTMLImageElement.h in Headers */, + A80E7E970A1A83E3007FB8C5 /* JSHTMLInputElement.h in Headers */, + E1AD14231295EA7F00ACA989 /* JSHTMLInputElementCustom.h in Headers */, + A6148A7912E41E3B0044A784 /* JSHTMLKeygenElement.h in Headers */, + 1AE2AB220A1CE63B00B42B25 /* JSHTMLLabelElement.h in Headers */, + 1AE2AB240A1CE63B00B42B25 /* JSHTMLLegendElement.h in Headers */, + 1AE2AB260A1CE63B00B42B25 /* JSHTMLLIElement.h in Headers */, + A80E7B0D0A19D606007FB8C5 /* JSHTMLLinkElement.h in Headers */, + 1AE2AB280A1CE63B00B42B25 /* JSHTMLMapElement.h in Headers */, + BC491B790C023EFD009D6316 /* JSHTMLMarqueeElement.h in Headers */, + E446143A0CD689C800FADA75 /* JSHTMLMediaElement.h in Headers */, + 1AE2AE5C0A1D26F200B42B25 /* JSHTMLMenuElement.h in Headers */, + A80E7A180A19C3D6007FB8C5 /* JSHTMLMetaElement.h in Headers */, + A7BBE26711AFB3F20005EA03 /* JSHTMLMeterElement.h in Headers */, + 1AE2AB2A0A1CE63B00B42B25 /* JSHTMLModElement.h in Headers */, + BC305C7A0C076BB300CD20F0 /* JSHTMLObjectElement.h in Headers */, + 1A85B1EB0A1B240500D8C87C /* JSHTMLOListElement.h in Headers */, + A80E7E9B0A1A83E3007FB8C5 /* JSHTMLOptGroupElement.h in Headers */, + A80E7E990A1A83E3007FB8C5 /* JSHTMLOptionElement.h in Headers */, + 448A29BF0A46D9CB0030759F /* JSHTMLOptionsCollection.h in Headers */, + 4AD0173D127E82860015035F /* JSHTMLOutputElement.h in Headers */, + 1AE2ABA70A1CE90500B42B25 /* JSHTMLParagraphElement.h in Headers */, + 1AE2ABA90A1CE90500B42B25 /* JSHTMLParamElement.h in Headers */, + 1AE2ABAB0A1CE90500B42B25 /* JSHTMLPreElement.h in Headers */, + A4226E5C1163D695008B8397 /* JSHTMLProgressElement.h in Headers */, + 033A6A83147E08A600509B36 /* JSHTMLPropertiesCollection.h in Headers */, + 1AE2AEC80A1D297B00B42B25 /* JSHTMLQuoteElement.h in Headers */, + 1AE2ABAD0A1CE90500B42B25 /* JSHTMLScriptElement.h in Headers */, + E1E6EEA80B628DB3005F2F70 /* JSHTMLSelectElement.h in Headers */, + AB4CB4EB0B8BDA3D009F40B0 /* JSHTMLSelectElementCustom.h in Headers */, + E446143C0CD689CC00FADA75 /* JSHTMLSourceElement.h in Headers */, + 9752D38E1413104B003305BD /* JSHTMLSpanElement.h in Headers */, + A80E7B0E0A19D606007FB8C5 /* JSHTMLStyleElement.h in Headers */, + BCA169A30BFD55B40019CA76 /* JSHTMLTableCaptionElement.h in Headers */, + BC06EDE40BFD6D0D00856E9D /* JSHTMLTableCellElement.h in Headers */, + BC06ED9E0BFD660600856E9D /* JSHTMLTableColElement.h in Headers */, + BC06EE050BFD71AA00856E9D /* JSHTMLTableElement.h in Headers */, + BC06EDA00BFD660600856E9D /* JSHTMLTableRowElement.h in Headers */, + BC06ED070BFD5BAE00856E9D /* JSHTMLTableSectionElement.h in Headers */, + D6489D26166FFCF1007C031B /* JSHTMLTemplateElement.h in Headers */, + A80E7E9D0A1A83E3007FB8C5 /* JSHTMLTextAreaElement.h in Headers */, + A80E7B0C0A19D606007FB8C5 /* JSHTMLTitleElement.h in Headers */, + 070756D414239A4F00414161 /* JSHTMLTrackElement.h in Headers */, + 1A85B2110A1B258700D8C87C /* JSHTMLUListElement.h in Headers */, + 6E4ABCD5138EA0B70071D291 /* JSHTMLUnknownElement.h in Headers */, + E44614170CD6826900FADA75 /* JSHTMLVideoElement.h in Headers */, + C585A67D11D4FB08004C3E4B /* JSIDBAny.h in Headers */, + 81BE20D311F4BC3200915DFA /* JSIDBCursor.h in Headers */, + C585A68311D4FB08004C3E4B /* JSIDBDatabase.h in Headers */, + C585A69711D4FB13004C3E4B /* JSIDBFactory.h in Headers */, + C572EE1F1201C9BC007D8F82 /* JSIDBIndex.h in Headers */, + C585A68D11D4FB08004C3E4B /* JSIDBKeyRange.h in Headers */, + C585A68F11D4FB08004C3E4B /* JSIDBObjectStore.h in Headers */, + C585A69111D4FB08004C3E4B /* JSIDBRequest.h in Headers */, + B6566270120B1227006EA85C /* JSIDBTransaction.h in Headers */, + 269239961505E1AA009E57FC /* JSIDBVersionChangeEvent.h in Headers */, + BC6C49F40D7DBA0500FFA558 /* JSImageConstructor.h in Headers */, + A77979290D6B9E64003851B9 /* JSImageData.h in Headers */, + 7A0E76DB10BF059800A0276E /* JSInjectedScriptHost.h in Headers */, + 7A0E771F10C00DB100A0276E /* JSInspectorFrontendHost.h in Headers */, + 49EECF07105070C400099FAB /* JSInt16Array.h in Headers */, + 49EECF05105070C400099FAB /* JSInt32Array.h in Headers */, + 49C7B9961042D2D30009D447 /* JSInt8Array.h in Headers */, + 1C5FAED20DCFD90100D58F78 /* JSJavaScriptCallFrame.h in Headers */, + A86629D309DA2B48009633A5 /* JSKeyboardEvent.h in Headers */, + 935F45430F7C3B5F00D7C1FB /* JSLazyEventListener.h in Headers */, + BCE1C43C0D9830D3003B02F2 /* JSLocation.h in Headers */, + FD23A12613F5FA5900F67001 /* JSMediaElementAudioSourceNode.h in Headers */, + E44614190CD6826900FADA75 /* JSMediaError.h in Headers */, + BC3C39B70C0D3D8D005F4D7A /* JSMediaList.h in Headers */, + D3A94A47122DC40F00A37BBC /* JSMediaQueryList.h in Headers */, + FDBD480D159BC6870093EB4F /* JSMediaStreamAudioSourceNode.h in Headers */, + E107400E0E77BDC00033AF24 /* JSMessageChannel.h in Headers */, + 75793EC90D0CE72D007FC0AC /* JSMessageEvent.h in Headers */, + E1ADEDDA0E76BD93004A1A5E /* JSMessagePort.h in Headers */, + 41F584C7104652CB009CAA64 /* JSMessagePortCustom.h in Headers */, + 898785B7122CA2A7003AABDA /* JSMetadata.h in Headers */, + 898785B9122CA2A7003AABDA /* JSMetadataCallback.h in Headers */, + 1059457A15B42A43004D37FD /* JSMicroDataItemValue.h in Headers */, + A86629D109DA2B48009633A5 /* JSMouseEvent.h in Headers */, + C6F420A316B7164E0052A9F2 /* JSMutationCallback.h in Headers */, + 65DF31FC09D1CC60000BE325 /* JSMutationEvent.h in Headers */, + C6F0902D14327D4F00685849 /* JSMutationObserver.h in Headers */, + C6F08FCA1431000D00685849 /* JSMutationRecord.h in Headers */, + BCD9C2C10C17B69E005C90A2 /* JSNamedNodeMap.h in Headers */, + A9D247F80D757E3400FDF959 /* JSNavigator.h in Headers */, + BC9439C3116CF4940048C750 /* JSNodeCustom.h in Headers */, + 14115B7309F84CD600CA4FC1 /* JSNodeFilter.h in Headers */, + BCB773620C17853D00132BA4 /* JSNodeFilterCondition.h in Headers */, + 1A750D8E0A90E521000FF215 /* JSNodeIterator.h in Headers */, + BCD9C2C30C17B69E005C90A2 /* JSNodeList.h in Headers */, + 65DF31FE09D1CC60000BE325 /* JSNotation.h in Headers */, + 33503CA410179AD7003B47E1 /* JSNotification.h in Headers */, + 33503CA610179AD7003B47E1 /* JSNotificationCenter.h in Headers */, + 31EC1E2914FF60EE00C94662 /* JSNotificationPermissionCallback.h in Headers */, + 7E46F6FB1627A2CA00062223 /* JSOESElementIndexUint.h in Headers */, + 9001788112E0370700648462 /* JSOESStandardDerivatives.h in Headers */, + 6EBF0E7712A9868800DB1709 /* JSOESTextureFloat.h in Headers */, + A31C4E5416E02B40002F7957 /* JSOESTextureHalfFloat.h in Headers */, + 77A17AA712F28B2A004E02F6 /* JSOESVertexArrayObject.h in Headers */, + FDF6BAF9134A4C9800822920 /* JSOfflineAudioCompletionEvent.h in Headers */, + FDA9326716703BA9008982DC /* JSOfflineAudioContext.h in Headers */, + FDEA6243152102E200479DF0 /* JSOscillatorNode.h in Headers */, + 1A0D57410A5C7867007EDD4C /* JSOverflowEvent.h in Headers */, + E1284BB110449FFA00EAEB52 /* JSPageTransitionEvent.h in Headers */, + FDA15EB212B03EE1003A583A /* JSPannerNode.h in Headers */, + 8A9A587511E84C81008ACFD1 /* JSPerformance.h in Headers */, + 8A9A587111E84C36008ACFD1 /* JSPerformanceNavigation.h in Headers */, + 8A9A588811E84F37008ACFD1 /* JSPerformanceTiming.h in Headers */, + FDEA6247152102FC00479DF0 /* JSPeriodicWave.h in Headers */, + 93B70D6C09EB0C7C009D8468 /* JSPluginElementFunctions.h in Headers */, + 5189F01E10B37BD900F3C739 /* JSPopStateEvent.h in Headers */, + 598365DD1355F557001B185D /* JSPositionCallback.h in Headers */, + FE80DA720E9C472F000D6F75 /* JSPositionError.h in Headers */, + 598365DF1355F562001B185D /* JSPositionErrorCallback.h in Headers */, + 65DF320009D1CC60000BE325 /* JSProcessingInstruction.h in Headers */, + E44613EE0CD681BB00FADA75 /* JSProgressEvent.h in Headers */, + 1059459F15B42B1A004D37FD /* JSPropertyNodeList.h in Headers */, + B658FFA21522EF3A00DD5595 /* JSRadioNodeList.h in Headers */, + 65DF320209D1CC60000BE325 /* JSRange.h in Headers */, + D23CA55D0AB0EAAE005108A5 /* JSRangeException.h in Headers */, + BCFE2F120C1B58380020235F /* JSRect.h in Headers */, + 4998AECE13F9D6C90090B1AA /* JSRequestAnimationFrameCallback.h in Headers */, + BC74DA491013F468007987AD /* JSRGBColor.h in Headers */, + BCEC01C30C274DDD009F4EC9 /* JSScreen.h in Headers */, + FDA15ECE12B03F61003A583A /* JSScriptProcessorNode.h in Headers */, + 9FA37EFB1172FDA600C4CD55 /* JSScriptProfile.h in Headers */, + 9FA37EFD1172FDA600C4CD55 /* JSScriptProfileNode.h in Headers */, + 4A1E71A614E106AC00626F9D /* JSShadowRoot.h in Headers */, + 41D07A7F0FF935CA0095EDCE /* JSSharedWorker.h in Headers */, + 41D1690610238B66009BC827 /* JSSharedWorkerGlobalScope.h in Headers */, + 75415D56129AB2D2003AD669 /* JSSpeechInputEvent.h in Headers */, + 75415D58129AB2D2003AD669 /* JSSpeechInputResult.h in Headers */, + 75415D5A129AB2D2003AD669 /* JSSpeechInputResultList.h in Headers */, + AA7FEEAD16A4E74B004C0C33 /* JSSpeechSynthesis.h in Headers */, + AA2A5AD216A4860A00976A25 /* JSSpeechSynthesisEvent.h in Headers */, + AA7FEEA716A4E6F3004C0C33 /* JSSpeechSynthesisUtterance.h in Headers */, + AA7FEEA916A4E6F3004C0C33 /* JSSpeechSynthesisVoice.h in Headers */, + BC8243290D0CE8A200460C8F /* JSSQLError.h in Headers */, + B525A96511CA2340003A23A8 /* JSSQLException.h in Headers */, + 1AE82FED0CAB07EE002237AE /* JSSQLResultSet.h in Headers */, + 1AFE119A0CBFFCC4003017FA /* JSSQLResultSetRowList.h in Headers */, + B59DD6A511902A62007E9684 /* JSSQLStatementCallback.h in Headers */, + B59DD6A911902A71007E9684 /* JSSQLStatementErrorCallback.h in Headers */, + BC82432A0D0CE8A200460C8F /* JSSQLTransaction.h in Headers */, + B59DD69D11902A42007E9684 /* JSSQLTransactionCallback.h in Headers */, + B59DD6A111902A52007E9684 /* JSSQLTransactionErrorCallback.h in Headers */, + B58CEB6D1191361C002A6790 /* JSSQLTransactionSync.h in Headers */, + B55D5AA4119131FC00BCC315 /* JSSQLTransactionSyncCallback.h in Headers */, + 51E0BAEB0DA55D4A00A9E417 /* JSStorageEvent.h in Headers */, + 89F60CDA15809D760075E157 /* JSStorageInfo.h in Headers */, + 0FF5026A102BA9430066F39A /* JSStyleMedia.h in Headers */, + BCE0139B0C0BEF180043860A /* JSStyleSheet.h in Headers */, + AD726FEE16DA11BC003A4E6D /* JSStyleSheetCustom.h in Headers */, + A84EBD830CB8C97700079609 /* JSStyleSheetList.h in Headers */, + B20111080AB7740500DB0E68 /* JSSVGAElement.h in Headers */, + 24D9129213CA951E00D21915 /* JSSVGAltGlyphDefElement.h in Headers */, + 6515EC920D9723FF0063D49A /* JSSVGAltGlyphElement.h in Headers */, + 24D9129613CA956100D21915 /* JSSVGAltGlyphItemElement.h in Headers */, + B222F6990AB771950022EFAD /* JSSVGAngle.h in Headers */, + B2FA3D370AB75A6F000E5AC4 /* JSSVGAnimateColorElement.h in Headers */, + B2FA3D390AB75A6F000E5AC4 /* JSSVGAnimatedAngle.h in Headers */, + B2FA3D3B0AB75A6F000E5AC4 /* JSSVGAnimatedBoolean.h in Headers */, + B2FA3D3D0AB75A6F000E5AC4 /* JSSVGAnimatedEnumeration.h in Headers */, + B2FA3D3F0AB75A6F000E5AC4 /* JSSVGAnimatedInteger.h in Headers */, + B2FA3D410AB75A6F000E5AC4 /* JSSVGAnimatedLength.h in Headers */, + B2FA3D430AB75A6F000E5AC4 /* JSSVGAnimatedLengthList.h in Headers */, + B2FA3D450AB75A6F000E5AC4 /* JSSVGAnimatedNumber.h in Headers */, + B2FA3D470AB75A6F000E5AC4 /* JSSVGAnimatedNumberList.h in Headers */, + B2FA3D4B0AB75A6F000E5AC4 /* JSSVGAnimatedPreserveAspectRatio.h in Headers */, + B2FA3D4D0AB75A6F000E5AC4 /* JSSVGAnimatedRect.h in Headers */, + B2FA3D4F0AB75A6F000E5AC4 /* JSSVGAnimatedString.h in Headers */, + B2FA3D510AB75A6F000E5AC4 /* JSSVGAnimatedTransformList.h in Headers */, + B2FA3D530AB75A6F000E5AC4 /* JSSVGAnimateElement.h in Headers */, + 4496E39E1398136C003EE32A /* JSSVGAnimateMotionElement.h in Headers */, + B2FA3D550AB75A6F000E5AC4 /* JSSVGAnimateTransformElement.h in Headers */, + B2FA3D570AB75A6F000E5AC4 /* JSSVGAnimationElement.h in Headers */, + B2FA3D590AB75A6F000E5AC4 /* JSSVGCircleElement.h in Headers */, + B2FA3D5B0AB75A6F000E5AC4 /* JSSVGClipPathElement.h in Headers */, + B2FA3D5D0AB75A6F000E5AC4 /* JSSVGColor.h in Headers */, + B2FA3D5F0AB75A6F000E5AC4 /* JSSVGComponentTransferFunctionElement.h in Headers */, + B2FA3D610AB75A6F000E5AC4 /* JSSVGCursorElement.h in Headers */, + B2FA3D630AB75A6F000E5AC4 /* JSSVGDefsElement.h in Headers */, + B2FA3D650AB75A6F000E5AC4 /* JSSVGDescElement.h in Headers */, + B2FA3D670AB75A6F000E5AC4 /* JSSVGDocument.h in Headers */, + B222F69D0AB771B80022EFAD /* JSSVGElement.h in Headers */, + B2CB92440B5BD970009BAA78 /* JSSVGElementInstance.h in Headers */, + B2CB92480B5BD984009BAA78 /* JSSVGElementInstanceList.h in Headers */, + 8542A7990AE5C94400DF58DF /* JSSVGElementWrapperFactory.h in Headers */, + B2FA3D690AB75A6F000E5AC4 /* JSSVGEllipseElement.h in Headers */, + B266CD4E0C3AEC6500EB08D2 /* JSSVGException.h in Headers */, + B2FA3D6B0AB75A6F000E5AC4 /* JSSVGFEBlendElement.h in Headers */, + B2FA3D6D0AB75A6F000E5AC4 /* JSSVGFEColorMatrixElement.h in Headers */, + B2FA3D6F0AB75A6F000E5AC4 /* JSSVGFEComponentTransferElement.h in Headers */, + B2FA3D710AB75A6F000E5AC4 /* JSSVGFECompositeElement.h in Headers */, + 19BFF64F11C0F2AC00B8C04D /* JSSVGFEConvolveMatrixElement.h in Headers */, + B2FA3D730AB75A6F000E5AC4 /* JSSVGFEDiffuseLightingElement.h in Headers */, + B2FA3D750AB75A6F000E5AC4 /* JSSVGFEDisplacementMapElement.h in Headers */, + B2FA3D770AB75A6F000E5AC4 /* JSSVGFEDistantLightElement.h in Headers */, + 4358E87D1360A2EE00E4748C /* JSSVGFEDropShadowElement.h in Headers */, + B2FA3D790AB75A6F000E5AC4 /* JSSVGFEFloodElement.h in Headers */, + B2FA3D7B0AB75A6F000E5AC4 /* JSSVGFEFuncAElement.h in Headers */, + B2FA3D7D0AB75A6F000E5AC4 /* JSSVGFEFuncBElement.h in Headers */, + B2FA3D7F0AB75A6F000E5AC4 /* JSSVGFEFuncGElement.h in Headers */, + B2FA3D810AB75A6F000E5AC4 /* JSSVGFEFuncRElement.h in Headers */, + B2FA3D830AB75A6F000E5AC4 /* JSSVGFEGaussianBlurElement.h in Headers */, + B2FA3D850AB75A6F000E5AC4 /* JSSVGFEImageElement.h in Headers */, + B2FA3D870AB75A6F000E5AC4 /* JSSVGFEMergeElement.h in Headers */, + B2FA3D890AB75A6F000E5AC4 /* JSSVGFEMergeNodeElement.h in Headers */, + 84224184107E77F400766A87 /* JSSVGFEMorphologyElement.h in Headers */, + B2FA3D8B0AB75A6F000E5AC4 /* JSSVGFEOffsetElement.h in Headers */, + B2FA3D8D0AB75A6F000E5AC4 /* JSSVGFEPointLightElement.h in Headers */, + B2FA3D8F0AB75A6F000E5AC4 /* JSSVGFESpecularLightingElement.h in Headers */, + B2FA3D910AB75A6F000E5AC4 /* JSSVGFESpotLightElement.h in Headers */, + B2FA3D930AB75A6F000E5AC4 /* JSSVGFETileElement.h in Headers */, + B2FA3D950AB75A6F000E5AC4 /* JSSVGFETurbulenceElement.h in Headers */, + B2FA3D970AB75A6F000E5AC4 /* JSSVGFilterElement.h in Headers */, + B27B28260CEF0C0700D39D54 /* JSSVGFontElement.h in Headers */, + A83B79050CCAFF15000B0825 /* JSSVGFontFaceElement.h in Headers */, + A83B79000CCAFF15000B0825 /* JSSVGFontFaceFormatElement.h in Headers */, + A83B79020CCAFF15000B0825 /* JSSVGFontFaceNameElement.h in Headers */, + A83B78FE0CCAFF15000B0825 /* JSSVGFontFaceSrcElement.h in Headers */, + A83B78FC0CCAFF15000B0825 /* JSSVGFontFaceUriElement.h in Headers */, + B2FA3D990AB75A6F000E5AC4 /* JSSVGForeignObjectElement.h in Headers */, + B2FA3D9B0AB75A6F000E5AC4 /* JSSVGGElement.h in Headers */, + B27B28280CEF0C0700D39D54 /* JSSVGGlyphElement.h in Headers */, + 24D9129A13CA971400D21915 /* JSSVGGlyphRefElement.h in Headers */, + B2FA3D9D0AB75A6F000E5AC4 /* JSSVGGradientElement.h in Headers */, + 7BE7427381FA906FBB4F0F2C /* JSSVGGraphicsElement.h in Headers */, + 8485227C1190162C006EDC7F /* JSSVGHKernElement.h in Headers */, + B2FA3D9F0AB75A6F000E5AC4 /* JSSVGImageElement.h in Headers */, + B2FA3DA10AB75A6F000E5AC4 /* JSSVGLength.h in Headers */, + B2FA3DA30AB75A6F000E5AC4 /* JSSVGLengthList.h in Headers */, + B2FA3DA50AB75A6F000E5AC4 /* JSSVGLinearGradientElement.h in Headers */, + B2FA3DA70AB75A6F000E5AC4 /* JSSVGLineElement.h in Headers */, + B2FA3DA90AB75A6F000E5AC4 /* JSSVGMarkerElement.h in Headers */, + B2FA3DAB0AB75A6F000E5AC4 /* JSSVGMaskElement.h in Headers */, + B2FA3DAD0AB75A6F000E5AC4 /* JSSVGMatrix.h in Headers */, + B2FA3DAF0AB75A6F000E5AC4 /* JSSVGMetadataElement.h in Headers */, + B27B282A0CEF0C0700D39D54 /* JSSVGMissingGlyphElement.h in Headers */, + 4496E3A0139813A5003EE32A /* JSSVGMPathElement.h in Headers */, + 8542A7970AE5C94300DF58DF /* JSSVGNumber.h in Headers */, + B2FA3DB10AB75A6F000E5AC4 /* JSSVGNumberList.h in Headers */, + B2FA3DB30AB75A6F000E5AC4 /* JSSVGPaint.h in Headers */, + B2FA3DB50AB75A6F000E5AC4 /* JSSVGPathElement.h in Headers */, + B2FA3DB70AB75A6F000E5AC4 /* JSSVGPathSeg.h in Headers */, + B2FA3DB90AB75A6F000E5AC4 /* JSSVGPathSegArcAbs.h in Headers */, + B2FA3DBB0AB75A6F000E5AC4 /* JSSVGPathSegArcRel.h in Headers */, + B2FA3DBD0AB75A6F000E5AC4 /* JSSVGPathSegClosePath.h in Headers */, + B2FA3DBF0AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicAbs.h in Headers */, + B2FA3DC10AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicRel.h in Headers */, + B2FA3DC30AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothAbs.h in Headers */, + B2FA3DC50AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothRel.h in Headers */, + B2FA3DC70AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticAbs.h in Headers */, + B2FA3DC90AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticRel.h in Headers */, + B2FA3DCB0AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothAbs.h in Headers */, + B2FA3DCD0AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothRel.h in Headers */, + B2FA3DCF0AB75A6F000E5AC4 /* JSSVGPathSegLinetoAbs.h in Headers */, + B2FA3DD10AB75A6F000E5AC4 /* JSSVGPathSegLinetoHorizontalAbs.h in Headers */, + B2FA3DD30AB75A6F000E5AC4 /* JSSVGPathSegLinetoHorizontalRel.h in Headers */, + B2FA3DD50AB75A6F000E5AC4 /* JSSVGPathSegLinetoRel.h in Headers */, + B2FA3DD70AB75A6F000E5AC4 /* JSSVGPathSegLinetoVerticalAbs.h in Headers */, + B2FA3DD90AB75A6F000E5AC4 /* JSSVGPathSegLinetoVerticalRel.h in Headers */, + B2FA3DDB0AB75A6F000E5AC4 /* JSSVGPathSegList.h in Headers */, + B2FA3DDD0AB75A6F000E5AC4 /* JSSVGPathSegMovetoAbs.h in Headers */, + B2FA3DDF0AB75A6F000E5AC4 /* JSSVGPathSegMovetoRel.h in Headers */, + B2FA3DE10AB75A6F000E5AC4 /* JSSVGPatternElement.h in Headers */, + 8542A7950AE5C94100DF58DF /* JSSVGPoint.h in Headers */, + B2FA3DE30AB75A6F000E5AC4 /* JSSVGPointList.h in Headers */, + B2FA3DE60AB75A6F000E5AC4 /* JSSVGPolygonElement.h in Headers */, + B2FA3DE80AB75A6F000E5AC4 /* JSSVGPolylineElement.h in Headers */, + B2FA3DEA0AB75A6F000E5AC4 /* JSSVGPreserveAspectRatio.h in Headers */, + B2FA3DEC0AB75A6F000E5AC4 /* JSSVGRadialGradientElement.h in Headers */, + 8542A7930AE5C93F00DF58DF /* JSSVGRect.h in Headers */, + B2FA3DEE0AB75A6F000E5AC4 /* JSSVGRectElement.h in Headers */, + B2FA3DF10AB75A6F000E5AC4 /* JSSVGRenderingIntent.h in Headers */, + B2FA3DF30AB75A6F000E5AC4 /* JSSVGScriptElement.h in Headers */, + B2FA3DF50AB75A6F000E5AC4 /* JSSVGSetElement.h in Headers */, + B2FA3DF70AB75A6F000E5AC4 /* JSSVGStopElement.h in Headers */, + B2FA3DF90AB75A6F000E5AC4 /* JSSVGStringList.h in Headers */, + B2FA3DFB0AB75A6F000E5AC5 /* JSSVGStyledElement.h in Headers */, + B2FA3DFB0AB75A6F000E5AC4 /* JSSVGStyleElement.h in Headers */, + B2FA3DFD0AB75A6F000E5AC4 /* JSSVGSVGElement.h in Headers */, + B2FA3DFF0AB75A6F000E5AC4 /* JSSVGSwitchElement.h in Headers */, + B2FA3E010AB75A6F000E5AC4 /* JSSVGSymbolElement.h in Headers */, + B2FA3E030AB75A6F000E5AC4 /* JSSVGTextContentElement.h in Headers */, + B2FA3E050AB75A6F000E5AC4 /* JSSVGTextElement.h in Headers */, + B22362290C3AF04A0008CA9B /* JSSVGTextPathElement.h in Headers */, + B2FA3E070AB75A6F000E5AC4 /* JSSVGTextPositioningElement.h in Headers */, + B2FA3E090AB75A6F000E5AC4 /* JSSVGTitleElement.h in Headers */, + B2FA3E0B0AB75A6F000E5AC4 /* JSSVGTransform.h in Headers */, + B2FA3E0D0AB75A6F000E5AC4 /* JSSVGTransformList.h in Headers */, + B2FA3E0F0AB75A6F000E5AC4 /* JSSVGTRefElement.h in Headers */, + B2FA3E110AB75A6F000E5AC4 /* JSSVGTSpanElement.h in Headers */, + B2FA3E130AB75A6F000E5AC4 /* JSSVGUnitTypes.h in Headers */, + B2FA3E150AB75A6F000E5AC4 /* JSSVGUseElement.h in Headers */, + B2FA3E170AB75A6F000E5AC4 /* JSSVGViewElement.h in Headers */, + 7118FED515685CC60030B79A /* JSSVGViewSpec.h in Headers */, + 8485227E1190162C006EDC7F /* JSSVGVKernElement.h in Headers */, + 71DCB7021568197600862271 /* JSSVGZoomAndPan.h in Headers */, + B2FA3E190AB75A6F000E5AC4 /* JSSVGZoomEvent.h in Headers */, + 65DF320409D1CC60000BE325 /* JSText.h in Headers */, + 933A14B90B7D1D5200A53FFD /* JSTextEvent.h in Headers */, + BCEF45F60E687B5C001C1287 /* JSTextMetrics.h in Headers */, + 070756951422668D00414161 /* JSTextTrack.h in Headers */, + 070756DE14239B4E00414161 /* JSTextTrackCue.h in Headers */, + 070756E014239B4E00414161 /* JSTextTrackCueList.h in Headers */, + 07B5A2DC1464320A00A81ECE /* JSTextTrackList.h in Headers */, + E446141B0CD6826900FADA75 /* JSTimeRanges.h in Headers */, + 07846385145B1B8E00A58DF1 /* JSTrackCustom.h in Headers */, + 07846343145B151A00A58DF1 /* JSTrackEvent.h in Headers */, + E17B492116A9B8FF001C8839 /* JSTransitionEvent.h in Headers */, + 1A750D5D0A90DEE1000FF215 /* JSTreeWalker.h in Headers */, + A86629CF09DA2B47009633A5 /* JSUIEvent.h in Headers */, + 49EECF0D105070C400099FAB /* JSUint16Array.h in Headers */, + 49EECF0B105070C400099FAB /* JSUint32Array.h in Headers */, + 49EECF09105070C400099FAB /* JSUint8Array.h in Headers */, + 91089D3214C33600005AFC49 /* JSUint8ClampedArray.h in Headers */, + AAA4FAD2175D5CB300743873 /* JSUIRequestEvent.h in Headers */, + 15C77093100D3CA8005BA267 /* JSValidityState.h in Headers */, + BE8EF04B171C9014009B48C3 /* JSVideoTrack.h in Headers */, + BE8EF04D171C9014009B48C3 /* JSVideoTrackList.h in Headers */, + FD82D7F813D4C8BD004E4372 /* JSWaveShaperNode.h in Headers */, + A7D20F63107F406900A80392 /* JSWebGLActiveInfo.h in Headers */, + 49C7B9941042D2D30009D447 /* JSWebGLBuffer.h in Headers */, + 7EA30F6A16DFFE7500257D0B /* JSWebGLCompressedTextureATC.h in Headers */, + 7EA30F6A17EFFE7500257D0B /* JSWebGLCompressedTexturePVRTC.h in Headers */, + 6E3FAD3914733F4000E42306 /* JSWebGLCompressedTextureS3TC.h in Headers */, + 6EE8A77310F803F3005A4A24 /* JSWebGLContextAttributes.h in Headers */, + BC2CBF4E140F1ABD003879BE /* JSWebGLContextEvent.h in Headers */, + 6E3FAD3914733F4011E42307 /* JSWebGLDebugRendererInfo.h in Headers */, + 6E3FAD3914733F4022E42307 /* JSWebGLDebugShaders.h in Headers */, + 6E3FAD3914733F4000E42307 /* JSWebGLDepthTexture.h in Headers */, + 49C7B9981042D2D30009D447 /* JSWebGLFramebuffer.h in Headers */, + 93F1D5C112D5335600832BEC /* JSWebGLLoseContext.h in Headers */, + 49C7B99C1042D2D30009D447 /* JSWebGLProgram.h in Headers */, + 49C7B99E1042D2D30009D447 /* JSWebGLRenderbuffer.h in Headers */, + 49EED1471051969400099FAB /* JSWebGLRenderingContext.h in Headers */, + 49C7B9A31042D2D30009D447 /* JSWebGLShader.h in Headers */, + A07D3356152B630E001B6393 /* JSWebGLShaderPrecisionFormat.h in Headers */, + 49C7B9A51042D2D30009D447 /* JSWebGLTexture.h in Headers */, + 0C45342810CDBBFA00869157 /* JSWebGLUniformLocation.h in Headers */, + 77EF62F412F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h in Headers */, + 31C0FF3E0E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.h in Headers */, + A2E8AE3816A49840006BB3AA /* JSWebKitCSSFilterRule.h in Headers */, + 310603751432819C00ABF4BA /* JSWebKitCSSFilterValue.h in Headers */, + 316FE0720E6CCBEE00BF6088 /* JSWebKitCSSKeyframeRule.h in Headers */, + 316FE0740E6CCBEE00BF6088 /* JSWebKitCSSKeyframesRule.h in Headers */, + 498391400F1E767500C23782 /* JSWebKitCSSMatrix.h in Headers */, + 15B8B7C91652C5220036EF55 /* JSWebKitCSSMixFunctionValue.h in Headers */, + 8AD0A59514C88336000D83C5 /* JSWebKitCSSRegionRule.h in Headers */, + 31611E5B0E1C4DE000F6A579 /* JSWebKitCSSTransformValue.h in Headers */, + 3F2B33EF165AF15600E3987C /* JSWebKitCSSViewportRule.h in Headers */, + 494BD79E0F55C94C00747828 /* JSWebKitPoint.h in Headers */, + 31C0FF400E4CEFAC007D6FE5 /* JSWebKitTransitionEvent.h in Headers */, + 5DA5E0FD102B953800088CF9 /* JSWebSocket.h in Headers */, + 65DF320609D1CC60000BE325 /* JSWheelEvent.h in Headers */, + E1CAA5C60E8BD23600A73ECA /* JSWorker.h in Headers */, + E18256900EF2B02D00933242 /* JSWorkerGlobalScope.h in Headers */, + E1C36D350EB0A094007410BC /* JSWorkerGlobalScopeBase.h in Headers */, + E1C362EF0EAF2AA9007410BC /* JSWorkerLocation.h in Headers */, + E1271A580EEECDE400F61213 /* JSWorkerNavigator.h in Headers */, + BC348BD40DB7F804004ABAB9 /* JSXMLHttpRequest.h in Headers */, + BC60DA3A0D2A302800B9918F /* JSXMLHttpRequestException.h in Headers */, + F916C48E0DB510F80076CD83 /* JSXMLHttpRequestProgressEvent.h in Headers */, + BCDFD4960E30592F009D10AD /* JSXMLHttpRequestUpload.h in Headers */, + 1ACE53F70A8D19470022947D /* JSXMLSerializer.h in Headers */, + 1A762C740A074F2600989F5B /* JSXPathEvaluator.h in Headers */, + BC60DB4A0D2A3D1E00B9918F /* JSXPathException.h in Headers */, + 1A762C760A074F2600989F5B /* JSXPathExpression.h in Headers */, + 1A762C780A074F2600989F5B /* JSXPathNSResolver.h in Headers */, + 1A762C7A0A074F2600989F5B /* JSXPathResult.h in Headers */, + BCEFE1EB0DCA5F6400739219 /* JSXSLTProcessor.h in Headers */, + 85031B440A44EFC700F992E0 /* KeyboardEvent.h in Headers */, + A513B3D7114B1666001C429B /* KeyEventCocoa.h in Headers */, + 265541391489811C000DFC5D /* KeyEventCodesIOS.h in Headers */, + 316FE11A0E6E1DA700BF6088 /* KeyframeAnimation.h in Headers */, + BC5EBA110E823E4700B25965 /* KeyframeList.h in Headers */, + 521D46F811AEC9B100514613 /* KillRing.h in Headers */, + 6593923809AE4346002C531F /* KURL.h in Headers */, + BCBD21AB0E417AD400A070F2 /* KURLHash.h in Headers */, + 450CEBF115073BBE002BB149 /* LabelableElement.h in Headers */, + A456FA2711AD4A830020B420 /* LabelsNodeList.h in Headers */, + 85EC9AFB0A71A2C600EEEAED /* Language.h in Headers */, + 2917B5621473496C0052C9D0 /* LayerFlushScheduler.h in Headers */, + 2917B5631473496C0052C9D0 /* LayerFlushSchedulerClient.h in Headers */, + 93F72AF31666EDFC002A02BD /* LayerPool.h in Headers */, + 141DC050164834B900371E5A /* LayoutBoxExtent.h in Headers */, + 931D72F615FE695300C4C07E /* LayoutMilestones.h in Headers */, + 141DC051164834B900371E5A /* LayoutPoint.h in Headers */, + 141DC053164834B900371E5A /* LayoutRect.h in Headers */, + A12538D413F9B60A00024754 /* LayoutRepainter.h in Headers */, + 141DC054164834B900371E5A /* LayoutSize.h in Headers */, + 2D9066070BE141D400956998 /* LayoutState.h in Headers */, + 141DC0481648348F00371E5A /* LayoutUnit.h in Headers */, + 512DD8F50D91E6AF000F89EE /* LegacyWebArchive.h in Headers */, + BCE65BEB0EACDF16007E4533 /* Length.h in Headers */, + BCFF64910EAD15C200C1D6F7 /* LengthBox.h in Headers */, + E5BA7D63151437CA00FE1E3F /* LengthFunctions.h in Headers */, + BCFF64920EAD15C200C1D6F7 /* LengthSize.h in Headers */, + 8CADF2A9135C7B36009EF43F /* LevelDBComparator.h in Headers */, + 8CADF2AB135C7B36009EF43F /* LevelDBDatabase.h in Headers */, + 8CADF2AD135C7B36009EF43F /* LevelDBIterator.h in Headers */, + 8CADF2AE135C7B36009EF43F /* LevelDBSlice.h in Headers */, + 8C0E334D138A92C7008DA94F /* LevelDBTransaction.h in Headers */, + 8C0E334F138A92C7008DA94F /* LevelDBWriteBatch.h in Headers */, + 84730D911248F0B300D3A9C9 /* LightSource.h in Headers */, + B22279650D00BF220071B782 /* LinearGradientAttributes.h in Headers */, + A5ABB78713B904BC00F197E3 /* LineBreakIteratorPoolICU.h in Headers */, + AB31C91E10AE1B8E000C7B92 /* LineClampValue.h in Headers */, + 89B5EAA211E8003D00F2367E /* LineEnding.h in Headers */, + A7AD2F880EC89D07008AB002 /* LinkHash.h in Headers */, + 98CE432A129E00E5005821DC /* LinkLoader.h in Headers */, + 984264F112D5280A000D88A4 /* LinkLoaderClient.h in Headers */, + 985BB96E13A94058007A0B69 /* LinkRelAttribute.h in Headers */, + BC7FA6210D1F0CBD00DB22A9 /* LiveNodeList.h in Headers */, + 9759E94914EF1D490026A2DD /* LoadableTextTrack.h in Headers */, + 656D37320ADBA5DE00A4554D /* LoaderNSURLExtras.h in Headers */, + 7EE6846912D26E3800E79415 /* LoaderRunLoopCF.h in Headers */, + 51E6821016387302003BBF3C /* LoaderStrategy.h in Headers */, + 06E81ED70AB5D5E900C87837 /* LocalCurrentGraphicsContext.h in Headers */, + F5973DE015CFB2030027F804 /* LocaleMac.h in Headers */, + 7633A72613D8B33A008501B6 /* LocaleToScriptMapping.h in Headers */, + 89878568122CA064003AABDA /* LocalFileSystem.h in Headers */, + 935207BE09BD410A00F2038D /* LocalizedStrings.h in Headers */, + BCE1C41B0D982980003B02F2 /* Location.h in Headers */, + A8239E0109B3CF8A00B60641 /* Logging.h in Headers */, + 9BA273F4172206BB0097CE47 /* LogicalSelectionOffsetCaches.h in Headers */, + E187056316E54A0D00585E97 /* MainThreadTask.h in Headers */, + 1A8F6BC60DB55CDC001DB794 /* ManifestParser.h in Headers */, + 93309DF8099E64920056E581 /* markup.h in Headers */, + 9728C3141268E4390041E89B /* MarkupAccumulator.h in Headers */, + 00C60E3F13D76D7E0092A275 /* MarkupTokenizerInlines.h in Headers */, + FABE72F51059C1EB00D999DD /* MathMLElement.h in Headers */, + 44A28AAC12DFB8AC00AE923B /* MathMLElementFactory.h in Headers */, + FABE72F71059C1EB00D999DD /* MathMLInlineContainerElement.h in Headers */, + FABE72F91059C1EB00D999DD /* MathMLMathElement.h in Headers */, + 44A28AAF12DFB8BF00AE923B /* MathMLNames.h in Headers */, + FA654A6C1108ABED002615E0 /* MathMLTextElement.h in Headers */, + 49D5DC2C0F423A73008F20FD /* Matrix3DTransformOperation.h in Headers */, + 49E911C70EF86D47009D0CAF /* MatrixTransformOperation.h in Headers */, + 931BCC611124DFCB00BE70DD /* MediaCanStartListener.h in Headers */, + 417253AB1354BBBC00360F2A /* MediaControlElements.h in Headers */, + DEBCCDD416646EAF00A452E1 /* MediaControlElementTypes.h in Headers */, + CDF65CC8145B1E7500C4C7AA /* MediaController.h in Headers */, + CDF65CCA145B448800C4C7AA /* MediaControllerInterface.h in Headers */, + 1F3C3BEB135CAF3C00B8C1AC /* MediaControls.h in Headers */, + 4157AF8012F1FB0400A8C6F5 /* MediaControlsApple.h in Headers */, + 97205AB81239291000B17380 /* MediaDocument.h in Headers */, + FD6F252D13F5EF0E0065165F /* MediaElementAudioSourceNode.h in Headers */, + E44613AD0CD6331000FADA75 /* MediaError.h in Headers */, + 4E1959220A39DABA00220FE5 /* MediaFeatureNames.h in Headers */, + 07A6D1EC1491137700051D0C /* MediaFragmentURIParser.h in Headers */, + A8EA800E0A19516E00A8EF5F /* MediaList.h in Headers */, + E44613E40CD681A200FADA75 /* MediaPlayer.h in Headers */, + 076F0D0E12B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.h in Headers */, + DF9AFD7213FC31D80015FEB7 /* MediaPlayerPrivateAVFoundationObjC.h in Headers */, + E44613E60CD681A900FADA75 /* MediaPlayerPrivateQTKit.h in Headers */, + 0735EE6A0F40C5E4004A2604 /* MediaPlayerProxy.h in Headers */, + 4E19592A0A39DACC00220FE5 /* MediaQuery.h in Headers */, + 4E19592C0A39DACC00220FE5 /* MediaQueryEvaluator.h in Headers */, + 4E19592E0A39DACC00220FE5 /* MediaQueryExp.h in Headers */, + D3A94A39122DABAC00A37BBC /* MediaQueryList.h in Headers */, + D3A94A3B122DABAC00A37BBC /* MediaQueryListListener.h in Headers */, + D3AA10F4123A98AA0092152B /* MediaQueryMatcher.h in Headers */, + FD671A78159BB07000197559 /* MediaStreamAudioSourceNode.h in Headers */, + BCB16C180979C3BD00467741 /* MemoryCache.h in Headers */, + 6571DCC81385E6A400702DD0 /* MemoryPressureHandler.h in Headers */, + 93309DFA099E64920056E581 /* MergeIdenticalElementsCommand.h in Headers */, + E1ADECCE0E76AD8B004A1A5E /* MessageChannel.h in Headers */, + 75793E840D0CE0B3007FC0AC /* MessageEvent.h in Headers */, + E1ADECBF0E76ACF1004A1A5E /* MessagePort.h in Headers */, + 41BF700C0FE86F49005E8DEC /* MessagePortChannel.h in Headers */, + 89878569122CA064003AABDA /* Metadata.h in Headers */, + 8987856A122CA064003AABDA /* MetadataCallback.h in Headers */, + A78E52701346BD1700AD9C31 /* MeterShadowElement.h in Headers */, + 37DDCDA51384501C0008B793 /* MHTMLArchive.h in Headers */, + 37DDCDA71384501C0008B793 /* MHTMLParser.h in Headers */, + 2E07753416B1BD4C004D9936 /* MicroDataAttributeTokenList.h in Headers */, + 9B375EDB14478A0100F3CAE5 /* MicroDataItemList.h in Headers */, + 37DDCD9513844FD50008B793 /* MIMEHeader.h in Headers */, + BC772C4F0C4EB3040083285F /* MIMETypeRegistry.h in Headers */, + 52F10866162B6DA8009AC81E /* MixedContentChecker.h in Headers */, + C6D74AD509AA282E000B0A52 /* ModifySelectionListLevel.h in Headers */, + F55B3DC61251F12D003EF269 /* MonthInputType.h in Headers */, + 85031B460A44EFC700F992E0 /* MouseEvent.h in Headers */, + 935C476309AC4CE600A6AAB4 /* MouseEventWithHitTestResults.h in Headers */, + 85031B480A44EFC700F992E0 /* MouseRelatedEvent.h in Headers */, + 93309DFC099E64920056E581 /* MoveSelectionCommand.h in Headers */, + FDB1700614A2BAB200A2B5D9 /* MultiChannelResampler.h in Headers */, + C6F0900A14327B6100685849 /* MutationCallback.h in Headers */, + 85031B4A0A44EFC700F992E0 /* MutationEvent.h in Headers */, + C6F0900F14327B6100685849 /* MutationObserver.h in Headers */, + D6E528A4149A926D00EFE1F3 /* MutationObserverInterestGroup.h in Headers */, + D6E276B014637455001D280A /* MutationObserverRegistration.h in Headers */, + C6F08FBD1430FE8F00685849 /* MutationRecord.h in Headers */, + 52B6C9C615E3F4DF00690B05 /* NamedFlowCollection.h in Headers */, + A81872230977D3C0005826D9 /* NamedNodeMap.h in Headers */, + A818721E0977D3C0005826D9 /* NameNodeList.h in Headers */, + 6B3480940EEF50D400AC1B41 /* NativeImagePtr.h in Headers */, + E10B9B6C0B747599003ED890 /* NativeXPathNSResolver.h in Headers */, + 93CCF0270AF6C52900018E89 /* NavigationAction.h in Headers */, + 979F43D41075E44A0000F83B /* NavigationScheduler.h in Headers */, + A9C6E5A60D746458006442E9 /* Navigator.h in Headers */, + E12719C70EEEC16800F61213 /* NavigatorBase.h in Headers */, + 9711460414EF009A00674FD9 /* NavigatorGeolocation.h in Headers */, + 8A309C9F123950BE00CB9204 /* NestingLevelIncrementer.h in Headers */, + 656D37430ADBA5DE00A4554D /* NetscapePlugInStreamLoader.h in Headers */, + 628D214C12131ED10055DCFC /* NetworkingContext.h in Headers */, + 59C27F07138D28CF0079B7E2 /* NetworkResourcesData.h in Headers */, + 1A7FA6190DDA3B3A0028F8A5 /* NetworkStateNotifier.h in Headers */, + E13EF3441684ECF40034C83F /* NetworkStorageSession.h in Headers */, + BCEF43DD0E674012001C1287 /* NinePieceImage.h in Headers */, + 14115B5209F84B7100CA4FC1 /* Node.h in Headers */, + 854FE7310A2297BE0058D7AD /* NodeFilter.h in Headers */, + 854FE7330A2297BE0058D7AD /* NodeFilterCondition.h in Headers */, + 854FE7350A2297BE0058D7AD /* NodeIterator.h in Headers */, + A818721B0977D3C0005826D9 /* NodeList.h in Headers */, + 63189AE30E83A33300012E41 /* NodeRareData.h in Headers */, + A7F5D9501384F02D00A29A87 /* NodeRenderingContext.h in Headers */, + A74F3EF51678B24F00B05A6E /* NodeRenderingTraversal.h in Headers */, + 63D7B32D0E78CD3F00F7617C /* NodeRenderStyle.h in Headers */, + E43105BB16750F1600DB2FB8 /* NodeTraversal.h in Headers */, + 9382AAB40D8C386100F357A6 /* NodeWithIndex.h in Headers */, + BCD3F9831326C93700098A60 /* NonCJKGlyphOrientation.h in Headers */, + A8EA7EBE0A1945D000A8EF5F /* Notation.h in Headers */, + 312C0C41146DC6CC0016C911 /* Notification.h in Headers */, + 3390CA560FFC157B00921962 /* NotificationCenter.h in Headers */, + 33503C9A10179A74003B47E1 /* NotificationClient.h in Headers */, + 3128CA6B147331630074C72A /* NotificationController.h in Headers */, + 31FE6DFA15004C2A0004EBC4 /* NotificationPermissionCallback.h in Headers */, + 98EB1F951313FE0500D0E1EA /* NotImplemented.h in Headers */, + 1A569D0B0D7E2B82007C3983 /* NP_jsobject.h in Headers */, + 1A927FD21416A15B003A83C8 /* npapi.h in Headers */, + 1A219B3B0DCA87AB0040E3A0 /* npfunctions.h in Headers */, + 1A927FD31416A15B003A83C8 /* npruntime.h in Headers */, + 1A569D0F0D7E2B82007C3983 /* npruntime_impl.h in Headers */, + 1A569D100D7E2B82007C3983 /* npruntime_internal.h in Headers */, + 1A569D110D7E2B82007C3983 /* npruntime_priv.h in Headers */, + 1A927FD41416A15B003A83C8 /* nptypes.h in Headers */, + 93500F3213FDE3BE0099EC24 /* NSScrollerImpDetails.h in Headers */, + F55B3DC81251F12D003EF269 /* NumberInputType.h in Headers */, + 1A569D120D7E2B82007C3983 /* objc_class.h in Headers */, + 1A569D140D7E2B82007C3983 /* objc_header.h in Headers */, + 1A569D150D7E2B82007C3983 /* objc_instance.h in Headers */, + 1A569D170D7E2B82007C3983 /* objc_runtime.h in Headers */, + 1A569D190D7E2B82007C3983 /* objc_utility.h in Headers */, + 1CF6BDFA0E9BB26A0025E1CD /* ObjCEventListener.h in Headers */, + 1CF6BE150E9BB4670025E1CD /* ObjCNodeFilterCondition.h in Headers */, + E16982551134629D00894115 /* ObjCRuntimeObject.h in Headers */, + 7E5D7A77161D3F8F00896C34 /* OESElementIndexUint.h in Headers */, + 9001774112E0347800648462 /* OESStandardDerivatives.h in Headers */, + 6EBF0E4912A8926100DB1709 /* OESTextureFloat.h in Headers */, + A31C4E4F16E02AB4002F7957 /* OESTextureHalfFloat.h in Headers */, + 77A17A7212F28182004E02F6 /* OESVertexArrayObject.h in Headers */, + FDA3E95A134A49EF008D4B5A /* OfflineAudioCompletionEvent.h in Headers */, + FDA9325E16703B2A008982DC /* OfflineAudioContext.h in Headers */, + FDA3E95C134A49EF008D4B5A /* OfflineAudioDestinationNode.h in Headers */, + F4EAF4AF10C742B1009100D3 /* OpenTypeSanitizer.h in Headers */, + 0014628B103CD1DE000B20DB /* OriginAccessEntry.h in Headers */, + FE9E89FC16E2DC0500A908F8 /* OriginLock.h in Headers */, + FD581FAF1520F91F003A7A75 /* OscillatorNode.h in Headers */, + BC5EB5DD0E81B8DD00B25965 /* OutlineValue.h in Headers */, + 1A0D57370A5C77FE007EDD4C /* OverflowEvent.h in Headers */, + 3774ABA50FA21EB400AD7DE9 /* OverlapTestRequestClient.h in Headers */, + 65A21468097A329100B9050A /* Page.h in Headers */, + 1477E7770BF4134A00152872 /* PageCache.h in Headers */, + DAED203116F244480070EC0F /* PageConsole.h in Headers */, + F3820893147D35F90010BC06 /* PageConsoleAgent.h in Headers */, + F34742DD134362F000531BC2 /* PageDebuggerAgent.h in Headers */, + 9302B0BF0D79F82C00C7EE83 /* PageGroup.h in Headers */, + 9712A60515004EDA0048AF10 /* PageGroupIndexedDatabase.h in Headers */, + 7A674BDC0F9EBF4E006CF099 /* PageGroupLoadDeferrer.h in Headers */, + FBDB61A116D6037E00BB3394 /* PageRuleCollector.h in Headers */, + F3820895147D35F90010BC06 /* PageRuntimeAgent.h in Headers */, + F34742E51343633C00531BC2 /* PageScriptDebugServer.h in Headers */, + 371E65CC13661EDC00BEEDB0 /* PageSerializer.h in Headers */, + A7197F24175689C4007B9442 /* PageThrottler.h in Headers */, + E1284AE110447D4500EAEB52 /* PageTransitionEvent.h in Headers */, + 51E1ECC30C91C90400DC255B /* PageURLRecord.h in Headers */, + FFD5B97B135CC97800D5E92A /* PageVisibilityState.h in Headers */, + 9377ABA015DEFEEF0031FD04 /* Pagination.h in Headers */, + 0885067F11DA045B00182B98 /* PaintInfo.h in Headers */, + 0885068011DA045B00182B98 /* PaintPhase.h in Headers */, + A80E6CFB0A1989CA007FB8C5 /* Pair.h in Headers */, + FD3160A312B026F700C1A359 /* Panner.h in Headers */, + FD31601A12B0267600C1A359 /* PannerNode.h in Headers */, + 447958041643B49A001E0A7F /* ParsedContentType.h in Headers */, + BC76AC130DD7AD5C00415F34 /* ParserUtilities.h in Headers */, + F55B3DCA1251F12D003EF269 /* PasswordInputType.h in Headers */, + 4B2708C70AF19EE40065127F /* Pasteboard.h in Headers */, + C598905714E9C28000E8D18B /* PasteboardStrategy.h in Headers */, + B27535800B053814002CE64F /* Path.h in Headers */, + A88DD4870B4629A300C02990 /* PathTraversalState.h in Headers */, + A8FA6E5D0E4CFDED00D5CF49 /* Pattern.h in Headers */, + B22279710D00BF220071B782 /* PatternAttributes.h in Headers */, + B27535650B053814002CE64F /* PDFDocumentImage.h in Headers */, + 8A7CC96B12076D73001D4588 /* PendingScript.h in Headers */, + 8A844D0511D3C18E0014065C /* Performance.h in Headers */, + 86BE340115058CB200CE0FD8 /* PerformanceEntry.h in Headers */, + 86BE340415058CB200CE0FD8 /* PerformanceEntryList.h in Headers */, + 8AF4E55611DC5A36000ED3DE /* PerformanceNavigation.h in Headers */, + 86512EDF154A2AEF00A90426 /* PerformanceResourceTiming.h in Headers */, + 8AF4E55C11DC5A63000ED3DE /* PerformanceTiming.h in Headers */, + FD581FB51520F93B003A7A75 /* PeriodicWave.h in Headers */, + 49D5DC2E0F423A73008F20FD /* PerspectiveTransformOperation.h in Headers */, + D0FF2A5E11F8C45A007E74E0 /* PingLoader.h in Headers */, + 377C4CDF1014E9F600B9AE42 /* PlaceholderDocument.h in Headers */, + 499B3EDD128DB50200E726C2 /* PlatformCAAnimation.h in Headers */, + 0F13163E16ED0CC80035CC04 /* PlatformCAFilters.h in Headers */, + 499B3EC5128CCC4700E726C2 /* PlatformCALayer.h in Headers */, + 493E5E0912D6420500020081 /* PlatformCALayerClient.h in Headers */, + E1424C8A164B3B4E00F32D40 /* PlatformCookieJar.h in Headers */, + BC5C762B1497FE1400BC4775 /* PlatformEvent.h in Headers */, + BCAA487014A052530088FAC4 /* PlatformEventFactoryMac.h in Headers */, + A723F77B1484CA4C008C6DBE /* PlatformExportMacros.h in Headers */, + BC9585E112F0989500755821 /* PlatformGestureEvent.h in Headers */, + 49182B5315DCE6F000548418 /* PlatformInstrumentation.h in Headers */, + 935C476809AC4D4300A6AAB4 /* PlatformKeyboardEvent.h in Headers */, + 0562F9611573F88F0031CA16 /* PlatformLayer.h in Headers */, + F544F78915CFB2A800AF33A8 /* PlatformLocale.h in Headers */, + 932871C00B20DEB70049035A /* PlatformMenuDescription.h in Headers */, + 41BF70100FE86F61005E8DEC /* PlatformMessagePortChannel.h in Headers */, + 935C476909AC4D4300A6AAB4 /* PlatformMouseEvent.h in Headers */, + C598905814E9C29900E8D18B /* PlatformPasteboard.h in Headers */, + BCEC01D70C274EB4009F4EC9 /* PlatformScreen.h in Headers */, + 297BE3D516C03C08003316BD /* PlatformSpeechSynthesisUtterance.h in Headers */, + 297BE3D616C03C0B003316BD /* PlatformSpeechSynthesisVoice.h in Headers */, + 297BE3D716C03C0E003316BD /* PlatformSpeechSynthesizer.h in Headers */, + 1AD8F81B11CAB9E900E93E54 /* PlatformStrategies.h in Headers */, + 935C476B09AC4D4F00A6AAB4 /* PlatformWheelEvent.h in Headers */, + 31D591B316697A6C00E6BF02 /* PlugInClient.h in Headers */, + A9C6E4F40D745E48006442E9 /* PluginData.h in Headers */, + 97205ABC1239292700B17380 /* PluginDocument.h in Headers */, + 1ADA14110E1AE5D900023EE5 /* PluginMainThreadScheduler.h in Headers */, + 71E2183A17359FB8006E6E4D /* PlugInsResources.h in Headers */, + 1AA8799011CBE846003C664F /* PluginStrategy.h in Headers */, + 0AFDAC3D10F5448C00E1F3D2 /* PluginViewBase.h in Headers */, + BCBB8AB813F1AFB000734DF0 /* PODArena.h in Headers */, + 1F3F19531499CA7600A5AEA7 /* PODFreeListArena.h in Headers */, + BCBB8AB913F1AFB000734DF0 /* PODInterval.h in Headers */, + BCBB8ABA13F1AFB000734DF0 /* PODIntervalTree.h in Headers */, + BCBB8ABB13F1AFB000734DF0 /* PODRedBlackTree.h in Headers */, + B2B1F7170D00CAA8004AEA64 /* PointerEventsHitRules.h in Headers */, + 84730D921248F0B300D3A9C9 /* PointLightSource.h in Headers */, + 97059978107D975200A50A7C /* PolicyCallback.h in Headers */, + 9705997A107D975200A50A7C /* PolicyChecker.h in Headers */, + FD45A957175D414C00C21EC8 /* PolygonShape.h in Headers */, + 5174E20A10A1F44F00F95E6F /* PopStateEvent.h in Headers */, + 0668E18B0ADD9624004128E0 /* PopupMenu.h in Headers */, + ABC128770B33AA6D00C693D5 /* PopupMenuClient.h in Headers */, + BC3BE12B0E98092F00835588 /* PopupMenuStyle.h in Headers */, + 37F567CE165358F400DDE92B /* PopupOpeningObserver.h in Headers */, + 93F199DE08245E59001E9ABC /* Position.h in Headers */, + 9746AF2C14F4DDE6003E7A70 /* PositionCallback.h in Headers */, + 9746AF2E14F4DDE6003E7A70 /* PositionError.h in Headers */, + 9746AF3014F4DDE6003E7A70 /* PositionErrorCallback.h in Headers */, + 37919C240B7D188600A56998 /* PositionIterator.h in Headers */, + 9746AF3214F4DDE6003E7A70 /* PositionOptions.h in Headers */, + C0F2A44113869AAB0066C534 /* preprocessor.pm in Headers */, + B71FE6DF11091CB300DAEF77 /* PrintContext.h in Headers */, + A8EA7EBC0A1945D000A8EF5F /* ProcessingInstruction.h in Headers */, + E44613EC0CD681B500FADA75 /* ProgressEvent.h in Headers */, + A715E653134BBBEC00D8E713 /* ProgressShadowElement.h in Headers */, + 1A2A68240B5BEDE70002A480 /* ProgressTracker.h in Headers */, + 1059459915B42AA0004D37FD /* PropertyNodeList.h in Headers */, + E4BBED0F14F4025D003F0B98 /* PropertySetCSSStyleDeclaration.h in Headers */, + 514C76750CE923A1007EF3CD /* ProtectionSpace.h in Headers */, + 51A052561058874000CC9E95 /* ProtectionSpaceHash.h in Headers */, + 1AF8E11A1256592600230FF7 /* ProxyServer.h in Headers */, + FF945ECC161F7F3600971BC8 /* PseudoElement.h in Headers */, + 0081FF0016B0A2D3008AAA7A /* PublicSuffix.h in Headers */, + 10FB084B14E15C7E00A3DB98 /* PublicURLManager.h in Headers */, + E4D687790ED7AE4F006EA978 /* PurgeableBuffer.h in Headers */, + 7E33CD01127F340D00BE8F17 /* PurgePriority.h in Headers */, + 550A0BCA085F6039007353D6 /* QualifiedName.h in Headers */, + 379E371713736A6600B9E919 /* QuotedPrintable.h in Headers */, + 5A574F29131DB96D00471B88 /* QuotesData.h in Headers */, + B22279720D00BF220071B782 /* RadialGradientAttributes.h in Headers */, + F55B3DCC1251F12D003EF269 /* RadioInputType.h in Headers */, + B658FFA61522EFAA00DD5595 /* RadioNodeList.h in Headers */, + 93F1991808245E59001E9ABC /* Range.h in Headers */, + 93D9D53C0DA27E180077216C /* RangeBoundaryPoint.h in Headers */, + D23CA56C0AB0EB8D005108A5 /* RangeException.h in Headers */, + F55B3DCE1251F12D003EF269 /* RangeInputType.h in Headers */, + A84D827C11D333ED00972990 /* RawDataDocumentParser.h in Headers */, + FD31603C12B0267600C1A359 /* RealtimeAnalyser.h in Headers */, + BC4368E80C226E32005EFB5F /* Rect.h in Headers */, + FD45A958175D414C00C21EC8 /* RectangleShape.h in Headers */, + A72EA3BB1585CF55004FAA26 /* RefCountedSupplement.h in Headers */, + 9831AE4A154225C900FE2644 /* ReferrerPolicy.h in Headers */, + BCAB418213E356E800D8AAF3 /* Region.h in Headers */, + 6CDDE8D01770BB220016E072 /* RegionOversetState.h in Headers */, + 85031B4C0A44EFC700F992E0 /* RegisteredEventListener.h in Headers */, + B2C3DA2D0D006C1D00EF6F26 /* RegularExpression.h in Headers */, + 93309E01099E64920056E581 /* RemoveCSSPropertyCommand.h in Headers */, + D06C0D8F0CFD11460065F43F /* RemoveFormatCommand.h in Headers */, + 93309E05099E64920056E581 /* RemoveNodeCommand.h in Headers */, + 93309E07099E64920056E581 /* RemoveNodePreservingChildrenCommand.h in Headers */, + BCEA485C097D93020094C9E4 /* RenderApplet.h in Headers */, + BCEA485E097D93020094C9E4 /* RenderArena.h in Headers */, + BCEA4860097D93020094C9E4 /* RenderBlock.h in Headers */, + BCEA4862097D93020094C9E4 /* RenderBox.h in Headers */, + BC96DB430F3A880E00573CB3 /* RenderBoxModelObject.h in Headers */, + BCEB179C143379F50052EAE9 /* RenderBoxRegionInfo.h in Headers */, + BCEA4864097D93020094C9E4 /* RenderBR.h in Headers */, + BCEA4866097D93020094C9E4 /* RenderButton.h in Headers */, + BCE4413412F748E2009B84B8 /* RenderCombineText.h in Headers */, + 9392F1420AD185F400691BD4 /* RenderCounter.h in Headers */, + BCEA486E097D93020094C9E4 /* RenderDeprecatedFlexibleBox.h in Headers */, + D302754A12A5FE84004BD828 /* RenderDetailsMarker.h in Headers */, + 76F2E2EC15F74CEF005FF664 /* RenderDialog.h in Headers */, + A76E5F7F135E0DCF00A69837 /* RenderedDocumentMarker.h in Headers */, + 9B32CDA913DF7FA900F34D13 /* RenderedPosition.h in Headers */, + 0F5B7A5510F65D7A00376302 /* RenderEmbeddedObject.h in Headers */, + A8EA73C40A1900E300A8EF5F /* RenderFieldset.h in Headers */, + 066C77310AB603FD00238CC4 /* RenderFileUploadControl.h in Headers */, + 53C8298E13D8D92700DE2DEB /* RenderFlexibleBox.h in Headers */, + 508CCA4F13CF106B003151F3 /* RenderFlowThread.h in Headers */, + A871DED30A1530C700B12A68 /* RenderFrame.h in Headers */, + 0FD3080F117CF7E700A791F7 /* RenderFrameBase.h in Headers */, + A871DED10A1530C700B12A68 /* RenderFrameSet.h in Headers */, + CDEA7C841276230400B846DD /* RenderFullScreen.h in Headers */, + 0F3F0E5A157030C3006DA57F /* RenderGeometryMap.h in Headers */, + BC128A73137C867C00CAC845 /* RenderGrid.h in Headers */, + BCEA486A097D93020094C9E4 /* RenderHTMLCanvas.h in Headers */, + 0FD308D6117D168500A791F7 /* RenderIFrame.h in Headers */, + BCEA4876097D93020094C9E4 /* RenderImage.h in Headers */, + 08F2F00A1213E61700DCEC48 /* RenderImageResource.h in Headers */, + 08641D4812142F7D008DE9F6 /* RenderImageResourceStyleImage.h in Headers */, + BCEA4878097D93020094C9E4 /* RenderInline.h in Headers */, + 750D029411D0E7F300BD1B27 /* RenderInputSpeech.h in Headers */, + BCEA487A097D93020094C9E4 /* RenderLayer.h in Headers */, + 0F580CFF0F12DE9B0051D689 /* RenderLayerBacking.h in Headers */, + 0F580CFD0F12DE9B0051D689 /* RenderLayerCompositor.h in Headers */, + 50D10D9A1545F5760096D288 /* RenderLayerFilterInfo.h in Headers */, + 3C244FEAA375AC633F88BE6F /* RenderLayerModelObject.h in Headers */, + 0BE030A20F3112FB003C1A46 /* RenderLineBoxList.h in Headers */, + ABB5419F0ACDDFE4002820EB /* RenderListBox.h in Headers */, + A8EA7A520A191A5200A8EF5F /* RenderListItem.h in Headers */, + A8EA7A500A191A5200A8EF5F /* RenderListMarker.h in Headers */, + 0F56028F0E4B76580065B038 /* RenderMarquee.h in Headers */, + 439046D812DA25E800AF80A2 /* RenderMathMLBlock.h in Headers */, + 439046DA12DA25E800AF80A2 /* RenderMathMLFenced.h in Headers */, + 439046DC12DA25E800AF80A2 /* RenderMathMLFraction.h in Headers */, + 439046DE12DA25E800AF80A2 /* RenderMathMLMath.h in Headers */, + 439046E012DA25E800AF80A2 /* RenderMathMLOperator.h in Headers */, + 439046E212DA25E800AF80A2 /* RenderMathMLRoot.h in Headers */, + 439046E412DA25E800AF80A2 /* RenderMathMLRow.h in Headers */, + 439046E612DA25E800AF80A2 /* RenderMathMLSquareRoot.h in Headers */, + 439046E812DA25E800AF80A2 /* RenderMathMLSubSup.h in Headers */, + 439046EA12DA25E800AF80A2 /* RenderMathMLUnderOver.h in Headers */, + E4C279590CF9741900E97B98 /* RenderMedia.h in Headers */, + DEBCCDD216646E8200A452E1 /* RenderMediaControlElements.h in Headers */, + 41FA303F1316C29C00C0BFC5 /* RenderMediaControls.h in Headers */, + ABDDFE7A0A5C6E7000A3E11D /* RenderMenuList.h in Headers */, + A454424F119B3687009BE912 /* RenderMeter.h in Headers */, + BCC52FD6151298D2003F914B /* RenderMultiColumnBlock.h in Headers */, + 1A3586E015264C450022A659 /* RenderMultiColumnFlowThread.h in Headers */, + BCE32B9C1517C0B200F542EC /* RenderMultiColumnSet.h in Headers */, + BC85F23D151915E000BC17BE /* RenderNamedFlowThread.h in Headers */, + BCEA4880097D93020094C9E4 /* RenderObject.h in Headers */, + BC2CC8DF0F32881000A9DF26 /* RenderObjectChildList.h in Headers */, + BCFA930810333193007B25D1 /* RenderOverflow.h in Headers */, + A871DED70A1530C700B12A68 /* RenderPart.h in Headers */, + A43BF59D1149292800C643CA /* RenderProgress.h in Headers */, + 5A574F25131DB93900471B88 /* RenderQuote.h in Headers */, + D70AD65813E1342B005B50B4 /* RenderRegion.h in Headers */, + BCE93F451517C567008CCF74 /* RenderRegionSet.h in Headers */, + A871DFE30A15376B00B12A68 /* RenderReplaced.h in Headers */, + BCA846D70DC67A350026C309 /* RenderReplica.h in Headers */, + 1479FAEE109AE37500DED655 /* RenderRuby.h in Headers */, + 1479FAF0109AE37500DED655 /* RenderRubyBase.h in Headers */, + 1479FAF2109AE37500DED655 /* RenderRubyRun.h in Headers */, + 1479FAF4109AE37500DED655 /* RenderRubyText.h in Headers */, + BC3BE9940E9C1C7C00835588 /* RenderScrollbar.h in Headers */, + BC3BE9950E9C1C7C00835588 /* RenderScrollbarPart.h in Headers */, + BC3BE9990E9C1E5D00835588 /* RenderScrollbarTheme.h in Headers */, + 458FE40A1589DF0B005609E6 /* RenderSearchField.h in Headers */, + 0F11A54F0F39233100C37884 /* RenderSelectionInfo.h in Headers */, + AB247A6D0AFD6383003FA5FD /* RenderSlider.h in Headers */, + 31955A88160D199200858025 /* RenderSnapshottedPlugIn.h in Headers */, + BC8C8FAE0DDCD31B00B592F4 /* RenderStyle.h in Headers */, + BC5EB6680E81CB7100B25965 /* RenderStyleConstants.h in Headers */, + 436708C112D9CA4B00044234 /* RenderSVGBlock.h in Headers */, + 436708C312D9CA4B00044234 /* RenderSVGContainer.h in Headers */, + 2B365C841525119E0091D27B /* RenderSVGEllipse.h in Headers */, + 43C092BC12D9E4EE00A989C3 /* RenderSVGForeignObject.h in Headers */, + 436708C512D9CA4B00044234 /* RenderSVGGradientStop.h in Headers */, + 436708C712D9CA4B00044234 /* RenderSVGHiddenContainer.h in Headers */, + 436708C912D9CA4B00044234 /* RenderSVGImage.h in Headers */, + 0854B0151255E4E600B9CDD0 /* RenderSVGInline.h in Headers */, + 0854B0171255E4E600B9CDD0 /* RenderSVGInlineText.h in Headers */, + 436708CB12D9CA4B00044234 /* RenderSVGModelObject.h in Headers */, + ADDF1AD71257CD9A0003A759 /* RenderSVGPath.h in Headers */, + A10BB5851484E3A700B2E87A /* RenderSVGRect.h in Headers */, + 436708CD12D9CA4B00044234 /* RenderSVGResource.h in Headers */, + 436708CF12D9CA4B00044234 /* RenderSVGResourceClipper.h in Headers */, + 436708D112D9CA4B00044234 /* RenderSVGResourceContainer.h in Headers */, + 436708D312D9CA4B00044234 /* RenderSVGResourceFilter.h in Headers */, + 436708D512D9CA4B00044234 /* RenderSVGResourceFilterPrimitive.h in Headers */, + 436708D712D9CA4B00044234 /* RenderSVGResourceGradient.h in Headers */, + 436708D912D9CA4B00044234 /* RenderSVGResourceLinearGradient.h in Headers */, + 436708DB12D9CA4B00044234 /* RenderSVGResourceMarker.h in Headers */, + 436708DD12D9CA4B00044234 /* RenderSVGResourceMasker.h in Headers */, + 436708DF12D9CA4B00044234 /* RenderSVGResourcePattern.h in Headers */, + 436708E112D9CA4B00044234 /* RenderSVGResourceRadialGradient.h in Headers */, + 436708E312D9CA4B00044234 /* RenderSVGResourceSolidColor.h in Headers */, + 436708E512D9CA4B00044234 /* RenderSVGRoot.h in Headers */, + A10BB58B1484E3B300B2E87A /* RenderSVGShape.h in Headers */, + 0854B0191255E4E600B9CDD0 /* RenderSVGText.h in Headers */, + 0854B01B1255E4E600B9CDD0 /* RenderSVGTextPath.h in Headers */, + 436708E912D9CA4B00044234 /* RenderSVGTransformableContainer.h in Headers */, + 0854B01D1255E4E600B9CDD0 /* RenderSVGTSpan.h in Headers */, + 436708EB12D9CA4B00044234 /* RenderSVGViewportContainer.h in Headers */, + A8DF4AEB0980C42C0052981B /* RenderTable.h in Headers */, + 6ED878C5147493F4004C3597 /* RenderTableCaption.h in Headers */, + A8DF4AE90980C42C0052981B /* RenderTableCell.h in Headers */, + A8DF4AF10980C42C0052981B /* RenderTableCol.h in Headers */, + A8DF4AEE0980C42C0052981B /* RenderTableRow.h in Headers */, + A8DF4AEF0980C42C0052981B /* RenderTableSection.h in Headers */, + BCEA488C097D93020094C9E4 /* RenderText.h in Headers */, + AB67D1A9097F3AE300F9392E /* RenderTextControl.h in Headers */, + 083DAEA70F01A7FB00342754 /* RenderTextControlMultiLine.h in Headers */, + 083DAEA90F01A7FB00342754 /* RenderTextControlSingleLine.h in Headers */, + BCEA488E097D93020094C9E4 /* RenderTextFragment.h in Headers */, + 86FF886215DE3D0700BD6B28 /* RenderTextTrackCue.h in Headers */, + BCEA488A097D93020094C9E4 /* RenderTheme.h in Headers */, + BCEA4887097D93020094C9E4 /* RenderThemeMac.h in Headers */, + 93F1998C08245E59001E9ABC /* RenderTreeAsText.h in Headers */, + E44614520CD68A3500FADA75 /* RenderVideo.h in Headers */, + BCEA4868097D93020094C9E4 /* RenderView.h in Headers */, + A871DFE40A15376B00B12A68 /* RenderWidget.h in Headers */, + 93799EF90BF2743600D0F230 /* RenderWordBreak.h in Headers */, + A89CCC530F44E98100B5DA10 /* ReplaceNodeWithSpanCommand.h in Headers */, + 93309E0A099E64920056E581 /* ReplaceSelectionCommand.h in Headers */, + 4998AEC613F9D0EA0090B1AA /* RequestAnimationFrameCallback.h in Headers */, + F55B3DD01251F12D003EF269 /* ResetInputType.h in Headers */, + 514BC843161CF05C004D52F4 /* ResourceBuffer.h in Headers */, + 7EE6846A12D26E3800E79415 /* ResourceError.h in Headers */, + 934F713C0D5A6F1900018D69 /* ResourceErrorBase.h in Headers */, + 514C76790CE923A1007EF3CD /* ResourceHandle.h in Headers */, + 514C767A0CE923A1007EF3CD /* ResourceHandleClient.h in Headers */, + 514C767B0CE923A1007EF3CD /* ResourceHandleInternal.h in Headers */, + 51E4143416A6596300C633C7 /* ResourceHandleTypes.h in Headers */, + 656D373F0ADBA5DE00A4554D /* ResourceLoader.h in Headers */, + D0A3A7311405A39800FB8ED3 /* ResourceLoaderOptions.h in Headers */, + 51AF503616F100F60095B2E8 /* ResourceLoaderTypes.h in Headers */, + 973E325710883B7C005BC493 /* ResourceLoadNotifier.h in Headers */, + E4295FA412B0614E00D1ACE0 /* ResourceLoadPriority.h in Headers */, + D0CE58F9125E4CC200F3F199 /* ResourceLoadScheduler.h in Headers */, + 8A81BF8511DCFD9000DA2B98 /* ResourceLoadTiming.h in Headers */, + 7EE6846D12D26E3800E79415 /* ResourceRequest.h in Headers */, + 514C767D0CE923A1007EF3CD /* ResourceRequestBase.h in Headers */, + 7EE6846F12D26E3800E79415 /* ResourceRequestCFNet.h in Headers */, + 7EE6847012D26E3800E79415 /* ResourceResponse.h in Headers */, + 514C767F0CE923A1007EF3CD /* ResourceResponseBase.h in Headers */, + FD3160A512B026F700C1A359 /* Reverb.h in Headers */, + FD3160A712B026F700C1A359 /* ReverbAccumulationBuffer.h in Headers */, + FD3160A912B026F700C1A359 /* ReverbConvolver.h in Headers */, + FD3160AB12B026F700C1A359 /* ReverbConvolverStage.h in Headers */, + FD3160AD12B026F700C1A359 /* ReverbInputBuffer.h in Headers */, + BC74DA371013F3F7007987AD /* RGBColor.h in Headers */, + A8CFF5E10A155A05000A4234 /* RootInlineBox.h in Headers */, + 49E911C90EF86D47009D0CAF /* RotateTransformOperation.h in Headers */, + A73F95FF12C97BFE0031AAF9 /* RoundedRect.h in Headers */, + A79BADA2161E7F3F00C2E652 /* RuleFeature.h in Headers */, + A79BADA4161E7F3F00C2E652 /* RuleSet.h in Headers */, + BC0B358814C4F9830055E22A /* RunLoop.h in Headers */, + 1A569D1F0D7E2B82007C3983 /* runtime_array.h in Headers */, + 1A569D210D7E2B82007C3983 /* runtime_method.h in Headers */, + 1A569D230D7E2B82007C3983 /* runtime_object.h in Headers */, + 1A569D250D7E2B82007C3983 /* runtime_root.h in Headers */, + 293EAE1F1356B2FE0067ACF9 /* RuntimeApplicationChecks.h in Headers */, + 8C6EA61A11EF7E0400FD8EE3 /* RuntimeEnabledFeatures.h in Headers */, + 49E911CB0EF86D47009D0CAF /* ScaleTransformOperation.h in Headers */, + 5DFE8F570D16477C0076E937 /* ScheduledAction.h in Headers */, + 5162C7F511F77EFB00612EFE /* SchemeRegistry.h in Headers */, + 9BD0BF9312A42BF50072FD43 /* ScopedEventQueue.h in Headers */, + BCEC01BE0C274DAC009F4EC9 /* Screen.h in Headers */, + A84D82C111D3474800972990 /* ScriptableDocumentParser.h in Headers */, + F39BE95C12673BF400E0A674 /* ScriptArguments.h in Headers */, + 7AFD4A8B1131C2760035B883 /* ScriptBreakpoint.h in Headers */, + 41F1D21F0EF35C2A00DA8753 /* ScriptCachedFrameData.h in Headers */, + 416E75CB0EDF90C700360E1D /* ScriptCallFrame.h in Headers */, + 416E75BE0EDF8FD700360E1D /* ScriptCallStack.h in Headers */, + F392249D126F11AE00A926D9 /* ScriptCallStackFactory.h in Headers */, + 93B70D7009EB0C7C009D8468 /* ScriptController.h in Headers */, + CE02F0C411E83ADD00C6684A /* ScriptControllerBase.h in Headers */, + 7AFD4FF4113277B60035B883 /* ScriptDebugListener.h in Headers */, + 9F6FC1971122E82A00E80196 /* ScriptDebugServer.h in Headers */, + 4998AED213FB224D0090B1AA /* ScriptedAnimationController.h in Headers */, + 08A484780E5272C500C3FE76 /* ScriptElement.h in Headers */, + 411046410FA222A600BA436A /* ScriptEventListener.h in Headers */, + E11C9D9B0EB3681200E409DB /* ScriptExecutionContext.h in Headers */, + 41002CCD0F66EDEF009E660D /* ScriptFunctionCall.h in Headers */, + 4FD8D0F3119C718B002FA825 /* ScriptGCEvent.h in Headers */, + 9F3B947E12241758005304E7 /* ScriptHeapSnapshot.h in Headers */, + 41F066E40F64BCF600A07EAC /* ScriptObject.h in Headers */, + FD31603612B0267600C1A359 /* ScriptProcessorNode.h in Headers */, + 9F72304F11184B4100AD0126 /* ScriptProfile.h in Headers */, + 9FA37EE41172FC8000C4CD55 /* ScriptProfileNode.h in Headers */, + 9F72305111184B4100AD0126 /* ScriptProfiler.h in Headers */, + 8A413AE01207BBA50082016E /* ScriptRunner.h in Headers */, + 934CC10A0EDB223900A658F2 /* ScriptSourceCode.h in Headers */, + 41C760B10EDE03D300C1655F /* ScriptState.h in Headers */, + 934CC0E20ED39D6F00A658F2 /* ScriptValue.h in Headers */, + 228C284510D82500009D0D0E /* ScriptWrappable.h in Headers */, + 1400D7A817136EA70077CE05 /* ScriptWrappableInlines.h in Headers */, + BC8AE34F12EA096A00EB3AE6 /* ScrollableArea.h in Headers */, + CA3BF67E10D99BAE00E6CE53 /* ScrollAnimator.h in Headers */, + BCAE1FA712939DB7004CB026 /* ScrollAnimatorMac.h in Headers */, + 93F199B808245E59001E9ABC /* Scrollbar.h in Headers */, + BC8B854B0E7C7F5600AB6984 /* ScrollbarTheme.h in Headers */, + C6B31B2E14F841FB0089F23F /* ScrollbarThemeClient.h in Headers */, + BC14028B0E83680800319717 /* ScrollbarThemeComposite.h in Headers */, + BC8B853E0E7C7F1100AB6984 /* ScrollbarThemeMac.h in Headers */, + 0FE71406142170B800DB33BA /* ScrollbarThemeMock.h in Headers */, + 5D925B680F64D4DD00B847F0 /* ScrollBehavior.h in Headers */, + 1AA84F05143BA7BD0051D153 /* ScrollElasticityController.h in Headers */, + 0F605AED15F94848004DF0C0 /* ScrollingConstraints.h in Headers */, + 1AF62EE814DA22A70041556C /* ScrollingCoordinator.h in Headers */, + 9391A991162746CB00297330 /* ScrollingCoordinatorMac.h in Headers */, + 93C38BFF164473C700091EB2 /* ScrollingStateFixedNode.h in Headers */, + 931CBD0D161A44E900E4C874 /* ScrollingStateNode.h in Headers */, + 931CBD0F161A44E900E4C874 /* ScrollingStateScrollingNode.h in Headers */, + 0FB8890F167D30160010CDA5 /* ScrollingStateStickyNode.h in Headers */, + 931CBD11161A44E900E4C874 /* ScrollingStateTree.h in Headers */, + 1AF62F2614DAFEA10041556C /* ScrollingThread.h in Headers */, + 1AAADDA414DB409F00AF64B3 /* ScrollingTree.h in Headers */, + 93C38C03164473DD00091EB2 /* ScrollingTreeFixedNode.h in Headers */, + 1AAADDE414DC8C8F00AF64B3 /* ScrollingTreeNode.h in Headers */, + 9391A99D1629D70000297330 /* ScrollingTreeScrollingNode.h in Headers */, + 93C4A4151629DF5A00C3EB6E /* ScrollingTreeScrollingNodeMac.h in Headers */, + 0FB8890A167D2FA10010CDA5 /* ScrollingTreeStickyNode.h in Headers */, + 93C09C860B0657AA005ABD4D /* ScrollTypes.h in Headers */, + BC6D6E2609AF943500F59759 /* ScrollView.h in Headers */, + F55B3DD21251F12D003EF269 /* SearchInputType.h in Headers */, + AB7170890B3118080017123E /* SearchPopupMenu.h in Headers */, + 976F36EB14686225005E93B4 /* SecurityContext.h in Headers */, + BCD0E0FB0E972C3500265DEA /* SecurityOrigin.h in Headers */, + BCD0E0FC0E972C3500265DEA /* SecurityOriginHash.h in Headers */, + 974D2DA5146A535D00D51F8B /* SecurityPolicy.h in Headers */, + 2D5BC42716F882EE007048D0 /* SecurityPolicyViolationEvent.h in Headers */, + 371F4FFC0D25E7F300ECE0D5 /* SegmentedFontData.h in Headers */, + B2C3DA2F0D006C1D00EF6F26 /* SegmentedString.h in Headers */, + E44B4BB4141650D7002B1D8B /* SelectorChecker.h in Headers */, + 41B8CD4616D04591000E8CC0 /* SelectorCheckerFastPath.h in Headers */, + 415071581685067300C3C7B3 /* SelectorFilter.h in Headers */, + E45322AC140CE267005A0F92 /* SelectorQuery.h in Headers */, + A75E497610752ACB00C9B896 /* SerializedScriptValue.h in Headers */, + 93309E10099E64920056E581 /* SetNodeAttributeCommand.h in Headers */, + B8DBDB4C130B0F8A00F5CDB1 /* SetSelectionCommand.h in Headers */, + 93F1994F08245E59001E9ABC /* Settings.h in Headers */, + 53EF766B16530A61004CBE49 /* SettingsMacros.h in Headers */, + 498770E91242C535002226BA /* Shader.h in Headers */, + 0F3DD45012F5EA1B000D9190 /* ShadowBlur.h in Headers */, + BC5EB8C40E82031B00B25965 /* ShadowData.h in Headers */, + A6D169641346B4C1000EB770 /* ShadowRoot.h in Headers */, + A80E6CE80A1989CA007FB8C5 /* ShadowValue.h in Headers */, + FD45A94F175D3F3E00C21EC8 /* Shape.h in Headers */, + FD45A950175D3F3E00C21EC8 /* ShapeInfo.h in Headers */, + FD45A951175D3F3E00C21EC8 /* ShapeInsideInfo.h in Headers */, + FD45A95B175D41EE00C21EC8 /* ShapeInterval.h in Headers */, + FD45A952175D3F3E00C21EC8 /* ShapeOutsideInfo.h in Headers */, + FD1AF1501656F15100C6D4F7 /* ShapeValue.h in Headers */, + 1A4A954E0B4EDCCB002D8C3C /* SharedBuffer.h in Headers */, + 97B1F02F13B025D200F5103F /* SharedBufferChunkReader.h in Headers */, + 93309EA3099EB78C0056E581 /* SharedTimer.h in Headers */, + 41E1B1D40FF5986900576B3B /* SharedWorker.h in Headers */, + 41D168E810226E89009BC827 /* SharedWorkerGlobalScope.h in Headers */, + 41D168EA10226E89009BC827 /* SharedWorkerRepository.h in Headers */, + E1B7839C163740A70007B692 /* SharedWorkerStrategy.h in Headers */, + 41D168EE10226E89009BC827 /* SharedWorkerThread.h in Headers */, + B2C3DA650D006CD600EF6F26 /* SimpleFontData.h in Headers */, + C5A1EA7D152BCF08004D00B6 /* SimplifyMarkupCommand.h in Headers */, + 31741AAD16636609008A5B7E /* SimulatedClickOptions.h in Headers */, + FD00D7A514A3F61900734011 /* SincResampler.h in Headers */, + 51327D6011A33A2B004F9D65 /* SinkDocument.h in Headers */, + 49E911CD0EF86D47009D0CAF /* SkewTransformOperation.h in Headers */, + 4150F9F112B6E0E70008C860 /* SliderThumbElement.h in Headers */, + 4B6FA6F40C39E48C00087011 /* SmartReplace.h in Headers */, + E4AFD00C0DAF335400F5F55C /* SMILTime.h in Headers */, + E4AFD00E0DAF335500F5F55C /* SMILTimeContainer.h in Headers */, + 51ABAE1B103C18FF008C5260 /* SocketStreamError.h in Headers */, + 510D4A34103165EE0049EA54 /* SocketStreamErrorBase.h in Headers */, + 51ABAE1E103C1913008C5260 /* SocketStreamHandle.h in Headers */, + 510D4A37103165EE0049EA54 /* SocketStreamHandleBase.h in Headers */, + 510D4A38103165EE0049EA54 /* SocketStreamHandleClient.h in Headers */, + 0A4844990CA44CB200B7BD48 /* SoftLinking.h in Headers */, + 4B3043C70AE0370300A82647 /* Sound.h in Headers */, + 84A81F3E0FC7DFF000955300 /* SourceAlpha.h in Headers */, + 84A81F420FC7E02700955300 /* SourceGraphic.h in Headers */, + D01A27AE10C9BFD800026A42 /* SpaceSplitString.h in Headers */, + 626CDE0F1140424C001E5A68 /* SpatialNavigation.h in Headers */, + 7578F90C11DDF26900D933C5 /* SpeechInput.h in Headers */, + 7578F90D11DDF26900D933C5 /* SpeechInputClient.h in Headers */, + 75415AFD12958D5E003AD669 /* SpeechInputEvent.h in Headers */, + 7578F92011E4E32800D933C5 /* SpeechInputListener.h in Headers */, + 75415B0012958D5E003AD669 /* SpeechInputResultList.h in Headers */, + AA2A5AD416A4861100975A25 /* SpeechSynthesis.h in Headers */, + AA2A5AD216A4860A00975A25 /* SpeechSynthesisEvent.h in Headers */, + AA2A5AD016A4860400975A25 /* SpeechSynthesisUtterance.h in Headers */, + AA2A5ACE16A485FD00975A25 /* SpeechSynthesisVoice.h in Headers */, + A78FE13C12366B1000ACE8D0 /* SpellChecker.h in Headers */, + B8DBDB4E130B0F8A00F5CDB1 /* SpellingCorrectionCommand.h in Headers */, + 4512502315DCE37D002F84E2 /* SpinButtonElement.h in Headers */, + 93309E12099E64920056E581 /* SplitElementCommand.h in Headers */, + 93309E14099E64920056E581 /* SplitTextNodeCommand.h in Headers */, + 93309E16099E64920056E581 /* SplitTextNodeContainingElementCommand.h in Headers */, + 84730D931248F0B300D3A9C9 /* SpotLightSource.h in Headers */, + 97BC6A3B1505F081001B74AC /* SQLCallbackWrapper.h in Headers */, + 97BC6A3C1505F081001B74AC /* SQLError.h in Headers */, + 97BC6A3F1505F081001B74AC /* SQLException.h in Headers */, + 1A22464A0CC98DDB00C05240 /* SQLiteDatabase.h in Headers */, + B5A684220FFABE9800D24689 /* SQLiteFileSystem.h in Headers */, + 1A22464C0CC98DDB00C05240 /* SQLiteStatement.h in Headers */, + 1A22464E0CC98DDB00C05240 /* SQLiteTransaction.h in Headers */, + 97BC6A421505F081001B74AC /* SQLResultSet.h in Headers */, + 97BC6A451505F081001B74AC /* SQLResultSetRowList.h in Headers */, + 97BC6A481505F081001B74AC /* SQLStatement.h in Headers */, + FE8A674816CDD19E00930BF8 /* SQLStatementBackend.h in Headers */, + 97BC6A491505F081001B74AC /* SQLStatementCallback.h in Headers */, + 97BC6A4B1505F081001B74AC /* SQLStatementErrorCallback.h in Headers */, + 97BC6A4E1505F081001B74AC /* SQLStatementSync.h in Headers */, + 97BC6A501505F081001B74AC /* SQLTransaction.h in Headers */, + FEE1811416C319E800084849 /* SQLTransactionBackend.h in Headers */, + FEAD7D8816C339EE00D4670B /* SQLTransactionBackendSync.h in Headers */, + 97BC6A521505F081001B74AC /* SQLTransactionCallback.h in Headers */, + 97BC6A551505F081001B74AC /* SQLTransactionClient.h in Headers */, + 97BC6A571505F081001B74AC /* SQLTransactionCoordinator.h in Headers */, + 97BC6A581505F081001B74AC /* SQLTransactionErrorCallback.h in Headers */, + FE36FD1816C7826500F887C1 /* SQLTransactionState.h in Headers */, + FE36FD1716C7826500F887C1 /* SQLTransactionStateMachine.h in Headers */, + 97BC6A5B1505F081001B74AC /* SQLTransactionSync.h in Headers */, + 97BC6A5D1505F081001B74AC /* SQLTransactionSyncCallback.h in Headers */, + 1A2E6E5A0CC55213004A2062 /* SQLValue.h in Headers */, + 93F1996308245E59001E9ABC /* SSLKeyGenerator.h in Headers */, + BC7FA62D0D1F0EFF00DB22A9 /* StaticNodeList.h in Headers */, + A5AFB350115151A700B045CB /* StepRange.h in Headers */, + 1AC2D845171734A100652FC0 /* Storage.h in Headers */, + 51BE37E00DAEE00E001085FC /* StorageArea.h in Headers */, + C5160EEB1004543A00A7CEE2 /* StorageAreaImpl.h in Headers */, + C5102ECF0FD9EF8C00FAFF04 /* StorageAreaSync.h in Headers */, + 51E0BABB0DA5547100A9E417 /* StorageEvent.h in Headers */, + C5EBDD84105EDDEC0056816F /* StorageEventDispatcher.h in Headers */, + 51E0BB380DA5ACB600A9E417 /* StorageMap.h in Headers */, + C50D0E830FF4272900AC2644 /* StorageNamespace.h in Headers */, + C55E38BF10040D5D00A56BDB /* StorageNamespaceImpl.h in Headers */, + 1AB09DB516AF5F6C008538E7 /* StorageStrategy.h in Headers */, + C5102D940FD9AA2D00FAFF04 /* StorageSyncManager.h in Headers */, + 511F231A0DC160DA004F0032 /* StorageThread.h in Headers */, + 3AB02D2A12D4F91600FBB694 /* StorageTracker.h in Headers */, + 3AC3680012EF7A09006A3D6F /* StorageTrackerClient.h in Headers */, + 81AC6C36131C57D30009A7E0 /* StringCallback.h in Headers */, + B23540F30D00782E002382FA /* StringTruncator.h in Headers */, + 9B6C41531344949000085B62 /* StringWithDirection.h in Headers */, + 849F77760EFEC6200090849D /* StrokeStyleApplier.h in Headers */, + BC5EB6A30E81DC4F00B25965 /* StyleBackgroundData.h in Headers */, + BC5EB67B0E81D3BE00B25965 /* StyleBoxData.h in Headers */, + BCEF444D0E674628001C1287 /* StyleCachedImage.h in Headers */, + 9393E605151A9A1800066F06 /* StyleCachedImageSet.h in Headers */, + 5038BE301472AD230095E0D1 /* StyleCachedShader.h in Headers */, + 503D0CAE14B5B0BA00F32F57 /* StyleCustomFilterProgram.h in Headers */, + 50E18CDA16F9285800C65486 /* StyleCustomFilterProgramCache.h in Headers */, + BC5EB67F0E81D4A700B25965 /* StyleDashboardRegion.h in Headers */, + A8C4A7FD09D563270003AC8D /* StyledElement.h in Headers */, + BC5EB8B90E8201BD00B25965 /* StyleDeprecatedFlexibleBoxData.h in Headers */, + AA4C3A770B2B1679002334A2 /* StyleElement.h in Headers */, + 319AE064142D6B24006563A1 /* StyleFilterData.h in Headers */, + 5317612313C516690026E454 /* StyleFlexibleBoxData.h in Headers */, + BCEF444A0E6745E0001C1287 /* StyleGeneratedImage.h in Headers */, + A10DC76B14747BAB005E2471 /* StyleGridData.h in Headers */, + A110DB9B14F5DF7700A03B93 /* StyleGridItemData.h in Headers */, + BCEF43CF0E673DA1001C1287 /* StyleImage.h in Headers */, + BC2273040E82F1E600E7F975 /* StyleInheritedData.h in Headers */, + E47127CB163438AE00ED6F5A /* StyleInvalidationAnalysis.h in Headers */, + BC5EB72A0E81DE8100B25965 /* StyleMarqueeData.h in Headers */, + 0FF50272102BA96A0066F39A /* StyleMedia.h in Headers */, + BC5EB74E0E81E06700B25965 /* StyleMultiColData.h in Headers */, + A80E6DFC0A199067007FB8C5 /* StylePropertySet.h in Headers */, + E1B25107152A0BB00069B779 /* StylePropertyShorthand.h in Headers */, + BC2272E40E82EE9B00E7F975 /* StyleRareInheritedData.h in Headers */, + BC2272BD0E82EAAE00E7F975 /* StyleRareNonInheritedData.h in Headers */, + BC2272870E82E70700E7F975 /* StyleReflection.h in Headers */, + E139866415478474001E3F65 /* StyleResolver.h in Headers */, + E4BBED4D14FCDBA1003F0B98 /* StyleRule.h in Headers */, + E4946EAF156E64DD00D3297F /* StyleRuleImport.h in Headers */, + A7B761A1161EE526002083D3 /* StyleScopeResolver.h in Headers */, + 3138A9E51474434600B0ED12 /* StyleShader.h in Headers */, + A8EA800C0A19516E00A8EF5F /* StyleSheet.h in Headers */, + E4F9EEF3156DA00700D23E7E /* StyleSheetContents.h in Headers */, + A8EA800A0A19516E00A8EF5F /* StyleSheetList.h in Headers */, + BC5EB5E50E81BF6D00B25965 /* StyleSurroundData.h in Headers */, + BC5EB8100E81F2CE00B25965 /* StyleTransformData.h in Headers */, + BC5EB69A0E81DA6300B25966 /* StyleVariableData.h in Headers */, + BC5EB69A0E81DA6300B25965 /* StyleVisualData.h in Headers */, + D000ED2811C1B9CD00C47726 /* SubframeLoader.h in Headers */, + 1FC40FBA1655CCB90040F29E /* SubimageCacheWithTimer.h in Headers */, + F55B3DD41251F12D003EF269 /* SubmitInputType.h in Headers */, + 656D37480ADBA5DE00A4554D /* SubresourceLoader.h in Headers */, + 659A7D130B6DB4D9001155B3 /* SubstituteData.h in Headers */, + 1A8F6B020DB53006001DB794 /* SubstituteResource.h in Headers */, + 93B2D8160F9920D2006AE6B2 /* SuddenTermination.h in Headers */, + 97C078501165D5BE003A32EF /* SuffixTree.h in Headers */, + 97627B9814FB5424002CDCA1 /* Supplementable.h in Headers */, + 087558C613B4A57D00F49307 /* SurrogatePairAwareTextIterator.h in Headers */, + 62C1217D11AB9E77003C462C /* SuspendableTimer.h in Headers */, + B22279740D00BF220071B782 /* SVGAElement.h in Headers */, + 24D912B113CA9A1F00D21915 /* SVGAltGlyphDefElement.h in Headers */, + 65653F2E0D9727D200CA9723 /* SVGAltGlyphElement.h in Headers */, + 24D912B813CA9A6900D21915 /* SVGAltGlyphItemElement.h in Headers */, + B22279770D00BF220071B782 /* SVGAngle.h in Headers */, + B222797A0D00BF220071B782 /* SVGAnimateColorElement.h in Headers */, + 087B84961272CEC800A14417 /* SVGAnimatedAngle.h in Headers */, + 085797091278394C00A8EC5F /* SVGAnimatedBoolean.h in Headers */, + 43A625F813B3304000AC94B8 /* SVGAnimatedColor.h in Headers */, + 08D46CE3127AD5FC0089694B /* SVGAnimatedEnumeration.h in Headers */, + 71FB967B1383D64600AC8A4C /* SVGAnimatedEnumerationPropertyTearOff.h in Headers */, + 0823D159127AD6AC000EBC95 /* SVGAnimatedInteger.h in Headers */, + 71E623D1151F72A60036E2F4 /* SVGAnimatedIntegerOptionalInteger.h in Headers */, + 089021A9126EF5DE0092D5EA /* SVGAnimatedLength.h in Headers */, + 089021AD126EF5E90092D5EA /* SVGAnimatedLengthList.h in Headers */, + 088A0E04126EF1DB00978F7A /* SVGAnimatedListPropertyTearOff.h in Headers */, + 08B35B13127B6A7C005314DD /* SVGAnimatedNumber.h in Headers */, + 08B35B17127B6A88005314DD /* SVGAnimatedNumberList.h in Headers */, + 431A2F9C13B6F2B0007791E4 /* SVGAnimatedNumberOptionalNumber.h in Headers */, + 0863951613B5FE5700BB344D /* SVGAnimatedPath.h in Headers */, + 089A8E07128D8B3D00E7A534 /* SVGAnimatedPathSegListPropertyTearOff.h in Headers */, + 43B9336913B261B1004584BF /* SVGAnimatedPointList.h in Headers */, + 08FE0BC5127E2AC1000C4FB5 /* SVGAnimatedPreserveAspectRatio.h in Headers */, + 088A0E05126EF1DB00978F7A /* SVGAnimatedProperty.h in Headers */, + 088A0E06126EF1DB00978F7A /* SVGAnimatedPropertyDescription.h in Headers */, + 088A0E07126EF1DB00978F7A /* SVGAnimatedPropertyMacros.h in Headers */, + 088A0E08126EF1DB00978F7A /* SVGAnimatedPropertyTearOff.h in Headers */, + 08C859C01274575400A5728D /* SVGAnimatedRect.h in Headers */, + 08525E631278C00100A84778 /* SVGAnimatedStaticPropertyTearOff.h in Headers */, + 084DB59B128008CC002A6D64 /* SVGAnimatedString.h in Headers */, + 08250939128BD4D800E2ED8E /* SVGAnimatedTransformList.h in Headers */, + 085A15931289A8DD002710E3 /* SVGAnimatedTransformListPropertyTearOff.h in Headers */, + 439D334313A6911C00C20F4F /* SVGAnimatedType.h in Headers */, + 439D334413A6911C00C20F4F /* SVGAnimatedTypeAnimator.h in Headers */, + B22279900D00BF220071B782 /* SVGAnimateElement.h in Headers */, + B22279930D00BF220071B782 /* SVGAnimateMotionElement.h in Headers */, + B22279950D00BF220071B782 /* SVGAnimateTransformElement.h in Headers */, + B22279980D00BF220071B782 /* SVGAnimationElement.h in Headers */, + 439D334513A6911C00C20F4F /* SVGAnimatorFactory.h in Headers */, + 08FB3F8413BC754C0099FC18 /* SVGAttributeToPropertyMap.h in Headers */, + B222799C0D00BF220071B782 /* SVGCircleElement.h in Headers */, + B222799F0D00BF220071B782 /* SVGClipPathElement.h in Headers */, + B22279A20D00BF220071B782 /* SVGColor.h in Headers */, + B22279A50D00BF220071B782 /* SVGComponentTransferFunctionElement.h in Headers */, + B22279A80D00BF220071B782 /* SVGCursorElement.h in Headers */, + B22279AE0D00BF220071B782 /* SVGDefsElement.h in Headers */, + B22279B10D00BF220071B782 /* SVGDescElement.h in Headers */, + B22279B40D00BF220071B782 /* SVGDocument.h in Headers */, + B28C6A280D00C44800334AA4 /* SVGDocumentExtensions.h in Headers */, + B22279B70D00BF220071B782 /* SVGElement.h in Headers */, + 656581FE09D1508D000E61D7 /* SVGElementFactory.h in Headers */, + B22279BA0D00BF220071B782 /* SVGElementInstance.h in Headers */, + B22279BD0D00BF220071B782 /* SVGElementInstanceList.h in Headers */, + 081AA8DA1111237E002AB06E /* SVGElementRareData.h in Headers */, + B22279C00D00BF220071B782 /* SVGEllipseElement.h in Headers */, + B22279C20D00BF220071B782 /* SVGException.h in Headers */, + B22279C50D00BF220071B782 /* SVGExternalResourcesRequired.h in Headers */, + B22279C80D00BF220071B782 /* SVGFEBlendElement.h in Headers */, + B22279CB0D00BF220071B782 /* SVGFEColorMatrixElement.h in Headers */, + B22279CE0D00BF220071B782 /* SVGFEComponentTransferElement.h in Headers */, + B22279D10D00BF220071B782 /* SVGFECompositeElement.h in Headers */, + 1921327511C0E6BB00456238 /* SVGFEConvolveMatrixElement.h in Headers */, + B22279D40D00BF220071B782 /* SVGFEDiffuseLightingElement.h in Headers */, + B22279D70D00BF220071B782 /* SVGFEDisplacementMapElement.h in Headers */, + B22279DA0D00BF220071B782 /* SVGFEDistantLightElement.h in Headers */, + 4358E8861360A33B00E4748C /* SVGFEDropShadowElement.h in Headers */, + B22279DD0D00BF220071B782 /* SVGFEFloodElement.h in Headers */, + B22279E00D00BF220071B782 /* SVGFEFuncAElement.h in Headers */, + B22279E30D00BF220071B782 /* SVGFEFuncBElement.h in Headers */, + B22279E60D00BF220071B782 /* SVGFEFuncGElement.h in Headers */, + B22279E90D00BF220071B782 /* SVGFEFuncRElement.h in Headers */, + B22279EC0D00BF220071B782 /* SVGFEGaussianBlurElement.h in Headers */, + B25599850D00D8BA00BB825C /* SVGFEImage.h in Headers */, + B22279EF0D00BF220071B782 /* SVGFEImageElement.h in Headers */, + B22279F20D00BF220071B782 /* SVGFELightElement.h in Headers */, + B22279F40D00BF220071B782 /* SVGFEMergeElement.h in Headers */, + B22279F70D00BF220071B782 /* SVGFEMergeNodeElement.h in Headers */, + 84224194107E78A700766A87 /* SVGFEMorphologyElement.h in Headers */, + B22279FA0D00BF220071B782 /* SVGFEOffsetElement.h in Headers */, + B22279FD0D00BF220071B782 /* SVGFEPointLightElement.h in Headers */, + B2227A000D00BF220071B782 /* SVGFESpecularLightingElement.h in Headers */, + B2227A030D00BF220071B782 /* SVGFESpotLightElement.h in Headers */, + B2227A060D00BF220071B782 /* SVGFETileElement.h in Headers */, + B2227A090D00BF220071B782 /* SVGFETurbulenceElement.h in Headers */, + 845E72FC0FD2623900A87D79 /* SVGFilter.h in Headers */, + 081EBF3B0FD34F4100DA7559 /* SVGFilterBuilder.h in Headers */, + B2227A0C0D00BF220071B782 /* SVGFilterElement.h in Headers */, + B2227A0F0D00BF220071B782 /* SVGFilterPrimitiveStandardAttributes.h in Headers */, + B2227A120D00BF220071B782 /* SVGFitToViewBox.h in Headers */, + B237C8A80D344D110013F707 /* SVGFontData.h in Headers */, + B2A1F2AB0CEF0ABF00442F6A /* SVGFontElement.h in Headers */, + B2227A150D00BF220071B782 /* SVGFontFaceElement.h in Headers */, + B2227A180D00BF220071B782 /* SVGFontFaceFormatElement.h in Headers */, + B2227A1B0D00BF220071B782 /* SVGFontFaceNameElement.h in Headers */, + B2227A1E0D00BF220071B782 /* SVGFontFaceSrcElement.h in Headers */, + B2227A210D00BF220071B782 /* SVGFontFaceUriElement.h in Headers */, + B2227A240D00BF220071B782 /* SVGForeignObjectElement.h in Headers */, + B2227A270D00BF220071B782 /* SVGGElement.h in Headers */, + 087E0AF713606D0B00FA4BA8 /* SVGGlyph.h in Headers */, + B2A1F2AE0CEF0ABF00442F6A /* SVGGlyphElement.h in Headers */, + 3744570F0DB05FA500AE0992 /* SVGGlyphMap.h in Headers */, + 24D912BE13CA9A9700D21915 /* SVGGlyphRefElement.h in Headers */, + B2227A2A0D00BF220071B782 /* SVGGradientElement.h in Headers */, + B2227AB60D00BF220071B782 /* SVGGraphicsElement.h in Headers */, + 650FBF2B0D9AF047008FC292 /* SVGHKernElement.h in Headers */, + B25599A40D00D8BA00BB825C /* SVGImage.h in Headers */, + 08F859D51463F9CD0067D933 /* SVGImageCache.h in Headers */, + AAC08CEF15F933D600F1E188 /* SVGImageChromeClient.h in Headers */, + B2227A2D0D00BF220071B782 /* SVGImageElement.h in Headers */, + 08F859D51463F9CD0067D934 /* SVGImageForContainer.h in Headers */, + B28C6A2A0D00C44800334AA4 /* SVGImageLoader.h in Headers */, + 0854B01F1255E4E600B9CDD0 /* SVGInlineFlowBox.h in Headers */, + 0854B0211255E4E600B9CDD0 /* SVGInlineTextBox.h in Headers */, + B2227A300D00BF220071B782 /* SVGLangSpace.h in Headers */, + B2227A330D00BF220071B782 /* SVGLength.h in Headers */, + 7134496E146941B300720312 /* SVGLengthContext.h in Headers */, + B2227A360D00BF220071B782 /* SVGLengthList.h in Headers */, + B2227A390D00BF220071B782 /* SVGLinearGradientElement.h in Headers */, + B2227A3C0D00BF220071B782 /* SVGLineElement.h in Headers */, + 0810764412828556007C63BA /* SVGListProperty.h in Headers */, + 088A0E09126EF1DB00978F7A /* SVGListPropertyTearOff.h in Headers */, + B2227A410D00BF220071B782 /* SVGLocatable.h in Headers */, + 436708EE12D9CA4B00044234 /* SVGMarkerData.h in Headers */, + B2227A440D00BF220071B782 /* SVGMarkerElement.h in Headers */, + B2227A470D00BF220071B782 /* SVGMaskElement.h in Headers */, + 0806E57A12893045007CED32 /* SVGMatrix.h in Headers */, + B2227A4B0D00BF220071B782 /* SVGMetadataElement.h in Headers */, + B2A1F2B10CEF0ABF00442F6A /* SVGMissingGlyphElement.h in Headers */, + B2227A4E0D00BF220071B782 /* SVGMPathElement.h in Headers */, + B2227A510D00BF220071B782 /* SVGNumberList.h in Headers */, + B2227A540D00BF220071B782 /* SVGPaint.h in Headers */, + B2227A570D00BF220071B782 /* SVGParserUtilities.h in Headers */, + 2D3A0E3613A7D76100E85AF0 /* SVGParsingError.h in Headers */, + 84C6784D1214814700A92902 /* SVGPathBlender.h in Headers */, + 8476C9EB11DF6A2900555B02 /* SVGPathBuilder.h in Headers */, + 8419D2A7120D92D000141F8F /* SVGPathByteStream.h in Headers */, + 8419D2A9120D92D000141F8F /* SVGPathByteStreamBuilder.h in Headers */, + 8419D2AD120D92FC00141F8F /* SVGPathByteStreamSource.h in Headers */, + 8476C9EC11DF6A2900555B02 /* SVGPathConsumer.h in Headers */, + 71537A01146BD9D7008BD615 /* SVGPathData.h in Headers */, + B2227A590D00BF220071B782 /* SVGPathElement.h in Headers */, + 8476C9F011DF6A5800555B02 /* SVGPathParser.h in Headers */, + B2227A5B0D00BF220071B782 /* SVGPathSeg.h in Headers */, + B2227A5E0D00BF220071B782 /* SVGPathSegArc.h in Headers */, + B2227A620D00BF220071B782 /* SVGPathSegClosePath.h in Headers */, + B2227A650D00BF220071B782 /* SVGPathSegCurvetoCubic.h in Headers */, + B2227A690D00BF220071B782 /* SVGPathSegCurvetoCubicSmooth.h in Headers */, + B2227A6D0D00BF220071B782 /* SVGPathSegCurvetoQuadratic.h in Headers */, + B2227A780D00BF220071B782 /* SVGPathSegLinetoHorizontal.h in Headers */, + B2227A7D0D00BF220071B782 /* SVGPathSegLinetoVertical.h in Headers */, + B2227A810D00BF220071B782 /* SVGPathSegList.h in Headers */, + 8476C9E611DF6A0B00555B02 /* SVGPathSegListBuilder.h in Headers */, + 084A0829128D7867002DB1F1 /* SVGPathSegListPropertyTearOff.h in Headers */, + 84B6B978120F13E500B8EFAF /* SVGPathSegListSource.h in Headers */, + 082DE42D1292621600D923DF /* SVGPathSegWithContext.h in Headers */, + 84300BD8120C9AD40021954A /* SVGPathSource.h in Headers */, + 8419D2BA120E0C7600141F8F /* SVGPathStringBuilder.h in Headers */, + 84300BD6120C9AAC0021954A /* SVGPathStringSource.h in Headers */, + 84C5B2FB1216DC810088B53A /* SVGPathTraversalStateBuilder.h in Headers */, + 71A57DF2154BE25C0009D120 /* SVGPathUtilities.h in Headers */, + B2227A880D00BF220071B782 /* SVGPatternElement.h in Headers */, + B2227A8C0D00BF220071B782 /* SVGPointList.h in Headers */, + B2227A8F0D00BF220071B782 /* SVGPolyElement.h in Headers */, + B2227A910D00BF220071B782 /* SVGPolygonElement.h in Headers */, + B2227A940D00BF220071B782 /* SVGPolylineElement.h in Headers */, + B2227A970D00BF220071B782 /* SVGPreserveAspectRatio.h in Headers */, + 088A0E0A126EF1DB00978F7A /* SVGProperty.h in Headers */, + 081DD49C13BA1A6000DC7627 /* SVGPropertyInfo.h in Headers */, + 088A0E0B126EF1DB00978F7A /* SVGPropertyTearOff.h in Headers */, + 088A0E0C126EF1DB00978F7A /* SVGPropertyTraits.h in Headers */, + B2227A9A0D00BF220071B782 /* SVGRadialGradientElement.h in Headers */, + 08EDE19F12A50B8E00B95797 /* SVGRect.h in Headers */, + B2227A9E0D00BF220071B782 /* SVGRectElement.h in Headers */, + 197B180C1506353200E4ADA8 /* SVGRenderingContext.h in Headers */, + B2227AA00D00BF220071B782 /* SVGRenderingIntent.h in Headers */, + BC2274790E8366E200E7F975 /* SVGRenderStyle.h in Headers */, + BC22747B0E8366E200E7F975 /* SVGRenderStyleDefs.h in Headers */, + 436708F212D9CA4B00044234 /* SVGRenderSupport.h in Headers */, + 436708F412D9CA4B00044234 /* SVGRenderTreeAsText.h in Headers */, + 436708F612D9CA4B00044234 /* SVGResources.h in Headers */, + 436708F812D9CA4B00044234 /* SVGResourcesCache.h in Headers */, + 436708FA12D9CA4B00044234 /* SVGResourcesCycleSolver.h in Headers */, + 0854B0231255E4E600B9CDD0 /* SVGRootInlineBox.h in Headers */, + B2227AA30D00BF220071B782 /* SVGScriptElement.h in Headers */, + B2227AA60D00BF220071B782 /* SVGSetElement.h in Headers */, + E4AFD0100DAF335500F5F55C /* SVGSMILElement.h in Headers */, + 0880F70E1282B46D00948505 /* SVGStaticListPropertyTearOff.h in Headers */, + 0813A4EA1284132600992511 /* SVGStaticPropertyTearOff.h in Headers */, + 08CA3D4412894A3800FFF260 /* SVGStaticPropertyWithParentTearOff.h in Headers */, + B2227AA90D00BF220071B782 /* SVGStopElement.h in Headers */, + B2227AAC0D00BF220071B782 /* SVGStringList.h in Headers */, + B2227AB80D00BF220071B783 /* SVGStyledElement.h in Headers */, + B2227AB80D00BF220071B782 /* SVGStyleElement.h in Headers */, + B2227ABB0D00BF220071B782 /* SVGSVGElement.h in Headers */, + B2227ABE0D00BF220071B782 /* SVGSwitchElement.h in Headers */, + B2227AC10D00BF220071B782 /* SVGSymbolElement.h in Headers */, + B2227AC50D00BF220071B782 /* SVGTests.h in Headers */, + 08F0BFC31255C53C00075185 /* SVGTextChunk.h in Headers */, + 081668D4125603BF006F25DE /* SVGTextChunkBuilder.h in Headers */, + B2227AC80D00BF220071B782 /* SVGTextContentElement.h in Headers */, + B2227ACB0D00BF220071B782 /* SVGTextElement.h in Headers */, + 08F0BFC41255C53C00075185 /* SVGTextFragment.h in Headers */, + 088C2F7A12390081003D65CE /* SVGTextLayoutAttributes.h in Headers */, + 081093DC1255F0E700ED9D29 /* SVGTextLayoutAttributesBuilder.h in Headers */, + 081668DA125603D5006F25DE /* SVGTextLayoutEngine.h in Headers */, + 080E49261255F3BD00EFCA27 /* SVGTextLayoutEngineBaseline.h in Headers */, + 080E49281255F3BD00EFCA27 /* SVGTextLayoutEngineSpacing.h in Headers */, + 08F0BFC61255C53C00075185 /* SVGTextMetrics.h in Headers */, + 7117445914BC34EC00EE5FC8 /* SVGTextMetricsBuilder.h in Headers */, + B2227ACE0D00BF220071B782 /* SVGTextPathElement.h in Headers */, + B2227AD10D00BF220071B782 /* SVGTextPositioningElement.h in Headers */, + 0854B0251255E4E600B9CDD0 /* SVGTextQuery.h in Headers */, + 085CD275138BB8E000907F2D /* SVGTextRunRenderingContext.h in Headers */, + B2227AD40D00BF220071B782 /* SVGTitleElement.h in Headers */, + B2227AD70D00BF220071B782 /* SVGTransform.h in Headers */, + B2227ADA0D00BF220071B782 /* SVGTransformable.h in Headers */, + B2227ADD0D00BF220071B782 /* SVGTransformDistance.h in Headers */, + B2227ADF0D00BF220071B782 /* SVGTransformList.h in Headers */, + 08C7136E128956A3001B107E /* SVGTransformListPropertyTearOff.h in Headers */, + B2227AE20D00BF220071B782 /* SVGTRefElement.h in Headers */, + B2227AE50D00BF220071B782 /* SVGTSpanElement.h in Headers */, + B2227AE70D00BF220071B782 /* SVGUnitTypes.h in Headers */, + B2227AEA0D00BF220071B782 /* SVGURIReference.h in Headers */, + B2227AED0D00BF220071B782 /* SVGUseElement.h in Headers */, + B2227AF00D00BF220071B782 /* SVGViewElement.h in Headers */, + B2227AF30D00BF220071B782 /* SVGViewSpec.h in Headers */, + 8485228B1190173C006EDC7F /* SVGVKernElement.h in Headers */, + B2227AF60D00BF220071B782 /* SVGZoomAndPan.h in Headers */, + B2E4EC980D00C22B00432643 /* SVGZoomEvent.h in Headers */, + E180811716FCF9CB00B80D07 /* SynchronousLoaderClient.h in Headers */, + 5DA97ECD168E787B000E3676 /* SystemVersionMac.h in Headers */, + A8CFF0510A154F09000A4234 /* TableLayout.h in Headers */, + BCE3BEC30D222B1D007E06E4 /* TagNodeList.h in Headers */, + F55B3DD61251F12D003EF269 /* TelephoneInputType.h in Headers */, + C65046A9167BFB5500CC2A4D /* TemplateContentDocumentFragment.h in Headers */, + 6550B6A6099DF0270090D781 /* Text.h in Headers */, + 93309E17099E64920056E581 /* TextAffinity.h in Headers */, + CE7B2DB51586ABAD0098B3FA /* TextAlternativeWithRange.h in Headers */, + B2C3DA340D006C1D00EF6F26 /* TextBoundaries.h in Headers */, + B2C3DA360D006C1D00EF6F26 /* TextBreakIterator.h in Headers */, + B2C3DA380D006C1D00EF6F26 /* TextBreakIteratorInternalICU.h in Headers */, + A7151BD812F1558F005A0F64 /* TextCheckerClient.h in Headers */, + A77D0012133B0AEB00D6658C /* TextChecking.h in Headers */, + A7DBF8DE1276919C006B6008 /* TextCheckingHelper.h in Headers */, + B2C3DA3A0D006C1D00EF6F26 /* TextCodec.h in Headers */, + 26E98A10130A9FCA008EB7B2 /* TextCodecASCIIFastPath.h in Headers */, + B2C3DA3C0D006C1D00EF6F26 /* TextCodecICU.h in Headers */, + B2C3DA3E0D006C1D00EF6F26 /* TextCodecLatin1.h in Headers */, + B2AFFC9A0D00A5DF0030074D /* TextCodecMac.h in Headers */, + B2C3DA400D006C1D00EF6F26 /* TextCodecUserDefined.h in Headers */, + B2C3DA420D006C1D00EF6F26 /* TextCodecUTF16.h in Headers */, + 9343CB8212F25E510033C5EE /* TextCodecUTF8.h in Headers */, + 142B97CA13138943008BEF4B /* TextControlInnerElements.h in Headers */, + B2C3DA450D006C1D00EF6F26 /* TextDirection.h in Headers */, + 97BC84B412371180000C6161 /* TextDocument.h in Headers */, + 97BC84841236FD93000C6161 /* TextDocumentParser.h in Headers */, + B2C3DA470D006C1D00EF6F26 /* TextEncoding.h in Headers */, + C105DA640F3AA6B8001DD44F /* TextEncodingDetector.h in Headers */, + B2C3DA490D006C1D00EF6F26 /* TextEncodingRegistry.h in Headers */, + 933A14300B7D188600A53FFD /* TextEvent.h in Headers */, + A77B41A012E675A90054343D /* TextEventInputType.h in Headers */, + F55B3DD81251F12D003EF269 /* TextFieldInputType.h in Headers */, + 93309E18099E64920056E581 /* TextGranularity.h in Headers */, + F55B3DDA1251F12D003EF269 /* TextInputType.h in Headers */, + CECADFCE1537791D00E37068 /* TextInsertionBaseCommand.h in Headers */, + 93309E1C099E64920056E581 /* TextIterator.h in Headers */, + BCEF45E90E687767001C1287 /* TextMetrics.h in Headers */, + 930FC68A1072B9280045293E /* TextRenderingMode.h in Headers */, + 93F198F608245E59001E9ABC /* TextResourceDecoder.h in Headers */, + A824B4650E2EF2EA0081A7B7 /* TextRun.h in Headers */, + B2C3DA4B0D006C1D00EF6F26 /* TextStream.h in Headers */, + 9759E94014EF1CF80026A2DD /* TextTrack.h in Headers */, + 9759E94314EF1CF80026A2DD /* TextTrackCue.h in Headers */, + 071A9EC3168FBC55002629F9 /* TextTrackCueGeneric.h in Headers */, + 9759E94614EF1CF80026A2DD /* TextTrackCueList.h in Headers */, + 076970871463AD8700F502CF /* TextTrackList.h in Headers */, + B1AD4E7413A12A4600846B27 /* TextTrackLoader.h in Headers */, + 498770F11242C535002226BA /* Texture.h in Headers */, + 97BC84A512370DC8000C6161 /* TextViewSourceParser.h in Headers */, + BCE658FF0EA9248A007E4533 /* Theme.h in Headers */, + BCE659E60EA92FB2007E4533 /* ThemeMac.h in Headers */, + BCE659A90EA927B9007E4533 /* ThemeTypes.h in Headers */, + 976D6C95122B8A3D001FD1F7 /* ThreadableBlobRegistry.h in Headers */, + 0B90561B0F2578BF0095FF6A /* ThreadableLoader.h in Headers */, + 0B90561C0F2578BF0095FF6A /* ThreadableLoaderClient.h in Headers */, + 1A7E3C291710997300367935 /* ThreadableLoaderClientWrapper.h in Headers */, + 97AABD1714FA09D5007457AE /* ThreadableWebSocketChannel.h in Headers */, + 97AABD1914FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.h in Headers */, + 51DF6D7E0B92A16D00C2DC85 /* ThreadCheck.h in Headers */, + E1FF57A30F01255B00891EBB /* ThreadGlobalData.h in Headers */, + 185BCF290F3279CE000EA262 /* ThreadTimers.h in Headers */, + 1AA7160B149BC4DB0016EC19 /* TileController.h in Headers */, + 1AF89A421518FDEA00E547B5 /* TiledBacking.h in Headers */, + 498770F31242C535002226BA /* TilingData.h in Headers */, + F55B3DDC1251F12D003EF269 /* TimeInputType.h in Headers */, + 7553CFE8108F473F00EA281E /* TimelineRecordFactory.h in Headers */, + 49140257168E02EC002D6C6A /* TimelineTraceEventProcessor.h in Headers */, + 9305B24D098F1B6B00C28855 /* Timer.h in Headers */, + E44613B00CD6331000FADA75 /* TimeRanges.h in Headers */, + 49E912AE0EFAC906009D0CAF /* TimingFunction.h in Headers */, + 070334D71459FFD5008D8D45 /* TrackBase.h in Headers */, + BE88E0C21715CE2600658D98 /* TrackListBase.h in Headers */, + 49E911C40EF86D47009D0CAF /* TransformationMatrix.h in Headers */, + FB484F4D171F821E00040755 /* TransformFunctions.h in Headers */, + 49E911CE0EF86D47009D0CAF /* TransformOperation.h in Headers */, + 49E911D00EF86D47009D0CAF /* TransformOperations.h in Headers */, + 5DB1BC6A10715A6400EFAA49 /* TransformSource.h in Headers */, + 4945BFD413CF809000CC3B38 /* TransformState.h in Headers */, + E17B491616A9B094001C8839 /* TransitionEvent.h in Headers */, + 49E911D20EF86D47009D0CAF /* TranslateTransformOperation.h in Headers */, + 854FE7370A2297BE0058D7AD /* Traversal.h in Headers */, + 37FD4298118368460093C029 /* TreeDepthLimit.h in Headers */, + 14D64B5D134A5B6B00E58FDA /* TreeScope.h in Headers */, + A77E1FF014AACB6E005B7CB6 /* TreeScopeAdopter.h in Headers */, + 1419D2C50CEA6F6100FF507A /* TreeShared.h in Headers */, + 854FE7390A2297BE0058D7AD /* TreeWalker.h in Headers */, + C375D7FE16639519006184AB /* TypeAhead.h in Headers */, + 37C28A6810F659CC008C7813 /* TypesettingFeatures.h in Headers */, + 93309E1A099E64920056E581 /* TypingCommand.h in Headers */, + 85031B4E0A44EFC700F992E0 /* UIEvent.h in Headers */, + 85031B4F0A44EFC700F992E0 /* UIEventWithKeyState.h in Headers */, + AA4739D21757AFEC00E76767 /* UIRequestEvent.h in Headers */, + 9B2D8A7914997CCF00ECEF3E /* UndoStep.h in Headers */, + A863E2011343412000274926 /* UnicodeBidi.h in Headers */, + B2C3DA4D0D006C1D00EF6F26 /* UnicodeRange.h in Headers */, + E4AFCFA50DAF29A300F5F55C /* UnitBezier.h in Headers */, + D086FE9809D53AAB005BC74D /* UnlinkCommand.h in Headers */, + F55B3DDE1251F12D003EF269 /* URLInputType.h in Headers */, + A72763BF16689BFB002FCACB /* UserActionElementSet.h in Headers */, + 656581B209D14EE6000E61D7 /* UserAgentStyleSheets.h in Headers */, + 003F1FEA11E6AB43008258D9 /* UserContentTypes.h in Headers */, + BCACF3BD1072921A00C0C8A3 /* UserContentURLPattern.h in Headers */, + 2542F4DB1166C25A00E89A86 /* UserGestureIndicator.h in Headers */, + BCA2B061105047600043BD1C /* UserScript.h in Headers */, + BCA2B08B10505BCD0043BD1C /* UserScriptTypes.h in Headers */, + BC8BF151105813BF00A40A07 /* UserStyleSheet.h in Headers */, + BC8BF15A1058141800A40A07 /* UserStyleSheetTypes.h in Headers */, + BCDF317C11F8D683003C5BF8 /* UserTypingGestureIndicator.h in Headers */, + 1FAFBF1915A5FA7400083A20 /* UTIUtilities.h in Headers */, + 2E3BBF081162DA1100B9409A /* UUID.h in Headers */, + 50D32858163B313F0016111E /* ValidatedCustomFilterOperation.h in Headers */, + F5A154281279534D00D0B0C0 /* ValidationMessage.h in Headers */, + F513A3EA15FF4841001526DB /* ValidationMessageClient.h in Headers */, + 15C7708D100D3C6B005BA267 /* ValidityState.h in Headers */, + FD3160AF12B026F700C1A359 /* VectorMath.h in Headers */, + BCA257151293C010007A263D /* VerticalPositionCache.h in Headers */, + BE88E0DF1715D2A200658D98 /* VideoTrack.h in Headers */, + BE88E0E21715D2A200658D98 /* VideoTrackList.h in Headers */, + BEF29EEC1715DD0900C4B4C9 /* VideoTrackPrivate.h in Headers */, + CEF418CF1179678C009D112C /* ViewportArguments.h in Headers */, + 3FFFF9AE159D9B060020BBD5 /* ViewportStyleResolver.h in Headers */, + 93309E20099E64920056E581 /* VisiblePosition.h in Headers */, + A883DF280F3D045D00F19BF6 /* VisibleSelection.h in Headers */, + 93309E1E099E64920056E581 /* VisibleUnits.h in Headers */, + 419BC2DF1685329900D64D6D /* VisitedLinkState.h in Headers */, + 515788C11207852C00A37C4A /* VisitedLinkStrategy.h in Headers */, + E44613B60CD6344E00FADA75 /* VoidCallback.h in Headers */, + FD7F299213D4C0CB00AD9535 /* WaveShaperDSPKernel.h in Headers */, + FD7F299413D4C0CB00AD9535 /* WaveShaperNode.h in Headers */, + FD7F299713D4C0CB00AD9535 /* WaveShaperProcessor.h in Headers */, + 29A812490FBB9CA900510293 /* WebAccessibilityObjectWrapperBase.h in Headers */, + AAA728F716D1D8BC00D3BBC6 /* WebAccessibilityObjectWrapperIOS.h in Headers */, + AA478A7F16CD70C3007D1BB4 /* WebAccessibilityObjectWrapperMac.h in Headers */, + 93F199A808245E59001E9ABC /* WebCoreFrameView.h in Headers */, + CDC69DDA16371FD4007C38DF /* WebCoreFullScreenPlaceholderView.h in Headers */, + CDC69DD61632026C007C38DF /* WebCoreFullScreenWarningView.h in Headers */, + CD127DEE14F3098400E84779 /* WebCoreFullScreenWindow.h in Headers */, + BC53D911114310CC000D817E /* WebCoreJSClientData.h in Headers */, + 93F199BB08245E59001E9ABC /* WebCoreKeyboardUIMode.h in Headers */, + 371941971566B37200A276D8 /* WebCoreNSCellExtras.h in Headers */, + 934D9BA70B8C1175007B42A9 /* WebCoreNSStringExtras.h in Headers */, + C5B4C24D1509236C00A6EF37 /* WebCoreNSURLExtras.h in Headers */, + DD05FE0D0B8BA3C6009ACDFE /* WebCoreObjCExtras.h in Headers */, + EDEC98030AED7E170059137F /* WebCorePrefix.h in Headers */, + E180810F16FCECDF00B80D07 /* WebCoreResourceHandleAsDelegate.h in Headers */, + E152551516FD2350003D7ADB /* WebCoreResourceHandleAsOperationQueueDelegate.h in Headers */, + 93EB169709F880C00091F8FF /* WebCoreSystemInterface.h in Headers */, + 37F818FD0D657606005E1F05 /* WebCoreURLResponse.h in Headers */, + 93F199F008245E59001E9ABC /* WebCoreView.h in Headers */, + BC6DADEF0A195FDF00E5CD14 /* WebFontCache.h in Headers */, + A7D20F6D107F438B00A80392 /* WebGLActiveInfo.h in Headers */, + 49C7B9C91042D32F0009D447 /* WebGLBuffer.h in Headers */, + 7E66E23416D6EB6C00F7E7FF /* WebGLCompressedTextureATC.h in Headers */, + 7E66E23417E6EB6C00F7E7FF /* WebGLCompressedTexturePVRTC.h in Headers */, + 6E3FAE8F14733FDB00E42306 /* WebGLCompressedTextureS3TC.h in Headers */, + 6E4E91AF10F7FB3100A2779C /* WebGLContextAttributes.h in Headers */, + 93F6F1EE127F70B10055CB06 /* WebGLContextEvent.h in Headers */, + 01D3CF8314BD0A3000FE9970 /* WebGLContextGroup.h in Headers */, + 01D3CF8514BD0A3000FE9970 /* WebGLContextObject.h in Headers */, + A0EE0DF6144F825500F80B0D /* WebGLDebugRendererInfo.h in Headers */, + A0EE0DF8144F825500F80B0D /* WebGLDebugShaders.h in Headers */, + 6E3FAE8F14733FDB00E42307 /* WebGLDepthTexture.h in Headers */, + 6EBF0E5512A8929800DB1709 /* WebGLExtension.h in Headers */, + 49C7B9CF1042D32F0009D447 /* WebGLFramebuffer.h in Headers */, + 6E47E66110B7944B00B186C8 /* WebGLGetInfo.h in Headers */, + 49FFBF3F11C93EE3006A7118 /* WebGLLayer.h in Headers */, + 93F1D5BB12D532C400832BEC /* WebGLLoseContext.h in Headers */, + 49C7B9D51042D32F0009D447 /* WebGLObject.h in Headers */, + 49C7B9D71042D32F0009D447 /* WebGLProgram.h in Headers */, + 49C7B9DA1042D32F0009D447 /* WebGLRenderbuffer.h in Headers */, + 49C7B9E01042D32F0009D447 /* WebGLRenderingContext.h in Headers */, + 49C7B9E31042D32F0009D447 /* WebGLShader.h in Headers */, + A07D3358152B632D001B6393 /* WebGLShaderPrecisionFormat.h in Headers */, + 01D3CF8714BD0A3000FE9970 /* WebGLSharedObject.h in Headers */, + 49C7B9E61042D32F0009D447 /* WebGLTexture.h in Headers */, + 0C3F1F5B10C8871200D72CE1 /* WebGLUniformLocation.h in Headers */, + 77A17A7812F28642004E02F6 /* WebGLVertexArrayObjectOES.h in Headers */, + 31C0FF220E4CEB6E007D6FE5 /* WebKitAnimationEvent.h in Headers */, + 976D6C7C122B8A3D001FD1F7 /* WebKitBlobBuilder.h in Headers */, + 150B923A15F08DC400E10986 /* WebKitCSSArrayFunctionValue.h in Headers */, + A2E8AE3116A48E1C006BB3AA /* WebKitCSSFilterRule.h in Headers */, + 3106037014327D2E00ABF4BA /* WebKitCSSFilterValue.h in Headers */, + 31288E730E3005D6003619AE /* WebKitCSSKeyframeRule.h in Headers */, + 31288E750E3005D6003619AE /* WebKitCSSKeyframesRule.h in Headers */, + FB719C3F17238CA80022DE34 /* WebKitCSSMatFunctionValue.h in Headers */, + 498391590F1E776900C23782 /* WebKitCSSMatrix.h in Headers */, + A24BF77B15CC3BAF003191F2 /* WebKitCSSMixFunctionValue.h in Headers */, + 8AA61D00144D595B00F37350 /* WebKitCSSRegionRule.h in Headers */, + 29CD61DE146D02890068E82A /* WebKitCSSShaderValue.h in Headers */, + 0562F9471573ECEB0031CA16 /* WebKitCSSSVGDocumentValue.h in Headers */, + BC9ADD230CC4032600098C4C /* WebKitCSSTransformValue.h in Headers */, + 3FFFF9A9159D9A550020BBD5 /* WebKitCSSViewportRule.h in Headers */, + 494BD7950F55C8EE00747828 /* WebKitPoint.h in Headers */, + 31C0FF250E4CEB6E007D6FE5 /* WebKitTransitionEvent.h in Headers */, + 0FCF332F0F2B9A25004B6795 /* WebLayer.h in Headers */, + E1A3162D134BC32D007C9A4F /* WebNSAttributedStringExtras.h in Headers */, + 1CAF34810A6C405200ABE06E /* WebScriptObject.h in Headers */, + 1A569D1B0D7E2B82007C3983 /* WebScriptObject.h in Headers */, + 1CAF34830A6C405200ABE06E /* WebScriptObjectPrivate.h in Headers */, + 97AABD1B14FA09D5007457AE /* WebSocket.h in Headers */, + 97AABD1E14FA09D5007457AE /* WebSocketChannel.h in Headers */, + 97AABD1F14FA09D5007457AE /* WebSocketChannelClient.h in Headers */, + 4A38BF5114FE1C0900612512 /* WebSocketDeflateFramer.h in Headers */, + 97AABD2114FA09D5007457AE /* WebSocketDeflater.h in Headers */, + 97AABD2314FA09D5007457AE /* WebSocketExtensionDispatcher.h in Headers */, + 4A5A2ADC161E7E00005889DD /* WebSocketExtensionParser.h in Headers */, + 97AABD2414FA09D5007457AE /* WebSocketExtensionProcessor.h in Headers */, + 97AABD2514FA09D5007457AE /* WebSocketFrame.h in Headers */, + 97AABD2714FA09D5007457AE /* WebSocketHandshake.h in Headers */, + 0F580FA31496939100FB5BD8 /* WebTiledBackingLayer.h in Headers */, + 0FCF332D0F2B9A25004B6795 /* WebTiledLayer.h in Headers */, + CD82030A1395AB6A00F956C6 /* WebVideoFullscreenController.h in Headers */, + CD82030C1395AB6A00F956C6 /* WebVideoFullscreenHUDWindowController.h in Headers */, + F12171F616A8CF0B000053CA /* WebVTTElement.h in Headers */, + 5D21A80313ECE5DF00BB7064 /* WebVTTParser.h in Headers */, + B10B6980140C174000BC1C26 /* WebVTTToken.h in Headers */, + B10B6982140C174000BC1C26 /* WebVTTTokenizer.h in Headers */, + CD8203101395ACE700F956C6 /* WebWindowAnimation.h in Headers */, + F55B3DE01251F12D003EF269 /* WeekInputType.h in Headers */, + 85031B510A44EFC700F992E0 /* WheelEvent.h in Headers */, + 9380F47409A11AB4001FDB34 /* Widget.h in Headers */, + 1411DCB1164C39A800D49BC1 /* WidthCache.h in Headers */, + 939B02EF0EA2DBC400C54570 /* WidthIterator.h in Headers */, + 4123E569127B3041000FEEA7 /* WindowEventContext.h in Headers */, + BC8243E90D0CFD7500460C8F /* WindowFeatures.h in Headers */, + 7E99AF530B13846468FB01A5 /* WindowFocusAllowedIndicator.h in Headers */, + E1E1BF00115FF6FB006F52CA /* WindowsKeyboardCodes.h in Headers */, + 501BAAA913950E2C00F7ACEB /* WindRule.h in Headers */, + 379919971200DDF400EA041C /* WOFFFileFormat.h in Headers */, + 2E4346460F546A8200B0F1BA /* Worker.h in Headers */, + F3820897147D35F90010BC06 /* WorkerConsoleAgent.h in Headers */, + F34742E11343631F00531BC2 /* WorkerDebuggerAgent.h in Headers */, + A3E2643114748991005A8588 /* WorkerEventQueue.h in Headers */, + 2E4346490F546A8200B0F1BA /* WorkerGlobalScope.h in Headers */, + 9712A612150090CE0048AF10 /* WorkerGlobalScopeIndexedDatabase.h in Headers */, + 97F8E666151D4A4E00D2D181 /* WorkerGlobalScopeNotifications.h in Headers */, + 2E43464B0F546A8200B0F1BA /* WorkerGlobalScopeProxy.h in Headers */, + A8CCBB4D151F833B00AB7CE9 /* WorkerGlobalScopeWebDatabase.h in Headers */, + F36E07A51358A8BE00AACBC9 /* WorkerInspectorController.h in Headers */, + 18F831B80FD48C7800D8C56B /* WorkerLoaderProxy.h in Headers */, + 2E43464D0F546A8200B0F1BA /* WorkerLocation.h in Headers */, + 2E4346500F546A8200B0F1BA /* WorkerMessagingProxy.h in Headers */, + E1271A0B0EEEC77A00F61213 /* WorkerNavigator.h in Headers */, + 1ABC7109170E5E1B00F9A9D6 /* WorkerNavigatorStorageQuota.h in Headers */, + 2E4346510F546A8200B0F1BA /* WorkerObjectProxy.h in Headers */, + 416E29A6102FA962007FC14E /* WorkerReportingProxy.h in Headers */, + 2E4346530F546A8200B0F1BA /* WorkerRunLoop.h in Headers */, + F3820899147D35F90010BC06 /* WorkerRuntimeAgent.h in Headers */, + E1A643F20EC0972500779668 /* WorkerScriptController.h in Headers */, + F34742E91343635000531BC2 /* WorkerScriptDebugServer.h in Headers */, + A7D6B3490F61104500B79FD1 /* WorkerScriptLoader.h in Headers */, + 2EA768040FE7126400AB9C8A /* WorkerScriptLoaderClient.h in Headers */, + 2E4346550F546A8200B0F1BA /* WorkerThread.h in Headers */, + 0B9056F90F2685F30095FF6A /* WorkerThreadableLoader.h in Headers */, + 97AABD2D14FA09D5007457AE /* WorkerThreadableWebSocketChannel.h in Headers */, + 93309E24099E64920056E581 /* WrapContentsInDummySpanCommand.h in Headers */, + 9BAF3B2412C1A39800014BF1 /* WritingDirection.h in Headers */, + 14476AA815DC4BB100305DB2 /* WritingMode.h in Headers */, + 6565820209D1508D000E61D7 /* XLinkNames.h in Headers */, + 00B9318813BA8DBA0035A948 /* XMLDocumentParser.h in Headers */, + 00B9318C13BA8DCC0035A948 /* XMLDocumentParserScope.h in Headers */, + 59C28046138DC2410079B7E2 /* XMLErrors.h in Headers */, + BC772C470C4EB2C60083285F /* XMLHttpRequest.h in Headers */, + BC60D9C90D2A29E500B9918F /* XMLHttpRequestException.h in Headers */, + F9F0ED7A0DB50CA200D16DB9 /* XMLHttpRequestProgressEvent.h in Headers */, + A136A00D1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.h in Headers */, + BCDFD48E0E305290009D10AD /* XMLHttpRequestUpload.h in Headers */, + A833C80D0A2CF25600D57664 /* XMLNames.h in Headers */, + E15A36D71104572000B7B639 /* XMLNSNames.h in Headers */, + 1ACE53EB0A8D18E70022947D /* XMLSerializer.h in Headers */, + 5905ADC01302F3CE00F116DF /* XMLTreeViewer.h in Headers */, + 1AB7FC690A8B92EC00D9D37B /* XPathEvaluator.h in Headers */, + BC60DA5B0D2A31F700B9918F /* XPathException.h in Headers */, + 1AB7FC6C0A8B92EC00D9D37B /* XPathExpression.h in Headers */, + 1AB7FC6F0A8B92EC00D9D37B /* XPathExpressionNode.h in Headers */, + 1AB7FC710A8B92EC00D9D37B /* XPathFunctions.h in Headers */, + 1A7629D60A07425100989F5B /* XPathGrammar.h in Headers */, + E1EC29A00BB04C6B00EA187B /* XPathNodeSet.h in Headers */, + 1AB7FC760A8B92EC00D9D37B /* XPathNSResolver.h in Headers */, + 1AB7FC790A8B92EC00D9D37B /* XPathParser.h in Headers */, + 1AB7FC7B0A8B92EC00D9D37B /* XPathPath.h in Headers */, + 1AB7FC7D0A8B92EC00D9D37B /* XPathPredicate.h in Headers */, + 1AB7FC7F0A8B92EC00D9D37B /* XPathResult.h in Headers */, + 1AB7FC820A8B92EC00D9D37B /* XPathStep.h in Headers */, + 1AB7FC840A8B92EC00D9D37B /* XPathUtil.h in Headers */, + 1AB7FC860A8B92EC00D9D37B /* XPathValue.h in Headers */, + 1AB7FC880A8B92EC00D9D37B /* XPathVariableReference.h in Headers */, + 85217E030A5ECD4700DB8D00 /* XSLImportRule.h in Headers */, + 93F199EC08245E59001E9ABC /* XSLStyleSheet.h in Headers */, + E1F1E8300C3C2BB9006DB391 /* XSLTExtensions.h in Headers */, + 93F199ED08245E59001E9ABC /* XSLTProcessor.h in Headers */, + E1BE512E0CF6C512002EA959 /* XSLTUnicodeSort.h in Headers */, + 977E2E0F12F0FC9C00C13379 /* XSSAuditor.h in Headers */, + 977E2E0F12F0FC9C00C13380 /* XSSAuditorDelegate.h in Headers */, + FD537353137B651800008DCE /* ZeroPole.h in Headers */, + 83C1D425178D5AB400141E68 /* SVGPathSegArcAbs.h in Headers */, + 83C1D426178D5AB400141E68 /* SVGPathSegArcRel.h in Headers */, + 83C1D427178D5AB400141E68 /* SVGPathSegCurvetoCubicAbs.h in Headers */, + 83C1D428178D5AB400141E68 /* SVGPathSegCurvetoCubicRel.h in Headers */, + 83C1D429178D5AB400141E68 /* SVGPathSegCurvetoCubicSmoothAbs.h in Headers */, + 83C1D42A178D5AB400141E68 /* SVGPathSegCurvetoCubicSmoothRel.h in Headers */, + 83C1D42B178D5AB400141E68 /* SVGPathSegCurvetoQuadraticAbs.h in Headers */, + 83C1D42C178D5AB500141E68 /* SVGPathSegCurvetoQuadraticRel.h in Headers */, + 83C1D42D178D5AB500141E68 /* SVGPathSegCurvetoQuadraticSmoothAbs.h in Headers */, + 83C1D42E178D5AB500141E68 /* SVGPathSegCurvetoQuadraticSmoothRel.h in Headers */, + 83C1D42F178D5AB500141E68 /* SVGPathSegLinetoAbs.h in Headers */, + 83C1D430178D5AB500141E68 /* SVGPathSegLinetoHorizontalAbs.h in Headers */, + 83C1D431178D5AB500141E68 /* SVGPathSegLinetoHorizontalRel.h in Headers */, + 83C1D432178D5AB500141E68 /* SVGPathSegLinetoRel.h in Headers */, + 83C1D433178D5AB500141E68 /* SVGPathSegLinetoVerticalAbs.h in Headers */, + 83C1D434178D5AB500141E68 /* SVGPathSegLinetoVerticalRel.h in Headers */, + 83C1D435178D5AB500141E68 /* SVGPathSegMovetoAbs.h in Headers */, + 83C1D436178D5AB500141E68 /* SVGPathSegMovetoRel.h in Headers */, + FD1762E0176686D900D836A8 /* UpSampler.h in Headers */, + FD1762E4176686EA00D836A8 /* DownSampler.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E1BA66F61742BDE000C20251 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 417DA6CF13734E02007C57FB /* WebCoreTestSupport */ = { + isa = PBXNativeTarget; + buildConfigurationList = 417DA6D813734E47007C57FB /* Build configuration list for PBXNativeTarget "WebCoreTestSupport" */; + buildPhases = ( + 417DA6CC13734E02007C57FB /* Headers */, + 417DA6CD13734E02007C57FB /* Sources */, + 417DA6CE13734E02007C57FB /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 417DA6D513734E0D007C57FB /* PBXTargetDependency */, + ); + name = WebCoreTestSupport; + productName = WebCoreTestSupport; + productReference = 417DA6D013734E02007C57FB /* libWebCoreTestSupport.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; + 5D87BB4E11E3EAEB00702B6F /* WebCoreExportFileGenerator */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5D87BB5911E3EB0700702B6F /* Build configuration list for PBXNativeTarget "WebCoreExportFileGenerator" */; + buildPhases = ( + 5D87BB4C11E3EAEB00702B6F /* Sources */, + 5D87BB4D11E3EAEB00702B6F /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 5D87BB6B11E3EBD200702B6F /* PBXTargetDependency */, + ); + name = WebCoreExportFileGenerator; + productName = WebCoreExportFileGenerator; + productReference = 5D87BB4F11E3EAEB00702B6F /* WebCoreExportFileGenerator */; + productType = "com.apple.product-type.tool"; + }; + 93F198A508245E59001E9ABC /* WebCore */ = { + isa = PBXNativeTarget; + buildConfigurationList = 149C283908902B11008A9EFC /* Build configuration list for PBXNativeTarget "WebCore" */; + buildPhases = ( + 5D2F7DA00C6879C600B5B72B /* Update Info.plist with version information */, + 93F198A608245E59001E9ABC /* Headers */, + 1C11CCB40AA6093700DADB20 /* Copy Generated Headers */, + 5D87BC0711E43BDE00702B6F /* Copy Forwarding and ICU Headers */, + 93F199FD08245E59001E9ABC /* Resources */, + CD0DBF001422765700280263 /* Copy Audio Resources */, + 1C81BA330E97357C00266E07 /* Copy Inspector Resources */, + 1C5F9D760E09A1B400E91D0A /* Streamline Inspector Source */, + 93F19A0C08245E59001E9ABC /* Sources */, + 93F19B1208245E59001E9ABC /* Frameworks */, + 5D0D540D0E9862F60029E223 /* Check For Weak VTables and Externals */, + 37A1EAA3142699BC0087F425 /* Check For Inappropriate Objective-C Class Names */, + 5DF50887116F3077005202AB /* Check For Inappropriate Files In Framework */, + ); + buildRules = ( + ); + dependencies = ( + DD041FF109D9E3250010AF2A /* PBXTargetDependency */, + ); + name = WebCore; + productInstallPath = /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks; + productName = WebKit; + productReference = 93F19B1A08245E5A001E9ABC /* WebCore.framework */; + productType = "com.apple.product-type.framework"; + }; + E1BA66F31742BDE000C20251 /* WebCoreTestShim */ = { + isa = PBXNativeTarget; + buildConfigurationList = E1BA67121742BDE000C20251 /* Build configuration list for PBXNativeTarget "WebCoreTestShim" */; + buildPhases = ( + E1BA66F61742BDE000C20251 /* Headers */, + E1BA67021742BDE000C20251 /* Sources */, + E1BA670E1742BDE000C20251 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + E1BA66F41742BDE000C20251 /* PBXTargetDependency */, + ); + name = WebCoreTestShim; + productName = WebCoreTestSupport; + productReference = E1BA67161742BDE000C20251 /* libWebCoreTestShim.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 0440; + }; + buildConfigurationList = 149C284308902B11008A9EFC /* Build configuration list for PBXProject "WebCore" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + Spanish, + Dutch, + Italian, + ); + mainGroup = 0867D691FE84028FC02AAC07 /* WebKit */; + productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 41816F7913859C550057AAA4 /* All */, + 93F198A508245E59001E9ABC /* WebCore */, + DD041FBE09D9DDBE0010AF2A /* Derived Sources */, + 5D87BB4E11E3EAEB00702B6F /* WebCoreExportFileGenerator */, + 5D87BB6411E3EBC100702B6F /* WebCoreExportFileGenerator Generator */, + 417DA6CF13734E02007C57FB /* WebCoreTestSupport */, + E1BA66F31742BDE000C20251 /* WebCoreTestShim */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 93F199FD08245E59001E9ABC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 46F9D5DD0B0D60170028EE36 /* aliasCursor.png in Resources */, + 46D4F2490AF97E810035385A /* cellCursor.png in Resources */, + 93153BDE141959F400FCF5BE /* deleteButton.png in Resources */, + 93153BCD1417FBBF00FCF5BE /* deleteButton@2x.png in Resources */, + 93153BE014195A2800FCF5BE /* deleteButtonPressed.png in Resources */, + 93153BCF1417FBDB00FCF5BE /* deleteButtonPressed@2x.png in Resources */, + 85136C990AED665900F90A3D /* eastResizeCursor.png in Resources */, + 85136C9A0AED665900F90A3D /* eastWestResizeCursor.png in Resources */, + 85136C9B0AED665900F90A3D /* helpCursor.png in Resources */, + 7CC7E3D717208C0F003C5277 /* IDNScriptWhiteList.txt in Resources */, + 93153BE414195B2A00FCF5BE /* inputSpeech.png in Resources */, + 2D9F0E1314FF1CBF00BA0FF7 /* linearSRGB.icc in Resources */, + 85136C9C0AED665900F90A3D /* linkCursor.png in Resources */, + BCAD180A131C7A0D00990406 /* Localizable.strings in Resources */, + 1CDC14050DD3934C006EACD3 /* localizedStrings.js in Resources */, + 93153BE214195A5700FCF5BE /* missingImage.png in Resources */, + 93153BDA14181F7A00FCF5BE /* missingImage@2x.png in Resources */, + 85136C9D0AED665900F90A3D /* moveCursor.png in Resources */, + 46BD16E30B279473001F0839 /* noneCursor.png in Resources */, + 85136C9E0AED665900F90A3D /* northEastResizeCursor.png in Resources */, + 85136C9F0AED665900F90A3D /* northEastSouthWestResizeCursor.png in Resources */, + 85136CA00AED665900F90A3D /* northResizeCursor.png in Resources */, + 85136CA10AED665900F90A3D /* northSouthResizeCursor.png in Resources */, + 85136CA20AED665900F90A3D /* northWestResizeCursor.png in Resources */, + 85136CA30AED665900F90A3D /* northWestSouthEastResizeCursor.png in Resources */, + 46F9D5DF0B0D60170028EE36 /* progressCursor.png in Resources */, + 85136CA40AED665900F90A3D /* southEastResizeCursor.png in Resources */, + 85136CA50AED665900F90A3D /* southResizeCursor.png in Resources */, + 85136CA60AED665900F90A3D /* southWestResizeCursor.png in Resources */, + 93153BDC141959BC00FCF5BE /* textAreaResizeCorner.png in Resources */, + 9370918D1416D86B00477333 /* textAreaResizeCorner@2x.png in Resources */, + 46D4F24B0AF97E810035385A /* verticalTextCursor.png in Resources */, + 85136CA70AED665900F90A3D /* waitCursor.png in Resources */, + 85136CA80AED665900F90A3D /* westResizeCursor.png in Resources */, + 1AB1AE7A0C051FDE00139F4F /* zoomInCursor.png in Resources */, + 1AB1AE7B0C051FDE00139F4F /* zoomOutCursor.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 1C5F9D760E09A1B400E91D0A /* Streamline Inspector Source */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/inspector", + "$(SRCROOT)/inspector/combine-javascript-resources.pl", + "$(SRCROOT)/inspector/inline-javascript-imports.py", + ); + name = "Streamline Inspector Source"; + outputPaths = ( + "$(DERIVED_FILE_DIR)/WebCore/inspector.html", + "$(DERIVED_FILE_DIR)/WebCore/inspector.js", + "$(DERIVED_FILE_DIR)/WebCore/ElementsPanel.js", + "$(DERIVED_FILE_DIR)/WebCore/ResourcesPanel.js", + "$(DERIVED_FILE_DIR)/WebCore/NetworkPanel.js", + "$(DERIVED_FILE_DIR)/WebCore/ScriptsPanel.js", + "$(DERIVED_FILE_DIR)/WebCore/TimelinePanel.js", + "$(DERIVED_FILE_DIR)/WebCore/ProfilesPanel.js", + "$(DERIVED_FILE_DIR)/WebCore/AuditsPanel.js", + "$(DERIVED_FILE_DIR)/WebCore/CodeMirrorTextEditor.js", + "$(DERIVED_FILE_DIR)/WebCore/ScriptFormatterWorker.js", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Don't do anything for Debug builds, so the Inspector is easier to debug.\n# Don't do anything for Production builds, since the Inspector isn't installed.\nif [[ ${CONFIGURATION:=Debug} == \"Debug\" || ${CONFIGURATION:=Production} == \"Production\" ]]; then\n exit\nfi\n\n# Combine all script resources in the inspector.html file.\n\"$SRCROOT/inspector/combine-javascript-resources.pl\" --input-html \"${SRCROOT}/inspector/front-end/inspector.html\" --generated-scripts-dir \"${BUILT_PRODUCTS_DIR}/DerivedSources/WebCore\" --output-dir \"${DERIVED_FILE_DIR}/WebCore\" --output-script-name inspector.js\n\n# Inline script imports in ElementsPanel.js file.\n\"$SRCROOT/inspector/inline-javascript-imports.py\" \"${SRCROOT}/inspector/front-end/ElementsPanel.js\" \"${SRCROOT}/inspector/front-end\" \"${DERIVED_FILE_DIR}/WebCore/ElementsPanel.js\"\n\n# Inline script imports in ResourcesPanel.js file.\n\"$SRCROOT/inspector/inline-javascript-imports.py\" \"${SRCROOT}/inspector/front-end/ResourcesPanel.js\" \"${SRCROOT}/inspector/front-end\" \"${DERIVED_FILE_DIR}/WebCore/ResourcesPanel.js\"\n\n# Inline script imports in NetworkPanel.js file.\n\"$SRCROOT/inspector/inline-javascript-imports.py\" \"${SRCROOT}/inspector/front-end/NetworkPanel.js\" \"${SRCROOT}/inspector/front-end\" \"${DERIVED_FILE_DIR}/WebCore/NetworkPanel.js\"\n\n# Inline script imports in ScriptsPanel.js file.\n\"$SRCROOT/inspector/inline-javascript-imports.py\" \"${SRCROOT}/inspector/front-end/ScriptsPanel.js\" \"${SRCROOT}/inspector/front-end\" \"${DERIVED_FILE_DIR}/WebCore/ScriptsPanel.js\"\n\n# Inline script imports in TimelinePanel.js file.\n\"$SRCROOT/inspector/inline-javascript-imports.py\" \"${SRCROOT}/inspector/front-end/TimelinePanel.js\" \"${SRCROOT}/inspector/front-end\" \"${DERIVED_FILE_DIR}/WebCore/TimelinePanel.js\"\n\n# Inline script imports in ProfilesPanel.js file.\n\"$SRCROOT/inspector/inline-javascript-imports.py\" \"${SRCROOT}/inspector/front-end/ProfilesPanel.js\" \"${SRCROOT}/inspector/front-end\" \"${DERIVED_FILE_DIR}/WebCore/ProfilesPanel.js\"\n\n# Inline script imports in AuditsPanel.js file.\n\"$SRCROOT/inspector/inline-javascript-imports.py\" \"${SRCROOT}/inspector/front-end/AuditsPanel.js\" \"${SRCROOT}/inspector/front-end\" \"${DERIVED_FILE_DIR}/WebCore/AuditsPanel.js\"\n\n# Inline script imports in CodeMirrorTextEditor.js file.\n\"$SRCROOT/inspector/inline-javascript-imports.py\" \"${SRCROOT}/inspector/front-end/CodeMirrorTextEditor.js\" \"${SRCROOT}/inspector/front-end\" \"${DERIVED_FILE_DIR}/WebCore/CodeMirrorTextEditor.js\"\n\n# Inline script imports in ScriptFormatterWorker.js file.\n\"$SRCROOT/inspector/inline-javascript-imports.py\" \"${SRCROOT}/inspector/front-end/ScriptFormatterWorker.js\" \"${SRCROOT}/inspector/front-end\" \"${DERIVED_FILE_DIR}/WebCore/ScriptFormatterWorker.js\"\n\nif [ -d \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/inspector\" ]; then\n cd \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/inspector\"\n\n # Remove any top-level JavaScript files, since they will be replaced with the combined file.\n # Keep InspectorBackend*.js files so they can be used by other front-ends.\n find . -depth 1 -name \"*.js\" -not -name \"InspectorBackend*.js\" | xargs rm -rf\n\n # Copy the modified HTML file and the combined scripts.\n cp \"${DERIVED_FILE_DIR}/WebCore/inspector.html\" inspector.html\n cp \"${DERIVED_FILE_DIR}/WebCore/inspector.js\" inspector.js\n cp \"${DERIVED_FILE_DIR}/WebCore/ElementsPanel.js\" ElementsPanel.js\n cp \"${DERIVED_FILE_DIR}/WebCore/ResourcesPanel.js\" ResourcesPanel.js\n cp \"${DERIVED_FILE_DIR}/WebCore/NetworkPanel.js\" NetworkPanel.js\n cp \"${DERIVED_FILE_DIR}/WebCore/ScriptsPanel.js\" ScriptsPanel.js\n cp \"${DERIVED_FILE_DIR}/WebCore/TimelinePanel.js\" TimelinePanel.js\n cp \"${DERIVED_FILE_DIR}/WebCore/ProfilesPanel.js\" ProfilesPanel.js\n cp \"${DERIVED_FILE_DIR}/WebCore/AuditsPanel.js\" AuditsPanel.js\n cp \"${DERIVED_FILE_DIR}/WebCore/CodeMirrorTextEditor.js\" CodeMirrorTextEditor.js\n cp \"${DERIVED_FILE_DIR}/WebCore/ScriptFormatterWorker.js\" ScriptFormatterWorker.js\nfi\n"; + }; + 1C81BA330E97357C00266E07 /* Copy Inspector Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/inspector/front-end", + "${BUILT_PRODUCTS_DIR}/DerivedSources/WebCore/InspectorBackendCommands.js", + ); + name = "Copy Inspector Resources"; + outputPaths = ( + "$(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/inspector", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [[ ${CONFIGURATION:=Production} == \"Production\" ]]; then\n # Don't install the Inspector front-end in Production builds.\n # Keep InspectorBackend*.js files so they can be used by other front-ends.\n ditto \"${SRCROOT}/inspector/front-end/InspectorBackend.js\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/inspector/\"\n ditto \"${BUILT_PRODUCTS_DIR}/DerivedSources/WebCore/InspectorBackendCommands.js\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/inspector/\"\n exit\nfi\n\n# Copy all the Inspector front-end resources.\nditto \"${SRCROOT}/inspector/front-end\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/inspector\"\nditto \"${BUILT_PRODUCTS_DIR}/DerivedSources/WebCore/InspectorBackendCommands.js\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/inspector/\"\n\n# Remove any qrc files since they are not used on the Mac (they are for Qt).\nrm -f \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/inspector/\"*.qrc\n\n# Remove *.re2js files, they are only used to generate some .js files.\nrm -f \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/inspector/\"*.re2js\n\n# Remove any .svn directories that may have been copied over.\nfind \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/inspector\" -name \".svn\" -type d | xargs rm -rf\n"; + }; + 37A1EAA3142699BC0087F425 /* Check For Inappropriate Objective-C Class Names */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)", + ); + name = "Check For Inappropriate Objective-C Class Names"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${ACTION}\" = \"installhdrs\" ]; then\n exit 0;\nfi\n\nif [ -f ../../Tools/Scripts/check-for-inappropriate-objc-class-names ]; then\n ../../Tools/Scripts/check-for-inappropriate-objc-class-names DOM Web || exit $?\nfi"; + }; + 5D0D540D0E9862F60029E223 /* Check For Weak VTables and Externals */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)", + ); + name = "Check For Weak VTables and Externals"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${ACTION}\" = \"installhdrs\" ]; then\n exit 0;\nfi\n\nif [ -f ../../Tools/Scripts/check-for-weak-vtables-and-externals ]; then\n ../../Tools/Scripts/check-for-weak-vtables-and-externals || exit $?\nfi"; + }; + 5D2F7DA00C6879C600B5B72B /* Update Info.plist with version information */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/Configurations/Version.xcconfig", + ); + name = "Update Info.plist with version information"; + outputPaths = ( + "$(SRCROOT)/Info.plist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Touch Info.plist to let Xcode know it needs to copy it into the built product\nif [[ \"${CONFIGURATION}\" != \"Production\" ]]; then\n touch \"$SRCROOT/Info.plist\";\nfi;\n"; + }; + 5D87BB6311E3EBC100702B6F /* Generate Export File Generator */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/WebCore.exp.in", + "$(SRCROOT)/make-export-file-generator", + ); + name = "Generate Export File Generator"; + outputPaths = ( + "$(BUILT_PRODUCTS_DIR)/DerivedSources/$(PROJECT_NAME)/ExportFileGenerator.cpp", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "OUTPUT_DIR=\"${BUILT_PRODUCTS_DIR}/DerivedSources/${PROJECT_NAME}\"\nmkdir -p \"${OUTPUT_DIR}\"\n\"${SRCROOT}\"/make-export-file-generator \"${SRCROOT}/WebCore.exp.in\" \"${OUTPUT_DIR}/ExportFileGenerator.cpp\"\n"; + }; + 5D87BC0711E43BDE00702B6F /* Copy Forwarding and ICU Headers */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy Forwarding and ICU Headers"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "rsync -aq --exclude \".svn\" --exclude \".DS_Store\" \"$SRCROOT/ForwardingHeaders\" \"$BUILT_PRODUCTS_DIR/$PRIVATE_HEADERS_FOLDER_PATH\"\nrsync -aq --exclude \".svn\" --exclude \".DS_Store\" \"$SRCROOT/icu\" \"$BUILT_PRODUCTS_DIR/$PRIVATE_HEADERS_FOLDER_PATH\"\n"; + }; + 5DF50887116F3077005202AB /* Check For Inappropriate Files In Framework */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)", + ); + name = "Check For Inappropriate Files In Framework"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${ACTION}\" = \"installhdrs\" ]; then\n exit 0;\nfi\n\nif [ -f ../../Tools/Scripts/check-for-inappropriate-files-in-framework ]; then\n ../../Tools/Scripts/check-for-inappropriate-files-in-framework || exit $?\nfi\n"; + }; + DD041FBD09D9DDBE0010AF2A /* Generate Derived Sources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Generate Derived Sources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "mkdir -p \"${BUILT_PRODUCTS_DIR}/DerivedSources/WebCore\"\ncd \"${BUILT_PRODUCTS_DIR}/DerivedSources/WebCore\"\n\n/bin/ln -sfh \"${SRCROOT}\" WebCore\nexport WebCore=\"WebCore\"\n\nif [ ! $CC ]; then\n export CC=\"`xcrun -find clang`\"\nfi\n\nif [ ! $GPERF ]; then\n export GPERF=\"`xcrun -find gperf`\"\nfi\n\nif [ \"${ACTION}\" = \"build\" -o \"${ACTION}\" = \"install\" -o \"${ACTION}\" = \"installhdrs\" ]; then\n make --no-builtin-rules -f \"WebCore/DerivedSources.make\" -j `/usr/sbin/sysctl -n hw.availcpu` SDKROOT=\"${SDKROOT}\"\nfi\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 417DA6CD13734E02007C57FB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 417DA6D913734E6E007C57FB /* Internals.cpp in Sources */, + A7BF7EDF14C9175A0014489D /* InternalSettings.cpp in Sources */, + 53E29E5E167A8A1900586D3D /* InternalSettingsGenerated.cpp in Sources */, + 417DA71D13735DFA007C57FB /* JSInternals.cpp in Sources */, + A740B5A714C935AF00A77FA4 /* JSInternalSettings.cpp in Sources */, + 53ED3FDE167A88E7006762E6 /* JSInternalSettingsGenerated.cpp in Sources */, + A740B59714C935AF00A77FA4 /* JSMallocStatistics.cpp in Sources */, + CD5393D3175E018600C07123 /* JSMemoryInfo.cpp in Sources */, + EBF5121C1696496C0056BD25 /* JSTypeConversions.cpp in Sources */, + CDC26B40160A8CC60026757B /* MockCDM.cpp in Sources */, + AA5F3B8F16CC4B3900455EB0 /* PlatformSpeechSynthesizerMock.cpp in Sources */, + 41815C1E138319830057AAA4 /* WebCoreTestSupport.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5D87BB4C11E3EAEB00702B6F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5D87BB8311E3ED8600702B6F /* ExportFileGenerator.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 93F19A0C08245E59001E9ABC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 41E1B1D00FF5986900576B3B /* AbstractWorker.cpp in Sources */, + 0F29C16E1300C2E2002D794E /* AccessibilityAllInOne.cpp in Sources */, + 76CDD2F21103DA6600680521 /* AccessibilityMenuList.cpp in Sources */, + 76CDD2F61103DA6600680521 /* AccessibilityMenuListOption.cpp in Sources */, + 76CDD2F41103DA6600680521 /* AccessibilityMenuListPopup.cpp in Sources */, + 29ACB214143E7498006BCA5F /* AccessibilityMockObject.cpp in Sources */, + AAA728F616D1D8BC00D3BBC6 /* AccessibilityObjectIOS.mm in Sources */, + 29A812480FBB9CA900510293 /* AccessibilityObjectMac.mm in Sources */, + 29D7BCF61444AF580070619C /* AccessibilitySpinButton.cpp in Sources */, + B5D31DFA11CF610B009F22B4 /* ActiveDOMCallback.cpp in Sources */, + E1C4DE6E0EA75C650023CCD6 /* ActiveDOMObject.cpp in Sources */, + 84D0C4041115F1D40018AA34 /* AffineTransform.cpp in Sources */, + CE08C3D1152B599A0021B8C2 /* AlternativeTextController.cpp in Sources */, + CE7B2DB41586ABAD0098B3FA /* AlternativeTextUIController.mm in Sources */, + FD31603D12B0267600C1A359 /* AnalyserNode.cpp in Sources */, + 490707E61219C04300D90E51 /* ANGLEWebKitBridge.cpp in Sources */, + 49E912AA0EFAC906009D0CAF /* Animation.cpp in Sources */, + 316FE1110E6E1DA700BF6088 /* AnimationBase.cpp in Sources */, + 316FE1130E6E1DA700BF6088 /* AnimationController.cpp in Sources */, + 49E912AC0EFAC906009D0CAF /* AnimationList.cpp in Sources */, + 93309DD6099E64920056E581 /* AppendNodeCommand.cpp in Sources */, + 1A8F6BBC0DB55CDC001DB794 /* ApplicationCache.cpp in Sources */, + 1A8F6BBE0DB55CDC001DB794 /* ApplicationCacheGroup.cpp in Sources */, + 24F54EAC101FE914000AE741 /* ApplicationCacheHost.cpp in Sources */, + 1A8F6BC00DB55CDC001DB794 /* ApplicationCacheResource.cpp in Sources */, + 1A2AAC580DC2A3B100A20D9A /* ApplicationCacheStorage.cpp in Sources */, + 9B417065125662B3006B28FC /* ApplyBlockElementCommand.cpp in Sources */, + 93309DD8099E64920056E581 /* ApplyStyleCommand.cpp in Sources */, + 37DDCD9E13844FFA0008B793 /* Archive.cpp in Sources */, + 512DD8FA0D91E6AF000F89EE /* ArchiveFactory.cpp in Sources */, + 512DD8FB0D91E6AF000F89EE /* ArchiveResource.cpp in Sources */, + 512DD8F70D91E6AF000F89EE /* ArchiveResourceCollection.cpp in Sources */, + BCFB2F76097A2E1A00BA703D /* Arena.cpp in Sources */, + 49B3760C15C6C6840059131D /* ArrayValue.cpp in Sources */, + FD5686C913AC180200B69C68 /* AsyncAudioDecoder.cpp in Sources */, + E1CDE92015018ED000862CC5 /* AsyncFileStream.cpp in Sources */, + 1AA21250163F0DA80000E63F /* AtomicStringCF.cpp in Sources */, + A8C4A80E09D563270003AC8D /* Attr.cpp in Sources */, + FD629EA4154B47160006D026 /* AudioBasicInspectorNode.cpp in Sources */, + FD315FF612B0267600C1A359 /* AudioBasicProcessorNode.cpp in Sources */, + FD315FF812B0267600C1A359 /* AudioBuffer.cpp in Sources */, + FD315FFB12B0267600C1A359 /* AudioBufferSourceNode.cpp in Sources */, + FD31607B12B026F700C1A359 /* AudioBus.cpp in Sources */, + FD3160BB12B0272A00C1A359 /* AudioBusMac.mm in Sources */, + FD31607D12B026F700C1A359 /* AudioChannel.cpp in Sources */, + FD31600412B0267600C1A359 /* AudioContext.cpp in Sources */, + CD0EEE0E14743F39003EAFA2 /* AudioDestinationIOS.cpp in Sources */, + FD3160BC12B0272A00C1A359 /* AudioDestinationMac.cpp in Sources */, + FD31600712B0267600C1A359 /* AudioDestinationNode.cpp in Sources */, + FD31608112B026F700C1A359 /* AudioDSPKernelProcessor.cpp in Sources */, + FD3160BE12B0272A00C1A359 /* AudioFileReaderMac.cpp in Sources */, + FD31600F12B0267600C1A359 /* AudioListener.cpp in Sources */, + FD31601212B0267600C1A359 /* AudioNode.cpp in Sources */, + FD31601512B0267600C1A359 /* AudioNodeInput.cpp in Sources */, + FD31601712B0267600C1A359 /* AudioNodeOutput.cpp in Sources */, + FD31601C12B0267600C1A359 /* AudioParam.cpp in Sources */, + FD35918F138DB22000E1EBEC /* AudioParamTimeline.cpp in Sources */, + FD31601F12B0267600C1A359 /* AudioProcessingEvent.cpp in Sources */, + FD31608512B026F700C1A359 /* AudioResampler.cpp in Sources */, + FD31608712B026F700C1A359 /* AudioResamplerKernel.cpp in Sources */, + FD8C46EB154608E700A5910C /* AudioScheduledSourceNode.cpp in Sources */, + CDA79824170A258300D45C55 /* AudioSession.cpp in Sources */, + CDA79827170A279100D45C55 /* AudioSessionIOS.mm in Sources */, + CD54DE4B17469C6D005E5B36 /* AudioSessionMac.cpp in Sources */, + CDAE8C091746B95700532D78 /* AudioSessionManager.cpp in Sources */, + CD54DE4717468B6F005E5B36 /* AudioSessionManagerMac.cpp in Sources */, + FDB052DF1561A42C00B500D6 /* AudioSummingJunction.cpp in Sources */, + BE88E0D81715D2A200658D98 /* AudioTrack.cpp in Sources */, + BE88E0DB1715D2A200658D98 /* AudioTrackList.cpp in Sources */, + FD31608A12B026F700C1A359 /* AudioUtilities.cpp in Sources */, + 934F71380D5A6EFF00018D69 /* AuthenticationChallengeBase.cpp in Sources */, + 514C764D0CE9234E007EF3CD /* AuthenticationMac.mm in Sources */, + 45830D4D1679B4F800ACF8C3 /* AutoscrollController.cpp in Sources */, + A8CFF0500A154F09000A4234 /* AutoTableLayout.cpp in Sources */, + AAA728F916D1D8BC00D3BBC6 /* AXObjectCacheIOS.mm in Sources */, + 29A8124B0FBB9CA900510293 /* AXObjectCacheMac.mm in Sources */, + BCA8C81F11E3D36900812FB7 /* BackForwardController.cpp in Sources */, + BCA8CA5F11E4E6D100812FB7 /* BackForwardListImpl.cpp in Sources */, + 97DC69EC16B9F529008CFD6F /* BackgroundHTMLInputStream.cpp in Sources */, + 979DC03916A7993900807794 /* BackgroundHTMLParser.cpp in Sources */, + BC124EE70C2641CD009E2349 /* BarProp.cpp in Sources */, + 379E61C9126CA5C300B63E8D /* BaseButtonInputType.cpp in Sources */, + 379E61CB126CA5C400B63E8D /* BaseCheckableInputType.cpp in Sources */, + F5E0C65B1643C42C00D6CB69 /* BaseChooserOnlyDateAndTimeInputType.cpp in Sources */, + C33EE5C414FB49610002095A /* BaseClickableWithKeyInputType.cpp in Sources */, + F59C95FF1255B23F000623C0 /* BaseDateAndTimeInputType.cpp in Sources */, + F55B3DAD1251F12D003EF269 /* BaseTextInputType.cpp in Sources */, + FBD6AF8915EF25DB008B7110 /* BasicShapeFunctions.cpp in Sources */, + FBD6AF8D15EF260A008B7110 /* BasicShapes.cpp in Sources */, + AB23A32709BBA7D00067CC53 /* BeforeTextInsertedEvent.cpp in Sources */, + 85031B3C0A44EFC700F992E0 /* BeforeUnloadEvent.cpp in Sources */, + B2C3DA230D006C1D00EF6F26 /* BidiContext.cpp in Sources */, + BCE7898B1120E8020060ECE5 /* BidiRun.cpp in Sources */, + 973AA3F915D0891B00E38A85 /* BindingSecurity.cpp in Sources */, + 973AA3F415D088F000E38A85 /* BindingState.cpp in Sources */, + FD31608C12B026F700C1A359 /* Biquad.cpp in Sources */, + FD31602412B0267600C1A359 /* BiquadDSPKernel.cpp in Sources */, + FDC54F041399B0DA008D9117 /* BiquadFilterNode.cpp in Sources */, + FD31602612B0267600C1A359 /* BiquadProcessor.cpp in Sources */, + A89943290B42338800D7C802 /* BitmapImage.cpp in Sources */, + 377A3A9015EFCE9B0059F5C7 /* BitmapImageCG.cpp in Sources */, + 976D6C78122B8A3D001FD1F7 /* Blob.cpp in Sources */, + 2EDEF1F3121B0EFC00726DB2 /* BlobData.cpp in Sources */, + E14A94D716DFDF950068DE82 /* BlobRegistry.cpp in Sources */, + 2EDEF1F6121B0EFC00726DB2 /* BlobRegistryImpl.cpp in Sources */, + 2EB4BCD2121F03E300EC4885 /* BlobResourceHandle.cpp in Sources */, + 976D6C7E122B8A3D001FD1F7 /* BlobURL.cpp in Sources */, + 93F19AE108245E59001E9ABC /* BlockExceptions.mm in Sources */, + BCEA4854097D93020094C9E4 /* break_lines.cpp in Sources */, + 93309DDA099E64920056E581 /* BreakBlockquoteCommand.cpp in Sources */, + 59B597731108656B007159E8 /* BridgeJSC.cpp in Sources */, + F55B3DAF1251F12D003EF269 /* ButtonInputType.cpp in Sources */, + 1A569CF70D7E2B82007C3983 /* c_class.cpp in Sources */, + 1A569CF90D7E2B82007C3983 /* c_instance.cpp in Sources */, + 1A569CFB0D7E2B82007C3983 /* c_runtime.cpp in Sources */, + 1A569CFD0D7E2B82007C3983 /* c_utility.cpp in Sources */, + BCB16C190979C3BD00467741 /* CachedCSSStyleSheet.cpp in Sources */, + BC64B4CB0CB4295D005F2B62 /* CachedFont.cpp in Sources */, + 51C0AA410F2AA15E001648C2 /* CachedFrame.cpp in Sources */, + BCB16C1B0979C3BD00467741 /* CachedImage.cpp in Sources */, + 5101846A0B08602A004A825F /* CachedPage.cpp in Sources */, + D0EDA774143E303C0028E383 /* CachedRawResource.cpp in Sources */, + BCB16C1F0979C3BD00467741 /* CachedResource.cpp in Sources */, + E47B4BE90E71241600038854 /* CachedResourceHandle.cpp in Sources */, + BCB16C290979C3BD00467741 /* CachedResourceLoader.cpp in Sources */, + 5081E3C33CE580C16EF8B48B /* CachedResourceRequest.cpp in Sources */, + 6C638896A96CCEE50C8C946C /* CachedResourceRequestInitiators.cpp in Sources */, + BCB16C230979C3BD00467741 /* CachedScript.cpp in Sources */, + 5038BE401472AD980095E0D1 /* CachedShader.cpp in Sources */, + A104F24314C71F7A009E2C23 /* CachedSVGDocument.cpp in Sources */, + E1B533471717D0A100F205F9 /* CachedSVGDocumentReference.cpp in Sources */, + 0753860214489E9800B78452 /* CachedTextTrack.cpp in Sources */, + BCB16C270979C3BD00467741 /* CachedXSLStyleSheet.cpp in Sources */, + 49AE2D96134EE5F90072920A /* CalculationValue.cpp in Sources */, + B1827493134CA4C100B98C2D /* CallbackFunction.cpp in Sources */, + 6E4E91AC10F7FB3100A2779C /* CanvasContextAttributes.cpp in Sources */, + 49484FC1102CF23C00187DD3 /* CanvasGradient.cpp in Sources */, + FB91392716AE4C34001FE682 /* CanvasPathMethods.cpp in Sources */, + 49484FC4102CF23C00187DD3 /* CanvasPattern.cpp in Sources */, + 49C7B9DC1042D32F0009D447 /* CanvasRenderingContext.cpp in Sources */, + 49484FCA102CF23C00187DD3 /* CanvasRenderingContext2D.cpp in Sources */, + 49484FCD102CF23C00187DD3 /* CanvasStyle.cpp in Sources */, + 072CA86116CB4DC3008AE131 /* CaptionUserPreferences.cpp in Sources */, + 079D086C162F21F900DB8658 /* CaptionUserPreferencesMediaAF.cpp in Sources */, + 6550B69D099DF0270090D781 /* CDATASection.cpp in Sources */, + CDA98E0B1603CD6000FEA3B1 /* CDM.cpp in Sources */, + CD47B3FC16CC34F800A21EC8 /* CDMPrivateAVFoundation.mm in Sources */, + E1A8E56617552B2A007488E7 /* CFURLExtras.cpp in Sources */, + 97BC69DC1505F076001B74AC /* ChangeVersionWrapper.cpp in Sources */, + FD315FFE12B0267600C1A359 /* ChannelMergerNode.cpp in Sources */, + FD31600112B0267600C1A359 /* ChannelSplitterNode.cpp in Sources */, + 6550B69F099DF0270090D781 /* CharacterData.cpp in Sources */, + 9326DC0C09DAD5D600AFC847 /* CharsetData.cpp in Sources */, + F55B3DB11251F12D003EF269 /* CheckboxInputType.cpp in Sources */, + 93F925440F7EF5B8007E37C9 /* CheckedRadioButtons.cpp in Sources */, + D619A307144E00BE004BC302 /* ChildListMutationScope.cpp in Sources */, + A81872250977D3C0005826D9 /* ChildNodeList.cpp in Sources */, + 14D8238B0AF92DF60004F057 /* Chrome.cpp in Sources */, + ABAF22080C03B1C700B0BCF0 /* ChromeMac.mm in Sources */, + 4ACBC0BE12713CBD0094F9B2 /* ClassList.cpp in Sources */, + BC904B760D10998F00680D32 /* ClassNodeList.cpp in Sources */, + BCC0657D0F3CE1B700CD2D87 /* ClientRect.cpp in Sources */, + BCC065800F3CE1B700CD2D87 /* ClientRectList.cpp in Sources */, + A784941B0B5FE507001E237A /* Clipboard.cpp in Sources */, + 85031B3F0A44EFC700F992E0 /* ClipboardEvent.cpp in Sources */, + C585381A13A7DD4E00A3BBEE /* ClipboardIOS.mm in Sources */, + 93F19AFF08245E59001E9ABC /* ClipboardMac.mm in Sources */, + CDEA76351460B71A008B31F1 /* Clock.cpp in Sources */, + CDEA76341460B56F008B31F1 /* ClockGeneric.cpp in Sources */, + B27535660B053814002CE64F /* Color.cpp in Sources */, + 0FCF33240F2B9715004B6795 /* ColorCG.cpp in Sources */, + 1ABA76C911D20E47004C201C /* ColorData.cpp in Sources */, + B22279620D00BF220071B782 /* ColorDistance.cpp in Sources */, + B27535770B053814002CE64F /* ColorMac.mm in Sources */, + 6550B6A1099DF0270090D781 /* Comment.cpp in Sources */, + 37C236101097EE7700EF9F72 /* ComplexTextController.cpp in Sources */, + 37C238221098C84200EF9F72 /* ComplexTextControllerCoreText.mm in Sources */, + 4A6A0C5B15232F2400B09C6E /* ComposedShadowTreeWalker.cpp in Sources */, + 316FE1150E6E1DA700BF6088 /* CompositeAnimation.cpp in Sources */, + 93309DDC099E64920056E581 /* CompositeEditCommand.cpp in Sources */, + 79F2F5A11091939A000D87CB /* CompositionEvent.cpp in Sources */, + FD31608E12B026F700C1A359 /* Cone.cpp in Sources */, + BC0B36A40CD3C67C00AC7EB5 /* Console.cpp in Sources */, + 41F0618F0F5F069800A07EAC /* ConsoleMessage.cpp in Sources */, + A818721F0977D3C0005826D9 /* ContainerNode.cpp in Sources */, + A7A78CD51532BA62006C21E4 /* ContainerNodeAlgorithms.cpp in Sources */, + BC5EB9800E82072500B25965 /* ContentData.cpp in Sources */, + 57B791A314C6A62900F202D1 /* ContentDistributor.cpp in Sources */, + 2919A1EB16B3378900787213 /* ContentFilterMac.mm in Sources */, + 59102FBB14327D3B003C9D04 /* ContentSearchUtils.cpp in Sources */, + 97C471DB12F925BD0086354B /* ContentSecurityPolicy.cpp in Sources */, + 41D015CB0F4B5C71004A662F /* ContentType.cpp in Sources */, + 97627B8D14FB3CEE002CDCA1 /* ContextDestructionObserver.cpp in Sources */, + A7D3CA10157DF8E900860A97 /* ContextFeatures.cpp in Sources */, + 065AD4F60B0C2EDA005A2B1D /* ContextMenuController.cpp in Sources */, + 06027CB30B1CC03D00884B2D /* ContextMenuItemMac.mm in Sources */, + 93B6A0EA0B0BCA8400F5027A /* ContextMenuMac.mm in Sources */, + FD31602812B0267600C1A359 /* ConvolverNode.cpp in Sources */, + E1424C93164B52C800F32D40 /* CookieJar.cpp in Sources */, + E1424C90164B460B00F32D40 /* CookieJarMac.mm in Sources */, + 7EE6846312D26E3800E79415 /* CookieStorageCFNet.cpp in Sources */, + E13F01F11270E19000DFBA71 /* CookieStorageMac.mm in Sources */, + 9746AF2114F4DDE6003E7A72 /* Coordinates.cpp in Sources */, + BC5EB9500E82056B00B25965 /* CounterDirectives.cpp in Sources */, + 9392F1500AD1862300691BD4 /* CounterNode.cpp in Sources */, + D0B0556909C6700100307E43 /* CreateLinkCommand.cpp in Sources */, + 514C766D0CE923A1007EF3CD /* Credential.cpp in Sources */, + 51A052341058774F00CC9E95 /* CredentialStorage.cpp in Sources */, + 7EE6846512D26E3800E79415 /* CredentialStorageCFNet.cpp in Sources */, + E1B4CD2510B322E200BFFD7E /* CredentialStorageMac.mm in Sources */, + 2D481F00146B5C4C00AA7834 /* CrossfadeGeneratedImage.cpp in Sources */, + E1C416170F6563180092D2FB /* CrossOriginAccessControl.cpp in Sources */, + E1C415DE0F655D7C0092D2FB /* CrossOriginPreflightResultCache.cpp in Sources */, + 2E4346580F546A9900B0F1BA /* CrossThreadCopier.cpp in Sources */, + E16980491133644700894115 /* CRuntimeObject.cpp in Sources */, + 975CA28A130365F800E99AD9 /* Crypto.cpp in Sources */, + CAE9F90F146441F000C245B0 /* CSSAspectRatioValue.cpp in Sources */, + FBD6AF8B15EF25E5008B7110 /* CSSBasicShapes.cpp in Sources */, + E16A84F914C85CCC002977DF /* CSSBorderImage.cpp in Sources */, + BC274B31140EBED800EADFA6 /* CSSBorderImageSliceValue.cpp in Sources */, + 49AE2D8E134EE50C0072920A /* CSSCalculationValue.cpp in Sources */, + BC604A430DB5634E00204739 /* CSSCanvasValue.cpp in Sources */, + E1EBBBD40AAC9B87001FE8E2 /* CSSCharsetRule.cpp in Sources */, + BCEA478F097CAAC80094C9E4 /* CSSComputedStyleDeclaration.cpp in Sources */, + 2D8FEBDC143E3EF70072502B /* CSSCrossfadeValue.cpp in Sources */, + AA21ECCA0ABF0FBA002B834C /* CSSCursorImageValue.cpp in Sources */, + 4A9CC81716BB9AC600EC645A /* CSSDefaultStyleSheets.cpp in Sources */, + BC64B4D50CB4298A005F2B62 /* CSSFontFace.cpp in Sources */, + 409EBDB216B7EE7400CBA3FC /* CSSFontFaceLoadEvent.cpp in Sources */, + A80E6CE70A1989CA007FB8C5 /* CSSFontFaceRule.cpp in Sources */, + BC64B4D70CB4298A005F2B62 /* CSSFontFaceSource.cpp in Sources */, + BC64B4D90CB4298A005F2B62 /* CSSFontFaceSrcValue.cpp in Sources */, + BC64B4DB0CB4298A005F2B62 /* CSSFontSelector.cpp in Sources */, + BC02A6460E09AAE9004B6D2B /* CSSFunctionValue.cpp in Sources */, + BC23E4E10DAACE0F009FDC91 /* CSSGradientValue.cpp in Sources */, + 650F53DD09D15DDF00C9B0C8 /* CSSGrammar.cpp in Sources */, + FBF89045169E9F1F0052D86E /* CSSGroupingRule.cpp in Sources */, + BC23E76C0DAE88A9009FDC91 /* CSSImageGeneratorValue.cpp in Sources */, + 9393E5FF151A99F200066F06 /* CSSImageSetValue.cpp in Sources */, + A80E6CFE0A1989CA007FB8C5 /* CSSImageValue.cpp in Sources */, + A80E6CEB0A1989CA007FB8C5 /* CSSImportRule.cpp in Sources */, + A80E6CF00A1989CA007FB8C5 /* CSSInheritedValue.cpp in Sources */, + A80E6D020A1989CA007FB8C5 /* CSSInitialValue.cpp in Sources */, + BC772E16133162C2001EC9CE /* CSSLineBoxContainValue.cpp in Sources */, + A80E6CFC0A1989CA007FB8C5 /* CSSMediaRule.cpp in Sources */, + F98FFF4411A2676200F548E8 /* CSSOMUtils.cpp in Sources */, + A80E6CF50A1989CA007FB8C5 /* CSSPageRule.cpp in Sources */, + BC772B3D0C4EA91E0083285F /* CSSParser.cpp in Sources */, + BC02A5400E099C5A004B6D2B /* CSSParserValues.cpp in Sources */, + 977B3862122883E900B81FF8 /* CSSPreloadScanner.cpp in Sources */, + A80E6D050A1989CA007FB8C5 /* CSSPrimitiveValue.cpp in Sources */, + A80E6CF70A1989CA007FB8C5 /* CSSProperty.cpp in Sources */, + 78D02BC5154A18DF00B62D05 /* CSSPropertyAnimation.cpp in Sources */, + 1ABA76CA11D20E50004C201C /* CSSPropertyNames.cpp in Sources */, + 82E3D8DE122EA0D1003AE5BC /* CSSPropertySourceData.cpp in Sources */, + BC5A12DF0DC0414800C9AFAD /* CSSReflectValue.cpp in Sources */, + A80E6D060A1989CA007FB8C5 /* CSSRule.cpp in Sources */, + A80E6D090A1989CA007FB8C5 /* CSSRuleList.cpp in Sources */, + 371F51A20D262FA000ECE0D5 /* CSSSegmentedFontFace.cpp in Sources */, + A80E734F0A199C77007FB8C5 /* CSSSelector.cpp in Sources */, + E4C1789A0EE6903800824D69 /* CSSSelectorList.cpp in Sources */, + A80E6CEF0A1989CA007FB8C5 /* CSSStyleRule.cpp in Sources */, + A8EA80080A19516E00A8EF5F /* CSSStyleSheet.cpp in Sources */, + BC80C9870CD294EE00A0B7B3 /* CSSTimingFunctionValue.cpp in Sources */, + A882DA201593846A000115ED /* CSSToStyleMap.cpp in Sources */, + 371F53EA0D2704F900ECE0D5 /* CSSUnicodeRangeValue.cpp in Sources */, + AD03AAFA1468455300A39B5B /* CSSValue.cpp in Sources */, + 1ABA76CB11D20E57004C201C /* CSSValueKeywords.cpp in Sources */, + A80E6CE40A1989CA007FB8C5 /* CSSValueList.cpp in Sources */, + E49BDA0B131FD3E5003C56F0 /* CSSValuePool.cpp in Sources */, + E11AF15111B9A1A300805103 /* Cursor.cpp in Sources */, + 265541521489B233000DFC5D /* CursorIOS.cpp in Sources */, + 93F19A2608245E59001E9ABC /* CursorMac.mm in Sources */, + 62CD32591157E57C0063B0A7 /* CustomEvent.cpp in Sources */, + 50D40611147D49DE00D30BB5 /* CustomFilterCompiledProgram.cpp in Sources */, + 50987C26157D676D00BDA835 /* CustomFilterGlobalContext.cpp in Sources */, + 50D405F9147D31F300D30BB5 /* CustomFilterMesh.cpp in Sources */, + 7E12E91015FA5D3A005E4126 /* CustomFilterMeshGenerator.cpp in Sources */, + 50CC0A3914C6F5B10017AB51 /* CustomFilterOperation.cpp in Sources */, + 5093334F163B0E4300099A60 /* CustomFilterParameterList.cpp in Sources */, + 503D0CAA14B5B08700F32F57 /* CustomFilterProgram.cpp in Sources */, + 50D88CB515BDFDAA001809F4 /* CustomFilterProgramInfo.cpp in Sources */, + 503D0CAA14B5B08700F32F58 /* CustomFilterRenderer.cpp in Sources */, + A29532CF15DD5E1700469EBC /* CustomFilterValidatedProgram.cpp in Sources */, + 97BC6A201505F081001B74AC /* Database.cpp in Sources */, + 97BC6A231505F081001B74AC /* DatabaseAuthorizer.cpp in Sources */, + FE16CFD3169D1DED00D3A0C7 /* DatabaseBackend.cpp in Sources */, + 97BC69DA1505F076001B74AC /* DatabaseBackendBase.cpp in Sources */, + FE6F6AAF169E057500FC30A2 /* DatabaseBackendContext.cpp in Sources */, + FE16CFD5169D1DED00D3A0C7 /* DatabaseBackendSync.cpp in Sources */, + FEBC5F3116BD0CC300659BD3 /* DatabaseBase.cpp in Sources */, + 97BC6A271505F081001B74AC /* DatabaseContext.cpp in Sources */, + FE456F181677D74E005EDDF9 /* DatabaseManager.cpp in Sources */, + FEB26D28167A8F2A00FDD26B /* DatabaseServer.cpp in Sources */, + FEDEF84116797108000E444A /* DatabaseStrategy.cpp in Sources */, + 97BC6A2A1505F081001B74AC /* DatabaseSync.cpp in Sources */, + 97BC6A2D1505F081001B74AC /* DatabaseTask.cpp in Sources */, + 97BC6A2F1505F081001B74AC /* DatabaseThread.cpp in Sources */, + 97BC6A311505F081001B74AC /* DatabaseTracker.cpp in Sources */, + BC64641D11D7F416006455B0 /* DatasetDOMStringMap.cpp in Sources */, + 2E97CCEA12939CB800C5C8FF /* DataView.cpp in Sources */, + A5732B0A136A161D005C8D7C /* DateComponents.cpp in Sources */, + F55B3DB51251F12D003EF269 /* DateInputType.cpp in Sources */, + F55B3DB71251F12D003EF269 /* DateTimeInputType.cpp in Sources */, + F55B3DB91251F12D003EF269 /* DateTimeLocalInputType.cpp in Sources */, + 45FEA5CF156DDE8C00654101 /* Decimal.cpp in Sources */, + A8C228A211D5722E00D5A7D3 /* DecodedDataDocumentParser.cpp in Sources */, + 4162A450101145AE00DFF3ED /* DedicatedWorkerGlobalScope.cpp in Sources */, + 41A3D58E101C152D00316D07 /* DedicatedWorkerThread.cpp in Sources */, + FD06DFA5134A4DEF006F5D7D /* DefaultAudioDestinationNode.cpp in Sources */, + 4167EBF5102962BA003D252A /* DefaultSharedWorkerRepository.cpp in Sources */, + FD31602B12B0267600C1A359 /* DelayDSPKernel.cpp in Sources */, + FD31602D12B0267600C1A359 /* DelayNode.cpp in Sources */, + FD31603012B0267600C1A359 /* DelayProcessor.cpp in Sources */, + 1CE83AC40ADAFFD8009354F6 /* DeleteButton.cpp in Sources */, + 1CE83AC30ADAFFD7009354F6 /* DeleteButtonController.cpp in Sources */, + 93309DDE099E64920056E581 /* DeleteFromTextNodeCommand.cpp in Sources */, + 93309DE0099E64920056E581 /* DeleteSelectionCommand.cpp in Sources */, + E100EE751546EAC100BA11D1 /* DeprecatedStyleBuilder.cpp in Sources */, + A7C9ABF81357A3BF00F5503F /* DetailsMarkerControl.cpp in Sources */, + CCC2B51515F613060048CDD6 /* DeviceController.cpp in Sources */, + 31FB1A58120A5D0600DC02A0 /* DeviceMotionController.cpp in Sources */, + 31FB1A5A120A5D0600DC02A0 /* DeviceMotionData.cpp in Sources */, + 31FB1A5C120A5D0600DC02A0 /* DeviceMotionEvent.cpp in Sources */, + 59309A1111F4AE5800250603 /* DeviceOrientationClientMock.cpp in Sources */, + 59A8F1D411A69508001AC34A /* DeviceOrientationController.cpp in Sources */, + 59D1C10411EB5DCF00B638C8 /* DeviceOrientationData.cpp in Sources */, + 59A85EA2119D68D900DEF1EF /* DeviceOrientationEvent.cpp in Sources */, + CD37B39815C1B971006DC898 /* DiagnosticLoggingKeys.cpp in Sources */, + CECADFC6153778FF00E37068 /* DictationAlternative.cpp in Sources */, + CECADFC8153778FF00E37068 /* DictationCommand.cpp in Sources */, + 312D67B11535691F00563D0D /* Dictionary.cpp in Sources */, + FDAF19981513D131008DB0C3 /* DirectConvolver.cpp in Sources */, + 893C48021248BD3A002B3D86 /* DirectoryReaderSync.cpp in Sources */, + 49FC7A501444AF5F00A5D864 /* DisplayRefreshMonitor.cpp in Sources */, + 49AF2D6C14435D210016A784 /* DisplayRefreshMonitorMac.cpp in Sources */, + 5D8C4DBF1428222C0026CE72 /* DisplaySleepDisabler.cpp in Sources */, + FD31609012B026F700C1A359 /* Distance.cpp in Sources */, + A1E1154413015C3D0054AC8C /* DistantLightSource.cpp in Sources */, + B2F34FE90E82F82700F627CD /* DNSCFNet.cpp in Sources */, + F293B27E56C112F373FFF27E /* DNSResolveQueue.cpp in Sources */, + A8185F3C09765766005826D9 /* Document.cpp in Sources */, + A3BB59F31457A40D00AC56FE /* DocumentEventQueue.cpp in Sources */, + A8185F3F09765766005826D9 /* DocumentFragment.cpp in Sources */, + 93E227E00AF589AD00D48324 /* DocumentLoader.cpp in Sources */, + 1C26497A0D7E248A00BD10F2 /* DocumentLoaderMac.cpp in Sources */, + 861C2EA413FB4FDD00062ABB /* DocumentLoadTiming.cpp in Sources */, + A781C6A713828B5D0012A62A /* DocumentMarker.cpp in Sources */, + CE057FA51220731100A476D5 /* DocumentMarkerController.cpp in Sources */, + 14947FFD12F80CD200A0F631 /* DocumentOrderedMap.cpp in Sources */, + A8C2280E11D4A59700D5A7D3 /* DocumentParser.cpp in Sources */, + 4A4F48A916B0DFC000EDBB29 /* DocumentRuleSets.cpp in Sources */, + AD6E71AC1668899D00320C13 /* DocumentSharedObjectPool.cpp in Sources */, + E47E276816036EDC00EE2AFB /* DocumentStyleSheetCollection.cpp in Sources */, + 0B9056190F2578BE0095FF6A /* DocumentThreadableLoader.cpp in Sources */, + A8185F3A09765766005826D9 /* DocumentType.cpp in Sources */, + 973889A0116EA9DC00ADF313 /* DocumentWriter.cpp in Sources */, + BC1A37AE097C715F0019F3D8 /* DOM.mm in Sources */, + BCD0FBD00DBD625E00B2F630 /* DOMAbstractView.mm in Sources */, + 1A8F6BC20DB55CDC001DB794 /* DOMApplicationCache.cpp in Sources */, + 85D389B30A991A7F00282145 /* DOMAttr.mm in Sources */, + BC946EF0107FDBAC00857193 /* DOMBeforeLoadEvent.mm in Sources */, + 2E2D99E810E2BC1C00496337 /* DOMBlob.mm in Sources */, + 85089CD80A98C42800A275AA /* DOMCDATASection.mm in Sources */, + 85ACA9870A9B520300671E90 /* DOMCharacterData.mm in Sources */, + 85089CDA0A98C42800A275AA /* DOMComment.mm in Sources */, + 978D07BE145A0F6C0096908D /* DOMCoreException.cpp in Sources */, + 858C38A60AA8F20400B187A4 /* DOMCounter.mm in Sources */, + BC1A37B1097C715F0019F3D8 /* DOMCSS.mm in Sources */, + 85032DD80AA8C9BE007D3B7D /* DOMCSSCharsetRule.mm in Sources */, + 85032DDA0AA8C9BE007D3B7D /* DOMCSSFontFaceRule.mm in Sources */, + 85032DDC0AA8C9BE007D3B7D /* DOMCSSImportRule.mm in Sources */, + 85032DDE0AA8C9BE007D3B7D /* DOMCSSMediaRule.mm in Sources */, + 85032DE00AA8C9BE007D3B7D /* DOMCSSPageRule.mm in Sources */, + 858C382D0AA8E40500B187A4 /* DOMCSSPrimitiveValue.mm in Sources */, + 85032DE20AA8C9BE007D3B7D /* DOMCSSRule.mm in Sources */, + 85032DE40AA8C9BE007D3B7D /* DOMCSSRuleList.mm in Sources */, + 85032DE60AA8C9BE007D3B7D /* DOMCSSStyleDeclaration.mm in Sources */, + 85032DE80AA8C9BE007D3B7D /* DOMCSSStyleRule.mm in Sources */, + 858C39290AA8FF9D00B187A4 /* DOMCSSStyleSheet.mm in Sources */, + FCD8832B16A49F8200962227 /* DOMCSSSupportsRule.mm in Sources */, + 85032DEA0AA8C9BE007D3B7D /* DOMCSSUnknownRule.mm in Sources */, + 858C381D0AA8E29600B187A4 /* DOMCSSValue.mm in Sources */, + 858C383D0AA8ED8200B187A4 /* DOMCSSValueList.mm in Sources */, + E10B9CCD0B747A44003ED890 /* DOMCustomXPathNSResolver.mm in Sources */, + 85ACABB10A9CAF8000671E90 /* DOMDocument.mm in Sources */, + 85089CDC0A98C42800A275AA /* DOMDocumentFragment.mm in Sources */, + 85CA975D0A962E5400690CCF /* DOMDocumentType.mm in Sources */, + 8518DCEA0A9CC80D0091B7A6 /* DOMDOMImplementation.mm in Sources */, + 52CCA9E915E3F64C0053C77F /* DOMDOMNamedFlowCollection.mm in Sources */, + 2D9A247315B9C2D100D34527 /* DOMDOMSecurityPolicy.mm in Sources */, + 7694565C1214DB630007CBAE /* DOMDOMTokenList.mm in Sources */, + 7AABA25914BC613300AA9A11 /* DOMEditor.cpp in Sources */, + 85ACA9C10A9B5FA500671E90 /* DOMElement.mm in Sources */, + 85CA96B90A9621A600690CCF /* DOMEntity.mm in Sources */, + 85089CDE0A98C42800A275AA /* DOMEntityReference.mm in Sources */, + BC1BDF24156C1883001C1243 /* DOMError.cpp in Sources */, + 85AFA8230AAF528A00E84305 /* DOMEvent.mm in Sources */, + BC1A37B3097C715F0019F3D8 /* DOMEvents.mm in Sources */, + BC00F0050E0A185500FD04E3 /* DOMFile.mm in Sources */, + 2E3BC109117D479800B9409A /* DOMFileError.mm in Sources */, + BC00F0080E0A185500FD04E3 /* DOMFileList.mm in Sources */, + 2ED609BC1145B07100C8684E /* DOMFormData.cpp in Sources */, + BC1A37B7097C715F0019F3D8 /* DOMHTML.mm in Sources */, + 85DF81280AA7787200486AD7 /* DOMHTMLAnchorElement.mm in Sources */, + 85C050BA0AD84F5E005532E7 /* DOMHTMLAppletElement.mm in Sources */, + 85ECBEEC0AA7626900544F0B /* DOMHTMLAreaElement.mm in Sources */, + 859A9C480AA5E3BD00B694B2 /* DOMHTMLBaseElement.mm in Sources */, + 85ECBEEE0AA7626900544F0B /* DOMHTMLBaseFontElement.mm in Sources */, + 859A9C4A0AA5E3BD00B694B2 /* DOMHTMLBodyElement.mm in Sources */, + 85183B430AA6926100F19FA3 /* DOMHTMLBRElement.mm in Sources */, + 85BA4CDE0AA6861B0088052D /* DOMHTMLButtonElement.mm in Sources */, + 93F9B6570BA0F35E00854064 /* DOMHTMLCanvasElement.mm in Sources */, + 85DF2F8F0AA3C88100AD64C5 /* DOMHTMLCollection.mm in Sources */, + F5C041E40FFCA96D00839D4A /* DOMHTMLDataListElement.mm in Sources */, + D359D792129CA3C00006E5D2 /* DOMHTMLDetailsElement.mm in Sources */, + 85BA4D0C0AA688680088052D /* DOMHTMLDirectoryElement.mm in Sources */, + 85BA4D0E0AA688680088052D /* DOMHTMLDivElement.mm in Sources */, + 85BA4D100AA688680088052D /* DOMHTMLDListElement.mm in Sources */, + 85BCBC140ABBA87D00381160 /* DOMHTMLDocument.mm in Sources */, + 85DF2EEE0AA387CB00AD64C5 /* DOMHTMLElement.mm in Sources */, + 85C050BB0AD84F5E005532E7 /* DOMHTMLEmbedElement.mm in Sources */, + 85BA4CE00AA6861B0088052D /* DOMHTMLFieldSetElement.mm in Sources */, + 85ECBEF00AA7626900544F0B /* DOMHTMLFontElement.mm in Sources */, + 85DF2C5D0AA341F600AD64C5 /* DOMHTMLFormElement.mm in Sources */, + 85DF81960AA77E4B00486AD7 /* DOMHTMLFrameElement.mm in Sources */, + 85DF81980AA77E4B00486AD7 /* DOMHTMLFrameSetElement.mm in Sources */, + 85992EBB0AA5069500AC0785 /* DOMHTMLHeadElement.mm in Sources */, + 85183B450AA6926100F19FA3 /* DOMHTMLHeadingElement.mm in Sources */, + 85ECBEF20AA7626900544F0B /* DOMHTMLHRElement.mm in Sources */, + 85992EBD0AA5069500AC0785 /* DOMHTMLHtmlElement.mm in Sources */, + 85DF819A0AA77E4B00486AD7 /* DOMHTMLIFrameElement.mm in Sources */, + 85DF812A0AA7787200486AD7 /* DOMHTMLImageElement.mm in Sources */, + 85F32AED0AA63B8700FF3184 /* DOMHTMLInputElement.mm in Sources */, + A6148A6812E41D940044A784 /* DOMHTMLKeygenElement.mm in Sources */, + 85BA4CE20AA6861B0088052D /* DOMHTMLLabelElement.mm in Sources */, + 85BA4CE40AA6861B0088052D /* DOMHTMLLegendElement.mm in Sources */, + 85BA4D120AA688680088052D /* DOMHTMLLIElement.mm in Sources */, + 85992EBF0AA5069500AC0785 /* DOMHTMLLinkElement.mm in Sources */, + 85ECBEF40AA7626900544F0B /* DOMHTMLMapElement.mm in Sources */, + BC5156E90C03B741008BB0EE /* DOMHTMLMarqueeElement.mm in Sources */, + 85BA4D140AA688680088052D /* DOMHTMLMenuElement.mm in Sources */, + 859A9C4E0AA5E3BD00B694B2 /* DOMHTMLMetaElement.mm in Sources */, + 85ECBEF60AA7626900544F0B /* DOMHTMLModElement.mm in Sources */, + 85DF812C0AA7787200486AD7 /* DOMHTMLObjectElement.mm in Sources */, + 85BA4D160AA688680088052D /* DOMHTMLOListElement.mm in Sources */, + 85F32AEF0AA63B8700FF3184 /* DOMHTMLOptGroupElement.mm in Sources */, + 8540756C0AD6CBF900620C57 /* DOMHTMLOptionElement.mm in Sources */, + 85DF2F9C0AA3CAE500AD64C5 /* DOMHTMLOptionsCollection.mm in Sources */, + 85183B470AA6926100F19FA3 /* DOMHTMLParagraphElement.mm in Sources */, + 85ECBEF80AA7626900544F0B /* DOMHTMLParamElement.mm in Sources */, + 85183B490AA6926100F19FA3 /* DOMHTMLPreElement.mm in Sources */, + A4226E961163D73A008B8397 /* DOMHTMLProgressElement.mm in Sources */, + 85183B4B0AA6926100F19FA3 /* DOMHTMLQuoteElement.mm in Sources */, + 85DF819C0AA77E4B00486AD7 /* DOMHTMLScriptElement.mm in Sources */, + 85F32AF10AA63B8700FF3184 /* DOMHTMLSelectElement.mm in Sources */, + 859A9C500AA5E3BD00B694B2 /* DOMHTMLStyleElement.mm in Sources */, + 85DF821E0AA7849E00486AD7 /* DOMHTMLTableCaptionElement.mm in Sources */, + 85DF82200AA7849E00486AD7 /* DOMHTMLTableCellElement.mm in Sources */, + 85DF82220AA7849E00486AD7 /* DOMHTMLTableColElement.mm in Sources */, + 85DF82710AA78B8B00486AD7 /* DOMHTMLTableElement.mm in Sources */, + 85DF82240AA7849E00486AD7 /* DOMHTMLTableRowElement.mm in Sources */, + 85DF82260AA7849E00486AD7 /* DOMHTMLTableSectionElement.mm in Sources */, + 85F32AF30AA63B8700FF3184 /* DOMHTMLTextAreaElement.mm in Sources */, + 85992EC10AA5069500AC0785 /* DOMHTMLTitleElement.mm in Sources */, + 85BA4D180AA688680088052D /* DOMHTMLUListElement.mm in Sources */, + A8185F3E09765766005826D9 /* DOMImplementation.cpp in Sources */, + 93C841FF09CE858300DFF5E5 /* DOMImplementationFront.cpp in Sources */, + BC1A37BA097C715F0019F3D8 /* DOMInternal.mm in Sources */, + 85FF315B0AAFBFCB00374F38 /* DOMKeyboardEvent.mm in Sources */, + 850656FF0AAB4763002D15C0 /* DOMMediaList.mm in Sources */, + 75793ED40D0CE85B007FC0AC /* DOMMessageEvent.mm in Sources */, + E1ACAF4C0E791AAF0087D12B /* DOMMessagePort.mm in Sources */, + A9C6E4E30D745E05006442E9 /* DOMMimeType.cpp in Sources */, + A9C6E4E70D745E18006442E9 /* DOMMimeTypeArray.cpp in Sources */, + 857E0B260AB043460036E447 /* DOMMouseEvent.mm in Sources */, + 85C7F5C00AAFB7CD004014DD /* DOMMutationEvent.mm in Sources */, + 52B6C9C215E3F4DF00690B05 /* DOMNamedFlowCollection.cpp in Sources */, + 8518DD790A9CF31B0091B7A6 /* DOMNamedNodeMap.mm in Sources */, + 853BF4DC0ABB6B55008647BB /* DOMNode.mm in Sources */, + 85526C380AB0A17E000302EA /* DOMNodeIterator.mm in Sources */, + 85ACAA8E0A9B759C00671E90 /* DOMNodeList.mm in Sources */, + 85CA96EB0A9624E900690CCF /* DOMNotation.mm in Sources */, + 856C8AE50A912649005C687B /* DOMObject.mm in Sources */, + BC53DA62114314BD000D817E /* DOMObjectHashTableMap.cpp in Sources */, + 85C7F5D10AAFB8D9004014DD /* DOMOverflowEvent.mm in Sources */, + E1284BD51044A01E00EAEB52 /* DOMPageTransitionEvent.mm in Sources */, + 1ACE53E70A8D18E70022947D /* DOMParser.cpp in Sources */, + 7A54881814E432A1006AE05A /* DOMPatchSupport.cpp in Sources */, + A9C6E4EB0D745E2B006442E9 /* DOMPlugin.cpp in Sources */, + A9C6E4EF0D745E38006442E9 /* DOMPluginArray.cpp in Sources */, + 85F56A7B0A98CE3700ADB60A /* DOMProcessingInstruction.mm in Sources */, + BCC573360D695BBE006EF517 /* DOMProgressEvent.mm in Sources */, + 8538F05C0AD722F1006A81D1 /* DOMRange.mm in Sources */, + 858C38A80AA8F20400B187A4 /* DOMRect.mm in Sources */, + BCAEFCAE1016CE4A0040D34E /* DOMRGBColor.mm in Sources */, + 2D9A246F15B9BD2F00D34527 /* DOMSecurityPolicy.cpp in Sources */, + BC5A86840C33676000EEA649 /* DOMSelection.cpp in Sources */, + 4ACBC0C312713CCA0094F9B2 /* DOMSettableTokenList.cpp in Sources */, + C55610F111A704EB00B82D27 /* DOMStringList.cpp in Sources */, + BC64640911D7F304006455B0 /* DOMStringMap.cpp in Sources */, + 0FF5025C102BA9010066F39A /* DOMStyleMedia.mm in Sources */, + 850657010AAB4763002D15C0 /* DOMStyleSheet.mm in Sources */, + 850657030AAB4763002D15C0 /* DOMStyleSheetList.mm in Sources */, + 85ACA99D0A9B575900671E90 /* DOMText.mm in Sources */, + 933A14AA0B7D1D0900A53FFD /* DOMTextEvent.mm in Sources */, + 188604B30F2E654A000B6443 /* DOMTimer.cpp in Sources */, + 76FC2B0B12370DA0006A991A /* DOMTokenList.cpp in Sources */, + E145349816A9BB6A000F6FD2 /* DOMTransitionEvent.mm in Sources */, + 85526CD30AB0B7DA000302EA /* DOMTreeWalker.mm in Sources */, + 85C7F4920AAF79DC004014DD /* DOMUIEvent.mm in Sources */, + 2E37DFDA12DBAFB800A6B233 /* DOMURL.cpp in Sources */, + BC1A37BF097C715F0019F3D8 /* DOMUtility.mm in Sources */, + 15C770A5100D41CD005BA267 /* DOMValidityState.mm in Sources */, + 31C0FF4A0E4CEFDD007D6FE5 /* DOMWebKitAnimationEvent.mm in Sources */, + A2E8AE4116A498CF006BB3AA /* DOMWebKitCSSFilterRule.mm in Sources */, + 3106037A143281CD00ABF4BA /* DOMWebKitCSSFilterValue.mm in Sources */, + 316FE07E0E6CCC2800BF6088 /* DOMWebKitCSSKeyframeRule.mm in Sources */, + 316FE0810E6CCC2800BF6088 /* DOMWebKitCSSKeyframesRule.mm in Sources */, + 498391510F1E76B400C23782 /* DOMWebKitCSSMatrix.mm in Sources */, + 8AD0A59714C88358000D83C5 /* DOMWebKitCSSRegionRule.mm in Sources */, + 31611E620E1C4E1400F6A579 /* DOMWebKitCSSTransformValue.mm in Sources */, + 3F2B33EC165AF15600E3987C /* DOMWebKitCSSViewportRule.mm in Sources */, + 8A195933147EA16E00D1EA61 /* DOMWebKitNamedFlow.mm in Sources */, + 31C0FF4D0E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.mm in Sources */, + 85C7F5E80AAFBAFB004014DD /* DOMWheelEvent.mm in Sources */, + 1403B99809EB13AF00797C7F /* DOMWindow.cpp in Sources */, + 517FBA1E151AB17C00B57959 /* DOMWindowExtension.cpp in Sources */, + 9712A5AD15004EDA0048AF10 /* DOMWindowIndexedDatabase.cpp in Sources */, + 97B38E28151C4273004622E9 /* DOMWindowNotifications.cpp in Sources */, + 97D2AD0314B823A60093DF32 /* DOMWindowProperty.cpp in Sources */, + AA2A5AD716A4861A00975A25 /* DOMWindowSpeechSynthesis.cpp in Sources */, + A8CCBB48151F831600AB7CE9 /* DOMWindowWebDatabase.cpp in Sources */, + BC53DA481143134D000D817E /* DOMWrapperWorld.cpp in Sources */, + 1A1D13810A5325520064BF5F /* DOMXPath.mm in Sources */, + 85E9E0A20AB3A0C700069CD0 /* DOMXPathExpression.mm in Sources */, + 85E9E0A60AB3A0C700069CD0 /* DOMXPathResult.mm in Sources */, + A7CA595E0B27BD9E00FA021D /* DragController.cpp in Sources */, + A71878900B2D04AC00A16ECE /* DragControllerMac.mm in Sources */, + A79546430B5C4CB4007B438F /* DragData.cpp in Sources */, + A795463E0B5C4C80007B438F /* DragDataMac.mm in Sources */, + A7CFB3D10B7ED10A0070C32D /* DragImage.cpp in Sources */, + A7CFB3D50B7ED1180070C32D /* DragImageMac.mm in Sources */, + 498770DB1242C535002226BA /* DrawingBuffer.cpp in Sources */, + 498771531243F9FA002226BA /* DrawingBufferMac.mm in Sources */, + FD6ED2C7136B8E66003CF072 /* DynamicsCompressor.cpp in Sources */, + FD537356137B653B00008DCE /* DynamicsCompressorKernel.cpp in Sources */, + FD6ED2C3136B8E42003CF072 /* DynamicsCompressorNode.cpp in Sources */, + 93309DE3099E64920056E581 /* EditCommand.cpp in Sources */, + 9BAB6C6D12550631001626D4 /* EditingStyle.cpp in Sources */, + 4B3043CC0AE0373B00A82647 /* Editor.cpp in Sources */, + 93A38B4B0D0E5808006872C2 /* EditorCommand.cpp in Sources */, + ED501DC60B249F2900AE18D9 /* EditorMac.mm in Sources */, + A8C4A80809D563270003AC8D /* Element.cpp in Sources */, + 4FFC022D1643B726004E1638 /* ElementRareData.cpp in Sources */, + FBDB619B16D6032A00BB3394 /* ElementRuleCollector.cpp in Sources */, + 57CF4C8614F7597A00ECFF14 /* ElementShadow.cpp in Sources */, + A8CFF6CB0A1561CD000A4234 /* EllipsisBox.cpp in Sources */, + F55B3DBB1251F12D003EF269 /* EmailInputType.cpp in Sources */, + F52AD5E41534245F0059FBE6 /* EmptyClients.cpp in Sources */, + A8EA7EC10A1945D000A8EF5F /* EntityReference.cpp in Sources */, + FD31609212B026F700C1A359 /* EqualPowerPanner.cpp in Sources */, + 2ECF7AE110162B5800427DE7 /* ErrorEvent.cpp in Sources */, + 85031B410A44EFC700F992E0 /* Event.cpp in Sources */, + 4138D3361244054800323D33 /* EventContext.cpp in Sources */, + 418A06D1133C04D500CD379C /* EventDispatcher.cpp in Sources */, + 4AF1AD3E13FD23A400AA9590 /* EventDispatchMediator.cpp in Sources */, + 978D07BC145A0F560096908D /* EventException.cpp in Sources */, + 9766504F144FBFFE00F6BB51 /* EventFactory.cpp in Sources */, + 93C09A810B064F00005ABD4D /* EventHandler.cpp in Sources */, + 93C09A7F0B064EEF005ABD4D /* EventHandlerMac.mm in Sources */, + AD4495F3141FC08900541EDF /* EventListenerMap.cpp in Sources */, + 26F40D4A14904A6300CA67C4 /* EventLoopIOS.mm in Sources */, + 1CA19E050DC255950065A994 /* EventLoopMac.mm in Sources */, + 939885C308B7E3D100E707C4 /* EventNames.cpp in Sources */, + 4AAAB4C416D379B5001DA41B /* EventPathWalker.cpp in Sources */, + 4A5CB1C516C3A5FD00AB2886 /* EventRetargeter.cpp in Sources */, + E0FEF372B27C53EAC1C1FBEE /* EventSource.cpp in Sources */, + E12EDBEA0B308E0B002704B6 /* EventTarget.cpp in Sources */, + BC60D8F20D2A11E000B9918F /* ExceptionBase.cpp in Sources */, + 973DC63F145A9409002842C2 /* ExceptionCodeDescription.cpp in Sources */, + A7CACDB113CE875C00BBBE3F /* ExceptionCodePlaceholder.cpp in Sources */, + 148AFDA60AF58360008CC700 /* ExceptionHandlers.mm in Sources */, + A024575116CEAA27000E5671 /* EXTDrawBuffers.cpp in Sources */, + 6E67D2A61280E8A4008758F7 /* Extensions3DOpenGL.cpp in Sources */, + 44DAB5B115A623580097C1E4 /* Extensions3DOpenGLCommon.cpp in Sources */, + 7728694E14F8882500F484DC /* EXTTextureFilterAnisotropic.cpp in Sources */, + 97C740141603F7A10011FF2D /* FeatureObserver.cpp in Sources */, + A75E8B880E1DE2D6007F2481 /* FEBlend.cpp in Sources */, + A75E8B8A0E1DE2D6007F2481 /* FEColorMatrix.cpp in Sources */, + A75E8B8C0E1DE2D6007F2481 /* FEComponentTransfer.cpp in Sources */, + A75E8B8E0E1DE2D6007F2481 /* FEComposite.cpp in Sources */, + 84730D781248F0B300D3A9C9 /* FEConvolveMatrix.cpp in Sources */, + 50D403C714768C9400D30BB5 /* FECustomFilter.cpp in Sources */, + 84730D7A1248F0B300D3A9C9 /* FEDiffuseLighting.cpp in Sources */, + 84730D7C1248F0B300D3A9C9 /* FEDisplacementMap.cpp in Sources */, + 4358E8801360A31700E4748C /* FEDropShadow.cpp in Sources */, + 84730D7E1248F0B300D3A9C9 /* FEFlood.cpp in Sources */, + 84801954108BAFB300CB2B1F /* FEGaussianBlur.cpp in Sources */, + 84730D801248F0B300D3A9C9 /* FELighting.cpp in Sources */, + 84730D821248F0B300D3A9C9 /* FEMerge.cpp in Sources */, + 84730D841248F0B300D3A9C9 /* FEMorphology.cpp in Sources */, + 84730D861248F0B300D3A9C9 /* FEOffset.cpp in Sources */, + 84730D881248F0B300D3A9C9 /* FESpecularLighting.cpp in Sources */, + 84730D8A1248F0B300D3A9C9 /* FETile.cpp in Sources */, + 84730D8C1248F0B300D3A9C9 /* FETurbulence.cpp in Sources */, + FD31609412B026F700C1A359 /* FFTConvolver.cpp in Sources */, + FD31609612B026F700C1A359 /* FFTFrame.cpp in Sources */, + FD3160C012B0272A00C1A359 /* FFTFrameMac.cpp in Sources */, + 976D6C80122B8A3D001FD1F7 /* File.cpp in Sources */, + 934FE9E50B5CA539003E4A73 /* FileChooser.cpp in Sources */, + 978D07B6145A0F030096908D /* FileException.cpp in Sources */, + 1A88A90417553CD7000C74F9 /* FileIconLoader.cpp in Sources */, + F55B3DBD1251F12D003EF269 /* FileInputType.cpp in Sources */, + 976D6C85122B8A3D001FD1F7 /* FileList.cpp in Sources */, + 976D6C88122B8A3D001FD1F7 /* FileReader.cpp in Sources */, + 2E75841D12779ADA0062628B /* FileReaderLoader.cpp in Sources */, + 2EDF369C122C94B4002F7D4E /* FileReaderSync.cpp in Sources */, + 2EF1BFEA121C9F4200C27627 /* FileStream.cpp in Sources */, + C57FEDE11212EE9C0097BE65 /* FileSystem.cpp in Sources */, + 89878564122CA064003AABDA /* FileSystemCallbacks.cpp in Sources */, + 5160306C0CC4362300C8AC25 /* FileSystemCF.cpp in Sources */, + 26C17A3F1491D2D400D12BA2 /* FileSystemIOS.mm in Sources */, + 514B3F760C722055000530DF /* FileSystemMac.mm in Sources */, + 5160300B0CC4251200C8AC25 /* FileSystemPOSIX.cpp in Sources */, + 976D6C8D122B8A3D001FD1F7 /* FileThread.cpp in Sources */, + BC5EB69E0E81DAEB00B25965 /* FillLayer.cpp in Sources */, + 08C925190FCC7C4A00480DEC /* FilterEffect.cpp in Sources */, + 31313F651443B35F006E2A90 /* FilterEffectRenderer.cpp in Sources */, + 49ECEB6D1499790D00CDD3A4 /* FilterOperation.cpp in Sources */, + 49ECEB6F1499790D00CDD3A4 /* FilterOperations.cpp in Sources */, + A8CFF04D0A154F09000A4234 /* FixedTableLayout.cpp in Sources */, + B27535680B053814002CE64F /* FloatPoint.cpp in Sources */, + B2E27C9F0B0F2B0900F17C7B /* FloatPoint3D.cpp in Sources */, + B27535590B053814002CE64F /* FloatPointCG.cpp in Sources */, + B27535780B053814002CE64F /* FloatPointMac.mm in Sources */, + 6EC480A116EA638A00A48DCB /* FloatPolygon.cpp in Sources */, + 0FD723830EC8BD9300CA5DD7 /* FloatQuad.cpp in Sources */, + B275356A0B053814002CE64F /* FloatRect.cpp in Sources */, + B275355A0B053814002CE64F /* FloatRectCG.cpp in Sources */, + B27535790B053814002CE64F /* FloatRectMac.mm in Sources */, + B275356C0B053814002CE64F /* FloatSize.cpp in Sources */, + B275355B0B053814002CE64F /* FloatSizeCG.cpp in Sources */, + B275357A0B053814002CE64F /* FloatSizeMac.mm in Sources */, + D72F6D79153159A3001EE44E /* FlowThreadController.cpp in Sources */, + 14993BE50B2F2B1C0050497F /* FocusController.cpp in Sources */, + B6D9D23614EABD260090D75E /* FocusEvent.cpp in Sources */, + B2C3DA600D006CD600EF6F26 /* Font.cpp in Sources */, + B2C3DA620D006CD600EF6F26 /* FontCache.cpp in Sources */, + B2AFFC7C0D00A5C10030074D /* FontCacheMac.mm in Sources */, + 37C2360B1097EDED00EF9F72 /* FontComplexTextMac.cpp in Sources */, + B2AFFC7D0D00A5C10030074D /* FontCustomPlatformData.cpp in Sources */, + 371F4F410D25B9AF00ECE0D5 /* FontData.cpp in Sources */, + 37ACCF690DA414E70089E602 /* FontDescription.cpp in Sources */, + 72626E020EF022FE00A07E20 /* FontFastPath.cpp in Sources */, + 4A6E9FC713C17D570046A7F8 /* FontFeatureSettings.cpp in Sources */, + 4A6E9FC313C17D1D0046A7F8 /* FontFeatureValue.cpp in Sources */, + E44EE3A817577EBD00EEE8CF /* FontGenericFamilies.cpp in Sources */, + B2C3DA670D006CD600EF6F26 /* FontGlyphs.cpp in Sources */, + B2AFFC800D00A5C10030074D /* FontMac.mm in Sources */, + 84B62685133138F90095A489 /* FontPlatformData.cpp in Sources */, + B5320D6C122A24E9002D1440 /* FontPlatformDataCocoa.mm in Sources */, + B734B181119B9911006587BD /* FontTranscoder.cpp in Sources */, + A80E6CF10A1989CA007FB8C5 /* FontValue.cpp in Sources */, + 4A0DA2FE129B241900AB61E1 /* FormAssociatedElement.cpp in Sources */, + D05CED290A40BB2C00C5AF38 /* FormatBlockCommand.cpp in Sources */, + F50664F7157F52DC00AC226F /* FormController.cpp in Sources */, + 514C766F0CE923A1007EF3CD /* FormData.cpp in Sources */, + 085B92BA0EFDE73D00E6123C /* FormDataBuilder.cpp in Sources */, + A8136D390973A8E700D74463 /* FormDataList.cpp in Sources */, + 7EE6846612D26E3800E79415 /* FormDataStreamCFNet.cpp in Sources */, + 514C764F0CE9234E007EF3CD /* FormDataStreamMac.mm in Sources */, + 656D373B0ADBA5DE00A4554D /* FormState.cpp in Sources */, + 41885B9411B6FDA6003383BB /* FormSubmission.cpp in Sources */, + 65BF022E0974816300C43196 /* Frame.cpp in Sources */, + A7B070D2130A409C00A3763C /* FrameActionScheduler.cpp in Sources */, + 974A862214B7ADBB003FDC76 /* FrameDestructionObserver.cpp in Sources */, + 932E16090AF578340025F408 /* FrameLoader.cpp in Sources */, + D000EBA211BDAFD400C47726 /* FrameLoaderStateMachine.cpp in Sources */, + 86BA766E166427A8005BE5D1 /* FrameLoadRequest.cpp in Sources */, + 65BF02450974819000C43196 /* FrameMac.mm in Sources */, + 93309E0D099E64920056E581 /* FrameSelection.cpp in Sources */, + 4A8C96EB0BE69032004EEFF0 /* FrameSelectionMac.mm in Sources */, + 7CE30DA9171B63D200EC33E1 /* FrameSnapshottingMac.mm in Sources */, + 65A21484097A3F5300B9050A /* FrameTree.cpp in Sources */, + 65CBFEF90974F607001DAC25 /* FrameView.cpp in Sources */, + 97205AAF123928CA00B17380 /* FTPDirectoryDocument.cpp in Sources */, + 51C81B890C4422F70019ECE3 /* FTPDirectoryParser.cpp in Sources */, + FD31600C12B0267600C1A359 /* GainNode.cpp in Sources */, + 1432E8490C51493F00B1500F /* GCController.cpp in Sources */, + 4FB390AD15EF61F3007AD51F /* GeneratedImage.cpp in Sources */, + 2D481F03146B5C6500AA7834 /* GeneratorGeneratedImage.cpp in Sources */, + 0720B0A014D3323500642955 /* GenericEventQueue.cpp in Sources */, + 9746AF2314F4DDE6003E7A70 /* Geolocation.cpp in Sources */, + 9746AF2614F4DDE6003E7A70 /* GeolocationController.cpp in Sources */, + 0720B0A014D3323500642956 /* GestureEvent.cpp in Sources */, + B2C3DA6D0D006CD600EF6F26 /* GlyphPageTreeNode.cpp in Sources */, + B2AFFC830D00A5C10030074D /* GlyphPageTreeNodeMac.cpp in Sources */, + BC53C6080DA56C570021EB5D /* Gradient.cpp in Sources */, + BC53C60B0DA56CF10021EB5D /* GradientCG.cpp in Sources */, + B2A015A80AF6CD53006BCE0E /* GraphicsContext.cpp in Sources */, + 6E21C6C01126338500A7BE02 /* GraphicsContext3D.cpp in Sources */, + 6E21C6C21126339900A7BE02 /* GraphicsContext3DCG.cpp in Sources */, + 49FFBF1D11C8550E006A7118 /* GraphicsContext3DMac.mm in Sources */, + FBC220DF1237FBEB00BCF788 /* GraphicsContext3DOpenGL.cpp in Sources */, + 96ABA42314BCB80E00D56204 /* GraphicsContext3DOpenGLCommon.cpp in Sources */, + B2ED97710B1F55CE00257D0F /* GraphicsContextCG.cpp in Sources */, + B277B4040B22F37C0004BEC6 /* GraphicsContextMac.mm in Sources */, + 0F580B0C0F12A2690051D689 /* GraphicsLayer.cpp in Sources */, + 499B3ED6128CD31400E726C2 /* GraphicsLayerCA.cpp in Sources */, + 0FA24D79162DF91900A3F4C0 /* GraphicsLayerUpdater.cpp in Sources */, + B2A015AA0AF6CD53006BCE0E /* GraphicsTypes.cpp in Sources */, + C50B561612119D23008B46E0 /* GroupSettings.cpp in Sources */, + F55B3DBF1251F12D003EF269 /* HiddenInputType.cpp in Sources */, + D6FDAEF3149C06190037B1E1 /* HistogramSupport.cpp in Sources */, + BC94D1530C275C8B006BC617 /* History.cpp in Sources */, + 97DCE20110807C750057D394 /* HistoryController.cpp in Sources */, + 51741D120B07259A00ED442C /* HistoryItem.cpp in Sources */, + 5160F4980B0AA75F00C1D2AF /* HistoryItemMac.mm in Sources */, + 4969B0F213D0B33F00DF3521 /* HitTestingTransformState.cpp in Sources */, + 2D8287F616E4A0380086BD00 /* HitTestLocation.cpp in Sources */, + 9307F1D70AF2D59000DBA31A /* HitTestResult.cpp in Sources */, + FD31609812B026F700C1A359 /* HRTFDatabase.cpp in Sources */, + FD31609A12B026F700C1A359 /* HRTFDatabaseLoader.cpp in Sources */, + FD31609C12B026F700C1A359 /* HRTFElevation.cpp in Sources */, + FD31609E12B026F700C1A359 /* HRTFKernel.cpp in Sources */, + FD3160A012B026F700C1A359 /* HRTFPanner.cpp in Sources */, + BC97E23B109144950010D361 /* HTMLAllCollection.cpp in Sources */, + A8CFF7A40A156978000A4234 /* HTMLAnchorElement.cpp in Sources */, + A871D45E0A127CBC00B12A68 /* HTMLAppletElement.cpp in Sources */, + A8EA7D2F0A19385500A8EF5F /* HTMLAreaElement.cpp in Sources */, + E44613A10CD6331000FADA75 /* HTMLAudioElement.cpp in Sources */, + A871DC2A0A15205700B12A68 /* HTMLBaseElement.cpp in Sources */, + A8DF3FD3097FA0FC0052981B /* HTMLBaseFontElement.cpp in Sources */, + A871DE290A152AC800B12A68 /* HTMLBodyElement.cpp in Sources */, + A8CFF7A80A156978000A4234 /* HTMLBRElement.cpp in Sources */, + A81369D3097374F600D74463 /* HTMLButtonElement.cpp in Sources */, + 93F19AFD08245E59001E9ABC /* HTMLCanvasElement.cpp in Sources */, + A8DF3FD1097FA0FC0052981B /* HTMLCollection.cpp in Sources */, + 977B3864122883E900B81FF8 /* HTMLConstructionSite.cpp in Sources */, + 57B791A914C6A63300F202D1 /* HTMLContentElement.cpp in Sources */, + 5D4F51DF132725480016F541 /* HTMLConverter.mm in Sources */, + F5C041DA0FFCA7CE00839D4A /* HTMLDataListElement.cpp in Sources */, + D359D789129CA2710006E5D2 /* HTMLDetailsElement.cpp in Sources */, + A8EA79F90A1916DF00A8EF5F /* HTMLDirectoryElement.cpp in Sources */, + A8EA7CB10A192B9C00A8EF5F /* HTMLDivElement.cpp in Sources */, + A8EA79F50A1916DF00A8EF5F /* HTMLDListElement.cpp in Sources */, + 93F19A9108245E59001E9ABC /* HTMLDocument.cpp in Sources */, + 977B3866122883E900B81FF8 /* HTMLDocumentParser.cpp in Sources */, + 93309DE7099E64920056E581 /* htmlediting.cpp in Sources */, + 93F19A9208245E59001E9ABC /* HTMLElement.cpp in Sources */, + A17C81220F2A5CF7005DAAEB /* HTMLElementFactory.cpp in Sources */, + 977B37231228721700B81FF8 /* HTMLElementStack.cpp in Sources */, + A871D45F0A127CBC00B12A68 /* HTMLEmbedElement.cpp in Sources */, + 977B3869122883E900B81FF8 /* HTMLEntityParser.cpp in Sources */, + 977B386B122883E900B81FF8 /* HTMLEntitySearch.cpp in Sources */, + A8BC04921214F69600B5F122 /* HTMLEntityTable.cpp in Sources */, + A81369D5097374F600D74463 /* HTMLFieldSetElement.cpp in Sources */, + A8CFF7A20A156978000A4234 /* HTMLFontElement.cpp in Sources */, + 977B386E122883E900B81FF8 /* HTMLFormattingElementList.cpp in Sources */, + A81369CF097374F600D74463 /* HTMLFormControlElement.cpp in Sources */, + E14F1C4414B5DAC600EA9009 /* HTMLFormControlElementWithState.cpp in Sources */, + A8DF3FCF097FA0FC0052981B /* HTMLFormControlsCollection.cpp in Sources */, + A81369D1097374F600D74463 /* HTMLFormElement.cpp in Sources */, + A871DE230A152AC800B12A68 /* HTMLFrameElement.cpp in Sources */, + 14FFE31E0AE1963300136BF5 /* HTMLFrameElementBase.cpp in Sources */, + 93E2425F0B2B509500C732A1 /* HTMLFrameOwnerElement.cpp in Sources */, + A871DE2E0A152AC800B12A68 /* HTMLFrameSetElement.cpp in Sources */, + A871DE250A152AC800B12A68 /* HTMLHeadElement.cpp in Sources */, + A8EA7CAE0A192B9C00A8EF5F /* HTMLHeadingElement.cpp in Sources */, + A8EA7CB30A192B9C00A8EF5F /* HTMLHRElement.cpp in Sources */, + A871DE260A152AC800B12A68 /* HTMLHtmlElement.cpp in Sources */, + A871DE240A152AC800B12A68 /* HTMLIFrameElement.cpp in Sources */, + A8EA7D310A19385500A8EF5F /* HTMLImageElement.cpp in Sources */, + A8EA7D300A19385500A8EF5F /* HTMLImageLoader.cpp in Sources */, + A81369CD097374F600D74463 /* HTMLInputElement.cpp in Sources */, + 93309DE5099E64920056E581 /* HTMLInterchange.cpp in Sources */, + A81369E5097374F600D74463 /* HTMLKeygenElement.cpp in Sources */, + A81369E3097374F600D74463 /* HTMLLabelElement.cpp in Sources */, + A81369E1097374F600D74463 /* HTMLLegendElement.cpp in Sources */, + A8EA79FC0A1916DF00A8EF5F /* HTMLLIElement.cpp in Sources */, + A871DC210A15205700B12A68 /* HTMLLinkElement.cpp in Sources */, + A8EA7D320A19385500A8EF5F /* HTMLMapElement.cpp in Sources */, + A8EA7CAC0A192B9C00A8EF5F /* HTMLMarqueeElement.cpp in Sources */, + E44613A40CD6331000FADA75 /* HTMLMediaElement.cpp in Sources */, + A8EA79F80A1916DF00A8EF5F /* HTMLMenuElement.cpp in Sources */, + 2BE8E2C912A58A0100FAD550 /* HTMLMetaCharsetParser.cpp in Sources */, + A871DC270A15205700B12A68 /* HTMLMetaElement.cpp in Sources */, + A454424A119B3661009BE912 /* HTMLMeterElement.cpp in Sources */, + A8CFF7A90A156978000A4234 /* HTMLModElement.cpp in Sources */, + A8DF3FD5097FA0FC0052981B /* HTMLNameCollection.cpp in Sources */, + A8D06B3A0A265DCD005E7203 /* HTMLNames.cpp in Sources */, + A871D45B0A127CBC00B12A68 /* HTMLObjectElement.cpp in Sources */, + A8EA79FB0A1916DF00A8EF5F /* HTMLOListElement.cpp in Sources */, + A81369DF097374F600D74463 /* HTMLOptGroupElement.cpp in Sources */, + A81369DD097374F600D74463 /* HTMLOptionElement.cpp in Sources */, + 9327A94209968D1A0068A546 /* HTMLOptionsCollection.cpp in Sources */, + 4AD01008127E642A0015035F /* HTMLOutputElement.cpp in Sources */, + A8EA7CB20A192B9C00A8EF5F /* HTMLParagraphElement.cpp in Sources */, + A871D4590A127CBC00B12A68 /* HTMLParamElement.cpp in Sources */, + BC588B4B0BFA723C00EE679E /* HTMLParserErrorCodes.cpp in Sources */, + 93E2A306123E9DC0009FE12A /* HTMLParserIdioms.cpp in Sources */, + 973F418B169B96030006BF60 /* HTMLParserOptions.cpp in Sources */, + 977B3870122883E900B81FF8 /* HTMLParserScheduler.cpp in Sources */, + A871D4570A127CBC00B12A68 /* HTMLPlugInElement.cpp in Sources */, + 4415292F0E1AE8A000C4A2D0 /* HTMLPlugInImageElement.cpp in Sources */, + A8EA7CAD0A192B9C00A8EF5F /* HTMLPreElement.cpp in Sources */, + 977B3872122883E900B81FF8 /* HTMLPreloadScanner.cpp in Sources */, + A43BF5981149290A00C643CA /* HTMLProgressElement.cpp in Sources */, + 033A6A7E147E07E700509B36 /* HTMLPropertiesCollection.cpp in Sources */, + A8CFF7A50A156978000A4234 /* HTMLQuoteElement.cpp in Sources */, + A8D223FD16B52E4E00157288 /* HTMLResourcePreloader.cpp in Sources */, + A871DC220A15205700B12A68 /* HTMLScriptElement.cpp in Sources */, + 977B3874122883E900B81FF8 /* HTMLScriptRunner.cpp in Sources */, + A81369D9097374F600D74463 /* HTMLSelectElement.cpp in Sources */, + E44613A70CD6331000FADA75 /* HTMLSourceElement.cpp in Sources */, + 977E2DCD12F0E28300C13379 /* HTMLSourceTracker.cpp in Sources */, + 978AD67414130A8D00C7CAE3 /* HTMLSpanElement.cpp in Sources */, + A871DC260A15205700B12A68 /* HTMLStyleElement.cpp in Sources */, + D3D4E972130C7CFE007BA540 /* HTMLSummaryElement.cpp in Sources */, + A871DB320A150BD600B12A68 /* HTMLTableCaptionElement.cpp in Sources */, + A871DB2E0A150BD600B12A68 /* HTMLTableCellElement.cpp in Sources */, + A871DB290A150BD600B12A68 /* HTMLTableColElement.cpp in Sources */, + A871DB280A150BD600B12A68 /* HTMLTableElement.cpp in Sources */, + A871DB2D0A150BD600B12A68 /* HTMLTablePartElement.cpp in Sources */, + A871DB300A150BD600B12A68 /* HTMLTableRowElement.cpp in Sources */, + 93442CA00D2B336000338FF9 /* HTMLTableRowsCollection.cpp in Sources */, + A871DB260A150BD600B12A68 /* HTMLTableSectionElement.cpp in Sources */, + D66817FA166FE6D700FA07B4 /* HTMLTemplateElement.cpp in Sources */, + A81369D7097374F600D74463 /* HTMLTextAreaElement.cpp in Sources */, + 9BC6C21C13CCC97B008E0337 /* HTMLTextFormControlElement.cpp in Sources */, + A871DC290A15205700B12A68 /* HTMLTitleElement.cpp in Sources */, + 977B3877122883E900B81FF8 /* HTMLTokenizer.cpp in Sources */, + 0707568B142262D600414161 /* HTMLTrackElement.cpp in Sources */, + 977B37251228721700B81FF8 /* HTMLTreeBuilder.cpp in Sources */, + 9B7E78BD16F16CC600126914 /* HTMLTreeBuilderSimulator.cpp in Sources */, + A8EA79F30A1916DF00A8EF5F /* HTMLUListElement.cpp in Sources */, + E44613AA0CD6331000FADA75 /* HTMLVideoElement.cpp in Sources */, + BCCD74E50A4C8DDF005FDA6D /* HTMLViewSourceDocument.cpp in Sources */, + 977B3879122883E900B81FF8 /* HTMLViewSourceParser.cpp in Sources */, + 0B8C56D40F28627F000502E1 /* HTTPHeaderMap.cpp in Sources */, + 514C76720CE923A1007EF3CD /* HTTPParsers.cpp in Sources */, + 371A67CB11C6C7DB00047B8B /* HyphenationCF.cpp in Sources */, + 375CD23B119D44EA00A2A859 /* HyphenationMac.mm in Sources */, + 97E4028F13A696ED00913D67 /* IconController.cpp in Sources */, + 5126E6BB0A2E3B12005C29FA /* IconDatabase.cpp in Sources */, + 516953971329A3C800B92D04 /* IconDatabaseBase.cpp in Sources */, + 513F14530AB634C400094DDF /* IconLoader.cpp in Sources */, + B275358E0B053A66002CE64F /* IconMac.mm in Sources */, + 51E1ECC00C91C90400DC255B /* IconRecord.cpp in Sources */, + 45099C411370A7800058D513 /* IconURL.cpp in Sources */, + C585A66211D4FAC5004C3E4B /* IDBBindingUtilities.cpp in Sources */, + 9712A5B815004EDA0048AF10 /* IDBCursorBackendImpl.cpp in Sources */, + 9712A5C115004EDA0048AF10 /* IDBDatabaseBackendImpl.cpp in Sources */, + 9712A5C515004EDA0048AF10 /* IDBDatabaseCallbacksImpl.cpp in Sources */, + 9712A5C915004EDA0048AF10 /* IDBDatabaseException.cpp in Sources */, + 9712A5D115004EDA0048AF10 /* IDBFactoryBackendImpl.cpp in Sources */, + 9712A5D315004EDA0048AF10 /* IDBFactoryBackendInterface.cpp in Sources */, + 9712A5EC15004EDA0048AF10 /* IDBObjectStoreBackendImpl.cpp in Sources */, + 9712A5EF15004EDA0048AF10 /* IDBPendingTransactionMonitor.cpp in Sources */, + 9712A5F815004EDA0048AF10 /* IDBTransactionBackendImpl.cpp in Sources */, + 9712A5FC15004EDA0048AF10 /* IDBTransactionCoordinator.cpp in Sources */, + 9712A5FE15004EDA0048AF10 /* IDBVersionChangeEvent.cpp in Sources */, + 1A71D57B0F33819000F9CE4E /* IdentifierRep.cpp in Sources */, + 5913A24113D49EBA00F5B05C /* IdentifiersFactory.cpp in Sources */, + C3CF17A415B0063F00276D39 /* IdTargetObserver.cpp in Sources */, + C3CF17A615B0063F00276D39 /* IdTargetObserverRegistry.cpp in Sources */, + B275356F0B053814002CE64F /* Image.cpp in Sources */, + 43D2597713C816F400608559 /* ImageBuffer.cpp in Sources */, + B2A10B940B3818D700099AA4 /* ImageBufferCG.cpp in Sources */, + 2292B27C1356669400CF11EF /* ImageBufferDataCG.cpp in Sources */, + B275355E0B053814002CE64F /* ImageCG.cpp in Sources */, + A77979190D6B9D0C003851B9 /* ImageData.cpp in Sources */, + 97205AB51239291000B17380 /* ImageDocument.cpp in Sources */, + F55B3DC11251F12D003EF269 /* ImageInputType.cpp in Sources */, + 089582550E857A7E00F82C83 /* ImageLoader.cpp in Sources */, + B275357B0B053814002CE64F /* ImageMac.mm in Sources */, + 2D5A592F152525230036EE51 /* ImageOrientation.cpp in Sources */, + B275355F0B053814002CE64F /* ImageSourceCG.cpp in Sources */, + 4B3480930EEF50D400AC1B41 /* ImageSourceCGMac.mm in Sources */, + 316FE1170E6E1DA700BF6088 /* ImplicitAnimation.cpp in Sources */, + 07941791166E855F009416C2 /* InbandTextTrack.cpp in Sources */, + 07B442D6166C70B000556CAD /* InbandTextTrackPrivateAVF.cpp in Sources */, + 07AA6B6B166D2C0700D45671 /* InbandTextTrackPrivateAVFObjC.mm in Sources */, + 07367DE0172CA68200D861B9 /* InbandTextTrackPrivateLegacyAVFObjC.mm in Sources */, + DB23C2CB0A508D29002489EB /* IndentOutdentCommand.cpp in Sources */, + F3644AFF1119805900E0D537 /* InjectedScript.cpp in Sources */, + AAB6054E15874C58007B5031 /* InjectedScriptBase.cpp in Sources */, + AA73183E159255B900A93E6E /* InjectedScriptCanvasModule.cpp in Sources */, + 7A0E76F910BF08ED00A0276E /* InjectedScriptHost.cpp in Sources */, + F316396B1329481A00A649CB /* InjectedScriptManager.cpp in Sources */, + AAB6055015874C58007B5031 /* InjectedScriptModule.cpp in Sources */, + A8CFF5E60A155A05000A4234 /* InlineBox.cpp in Sources */, + A8CFF5E40A155A05000A4234 /* InlineFlowBox.cpp in Sources */, + BCEA4859097D93020094C9E4 /* InlineTextBox.cpp in Sources */, + 37E3524B12450C5200BAF5D9 /* InputType.cpp in Sources */, + C348612315FDE21E007A1CC9 /* InputTypeNames.cpp in Sources */, + 93309DE9099E64920056E581 /* InsertIntoTextNodeCommand.cpp in Sources */, + 57CF497414EE36D700ECFF14 /* InsertionPoint.cpp in Sources */, + 93309DEB099E64920056E581 /* InsertLineBreakCommand.cpp in Sources */, + D07DEAB90A36554A00CA30F8 /* InsertListCommand.cpp in Sources */, + 93309DED099E64920056E581 /* InsertNodeBeforeCommand.cpp in Sources */, + 93309DEF099E64920056E581 /* InsertParagraphSeparatorCommand.cpp in Sources */, + 93309DF1099E64920056E581 /* InsertTextCommand.cpp in Sources */, + 4F2D205512EAE7B3005C2874 /* InspectorAgent.cpp in Sources */, + B885E8D411E06DD2009FFBF4 /* InspectorApplicationCacheAgent.cpp in Sources */, + 4F707A9911EF679400ACDA69 /* InspectorBackendDispatcher.cpp in Sources */, + 7AA51B6F1483B61600AD2752 /* InspectorBaseAgent.cpp in Sources */, + AAD766EB157E502F00E85423 /* InspectorCanvasAgent.cpp in Sources */, + 7A1F2B52126C61B20006A7E6 /* InspectorClient.cpp in Sources */, + F3335BF812E07DC300D33011 /* InspectorConsoleAgent.cpp in Sources */, + 1C81B95B0E97330800266E07 /* InspectorController.cpp in Sources */, + F325A40A14EE36FA007324E2 /* InspectorCounters.cpp in Sources */, + 82AB1743124B99EC00C5069D /* InspectorCSSAgent.cpp in Sources */, + 4A9CC82016BF9BB400EC645A /* InspectorCSSOMWrappers.cpp in Sources */, + 7AB0B1C01211A62200A76940 /* InspectorDatabaseAgent.cpp in Sources */, + 41F062150F5F192600A07EAC /* InspectorDatabaseResource.cpp in Sources */, + F33F053D120B0DA500E5743A /* InspectorDebuggerAgent.cpp in Sources */, + 7A24587B1021EAF4000A00AA /* InspectorDOMAgent.cpp in Sources */, + F3D4C47812E07663003DA150 /* InspectorDOMDebuggerAgent.cpp in Sources */, + 7A74ECBA101839A600BF939E /* InspectorDOMStorageAgent.cpp in Sources */, + 15D17D21147231EB005EBCA6 /* InspectorFileSystemAgent.cpp in Sources */, + 4F4F5FFB11CBD2E100A186BF /* InspectorFrontend.cpp in Sources */, + F344C75811294FF600F26EEE /* InspectorFrontendClientLocal.cpp in Sources */, + 7A0E770E10C00A8800A0276E /* InspectorFrontendHost.cpp in Sources */, + 5112935F3D54B4B52FAF973F /* InspectorHeapProfilerAgent.cpp in Sources */, + 7A54857F14E02D51006AE05A /* InspectorHistory.cpp in Sources */, + 7ACD88D314C08BD60084EDD2 /* InspectorIndexedDBAgent.cpp in Sources */, + 4D273CF91669420800259CA1 /* InspectorInputAgent.cpp in Sources */, + 20D629261253690B00081543 /* InspectorInstrumentation.cpp in Sources */, + 71B1E1261640491A00B1880A /* InspectorLayerTreeAgent.cpp in Sources */, + 7AA51DD5148506A900AD2752 /* InspectorMemoryAgent.cpp in Sources */, + 7C522D4B15B477E8009B7C95 /* InspectorOverlay.cpp in Sources */, + 4F6FDD641341DEDD001F8EE3 /* InspectorPageAgent.cpp in Sources */, + 9F0D6B2E121BFEBA006C0288 /* InspectorProfilerAgent.cpp in Sources */, + 82AB1775125C826700C5069D /* InspectorResourceAgent.cpp in Sources */, + 7AA365EE12E7265400DCA242 /* InspectorRuntimeAgent.cpp in Sources */, + 4FA3B90A125CD12200300BAD /* InspectorState.cpp in Sources */, + 82AB1773125C826700C5069D /* InspectorStyleSheet.cpp in Sources */, + 82889B4C13C62392009A6156 /* InspectorStyleTextEditor.cpp in Sources */, + 754133AA102E00F400075D00 /* InspectorTimelineAgent.cpp in Sources */, + 573D134714CE39FF0057ABCA /* InspectorTypeBuilder.cpp in Sources */, + 4F3289B511A42AAB005ABE7E /* InspectorValues.cpp in Sources */, + F3810C1B1365A49600ED6E33 /* InspectorWorkerAgent.cpp in Sources */, + F350B73513F1377D00880C43 /* InstrumentingAgents.cpp in Sources */, + B27535600B053814002CE64F /* IntPointCG.cpp in Sources */, + B275357C0B053814002CE64F /* IntPointMac.mm in Sources */, + B27535730B053814002CE64F /* IntRect.cpp in Sources */, + B27535610B053814002CE64F /* IntRectCG.cpp in Sources */, + B275357D0B053814002CE64F /* IntRectMac.mm in Sources */, + B27535620B053814002CE64F /* IntSizeCG.cpp in Sources */, + B275357E0B053814002CE64F /* IntSizeMac.mm in Sources */, + 1C81BA090E97348300266E07 /* JavaScriptCallFrame.cpp in Sources */, + 418F88040FF957AE0080F045 /* JSAbstractWorker.cpp in Sources */, + FDA15EC912B03F50003A583A /* JSAnalyserNode.cpp in Sources */, + 49EECF00105070C400099FAB /* JSArrayBuffer.cpp in Sources */, + BC275CB311C5E85C00C9206C /* JSArrayBufferCustom.cpp in Sources */, + 49EECF1B105072F300099FAB /* JSArrayBufferView.cpp in Sources */, + 65DF31DA09D1C123000BE325 /* JSAttr.cpp in Sources */, + BC2ED6BC0C6BD2F000920BFF /* JSAttrCustom.cpp in Sources */, + FDA15E9D12B03EE1003A583A /* JSAudioBuffer.cpp in Sources */, + FDF7E9C313AC21DB00A51EAC /* JSAudioBufferCallback.cpp in Sources */, + CDDE691F171DFAD000A44D89 /* JSAudioBufferCustom.cpp in Sources */, + FDA15E9F12B03EE1003A583A /* JSAudioBufferSourceNode.cpp in Sources */, + FDEAAAF312B02EE400DCF33B /* JSAudioBufferSourceNodeCustom.cpp in Sources */, + FDA15EA512B03EE1003A583A /* JSAudioContext.cpp in Sources */, + FDEAAAF412B02EE400DCF33B /* JSAudioContextCustom.cpp in Sources */, + FDA15EA712B03EE1003A583A /* JSAudioDestinationNode.cpp in Sources */, + FDA15EAD12B03EE1003A583A /* JSAudioListener.cpp in Sources */, + FDA15EAF12B03EE1003A583A /* JSAudioNode.cpp in Sources */, + FDA15EB312B03EE1003A583A /* JSAudioParam.cpp in Sources */, + FDA15EB512B03EE1003A583A /* JSAudioProcessingEvent.cpp in Sources */, + BE8EF042171C8FF9009B48C3 /* JSAudioTrack.cpp in Sources */, + BE6DF711171CA2DA00DD52B8 /* JSAudioTrackCustom.cpp in Sources */, + BE8EF044171C8FF9009B48C3 /* JSAudioTrackList.cpp in Sources */, + BE6DF713171CA2DA00DD52B8 /* JSAudioTrackListCustom.cpp in Sources */, + BC124EFF0C26447A009E2349 /* JSBarProp.cpp in Sources */, + BC946346107A934B00857193 /* JSBeforeLoadEvent.cpp in Sources */, + FDF09DC81399B62200688E5B /* JSBiquadFilterNode.cpp in Sources */, + FD8AA63C1695148E00D2EA68 /* JSBiquadFilterNodeCustom.cpp in Sources */, + 2E2D99CD10E2BBDA00496337 /* JSBlob.cpp in Sources */, + 8931DE5B14C44C44000DC9D2 /* JSBlobCustom.cpp in Sources */, + 1449E287107D4DB400B5793F /* JSCallbackData.cpp in Sources */, + 65DF323909D1DE65000BE325 /* JSCanvasGradient.cpp in Sources */, + 65DF323B09D1DE65000BE325 /* JSCanvasPattern.cpp in Sources */, + 49EED1421051969400099FAB /* JSCanvasRenderingContext.cpp in Sources */, + 49EED1441051969400099FAB /* JSCanvasRenderingContext2D.cpp in Sources */, + 49EED14E1051971A00099FAB /* JSCanvasRenderingContext2DCustom.cpp in Sources */, + 49EED1501051971A00099FAB /* JSCanvasRenderingContextCustom.cpp in Sources */, + 93F9B7A00BA6032600854064 /* JSCDATASection.cpp in Sources */, + 93BA59B20F2AA5FE008E8E99 /* JSCDATASectionCustom.cpp in Sources */, + FDA15EA112B03EE1003A583A /* JSChannelMergerNode.cpp in Sources */, + FDA15EA312B03EE1003A583A /* JSChannelSplitterNode.cpp in Sources */, + 65DF31F309D1CC60000BE325 /* JSCharacterData.cpp in Sources */, + BCC065870F3CE2A700CD2D87 /* JSClientRect.cpp in Sources */, + BCC065890F3CE2A700CD2D87 /* JSClientRectList.cpp in Sources */, + BCA83E4F0D7CE1E9003421A8 /* JSClipboard.cpp in Sources */, + BCA83E520D7CE205003421A8 /* JSClipboardCustom.cpp in Sources */, + 51FB5505113E3E9100821176 /* JSCloseEvent.cpp in Sources */, + 93F9B6E00BA0FB7200854064 /* JSComment.cpp in Sources */, + 79AC9218109945C80021266E /* JSCompositionEvent.cpp in Sources */, + BC98543D0CD3D98B00069BC1 /* JSConsole.cpp in Sources */, + C0DFC8700DB6841A003EAE7C /* JSConsoleCustom.cpp in Sources */, + FDA15EBD12B03F0B003A583A /* JSConvolverNode.cpp in Sources */, + FE6FD48D0F676E9300092873 /* JSCoordinates.cpp in Sources */, + 930705D809E0C9B700B17FE4 /* JSCounter.cpp in Sources */, + 975CA2A11303679D00E99AD9 /* JSCrypto.cpp in Sources */, + 209B456B16796A7E00E54E4E /* JSCryptoCustom.cpp in Sources */, + BC46C1FA0C0DDC8F0020CFC3 /* JSCSSCharsetRule.cpp in Sources */, + 409EBDC516B7F3CA00CBA3FC /* JSCSSFontFaceLoadEvent.cpp in Sources */, + BC46C1FC0C0DDC8F0020CFC3 /* JSCSSFontFaceRule.cpp in Sources */, + E1AD14911297337400ACA989 /* JSCSSFontFaceRuleCustom.cpp in Sources */, + BC46C1FE0C0DDC8F0020CFC3 /* JSCSSImportRule.cpp in Sources */, + E1AD147C1297307E00ACA989 /* JSCSSImportRuleCustom.cpp in Sources */, + BC46C2000C0DDC8F0020CFC3 /* JSCSSMediaRule.cpp in Sources */, + E1AD14A31297345300ACA989 /* JSCSSMediaRuleCustom.cpp in Sources */, + BC46C2020C0DDC8F0020CFC3 /* JSCSSPageRule.cpp in Sources */, + E1AD14CD129735A400ACA989 /* JSCSSPageRuleCustom.cpp in Sources */, + 930705E909E0C9F000B17FE4 /* JSCSSPrimitiveValue.cpp in Sources */, + 14CF7B3309F6ECD700EB3665 /* JSCSSRule.cpp in Sources */, + BC46C1EE0C0DDBDF0020CFC3 /* JSCSSRuleCustom.cpp in Sources */, + A8D05FA70A23B301005E7203 /* JSCSSRuleList.cpp in Sources */, + 9392262F10321084006E7D5D /* JSCSSRuleListCustom.cpp in Sources */, + 142011B60A003133008303F9 /* JSCSSStyleDeclaration.cpp in Sources */, + BC5825F30C0B89380053F1B5 /* JSCSSStyleDeclarationCustom.cpp in Sources */, + BC46C2060C0DDCA10020CFC3 /* JSCSSStyleRule.cpp in Sources */, + E1AD14E81297377400ACA989 /* JSCSSStyleRuleCustom.cpp in Sources */, + BCC5BE000C0E93110011C2DB /* JSCSSStyleSheet.cpp in Sources */, + 14CF78A409F58CBF00EB3665 /* JSCSSValue.cpp in Sources */, + BC20FB7F0C0E8E6C00D1447F /* JSCSSValueCustom.cpp in Sources */, + A8D05FAB0A23B30F005E7203 /* JSCSSValueList.cpp in Sources */, + E4778B7F115A581A00B5D372 /* JSCustomEvent.cpp in Sources */, + 51EC92650CE90DD400F90308 /* JSCustomSQLStatementErrorCallback.cpp in Sources */, + E10B93C30B73C291003ED890 /* JSCustomXPathNSResolver.cpp in Sources */, + 1AE82F8F0CAAFA9D002237AE /* JSDatabase.cpp in Sources */, + B59DD69A119029E5007E9684 /* JSDatabaseCallback.cpp in Sources */, + B58CEB6A11913607002A6790 /* JSDatabaseSync.cpp in Sources */, + 2E97CE6F1293AD6B00C5C8FF /* JSDataView.cpp in Sources */, + 2E97CCF71293A43A00C5C8FF /* JSDataViewCustom.cpp in Sources */, + 4162A4571011464700DFF3ED /* JSDedicatedWorkerGlobalScope.cpp in Sources */, + 4162A454101145E300DFF3ED /* JSDedicatedWorkerGlobalScopeCustom.cpp in Sources */, + FDA15ED112B03F94003A583A /* JSDelayNode.cpp in Sources */, + 31FB1A65120A5D3F00DC02A0 /* JSDeviceMotionEvent.cpp in Sources */, + 31FB1A6C120A5D6900DC02A0 /* JSDeviceMotionEventCustom.cpp in Sources */, + 59A86006119DAF7F00DEF1EF /* JSDeviceOrientationEvent.cpp in Sources */, + 590E1B4B11E4EF700069F784 /* JSDeviceOrientationEventCustom.cpp in Sources */, + BCE438A2140C0DC0005E437E /* JSDictionary.cpp in Sources */, + 893C483412495472002B3D86 /* JSDirectoryReaderSync.cpp in Sources */, + 659DDC8209E198BA001BF3C6 /* JSDocument.cpp in Sources */, + 49C7BA8D1042F5B10009D447 /* JSDocumentCustom.cpp in Sources */, + 1A494EDE0A123F4C00FDAFC1 /* JSDocumentFragment.cpp in Sources */, + 65DF31F509D1CC60000BE325 /* JSDocumentType.cpp in Sources */, + 1AC2260C0DB69F190089B669 /* JSDOMApplicationCache.cpp in Sources */, + 93B70D6309EB0C7C009D8468 /* JSDOMBinding.cpp in Sources */, + BC60D7C00D29A46300B9918F /* JSDOMCoreException.cpp in Sources */, + 40ECAE8116B8B68A00C36103 /* JSDOMError.cpp in Sources */, + 2E0888D41148848A00AF4265 /* JSDOMFormData.cpp in Sources */, + 2E0888E6114884E200AF4265 /* JSDOMFormDataCustom.cpp in Sources */, + E1C36CBD0EB08062007410BC /* JSDOMGlobalObject.cpp in Sources */, + 65DF31F709D1CC60000BE325 /* JSDOMImplementation.cpp in Sources */, + 22885E641301AE4C00526E68 /* JSDOMImplementationCustom.cpp in Sources */, + A9D248060D757E7D00FDF959 /* JSDOMMimeType.cpp in Sources */, + A9D248080D757E7D00FDF959 /* JSDOMMimeTypeArray.cpp in Sources */, + A9C6E6470D7465CA006442E9 /* JSDOMMimeTypeArrayCustom.cpp in Sources */, + 52CCA9E215E3F62C0053C77F /* JSDOMNamedFlowCollection.cpp in Sources */, + 1ACE53DF0A8D18810022947D /* JSDOMParser.cpp in Sources */, + FB91392B16AE4FC0001FE682 /* JSDOMPath.cpp in Sources */, + A9D247FE0D757E6900FDF959 /* JSDOMPlugin.cpp in Sources */, + A9D248000D757E6900FDF959 /* JSDOMPluginArray.cpp in Sources */, + A9C6E64C0D7465E7006442E9 /* JSDOMPluginArrayCustom.cpp in Sources */, + A9C6E64D0D7465E7006442E9 /* JSDOMPluginCustom.cpp in Sources */, + BC5A86B50C3367E800EEA649 /* JSDOMSelection.cpp in Sources */, + 4ACBC0CA12713D0A0094F9B2 /* JSDOMSettableTokenList.cpp in Sources */, + C5137CF211A58378004ADB99 /* JSDOMStringList.cpp in Sources */, + 9A1B6F97158869C80011A8C4 /* JSDOMStringListCustom.cpp in Sources */, + BC64649711D82349006455B0 /* JSDOMStringMap.cpp in Sources */, + BC64649C11D8238C006455B0 /* JSDOMStringMapCustom.cpp in Sources */, + 7694563C1214D97C0007CBAE /* JSDOMTokenList.cpp in Sources */, + 14E0BC56136148A8002AD12E /* JSDOMTokenListCustom.cpp in Sources */, + 2E37E00512DBC5A400A6B233 /* JSDOMURL.cpp in Sources */, + 1403BA0C09EB18C700797C7F /* JSDOMWindow.cpp in Sources */, + BC6932730D7E293900AE44D1 /* JSDOMWindowBase.cpp in Sources */, + BCD9C2620C17AA67005C90A2 /* JSDOMWindowCustom.cpp in Sources */, + BCBFB53C0DCD29CF0019B3E5 /* JSDOMWindowShell.cpp in Sources */, + FD7868B9136B999200D403DF /* JSDynamicsCompressorNode.cpp in Sources */, + 65DF31F909D1CC60000BE325 /* JSElement.cpp in Sources */, + BC2ED5550C6B9BD300920BFF /* JSElementCustom.cpp in Sources */, + 65DF322F09D1DDBC000BE325 /* JSEntity.cpp in Sources */, + 93F9B7740BA5FDDC00854064 /* JSEntityReference.cpp in Sources */, + 2ECF7ADC10162B3800427DE7 /* JSErrorEvent.cpp in Sources */, + F3D461481161D53200CA0D09 /* JSErrorHandler.cpp in Sources */, + 14E8378409F85D1C00B85AE4 /* JSEvent.cpp in Sources */, + BCEFAF4E0C317E6900FA81F6 /* JSEventCustom.cpp in Sources */, + BC60D9BF0D2A269A00B9918F /* JSEventException.cpp in Sources */, + 93B70D6909EB0C7C009D8468 /* JSEventListener.cpp in Sources */, + E0FEF372B47C53EAC1C1FBEE /* JSEventSource.cpp in Sources */, + C6A703325C9D0B6CDCBC4D77 /* JSEventTarget.cpp in Sources */, + BC6090200E91B8EC000C68B5 /* JSEventTargetCustom.cpp in Sources */, + 3314ACEB10892086000F0E56 /* JSExceptionBase.cpp in Sources */, + 6EBF0E7612A9868800DB170A /* JSEXTDrawBuffers.cpp in Sources */, + 7728698314FD9ADA00F484DC /* JSEXTTextureFilterAnisotropic.cpp in Sources */, + BC00F0140E0A189500FD04E3 /* JSFile.cpp in Sources */, + 2E3BC0CA117D3E0800B9409A /* JSFileError.cpp in Sources */, + 898785F0122E1E87003AABDA /* JSFileException.cpp in Sources */, + BC00F0160E0A189500FD04E3 /* JSFileList.cpp in Sources */, + 2E94F43B119207DA00B7F75D /* JSFileReader.cpp in Sources */, + 2E7582EE12764F260062628B /* JSFileReaderCustom.cpp in Sources */, + 898785F4122E1EAC003AABDA /* JSFileReaderSync.cpp in Sources */, + 898785B2122CA2A7003AABDA /* JSFileSystemCallback.cpp in Sources */, + 893C47BB1238A0A9002B3D86 /* JSFileWriterCallback.cpp in Sources */, + 49EECF02105070C400099FAB /* JSFloat32Array.cpp in Sources */, + 6EBC5EAF138B50F200A0CF8A /* JSFloat64Array.cpp in Sources */, + B6D9D27C14EAC0860090D75E /* JSFocusEvent.cpp in Sources */, + FDA15EAB12B03EE1003A583A /* JSGainNode.cpp in Sources */, + FE80DA630E9C4703000D6F75 /* JSGeolocation.cpp in Sources */, + FE80D7AB0E9C1ED2000D6F75 /* JSGeolocationCustom.cpp in Sources */, + FE80DA650E9C4703000D6F75 /* JSGeoposition.cpp in Sources */, + 8482B7511198CB6B00BFB005 /* JSHashChangeEvent.cpp in Sources */, + BC94D14E0C275C68006BC617 /* JSHistory.cpp in Sources */, + BCE7B1930D4E86960075A539 /* JSHistoryCustom.cpp in Sources */, + BC97E412109154FA0010D361 /* JSHTMLAllCollection.cpp in Sources */, + BC97E42C10915B060010D361 /* JSHTMLAllCollectionCustom.cpp in Sources */, + 1A4A2DEF0A1B852A00C807F8 /* JSHTMLAnchorElement.cpp in Sources */, + 1A4A2DF10A1B852A00C807F8 /* JSHTMLAppletElement.cpp in Sources */, + BC4EDEF40C08F3FB007EDD49 /* JSHTMLAppletElementCustom.cpp in Sources */, + 1AE2AA1E0A1CDAB400B42B25 /* JSHTMLAreaElement.cpp in Sources */, + E44614370CD689C400FADA75 /* JSHTMLAudioElement.cpp in Sources */, + A80E7B120A19D606007FB8C5 /* JSHTMLBaseElement.cpp in Sources */, + 1AE2AA200A1CDAB400B42B25 /* JSHTMLBaseFontElement.cpp in Sources */, + 1AE2AA220A1CDAB400B42B25 /* JSHTMLBodyElement.cpp in Sources */, + 1AE2AA240A1CDAB400B42B25 /* JSHTMLBRElement.cpp in Sources */, + A80E7EA00A1A83E3007FB8C5 /* JSHTMLButtonElement.cpp in Sources */, + 938E666009F09B81008A48EC /* JSHTMLCanvasElement.cpp in Sources */, + 9392262D1032107B006E7D5D /* JSHTMLCanvasElementCustom.cpp in Sources */, + BCCBAD400C18C14200CE890F /* JSHTMLCollection.cpp in Sources */, + BCCBAD3B0C18BFF800CE890F /* JSHTMLCollectionCustom.cpp in Sources */, + 4A1E719014E101E400626F9D /* JSHTMLContentElement.cpp in Sources */, + F5C041E60FFCA96D00839D4A /* JSHTMLDataListElement.cpp in Sources */, + D359D8BE129CA55C0006E5D2 /* JSHTMLDetailsElement.cpp in Sources */, + 1A85B1E60A1B240500D8C87C /* JSHTMLDirectoryElement.cpp in Sources */, + 1A85B2B60A1B2AC700D8C87C /* JSHTMLDivElement.cpp in Sources */, + 1A85B1E80A1B240500D8C87C /* JSHTMLDListElement.cpp in Sources */, + 1A494E340A12358B00FDAFC1 /* JSHTMLDocument.cpp in Sources */, + BC51580B0C03D404008BB0EE /* JSHTMLDocumentCustom.cpp in Sources */, + 1A494BFA0A122F4400FDAFC1 /* JSHTMLElement.cpp in Sources */, + BC5823F50C0A98DF0053F1B5 /* JSHTMLElementCustom.cpp in Sources */, + 938E65F709F0985D008A48EC /* JSHTMLElementWrapperFactory.cpp in Sources */, + BC6D44EC0C07F2ED0072D2C9 /* JSHTMLEmbedElement.cpp in Sources */, + BC6D44BE0C07EFB60072D2C9 /* JSHTMLEmbedElementCustom.cpp in Sources */, + 1AE2AA260A1CDAB400B42B25 /* JSHTMLFieldSetElement.cpp in Sources */, + 1AE2AA280A1CDAB400B42B25 /* JSHTMLFontElement.cpp in Sources */, + 9BF9A8801648DD2F001C6B23 /* JSHTMLFormControlsCollection.cpp in Sources */, + 9B1AB07C1648C7C40051F3F2 /* JSHTMLFormControlsCollectionCustom.cpp in Sources */, + A8D064FB0A23C0CC005E7203 /* JSHTMLFormElement.cpp in Sources */, + A8D065AE0A2446CD005E7203 /* JSHTMLFormElementCustom.cpp in Sources */, + BC4918C60BFEA050009D6316 /* JSHTMLFrameElement.cpp in Sources */, + BC2ED7A50C6C0F3600920BFF /* JSHTMLFrameElementCustom.cpp in Sources */, + BC926F800C0552470082776B /* JSHTMLFrameSetElement.cpp in Sources */, + BCD41ABB0C060DE800C0E446 /* JSHTMLFrameSetElementCustom.cpp in Sources */, + A80E7B140A19D606007FB8C5 /* JSHTMLHeadElement.cpp in Sources */, + 1AE2AA2E0A1CDAB400B42B25 /* JSHTMLHeadingElement.cpp in Sources */, + 1AE2AA300A1CDAB400B42B25 /* JSHTMLHRElement.cpp in Sources */, + 1A85B18F0A1B18A200D8C87C /* JSHTMLHtmlElement.cpp in Sources */, + BC4918C80BFEA050009D6316 /* JSHTMLIFrameElement.cpp in Sources */, + 1AE2AA970A1CDD2D00B42B25 /* JSHTMLImageElement.cpp in Sources */, + A80E7E980A1A83E3007FB8C5 /* JSHTMLInputElement.cpp in Sources */, + BCC438780E886CC700533DD5 /* JSHTMLInputElementCustom.cpp in Sources */, + A6148A7812E41E3B0044A784 /* JSHTMLKeygenElement.cpp in Sources */, + 1AE2AB210A1CE63B00B42B25 /* JSHTMLLabelElement.cpp in Sources */, + 1AE2AB230A1CE63B00B42B25 /* JSHTMLLegendElement.cpp in Sources */, + 1AE2AB250A1CE63B00B42B25 /* JSHTMLLIElement.cpp in Sources */, + A80E7B100A19D606007FB8C5 /* JSHTMLLinkElement.cpp in Sources */, + E1AD139B1295D92600ACA989 /* JSHTMLLinkElementCustom.cpp in Sources */, + 1AE2AB270A1CE63B00B42B25 /* JSHTMLMapElement.cpp in Sources */, + BC491B780C023EFD009D6316 /* JSHTMLMarqueeElement.cpp in Sources */, + E44614390CD689C700FADA75 /* JSHTMLMediaElement.cpp in Sources */, + CDD525D7145B6DD0008D204D /* JSHTMLMediaElementCustom.cpp in Sources */, + 1AE2AE5B0A1D26F200B42B25 /* JSHTMLMenuElement.cpp in Sources */, + A80E7A170A19C3D6007FB8C5 /* JSHTMLMetaElement.cpp in Sources */, + A7BBE26611AFB3F20005EA03 /* JSHTMLMeterElement.cpp in Sources */, + 1AE2AB290A1CE63B00B42B25 /* JSHTMLModElement.cpp in Sources */, + BC305C790C076BB300CD20F0 /* JSHTMLObjectElement.cpp in Sources */, + BC305CA40C0781BB00CD20F0 /* JSHTMLObjectElementCustom.cpp in Sources */, + 1A85B1EA0A1B240500D8C87C /* JSHTMLOListElement.cpp in Sources */, + A80E7E9C0A1A83E3007FB8C5 /* JSHTMLOptGroupElement.cpp in Sources */, + A80E7E9A0A1A83E3007FB8C5 /* JSHTMLOptionElement.cpp in Sources */, + 448A29C00A46D9CB0030759F /* JSHTMLOptionsCollection.cpp in Sources */, + 448AD27C0A48137A0023D179 /* JSHTMLOptionsCollectionCustom.cpp in Sources */, + 4AD0173C127E82860015035F /* JSHTMLOutputElement.cpp in Sources */, + 1AE2ABA60A1CE90500B42B25 /* JSHTMLParagraphElement.cpp in Sources */, + 1AE2ABA80A1CE90500B42B25 /* JSHTMLParamElement.cpp in Sources */, + 1AE2ABAA0A1CE90500B42B25 /* JSHTMLPreElement.cpp in Sources */, + A4226E5A1163D667008B8397 /* JSHTMLProgressElement.cpp in Sources */, + 033A6A81147E088600509B36 /* JSHTMLPropertiesCollection.cpp in Sources */, + 1AE2AEC70A1D297B00B42B25 /* JSHTMLQuoteElement.cpp in Sources */, + 1AE2ABAC0A1CE90500B42B25 /* JSHTMLScriptElement.cpp in Sources */, + E1E6EEA40B628DA8005F2F70 /* JSHTMLSelectElement.cpp in Sources */, + BC17F9660B64EBB8004A65CB /* JSHTMLSelectElementCustom.cpp in Sources */, + E446143B0CD689CC00FADA75 /* JSHTMLSourceElement.cpp in Sources */, + 9752D38D1413104B003305BD /* JSHTMLSpanElement.cpp in Sources */, + A80E7B0F0A19D606007FB8C5 /* JSHTMLStyleElement.cpp in Sources */, + E1AD139E1295D96100ACA989 /* JSHTMLStyleElementCustom.cpp in Sources */, + BCA169A20BFD55B40019CA76 /* JSHTMLTableCaptionElement.cpp in Sources */, + BC06EDE30BFD6D0D00856E9D /* JSHTMLTableCellElement.cpp in Sources */, + BC06ED9D0BFD660600856E9D /* JSHTMLTableColElement.cpp in Sources */, + BC06EE040BFD71AA00856E9D /* JSHTMLTableElement.cpp in Sources */, + BC06ED9F0BFD660600856E9D /* JSHTMLTableRowElement.cpp in Sources */, + BC06ED060BFD5BAE00856E9D /* JSHTMLTableSectionElement.cpp in Sources */, + D6489D25166FFCF1007C031B /* JSHTMLTemplateElement.cpp in Sources */, + D6F7960D166FFECE0076DD18 /* JSHTMLTemplateElementCustom.cpp in Sources */, + A80E7E9E0A1A83E3007FB8C5 /* JSHTMLTextAreaElement.cpp in Sources */, + A80E7B130A19D606007FB8C5 /* JSHTMLTitleElement.cpp in Sources */, + 070756D314239A4E00414161 /* JSHTMLTrackElement.cpp in Sources */, + 1A85B2100A1B258700D8C87C /* JSHTMLUListElement.cpp in Sources */, + 6E4ABCD4138EA0B70071D291 /* JSHTMLUnknownElement.cpp in Sources */, + E44614160CD6826900FADA75 /* JSHTMLVideoElement.cpp in Sources */, + 269239951505E1AA009E57FC /* JSIDBVersionChangeEvent.cpp in Sources */, + BC6C49F30D7DBA0500FFA558 /* JSImageConstructor.cpp in Sources */, + A77979280D6B9E64003851B9 /* JSImageData.cpp in Sources */, + A7D0318E0E93540300E24ACD /* JSImageDataCustom.cpp in Sources */, + 7A0E76DA10BF059800A0276E /* JSInjectedScriptHost.cpp in Sources */, + 7A0E76D510BF050700A0276E /* JSInjectedScriptHostCustom.cpp in Sources */, + F316396E1329487600A649CB /* JSInjectedScriptManager.cpp in Sources */, + 7A0E771E10C00DB100A0276E /* JSInspectorFrontendHost.cpp in Sources */, + 7A74ECBD101839DA00BF939E /* JSInspectorFrontendHostCustom.cpp in Sources */, + 49EECF06105070C400099FAB /* JSInt16Array.cpp in Sources */, + 49EECF04105070C400099FAB /* JSInt32Array.cpp in Sources */, + 49C7B9951042D2D30009D447 /* JSInt8Array.cpp in Sources */, + 1C5FAED10DCFD90100D58F78 /* JSJavaScriptCallFrame.cpp in Sources */, + 1C5FAEE70DCFDA6800D58F78 /* JSJavaScriptCallFrameCustom.cpp in Sources */, + A86629D409DA2B48009633A5 /* JSKeyboardEvent.cpp in Sources */, + 935F45420F7C3B5F00D7C1FB /* JSLazyEventListener.cpp in Sources */, + BCE1C43B0D9830D3003B02F2 /* JSLocation.cpp in Sources */, + BCE1C4400D9830F4003B02F2 /* JSLocationCustom.cpp in Sources */, + 8FAC774D119872CB0015AE94 /* JSMainThreadExecState.cpp in Sources */, + CD27F6E51457685A0078207D /* JSMediaController.cpp in Sources */, + FD23A12513F5FA5900F67001 /* JSMediaElementAudioSourceNode.cpp in Sources */, + E44614180CD6826900FADA75 /* JSMediaError.cpp in Sources */, + CDA98DA31601464100FEA3B1 /* JSMediaKeyError.cpp in Sources */, + CDB859FA160D494900E5B07F /* JSMediaKeyEvent.cpp in Sources */, + CDA98DDF16026A3700FEA3B1 /* JSMediaKeyMessageEvent.cpp in Sources */, + CDA98DE016026A3700FEA3B1 /* JSMediaKeyNeededEvent.cpp in Sources */, + CDA98E0416039E1A00FEA3B1 /* JSMediaKeys.cpp in Sources */, + CDA98E0616039E1F00FEA3B1 /* JSMediaKeySession.cpp in Sources */, + BC3C39B60C0D3D8D005F4D7A /* JSMediaList.cpp in Sources */, + D3A94A46122DC40F00A37BBC /* JSMediaQueryList.cpp in Sources */, + FDBD480C159BC6870093EB4F /* JSMediaStreamAudioSourceNode.cpp in Sources */, + E107400D0E77BDC00033AF24 /* JSMessageChannel.cpp in Sources */, + E1A5F99B0E7EAA2500AF85EA /* JSMessageChannelCustom.cpp in Sources */, + 75793EC80D0CE72D007FC0AC /* JSMessageEvent.cpp in Sources */, + 410B7E721045FAB000D8224F /* JSMessageEventCustom.cpp in Sources */, + E1ADEDDB0E76BD93004A1A5E /* JSMessagePort.cpp in Sources */, + E1ADED470E76B8DD004A1A5E /* JSMessagePortCustom.cpp in Sources */, + 1059457315B42953004D37FD /* JSMicroDataItemValueCustom.cpp in Sources */, + A86629D209DA2B48009633A5 /* JSMouseEvent.cpp in Sources */, + C6F420A216B7164E0052A9F2 /* JSMutationCallback.cpp in Sources */, + 65DF31FB09D1CC60000BE325 /* JSMutationEvent.cpp in Sources */, + C6F0902C14327D4F00685849 /* JSMutationObserver.cpp in Sources */, + C6F0917F143A2BB900685849 /* JSMutationObserverCustom.cpp in Sources */, + C6F08FC91431000D00685849 /* JSMutationRecord.cpp in Sources */, + BCD9C2C00C17B69E005C90A2 /* JSNamedNodeMap.cpp in Sources */, + BCD9C2630C17AA67005C90A2 /* JSNamedNodeMapCustom.cpp in Sources */, + A9D247F70D757E3400FDF959 /* JSNavigator.cpp in Sources */, + 14DC0D3709FED073007B0235 /* JSNode.cpp in Sources */, + BCD9C2640C17AA67005C90A2 /* JSNodeCustom.cpp in Sources */, + 14115B7209F84CD600CA4FC1 /* JSNodeFilter.cpp in Sources */, + BCB773610C17853D00132BA4 /* JSNodeFilterCondition.cpp in Sources */, + BCB773630C17853D00132BA4 /* JSNodeFilterCustom.cpp in Sources */, + 1A750D8D0A90E521000FF215 /* JSNodeIterator.cpp in Sources */, + 1A750DD40A90E729000FF215 /* JSNodeIteratorCustom.cpp in Sources */, + BCD9C2C20C17B69E005C90A2 /* JSNodeList.cpp in Sources */, + BCD9C2650C17AA67005C90A2 /* JSNodeListCustom.cpp in Sources */, + 65DF31FD09D1CC60000BE325 /* JSNotation.cpp in Sources */, + 33503CA310179AD7003B47E1 /* JSNotification.cpp in Sources */, + 33503CA510179AD7003B47E1 /* JSNotificationCenter.cpp in Sources */, + 31EC1E2814FF60EE00C94662 /* JSNotificationPermissionCallback.cpp in Sources */, + 7E46F6FA1627A2CA00062223 /* JSOESElementIndexUint.cpp in Sources */, + 9001788012E0370700648462 /* JSOESStandardDerivatives.cpp in Sources */, + 6EBF0E7612A9868800DB1709 /* JSOESTextureFloat.cpp in Sources */, + A31C4E5216E02B08002F7957 /* JSOESTextureHalfFloat.cpp in Sources */, + 77A17AA612F28B2A004E02F6 /* JSOESVertexArrayObject.cpp in Sources */, + FDF6BAF8134A4C9800822920 /* JSOfflineAudioCompletionEvent.cpp in Sources */, + FDA9326616703BA9008982DC /* JSOfflineAudioContext.cpp in Sources */, + FDEA6242152102E200479DF0 /* JSOscillatorNode.cpp in Sources */, + FDBD1DFC167FE27D0051A11E /* JSOscillatorNodeCustom.cpp in Sources */, + 1A0D57400A5C7867007EDD4C /* JSOverflowEvent.cpp in Sources */, + E1284BB210449FFA00EAEB52 /* JSPageTransitionEvent.cpp in Sources */, + FDA15EB112B03EE1003A583A /* JSPannerNode.cpp in Sources */, + FD8AA63E169514A700D2EA68 /* JSPannerNodeCustom.cpp in Sources */, + E51A81DF17298D7700BFCA61 /* JSPerformance.cpp in Sources */, + 8A9A587011E84C36008ACFD1 /* JSPerformanceNavigation.cpp in Sources */, + FDEA6246152102FC00479DF0 /* JSPeriodicWave.cpp in Sources */, + 93B70D6B09EB0C7C009D8468 /* JSPluginElementFunctions.cpp in Sources */, + 5189F01D10B37BD900F3C739 /* JSPopStateEvent.cpp in Sources */, + A85F22091430377D007CC884 /* JSPopStateEventCustom.cpp in Sources */, + 598365E41355F604001B185D /* JSPositionCallback.cpp in Sources */, + FE80DA710E9C472F000D6F75 /* JSPositionError.cpp in Sources */, + 598365E61355F60D001B185D /* JSPositionErrorCallback.cpp in Sources */, + 65DF31FF09D1CC60000BE325 /* JSProcessingInstruction.cpp in Sources */, + E1AD12D61295D0BD00ACA989 /* JSProcessingInstructionCustom.cpp in Sources */, + E44613ED0CD681BA00FADA75 /* JSProgressEvent.cpp in Sources */, + B658FFA11522EF3A00DD5595 /* JSRadioNodeList.cpp in Sources */, + 65DF320109D1CC60000BE325 /* JSRange.cpp in Sources */, + D23CA55F0AB0EAB6005108A5 /* JSRangeException.cpp in Sources */, + BCFE2F110C1B58370020235F /* JSRect.cpp in Sources */, + 4998AECD13F9D6C90090B1AA /* JSRequestAnimationFrameCallback.cpp in Sources */, + 4998AED413FC417F0090B1AA /* JSRequestAnimationFrameCallbackCustom.cpp in Sources */, + BC74DA481013F468007987AD /* JSRGBColor.cpp in Sources */, + BCEC01C20C274DDD009F4EC9 /* JSScreen.cpp in Sources */, + FDA15ECD12B03F61003A583A /* JSScriptProcessorNode.cpp in Sources */, + 9FA37EFA1172FDA600C4CD55 /* JSScriptProfile.cpp in Sources */, + 9FA37EFC1172FDA600C4CD55 /* JSScriptProfileNode.cpp in Sources */, + 41D07A7E0FF935CA0095EDCE /* JSSharedWorker.cpp in Sources */, + 14CD8D82106B529000A46D23 /* JSSharedWorkerCustom.cpp in Sources */, + 41D1690510238B66009BC827 /* JSSharedWorkerGlobalScope.cpp in Sources */, + 75415D59129AB2D2003AD669 /* JSSpeechInputResultList.cpp in Sources */, + AA7FEEA416A4E6F3004C0C33 /* JSSpeechSynthesis.cpp in Sources */, + AA2A5AD316A4860D00976A25 /* JSSpeechSynthesisEvent.cpp in Sources */, + AA7FEEA616A4E6F3004C0C33 /* JSSpeechSynthesisUtterance.cpp in Sources */, + AA7FEEA816A4E6F3004C0C33 /* JSSpeechSynthesisVoice.cpp in Sources */, + 514C76370CE9225E007EF3CD /* JSSQLError.cpp in Sources */, + B525A96611CA2340003A23A8 /* JSSQLException.cpp in Sources */, + 1AE82FEC0CAB07EE002237AE /* JSSQLResultSet.cpp in Sources */, + 1AFE11990CBFFCC4003017FA /* JSSQLResultSetRowList.cpp in Sources */, + 51DCE8020CAC9F1C00488358 /* JSSQLResultSetRowListCustom.cpp in Sources */, + B59DD6A611902A62007E9684 /* JSSQLStatementCallback.cpp in Sources */, + B59DD6AA11902A71007E9684 /* JSSQLStatementErrorCallback.cpp in Sources */, + 514C76380CE9225E007EF3CD /* JSSQLTransaction.cpp in Sources */, + B59DD69E11902A42007E9684 /* JSSQLTransactionCallback.cpp in Sources */, + 1AD2316E0CD269E700C1F194 /* JSSQLTransactionCustom.cpp in Sources */, + B59DD6A211902A52007E9684 /* JSSQLTransactionErrorCallback.cpp in Sources */, + B58CEB6E1191361C002A6790 /* JSSQLTransactionSync.cpp in Sources */, + B55D5AA5119131FC00BCC315 /* JSSQLTransactionSyncCallback.cpp in Sources */, + B55D5AA91191325000BCC315 /* JSSQLTransactionSyncCustom.cpp in Sources */, + 51E3F9D60DA05E1D00250911 /* JSStorage.cpp in Sources */, + 51D0C5160DAA90B7003B3831 /* JSStorageCustom.cpp in Sources */, + 51E0BAEA0DA55D4A00A9E417 /* JSStorageEvent.cpp in Sources */, + 0FF50269102BA9430066F39A /* JSStyleMedia.cpp in Sources */, + BCE0139A0C0BEF180043860A /* JSStyleSheet.cpp in Sources */, + BC98A27D0C0C9950004BEBF7 /* JSStyleSheetCustom.cpp in Sources */, + A84EBD840CB8C97700079609 /* JSStyleSheetList.cpp in Sources */, + A84EBD780CB8C89200079609 /* JSStyleSheetListCustom.cpp in Sources */, + B20111070AB7740500DB0E68 /* JSSVGAElement.cpp in Sources */, + 24D9129113CA951E00D21915 /* JSSVGAltGlyphDefElement.cpp in Sources */, + 6515EC910D9723FF0063D49A /* JSSVGAltGlyphElement.cpp in Sources */, + 24D9129513CA956100D21915 /* JSSVGAltGlyphItemElement.cpp in Sources */, + B222F6980AB771950022EFAD /* JSSVGAngle.cpp in Sources */, + B2FA3D360AB75A6F000E5AC4 /* JSSVGAnimateColorElement.cpp in Sources */, + B2FA3D380AB75A6F000E5AC4 /* JSSVGAnimatedAngle.cpp in Sources */, + B2FA3D3A0AB75A6F000E5AC4 /* JSSVGAnimatedBoolean.cpp in Sources */, + B2FA3D3C0AB75A6F000E5AC4 /* JSSVGAnimatedEnumeration.cpp in Sources */, + B2FA3D3E0AB75A6F000E5AC4 /* JSSVGAnimatedInteger.cpp in Sources */, + B2FA3D400AB75A6F000E5AC4 /* JSSVGAnimatedLength.cpp in Sources */, + B2FA3D420AB75A6F000E5AC4 /* JSSVGAnimatedLengthList.cpp in Sources */, + B2FA3D440AB75A6F000E5AC4 /* JSSVGAnimatedNumber.cpp in Sources */, + B2FA3D460AB75A6F000E5AC4 /* JSSVGAnimatedNumberList.cpp in Sources */, + B2FA3D4A0AB75A6F000E5AC4 /* JSSVGAnimatedPreserveAspectRatio.cpp in Sources */, + B2FA3D4C0AB75A6F000E5AC4 /* JSSVGAnimatedRect.cpp in Sources */, + B2FA3D4E0AB75A6F000E5AC4 /* JSSVGAnimatedString.cpp in Sources */, + B2FA3D500AB75A6F000E5AC4 /* JSSVGAnimatedTransformList.cpp in Sources */, + B2FA3D520AB75A6F000E5AC4 /* JSSVGAnimateElement.cpp in Sources */, + 4496E39D1398136C003EE32A /* JSSVGAnimateMotionElement.cpp in Sources */, + B2FA3D540AB75A6F000E5AC4 /* JSSVGAnimateTransformElement.cpp in Sources */, + B2FA3D560AB75A6F000E5AC4 /* JSSVGAnimationElement.cpp in Sources */, + B2FA3D580AB75A6F000E5AC4 /* JSSVGCircleElement.cpp in Sources */, + B2FA3D5A0AB75A6F000E5AC4 /* JSSVGClipPathElement.cpp in Sources */, + B2FA3D5C0AB75A6F000E5AC4 /* JSSVGColor.cpp in Sources */, + B2FA3D5E0AB75A6F000E5AC4 /* JSSVGComponentTransferFunctionElement.cpp in Sources */, + B2FA3D600AB75A6F000E5AC4 /* JSSVGCursorElement.cpp in Sources */, + B2FA3D620AB75A6F000E5AC4 /* JSSVGDefsElement.cpp in Sources */, + B2FA3D640AB75A6F000E5AC4 /* JSSVGDescElement.cpp in Sources */, + B2FA3D660AB75A6F000E5AC4 /* JSSVGDocument.cpp in Sources */, + B222F69C0AB771B80022EFAD /* JSSVGElement.cpp in Sources */, + B2CB92420B5BD966009BAA78 /* JSSVGElementInstance.cpp in Sources */, + 08A48A6E0E86CF6D00E225DD /* JSSVGElementInstanceCustom.cpp in Sources */, + B2CB92460B5BD97B009BAA78 /* JSSVGElementInstanceList.cpp in Sources */, + 8542A79A0AE5C94400DF58DF /* JSSVGElementWrapperFactory.cpp in Sources */, + B2FA3D680AB75A6F000E5AC4 /* JSSVGEllipseElement.cpp in Sources */, + B266CD4D0C3AEC6500EB08D2 /* JSSVGException.cpp in Sources */, + B2FA3D6A0AB75A6F000E5AC4 /* JSSVGFEBlendElement.cpp in Sources */, + B2FA3D6C0AB75A6F000E5AC4 /* JSSVGFEColorMatrixElement.cpp in Sources */, + B2FA3D6E0AB75A6F000E5AC4 /* JSSVGFEComponentTransferElement.cpp in Sources */, + B2FA3D700AB75A6F000E5AC4 /* JSSVGFECompositeElement.cpp in Sources */, + 19BFF64E11C0F2AC00B8C04D /* JSSVGFEConvolveMatrixElement.cpp in Sources */, + B2FA3D720AB75A6F000E5AC4 /* JSSVGFEDiffuseLightingElement.cpp in Sources */, + B2FA3D740AB75A6F000E5AC4 /* JSSVGFEDisplacementMapElement.cpp in Sources */, + B2FA3D760AB75A6F000E5AC4 /* JSSVGFEDistantLightElement.cpp in Sources */, + 4358E87C1360A2EE00E4748C /* JSSVGFEDropShadowElement.cpp in Sources */, + B2FA3D780AB75A6F000E5AC4 /* JSSVGFEFloodElement.cpp in Sources */, + B2FA3D7A0AB75A6F000E5AC4 /* JSSVGFEFuncAElement.cpp in Sources */, + B2FA3D7C0AB75A6F000E5AC4 /* JSSVGFEFuncBElement.cpp in Sources */, + B2FA3D7E0AB75A6F000E5AC4 /* JSSVGFEFuncGElement.cpp in Sources */, + B2FA3D800AB75A6F000E5AC4 /* JSSVGFEFuncRElement.cpp in Sources */, + B2FA3D820AB75A6F000E5AC4 /* JSSVGFEGaussianBlurElement.cpp in Sources */, + B2FA3D840AB75A6F000E5AC4 /* JSSVGFEImageElement.cpp in Sources */, + B2FA3D860AB75A6F000E5AC4 /* JSSVGFEMergeElement.cpp in Sources */, + B2FA3D880AB75A6F000E5AC4 /* JSSVGFEMergeNodeElement.cpp in Sources */, + 84224183107E77F400766A87 /* JSSVGFEMorphologyElement.cpp in Sources */, + B2FA3D8A0AB75A6F000E5AC4 /* JSSVGFEOffsetElement.cpp in Sources */, + B2FA3D8C0AB75A6F000E5AC4 /* JSSVGFEPointLightElement.cpp in Sources */, + B2FA3D8E0AB75A6F000E5AC4 /* JSSVGFESpecularLightingElement.cpp in Sources */, + B2FA3D900AB75A6F000E5AC4 /* JSSVGFESpotLightElement.cpp in Sources */, + B2FA3D920AB75A6F000E5AC4 /* JSSVGFETileElement.cpp in Sources */, + B2FA3D940AB75A6F000E5AC4 /* JSSVGFETurbulenceElement.cpp in Sources */, + B2FA3D960AB75A6F000E5AC4 /* JSSVGFilterElement.cpp in Sources */, + B27B28250CEF0C0700D39D54 /* JSSVGFontElement.cpp in Sources */, + A83B79040CCAFF15000B0825 /* JSSVGFontFaceElement.cpp in Sources */, + A83B79010CCAFF15000B0825 /* JSSVGFontFaceFormatElement.cpp in Sources */, + A83B79030CCAFF15000B0825 /* JSSVGFontFaceNameElement.cpp in Sources */, + A83B78FF0CCAFF15000B0825 /* JSSVGFontFaceSrcElement.cpp in Sources */, + A83B78FD0CCAFF15000B0825 /* JSSVGFontFaceUriElement.cpp in Sources */, + B2FA3D980AB75A6F000E5AC4 /* JSSVGForeignObjectElement.cpp in Sources */, + B2FA3D9A0AB75A6F000E5AC4 /* JSSVGGElement.cpp in Sources */, + B27B28270CEF0C0700D39D54 /* JSSVGGlyphElement.cpp in Sources */, + 24D9129813CA96DE00D21915 /* JSSVGGlyphRefElement.cpp in Sources */, + B2FA3D9C0AB75A6F000E5AC4 /* JSSVGGradientElement.cpp in Sources */, + 85174EC2BCCAF17EAE3F46F8 /* JSSVGGraphicsElement.cpp in Sources */, + 8485227B1190162C006EDC7F /* JSSVGHKernElement.cpp in Sources */, + B2FA3D9E0AB75A6F000E5AC4 /* JSSVGImageElement.cpp in Sources */, + B2FA3DA00AB75A6F000E5AC4 /* JSSVGLength.cpp in Sources */, + 08E4FE460E2BD41400F4CAE0 /* JSSVGLengthCustom.cpp in Sources */, + B2FA3DA20AB75A6F000E5AC4 /* JSSVGLengthList.cpp in Sources */, + B2FA3DA40AB75A6F000E5AC4 /* JSSVGLinearGradientElement.cpp in Sources */, + B2FA3DA60AB75A6F000E5AC4 /* JSSVGLineElement.cpp in Sources */, + B2FA3DA80AB75A6F000E5AC4 /* JSSVGMarkerElement.cpp in Sources */, + B2FA3DAA0AB75A6F000E5AC4 /* JSSVGMaskElement.cpp in Sources */, + B2FA3DAC0AB75A6F000E5AC4 /* JSSVGMatrix.cpp in Sources */, + B2FA3DAE0AB75A6F000E5AC4 /* JSSVGMetadataElement.cpp in Sources */, + B27B28290CEF0C0700D39D54 /* JSSVGMissingGlyphElement.cpp in Sources */, + 4496E3A2139813CB003EE32A /* JSSVGMPathElement.cpp in Sources */, + 8542A7980AE5C94300DF58DF /* JSSVGNumber.cpp in Sources */, + B2FA3DB00AB75A6F000E5AC4 /* JSSVGNumberList.cpp in Sources */, + B2FA3DB20AB75A6F000E5AC4 /* JSSVGPaint.cpp in Sources */, + B2FA3DB40AB75A6F000E5AC4 /* JSSVGPathElement.cpp in Sources */, + B2FA3DB60AB75A6F000E5AC4 /* JSSVGPathSeg.cpp in Sources */, + B2FA3DB80AB75A6F000E5AC4 /* JSSVGPathSegArcAbs.cpp in Sources */, + B2FA3DBA0AB75A6F000E5AC4 /* JSSVGPathSegArcRel.cpp in Sources */, + B2FA3DBC0AB75A6F000E5AC4 /* JSSVGPathSegClosePath.cpp in Sources */, + B2FA3DBE0AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicAbs.cpp in Sources */, + B2FA3DC00AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicRel.cpp in Sources */, + B2FA3DC20AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothAbs.cpp in Sources */, + B2FA3DC40AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothRel.cpp in Sources */, + B2FA3DC60AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticAbs.cpp in Sources */, + B2FA3DC80AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticRel.cpp in Sources */, + B2FA3DCA0AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothAbs.cpp in Sources */, + B2FA3DCC0AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothRel.cpp in Sources */, + B2C96D8D0B3AF2B7005E80EC /* JSSVGPathSegCustom.cpp in Sources */, + B2FA3DCE0AB75A6F000E5AC4 /* JSSVGPathSegLinetoAbs.cpp in Sources */, + B2FA3DD00AB75A6F000E5AC4 /* JSSVGPathSegLinetoHorizontalAbs.cpp in Sources */, + B2FA3DD20AB75A6F000E5AC4 /* JSSVGPathSegLinetoHorizontalRel.cpp in Sources */, + B2FA3DD40AB75A6F000E5AC4 /* JSSVGPathSegLinetoRel.cpp in Sources */, + B2FA3DD60AB75A6F000E5AC4 /* JSSVGPathSegLinetoVerticalAbs.cpp in Sources */, + B2FA3DD80AB75A6F000E5AC4 /* JSSVGPathSegLinetoVerticalRel.cpp in Sources */, + B2FA3DDA0AB75A6F000E5AC4 /* JSSVGPathSegList.cpp in Sources */, + B2FA3DDC0AB75A6F000E5AC4 /* JSSVGPathSegMovetoAbs.cpp in Sources */, + B2FA3DDE0AB75A6F000E5AC4 /* JSSVGPathSegMovetoRel.cpp in Sources */, + B2FA3DE00AB75A6F000E5AC4 /* JSSVGPatternElement.cpp in Sources */, + 8542A7960AE5C94200DF58DF /* JSSVGPoint.cpp in Sources */, + B2FA3DE20AB75A6F000E5AC4 /* JSSVGPointList.cpp in Sources */, + B2FA3DE50AB75A6F000E5AC4 /* JSSVGPolygonElement.cpp in Sources */, + B2FA3DE70AB75A6F000E5AC4 /* JSSVGPolylineElement.cpp in Sources */, + B2FA3DE90AB75A6F000E5AC4 /* JSSVGPreserveAspectRatio.cpp in Sources */, + B2FA3DEB0AB75A6F000E5AC4 /* JSSVGRadialGradientElement.cpp in Sources */, + 8542A7940AE5C94000DF58DF /* JSSVGRect.cpp in Sources */, + B2FA3DED0AB75A6F000E5AC4 /* JSSVGRectElement.cpp in Sources */, + B2FA3DF00AB75A6F000E5AC4 /* JSSVGRenderingIntent.cpp in Sources */, + B2FA3DF20AB75A6F000E5AC4 /* JSSVGScriptElement.cpp in Sources */, + B2FA3DF40AB75A6F000E5AC4 /* JSSVGSetElement.cpp in Sources */, + B2FA3DF60AB75A6F000E5AC4 /* JSSVGStopElement.cpp in Sources */, + B2FA3DF80AB75A6F000E5AC4 /* JSSVGStringList.cpp in Sources */, + B2FA3DFA0AB75A6F000E5AC5 /* JSSVGStyledElement.cpp in Sources */, + B2FA3DFA0AB75A6F000E5AC4 /* JSSVGStyleElement.cpp in Sources */, + B2FA3DFC0AB75A6F000E5AC4 /* JSSVGSVGElement.cpp in Sources */, + B2FA3DFE0AB75A6F000E5AC4 /* JSSVGSwitchElement.cpp in Sources */, + B2FA3E000AB75A6F000E5AC4 /* JSSVGSymbolElement.cpp in Sources */, + B2FA3E020AB75A6F000E5AC4 /* JSSVGTextContentElement.cpp in Sources */, + B2FA3E040AB75A6F000E5AC4 /* JSSVGTextElement.cpp in Sources */, + B22362280C3AF04A0008CA9B /* JSSVGTextPathElement.cpp in Sources */, + B2FA3E060AB75A6F000E5AC4 /* JSSVGTextPositioningElement.cpp in Sources */, + B2FA3E080AB75A6F000E5AC4 /* JSSVGTitleElement.cpp in Sources */, + B2FA3E0A0AB75A6F000E5AC4 /* JSSVGTransform.cpp in Sources */, + B2FA3E0C0AB75A6F000E5AC4 /* JSSVGTransformList.cpp in Sources */, + B2FA3E0E0AB75A6F000E5AC4 /* JSSVGTRefElement.cpp in Sources */, + B2FA3E100AB75A6F000E5AC4 /* JSSVGTSpanElement.cpp in Sources */, + B2FA3E120AB75A6F000E5AC4 /* JSSVGUnitTypes.cpp in Sources */, + B2FA3E140AB75A6F000E5AC4 /* JSSVGUseElement.cpp in Sources */, + B2FA3E160AB75A6F000E5AC4 /* JSSVGViewElement.cpp in Sources */, + 7118FED415685CC60030B79A /* JSSVGViewSpec.cpp in Sources */, + 8485227D1190162C006EDC7F /* JSSVGVKernElement.cpp in Sources */, + 71DCB7011568197600862271 /* JSSVGZoomAndPan.cpp in Sources */, + B2FA3E180AB75A6F000E5AC4 /* JSSVGZoomEvent.cpp in Sources */, + 65DF320309D1CC60000BE325 /* JSText.cpp in Sources */, + 1A2C40AB0DEB55AA005AF19E /* JSTextCustom.cpp in Sources */, + 933A14B80B7D1D5200A53FFD /* JSTextEvent.cpp in Sources */, + BCEF45F50E687B5C001C1287 /* JSTextMetrics.cpp in Sources */, + 070756941422668D00414161 /* JSTextTrack.cpp in Sources */, + 070756DD14239B4E00414161 /* JSTextTrackCue.cpp in Sources */, + 07E117071489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp in Sources */, + 070756DF14239B4E00414161 /* JSTextTrackCueList.cpp in Sources */, + 07E116B11489C9A100EC5ACE /* JSTextTrackCustom.cpp in Sources */, + 07B5A2DB1464320A00A81ECE /* JSTextTrackList.cpp in Sources */, + 07B5A30D14687D7100A81ECE /* JSTextTrackListCustom.cpp in Sources */, + E446141A0CD6826900FADA75 /* JSTimeRanges.cpp in Sources */, + 070334E9145A1F36008D8D45 /* JSTrackCustom.cpp in Sources */, + 07846342145B151A00A58DF1 /* JSTrackEvent.cpp in Sources */, + 07BDD6EC1469B4C2009C9F85 /* JSTrackEventCustom.cpp in Sources */, + E17B492216A9B8FF001C8839 /* JSTransitionEvent.cpp in Sources */, + 1A750D5C0A90DEE1000FF215 /* JSTreeWalker.cpp in Sources */, + 516BB7940CE91E6800512F79 /* JSTreeWalkerCustom.cpp in Sources */, + A86629D009DA2B48009633A5 /* JSUIEvent.cpp in Sources */, + 49EECF0C105070C400099FAB /* JSUint16Array.cpp in Sources */, + 49EECF0A105070C400099FAB /* JSUint32Array.cpp in Sources */, + 49EECF08105070C400099FAB /* JSUint8Array.cpp in Sources */, + 91089D3314C33605005AFC49 /* JSUint8ClampedArray.cpp in Sources */, + AAA4FAD3175D5CB300743873 /* JSUIRequestEvent.cpp in Sources */, + 15C77094100D3CA8005BA267 /* JSValidityState.cpp in Sources */, + BE8EF04A171C9014009B48C3 /* JSVideoTrack.cpp in Sources */, + BE6DF70B171CA2C500DD52B8 /* JSVideoTrackCustom.cpp in Sources */, + BE8EF04C171C9014009B48C3 /* JSVideoTrackList.cpp in Sources */, + BE6DF70D171CA2C500DD52B8 /* JSVideoTrackListCustom.cpp in Sources */, + 9703E1BF15DC4E37001F24C8 /* JSVoidCallback.cpp in Sources */, + FD82D7F713D4C8BD004E4372 /* JSWaveShaperNode.cpp in Sources */, + A7D20F62107F406900A80392 /* JSWebGLActiveInfo.cpp in Sources */, + 49C7B9931042D2D30009D447 /* JSWebGLBuffer.cpp in Sources */, + 7EA30F6916DFFE7500257D0B /* JSWebGLCompressedTextureATC.cpp in Sources */, + 7EA30F6917EFFE7500257D0B /* JSWebGLCompressedTexturePVRTC.cpp in Sources */, + 6E3FAD3814733F4000E42306 /* JSWebGLCompressedTextureS3TC.cpp in Sources */, + 6EE8A77210F803F3005A4A24 /* JSWebGLContextAttributes.cpp in Sources */, + BC2CBF7B140F1D58003879BE /* JSWebGLContextEvent.cpp in Sources */, + 6E3FAD3814733F4010E42307 /* JSWebGLDebugRendererInfo.cpp in Sources */, + 6E3FAD3814733F4020E42307 /* JSWebGLDebugShaders.cpp in Sources */, + 6E3FAD3814733F4000E42307 /* JSWebGLDepthTexture.cpp in Sources */, + 49C7B9971042D2D30009D447 /* JSWebGLFramebuffer.cpp in Sources */, + 93F1D5C012D5335600832BEC /* JSWebGLLoseContext.cpp in Sources */, + 49C7B99B1042D2D30009D447 /* JSWebGLProgram.cpp in Sources */, + 49C7B99D1042D2D30009D447 /* JSWebGLRenderbuffer.cpp in Sources */, + 49EED1461051969400099FAB /* JSWebGLRenderingContext.cpp in Sources */, + 49EED14F1051971A00099FAB /* JSWebGLRenderingContextCustom.cpp in Sources */, + 49C7B9A21042D2D30009D447 /* JSWebGLShader.cpp in Sources */, + A07D3355152B630E001B6393 /* JSWebGLShaderPrecisionFormat.cpp in Sources */, + 49C7B9A41042D2D30009D447 /* JSWebGLTexture.cpp in Sources */, + 0C45342710CDBBFA00869157 /* JSWebGLUniformLocation.cpp in Sources */, + 77EF62F312F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp in Sources */, + 31C0FF3D0E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.cpp in Sources */, + A2E8AE3716A49840006BB3AA /* JSWebKitCSSFilterRule.cpp in Sources */, + 310603741432819C00ABF4BA /* JSWebKitCSSFilterValue.cpp in Sources */, + 316FE0710E6CCBEE00BF6088 /* JSWebKitCSSKeyframeRule.cpp in Sources */, + E1AD14C51297354900ACA989 /* JSWebKitCSSKeyframeRuleCustom.cpp in Sources */, + 316FE0730E6CCBEE00BF6088 /* JSWebKitCSSKeyframesRule.cpp in Sources */, + E1AD14B5129734CA00ACA989 /* JSWebKitCSSKeyframesRuleCustom.cpp in Sources */, + 4983913F0F1E767500C23782 /* JSWebKitCSSMatrix.cpp in Sources */, + 15B8B7C81652C5220036EF55 /* JSWebKitCSSMixFunctionValue.cpp in Sources */, + 8AD0A59414C88336000D83C5 /* JSWebKitCSSRegionRule.cpp in Sources */, + 31611E5A0E1C4DE000F6A579 /* JSWebKitCSSTransformValue.cpp in Sources */, + 3F2B33EE165AF15600E3987C /* JSWebKitCSSViewportRule.cpp in Sources */, + D7613AC414753E5600DB8606 /* JSWebKitNamedFlow.cpp in Sources */, + 494BD79D0F55C94C00747828 /* JSWebKitPoint.cpp in Sources */, + BC275B7911C5D1C300C9206C /* JSWebKitPointCustom.cpp in Sources */, + 31C0FF3F0E4CEFAC007D6FE5 /* JSWebKitTransitionEvent.cpp in Sources */, + 5DA5E0FC102B953800088CF9 /* JSWebSocket.cpp in Sources */, + 65DF320509D1CC60000BE325 /* JSWheelEvent.cpp in Sources */, + E1C8BE5D0E8BD15A0064CB7D /* JSWorker.cpp in Sources */, + E1CA5CBC0E8CDCAF00E8EF90 /* JSWorkerCustom.cpp in Sources */, + E182568F0EF2B02D00933242 /* JSWorkerGlobalScope.cpp in Sources */, + E1C36D340EB0A094007410BC /* JSWorkerGlobalScopeBase.cpp in Sources */, + E18258AC0EF3CD7000933242 /* JSWorkerGlobalScopeCustom.cpp in Sources */, + E1C362F00EAF2AA9007410BC /* JSWorkerLocation.cpp in Sources */, + E1271A590EEECDE400F61213 /* JSWorkerNavigator.cpp in Sources */, + BC348BD30DB7F804004ABAB9 /* JSXMLHttpRequest.cpp in Sources */, + BC348BBE0DB7F531004ABAB9 /* JSXMLHttpRequestCustom.cpp in Sources */, + BC60DA390D2A302800B9918F /* JSXMLHttpRequestException.cpp in Sources */, + F916C48D0DB510F80076CD83 /* JSXMLHttpRequestProgressEvent.cpp in Sources */, + BCDFD4950E30592F009D10AD /* JSXMLHttpRequestUpload.cpp in Sources */, + BCDFD4920E3056BD009D10AD /* JSXMLHttpRequestUploadCustom.cpp in Sources */, + 1ACE53F60A8D19470022947D /* JSXMLSerializer.cpp in Sources */, + 1A762C730A074F2600989F5B /* JSXPathEvaluator.cpp in Sources */, + BC60DB490D2A3D1E00B9918F /* JSXPathException.cpp in Sources */, + 1A762C750A074F2600989F5B /* JSXPathExpression.cpp in Sources */, + 1A762C770A074F2600989F5B /* JSXPathNSResolver.cpp in Sources */, + 1A762C790A074F2600989F5B /* JSXPathResult.cpp in Sources */, + A1C7FAA2133A5D3500D6732D /* JSXPathResultCustom.cpp in Sources */, + BCEFE1EA0DCA5F6400739219 /* JSXSLTProcessor.cpp in Sources */, + BCEFE1E50DCA5F3300739219 /* JSXSLTProcessorCustom.cpp in Sources */, + 85031B430A44EFC700F992E0 /* KeyboardEvent.cpp in Sources */, + A513B3D8114B166A001C429B /* KeyEventCocoa.mm in Sources */, + 2655413A1489811C000DFC5D /* KeyEventIOS.mm in Sources */, + 935C477009AC4D7300A6AAB4 /* KeyEventMac.mm in Sources */, + 316FE1190E6E1DA700BF6088 /* KeyframeAnimation.cpp in Sources */, + BC5EBA100E823E4700B25965 /* KeyframeList.cpp in Sources */, + 521D46F611AEC98100514613 /* KillRingMac.mm in Sources */, + 4306E4E614955543007F17AC /* KillRingNone.cpp in Sources */, + 6593923709AE4346002C531F /* KURL.cpp in Sources */, + 1A98956B0AA78F80005EF5EF /* KURLCFNet.cpp in Sources */, + 6593923A09AE435C002C531F /* KURLMac.mm in Sources */, + 450CEBF015073BBE002BB149 /* LabelableElement.cpp in Sources */, + A456FA2611AD4A830020B420 /* LabelsNodeList.cpp in Sources */, + E18772F1126E2629003DD586 /* Language.cpp in Sources */, + 9352084509BD43B900F2038D /* Language.mm in Sources */, + 2917B5611473496C0052C9D0 /* LayerFlushScheduler.cpp in Sources */, + 2917B566147349950052C9D0 /* LayerFlushSchedulerMac.cpp in Sources */, + 93F72AF41666EDFC002A02BD /* LayerPool.mm in Sources */, + 141DC04F164834B900371E5A /* LayoutBoxExtent.cpp in Sources */, + 141DC052164834B900371E5A /* LayoutRect.cpp in Sources */, + A120ACA413F998CA00FE4AC7 /* LayoutRepainter.cpp in Sources */, + 2D9066060BE141D400956998 /* LayoutState.cpp in Sources */, + 512DD8F40D91E6AF000F89EE /* LegacyWebArchive.cpp in Sources */, + 51B2417B0D931F3F00E83F5C /* LegacyWebArchiveMac.mm in Sources */, + BCE65BEA0EACDF16007E4533 /* Length.cpp in Sources */, + 146CC115156988E400109E37 /* LengthBox.cpp in Sources */, + E55F497A151B888000BB67DB /* LengthFunctions.cpp in Sources */, + 89B5EAA111E8003D00F2367E /* LineEnding.cpp in Sources */, + A7AD2F870EC89D07008AB002 /* LinkHash.cpp in Sources */, + 98CE4326129E00BD005821DC /* LinkLoader.cpp in Sources */, + 985BB96D13A94058007A0B69 /* LinkRelAttribute.cpp in Sources */, + BC7FA6200D1F0CBD00DB22A9 /* LiveNodeList.cpp in Sources */, + 9759E93E14EF1CF80026A2DD /* LoadableTextTrack.cpp in Sources */, + 656D37330ADBA5DE00A4554D /* LoaderNSURLExtras.mm in Sources */, + 7EE6846812D26E3800E79415 /* LoaderRunLoopCF.cpp in Sources */, + 51ABF64D16392E2800132A7A /* LoaderStrategy.cpp in Sources */, + 06E81EEC0AB5DA9700C87837 /* LocalCurrentGraphicsContext.mm in Sources */, + F5973DE115CFB2030027F804 /* LocaleMac.mm in Sources */, + 7633A72713D8B33A008501B6 /* LocaleToScriptMappingDefault.cpp in Sources */, + C046E1AC1208A9FE00BA2CF7 /* LocalizedStrings.cpp in Sources */, + BC25B52A131C6D3900180E10 /* LocalizedStringsMac.cpp in Sources */, + BCE1C41C0D982981003B02F2 /* Location.cpp in Sources */, + A8239E0009B3CF8A00B60641 /* Logging.cpp in Sources */, + 1402645E0AFDC19B005919E2 /* LoggingMac.mm in Sources */, + 1A8F6BC50DB55CDC001DB794 /* ManifestParser.cpp in Sources */, + 93309DF7099E64920056E581 /* markup.cpp in Sources */, + 9728C3131268E4390041E89B /* MarkupAccumulator.cpp in Sources */, + FABE72F41059C1EB00D999DD /* MathMLElement.cpp in Sources */, + FABE72FD1059C21100D999DD /* MathMLElementFactory.cpp in Sources */, + FABE72F61059C1EB00D999DD /* MathMLInlineContainerElement.cpp in Sources */, + FABE72F81059C1EB00D999DD /* MathMLMathElement.cpp in Sources */, + FABE72FE1059C21100D999DD /* MathMLNames.cpp in Sources */, + FA654A6B1108ABED002615E0 /* MathMLTextElement.cpp in Sources */, + 49D5DC2B0F423A73008F20FD /* Matrix3DTransformOperation.cpp in Sources */, + 49E911C60EF86D47009D0CAF /* MatrixTransformOperation.cpp in Sources */, + 417253AA1354BBBC00360F2A /* MediaControlElements.cpp in Sources */, + DEBCCDD516646EB200A452E1 /* MediaControlElementTypes.cpp in Sources */, + CD27F6E7145770D30078207D /* MediaController.cpp in Sources */, + 1F3C3BEA135CAF3C00B8C1AC /* MediaControls.cpp in Sources */, + 4157AF8112F1FB0400A8C6F5 /* MediaControlsApple.cpp in Sources */, + 97205AB71239291000B17380 /* MediaDocument.cpp in Sources */, + FD6F252C13F5EF0E0065165F /* MediaElementAudioSourceNode.cpp in Sources */, + 4E1959210A39DABA00220FE5 /* MediaFeatureNames.cpp in Sources */, + 07A6D1EB1491137700051D0C /* MediaFragmentURIParser.cpp in Sources */, + CDB859F7160D48A400E5B07F /* MediaKeyEvent.cpp in Sources */, + CDA98DD816025BEF00FEA3B1 /* MediaKeyMessageEvent.cpp in Sources */, + CD1B4A65160786AE00282DF9 /* MediaKeyNeededEvent.cpp in Sources */, + CDA98E0D1603FE4A00FEA3B1 /* MediaKeys.cpp in Sources */, + CDA98E0E1603FE5800FEA3B1 /* MediaKeySession.cpp in Sources */, + A8EA80090A19516E00A8EF5F /* MediaList.cpp in Sources */, + E44613E30CD6819F00FADA75 /* MediaPlayer.cpp in Sources */, + 072C8B11131C518600A4FCE9 /* MediaPlayerPrivateAVFoundation.cpp in Sources */, + DF9AFD7313FC31D80015FEB7 /* MediaPlayerPrivateAVFoundationObjC.mm in Sources */, + E44613E50CD681A600FADA75 /* MediaPlayerPrivateQTKit.mm in Sources */, + 4E1959290A39DACC00220FE5 /* MediaQuery.cpp in Sources */, + 4E19592B0A39DACC00220FE5 /* MediaQueryEvaluator.cpp in Sources */, + 4E19592D0A39DACC00220FE5 /* MediaQueryExp.cpp in Sources */, + D3A94A38122DABAC00A37BBC /* MediaQueryList.cpp in Sources */, + D340629B1253BC8C009E4259 /* MediaQueryListListener.cpp in Sources */, + D3AA10F3123A98AA0092152B /* MediaQueryMatcher.cpp in Sources */, + FD671A77159BB07000197559 /* MediaStreamAudioSourceNode.cpp in Sources */, + BCB16C170979C3BD00467741 /* MemoryCache.cpp in Sources */, + 657EDA081385CB97004E0645 /* MemoryPressureHandler.cpp in Sources */, + 657EDA0B1385CBD8004E0645 /* MemoryPressureHandlerMac.mm in Sources */, + 93309DF9099E64920056E581 /* MergeIdenticalElementsCommand.cpp in Sources */, + E1ADECCF0E76AD8B004A1A5E /* MessageChannel.cpp in Sources */, + 75793E830D0CE0B3007FC0AC /* MessageEvent.cpp in Sources */, + E1ADECC00E76ACF1004A1A5E /* MessagePort.cpp in Sources */, + A78E526F1346BD1700AD9C31 /* MeterShadowElement.cpp in Sources */, + 2E07753116B1BD13004D9936 /* MicroDataAttributeTokenList.cpp in Sources */, + 37DDCD9413844FD50008B793 /* MIMEHeader.cpp in Sources */, + BC772C4E0C4EB3040083285F /* MIMETypeRegistry.cpp in Sources */, + BC772C5E0C4EB3440083285F /* MIMETypeRegistryMac.mm in Sources */, + 52F10865162B6DA4009AC81E /* MixedContentChecker.cpp in Sources */, + C6D74AE409AA290A000B0A52 /* ModifySelectionListLevel.cpp in Sources */, + F55B3DC51251F12D003EF269 /* MonthInputType.cpp in Sources */, + 85031B450A44EFC700F992E0 /* MouseEvent.cpp in Sources */, + 93EB355F09E37FD600F43799 /* MouseEventWithHitTestResults.cpp in Sources */, + 85031B470A44EFC700F992E0 /* MouseRelatedEvent.cpp in Sources */, + 93309DFB099E64920056E581 /* MoveSelectionCommand.cpp in Sources */, + FDB1700514A2BAB200A2B5D9 /* MultiChannelResampler.cpp in Sources */, + 85031B490A44EFC700F992E0 /* MutationEvent.cpp in Sources */, + C6F0900E14327B6100685849 /* MutationObserver.cpp in Sources */, + D6E528A3149A926D00EFE1F3 /* MutationObserverInterestGroup.cpp in Sources */, + D6E276AF14637455001D280A /* MutationObserverRegistration.cpp in Sources */, + C6F08FBC1430FE8F00685849 /* MutationRecord.cpp in Sources */, + 52B6C9C515E3F4DF00690B05 /* NamedFlowCollection.cpp in Sources */, + BCF34A3711A231CD00C71804 /* NamedNodeMap.cpp in Sources */, + A81872240977D3C0005826D9 /* NameNodeList.cpp in Sources */, + E10B9B6D0B747599003ED890 /* NativeXPathNSResolver.cpp in Sources */, + 93CCF0600AF6CA7600018E89 /* NavigationAction.cpp in Sources */, + 979F43D31075E44A0000F83B /* NavigationScheduler.cpp in Sources */, + A9C6E5A50D746458006442E9 /* Navigator.cpp in Sources */, + E12719CA0EEEC21300F61213 /* NavigatorBase.cpp in Sources */, + 9711460314EF009A00674FD9 /* NavigatorGeolocation.cpp in Sources */, + 5D874F130D161D3200796C3B /* NetscapePlugInStreamLoader.cpp in Sources */, + 59C27F05138D28C10079B7E2 /* NetworkResourcesData.cpp in Sources */, + 1A7FA61B0DDA3BBE0028F8A5 /* NetworkStateNotifier.cpp in Sources */, + 1A7FA6490DDA3CBA0028F8A5 /* NetworkStateNotifierMac.cpp in Sources */, + E13EF34916850C470034C83F /* NetworkStorageSessionCFNet.cpp in Sources */, + BCEF43E00E674110001C1287 /* NinePieceImage.cpp in Sources */, + A8C4A80009D563270003AC8D /* Node.cpp in Sources */, + 854FE7300A2297BE0058D7AD /* NodeFilter.cpp in Sources */, + 854FE7320A2297BE0058D7AD /* NodeFilterCondition.cpp in Sources */, + 854FE7340A2297BE0058D7AD /* NodeIterator.cpp in Sources */, + 4FFC022B1643B710004E1638 /* NodeRareData.cpp in Sources */, + A7F5D94F1384F02D00A29A87 /* NodeRenderingContext.cpp in Sources */, + A74F3EF31678B24A00B05A6E /* NodeRenderingTraversal.cpp in Sources */, + E43105B816750F0C00DB2FB8 /* NodeTraversal.cpp in Sources */, + A8EA7EBF0A1945D000A8EF5F /* Notation.cpp in Sources */, + 33503CC71017A1B1003B47E1 /* Notification.cpp in Sources */, + 3390CA550FFC157B00921962 /* NotificationCenter.cpp in Sources */, + 3128CA68147331520074C72A /* NotificationController.cpp in Sources */, + E1513D511677F08800149FCB /* NotImplemented.cpp in Sources */, + 1A569D0A0D7E2B82007C3983 /* NP_jsobject.cpp in Sources */, + 1A569D0D0D7E2B82007C3983 /* npruntime.cpp in Sources */, + 52F52E1114A0134F00ACC397 /* NSScrollerImpDetails.mm in Sources */, + F55B3DC71251F12D003EF269 /* NumberInputType.cpp in Sources */, + 1A569D130D7E2B82007C3983 /* objc_class.mm in Sources */, + 1A569D160D7E2B82007C3983 /* objc_instance.mm in Sources */, + 1A569D180D7E2B82007C3983 /* objc_runtime.mm in Sources */, + 1A569D1A0D7E2B82007C3983 /* objc_utility.mm in Sources */, + 1CF6BDFB0E9BB26A0025E1CD /* ObjCEventListener.mm in Sources */, + 1CF6BE140E9BB4670025E1CD /* ObjCNodeFilterCondition.mm in Sources */, + E16982601134636A00894115 /* ObjCRuntimeObject.mm in Sources */, + 7E5D7A76161D3F8F00896C34 /* OESElementIndexUint.cpp in Sources */, + 9001774012E0347800648462 /* OESStandardDerivatives.cpp in Sources */, + 6EBF0E4812A8926100DB1709 /* OESTextureFloat.cpp in Sources */, + A31C4E4D16E02AA6002F7957 /* OESTextureHalfFloat.cpp in Sources */, + 77A17A7112F28182004E02F6 /* OESVertexArrayObject.cpp in Sources */, + FDA3E959134A49EF008D4B5A /* OfflineAudioCompletionEvent.cpp in Sources */, + FDA9325D16703B2A008982DC /* OfflineAudioContext.cpp in Sources */, + FDA3E95B134A49EF008D4B5A /* OfflineAudioDestinationNode.cpp in Sources */, + 0014628A103CD1DE000B20DB /* OriginAccessEntry.cpp in Sources */, + FE9E89FB16E2DC0500A908F8 /* OriginLock.cpp in Sources */, + FD581FAE1520F91F003A7A75 /* OscillatorNode.cpp in Sources */, + 1A0D57360A5C77FE007EDD4C /* OverflowEvent.cpp in Sources */, + 65FEA86909833ADE00BED4AB /* Page.cpp in Sources */, + CD08285C1757250F00EC5FB7 /* PageActivityAssertionToken.cpp in Sources */, + 1477E7760BF4134A00152872 /* PageCache.cpp in Sources */, + DAED203016F2442B0070EC0F /* PageConsole.cpp in Sources */, + F3820892147D35F90010BC06 /* PageConsoleAgent.cpp in Sources */, + F34742DC134362F000531BC2 /* PageDebuggerAgent.cpp in Sources */, + 9302B0BD0D79F82900C7EE83 /* PageGroup.cpp in Sources */, + 9712A60415004EDA0048AF10 /* PageGroupIndexedDatabase.cpp in Sources */, + 7A674BDB0F9EBF4E006CF099 /* PageGroupLoadDeferrer.cpp in Sources */, + 1C26497C0D7E24EC00BD10F2 /* PageMac.cpp in Sources */, + FBDB619D16D6034600BB3394 /* PageRuleCollector.cpp in Sources */, + F3820894147D35F90010BC06 /* PageRuntimeAgent.cpp in Sources */, + F34742E41343633C00531BC2 /* PageScriptDebugServer.cpp in Sources */, + 371E65CE13661EED00BEEDB0 /* PageSerializer.cpp in Sources */, + A7197F2617568AE5007B9442 /* PageThrottler.cpp in Sources */, + E1284AEA10447DEE00EAEB52 /* PageTransitionEvent.cpp in Sources */, + 51E1ECC20C91C90400DC255B /* PageURLRecord.cpp in Sources */, + FFD5B97A135CC97800D5E92A /* PageVisibilityState.cpp in Sources */, + FD3160A212B026F700C1A359 /* Panner.cpp in Sources */, + FD31601912B0267600C1A359 /* PannerNode.cpp in Sources */, + 447958051643B4B2001E0A7F /* ParsedContentType.cpp in Sources */, + F55B3DC91251F12D003EF269 /* PasswordInputType.cpp in Sources */, + E453901E0EAFCACA003695C8 /* PasteboardIOS.mm in Sources */, + 4B2709830AF2E5E00065127F /* PasteboardMac.mm in Sources */, + B275357F0B053814002CE64F /* Path.cpp in Sources */, + B27535630B053814002CE64F /* PathCG.cpp in Sources */, + A88DD4890B4629B000C02990 /* PathTraversalState.cpp in Sources */, + A8FA6E5E0E4CFDED00D5CF49 /* Pattern.cpp in Sources */, + A80A38FE0E50CC8200A25EBC /* PatternCG.cpp in Sources */, + B27535640B053814002CE64F /* PDFDocumentImage.cpp in Sources */, + 8A7CC97012076F8A001D4588 /* PendingScript.cpp in Sources */, + E526AF3F1727F8F200E41781 /* Performance.cpp in Sources */, + 86BE340315058CB200CE0FD8 /* PerformanceEntryList.cpp in Sources */, + 8AF4E55511DC5A36000ED3DE /* PerformanceNavigation.cpp in Sources */, + 86512EDE154A2AEF00A90426 /* PerformanceResourceTiming.cpp in Sources */, + FD581FB41520F93B003A7A75 /* PeriodicWave.cpp in Sources */, + 49D5DC2D0F423A73008F20FD /* PerspectiveTransformOperation.cpp in Sources */, + D0FF2A5D11F8C45A007E74E0 /* PingLoader.cpp in Sources */, + 377C4CE01014E9F600B9AE42 /* PlaceholderDocument.cpp in Sources */, + 4958782112A57DDF007238AC /* PlatformCAAnimationMac.mm in Sources */, + 0F13164016ED0CDE0035CC04 /* PlatformCAFiltersMac.mm in Sources */, + 4958782212A57DDF007238AC /* PlatformCALayerMac.mm in Sources */, + CDEA763014608A53008B31F1 /* PlatformClockCA.cpp in Sources */, + CDAA8D0A14D71B2E0061EA60 /* PlatformClockCM.mm in Sources */, + BCAA486F14A052530088FAC4 /* PlatformEventFactoryMac.mm in Sources */, + 49182B5215DCE6F000548418 /* PlatformInstrumentation.cpp in Sources */, + F544F78815CFB2A800AF33A8 /* PlatformLocale.cpp in Sources */, + 41BF700F0FE86F61005E8DEC /* PlatformMessagePortChannel.cpp in Sources */, + C598902E14E9B0F800E8D18B /* PlatformPasteboardMac.mm in Sources */, + BC94D1080C274F88006BC617 /* PlatformScreenMac.mm in Sources */, + 2934940B16C02C0A00901318 /* PlatformSpeechSynthesisUtterance.cpp in Sources */, + 2934940A16C02C0700901318 /* PlatformSpeechSynthesisVoice.cpp in Sources */, + 297BE3DA16C043D8003316BD /* PlatformSpeechSynthesizer.cpp in Sources */, + 297BE3D816C03CCE003316BD /* PlatformSpeechSynthesizerMac.mm in Sources */, + 1AD8F81C11CAB9E900E93E54 /* PlatformStrategies.cpp in Sources */, + A9C6E4F30D745E48006442E9 /* PluginData.cpp in Sources */, + 97205ABB1239292700B17380 /* PluginDocument.cpp in Sources */, + 1ADA14100E1AE5D900023EE5 /* PluginMainThreadScheduler.cpp in Sources */, + 71E2183B17359FB8006E6E4D /* PlugInsResourcesData.cpp in Sources */, + 76FF17E311235673001D61B5 /* PluginViewNone.cpp in Sources */, + B2B1F7160D00CAA8004AEA64 /* PointerEventsHitRules.cpp in Sources */, + A1E1154613015C4E0054AC8C /* PointLightSource.cpp in Sources */, + 97059977107D975200A50A7C /* PolicyCallback.cpp in Sources */, + 97059979107D975200A50A7C /* PolicyChecker.cpp in Sources */, + FD45A959175D417100C21EC8 /* PolygonShape.cpp in Sources */, + 5189F0DE10B46B0E00F3C739 /* PopStateEvent.cpp in Sources */, + 93F19AF808245E59001E9ABC /* Position.cpp in Sources */, + 37919C230B7D188600A56998 /* PositionIterator.cpp in Sources */, + B776D43D1104527500BEB0EC /* PrintContext.cpp in Sources */, + A8EA7EBD0A1945D000A8EF5F /* ProcessingInstruction.cpp in Sources */, + E44613EB0CD681B400FADA75 /* ProgressEvent.cpp in Sources */, + A715E652134BBBEC00D8E713 /* ProgressShadowElement.cpp in Sources */, + 1A2A68230B5BEDE70002A480 /* ProgressTracker.cpp in Sources */, + E4BBED0E14F4025D003F0B98 /* PropertySetCSSStyleDeclaration.cpp in Sources */, + 514C76740CE923A1007EF3CD /* ProtectionSpace.cpp in Sources */, + 1AF8E13312565A4400230FF7 /* ProxyServer.cpp in Sources */, + 1AF8E1C3125673E000230FF7 /* ProxyServerCFNet.cpp in Sources */, + FF945ECB161F7F3600971BC8 /* PseudoElement.cpp in Sources */, + 0081FEFF16B0A2B6008AAA7A /* PublicSuffixMac.mm in Sources */, + E4D687770ED7AE3D006EA978 /* PurgeableBufferMac.cpp in Sources */, + 550A0BC9085F6039007353D6 /* QualifiedName.cpp in Sources */, + 379E371613736A6600B9E919 /* QuotedPrintable.cpp in Sources */, + 5A574F28131DB96D00471B88 /* QuotesData.cpp in Sources */, + F55B3DCB1251F12D003EF269 /* RadioInputType.cpp in Sources */, + B658FFA51522EFAA00DD5595 /* RadioNodeList.cpp in Sources */, + 93F19AB908245E59001E9ABC /* Range.cpp in Sources */, + 978D07BA145A0F3C0096908D /* RangeException.cpp in Sources */, + F55B3DCD1251F12D003EF269 /* RangeInputType.cpp in Sources */, + FD31603B12B0267600C1A359 /* RealtimeAnalyser.cpp in Sources */, + FD45A95A175D417100C21EC8 /* RectangleShape.cpp in Sources */, + BCAB418113E356E800D8AAF3 /* Region.cpp in Sources */, + 85031B4B0A44EFC700F992E0 /* RegisteredEventListener.cpp in Sources */, + B2C3DA2C0D006C1D00EF6F26 /* RegularExpression.cpp in Sources */, + 93309E00099E64920056E581 /* RemoveCSSPropertyCommand.cpp in Sources */, + D06C0D900CFD11460065F43F /* RemoveFormatCommand.cpp in Sources */, + 93309E04099E64920056E581 /* RemoveNodeCommand.cpp in Sources */, + 93309E06099E64920056E581 /* RemoveNodePreservingChildrenCommand.cpp in Sources */, + BCEA485B097D93020094C9E4 /* RenderApplet.cpp in Sources */, + BCEA485D097D93020094C9E4 /* RenderArena.cpp in Sources */, + BCEA485F097D93020094C9E4 /* RenderBlock.cpp in Sources */, + BCEA4852097D93020094C9E4 /* RenderBlockLineLayout.cpp in Sources */, + BCEA4861097D93020094C9E4 /* RenderBox.cpp in Sources */, + BC96DB460F3A882200573CB3 /* RenderBoxModelObject.cpp in Sources */, + BCEA4863097D93020094C9E4 /* RenderBR.cpp in Sources */, + BCEA4865097D93020094C9E4 /* RenderButton.cpp in Sources */, + BCE4413312F748E2009B84B8 /* RenderCombineText.cpp in Sources */, + 9392F1440AD185FE00691BD4 /* RenderCounter.cpp in Sources */, + BCEA486D097D93020094C9E4 /* RenderDeprecatedFlexibleBox.cpp in Sources */, + D302754912A5FE84004BD828 /* RenderDetailsMarker.cpp in Sources */, + 9B32CDAA13DF7FA900F34D13 /* RenderedPosition.cpp in Sources */, + 0F5B7A5410F65D7A00376302 /* RenderEmbeddedObject.cpp in Sources */, + A8EA73C30A1900E300A8EF5F /* RenderFieldset.cpp in Sources */, + 066C77300AB603FD00238CC4 /* RenderFileUploadControl.cpp in Sources */, + 53C8298D13D8D92700DE2DEB /* RenderFlexibleBox.cpp in Sources */, + 508CCA5013CF106B003151F3 /* RenderFlowThread.cpp in Sources */, + A871DED40A1530C700B12A68 /* RenderFrame.cpp in Sources */, + 0FD3080E117CF7E700A791F7 /* RenderFrameBase.cpp in Sources */, + A871DED20A1530C700B12A68 /* RenderFrameSet.cpp in Sources */, + CDEA7C851276230400B846DD /* RenderFullScreen.cpp in Sources */, + 0F3F0E59157030C3006DA57F /* RenderGeometryMap.cpp in Sources */, + BC128B01137C8D4600CAC845 /* RenderGrid.cpp in Sources */, + BCEA4869097D93020094C9E4 /* RenderHTMLCanvas.cpp in Sources */, + 0FD308D5117D168500A791F7 /* RenderIFrame.cpp in Sources */, + BCEA4875097D93020094C9E4 /* RenderImage.cpp in Sources */, + 08F2F0091213E61700DCEC48 /* RenderImageResource.cpp in Sources */, + 08641D4712142F7D008DE9F6 /* RenderImageResourceStyleImage.cpp in Sources */, + BCEA4877097D93020094C9E4 /* RenderInline.cpp in Sources */, + BCEA4879097D93020094C9E4 /* RenderLayer.cpp in Sources */, + 0F580D000F12DE9B0051D689 /* RenderLayerBacking.cpp in Sources */, + 0F580CFE0F12DE9B0051D689 /* RenderLayerCompositor.cpp in Sources */, + 50D10D991545F5760096D288 /* RenderLayerFilterInfo.cpp in Sources */, + 3C244FEBA375AC633F88BE6F /* RenderLayerModelObject.cpp in Sources */, + BC33FB1B0F30EE85002CDD7C /* RenderLineBoxList.cpp in Sources */, + ABB5419E0ACDDFE4002820EB /* RenderListBox.cpp in Sources */, + A8EA7A4E0A191A5200A8EF5F /* RenderListItem.cpp in Sources */, + A8EA7A510A191A5200A8EF5F /* RenderListMarker.cpp in Sources */, + 0F5602900E4B76580065B038 /* RenderMarquee.cpp in Sources */, + 439046D712DA25E800AF80A2 /* RenderMathMLBlock.cpp in Sources */, + 439046D912DA25E800AF80A2 /* RenderMathMLFenced.cpp in Sources */, + 439046DB12DA25E800AF80A2 /* RenderMathMLFraction.cpp in Sources */, + 439046DD12DA25E800AF80A2 /* RenderMathMLMath.cpp in Sources */, + 439046DF12DA25E800AF80A2 /* RenderMathMLOperator.cpp in Sources */, + 439046E112DA25E800AF80A2 /* RenderMathMLRoot.cpp in Sources */, + 439046E312DA25E800AF80A2 /* RenderMathMLRow.cpp in Sources */, + 5B7A208D2E12979B4AE19DE6 /* RenderMathMLSpace.cpp in Sources */, + 439046E512DA25E800AF80A2 /* RenderMathMLSquareRoot.cpp in Sources */, + 439046E712DA25E800AF80A2 /* RenderMathMLSubSup.cpp in Sources */, + 439046E912DA25E800AF80A2 /* RenderMathMLUnderOver.cpp in Sources */, + E4C279580CF9741900E97B98 /* RenderMedia.cpp in Sources */, + DE49B309165F2FE10010338D /* RenderMediaControlElements.cpp in Sources */, + 41FA303E1316C29C00C0BFC5 /* RenderMediaControls.cpp in Sources */, + ABDDFE790A5C6E7000A3E11D /* RenderMenuList.cpp in Sources */, + A454424E119B3687009BE912 /* RenderMeter.cpp in Sources */, + BC45827F151299C10061A556 /* RenderMultiColumnBlock.cpp in Sources */, + 1A3586DF15264C450022A659 /* RenderMultiColumnFlowThread.cpp in Sources */, + BCE32B9E1517C22700F542EC /* RenderMultiColumnSet.cpp in Sources */, + 1A3FF9C315265359002288A1 /* RenderNamedFlowThread.cpp in Sources */, + BCEA487F097D93020094C9E4 /* RenderObject.cpp in Sources */, + BC60EFB70F33A0E700812A93 /* RenderObjectChildList.cpp in Sources */, + A871DED00A1530C700B12A68 /* RenderPart.cpp in Sources */, + A43BF59C1149292800C643CA /* RenderProgress.cpp in Sources */, + 5A574F24131DB93900471B88 /* RenderQuote.cpp in Sources */, + D70AD65713E1342B005B50B4 /* RenderRegion.cpp in Sources */, + BCE93F471517C6D5008CCF74 /* RenderRegionSet.cpp in Sources */, + A871DFE20A15376B00B12A68 /* RenderReplaced.cpp in Sources */, + BCA846D60DC67A350026C309 /* RenderReplica.cpp in Sources */, + 1479FAED109AE37500DED655 /* RenderRuby.cpp in Sources */, + 1479FAEF109AE37500DED655 /* RenderRubyBase.cpp in Sources */, + 1479FAF1109AE37500DED655 /* RenderRubyRun.cpp in Sources */, + 1479FAF3109AE37500DED655 /* RenderRubyText.cpp in Sources */, + BC3BE9930E9C1C7C00835588 /* RenderScrollbar.cpp in Sources */, + BC3BE9AB0E9C242000835588 /* RenderScrollbarPart.cpp in Sources */, + BC3BE9A50E9C239600835588 /* RenderScrollbarTheme.cpp in Sources */, + 458FE4091589DF0B005609E6 /* RenderSearchField.cpp in Sources */, + AB247A6C0AFD6383003FA5FD /* RenderSlider.cpp in Sources */, + 31955A86160D199000858025 /* RenderSnapshottedPlugIn.cpp in Sources */, + BC8C8FAD0DDCD31B00B592F4 /* RenderStyle.cpp in Sources */, + 0F4E57171313276200CF85AF /* RenderSVGAllInOne.cpp in Sources */, + A8DF4AEC0980C42C0052981B /* RenderTable.cpp in Sources */, + 6ED878C4147493F4004C3597 /* RenderTableCaption.cpp in Sources */, + A8DF4AEA0980C42C0052981B /* RenderTableCell.cpp in Sources */, + A8DF4AE80980C42C0052981B /* RenderTableCol.cpp in Sources */, + A8DF4AF00980C42C0052981B /* RenderTableRow.cpp in Sources */, + A8DF4AED0980C42C0052981B /* RenderTableSection.cpp in Sources */, + BCEA488B097D93020094C9E4 /* RenderText.cpp in Sources */, + AB67D1A8097F3AE300F9392E /* RenderTextControl.cpp in Sources */, + 083DAEA60F01A7FB00342754 /* RenderTextControlMultiLine.cpp in Sources */, + 083DAEA80F01A7FB00342754 /* RenderTextControlSingleLine.cpp in Sources */, + BCEA488D097D93020094C9E4 /* RenderTextFragment.cpp in Sources */, + 86FF886115DE3D0700BD6B28 /* RenderTextTrackCue.cpp in Sources */, + BCEA4889097D93020094C9E4 /* RenderTheme.cpp in Sources */, + BCEA4888097D93020094C9E4 /* RenderThemeMac.mm in Sources */, + 93F19AD508245E59001E9ABC /* RenderTreeAsText.cpp in Sources */, + E44614510CD68A3500FADA75 /* RenderVideo.cpp in Sources */, + BCEA4867097D93020094C9E4 /* RenderView.cpp in Sources */, + A871DFE50A15376B00B12A68 /* RenderWidget.cpp in Sources */, + 93799EF80BF2743600D0F230 /* RenderWordBreak.cpp in Sources */, + A89CCC520F44E98100B5DA10 /* ReplaceNodeWithSpanCommand.cpp in Sources */, + 93309E09099E64920056E581 /* ReplaceSelectionCommand.cpp in Sources */, + F55B3DCF1251F12D003EF269 /* ResetInputType.cpp in Sources */, + 514BC842161CF05C004D52F4 /* ResourceBuffer.cpp in Sources */, + 514BC83F161CF04A004D52F4 /* ResourceBuffer.mm in Sources */, + 934F713E0D5A6F2800018D69 /* ResourceErrorBase.cpp in Sources */, + 7EE6846B12D26E3800E79415 /* ResourceErrorCF.cpp in Sources */, + 514C76500CE9234E007EF3CD /* ResourceErrorMac.mm in Sources */, + 514C76780CE923A1007EF3CD /* ResourceHandle.cpp in Sources */, + 7EE6846C12D26E3800E79415 /* ResourceHandleCFNet.cpp in Sources */, + E1BA003116FB92AC00BA7A35 /* ResourceHandleClient.cpp in Sources */, + 514C76510CE9234E007EF3CD /* ResourceHandleMac.mm in Sources */, + 93E227E30AF589AD00D48324 /* ResourceLoader.cpp in Sources */, + 7EE6847512D26E7000E79415 /* ResourceLoaderCFNet.cpp in Sources */, + 51AA3F6F0BD5AA9E00892971 /* ResourceLoaderMac.mm in Sources */, + 973E325610883B7C005BC493 /* ResourceLoadNotifier.cpp in Sources */, + D0CE58F8125E4CC200F3F199 /* ResourceLoadScheduler.cpp in Sources */, + 861C2EA613FB4FFF00062ABB /* ResourceLoadTiming.cpp in Sources */, + 514C767C0CE923A1007EF3CD /* ResourceRequestBase.cpp in Sources */, + 7EE6846E12D26E3800E79415 /* ResourceRequestCFNet.cpp in Sources */, + 514C76530CE9234E007EF3CD /* ResourceRequestMac.mm in Sources */, + 514C767E0CE923A1007EF3CD /* ResourceResponseBase.cpp in Sources */, + 7EE6847112D26E3800E79415 /* ResourceResponseCFNet.cpp in Sources */, + 514C76550CE9234F007EF3CD /* ResourceResponseMac.mm in Sources */, + FD3160A412B026F700C1A359 /* Reverb.cpp in Sources */, + FD3160A612B026F700C1A359 /* ReverbAccumulationBuffer.cpp in Sources */, + FD3160A812B026F700C1A359 /* ReverbConvolver.cpp in Sources */, + FD3160AA12B026F700C1A359 /* ReverbConvolverStage.cpp in Sources */, + FD3160AC12B026F700C1A359 /* ReverbInputBuffer.cpp in Sources */, + BC74DA381013F3F7007987AD /* RGBColor.cpp in Sources */, + A8CFF5E70A155A05000A4234 /* RootInlineBox.cpp in Sources */, + 49E911C80EF86D47009D0CAF /* RotateTransformOperation.cpp in Sources */, + A73F95FE12C97BFE0031AAF9 /* RoundedRect.cpp in Sources */, + A79BADA1161E7F3F00C2E652 /* RuleFeature.cpp in Sources */, + A79BADA3161E7F3F00C2E652 /* RuleSet.cpp in Sources */, + BC0B358714C4F9830055E22A /* RunLoop.cpp in Sources */, + 29A309AC1561C99B00BBD8E5 /* RunLoopCF.cpp in Sources */, + BC0B358314C4F9540055E22A /* RunLoopMac.mm in Sources */, + 1A569D1E0D7E2B82007C3983 /* runtime_array.cpp in Sources */, + 1A569D200D7E2B82007C3983 /* runtime_method.cpp in Sources */, + 1A569D220D7E2B82007C3983 /* runtime_object.cpp in Sources */, + 1A569D240D7E2B82007C3983 /* runtime_root.cpp in Sources */, + 293EAE211356B32E0067ACF9 /* RuntimeApplicationChecks.cpp in Sources */, + 8C6EA61911EF7E0400FD8EE3 /* RuntimeEnabledFeatures.cpp in Sources */, + 49E911CA0EF86D47009D0CAF /* ScaleTransformOperation.cpp in Sources */, + 5DFE8F560D16477B0076E937 /* ScheduledAction.cpp in Sources */, + 5162C7F411F77EFB00612EFE /* SchemeRegistry.cpp in Sources */, + 9BD0BF9412A42BF50072FD43 /* ScopedEventQueue.cpp in Sources */, + BCEC01BD0C274DAC009F4EC9 /* Screen.cpp in Sources */, + A84D82C211D3474800972990 /* ScriptableDocumentParser.cpp in Sources */, + F39BE95B12673BF400E0A674 /* ScriptArguments.cpp in Sources */, + 41F1D2200EF35C2A00DA8753 /* ScriptCachedFrameData.cpp in Sources */, + 416E75CC0EDF90C700360E1D /* ScriptCallFrame.cpp in Sources */, + 416E75BF0EDF8FD700360E1D /* ScriptCallStack.cpp in Sources */, + F392249C126F11AE00A926D9 /* ScriptCallStackFactory.cpp in Sources */, + 93B70D6F09EB0C7C009D8468 /* ScriptController.cpp in Sources */, + 97EF7DFE107E55B700D7C49C /* ScriptControllerBase.cpp in Sources */, + A83E1C740E49042C00140B9C /* ScriptControllerMac.mm in Sources */, + 9F6FC1961122E82A00E80196 /* ScriptDebugServer.cpp in Sources */, + 4998AED113FB224D0090B1AA /* ScriptedAnimationController.cpp in Sources */, + 08A484770E5272C500C3FE76 /* ScriptElement.cpp in Sources */, + 411046420FA222A600BA436A /* ScriptEventListener.cpp in Sources */, + E11C9DB00EB3699500E409DB /* ScriptExecutionContext.cpp in Sources */, + 41002CCE0F66EDEF009E660D /* ScriptFunctionCall.cpp in Sources */, + 4FD8D0F2119C718B002FA825 /* ScriptGCEvent.cpp in Sources */, + 41F066E50F64BCF600A07EAC /* ScriptObject.cpp in Sources */, + FD31603512B0267600C1A359 /* ScriptProcessorNode.cpp in Sources */, + F33F0282120947F200E5743A /* ScriptProfile.cpp in Sources */, + 9F72305011184B4100AD0126 /* ScriptProfiler.cpp in Sources */, + 8A413AE11207BBA50082016E /* ScriptRunner.cpp in Sources */, + 4127D5370F8AAB1D00E424F5 /* ScriptState.cpp in Sources */, + 934CC0E10ED39D6F00A658F2 /* ScriptValue.cpp in Sources */, + BC8AE34E12EA096A00EB3AE6 /* ScrollableArea.cpp in Sources */, + CA3BF67C10D99BAE00E6CE53 /* ScrollAnimator.cpp in Sources */, + BC51156E12B1749C00C96754 /* ScrollAnimatorMac.mm in Sources */, + BCAA90C30A7EBA60008B1229 /* Scrollbar.cpp in Sources */, + 0F09087F1444FDB200028917 /* ScrollbarTheme.cpp in Sources */, + BC14028A0E83680800319717 /* ScrollbarThemeComposite.cpp in Sources */, + BCEF869F0E844E9D00A85CD5 /* ScrollbarThemeMac.mm in Sources */, + 0FE71405142170B800DB33BA /* ScrollbarThemeMock.cpp in Sources */, + 5D925B670F64D4DD00B847F0 /* ScrollBehavior.cpp in Sources */, + 1AA84F04143BA7BD0051D153 /* ScrollElasticityController.mm in Sources */, + 0F605AEC15F94848004DF0C0 /* ScrollingConstraints.cpp in Sources */, + 1AF62EE714DA22A70041556C /* ScrollingCoordinator.cpp in Sources */, + 1AF62EE614DA22A70041556C /* ScrollingCoordinatorMac.mm in Sources */, + 93C38BFE164473C700091EB2 /* ScrollingStateFixedNode.cpp in Sources */, + 931CBD0C161A44E900E4C874 /* ScrollingStateNode.cpp in Sources */, + 931CBD13161A44F800E4C874 /* ScrollingStateNodeMac.mm in Sources */, + 931CBD0E161A44E900E4C874 /* ScrollingStateScrollingNode.cpp in Sources */, + 0FA88EBD16A8D1BD00F99984 /* ScrollingStateScrollingNodeMac.mm in Sources */, + 0FB8890E167D30160010CDA5 /* ScrollingStateStickyNode.cpp in Sources */, + 931CBD10161A44E900E4C874 /* ScrollingStateTree.cpp in Sources */, + 1AF62F2514DAFE9E0041556C /* ScrollingThread.cpp in Sources */, + 1AF62F2414DAFE910041556C /* ScrollingThreadMac.mm in Sources */, + 1AAADDA314DB409F00AF64B3 /* ScrollingTree.cpp in Sources */, + 93C38C04164473DD00091EB2 /* ScrollingTreeFixedNode.mm in Sources */, + 1AAADDE314DC8C8F00AF64B3 /* ScrollingTreeNode.cpp in Sources */, + 9391A99C1629D70000297330 /* ScrollingTreeScrollingNode.cpp in Sources */, + 93C4A4161629DF5A00C3EB6E /* ScrollingTreeScrollingNodeMac.mm in Sources */, + 0FB8890B167D2FA10010CDA5 /* ScrollingTreeStickyNode.mm in Sources */, + BC2441C40E8B65D00055320F /* ScrollView.cpp in Sources */, + 9353676B09AED88B00D35CD6 /* ScrollViewMac.mm in Sources */, + F55B3DD11251F12D003EF269 /* SearchInputType.cpp in Sources */, + 976F36EA14686225005E93B4 /* SecurityContext.cpp in Sources */, + BCD0E0FA0E972C3500265DEA /* SecurityOrigin.cpp in Sources */, + 974D2DA4146A535D00D51F8B /* SecurityPolicy.cpp in Sources */, + 371F4FFD0D25E7F300ECE0D5 /* SegmentedFontData.cpp in Sources */, + B2C3DA2E0D006C1D00EF6F26 /* SegmentedString.cpp in Sources */, + E44B4BB3141650D7002B1D8B /* SelectorChecker.cpp in Sources */, + 41B8CD4516D04591000E8CC0 /* SelectorCheckerFastPath.cpp in Sources */, + 415071571685067300C3C7B3 /* SelectorFilter.cpp in Sources */, + E45322AB140CE267005A0F92 /* SelectorQuery.cpp in Sources */, + A75E497710752ACB00C9B896 /* SerializedScriptValue.cpp in Sources */, + 93309E0F099E64920056E581 /* SetNodeAttributeCommand.cpp in Sources */, + B8DBDB4B130B0F8A00F5CDB1 /* SetSelectionCommand.cpp in Sources */, + 14C9A5EA0B3D105F005A0232 /* Settings.cpp in Sources */, + E1C2F24A1533A2120083F974 /* SettingsMac.mm in Sources */, + 0F3DD44F12F5EA1B000D9190 /* ShadowBlur.cpp in Sources */, + BC5EB8C30E82031B00B25965 /* ShadowData.cpp in Sources */, + A6D169621346B49B000EB770 /* ShadowRoot.cpp in Sources */, + A80E6CF40A1989CA007FB8C5 /* ShadowValue.cpp in Sources */, + FD45A953175D3FB800C21EC8 /* Shape.cpp in Sources */, + FD45A954175D3FB800C21EC8 /* ShapeInfo.cpp in Sources */, + FD45A955175D3FB800C21EC8 /* ShapeInsideInfo.cpp in Sources */, + FD45A95C175D420D00C21EC8 /* ShapeInterval.cpp in Sources */, + FD45A956175D3FB800C21EC8 /* ShapeOutsideInfo.cpp in Sources */, + 1A4A954D0B4EDCCB002D8C3C /* SharedBuffer.cpp in Sources */, + 512DD8E30D91E2B4000F89EE /* SharedBufferCF.cpp in Sources */, + 97B1F02E13B025CA00F5103F /* SharedBufferChunkReader.cpp in Sources */, + 1A4A95520B4EDCFF002D8C3C /* SharedBufferMac.mm in Sources */, + E45390460EAFD637003695C8 /* SharedTimerIOS.mm in Sources */, + 93309EA2099EB78C0056E581 /* SharedTimerMac.mm in Sources */, + 41E1B1D30FF5986900576B3B /* SharedWorker.cpp in Sources */, + 41D168E710226E89009BC827 /* SharedWorkerGlobalScope.cpp in Sources */, + E1B784201639CBBE0007B692 /* SharedWorkerRepository.cpp in Sources */, + 41D168ED10226E89009BC827 /* SharedWorkerThread.cpp in Sources */, + B2C3DA640D006CD600EF6F26 /* SimpleFontData.cpp in Sources */, + 163E88F7118A39D200ED9231 /* SimpleFontDataCoreText.cpp in Sources */, + B2AFFC7F0D00A5C10030074D /* SimpleFontDataMac.mm in Sources */, + C5A1EA7C152BCF04004D00B6 /* SimplifyMarkupCommand.cpp in Sources */, + FD00D7A414A3F61900734011 /* SincResampler.cpp in Sources */, + 51327D6111A33A2B004F9D65 /* SinkDocument.cpp in Sources */, + 49E911CC0EF86D47009D0CAF /* SkewTransformOperation.cpp in Sources */, + 4150F9F212B6E0E70008C860 /* SliderThumbElement.cpp in Sources */, + 4B6FA6F70C39E4A100087011 /* SmartReplaceCF.cpp in Sources */, + E4AFD00B0DAF335400F5F55C /* SMILTime.cpp in Sources */, + E4AFD00D0DAF335500F5F55C /* SMILTimeContainer.cpp in Sources */, + 510D4A33103165EE0049EA54 /* SocketStreamErrorBase.cpp in Sources */, + 510D4A36103165EE0049EA54 /* SocketStreamHandleBase.cpp in Sources */, + 51ABAE1F103C1913008C5260 /* SocketStreamHandleCFNet.cpp in Sources */, + 4B3043C90AE0371D00A82647 /* SoundMac.mm in Sources */, + 84A81F3D0FC7DFF000955300 /* SourceAlpha.cpp in Sources */, + 84A81F410FC7E02700955300 /* SourceGraphic.cpp in Sources */, + D01A27AD10C9BFD800026A42 /* SpaceSplitString.cpp in Sources */, + 626CDE0E1140424C001E5A68 /* SpatialNavigation.cpp in Sources */, + 75415C29129A9920003AD669 /* SpeechInputResultList.cpp in Sources */, + AA2A5AD516A4861400975A25 /* SpeechSynthesis.cpp in Sources */, + AA2A5AD316A4860D00975A25 /* SpeechSynthesisEvent.cpp in Sources */, + AA2A5AD116A4860700975A25 /* SpeechSynthesisUtterance.cpp in Sources */, + AA2A5ACD16A485FA00975A25 /* SpeechSynthesisVoice.cpp in Sources */, + A78FE13B12366B1000ACE8D0 /* SpellChecker.cpp in Sources */, + B8DBDB4D130B0F8A00F5CDB1 /* SpellingCorrectionCommand.cpp in Sources */, + 4512502215DCE37D002F84E2 /* SpinButtonElement.cpp in Sources */, + 93309E11099E64920056E581 /* SplitElementCommand.cpp in Sources */, + 93309E13099E64920056E581 /* SplitTextNodeCommand.cpp in Sources */, + 93309E15099E64920056E581 /* SplitTextNodeContainingElementCommand.cpp in Sources */, + A1E1154813015C5D0054AC8C /* SpotLightSource.cpp in Sources */, + 97BC6A3E1505F081001B74AC /* SQLException.cpp in Sources */, + 1A2E6E7A0CC556D5004A2062 /* SQLiteAuthorizer.cpp in Sources */, + 1A2246490CC98DDB00C05240 /* SQLiteDatabase.cpp in Sources */, + B5A684240FFABEAA00D24689 /* SQLiteFileSystem.cpp in Sources */, + 1A22464B0CC98DDB00C05240 /* SQLiteStatement.cpp in Sources */, + 1A22464D0CC98DDB00C05240 /* SQLiteTransaction.cpp in Sources */, + 97BC6A411505F081001B74AC /* SQLResultSet.cpp in Sources */, + 97BC6A441505F081001B74AC /* SQLResultSetRowList.cpp in Sources */, + 97BC6A471505F081001B74AC /* SQLStatement.cpp in Sources */, + FE8A674716CDD19E00930BF8 /* SQLStatementBackend.cpp in Sources */, + 97BC6A4D1505F081001B74AC /* SQLStatementSync.cpp in Sources */, + 97BC6A4F1505F081001B74AC /* SQLTransaction.cpp in Sources */, + FEE1811316C319E800084849 /* SQLTransactionBackend.cpp in Sources */, + FEAD7D8716C339EE00D4670B /* SQLTransactionBackendSync.cpp in Sources */, + 97BC6A541505F081001B74AC /* SQLTransactionClient.cpp in Sources */, + 97BC6A561505F081001B74AC /* SQLTransactionCoordinator.cpp in Sources */, + FE36FD1616C7826500F887C1 /* SQLTransactionStateMachine.cpp in Sources */, + 97BC6A5A1505F081001B74AC /* SQLTransactionSync.cpp in Sources */, + 1A2E6E590CC55213004A2062 /* SQLValue.cpp in Sources */, + 93F19AE608245E59001E9ABC /* SSLKeyGeneratorMac.cpp in Sources */, + BC7FA62E0D1F0EFF00DB22A9 /* StaticNodeList.cpp in Sources */, + A5AFB34F115151A700B045CB /* StepRange.cpp in Sources */, + 51E3F9C70DA059DC00250911 /* Storage.cpp in Sources */, + C5160EEA1004543A00A7CEE2 /* StorageAreaImpl.cpp in Sources */, + C5102ED00FD9EF8C00FAFF04 /* StorageAreaSync.cpp in Sources */, + 51E0BABC0DA5547100A9E417 /* StorageEvent.cpp in Sources */, + C5E9B67710697E1300C7BB1A /* StorageEventDispatcher.cpp in Sources */, + 51E0BB390DA5ACB600A9E417 /* StorageMap.cpp in Sources */, + C50D0E820FF4272900AC2644 /* StorageNamespace.cpp in Sources */, + C55E38C010040D5D00A56BDB /* StorageNamespaceImpl.cpp in Sources */, + 1AB09DB416AF5F6C008538E7 /* StorageStrategy.cpp in Sources */, + C5102D950FD9AA2D00FAFF04 /* StorageSyncManager.cpp in Sources */, + 511F23190DC160DA004F0032 /* StorageThread.cpp in Sources */, + 3AB02D2B12D4F91600FBB694 /* StorageTracker.cpp in Sources */, + 8102C5881325BB1100DDE67A /* StringCallback.cpp in Sources */, + B2B2645C0D00A77E000ACC1D /* StringCF.cpp in Sources */, + B2B2645D0D00A77E000ACC1D /* StringImplCF.cpp in Sources */, + B2AFFC950D00A5DF0030074D /* StringImplMac.mm in Sources */, + B2AFFC960D00A5DF0030074D /* StringMac.mm in Sources */, + B23540F20D00782E002382FA /* StringTruncator.cpp in Sources */, + BC5EB6A20E81DC4F00B25965 /* StyleBackgroundData.cpp in Sources */, + BC5EB67D0E81D42000B25965 /* StyleBoxData.cpp in Sources */, + BCEF447A0E6747D0001C1287 /* StyleCachedImage.cpp in Sources */, + 9393E604151A9A1800066F06 /* StyleCachedImageSet.cpp in Sources */, + 5038BE2F1472AD230095E0D1 /* StyleCachedShader.cpp in Sources */, + 50E18CD816F9285800C65486 /* StyleCustomFilterProgram.cpp in Sources */, + 50E18CD916F9285800C65486 /* StyleCustomFilterProgramCache.cpp in Sources */, + A8C4A7FE09D563270003AC8D /* StyledElement.cpp in Sources */, + BC5EB8B80E8201BD00B25965 /* StyleDeprecatedFlexibleBoxData.cpp in Sources */, + AA4C3A760B2B1679002334A2 /* StyleElement.cpp in Sources */, + 319AE063142D6B24006563A1 /* StyleFilterData.cpp in Sources */, + 5317612213C516690026E454 /* StyleFlexibleBoxData.cpp in Sources */, + BCEF447D0E674806001C1287 /* StyleGeneratedImage.cpp in Sources */, + A10DC76A14747BAB005E2471 /* StyleGridData.cpp in Sources */, + A110DB9D14F5DF8700A03B93 /* StyleGridItemData.cpp in Sources */, + BC2273030E82F1E600E7F975 /* StyleInheritedData.cpp in Sources */, + E47127CA163438A100ED6F5A /* StyleInvalidationAnalysis.cpp in Sources */, + BC5EB7290E81DE8100B25965 /* StyleMarqueeData.cpp in Sources */, + 0FF50271102BA96A0066F39A /* StyleMedia.cpp in Sources */, + BC5EB74D0E81E06700B25965 /* StyleMultiColData.cpp in Sources */, + A80E6DFB0A199067007FB8C5 /* StylePropertySet.cpp in Sources */, + E1B25106152A0BAF0069B779 /* StylePropertyShorthand.cpp in Sources */, + BC2272E30E82EE9B00E7F975 /* StyleRareInheritedData.cpp in Sources */, + BC2272BC0E82EAAE00E7F975 /* StyleRareNonInheritedData.cpp in Sources */, + E139866315478474001E3F65 /* StyleResolver.cpp in Sources */, + E4BBED4C14FCDBA1003F0B98 /* StyleRule.cpp in Sources */, + E4946EAE156E64DD00D3297F /* StyleRuleImport.cpp in Sources */, + A8EA800D0A19516E00A8EF5F /* StyleSheet.cpp in Sources */, + E4F9EEF2156D9FFA00D23E7E /* StyleSheetContents.cpp in Sources */, + A8EA800B0A19516E00A8EF5F /* StyleSheetList.cpp in Sources */, + BC5EB5E70E81BFEF00B25965 /* StyleSurroundData.cpp in Sources */, + BC5EB80F0E81F2CE00B25965 /* StyleTransformData.cpp in Sources */, + BC5EB6990E81DA6300B25965 /* StyleVisualData.cpp in Sources */, + D000ED2711C1B9CD00C47726 /* SubframeLoader.cpp in Sources */, + 1FC40FB91655CCB60040F29E /* SubimageCacheWithTimer.cpp in Sources */, + F55B3DD31251F12D003EF269 /* SubmitInputType.cpp in Sources */, + 93E227E40AF589AD00D48324 /* SubresourceLoader.cpp in Sources */, + 7E37EF2E1339208800B29250 /* SubresourceLoaderCF.cpp in Sources */, + 93B2D8180F9920EE006AE6B2 /* SuddenTermination.mm in Sources */, + 087558C513B4A57D00F49307 /* SurrogatePairAwareTextIterator.cpp in Sources */, + 62C1217C11AB9E77003C462C /* SuspendableTimer.cpp in Sources */, + B22279730D00BF220071B782 /* SVGAElement.cpp in Sources */, + 24D912B013CA9A1F00D21915 /* SVGAltGlyphDefElement.cpp in Sources */, + 65653F2D0D9727D200CA9723 /* SVGAltGlyphElement.cpp in Sources */, + 24D912B713CA9A6900D21915 /* SVGAltGlyphItemElement.cpp in Sources */, + B22279760D00BF220071B782 /* SVGAngle.cpp in Sources */, + B22279790D00BF220071B782 /* SVGAnimateColorElement.cpp in Sources */, + 4362C7B913AC6F1A00344BEB /* SVGAnimatedAngle.cpp in Sources */, + 431A308813B8F978007791E4 /* SVGAnimatedBoolean.cpp in Sources */, + 43A625F913B3304000AC94B8 /* SVGAnimatedColor.cpp in Sources */, + 71CC7A20152A0BFE009EEAF9 /* SVGAnimatedEnumeration.cpp in Sources */, + 43F6FD9613BCD0B100224052 /* SVGAnimatedInteger.cpp in Sources */, + 1A3586E115264F950022A659 /* SVGAnimatedIntegerOptionalInteger.cpp in Sources */, + 4381763B13A697D4007D1187 /* SVGAnimatedLength.cpp in Sources */, + 431A2FD713B7707A007791E4 /* SVGAnimatedLengthList.cpp in Sources */, + 43A0F0B113AC7D6D00A5F0A7 /* SVGAnimatedNumber.cpp in Sources */, + 4331AC7813B6870000A9E5AE /* SVGAnimatedNumberList.cpp in Sources */, + 431A2F9D13B6F2B0007791E4 /* SVGAnimatedNumberOptionalNumber.cpp in Sources */, + 08B5F25513B5FFF2002959EC /* SVGAnimatedPath.cpp in Sources */, + 43B9336A13B261B1004584BF /* SVGAnimatedPointList.cpp in Sources */, + 431A302113B89DCC007791E4 /* SVGAnimatedPreserveAspectRatio.cpp in Sources */, + 836FBCEC178C117F00B21A15 /* SVGAnimatedProperty.cpp in Sources */, + 43142E7A13B1E97700F1C871 /* SVGAnimatedRect.cpp in Sources */, + 43A6266713B3D11000AC94B8 /* SVGAnimatedString.cpp in Sources */, + 7157F062150B6564006EAABD /* SVGAnimatedTransformList.cpp in Sources */, + 43A0F0B613ACCCFF00A5F0A7 /* SVGAnimatedType.cpp in Sources */, + 836FBCEA178C113200B21A15 /* SVGAnimatedTypeAnimator.cpp in Sources */, + B222798F0D00BF220071B782 /* SVGAnimateElement.cpp in Sources */, + B22279920D00BF220071B782 /* SVGAnimateMotionElement.cpp in Sources */, + B22279940D00BF220071B782 /* SVGAnimateTransformElement.cpp in Sources */, + B22279970D00BF220071B782 /* SVGAnimationElement.cpp in Sources */, + 08FB17C113BC7E9100040086 /* SVGAttributeToPropertyMap.cpp in Sources */, + B222799B0D00BF220071B782 /* SVGCircleElement.cpp in Sources */, + B222799E0D00BF220071B782 /* SVGClipPathElement.cpp in Sources */, + B22279A10D00BF220071B782 /* SVGColor.cpp in Sources */, + B22279A40D00BF220071B782 /* SVGComponentTransferFunctionElement.cpp in Sources */, + B2227B050D00BFF10071B782 /* SVGCSSComputedStyleDeclaration.cpp in Sources */, + B2227B060D00BFF10071B782 /* SVGCSSParser.cpp in Sources */, + B2227B080D00BFF10071B782 /* SVGCSSStyleSelector.cpp in Sources */, + B22279A70D00BF220071B782 /* SVGCursorElement.cpp in Sources */, + B22279AD0D00BF220071B782 /* SVGDefsElement.cpp in Sources */, + B22279B00D00BF220071B782 /* SVGDescElement.cpp in Sources */, + B22279B30D00BF220071B782 /* SVGDocument.cpp in Sources */, + B28C6A270D00C44800334AA4 /* SVGDocumentExtensions.cpp in Sources */, + B22279B60D00BF220071B782 /* SVGElement.cpp in Sources */, + A833C8520A2CF52800D57664 /* SVGElementFactory.cpp in Sources */, + B22279B90D00BF220071B782 /* SVGElementInstance.cpp in Sources */, + B22279BC0D00BF220071B782 /* SVGElementInstanceList.cpp in Sources */, + B22279BF0D00BF220071B782 /* SVGEllipseElement.cpp in Sources */, + 978D07CA145A10160096908D /* SVGException.cpp in Sources */, + B22279C40D00BF220071B782 /* SVGExternalResourcesRequired.cpp in Sources */, + B22279C70D00BF220071B782 /* SVGFEBlendElement.cpp in Sources */, + B22279CA0D00BF220071B782 /* SVGFEColorMatrixElement.cpp in Sources */, + B22279CD0D00BF220071B782 /* SVGFEComponentTransferElement.cpp in Sources */, + B22279D00D00BF220071B782 /* SVGFECompositeElement.cpp in Sources */, + 1921327411C0E6BB00456238 /* SVGFEConvolveMatrixElement.cpp in Sources */, + B22279D30D00BF220071B782 /* SVGFEDiffuseLightingElement.cpp in Sources */, + B22279D60D00BF220071B782 /* SVGFEDisplacementMapElement.cpp in Sources */, + B22279D90D00BF220071B782 /* SVGFEDistantLightElement.cpp in Sources */, + 4358E8851360A33B00E4748C /* SVGFEDropShadowElement.cpp in Sources */, + B22279DC0D00BF220071B782 /* SVGFEFloodElement.cpp in Sources */, + B22279DF0D00BF220071B782 /* SVGFEFuncAElement.cpp in Sources */, + B22279E20D00BF220071B782 /* SVGFEFuncBElement.cpp in Sources */, + B22279E50D00BF220071B782 /* SVGFEFuncGElement.cpp in Sources */, + B22279E80D00BF220071B782 /* SVGFEFuncRElement.cpp in Sources */, + B22279EB0D00BF220071B782 /* SVGFEGaussianBlurElement.cpp in Sources */, + B25599840D00D8BA00BB825C /* SVGFEImage.cpp in Sources */, + B22279EE0D00BF220071B782 /* SVGFEImageElement.cpp in Sources */, + B22279F10D00BF220071B782 /* SVGFELightElement.cpp in Sources */, + B22279F30D00BF220071B782 /* SVGFEMergeElement.cpp in Sources */, + B22279F60D00BF220071B782 /* SVGFEMergeNodeElement.cpp in Sources */, + 84224193107E78A700766A87 /* SVGFEMorphologyElement.cpp in Sources */, + B22279F90D00BF220071B782 /* SVGFEOffsetElement.cpp in Sources */, + B22279FC0D00BF220071B782 /* SVGFEPointLightElement.cpp in Sources */, + B22279FF0D00BF220071B782 /* SVGFESpecularLightingElement.cpp in Sources */, + B2227A020D00BF220071B782 /* SVGFESpotLightElement.cpp in Sources */, + B2227A050D00BF220071B782 /* SVGFETileElement.cpp in Sources */, + B2227A080D00BF220071B782 /* SVGFETurbulenceElement.cpp in Sources */, + 845E72FB0FD2623900A87D79 /* SVGFilter.cpp in Sources */, + 081EBF3A0FD34F4100DA7559 /* SVGFilterBuilder.cpp in Sources */, + B2227A0B0D00BF220071B782 /* SVGFilterElement.cpp in Sources */, + B2227A0E0D00BF220071B782 /* SVGFilterPrimitiveStandardAttributes.cpp in Sources */, + B2227A110D00BF220071B782 /* SVGFitToViewBox.cpp in Sources */, + B237C8A70D344D110013F707 /* SVGFontData.cpp in Sources */, + B2A1F2AA0CEF0ABF00442F6A /* SVGFontElement.cpp in Sources */, + B2227A140D00BF220071B782 /* SVGFontFaceElement.cpp in Sources */, + B2227A170D00BF220071B782 /* SVGFontFaceFormatElement.cpp in Sources */, + B2227A1A0D00BF220071B782 /* SVGFontFaceNameElement.cpp in Sources */, + B2227A1D0D00BF220071B782 /* SVGFontFaceSrcElement.cpp in Sources */, + B2227A200D00BF220071B782 /* SVGFontFaceUriElement.cpp in Sources */, + B2227A230D00BF220071B782 /* SVGForeignObjectElement.cpp in Sources */, + B2227A260D00BF220071B782 /* SVGGElement.cpp in Sources */, + 087E0AF613606D0B00FA4BA8 /* SVGGlyph.cpp in Sources */, + B2A1F2AD0CEF0ABF00442F6A /* SVGGlyphElement.cpp in Sources */, + 24D912BD13CA9A9700D21915 /* SVGGlyphRefElement.cpp in Sources */, + B2227A290D00BF220071B782 /* SVGGradientElement.cpp in Sources */, + B2227AB50D00BF220071B782 /* SVGGraphicsElement.cpp in Sources */, + 650FBF2A0D9AF047008FC292 /* SVGHKernElement.cpp in Sources */, + B25599A30D00D8BA00BB825C /* SVGImage.cpp in Sources */, + 08F859D41463F9CD0067D933 /* SVGImageCache.cpp in Sources */, + B2227A2C0D00BF220071B782 /* SVGImageElement.cpp in Sources */, + 08F859D41463F9CD0067D934 /* SVGImageForContainer.cpp in Sources */, + B28C6A290D00C44800334AA4 /* SVGImageLoader.cpp in Sources */, + B2227A2F0D00BF220071B782 /* SVGLangSpace.cpp in Sources */, + B2227A320D00BF220071B782 /* SVGLength.cpp in Sources */, + 7134496D146941B300720312 /* SVGLengthContext.cpp in Sources */, + B2227A350D00BF220071B782 /* SVGLengthList.cpp in Sources */, + B2227A380D00BF220071B782 /* SVGLinearGradientElement.cpp in Sources */, + B2227A3B0D00BF220071B782 /* SVGLineElement.cpp in Sources */, + B2227A400D00BF220071B782 /* SVGLocatable.cpp in Sources */, + B2227A430D00BF220071B782 /* SVGMarkerElement.cpp in Sources */, + B2227A460D00BF220071B782 /* SVGMaskElement.cpp in Sources */, + B2227A4A0D00BF220071B782 /* SVGMetadataElement.cpp in Sources */, + B2A1F2B00CEF0ABF00442F6A /* SVGMissingGlyphElement.cpp in Sources */, + B2227A4D0D00BF220071B782 /* SVGMPathElement.cpp in Sources */, + A833C7CA0A2CF06B00D57664 /* SVGNames.cpp in Sources */, + B2227A500D00BF220071B782 /* SVGNumberList.cpp in Sources */, + B2227A530D00BF220071B782 /* SVGPaint.cpp in Sources */, + B2227A560D00BF220071B782 /* SVGParserUtilities.cpp in Sources */, + 84C6784C1214814700A92902 /* SVGPathBlender.cpp in Sources */, + 8476C9EA11DF6A2900555B02 /* SVGPathBuilder.cpp in Sources */, + 8419D2A8120D92D000141F8F /* SVGPathByteStreamBuilder.cpp in Sources */, + 8419D2AC120D92FC00141F8F /* SVGPathByteStreamSource.cpp in Sources */, + B2227A580D00BF220071B782 /* SVGPathElement.cpp in Sources */, + 8476C9EF11DF6A5800555B02 /* SVGPathParser.cpp in Sources */, + B2227A800D00BF220071B782 /* SVGPathSegList.cpp in Sources */, + 8476C9E511DF6A0B00555B02 /* SVGPathSegListBuilder.cpp in Sources */, + 08FF102012950F5A00F00276 /* SVGPathSegListPropertyTearOff.cpp in Sources */, + 84B6B977120F13E500B8EFAF /* SVGPathSegListSource.cpp in Sources */, + 8419D2B9120E0C7600141F8F /* SVGPathStringBuilder.cpp in Sources */, + 84300BDA120C9AED0021954A /* SVGPathStringSource.cpp in Sources */, + 84C5B2FA1216DC810088B53A /* SVGPathTraversalStateBuilder.cpp in Sources */, + 71A57DF1154BE25C0009D120 /* SVGPathUtilities.cpp in Sources */, + B2227A870D00BF220071B782 /* SVGPatternElement.cpp in Sources */, + B2227A8B0D00BF220071B782 /* SVGPointList.cpp in Sources */, + B2227A8E0D00BF220071B782 /* SVGPolyElement.cpp in Sources */, + B2227A900D00BF220071B782 /* SVGPolygonElement.cpp in Sources */, + B2227A930D00BF220071B782 /* SVGPolylineElement.cpp in Sources */, + B2227A960D00BF220071B782 /* SVGPreserveAspectRatio.cpp in Sources */, + B2227A990D00BF220071B782 /* SVGRadialGradientElement.cpp in Sources */, + B2227A9D0D00BF220071B782 /* SVGRectElement.cpp in Sources */, + BC2274780E8366E200E7F975 /* SVGRenderStyle.cpp in Sources */, + BC22747A0E8366E200E7F975 /* SVGRenderStyleDefs.cpp in Sources */, + B2227AA20D00BF220071B782 /* SVGScriptElement.cpp in Sources */, + B2227AA50D00BF220071B782 /* SVGSetElement.cpp in Sources */, + E4AFD00F0DAF335500F5F55C /* SVGSMILElement.cpp in Sources */, + B2227AA80D00BF220071B782 /* SVGStopElement.cpp in Sources */, + B2227AAB0D00BF220071B782 /* SVGStringList.cpp in Sources */, + B2227AB70D00BF220071B783 /* SVGStyledElement.cpp in Sources */, + B2227AB70D00BF220071B782 /* SVGStyleElement.cpp in Sources */, + B2227ABA0D00BF220071B782 /* SVGSVGElement.cpp in Sources */, + B2227ABD0D00BF220071B782 /* SVGSwitchElement.cpp in Sources */, + B2227AC00D00BF220071B782 /* SVGSymbolElement.cpp in Sources */, + B2227AC40D00BF220071B782 /* SVGTests.cpp in Sources */, + B2227AC70D00BF220071B782 /* SVGTextContentElement.cpp in Sources */, + B2227ACA0D00BF220071B782 /* SVGTextElement.cpp in Sources */, + B2227ACD0D00BF220071B782 /* SVGTextPathElement.cpp in Sources */, + B2227AD00D00BF220071B782 /* SVGTextPositioningElement.cpp in Sources */, + B2227AD30D00BF220071B782 /* SVGTitleElement.cpp in Sources */, + B2227AD60D00BF220071B782 /* SVGTransform.cpp in Sources */, + B2227AD90D00BF220071B782 /* SVGTransformable.cpp in Sources */, + B2227ADC0D00BF220071B782 /* SVGTransformDistance.cpp in Sources */, + B2227ADE0D00BF220071B782 /* SVGTransformList.cpp in Sources */, + B2227AE10D00BF220071B782 /* SVGTRefElement.cpp in Sources */, + B2227AE40D00BF220071B782 /* SVGTSpanElement.cpp in Sources */, + B2227AE90D00BF220071B782 /* SVGURIReference.cpp in Sources */, + B2227AEC0D00BF220071B782 /* SVGUseElement.cpp in Sources */, + B2227AEF0D00BF220071B782 /* SVGViewElement.cpp in Sources */, + B2227AF20D00BF220071B782 /* SVGViewSpec.cpp in Sources */, + 8485228A1190173C006EDC7F /* SVGVKernElement.cpp in Sources */, + B2227AF50D00BF220071B782 /* SVGZoomAndPan.cpp in Sources */, + B2E4EC970D00C22B00432643 /* SVGZoomEvent.cpp in Sources */, + E180811216FCF42F00B80D07 /* SynchronousLoaderClient.cpp in Sources */, + E180811616FCF9CB00B80D07 /* SynchronousLoaderClient.mm in Sources */, + 5DA97ECE168E787B000E3676 /* SystemVersionMac.mm in Sources */, + BCE3BEC20D222B1D007E06E4 /* TagNodeList.cpp in Sources */, + F55B3DD51251F12D003EF269 /* TelephoneInputType.cpp in Sources */, + 6550B6A5099DF0270090D781 /* Text.cpp in Sources */, + CE7B2DB61586ABAD0098B3FA /* TextAlternativeWithRange.mm in Sources */, + 372C00C4129611F1005C9575 /* TextBoundaries.cpp in Sources */, + B2AFFC970D00A5DF0030074D /* TextBoundaries.mm in Sources */, + BCD8A5F015F56F2C0098D071 /* TextBreakIterator.cpp in Sources */, + B2C3DA370D006C1D00EF6F26 /* TextBreakIteratorICU.cpp in Sources */, + B2AFFC980D00A5DF0030074D /* TextBreakIteratorInternalICUMac.mm in Sources */, + A7DBF8DD1276919C006B6008 /* TextCheckingHelper.cpp in Sources */, + B2C3DA390D006C1D00EF6F26 /* TextCodec.cpp in Sources */, + B2C3DA3B0D006C1D00EF6F26 /* TextCodecICU.cpp in Sources */, + B2C3DA3D0D006C1D00EF6F26 /* TextCodecLatin1.cpp in Sources */, + B2AFFC990D00A5DF0030074D /* TextCodecMac.cpp in Sources */, + B2C3DA3F0D006C1D00EF6F26 /* TextCodecUserDefined.cpp in Sources */, + B2C3DA410D006C1D00EF6F26 /* TextCodecUTF16.cpp in Sources */, + 9343CB8112F25E510033C5EE /* TextCodecUTF8.cpp in Sources */, + 142B97C913138943008BEF4B /* TextControlInnerElements.cpp in Sources */, + 97BC84B312371180000C6161 /* TextDocument.cpp in Sources */, + 97BC84831236FD93000C6161 /* TextDocumentParser.cpp in Sources */, + B2C3DA460D006C1D00EF6F26 /* TextEncoding.cpp in Sources */, + C105DA620F3AA68F001DD44F /* TextEncodingDetectorICU.cpp in Sources */, + B2C3DA480D006C1D00EF6F26 /* TextEncodingRegistry.cpp in Sources */, + 933A142E0B7D188600A53FFD /* TextEvent.cpp in Sources */, + F55B3DD71251F12D003EF269 /* TextFieldInputType.cpp in Sources */, + F55B3DD91251F12D003EF269 /* TextInputType.cpp in Sources */, + CECADFCD1537791D00E37068 /* TextInsertionBaseCommand.cpp in Sources */, + 93309E1B099E64920056E581 /* TextIterator.cpp in Sources */, + 93F19A9D08245E59001E9ABC /* TextResourceDecoder.cpp in Sources */, + 376DCCE113B4F966002EBEFC /* TextRun.cpp in Sources */, + B2C3DA4A0D006C1D00EF6F26 /* TextStream.cpp in Sources */, + 9759E93F14EF1CF80026A2DD /* TextTrack.cpp in Sources */, + 9759E94214EF1CF80026A2DD /* TextTrackCue.cpp in Sources */, + 071A9EC2168FBC43002629F9 /* TextTrackCueGeneric.cpp in Sources */, + 9759E94514EF1CF80026A2DD /* TextTrackCueList.cpp in Sources */, + 076970861463AD8700F502CF /* TextTrackList.cpp in Sources */, + B1AD4E7313A12A4600846B27 /* TextTrackLoader.cpp in Sources */, + CD1E7347167BC78E009A885D /* TextTrackRepresentation.cpp in Sources */, + 498770F01242C535002226BA /* Texture.cpp in Sources */, + 97BC84A412370DC8000C6161 /* TextViewSourceParser.cpp in Sources */, + BCE65D320EAD1211007E4533 /* Theme.cpp in Sources */, + BCE659E90EA92FFA007E4533 /* ThemeMac.mm in Sources */, + 976D6C94122B8A3D001FD1F7 /* ThreadableBlobRegistry.cpp in Sources */, + 0B90561E0F257E930095FF6A /* ThreadableLoader.cpp in Sources */, + 97AABD1614FA09D5007457AE /* ThreadableWebSocketChannel.cpp in Sources */, + 97AABD1814FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.cpp in Sources */, + 51DF6D800B92A18E00C2DC85 /* ThreadCheck.mm in Sources */, + E1FF57A60F01256B00891EBB /* ThreadGlobalData.cpp in Sources */, + 185BCF280F3279CE000EA262 /* ThreadTimers.cpp in Sources */, + 1AA7160A149BC4DB0016EC19 /* TileController.mm in Sources */, + 498770F21242C535002226BA /* TilingData.cpp in Sources */, + F55B3DDB1251F12D003EF269 /* TimeInputType.cpp in Sources */, + 7553CFE9108F473F00EA281E /* TimelineRecordFactory.cpp in Sources */, + 49140256168E02E8002D6C6A /* TimelineTraceEventProcessor.cpp in Sources */, + 93309EA4099EB78C0056E581 /* Timer.cpp in Sources */, + E44613AF0CD6331000FADA75 /* TimeRanges.cpp in Sources */, + 070334D9145A006F008D8D45 /* TrackBase.cpp in Sources */, + 070334D31459FFAD008D8D45 /* TrackEvent.cpp in Sources */, + BE88E0C11715CE2600658D98 /* TrackListBase.cpp in Sources */, + 49E911C30EF86D47009D0CAF /* TransformationMatrix.cpp in Sources */, + 494BC40D12AEDD9E00743BD2 /* TransformationMatrixCA.cpp in Sources */, + B27535580B053814002CE64F /* TransformationMatrixCG.cpp in Sources */, + FB484F4C171F821E00040755 /* TransformFunctions.cpp in Sources */, + 49E911CF0EF86D47009D0CAF /* TransformOperations.cpp in Sources */, + 5DB1BC6B10715A6400EFAA49 /* TransformSourceLibxslt.cpp in Sources */, + 4945BFD313CF809000CC3B38 /* TransformState.cpp in Sources */, + E17B491516A9B094001C8839 /* TransitionEvent.cpp in Sources */, + 49E911D10EF86D47009D0CAF /* TranslateTransformOperation.cpp in Sources */, + 854FE7360A2297BE0058D7AD /* Traversal.cpp in Sources */, + 14D64B5C134A5B6B00E58FDA /* TreeScope.cpp in Sources */, + A77E1FEF14AACB6E005B7CB6 /* TreeScopeAdopter.cpp in Sources */, + 854FE7380A2297BE0058D7AD /* TreeWalker.cpp in Sources */, + C375D7FD16639519006184AB /* TypeAhead.cpp in Sources */, + 93309E19099E64920056E581 /* TypingCommand.cpp in Sources */, + 85031B4D0A44EFC700F992E0 /* UIEvent.cpp in Sources */, + 93354A3C0B24F8C9003F6DEA /* UIEventWithKeyState.cpp in Sources */, + AA4739D11757AFEC00E76767 /* UIRequestEvent.cpp in Sources */, + B2C3DA4C0D006C1D00EF6F26 /* UnicodeRange.cpp in Sources */, + D086FE9909D53AAB005BC74D /* UnlinkCommand.cpp in Sources */, + F55B3DDD1251F12D003EF269 /* URLInputType.cpp in Sources */, + A769E96A16689D0C005D4529 /* UserActionElementSet.cpp in Sources */, + 65DF326109D1E199000BE325 /* UserAgentStyleSheetsData.cpp in Sources */, + BCACF3BC1072921A00C0C8A3 /* UserContentURLPattern.cpp in Sources */, + 2542F4DA1166C25A00E89A86 /* UserGestureIndicator.cpp in Sources */, + BCDF317B11F8D683003C5BF8 /* UserTypingGestureIndicator.cpp in Sources */, + 1FAFBF1815A5FA6E00083A20 /* UTIUtilities.mm in Sources */, + 2E3BBF071162DA1100B9409A /* UUID.cpp in Sources */, + 50D32857163B313F0016111E /* ValidatedCustomFilterOperation.cpp in Sources */, + F5A154271279534D00D0B0C0 /* ValidationMessage.cpp in Sources */, + 15C7708E100D3C6B005BA267 /* ValidityState.cpp in Sources */, + FD3160AE12B026F700C1A359 /* VectorMath.cpp in Sources */, + BE88E0DE1715D2A200658D98 /* VideoTrack.cpp in Sources */, + BE88E0E11715D2A200658D98 /* VideoTrackList.cpp in Sources */, + CEF418CE1179678C009D112C /* ViewportArguments.cpp in Sources */, + 3FFFF9AD159D9B060020BBD5 /* ViewportStyleResolver.cpp in Sources */, + 93309E1F099E64920056E581 /* VisiblePosition.cpp in Sources */, + A883DF270F3D045D00F19BF6 /* VisibleSelection.cpp in Sources */, + 93309E1D099E64920056E581 /* VisibleUnits.cpp in Sources */, + 419BC2DE1685329900D64D6D /* VisitedLinkState.cpp in Sources */, + FD7F299113D4C0CB00AD9535 /* WaveShaperDSPKernel.cpp in Sources */, + FD7F299313D4C0CB00AD9535 /* WaveShaperNode.cpp in Sources */, + FD7F299613D4C0CB00AD9535 /* WaveShaperProcessor.cpp in Sources */, + 29A8124A0FBB9CA900510293 /* WebAccessibilityObjectWrapperBase.mm in Sources */, + AAA728F816D1D8BC00D3BBC6 /* WebAccessibilityObjectWrapperIOS.mm in Sources */, + AA478A8016CD70C3007D1BB4 /* WebAccessibilityObjectWrapperMac.mm in Sources */, + CD7E05221651C28200C1201F /* WebCoreAVFResourceLoader.mm in Sources */, + CDC69DDB16371FD4007C38DF /* WebCoreFullScreenPlaceholderView.mm in Sources */, + CDC69DD71632026C007C38DF /* WebCoreFullScreenWarningView.mm in Sources */, + CD127DED14F3097D00E84779 /* WebCoreFullScreenWindow.mm in Sources */, + 371941961566B37200A276D8 /* WebCoreNSCellExtras.m in Sources */, + 934D9BA50B8C116B007B42A9 /* WebCoreNSStringExtras.mm in Sources */, + C5B4C24E1509236C00A6EF37 /* WebCoreNSURLExtras.mm in Sources */, + B50F5B810E96CD9900AD71A6 /* WebCoreObjCExtras.mm in Sources */, + E180810E16FCECDF00B80D07 /* WebCoreResourceHandleAsDelegate.mm in Sources */, + E152551616FD2350003D7ADB /* WebCoreResourceHandleAsOperationQueueDelegate.mm in Sources */, + 93EB169509F880B00091F8FF /* WebCoreSystemInterface.mm in Sources */, + 37F818FE0D657606005E1F05 /* WebCoreURLResponse.mm in Sources */, + 93F19B0708245E59001E9ABC /* WebCoreView.m in Sources */, + BC6DADFA0A19602B00E5CD14 /* WebFontCache.mm in Sources */, + 49C7B9C81042D32F0009D447 /* WebGLBuffer.cpp in Sources */, + 7E66E23316D6EB6C00F7E7FF /* WebGLCompressedTextureATC.cpp in Sources */, + 7E66E23317E6EB6C00F7E7FF /* WebGLCompressedTexturePVRTC.cpp in Sources */, + 6E3FAE8E14733FDB00E42306 /* WebGLCompressedTextureS3TC.cpp in Sources */, + 6E4E91AE10F7FB3100A2779C /* WebGLContextAttributes.cpp in Sources */, + 93F6F1ED127F70B10055CB06 /* WebGLContextEvent.cpp in Sources */, + 01D3CF8214BD0A3000FE9970 /* WebGLContextGroup.cpp in Sources */, + 01D3CF8414BD0A3000FE9970 /* WebGLContextObject.cpp in Sources */, + A0EE0DF5144F825500F80B0D /* WebGLDebugRendererInfo.cpp in Sources */, + A0EE0DF7144F825500F80B0D /* WebGLDebugShaders.cpp in Sources */, + 6E3FAE8E14733FDB00E42307 /* WebGLDepthTexture.cpp in Sources */, + 6EBF0E5412A8929800DB1709 /* WebGLExtension.cpp in Sources */, + 49C7B9CE1042D32F0009D447 /* WebGLFramebuffer.cpp in Sources */, + 6E47E66010B7944B00B186C8 /* WebGLGetInfo.cpp in Sources */, + 49FFBF4011C93EE3006A7118 /* WebGLLayer.mm in Sources */, + 93F1D5BA12D532C400832BEC /* WebGLLoseContext.cpp in Sources */, + 49C7B9D41042D32F0009D447 /* WebGLObject.cpp in Sources */, + 49C7B9D61042D32F0009D447 /* WebGLProgram.cpp in Sources */, + 49C7B9D91042D32F0009D447 /* WebGLRenderbuffer.cpp in Sources */, + 49C7B9DF1042D32F0009D447 /* WebGLRenderingContext.cpp in Sources */, + 49C7B9E21042D32F0009D447 /* WebGLShader.cpp in Sources */, + A08CF154152B77B3009C5775 /* WebGLShaderPrecisionFormat.cpp in Sources */, + 01D3CF8614BD0A3000FE9970 /* WebGLSharedObject.cpp in Sources */, + 49C7B9E51042D32F0009D447 /* WebGLTexture.cpp in Sources */, + 0C3F1F5A10C8871200D72CE1 /* WebGLUniformLocation.cpp in Sources */, + 77A17A7712F28642004E02F6 /* WebGLVertexArrayObjectOES.cpp in Sources */, + 31C0FF210E4CEB6E007D6FE5 /* WebKitAnimationEvent.cpp in Sources */, + 976D6C7B122B8A3D001FD1F7 /* WebKitBlobBuilder.cpp in Sources */, + 150B923915F08DC400E10986 /* WebKitCSSArrayFunctionValue.cpp in Sources */, + A2E8AE3016A48E1C006BB3AA /* WebKitCSSFilterRule.cpp in Sources */, + 3106036F14327D2E00ABF4BA /* WebKitCSSFilterValue.cpp in Sources */, + 31288E720E3005D6003619AE /* WebKitCSSKeyframeRule.cpp in Sources */, + 31288E740E3005D6003619AE /* WebKitCSSKeyframesRule.cpp in Sources */, + FB719C4017238CAE0022DE34 /* WebKitCSSMatFunctionValue.cpp in Sources */, + 498391580F1E776900C23782 /* WebKitCSSMatrix.cpp in Sources */, + A24BF77C15CC3BAF003191F2 /* WebKitCSSMixFunctionValue.cpp in Sources */, + 8AA61CFF144D595B00F37350 /* WebKitCSSRegionRule.cpp in Sources */, + 5038BC0714711CDB0095E0D1 /* WebKitCSSShaderValue.cpp in Sources */, + 0562F9461573ECEB0031CA16 /* WebKitCSSSVGDocumentValue.cpp in Sources */, + BC9ADD800CC4092200098C4C /* WebKitCSSTransformValue.cpp in Sources */, + 3FFFF9A8159D9A550020BBD5 /* WebKitCSSViewportRule.cpp in Sources */, + 1A1414B513A0F0500019996C /* WebKitFontFamilyNames.cpp in Sources */, + D7613A501474F13F00DB8606 /* WebKitNamedFlow.cpp in Sources */, + 31C0FF240E4CEB6E007D6FE5 /* WebKitTransitionEvent.cpp in Sources */, + 0FCF332E0F2B9A25004B6795 /* WebLayer.mm in Sources */, + E1A3162E134BC32D007C9A4F /* WebNSAttributedStringExtras.mm in Sources */, + 1CAF34820A6C405200ABE06E /* WebScriptObject.mm in Sources */, + 97AABD1A14FA09D5007457AE /* WebSocket.cpp in Sources */, + 97AABD1D14FA09D5007457AE /* WebSocketChannel.cpp in Sources */, + 4A38BF5014FE1C0900612512 /* WebSocketDeflateFramer.cpp in Sources */, + 97AABD2014FA09D5007457AE /* WebSocketDeflater.cpp in Sources */, + 97AABD2214FA09D5007457AE /* WebSocketExtensionDispatcher.cpp in Sources */, + 4A5A2ADB161E7E00005889DD /* WebSocketExtensionParser.cpp in Sources */, + AAF5B7B71524B6C50004CB49 /* WebSocketFrame.cpp in Sources */, + 97AABD2614FA09D5007457AE /* WebSocketHandshake.cpp in Sources */, + 0F580FA41496939100FB5BD8 /* WebTiledBackingLayer.mm in Sources */, + 0FCF332C0F2B9A25004B6795 /* WebTiledLayer.mm in Sources */, + 1AA7161E149BF2FA0016EC19 /* WebTileLayer.mm in Sources */, + CD82030B1395AB6A00F956C6 /* WebVideoFullscreenController.mm in Sources */, + CD82030D1395AB6A00F956C6 /* WebVideoFullscreenHUDWindowController.mm in Sources */, + F12171F516A8CED2000053CA /* WebVTTElement.cpp in Sources */, + 5D21A80213ECE5DF00BB7064 /* WebVTTParser.cpp in Sources */, + B10B6981140C174000BC1C26 /* WebVTTTokenizer.cpp in Sources */, + CD8203111395ACE700F956C6 /* WebWindowAnimation.mm in Sources */, + F55B3DDF1251F12D003EF269 /* WeekInputType.cpp in Sources */, + 85031B500A44EFC700F992E0 /* WheelEvent.cpp in Sources */, + 9380F47309A11AB4001FDB34 /* Widget.cpp in Sources */, + 9380F47809A11ACC001FDB34 /* WidgetMac.mm in Sources */, + 939B02EE0EA2DBC400C54570 /* WidthIterator.cpp in Sources */, + 4123E56A127B3041000FEEA7 /* WindowEventContext.cpp in Sources */, + BC8243E80D0CFD7500460C8F /* WindowFeatures.cpp in Sources */, + 7E99AF510B13846468FB01A5 /* WindowFocusAllowedIndicator.cpp in Sources */, + 379919961200DDF400EA041C /* WOFFFileFormat.cpp in Sources */, + 2E4346450F546A8200B0F1BA /* Worker.cpp in Sources */, + F3820896147D35F90010BC06 /* WorkerConsoleAgent.cpp in Sources */, + F34742E01343631F00531BC2 /* WorkerDebuggerAgent.cpp in Sources */, + A3E2643014748991005A8588 /* WorkerEventQueue.cpp in Sources */, + 2E4346480F546A8200B0F1BA /* WorkerGlobalScope.cpp in Sources */, + 9712A611150090CE0048AF10 /* WorkerGlobalScopeIndexedDatabase.cpp in Sources */, + 97F8E665151D4A4B00D2D181 /* WorkerGlobalScopeNotifications.cpp in Sources */, + A8CCBB4C151F833B00AB7CE9 /* WorkerGlobalScopeWebDatabase.cpp in Sources */, + F36E07A41358A8BE00AACBC9 /* WorkerInspectorController.cpp in Sources */, + 2E43464C0F546A8200B0F1BA /* WorkerLocation.cpp in Sources */, + 2E43464F0F546A8200B0F1BA /* WorkerMessagingProxy.cpp in Sources */, + E1271A140EEEC80400F61213 /* WorkerNavigator.cpp in Sources */, + 2E4346520F546A8200B0F1BA /* WorkerRunLoop.cpp in Sources */, + F3820898147D35F90010BC06 /* WorkerRuntimeAgent.cpp in Sources */, + E1A643FD0EC097A000779668 /* WorkerScriptController.cpp in Sources */, + F34742E81343635000531BC2 /* WorkerScriptDebugServer.cpp in Sources */, + A7D6B34A0F61104500B79FD1 /* WorkerScriptLoader.cpp in Sources */, + 2E4346540F546A8200B0F1BA /* WorkerThread.cpp in Sources */, + 0B9056F80F2685F30095FF6A /* WorkerThreadableLoader.cpp in Sources */, + 97AABD2C14FA09D5007457AE /* WorkerThreadableWebSocketChannel.cpp in Sources */, + 93309E23099E64920056E581 /* WrapContentsInDummySpanCommand.cpp in Sources */, + A833C7CC0A2CF07400D57664 /* XLinkNames.cpp in Sources */, + 00B9318713BA8DB30035A948 /* XMLDocumentParser.cpp in Sources */, + 00B9318913BA8DBC0035A948 /* XMLDocumentParserLibxml2.cpp in Sources */, + 00B9318B13BA8DC90035A948 /* XMLDocumentParserScope.cpp in Sources */, + 59C28045138DC2410079B7E2 /* XMLErrors.cpp in Sources */, + BC772C460C4EB2C60083285F /* XMLHttpRequest.cpp in Sources */, + 978D07CE145A10370096908D /* XMLHttpRequestException.cpp in Sources */, + A136A00C1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.cpp in Sources */, + BCDFD48F0E305290009D10AD /* XMLHttpRequestUpload.cpp in Sources */, + A833C80C0A2CF25600D57664 /* XMLNames.cpp in Sources */, + E15A36D91104572700B7B639 /* XMLNSNames.cpp in Sources */, + 1ACE53EA0A8D18E70022947D /* XMLSerializer.cpp in Sources */, + 5905ADBF1302F3CE00F116DF /* XMLTreeViewer.cpp in Sources */, + 1AB7FC680A8B92EC00D9D37B /* XPathEvaluator.cpp in Sources */, + 978D07CC145A102E0096908D /* XPathException.cpp in Sources */, + 1AB7FC6B0A8B92EC00D9D37B /* XPathExpression.cpp in Sources */, + 1AB7FC6E0A8B92EC00D9D37B /* XPathExpressionNode.cpp in Sources */, + 1AB7FC700A8B92EC00D9D37B /* XPathFunctions.cpp in Sources */, + 1A7629D50A07425100989F5B /* XPathGrammar.cpp in Sources */, + E1EC299F0BB04C6B00EA187B /* XPathNodeSet.cpp in Sources */, + 1AB7FC750A8B92EC00D9D37B /* XPathNSResolver.cpp in Sources */, + 1AB7FC780A8B92EC00D9D37B /* XPathParser.cpp in Sources */, + 1AB7FC7A0A8B92EC00D9D37B /* XPathPath.cpp in Sources */, + 1AB7FC7C0A8B92EC00D9D37B /* XPathPredicate.cpp in Sources */, + 1AB7FC7E0A8B92EC00D9D37B /* XPathResult.cpp in Sources */, + 1AB7FC810A8B92EC00D9D37B /* XPathStep.cpp in Sources */, + 1AB7FC830A8B92EC00D9D37B /* XPathUtil.cpp in Sources */, + 1AB7FC850A8B92EC00D9D37B /* XPathValue.cpp in Sources */, + 1AB7FC870A8B92EC00D9D37B /* XPathVariableReference.cpp in Sources */, + 85217E020A5ECD4700DB8D00 /* XSLImportRule.cpp in Sources */, + 93F19B0308245E59001E9ABC /* XSLStyleSheetLibxslt.cpp in Sources */, + E1F1E82F0C3C2BB9006DB391 /* XSLTExtensions.cpp in Sources */, + 93F19B0408245E59001E9ABC /* XSLTProcessor.cpp in Sources */, + 93F19B0508245E59001E9ABC /* XSLTProcessorLibxslt.cpp in Sources */, + E1BE512D0CF6C512002EA959 /* XSLTUnicodeSort.cpp in Sources */, + 977E2E0E12F0FC9C00C13379 /* XSSAuditor.cpp in Sources */, + 977E2E0E12F0FC9C00C13380 /* XSSAuditorDelegate.cpp in Sources */, + FD537352137B651800008DCE /* ZeroPole.cpp in Sources */, + FD1762DF176686D900D836A8 /* UpSampler.cpp in Sources */, + FD1762E3176686EA00D836A8 /* DownSampler.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E1BA67021742BDE000C20251 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E1BA671A1742BEF400C20251 /* WebCoreTestShimLibrary.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 417DA6D513734E0D007C57FB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 93F198A508245E59001E9ABC /* WebCore */; + targetProxy = 417DA6D413734E0D007C57FB /* PBXContainerItemProxy */; + }; + 41816F8313859C7A0057AAA4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 93F198A508245E59001E9ABC /* WebCore */; + targetProxy = 41816F8213859C7A0057AAA4 /* PBXContainerItemProxy */; + }; + 41816F8513859C7D0057AAA4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 417DA6CF13734E02007C57FB /* WebCoreTestSupport */; + targetProxy = 41816F8413859C7D0057AAA4 /* PBXContainerItemProxy */; + }; + 5D87BB6B11E3EBD200702B6F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 5D87BB6411E3EBC100702B6F /* WebCoreExportFileGenerator Generator */; + targetProxy = 5D87BB6A11E3EBD200702B6F /* PBXContainerItemProxy */; + }; + 5D87BB8F11E3EE2B00702B6F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 5D87BB4E11E3EAEB00702B6F /* WebCoreExportFileGenerator */; + targetProxy = 5D87BB8E11E3EE2B00702B6F /* PBXContainerItemProxy */; + }; + DD041FF109D9E3250010AF2A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DD041FBE09D9DDBE0010AF2A /* Derived Sources */; + targetProxy = DD041FF009D9E3250010AF2A /* PBXContainerItemProxy */; + }; + E1BA66F41742BDE000C20251 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 93F198A508245E59001E9ABC /* WebCore */; + targetProxy = E1BA66F51742BDE000C20251 /* PBXContainerItemProxy */; + }; + E1BA671C1742CBF800C20251 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = E1BA66F31742BDE000C20251 /* WebCoreTestShim */; + targetProxy = E1BA671B1742CBF800C20251 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + BCAD1808131C7A0D00990406 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + BCAD1809131C7A0D00990406 /* English */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + BCC64F5F0DCFB84E0081EF3B /* localizedStrings.js */ = { + isa = PBXVariantGroup; + children = ( + BCC64F600DCFB84E0081EF3B /* English */, + ); + name = localizedStrings.js; + path = ../Resources; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 149C283A08902B11008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */; + buildSettings = { + INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)"; + }; + name = Debug; + }; + 149C283B08902B11008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */; + buildSettings = { + INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)"; + }; + name = Release; + }; + 149C283D08902B11008A9EFC /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */; + buildSettings = { + BUILD_VARIANTS = normal; + }; + name = Production; + }; + 149C284408902B11008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1CDD45E40BA9C84600F90147 /* DebugRelease.xcconfig */; + buildSettings = { + DEAD_CODE_STRIPPING = "$(DEAD_CODE_STRIPPING_debug)"; + DEBUG_DEFINES = "$(DEBUG_DEFINES_debug)"; + GCC_OPTIMIZATION_LEVEL = "$(GCC_OPTIMIZATION_LEVEL_debug)"; + STRIP_INSTALLED_PRODUCT = "$(STRIP_INSTALLED_PRODUCT_debug)"; + }; + name = Debug; + }; + 149C284508902B11008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1CDD45E40BA9C84600F90147 /* DebugRelease.xcconfig */; + buildSettings = { + STRIP_INSTALLED_PRODUCT = NO; + }; + name = Release; + }; + 149C284708902B11008A9EFC /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1CDD45E60BA9C84600F90147 /* Base.xcconfig */; + buildSettings = { + }; + name = Production; + }; + 417DA6D113734E02007C57FB /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4181707D1386EDF20057AAA4 /* WebCoreTestSupport.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + 417DA6D213734E02007C57FB /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4181707D1386EDF20057AAA4 /* WebCoreTestSupport.xcconfig */; + buildSettings = { + }; + name = Release; + }; + 417DA6D313734E02007C57FB /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4181707D1386EDF20057AAA4 /* WebCoreTestSupport.xcconfig */; + buildSettings = { + }; + name = Production; + }; + 41816F7A13859C560057AAA4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = All; + }; + name = Debug; + }; + 41816F7B13859C560057AAA4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = All; + }; + name = Release; + }; + 41816F7C13859C560057AAA4 /* Production */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = All; + }; + name = Production; + }; + 5D87BB5111E3EAEB00702B6F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */; + buildSettings = { + EXPORTED_SYMBOLS_FILE = ""; + GCC_OPTIMIZATION_LEVEL = 0; + INSTALL_PATH = /usr/local/bin; + OTHER_LDFLAGS = ""; + PRODUCT_NAME = WebCoreExportFileGenerator; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 5D87BB5211E3EAEB00702B6F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */; + buildSettings = { + EXPORTED_SYMBOLS_FILE = ""; + INSTALL_PATH = /usr/local/bin; + OTHER_LDFLAGS = ""; + PRODUCT_NAME = WebCoreExportFileGenerator; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 5D87BB5311E3EAEB00702B6F /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */; + buildSettings = { + EXPORTED_SYMBOLS_FILE = ""; + INSTALL_PATH = /usr/local/bin; + OTHER_LDFLAGS = ""; + PRODUCT_NAME = WebCoreExportFileGenerator; + SKIP_INSTALL = YES; + }; + name = Production; + }; + 5D87BB6511E3EBC200702B6F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "WebCoreExportFileGenerator Generator"; + }; + name = Debug; + }; + 5D87BB6611E3EBC200702B6F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "WebCoreExportFileGenerator Generator"; + }; + name = Release; + }; + 5D87BB6711E3EBC200702B6F /* Production */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "WebCoreExportFileGenerator Generator"; + }; + name = Production; + }; + DD041FC209D9DDDC0010AF2A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */; + buildSettings = { + PRODUCT_NAME = "Derived Sources"; + }; + name = Debug; + }; + DD041FC309D9DDDC0010AF2A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */; + buildSettings = { + PRODUCT_NAME = "Derived Sources"; + }; + name = Release; + }; + DD041FC409D9DDDC0010AF2A /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */; + buildSettings = { + PRODUCT_NAME = "Derived Sources"; + }; + name = Production; + }; + E1BA67131742BDE000C20251 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E1BA66F21742BDCC00C20251 /* WebCoreTestShim.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + E1BA67141742BDE000C20251 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E1BA66F21742BDCC00C20251 /* WebCoreTestShim.xcconfig */; + buildSettings = { + }; + name = Release; + }; + E1BA67151742BDE000C20251 /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E1BA66F21742BDCC00C20251 /* WebCoreTestShim.xcconfig */; + buildSettings = { + }; + name = Production; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 149C283908902B11008A9EFC /* Build configuration list for PBXNativeTarget "WebCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C283A08902B11008A9EFC /* Debug */, + 149C283B08902B11008A9EFC /* Release */, + 149C283D08902B11008A9EFC /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 149C284308902B11008A9EFC /* Build configuration list for PBXProject "WebCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C284408902B11008A9EFC /* Debug */, + 149C284508902B11008A9EFC /* Release */, + 149C284708902B11008A9EFC /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 417DA6D813734E47007C57FB /* Build configuration list for PBXNativeTarget "WebCoreTestSupport" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 417DA6D113734E02007C57FB /* Debug */, + 417DA6D213734E02007C57FB /* Release */, + 417DA6D313734E02007C57FB /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 41816F8113859C640057AAA4 /* Build configuration list for PBXAggregateTarget "All" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 41816F7A13859C560057AAA4 /* Debug */, + 41816F7B13859C560057AAA4 /* Release */, + 41816F7C13859C560057AAA4 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 5D87BB5911E3EB0700702B6F /* Build configuration list for PBXNativeTarget "WebCoreExportFileGenerator" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5D87BB5111E3EAEB00702B6F /* Debug */, + 5D87BB5211E3EAEB00702B6F /* Release */, + 5D87BB5311E3EAEB00702B6F /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 5D87BB6C11E3EC0000702B6F /* Build configuration list for PBXAggregateTarget "WebCoreExportFileGenerator Generator" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5D87BB6511E3EBC200702B6F /* Debug */, + 5D87BB6611E3EBC200702B6F /* Release */, + 5D87BB6711E3EBC200702B6F /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + DD041FC109D9DDDC0010AF2A /* Build configuration list for PBXAggregateTarget "Derived Sources" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DD041FC209D9DDDC0010AF2A /* Debug */, + DD041FC309D9DDDC0010AF2A /* Release */, + DD041FC409D9DDDC0010AF2A /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + E1BA67121742BDE000C20251 /* Build configuration list for PBXNativeTarget "WebCoreTestShim" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E1BA67131742BDE000C20251 /* Debug */, + E1BA67141742BDE000C20251 /* Release */, + E1BA67151742BDE000C20251 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm b/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm index df4234e239c..2cca587036c 100644 --- a/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm +++ b/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm @@ -3624,7 +3624,11 @@ sub NativeToJSValue return "toJSNewlyCreated(exec, $globalObject, WTF::getPtr($value))"; } - if ($codeGenerator->IsSVGAnimatedType($interfaceName) or $interfaceName eq "SVGViewSpec") { + # $type has to be used here because SVGViewSpec.transform is of type SVGTransformList. + if ($codeGenerator->IsSVGTypeNeedingTearOff($type) and $type =~ /(? to real type, so the right toJS() method can be invoked. + $value = "static_cast<" . GetNativeType($type) . ">($value" . ".get())"; + } elsif ($codeGenerator->IsSVGAnimatedType($interfaceName) or $interfaceName eq "SVGViewSpec") { # Convert from abstract SVGProperty to real type, so the right toJS() method can be invoked. $value = "static_cast<" . GetNativeType($type) . ">($value)"; } elsif ($codeGenerator->IsSVGTypeNeedingTearOff($type) and not $interfaceName =~ /List$/) { diff --git a/Source/WebCore/dom/UserGestureIndicator.h b/Source/WebCore/dom/UserGestureIndicator.h index 0daa00397c3..1cd0339be1e 100644 --- a/Source/WebCore/dom/UserGestureIndicator.h +++ b/Source/WebCore/dom/UserGestureIndicator.h @@ -39,7 +39,7 @@ enum ProcessingUserGestureState { class UserGestureIndicator { WTF_MAKE_NONCOPYABLE(UserGestureIndicator); public: - static bool processingUserGesture() { return DefinitelyNotProcessingUserGesture; } + static bool processingUserGesture() { return s_state == DefinitelyProcessingUserGesture; } explicit UserGestureIndicator(ProcessingUserGestureState); ~UserGestureIndicator(); diff --git a/Source/WebCore/inspector/front-end/Images/addIcon.png b/Source/WebCore/inspector/front-end/Images/addIcon.png index d4be0bb41e6..06d07b0e4df 100644 Binary files a/Source/WebCore/inspector/front-end/Images/addIcon.png and b/Source/WebCore/inspector/front-end/Images/addIcon.png differ diff --git a/Source/WebCore/inspector/front-end/Images/applicationCache.png b/Source/WebCore/inspector/front-end/Images/applicationCache.png index 779b5af4975..fb18e753c66 100644 Binary files a/Source/WebCore/inspector/front-end/Images/applicationCache.png and b/Source/WebCore/inspector/front-end/Images/applicationCache.png differ diff --git a/Source/WebCore/inspector/front-end/Images/breakpointBorder.png b/Source/WebCore/inspector/front-end/Images/breakpointBorder.png index f15e02f4668..a4c74d5d8dd 100644 Binary files a/Source/WebCore/inspector/front-end/Images/breakpointBorder.png and b/Source/WebCore/inspector/front-end/Images/breakpointBorder.png differ diff --git a/Source/WebCore/inspector/front-end/Images/breakpointConditionalBorder.png b/Source/WebCore/inspector/front-end/Images/breakpointConditionalBorder.png index 4bd5806ed06..5fda706598e 100644 Binary files a/Source/WebCore/inspector/front-end/Images/breakpointConditionalBorder.png and b/Source/WebCore/inspector/front-end/Images/breakpointConditionalBorder.png differ diff --git a/Source/WebCore/inspector/front-end/Images/breakpointConditionalCounterBorder.png b/Source/WebCore/inspector/front-end/Images/breakpointConditionalCounterBorder.png index 2e44aba94c8..a173c9d2067 100644 Binary files a/Source/WebCore/inspector/front-end/Images/breakpointConditionalCounterBorder.png and b/Source/WebCore/inspector/front-end/Images/breakpointConditionalCounterBorder.png differ diff --git a/Source/WebCore/inspector/front-end/Images/breakpointCounterBorder.png b/Source/WebCore/inspector/front-end/Images/breakpointCounterBorder.png index 0b3ea14aee2..d078545e1fa 100644 Binary files a/Source/WebCore/inspector/front-end/Images/breakpointCounterBorder.png and b/Source/WebCore/inspector/front-end/Images/breakpointCounterBorder.png differ diff --git a/Source/WebCore/inspector/front-end/Images/cookie.png b/Source/WebCore/inspector/front-end/Images/cookie.png index 3b45465225a..69af785771d 100644 Binary files a/Source/WebCore/inspector/front-end/Images/cookie.png and b/Source/WebCore/inspector/front-end/Images/cookie.png differ diff --git a/Source/WebCore/inspector/front-end/Images/database.png b/Source/WebCore/inspector/front-end/Images/database.png index 39a850611a7..5ffb12e65f4 100644 Binary files a/Source/WebCore/inspector/front-end/Images/database.png and b/Source/WebCore/inspector/front-end/Images/database.png differ diff --git a/Source/WebCore/inspector/front-end/Images/deleteIcon.png b/Source/WebCore/inspector/front-end/Images/deleteIcon.png index 71cb62c3e4d..07f1d7884b3 100644 Binary files a/Source/WebCore/inspector/front-end/Images/deleteIcon.png and b/Source/WebCore/inspector/front-end/Images/deleteIcon.png differ diff --git a/Source/WebCore/inspector/front-end/Images/domain.png b/Source/WebCore/inspector/front-end/Images/domain.png index 52db2709af9..291d5a5f3ba 100644 Binary files a/Source/WebCore/inspector/front-end/Images/domain.png and b/Source/WebCore/inspector/front-end/Images/domain.png differ diff --git a/Source/WebCore/inspector/front-end/Images/errorRedDot.png b/Source/WebCore/inspector/front-end/Images/errorRedDot.png index ebb1ff9f98f..2acc65d36fa 100644 Binary files a/Source/WebCore/inspector/front-end/Images/errorRedDot.png and b/Source/WebCore/inspector/front-end/Images/errorRedDot.png differ diff --git a/Source/WebCore/inspector/front-end/Images/fileSystem.png b/Source/WebCore/inspector/front-end/Images/fileSystem.png index f9c2252f2e4..926389dad22 100644 Binary files a/Source/WebCore/inspector/front-end/Images/fileSystem.png and b/Source/WebCore/inspector/front-end/Images/fileSystem.png differ diff --git a/Source/WebCore/inspector/front-end/Images/frame.png b/Source/WebCore/inspector/front-end/Images/frame.png index 1bec9c672bd..27f5ea46ca6 100644 Binary files a/Source/WebCore/inspector/front-end/Images/frame.png and b/Source/WebCore/inspector/front-end/Images/frame.png differ diff --git a/Source/WebCore/inspector/front-end/Images/glossyHeader.png b/Source/WebCore/inspector/front-end/Images/glossyHeader.png index 1a709deecd1..e85c596b199 100644 Binary files a/Source/WebCore/inspector/front-end/Images/glossyHeader.png and b/Source/WebCore/inspector/front-end/Images/glossyHeader.png differ diff --git a/Source/WebCore/inspector/front-end/Images/glossyHeaderPressed.png b/Source/WebCore/inspector/front-end/Images/glossyHeaderPressed.png index 74d8b5032be..01872cd2c4c 100644 Binary files a/Source/WebCore/inspector/front-end/Images/glossyHeaderPressed.png and b/Source/WebCore/inspector/front-end/Images/glossyHeaderPressed.png differ diff --git a/Source/WebCore/inspector/front-end/Images/graphLabelCalloutLeft.png b/Source/WebCore/inspector/front-end/Images/graphLabelCalloutLeft.png index 29fc04201ba..f80dccfc16c 100644 Binary files a/Source/WebCore/inspector/front-end/Images/graphLabelCalloutLeft.png and b/Source/WebCore/inspector/front-end/Images/graphLabelCalloutLeft.png differ diff --git a/Source/WebCore/inspector/front-end/Images/graphLabelCalloutRight.png b/Source/WebCore/inspector/front-end/Images/graphLabelCalloutRight.png index 6c56a2bafb7..3ee822132b1 100644 Binary files a/Source/WebCore/inspector/front-end/Images/graphLabelCalloutRight.png and b/Source/WebCore/inspector/front-end/Images/graphLabelCalloutRight.png differ diff --git a/Source/WebCore/inspector/front-end/Images/indexedDB.png b/Source/WebCore/inspector/front-end/Images/indexedDB.png index 2b500b8331c..155533946c7 100644 Binary files a/Source/WebCore/inspector/front-end/Images/indexedDB.png and b/Source/WebCore/inspector/front-end/Images/indexedDB.png differ diff --git a/Source/WebCore/inspector/front-end/Images/indexedDBIndex.png b/Source/WebCore/inspector/front-end/Images/indexedDBIndex.png index cd0dbb085ab..eaecc0e5777 100644 Binary files a/Source/WebCore/inspector/front-end/Images/indexedDBIndex.png and b/Source/WebCore/inspector/front-end/Images/indexedDBIndex.png differ diff --git a/Source/WebCore/inspector/front-end/Images/indexedDBObjectStore.png b/Source/WebCore/inspector/front-end/Images/indexedDBObjectStore.png index ce2396b9b52..10fa04c9226 100644 Binary files a/Source/WebCore/inspector/front-end/Images/indexedDBObjectStore.png and b/Source/WebCore/inspector/front-end/Images/indexedDBObjectStore.png differ diff --git a/Source/WebCore/inspector/front-end/Images/localStorage.png b/Source/WebCore/inspector/front-end/Images/localStorage.png index 494f6c09d31..0e615cee2c6 100644 Binary files a/Source/WebCore/inspector/front-end/Images/localStorage.png and b/Source/WebCore/inspector/front-end/Images/localStorage.png differ diff --git a/Source/WebCore/inspector/front-end/Images/navigatorShowHideButton.png b/Source/WebCore/inspector/front-end/Images/navigatorShowHideButton.png index e745a4a0273..e4f74033062 100644 Binary files a/Source/WebCore/inspector/front-end/Images/navigatorShowHideButton.png and b/Source/WebCore/inspector/front-end/Images/navigatorShowHideButton.png differ diff --git a/Source/WebCore/inspector/front-end/Images/paneAddButtons.png b/Source/WebCore/inspector/front-end/Images/paneAddButtons.png index bb014474636..8790f53a854 100644 Binary files a/Source/WebCore/inspector/front-end/Images/paneAddButtons.png and b/Source/WebCore/inspector/front-end/Images/paneAddButtons.png differ diff --git a/Source/WebCore/inspector/front-end/Images/paneBottomGrow.png b/Source/WebCore/inspector/front-end/Images/paneBottomGrow.png index 7209b646091..c2156579038 100644 Binary files a/Source/WebCore/inspector/front-end/Images/paneBottomGrow.png and b/Source/WebCore/inspector/front-end/Images/paneBottomGrow.png differ diff --git a/Source/WebCore/inspector/front-end/Images/paneBottomGrowActive.png b/Source/WebCore/inspector/front-end/Images/paneBottomGrowActive.png index 2794b9238ad..5a8d0681760 100644 Binary files a/Source/WebCore/inspector/front-end/Images/paneBottomGrowActive.png and b/Source/WebCore/inspector/front-end/Images/paneBottomGrowActive.png differ diff --git a/Source/WebCore/inspector/front-end/Images/paneElementStateButtons.png b/Source/WebCore/inspector/front-end/Images/paneElementStateButtons.png index 9002a140645..1c22a3c1d47 100644 Binary files a/Source/WebCore/inspector/front-end/Images/paneElementStateButtons.png and b/Source/WebCore/inspector/front-end/Images/paneElementStateButtons.png differ diff --git a/Source/WebCore/inspector/front-end/Images/paneFilterButtons.png b/Source/WebCore/inspector/front-end/Images/paneFilterButtons.png index 8a15b443f38..7c8d84e324b 100644 Binary files a/Source/WebCore/inspector/front-end/Images/paneFilterButtons.png and b/Source/WebCore/inspector/front-end/Images/paneFilterButtons.png differ diff --git a/Source/WebCore/inspector/front-end/Images/paneRefreshButtons.png b/Source/WebCore/inspector/front-end/Images/paneRefreshButtons.png index a5927db3243..e83dfd8ad70 100644 Binary files a/Source/WebCore/inspector/front-end/Images/paneRefreshButtons.png and b/Source/WebCore/inspector/front-end/Images/paneRefreshButtons.png differ diff --git a/Source/WebCore/inspector/front-end/Images/paneSettingsButtons.png b/Source/WebCore/inspector/front-end/Images/paneSettingsButtons.png index 46c0164c5cf..1288b890631 100644 Binary files a/Source/WebCore/inspector/front-end/Images/paneSettingsButtons.png and b/Source/WebCore/inspector/front-end/Images/paneSettingsButtons.png differ diff --git a/Source/WebCore/inspector/front-end/Images/popoverArrows.png b/Source/WebCore/inspector/front-end/Images/popoverArrows.png index 8d019e6e7ac..a1fc76668e4 100644 Binary files a/Source/WebCore/inspector/front-end/Images/popoverArrows.png and b/Source/WebCore/inspector/front-end/Images/popoverArrows.png differ diff --git a/Source/WebCore/inspector/front-end/Images/popoverBackground.png b/Source/WebCore/inspector/front-end/Images/popoverBackground.png index ea1e4f4b637..fd8fc99080c 100644 Binary files a/Source/WebCore/inspector/front-end/Images/popoverBackground.png and b/Source/WebCore/inspector/front-end/Images/popoverBackground.png differ diff --git a/Source/WebCore/inspector/front-end/Images/profileGroupIcon.png b/Source/WebCore/inspector/front-end/Images/profileGroupIcon.png index 406bc53a917..a25de24ff4d 100644 Binary files a/Source/WebCore/inspector/front-end/Images/profileGroupIcon.png and b/Source/WebCore/inspector/front-end/Images/profileGroupIcon.png differ diff --git a/Source/WebCore/inspector/front-end/Images/profileIcon.png b/Source/WebCore/inspector/front-end/Images/profileIcon.png index 8a2c1f0a380..015c791881f 100644 Binary files a/Source/WebCore/inspector/front-end/Images/profileIcon.png and b/Source/WebCore/inspector/front-end/Images/profileIcon.png differ diff --git a/Source/WebCore/inspector/front-end/Images/profileSmallIcon.png b/Source/WebCore/inspector/front-end/Images/profileSmallIcon.png index c165c14ea58..cbdcac2a5af 100644 Binary files a/Source/WebCore/inspector/front-end/Images/profileSmallIcon.png and b/Source/WebCore/inspector/front-end/Images/profileSmallIcon.png differ diff --git a/Source/WebCore/inspector/front-end/Images/profilesSilhouette.png b/Source/WebCore/inspector/front-end/Images/profilesSilhouette.png index 7c4948be7d1..42daec26400 100644 Binary files a/Source/WebCore/inspector/front-end/Images/profilesSilhouette.png and b/Source/WebCore/inspector/front-end/Images/profilesSilhouette.png differ diff --git a/Source/WebCore/inspector/front-end/Images/programCounterBorder.png b/Source/WebCore/inspector/front-end/Images/programCounterBorder.png index 10b02509c5f..5e7717ef89c 100644 Binary files a/Source/WebCore/inspector/front-end/Images/programCounterBorder.png and b/Source/WebCore/inspector/front-end/Images/programCounterBorder.png differ diff --git a/Source/WebCore/inspector/front-end/Images/radioDot.png b/Source/WebCore/inspector/front-end/Images/radioDot.png index 2304856e741..1a99f937b9b 100644 Binary files a/Source/WebCore/inspector/front-end/Images/radioDot.png and b/Source/WebCore/inspector/front-end/Images/radioDot.png differ diff --git a/Source/WebCore/inspector/front-end/Images/resourceCSSIcon.png b/Source/WebCore/inspector/front-end/Images/resourceCSSIcon.png index e4877397e4f..3782125d5d9 100644 Binary files a/Source/WebCore/inspector/front-end/Images/resourceCSSIcon.png and b/Source/WebCore/inspector/front-end/Images/resourceCSSIcon.png differ diff --git a/Source/WebCore/inspector/front-end/Images/resourceJSIcon.png b/Source/WebCore/inspector/front-end/Images/resourceJSIcon.png index 2fa440a9b45..73bc05d809e 100644 Binary files a/Source/WebCore/inspector/front-end/Images/resourceJSIcon.png and b/Source/WebCore/inspector/front-end/Images/resourceJSIcon.png differ diff --git a/Source/WebCore/inspector/front-end/Images/scriptsSilhouette.png b/Source/WebCore/inspector/front-end/Images/scriptsSilhouette.png index de66d0d1643..09c4fccec1f 100644 Binary files a/Source/WebCore/inspector/front-end/Images/scriptsSilhouette.png and b/Source/WebCore/inspector/front-end/Images/scriptsSilhouette.png differ diff --git a/Source/WebCore/inspector/front-end/Images/searchNext.png b/Source/WebCore/inspector/front-end/Images/searchNext.png index 460a59c7985..a49469d32e4 100644 Binary files a/Source/WebCore/inspector/front-end/Images/searchNext.png and b/Source/WebCore/inspector/front-end/Images/searchNext.png differ diff --git a/Source/WebCore/inspector/front-end/Images/searchPrev.png b/Source/WebCore/inspector/front-end/Images/searchPrev.png index 7428d2bd04e..41d51415be4 100644 Binary files a/Source/WebCore/inspector/front-end/Images/searchPrev.png and b/Source/WebCore/inspector/front-end/Images/searchPrev.png differ diff --git a/Source/WebCore/inspector/front-end/Images/searchSmallGray.png b/Source/WebCore/inspector/front-end/Images/searchSmallGray.png index 171dd94fd5d..77808207baa 100644 Binary files a/Source/WebCore/inspector/front-end/Images/searchSmallGray.png and b/Source/WebCore/inspector/front-end/Images/searchSmallGray.png differ diff --git a/Source/WebCore/inspector/front-end/Images/searchSmallWhite.png b/Source/WebCore/inspector/front-end/Images/searchSmallWhite.png index a42bf1e8c49..8b57eaa3041 100644 Binary files a/Source/WebCore/inspector/front-end/Images/searchSmallWhite.png and b/Source/WebCore/inspector/front-end/Images/searchSmallWhite.png differ diff --git a/Source/WebCore/inspector/front-end/Images/segmentEnd.png b/Source/WebCore/inspector/front-end/Images/segmentEnd.png index 352137cd59c..a262b7df878 100644 Binary files a/Source/WebCore/inspector/front-end/Images/segmentEnd.png and b/Source/WebCore/inspector/front-end/Images/segmentEnd.png differ diff --git a/Source/WebCore/inspector/front-end/Images/segmentHoverEnd.png b/Source/WebCore/inspector/front-end/Images/segmentHoverEnd.png index 5722804cb23..c2c27fade19 100644 Binary files a/Source/WebCore/inspector/front-end/Images/segmentHoverEnd.png and b/Source/WebCore/inspector/front-end/Images/segmentHoverEnd.png differ diff --git a/Source/WebCore/inspector/front-end/Images/sessionStorage.png b/Source/WebCore/inspector/front-end/Images/sessionStorage.png index 8478383adc5..144ef6501e0 100644 Binary files a/Source/WebCore/inspector/front-end/Images/sessionStorage.png and b/Source/WebCore/inspector/front-end/Images/sessionStorage.png differ diff --git a/Source/WebCore/inspector/front-end/Images/splitviewDimple.png b/Source/WebCore/inspector/front-end/Images/splitviewDimple.png index abc9989d9a8..23b88b50982 100644 Binary files a/Source/WebCore/inspector/front-end/Images/splitviewDimple.png and b/Source/WebCore/inspector/front-end/Images/splitviewDimple.png differ diff --git a/Source/WebCore/inspector/front-end/Images/splitviewDividerBackground.png b/Source/WebCore/inspector/front-end/Images/splitviewDividerBackground.png index 0425871b58a..2e48b063cc6 100644 Binary files a/Source/WebCore/inspector/front-end/Images/splitviewDividerBackground.png and b/Source/WebCore/inspector/front-end/Images/splitviewDividerBackground.png differ diff --git a/Source/WebCore/inspector/front-end/Images/statusbarButtonGlyphs.png b/Source/WebCore/inspector/front-end/Images/statusbarButtonGlyphs.png index 2f3b64214af..28eb7f6bc88 100644 Binary files a/Source/WebCore/inspector/front-end/Images/statusbarButtonGlyphs.png and b/Source/WebCore/inspector/front-end/Images/statusbarButtonGlyphs.png differ diff --git a/Source/WebCore/inspector/front-end/Images/statusbarButtonGlyphs2x.png b/Source/WebCore/inspector/front-end/Images/statusbarButtonGlyphs2x.png index cc62fc7505f..4e8a5dfd1e7 100644 Binary files a/Source/WebCore/inspector/front-end/Images/statusbarButtonGlyphs2x.png and b/Source/WebCore/inspector/front-end/Images/statusbarButtonGlyphs2x.png differ diff --git a/Source/WebCore/inspector/front-end/Images/successGreenDot.png b/Source/WebCore/inspector/front-end/Images/successGreenDot.png index fcc7a7bac9b..8a3232a3e04 100644 Binary files a/Source/WebCore/inspector/front-end/Images/successGreenDot.png and b/Source/WebCore/inspector/front-end/Images/successGreenDot.png differ diff --git a/Source/WebCore/inspector/front-end/Images/thumbActiveHoriz.png b/Source/WebCore/inspector/front-end/Images/thumbActiveHoriz.png index 68047fb3b0f..8648eb1c53d 100644 Binary files a/Source/WebCore/inspector/front-end/Images/thumbActiveHoriz.png and b/Source/WebCore/inspector/front-end/Images/thumbActiveHoriz.png differ diff --git a/Source/WebCore/inspector/front-end/Images/thumbActiveVert.png b/Source/WebCore/inspector/front-end/Images/thumbActiveVert.png index dd9174e4761..10b71b76002 100644 Binary files a/Source/WebCore/inspector/front-end/Images/thumbActiveVert.png and b/Source/WebCore/inspector/front-end/Images/thumbActiveVert.png differ diff --git a/Source/WebCore/inspector/front-end/Images/thumbHoriz.png b/Source/WebCore/inspector/front-end/Images/thumbHoriz.png index d56888f34f7..f4b86948d9c 100644 Binary files a/Source/WebCore/inspector/front-end/Images/thumbHoriz.png and b/Source/WebCore/inspector/front-end/Images/thumbHoriz.png differ diff --git a/Source/WebCore/inspector/front-end/Images/thumbHoverHoriz.png b/Source/WebCore/inspector/front-end/Images/thumbHoverHoriz.png index 4f522406be4..74e43b8c600 100644 Binary files a/Source/WebCore/inspector/front-end/Images/thumbHoverHoriz.png and b/Source/WebCore/inspector/front-end/Images/thumbHoverHoriz.png differ diff --git a/Source/WebCore/inspector/front-end/Images/thumbHoverVert.png b/Source/WebCore/inspector/front-end/Images/thumbHoverVert.png index 92db559662f..140ab8e5aa3 100644 Binary files a/Source/WebCore/inspector/front-end/Images/thumbHoverVert.png and b/Source/WebCore/inspector/front-end/Images/thumbHoverVert.png differ diff --git a/Source/WebCore/inspector/front-end/Images/thumbVert.png b/Source/WebCore/inspector/front-end/Images/thumbVert.png index 844acd22321..460815e5f59 100644 Binary files a/Source/WebCore/inspector/front-end/Images/thumbVert.png and b/Source/WebCore/inspector/front-end/Images/thumbVert.png differ diff --git a/Source/WebCore/inspector/front-end/Images/tickMark.png b/Source/WebCore/inspector/front-end/Images/tickMark.png index cc34498ab11..c41869168ba 100644 Binary files a/Source/WebCore/inspector/front-end/Images/tickMark.png and b/Source/WebCore/inspector/front-end/Images/tickMark.png differ diff --git a/Source/WebCore/inspector/front-end/Images/timelineHollowPillBlue.png b/Source/WebCore/inspector/front-end/Images/timelineHollowPillBlue.png index 99530b0ee81..dc7242baf12 100644 Binary files a/Source/WebCore/inspector/front-end/Images/timelineHollowPillBlue.png and b/Source/WebCore/inspector/front-end/Images/timelineHollowPillBlue.png differ diff --git a/Source/WebCore/inspector/front-end/Images/timelineHollowPillGray.png b/Source/WebCore/inspector/front-end/Images/timelineHollowPillGray.png index bae450e1647..991a4f59468 100644 Binary files a/Source/WebCore/inspector/front-end/Images/timelineHollowPillGray.png and b/Source/WebCore/inspector/front-end/Images/timelineHollowPillGray.png differ diff --git a/Source/WebCore/inspector/front-end/Images/timelineHollowPillGreen.png b/Source/WebCore/inspector/front-end/Images/timelineHollowPillGreen.png index 5b78a01e290..7045c49cbf3 100644 Binary files a/Source/WebCore/inspector/front-end/Images/timelineHollowPillGreen.png and b/Source/WebCore/inspector/front-end/Images/timelineHollowPillGreen.png differ diff --git a/Source/WebCore/inspector/front-end/Images/timelineHollowPillOrange.png b/Source/WebCore/inspector/front-end/Images/timelineHollowPillOrange.png index 5c733ec9556..67485f6284e 100644 Binary files a/Source/WebCore/inspector/front-end/Images/timelineHollowPillOrange.png and b/Source/WebCore/inspector/front-end/Images/timelineHollowPillOrange.png differ diff --git a/Source/WebCore/inspector/front-end/Images/timelineHollowPillPurple.png b/Source/WebCore/inspector/front-end/Images/timelineHollowPillPurple.png index 8a2a2b5e2fa..8df8a56c0f1 100644 Binary files a/Source/WebCore/inspector/front-end/Images/timelineHollowPillPurple.png and b/Source/WebCore/inspector/front-end/Images/timelineHollowPillPurple.png differ diff --git a/Source/WebCore/inspector/front-end/Images/timelineHollowPillRed.png b/Source/WebCore/inspector/front-end/Images/timelineHollowPillRed.png index 064fdb27fbe..020719e2743 100644 Binary files a/Source/WebCore/inspector/front-end/Images/timelineHollowPillRed.png and b/Source/WebCore/inspector/front-end/Images/timelineHollowPillRed.png differ diff --git a/Source/WebCore/inspector/front-end/Images/timelineHollowPillYellow.png b/Source/WebCore/inspector/front-end/Images/timelineHollowPillYellow.png index d0eb48451a7..9fdb533e579 100644 Binary files a/Source/WebCore/inspector/front-end/Images/timelineHollowPillYellow.png and b/Source/WebCore/inspector/front-end/Images/timelineHollowPillYellow.png differ diff --git a/Source/WebCore/inspector/front-end/Images/timelinePillBlue.png b/Source/WebCore/inspector/front-end/Images/timelinePillBlue.png index 44442719109..adf967f0a95 100644 Binary files a/Source/WebCore/inspector/front-end/Images/timelinePillBlue.png and b/Source/WebCore/inspector/front-end/Images/timelinePillBlue.png differ diff --git a/Source/WebCore/inspector/front-end/Images/timelinePillGray.png b/Source/WebCore/inspector/front-end/Images/timelinePillGray.png index cb9bc126bc2..bb48eb20bde 100644 Binary files a/Source/WebCore/inspector/front-end/Images/timelinePillGray.png and b/Source/WebCore/inspector/front-end/Images/timelinePillGray.png differ diff --git a/Source/WebCore/inspector/front-end/Images/timelinePillGreen.png b/Source/WebCore/inspector/front-end/Images/timelinePillGreen.png index 631286c0789..8cde46266a8 100644 Binary files a/Source/WebCore/inspector/front-end/Images/timelinePillGreen.png and b/Source/WebCore/inspector/front-end/Images/timelinePillGreen.png differ diff --git a/Source/WebCore/inspector/front-end/Images/timelinePillOrange.png b/Source/WebCore/inspector/front-end/Images/timelinePillOrange.png index c9af42e7a71..a24de5a58fe 100644 Binary files a/Source/WebCore/inspector/front-end/Images/timelinePillOrange.png and b/Source/WebCore/inspector/front-end/Images/timelinePillOrange.png differ diff --git a/Source/WebCore/inspector/front-end/Images/timelinePillPurple.png b/Source/WebCore/inspector/front-end/Images/timelinePillPurple.png index 94694d11e11..73c8ec08605 100644 Binary files a/Source/WebCore/inspector/front-end/Images/timelinePillPurple.png and b/Source/WebCore/inspector/front-end/Images/timelinePillPurple.png differ diff --git a/Source/WebCore/inspector/front-end/Images/timelinePillRed.png b/Source/WebCore/inspector/front-end/Images/timelinePillRed.png index 3555e65bd3c..6e8b3c0abe4 100644 Binary files a/Source/WebCore/inspector/front-end/Images/timelinePillRed.png and b/Source/WebCore/inspector/front-end/Images/timelinePillRed.png differ diff --git a/Source/WebCore/inspector/front-end/Images/timelinePillYellow.png b/Source/WebCore/inspector/front-end/Images/timelinePillYellow.png index 97d1110396c..a3d60413ee1 100644 Binary files a/Source/WebCore/inspector/front-end/Images/timelinePillYellow.png and b/Source/WebCore/inspector/front-end/Images/timelinePillYellow.png differ diff --git a/Source/WebCore/inspector/front-end/Images/toolbarIcons.png b/Source/WebCore/inspector/front-end/Images/toolbarIcons.png index ad67da7a96f..0c2a7092586 100644 Binary files a/Source/WebCore/inspector/front-end/Images/toolbarIcons.png and b/Source/WebCore/inspector/front-end/Images/toolbarIcons.png differ diff --git a/Source/WebCore/inspector/front-end/Images/toolbarIconsSmall.png b/Source/WebCore/inspector/front-end/Images/toolbarIconsSmall.png index f61ea3344a2..feecee40e59 100644 Binary files a/Source/WebCore/inspector/front-end/Images/toolbarIconsSmall.png and b/Source/WebCore/inspector/front-end/Images/toolbarIconsSmall.png differ diff --git a/Source/WebCore/inspector/front-end/Images/toolbarItemSelected.png b/Source/WebCore/inspector/front-end/Images/toolbarItemSelected.png index 3100b9ab76a..dab787ef892 100644 Binary files a/Source/WebCore/inspector/front-end/Images/toolbarItemSelected.png and b/Source/WebCore/inspector/front-end/Images/toolbarItemSelected.png differ diff --git a/Source/WebCore/inspector/front-end/Images/trackHoriz.png b/Source/WebCore/inspector/front-end/Images/trackHoriz.png index fd48d4e90f7..541dd11e6e4 100644 Binary files a/Source/WebCore/inspector/front-end/Images/trackHoriz.png and b/Source/WebCore/inspector/front-end/Images/trackHoriz.png differ diff --git a/Source/WebCore/inspector/front-end/Images/trackVert.png b/Source/WebCore/inspector/front-end/Images/trackVert.png index 0e4451614a6..1375a140ae8 100644 Binary files a/Source/WebCore/inspector/front-end/Images/trackVert.png and b/Source/WebCore/inspector/front-end/Images/trackVert.png differ diff --git a/Source/WebCore/inspector/front-end/Images/treeDownTriangleBlack.png b/Source/WebCore/inspector/front-end/Images/treeDownTriangleBlack.png index 2128a670fed..f7975853378 100644 Binary files a/Source/WebCore/inspector/front-end/Images/treeDownTriangleBlack.png and b/Source/WebCore/inspector/front-end/Images/treeDownTriangleBlack.png differ diff --git a/Source/WebCore/inspector/front-end/Images/treeDownTriangleWhite.png b/Source/WebCore/inspector/front-end/Images/treeDownTriangleWhite.png index 362f54bd178..24d3d55e3d3 100644 Binary files a/Source/WebCore/inspector/front-end/Images/treeDownTriangleWhite.png and b/Source/WebCore/inspector/front-end/Images/treeDownTriangleWhite.png differ diff --git a/Source/WebCore/inspector/front-end/Images/treeRightTriangleBlack.png b/Source/WebCore/inspector/front-end/Images/treeRightTriangleBlack.png index deed824d817..9b4c2f10b85 100644 Binary files a/Source/WebCore/inspector/front-end/Images/treeRightTriangleBlack.png and b/Source/WebCore/inspector/front-end/Images/treeRightTriangleBlack.png differ diff --git a/Source/WebCore/inspector/front-end/Images/treeRightTriangleWhite.png b/Source/WebCore/inspector/front-end/Images/treeRightTriangleWhite.png index f33b9f198b0..fcb2eb609ed 100644 Binary files a/Source/WebCore/inspector/front-end/Images/treeRightTriangleWhite.png and b/Source/WebCore/inspector/front-end/Images/treeRightTriangleWhite.png differ diff --git a/Source/WebCore/inspector/front-end/Images/treeUpTriangleBlack.png b/Source/WebCore/inspector/front-end/Images/treeUpTriangleBlack.png index b10674c43bd..91bde8acf76 100644 Binary files a/Source/WebCore/inspector/front-end/Images/treeUpTriangleBlack.png and b/Source/WebCore/inspector/front-end/Images/treeUpTriangleBlack.png differ diff --git a/Source/WebCore/inspector/front-end/Images/treeUpTriangleWhite.png b/Source/WebCore/inspector/front-end/Images/treeUpTriangleWhite.png index 4374fe78316..c49a0ae2c71 100644 Binary files a/Source/WebCore/inspector/front-end/Images/treeUpTriangleWhite.png and b/Source/WebCore/inspector/front-end/Images/treeUpTriangleWhite.png differ diff --git a/Source/WebCore/inspector/front-end/Images/userInputIcon.png b/Source/WebCore/inspector/front-end/Images/userInputIcon.png index 826b83adfa5..d00819fd93a 100644 Binary files a/Source/WebCore/inspector/front-end/Images/userInputIcon.png and b/Source/WebCore/inspector/front-end/Images/userInputIcon.png differ diff --git a/Source/WebCore/inspector/front-end/Images/userInputPreviousIcon.png b/Source/WebCore/inspector/front-end/Images/userInputPreviousIcon.png index 951a7d80f87..779f815798a 100644 Binary files a/Source/WebCore/inspector/front-end/Images/userInputPreviousIcon.png and b/Source/WebCore/inspector/front-end/Images/userInputPreviousIcon.png differ diff --git a/Source/WebCore/inspector/front-end/Images/userInputResultIcon.png b/Source/WebCore/inspector/front-end/Images/userInputResultIcon.png index 6923206078c..9f77181d5aa 100644 Binary files a/Source/WebCore/inspector/front-end/Images/userInputResultIcon.png and b/Source/WebCore/inspector/front-end/Images/userInputResultIcon.png differ diff --git a/Source/WebCore/inspector/front-end/Images/warningIcon.png b/Source/WebCore/inspector/front-end/Images/warningIcon.png index 44164009073..36374209048 100644 Binary files a/Source/WebCore/inspector/front-end/Images/warningIcon.png and b/Source/WebCore/inspector/front-end/Images/warningIcon.png differ diff --git a/Source/WebCore/inspector/front-end/Images/warningMediumIcon.png b/Source/WebCore/inspector/front-end/Images/warningMediumIcon.png index 71b44f85245..6a92f670749 100644 Binary files a/Source/WebCore/inspector/front-end/Images/warningMediumIcon.png and b/Source/WebCore/inspector/front-end/Images/warningMediumIcon.png differ diff --git a/Source/WebCore/inspector/front-end/Images/warningOrangeDot.png b/Source/WebCore/inspector/front-end/Images/warningOrangeDot.png index 18261a133cf..a1937129f8b 100644 Binary files a/Source/WebCore/inspector/front-end/Images/warningOrangeDot.png and b/Source/WebCore/inspector/front-end/Images/warningOrangeDot.png differ diff --git a/Source/WebCore/inspector/front-end/Images/warningsErrors.png b/Source/WebCore/inspector/front-end/Images/warningsErrors.png index 2ac3e068197..c0056981703 100644 Binary files a/Source/WebCore/inspector/front-end/Images/warningsErrors.png and b/Source/WebCore/inspector/front-end/Images/warningsErrors.png differ diff --git a/Source/WebCore/loader/ImageLoader.cpp b/Source/WebCore/loader/ImageLoader.cpp index 60f970240fd..40a66ea01ff 100644 --- a/Source/WebCore/loader/ImageLoader.cpp +++ b/Source/WebCore/loader/ImageLoader.cpp @@ -93,7 +93,6 @@ ImageLoader::ImageLoader(Element* element) : m_element(element) , m_image(0) , m_derefElementTimer(this, &ImageLoader::timerFired) - , m_postponeLoadImage(false) , m_hasPendingBeforeLoadEvent(false) , m_hasPendingLoadEvent(false) , m_hasPendingErrorEvent(false) @@ -112,8 +111,8 @@ ImageLoader::~ImageLoader() if (m_hasPendingBeforeLoadEvent) beforeLoadEventSender().cancelEvent(this); - ASSERT(m_hasPendingLoadEvent || !m_postponeLoadImage || !loadEventSender().hasPendingEvents(this)); - if (m_hasPendingLoadEvent && !m_postponeLoadImage) + ASSERT(m_hasPendingLoadEvent || !loadEventSender().hasPendingEvents(this)); + if (m_hasPendingLoadEvent) loadEventSender().cancelEvent(this); ASSERT(m_hasPendingErrorEvent || !errorEventSender().hasPendingEvents(this)); @@ -145,7 +144,7 @@ void ImageLoader::setImageWithoutConsideringPendingLoadEvent(CachedImage* newIma beforeLoadEventSender().cancelEvent(this); m_hasPendingBeforeLoadEvent = false; } - if (m_hasPendingLoadEvent && !m_postponeLoadImage) { + if (m_hasPendingLoadEvent) { loadEventSender().cancelEvent(this); m_hasPendingLoadEvent = false; } @@ -224,7 +223,7 @@ void ImageLoader::updateFromElement() beforeLoadEventSender().cancelEvent(this); m_hasPendingBeforeLoadEvent = false; } - if (m_hasPendingLoadEvent && !m_postponeLoadImage) { + if (m_hasPendingLoadEvent) { loadEventSender().cancelEvent(this); m_hasPendingLoadEvent = false; } @@ -239,10 +238,7 @@ void ImageLoader::updateFromElement() } m_image = newImage; - - // Remember if we're (auto) loading the image right away. See updatedHasPendingEvent(). - m_postponeLoadImage = !document->cachedResourceLoader()->autoLoadImages(); - m_hasPendingBeforeLoadEvent = !document->isImageDocument() && newImage; + m_hasPendingBeforeLoadEvent = !m_element->document()->isImageDocument() && newImage; m_hasPendingLoadEvent = newImage; m_imageComplete = !newImage; @@ -286,11 +282,6 @@ void ImageLoader::notifyFinished(CachedResource* resource) ASSERT(m_failedLoadURL.isEmpty()); ASSERT(resource == m_image.get()); - if (m_postponeLoadImage) { - m_postponeLoadImage = false; - updatedHasPendingEvent(); - } - m_imageComplete = true; if (!hasPendingBeforeLoadEvent()) updateRenderer(); @@ -375,17 +366,8 @@ void ImageLoader::updatedHasPendingEvent() // As long as the ImageLoader is actively loading, the Element itself needs to be ref'ed to keep it from being // destroyed by DOM manipulation or garbage collection. // If such an Element wishes for the load to stop when removed from the DOM it needs to stop the ImageLoader explicitly. - // - // Don't protect the element if we're not loading the image right away, otherwise there won't be a load event and the - // protection never gets removed. This results in both the HTMLImageElement and its never-loaded CachedImage to leak. - // - // https://bugs.webkit.org/show_bug.cgi?id=17469 (maybe) - // https://bugs.webkit.org/show_bug.cgi?id=146538 - // https://bugreports.qt.io/browse/QTBUG-38857 - // https://github.com/ariya/phantomjs/issues/12903 - bool wasProtected = m_elementIsProtected; - m_elementIsProtected = (m_hasPendingLoadEvent && !m_postponeLoadImage) || m_hasPendingErrorEvent; + m_elementIsProtected = m_hasPendingLoadEvent || m_hasPendingErrorEvent; if (wasProtected == m_elementIsProtected) return; diff --git a/Source/WebCore/loader/ImageLoader.h b/Source/WebCore/loader/ImageLoader.h index 5f8f7c88051..a513b9a3ffb 100644 --- a/Source/WebCore/loader/ImageLoader.h +++ b/Source/WebCore/loader/ImageLoader.h @@ -61,7 +61,7 @@ class ImageLoader : public CachedImageClient { void setLoadManually(bool loadManually) { m_loadManually = loadManually; } bool hasPendingBeforeLoadEvent() const { return m_hasPendingBeforeLoadEvent; } - bool hasPendingActivity() const { return (m_hasPendingLoadEvent && !m_postponeLoadImage) || m_hasPendingErrorEvent; } + bool hasPendingActivity() const { return m_hasPendingLoadEvent || m_hasPendingErrorEvent; } void dispatchPendingEvent(ImageEventSender*); @@ -94,7 +94,6 @@ class ImageLoader : public CachedImageClient { CachedResourceHandle m_image; Timer m_derefElementTimer; AtomicString m_failedLoadURL; - bool m_postponeLoadImage : 1; bool m_hasPendingBeforeLoadEvent : 1; bool m_hasPendingLoadEvent : 1; bool m_hasPendingErrorEvent : 1; diff --git a/Source/WebCore/page/EventHandler.cpp b/Source/WebCore/page/EventHandler.cpp index 1a8b74470aa..fd9bb59aab3 100644 --- a/Source/WebCore/page/EventHandler.cpp +++ b/Source/WebCore/page/EventHandler.cpp @@ -2811,9 +2811,8 @@ bool EventHandler::isScrollbarHandlingGestures() const return m_scrollbarHandlingScrollGesture.get(); } #endif // ENABLE(GESTURE_EVENTS) -#if ENABLE(TOUCH_ADJUSTMENT) -#if ENABLE(GESTURE_EVENTS) +#if ENABLE(TOUCH_ADJUSTMENT) bool EventHandler::shouldApplyTouchAdjustment(const PlatformGestureEvent& event) const { if (m_frame->settings() && !m_frame->settings()->touchAdjustmentEnabled()) @@ -2821,29 +2820,6 @@ bool EventHandler::shouldApplyTouchAdjustment(const PlatformGestureEvent& event) return !event.area().isEmpty(); } -bool EventHandler::adjustGesturePosition(const PlatformGestureEvent& gestureEvent, IntPoint& adjustedPoint) -{ - if (!shouldApplyTouchAdjustment(gestureEvent)) - return false; - - Node* targetNode = 0; - switch (gestureEvent.type()) { - case PlatformEvent::GestureTap: - case PlatformEvent::GestureTapDown: - bestClickableNodeForTouchPoint(gestureEvent.position(), IntSize(gestureEvent.area().width() / 2, gestureEvent.area().height() / 2), adjustedPoint, targetNode); - break; - case PlatformEvent::GestureLongPress: - case PlatformEvent::GestureLongTap: - case PlatformEvent::GestureTwoFingerTap: - bestContextMenuNodeForTouchPoint(gestureEvent.position(), IntSize(gestureEvent.area().width() / 2, gestureEvent.area().height() / 2), adjustedPoint, targetNode); - break; - default: - // FIXME: Implement handling for other types as needed. - ASSERT_NOT_REACHED(); - } - return targetNode; -} -#endif // ENABLE(GESTURE_EVENTS) bool EventHandler::bestClickableNodeForTouchPoint(const IntPoint& touchCenter, const IntSize& touchRadius, IntPoint& targetPoint, Node*& targetNode) { @@ -2880,6 +2856,28 @@ bool EventHandler::bestZoomableAreaForTouchPoint(const IntPoint& touchCenter, co return findBestZoomableArea(targetNode, targetArea, touchCenter, touchRect, result.rectBasedTestResult()); } +bool EventHandler::adjustGesturePosition(const PlatformGestureEvent& gestureEvent, IntPoint& adjustedPoint) +{ + if (!shouldApplyTouchAdjustment(gestureEvent)) + return false; + + Node* targetNode = 0; + switch (gestureEvent.type()) { + case PlatformEvent::GestureTap: + case PlatformEvent::GestureTapDown: + bestClickableNodeForTouchPoint(gestureEvent.position(), IntSize(gestureEvent.area().width() / 2, gestureEvent.area().height() / 2), adjustedPoint, targetNode); + break; + case PlatformEvent::GestureLongPress: + case PlatformEvent::GestureLongTap: + case PlatformEvent::GestureTwoFingerTap: + bestContextMenuNodeForTouchPoint(gestureEvent.position(), IntSize(gestureEvent.area().width() / 2, gestureEvent.area().height() / 2), adjustedPoint, targetNode); + break; + default: + // FIXME: Implement handling for other types as needed. + ASSERT_NOT_REACHED(); + } + return targetNode; +} #endif #if ENABLE(CONTEXT_MENUS) diff --git a/Source/WebCore/page/EventHandler.h b/Source/WebCore/page/EventHandler.h index ec2152f3f40..a72eb97e177 100644 --- a/Source/WebCore/page/EventHandler.h +++ b/Source/WebCore/page/EventHandler.h @@ -190,14 +190,13 @@ class EventHandler { #endif #if ENABLE(TOUCH_ADJUSTMENT) -#if ENABLE(GESTURE_EVENTS) bool shouldApplyTouchAdjustment(const PlatformGestureEvent&) const; - bool adjustGesturePosition(const PlatformGestureEvent&, IntPoint& adjustedPoint); -#endif // ENABLE(GESTURE_EVENTS) bool bestClickableNodeForTouchPoint(const IntPoint& touchCenter, const IntSize& touchRadius, IntPoint& targetPoint, Node*& targetNode); bool bestContextMenuNodeForTouchPoint(const IntPoint& touchCenter, const IntSize& touchRadius, IntPoint& targetPoint, Node*& targetNode); bool bestZoomableAreaForTouchPoint(const IntPoint& touchCenter, const IntSize& touchRadius, IntRect& targetArea, Node*& targetNode); + + bool adjustGesturePosition(const PlatformGestureEvent&, IntPoint& adjustedPoint); #endif #if ENABLE(CONTEXT_MENUS) diff --git a/Source/WebCore/page/qt/EventHandlerQt.cpp b/Source/WebCore/page/qt/EventHandlerQt.cpp index f45f81dc74b..4bdf95673c5 100644 --- a/Source/WebCore/page/qt/EventHandlerQt.cpp +++ b/Source/WebCore/page/qt/EventHandlerQt.cpp @@ -52,7 +52,7 @@ namespace WebCore { -#if defined(Q_WS_MAC) +#if defined(Q_OS_OSX) const double EventHandler::TextDragDelay = 0.15; #else const double EventHandler::TextDragDelay = 0.0; diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_focus.png b/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_focus.png index 9e25a613d0f..9e91fe8f96e 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_focus.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_focus.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_hover.png b/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_hover.png index 9e25a613d0f..9e91fe8f96e 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_hover.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_hover.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_normal.png b/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_normal.png index 47715f2edae..bd9dee99e91 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_normal.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_normal.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_press.png b/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_press.png index bc265c523bd..b8b5163de63 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_press.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/button/img_button_press.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_bg_disabled.png b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_bg_disabled.png index ede1b0995a1..e624b10fd53 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_bg_disabled.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_bg_disabled.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_bg_enabled.png b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_bg_enabled.png index a7948b67ca2..0f1a68685d5 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_bg_enabled.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_bg_enabled.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_off.png b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_off.png index db6d0e2d541..167fa4e0a28 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_off.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_off.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_off_focus.png b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_off_focus.png index ecdae71d1a1..18bee2a6597 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_off_focus.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_off_focus.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_off_hover.png b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_off_hover.png index ecdae71d1a1..18bee2a6597 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_off_hover.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_off_hover.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_on.png b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_on.png index 05f74d87fe4..87d13edc8af 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_on.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_on.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_on_focus.png b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_on_focus.png index 5806b5da614..1f40566d0f6 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_on_focus.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_on_focus.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_on_hover.png b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_on_hover.png index 5806b5da614..1f40566d0f6 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_on_hover.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/check/img_check_on_hover.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_focus.png b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_focus.png index d5fa19facc4..3b1574bea1a 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_focus.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_focus.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_focus_button.png b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_focus_button.png index 51a5e825dfe..f191aae7354 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_focus_button.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_focus_button.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_hover.png b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_hover.png index d5fa19facc4..3b1574bea1a 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_hover.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_hover.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_hover_button.png b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_hover_button.png index b59f24972e2..e08861f70c4 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_hover_button.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_hover_button.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_normal.png b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_normal.png index dc6a3227f37..fc461a7a181 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_normal.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_normal.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_normal_button.png b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_normal_button.png index b01f57ea7e8..1cbcb11dcd0 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_normal_button.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_normal_button.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_press.png b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_press.png index 32f812206f7..97c88c5ea86 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_press.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_press.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_press_button.png b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_press_button.png index e03a9f21d5c..8743f9a29ab 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_press_button.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/combo_press_button.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/icon.png b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/icon.png index 57fb1ab7541..1534c2cbbdb 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/combo/icon.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/combo/icon.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/entry/img_focused.png b/Source/WebCore/platform/efl/DefaultTheme/widget/entry/img_focused.png index 3dc3a4df334..f4b17a94833 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/entry/img_focused.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/entry/img_focused.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/entry/img_hovered.png b/Source/WebCore/platform/efl/DefaultTheme/widget/entry/img_hovered.png index 3dc3a4df334..f4b17a94833 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/entry/img_hovered.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/entry/img_hovered.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/entry/img_normal.png b/Source/WebCore/platform/efl/DefaultTheme/widget/entry/img_normal.png index 88c657da79f..88d53f4b443 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/entry/img_normal.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/entry/img_normal.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_focus.png b/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_focus.png index 6f069986988..cc93b272bbd 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_focus.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_focus.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_hover.png b/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_hover.png index 972e6c0938f..41285a16b35 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_hover.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_hover.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_normal.png b/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_normal.png index e4ec1d466cc..a6d0653ef30 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_normal.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_normal.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_press.png b/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_press.png index 92fc938337a..f18f8fd153e 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_press.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/file/file_press.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/fullscreenbutton/enterfullscreenbutton.png b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/fullscreenbutton/enterfullscreenbutton.png index b62bc508de6..6616c06dda1 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/fullscreenbutton/enterfullscreenbutton.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/fullscreenbutton/enterfullscreenbutton.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/fullscreenbutton/exitfullscreenbutton.png b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/fullscreenbutton/exitfullscreenbutton.png index b39ad544541..4158dde74da 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/fullscreenbutton/exitfullscreenbutton.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/fullscreenbutton/exitfullscreenbutton.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/mutebutton/mutebutton.png b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/mutebutton/mutebutton.png index 7feba1ab6bc..575acd685c8 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/mutebutton/mutebutton.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/mutebutton/mutebutton.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/mutebutton/unmutebutton.png b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/mutebutton/unmutebutton.png index f44aac2bb1c..428201771eb 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/mutebutton/unmutebutton.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/mutebutton/unmutebutton.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/playpausebutton/pausebutton.png b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/playpausebutton/pausebutton.png index 92fcf026c3f..b40cfea1eb0 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/playpausebutton/pausebutton.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/playpausebutton/pausebutton.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/playpausebutton/playbutton.png b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/playpausebutton/playbutton.png index f55cef7729d..b4bc6613961 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/playpausebutton/playbutton.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/playpausebutton/playbutton.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/seekbackwardbutton/seekbackwardbutton.png b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/seekbackwardbutton/seekbackwardbutton.png index 279d24a926b..f3467cdc9f3 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/seekbackwardbutton/seekbackwardbutton.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/seekbackwardbutton/seekbackwardbutton.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/seekforwardbutton/seekforwardbutton.png b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/seekforwardbutton/seekforwardbutton.png index 7548bca49f9..c2fe82822af 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/seekforwardbutton/seekforwardbutton.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/seekforwardbutton/seekforwardbutton.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/togglecaptionsbutton/closedcaption.png b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/togglecaptionsbutton/closedcaption.png index 19ab25f07d4..2015749e80c 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/togglecaptionsbutton/closedcaption.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/togglecaptionsbutton/closedcaption.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/togglecaptionsbutton/closedcaption_disabled.png b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/togglecaptionsbutton/closedcaption_disabled.png index 83f5b16c1ac..a04b29d7ea3 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/togglecaptionsbutton/closedcaption_disabled.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/mediacontrol/togglecaptionsbutton/closedcaption_disabled.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/progressbar/bt_base.png b/Source/WebCore/platform/efl/DefaultTheme/widget/progressbar/bt_base.png index 5be65304c2e..2d1f1790970 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/progressbar/bt_base.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/progressbar/bt_base.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/progressbar/shelf_inset.png b/Source/WebCore/platform/efl/DefaultTheme/widget/progressbar/shelf_inset.png index 367b4c3d0e1..bb1989dd78c 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/progressbar/shelf_inset.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/progressbar/shelf_inset.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_bg_disabled.png b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_bg_disabled.png index 6e3385ace2c..aa897cfb388 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_bg_disabled.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_bg_disabled.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_bg_enabled.png b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_bg_enabled.png index add569dc9e1..46ef35d1abd 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_bg_enabled.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_bg_enabled.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_off.png b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_off.png index c218dd27c95..cd64cd84e81 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_off.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_off.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_off_focus.png b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_off_focus.png index d48fdbb630d..87d31e2b626 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_off_focus.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_off_focus.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_off_hover.png b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_off_hover.png index d48fdbb630d..87d31e2b626 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_off_hover.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_off_hover.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_on.png b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_on.png index 774f65afb63..b8d8ecbca25 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_on.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_on.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_on_focus.png b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_on_focus.png index 263ffe629d1..bf8a9703c85 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_on_focus.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_on_focus.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_on_hover.png b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_on_hover.png index 263ffe629d1..bf8a9703c85 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_on_hover.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/radio/img_radio_on_hover.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_h.png b/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_h.png index f78554d5e11..6703ea8d050 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_h.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_h.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_knob_h.png b/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_knob_h.png index cc5c2acbb88..b64d5ce56f7 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_knob_h.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_knob_h.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_knob_v.png b/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_knob_v.png index 61c68827836..9aa37eca42d 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_knob_v.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_knob_v.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_v.png b/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_v.png index 48fa8490c12..364be0afbc4 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_v.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/scrollbar/scrollbar_v.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/search/cancel/cancel_normal_button.png b/Source/WebCore/platform/efl/DefaultTheme/widget/search/cancel/cancel_normal_button.png index 0a7cc46f419..d49659939db 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/search/cancel/cancel_normal_button.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/search/cancel/cancel_normal_button.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/search/cancel/cancel_normal_button2.png b/Source/WebCore/platform/efl/DefaultTheme/widget/search/cancel/cancel_normal_button2.png index a322b404811..3120cfbaa06 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/search/cancel/cancel_normal_button2.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/search/cancel/cancel_normal_button2.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/search/decoration/decoration_normal_button.png b/Source/WebCore/platform/efl/DefaultTheme/widget/search/decoration/decoration_normal_button.png index 779fdf16f12..6e7f4185b63 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/search/decoration/decoration_normal_button.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/search/decoration/decoration_normal_button.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/search/field/field_focused.png b/Source/WebCore/platform/efl/DefaultTheme/widget/search/field/field_focused.png index 3dc3a4df334..f4b17a94833 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/search/field/field_focused.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/search/field/field_focused.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/search/field/field_hovered.png b/Source/WebCore/platform/efl/DefaultTheme/widget/search/field/field_hovered.png index 3dc3a4df334..f4b17a94833 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/search/field/field_hovered.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/search/field/field_hovered.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/search/field/field_normal.png b/Source/WebCore/platform/efl/DefaultTheme/widget/search/field/field_normal.png index 88c657da79f..88d53f4b443 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/search/field/field_normal.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/search/field/field_normal.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_fill_h.png b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_fill_h.png index 2e422ceb1c4..abe9d2cbad4 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_fill_h.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_fill_h.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_fill_v.png b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_fill_v.png index 9f6b35a9aed..5184cad8470 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_fill_v.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_fill_v.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_h.png b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_h.png index af6d6473bea..befd4a04230 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_h.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_h.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_h.png b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_h.png index 5728453a1ef..22454af723e 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_h.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_h.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_press_h.png b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_press_h.png index 794c6313294..1421cd837d7 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_press_h.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_press_h.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_press_v.png b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_press_v.png index 1376bf4a63e..293813cea35 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_press_v.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_press_v.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_v.png b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_v.png index 98a00993fcc..051f3c33ce5 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_v.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_thumb_v.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_v.png b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_v.png index afec6f9fe48..7243929d6a5 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_v.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/slider/slider_v.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_bg.png b/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_bg.png index cc72e607e0c..5d552a8227c 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_bg.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_bg.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_down_default.png b/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_down_default.png index 3f2e90f4834..f68387348ce 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_down_default.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_down_default.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_down_hover.png b/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_down_hover.png index c0eb957ee7f..a1c4f3fdcea 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_down_hover.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_down_hover.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_down_pressed.png b/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_down_pressed.png index 8c90b28cfc6..083531450b3 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_down_pressed.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_down_pressed.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_up_default.png b/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_up_default.png index 72176c2b49d..584a655933e 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_up_default.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_up_default.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_up_hover.png b/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_up_hover.png index 9cd85b4ccf6..000ffd1e278 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_up_hover.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_up_hover.png differ diff --git a/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_up_pressed.png b/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_up_pressed.png index fda210925d5..85a7417065a 100644 Binary files a/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_up_pressed.png and b/Source/WebCore/platform/efl/DefaultTheme/widget/spinner/sp_up_pressed.png differ diff --git a/Source/WebCore/platform/graphics/qt/GraphicsContextQt.cpp b/Source/WebCore/platform/graphics/qt/GraphicsContextQt.cpp index 7e7fee452eb..65b93535adf 100644 --- a/Source/WebCore/platform/graphics/qt/GraphicsContextQt.cpp +++ b/Source/WebCore/platform/graphics/qt/GraphicsContextQt.cpp @@ -1564,12 +1564,16 @@ void GraphicsContext::set3DTransform(const TransformationMatrix& transform) void GraphicsContext::setURLForRect(const KURL& url, const IntRect& rect) { +#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) if (paintingDisabled()) return; QPainter* p = m_data->p(); if (p->paintEngine()->type() == QPaintEngine::Pdf) static_cast(p->paintEngine())->drawHyperlink(p->worldTransform().mapRect(QRectF(rect.x(), rect.y(), rect.width(), rect.height())), QUrl(url.string())); +#else + notImplemented(); +#endif } void GraphicsContext::setPlatformStrokeColor(const Color& color, ColorSpace colorSpace) diff --git a/Source/WebCore/platform/graphics/qt/ImageBufferQt.cpp b/Source/WebCore/platform/graphics/qt/ImageBufferQt.cpp index f8a929c3f93..a796284c59e 100644 --- a/Source/WebCore/platform/graphics/qt/ImageBufferQt.cpp +++ b/Source/WebCore/platform/graphics/qt/ImageBufferQt.cpp @@ -196,9 +196,12 @@ void ImageBuffer::putByteArray(Multiply multiplied, Uint8ClampedArray* source, c static bool encodeImage(const QPixmap& pixmap, const String& format, const double* quality, QByteArray& data) { - int compressionQuality = 100; - if (quality && *quality >= 0.0 && *quality <= 1.0) - compressionQuality = static_cast(*quality * 100 + 0.5); + int compressionQuality = -1; + if (format == "jpeg" || format == "webp") { + compressionQuality = 100; + if (quality && *quality >= 0.0 && *quality <= 1.0) + compressionQuality = static_cast(*quality * 100 + 0.5); + } QBuffer buffer(&data); buffer.open(QBuffer::WriteOnly); diff --git a/Source/WebCore/platform/graphics/qt/ImageDecoderQt.cpp b/Source/WebCore/platform/graphics/qt/ImageDecoderQt.cpp index 2917815bd5f..74696c23daf 100644 --- a/Source/WebCore/platform/graphics/qt/ImageDecoderQt.cpp +++ b/Source/WebCore/platform/graphics/qt/ImageDecoderQt.cpp @@ -31,6 +31,7 @@ #include #include +#include #include namespace WebCore { @@ -45,6 +46,25 @@ ImageDecoderQt::~ImageDecoderQt() { } +static const char* s_formatWhiteList[] = {"png", "jpeg", "gif", "webp", "bmp", "svg", "ico", 0}; + +static bool isFormatWhiteListed(const QByteArray &format) +{ + static QSet whiteListSet; + if (whiteListSet.isEmpty()) { + QByteArray whiteListEnv = qgetenv("QTWEBKIT_IMAGEFORMAT_WHITELIST"); + if (!whiteListEnv.isEmpty()) + whiteListSet = QSet::fromList(whiteListEnv.split(',')); + + const char **formatIt = s_formatWhiteList; + while (*formatIt) { + whiteListSet.insert(QByteArray(*formatIt)); + ++formatIt; + } + } + return whiteListSet.contains(format); +} + void ImageDecoderQt::setData(SharedBuffer* data, bool allDataReceived) { if (failed()) @@ -73,6 +93,11 @@ void ImageDecoderQt::setData(SharedBuffer* data, bool allDataReceived) // QImageReader only allows retrieving the format before reading the image m_format = m_reader->format(); + if (!isFormatWhiteListed(m_format)) { + qWarning("Image of format '%s' blocked because it is not considered safe. If you are sure it is safe to do so, you can white-list the format by setting the environment variable QTWEBKIT_IMAGEFORMAT_WHITELIST=%s", m_format.constData(), m_format.constData()); + setFailed(); + m_reader.clear(); + } } bool ImageDecoderQt::isSizeAvailable() diff --git a/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp b/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp index 7da75c87402..38aa719508f 100644 --- a/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp +++ b/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp @@ -334,7 +334,7 @@ class JPEGImageReader { switch (m_state) { case JPEG_HEADER: // Read file parameters with jpeg_read_header(). - if (jpeg_read_header(&m_info, true) == JPEG_SUSPENDED) + if (jpeg_read_header(&m_info, TRUE) == JPEG_SUSPENDED) return false; // I/O suspension. switch (m_info.jpeg_color_space) { @@ -420,9 +420,9 @@ class JPEGImageReader { // of progressive JPEG. m_info.dct_method = dctMethod(); m_info.dither_mode = ditherMode(); - m_info.do_fancy_upsampling = doFancyUpsampling(); - m_info.enable_2pass_quant = false; - m_info.do_block_smoothing = true; + m_info.do_fancy_upsampling = doFancyUpsampling() ? TRUE : FALSE; + m_info.enable_2pass_quant = FALSE; + m_info.do_block_smoothing = TRUE; // Start decompressor. if (!jpeg_start_decompress(&m_info)) @@ -573,7 +573,7 @@ boolean fill_input_buffer(j_decompress_ptr) // Our decode step always sets things up properly, so if this method is ever // called, then we have hit the end of the buffer. A return value of false // indicates that we have no data to supply yet. - return false; + return FALSE; } void term_source(j_decompress_ptr jd) diff --git a/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.h b/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.h index b1f61a14d9a..3231eedbafd 100644 --- a/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.h +++ b/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.h @@ -40,6 +40,9 @@ #define XMD_H #endif +// ICU defines TRUE and FALSE macros, breaking libjpeg v9 headers +#undef TRUE +#undef FALSE extern "C" { #include "jpeglib.h" } diff --git a/Source/WebCore/platform/network/qt/SocketStreamHandlePrivate.h b/Source/WebCore/platform/network/qt/SocketStreamHandlePrivate.h index f447cc2067e..647c4efa565 100644 --- a/Source/WebCore/platform/network/qt/SocketStreamHandlePrivate.h +++ b/Source/WebCore/platform/network/qt/SocketStreamHandlePrivate.h @@ -60,7 +60,7 @@ public Q_SLOTS: void socketError(QAbstractSocket::SocketError); void socketClosedCallback(); void socketErrorCallback(int); -#ifndef QT_NO_OPENSSL +#ifndef QT_NO_SSL void socketSslErrors(const QList&); #endif public: diff --git a/Source/WebCore/platform/network/qt/SocketStreamHandleQt.cpp b/Source/WebCore/platform/network/qt/SocketStreamHandleQt.cpp index ca7b60cd2f1..cd711907e1d 100644 --- a/Source/WebCore/platform/network/qt/SocketStreamHandleQt.cpp +++ b/Source/WebCore/platform/network/qt/SocketStreamHandleQt.cpp @@ -48,7 +48,7 @@ SocketStreamHandlePrivate::SocketStreamHandlePrivate(SocketStreamHandle* streamH bool isSecure = url.protocolIs("wss"); if (isSecure) { -#ifndef QT_NO_OPENSSL +#ifndef QT_NO_SSL m_socket = new QSslSocket(this); #endif } else @@ -63,7 +63,7 @@ SocketStreamHandlePrivate::SocketStreamHandlePrivate(SocketStreamHandle* streamH QString host = url.host(); if (isSecure) { -#ifndef QT_NO_OPENSSL +#ifndef QT_NO_SSL static_cast(m_socket)->connectToHostEncrypted(host, port); #endif } else @@ -88,7 +88,7 @@ void SocketStreamHandlePrivate::initConnections() connect(m_socket, SIGNAL(readyRead()), this, SLOT(socketReadyRead())); connect(m_socket, SIGNAL(disconnected()), this, SLOT(socketClosed())); connect(m_socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(socketError(QAbstractSocket::SocketError))); -#ifndef QT_NO_OPENSSL +#ifndef QT_NO_SSL if (qobject_cast(m_socket)) connect(m_socket, SIGNAL(sslErrors(const QList&)), this, SLOT(socketSslErrors(const QList&))); #endif @@ -127,7 +127,7 @@ int SocketStreamHandlePrivate::send(const char* data, int len) void SocketStreamHandlePrivate::close() { - if (m_streamHandle && m_streamHandle->m_state == SocketStreamHandleBase::Connecting) { + if (m_socket && m_streamHandle && m_streamHandle->m_state == SocketStreamHandleBase::Connecting) { m_socket->abort(); m_streamHandle->client()->didCloseSocketStream(m_streamHandle); return; @@ -176,7 +176,7 @@ void SocketStreamHandlePrivate::socketErrorCallback(int error) } } -#ifndef QT_NO_OPENSSL +#ifndef QT_NO_SSL void SocketStreamHandlePrivate::socketSslErrors(const QList& error) { QMetaObject::invokeMethod(this, "socketErrorCallback", Qt::QueuedConnection, Q_ARG(int, error[0].error())); diff --git a/Source/WebCore/platform/qt/UserAgentQt.cpp b/Source/WebCore/platform/qt/UserAgentQt.cpp index 6f1da23c950..80996a223c0 100644 --- a/Source/WebCore/platform/qt/UserAgentQt.cpp +++ b/Source/WebCore/platform/qt/UserAgentQt.cpp @@ -74,7 +74,7 @@ String UserAgentQt::standardUserAgent(const String &applicationNameForUserAgent, // Security strength. QString securityStrength; -#if defined(QT_NO_OPENSSL) +#if defined(QT_NO_SSL) securityStrength = QLatin1String("N; "); #endif ua = ua.arg(securityStrength); diff --git a/Source/WebCore/platform/text/BidiResolver.h b/Source/WebCore/platform/text/BidiResolver.h index e0649fcb43f..d970eaa4df1 100644 --- a/Source/WebCore/platform/text/BidiResolver.h +++ b/Source/WebCore/platform/text/BidiResolver.h @@ -546,7 +546,7 @@ void BidiResolver::createBidiRunsForLine(const Iterator& end, Vis m_direction = override == VisualLeftToRightOverride ? LeftToRight : RightToLeft; appendRun(); m_runs.setLogicallyLastRun(m_runs.lastRun()); - if (override == VisualRightToLeftOverride) + if (override == VisualRightToLeftOverride && m_runs.runCount()) m_runs.reverseRuns(0, m_runs.runCount() - 1); return; } diff --git a/Source/WebCore/platform/text/BidiRunList.h b/Source/WebCore/platform/text/BidiRunList.h index d6db7ee4949..c5d6ba64835 100644 --- a/Source/WebCore/platform/text/BidiRunList.h +++ b/Source/WebCore/platform/text/BidiRunList.h @@ -193,9 +193,7 @@ void BidiRunList::deleteRuns() curr = s; } - m_firstRun = 0; - m_lastRun = 0; - m_runCount = 0; + clearWithoutDestroyingRuns(); } template diff --git a/Source/WebCore/plugins/PluginPackage.h b/Source/WebCore/plugins/PluginPackage.h index 90e36024e97..5f31e8a168d 100644 --- a/Source/WebCore/plugins/PluginPackage.h +++ b/Source/WebCore/plugins/PluginPackage.h @@ -60,13 +60,8 @@ namespace WebCore { const MIMEToDescriptionsMap& mimeToDescriptions() const { return m_mimeToDescriptions; } const MIMEToExtensionsMap& mimeToExtensions() const { return m_mimeToExtensions; } -#if !ENABLE(NETSCAPE_PLUGIN_API) && OS(WINDOWS) && PLATFORM(QT) - unsigned int hash() const { return 0; } - static bool equal(const PluginPackage &a, const PluginPackage &b) { return false ;} -#else unsigned hash() const; static bool equal(const PluginPackage& a, const PluginPackage& b); -#endif bool load(); void unload(); diff --git a/Source/WebCore/rendering/RenderBox.cpp b/Source/WebCore/rendering/RenderBox.cpp index 03b81ac9a7f..355a4f9580f 100644 --- a/Source/WebCore/rendering/RenderBox.cpp +++ b/Source/WebCore/rendering/RenderBox.cpp @@ -2680,6 +2680,17 @@ LayoutUnit RenderBox::computePercentageLogicalHeight(const Length& height) const LayoutUnit contentBoxHeight = cb->constrainContentBoxLogicalHeightByMinMax(contentBoxHeightWithScrollbar - cb->scrollbarLogicalHeight()); availableHeight = max(0, contentBoxHeight); } + } else if (cbstyle->logicalHeight().isViewportPercentage()) { + LayoutUnit heightWithScrollbar = valueForLength(cbstyle->logicalHeight(), 0, view()); + if (heightWithScrollbar != -1) { + LayoutUnit contentBoxHeightWithScrollbar = cb->adjustContentBoxLogicalHeightForBoxSizing(heightWithScrollbar); + // We need to adjust for min/max height because this method does + // not handle the min/max of the current block, its caller does. + // So the return value from the recursive call will not have been + // adjusted yet. + LayoutUnit contentBoxHeight = cb->constrainContentBoxLogicalHeightByMinMax(contentBoxHeightWithScrollbar - cb->scrollbarLogicalHeight()); + availableHeight = std::max(0, contentBoxHeight); + } } else if (isOutOfFlowPositionedWithSpecifiedHeight) { // Don't allow this to affect the block' height() member variable, since this // can get called while the block is still laying out its kids. diff --git a/Source/WebCore/rendering/style/SVGRenderStyle.cpp b/Source/WebCore/rendering/style/SVGRenderStyle.cpp index cbd16cd422d..aca245aef3a 100644 --- a/Source/WebCore/rendering/style/SVGRenderStyle.cpp +++ b/Source/WebCore/rendering/style/SVGRenderStyle.cpp @@ -183,7 +183,10 @@ StyleDifference SVGRenderStyle::diff(const SVGRenderStyle* other) const || stroke->paintUri != other->stroke->paintUri || stroke->miterLimit != other->stroke->miterLimit || stroke->dashArray != other->stroke->dashArray - || stroke->dashOffset != other->stroke->dashOffset) + || stroke->dashOffset != other->stroke->dashOffset + || stroke->visitedLinkPaintColor != other->stroke->visitedLinkPaintColor + || stroke->visitedLinkPaintUri != other->stroke->visitedLinkPaintUri + || stroke->visitedLinkPaintType != other->stroke->visitedLinkPaintType) return StyleDifferenceLayout; // Only the stroke-opacity case remains, where we only need a repaint. diff --git a/Source/WebCore/svg/SVGPathElement.cpp b/Source/WebCore/svg/SVGPathElement.cpp index 3324d0b5db8..c34c476f483 100644 --- a/Source/WebCore/svg/SVGPathElement.cpp +++ b/Source/WebCore/svg/SVGPathElement.cpp @@ -310,10 +310,15 @@ void SVGPathElement::removedFrom(ContainerNode* rootParent) SVGPathByteStream* SVGPathElement::pathByteStream() const { - SVGAnimatedProperty* property = SVGAnimatedProperty::lookupWrapper(this, dPropertyInfo()); + RefPtr property = SVGAnimatedProperty::lookupWrapper(this, dPropertyInfo()); if (!property || !property->isAnimating()) return m_pathByteStream.get(); - return static_cast(property)->animatedPathByteStream(); + + SVGPathByteStream* animatedPathByteStream = static_cast(property.get())->animatedPathByteStream(); + if (!animatedPathByteStream) + return m_pathByteStream.get(); + + return animatedPathByteStream; } PassRefPtr SVGPathElement::lookupOrCreateDWrapper(SVGElement* contextElement) @@ -321,16 +326,25 @@ PassRefPtr SVGPathElement::lookupOrCreateDWrapper(SVGElemen ASSERT(contextElement); SVGPathElement* ownerType = toSVGPathElement(contextElement); - if (SVGAnimatedProperty* property = SVGAnimatedProperty::lookupWrapper(ownerType, dPropertyInfo())) + if (RefPtr property = SVGAnimatedProperty::lookupWrapper(ownerType, dPropertyInfo())) return property; - // Build initial SVGPathSegList. - buildSVGPathSegListFromByteStream(ownerType->m_pathByteStream.get(), ownerType, ownerType->m_pathSegList.value, UnalteredParsing); + if (ownerType->m_pathSegList.value.isEmpty()) + buildSVGPathSegListFromByteStream(ownerType->m_pathByteStream.get(), ownerType, ownerType->m_pathSegList.value, UnalteredParsing); return SVGAnimatedProperty::lookupOrCreateWrapper (ownerType, dPropertyInfo(), ownerType->m_pathSegList.value); } +void SVGPathElement::animatedPropertyWillBeDeleted() +{ + // m_pathSegList.shouldSynchronize is set to true when the 'd' wrapper for m_pathSegList + // is created and cached. We need to reset it back to false when this wrapper is deleted + // so we can be sure if shouldSynchronize is true, SVGAnimatedProperty::lookupWrapper() + // will return a valid cached 'd' wrapper for the m_pathSegList. + m_pathSegList.shouldSynchronize = false; +} + void SVGPathElement::synchronizeD(SVGElement* contextElement) { ASSERT(contextElement); @@ -340,26 +354,26 @@ void SVGPathElement::synchronizeD(SVGElement* contextElement) ownerType->m_pathSegList.synchronize(ownerType, dPropertyInfo()->attributeName, ownerType->m_pathSegList.value.valueAsString()); } -SVGPathSegListPropertyTearOff* SVGPathElement::pathSegList() +RefPtr SVGPathElement::pathSegList() { m_pathSegList.shouldSynchronize = true; - return static_cast(static_pointer_cast(lookupOrCreateDWrapper(this))->baseVal()); + return static_cast(static_pointer_cast(lookupOrCreateDWrapper(this))->baseVal().get()); } -SVGPathSegListPropertyTearOff* SVGPathElement::normalizedPathSegList() +RefPtr SVGPathElement::normalizedPathSegList() { // FIXME: https://bugs.webkit.org/show_bug.cgi?id=15412 - Implement normalized path segment lists! return 0; } -SVGPathSegListPropertyTearOff* SVGPathElement::animatedPathSegList() +RefPtr SVGPathElement::animatedPathSegList() { m_pathSegList.shouldSynchronize = true; m_isAnimValObserved = true; - return static_cast(static_pointer_cast(lookupOrCreateDWrapper(this))->animVal()); + return static_cast(static_pointer_cast(lookupOrCreateDWrapper(this))->animVal().get()); } -SVGPathSegListPropertyTearOff* SVGPathElement::animatedNormalizedPathSegList() +RefPtr SVGPathElement::animatedNormalizedPathSegList() { // FIXME: https://bugs.webkit.org/show_bug.cgi?id=15412 - Implement normalized path segment lists! return 0; diff --git a/Source/WebCore/svg/SVGPathElement.h b/Source/WebCore/svg/SVGPathElement.h index c81ead19834..e9db8a56e62 100644 --- a/Source/WebCore/svg/SVGPathElement.h +++ b/Source/WebCore/svg/SVGPathElement.h @@ -83,10 +83,10 @@ class SVGPathElement FINAL : public SVGGraphicsElement, PassRefPtr createSVGPathSegCurvetoQuadraticSmoothRel(float x, float y, SVGPathSegRole role = PathSegUndefinedRole); // Used in the bindings only. - SVGPathSegListPropertyTearOff* pathSegList(); - SVGPathSegListPropertyTearOff* animatedPathSegList(); - SVGPathSegListPropertyTearOff* normalizedPathSegList(); - SVGPathSegListPropertyTearOff* animatedNormalizedPathSegList(); + RefPtr pathSegList(); + RefPtr animatedPathSegList(); + RefPtr normalizedPathSegList(); + RefPtr animatedNormalizedPathSegList(); SVGPathByteStream* pathByteStream() const; @@ -98,7 +98,9 @@ class SVGPathElement FINAL : public SVGGraphicsElement, bool isAnimValObserved() const { return m_isAnimValObserved; } -private: + void animatedPropertyWillBeDeleted(); + + private: SVGPathElement(const QualifiedName&, Document*); virtual bool isValid() const { return SVGTests::isValid(); } diff --git a/Source/WebCore/svg/SVGPathSegWithContext.h b/Source/WebCore/svg/SVGPathSegWithContext.h index 70106722745..4ba1447bff9 100644 --- a/Source/WebCore/svg/SVGPathSegWithContext.h +++ b/Source/WebCore/svg/SVGPathSegWithContext.h @@ -33,7 +33,7 @@ class SVGPathSegWithContext : public SVGPathSeg { { } - SVGAnimatedProperty* animatedProperty() const + RefPtr animatedProperty() const { switch (m_role) { case PathSegUndefinedRole: diff --git a/Source/WebCore/svg/SVGPolyElement.cpp b/Source/WebCore/svg/SVGPolyElement.cpp index fd5c652f169..977234d5e0f 100644 --- a/Source/WebCore/svg/SVGPolyElement.cpp +++ b/Source/WebCore/svg/SVGPolyElement.cpp @@ -88,8 +88,8 @@ void SVGPolyElement::parseAttribute(const QualifiedName& name, const AtomicStrin if (!pointsListFromSVGData(newList, value)) document()->accessSVGExtensions()->reportError("Problem parsing points=\"" + value + "\""); - if (SVGAnimatedProperty* wrapper = SVGAnimatedProperty::lookupWrapper(this, pointsPropertyInfo())) - static_cast(wrapper)->detachListWrappers(newList.size()); + if (RefPtr wrapper = SVGAnimatedProperty::lookupWrapper(this, pointsPropertyInfo())) + static_pointer_cast(wrapper)->detachListWrappers(newList.size()); m_points.value = newList; return; @@ -147,16 +147,16 @@ PassRefPtr SVGPolyElement::lookupOrCreatePointsWrapper(SVGE (ownerType, pointsPropertyInfo(), ownerType->m_points.value); } -SVGListPropertyTearOff* SVGPolyElement::points() +RefPtr > SVGPolyElement::points() { m_points.shouldSynchronize = true; - return static_cast*>(static_pointer_cast(lookupOrCreatePointsWrapper(this))->baseVal()); + return static_cast*>(static_pointer_cast(lookupOrCreatePointsWrapper(this))->baseVal().get()); } -SVGListPropertyTearOff* SVGPolyElement::animatedPoints() +RefPtr > SVGPolyElement::animatedPoints() { m_points.shouldSynchronize = true; - return static_cast*>(static_pointer_cast(lookupOrCreatePointsWrapper(this))->animVal()); + return static_cast*>(static_pointer_cast(lookupOrCreatePointsWrapper(this))->animVal().get()); } } diff --git a/Source/WebCore/svg/SVGPolyElement.h b/Source/WebCore/svg/SVGPolyElement.h index bd0dd49aa5b..f399a427e2f 100644 --- a/Source/WebCore/svg/SVGPolyElement.h +++ b/Source/WebCore/svg/SVGPolyElement.h @@ -33,8 +33,8 @@ namespace WebCore { class SVGPolyElement : public SVGGraphicsElement , public SVGExternalResourcesRequired { public: - SVGListPropertyTearOff* points(); - SVGListPropertyTearOff* animatedPoints(); + RefPtr > points(); + RefPtr > animatedPoints(); SVGPointList& pointList() const { return m_points.value; } diff --git a/Source/WebCore/svg/SVGViewSpec.cpp b/Source/WebCore/svg/SVGViewSpec.cpp index 253c082fb01..5ac02dbdd6c 100644 --- a/Source/WebCore/svg/SVGViewSpec.cpp +++ b/Source/WebCore/svg/SVGViewSpec.cpp @@ -117,8 +117,8 @@ void SVGViewSpec::setTransformString(const String& transform) SVGTransformList newList; newList.parse(transform); - if (SVGAnimatedProperty* wrapper = SVGAnimatedProperty::lookupWrapper(m_contextElement, transformPropertyInfo())) - static_cast(wrapper)->detachListWrappers(newList.size()); + if (RefPtr wrapper = SVGAnimatedProperty::lookupWrapper(m_contextElement, transformPropertyInfo())) + static_pointer_cast(wrapper)->detachListWrappers(newList.size()); m_transform = newList; } @@ -148,12 +148,12 @@ SVGElement* SVGViewSpec::viewTarget() const return toSVGElement(element); } -SVGTransformListPropertyTearOff* SVGViewSpec::transform() +RefPtr SVGViewSpec::transform() { if (!m_contextElement) return 0; // Return the animVal here, as its readonly by default - which is exactly what we want here. - return static_cast(static_pointer_cast(lookupOrCreateTransformWrapper(this))->animVal()); + return static_cast(static_pointer_cast(lookupOrCreateTransformWrapper(this))->animVal().get()); } PassRefPtr SVGViewSpec::viewBoxAnimated() diff --git a/Source/WebCore/svg/SVGViewSpec.h b/Source/WebCore/svg/SVGViewSpec.h index f8634afd6ee..3887db7f50d 100644 --- a/Source/WebCore/svg/SVGViewSpec.h +++ b/Source/WebCore/svg/SVGViewSpec.h @@ -69,7 +69,7 @@ class SVGViewSpec : public RefCounted void resetContextElement() { m_contextElement = 0; } // Custom non-animated 'transform' property. - SVGTransformListPropertyTearOff* transform(); + RefPtr transform(); SVGTransformList transformBaseValue() const { return m_transform; } // Custom animated 'viewBox' property. diff --git a/Source/WebCore/svg/properties/SVGAnimatedListPropertyTearOff.h b/Source/WebCore/svg/properties/SVGAnimatedListPropertyTearOff.h index 65ee9e58dc2..136ba825376 100644 --- a/Source/WebCore/svg/properties/SVGAnimatedListPropertyTearOff.h +++ b/Source/WebCore/svg/properties/SVGAnimatedListPropertyTearOff.h @@ -40,35 +40,49 @@ class SVGAnimatedListPropertyTearOff : public SVGAnimatedProperty { typedef SVGListPropertyTearOff ListPropertyTearOff; typedef PropertyType ContentType; - virtual ListProperty* baseVal() + virtual PassRefPtr baseVal() { - if (!m_baseVal) - m_baseVal = ListPropertyTearOff::create(this, BaseValRole, m_values, m_wrappers); - return static_cast(m_baseVal.get()); + if (m_baseVal) + return m_baseVal; + + RefPtr property = ListPropertyTearOff::create(this, BaseValRole, m_values, m_wrappers).get(); + m_baseVal = property.get(); + return property.release(); + } + + virtual PassRefPtr animVal() + { + if (m_animVal) + return m_animVal; + + RefPtr property = ListPropertyTearOff::create(this, AnimValRole, m_values, m_wrappers).get(); + m_animVal = property.get(); + return property.release(); } - virtual ListProperty* animVal() + void propertyWillBeDeleted(const ListProperty& property) { - if (!m_animVal) - m_animVal = ListPropertyTearOff::create(this, AnimValRole, m_values, m_wrappers); - return static_cast(m_animVal.get()); + if (&property == m_baseVal) + m_baseVal = 0; + else if (&property == m_animVal) + m_animVal = 0; } virtual bool isAnimatedListTearOff() const { return true; } - int findItem(SVGProperty* property) const + int findItem(SVGProperty* property) { // This should ever be called for our baseVal, as animVal can't modify the list. // It's safe to cast to ListPropertyTearOff here as all classes inheriting from us supply their own removeItemFromList() method. typedef SVGPropertyTearOff::ListItemType> ListItemTearOff; - return static_cast(m_baseVal.get())->findItem(static_cast(property)); + return static_pointer_cast(baseVal())->findItem(static_cast(property)); } void removeItemFromList(size_t itemIndex, bool shouldSynchronizeWrappers) { // This should ever be called for our baseVal, as animVal can't modify the list. // It's safe to cast to ListPropertyTearOff here as all classes inheriting from us supply their own removeItemFromList() method. - static_cast(m_baseVal.get())->removeItemFromList(itemIndex, shouldSynchronizeWrappers); + static_pointer_cast(baseVal())->removeItemFromList(itemIndex, shouldSynchronizeWrappers); } void detachListWrappers(unsigned newListSize) @@ -79,8 +93,8 @@ class SVGAnimatedListPropertyTearOff : public SVGAnimatedProperty { PropertyType& currentAnimatedValue() { ASSERT(m_isAnimating); - ASSERT(m_animVal); - return static_cast(m_animVal.get())->values(); + ASSERT(m_animatingAnimVal); + return static_pointer_cast(m_animatingAnimVal)->values(); } const PropertyType& currentBaseValue() const @@ -91,6 +105,7 @@ class SVGAnimatedListPropertyTearOff : public SVGAnimatedProperty { void animationStarted(PropertyType* newAnimVal, bool shouldOwnValues = false) { ASSERT(!m_isAnimating); + ASSERT(!m_animatingAnimVal); ASSERT(newAnimVal); ASSERT(m_values.size() == m_wrappers.size()); ASSERT(m_animatedWrappers.isEmpty()); @@ -99,49 +114,49 @@ class SVGAnimatedListPropertyTearOff : public SVGAnimatedProperty { if (!newAnimVal->isEmpty()) m_animatedWrappers.fill(0, newAnimVal->size()); - ListProperty* animVal = static_cast(this->animVal()); - animVal->setValuesAndWrappers(newAnimVal, &m_animatedWrappers, shouldOwnValues); - ASSERT(animVal->values().size() == animVal->wrappers().size()); - ASSERT(animVal->wrappers().size() == m_animatedWrappers.size()); + m_animatingAnimVal = animVal(); + m_animatingAnimVal->setValuesAndWrappers(newAnimVal, &m_animatedWrappers, shouldOwnValues); + ASSERT(m_animatingAnimVal->values().size() == m_animatingAnimVal->wrappers().size()); + ASSERT(m_animatingAnimVal->wrappers().size() == m_animatedWrappers.size()); m_isAnimating = true; } void animationEnded() { ASSERT(m_isAnimating); - ASSERT(m_animVal); + ASSERT(m_animatingAnimVal); ASSERT(m_values.size() == m_wrappers.size()); - ListProperty* animVal = static_cast(m_animVal.get()); - ASSERT(animVal->values().size() == animVal->wrappers().size()); - ASSERT(animVal->wrappers().size() == m_animatedWrappers.size()); + ASSERT(m_animatingAnimVal->values().size() == m_animatingAnimVal->wrappers().size()); + ASSERT(m_animatingAnimVal->wrappers().size() == m_animatedWrappers.size()); - animVal->setValuesAndWrappers(&m_values, &m_wrappers, false); - ASSERT(animVal->values().size() == animVal->wrappers().size()); - ASSERT(animVal->wrappers().size() == m_wrappers.size()); + m_animatingAnimVal->setValuesAndWrappers(&m_values, &m_wrappers, false); + ASSERT(m_animatingAnimVal->values().size() == m_animatingAnimVal->wrappers().size()); + ASSERT(m_animatingAnimVal->wrappers().size() == m_wrappers.size()); m_animatedWrappers.clear(); + m_animatingAnimVal = 0; m_isAnimating = false; } void synchronizeWrappersIfNeeded() { + ASSERT(m_isAnimating); + ASSERT(m_animatingAnimVal); + // Eventually the wrapper list needs synchronization because any SVGAnimateLengthList::calculateAnimatedValue() call may // mutate the length of our values() list, and thus the wrapper() cache needs synchronization, to have the same size. // Also existing wrappers which point directly at elements in the existing SVGLengthList have to be detached (so a copy // of them is created, so existing animVal variables in JS are kept-alive). If we'd detach them later the underlying // SVGLengthList was already mutated, and our list item wrapper tear offs would point nowhere. Assertions would fire. - ListProperty* animVal = static_cast(m_animVal.get()); - animVal->detachListWrappers(animVal->values().size()); + m_animatingAnimVal->detachListWrappers(m_animatingAnimVal->values().size()); - ASSERT(animVal->values().size() == animVal->wrappers().size()); - ASSERT(animVal->wrappers().size() == m_animatedWrappers.size()); + ASSERT(m_animatingAnimVal->values().size() == m_animatingAnimVal->wrappers().size()); + ASSERT(m_animatingAnimVal->wrappers().size() == m_animatedWrappers.size()); } void animValWillChange() { - ASSERT(m_isAnimating); - ASSERT(m_animVal); ASSERT(m_values.size() == m_wrappers.size()); synchronizeWrappersIfNeeded(); } @@ -164,6 +179,8 @@ class SVGAnimatedListPropertyTearOff : public SVGAnimatedProperty { SVGAnimatedListPropertyTearOff(SVGElement* contextElement, const QualifiedName& attributeName, AnimatedPropertyType animatedPropertyType, PropertyType& values) : SVGAnimatedProperty(contextElement, attributeName, animatedPropertyType) , m_values(values) + , m_baseVal(0) + , m_animVal(0) { if (!values.isEmpty()) m_wrappers.fill(0, values.size()); @@ -174,8 +191,13 @@ class SVGAnimatedListPropertyTearOff : public SVGAnimatedProperty { ListWrapperCache m_wrappers; ListWrapperCache m_animatedWrappers; - RefPtr m_baseVal; - RefPtr m_animVal; + // Cache the raw pointer but return a RefPtr<>. This will break the cyclic reference + // between SVGListPropertyTearOff and SVGAnimatedListPropertyTearOff once the property + // pointer is not needed. + ListProperty* m_baseVal; + ListProperty* m_animVal; + + RefPtr m_animatingAnimVal; }; } diff --git a/Source/WebCore/svg/properties/SVGAnimatedPathSegListPropertyTearOff.h b/Source/WebCore/svg/properties/SVGAnimatedPathSegListPropertyTearOff.h index eb6dd19e335..dd5396affb5 100644 --- a/Source/WebCore/svg/properties/SVGAnimatedPathSegListPropertyTearOff.h +++ b/Source/WebCore/svg/properties/SVGAnimatedPathSegListPropertyTearOff.h @@ -32,32 +32,36 @@ namespace WebCore { class SVGAnimatedPathSegListPropertyTearOff : public SVGAnimatedListPropertyTearOff { public: - virtual SVGListProperty* baseVal() + virtual PassRefPtr baseVal() OVERRIDE { - if (!m_baseVal) - m_baseVal = SVGPathSegListPropertyTearOff::create(this, BaseValRole, PathSegUnalteredRole, m_values, m_wrappers); - return static_cast*>(m_baseVal.get()); + if (m_baseVal) + return m_baseVal; + + RefPtr property = SVGPathSegListPropertyTearOff::create(this, BaseValRole, PathSegUnalteredRole, m_values, m_wrappers); + m_baseVal = property.get(); + return property.release(); } - virtual SVGListProperty* animVal() + virtual PassRefPtr animVal() OVERRIDE { - if (!m_animVal) - m_animVal = SVGPathSegListPropertyTearOff::create(this, AnimValRole, PathSegUnalteredRole, m_values, m_wrappers); - return static_cast*>(m_animVal.get()); + if (m_animVal) + return m_animVal; + + RefPtr property = SVGPathSegListPropertyTearOff::create(this, AnimValRole, PathSegUnalteredRole, m_values, m_wrappers); + m_animVal = property.get(); + return property.release(); } - int findItem(const RefPtr& segment) const + int findItem(const RefPtr& segment) { // This should ever be called for our baseVal, as animVal can't modify the list. - ASSERT(m_baseVal); - return static_cast(m_baseVal.get())->findItem(segment); + return static_cast(baseVal().get())->findItem(segment); } void removeItemFromList(size_t itemIndex, bool shouldSynchronizeWrappers) { // This should ever be called for our baseVal, as animVal can't modify the list. - ASSERT(m_baseVal); - static_cast(m_baseVal.get())->removeItemFromList(itemIndex, shouldSynchronizeWrappers); + static_cast(baseVal().get())->removeItemFromList(itemIndex, shouldSynchronizeWrappers); } static PassRefPtr create(SVGElement* contextElement, const QualifiedName& attributeName, AnimatedPropertyType animatedPropertyType, SVGPathSegList& values) @@ -109,6 +113,13 @@ class SVGAnimatedPathSegListPropertyTearOff : public SVGAnimatedListPropertyTear : SVGAnimatedListPropertyTearOff(contextElement, attributeName, animatedPropertyType, values) , m_animatedPathByteStream(0) { + ASSERT(contextElement); + ASSERT(toSVGPathElement(contextElement)); + } + + virtual ~SVGAnimatedPathSegListPropertyTearOff() + { + static_cast(contextElement())->animatedPropertyWillBeDeleted(); } SVGPathByteStream* m_animatedPathByteStream; diff --git a/Source/WebCore/svg/properties/SVGAnimatedProperty.h b/Source/WebCore/svg/properties/SVGAnimatedProperty.h index 93f076b2bec..d40a50434c3 100644 --- a/Source/WebCore/svg/properties/SVGAnimatedProperty.h +++ b/Source/WebCore/svg/properties/SVGAnimatedProperty.h @@ -53,18 +53,22 @@ class SVGAnimatedProperty : public RefCounted { { ASSERT(info); SVGAnimatedPropertyDescription key(element, info->propertyIdentifier); - RefPtr wrapper = animatedPropertyCache()->get(key); - if (!wrapper) { - wrapper = TearOffType::create(element, info->attributeName, info->animatedPropertyType, property); - if (info->animatedPropertyState == PropertyIsReadOnly) - wrapper->setIsReadOnly(); - animatedPropertyCache()->set(key, wrapper.get()); - } + Cache::AddResult result = animatedPropertyCache()->add(key, 0); + if (!result.isNewEntry) + return static_cast(result.iterator->value); + + RefPtr wrapper = TearOffType::create(element, info->attributeName, info->animatedPropertyType, property); + if (info->animatedPropertyState == PropertyIsReadOnly) + wrapper->setIsReadOnly(); + + // Cache the raw pointer but return a RefPtr<>. This will break the cyclic reference + // between SVGAnimatedProperty and SVGElement once the property pointer is not needed. + result.iterator->value = wrapper.get(); return static_pointer_cast(wrapper); } template - static TearOffType* lookupWrapper(OwnerType* element, const SVGPropertyInfo* info) + static PassRefPtr lookupWrapper(OwnerType* element, const SVGPropertyInfo* info) { ASSERT(info); SVGAnimatedPropertyDescription key(element, info->propertyIdentifier); @@ -72,7 +76,7 @@ class SVGAnimatedProperty : public RefCounted { } template - static TearOffType* lookupWrapper(const OwnerType* element, const SVGPropertyInfo* info) + static PassRefPtr lookupWrapper(const OwnerType* element, const SVGPropertyInfo* info) { return lookupWrapper(const_cast(element), info); } diff --git a/Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h b/Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h index 1ddbc5c6c7e..e31015e52e6 100644 --- a/Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h +++ b/Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h @@ -118,7 +118,7 @@ public: \ static const SVGPropertyInfo* LowerProperty##PropertyInfo(); \ PropertyType& LowerProperty() const \ { \ - if (TearOffType* wrapper = SVGAnimatedProperty::lookupWrapper(this, LowerProperty##PropertyInfo())) { \ + if (RefPtr wrapper = SVGAnimatedProperty::lookupWrapper(this, LowerProperty##PropertyInfo())) { \ if (wrapper->isAnimating()) \ return wrapper->currentAnimatedValue(); \ } \ @@ -179,7 +179,7 @@ private: \ DECLARE_ANIMATED_PROPERTY(TearOffType, PropertyType, UpperProperty, LowerProperty) \ void detachAnimated##UpperProperty##ListWrappers(unsigned newListSize) \ { \ - if (TearOffType* wrapper = SVGAnimatedProperty::lookupWrapper(this, LowerProperty##PropertyInfo())) \ + if (RefPtr wrapper = SVGAnimatedProperty::lookupWrapper(this, LowerProperty##PropertyInfo())) \ wrapper->detachListWrappers(newListSize); \ } diff --git a/Source/WebCore/svg/properties/SVGAnimatedTransformListPropertyTearOff.h b/Source/WebCore/svg/properties/SVGAnimatedTransformListPropertyTearOff.h index 6f643e87ce6..2953f2ff612 100644 --- a/Source/WebCore/svg/properties/SVGAnimatedTransformListPropertyTearOff.h +++ b/Source/WebCore/svg/properties/SVGAnimatedTransformListPropertyTearOff.h @@ -29,18 +29,24 @@ namespace WebCore { class SVGAnimatedTransformListPropertyTearOff : public SVGAnimatedListPropertyTearOff { public: - virtual SVGListPropertyTearOff* baseVal() + virtual PassRefPtr baseVal() OVERRIDE { - if (!m_baseVal) - m_baseVal = SVGTransformListPropertyTearOff::create(this, BaseValRole, m_values, m_wrappers); - return static_cast*>(m_baseVal.get()); + if (m_baseVal) + return m_baseVal; + + RefPtr property = SVGTransformListPropertyTearOff::create(this, BaseValRole, m_values, m_wrappers); + m_baseVal = property.get(); + return property.release(); } - virtual SVGListPropertyTearOff* animVal() + virtual PassRefPtr animVal() OVERRIDE { - if (!m_animVal) - m_animVal = SVGTransformListPropertyTearOff::create(this, AnimValRole, m_values, m_wrappers); - return static_cast*>(m_animVal.get()); + if (m_animVal) + return m_animVal; + + RefPtr property = SVGTransformListPropertyTearOff::create(this, AnimValRole, m_values, m_wrappers); + m_animVal = property.get(); + return property.release(); } static PassRefPtr create(SVGElement* contextElement, const QualifiedName& attributeName, AnimatedPropertyType animatedPropertyType, SVGTransformList& values) diff --git a/Source/WebCore/svg/properties/SVGListPropertyTearOff.h b/Source/WebCore/svg/properties/SVGListPropertyTearOff.h index 3c655246794..326a89a7431 100644 --- a/Source/WebCore/svg/properties/SVGListPropertyTearOff.h +++ b/Source/WebCore/svg/properties/SVGListPropertyTearOff.h @@ -121,6 +121,12 @@ class SVGListPropertyTearOff : public SVGListProperty { { } + virtual ~SVGListPropertyTearOff() + { + if (m_animatedProperty) + m_animatedProperty->propertyWillBeDeleted(*this); + } + virtual bool isReadOnly() const { if (m_role == AnimValRole) diff --git a/Source/WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp b/Source/WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp index 573d453a4a7..51c48b4c3e8 100644 --- a/Source/WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp +++ b/Source/WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp @@ -95,7 +95,7 @@ SVGPathElement* SVGPathSegListPropertyTearOff::contextElement() const bool SVGPathSegListPropertyTearOff::processIncomingListItemValue(const ListItemType& newItem, unsigned* indexToModify) { SVGPathSegWithContext* newItemWithContext = static_cast(newItem.get()); - SVGAnimatedProperty* animatedPropertyOfItem = newItemWithContext->animatedProperty(); + RefPtr animatedPropertyOfItem = newItemWithContext->animatedProperty(); // Alter the role, after calling animatedProperty(), as that may influence the returned animated property. newItemWithContext->setContextAndRole(contextElement(), m_pathSegRole); @@ -111,7 +111,7 @@ bool SVGPathSegListPropertyTearOff::processIncomingListItemValue(const ListItemT // Spec: If newItem is already in a list, it is removed from its previous list before it is inserted into this list. // 'newItem' is already living in another list. If it's not our list, synchronize the other lists wrappers after the removal. bool livesInOtherList = animatedPropertyOfItem != m_animatedProperty; - SVGAnimatedPathSegListPropertyTearOff* propertyTearOff = static_cast(animatedPropertyOfItem); + RefPtr propertyTearOff = static_pointer_cast(animatedPropertyOfItem); int indexToRemove = propertyTearOff->findItem(newItem.get()); ASSERT(indexToRemove != -1); diff --git a/Source/WebCore/svg/properties/SVGPathSegListPropertyTearOff.h b/Source/WebCore/svg/properties/SVGPathSegListPropertyTearOff.h index ee704d68107..4c1a30c4bed 100644 --- a/Source/WebCore/svg/properties/SVGPathSegListPropertyTearOff.h +++ b/Source/WebCore/svg/properties/SVGPathSegListPropertyTearOff.h @@ -111,6 +111,12 @@ class SVGPathSegListPropertyTearOff : public SVGListProperty { return Base::appendItemValues(newItem, ec); } + virtual ~SVGPathSegListPropertyTearOff() + { + if (m_animatedProperty) + m_animatedProperty->propertyWillBeDeleted(*this); + } + private: SVGPathSegListPropertyTearOff(AnimatedListPropertyTearOff* animatedProperty, SVGPropertyRole role, SVGPathSegRole pathSegRole, SVGPathSegList& values, ListWrapperCache& wrappers) : SVGListProperty(role, values, &wrappers) diff --git a/Source/WebCore/workers/WorkerGlobalScope.cpp b/Source/WebCore/workers/WorkerGlobalScope.cpp index 350e82e19a0..1977c4460ba 100644 --- a/Source/WebCore/workers/WorkerGlobalScope.cpp +++ b/Source/WebCore/workers/WorkerGlobalScope.cpp @@ -1,385 +1,385 @@ -/* - * Copyright (C) 2008 Apple Inc. All Rights Reserved. - * Copyright (C) 2009, 2011 Google Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -#include "config.h" - -#if ENABLE(WORKERS) - -#include "WorkerGlobalScope.h" - -#include "ActiveDOMObject.h" -#include "ContentSecurityPolicy.h" -#include "DOMTimer.h" -#include "DOMURL.h" -#include "DOMWindow.h" -#include "ErrorEvent.h" -#include "Event.h" -#include "EventException.h" -#include "InspectorConsoleInstrumentation.h" -#include "KURL.h" -#include "MessagePort.h" -#include "NotImplemented.h" -#include "ScheduledAction.h" -#include "ScriptCallStack.h" -#include "ScriptSourceCode.h" -#include "ScriptValue.h" -#include "SecurityOrigin.h" -#include "WorkerInspectorController.h" -#include "WorkerLocation.h" -#include "WorkerNavigator.h" -#include "WorkerObjectProxy.h" -#include "WorkerScriptLoader.h" -#include "WorkerThread.h" -#include "WorkerThreadableLoader.h" -#include "XMLHttpRequestException.h" -#include - -#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS) -#include "NotificationCenter.h" -#endif - -#include "ExceptionCode.h" - -namespace WebCore { - -class CloseWorkerGlobalScopeTask : public ScriptExecutionContext::Task { -public: - static PassOwnPtr create() - { - return adoptPtr(new CloseWorkerGlobalScopeTask); - } - - virtual void performTask(ScriptExecutionContext *context) - { - ASSERT_WITH_SECURITY_IMPLICATION(context->isWorkerGlobalScope()); - WorkerGlobalScope* workerGlobalScope = static_cast(context); - // Notify parent that this context is closed. Parent is responsible for calling WorkerThread::stop(). - workerGlobalScope->thread()->workerReportingProxy().workerGlobalScopeClosed(); - } - - virtual bool isCleanupTask() const { return true; } -}; - -WorkerGlobalScope::WorkerGlobalScope(const KURL& url, const String& userAgent, PassOwnPtr settings, WorkerThread* thread, PassRefPtr topOrigin) - : m_url(url) - , m_userAgent(userAgent) - , m_groupSettings(settings) - , m_script(adoptPtr(new WorkerScriptController(this))) - , m_thread(thread) -#if ENABLE(INSPECTOR) - , m_workerInspectorController(adoptPtr(new WorkerInspectorController(this))) -#endif - , m_closing(false) - , m_eventQueue(WorkerEventQueue::create(this)) - , m_topOrigin(topOrigin) -{ - setSecurityOrigin(SecurityOrigin::create(url)); -} - -WorkerGlobalScope::~WorkerGlobalScope() -{ - ASSERT(currentThread() == thread()->threadID()); - - // Make sure we have no observers. - notifyObserversOfStop(); - - // Notify proxy that we are going away. This can free the WorkerThread object, so do not access it after this. - thread()->workerReportingProxy().workerGlobalScopeDestroyed(); -} - -void WorkerGlobalScope::applyContentSecurityPolicyFromString(const String& policy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType) -{ - setContentSecurityPolicy(ContentSecurityPolicy::create(this)); - contentSecurityPolicy()->didReceiveHeader(policy, contentSecurityPolicyType); -} - -ScriptExecutionContext* WorkerGlobalScope::scriptExecutionContext() const -{ - return const_cast(this); -} - -const KURL& WorkerGlobalScope::virtualURL() const -{ - return m_url; -} - -KURL WorkerGlobalScope::virtualCompleteURL(const String& url) const -{ - return completeURL(url); -} - -KURL WorkerGlobalScope::completeURL(const String& url) const -{ - // Always return a null URL when passed a null string. - // FIXME: Should we change the KURL constructor to have this behavior? - if (url.isNull()) - return KURL(); - // Always use UTF-8 in Workers. - return KURL(m_url, url); -} - -String WorkerGlobalScope::userAgent(const KURL&) const -{ - return m_userAgent; -} - -void WorkerGlobalScope::disableEval(const String& errorMessage) -{ - m_script->disableEval(errorMessage); -} - -WorkerLocation* WorkerGlobalScope::location() const -{ - if (!m_location) - m_location = WorkerLocation::create(m_url); - return m_location.get(); -} - -void WorkerGlobalScope::close() -{ - if (m_closing) - return; - - // Let current script run to completion but prevent future script evaluations. - // After m_closing is set, all the tasks in the queue continue to be fetched but only - // tasks with isCleanupTask()==true will be executed. - m_closing = true; - postTask(CloseWorkerGlobalScopeTask::create()); -} - -WorkerNavigator* WorkerGlobalScope::navigator() const -{ - if (!m_navigator) - m_navigator = WorkerNavigator::create(m_userAgent); - return m_navigator.get(); -} - -bool WorkerGlobalScope::hasPendingActivity() const -{ - ActiveDOMObjectsSet::const_iterator activeObjectsEnd = activeDOMObjects().end(); - for (ActiveDOMObjectsSet::const_iterator iter = activeDOMObjects().begin(); iter != activeObjectsEnd; ++iter) { - if ((*iter)->hasPendingActivity()) - return true; - } - - HashSet::const_iterator messagePortsEnd = messagePorts().end(); - for (HashSet::const_iterator iter = messagePorts().begin(); iter != messagePortsEnd; ++iter) { - if ((*iter)->hasPendingActivity()) - return true; - } - - return false; -} - -void WorkerGlobalScope::postTask(PassOwnPtr task) -{ - thread()->runLoop().postTask(task); -} - -int WorkerGlobalScope::setTimeout(PassOwnPtr action, int timeout) -{ - return DOMTimer::install(scriptExecutionContext(), action, timeout, true); -} - -void WorkerGlobalScope::clearTimeout(int timeoutId) -{ - DOMTimer::removeById(scriptExecutionContext(), timeoutId); -} - -#if ENABLE(INSPECTOR) -void WorkerGlobalScope::clearInspector() -{ - m_workerInspectorController.clear(); -} -#endif - -int WorkerGlobalScope::setInterval(PassOwnPtr action, int timeout) -{ - return DOMTimer::install(scriptExecutionContext(), action, timeout, false); -} - -void WorkerGlobalScope::clearInterval(int timeoutId) -{ - DOMTimer::removeById(scriptExecutionContext(), timeoutId); -} - -void WorkerGlobalScope::importScripts(const Vector& urls, ExceptionCode& ec) -{ - ASSERT(contentSecurityPolicy()); - ec = 0; - Vector::const_iterator urlsEnd = urls.end(); - Vector completedURLs; - for (Vector::const_iterator it = urls.begin(); it != urlsEnd; ++it) { - const KURL& url = scriptExecutionContext()->completeURL(*it); - if (!url.isValid()) { - ec = SYNTAX_ERR; - return; - } - completedURLs.append(url); - } - Vector::const_iterator end = completedURLs.end(); - - for (Vector::const_iterator it = completedURLs.begin(); it != end; ++it) { - RefPtr scriptLoader(WorkerScriptLoader::create()); -#if PLATFORM(BLACKBERRY) - scriptLoader->setTargetType(ResourceRequest::TargetIsScript); -#endif - scriptLoader->loadSynchronously(scriptExecutionContext(), *it, AllowCrossOriginRequests); - - // If the fetching attempt failed, throw a NETWORK_ERR exception and abort all these steps. - if (scriptLoader->failed()) { - ec = XMLHttpRequestException::NETWORK_ERR; - return; - } - - InspectorInstrumentation::scriptImported(scriptExecutionContext(), scriptLoader->identifier(), scriptLoader->script()); - - ScriptValue exception; - m_script->evaluate(ScriptSourceCode(scriptLoader->script(), scriptLoader->responseURL()), &exception); - if (!exception.hasNoValue()) { - m_script->setException(exception); - return; - } - } -} - -EventTarget* WorkerGlobalScope::errorEventTarget() -{ - return this; -} - -void WorkerGlobalScope::logExceptionToConsole(const String& errorMessage, const String& sourceURL, int lineNumber, int columnNumber, PassRefPtr) -{ - thread()->workerReportingProxy().postExceptionToWorkerObject(errorMessage, lineNumber, columnNumber, sourceURL); -} - -void WorkerGlobalScope::addConsoleMessage(MessageSource source, MessageLevel level, const String& message, unsigned long requestIdentifier) -{ - if (!isContextThread()) { - postTask(AddConsoleMessageTask::create(source, level, message)); - return; - } - - thread()->workerReportingProxy().postConsoleMessageToWorkerObject(source, level, message, 0, 0, String()); - addMessageToWorkerConsole(source, level, message, String(), 0, 0, 0, 0, requestIdentifier); -} - -void WorkerGlobalScope::addMessage(MessageSource source, MessageLevel level, const String& message, const String& sourceURL, unsigned lineNumber, unsigned columnNumber, PassRefPtr callStack, ScriptState* state, unsigned long requestIdentifier) -{ - if (!isContextThread()) { - postTask(AddConsoleMessageTask::create(source, level, message)); - return; - } - - thread()->workerReportingProxy().postConsoleMessageToWorkerObject(source, level, message, lineNumber, columnNumber, sourceURL); - addMessageToWorkerConsole(source, level, message, sourceURL, lineNumber, columnNumber, callStack.get(), state, requestIdentifier); -} - -void WorkerGlobalScope::addMessageToWorkerConsole(MessageSource source, MessageLevel level, const String& message, const String& sourceURL, unsigned lineNumber, unsigned columnNumber, PassRefPtr callStack, ScriptState* state, unsigned long requestIdentifier) -{ - ASSERT(isContextThread()); - if (callStack) - InspectorInstrumentation::addMessageToConsole(this, source, LogMessageType, level, message, callStack.get(), requestIdentifier); - else - InspectorInstrumentation::addMessageToConsole(this, source, LogMessageType, level, message, sourceURL, lineNumber, columnNumber, state, requestIdentifier); -} - -bool WorkerGlobalScope::isContextThread() const -{ - return currentThread() == thread()->threadID(); -} - -bool WorkerGlobalScope::isJSExecutionForbidden() const -{ - return m_script->isExecutionForbidden(); -} - -EventTargetData* WorkerGlobalScope::eventTargetData() -{ - return &m_eventTargetData; -} - -EventTargetData* WorkerGlobalScope::ensureEventTargetData() -{ - return &m_eventTargetData; -} - -WorkerGlobalScope::Observer::Observer(WorkerGlobalScope* context) - : m_context(context) -{ - ASSERT(m_context && m_context->isContextThread()); - m_context->registerObserver(this); -} - -WorkerGlobalScope::Observer::~Observer() -{ - if (!m_context) - return; - ASSERT(m_context->isContextThread()); - m_context->unregisterObserver(this); -} - -void WorkerGlobalScope::Observer::stopObserving() -{ - if (!m_context) - return; - ASSERT(m_context->isContextThread()); - m_context->unregisterObserver(this); - m_context = 0; -} - -void WorkerGlobalScope::registerObserver(Observer* observer) -{ - ASSERT(observer); - m_workerObservers.add(observer); -} - -void WorkerGlobalScope::unregisterObserver(Observer* observer) -{ - ASSERT(observer); - m_workerObservers.remove(observer); -} - -void WorkerGlobalScope::notifyObserversOfStop() -{ - HashSet::iterator iter = m_workerObservers.begin(); - while (iter != m_workerObservers.end()) { - WorkerGlobalScope::Observer* observer = *iter; - observer->stopObserving(); - observer->notifyStop(); - iter = m_workerObservers.begin(); - } -} - -WorkerEventQueue* WorkerGlobalScope::eventQueue() const -{ - return m_eventQueue.get(); -} - -} // namespace WebCore - -#endif // ENABLE(WORKERS) +/* + * Copyright (C) 2008 Apple Inc. All Rights Reserved. + * Copyright (C) 2009, 2011 Google Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "config.h" + +#if ENABLE(WORKERS) + +#include "WorkerGlobalScope.h" + +#include "ActiveDOMObject.h" +#include "ContentSecurityPolicy.h" +#include "DOMTimer.h" +#include "DOMURL.h" +#include "DOMWindow.h" +#include "ErrorEvent.h" +#include "Event.h" +#include "EventException.h" +#include "InspectorConsoleInstrumentation.h" +#include "KURL.h" +#include "MessagePort.h" +#include "NotImplemented.h" +#include "ScheduledAction.h" +#include "ScriptCallStack.h" +#include "ScriptSourceCode.h" +#include "ScriptValue.h" +#include "SecurityOrigin.h" +#include "WorkerInspectorController.h" +#include "WorkerLocation.h" +#include "WorkerNavigator.h" +#include "WorkerObjectProxy.h" +#include "WorkerScriptLoader.h" +#include "WorkerThread.h" +#include "WorkerThreadableLoader.h" +#include "XMLHttpRequestException.h" +#include + +#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS) +#include "NotificationCenter.h" +#endif + +#include "ExceptionCode.h" + +namespace WebCore { + +class CloseWorkerGlobalScopeTask : public ScriptExecutionContext::Task { +public: + static PassOwnPtr create() + { + return adoptPtr(new CloseWorkerGlobalScopeTask); + } + + virtual void performTask(ScriptExecutionContext *context) + { + ASSERT_WITH_SECURITY_IMPLICATION(context->isWorkerGlobalScope()); + WorkerGlobalScope* workerGlobalScope = static_cast(context); + // Notify parent that this context is closed. Parent is responsible for calling WorkerThread::stop(). + workerGlobalScope->thread()->workerReportingProxy().workerGlobalScopeClosed(); + } + + virtual bool isCleanupTask() const { return true; } +}; + +WorkerGlobalScope::WorkerGlobalScope(const KURL& url, const String& userAgent, PassOwnPtr settings, WorkerThread* thread, PassRefPtr topOrigin) + : m_url(url) + , m_userAgent(userAgent) + , m_groupSettings(settings) + , m_script(adoptPtr(new WorkerScriptController(this))) + , m_thread(thread) +#if ENABLE(INSPECTOR) + , m_workerInspectorController(adoptPtr(new WorkerInspectorController(this))) +#endif + , m_closing(false) + , m_eventQueue(WorkerEventQueue::create(this)) + , m_topOrigin(topOrigin) +{ + setSecurityOrigin(SecurityOrigin::create(url)); +} + +WorkerGlobalScope::~WorkerGlobalScope() +{ + ASSERT(currentThread() == thread()->threadID()); + + // Make sure we have no observers. + notifyObserversOfStop(); + + // Notify proxy that we are going away. This can free the WorkerThread object, so do not access it after this. + thread()->workerReportingProxy().workerGlobalScopeDestroyed(); +} + +void WorkerGlobalScope::applyContentSecurityPolicyFromString(const String& policy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType) +{ + setContentSecurityPolicy(ContentSecurityPolicy::create(this)); + contentSecurityPolicy()->didReceiveHeader(policy, contentSecurityPolicyType); +} + +ScriptExecutionContext* WorkerGlobalScope::scriptExecutionContext() const +{ + return const_cast(this); +} + +const KURL& WorkerGlobalScope::virtualURL() const +{ + return m_url; +} + +KURL WorkerGlobalScope::virtualCompleteURL(const String& url) const +{ + return completeURL(url); +} + +KURL WorkerGlobalScope::completeURL(const String& url) const +{ + // Always return a null URL when passed a null string. + // FIXME: Should we change the KURL constructor to have this behavior? + if (url.isNull()) + return KURL(); + // Always use UTF-8 in Workers. + return KURL(m_url, url); +} + +String WorkerGlobalScope::userAgent(const KURL&) const +{ + return m_userAgent; +} + +void WorkerGlobalScope::disableEval(const String& errorMessage) +{ + m_script->disableEval(errorMessage); +} + +WorkerLocation* WorkerGlobalScope::location() const +{ + if (!m_location) + m_location = WorkerLocation::create(m_url); + return m_location.get(); +} + +void WorkerGlobalScope::close() +{ + if (m_closing) + return; + + // Let current script run to completion but prevent future script evaluations. + // After m_closing is set, all the tasks in the queue continue to be fetched but only + // tasks with isCleanupTask()==true will be executed. + m_closing = true; + postTask(CloseWorkerGlobalScopeTask::create()); +} + +WorkerNavigator* WorkerGlobalScope::navigator() const +{ + if (!m_navigator) + m_navigator = WorkerNavigator::create(m_userAgent); + return m_navigator.get(); +} + +bool WorkerGlobalScope::hasPendingActivity() const +{ + ActiveDOMObjectsSet::const_iterator activeObjectsEnd = activeDOMObjects().end(); + for (ActiveDOMObjectsSet::const_iterator iter = activeDOMObjects().begin(); iter != activeObjectsEnd; ++iter) { + if ((*iter)->hasPendingActivity()) + return true; + } + + HashSet::const_iterator messagePortsEnd = messagePorts().end(); + for (HashSet::const_iterator iter = messagePorts().begin(); iter != messagePortsEnd; ++iter) { + if ((*iter)->hasPendingActivity()) + return true; + } + + return false; +} + +void WorkerGlobalScope::postTask(PassOwnPtr task) +{ + thread()->runLoop().postTask(task); +} + +int WorkerGlobalScope::setTimeout(PassOwnPtr action, int timeout) +{ + return DOMTimer::install(scriptExecutionContext(), action, timeout, true); +} + +void WorkerGlobalScope::clearTimeout(int timeoutId) +{ + DOMTimer::removeById(scriptExecutionContext(), timeoutId); +} + +#if ENABLE(INSPECTOR) +void WorkerGlobalScope::clearInspector() +{ + m_workerInspectorController.clear(); +} +#endif + +int WorkerGlobalScope::setInterval(PassOwnPtr action, int timeout) +{ + return DOMTimer::install(scriptExecutionContext(), action, timeout, false); +} + +void WorkerGlobalScope::clearInterval(int timeoutId) +{ + DOMTimer::removeById(scriptExecutionContext(), timeoutId); +} + +void WorkerGlobalScope::importScripts(const Vector& urls, ExceptionCode& ec) +{ + ASSERT(contentSecurityPolicy()); + ec = 0; + Vector::const_iterator urlsEnd = urls.end(); + Vector completedURLs; + for (Vector::const_iterator it = urls.begin(); it != urlsEnd; ++it) { + const KURL& url = scriptExecutionContext()->completeURL(*it); + if (!url.isValid()) { + ec = SYNTAX_ERR; + return; + } + completedURLs.append(url); + } + Vector::const_iterator end = completedURLs.end(); + + for (Vector::const_iterator it = completedURLs.begin(); it != end; ++it) { + RefPtr scriptLoader(WorkerScriptLoader::create()); +#if PLATFORM(BLACKBERRY) + scriptLoader->setTargetType(ResourceRequest::TargetIsScript); +#endif + scriptLoader->loadSynchronously(scriptExecutionContext(), *it, AllowCrossOriginRequests); + + // If the fetching attempt failed, throw a NETWORK_ERR exception and abort all these steps. + if (scriptLoader->failed()) { + ec = XMLHttpRequestException::NETWORK_ERR; + return; + } + + InspectorInstrumentation::scriptImported(scriptExecutionContext(), scriptLoader->identifier(), scriptLoader->script()); + + ScriptValue exception; + m_script->evaluate(ScriptSourceCode(scriptLoader->script(), scriptLoader->responseURL()), &exception); + if (!exception.hasNoValue()) { + m_script->setException(exception); + return; + } + } +} + +EventTarget* WorkerGlobalScope::errorEventTarget() +{ + return this; +} + +void WorkerGlobalScope::logExceptionToConsole(const String& errorMessage, const String& sourceURL, int lineNumber, int columnNumber, PassRefPtr) +{ + thread()->workerReportingProxy().postExceptionToWorkerObject(errorMessage, lineNumber, columnNumber, sourceURL); +} + +void WorkerGlobalScope::addConsoleMessage(MessageSource source, MessageLevel level, const String& message, unsigned long requestIdentifier) +{ + if (!isContextThread()) { + postTask(AddConsoleMessageTask::create(source, level, message)); + return; + } + + thread()->workerReportingProxy().postConsoleMessageToWorkerObject(source, level, message, 0, 0, String()); + addMessageToWorkerConsole(source, level, message, String(), 0, 0, 0, 0, requestIdentifier); +} + +void WorkerGlobalScope::addMessage(MessageSource source, MessageLevel level, const String& message, const String& sourceURL, unsigned lineNumber, unsigned columnNumber, PassRefPtr callStack, ScriptState* state, unsigned long requestIdentifier) +{ + if (!isContextThread()) { + postTask(AddConsoleMessageTask::create(source, level, message)); + return; + } + + thread()->workerReportingProxy().postConsoleMessageToWorkerObject(source, level, message, lineNumber, columnNumber, sourceURL); + addMessageToWorkerConsole(source, level, message, sourceURL, lineNumber, columnNumber, callStack.get(), state, requestIdentifier); +} + +void WorkerGlobalScope::addMessageToWorkerConsole(MessageSource source, MessageLevel level, const String& message, const String& sourceURL, unsigned lineNumber, unsigned columnNumber, PassRefPtr callStack, ScriptState* state, unsigned long requestIdentifier) +{ + ASSERT(isContextThread()); + if (callStack) + InspectorInstrumentation::addMessageToConsole(this, source, LogMessageType, level, message, callStack.get(), requestIdentifier); + else + InspectorInstrumentation::addMessageToConsole(this, source, LogMessageType, level, message, sourceURL, lineNumber, columnNumber, state, requestIdentifier); +} + +bool WorkerGlobalScope::isContextThread() const +{ + return currentThread() == thread()->threadID(); +} + +bool WorkerGlobalScope::isJSExecutionForbidden() const +{ + return m_script->isExecutionForbidden(); +} + +EventTargetData* WorkerGlobalScope::eventTargetData() +{ + return &m_eventTargetData; +} + +EventTargetData* WorkerGlobalScope::ensureEventTargetData() +{ + return &m_eventTargetData; +} + +WorkerGlobalScope::Observer::Observer(WorkerGlobalScope* context) + : m_context(context) +{ + ASSERT(m_context && m_context->isContextThread()); + m_context->registerObserver(this); +} + +WorkerGlobalScope::Observer::~Observer() +{ + if (!m_context) + return; + ASSERT(m_context->isContextThread()); + m_context->unregisterObserver(this); +} + +void WorkerGlobalScope::Observer::stopObserving() +{ + if (!m_context) + return; + ASSERT(m_context->isContextThread()); + m_context->unregisterObserver(this); + m_context = 0; +} + +void WorkerGlobalScope::registerObserver(Observer* observer) +{ + ASSERT(observer); + m_workerObservers.add(observer); +} + +void WorkerGlobalScope::unregisterObserver(Observer* observer) +{ + ASSERT(observer); + m_workerObservers.remove(observer); +} + +void WorkerGlobalScope::notifyObserversOfStop() +{ + HashSet::iterator iter = m_workerObservers.begin(); + while (iter != m_workerObservers.end()) { + WorkerGlobalScope::Observer* observer = *iter; + observer->stopObserving(); + observer->notifyStop(); + iter = m_workerObservers.begin(); + } +} + +WorkerEventQueue* WorkerGlobalScope::eventQueue() const +{ + return m_eventQueue.get(); +} + +} // namespace WebCore + +#endif // ENABLE(WORKERS) diff --git a/Source/WebCore/xml/XMLHttpRequest.cpp b/Source/WebCore/xml/XMLHttpRequest.cpp index 853ec4756de..e854019bc3f 100644 --- a/Source/WebCore/xml/XMLHttpRequest.cpp +++ b/Source/WebCore/xml/XMLHttpRequest.cpp @@ -104,6 +104,7 @@ XMLHttpRequestStaticData::XMLHttpRequestStaticData() m_forbiddenRequestHeaders.add("cookie"); m_forbiddenRequestHeaders.add("cookie2"); m_forbiddenRequestHeaders.add("date"); + m_forbiddenRequestHeaders.add("dnt"); m_forbiddenRequestHeaders.add("expect"); m_forbiddenRequestHeaders.add("host"); m_forbiddenRequestHeaders.add("keep-alive"); diff --git a/Source/WebInspectorUI/UserInterface/Images/ApplicationCache.png b/Source/WebInspectorUI/UserInterface/Images/ApplicationCache.png index 0933cc29c23..439bdbc925c 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/ApplicationCache.png and b/Source/WebInspectorUI/UserInterface/Images/ApplicationCache.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/ApplicationCache@2x.png b/Source/WebInspectorUI/UserInterface/Images/ApplicationCache@2x.png index 9c6c2df03a6..f1e2f9f2a22 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/ApplicationCache@2x.png and b/Source/WebInspectorUI/UserInterface/Images/ApplicationCache@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/ApplicationCacheManifest.png b/Source/WebInspectorUI/UserInterface/Images/ApplicationCacheManifest.png index e76dbebcdfa..38e43193105 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/ApplicationCacheManifest.png and b/Source/WebInspectorUI/UserInterface/Images/ApplicationCacheManifest.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/ApplicationCacheManifest@2x.png b/Source/WebInspectorUI/UserInterface/Images/ApplicationCacheManifest@2x.png index c902ebb630f..b152015bfb2 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/ApplicationCacheManifest@2x.png and b/Source/WebInspectorUI/UserInterface/Images/ApplicationCacheManifest@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Breakpoint.png b/Source/WebInspectorUI/UserInterface/Images/Breakpoint.png index b7bd9faa5dd..df12dc2f7a5 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Breakpoint.png and b/Source/WebInspectorUI/UserInterface/Images/Breakpoint.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Breakpoint@2x.png b/Source/WebInspectorUI/UserInterface/Images/Breakpoint@2x.png index 0217f50d409..7391a2aa896 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Breakpoint@2x.png and b/Source/WebInspectorUI/UserInterface/Images/Breakpoint@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/BreakpointInactive.png b/Source/WebInspectorUI/UserInterface/Images/BreakpointInactive.png index 494e47bee3e..7d45dd4cf7c 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/BreakpointInactive.png and b/Source/WebInspectorUI/UserInterface/Images/BreakpointInactive.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/BreakpointInactive@2x.png b/Source/WebInspectorUI/UserInterface/Images/BreakpointInactive@2x.png index bed97fdc339..d0839c49179 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/BreakpointInactive@2x.png and b/Source/WebInspectorUI/UserInterface/Images/BreakpointInactive@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/ClippingCSS.png b/Source/WebInspectorUI/UserInterface/Images/ClippingCSS.png index f54e55f1127..c418cfceed8 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/ClippingCSS.png and b/Source/WebInspectorUI/UserInterface/Images/ClippingCSS.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/ClippingCSS@2x.png b/Source/WebInspectorUI/UserInterface/Images/ClippingCSS@2x.png index 88c8a051468..a65cdaeab41 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/ClippingCSS@2x.png and b/Source/WebInspectorUI/UserInterface/Images/ClippingCSS@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/ClippingGeneric.png b/Source/WebInspectorUI/UserInterface/Images/ClippingGeneric.png index 6870b416f8b..1ad860179b2 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/ClippingGeneric.png and b/Source/WebInspectorUI/UserInterface/Images/ClippingGeneric.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/ClippingGeneric@2x.png b/Source/WebInspectorUI/UserInterface/Images/ClippingGeneric@2x.png index 3bdca1f1d00..1a77d725e04 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/ClippingGeneric@2x.png and b/Source/WebInspectorUI/UserInterface/Images/ClippingGeneric@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/ClippingJS.png b/Source/WebInspectorUI/UserInterface/Images/ClippingJS.png index f387ffc33d2..0a2b260e50e 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/ClippingJS.png and b/Source/WebInspectorUI/UserInterface/Images/ClippingJS.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/ClippingJS@2x.png b/Source/WebInspectorUI/UserInterface/Images/ClippingJS@2x.png index adeb10f10b5..0ef3e08a7f0 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/ClippingJS@2x.png and b/Source/WebInspectorUI/UserInterface/Images/ClippingJS@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Colors.png b/Source/WebInspectorUI/UserInterface/Images/Colors.png index bdfb2122ddd..2fc3736da6a 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Colors.png and b/Source/WebInspectorUI/UserInterface/Images/Colors.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Colors@2x.png b/Source/WebInspectorUI/UserInterface/Images/Colors@2x.png index 4972612e7dd..7b33f43b1eb 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Colors@2x.png and b/Source/WebInspectorUI/UserInterface/Images/Colors@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Cookie.png b/Source/WebInspectorUI/UserInterface/Images/Cookie.png index 5ae35e50853..20cd0d244a8 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Cookie.png and b/Source/WebInspectorUI/UserInterface/Images/Cookie.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Cookie@2x.png b/Source/WebInspectorUI/UserInterface/Images/Cookie@2x.png index 59d061be9df..cc4255f456c 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Cookie@2x.png and b/Source/WebInspectorUI/UserInterface/Images/Cookie@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Database.png b/Source/WebInspectorUI/UserInterface/Images/Database.png index 33bbc99d75a..1d58e3ca94d 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Database.png and b/Source/WebInspectorUI/UserInterface/Images/Database.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Database@2x.png b/Source/WebInspectorUI/UserInterface/Images/Database@2x.png index 6e8a5f20f3c..3f86cf38ea9 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Database@2x.png and b/Source/WebInspectorUI/UserInterface/Images/Database@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/DatabaseTable.png b/Source/WebInspectorUI/UserInterface/Images/DatabaseTable.png index 0846a4bb884..4a5a60863b1 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/DatabaseTable.png and b/Source/WebInspectorUI/UserInterface/Images/DatabaseTable.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/DatabaseTable@2x.png b/Source/WebInspectorUI/UserInterface/Images/DatabaseTable@2x.png index 9da2d487d60..df39b68147d 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/DatabaseTable@2x.png and b/Source/WebInspectorUI/UserInterface/Images/DatabaseTable@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/DocumentCSS.png b/Source/WebInspectorUI/UserInterface/Images/DocumentCSS.png index cac3543b983..cfe06bd795e 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/DocumentCSS.png and b/Source/WebInspectorUI/UserInterface/Images/DocumentCSS.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/DocumentCSS@2x.png b/Source/WebInspectorUI/UserInterface/Images/DocumentCSS@2x.png index 9999059f64c..70e176f3151 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/DocumentCSS@2x.png and b/Source/WebInspectorUI/UserInterface/Images/DocumentCSS@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/DocumentFont.png b/Source/WebInspectorUI/UserInterface/Images/DocumentFont.png index 66a929021c2..086d86eb0b2 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/DocumentFont.png and b/Source/WebInspectorUI/UserInterface/Images/DocumentFont.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/DocumentFont@2x.png b/Source/WebInspectorUI/UserInterface/Images/DocumentFont@2x.png index cfdc85dd657..781d9afa502 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/DocumentFont@2x.png and b/Source/WebInspectorUI/UserInterface/Images/DocumentFont@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/DocumentGeneric.png b/Source/WebInspectorUI/UserInterface/Images/DocumentGeneric.png index 089ab505678..6170c57b10c 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/DocumentGeneric.png and b/Source/WebInspectorUI/UserInterface/Images/DocumentGeneric.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/DocumentGeneric@2x.png b/Source/WebInspectorUI/UserInterface/Images/DocumentGeneric@2x.png index 716f6e35e84..82d4754ab59 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/DocumentGeneric@2x.png and b/Source/WebInspectorUI/UserInterface/Images/DocumentGeneric@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/DocumentImage.png b/Source/WebInspectorUI/UserInterface/Images/DocumentImage.png index c17729e02a8..a6808d60233 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/DocumentImage.png and b/Source/WebInspectorUI/UserInterface/Images/DocumentImage.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/DocumentImage@2x.png b/Source/WebInspectorUI/UserInterface/Images/DocumentImage@2x.png index f6eb2d59d0c..01817e6db4a 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/DocumentImage@2x.png and b/Source/WebInspectorUI/UserInterface/Images/DocumentImage@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/DocumentJS.png b/Source/WebInspectorUI/UserInterface/Images/DocumentJS.png index 394751446f5..d1d2e1033bf 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/DocumentJS.png and b/Source/WebInspectorUI/UserInterface/Images/DocumentJS.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/DocumentJS@2x.png b/Source/WebInspectorUI/UserInterface/Images/DocumentJS@2x.png index fd0a7790ee7..903ca921404 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/DocumentJS@2x.png and b/Source/WebInspectorUI/UserInterface/Images/DocumentJS@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/DocumentMarkup.png b/Source/WebInspectorUI/UserInterface/Images/DocumentMarkup.png index 32cdd26b57d..b4ad0b6873d 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/DocumentMarkup.png and b/Source/WebInspectorUI/UserInterface/Images/DocumentMarkup.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/DocumentMarkup@2x.png b/Source/WebInspectorUI/UserInterface/Images/DocumentMarkup@2x.png index 143c84a1960..570ffd13d38 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/DocumentMarkup@2x.png and b/Source/WebInspectorUI/UserInterface/Images/DocumentMarkup@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/FolderGeneric.png b/Source/WebInspectorUI/UserInterface/Images/FolderGeneric.png index 8b87d0b6b48..80d51b3ead7 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/FolderGeneric.png and b/Source/WebInspectorUI/UserInterface/Images/FolderGeneric.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/FolderGeneric@2x.png b/Source/WebInspectorUI/UserInterface/Images/FolderGeneric@2x.png index 8a6f65bdf34..0d91e206ae1 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/FolderGeneric@2x.png and b/Source/WebInspectorUI/UserInterface/Images/FolderGeneric@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/InstructionPointer.png b/Source/WebInspectorUI/UserInterface/Images/InstructionPointer.png index 6ddde2939ef..2c9e448f977 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/InstructionPointer.png and b/Source/WebInspectorUI/UserInterface/Images/InstructionPointer.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/InstructionPointer@2x.png b/Source/WebInspectorUI/UserInterface/Images/InstructionPointer@2x.png index a0177dbebb2..bedc35a8770 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/InstructionPointer@2x.png and b/Source/WebInspectorUI/UserInterface/Images/InstructionPointer@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/LocalStorage.png b/Source/WebInspectorUI/UserInterface/Images/LocalStorage.png index 7d3a8f5024e..99ea01f4fee 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/LocalStorage.png and b/Source/WebInspectorUI/UserInterface/Images/LocalStorage.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/LocalStorage@2x.png b/Source/WebInspectorUI/UserInterface/Images/LocalStorage@2x.png index e1645c4a1da..e688a13cd7c 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/LocalStorage@2x.png and b/Source/WebInspectorUI/UserInterface/Images/LocalStorage@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Log.png b/Source/WebInspectorUI/UserInterface/Images/Log.png index 814a3b7b434..646851e4b82 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Log.png and b/Source/WebInspectorUI/UserInterface/Images/Log.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Log@2x.png b/Source/WebInspectorUI/UserInterface/Images/Log@2x.png index 653556b637f..dcc96f506a4 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Log@2x.png and b/Source/WebInspectorUI/UserInterface/Images/Log@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Network.png b/Source/WebInspectorUI/UserInterface/Images/Network.png index 6f6691f074e..2e36c3d6e3f 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Network.png and b/Source/WebInspectorUI/UserInterface/Images/Network.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Network@2x.png b/Source/WebInspectorUI/UserInterface/Images/Network@2x.png index c684fba2917..3b143163e20 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Network@2x.png and b/Source/WebInspectorUI/UserInterface/Images/Network@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarBlue.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarBlue.png index af3e7f284ca..e22c773b867 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarBlue.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarBlue.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarBlue@2x.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarBlue@2x.png index 76ccb56c402..69c143e723f 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarBlue@2x.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarBlue@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarGray.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarGray.png index ce5c5001602..2f4779b7bf7 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarGray.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarGray.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarGray@2x.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarGray@2x.png index 1fc705a02ce..1a038e2fcb3 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarGray@2x.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarGray@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarGreen.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarGreen.png index e7739d0e34e..863555bcdd8 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarGreen.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarGreen.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarGreen@2x.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarGreen@2x.png index 0577f7fd4f3..be3a81b3c5a 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarGreen@2x.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarGreen@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarOrange.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarOrange.png index 7c28d75a40a..78f1400c8ed 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarOrange.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarOrange.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarOrange@2x.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarOrange@2x.png index 4fc087ac4ea..01da46c0f52 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarOrange@2x.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarOrange@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarPurple.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarPurple.png index cf56c2b522e..6c77277a7ee 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarPurple.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarPurple.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarPurple@2x.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarPurple@2x.png index 39706a6ee30..ae193521ef7 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarPurple@2x.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarPurple@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarRed.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarRed.png index 05243fe2dfb..43869c6fa00 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarRed.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarRed.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarRed@2x.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarRed@2x.png index 2686fdd923b..6217a7d8acb 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarRed@2x.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarRed@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarWhiteFlat.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarWhiteFlat.png index 32e7cb38ce5..bb5afb90b18 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarWhiteFlat.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarWhiteFlat.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarWhiteFlat@2x.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarWhiteFlat@2x.png index 6ebef13b662..e2d89c827a1 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarWhiteFlat@2x.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarWhiteFlat@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarYellow.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarYellow.png index d5839f77a49..13dcd2c079a 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarYellow.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarYellow.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkBarYellow@2x.png b/Source/WebInspectorUI/UserInterface/Images/NetworkBarYellow@2x.png index a0eb33dd931..2ebbff59af0 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkBarYellow@2x.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkBarYellow@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarBlue.png b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarBlue.png index e63542d92d6..93365f8ed98 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarBlue.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarBlue.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarBlue@2x.png b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarBlue@2x.png index 5e0d684cf90..7d1335404b9 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarBlue@2x.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarBlue@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGray.png b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGray.png index 8231267a330..67196a60a01 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGray.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGray.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGray@2x.png b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGray@2x.png index f846d030118..ee31193992b 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGray@2x.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGray@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGreen.png b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGreen.png index af548884f0b..be1a09eebc7 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGreen.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGreen.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGreen@2x.png b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGreen@2x.png index 09a61ee676a..7ec08fcb7e2 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGreen@2x.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarGreen@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarOrange.png b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarOrange.png index edb8a86349b..fe0340e52c0 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarOrange.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarOrange.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarOrange@2x.png b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarOrange@2x.png index 2836fb1b2e9..795042f8e51 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarOrange@2x.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarOrange@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarPurple.png b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarPurple.png index 3717ec137a5..cc05f471359 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarPurple.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarPurple.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarPurple@2x.png b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarPurple@2x.png index 734f9487545..3e8dbaac01a 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarPurple@2x.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarPurple@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarRed.png b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarRed.png index 50138d902c8..e016e77adcd 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarRed.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarRed.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarRed@2x.png b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarRed@2x.png index fba08ac8b42..e1cce2f9a08 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarRed@2x.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarRed@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarYellow.png b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarYellow.png index 1f101660ff9..0d214132fb3 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarYellow.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarYellow.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarYellow@2x.png b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarYellow@2x.png index 3cf2e22867b..fa683f99512 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarYellow@2x.png and b/Source/WebInspectorUI/UserInterface/Images/NetworkHollowBarYellow@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Profile.png b/Source/WebInspectorUI/UserInterface/Images/Profile.png index eb44bf02c78..e28b953dbe2 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Profile.png and b/Source/WebInspectorUI/UserInterface/Images/Profile.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Profile@2x.png b/Source/WebInspectorUI/UserInterface/Images/Profile@2x.png index 219c5261ad5..ee5d2f46f70 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Profile@2x.png and b/Source/WebInspectorUI/UserInterface/Images/Profile@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Recording.png b/Source/WebInspectorUI/UserInterface/Images/Recording.png index 57f897edc62..27974866c6b 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Recording.png and b/Source/WebInspectorUI/UserInterface/Images/Recording.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Recording@2x.png b/Source/WebInspectorUI/UserInterface/Images/Recording@2x.png index f69aeabf4fb..7b8177d5180 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Recording@2x.png and b/Source/WebInspectorUI/UserInterface/Images/Recording@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/RecordingHovered.png b/Source/WebInspectorUI/UserInterface/Images/RecordingHovered.png index 5c30ebb7e6a..e20e0d8d69a 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/RecordingHovered.png and b/Source/WebInspectorUI/UserInterface/Images/RecordingHovered.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/RecordingHovered@2x.png b/Source/WebInspectorUI/UserInterface/Images/RecordingHovered@2x.png index 1b70853dbf2..7602abb6890 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/RecordingHovered@2x.png and b/Source/WebInspectorUI/UserInterface/Images/RecordingHovered@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/RecordingStopped.png b/Source/WebInspectorUI/UserInterface/Images/RecordingStopped.png index 5f55314803c..eb511164c48 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/RecordingStopped.png and b/Source/WebInspectorUI/UserInterface/Images/RecordingStopped.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/RecordingStopped@2x.png b/Source/WebInspectorUI/UserInterface/Images/RecordingStopped@2x.png index ae560465766..6227c30fc10 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/RecordingStopped@2x.png and b/Source/WebInspectorUI/UserInterface/Images/RecordingStopped@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Script.png b/Source/WebInspectorUI/UserInterface/Images/Script.png index 146a19c5a69..f88e66707eb 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Script.png and b/Source/WebInspectorUI/UserInterface/Images/Script.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Script@2x.png b/Source/WebInspectorUI/UserInterface/Images/Script@2x.png index 96c817a50f7..3a73ae53ff5 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Script@2x.png and b/Source/WebInspectorUI/UserInterface/Images/Script@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/SessionStorage.png b/Source/WebInspectorUI/UserInterface/Images/SessionStorage.png index 890bd65d54b..eba13255a4e 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/SessionStorage.png and b/Source/WebInspectorUI/UserInterface/Images/SessionStorage.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/SessionStorage@2x.png b/Source/WebInspectorUI/UserInterface/Images/SessionStorage@2x.png index e77dc161004..f9d6b953742 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/SessionStorage@2x.png and b/Source/WebInspectorUI/UserInterface/Images/SessionStorage@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Stopwatch.png b/Source/WebInspectorUI/UserInterface/Images/Stopwatch.png index 9c39d353455..79ee025f604 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Stopwatch.png and b/Source/WebInspectorUI/UserInterface/Images/Stopwatch.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/Stopwatch@2x.png b/Source/WebInspectorUI/UserInterface/Images/Stopwatch@2x.png index d2cda715a86..48b015d92b0 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/Stopwatch@2x.png and b/Source/WebInspectorUI/UserInterface/Images/Stopwatch@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/TimelineBarBlue.png b/Source/WebInspectorUI/UserInterface/Images/TimelineBarBlue.png index 9cc3c50e1e4..b18be8228cc 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/TimelineBarBlue.png and b/Source/WebInspectorUI/UserInterface/Images/TimelineBarBlue.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/TimelineBarBlue@2x.png b/Source/WebInspectorUI/UserInterface/Images/TimelineBarBlue@2x.png index 335cc548977..e7cc414cc3d 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/TimelineBarBlue@2x.png and b/Source/WebInspectorUI/UserInterface/Images/TimelineBarBlue@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/TimelineBarOrange.png b/Source/WebInspectorUI/UserInterface/Images/TimelineBarOrange.png index 5226044b981..2eb56884bd0 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/TimelineBarOrange.png and b/Source/WebInspectorUI/UserInterface/Images/TimelineBarOrange.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/TimelineBarOrange@2x.png b/Source/WebInspectorUI/UserInterface/Images/TimelineBarOrange@2x.png index 58bea76f98b..e7ec8f53804 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/TimelineBarOrange@2x.png and b/Source/WebInspectorUI/UserInterface/Images/TimelineBarOrange@2x.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/TimelineBarPurple.png b/Source/WebInspectorUI/UserInterface/Images/TimelineBarPurple.png index 877bdf028c2..d78e53b676b 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/TimelineBarPurple.png and b/Source/WebInspectorUI/UserInterface/Images/TimelineBarPurple.png differ diff --git a/Source/WebInspectorUI/UserInterface/Images/TimelineBarPurple@2x.png b/Source/WebInspectorUI/UserInterface/Images/TimelineBarPurple@2x.png index b8ccb207b6e..ffdf58933eb 100644 Binary files a/Source/WebInspectorUI/UserInterface/Images/TimelineBarPurple@2x.png and b/Source/WebInspectorUI/UserInterface/Images/TimelineBarPurple@2x.png differ diff --git a/Source/WebInspectorUI/WebInspectorUI.xcodeproj/project.pbxproj b/Source/WebInspectorUI/WebInspectorUI.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..07ab44757dc --- /dev/null +++ b/Source/WebInspectorUI/WebInspectorUI.xcodeproj/project.pbxproj @@ -0,0 +1,257 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 1C60FF1614E6E3F7006CD77D /* localizedStrings.js in Resources */ = {isa = PBXBuildFile; fileRef = 1C60FF1314E6E35D006CD77D /* localizedStrings.js */; }; + 1C78EE1717611340002F6AA5 /* WebInspectorUI.c in Sources */ = {isa = PBXBuildFile; fileRef = 1C78EE1617611340002F6AA5 /* WebInspectorUI.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 1C435CAC14E7B287004E10EA /* cssmin.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = cssmin.py; sourceTree = ""; }; + 1C435CAD14E7B287004E10EA /* jsmin.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = jsmin.py; sourceTree = ""; }; + 1C60FE2F14E5F3CD006CD77D /* Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = ""; }; + 1C60FE3114E5F3CD006CD77D /* DebugRelease.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = ""; }; + 1C60FE3214E5F3CD006CD77D /* Version.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = ""; }; + 1C60FE3314E5F3CD006CD77D /* WebInspectorUIFramework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = WebInspectorUIFramework.xcconfig; sourceTree = ""; }; + 1C60FF1014E6D992006CD77D /* UserInterface */ = {isa = PBXFileReference; lastKnownFileType = folder; path = UserInterface; sourceTree = ""; }; + 1C60FF1414E6E35D006CD77D /* en */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = en; path = Localizations/en.lproj/localizedStrings.js; sourceTree = ""; }; + 1C60FF1914E73C64006CD77D /* combine-resources.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "combine-resources.pl"; sourceTree = ""; }; + 1C60FF1A14E73DCA006CD77D /* remove-console-asserts.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "remove-console-asserts.pl"; sourceTree = ""; }; + 1C60FFE114E79B0F006CD77D /* copy-user-interface-resources.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "copy-user-interface-resources.sh"; sourceTree = ""; }; + 1C78EE131760E115002F6AA5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 1C78EE1617611340002F6AA5 /* WebInspectorUI.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = WebInspectorUI.c; sourceTree = ""; }; + A54C2257148B23DF00373FA3 /* WebInspectorUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = WebInspectorUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXGroup section */ + 1C60FE2E14E5F3CD006CD77D /* Configurations */ = { + isa = PBXGroup; + children = ( + 1C60FE2F14E5F3CD006CD77D /* Base.xcconfig */, + 1C60FE3114E5F3CD006CD77D /* DebugRelease.xcconfig */, + 1C60FE3214E5F3CD006CD77D /* Version.xcconfig */, + 1C60FE3314E5F3CD006CD77D /* WebInspectorUIFramework.xcconfig */, + ); + path = Configurations; + sourceTree = ""; + }; + 1C60FF1514E6E39B006CD77D /* Resources */ = { + isa = PBXGroup; + children = ( + 1C78EE131760E115002F6AA5 /* Info.plist */, + 1C60FF1314E6E35D006CD77D /* localizedStrings.js */, + ); + name = Resources; + sourceTree = ""; + }; + 1C60FFE014E79B0F006CD77D /* Scripts */ = { + isa = PBXGroup; + children = ( + 1C60FF1914E73C64006CD77D /* combine-resources.pl */, + 1C60FFE114E79B0F006CD77D /* copy-user-interface-resources.sh */, + 1C435CAC14E7B287004E10EA /* cssmin.py */, + 1C435CAD14E7B287004E10EA /* jsmin.py */, + 1C60FF1A14E73DCA006CD77D /* remove-console-asserts.pl */, + ); + path = Scripts; + sourceTree = ""; + }; + A54C224B148B23DE00373FA3 = { + isa = PBXGroup; + children = ( + 1C60FE2E14E5F3CD006CD77D /* Configurations */, + A54C2258148B23DF00373FA3 /* Products */, + 1C60FF1514E6E39B006CD77D /* Resources */, + 1C60FFE014E79B0F006CD77D /* Scripts */, + 1C60FF1014E6D992006CD77D /* UserInterface */, + 1C78EE1617611340002F6AA5 /* WebInspectorUI.c */, + ); + sourceTree = ""; + }; + A54C2258148B23DF00373FA3 /* Products */ = { + isa = PBXGroup; + children = ( + A54C2257148B23DF00373FA3 /* WebInspectorUI.framework */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + A54C2256148B23DF00373FA3 /* WebInspectorUI */ = { + isa = PBXNativeTarget; + buildConfigurationList = A54C226C148B23DF00373FA3 /* Build configuration list for PBXNativeTarget "WebInspectorUI" */; + buildPhases = ( + A54C2255148B23DF00373FA3 /* Resources */, + 1C60FF1214E6D9AF006CD77D /* Copy User Interface Resources */, + 1C78EE1417611302002F6AA5 /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = WebInspectorUI; + productName = WebInspector; + productReference = A54C2257148B23DF00373FA3 /* WebInspectorUI.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + A54C224D148B23DE00373FA3 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0450; + ORGANIZATIONNAME = Apple; + }; + buildConfigurationList = A54C2250148B23DE00373FA3 /* Build configuration list for PBXProject "WebInspectorUI" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = A54C224B148B23DE00373FA3; + productRefGroup = A54C2258148B23DF00373FA3 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + A54C2256148B23DF00373FA3 /* WebInspectorUI */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + A54C2255148B23DF00373FA3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1C60FF1614E6E3F7006CD77D /* localizedStrings.js in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 1C60FF1214E6D9AF006CD77D /* Copy User Interface Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${SRCROOT}/UserInterface", + "${SRCROOT}/Scripts/copy-user-interface-resources.sh", + "${DERIVED_SOURCES_DIR}/InspectorBackend.js", + "${DERIVED_SOURCES_DIR}/InspectorBackendCommands.js", + ); + name = "Copy User Interface Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "sh \"${SRCROOT}/Scripts/copy-user-interface-resources.sh\""; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1C78EE1417611302002F6AA5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1C78EE1717611340002F6AA5 /* WebInspectorUI.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 1C60FF1314E6E35D006CD77D /* localizedStrings.js */ = { + isa = PBXVariantGroup; + children = ( + 1C60FF1414E6E35D006CD77D /* en */, + ); + name = localizedStrings.js; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 1C60FE3514E5F47E006CD77D /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C60FE2F14E5F3CD006CD77D /* Base.xcconfig */; + buildSettings = { + DEBUG_DEFINES = NDEBUG; + }; + name = Production; + }; + 1C60FE3614E5F47E006CD77D /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C60FE3314E5F3CD006CD77D /* WebInspectorUIFramework.xcconfig */; + buildSettings = { + }; + name = Production; + }; + A54C226A148B23DF00373FA3 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C60FE3114E5F3CD006CD77D /* DebugRelease.xcconfig */; + buildSettings = { + DEBUG_DEFINES = ""; + }; + name = Debug; + }; + A54C226B148B23DF00373FA3 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C60FE3114E5F3CD006CD77D /* DebugRelease.xcconfig */; + buildSettings = { + DEBUG_DEFINES = NDEBUG; + }; + name = Release; + }; + A54C226D148B23DF00373FA3 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C60FE3314E5F3CD006CD77D /* WebInspectorUIFramework.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + A54C226E148B23DF00373FA3 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C60FE3314E5F3CD006CD77D /* WebInspectorUIFramework.xcconfig */; + buildSettings = { + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + A54C2250148B23DE00373FA3 /* Build configuration list for PBXProject "WebInspectorUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A54C226A148B23DF00373FA3 /* Debug */, + A54C226B148B23DF00373FA3 /* Release */, + 1C60FE3514E5F47E006CD77D /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + A54C226C148B23DF00373FA3 /* Build configuration list for PBXNativeTarget "WebInspectorUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A54C226D148B23DF00373FA3 /* Debug */, + A54C226E148B23DF00373FA3 /* Release */, + 1C60FE3614E5F47E006CD77D /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; +/* End XCConfigurationList section */ + }; + rootObject = A54C224D148B23DE00373FA3 /* Project object */; +} diff --git a/Source/WebKit/WebKit.vcxproj/Interfaces/FixMIDLHeaders.pl b/Source/WebKit/WebKit.vcxproj/Interfaces/FixMIDLHeaders.pl new file mode 100644 index 00000000000..863e1dd66ca --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/Interfaces/FixMIDLHeaders.pl @@ -0,0 +1,76 @@ +#! /usr/bin/perl -w + +# Copyright (C) 2007 Apple Inc. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of Apple puter, Inc. ("Apple") nor the names of +# its contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# This script cleans up the headers that MIDL (Microsoft's IDL Parser/Generator) +# outputs to only #include the parent interface avoiding circular dependencies +# that MIDL creates. + +use File::Find; +use strict; +use warnings; + +my $dir = $ARGV[0]; + +$dir = `cygpath -u '$dir'`; +chomp($dir); + +find(\&finder, $dir); + +sub finder +{ + my $fileName = $_; + + return unless ($fileName =~ /IGEN_DOM(.*)\.h/); + + open(IN, "<", $fileName); + my @contents = ; + close(IN); + + open(OUT, ">", $fileName); + + my $state = 0; + foreach my $line (@contents) { + if ($line =~ /^\/\* header files for imported files \*\//) { + $state = 1; + } elsif ($line =~ /^#include "oaidl\.h"/) { + die "#include \"oaidl.h\" did not come second" if $state != 1; + $state = 2; + } elsif ($line =~ /^#include "ocidl\.h"/) { + die "#include \"ocidl.h\" did not come third" if $state != 2; + $state = 3; + } elsif ($line =~ /^#include "IGEN_DOM/ && $state == 3) { + $state = 4; + } elsif ($line =~ /^#include "(IGEN_DOM.*)\.h"/ && $state == 4) { + next; + } + + print OUT $line; + } + + close(OUT); +} diff --git a/Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj b/Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj new file mode 100644 index 00000000000..56b0984d0e2 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj @@ -0,0 +1,1518 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB} + Interfaces + + + + true + StaticLibrary + Unicode + + + true + StaticLibrary + Unicode + + + true + StaticLibrary + Unicode + + + true + StaticLibrary + Unicode + + + true + StaticLibrary + Unicode + + + true + StaticLibrary + Unicode + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Level3 + Disabled + + + true + + + + + + Level3 + Disabled + + + true + + + + + + Level3 + Disabled + + + true + + + + + + Level3 + Disabled + + + true + + + + + + Level3 + Disabled + + + true + + + + + + Level3 + Disabled + + + true + + + + + + Level3 + MaxSpeed + true + true + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + + + true + true + true + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj.filters b/Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj.filters new file mode 100644 index 00000000000..5d447d07d23 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj.filters @@ -0,0 +1,294 @@ +锘 + + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL + + + IDL\Accessibility2 + + + IDL\Accessibility2 + + + IDL\Accessibility2 + + + IDL\Accessibility2 + + + IDL\Accessibility2 + + + IDL\Accessibility2 + + + IDL + + + + + + + + + + {51652c01-e301-4b72-9d96-5d50491d258c} + + + {2e15fc38-df6f-470f-b201-272e8d2d91a4} + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesCommon.props b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesCommon.props new file mode 100644 index 00000000000..34dba2b268c --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesCommon.props @@ -0,0 +1,28 @@ +锘 + + + + + $(ConfigurationBuildDir)\include\WebKit\ + + + + $(ConfigurationBuildDir)\obj32\WebKit\DerivedSources;../../win/Interfaces;../../win/Interfaces/Accessible2;$(IntDir)\include;%(AdditionalIncludeDirectories) + + + + + false + + + + + false + $(ConfigurationBuildDir)\obj32\WebKit\$(ProjectName) + dlldata.c + $(ConfigurationBuildDir)\lib32\WebKit.tlb + true + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesDebug.props b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesDebug.props new file mode 100644 index 00000000000..4a3072efcfa --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesDebug.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesDebugWinCairo.props b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesDebugWinCairo.props new file mode 100644 index 00000000000..5da2fd401f7 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesDebugWinCairo.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesPostBuild.cmd b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesPostBuild.cmd new file mode 100644 index 00000000000..e5d48731af4 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesPostBuild.cmd @@ -0,0 +1,7 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c + +perl FixMIDLHeaders.pl "%CONFIGURATIONBUILDDIR%/include/webkit/" + +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesPreBuild.cmd b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesPreBuild.cmd new file mode 100644 index 00000000000..37b99bcde19 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesPreBuild.cmd @@ -0,0 +1,9 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed" + +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\obj32\WebKit\%PROJECTNAME%" +bash "%WEBKIT_LIBRARIES%\tools\scripts\auto-version.sh" "%INTDIR%" diff --git a/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesProduction.props b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesProduction.props new file mode 100644 index 00000000000..df1d50e439f --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesProduction.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesRelease.props b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesRelease.props new file mode 100644 index 00000000000..90dbc97f64f --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesRelease.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesReleaseWinCairo.props b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesReleaseWinCairo.props new file mode 100644 index 00000000000..a75f15087f8 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesReleaseWinCairo.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + diff --git a/Source/WebKit/WebKit.vcxproj/WebKit.make b/Source/WebKit/WebKit.vcxproj/WebKit.make new file mode 100644 index 00000000000..2455e3ed187 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit.make @@ -0,0 +1,20 @@ +!IF "$(BUILDSTYLE)"=="DEBUG" +BUILDSTYLE=DebugSuffix +!ELSE +BUILDSTYLE=Production +!ENDIF + +install: + set OFFICIAL_BUILD=1 + set WebKit_Libraries=$(SRCROOT)\AppleInternal + set WebKit_OutputDir=$(OBJROOT) + set ProgramFilesAAS=Program Files (x86)\Common Files\Apple\Apple Application Support + set Path=%PATH%;$(SRCROOT)\%ProgramFilesAAS% + set ConfigurationBuildDir=$(OBJROOT)\$(BUILDSTYLE) + devenv "WebKit.submit.sln" /rebuild $(BUILDSTYLE) + -xcopy "%ConfigurationBuildDir%\bin32\*.exe" "$(DSTROOT)\AppleInternal\bin32\" /e/v/i/h/y + xcopy "%ConfigurationBuildDir%\bin32\*.pdb" "$(DSTROOT)\%ProgramFilesAAS%" /e/v/i/h/y + -xcopy "%ConfigurationBuildDir%\bin32\*.dll" "$(DSTROOT)\%ProgramFilesAAS%" /e/v/i/h/y + xcopy "%ConfigurationBuildDir%\include\*" "$(DSTROOT)\AppleInternal\include\" /e/v/i/h/y + xcopy "%ConfigurationBuildDir%\lib32\*" "$(DSTROOT)\AppleInternal\lib32\" /e/v/i/h/y + xcopy "%ConfigurationBuildDir%\bin32\WebKit.resources\*" "$(DSTROOT)\%ProgramFilesAAS%\WebKit.resources" /e/v/i/h/y diff --git a/Source/WebKit/WebKit.vcxproj/WebKit.sln b/Source/WebKit/WebKit.vcxproj/WebKit.sln new file mode 100644 index 00000000000..d9e9474cb94 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit.sln @@ -0,0 +1,789 @@ +锘 +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WTF Projects", "WTF Projects", "{7F982CAD-225B-4FCE-9937-3B72C14D968D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "JavaScriptCore Projects", "JavaScriptCore Projects", "{F9F5E7FE-5C5F-4CE9-8665-A84633F49E12}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebCore Projects", "WebCore Projects", "{4A894588-A951-4E76-A085-50E10304DC40}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebKit Projects", "WebKit Projects", "{39286F46-BA75-4997-8065-1909090A60F0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Interfaces", "Interfaces\Interfaces.vcxproj", "{1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}" + ProjectSection(ProjectDependencies) = postProject + {83414B15-1C0D-490B-990E-03F4D49170E4} = {83414B15-1C0D-490B-990E-03F4D49170E4} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WTF", "..\..\WTF\WTF.vcxproj\WTF.vcxproj", "{8EF73779-BED3-45BB-816D-9FF58399AFA5}" + ProjectSection(ProjectDependencies) = postProject + {F7366596-0520-4433-B8FF-D843E31E5199} = {F7366596-0520-4433-B8FF-D843E31E5199} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WTFGenerated", "..\..\WTF\WTF.vcxproj\WTFGenerated.vcxproj", "{F7366596-0520-4433-B8FF-D843E31E5199}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCoreGenerated", "..\..\JavaScriptCore\JavaScriptCore.vcxproj\JavaScriptCoreGenerated.vcxproj", "{3670D01F-95F3-45A8-B878-947EB6CF214E}" + ProjectSection(ProjectDependencies) = postProject + {8EF73779-BED3-45BB-816D-9FF58399AFA5} = {8EF73779-BED3-45BB-816D-9FF58399AFA5} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCore", "..\..\JavaScriptCore\JavaScriptCore.vcxproj\JavaScriptCore.vcxproj", "{22413D41-3A18-42B7-92A8-CEDC6CE86920}" + ProjectSection(ProjectDependencies) = postProject + {9221744B-5715-4F56-9590-42F7AB23DD8B} = {9221744B-5715-4F56-9590-42F7AB23DD8B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jsc", "..\..\JavaScriptCore\JavaScriptCore.vcxproj\jsc\jsc.vcxproj", "{2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}" + ProjectSection(ProjectDependencies) = postProject + {22413D41-3A18-42B7-92A8-CEDC6CE86920} = {22413D41-3A18-42B7-92A8-CEDC6CE86920} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebCore", "..\..\WebCore\WebCore.vcxproj\WebCore.vcxproj", "{1C16337B-ACF3-4D03-AA90-851C5B5EADA6}" + ProjectSection(ProjectDependencies) = postProject + {E498CA9D-3BD2-4D52-8E37-C8DC76526325} = {E498CA9D-3BD2-4D52-8E37-C8DC76526325} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebCoreGenerated", "..\..\WebCore\WebCore.vcxproj\WebCoreGenerated.vcxproj", "{A4159B6F-3106-4F75-9EDD-582307BDB96A}" + ProjectSection(ProjectDependencies) = postProject + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843} = {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QTMovieWin", "..\..\WebCore\WebCore.vcxproj\QTMovieWin\QTMovieWin.vcxproj", "{E498CA9D-3BD2-4D52-8E37-C8DC76526325}" + ProjectSection(ProjectDependencies) = postProject + {A4159B6F-3106-4F75-9EDD-582307BDB96A} = {A4159B6F-3106-4F75-9EDD-582307BDB96A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKit", "WebKit\WebKit.vcxproj", "{0662A8A9-82A3-4638-97D8-EC425D8D87C9}" + ProjectSection(ProjectDependencies) = postProject + {0F837117-8C0B-4596-A373-A37E14A01223} = {0F837117-8C0B-4596-A373-A37E14A01223} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testRegExp", "..\..\JavaScriptCore\JavaScriptCore.vcxproj\testRegExp\testRegExp.vcxproj", "{BB16286B-AADC-46C1-BC0D-6C06F323E04B}" + ProjectSection(ProjectDependencies) = postProject + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3} = {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testapi", "..\..\JavaScriptCore\JavaScriptCore.vcxproj\testapi\testapi.vcxproj", "{5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}" + ProjectSection(ProjectDependencies) = postProject + {BB16286B-AADC-46C1-BC0D-6C06F323E04B} = {BB16286B-AADC-46C1-BC0D-6C06F323E04B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLIntOffsetsExtractor", "..\..\JavaScriptCore\JavaScriptCore.vcxproj\LLInt\LLIntOffsetsExtractor\LLIntOffsetsExtractor.vcxproj", "{D595E3F6-24F2-4C60-935C-95D50C6B3E96}" + ProjectSection(ProjectDependencies) = postProject + {877150A0-41B3-4730-9D98-1B8298098B14} = {877150A0-41B3-4730-9D98-1B8298098B14} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLIntDesiredOffsets", "..\..\JavaScriptCore\JavaScriptCore.vcxproj\LLInt\LLIntDesiredOffsets\LLIntDesiredOffsets.vcxproj", "{877150A0-41B3-4730-9D98-1B8298098B14}" + ProjectSection(ProjectDependencies) = postProject + {3670D01F-95F3-45A8-B878-947EB6CF214E} = {3670D01F-95F3-45A8-B878-947EB6CF214E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LLIntAssembly", "..\..\JavaScriptCore\JavaScriptCore.vcxproj\LLInt\LLIntAssembly\LLIntAssembly.vcxproj", "{9221744B-5715-4F56-9590-42F7AB23DD8B}" + ProjectSection(ProjectDependencies) = postProject + {D595E3F6-24F2-4C60-935C-95D50C6B3E96} = {D595E3F6-24F2-4C60-935C-95D50C6B3E96} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitExportGenerator", "WebKitExportGenerator\WebKitExportGenerator.vcxproj", "{0F837117-8C0B-4596-A373-A37E14A01223}" + ProjectSection(ProjectDependencies) = postProject + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16} = {A15EDAD8-8B87-4D4A-8498-77A04AB65F16} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitGUID", "WebKitGUID\WebKitGUID.vcxproj", "{A15EDAD8-8B87-4D4A-8498-77A04AB65F16}" + ProjectSection(ProjectDependencies) = postProject + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB} = {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB} + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WinLauncher Projects", "WinLauncher Projects", "{20A8616C-E56B-4649-A910-8E97751DE145}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinLauncherLib", "..\..\..\Tools\WinLauncher\WinLauncher.vcxproj\WinLauncherLib.vcxproj", "{114FCA11-216B-4C8C-957E-30A75AE80443}" + ProjectSection(ProjectDependencies) = postProject + {0662A8A9-82A3-4638-97D8-EC425D8D87C9} = {0662A8A9-82A3-4638-97D8-EC425D8D87C9} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinLauncher", "..\..\..\Tools\WinLauncher\WinLauncher.vcxproj\WinLauncher.vcxproj", "{767B10FB-76C1-44D0-8005-85ED7F9AA5E4}" + ProjectSection(ProjectDependencies) = postProject + {114FCA11-216B-4C8C-957E-30A75AE80443} = {114FCA11-216B-4C8C-957E-30A75AE80443} + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DumpRenderTree Projects", "DumpRenderTree Projects", "{3D4C8B23-9375-4A7C-869C-7CC262C42F9F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebCoreTestSupport", "..\..\WebCore\WebCore.vcxproj\WebCoreTestSupport.vcxproj", "{83414B15-1C0D-490B-990E-03F4D49170E4}" + ProjectSection(ProjectDependencies) = postProject + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} = {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestNetscapePlugin", "..\..\..\Tools\DumpRenderTree\DumpRenderTree.vcxproj\TestNetscapePlugin\TestNetscapePlugin.vcxproj", "{C0737398-3565-439E-A2B8-AB2BE4D5430C}" + ProjectSection(ProjectDependencies) = postProject + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4} = {767B10FB-76C1-44D0-8005-85ED7F9AA5E4} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImageDiff", "..\..\..\Tools\DumpRenderTree\DumpRenderTree.vcxproj\ImageDiff\ImageDiff.vcxproj", "{59CC0547-70AC-499C-9B19-EC01C6F61137}" + ProjectSection(ProjectDependencies) = postProject + {C0737398-3565-439E-A2B8-AB2BE4D5430C} = {C0737398-3565-439E-A2B8-AB2BE4D5430C} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImageDiffLauncher", "..\..\..\Tools\DumpRenderTree\DumpRenderTree.vcxproj\ImageDiff\ImageDiffLauncher.vcxproj", "{DD7949B6-F2B4-47C2-9C42-E21E84CB1017}" + ProjectSection(ProjectDependencies) = postProject + {59CC0547-70AC-499C-9B19-EC01C6F61137} = {59CC0547-70AC-499C-9B19-EC01C6F61137} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DumpRenderTree", "..\..\..\Tools\DumpRenderTree\DumpRenderTree.vcxproj\DumpRenderTree\DumpRenderTree.vcxproj", "{6567DFD4-D6DE-4CD5-825D-17E353D160E1}" + ProjectSection(ProjectDependencies) = postProject + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017} = {DD7949B6-F2B4-47C2-9C42-E21E84CB1017} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DumpRenderTreeLauncher", "..\..\..\Tools\DumpRenderTree\DumpRenderTree.vcxproj\DumpRenderTree\DumpRenderTreeLauncher.vcxproj", "{2974EA02-840B-4995-8719-8920A61006F1}" + ProjectSection(ProjectDependencies) = postProject + {6567DFD4-D6DE-4CD5-825D-17E353D160E1} = {6567DFD4-D6DE-4CD5-825D-17E353D160E1} + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{6993F96C-409A-4FDC-A0BA-B40D5060B07C}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "APITest Projects", "APITest Projects", "{68A7C287-F9C4-4A31-9B49-995E64CAC100}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "StandAlone Projects", "StandAlone Projects", "{74E05245-682B-4D12-98AD-BFC64C9C14CE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest-md", "..\..\ThirdParty\gtest\msvc\gtest-md.vcxproj", "{C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}" + ProjectSection(ProjectDependencies) = postProject + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5} = {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestWebKitAPI", "..\..\..\Tools\TestWebKitAPI\TestWebKitAPI.vcxproj\TestWebKitAPI.vcxproj", "{AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}" + ProjectSection(ProjectDependencies) = postProject + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8} = {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "record-memory", "..\..\..\Tools\win\record-memory\record-memory.vcxproj", "{F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}" + ProjectSection(ProjectDependencies) = postProject + {2974EA02-840B-4995-8719-8920A61006F1} = {2974EA02-840B-4995-8719-8920A61006F1} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AssembleBuildLogs", "..\..\..\Tools\win\AssembleBuildLogs\AssembleBuildLogs.vcxproj", "{67A61940-F80B-42A0-A29D-B6DB1C27BCEE}" + ProjectSection(ProjectDependencies) = postProject + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D} = {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug_WinCairo|Win32 = Debug_WinCairo|Win32 + Debug_WinCairo|x64 = Debug_WinCairo|x64 + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Production|Win32 = Production|Win32 + Production|x64 = Production|x64 + Release_WinCairo|Win32 = Release_WinCairo|Win32 + Release_WinCairo|x64 = Release_WinCairo|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Debug|Win32.ActiveCfg = Debug|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Debug|Win32.Build.0 = Debug|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Debug|x64.ActiveCfg = Debug|x64 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Debug|x64.Build.0 = Debug|x64 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Production|Win32.ActiveCfg = Production|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Production|Win32.Build.0 = Production|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Production|x64.ActiveCfg = Production|x64 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Production|x64.Build.0 = Production|x64 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Release|Win32.ActiveCfg = Release|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Release|Win32.Build.0 = Release|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Release|x64.ActiveCfg = Release|x64 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Release|x64.Build.0 = Release|x64 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Debug|Win32.ActiveCfg = Debug|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Debug|Win32.Build.0 = Debug|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Debug|x64.ActiveCfg = Debug|x64 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Debug|x64.Build.0 = Debug|x64 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Production|Win32.ActiveCfg = Production|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Production|Win32.Build.0 = Production|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Production|x64.ActiveCfg = Production|x64 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Production|x64.Build.0 = Production|x64 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Release|Win32.ActiveCfg = Release|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Release|Win32.Build.0 = Release|Win32 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Release|x64.ActiveCfg = Release|x64 + {8EF73779-BED3-45BB-816D-9FF58399AFA5}.Release|x64.Build.0 = Release|x64 + {F7366596-0520-4433-B8FF-D843E31E5199}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {F7366596-0520-4433-B8FF-D843E31E5199}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {F7366596-0520-4433-B8FF-D843E31E5199}.Debug|Win32.ActiveCfg = Debug|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.Debug|Win32.Build.0 = Debug|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.Debug|x64.ActiveCfg = Debug|x64 + {F7366596-0520-4433-B8FF-D843E31E5199}.Debug|x64.Build.0 = Debug|x64 + {F7366596-0520-4433-B8FF-D843E31E5199}.Production|Win32.ActiveCfg = Production|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.Production|Win32.Build.0 = Production|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.Production|x64.ActiveCfg = Production|x64 + {F7366596-0520-4433-B8FF-D843E31E5199}.Production|x64.Build.0 = Production|x64 + {F7366596-0520-4433-B8FF-D843E31E5199}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {F7366596-0520-4433-B8FF-D843E31E5199}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {F7366596-0520-4433-B8FF-D843E31E5199}.Release|Win32.ActiveCfg = Release|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.Release|Win32.Build.0 = Release|Win32 + {F7366596-0520-4433-B8FF-D843E31E5199}.Release|x64.ActiveCfg = Release|x64 + {F7366596-0520-4433-B8FF-D843E31E5199}.Release|x64.Build.0 = Release|x64 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Debug|Win32.ActiveCfg = Debug|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Debug|Win32.Build.0 = Debug|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Debug|x64.ActiveCfg = Debug|x64 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Debug|x64.Build.0 = Debug|x64 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Production|Win32.ActiveCfg = Production|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Production|Win32.Build.0 = Production|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Production|x64.ActiveCfg = Production|x64 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Production|x64.Build.0 = Production|x64 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Release|Win32.ActiveCfg = Release|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Release|Win32.Build.0 = Release|Win32 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Release|x64.ActiveCfg = Release|x64 + {3670D01F-95F3-45A8-B878-947EB6CF214E}.Release|x64.Build.0 = Release|x64 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Debug|Win32.ActiveCfg = Debug|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Debug|Win32.Build.0 = Debug|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Debug|x64.ActiveCfg = Debug|x64 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Debug|x64.Build.0 = Debug|x64 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Production|Win32.ActiveCfg = Production|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Production|Win32.Build.0 = Production|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Production|x64.ActiveCfg = Production|x64 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Production|x64.Build.0 = Production|x64 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Release|Win32.ActiveCfg = Release|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Release|Win32.Build.0 = Release|Win32 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Release|x64.ActiveCfg = Release|x64 + {22413D41-3A18-42B7-92A8-CEDC6CE86920}.Release|x64.Build.0 = Release|x64 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Debug|Win32.ActiveCfg = Debug|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Debug|Win32.Build.0 = Debug|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Debug|x64.ActiveCfg = Debug|x64 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Debug|x64.Build.0 = Debug|x64 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Production|Win32.ActiveCfg = Production|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Production|Win32.Build.0 = Production|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Production|x64.ActiveCfg = Production|x64 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Production|x64.Build.0 = Production|x64 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Release|Win32.ActiveCfg = Release|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Release|Win32.Build.0 = Release|Win32 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Release|x64.ActiveCfg = Release|x64 + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3}.Release|x64.Build.0 = Release|x64 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug|Win32.ActiveCfg = Debug|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug|Win32.Build.0 = Debug|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug|x64.ActiveCfg = Debug|x64 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug|x64.Build.0 = Debug|x64 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Production|Win32.ActiveCfg = Production|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Production|Win32.Build.0 = Production|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Production|x64.ActiveCfg = Production|x64 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Production|x64.Build.0 = Production|x64 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release|Win32.ActiveCfg = Release|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release|Win32.Build.0 = Release|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release|x64.ActiveCfg = Release|x64 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release|x64.Build.0 = Release|x64 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Debug|Win32.ActiveCfg = Debug|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Debug|Win32.Build.0 = Debug|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Debug|x64.ActiveCfg = Debug|x64 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Debug|x64.Build.0 = Debug|x64 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Production|Win32.ActiveCfg = Production|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Production|Win32.Build.0 = Production|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Production|x64.ActiveCfg = Production|x64 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Production|x64.Build.0 = Production|x64 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Release|Win32.ActiveCfg = Release|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Release|Win32.Build.0 = Release|Win32 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Release|x64.ActiveCfg = Release|x64 + {A4159B6F-3106-4F75-9EDD-582307BDB96A}.Release|x64.Build.0 = Release|x64 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Debug|Win32.ActiveCfg = Debug|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Debug|Win32.Build.0 = Debug|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Debug|x64.ActiveCfg = Debug|x64 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Debug|x64.Build.0 = Debug|x64 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Production|Win32.ActiveCfg = Production|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Production|Win32.Build.0 = Production|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Production|x64.ActiveCfg = Production|x64 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Production|x64.Build.0 = Production|x64 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Release|Win32.ActiveCfg = Release|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Release|Win32.Build.0 = Release|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Release|x64.ActiveCfg = Release|x64 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Release|x64.Build.0 = Release|x64 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug|Win32.ActiveCfg = Debug|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug|Win32.Build.0 = Debug|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug|x64.ActiveCfg = Debug|x64 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug|x64.Build.0 = Debug|x64 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Production|Win32.ActiveCfg = Production|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Production|Win32.Build.0 = Production|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Production|x64.ActiveCfg = Production|x64 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Production|x64.Build.0 = Production|x64 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release|Win32.ActiveCfg = Release|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release|Win32.Build.0 = Release|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release|x64.ActiveCfg = Release|x64 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release|x64.Build.0 = Release|x64 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Debug|Win32.ActiveCfg = Debug|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Debug|Win32.Build.0 = Debug|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Debug|x64.ActiveCfg = Debug|x64 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Debug|x64.Build.0 = Debug|x64 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Production|Win32.ActiveCfg = Production|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Production|Win32.Build.0 = Production|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Production|x64.ActiveCfg = Production|x64 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Production|x64.Build.0 = Production|x64 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Release|Win32.ActiveCfg = Release|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Release|Win32.Build.0 = Release|Win32 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Release|x64.ActiveCfg = Release|x64 + {BB16286B-AADC-46C1-BC0D-6C06F323E04B}.Release|x64.Build.0 = Release|x64 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Debug|Win32.ActiveCfg = Debug|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Debug|Win32.Build.0 = Debug|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Debug|x64.ActiveCfg = Debug|x64 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Debug|x64.Build.0 = Debug|x64 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Production|Win32.ActiveCfg = Production|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Production|Win32.Build.0 = Production|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Production|x64.ActiveCfg = Production|x64 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Production|x64.Build.0 = Production|x64 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Release|Win32.ActiveCfg = Release|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Release|Win32.Build.0 = Release|Win32 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Release|x64.ActiveCfg = Release|x64 + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843}.Release|x64.Build.0 = Release|x64 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Debug|Win32.ActiveCfg = Debug|Win32 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Debug|Win32.Build.0 = Debug|Win32 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Debug|x64.ActiveCfg = Debug|x64 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Debug|x64.Build.0 = Debug|x64 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Production|Win32.ActiveCfg = Production|Win32 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Production|Win32.Build.0 = Production|Win32 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Production|x64.ActiveCfg = Production|x64 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Production|x64.Build.0 = Production|x64 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Release|Win32.ActiveCfg = Release|Win32 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Release|Win32.Build.0 = Release|Win32 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Release|x64.ActiveCfg = Release|x64 + {D595E3F6-24F2-4C60-935C-95D50C6B3E96}.Release|x64.Build.0 = Release|x64 + {877150A0-41B3-4730-9D98-1B8298098B14}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {877150A0-41B3-4730-9D98-1B8298098B14}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {877150A0-41B3-4730-9D98-1B8298098B14}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {877150A0-41B3-4730-9D98-1B8298098B14}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {877150A0-41B3-4730-9D98-1B8298098B14}.Debug|Win32.ActiveCfg = Debug|Win32 + {877150A0-41B3-4730-9D98-1B8298098B14}.Debug|Win32.Build.0 = Debug|Win32 + {877150A0-41B3-4730-9D98-1B8298098B14}.Debug|x64.ActiveCfg = Debug|x64 + {877150A0-41B3-4730-9D98-1B8298098B14}.Debug|x64.Build.0 = Debug|x64 + {877150A0-41B3-4730-9D98-1B8298098B14}.Production|Win32.ActiveCfg = Production|Win32 + {877150A0-41B3-4730-9D98-1B8298098B14}.Production|Win32.Build.0 = Production|Win32 + {877150A0-41B3-4730-9D98-1B8298098B14}.Production|x64.ActiveCfg = Production|x64 + {877150A0-41B3-4730-9D98-1B8298098B14}.Production|x64.Build.0 = Production|x64 + {877150A0-41B3-4730-9D98-1B8298098B14}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {877150A0-41B3-4730-9D98-1B8298098B14}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {877150A0-41B3-4730-9D98-1B8298098B14}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {877150A0-41B3-4730-9D98-1B8298098B14}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {877150A0-41B3-4730-9D98-1B8298098B14}.Release|Win32.ActiveCfg = Release|Win32 + {877150A0-41B3-4730-9D98-1B8298098B14}.Release|Win32.Build.0 = Release|Win32 + {877150A0-41B3-4730-9D98-1B8298098B14}.Release|x64.ActiveCfg = Release|x64 + {877150A0-41B3-4730-9D98-1B8298098B14}.Release|x64.Build.0 = Release|x64 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Debug|Win32.ActiveCfg = Debug|Win32 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Debug|Win32.Build.0 = Debug|Win32 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Debug|x64.ActiveCfg = Debug|x64 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Debug|x64.Build.0 = Debug|x64 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Production|Win32.ActiveCfg = Production|Win32 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Production|Win32.Build.0 = Production|Win32 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Production|x64.ActiveCfg = Production|x64 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Production|x64.Build.0 = Production|x64 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Release|Win32.ActiveCfg = Release|Win32 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Release|Win32.Build.0 = Release|Win32 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Release|x64.ActiveCfg = Release|x64 + {9221744B-5715-4F56-9590-42F7AB23DD8B}.Release|x64.Build.0 = Release|x64 + {0F837117-8C0B-4596-A373-A37E14A01223}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {0F837117-8C0B-4596-A373-A37E14A01223}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {0F837117-8C0B-4596-A373-A37E14A01223}.Debug|Win32.ActiveCfg = Debug|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Debug|Win32.Build.0 = Debug|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Debug|x64.ActiveCfg = Debug|x64 + {0F837117-8C0B-4596-A373-A37E14A01223}.Debug|x64.Build.0 = Debug|x64 + {0F837117-8C0B-4596-A373-A37E14A01223}.Production|Win32.ActiveCfg = Production|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Production|Win32.Build.0 = Production|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Production|x64.ActiveCfg = Production|x64 + {0F837117-8C0B-4596-A373-A37E14A01223}.Production|x64.Build.0 = Production|x64 + {0F837117-8C0B-4596-A373-A37E14A01223}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {0F837117-8C0B-4596-A373-A37E14A01223}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {0F837117-8C0B-4596-A373-A37E14A01223}.Release|Win32.ActiveCfg = Release|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Release|Win32.Build.0 = Release|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Release|x64.ActiveCfg = Release|x64 + {0F837117-8C0B-4596-A373-A37E14A01223}.Release|x64.Build.0 = Release|x64 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Debug|Win32.ActiveCfg = Debug|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Debug|Win32.Build.0 = Debug|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Debug|x64.ActiveCfg = Debug|x64 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Debug|x64.Build.0 = Debug|x64 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Production|Win32.ActiveCfg = Production|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Production|Win32.Build.0 = Production|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Production|x64.ActiveCfg = Production|x64 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Production|x64.Build.0 = Production|x64 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Release|Win32.ActiveCfg = Release|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Release|Win32.Build.0 = Release|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Release|x64.ActiveCfg = Release|x64 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Release|x64.Build.0 = Release|x64 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug|Win32.ActiveCfg = Debug|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug|Win32.Build.0 = Debug|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug|x64.ActiveCfg = Debug|x64 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug|x64.Build.0 = Debug|x64 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Production|Win32.ActiveCfg = Production|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Production|Win32.Build.0 = Production|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Production|x64.ActiveCfg = Production|x64 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Production|x64.Build.0 = Production|x64 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Release|Win32.ActiveCfg = Release|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Release|Win32.Build.0 = Release|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Release|x64.ActiveCfg = Release|x64 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Release|x64.Build.0 = Release|x64 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Debug|Win32.ActiveCfg = Debug|Win32 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Debug|Win32.Build.0 = Debug|Win32 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Debug|x64.ActiveCfg = Debug|x64 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Debug|x64.Build.0 = Debug|x64 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Production|Win32.ActiveCfg = Production|Win32 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Production|Win32.Build.0 = Production|Win32 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Production|x64.ActiveCfg = Production|x64 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Production|x64.Build.0 = Production|x64 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Release|Win32.ActiveCfg = Release|Win32 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Release|Win32.Build.0 = Release|Win32 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Release|x64.ActiveCfg = Release|x64 + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4}.Release|x64.Build.0 = Release|x64 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Debug|Win32.ActiveCfg = Debug|Win32 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Debug|Win32.Build.0 = Debug|Win32 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Debug|x64.ActiveCfg = Debug|x64 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Debug|x64.Build.0 = Debug|x64 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Production|Win32.ActiveCfg = Production|Win32 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Production|Win32.Build.0 = Production|Win32 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Production|x64.ActiveCfg = Production|x64 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Production|x64.Build.0 = Production|x64 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Release|Win32.ActiveCfg = Release|Win32 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Release|Win32.Build.0 = Release|Win32 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Release|x64.ActiveCfg = Release|x64 + {83414B15-1C0D-490B-990E-03F4D49170E4}.Release|x64.Build.0 = Release|x64 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug|Win32.ActiveCfg = Debug|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug|Win32.Build.0 = Debug|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug|x64.ActiveCfg = Debug|x64 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug|x64.Build.0 = Debug|x64 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Production|Win32.ActiveCfg = Production|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Production|Win32.Build.0 = Production|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Production|x64.ActiveCfg = Production|x64 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Production|x64.Build.0 = Production|x64 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release|Win32.ActiveCfg = Release|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release|Win32.Build.0 = Release|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release|x64.ActiveCfg = Release|x64 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release|x64.Build.0 = Release|x64 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug|Win32.ActiveCfg = Debug|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug|Win32.Build.0 = Debug|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug|x64.ActiveCfg = Debug|x64 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug|x64.Build.0 = Debug|x64 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Production|Win32.ActiveCfg = Production|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Production|Win32.Build.0 = Production|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Production|x64.ActiveCfg = Production|x64 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Production|x64.Build.0 = Production|x64 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release|Win32.ActiveCfg = Release|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release|Win32.Build.0 = Release|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release|x64.ActiveCfg = Release|x64 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release|x64.Build.0 = Release|x64 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Debug|Win32.ActiveCfg = Debug|Win32 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Debug|Win32.Build.0 = Debug|Win32 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Debug|x64.ActiveCfg = Debug|x64 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Debug|x64.Build.0 = Debug|x64 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Production|Win32.ActiveCfg = Production|Win32 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Production|Win32.Build.0 = Production|Win32 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Production|x64.ActiveCfg = Production|x64 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Production|x64.Build.0 = Production|x64 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Release|Win32.ActiveCfg = Release|Win32 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Release|Win32.Build.0 = Release|Win32 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Release|x64.ActiveCfg = Release|x64 + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Release|x64.Build.0 = Release|x64 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug|Win32.ActiveCfg = Debug|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug|Win32.Build.0 = Debug|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug|x64.ActiveCfg = Debug|x64 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug|x64.Build.0 = Debug|x64 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Production|Win32.ActiveCfg = Production|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Production|Win32.Build.0 = Production|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Production|x64.ActiveCfg = Production|x64 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Production|x64.Build.0 = Production|x64 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release|Win32.ActiveCfg = Release|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release|Win32.Build.0 = Release|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release|x64.ActiveCfg = Release|x64 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release|x64.Build.0 = Release|x64 + {2974EA02-840B-4995-8719-8920A61006F1}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {2974EA02-840B-4995-8719-8920A61006F1}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {2974EA02-840B-4995-8719-8920A61006F1}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {2974EA02-840B-4995-8719-8920A61006F1}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {2974EA02-840B-4995-8719-8920A61006F1}.Debug|Win32.ActiveCfg = Debug|Win32 + {2974EA02-840B-4995-8719-8920A61006F1}.Debug|Win32.Build.0 = Debug|Win32 + {2974EA02-840B-4995-8719-8920A61006F1}.Debug|x64.ActiveCfg = Debug|x64 + {2974EA02-840B-4995-8719-8920A61006F1}.Debug|x64.Build.0 = Debug|x64 + {2974EA02-840B-4995-8719-8920A61006F1}.Production|Win32.ActiveCfg = Production|Win32 + {2974EA02-840B-4995-8719-8920A61006F1}.Production|Win32.Build.0 = Production|Win32 + {2974EA02-840B-4995-8719-8920A61006F1}.Production|x64.ActiveCfg = Production|x64 + {2974EA02-840B-4995-8719-8920A61006F1}.Production|x64.Build.0 = Production|x64 + {2974EA02-840B-4995-8719-8920A61006F1}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {2974EA02-840B-4995-8719-8920A61006F1}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {2974EA02-840B-4995-8719-8920A61006F1}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {2974EA02-840B-4995-8719-8920A61006F1}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {2974EA02-840B-4995-8719-8920A61006F1}.Release|Win32.ActiveCfg = Release|Win32 + {2974EA02-840B-4995-8719-8920A61006F1}.Release|Win32.Build.0 = Release|Win32 + {2974EA02-840B-4995-8719-8920A61006F1}.Release|x64.ActiveCfg = Release|x64 + {2974EA02-840B-4995-8719-8920A61006F1}.Release|x64.Build.0 = Release|x64 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug|Win32.ActiveCfg = Debug|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug|Win32.Build.0 = Debug|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug|x64.ActiveCfg = Debug|x64 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug|x64.Build.0 = Debug|x64 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Production|Win32.ActiveCfg = Production|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Production|Win32.Build.0 = Production|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Production|x64.ActiveCfg = Production|x64 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Production|x64.Build.0 = Production|x64 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release|Win32.ActiveCfg = Release|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release|Win32.Build.0 = Release|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release|x64.ActiveCfg = Release|x64 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release|x64.Build.0 = Release|x64 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Debug|Win32.ActiveCfg = Debug|Win32 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Debug|Win32.Build.0 = Debug|Win32 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Debug|x64.ActiveCfg = Debug|x64 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Debug|x64.Build.0 = Debug|x64 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Production|Win32.ActiveCfg = Production|Win32 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Production|Win32.Build.0 = Production|Win32 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Production|x64.ActiveCfg = Production|x64 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Production|x64.Build.0 = Production|x64 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Release|Win32.ActiveCfg = Release|Win32 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Release|Win32.Build.0 = Release|Win32 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Release|x64.ActiveCfg = Release|x64 + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Release|x64.Build.0 = Release|x64 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Debug_WinCairo|Win32.ActiveCfg = Debug_WinCairo|Win32 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Debug_WinCairo|Win32.Build.0 = Debug_WinCairo|Win32 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Debug_WinCairo|x64.ActiveCfg = Debug_WinCairo|x64 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Debug_WinCairo|x64.Build.0 = Debug_WinCairo|x64 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Debug|Win32.ActiveCfg = Debug|Win32 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Debug|Win32.Build.0 = Debug|Win32 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Debug|x64.ActiveCfg = Debug|x64 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Debug|x64.Build.0 = Debug|x64 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Production|Win32.ActiveCfg = Production|Win32 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Production|Win32.Build.0 = Production|Win32 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Production|x64.ActiveCfg = Production|x64 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Production|x64.Build.0 = Production|x64 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Release_WinCairo|Win32.ActiveCfg = Release_WinCairo|Win32 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Release_WinCairo|Win32.Build.0 = Release_WinCairo|Win32 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Release_WinCairo|x64.ActiveCfg = Release_WinCairo|x64 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Release_WinCairo|x64.Build.0 = Release_WinCairo|x64 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Release|Win32.ActiveCfg = Release|Win32 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Release|Win32.Build.0 = Release|Win32 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Release|x64.ActiveCfg = Release|x64 + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}.Release|x64.Build.0 = Release|x64 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Debug_WinCairo|Win32.ActiveCfg = Debug|Win32 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Debug_WinCairo|x64.ActiveCfg = Debug|x64 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Debug|Win32.ActiveCfg = Debug|Win32 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Debug|Win32.Build.0 = Debug|Win32 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Debug|x64.ActiveCfg = Debug|x64 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Debug|x64.Build.0 = Debug|x64 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Production|Win32.ActiveCfg = Production|Win32 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Production|Win32.Build.0 = Production|Win32 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Production|x64.ActiveCfg = Production|x64 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Production|x64.Build.0 = Production|x64 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Release_WinCairo|Win32.ActiveCfg = Release|Win32 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Release_WinCairo|x64.ActiveCfg = Release|x64 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Release|Win32.ActiveCfg = Release|Win32 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Release|Win32.Build.0 = Release|Win32 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Release|x64.ActiveCfg = Release|x64 + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {8EF73779-BED3-45BB-816D-9FF58399AFA5} = {7F982CAD-225B-4FCE-9937-3B72C14D968D} + {F7366596-0520-4433-B8FF-D843E31E5199} = {7F982CAD-225B-4FCE-9937-3B72C14D968D} + {3670D01F-95F3-45A8-B878-947EB6CF214E} = {F9F5E7FE-5C5F-4CE9-8665-A84633F49E12} + {22413D41-3A18-42B7-92A8-CEDC6CE86920} = {F9F5E7FE-5C5F-4CE9-8665-A84633F49E12} + {2BD437CF-BDAC-4119-9ED6-E10EF46C69F3} = {F9F5E7FE-5C5F-4CE9-8665-A84633F49E12} + {BB16286B-AADC-46C1-BC0D-6C06F323E04B} = {F9F5E7FE-5C5F-4CE9-8665-A84633F49E12} + {5CC08E13-2CF9-4C2E-8544-07DA4E8C1843} = {F9F5E7FE-5C5F-4CE9-8665-A84633F49E12} + {D595E3F6-24F2-4C60-935C-95D50C6B3E96} = {F9F5E7FE-5C5F-4CE9-8665-A84633F49E12} + {877150A0-41B3-4730-9D98-1B8298098B14} = {F9F5E7FE-5C5F-4CE9-8665-A84633F49E12} + {9221744B-5715-4F56-9590-42F7AB23DD8B} = {F9F5E7FE-5C5F-4CE9-8665-A84633F49E12} + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} = {4A894588-A951-4E76-A085-50E10304DC40} + {A4159B6F-3106-4F75-9EDD-582307BDB96A} = {4A894588-A951-4E76-A085-50E10304DC40} + {E498CA9D-3BD2-4D52-8E37-C8DC76526325} = {4A894588-A951-4E76-A085-50E10304DC40} + {83414B15-1C0D-490B-990E-03F4D49170E4} = {4A894588-A951-4E76-A085-50E10304DC40} + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB} = {39286F46-BA75-4997-8065-1909090A60F0} + {0662A8A9-82A3-4638-97D8-EC425D8D87C9} = {39286F46-BA75-4997-8065-1909090A60F0} + {0F837117-8C0B-4596-A373-A37E14A01223} = {39286F46-BA75-4997-8065-1909090A60F0} + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16} = {39286F46-BA75-4997-8065-1909090A60F0} + {20A8616C-E56B-4649-A910-8E97751DE145} = {6993F96C-409A-4FDC-A0BA-B40D5060B07C} + {3D4C8B23-9375-4A7C-869C-7CC262C42F9F} = {6993F96C-409A-4FDC-A0BA-B40D5060B07C} + {68A7C287-F9C4-4A31-9B49-995E64CAC100} = {6993F96C-409A-4FDC-A0BA-B40D5060B07C} + {74E05245-682B-4D12-98AD-BFC64C9C14CE} = {6993F96C-409A-4FDC-A0BA-B40D5060B07C} + {767B10FB-76C1-44D0-8005-85ED7F9AA5E4} = {20A8616C-E56B-4649-A910-8E97751DE145} + {114FCA11-216B-4C8C-957E-30A75AE80443} = {20A8616C-E56B-4649-A910-8E97751DE145} + {C0737398-3565-439E-A2B8-AB2BE4D5430C} = {3D4C8B23-9375-4A7C-869C-7CC262C42F9F} + {59CC0547-70AC-499C-9B19-EC01C6F61137} = {3D4C8B23-9375-4A7C-869C-7CC262C42F9F} + {DD7949B6-F2B4-47C2-9C42-E21E84CB1017} = {3D4C8B23-9375-4A7C-869C-7CC262C42F9F} + {6567DFD4-D6DE-4CD5-825D-17E353D160E1} = {3D4C8B23-9375-4A7C-869C-7CC262C42F9F} + {2974EA02-840B-4995-8719-8920A61006F1} = {3D4C8B23-9375-4A7C-869C-7CC262C42F9F} + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8} = {68A7C287-F9C4-4A31-9B49-995E64CAC100} + {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D} = {68A7C287-F9C4-4A31-9B49-995E64CAC100} + {F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5} = {74E05245-682B-4D12-98AD-BFC64C9C14CE} + {67A61940-F80B-42A0-A29D-B6DB1C27BCEE} = {74E05245-682B-4D12-98AD-BFC64C9C14CE} + EndGlobalSection +EndGlobal diff --git a/Source/WebKit/WebKit.vcxproj/WebKit.submit.sln b/Source/WebKit/WebKit.vcxproj/WebKit.submit.sln new file mode 100644 index 00000000000..5de95e9c091 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit.submit.sln @@ -0,0 +1,65 @@ +锘 +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Interfaces", "Interfaces\Interfaces.vcxproj", "{1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKit", "WebKit\WebKit.vcxproj", "{0662A8A9-82A3-4638-97D8-EC425D8D87C9}" + ProjectSection(ProjectDependencies) = postProject + {0F837117-8C0B-4596-A373-A37E14A01223} = {0F837117-8C0B-4596-A373-A37E14A01223} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitExportGenerator", "WebKitExportGenerator\WebKitExportGenerator.vcxproj", "{0F837117-8C0B-4596-A373-A37E14A01223}" + ProjectSection(ProjectDependencies) = postProject + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16} = {A15EDAD8-8B87-4D4A-8498-77A04AB65F16} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitGUID", "WebKitGUID\WebKitGUID.vcxproj", "{A15EDAD8-8B87-4D4A-8498-77A04AB65F16}" + ProjectSection(ProjectDependencies) = postProject + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB} = {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + DebugSuffix|Win32 = DebugSuffix|Win32 + Production|Win32 = Production|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Debug|Win32.ActiveCfg = Debug|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Debug|Win32.Build.0 = Debug|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.DebugSuffix|Win32.ActiveCfg = DebugSuffix|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.DebugSuffix|Win32.Build.0 = DebugSuffix|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Production|Win32.ActiveCfg = Production|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Production|Win32.Build.0 = Production|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Release|Win32.ActiveCfg = Release|Win32 + {1659B1B6-F2A3-46B3-AE02-FE65B4A607EB}.Release|Win32.Build.0 = Release|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug|Win32.ActiveCfg = Debug|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug|Win32.Build.0 = Debug|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.DebugSuffix|Win32.ActiveCfg = DebugSuffix|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.DebugSuffix|Win32.Build.0 = DebugSuffix|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Production|Win32.ActiveCfg = Production|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Production|Win32.Build.0 = Production|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release|Win32.ActiveCfg = Release|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release|Win32.Build.0 = Release|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Debug|Win32.ActiveCfg = Debug|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Debug|Win32.Build.0 = Debug|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.DebugSuffix|Win32.ActiveCfg = DebugSuffix|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.DebugSuffix|Win32.Build.0 = DebugSuffix|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Production|Win32.ActiveCfg = Production|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Production|Win32.Build.0 = Production|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Release|Win32.ActiveCfg = Release|Win32 + {0F837117-8C0B-4596-A373-A37E14A01223}.Release|Win32.Build.0 = Release|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Debug|Win32.ActiveCfg = Debug|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Debug|Win32.Build.0 = Debug|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.DebugSuffix|Win32.ActiveCfg = DebugSuffix|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.DebugSuffix|Win32.Build.0 = DebugSuffix|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Production|Win32.ActiveCfg = Production|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Production|Win32.Build.0 = Production|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Release|Win32.ActiveCfg = Release|Win32 + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Source/WebKit/WebKit.vcxproj/WebKit/WebKit.vcxproj b/Source/WebKit/WebKit.vcxproj/WebKit/WebKit.vcxproj new file mode 100644 index 00000000000..98d74b08f38 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit/WebKit.vcxproj @@ -0,0 +1,544 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + WebKit + {0662A8A9-82A3-4638-97D8-EC425D8D87C9} + WebKit + Win32Proj + + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + + + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + true + true + true + true + + + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + true + true + true + true + + + + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + true + true + true + true + + + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKit/WebKit.vcxproj.filters b/Source/WebKit/WebKit.vcxproj/WebKit/WebKit.vcxproj.filters new file mode 100644 index 00000000000..5192363a8e8 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit/WebKit.vcxproj.filters @@ -0,0 +1,631 @@ +锘 + + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {5faf576b-9d8f-43cb-96e3-155a00fba0d6} + + + {7a40f11b-af3a-40b3-8c62-f7adf76d12c8} + + + {0a3a0baa-eab1-4cb5-a90d-c40c2eb7d0f9} + + + {1a00610c-29e3-4979-a7a2-ef6c92c4bb71} + + + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + + WebCoreSupport + + + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + WebCoreSupport + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + + + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Resources + + + Generated + + + + + Resources + + + diff --git a/Source/WebKit/WebKit.vcxproj/WebKit/WebKitApple.props b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitApple.props new file mode 100644 index 00000000000..b8a13c87f25 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitApple.props @@ -0,0 +1,11 @@ +锘 + + + <_ProjectFileVersion>10.0.40219.1 + + + + CFNetwork$(DebugSuffix).lib;CoreFoundation$(DebugSuffix).lib;CoreGraphics$(DebugSuffix).lib;WebKitSystemInterface$(DebugSuffix).lib;QTMovieWin$(DebugSuffix).lib;%(AdditionalDependencies) + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKit/WebKitCFLite.props b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitCFLite.props new file mode 100644 index 00000000000..8528b249102 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitCFLite.props @@ -0,0 +1,13 @@ +锘 + + + <_ProjectFileVersion>10.0.40219.1 + <_PropertySheetDisplayName>WebKitCFLite + + + + CFLite.lib;%(AdditionalDependencies) + %(AdditionalLibraryDirectories) + + + diff --git a/Source/WebKit/WebKit.vcxproj/WebKit/WebKitCommon.props b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitCommon.props new file mode 100644 index 00000000000..75d17c66a2a --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitCommon.props @@ -0,0 +1,21 @@ +锘 + + + <_ProjectFileVersion>10.0.40219.1 + + + + $(ProjectDir);$(ProjectDir)\..\..\win;$(ProjectDir)\..\..\win\WebCoreSupport;$(ConfigurationBuildDir)\include\WebKit;$(ConfigurationBuildDir)\Include;$(ConfigurationBuildDir)\Include\private;$(ConfigurationBuildDir)\Include\WebCore;$(ConfigurationBuildDir)\Include\WebCore\ForwardingHeaders;$(ConfigurationBuildDir)\Include\JavaScriptCore;$(ConfigurationBuildDir)\Include\private\JavaScriptCore;$(ConfigurationBuildDir)\obj32\WebKit\DerivedSources;$(WebKit_Libraries)\Include;$(WebKit_Libraries)\Include\private;$(WebKit_Libraries)\Include\WebCore;$(WebKit_Libraries)\Include\WebCore\ForwardingHeaders;$(WebKit_Libraries)\Include\JavaScriptCore;$(WebKit_Libraries)\Include\private\JavaScriptCore;$(IntDir)include;%(AdditionalIncludeDirectories) + WEBKIT_EXPORTS;FRAMEWORK_NAME=WebKit;%(PreprocessorDefinitions) + Use + WebKitPrefix.h + 4819;%(DisableSpecificWarnings) + WebKitPrefix.h;ICUVersion.h;%(ForcedIncludeFiles) + + + opengl32.lib;delayimp.lib;kernel32.lib;user32.lib;gdi32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;usp10.lib;comctl32.lib;version.lib;shlwapi.lib;libxslt$(DebugSuffix).lib;libxml2$(DebugSuffix).lib;libicuin$(DebugSuffix).lib;libicuuc$(DebugSuffix).lib;WTF$(DebugSuffix).lib;JavaScriptCore$(DebugSuffix).lib;WebCore$(DebugSuffix).lib;WebKitGUID$(DebugSuffix).lib;SQLite3$(DebugSuffix).lib;msimg32.lib;crypt32.lib;iphlpapi.lib;winmm.lib;comsuppw.lib;rpcrt4.lib;zdll$(DebugSuffix).lib;%(AdditionalDependencies) + $(ConfigurationBuildDir)\obj32\WebKitExportGenerator\WebKitExports.def + usp10.dll;comctl32.dll;version.dll;iphlpapi.dll;%(DelayLoadDLLs) + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKit/WebKitDebug.props b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitDebug.props new file mode 100644 index 00000000000..276a1aad840 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitDebug.props @@ -0,0 +1,14 @@ +锘 + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKit/WebKitDebugWinCairo.props b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitDebugWinCairo.props new file mode 100644 index 00000000000..637c472ad51 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitDebugWinCairo.props @@ -0,0 +1,16 @@ +锘 + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKit/WebKitDirectX.props b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitDirectX.props new file mode 100644 index 00000000000..cffd043122a --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitDirectX.props @@ -0,0 +1,14 @@ +锘 + + + <_ProjectFileVersion>10.0.40219.1 + + + + $(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories) + + + $(DXSDK_DIR)\Lib\x86;%(AdditionalLibraryDirectories) + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKit/WebKitPostBuild.cmd b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitPostBuild.cmd new file mode 100644 index 00000000000..08cf9cf418a --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitPostBuild.cmd @@ -0,0 +1,17 @@ +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\WebKit" + +xcopy /y /d "%PROJECTDIR%\..\..\win\WebLocalizableStrings.h" "%CONFIGURATIONBUILDDIR%\include\WebKit" +xcopy /y /d "%PROJECTDIR%\..\..\win\WebKitGraphics.h" "%CONFIGURATIONBUILDDIR%\include\WebKit" +xcopy /y /d "%PROJECTDIR%\..\..\win\WebKitCOMAPI.h" "%CONFIGURATIONBUILDDIR%\include\WebKit" +xcopy /y /d "%PROJECTDIR%\..\..\win\WebPreferenceKeysPrivate.h" "%CONFIGURATIONBUILDDIR%\include\WebKit" + +xcopy /y /d "%CONFIGURATIONBUILDDIR%\include\WebCore\npapi.h" "%CONFIGURATIONBUILDDIR%\include\WebKit" +xcopy /y /d "%CONFIGURATIONBUILDDIR%\include\WebCore\npfunctions.h" "%CONFIGURATIONBUILDDIR%\include\WebKit" +xcopy /y /d "%CONFIGURATIONBUILDDIR%\include\WebCore\npruntime.h" "%CONFIGURATIONBUILDDIR%\include\WebKit" +xcopy /y /d "%CONFIGURATIONBUILDDIR%\include\WebCore\npruntime_internal.h" "%CONFIGURATIONBUILDDIR%\include\WebKit" +xcopy /y /d "%CONFIGURATIONBUILDDIR%\include\WebCore\nptypes.h" "%CONFIGURATIONBUILDDIR%\include\WebKit" + +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\bin32\WebKit.resources" +xcopy /y /d "%PROJECTDIR%..\..\WebKit.resources\*" "%CONFIGURATIONBUILDDIR%\bin32\WebKit.resources" + +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/WebKit/WebKit.vcxproj/WebKit/WebKitPreBuild.cmd b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitPreBuild.cmd new file mode 100644 index 00000000000..1e26e874f46 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitPreBuild.cmd @@ -0,0 +1,11 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed" + +mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\JavaScriptCore" +xcopy /y /d "%WEBKIT_LIBRARIES%\include\JavaScriptCore\*" "%CONFIGURATIONBUILDDIR%\include\JavaScriptCore" + +bash "%WEBKIT_LIBRARIES%\tools\scripts\auto-version.sh" "%INTDIR%" diff --git a/Source/WebKit/WebKit.vcxproj/WebKit/WebKitPreLink.cmd b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitPreLink.cmd new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Source/WebKit/WebKit.vcxproj/WebKit/WebKitProduction.props b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitProduction.props new file mode 100644 index 00000000000..42c8ef42001 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitProduction.props @@ -0,0 +1,15 @@ +锘 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKit/WebKitRelease.props b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitRelease.props new file mode 100644 index 00000000000..c3b696ee078 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitRelease.props @@ -0,0 +1,14 @@ +锘 + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKit/WebKitReleaseWinCairo.props b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitReleaseWinCairo.props new file mode 100644 index 00000000000..8434c4c218a --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit/WebKitReleaseWinCairo.props @@ -0,0 +1,16 @@ +锘 + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + + diff --git a/Source/WebKit/WebKit.vcxproj/WebKit/resource.h b/Source/WebKit/WebKit.vcxproj/WebKit/resource.h new file mode 100644 index 00000000000..b999de62cfb --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKit/resource.h @@ -0,0 +1,44 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by WebKit.rc +// +#define IDR_WEBKIT 1 +#define IDR_RESIZE_CORNER 2 +#define IDR_MISSING_IMAGE 3 +#define IDR_URL_ICON 4 +#define IDR_NULL_PLUGIN 5 +#define IDR_ZOOM_IN_CURSOR 6 +#define IDR_ZOOM_OUT_CURSOR 7 +#define IDR_VERTICAL_TEXT_CURSOR 8 +#define IDR_PAN_SCROLL_ICON 9 +#define IDR_PAN_SOUTH_CURSOR 10 +#define IDR_PAN_NORTH_CURSOR 11 +#define IDR_PAN_EAST_CURSOR 12 +#define IDR_PAN_WEST_CURSOR 13 +#define IDR_PAN_SOUTH_EAST_CURSOR 14 +#define IDR_PAN_SOUTH_WEST_CURSOR 15 +#define IDR_PAN_NORTH_EAST_CURSOR 16 +#define IDR_PAN_NORTH_WEST_CURSOR 17 +#define IDR_SEARCH_CANCEL 18 +#define IDR_SEARCH_CANCEL_PRESSED 19 +#define IDR_SEARCH_MAGNIFIER 20 +#define IDR_SEARCH_MAGNIFIER_RESULTS 21 +#define IDR_FS_VIDEO_AUDIO_VOLUME_HIGH 22 +#define IDR_FS_VIDEO_AUDIO_VOLUME_LOW 23 +#define IDR_FS_VIDEO_EXIT_FULLSCREEN 24 +#define IDR_FS_VIDEO_PAUSE 25 +#define IDR_FS_VIDEO_PLAY 26 +#define IDC_STATIC -1 + +#define BUILD_NUMBER 1 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 22 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj new file mode 100644 index 00000000000..8fe083e3ab9 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj @@ -0,0 +1,287 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + {0F837117-8C0B-4596-A373-A37E14A01223} + Win32Proj + WebKitExportGenerator + WebKitExportGenerator + + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Document + + + + + + Document + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj.filters b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj.filters new file mode 100644 index 00000000000..68dfd099664 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj.filters @@ -0,0 +1,15 @@ +锘 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorBuildCmd.cmd b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorBuildCmd.cmd new file mode 100644 index 00000000000..e56bb811ab6 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorBuildCmd.cmd @@ -0,0 +1,9 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c + +set GeneratorDirectory=%CONFIGURATIONBUILDDIR%/obj32/WebKitExportGenerator + +echo Generating export definitions +del /F /Q "%GeneratorDirectory%/DerivedSources/WebKitExportGenerator.cpp" +bash -c "./make-export-file-generator ./WebKitExports.def.in '%GeneratorDirectory%/DerivedSources/WebKitExportGenerator.cpp'" diff --git a/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorCommon.props b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorCommon.props new file mode 100644 index 00000000000..272e2d2f2ed --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorCommon.props @@ -0,0 +1,17 @@ +锘 + + + + + + + $(ConfigurationBuildDir)\Include\;$(ConfigurationBuildDir)\Include\private;$(ConfigurationBuildDir)\Include\WebCore;$(ConfigurationBuildDir)\Include\WebCore\ForwardingHeaders;$(WebKit_Libraries)\include\WebCore\ForwardingHeaders;$(WebKit_Libraries)\include\WebCore;$(WebKit_Libraries)\Include;$(WebKit_Libraries)\Include\private;%(AdditionalIncludeDirectories) + _CONSOLE;%(PreprocessorDefinitions) + + + Console + WTF$(DebugSuffix).lib;libicuuc$(DebugSuffix).lib;winmm.lib;%(AdditionalDependencies) + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorDebug.props b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorDebug.props new file mode 100644 index 00000000000..7204b29e943 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorDebug.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorDebugWinCairo.props b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorDebugWinCairo.props new file mode 100644 index 00000000000..22ae3463b5e --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorDebugWinCairo.props @@ -0,0 +1,14 @@ +锘 + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPostBuild.cmd b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPostBuild.cmd new file mode 100644 index 00000000000..b27a14a6241 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPostBuild.cmd @@ -0,0 +1,5 @@ +set GeneratorDirectory=%CONFIGURATIONBUILDDIR%\obj32\WebKitExportGenerator +echo Exporting link definition output (%GeneratorDirectory%\WebKitExports.def) +if exist "%OUTDIR%\WebKitExportGenerator%DEBUGSUFFIX%.exe" "%OUTDIR%\WebKitExportGenerator%DEBUGSUFFIX%.exe" > "%GeneratorDirectory%\WebKitExports.def" + +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPreBuild.cmd b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPreBuild.cmd new file mode 100644 index 00000000000..661e9dd27c2 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPreBuild.cmd @@ -0,0 +1,19 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% + +echo Preparing generator output directory... +set GeneratorDirectory=%CONFIGURATIONBUILDDIR%/obj32/WebKitExportGenerator +mkdir "%GeneratorDirectory%" 2>NUL +mkdir "%GeneratorDirectory%\DerivedSources" 2>NUL + +echo Clearing old definition file... +del /F /Q "%GeneratorDirectory%\WebKitExports.def" +del /F /Q "%GeneratorDirectory%\DerivedSources\WebKitExportGenerator.cpp" +del /F /Q "%OUTDIR%\WebKitExportGenerator%DEBUGSUFFIX%.exe" + +cmd /c +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed" + +"%PROJECTDIR%\%PROJECTNAME%BuildCmd.cmd" diff --git a/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorProduction.props b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorProduction.props new file mode 100644 index 00000000000..340be6a660f --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorProduction.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorRelease.props b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorRelease.props new file mode 100644 index 00000000000..5335cb307c4 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorRelease.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorReleaseWinCairo.props b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorReleaseWinCairo.props new file mode 100644 index 00000000000..feddf387398 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorReleaseWinCairo.props @@ -0,0 +1,14 @@ +锘 + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in new file mode 100644 index 00000000000..7149ebc7705 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in @@ -0,0 +1,464 @@ +EXPORTS + DllGetClassObject PRIVATE + DllCanUnloadNow PRIVATE + DllRegisterServer PRIVATE + DllUnregisterServer PRIVATE + RunAsLocalServer PRIVATE + LocalServerDidDie PRIVATE + setUseOpenSourceWebKit + shutDownWebKit + progIDForClass + WebLocalizedStringUTF8 + WebLocalizedLPCTSTRUTF8 +#if USE(CG) + WebDrawText + FontMetrics + TextFloatWidth + CenterTruncateStringToWidth + RightTruncateStringToWidth + WebKitSetShouldUseFontSmoothing + WebKitShouldUseFontSmoothing +#endif + WebKitCreateInstance + + ; These functions are deprecated + WebLocalizedString + WebLocalizedLPCTSTR + SetWebLocalizedStringMainBundle + + ; Deprecated re-exports from JavaScriptCore + JSCheckScriptSyntax + JSClassCreate + JSClassRelease + JSClassRetain + JSContextGetGlobalObject + JSContextGetGroup + JSContextGroupCreate + JSContextGroupRelease + JSContextGroupRetain + JSEvaluateScript + JSGarbageCollect + JSGlobalContextCreate + JSGlobalContextCreateInGroup + JSGlobalContextRelease + JSGlobalContextRetain + JSObjectCallAsConstructor + JSObjectCallAsFunction + JSObjectCopyPropertyNames + JSObjectDeleteProperty + JSObjectGetPrivate + JSObjectGetProperty + JSObjectGetPropertyAtIndex + JSObjectGetPrototype + JSObjectHasProperty + JSObjectIsConstructor + JSObjectIsFunction + JSObjectMake + JSObjectMakeArray + JSObjectMakeConstructor + JSObjectMakeDate + JSObjectMakeError + JSObjectMakeFunction + JSObjectMakeFunctionWithCallback + JSObjectMakeRegExp + JSObjectSetPrivate + JSObjectSetProperty + JSObjectSetPropertyAtIndex + JSObjectSetPrototype + JSPropertyNameAccumulatorAddName + JSPropertyNameArrayGetCount + JSPropertyNameArrayGetNameAtIndex + JSPropertyNameArrayRelease + JSPropertyNameArrayRetain + JSStringCopyBSTR + JSStringCopyCFString + JSStringCreateWithBSTR + JSStringCreateWithCFString + JSStringCreateWithCharacters + JSStringCreateWithUTF8CString + JSStringGetCharactersPtr + JSStringGetLength + JSStringGetMaximumUTF8CStringSize + JSStringGetUTF8CString + JSStringIsEqual + JSStringIsEqualToUTF8CString + JSStringRelease + JSStringRetain + JSValueGetType + JSValueIsBoolean + JSValueIsEqual + JSValueIsInstanceOfConstructor + JSValueIsNull + JSValueIsNumber + JSValueIsObject + JSValueIsObjectOfClass + JSValueIsStrictEqual + JSValueIsString + JSValueIsUndefined + JSValueMakeBoolean + JSValueMakeNull + JSValueMakeNumber + JSValueMakeString + JSValueMakeUndefined + JSValueProtect + JSValueToBoolean + JSValueToNumber + JSValueToObject + JSValueToStringCopy + JSValueUnprotect + symbolWithPointer(?fastMalloc@WTF@@YAPAXI@Z, ?fastMalloc@WTF@@YAPEAX_K@Z) + symbolWithPointer(?fastZeroedMalloc@WTF@@YAPAXI@Z, ?fastZeroedMalloc@WTF@@YAPEAX_K@Z) + symbolWithPointer(?fastFree@WTF@@YAXPAX@Z, ?fastFree@WTF@@YAXPEAX@Z) + symbolWithPointer(?fastCalloc@WTF@@YAPAXII@Z, ?fastCalloc@WTF@@YAPEAX_K0@Z) + symbolWithPointer(??0CSSComputedStyleDeclaration@WebCore@@AAE@V?$PassRefPtr@VNode@WebCore@@@WTF@@_NABVString@3@@Z, ??0CSSComputedStyleDeclaration@WebCore@@AEAA@V?$PassRefPtr@VNode@WebCore@@@WTF@@_NAEBVString@3@@Z) + symbolWithPointer(??0Mutex@WTF@@QAE@XZ, ??0Mutex@WTF@@QEAA@XZ) + symbolWithPointer(??0ThreadCondition@WTF@@QAE@XZ, ??0ThreadCondition@WTF@@QEAA@XZ) + symbolWithPointer(??1HitTestResult@WebCore@@QAE@XZ, ??1HitTestResult@WebCore@@QEAA@XZ) + symbolWithPointer(??1Mutex@WTF@@QAE@XZ, ??1Mutex@WTF@@QEAA@XZ) + symbolWithPointer(??1ThreadCondition@WTF@@QAE@XZ, ??1ThreadCondition@WTF@@QEAA@XZ) +#if USE(CAIRO) + symbolWithPointer(??$derefIfNotNull@U_cairo_surface@@@WTF@@YAXPAU_cairo_surface@@@Z, ??$derefIfNotNull@U_cairo_surface@@@WTF@@YAXPEAU_cairo_surface@@@Z) + symbolWithPointer(??$refIfNotNull@U_cairo_surface@@@WTF@@YAXPAU_cairo_surface@@@Z, ??$refIfNotNull@U_cairo_surface@@@WTF@@YAXPEAU_cairo_surface@@@Z) +#endif + symbolWithPointer(?addTextMatchMarker@DocumentMarkerController@WebCore@@QAEXPBVRange@2@_N@Z, ?addTextMatchMarker@DocumentMarkerController@WebCore@@QEAAXPEBVRange@2@_N@Z) + symbolWithPointer(?broadcast@ThreadCondition@WTF@@QAEXXZ, ?broadcast@ThreadCondition@WTF@@QEAAXXZ) + symbolWithPointer(?callOnMainThread@WTF@@YAXP6AXPAX@Z0@Z, ?callOnMainThread@WTF@@YAXP6AXPEAX@Z0@Z) +#if ENABLE(INSPECTOR) + ?counterValue@InspectorCounters@WebCore@@SAHW4CounterType@12@@Z + symbolWithPointer(?didBeginFrame@InspectorController@WebCore@@QAEXXZ, ?didBeginFrame@InspectorController@WebCore@@QEAAXXZ) + symbolWithPointer(?didCancelFrame@InspectorController@WebCore@@QAEXXZ, ?didCancelFrame@InspectorController@WebCore@@QEAAXXZ) +#endif + symbolWithPointer(?counterValueForElement@WebCore@@YA?AVString@WTF@@PAVElement@1@@Z, ?counterValueForElement@WebCore@@YA?AVString@WTF@@PEAVElement@1@@Z) + symbolWithPointer(?createThread@WTF@@YAIP6APAXPAX@Z0PBD@Z, ?createThread@WTF@@YAIP6APEAXPEAX@Z0PEBD@Z) + symbolWithPointer(?createThread@WTF@@YAIP6AXPAX@Z0PBD@Z, ?createThread@WTF@@YAIP6AXPEAX@Z0PEBD@Z) + ?currentThread@WTF@@YAIXZ + ?detachThread@WTF@@YAXI@Z + symbolWithPointer(?destroy@StringImpl@WTF@@SAXPAV12@@Z, ?destroy@StringImpl@WTF@@SAXPEAV12@@Z) + symbolWithPointer(?directoryName@WebCore@@YA?AVString@WTF@@ABV23@@Z, ?directoryName@WebCore@@YA?AVString@WTF@@AEBV23@@Z) + ?initializeMainThread@WTF@@YAXXZ + ?initializeThreading@WTF@@YAXXZ + symbolWithPointer(?instrumentationForPage@WebCore@@YAPAVInstrumentingAgents@1@PAVPage@1@@Z, ?instrumentationForPage@WebCore@@YAPEAVInstrumentingAgents@1@PEAVPage@1@@Z) + ?isMainThread@WTF@@YA_NXZ + symbolWithPointer(?lock@Mutex@WTF@@QAEXXZ, ?lock@Mutex@WTF@@QEAAXXZ) + ?lockAtomicallyInitializedStaticMutex@WTF@@YAXXZ + symbolWithPointer(?scriptedAnimationControllerSetThrottled@Document@WebCore@@UAEX_N@Z, ?scriptedAnimationControllerSetThrottled@Document@WebCore@@UEAAX_N@Z) + symbolWithPointer(?signal@ThreadCondition@WTF@@QAEXXZ, ?signal@ThreadCondition@WTF@@QEAAXXZ) + symbolWithPointer(?timedWait@ThreadCondition@WTF@@QAE_NAAVMutex@2@N@Z, ?timedWait@ThreadCondition@WTF@@QEAA_NAEAVMutex@2@N@Z) + symbolWithPointer(?tlsKeyCount@WTF@@YAAAJXZ, ?tlsKeyCount@WTF@@YAAEAJXZ) + symbolWithPointer(?tlsKeys@WTF@@YAPAKXZ, ?tlsKeys@WTF@@YAPEAKXZ) + symbolWithPointer(?tryLock@Mutex@WTF@@QAE_NXZ, ?tryLock@Mutex@WTF@@QEAA_NXZ) + symbolWithPointer(?unlock@Mutex@WTF@@QAEXXZ, ?unlock@Mutex@WTF@@QEAAXXZ) + ?unlockAtomicallyInitializedStaticMutex@WTF@@YAXXZ + symbolWithPointer(?wait@ThreadCondition@WTF@@QAEXAAVMutex@2@@Z, ?wait@ThreadCondition@WTF@@QEAAXAEAVMutex@2@@Z) + ?waitForThreadCompletion@WTF@@YAHI@Z + symbolWithPointer(?waitForThreadCompletion@WTF@@YAHIPAPAX@Z, ?waitForThreadCompletion@WTF@@YAHIPEAPEAX@Z) + symbolWithPointer(?createThread@WTF@@YAIP6APAXPAX@Z0@Z, ?createThread@WTF@@YAIP6APEAXPEAX@Z0@Z) + + ; Re-exports from WebCore for test harnesses + symbolWithPointer(??0HitTestResult@WebCore@@QAE@ABVLayoutPoint@1@@Z, ??0HitTestResult@WebCore@@QEAA@AEBVLayoutPoint@1@@Z) + symbolWithPointer(??0HitTestResult@WebCore@@QAE@ABVLayoutPoint@1@IIII@Z, ??0HitTestResult@WebCore@@QEAA@AEBVLayoutPoint@1@IIII@Z) + symbolWithPointer(??0NodeRenderingContext@WebCore@@QAE@PAVNode@1@@Z, ??0NodeRenderingContext@WebCore@@QEAA@PEAVNode@1@@Z) + symbolWithPointer(??1NodeRenderingContext@WebCore@@QAE@XZ, ??1NodeRenderingContext@WebCore@@QEAA@XZ) + symbolWithPointer(?isReplacementObscured@RenderEmbeddedObject@WebCore@@QBE_NXZ, ?isReplacementObscured@RenderEmbeddedObject@WebCore@@QEBA_NXZ) + symbolWithPointer(??1Range@WebCore@@QAE@XZ, ??1Range@WebCore@@QEAA@XZ) + symbolWithPointer(?toNode@WebCore@@YAPAVNode@1@VJSValue@JSC@@@Z, ?toNode@WebCore@@YAPEAVNode@1@VJSValue@JSC@@@Z) + symbolWithPointer(??0ClientRect@WebCore@@AAE@ABVFloatRect@1@@Z, ??0ClientRect@WebCore@@AEAA@AEBVFloatRect@1@@Z) + symbolWithPointer(??0ClientRect@WebCore@@AAE@ABVIntRect@1@@Z, ??0ClientRect@WebCore@@AEAA@AEBVIntRect@1@@Z) + symbolWithPointer(??0ClientRect@WebCore@@AAE@XZ, ??0ClientRect@WebCore@@AEAA@XZ) + symbolWithPointer(??0ClientRectList@WebCore@@AAE@XZ, ??0ClientRectList@WebCore@@AEAA@XZ) + symbolWithPointer(??1ClientRectList@WebCore@@QAE@XZ, ??1ClientRectList@WebCore@@QEAA@XZ) + symbolWithPointer(??1Cursor@WebCore@@QAE@XZ, ??1Cursor@WebCore@@QEAA@XZ) + symbolWithPointer(??0Cursor@WebCore@@QAE@ABV01@@Z, ??0Cursor@WebCore@@QEAA@AEBV01@@Z) + symbolWithPointer(??0String@WTF@@QAE@PBD@Z, ??0String@WTF@@QEAA@PEBD@Z) + symbolWithPointer(??0String@WTF@@QAE@PB_W@Z, ??0String@WTF@@QEAA@PEB_W@Z) + symbolWithPointer(??0String@WTF@@QAE@PB_WI@Z, ??0String@WTF@@QEAA@PEB_WI@Z) + symbolWithPointer(??0String@WTF@@QAE@VASCIILiteral@1@@Z, ??0String@WTF@@QEAA@VASCIILiteral@1@@Z) + symbolWithPointer(??1SerializedScriptValue@WebCore@@QAE@XZ, ??1SerializedScriptValue@WebCore@@QEAA@XZ) + symbolWithPointer(?absoluteBoundingBoxRect@RenderObject@WebCore@@QBE?AVIntRect@2@_N@Z, ?absoluteBoundingBoxRect@RenderObject@WebCore@@QEBA?AVIntRect@2@_N@Z) + symbolWithPointer(?absoluteBoundingBoxRectIgnoringTransforms@RenderObject@WebCore@@QBE?AVIntRect@2@XZ, ?absoluteBoundingBoxRectIgnoringTransforms@RenderObject@WebCore@@QEBA?AVIntRect@2@XZ) + symbolWithPointer(?description@DocumentMarker@WebCore@@QBEABVString@WTF@@XZ, ?description@DocumentMarker@WebCore@@QEBAAEBVString@WTF@@XZ) + symbolWithPointer(?add@AtomicString@WTF@@CA?AV?$PassRefPtr@VStringImpl@WTF@@@2@PBD@Z, ?add@AtomicString@WTF@@CA?AV?$PassRefPtr@VStringImpl@WTF@@@2@PEBD@Z) + symbolWithPointer(?add@AtomicString@WTF@@CA?AV?$PassRefPtr@VStringImpl@WTF@@@2@PBE@Z, ?add@AtomicString@WTF@@CA?AV?$PassRefPtr@VStringImpl@WTF@@@2@PEBE@Z) + symbolWithPointer(?addSlowCase@AtomicString@WTF@@CA?AV?$PassRefPtr@VStringImpl@WTF@@@2@PAVStringImpl@2@@Z, ?addSlowCase@AtomicString@WTF@@CA?AV?$PassRefPtr@VStringImpl@WTF@@@2@PEAVStringImpl@2@@Z) + symbolWithPointer(?cacheDOMStructure@WebCore@@YAPAVStructure@JSC@@PAVJSDOMGlobalObject@1@PAV23@PBUClassInfo@3@@Z, ?cacheDOMStructure@WebCore@@YAPEAVStructure@JSC@@PEAVJSDOMGlobalObject@1@PEAV23@PEBUClassInfo@3@@Z) + symbolWithPointer(?childItemWithTarget@HistoryItem@WebCore@@QBEPAV12@ABVString@WTF@@@Z, ?childItemWithTarget@HistoryItem@WebCore@@QEBAPEAV12@AEBVString@WTF@@@Z) + ?create@Range@WebCore@@SA?AV?$PassRefPtr@VRange@WebCore@@@WTF@@V?$PassRefPtr@VDocument@WebCore@@@4@V?$PassRefPtr@VNode@WebCore@@@4@H1H@Z + symbolWithPointer(?create@SerializedScriptValue@WebCore@@SA?AV?$PassRefPtr@VSerializedScriptValue@WebCore@@@WTF@@ABVString@4@@Z, ?create@SerializedScriptValue@WebCore@@SA?AV?$PassRefPtr@VSerializedScriptValue@WebCore@@@WTF@@AEBVString@4@@Z) +#if USE(CF) + symbolWithPointer(?createCFString@String@WTF@@QBE?AV?$RetainPtr@PBU__CFString@@@2@XZ, ?createCFString@String@WTF@@QEBA?AV?$RetainPtr@PEBU__CFString@@@2@XZ) +#endif + symbolWithPointer(?createShadowRoot@Element@WebCore@@QAE?AV?$PassRefPtr@VShadowRoot@WebCore@@@WTF@@AAH@Z, ?createShadowRoot@Element@WebCore@@QEAA?AV?$PassRefPtr@VShadowRoot@WebCore@@@WTF@@AEAH@Z) + symbolWithPointer(?createWrapper@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@PAVNode@1@@Z, ?createWrapper@WebCore@@YA?AVJSValue@JSC@@PEAVExecState@3@PEAVJSDOMGlobalObject@1@PEAVNode@1@@Z) + symbolWithPointer(?deprecatedShadowAncestorNode@Node@WebCore@@QBEPAV12@XZ, ?deprecatedShadowAncestorNode@Node@WebCore@@QEBAPEAV12@XZ) + symbolWithPointer(?deserialize@SerializedScriptValue@WebCore@@QAE?AVJSValue@JSC@@PAVExecState@4@PAVJSGlobalObject@4@PAV?$Vector@V?$RefPtr@VMessagePort@WebCore@@@WTF@@$00VCrashOnOverflow@2@@WTF@@W4SerializationErrorMode@2@@Z, ?deserialize@SerializedScriptValue@WebCore@@QEAA?AVJSValue@JSC@@PEAVExecState@4@PEAVJSGlobalObject@4@PEAV?$Vector@V?$RefPtr@VMessagePort@WebCore@@@WTF@@$00VCrashOnOverflow@2@@WTF@@W4SerializationErrorMode@2@@Z) + symbolWithPointer(?equal@WTF@@YA_NPBVStringImpl@1@PBE@Z, ?equal@WTF@@YA_NPEBVStringImpl@1@PEBE@Z) + symbolWithPointer(?equal@WTF@@YA_NPBVStringImpl@1@0@Z, ?equal@WTF@@YA_NPEBVStringImpl@1@0@Z) + symbolWithPointer(?equalIgnoringCase@WTF@@YA_NPBVStringImpl@1@PBE@Z, ?equalIgnoringCase@WTF@@YA_NPEBVStringImpl@1@PEBE@Z) + symbolWithPointer(?externalRepresentation@WebCore@@YA?AVString@WTF@@PAVElement@1@I@Z, ?externalRepresentation@WebCore@@YA?AVString@WTF@@PEAVElement@1@I@Z) + symbolWithPointer(?find@StringImpl@WTF@@QAEIPAV12@I@Z, ?find@StringImpl@WTF@@QEAA_KPEAV12@I@Z) + symbolWithPointer(?find@StringImpl@WTF@@QAEIPAV12@@Z, ?find@StringImpl@WTF@@QEAA_KPEAV12@@Z) + symbolWithPointer(?absoluteCaretBounds@FrameSelection@WebCore@@QAE?AVIntRect@2@XZ, ?absoluteCaretBounds@FrameSelection@WebCore@@QEAA?AVIntRect@2@XZ) + symbolWithPointer(?bounds@FrameSelection@WebCore@@QBE?AVFloatRect@2@_N@Z, ?bounds@FrameSelection@WebCore@@QEBA?AVFloatRect@2@_N@Z) + symbolWithPointer(?fromUTF8@String@WTF@@SA?AV12@PBE@Z, ?fromUTF8@String@WTF@@SA?AV12@PEBE_K@Z) + symbolWithPointer(?fromUTF8WithLatin1Fallback@String@WTF@@SA?AV12@PBEI@Z, ?fromUTF8WithLatin1Fallback@String@WTF@@SA?AV12@PEBE_K@Z) + symbolWithPointer(?garbageCollectDocumentResources@CachedResourceLoader@WebCore@@QAEXXZ, ?garbageCollectDocumentResources@CachedResourceLoader@WebCore@@QEAAXXZ) + symbolWithPointer(?getCachedDOMStructure@WebCore@@YAPAVStructure@JSC@@PAVJSDOMGlobalObject@1@PBUClassInfo@3@@Z, ?getCachedDOMStructure@WebCore@@YAPEAVStructure@JSC@@PEAVJSDOMGlobalObject@1@PEBUClassInfo@3@@Z) + symbolWithPointer(?getData16SlowCase@StringImpl@WTF@@ABEPB_WXZ, ?getData16SlowCase@StringImpl@WTF@@AEBAPEB_WXZ) + symbolWithPointer(?getLocationAndLengthFromRange@TextIterator@WebCore@@SA_NPAVNode@2@PBVRange@2@AAI2@Z, ?getLocationAndLengthFromRange@TextIterator@WebCore@@SA_NPEAVNode@2@PEBVRange@2@AEA_K2@Z) + symbolWithPointer(?hitTest@RenderView@WebCore@@QAE_NABVHitTestRequest@2@AAVHitTestResult@2@@Z, ?hitTest@RenderView@WebCore@@QEAA_NAEBVHitTestRequest@2@AEAVHitTestResult@2@@Z) + ?inputTag@HTMLNames@WebCore@@3VQualifiedName@2@B + symbolWithPointer(?intersects@IntRect@WebCore@@QBE_NABV12@@Z, ?intersects@IntRect@WebCore@@QEBA_NAEBV12@@Z) + symbolWithPointer(?item@StaticNodeList@WebCore@@UBEPAVNode@2@I@Z, ?item@StaticNodeList@WebCore@@UEBAPEAVNode@2@I@Z) + ?selectTag@HTMLNames@WebCore@@3VQualifiedName@2@B +#if ENABLE(INSPECTOR) + symbolWithPointer(?getHighlight@InspectorController@WebCore@@QBEXPAUHighlight@2@@Z, ?getHighlight@InspectorController@WebCore@@QEBAXPEAUHighlight@2@@Z) + symbolWithPointer(?instrumentingAgentsForPage@InspectorInstrumentation@WebCore@@CAPAVInstrumentingAgents@2@PAVPage@2@@Z, ?instrumentingAgentsForPage@InspectorInstrumentation@WebCore@@CAPEAVInstrumentingAgents@2@PEAVPage@2@@Z) + ?s_frontendCounter@InspectorInstrumentation@WebCore@@0HA + symbolWithPointer(?isUnderTest@InspectorFrontendClientLocal@WebCore@@UAE_NXZ, ?isUnderTest@InspectorFrontendClientLocal@WebCore@@UEAA_NXZ) + symbolWithPointer(??0InspectorFrontendClientLocal@WebCore@@QAE@PAVInspectorController@1@PAVPage@1@V?$PassOwnPtr@VSettings@InspectorFrontendClientLocal@WebCore@@@WTF@@@Z, ??0InspectorFrontendClientLocal@WebCore@@QEAA@PEAVInspectorController@1@PEAVPage@1@V?$PassOwnPtr@VSettings@InspectorFrontendClientLocal@WebCore@@@WTF@@@Z) + symbolWithPointer(??1InspectorFrontendClientLocal@WebCore@@UAE@XZ, ??1InspectorFrontendClientLocal@WebCore@@UEAA@XZ) + symbolWithPointer(?changeAttachedWindowHeight@InspectorFrontendClientLocal@WebCore@@UAEXI@Z, ?changeAttachedWindowHeight@InspectorFrontendClientLocal@WebCore@@UEAAXI@Z) + symbolWithPointer(?changeAttachedWindowWidth@InspectorFrontendClientLocal@WebCore@@UAEXI@Z, ?changeAttachedWindowWidth@InspectorFrontendClientLocal@WebCore@@UEAAXI@Z) + symbolWithPointer(?connectFrontend@InspectorController@WebCore@@QAEXPAVInspectorFrontendChannel@2@@Z, ?connectFrontend@InspectorController@WebCore@@QEAAXPEAVInspectorFrontendChannel@2@@Z) + symbolWithPointer(?doDispatchMessageOnFrontendPage@InspectorClient@WebCore@@SA_NPAVPage@2@ABVString@WTF@@@Z, ?doDispatchMessageOnFrontendPage@InspectorClient@WebCore@@SA_NPEAVPage@2@AEBVString@WTF@@@Z) + symbolWithPointer(?frontendLoaded@InspectorFrontendClientLocal@WebCore@@UAEXXZ, ?frontendLoaded@InspectorFrontendClientLocal@WebCore@@UEAAXXZ) + symbolWithPointer(?getProperty@Settings@InspectorFrontendClientLocal@WebCore@@UAE?AVString@WTF@@ABV45@@Z, ?getProperty@Settings@InspectorFrontendClientLocal@WebCore@@UEAA?AVString@WTF@@AEBV45@@Z) + symbolWithPointer(?moveWindowBy@InspectorFrontendClientLocal@WebCore@@UAEXMM@Z, ?moveWindowBy@InspectorFrontendClientLocal@WebCore@@UEAAXMM@Z) + symbolWithPointer(?openInNewTab@InspectorFrontendClientLocal@WebCore@@UAEXABVString@WTF@@@Z, ?openInNewTab@InspectorFrontendClientLocal@WebCore@@UEAAXAEBVString@WTF@@@Z) + symbolWithPointer(?requestSetDockSide@InspectorFrontendClientLocal@WebCore@@UAEXW4DockSide@InspectorFrontendClient@2@@Z, ?requestSetDockSide@InspectorFrontendClientLocal@WebCore@@UEAAXW4DockSide@InspectorFrontendClient@2@@Z) + symbolWithPointer(?sendMessageToBackend@InspectorFrontendClientLocal@WebCore@@UAEXABVString@WTF@@@Z, ?sendMessageToBackend@InspectorFrontendClientLocal@WebCore@@UEAAXAEBVString@WTF@@@Z) + symbolWithPointer(?setInspectorFrontendClient@InspectorController@WebCore@@QAEXV?$PassOwnPtr@VInspectorFrontendClient@WebCore@@@WTF@@@Z, ?setInspectorFrontendClient@InspectorController@WebCore@@QEAAXV?$PassOwnPtr@VInspectorFrontendClient@WebCore@@@WTF@@@Z) + symbolWithPointer(?setProperty@Settings@InspectorFrontendClientLocal@WebCore@@UAEXABVString@WTF@@0@Z, ?setProperty@Settings@InspectorFrontendClientLocal@WebCore@@UEAAXAEBVString@WTF@@0@Z) + symbolWithPointer(?windowObjectCleared@InspectorFrontendClientLocal@WebCore@@UAEXXZ, ?windowObjectCleared@InspectorFrontendClientLocal@WebCore@@UEAAXXZ) + symbolWithPointer(?setResourcesDataSizeLimitsFromInternals@InspectorController@WebCore@@QAEXHH@Z, ?setResourcesDataSizeLimitsFromInternals@InspectorController@WebCore@@QEAAXHH@Z) + symbolWithPointer(?pathByAppendingComponent@WebCore@@YA?AVString@WTF@@ABV23@0@Z, ?pathByAppendingComponent@WebCore@@YA?AVString@WTF@@AEBV23@0@Z) + symbolWithPointer(?profilerEnabled@InspectorController@WebCore@@QAE_NXZ, ?profilerEnabled@InspectorController@WebCore@@QEAA_NXZ) + symbolWithPointer(?setProfilerEnabled@InspectorController@WebCore@@QAEX_N@Z, ?setProfilerEnabled@InspectorController@WebCore@@QEAAX_N@Z) + symbolWithPointer(?disconnectFrontend@InspectorController@WebCore@@QAEXXZ, ?disconnectFrontend@InspectorController@WebCore@@QEAAXXZ) +#endif + symbolWithPointer(?isActiveInsertionPoint@WebCore@@YA_NPBVNode@1@@Z, ?isActiveInsertionPoint@WebCore@@YA_NPEBVNode@1@@Z) + ?isCSSExclusionsEnabled@RuntimeEnabledFeatures@WebCore@@0_NA + symbolWithPointer(?isPreloaded@CachedResourceLoader@WebCore@@QBE_NABVString@WTF@@@Z, ?isPreloaded@CachedResourceLoader@WebCore@@QEBA_NAEBVString@WTF@@@Z) + symbolWithPointer(?jsArray@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@V?$PassRefPtr@VDOMStringList@WebCore@@@WTF@@@Z, ?jsArray@WebCore@@YA?AVJSValue@JSC@@PEAVExecState@3@PEAVJSDOMGlobalObject@1@V?$PassRefPtr@VDOMStringList@WebCore@@@WTF@@@Z) + symbolWithPointer(?lastChangeWasUserEdit@HTMLTextFormControlElement@WebCore@@QBE_NXZ, ?lastChangeWasUserEdit@HTMLTextFormControlElement@WebCore@@QEBA_NXZ) + symbolWithPointer(?mainThreadScrollingReasonsAsText@Page@WebCore@@QAE?AVString@WTF@@XZ, ?mainThreadScrollingReasonsAsText@Page@WebCore@@QEAA?AVString@WTF@@XZ) + symbolWithPointer(?markerTextForListItem@WebCore@@YA?AVString@WTF@@PAVElement@1@@Z, ?markerTextForListItem@WebCore@@YA?AVString@WTF@@PEAVElement@1@@Z) + symbolWithPointer(?nextSibling@ComposedShadowTreeWalker@WebCore@@QAEXXZ, ?nextSibling@ComposedShadowTreeWalker@WebCore@@QEAAXXZ) + symbolWithPointer(?firstChild@ComposedShadowTreeWalker@WebCore@@QAEXXZ, ?firstChild@ComposedShadowTreeWalker@WebCore@@QEAAXXZ) + symbolWithPointer(?lastChild@ComposedShadowTreeWalker@WebCore@@QAEXXZ, ?lastChild@ComposedShadowTreeWalker@WebCore@@QEAAXXZ) + symbolWithPointer(?length@StaticNodeList@WebCore@@UBEIXZ, ?length@StaticNodeList@WebCore@@UEBAIXZ) + ?localUserSpecificStorageDirectory@WebCore@@YA?AVString@WTF@@XZ + symbolWithPointer(?namedItem@StaticNodeList@WebCore@@UBEPAVNode@2@ABVAtomicString@WTF@@@Z, ?namedItem@StaticNodeList@WebCore@@UEBAPEAVNode@2@AEBVAtomicString@WTF@@@Z) + symbolWithPointer(?next@ComposedShadowTreeWalker@WebCore@@QAEXXZ, ?next@ComposedShadowTreeWalker@WebCore@@QEAAXXZ) + symbolWithPointer(?previous@ComposedShadowTreeWalker@WebCore@@QAEXXZ, ?previous@ComposedShadowTreeWalker@WebCore@@QEAAXXZ) + ?number@String@WTF@@SA?AV12@_J@Z + ?number@String@WTF@@SA?AV12@_K@Z + ?number@String@WTF@@SA?AV12@H@Z + ?number@String@WTF@@SA?AV12@I@Z + ?number@String@WTF@@SA?AV12@NIW4TrailingZerosTruncatingPolicy@2@@Z + symbolWithPointer(?numberOfScopedHTMLStyleChildren@Node@WebCore@@QBEIXZ, ?numberOfScopedHTMLStyleChildren@Node@WebCore@@QEBA_KXZ) + symbolWithPointer(?completeURL@Document@WebCore@@QBE?AVKURL@2@ABVString@WTF@@@Z, ?completeURL@Document@WebCore@@QEBA?AVKURL@2@AEBVString@WTF@@@Z) + symbolWithPointer(?page@Document@WebCore@@QBEPAVPage@2@XZ, ?page@Document@WebCore@@QEBAPEAVPage@2@XZ) + symbolWithPointer(?pageNumberForElement@PrintContext@WebCore@@SAHPAVElement@2@ABVFloatSize@2@@Z, ?pageNumberForElement@PrintContext@WebCore@@SAHPEAVElement@2@AEBVFloatSize@2@@Z) + symbolWithPointer(?paintControlTints@FrameView@WebCore@@AAEXXZ, ?paintControlTints@FrameView@WebCore@@AEAAXXZ) + symbolWithPointer(?placeholderShouldBeVisible@HTMLTextFormControlElement@WebCore@@QBE_NXZ, ?placeholderShouldBeVisible@HTMLTextFormControlElement@WebCore@@QEBA_NXZ) + symbolWithPointer(?rangeFromLocationAndLength@TextIterator@WebCore@@SA?AV?$PassRefPtr@VRange@WebCore@@@WTF@@PAVContainerNode@2@HH_N@Z, ?rangeFromLocationAndLength@TextIterator@WebCore@@SA?AV?$PassRefPtr@VRange@WebCore@@@WTF@@PEAVContainerNode@2@HH_N@Z) + symbolWithPointer(?rectBasedTestResult@HitTestResult@WebCore@@QBEABV?$ListHashSet@V?$RefPtr@VNode@WebCore@@@WTF@@$0BAA@U?$PtrHash@V?$RefPtr@VNode@WebCore@@@WTF@@@2@@WTF@@XZ, ?rectBasedTestResult@HitTestResult@WebCore@@QEBAAEBV?$ListHashSet@V?$RefPtr@VNode@WebCore@@@WTF@@$0BAA@U?$PtrHash@V?$RefPtr@VNode@WebCore@@@WTF@@@2@@WTF@@XZ) + symbolWithPointer(?rectForPoint@HitTestLocation@WebCore@@SA?AVIntRect@2@ABVLayoutPoint@2@IIII@Z, ?rectForPoint@HitTestLocation@WebCore@@SA?AVIntRect@2@AEBVLayoutPoint@2@IIII@Z) + symbolWithPointer(?reload@FrameLoader@WebCore@@QAEX_N@Z, ?reload@FrameLoader@WebCore@@QEAAX_N@Z) + symbolWithPointer(?remove@String@WTF@@QAEXIH@Z, ?remove@String@WTF@@QEAAXIH@Z) + symbolWithPointer(?removedLastRef@Node@WebCore@@AAEXXZ, ?removedLastRef@Node@WebCore@@AEAAXXZ) + symbolWithPointer(?reverseFind@StringImpl@WTF@@QAEI_WI@Z, ?reverseFind@StringImpl@WTF@@QEAA_K_WI@Z) + symbolWithPointer(?saveDocumentAndScrollState@HistoryController@WebCore@@QAEXXZ, ?saveDocumentAndScrollState@HistoryController@WebCore@@QEAAXXZ) + symbolWithPointer(?scriptExecutionContext@JSDOMGlobalObject@WebCore@@QBEPAVScriptExecutionContext@2@XZ, ?scriptExecutionContext@JSDOMGlobalObject@WebCore@@QEBAPEAVScriptExecutionContext@2@XZ) + symbolWithPointer(?scriptNameToCode@WebCore@@YA?AW4UScriptCode@@ABVString@WTF@@@Z, ?scriptNameToCode@WebCore@@YA?AW4UScriptCode@@AEBVString@WTF@@@Z) + symbolWithPointer(?scrollElementToRect@FrameView@WebCore@@QAEXPAVElement@2@ABVIntRect@2@@Z, ?scrollElementToRect@FrameView@WebCore@@QEAAXPEAVElement@2@AEBVIntRect@2@@Z) + symbolWithPointer(?scrollingStateTreeAsText@Page@WebCore@@QAE?AVString@WTF@@XZ, ?scrollingStateTreeAsText@Page@WebCore@@QEAA?AVString@WTF@@XZ) + symbolWithPointer(?setCanStartMedia@Page@WebCore@@QAEX_N@Z, ?setCanStartMedia@Page@WebCore@@QEAAX_N@Z) + symbolWithPointer(?setCursiveFontFamily@Settings@WebCore@@QAEXABVAtomicString@WTF@@W4UScriptCode@@@Z, ?setCursiveFontFamily@Settings@WebCore@@QEAAXAEBVAtomicString@WTF@@W4UScriptCode@@@Z) + symbolWithPointer(?setDeviceScaleFactor@Page@WebCore@@QAEXM@Z, ?setDeviceScaleFactor@Page@WebCore@@QEAAXM@Z) + symbolWithPointer(?setDOMException@WebCore@@YAXPAVExecState@JSC@@H@Z, ?setDOMException@WebCore@@YAXPEAVExecState@JSC@@H@Z) + symbolWithPointer(?setFantasyFontFamily@Settings@WebCore@@QAEXABVAtomicString@WTF@@W4UScriptCode@@@Z, ?setFantasyFontFamily@Settings@WebCore@@QEAAXAEBVAtomicString@WTF@@W4UScriptCode@@@Z) + symbolWithPointer(?setFixedFontFamily@Settings@WebCore@@QAEXABVAtomicString@WTF@@W4UScriptCode@@@Z, ?setFixedFontFamily@Settings@WebCore@@QEAAXAEBVAtomicString@WTF@@W4UScriptCode@@@Z) + symbolWithPointer(?setFooterHeight@FrameView@WebCore@@QAEXH@Z, ?setFooterHeight@FrameView@WebCore@@QEAAXH@Z) + symbolWithPointer(?setHeaderHeight@FrameView@WebCore@@QAEXH@Z, ?setHeaderHeight@FrameView@WebCore@@QEAAXH@Z) + symbolWithPointer(?setImagesEnabled@Settings@WebCore@@QAEX_N@Z, ?setImagesEnabled@Settings@WebCore@@QEAAX_N@Z) + ?setMockScrollbarsEnabled@Settings@WebCore@@SAX_N@Z + ?mockScrollbarsEnabled@Settings@WebCore@@SA_NXZ + ?setUsesOverlayScrollbars@Settings@WebCore@@SAX_N@Z + symbolWithPointer(?setPageScaleFactor@Page@WebCore@@QAEXMABVIntPoint@2@@Z, ?setPageScaleFactor@Page@WebCore@@QEAAXMAEBVIntPoint@2@@Z) + symbolWithPointer(?setPagination@Page@WebCore@@QAEXABUPagination@2@@Z, ?setPagination@Page@WebCore@@QEAAXAEBUPagination@2@@Z) + symbolWithPointer(?setPictographFontFamily@Settings@WebCore@@QAEXABVAtomicString@WTF@@W4UScriptCode@@@Z, ?setPictographFontFamily@Settings@WebCore@@QEAAXAEBVAtomicString@WTF@@W4UScriptCode@@@Z) + symbolWithPointer(?setSansSerifFontFamily@Settings@WebCore@@QAEXABVAtomicString@WTF@@W4UScriptCode@@@Z, ?setSansSerifFontFamily@Settings@WebCore@@QEAAXAEBVAtomicString@WTF@@W4UScriptCode@@@Z) + symbolWithPointer(?setScrollbarsSuppressed@ScrollView@WebCore@@QAEX_N0@Z, ?setScrollbarsSuppressed@ScrollView@WebCore@@QEAAX_N0@Z) + symbolWithPointer(?setDelegatesScrolling@ScrollView@WebCore@@QAEX_N@Z, ?setDelegatesScrolling@ScrollView@WebCore@@QEAAX_N@Z) + symbolWithPointer(?setScrollOffsetFromInternals@ScrollableArea@WebCore@@QAEXABVIntPoint@2@@Z, ?setScrollOffsetFromInternals@ScrollableArea@WebCore@@QEAAXAEBVIntPoint@2@@Z) + symbolWithPointer(?setSerifFontFamily@Settings@WebCore@@QAEXABVAtomicString@WTF@@W4UScriptCode@@@Z, ?setSerifFontFamily@Settings@WebCore@@QEAAXAEBVAtomicString@WTF@@W4UScriptCode@@@Z) + symbolWithPointer(?setStandardFontFamily@Settings@WebCore@@QAEXABVAtomicString@WTF@@W4UScriptCode@@@Z, ?setStandardFontFamily@Settings@WebCore@@QEAAXAEBVAtomicString@WTF@@W4UScriptCode@@@Z) + symbolWithPointer(?setStorageBlockingPolicy@Settings@WebCore@@QAEXW4StorageBlockingPolicy@SecurityOrigin@2@@Z, ?setStorageBlockingPolicy@Settings@WebCore@@QEAAXW4StorageBlockingPolicy@SecurityOrigin@2@@Z) + symbolWithPointer(?setSuggestedValue@HTMLInputElement@WebCore@@QAEXABVString@WTF@@@Z, ?setSuggestedValue@HTMLInputElement@WebCore@@QEAAXAEBVString@WTF@@@Z) + symbolWithPointer(?setEditingValue@HTMLInputElement@WebCore@@QAEXABVString@WTF@@@Z, ?setEditingValue@HTMLInputElement@WebCore@@QEAAXAEBVString@WTF@@@Z) + symbolWithPointer(?setPseudo@Element@WebCore@@QAEXABVAtomicString@WTF@@@Z, ?setPseudo@Element@WebCore@@QEAAXAEBVAtomicString@WTF@@@Z) + symbolWithPointer(?setMediaTypeOverride@Settings@WebCore@@QAEXABVString@WTF@@@Z, ?setMediaTypeOverride@Settings@WebCore@@QEAAXAEBVString@WTF@@@Z) + symbolWithPointer(?settings@Document@WebCore@@QBEPAVSettings@2@XZ, ?settings@Document@WebCore@@QEBAPEAVSettings@2@XZ) + symbolWithPointer(?settings@Frame@WebCore@@QBEPAVSettings@2@XZ, ?settings@Frame@WebCore@@QEBAPEAVSettings@2@XZ) + symbolWithPointer(?shadow@Element@WebCore@@QBEPAVElementShadow@2@XZ, ?shadow@Element@WebCore@@QEBAPEAVElementShadow@2@XZ) + symbolWithPointer(?substring@String@WTF@@QBE?AV12@II@Z, ?substring@String@WTF@@QEBA?AV12@II@Z) + symbolWithPointer(?suggestedValue@HTMLInputElement@WebCore@@QBEABVString@WTF@@XZ, ?suggestedValue@HTMLInputElement@WebCore@@QEBAAEBVString@WTF@@XZ) + symbolWithPointer(?target@HistoryItem@WebCore@@QBEABVString@WTF@@XZ, ?target@HistoryItem@WebCore@@QEBAAEBVString@WTF@@XZ) + symbolWithPointer(?text@Range@WebCore@@QBE?AVString@WTF@@XZ, ?text@Range@WebCore@@QEBA?AVString@WTF@@XZ) + ?textareaTag@HTMLNames@WebCore@@3VQualifiedName@2@B + symbolWithPointer(?textContent@Node@WebCore@@QBE?AVString@WTF@@_N@Z, ?textContent@Node@WebCore@@QEBA?AVString@WTF@@_N@Z) + symbolWithPointer(?toDocument@WebCore@@YAPAVDocument@1@VJSValue@JSC@@@Z, ?toDocument@WebCore@@YAPEAVDocument@1@VJSValue@JSC@@@Z) + symbolWithPointer(?toArrayBuffer@WebCore@@YAPAVArrayBuffer@WTF@@VJSValue@JSC@@@Z, ?toArrayBuffer@WebCore@@YAPEAVArrayBuffer@WTF@@VJSValue@JSC@@@Z) + symbolWithPointer(?toDOMStringList@WebCore@@YA?AV?$PassRefPtr@VDOMStringList@WebCore@@@WTF@@PAVExecState@JSC@@VJSValue@5@@Z, ?toDOMStringList@WebCore@@YA?AV?$PassRefPtr@VDOMStringList@WebCore@@@WTF@@PEAVExecState@JSC@@VJSValue@5@@Z) + symbolWithPointer(?toElement@WebCore@@YAPAVElement@1@VJSValue@JSC@@@Z, ?toElement@WebCore@@YAPEAVElement@1@VJSValue@JSC@@@Z) + symbolWithPointer(?toJS@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@PAVArrayBuffer@WTF@@@Z, ?toJS@WebCore@@YA?AVJSValue@JSC@@PEAVExecState@3@PEAVJSDOMGlobalObject@1@PEAVArrayBuffer@WTF@@@Z) + symbolWithPointer(?toJS@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@PAVCSSStyleDeclaration@1@@Z, ?toJS@WebCore@@YA?AVJSValue@JSC@@PEAVExecState@3@PEAVJSDOMGlobalObject@1@PEAVCSSStyleDeclaration@1@@Z) + symbolWithPointer(?toJS@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@PAVClientRect@1@@Z, ?toJS@WebCore@@YA?AVJSValue@JSC@@PEAVExecState@3@PEAVJSDOMGlobalObject@1@PEAVClientRect@1@@Z) + symbolWithPointer(?toJS@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@PAVClientRectList@1@@Z, ?toJS@WebCore@@YA?AVJSValue@JSC@@PEAVExecState@3@PEAVJSDOMGlobalObject@1@PEAVClientRectList@1@@Z) + symbolWithPointer(?toJS@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@PAVNode@1@@Z, ?toJS@WebCore@@YA?AVJSValue@JSC@@PEAVExecState@3@PEAVJSDOMGlobalObject@1@PEAVNode@1@@Z) + symbolWithPointer(?toJS@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@PAVRange@1@@Z, ?toJS@WebCore@@YA?AVJSValue@JSC@@PEAVExecState@3@PEAVJSDOMGlobalObject@1@PEAVRange@1@@Z) + symbolWithPointer(?toJS@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@PAVNodeList@1@@Z, ?toJS@WebCore@@YA?AVJSValue@JSC@@PEAVExecState@3@PEAVJSDOMGlobalObject@1@PEAVNodeList@1@@Z) + symbolWithPointer(?toRange@WebCore@@YAPAVRange@1@VJSValue@JSC@@@Z, ?toRange@WebCore@@YAPEAVRange@1@VJSValue@JSC@@@Z) + symbolWithPointer(?treeScope@Node@WebCore@@QBEPAVTreeScope@2@XZ, ?treeScope@Node@WebCore@@QEBAPEAVTreeScope@2@XZ) + symbolWithPointer(?isTreeScope@Node@WebCore@@QBE_NXZ, ?isTreeScope@Node@WebCore@@QEBA_NXZ) + symbolWithPointer(?updateLayoutIgnorePendingStylesheets@Document@WebCore@@QAEXXZ, ?updateLayoutIgnorePendingStylesheets@Document@WebCore@@QEAAXXZ) + symbolWithPointer(?utf8@String@WTF@@QBE?AVCString@2@W4ConversionMode@12@@Z, ?utf8@String@WTF@@QEBA?AVCString@2@W4ConversionMode@12@@Z) + symbolWithPointer(?view@Document@WebCore@@QBEPAVFrameView@2@XZ, ?view@Document@WebCore@@QEBAPEAVFrameView@2@XZ) + symbolWithPointer(??1ContextDestructionObserver@WebCore@@MAE@XZ, ??1ContextDestructionObserver@WebCore@@MEAA@XZ) + symbolWithPointer(?contextDestroyed@ContextDestructionObserver@WebCore@@UAEXXZ, ?contextDestroyed@ContextDestructionObserver@WebCore@@UEAAXXZ) + symbolWithPointer(??0ContextDestructionObserver@WebCore@@QAE@PAVScriptExecutionContext@1@@Z, ??0ContextDestructionObserver@WebCore@@QEAA@PEAVScriptExecutionContext@1@@Z) + symbolWithPointer(?selectionStartHasMarkerFor@Editor@WebCore@@QBE_NW4MarkerType@DocumentMarker@2@HH@Z, ?selectionStartHasMarkerFor@Editor@WebCore@@QEBA_NW4MarkerType@DocumentMarker@2@HH@Z) + symbolWithPointer(?isContinuousSpellCheckingEnabled@Editor@WebCore@@QBE_NXZ, ?isContinuousSpellCheckingEnabled@Editor@WebCore@@QEBA_NXZ) + symbolWithPointer(?toggleContinuousSpellChecking@Editor@WebCore@@QAEXXZ, ?toggleContinuousSpellChecking@Editor@WebCore@@QEAAXXZ) + symbolWithPointer(?toggleOverwriteModeEnabled@Editor@WebCore@@QAEXXZ, ?toggleOverwriteModeEnabled@Editor@WebCore@@QEAAXXZ) +#if ENABLE(FULLSCREEN_API) + symbolWithPointer(?webkitWillEnterFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z, ?webkitWillEnterFullScreenForElement@Document@WebCore@@QEAAXPEAVElement@2@@Z) + symbolWithPointer(?webkitDidEnterFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z, ?webkitDidEnterFullScreenForElement@Document@WebCore@@QEAAXPEAVElement@2@@Z) + symbolWithPointer(?webkitWillExitFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z, ?webkitWillExitFullScreenForElement@Document@WebCore@@QEAAXPEAVElement@2@@Z) + symbolWithPointer(?webkitDidExitFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z, ?webkitDidExitFullScreenForElement@Document@WebCore@@QEAAXPEAVElement@2@@Z) +#endif + symbolWithPointer(?restrictScaleFactorToInitialScaleIfNotUserScalable@WebCore@@YAXAAUViewportAttributes@1@@Z, ?restrictScaleFactorToInitialScaleIfNotUserScalable@WebCore@@YAXAEAUViewportAttributes@1@@Z) + symbolWithPointer(?restrictMinimumScaleFactorToViewportSize@WebCore@@YAXAAUViewportAttributes@1@VIntSize@1@M@Z, ?restrictMinimumScaleFactorToViewportSize@WebCore@@YAXAEAUViewportAttributes@1@VIntSize@1@M@Z) + ?computeViewportAttributes@WebCore@@YA?AUViewportAttributes@1@UViewportArguments@1@HHHMVIntSize@1@@Z + symbolWithPointer(?viewportArguments@Page@WebCore@@QBE?AUViewportArguments@2@XZ, ?viewportArguments@Page@WebCore@@QEBA?AUViewportArguments@2@XZ) + symbolWithPointer(?isPageBoxVisible@Document@WebCore@@QAE_NH@Z, ?isPageBoxVisible@Document@WebCore@@QEAA_NH@Z) + symbolWithPointer(?isActive@InsertionPoint@WebCore@@QBE_NXZ, ?isActive@InsertionPoint@WebCore@@QEBA_NXZ) + symbolWithPointer(?isSuspended@AnimationController@WebCore@@QBE_NXZ, ?isSuspended@AnimationController@WebCore@@QEBA_NXZ) + symbolWithPointer(?suspendAnimations@AnimationController@WebCore@@QAEXXZ, ?suspendAnimations@AnimationController@WebCore@@QEAAXXZ) + symbolWithPointer(?resumeAnimations@AnimationController@WebCore@@QAEXXZ, ?resumeAnimations@AnimationController@WebCore@@QEAAXXZ) + symbolWithPointer(?setAllowsRoundingHacks@TextRun@WebCore@@SAX_N@Z, ?setAllowsRoundingHacks@TextRun@WebCore@@SAX_N@Z) + symbolWithPointer(?registerURLSchemeAsBypassingContentSecurityPolicy@SchemeRegistry@WebCore@@SAXABVString@WTF@@@Z, ?registerURLSchemeAsBypassingContentSecurityPolicy@SchemeRegistry@WebCore@@SAXAEBVString@WTF@@@Z) + symbolWithPointer(?removeURLSchemeRegisteredAsBypassingContentSecurityPolicy@SchemeRegistry@WebCore@@SAXABVString@WTF@@@Z, ?removeURLSchemeRegisteredAsBypassingContentSecurityPolicy@SchemeRegistry@WebCore@@SAXAEBVString@WTF@@@Z) + symbolWithPointer(?numberOfPages@PrintContext@WebCore@@SAHPAVFrame@2@ABVFloatSize@2@@Z, ?numberOfPages@PrintContext@WebCore@@SAHPEAVFrame@2@AEBVFloatSize@2@@Z) + symbolWithPointer(?pageProperty@PrintContext@WebCore@@SA?AVString@WTF@@PAVFrame@2@PBDH@Z, ?pageProperty@PrintContext@WebCore@@SA?AVString@WTF@@PEAVFrame@2@PEBDH@Z) + symbolWithPointer(?pageSizeAndMarginsInPixels@PrintContext@WebCore@@SA?AVString@WTF@@PAVFrame@2@HHHHHHH@Z, ?pageSizeAndMarginsInPixels@PrintContext@WebCore@@SA?AVString@WTF@@PEAVFrame@2@HHHHHHH@Z) + symbolWithPointer(?close@DOMWindow@WebCore@@QAEXPAVScriptExecutionContext@2@@Z, ?close@DOMWindow@WebCore@@QEAAXPEAVScriptExecutionContext@2@@Z) + symbolWithPointer(?document@DOMWindow@WebCore@@QBEPAVDocument@2@XZ, ?document@DOMWindow@WebCore@@QEBAPEAVDocument@2@XZ) + symbolWithPointer(?open@DOMWindow@WebCore@@QAE?AV?$PassRefPtr@VDOMWindow@WebCore@@@WTF@@ABVString@4@ABVAtomicString@4@0PAV12@2@Z, ?open@DOMWindow@WebCore@@QEAA?AV?$PassRefPtr@VDOMWindow@WebCore@@@WTF@@AEBVString@4@AEBVAtomicString@4@0PEAV12@2@Z) + symbolWithPointer(?toJS@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@PAVDOMWindow@1@@Z, ?toJS@WebCore@@YA?AVJSValue@JSC@@PEAVExecState@3@PEAVJSDOMGlobalObject@1@PEAVDOMWindow@1@@Z) + symbolWithPointer(?layerTreeAsText@Frame@WebCore@@QBE?AVString@WTF@@I@Z, ?layerTreeAsText@Frame@WebCore@@QEBA?AVString@WTF@@I@Z) + symbolWithPointer(?trackedRepaintRectsAsText@Frame@WebCore@@QBE?AVString@WTF@@XZ, ?trackedRepaintRectsAsText@Frame@WebCore@@QEBA?AVString@WTF@@XZ) + symbolWithPointer(?setTracksRepaints@FrameView@WebCore@@QAEX_N@Z, ?setTracksRepaints@FrameView@WebCore@@QEAAX_N@Z) + symbolWithPointer(??1BitmapImage@WebCore@@UAE@XZ, ??1BitmapImage@WebCore@@UEAA@XZ) + symbolWithPointer(??0BitmapImage@WebCore@@IAE@PAVImageObserver@1@@Z, ??0BitmapImage@WebCore@@IEAA@PEAVImageObserver@1@@Z) + symbolWithPointer(?isBitmapImage@BitmapImage@WebCore@@UBE_NXZ, ?isBitmapImage@BitmapImage@WebCore@@UEBA_NXZ) + symbolWithPointer(?currentFrameKnownToBeOpaque@BitmapImage@WebCore@@UAE_NXZ, ?currentFrameKnownToBeOpaque@BitmapImage@WebCore@@UEAA_NXZ) + symbolWithPointer(?hasSingleSecurityOrigin@BitmapImage@WebCore@@UBE_NXZ, ?hasSingleSecurityOrigin@BitmapImage@WebCore@@UEBA_NXZ) +#if !ASSERT_DISABLED + symbolWithPointer(?notSolidColor@BitmapImage@WebCore@@UAE_NXZ, ?notSolidColor@BitmapImage@WebCore@@UEAA_NXZ) +#endif + symbolWithPointer(?computeIntrinsicDimensions@Image@WebCore@@UAEXAAULength@2@0AAVFloatSize@2@@Z, ?computeIntrinsicDimensions@Image@WebCore@@UEAAXAEAULength@2@0AEAVFloatSize@2@@Z) + symbolWithPointer(?size@BitmapImage@WebCore@@UBE?AVIntSize@2@XZ, ?size@BitmapImage@WebCore@@UEBA?AVIntSize@2@XZ) + symbolWithPointer(?getHotSpot@BitmapImage@WebCore@@UBE_NAAVIntPoint@2@@Z, ?getHotSpot@BitmapImage@WebCore@@UEBA_NAEAVIntPoint@2@@Z) + symbolWithPointer(?dataChanged@BitmapImage@WebCore@@UAE_N_N@Z, ?dataChanged@BitmapImage@WebCore@@UEAA_N_N@Z) + symbolWithPointer(?filenameExtension@BitmapImage@WebCore@@UBE?AVString@WTF@@XZ, ?filenameExtension@BitmapImage@WebCore@@UEBA?AVString@WTF@@XZ) + symbolWithPointer(?destroyDecodedData@BitmapImage@WebCore@@MAEX_N@Z, ?destroyDecodedData@BitmapImage@WebCore@@MEAAX_N@Z) + symbolWithPointer(?decodedSize@BitmapImage@WebCore@@UBEIXZ, ?decodedSize@BitmapImage@WebCore@@UEBAIXZ) + symbolWithPointer(?startAnimation@BitmapImage@WebCore@@MAEX_N@Z, ?startAnimation@BitmapImage@WebCore@@MEAAX_N@Z) + symbolWithPointer(?stopAnimation@BitmapImage@WebCore@@UAEXXZ, ?stopAnimation@BitmapImage@WebCore@@UEAAXXZ) + symbolWithPointer(?resetAnimation@BitmapImage@WebCore@@UAEXXZ, ?resetAnimation@BitmapImage@WebCore@@UEAAXXZ) +#if USE(CG) + symbolWithPointer(?nativeImageForCurrentFrame@BitmapImage@WebCore@@UAEPAUCGImage@@XZ, ?nativeImageForCurrentFrame@BitmapImage@WebCore@@UEAAPEAUCGImage@@XZ) + symbolWithPointer(?getCGImageRef@BitmapImage@WebCore@@UAEPAUCGImage@@XZ, ?getCGImageRef@BitmapImage@WebCore@@UEAAPEAUCGImage@@XZ) + symbolWithPointer(?getFirstCGImageRefOfSize@BitmapImage@WebCore@@UAEPAUCGImage@@ABVIntSize@2@@Z, ?getFirstCGImageRefOfSize@BitmapImage@WebCore@@UEAAPEAUCGImage@@AEBVIntSize@2@@Z) + symbolWithPointer(?getCGImageArray@BitmapImage@WebCore@@UAE?AV?$RetainPtr@PBU__CFArray@@@WTF@@XZ, ?getCGImageArray@BitmapImage@WebCore@@UEAA?AV?$RetainPtr@PEBU__CFArray@@@WTF@@XZ) +#elif USE(CAIRO) + symbolWithPointer(?nativeImageForCurrentFrame@BitmapImage@WebCore@@UAE?AV?$PassRefPtr@U_cairo_surface@@@WTF@@XZ, ?nativeImageForCurrentFrame@BitmapImage@WebCore@@UEAA?AV?$PassRefPtr@U_cairo_surface@@@WTF@@XZ) +#endif + symbolWithPointer(?getHBITMAP@BitmapImage@WebCore@@UAE_NPAUHBITMAP__@@@Z, ?getHBITMAP@BitmapImage@WebCore@@UEAA_NPEAUHBITMAP__@@@Z) + symbolWithPointer(?getHBITMAPOfSize@BitmapImage@WebCore@@UAE_NPAUHBITMAP__@@PAUtagSIZE@@@Z, ?getHBITMAPOfSize@BitmapImage@WebCore@@UEAA_NPEAUHBITMAP__@@PEAUtagSIZE@@@Z) + symbolWithPointer(?drawPattern@Image@WebCore@@UAEXPAVGraphicsContext@2@ABVFloatRect@2@ABVAffineTransform@2@ABVFloatPoint@2@W4ColorSpace@2@W4CompositeOperator@2@1W4BlendMode@2@@Z, ?drawPattern@Image@WebCore@@UEAAXPEAVGraphicsContext@2@AEBVFloatRect@2@AEBVAffineTransform@2@AEBVFloatPoint@2@W4ColorSpace@2@W4CompositeOperator@2@1W4BlendMode@2@@Z) + symbolWithPointer(?drawFrameMatchingSourceSize@BitmapImage@WebCore@@MAEXPAVGraphicsContext@2@ABVFloatRect@2@ABVIntSize@2@W4ColorSpace@2@W4CompositeOperator@2@@Z, ?drawFrameMatchingSourceSize@BitmapImage@WebCore@@MEAAXPEAVGraphicsContext@2@AEBVFloatRect@2@AEBVIntSize@2@W4ColorSpace@2@W4CompositeOperator@2@@Z) + symbolWithPointer(?draw@Image@WebCore@@MAEXPAVGraphicsContext@2@ABVFloatRect@2@1W4ColorSpace@2@W4CompositeOperator@2@W4BlendMode@2@W4RespectImageOrientationEnum@2@@Z, ?draw@Image@WebCore@@MEAAXPEAVGraphicsContext@2@AEBVFloatRect@2@1W4ColorSpace@2@W4CompositeOperator@2@W4BlendMode@2@W4RespectImageOrientationEnum@2@@Z) + symbolWithPointer(?draw@BitmapImage@WebCore@@MAEXPAVGraphicsContext@2@ABVFloatRect@2@1W4ColorSpace@2@W4CompositeOperator@2@W4BlendMode@2@@Z, ?draw@BitmapImage@WebCore@@MEAAXPEAVGraphicsContext@2@AEBVFloatRect@2@1W4ColorSpace@2@W4CompositeOperator@2@W4BlendMode@2@@Z) + symbolWithPointer(?mayFillWithSolidColor@BitmapImage@WebCore@@MAE_NXZ, ?mayFillWithSolidColor@BitmapImage@WebCore@@MEAA_NXZ) + symbolWithPointer(?solidColor@BitmapImage@WebCore@@MBE?AVColor@2@XZ, ?solidColor@BitmapImage@WebCore@@MEBA?AVColor@2@XZ) + symbolWithPointer(?draw@BitmapImage@WebCore@@MAEXPAVGraphicsContext@2@ABVFloatRect@2@1W4ColorSpace@2@W4CompositeOperator@2@W4BlendMode@2@W4RespectImageOrientationEnum@2@@Z, ?draw@BitmapImage@WebCore@@MEAAXPEAVGraphicsContext@2@AEBVFloatRect@2@1W4ColorSpace@2@W4CompositeOperator@2@W4BlendMode@2@W4RespectImageOrientationEnum@2@@Z) + symbolWithPointer(?frameCount@BitmapImage@WebCore@@MAEIXZ, ?frameCount@BitmapImage@WebCore@@MEAA_KXZ) + symbolWithPointer(?addAuthorSheet@DocumentStyleSheetCollection@WebCore@@QAEXV?$PassRefPtr@VStyleSheetContents@WebCore@@@WTF@@@Z, ?addAuthorSheet@DocumentStyleSheetCollection@WebCore@@QEAAXV?$PassRefPtr@VStyleSheetContents@WebCore@@@WTF@@@Z) + symbolWithPointer(?parseString@StyleSheetContents@WebCore@@QAE_NABVString@WTF@@@Z, ?parseString@StyleSheetContents@WebCore@@QEAA_NAEBVString@WTF@@@Z) + symbolWithPointer(??0CSSParserContext@WebCore@@QAE@PAVDocument@1@ABVKURL@1@ABVString@WTF@@@Z, ??0CSSParserContext@WebCore@@QEAA@PEAVDocument@1@AEBVKURL@1@AEBVString@WTF@@@Z) + symbolWithPointer(?emptyString@WTF@@YAABVString@1@XZ, ?emptyString@WTF@@YAAEBVString@1@XZ) + symbolWithPointer(?invalidate@KURL@WebCore@@AAEXXZ, ?invalidate@KURL@WebCore@@AEAAXXZ) + symbolWithPointer(??0StyleSheetContents@WebCore@@AAE@PAVStyleRuleImport@1@ABVString@WTF@@ABUCSSParserContext@1@@Z, ??0StyleSheetContents@WebCore@@AEAA@PEAVStyleRuleImport@1@AEBVString@WTF@@AEBUCSSParserContext@1@@Z) + symbolWithPointer(?addUserSheet@DocumentStyleSheetCollection@WebCore@@QAEXV?$PassRefPtr@VStyleSheetContents@WebCore@@@WTF@@@Z, ?addUserSheet@DocumentStyleSheetCollection@WebCore@@QEAAXV?$PassRefPtr@VStyleSheetContents@WebCore@@@WTF@@@Z) + symbolWithPointer(??1StyleSheetContents@WebCore@@QAE@XZ, ??1StyleSheetContents@WebCore@@QEAA@XZ) + symbolWithPointer(?pauseAnimationAtTime@AnimationController@WebCore@@QAE_NPAVRenderObject@2@ABVAtomicString@WTF@@N@Z, ?pauseAnimationAtTime@AnimationController@WebCore@@QEAA_NPEAVRenderObject@2@AEBVAtomicString@WTF@@N@Z) + symbolWithPointer(?pseudoElement@Element@WebCore@@QBEPAVPseudoElement@2@W4PseudoId@2@@Z, ?pseudoElement@Element@WebCore@@QEBAPEAVPseudoElement@2@W4PseudoId@2@@Z) + symbolWithPointer(?pauseTransitionAtTime@AnimationController@WebCore@@QAE_NPAVRenderObject@2@ABVString@WTF@@N@Z, ?pauseTransitionAtTime@AnimationController@WebCore@@QEAA_NPEAVRenderObject@2@AEBVString@WTF@@N@Z) + symbolWithPointer(?addFromLiteralData@AtomicString@WTF@@CA?AV?$PassRefPtr@VStringImpl@WTF@@@2@PBDI@Z, ?addFromLiteralData@AtomicString@WTF@@CA?AV?$PassRefPtr@VStringImpl@WTF@@@2@PEBDI@Z) + symbolWithPointer(?memoryCache@WebCore@@YAPAVMemoryCache@1@XZ, ?memoryCache@WebCore@@YAPEAVMemoryCache@1@XZ) + symbolWithPointer(?resourceForURL@MemoryCache@WebCore@@QAEPAVCachedResource@2@ABVKURL@2@@Z, ?resourceForURL@MemoryCache@WebCore@@QEAAPEAVCachedResource@2@AEBVKURL@2@@Z) + symbolWithPointer(?nonFastScrollableRects@Page@WebCore@@QAE?AV?$PassRefPtr@VClientRectList@WebCore@@@WTF@@PBVFrame@2@@Z, ?nonFastScrollableRects@Page@WebCore@@QEAA?AV?$PassRefPtr@VClientRectList@WebCore@@@WTF@@PEBVFrame@2@@Z) + symbolWithPointer(?numberOfActiveAnimations@AnimationController@WebCore@@QBEIPAVDocument@2@@Z, ?numberOfActiveAnimations@AnimationController@WebCore@@QEBAIPEAVDocument@2@@Z) + symbolWithPointer(?minDOMTimerInterval@Settings@WebCore@@QAENXZ, ?minDOMTimerInterval@Settings@WebCore@@QEAANXZ) + symbolWithPointer(?setMinDOMTimerInterval@Settings@WebCore@@QAEXN@Z, ?setMinDOMTimerInterval@Settings@WebCore@@QEAAXN@Z) + symbolWithPointer(?setApplicationChromeMode@Settings@WebCore@@QAEX_N@Z, ?setApplicationChromeMode@Settings@WebCore@@QEAAX_N@Z) + symbolWithPointer(?setDOMPasteAllowed@Settings@WebCore@@QAEX_N@Z, ?setDOMPasteAllowed@Settings@WebCore@@QEAAX_N@Z) + symbolWithPointer(?setTextAreasAreResizable@Settings@WebCore@@QAEX_N@Z, ?setTextAreasAreResizable@Settings@WebCore@@QEAAX_N@Z) + symbolWithPointer(?setShowRepaintCounter@Settings@WebCore@@QAEX_N@Z, ?setShowRepaintCounter@Settings@WebCore@@QEAAX_N@Z) + symbolWithPointer(?setShowDebugBorders@Settings@WebCore@@QAEX_N@Z, ?setShowDebugBorders@Settings@WebCore@@QEAAX_N@Z) + symbolWithPointer(?setScreenFontSubstitutionEnabled@Settings@WebCore@@QAEX_N@Z, ?setScreenFontSubstitutionEnabled@Settings@WebCore@@QEAAX_N@Z) + symbolWithPointer(?setMinimumLogicalFontSize@Settings@WebCore@@QAEXH@Z, ?setMinimumLogicalFontSize@Settings@WebCore@@QEAAXH@Z) + symbolWithPointer(?setMinimumFontSize@Settings@WebCore@@QAEXH@Z, ?setMinimumFontSize@Settings@WebCore@@QEAAXH@Z) + symbolWithPointer(?setDefaultFontSize@Settings@WebCore@@QAEXH@Z, ?setDefaultFontSize@Settings@WebCore@@QEAAXH@Z) + symbolWithPointer(?setDefaultFixedFontSize@Settings@WebCore@@QAEXH@Z, ?setDefaultFixedFontSize@Settings@WebCore@@QEAAXH@Z) + symbolWithPointer(?setAuthorAndUserStylesEnabled@Settings@WebCore@@QAEX_N@Z, ?setAuthorAndUserStylesEnabled@Settings@WebCore@@QEAAX_N@Z) + symbolWithPointer(?setAcceleratedCompositingEnabled@Settings@WebCore@@QAEX_N@Z, ?setAcceleratedCompositingEnabled@Settings@WebCore@@QEAAX_N@Z) + symbolWithPointer(?setAutofilled@HTMLInputElement@WebCore@@QAEX_N@Z, ?setAutofilled@HTMLInputElement@WebCore@@QEAAX_N@Z) + symbolWithPointer(?setDocumentState@HistoryItem@WebCore@@QAEXABV?$Vector@VString@WTF@@$0A@VCrashOnOverflow@2@@WTF@@@Z, ?setDocumentState@HistoryItem@WebCore@@QEAAXAEBV?$Vector@VString@WTF@@$0A@VCrashOnOverflow@2@@WTF@@@Z) + symbolWithPointer(?overrideUserPreferredLanguages@WebCore@@YAXABV?$Vector@VString@WTF@@$0A@VCrashOnOverflow@2@@WTF@@@Z, ?overrideUserPreferredLanguages@WebCore@@YAXAEBV?$Vector@VString@WTF@@$0A@VCrashOnOverflow@2@@WTF@@@Z) + symbolWithPointer(?markersFor@DocumentMarkerController@WebCore@@QAE?AV?$Vector@PAVDocumentMarker@WebCore@@$0A@VCrashOnOverflow@WTF@@@WTF@@PAVNode@2@VMarkerTypes@DocumentMarker@2@@Z, ?markersFor@DocumentMarkerController@WebCore@@QEAA?AV?$Vector@PEAVDocumentMarker@WebCore@@$0A@VCrashOnOverflow@WTF@@@WTF@@PEAVNode@2@VMarkerTypes@DocumentMarker@2@@Z) + symbolWithPointer(?getReferencedFilePaths@FormController@WebCore@@SA?AV?$Vector@VString@WTF@@$0A@VCrashOnOverflow@2@@WTF@@ABV34@@Z, ?getReferencedFilePaths@FormController@WebCore@@SA?AV?$Vector@VString@WTF@@$0A@VCrashOnOverflow@2@@WTF@@AEBV34@@Z) + symbolWithPointer(?iconURLs@Document@WebCore@@QAEABV?$Vector@UIconURL@WebCore@@$0A@VCrashOnOverflow@WTF@@@WTF@@H@Z, ?iconURLs@Document@WebCore@@QEAAAEBV?$Vector@UIconURL@WebCore@@$0A@VCrashOnOverflow@WTF@@@WTF@@H@Z) + symbolWithPointer(?consoleMessageArgumentCounts@InspectorConsoleAgent@WebCore@@QAE?AV?$Vector@I$0A@VCrashOnOverflow@WTF@@@WTF@@XZ, ?consoleMessageArgumentCounts@InspectorConsoleAgent@WebCore@@QEAA?AV?$Vector@I$0A@VCrashOnOverflow@WTF@@@WTF@@XZ) + ?userPreferredLanguages@WebCore@@YA?AV?$Vector@VString@WTF@@$0A@VCrashOnOverflow@2@@WTF@@XZ + symbolWithPointer(?documentState@HistoryItem@WebCore@@QBEABV?$Vector@VString@WTF@@$0A@VCrashOnOverflow@2@@WTF@@XZ, ?documentState@HistoryItem@WebCore@@QEBAAEBV?$Vector@VString@WTF@@$0A@VCrashOnOverflow@2@@WTF@@XZ) + symbolWithPointer(?create@SerializedScriptValue@WebCore@@SA?AV?$PassRefPtr@VSerializedScriptValue@WebCore@@@WTF@@PAVExecState@JSC@@VJSValue@6@PAV?$Vector@V?$RefPtr@VMessagePort@WebCore@@@WTF@@$00VCrashOnOverflow@2@@4@PAV?$Vector@V?$RefPtr@VArrayBuffer@WTF@@@WTF@@$00VCrashOnOverflow@2@@4@W4SerializationErrorMode@2@@Z, ?create@SerializedScriptValue@WebCore@@SA?AV?$PassRefPtr@VSerializedScriptValue@WebCore@@@WTF@@PEAVExecState@JSC@@VJSValue@6@PEAV?$Vector@V?$RefPtr@VMessagePort@WebCore@@@WTF@@$00VCrashOnOverflow@2@@4@PEAV?$Vector@V?$RefPtr@VArrayBuffer@WTF@@@WTF@@$00VCrashOnOverflow@2@@4@W4SerializationErrorMode@2@@Z) + symbolWithPointer(??0ClientRectList@WebCore@@AAE@ABV?$Vector@VFloatQuad@WebCore@@$0A@VCrashOnOverflow@WTF@@@WTF@@@Z, ??0ClientRectList@WebCore@@AEAA@AEBV?$Vector@VFloatQuad@WebCore@@$0A@VCrashOnOverflow@WTF@@@WTF@@@Z) + symbolWithPointer(??0SerializedScriptValue@WebCore@@AAE@AAV?$Vector@E$0A@VCrashOnOverflow@WTF@@@WTF@@@Z, ??0SerializedScriptValue@WebCore@@AEAA@AEAV?$Vector@E$0A@VCrashOnOverflow@WTF@@@WTF@@@Z) +#if ENABLE(VIDEO_TRACK) + symbolWithPointer(?captionPreferences@PageGroup@WebCore@@QAEPAVCaptionUserPreferences@2@XZ, ?captionPreferences@PageGroup@WebCore@@QEAAPEAVCaptionUserPreferences@2@XZ) +#endif + symbolWithPointer(?initGroup@Page@WebCore@@AAEXXZ, ?initGroup@Page@WebCore@@AEAAXXZ) + symbolWithPointer(?toInt8@WebCore@@YACPAVExecState@JSC@@VJSValue@3@W4IntegerConversionConfiguration@1@@Z, ?toInt8@WebCore@@YACPEAVExecState@JSC@@VJSValue@3@W4IntegerConversionConfiguration@1@@Z) + symbolWithPointer(?toUInt8@WebCore@@YAEPAVExecState@JSC@@VJSValue@3@W4IntegerConversionConfiguration@1@@Z, ?toUInt8@WebCore@@YAEPEAVExecState@JSC@@VJSValue@3@W4IntegerConversionConfiguration@1@@Z) + symbolWithPointer(?toInt32EnforceRange@WebCore@@YAHPAVExecState@JSC@@VJSValue@3@@Z, ?toInt32EnforceRange@WebCore@@YAHPEAVExecState@JSC@@VJSValue@3@@Z) + symbolWithPointer(?toInt64@WebCore@@YA_JPAVExecState@JSC@@VJSValue@3@W4IntegerConversionConfiguration@1@@Z, ?toInt64@WebCore@@YA_JPEAVExecState@JSC@@VJSValue@3@W4IntegerConversionConfiguration@1@@Z) + symbolWithPointer(?toUInt32EnforceRange@WebCore@@YAIPAVExecState@JSC@@VJSValue@3@@Z, ?toUInt32EnforceRange@WebCore@@YAIPEAVExecState@JSC@@VJSValue@3@@Z) + symbolWithPointer(?toUInt64@WebCore@@YA_KPAVExecState@JSC@@VJSValue@3@W4IntegerConversionConfiguration@1@@Z, ?toUInt64@WebCore@@YA_KPEAVExecState@JSC@@VJSValue@3@W4IntegerConversionConfiguration@1@@Z) + symbolWithPointer(?getHeapSize@ScriptGCEvent@WebCore@@SAXAAUHeapInfo@2@@Z, ?getHeapSize@ScriptGCEvent@WebCore@@SAXAEAUHeapInfo@2@@Z) + +#if ENABLE(WORKERS) + ?workerThreadCount@WorkerThread@WebCore@@SAIXZ +#endif + +#if ENABLE(VIDEO) + symbolWithPointer(?toTimeRanges@WebCore@@YAPAVTimeRanges@1@VJSValue@JSC@@@Z, ?toTimeRanges@WebCore@@YAPEAVTimeRanges@1@VJSValue@JSC@@@Z) + symbolWithPointer(?toJS@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@PAVTimeRanges@1@@Z, ?toJS@WebCore@@YA?AVJSValue@JSC@@PEAVExecState@3@PEAVJSDOMGlobalObject@1@PEAVTimeRanges@1@@Z) + symbolWithPointer(?toFloat32Array@WebCore@@YAPAVFloat32Array@WTF@@VJSValue@JSC@@@Z, ?toFloat32Array@WebCore@@YAPEAVFloat32Array@WTF@@VJSValue@JSC@@@Z) + symbolWithPointer(?nearest@TimeRanges@WebCore@@QBENN@Z, ?nearest@TimeRanges@WebCore@@QEBANN@Z) + symbolWithPointer(?add@TimeRanges@WebCore@@QAEXNN@Z, ?add@TimeRanges@WebCore@@QEAAXNN@Z) +#endif diff --git a/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/make-export-file-generator b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/make-export-file-generator new file mode 100755 index 00000000000..a03f42471e7 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/make-export-file-generator @@ -0,0 +1,65 @@ +#!/usr/bin/env ruby + +# Copyright (C) 2010 Apple Inc. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +# THE POSSIBILITY OF SUCH DAMAGE. + +input_file = ARGV[0] +output_file = ARGV[1] + +require 'erb' + +def line_for_output line + return line.chomp if line =~ /#/ + return " printf(\"%s\\n\",#{line.chomp});" if line =~ /symbolWithPointer/ + return " printf(\"#{line.chomp}\\n\");" +end + +TEMPLATE = <<-EOF +#include "config.h" +#include +#include + +#ifdef _WIN64 +#define symbolWithPointer(symbol32Bit, symbol64Bit) #symbol64Bit +#else +#define symbolWithPointer(symbol32Bit, symbol64Bit) #symbol32Bit +#endif + +int main(int, char**) +{ +<%- input.each_line do |line| -%> +<%= line_for_output line %> +<%- end -%> + + return 0; +} +EOF + +File.open(output_file, "w") do |output| + File.open(input_file) do |input| + renderer = ERB.new(TEMPLATE, 0, "-") + output << renderer.result(binding) + end +end + +STDERR.puts "Wrote output to #{output_file}" diff --git a/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj new file mode 100644 index 00000000000..cd8f2a726ab --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj @@ -0,0 +1,275 @@ +锘 + + + + DebugSuffix + Win32 + + + DebugSuffix + x64 + + + Debug_WinCairo + Win32 + + + Debug_WinCairo + x64 + + + Debug + Win32 + + + Debug + x64 + + + Production + Win32 + + + Production + x64 + + + Release_WinCairo + Win32 + + + Release_WinCairo + x64 + + + Release + Win32 + + + Release + x64 + + + + {A15EDAD8-8B87-4D4A-8498-77A04AB65F16} + WebKitGUID + + + + StaticLibrary + true + Unicode + + + StaticLibrary + true + Unicode + + + StaticLibrary + true + Unicode + + + StaticLibrary + true + Unicode + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + StaticLibrary + + + StaticLibrary + + + Unicode + + + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + true + + + + + + + + + + true + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.filters b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.filters new file mode 100644 index 00000000000..7756c9b3167 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.filters @@ -0,0 +1,14 @@ +锘 + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDCommon.props b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDCommon.props new file mode 100644 index 00000000000..590007a9b3f --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDCommon.props @@ -0,0 +1,20 @@ +锘 + + + + + $(ConfigurationBuildDir)\lib32\ + + + + + $(OutDir)$(TargetName).h + + + + + CompileAsC + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDDebug.props b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDDebug.props new file mode 100644 index 00000000000..50f30b6c016 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDDebug.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDDebugWinCairo.props b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDDebugWinCairo.props new file mode 100644 index 00000000000..7fc925eb26f --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDDebugWinCairo.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDPostBuild.cmd b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDPostBuild.cmd new file mode 100644 index 00000000000..26707cac614 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDPostBuild.cmd @@ -0,0 +1 @@ +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDPreBuild.cmd b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDPreBuild.cmd new file mode 100644 index 00000000000..a7707767487 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDPreBuild.cmd @@ -0,0 +1,6 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed" diff --git a/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDProduction.props b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDProduction.props new file mode 100644 index 00000000000..90cf9816407 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDProduction.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDRelease.props b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDRelease.props new file mode 100644 index 00000000000..aedd4d25059 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDRelease.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDReleaseWinCairo.props b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDReleaseWinCairo.props new file mode 100644 index 00000000000..09e85590bb9 --- /dev/null +++ b/Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUIDReleaseWinCairo.props @@ -0,0 +1,13 @@ +锘 + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WebKit/WebKit.xcodeproj/project.pbxproj b/Source/WebKit/WebKit.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..3c9432df418 --- /dev/null +++ b/Source/WebKit/WebKit.xcodeproj/project.pbxproj @@ -0,0 +1,2130 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 065AD5A30B0C32C7005A2B1D /* WebContextMenuClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 065AD5A10B0C32C7005A2B1D /* WebContextMenuClient.h */; }; + 065AD5A40B0C32C7005A2B1D /* WebContextMenuClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 065AD5A20B0C32C7005A2B1D /* WebContextMenuClient.mm */; }; + 06693DDC0BFBA85200216072 /* WebInspectorClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 06693DDA0BFBA85200216072 /* WebInspectorClient.h */; }; + 06693DDD0BFBA85200216072 /* WebInspectorClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 06693DDB0BFBA85200216072 /* WebInspectorClient.mm */; }; + 0AB752370FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AB752350FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.h */; }; + 0AB752380FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0AB752360FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm */; }; + 0AEBFF630F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AEBFF610F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0AEBFF640F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0AEBFF620F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.mm */; }; + 0F30985F11ECFE4500F559DF /* WebRenderLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F30985D11ECFE4400F559DF /* WebRenderLayer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0F30986011ECFE4500F559DF /* WebRenderLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F30985E11ECFE4500F559DF /* WebRenderLayer.mm */; }; + 14D8252F0AF955090004F057 /* WebChromeClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D8252D0AF955090004F057 /* WebChromeClient.h */; }; + 14D825300AF955090004F057 /* WebChromeClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 14D8252E0AF955090004F057 /* WebChromeClient.mm */; }; + 1A2DBE9F0F251E3A0036F8A6 /* ProxyInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2DBE9D0F251E3A0036F8A6 /* ProxyInstance.h */; }; + 1A2DBEA00F251E3A0036F8A6 /* ProxyInstance.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A2DBE9E0F251E3A0036F8A6 /* ProxyInstance.mm */; }; + 1A4DF5220EC8C74D006BD4B4 /* WebNetscapePluginView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4DF5200EC8C74D006BD4B4 /* WebNetscapePluginView.h */; }; + 1A4DF5230EC8C74D006BD4B4 /* WebNetscapePluginView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A4DF5210EC8C74D006BD4B4 /* WebNetscapePluginView.mm */; settings = {COMPILER_FLAGS = "-Wno-deprecated-declarations"; }; }; + 1A4DF5E40EC8D104006BD4B4 /* WebBaseNetscapePluginView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4DF5E20EC8D104006BD4B4 /* WebBaseNetscapePluginView.h */; }; + 1A4DF5E50EC8D104006BD4B4 /* WebBaseNetscapePluginView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A4DF5E30EC8D104006BD4B4 /* WebBaseNetscapePluginView.mm */; }; + 1A60519117502A5D00BC62F5 /* BinaryPropertyList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A60518D17502A5D00BC62F5 /* BinaryPropertyList.cpp */; }; + 1A60519217502A5D00BC62F5 /* BinaryPropertyList.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A60518E17502A5D00BC62F5 /* BinaryPropertyList.h */; }; + 1A60519317502A5D00BC62F5 /* HistoryPropertyList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A60518F17502A5D00BC62F5 /* HistoryPropertyList.cpp */; }; + 1A60519417502A5D00BC62F5 /* HistoryPropertyList.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A60519017502A5D00BC62F5 /* HistoryPropertyList.h */; }; + 1A74A28E0F4F75400082E228 /* WebTextInputWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A74A28C0F4F75400082E228 /* WebTextInputWindowController.h */; }; + 1A74A28F0F4F75400082E228 /* WebTextInputWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A74A28D0F4F75400082E228 /* WebTextInputWindowController.m */; }; + 1A77B02E0EE7730500C8A1F9 /* WebPluginRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A77B02C0EE7730500C8A1F9 /* WebPluginRequest.h */; }; + 1A77B02F0EE7730500C8A1F9 /* WebPluginRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A77B02D0EE7730500C8A1F9 /* WebPluginRequest.m */; }; + 1A8DED500EE88B8A00F25022 /* HostedNetscapePluginStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8DED4E0EE88B8A00F25022 /* HostedNetscapePluginStream.h */; }; + 1A8DED510EE88B8A00F25022 /* HostedNetscapePluginStream.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A8DED4F0EE88B8A00F25022 /* HostedNetscapePluginStream.mm */; }; + 1AA879B611CBE9BF003C664F /* WebPlatformStrategies.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AA879B411CBE9BF003C664F /* WebPlatformStrategies.h */; }; + 1AA879B711CBE9BF003C664F /* WebPlatformStrategies.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AA879B511CBE9BF003C664F /* WebPlatformStrategies.mm */; }; + 1AAF58940EDCCF15008D883D /* WebKitPluginAgent.defs in Headers */ = {isa = PBXBuildFile; fileRef = 1AAF588A0EDCCEA3008D883D /* WebKitPluginAgent.defs */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AAF58950EDCCF15008D883D /* WebKitPluginAgentReply.defs in Headers */ = {isa = PBXBuildFile; fileRef = 1AAF588B0EDCCEA3008D883D /* WebKitPluginAgentReply.defs */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AAF58960EDCCF15008D883D /* WebKitPluginClient.defs in Headers */ = {isa = PBXBuildFile; fileRef = 1AAF588C0EDCCEA3008D883D /* WebKitPluginClient.defs */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AAF58970EDCCF15008D883D /* WebKitPluginHost.defs in Headers */ = {isa = PBXBuildFile; fileRef = 1AAF588D0EDCCEA3008D883D /* WebKitPluginHost.defs */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AAF58980EDCCF15008D883D /* WebKitPluginHostTypes.defs in Headers */ = {isa = PBXBuildFile; fileRef = 1AAF588E0EDCCEA3008D883D /* WebKitPluginHostTypes.defs */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AAF5CEA0EDDE1FE008D883D /* NetscapePluginHostManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AAF5CE40EDDE1FE008D883D /* NetscapePluginHostManager.h */; }; + 1AAF5CEB0EDDE1FE008D883D /* NetscapePluginHostManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF5CE50EDDE1FE008D883D /* NetscapePluginHostManager.mm */; }; + 1AAF5CEC0EDDE1FE008D883D /* NetscapePluginHostProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AAF5CE60EDDE1FE008D883D /* NetscapePluginHostProxy.h */; }; + 1AAF5CED0EDDE1FE008D883D /* NetscapePluginHostProxy.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF5CE70EDDE1FE008D883D /* NetscapePluginHostProxy.mm */; }; + 1AAF5CEE0EDDE1FE008D883D /* NetscapePluginInstanceProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AAF5CE80EDDE1FE008D883D /* NetscapePluginInstanceProxy.h */; }; + 1AAF5CEF0EDDE1FE008D883D /* NetscapePluginInstanceProxy.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF5CE90EDDE1FE008D883D /* NetscapePluginInstanceProxy.mm */; }; + 1AAF5CF10EDDE586008D883D /* WebKitPluginHost.defs in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF588D0EDCCEA3008D883D /* WebKitPluginHost.defs */; }; + 1AAF5D000EDDE604008D883D /* WebKitPluginClient.defs in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF588C0EDCCEA3008D883D /* WebKitPluginClient.defs */; settings = {ATTRIBUTES = (Server, ); }; }; + 1AAF5D090EDDE71D008D883D /* WebKitPluginHostTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AAF5D080EDDE71D008D883D /* WebKitPluginHostTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1AAF5D0F0EDDE7A7008D883D /* WebKitPluginAgent.defs in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF588A0EDCCEA3008D883D /* WebKitPluginAgent.defs */; }; + 1AAF5FBF0EDE3A92008D883D /* WebHostedNetscapePluginView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AAF5FBD0EDE3A92008D883D /* WebHostedNetscapePluginView.h */; }; + 1AAF5FC00EDE3A92008D883D /* WebHostedNetscapePluginView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF5FBE0EDE3A92008D883D /* WebHostedNetscapePluginView.mm */; }; + 1AEA66D40DC6B1FF003D12BF /* WebNetscapePluginEventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AEA66D20DC6B1FF003D12BF /* WebNetscapePluginEventHandler.h */; }; + 1AEA66D50DC6B1FF003D12BF /* WebNetscapePluginEventHandler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AEA66D30DC6B1FF003D12BF /* WebNetscapePluginEventHandler.mm */; }; + 1AEA66D80DC6B209003D12BF /* WebNetscapePluginEventHandlerCarbon.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AEA66D60DC6B209003D12BF /* WebNetscapePluginEventHandlerCarbon.h */; }; + 1AEA66D90DC6B209003D12BF /* WebNetscapePluginEventHandlerCarbon.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AEA66D70DC6B209003D12BF /* WebNetscapePluginEventHandlerCarbon.mm */; settings = {COMPILER_FLAGS = "-Wno-deprecated-declarations"; }; }; + 1AEA6A500DC8CE2F003D12BF /* WebNetscapePluginEventHandlerCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AEA6A4E0DC8CE2F003D12BF /* WebNetscapePluginEventHandlerCocoa.h */; }; + 1AEA6A510DC8CE2F003D12BF /* WebNetscapePluginEventHandlerCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AEA6A4F0DC8CE2F003D12BF /* WebNetscapePluginEventHandlerCocoa.mm */; }; + 1C0D40870AC1C8F40009C113 /* WebKitVersionChecks.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C0D40850AC1C8F40009C113 /* WebKitVersionChecks.h */; }; + 1C0D40880AC1C8F40009C113 /* WebKitVersionChecks.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C0D40860AC1C8F40009C113 /* WebKitVersionChecks.m */; }; + 1C68F66F095B5FC100C2984E /* WebNodeHighlight.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C68F663095B5FC100C2984E /* WebNodeHighlight.h */; }; + 1C68F670095B5FC100C2984E /* WebNodeHighlight.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1C68F664095B5FC100C2984E /* WebNodeHighlight.mm */; }; + 1C68F671095B5FC100C2984E /* WebNodeHighlightView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C68F665095B5FC100C2984E /* WebNodeHighlightView.h */; }; + 1C68F672095B5FC100C2984E /* WebNodeHighlightView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1C68F666095B5FC100C2984E /* WebNodeHighlightView.mm */; }; + 1C7B0C660EB2464D00A28502 /* WebInspectorClientCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C7B0C650EB2464D00A28502 /* WebInspectorClientCF.cpp */; }; + 1C8CB07A0AE9830C00B1F6E9 /* WebEditingDelegatePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C8CB0790AE9830C00B1F6E9 /* WebEditingDelegatePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1C9F5EFC1651CDF700C480F8 /* Dock.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 1C9F5EFB1651CDF700C480F8 /* Dock.pdf */; }; + 1CCFFD130B1F81F2002EE926 /* OldWebAssertions.c in Sources */ = {isa = PBXBuildFile; fileRef = 1CCFFD120B1F81F2002EE926 /* OldWebAssertions.c */; }; + 224100F3091818D900D2D266 /* WebPluginsPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 224100F2091818D900D2D266 /* WebPluginsPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 224100F90918190100D2D266 /* WebPluginsPrivate.m in Sources */ = {isa = PBXBuildFile; fileRef = 224100F80918190100D2D266 /* WebPluginsPrivate.m */; }; + 225F881509F97E8A00423A40 /* WebPluginPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 225F881409F97E8A00423A40 /* WebPluginPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 22F219CC08D236730030E078 /* WebBackForwardListPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 22F219CB08D236730030E078 /* WebBackForwardListPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 29AEF960134C76FB00FE5096 /* OutlookQuirksUserScript.js in Resources */ = {isa = PBXBuildFile; fileRef = 29AEF95D134C755400FE5096 /* OutlookQuirksUserScript.js */; }; + 312E2FE514E48182007CCA18 /* WebNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 312E2FE314E48182007CCA18 /* WebNotification.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 312E2FE614E48182007CCA18 /* WebNotification.mm in Sources */ = {isa = PBXBuildFile; fileRef = 312E2FE414E48182007CCA18 /* WebNotification.mm */; }; + 312E2FE914E48215007CCA18 /* WebNotificationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 312E2FE814E48215007CCA18 /* WebNotificationInternal.h */; }; + 31C11A6E1476552E0049A4CC /* WebNotificationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C11A6C1476552E0049A4CC /* WebNotificationClient.h */; }; + 31C11A6F1476552E0049A4CC /* WebNotificationClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 31C11A6D1476552E0049A4CC /* WebNotificationClient.mm */; }; + 37B6FB4E1063530C000FDB3B /* WebPDFDocumentExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 37B6FB4C1063530C000FDB3B /* WebPDFDocumentExtras.h */; }; + 37B6FB4F1063530C000FDB3B /* WebPDFDocumentExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37B6FB4D1063530C000FDB3B /* WebPDFDocumentExtras.mm */; }; + 37D1DCA81065928C0068F7EF /* WebJSPDFDoc.h in Headers */ = {isa = PBXBuildFile; fileRef = 37D1DCA61065928C0068F7EF /* WebJSPDFDoc.h */; }; + 37D1DCA91065928C0068F7EF /* WebJSPDFDoc.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37D1DCA71065928C0068F7EF /* WebJSPDFDoc.mm */; }; + 3AB02AF612C1319B00FBB694 /* WebStorageManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3AB02AF512C1319B00FBB694 /* WebStorageManager.mm */; }; + 3AB02B0012C132B200FBB694 /* WebStorageManagerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB02AFF12C132B200FBB694 /* WebStorageManagerPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3ABB3C7A1309C3B500E93D94 /* WebStorageTrackerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ABB3C781309C3B500E93D94 /* WebStorageTrackerClient.h */; }; + 3ABB3C7B1309C3B500E93D94 /* WebStorageTrackerClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3ABB3C791309C3B500E93D94 /* WebStorageTrackerClient.mm */; }; + 3AE15D5012DBDED4009323C8 /* WebStorageManagerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AE15D4F12DBDED4009323C8 /* WebStorageManagerInternal.h */; }; + 44BB8B141241A022001E3A22 /* WebArchiveInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 44BB8B131241A022001E3A22 /* WebArchiveInternal.h */; }; + 4BF99F900AE050BC00815C2B /* WebEditorClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BF99F8E0AE050BC00815C2B /* WebEditorClient.h */; settings = {ATTRIBUTES = (); }; }; + 4BF99F910AE050BC00815C2B /* WebEditorClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BF99F8F0AE050BC00815C2B /* WebEditorClient.mm */; }; + 511F3FD50CECC88F00852565 /* WebDatabaseManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 511F3FD10CECC88F00852565 /* WebDatabaseManager.mm */; }; + 511F3FD60CECC88F00852565 /* WebDatabaseManagerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 511F3FD20CECC88F00852565 /* WebDatabaseManagerPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 511F3FD70CECC88F00852565 /* WebDatabaseManagerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 511F3FD30CECC88F00852565 /* WebDatabaseManagerClient.h */; }; + 511F3FD80CECC88F00852565 /* WebDatabaseManagerClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 511F3FD40CECC88F00852565 /* WebDatabaseManagerClient.mm */; }; + 51494CD60C7EBDE0004178C5 /* WebIconDatabaseClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 51494CD40C7EBDE0004178C5 /* WebIconDatabaseClient.h */; }; + 51494CD70C7EBDE0004178C5 /* WebIconDatabaseClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51494CD50C7EBDE0004178C5 /* WebIconDatabaseClient.mm */; }; + 51494D240C7EC1B7004178C5 /* WebNSNotificationCenterExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 51494D220C7EC1B6004178C5 /* WebNSNotificationCenterExtras.h */; }; + 51494D250C7EC1B7004178C5 /* WebNSNotificationCenterExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = 51494D230C7EC1B7004178C5 /* WebNSNotificationCenterExtras.m */; }; + 5158F6EF106D862A00AF457C /* WebHistoryDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5158F6EE106D862A00AF457C /* WebHistoryDelegate.h */; }; + 5185F62610712B80007AA393 /* WebNavigationData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5185F62510712B80007AA393 /* WebNavigationData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5185F62810712B97007AA393 /* WebNavigationData.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5185F62710712B97007AA393 /* WebNavigationData.mm */; }; + 51B2A1000ADB15D0002A9BEE /* WebIconDatabaseDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B2A0FF0ADB15D0002A9BEE /* WebIconDatabaseDelegate.h */; }; + 51C714FB0B20F79F00E5E33C /* WebBackForwardListInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 51C714FA0B20F79F00E5E33C /* WebBackForwardListInternal.h */; }; + 51CBFCAD0D10E6C5002DBF51 /* WebCachedFramePlatformData.h in Headers */ = {isa = PBXBuildFile; fileRef = 51CBFCAC0D10E6C5002DBF51 /* WebCachedFramePlatformData.h */; }; + 51FDC4D30B0AF5C100F84EB3 /* WebHistoryItemPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 51FDC4D20B0AF5C100F84EB3 /* WebHistoryItemPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5241ADF50B1BC48A004012BD /* WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 5241ADF30B1BC48A004012BD /* WebCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5241ADF60B1BC48A004012BD /* WebCache.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5241ADF40B1BC48A004012BD /* WebCache.mm */; }; + 598AD91A1201CEC900ABAE4E /* WebDeviceOrientationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 598AD9191201CEC900ABAE4E /* WebDeviceOrientationClient.h */; }; + 598AD91E1201CECF00ABAE4E /* WebDeviceOrientationClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 598AD91D1201CECF00ABAE4E /* WebDeviceOrientationClient.mm */; }; + 598AD9201201CF0700ABAE4E /* WebDeviceOrientation.h in Headers */ = {isa = PBXBuildFile; fileRef = 598AD91F1201CF0700ABAE4E /* WebDeviceOrientation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 598AD9221201CF1000ABAE4E /* WebDeviceOrientation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 598AD9211201CF1000ABAE4E /* WebDeviceOrientation.mm */; }; + 598AD9241201CF1900ABAE4E /* WebDeviceOrientationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 598AD9231201CF1900ABAE4E /* WebDeviceOrientationInternal.h */; }; + 598AD9261201CF2500ABAE4E /* WebDeviceOrientationProviderMock.h in Headers */ = {isa = PBXBuildFile; fileRef = 598AD9251201CF2500ABAE4E /* WebDeviceOrientationProviderMock.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 598AD9281201CF3200ABAE4E /* WebDeviceOrientationProviderMock.mm in Sources */ = {isa = PBXBuildFile; fileRef = 598AD9271201CF3200ABAE4E /* WebDeviceOrientationProviderMock.mm */; }; + 598AD92A1201CF3B00ABAE4E /* WebDeviceOrientationProviderMockInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 598AD9291201CF3B00ABAE4E /* WebDeviceOrientationProviderMockInternal.h */; }; + 598ADA461202275000ABAE4E /* WebDeviceOrientationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 598ADA451202275000ABAE4E /* WebDeviceOrientationProvider.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5D7BF8140C2A1D90008CE06D /* WebInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D7BF8120C2A1D90008CE06D /* WebInspector.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5D7BF8150C2A1D90008CE06D /* WebInspector.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5D7BF8130C2A1D90008CE06D /* WebInspector.mm */; }; + 5DE83A7A0D0F7F9400CAD12A /* WebJavaScriptTextInputPanel.nib in Resources */ = {isa = PBXBuildFile; fileRef = 5DE83A740D0F7F9400CAD12A /* WebJavaScriptTextInputPanel.nib */; }; + 5DE92FEF0BD7017E0059A5FD /* WebAssertions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DE92FEE0BD7017E0059A5FD /* WebAssertions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 65488DA1084FBCCB00831AD0 /* WebNSDictionaryExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 65488D9F084FBCCB00831AD0 /* WebNSDictionaryExtras.h */; }; + 65488DA2084FBCCB00831AD0 /* WebNSDictionaryExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = 65488DA0084FBCCB00831AD0 /* WebNSDictionaryExtras.m */; }; + 656D333E0AF21AE900212169 /* WebResourceLoadDelegatePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 656D333D0AF21AE900212169 /* WebResourceLoadDelegatePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 658A40960A14853B005E6987 /* WebDataSourceInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 658A40950A14853B005E6987 /* WebDataSourceInternal.h */; }; + 65E0F88408500917007E5CB9 /* WebNSURLRequestExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 65E0F88208500917007E5CB9 /* WebNSURLRequestExtras.h */; }; + 65E0F88508500917007E5CB9 /* WebNSURLRequestExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = 65E0F88308500917007E5CB9 /* WebNSURLRequestExtras.m */; }; + 65E0F9E608500F23007E5CB9 /* WebNSUserDefaultsExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 65E0F9E408500F23007E5CB9 /* WebNSUserDefaultsExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 65E0F9E708500F23007E5CB9 /* WebNSUserDefaultsExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65E0F9E508500F23007E5CB9 /* WebNSUserDefaultsExtras.mm */; }; + 65EEDE57084FFC9E0002DB25 /* WebNSFileManagerExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 65EEDE55084FFC9E0002DB25 /* WebNSFileManagerExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 65EEDE58084FFC9E0002DB25 /* WebNSFileManagerExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65EEDE56084FFC9E0002DB25 /* WebNSFileManagerExtras.mm */; }; + 65FFB7FC0AD0B7D30048CD05 /* WebDocumentLoaderMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 65FFB7FA0AD0B7D30048CD05 /* WebDocumentLoaderMac.h */; }; + 65FFB7FD0AD0B7D30048CD05 /* WebDocumentLoaderMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65FFB7FB0AD0B7D30048CD05 /* WebDocumentLoaderMac.mm */; }; + 7A8FF0D11075024A00A80A08 /* WebInspectorPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A8FF0D01075024A00A80A08 /* WebInspectorPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7C01CB85173435C900C5D807 /* PopupMenuMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C01CB81173435C900C5D807 /* PopupMenuMac.h */; }; + 7C01CB86173435C900C5D807 /* PopupMenuMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7C01CB82173435C900C5D807 /* PopupMenuMac.mm */; }; + 7C01CB87173435C900C5D807 /* SearchPopupMenuMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C01CB83173435C900C5D807 /* SearchPopupMenuMac.h */; }; + 7C01CB88173435C900C5D807 /* SearchPopupMenuMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7C01CB84173435C900C5D807 /* SearchPopupMenuMac.mm */; }; + 7E6FEF0808985A7200C44C3F /* WebScriptDebugDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E6FEF0508985A7200C44C3F /* WebScriptDebugDelegate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7E6FEF0908985A7200C44C3F /* WebScriptDebugDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7E6FEF0608985A7200C44C3F /* WebScriptDebugDelegate.mm */; }; + 9304B3000B02341500F7850D /* WebIconDatabaseInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9304B2FF0B02341500F7850D /* WebIconDatabaseInternal.h */; }; + 931633EB0AEDFF930062B92D /* WebFrameLoaderClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 931633EA0AEDFF930062B92D /* WebFrameLoaderClient.h */; }; + 931633EF0AEDFFAE0062B92D /* WebFrameLoaderClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 931633EE0AEDFFAE0062B92D /* WebFrameLoaderClient.mm */; }; + 934C11670D8710BB00C32ABD /* WebDynamicScrollBarsViewInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 934C11660D8710BB00C32ABD /* WebDynamicScrollBarsViewInternal.h */; }; + 934C4A910F01406C009372C0 /* WebNSObjectExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = 934C4A900F01406C009372C0 /* WebNSObjectExtras.mm */; }; + 934C4AA00F0141F7009372C0 /* WebResourceInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 934C4A9F0F0141F7009372C0 /* WebResourceInternal.h */; }; + 936A2DE80FD2D08000D312DB /* WebTextCompletionController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 936A2DE70FD2D08000D312DB /* WebTextCompletionController.mm */; }; + 936A2DEA0FD2D08400D312DB /* WebTextCompletionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 936A2DE90FD2D08400D312DB /* WebTextCompletionController.h */; }; + 9391F275121B38BD00EBF7E8 /* WebFrameNetworkingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 9391F273121B38BD00EBF7E8 /* WebFrameNetworkingContext.h */; }; + 9391F276121B38BD00EBF7E8 /* WebFrameNetworkingContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9391F274121B38BD00EBF7E8 /* WebFrameNetworkingContext.mm */; }; + 939810110824BF01008DF038 /* WebBackForwardList.h in Headers */ = {isa = PBXBuildFile; fileRef = 3944607D020F50ED0ECA1767 /* WebBackForwardList.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939810120824BF01008DF038 /* WebHistory.h in Headers */ = {isa = PBXBuildFile; fileRef = F520FB190221DEFD01C1A525 /* WebHistory.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939810130824BF01008DF038 /* WebHistoryItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 3944607F020F50ED0ECA1767 /* WebHistoryItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939810140824BF01008DF038 /* WebHistoryPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B92B820223191D01C1A525 /* WebHistoryPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810150824BF01008DF038 /* WebURLsWithTitles.h in Headers */ = {isa = PBXBuildFile; fileRef = F5E0A76E02B8FEE401C1A525 /* WebURLsWithTitles.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810160824BF01008DF038 /* WebCoreStatistics.h in Headers */ = {isa = PBXBuildFile; fileRef = F59EAE3E0253C7EE018635CA /* WebCoreStatistics.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810180824BF01008DF038 /* WebIconDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = F528E3E9031E91AD01CA2ACA /* WebIconDatabase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810190824BF01008DF038 /* WebIconDatabasePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F528E3EB031E91AD01CA2ACA /* WebIconDatabasePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9398101B0824BF01008DF038 /* WebKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 2568C72C0174912D0ECA149E /* WebKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9398101C0824BF01008DF038 /* WebKitErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = F5927D4E02D26C5E01CA2DBB /* WebKitErrors.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9398101D0824BF01008DF038 /* WebKitLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 93AEB17D032C1735008635CE /* WebKitLogging.h */; settings = {ATTRIBUTES = (); }; }; + 9398101E0824BF01008DF038 /* WebKitNSStringExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 7082F56F038EADAA00A80180 /* WebKitNSStringExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9398101F0824BF01008DF038 /* WebKitStatistics.h in Headers */ = {isa = PBXBuildFile; fileRef = F53444CE02E87CBA018635CA /* WebKitStatistics.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810200824BF01008DF038 /* WebKitStatisticsPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F53444D202E87D4B018635CA /* WebKitStatisticsPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810210824BF01008DF038 /* WebNSControlExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 9345DDB20365FFD0008635CE /* WebNSControlExtras.h */; }; + 939810220824BF01008DF038 /* WebNSImageExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 8398847A03426FB000BC5F5E /* WebNSImageExtras.h */; }; + 939810230824BF01008DF038 /* WebNSPasteboardExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = ED2B2474033A2DA800C1A526 /* WebNSPasteboardExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810240824BF01008DF038 /* WebNSViewExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = F508946902B71D59018A9CD4 /* WebNSViewExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810250824BF01008DF038 /* WebNSWindowExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 9345DDAE0365FB27008635CE /* WebNSWindowExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810270824BF01008DF038 /* WebStringTruncator.h in Headers */ = {isa = PBXBuildFile; fileRef = F59668C802AD2923018635CA /* WebStringTruncator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810290824BF01008DF038 /* WebAuthenticationPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = F8CA15B5029A39D901000122 /* WebAuthenticationPanel.h */; }; + 9398102A0824BF01008DF038 /* WebPanelAuthenticationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 93154EF103A41270008635CE /* WebPanelAuthenticationHandler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9398102B0824BF01008DF038 /* WebNetscapePluginStream.h in Headers */ = {isa = PBXBuildFile; fileRef = F5A672B90263866E01000102 /* WebNetscapePluginStream.h */; }; + 9398102E0824BF01008DF038 /* WebBasePluginPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E4AF46036652150000E506 /* WebBasePluginPackage.h */; }; + 939810310824BF01008DF038 /* WebNetscapePluginPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F7171E0288493C018635CA /* WebNetscapePluginPackage.h */; }; + 939810350824BF01008DF038 /* WebPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 848DFF840365FE6A00CA2ACA /* WebPlugin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939810360824BF01008DF038 /* WebPluginContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 848DFF850365FE6A00CA2ACA /* WebPluginContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939810370824BF01008DF038 /* WebPluginController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8467275C0367158500CA2ACA /* WebPluginController.h */; }; + 939810380824BF01008DF038 /* WebPluginDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F717200288493C018635CA /* WebPluginDatabase.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810390824BF01008DF038 /* WebPluginPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E4AF4B036659440000E506 /* WebPluginPackage.h */; }; + 9398103A0824BF01008DF038 /* WebPluginViewFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 848DFF860365FE6A00CA2ACA /* WebPluginViewFactory.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939810420824BF01008DF038 /* WebJavaScriptTextInputPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = 9345D4EA0365C5B2008635CE /* WebJavaScriptTextInputPanel.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810470824BF01008DF038 /* WebKitPrefix.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C283730284676D018635CA /* WebKitPrefix.h */; }; + 939810490824BF01008DF038 /* WebClipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 933D659903413FF2008635CE /* WebClipView.h */; }; + 9398104B0824BF01008DF038 /* WebDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 39446070020F50ED0ECA1767 /* WebDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9398104C0824BF01008DF038 /* WebDataSourcePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 39446072020F50ED0ECA1767 /* WebDataSourcePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9398104E0824BF01008DF038 /* WebDefaultContextMenuDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5152FADD033FC50400CA2ACD /* WebDefaultContextMenuDelegate.h */; settings = {ATTRIBUTES = (); }; }; + 9398104F0824BF01008DF038 /* WebDefaultPolicyDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5152FADF033FC50400CA2ACD /* WebDefaultPolicyDelegate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810500824BF01008DF038 /* WebDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 35081DAE02B6D4F50ACA2ACA /* WebDocument.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939810510824BF01008DF038 /* WebDynamicScrollBarsView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3944606B020F50ED0ECA1767 /* WebDynamicScrollBarsView.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810520824BF01008DF038 /* WebFormDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D81DAB203EB0B2D00A80166 /* WebFormDelegate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810530824BF01008DF038 /* WebFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 39446074020F50ED0ECA1767 /* WebFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939810540824BF01008DF038 /* WebFramePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CF0E249021361B00ECA16EA /* WebFramePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810550824BF01008DF038 /* WebHTMLRepresentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 35081D9202B6D4D80ACA2ACA /* WebHTMLRepresentation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810560824BF01008DF038 /* WebHTMLRepresentationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F5A55DC702BAA2E8018635CC /* WebHTMLRepresentationPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810570824BF01008DF038 /* WebHTMLView.h in Headers */ = {isa = PBXBuildFile; fileRef = 35081D9402B6D4D80ACA2ACA /* WebHTMLView.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810580824BF01008DF038 /* WebHTMLViewPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 35081D9602B6D4D80ACA2ACA /* WebHTMLViewPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9398105B0824BF01008DF038 /* WebFrameLoadDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5152FAE5033FC52200CA2ACD /* WebFrameLoadDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9398105D0824BF01008DF038 /* WebPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 3944606E020F50ED0ECA1767 /* WebPreferences.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9398105E0824BF01008DF038 /* WebPreferencesPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CAE9D070252A4130ECA16EA /* WebPreferencesPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9398105F0824BF01008DF038 /* WebRenderNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F81C3902B67C26018635CA /* WebRenderNode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810600824BF01008DF038 /* WebResourceLoadDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 513D422E034CF55A00CA2ACD /* WebResourceLoadDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939810630824BF01008DF038 /* WebHistoryItemInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 516F296F03A6C45A00CA2D3A /* WebHistoryItemInternal.h */; }; + 939810640824BF01008DF038 /* WebFormDelegatePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D36FD5E03F78F9E00A80166 /* WebFormDelegatePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810650824BF01008DF038 /* CarbonWindowAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = F7EBEE9003F9DBA103CA0DE6 /* CarbonWindowAdapter.h */; }; + 939810660824BF01008DF038 /* CarbonWindowContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = F7EBEE9203F9DBA103CA0DE6 /* CarbonWindowContentView.h */; }; + 939810670824BF01008DF038 /* CarbonWindowFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = F7EBEE9403F9DBA103CA0DE6 /* CarbonWindowFrame.h */; }; + 939810680824BF01008DF038 /* HIViewAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = F7EBEE9A03F9DBA103CA0DE6 /* HIViewAdapter.h */; }; + 939810690824BF01008DF038 /* HIWebView.h in Headers */ = {isa = PBXBuildFile; fileRef = F7EBEEAA03F9DBA103CA0DE6 /* HIWebView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9398106A0824BF01008DF038 /* CarbonUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = F79B974804019934036909D2 /* CarbonUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9398106D0824BF01008DF038 /* WebKitErrorsPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 84CA5F7E042685E800CA2ACA /* WebKitErrorsPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9398106E0824BF01008DF038 /* WebFrameView.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A8B52E04282B5900CA2D3A /* WebFrameView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9398106F0824BF01008DF038 /* WebFrameViewInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A8B53204282BD200CA2D3A /* WebFrameViewInternal.h */; }; + 939810700824BF01008DF038 /* WebView.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A8B579042834F700CA2D3A /* WebView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939810710824BF01008DF038 /* WebViewPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A8B57D0428353A00CA2D3A /* WebViewPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810720824BF01008DF038 /* WebPolicyDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 51443F9A0429392B00CA2D3A /* WebPolicyDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939810730824BF01008DF038 /* WebPolicyDelegatePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 51443F9C0429392B00CA2D3A /* WebPolicyDelegatePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810750824BF01008DF038 /* WebUIDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 515E27CC0458C86500CA2D3A /* WebUIDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939810760824BF01008DF038 /* WebDefaultUIDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 515E27CF0458CA4B00CA2D3A /* WebDefaultUIDelegate.h */; }; + 939810770824BF01008DF038 /* WebDownload.h in Headers */ = {isa = PBXBuildFile; fileRef = 6578F5DE045F817400000128 /* WebDownload.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939810790824BF01008DF038 /* WebLocalizableStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = BEE18F990472B73200CA289C /* WebLocalizableStrings.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9398107A0824BF01008DF038 /* WebKitSystemBits.h in Headers */ = {isa = PBXBuildFile; fileRef = BEE52D4A0473032500CA289C /* WebKitSystemBits.h */; }; + 9398107E0824BF01008DF038 /* WebNSURLExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = BE6DC39904C62C4E004D0EF6 /* WebNSURLExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9398107F0824BF01008DF038 /* WebDocumentInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = ED21B9810528F7AA003299AC /* WebDocumentInternal.h */; }; + 939810800824BF01008DF038 /* WebDocumentPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 833987810543012D00EE146E /* WebDocumentPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810820824BF01008DF038 /* WebNSDataExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = BECD14290565830A005BB09C /* WebNSDataExtras.h */; }; + 939810830824BF01008DF038 /* WebUIDelegatePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 65A7D44A0568AB2600E70EF6 /* WebUIDelegatePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810840824BF01008DF038 /* WebNSEventExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = BE887BFF056D3A6E009BB3E7 /* WebNSEventExtras.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810850824BF01008DF038 /* WebKeyGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 84723BE3056D719E0044BFEA /* WebKeyGenerator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810870824BF01008DF038 /* WebNSPrintOperationExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = EDD1A5C605C83987008E3150 /* WebNSPrintOperationExtras.h */; }; + 939810880824BF01008DF038 /* WebResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 84311A1205EAAAF00088EDA4 /* WebResource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939810890824BF01008DF038 /* WebResourcePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 84311AF105EAB12B0088EDA4 /* WebResourcePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9398108D0824BF01008DF038 /* WebDefaultEditingDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = BE95BEE605FD0805006E1513 /* WebDefaultEditingDelegate.h */; }; + 939810990824BF01008DF038 /* WebDOMOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 846171F90624AE5B0071A4A3 /* WebDOMOperations.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9398109A0824BF01008DF038 /* WebArchive.h in Headers */ = {isa = PBXBuildFile; fileRef = 8373435A0624EE0D00F3B289 /* WebArchive.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9398109B0824BF01008DF038 /* WebViewInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 930D02BB06275F640076701E /* WebViewInternal.h */; }; + 9398109C0824BF01008DF038 /* WebFrameInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 930D02BD06275F710076701E /* WebFrameInternal.h */; }; + 9398109D0824BF01008DF038 /* WebDOMOperationsPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 84AE905F062DE6A80075BBF9 /* WebDOMOperationsPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9398109E0824BF01008DF038 /* WebEditingDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = BE4FBECB0653DF47005EDE15 /* WebEditingDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939810A10824BF01008DF038 /* WebHTMLViewInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 93185DB506679F42005D5E7E /* WebHTMLViewInternal.h */; }; + 939810A20824BF01008DF038 /* WebNSObjectExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D1FE13067EB10B009CE68A /* WebNSObjectExtras.h */; }; + 939810A40824BF01008DF038 /* WebPDFView.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E94C3406C0321200A9B09E /* WebPDFView.h */; }; + 939810A50824BF01008DF038 /* WebPDFRepresentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E94C6806C0347500A9B09E /* WebPDFRepresentation.h */; }; + 939810A80824BF01008DF038 /* WebPreferenceKeysPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = EDE850CD06ECC79E005FAB05 /* WebPreferenceKeysPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810AC0824BF01008DF038 /* WebPluginViewFactoryPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E679780726D7CF006C7A36 /* WebPluginViewFactoryPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810AF0824BF01008DF038 /* WebFrameViewPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C6F14507920B93002449CD /* WebFrameViewPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810B00824BF01008DF038 /* WebPluginContainerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 65836F5E07EE425900682F95 /* WebPluginContainerPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 939810B10824BF01008DF038 /* WebPluginContainerCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = 65E1150307EFFEBF009B8BF7 /* WebPluginContainerCheck.h */; }; + 939810B50824BF01008DF038 /* WebAuthenticationPanel.nib in Resources */ = {isa = PBXBuildFile; fileRef = 9345D17B0365BF35008635CE /* WebAuthenticationPanel.nib */; }; + 939810B70824BF01008DF038 /* url_icon.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F5B67130023EDF8901C1A525 /* url_icon.tiff */; }; + 939810BC0824BF01008DF038 /* WebBackForwardList.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3944607E020F50ED0ECA1767 /* WebBackForwardList.mm */; }; + 939810BD0824BF01008DF038 /* WebHistoryItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = 39446080020F50ED0ECA1767 /* WebHistoryItem.mm */; }; + 939810BE0824BF01008DF038 /* WebURLsWithTitles.m in Sources */ = {isa = PBXBuildFile; fileRef = F5E0A76F02B8FEE401C1A525 /* WebURLsWithTitles.m */; }; + 939810BF0824BF01008DF038 /* WebCoreStatistics.mm in Sources */ = {isa = PBXBuildFile; fileRef = F59EAE410253C8DE018635CA /* WebCoreStatistics.mm */; }; + 939810C10824BF01008DF038 /* WebIconDatabase.mm in Sources */ = {isa = PBXBuildFile; fileRef = F528E3EA031E91AD01CA2ACA /* WebIconDatabase.mm */; }; + 939810C30824BF01008DF038 /* WebKitLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 93AEB17E032C1735008635CE /* WebKitLogging.m */; }; + 939810C40824BF01008DF038 /* WebKitNSStringExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7082F570038EADAA00A80180 /* WebKitNSStringExtras.mm */; }; + 939810C50824BF01008DF038 /* WebKitStatistics.m in Sources */ = {isa = PBXBuildFile; fileRef = F53444CF02E87CBA018635CA /* WebKitStatistics.m */; }; + 939810C60824BF01008DF038 /* WebNSControlExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = 9345DDB30365FFD0008635CE /* WebNSControlExtras.m */; }; + 939810C70824BF01008DF038 /* WebNSImageExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = 8398847B03426FB000BC5F5E /* WebNSImageExtras.m */; }; + 939810C80824BF01008DF038 /* WebNSPasteboardExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED2B2475033A2DA800C1A526 /* WebNSPasteboardExtras.mm */; }; + 939810C90824BF01008DF038 /* WebNSViewExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = F508946A02B71D59018A9CD4 /* WebNSViewExtras.m */; }; + 939810CA0824BF01008DF038 /* WebNSWindowExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = 9345DDAF0365FB27008635CE /* WebNSWindowExtras.m */; }; + 939810CC0824BF01008DF038 /* WebStringTruncator.mm in Sources */ = {isa = PBXBuildFile; fileRef = F59668C902AD2923018635CA /* WebStringTruncator.mm */; }; + 939810CF0824BF01008DF038 /* WebAuthenticationPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = F8CA15B6029A39D901000122 /* WebAuthenticationPanel.m */; }; + 939810D00824BF01008DF038 /* WebPanelAuthenticationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 93154EF203A41270008635CE /* WebPanelAuthenticationHandler.m */; }; + 939810D10824BF01008DF038 /* WebNetscapePluginStream.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5A672BA0263866E01000102 /* WebNetscapePluginStream.mm */; }; + 939810D30824BF01008DF038 /* WebBasePluginPackage.mm in Sources */ = {isa = PBXBuildFile; fileRef = 83E4AF47036652150000E506 /* WebBasePluginPackage.mm */; }; + 939810D60824BF01008DF038 /* WebNetscapePluginPackage.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5F7171F0288493C018635CA /* WebNetscapePluginPackage.mm */; }; + 939810DA0824BF01008DF038 /* WebPluginController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8467275D0367158500CA2ACA /* WebPluginController.mm */; }; + 939810DB0824BF01008DF038 /* WebPluginDatabase.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5F717210288493C018635CA /* WebPluginDatabase.mm */; }; + 939810DC0824BF01008DF038 /* WebPluginPackage.mm in Sources */ = {isa = PBXBuildFile; fileRef = 83E4AF4C036659440000E506 /* WebPluginPackage.mm */; }; + 939810DD0824BF01008DF038 /* npapi.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5F717230288493C018635CA /* npapi.mm */; }; + 939810E40824BF01008DF038 /* WebJavaScriptTextInputPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9345D4EB0365C5B2008635CE /* WebJavaScriptTextInputPanel.m */; }; + 939810EB0824BF01008DF038 /* WebClipView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 933D659A03413FF2008635CE /* WebClipView.mm */; }; + 939810ED0824BF01008DF038 /* WebDataSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 39446071020F50ED0ECA1767 /* WebDataSource.mm */; }; + 939810EF0824BF01008DF038 /* WebDefaultContextMenuDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5152FADE033FC50400CA2ACD /* WebDefaultContextMenuDelegate.mm */; }; + 939810F00824BF01008DF038 /* WebDefaultPolicyDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5152FAE0033FC50400CA2ACD /* WebDefaultPolicyDelegate.m */; }; + 939810F10824BF01008DF038 /* WebDynamicScrollBarsView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3944606C020F50ED0ECA1767 /* WebDynamicScrollBarsView.mm */; }; + 939810F20824BF01008DF038 /* WebFrame.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5143A370221DCCE01A80181 /* WebFrame.mm */; }; + 939810F30824BF01008DF038 /* WebHTMLRepresentation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35081D9302B6D4D80ACA2ACA /* WebHTMLRepresentation.mm */; }; + 939810F40824BF01008DF038 /* WebHTMLView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35081D9502B6D4D80ACA2ACA /* WebHTMLView.mm */; }; + 939810F80824BF01008DF038 /* WebPreferences.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5AEBB3D024A527601C1A526 /* WebPreferences.mm */; }; + 939810F90824BF01008DF038 /* WebRenderNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5F81C3A02B67C26018635CA /* WebRenderNode.mm */; }; + 939810FC0824BF01008DF038 /* WebFormDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D81DAB303EB0B2D00A80166 /* WebFormDelegate.m */; }; + 939810FD0824BF01008DF038 /* CarbonWindowAdapter.mm in Sources */ = {isa = PBXBuildFile; fileRef = F7EBEE9103F9DBA103CA0DE6 /* CarbonWindowAdapter.mm */; }; + 939810FE0824BF01008DF038 /* CarbonWindowContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = F7EBEE9303F9DBA103CA0DE6 /* CarbonWindowContentView.m */; }; + 939810FF0824BF01008DF038 /* CarbonWindowFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = F7EBEE9503F9DBA103CA0DE6 /* CarbonWindowFrame.m */; }; + 939811000824BF01008DF038 /* HIViewAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = F7EBEE9B03F9DBA103CA0DE6 /* HIViewAdapter.m */; settings = {COMPILER_FLAGS = "-Wno-deprecated-declarations"; }; }; + 939811010824BF01008DF038 /* CarbonUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = F79B974904019934036909D2 /* CarbonUtils.m */; }; + 939811020824BF01008DF038 /* HIWebView.mm in Sources */ = {isa = PBXBuildFile; fileRef = F7EBEEAB03F9DBA103CA0DE6 /* HIWebView.mm */; settings = {COMPILER_FLAGS = "-Wno-deprecated-declarations"; }; }; + 939811030824BF01008DF038 /* WebKitErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = 83730F9803FB1E660004736E /* WebKitErrors.m */; }; + 939811060824BF01008DF038 /* WebFrameView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51A8B52F04282B5900CA2D3A /* WebFrameView.mm */; }; + 939811070824BF01008DF038 /* WebView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51A8B57A042834F700CA2D3A /* WebView.mm */; }; + 939811080824BF01008DF038 /* WebPolicyDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51443F9B0429392B00CA2D3A /* WebPolicyDelegate.mm */; }; + 9398110A0824BF01008DF038 /* WebDefaultUIDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 515E27D00458CA4B00CA2D3A /* WebDefaultUIDelegate.m */; }; + 9398110E0824BF01008DF038 /* WebKitSystemBits.m in Sources */ = {isa = PBXBuildFile; fileRef = BEE52D4B0473032500CA289C /* WebKitSystemBits.m */; }; + 939811120824BF01008DF038 /* WebNSURLExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = BE6DC39A04C62C4E004D0EF6 /* WebNSURLExtras.mm */; }; + 939811130824BF01008DF038 /* WebHistory.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65DA2608052CC18700A97B31 /* WebHistory.mm */; }; + 939811150824BF01008DF038 /* WebNSDataExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = BECD142A0565830A005BB09C /* WebNSDataExtras.m */; }; + 939811160824BF01008DF038 /* WebNSEventExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = BE887C00056D3A6E009BB3E7 /* WebNSEventExtras.m */; }; + 939811170824BF01008DF038 /* WebKeyGenerator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84723BE4056D719E0044BFEA /* WebKeyGenerator.mm */; }; + 939811190824BF01008DF038 /* WebNSPrintOperationExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = EDD1A5C705C83987008E3150 /* WebNSPrintOperationExtras.m */; }; + 9398111A0824BF01008DF038 /* WebResource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84311A1305EAAAF00088EDA4 /* WebResource.mm */; }; + 9398111B0824BF01008DF038 /* WebDefaultEditingDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = BE95BEE505FD0805006E1513 /* WebDefaultEditingDelegate.m */; }; + 9398111C0824BF01008DF038 /* WebDOMOperations.mm in Sources */ = {isa = PBXBuildFile; fileRef = 846171FA0624AE5B0071A4A3 /* WebDOMOperations.mm */; }; + 9398111D0824BF01008DF038 /* WebArchive.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8373435B0624EE0D00F3B289 /* WebArchive.mm */; }; + 9398111E0824BF01008DF038 /* WebPDFView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51E94C3506C0321200A9B09E /* WebPDFView.mm */; }; + 9398111F0824BF01008DF038 /* WebPDFRepresentation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51E94C6906C0347500A9B09E /* WebPDFRepresentation.mm */; }; + 939811260824BF01008DF038 /* WebPluginContainerCheck.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65E1150407EFFEBF009B8BF7 /* WebPluginContainerCheck.mm */; }; + 93E2A1A4123B0B3C009FE12A /* WebDashboardRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = 93E2A1A2123B0B3C009FE12A /* WebDashboardRegion.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 93E2A1A5123B0B3C009FE12A /* WebDashboardRegion.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93E2A1A3123B0B3C009FE12A /* WebDashboardRegion.mm */; }; + 93EB178D09F88D460091F8FF /* WebSystemInterface.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93EB178C09F88D460091F8FF /* WebSystemInterface.mm */; }; + 93EB178F09F88D510091F8FF /* WebSystemInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 93EB178E09F88D510091F8FF /* WebSystemInterface.h */; }; + 93FDE9330D79CAF30074F029 /* WebHistoryInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 93FDE9320D79CAF30074F029 /* WebHistoryInternal.h */; }; + A5687BDA135B791A0074CBCB /* WebNodeHighlighter.h in Headers */ = {isa = PBXBuildFile; fileRef = A5687BD8135B791A0074CBCB /* WebNodeHighlighter.h */; }; + A5687BDB135B791A0074CBCB /* WebNodeHighlighter.mm in Sources */ = {isa = PBXBuildFile; fileRef = A5687BD9135B791A0074CBCB /* WebNodeHighlighter.mm */; }; + A57E2F24120749E600048DF3 /* WebQuotaManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A57E2F22120749E600048DF3 /* WebQuotaManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A58A5799143E727000125F50 /* WebOpenPanelResultListener.h in Headers */ = {isa = PBXBuildFile; fileRef = A58A5797143E727000125F50 /* WebOpenPanelResultListener.h */; }; + A58A579A143E727000125F50 /* WebOpenPanelResultListener.mm in Sources */ = {isa = PBXBuildFile; fileRef = A58A5798143E727000125F50 /* WebOpenPanelResultListener.mm */; }; + A5DEFC0A11D5331C00885273 /* WebSecurityOrigin.mm in Sources */ = {isa = PBXBuildFile; fileRef = A5DEFC0711D5331C00885273 /* WebSecurityOrigin.mm */; }; + A5DEFC0B11D5331C00885273 /* WebSecurityOriginInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = A5DEFC0811D5331C00885273 /* WebSecurityOriginInternal.h */; }; + A5DEFC0C11D5331C00885273 /* WebSecurityOriginPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = A5DEFC0911D5331C00885273 /* WebSecurityOriginPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A5DEFC0F11D5343E00885273 /* WebDatabaseQuotaManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A5DEFC0D11D5343E00885273 /* WebDatabaseQuotaManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A5DEFC1011D5343E00885273 /* WebDatabaseQuotaManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = A5DEFC0E11D5343E00885273 /* WebDatabaseQuotaManager.mm */; }; + A5DEFC1311D5344B00885273 /* WebApplicationCacheQuotaManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A5DEFC1111D5344B00885273 /* WebApplicationCacheQuotaManager.h */; }; + A5DEFC1411D5344B00885273 /* WebApplicationCacheQuotaManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = A5DEFC1211D5344B00885273 /* WebApplicationCacheQuotaManager.mm */; }; + A70936AF0B5608DC00CDB48E /* WebDragClient.h in Headers */ = {isa = PBXBuildFile; fileRef = A70936AD0B5608DC00CDB48E /* WebDragClient.h */; }; + A70936B00B5608DC00CDB48E /* WebDragClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = A70936AE0B5608DC00CDB48E /* WebDragClient.mm */; }; + A864B3F6123ED9FA00C2A612 /* MailQuirksUserScript.js in Resources */ = {isa = PBXBuildFile; fileRef = A864B3E5123ED83D00C2A612 /* MailQuirksUserScript.js */; }; + AB9FBBBB0F8582B0006ADC43 /* WebDOMOperationsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = AB9FBBBA0F8582B0006ADC43 /* WebDOMOperationsInternal.h */; }; + ABDDF20D08EB0DDC001E1241 /* WebDownloadInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = ABDDF20C08EB0DDC001E1241 /* WebDownloadInternal.h */; }; + B6CE5C24100BC5CE00219936 /* WebApplicationCache.mm in Sources */ = {isa = PBXBuildFile; fileRef = B68049720FFBCEC1009F7F62 /* WebApplicationCache.mm */; }; + B6CE5C25100BC5F500219936 /* WebApplicationCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B68049710FFBCEC1009F7F62 /* WebApplicationCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B804176F1217A83100466BAE /* WebInspectorFrontend.h in Headers */ = {isa = PBXBuildFile; fileRef = B804176D1217A83100466BAE /* WebInspectorFrontend.h */; }; + B80417701217A83100466BAE /* WebInspectorFrontend.mm in Sources */ = {isa = PBXBuildFile; fileRef = B804176E1217A83100466BAE /* WebInspectorFrontend.mm */; }; + B82958D3132707D0000D0E79 /* CorrectionPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = B82958D1132707D0000D0E79 /* CorrectionPanel.h */; }; + B82958D4132707D0000D0E79 /* CorrectionPanel.mm in Sources */ = {isa = PBXBuildFile; fileRef = B82958D2132707D0000D0E79 /* CorrectionPanel.mm */; }; + BC26C69E10B743F400B687ED /* WebSerializedJSValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC26C69D10B743F400B687ED /* WebSerializedJSValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC26C6A510B7447A00B687ED /* WebSerializedJSValue.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC26C6A410B7447A00B687ED /* WebSerializedJSValue.mm */; }; + BC2E464D0FD8A96800A9D9DE /* WebViewData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2E464B0FD8A96800A9D9DE /* WebViewData.h */; }; + BC2E464E0FD8A96800A9D9DE /* WebViewData.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC2E464C0FD8A96800A9D9DE /* WebViewData.mm */; }; + BC42D324131ED1E00075FA4B /* WebLocalizableStringsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BC42D322131ED1E00075FA4B /* WebLocalizableStringsInternal.h */; }; + BC42D34D131ED3880075FA4B /* WebLocalizableStringsInternal.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC42D34C131ED3880075FA4B /* WebLocalizableStringsInternal.mm */; }; + BC542C420FD7766F00D8AB5D /* WebDelegateImplementationCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = BC542C400FD7766F00D8AB5D /* WebDelegateImplementationCaching.h */; }; + BC542C430FD7766F00D8AB5D /* WebDelegateImplementationCaching.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC542C410FD7766F00D8AB5D /* WebDelegateImplementationCaching.mm */; }; + BC7F884B10C8775A00D6133D /* WebGeolocationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = BC7F884910C8775A00D6133D /* WebGeolocationClient.h */; }; + BC7F884C10C8775A00D6133D /* WebGeolocationClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC7F884A10C8775A00D6133D /* WebGeolocationClient.mm */; }; + BC7F889E10C9D30C00D6133D /* WebGeolocationPosition.h in Headers */ = {isa = PBXBuildFile; fileRef = BC7F889C10C9D30C00D6133D /* WebGeolocationPosition.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC7F889F10C9D30C00D6133D /* WebGeolocationPosition.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC7F889D10C9D30C00D6133D /* WebGeolocationPosition.mm */; }; + BC7F88A510C9D88B00D6133D /* WebGeolocationPositionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BC7F88A410C9D88B00D6133D /* WebGeolocationPositionInternal.h */; }; + C0167BF80D7F5DD00028696E /* WebScriptDebugger.h in Headers */ = {isa = PBXBuildFile; fileRef = C0167BF60D7F5DD00028696E /* WebScriptDebugger.h */; }; + C0167BF90D7F5DD00028696E /* WebScriptDebugger.mm in Sources */ = {isa = PBXBuildFile; fileRef = C0167BF70D7F5DD00028696E /* WebScriptDebugger.mm */; }; + C0B1F7E810AC8E3100C925D9 /* WebScriptWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = C0B1F7E510AC8E3100C925D9 /* WebScriptWorld.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C0B1F7E910AC8E3100C925D9 /* WebScriptWorld.mm in Sources */ = {isa = PBXBuildFile; fileRef = C0B1F7E610AC8E3100C925D9 /* WebScriptWorld.mm */; }; + C0B1F7EA10AC8E3100C925D9 /* WebScriptWorldInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = C0B1F7E710AC8E3100C925D9 /* WebScriptWorldInternal.h */; }; + C0B88E8B10A08F3D00FBB3F5 /* WebFrameLoadDelegatePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = C0B88E8A10A08F3D00FBB3F5 /* WebFrameLoadDelegatePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C0C5B3EE1177A4A0002B0AEF /* WebUserContentURLPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = C0C5B3EC1177A4A0002B0AEF /* WebUserContentURLPattern.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C0C5B3EF1177A4A0002B0AEF /* WebUserContentURLPattern.mm in Sources */ = {isa = PBXBuildFile; fileRef = C0C5B3ED1177A4A0002B0AEF /* WebUserContentURLPattern.mm */; }; + CD8BFCE715531224005AFB25 /* WebKitFullScreenListener.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD8BFCE515531224005AFB25 /* WebKitFullScreenListener.mm */; }; + CD8BFCE815531224005AFB25 /* WebKitFullScreenListener.h in Headers */ = {isa = PBXBuildFile; fileRef = CD8BFCE615531224005AFB25 /* WebKitFullScreenListener.h */; }; + CDA62AE2125F87C2007FD118 /* WebFullScreenController.h in Headers */ = {isa = PBXBuildFile; fileRef = CDA62AE0125F87C2007FD118 /* WebFullScreenController.h */; }; + CDA62AE3125F87C2007FD118 /* WebFullScreenController.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDA62AE1125F87C2007FD118 /* WebFullScreenController.mm */; }; + CEDA12DB152CBE6800D9E08D /* WebAlternativeTextClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = CEDA12D9152CBE6800D9E08D /* WebAlternativeTextClient.mm */; }; + CEDA12DC152CBE6800D9E08D /* WebAlternativeTextClient.h in Headers */ = {isa = PBXBuildFile; fileRef = CEDA12DA152CBE6800D9E08D /* WebAlternativeTextClient.h */; }; + DD7CDEE70A23BA9E00069928 /* WebTypesInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = DD7CDEE60A23BA9E00069928 /* WebTypesInternal.h */; }; + DD89682009AA87240097E7F0 /* WebElementDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = DD89681E09AA87240097E7F0 /* WebElementDictionary.h */; }; + DD89682109AA87240097E7F0 /* WebElementDictionary.mm in Sources */ = {isa = PBXBuildFile; fileRef = DD89681F09AA87240097E7F0 /* WebElementDictionary.mm */; }; + E15663190FB61C1F00C199CA /* WebDownload.mm in Sources */ = {isa = PBXBuildFile; fileRef = E15663180FB61C1F00C199CA /* WebDownload.mm */; }; + E169836211346D1B00894115 /* ProxyRuntimeObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E169836111346D1B00894115 /* ProxyRuntimeObject.h */; }; + E169836C11346D5600894115 /* ProxyRuntimeObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = E169836B11346D5600894115 /* ProxyRuntimeObject.mm */; }; + ED5B9524111B725A00472298 /* WebLocalizableStrings.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED5B9523111B725A00472298 /* WebLocalizableStrings.mm */; }; + ED7F6D8B0980683500C235ED /* WebNSDataExtrasPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = ED7F6D8A0980683500C235ED /* WebNSDataExtrasPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + EDE983800BCDF5FE00FDAE28 /* WebNSArrayExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = EDE9837E0BCDF5FE00FDAE28 /* WebNSArrayExtras.h */; }; + EDE983810BCDF5FE00FDAE28 /* WebNSArrayExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = EDE9837F0BCDF5FE00FDAE28 /* WebNSArrayExtras.m */; }; + F67DD7E6125E4527007BDCB8 /* WebSerializedJSValuePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F67DD7E5125E4527007BDCB8 /* WebSerializedJSValuePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F834AAD70E64B1C700E2737C /* WebTextIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = F834AAD50E64B1C700E2737C /* WebTextIterator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F834AAD80E64B1C700E2737C /* WebTextIterator.mm in Sources */ = {isa = PBXBuildFile; fileRef = F834AAD60E64B1C700E2737C /* WebTextIterator.mm */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 065AD5A10B0C32C7005A2B1D /* WebContextMenuClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebContextMenuClient.h; sourceTree = ""; }; + 065AD5A20B0C32C7005A2B1D /* WebContextMenuClient.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebContextMenuClient.mm; sourceTree = ""; }; + 06693DDA0BFBA85200216072 /* WebInspectorClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebInspectorClient.h; sourceTree = ""; }; + 06693DDB0BFBA85200216072 /* WebInspectorClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebInspectorClient.mm; sourceTree = ""; }; + 0AB752350FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNetscapeContainerCheckContextInfo.h; sourceTree = ""; }; + 0AB752360FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNetscapeContainerCheckContextInfo.mm; sourceTree = ""; }; + 0ACE917210FE47E30096A45F /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; + 0AEBFF610F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = WebNetscapeContainerCheckPrivate.h; sourceTree = ""; }; + 0AEBFF620F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNetscapeContainerCheckPrivate.mm; sourceTree = ""; }; + 0F30985D11ECFE4400F559DF /* WebRenderLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebRenderLayer.h; sourceTree = ""; }; + 0F30985E11ECFE4500F559DF /* WebRenderLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebRenderLayer.mm; sourceTree = ""; }; + 14D8252D0AF955090004F057 /* WebChromeClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebChromeClient.h; sourceTree = ""; }; + 14D8252E0AF955090004F057 /* WebChromeClient.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebChromeClient.mm; sourceTree = ""; }; + 1A20D08A0ED384F20043FA9F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = ""; }; + 1A2DBE9D0F251E3A0036F8A6 /* ProxyInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProxyInstance.h; sourceTree = ""; }; + 1A2DBE9E0F251E3A0036F8A6 /* ProxyInstance.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ProxyInstance.mm; sourceTree = ""; }; + 1A4DF5200EC8C74D006BD4B4 /* WebNetscapePluginView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNetscapePluginView.h; sourceTree = ""; }; + 1A4DF5210EC8C74D006BD4B4 /* WebNetscapePluginView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNetscapePluginView.mm; sourceTree = ""; }; + 1A4DF5E20EC8D104006BD4B4 /* WebBaseNetscapePluginView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebBaseNetscapePluginView.h; sourceTree = ""; }; + 1A4DF5E30EC8D104006BD4B4 /* WebBaseNetscapePluginView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebBaseNetscapePluginView.mm; sourceTree = ""; }; + 1A60518D17502A5D00BC62F5 /* BinaryPropertyList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BinaryPropertyList.cpp; sourceTree = ""; }; + 1A60518E17502A5D00BC62F5 /* BinaryPropertyList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BinaryPropertyList.h; sourceTree = ""; }; + 1A60518F17502A5D00BC62F5 /* HistoryPropertyList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HistoryPropertyList.cpp; sourceTree = ""; }; + 1A60519017502A5D00BC62F5 /* HistoryPropertyList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryPropertyList.h; sourceTree = ""; }; + 1A74A28C0F4F75400082E228 /* WebTextInputWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebTextInputWindowController.h; sourceTree = ""; }; + 1A74A28D0F4F75400082E228 /* WebTextInputWindowController.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = WebTextInputWindowController.m; sourceTree = ""; }; + 1A77B02C0EE7730500C8A1F9 /* WebPluginRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPluginRequest.h; sourceTree = ""; }; + 1A77B02D0EE7730500C8A1F9 /* WebPluginRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebPluginRequest.m; sourceTree = ""; }; + 1A8DED4E0EE88B8A00F25022 /* HostedNetscapePluginStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HostedNetscapePluginStream.h; sourceTree = ""; }; + 1A8DED4F0EE88B8A00F25022 /* HostedNetscapePluginStream.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = HostedNetscapePluginStream.mm; sourceTree = ""; }; + 1AA879B411CBE9BF003C664F /* WebPlatformStrategies.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPlatformStrategies.h; sourceTree = ""; }; + 1AA879B511CBE9BF003C664F /* WebPlatformStrategies.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebPlatformStrategies.mm; sourceTree = ""; }; + 1AAF588A0EDCCEA3008D883D /* WebKitPluginAgent.defs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.mig; path = WebKitPluginAgent.defs; sourceTree = ""; }; + 1AAF588B0EDCCEA3008D883D /* WebKitPluginAgentReply.defs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.mig; path = WebKitPluginAgentReply.defs; sourceTree = ""; }; + 1AAF588C0EDCCEA3008D883D /* WebKitPluginClient.defs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.mig; path = WebKitPluginClient.defs; sourceTree = ""; }; + 1AAF588D0EDCCEA3008D883D /* WebKitPluginHost.defs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.mig; path = WebKitPluginHost.defs; sourceTree = ""; }; + 1AAF588E0EDCCEA3008D883D /* WebKitPluginHostTypes.defs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.mig; path = WebKitPluginHostTypes.defs; sourceTree = ""; }; + 1AAF5CE40EDDE1FE008D883D /* NetscapePluginHostManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetscapePluginHostManager.h; sourceTree = ""; }; + 1AAF5CE50EDDE1FE008D883D /* NetscapePluginHostManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetscapePluginHostManager.mm; sourceTree = ""; }; + 1AAF5CE60EDDE1FE008D883D /* NetscapePluginHostProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetscapePluginHostProxy.h; sourceTree = ""; }; + 1AAF5CE70EDDE1FE008D883D /* NetscapePluginHostProxy.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetscapePluginHostProxy.mm; sourceTree = ""; }; + 1AAF5CE80EDDE1FE008D883D /* NetscapePluginInstanceProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetscapePluginInstanceProxy.h; sourceTree = ""; }; + 1AAF5CE90EDDE1FE008D883D /* NetscapePluginInstanceProxy.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetscapePluginInstanceProxy.mm; sourceTree = ""; }; + 1AAF5D080EDDE71D008D883D /* WebKitPluginHostTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitPluginHostTypes.h; sourceTree = ""; }; + 1AAF5FBD0EDE3A92008D883D /* WebHostedNetscapePluginView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebHostedNetscapePluginView.h; sourceTree = ""; }; + 1AAF5FBE0EDE3A92008D883D /* WebHostedNetscapePluginView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebHostedNetscapePluginView.mm; sourceTree = ""; }; + 1AEA66D20DC6B1FF003D12BF /* WebNetscapePluginEventHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNetscapePluginEventHandler.h; sourceTree = ""; }; + 1AEA66D30DC6B1FF003D12BF /* WebNetscapePluginEventHandler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNetscapePluginEventHandler.mm; sourceTree = ""; }; + 1AEA66D60DC6B209003D12BF /* WebNetscapePluginEventHandlerCarbon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNetscapePluginEventHandlerCarbon.h; sourceTree = ""; }; + 1AEA66D70DC6B209003D12BF /* WebNetscapePluginEventHandlerCarbon.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNetscapePluginEventHandlerCarbon.mm; sourceTree = ""; }; + 1AEA6A4E0DC8CE2F003D12BF /* WebNetscapePluginEventHandlerCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNetscapePluginEventHandlerCocoa.h; sourceTree = ""; }; + 1AEA6A4F0DC8CE2F003D12BF /* WebNetscapePluginEventHandlerCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNetscapePluginEventHandlerCocoa.mm; sourceTree = ""; }; + 1C0D40850AC1C8F40009C113 /* WebKitVersionChecks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitVersionChecks.h; sourceTree = ""; }; + 1C0D40860AC1C8F40009C113 /* WebKitVersionChecks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebKitVersionChecks.m; sourceTree = ""; }; + 1C68F663095B5FC100C2984E /* WebNodeHighlight.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNodeHighlight.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; wrapsLines = 0; }; + 1C68F664095B5FC100C2984E /* WebNodeHighlight.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebNodeHighlight.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 1C68F665095B5FC100C2984E /* WebNodeHighlightView.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNodeHighlightView.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 1C68F666095B5FC100C2984E /* WebNodeHighlightView.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebNodeHighlightView.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 1C6CB03E0AA6391D00D23BFD /* MigrateHeaders.make */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = MigrateHeaders.make; path = mac/MigrateHeaders.make; sourceTree = ""; }; + 1C7B0C650EB2464D00A28502 /* WebInspectorClientCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebInspectorClientCF.cpp; path = cf/WebCoreSupport/WebInspectorClientCF.cpp; sourceTree = SOURCE_ROOT; }; + 1C8CB0790AE9830C00B1F6E9 /* WebEditingDelegatePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebEditingDelegatePrivate.h; sourceTree = ""; }; + 1C904FD20BA9DD0F0081E9D0 /* WebKit.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = WebKit.xcconfig; sourceTree = ""; }; + 1C904FD30BA9DD0F0081E9D0 /* Version.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = ""; }; + 1C904FD40BA9DD0F0081E9D0 /* DebugRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = ""; }; + 1C904FD50BA9DD0F0081E9D0 /* Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = ""; }; + 1C9F5EFB1651CDF700C480F8 /* Dock.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = Dock.pdf; sourceTree = ""; }; + 1CCFFD120B1F81F2002EE926 /* OldWebAssertions.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = OldWebAssertions.c; sourceTree = ""; }; + 224100F2091818D900D2D266 /* WebPluginsPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPluginsPrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 224100F80918190100D2D266 /* WebPluginsPrivate.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebPluginsPrivate.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 225F881409F97E8A00423A40 /* WebPluginPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPluginPrivate.h; sourceTree = ""; }; + 22F219CB08D236730030E078 /* WebBackForwardListPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebBackForwardListPrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 2568C72C0174912D0ECA149E /* WebKit.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebKit.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 29AEF95D134C755400FE5096 /* OutlookQuirksUserScript.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = OutlookQuirksUserScript.js; sourceTree = ""; }; + 2D36FD5E03F78F9E00A80166 /* WebFormDelegatePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebFormDelegatePrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 2D81DAB203EB0B2D00A80166 /* WebFormDelegate.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebFormDelegate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 2D81DAB303EB0B2D00A80166 /* WebFormDelegate.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebFormDelegate.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 312E2FE314E48182007CCA18 /* WebNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNotification.h; sourceTree = ""; }; + 312E2FE414E48182007CCA18 /* WebNotification.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNotification.mm; sourceTree = ""; }; + 312E2FE814E48215007CCA18 /* WebNotificationInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNotificationInternal.h; sourceTree = ""; }; + 31C11A6C1476552E0049A4CC /* WebNotificationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNotificationClient.h; sourceTree = ""; }; + 31C11A6D1476552E0049A4CC /* WebNotificationClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNotificationClient.mm; sourceTree = ""; }; + 35081D9202B6D4D80ACA2ACA /* WebHTMLRepresentation.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; indentWidth = 4; path = WebHTMLRepresentation.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 35081D9302B6D4D80ACA2ACA /* WebHTMLRepresentation.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebHTMLRepresentation.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 35081D9402B6D4D80ACA2ACA /* WebHTMLView.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebHTMLView.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 35081D9502B6D4D80ACA2ACA /* WebHTMLView.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebHTMLView.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 35081D9602B6D4D80ACA2ACA /* WebHTMLViewPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebHTMLViewPrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 35081DAE02B6D4F50ACA2ACA /* WebDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDocument.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 37B6FB4C1063530C000FDB3B /* WebPDFDocumentExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPDFDocumentExtras.h; sourceTree = ""; }; + 37B6FB4D1063530C000FDB3B /* WebPDFDocumentExtras.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebPDFDocumentExtras.mm; sourceTree = ""; }; + 37D1DCA61065928C0068F7EF /* WebJSPDFDoc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebJSPDFDoc.h; sourceTree = ""; }; + 37D1DCA71065928C0068F7EF /* WebJSPDFDoc.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = WebJSPDFDoc.mm; sourceTree = ""; }; + 3944606B020F50ED0ECA1767 /* WebDynamicScrollBarsView.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDynamicScrollBarsView.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 3944606C020F50ED0ECA1767 /* WebDynamicScrollBarsView.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebDynamicScrollBarsView.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 3944606E020F50ED0ECA1767 /* WebPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPreferences.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 39446070020F50ED0ECA1767 /* WebDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDataSource.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 39446071020F50ED0ECA1767 /* WebDataSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDataSource.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 39446072020F50ED0ECA1767 /* WebDataSourcePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDataSourcePrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 39446074020F50ED0ECA1767 /* WebFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebFrame.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 3944607D020F50ED0ECA1767 /* WebBackForwardList.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebBackForwardList.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 3944607E020F50ED0ECA1767 /* WebBackForwardList.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebBackForwardList.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 3944607F020F50ED0ECA1767 /* WebHistoryItem.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebHistoryItem.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 39446080020F50ED0ECA1767 /* WebHistoryItem.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebHistoryItem.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 3AB02AF512C1319B00FBB694 /* WebStorageManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebStorageManager.mm; sourceTree = ""; }; + 3AB02AFF12C132B200FBB694 /* WebStorageManagerPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebStorageManagerPrivate.h; sourceTree = ""; }; + 3ABB3C781309C3B500E93D94 /* WebStorageTrackerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebStorageTrackerClient.h; sourceTree = ""; }; + 3ABB3C791309C3B500E93D94 /* WebStorageTrackerClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebStorageTrackerClient.mm; sourceTree = ""; }; + 3AE15D4F12DBDED4009323C8 /* WebStorageManagerInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebStorageManagerInternal.h; sourceTree = ""; }; + 449098B90F8F82DF0076A327 /* FeatureDefines.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FeatureDefines.xcconfig; sourceTree = ""; }; + 44BB8B131241A022001E3A22 /* WebArchiveInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebArchiveInternal.h; sourceTree = ""; }; + 4BF99F8E0AE050BC00815C2B /* WebEditorClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebEditorClient.h; sourceTree = ""; }; + 4BF99F8F0AE050BC00815C2B /* WebEditorClient.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebEditorClient.mm; sourceTree = ""; }; + 511F3FD10CECC88F00852565 /* WebDatabaseManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDatabaseManager.mm; sourceTree = ""; }; + 511F3FD20CECC88F00852565 /* WebDatabaseManagerPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDatabaseManagerPrivate.h; sourceTree = ""; }; + 511F3FD30CECC88F00852565 /* WebDatabaseManagerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDatabaseManagerClient.h; sourceTree = ""; }; + 511F3FD40CECC88F00852565 /* WebDatabaseManagerClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDatabaseManagerClient.mm; sourceTree = ""; }; + 513D422E034CF55A00CA2ACD /* WebResourceLoadDelegate.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebResourceLoadDelegate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51443F9A0429392B00CA2D3A /* WebPolicyDelegate.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPolicyDelegate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51443F9B0429392B00CA2D3A /* WebPolicyDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebPolicyDelegate.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51443F9C0429392B00CA2D3A /* WebPolicyDelegatePrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPolicyDelegatePrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51494CD40C7EBDE0004178C5 /* WebIconDatabaseClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebIconDatabaseClient.h; sourceTree = ""; }; + 51494CD50C7EBDE0004178C5 /* WebIconDatabaseClient.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebIconDatabaseClient.mm; sourceTree = ""; }; + 51494D220C7EC1B6004178C5 /* WebNSNotificationCenterExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNSNotificationCenterExtras.h; sourceTree = ""; }; + 51494D230C7EC1B7004178C5 /* WebNSNotificationCenterExtras.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebNSNotificationCenterExtras.m; sourceTree = ""; }; + 5152FADD033FC50400CA2ACD /* WebDefaultContextMenuDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDefaultContextMenuDelegate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 5152FADE033FC50400CA2ACD /* WebDefaultContextMenuDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDefaultContextMenuDelegate.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 5152FADF033FC50400CA2ACD /* WebDefaultPolicyDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDefaultPolicyDelegate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 5152FAE0033FC50400CA2ACD /* WebDefaultPolicyDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebDefaultPolicyDelegate.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 5152FAE5033FC52200CA2ACD /* WebFrameLoadDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebFrameLoadDelegate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 5158F6EE106D862A00AF457C /* WebHistoryDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebHistoryDelegate.h; sourceTree = ""; }; + 515E27CC0458C86500CA2D3A /* WebUIDelegate.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebUIDelegate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 515E27CF0458CA4B00CA2D3A /* WebDefaultUIDelegate.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDefaultUIDelegate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 515E27D00458CA4B00CA2D3A /* WebDefaultUIDelegate.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebDefaultUIDelegate.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 516F296F03A6C45A00CA2D3A /* WebHistoryItemInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebHistoryItemInternal.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 5185F62510712B80007AA393 /* WebNavigationData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNavigationData.h; sourceTree = ""; }; + 5185F62710712B97007AA393 /* WebNavigationData.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNavigationData.mm; sourceTree = ""; }; + 51A8B52E04282B5900CA2D3A /* WebFrameView.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebFrameView.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51A8B52F04282B5900CA2D3A /* WebFrameView.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebFrameView.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51A8B53204282BD200CA2D3A /* WebFrameViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebFrameViewInternal.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51A8B579042834F700CA2D3A /* WebView.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebView.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51A8B57A042834F700CA2D3A /* WebView.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebView.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51A8B57D0428353A00CA2D3A /* WebViewPrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebViewPrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51B2A0FF0ADB15D0002A9BEE /* WebIconDatabaseDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebIconDatabaseDelegate.h; sourceTree = ""; }; + 51C714FA0B20F79F00E5E33C /* WebBackForwardListInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebBackForwardListInternal.h; sourceTree = ""; }; + 51CBFCAC0D10E6C5002DBF51 /* WebCachedFramePlatformData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCachedFramePlatformData.h; sourceTree = ""; }; + 51E94C3406C0321200A9B09E /* WebPDFView.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPDFView.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51E94C3506C0321200A9B09E /* WebPDFView.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebPDFView.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51E94C6806C0347500A9B09E /* WebPDFRepresentation.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPDFRepresentation.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51E94C6906C0347500A9B09E /* WebPDFRepresentation.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebPDFRepresentation.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 51FDC4D20B0AF5C100F84EB3 /* WebHistoryItemPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebHistoryItemPrivate.h; sourceTree = ""; }; + 5241ADF30B1BC48A004012BD /* WebCache.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebCache.h; sourceTree = ""; }; + 5241ADF40B1BC48A004012BD /* WebCache.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCache.mm; sourceTree = ""; }; + 598AD9191201CEC900ABAE4E /* WebDeviceOrientationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDeviceOrientationClient.h; sourceTree = ""; }; + 598AD91D1201CECF00ABAE4E /* WebDeviceOrientationClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDeviceOrientationClient.mm; sourceTree = ""; }; + 598AD91F1201CF0700ABAE4E /* WebDeviceOrientation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDeviceOrientation.h; sourceTree = ""; }; + 598AD9211201CF1000ABAE4E /* WebDeviceOrientation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDeviceOrientation.mm; sourceTree = ""; }; + 598AD9231201CF1900ABAE4E /* WebDeviceOrientationInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDeviceOrientationInternal.h; sourceTree = ""; }; + 598AD9251201CF2500ABAE4E /* WebDeviceOrientationProviderMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDeviceOrientationProviderMock.h; sourceTree = ""; }; + 598AD9271201CF3200ABAE4E /* WebDeviceOrientationProviderMock.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDeviceOrientationProviderMock.mm; sourceTree = ""; }; + 598AD9291201CF3B00ABAE4E /* WebDeviceOrientationProviderMockInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDeviceOrientationProviderMockInternal.h; sourceTree = ""; }; + 598ADA451202275000ABAE4E /* WebDeviceOrientationProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDeviceOrientationProvider.h; sourceTree = ""; }; + 5D4DE0981479CBDF00EA3DF4 /* DiskArbitration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DiskArbitration.framework; path = /System/Library/Frameworks/DiskArbitration.framework; sourceTree = ""; }; + 5D7BF8120C2A1D90008CE06D /* WebInspector.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebInspector.h; sourceTree = ""; }; + 5D7BF8130C2A1D90008CE06D /* WebInspector.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebInspector.mm; sourceTree = ""; }; + 5DE83A750D0F7F9400CAD12A /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/WebJavaScriptTextInputPanel.nib; sourceTree = SOURCE_ROOT; }; + 5DE92FEE0BD7017E0059A5FD /* WebAssertions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebAssertions.h; sourceTree = ""; }; + 65488D9F084FBCCB00831AD0 /* WebNSDictionaryExtras.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSDictionaryExtras.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 65488DA0084FBCCB00831AD0 /* WebNSDictionaryExtras.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebNSDictionaryExtras.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 656D333D0AF21AE900212169 /* WebResourceLoadDelegatePrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebResourceLoadDelegatePrivate.h; sourceTree = ""; }; + 6578F5DE045F817400000128 /* WebDownload.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDownload.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 65836F5E07EE425900682F95 /* WebPluginContainerPrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPluginContainerPrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 658A40950A14853B005E6987 /* WebDataSourceInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebDataSourceInternal.h; sourceTree = ""; }; + 65A7D44A0568AB2600E70EF6 /* WebUIDelegatePrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebUIDelegatePrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 65DA2608052CC18700A97B31 /* WebHistory.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebHistory.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 65E0F88208500917007E5CB9 /* WebNSURLRequestExtras.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSURLRequestExtras.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 65E0F88308500917007E5CB9 /* WebNSURLRequestExtras.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebNSURLRequestExtras.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 65E0F9E408500F23007E5CB9 /* WebNSUserDefaultsExtras.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSUserDefaultsExtras.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 65E0F9E508500F23007E5CB9 /* WebNSUserDefaultsExtras.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNSUserDefaultsExtras.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 65E1150307EFFEBF009B8BF7 /* WebPluginContainerCheck.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPluginContainerCheck.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 65E1150407EFFEBF009B8BF7 /* WebPluginContainerCheck.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebPluginContainerCheck.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 65EEDE55084FFC9E0002DB25 /* WebNSFileManagerExtras.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSFileManagerExtras.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 65EEDE56084FFC9E0002DB25 /* WebNSFileManagerExtras.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNSFileManagerExtras.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 65FFB7FA0AD0B7D30048CD05 /* WebDocumentLoaderMac.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebDocumentLoaderMac.h; sourceTree = ""; }; + 65FFB7FB0AD0B7D30048CD05 /* WebDocumentLoaderMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDocumentLoaderMac.mm; sourceTree = ""; }; + 7082F56F038EADAA00A80180 /* WebKitNSStringExtras.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebKitNSStringExtras.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 7082F570038EADAA00A80180 /* WebKitNSStringExtras.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 30; indentWidth = 4; path = WebKitNSStringExtras.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 7A8FF0D01075024A00A80A08 /* WebInspectorPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebInspectorPrivate.h; sourceTree = ""; }; + 7C01CB81173435C900C5D807 /* PopupMenuMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PopupMenuMac.h; sourceTree = ""; }; + 7C01CB82173435C900C5D807 /* PopupMenuMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PopupMenuMac.mm; sourceTree = ""; }; + 7C01CB83173435C900C5D807 /* SearchPopupMenuMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchPopupMenuMac.h; sourceTree = ""; }; + 7C01CB84173435C900C5D807 /* SearchPopupMenuMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SearchPopupMenuMac.mm; sourceTree = ""; }; + 7E6FEF0508985A7200C44C3F /* WebScriptDebugDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebScriptDebugDelegate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 7E6FEF0608985A7200C44C3F /* WebScriptDebugDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebScriptDebugDelegate.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 830E81E005853AC000AD0891 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = ""; }; + 833987810543012D00EE146E /* WebDocumentPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDocumentPrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 83730F9803FB1E660004736E /* WebKitErrors.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebKitErrors.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 8373435A0624EE0D00F3B289 /* WebArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebArchive.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 8373435B0624EE0D00F3B289 /* WebArchive.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebArchive.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 8398847A03426FB000BC5F5E /* WebNSImageExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSImageExtras.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 8398847B03426FB000BC5F5E /* WebNSImageExtras.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebNSImageExtras.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 83E4AF46036652150000E506 /* WebBasePluginPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebBasePluginPackage.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 83E4AF47036652150000E506 /* WebBasePluginPackage.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebBasePluginPackage.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 83E4AF4B036659440000E506 /* WebPluginPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPluginPackage.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 83E4AF4C036659440000E506 /* WebPluginPackage.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebPluginPackage.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 83E679780726D7CF006C7A36 /* WebPluginViewFactoryPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPluginViewFactoryPrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 84311A1205EAAAF00088EDA4 /* WebResource.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebResource.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 84311A1305EAAAF00088EDA4 /* WebResource.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebResource.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 84311AF105EAB12B0088EDA4 /* WebResourcePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebResourcePrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 846171F90624AE5B0071A4A3 /* WebDOMOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDOMOperations.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 846171FA0624AE5B0071A4A3 /* WebDOMOperations.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDOMOperations.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 8467275C0367158500CA2ACA /* WebPluginController.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPluginController.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 8467275D0367158500CA2ACA /* WebPluginController.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebPluginController.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 84723BE3056D719E0044BFEA /* WebKeyGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebKeyGenerator.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 84723BE4056D719E0044BFEA /* WebKeyGenerator.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebKeyGenerator.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 848DFF840365FE6A00CA2ACA /* WebPlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPlugin.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 848DFF850365FE6A00CA2ACA /* WebPluginContainer.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPluginContainer.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 848DFF860365FE6A00CA2ACA /* WebPluginViewFactory.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPluginViewFactory.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 84AE905F062DE6A80075BBF9 /* WebDOMOperationsPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDOMOperationsPrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 84CA5F7E042685E800CA2ACA /* WebKitErrorsPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebKitErrorsPrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 9304B2FF0B02341500F7850D /* WebIconDatabaseInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebIconDatabaseInternal.h; sourceTree = ""; }; + 930D02BB06275F640076701E /* WebViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebViewInternal.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 930D02BD06275F710076701E /* WebFrameInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebFrameInternal.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 93154EF103A41270008635CE /* WebPanelAuthenticationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPanelAuthenticationHandler.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 93154EF203A41270008635CE /* WebPanelAuthenticationHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebPanelAuthenticationHandler.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 931633EA0AEDFF930062B92D /* WebFrameLoaderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebFrameLoaderClient.h; sourceTree = ""; }; + 931633EE0AEDFFAE0062B92D /* WebFrameLoaderClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebFrameLoaderClient.mm; sourceTree = ""; }; + 93185DB506679F42005D5E7E /* WebHTMLViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebHTMLViewInternal.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 933D659903413FF2008635CE /* WebClipView.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebClipView.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 933D659A03413FF2008635CE /* WebClipView.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebClipView.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 9345D17C0365BF35008635CE /* English */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = wrapper.nib; name = English; path = Panels/English.lproj/WebAuthenticationPanel.nib; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 9345D4EA0365C5B2008635CE /* WebJavaScriptTextInputPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebJavaScriptTextInputPanel.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 9345D4EB0365C5B2008635CE /* WebJavaScriptTextInputPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebJavaScriptTextInputPanel.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 9345DDAE0365FB27008635CE /* WebNSWindowExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSWindowExtras.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 9345DDAF0365FB27008635CE /* WebNSWindowExtras.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebNSWindowExtras.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 9345DDB20365FFD0008635CE /* WebNSControlExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSControlExtras.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 9345DDB30365FFD0008635CE /* WebNSControlExtras.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebNSControlExtras.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 934C11660D8710BB00C32ABD /* WebDynamicScrollBarsViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDynamicScrollBarsViewInternal.h; sourceTree = ""; }; + 934C4A900F01406C009372C0 /* WebNSObjectExtras.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNSObjectExtras.mm; sourceTree = ""; }; + 934C4A9F0F0141F7009372C0 /* WebResourceInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebResourceInternal.h; sourceTree = ""; }; + 936A2DE70FD2D08000D312DB /* WebTextCompletionController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebTextCompletionController.mm; sourceTree = ""; }; + 936A2DE90FD2D08400D312DB /* WebTextCompletionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebTextCompletionController.h; sourceTree = ""; }; + 9391F273121B38BD00EBF7E8 /* WebFrameNetworkingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebFrameNetworkingContext.h; sourceTree = ""; }; + 9391F274121B38BD00EBF7E8 /* WebFrameNetworkingContext.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebFrameNetworkingContext.mm; sourceTree = ""; }; + 939811320824BF01008DF038 /* Info.plist */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = mac/Info.plist; sourceTree = SOURCE_ROOT; tabWidth = 8; usesTabs = 1; }; + 939811330824BF01008DF038 /* WebKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = WebKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 93AEB17D032C1735008635CE /* WebKitLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebKitLogging.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 93AEB17E032C1735008635CE /* WebKitLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebKitLogging.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 93C6F14507920B93002449CD /* WebFrameViewPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebFrameViewPrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 93D1FE13067EB10B009CE68A /* WebNSObjectExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSObjectExtras.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 93D623DD051E791F002F47DD /* libicucore.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicucore.dylib; path = /usr/lib/libicucore.dylib; sourceTree = ""; }; + 93E2A1A2123B0B3C009FE12A /* WebDashboardRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDashboardRegion.h; sourceTree = ""; }; + 93E2A1A3123B0B3C009FE12A /* WebDashboardRegion.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDashboardRegion.mm; sourceTree = ""; }; + 93EB178C09F88D460091F8FF /* WebSystemInterface.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebSystemInterface.mm; sourceTree = ""; }; + 93EB178E09F88D510091F8FF /* WebSystemInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSystemInterface.h; sourceTree = ""; }; + 93FDE9320D79CAF30074F029 /* WebHistoryInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebHistoryInternal.h; sourceTree = ""; }; + 9CAE9D070252A4130ECA16EA /* WebPreferencesPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPreferencesPrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 9CF0E249021361B00ECA16EA /* WebFramePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebFramePrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + A5687BD8135B791A0074CBCB /* WebNodeHighlighter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNodeHighlighter.h; sourceTree = ""; }; + A5687BD9135B791A0074CBCB /* WebNodeHighlighter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNodeHighlighter.mm; sourceTree = ""; }; + A57E2F22120749E600048DF3 /* WebQuotaManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebQuotaManager.h; sourceTree = ""; }; + A58A5797143E727000125F50 /* WebOpenPanelResultListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebOpenPanelResultListener.h; sourceTree = ""; }; + A58A5798143E727000125F50 /* WebOpenPanelResultListener.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebOpenPanelResultListener.mm; sourceTree = ""; }; + A5DEFC0711D5331C00885273 /* WebSecurityOrigin.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebSecurityOrigin.mm; sourceTree = ""; }; + A5DEFC0811D5331C00885273 /* WebSecurityOriginInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSecurityOriginInternal.h; sourceTree = ""; }; + A5DEFC0911D5331C00885273 /* WebSecurityOriginPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSecurityOriginPrivate.h; sourceTree = ""; }; + A5DEFC0D11D5343E00885273 /* WebDatabaseQuotaManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDatabaseQuotaManager.h; sourceTree = ""; }; + A5DEFC0E11D5343E00885273 /* WebDatabaseQuotaManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDatabaseQuotaManager.mm; sourceTree = ""; }; + A5DEFC1111D5344B00885273 /* WebApplicationCacheQuotaManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebApplicationCacheQuotaManager.h; sourceTree = ""; }; + A5DEFC1211D5344B00885273 /* WebApplicationCacheQuotaManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebApplicationCacheQuotaManager.mm; sourceTree = ""; }; + A70936AD0B5608DC00CDB48E /* WebDragClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebDragClient.h; sourceTree = ""; }; + A70936AE0B5608DC00CDB48E /* WebDragClient.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDragClient.mm; sourceTree = ""; }; + A864B3E5123ED83D00C2A612 /* MailQuirksUserScript.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = MailQuirksUserScript.js; sourceTree = ""; }; + AB9FBBBA0F8582B0006ADC43 /* WebDOMOperationsInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDOMOperationsInternal.h; sourceTree = ""; }; + ABDDF20C08EB0DDC001E1241 /* WebDownloadInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDownloadInternal.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + B68049710FFBCEC1009F7F62 /* WebApplicationCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebApplicationCache.h; sourceTree = ""; }; + B68049720FFBCEC1009F7F62 /* WebApplicationCache.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebApplicationCache.mm; sourceTree = ""; }; + B804176D1217A83100466BAE /* WebInspectorFrontend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebInspectorFrontend.h; sourceTree = ""; }; + B804176E1217A83100466BAE /* WebInspectorFrontend.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebInspectorFrontend.mm; sourceTree = ""; }; + B82958D1132707D0000D0E79 /* CorrectionPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CorrectionPanel.h; sourceTree = ""; }; + B82958D2132707D0000D0E79 /* CorrectionPanel.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CorrectionPanel.mm; sourceTree = ""; }; + BC26C69D10B743F400B687ED /* WebSerializedJSValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSerializedJSValue.h; sourceTree = ""; }; + BC26C6A410B7447A00B687ED /* WebSerializedJSValue.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebSerializedJSValue.mm; sourceTree = ""; }; + BC2E464B0FD8A96800A9D9DE /* WebViewData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewData.h; sourceTree = ""; }; + BC2E464C0FD8A96800A9D9DE /* WebViewData.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebViewData.mm; sourceTree = ""; }; + BC42D322131ED1E00075FA4B /* WebLocalizableStringsInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebLocalizableStringsInternal.h; sourceTree = ""; }; + BC42D34C131ED3880075FA4B /* WebLocalizableStringsInternal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebLocalizableStringsInternal.mm; sourceTree = ""; }; + BC542C400FD7766F00D8AB5D /* WebDelegateImplementationCaching.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDelegateImplementationCaching.h; sourceTree = ""; }; + BC542C410FD7766F00D8AB5D /* WebDelegateImplementationCaching.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDelegateImplementationCaching.mm; sourceTree = ""; }; + BC7F884910C8775A00D6133D /* WebGeolocationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebGeolocationClient.h; sourceTree = ""; }; + BC7F884A10C8775A00D6133D /* WebGeolocationClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebGeolocationClient.mm; sourceTree = ""; }; + BC7F889C10C9D30C00D6133D /* WebGeolocationPosition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebGeolocationPosition.h; sourceTree = ""; }; + BC7F889D10C9D30C00D6133D /* WebGeolocationPosition.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebGeolocationPosition.mm; sourceTree = ""; }; + BC7F88A410C9D88B00D6133D /* WebGeolocationPositionInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebGeolocationPositionInternal.h; sourceTree = ""; }; + BE4FBECB0653DF47005EDE15 /* WebEditingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebEditingDelegate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BE6DC39904C62C4E004D0EF6 /* WebNSURLExtras.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSURLExtras.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BE6DC39A04C62C4E004D0EF6 /* WebNSURLExtras.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNSURLExtras.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BE887BFF056D3A6E009BB3E7 /* WebNSEventExtras.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSEventExtras.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BE887C00056D3A6E009BB3E7 /* WebNSEventExtras.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebNSEventExtras.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BE95BEE505FD0805006E1513 /* WebDefaultEditingDelegate.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebDefaultEditingDelegate.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BE95BEE605FD0805006E1513 /* WebDefaultEditingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDefaultEditingDelegate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BECD14290565830A005BB09C /* WebNSDataExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSDataExtras.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BECD142A0565830A005BB09C /* WebNSDataExtras.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebNSDataExtras.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BEE18F990472B73200CA289C /* WebLocalizableStrings.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebLocalizableStrings.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BEE52D4A0473032500CA289C /* WebKitSystemBits.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebKitSystemBits.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + BEE52D4B0473032500CA289C /* WebKitSystemBits.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebKitSystemBits.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + C0167BF60D7F5DD00028696E /* WebScriptDebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebScriptDebugger.h; sourceTree = ""; }; + C0167BF70D7F5DD00028696E /* WebScriptDebugger.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebScriptDebugger.mm; sourceTree = ""; }; + C0B1F7E510AC8E3100C925D9 /* WebScriptWorld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebScriptWorld.h; sourceTree = ""; }; + C0B1F7E610AC8E3100C925D9 /* WebScriptWorld.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebScriptWorld.mm; sourceTree = ""; }; + C0B1F7E710AC8E3100C925D9 /* WebScriptWorldInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebScriptWorldInternal.h; sourceTree = ""; }; + C0B88E8A10A08F3D00FBB3F5 /* WebFrameLoadDelegatePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebFrameLoadDelegatePrivate.h; sourceTree = ""; }; + C0C5B3EC1177A4A0002B0AEF /* WebUserContentURLPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebUserContentURLPattern.h; sourceTree = ""; }; + C0C5B3ED1177A4A0002B0AEF /* WebUserContentURLPattern.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebUserContentURLPattern.mm; sourceTree = ""; }; + CD8BFCE515531224005AFB25 /* WebKitFullScreenListener.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebKitFullScreenListener.mm; sourceTree = ""; }; + CD8BFCE615531224005AFB25 /* WebKitFullScreenListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitFullScreenListener.h; sourceTree = ""; }; + CD8EAC7211CAC9A300774075 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; + CDA62AE0125F87C2007FD118 /* WebFullScreenController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebFullScreenController.h; sourceTree = ""; }; + CDA62AE1125F87C2007FD118 /* WebFullScreenController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebFullScreenController.mm; sourceTree = ""; }; + CEDA12D9152CBE6800D9E08D /* WebAlternativeTextClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebAlternativeTextClient.mm; sourceTree = ""; }; + CEDA12DA152CBE6800D9E08D /* WebAlternativeTextClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAlternativeTextClient.h; sourceTree = ""; }; + DD7CDEE60A23BA9E00069928 /* WebTypesInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebTypesInternal.h; sourceTree = ""; }; + DD89681E09AA87240097E7F0 /* WebElementDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebElementDictionary.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + DD89681F09AA87240097E7F0 /* WebElementDictionary.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebElementDictionary.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + E15663180FB61C1F00C199CA /* WebDownload.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDownload.mm; sourceTree = ""; }; + E169836111346D1B00894115 /* ProxyRuntimeObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProxyRuntimeObject.h; sourceTree = ""; }; + E169836B11346D5600894115 /* ProxyRuntimeObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ProxyRuntimeObject.mm; sourceTree = ""; }; + ED21B9810528F7AA003299AC /* WebDocumentInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDocumentInternal.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + ED2B2474033A2DA800C1A526 /* WebNSPasteboardExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSPasteboardExtras.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + ED2B2475033A2DA800C1A526 /* WebNSPasteboardExtras.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNSPasteboardExtras.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + ED5B9523111B725A00472298 /* WebLocalizableStrings.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebLocalizableStrings.mm; sourceTree = ""; }; + ED7F6D8A0980683500C235ED /* WebNSDataExtrasPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNSDataExtrasPrivate.h; sourceTree = ""; }; + EDD1A5C605C83987008E3150 /* WebNSPrintOperationExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSPrintOperationExtras.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + EDD1A5C705C83987008E3150 /* WebNSPrintOperationExtras.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebNSPrintOperationExtras.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + EDE850CD06ECC79E005FAB05 /* WebPreferenceKeysPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPreferenceKeysPrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + EDE9837E0BCDF5FE00FDAE28 /* WebNSArrayExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNSArrayExtras.h; sourceTree = ""; }; + EDE9837F0BCDF5FE00FDAE28 /* WebNSArrayExtras.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebNSArrayExtras.m; sourceTree = ""; }; + F508946902B71D59018A9CD4 /* WebNSViewExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSViewExtras.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F508946A02B71D59018A9CD4 /* WebNSViewExtras.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebNSViewExtras.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5143A370221DCCE01A80181 /* WebFrame.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebFrame.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F520FB190221DEFD01C1A525 /* WebHistory.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebHistory.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F528E3E9031E91AD01CA2ACA /* WebIconDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebIconDatabase.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F528E3EA031E91AD01CA2ACA /* WebIconDatabase.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebIconDatabase.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F528E3EB031E91AD01CA2ACA /* WebIconDatabasePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebIconDatabasePrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F53444CE02E87CBA018635CA /* WebKitStatistics.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebKitStatistics.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F53444CF02E87CBA018635CA /* WebKitStatistics.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebKitStatistics.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F53444D202E87D4B018635CA /* WebKitStatisticsPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebKitStatisticsPrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5927D4E02D26C5E01CA2DBB /* WebKitErrors.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebKitErrors.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F59668C802AD2923018635CA /* WebStringTruncator.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebStringTruncator.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F59668C902AD2923018635CA /* WebStringTruncator.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebStringTruncator.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F59EAE3E0253C7EE018635CA /* WebCoreStatistics.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreStatistics.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F59EAE410253C8DE018635CA /* WebCoreStatistics.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreStatistics.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5A55DC702BAA2E8018635CC /* WebHTMLRepresentationPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebHTMLRepresentationPrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5A672B90263866E01000102 /* WebNetscapePluginStream.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNetscapePluginStream.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5A672BA0263866E01000102 /* WebNetscapePluginStream.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebNetscapePluginStream.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5AEBB3D024A527601C1A526 /* WebPreferences.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebPreferences.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5B67130023EDF8901C1A525 /* url_icon.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = url_icon.tiff; sourceTree = ""; }; + F5B92B820223191D01C1A525 /* WebHistoryPrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebHistoryPrivate.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5C283730284676D018635CA /* WebKitPrefix.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; name = WebKitPrefix.h; path = mac/WebKitPrefix.h; sourceTree = ""; tabWidth = 4; usesTabs = 0; }; + F5C2869402846DCD018635CA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; + F5C2869502846DCD018635CA /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + F5E0A76E02B8FEE401C1A525 /* WebURLsWithTitles.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebURLsWithTitles.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5E0A76F02B8FEE401C1A525 /* WebURLsWithTitles.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebURLsWithTitles.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5F7171E0288493C018635CA /* WebNetscapePluginPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNetscapePluginPackage.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5F7171F0288493C018635CA /* WebNetscapePluginPackage.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebNetscapePluginPackage.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5F717200288493C018635CA /* WebPluginDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPluginDatabase.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5F717210288493C018635CA /* WebPluginDatabase.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebPluginDatabase.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5F717230288493C018635CA /* npapi.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = npapi.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5F732D202FF4D4F01A80180 /* WebKit.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; name = WebKit.exp; path = mac/WebKit.exp; sourceTree = ""; tabWidth = 4; usesTabs = 0; }; + F5F81C3902B67C26018635CA /* WebRenderNode.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebRenderNode.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F5F81C3A02B67C26018635CA /* WebRenderNode.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebRenderNode.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F67DD7E5125E4527007BDCB8 /* WebSerializedJSValuePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSerializedJSValuePrivate.h; sourceTree = ""; }; + F738C9E903FAD3DF0321FBE0 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = JavaScriptCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F738C9EA03FAD3DF0321FBE0 /* WebCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F79B974804019934036909D2 /* CarbonUtils.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = CarbonUtils.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F79B974904019934036909D2 /* CarbonUtils.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CarbonUtils.m; sourceTree = ""; usesTabs = 0; }; + F7EBEE9003F9DBA103CA0DE6 /* CarbonWindowAdapter.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = CarbonWindowAdapter.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F7EBEE9103F9DBA103CA0DE6 /* CarbonWindowAdapter.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CarbonWindowAdapter.mm; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F7EBEE9203F9DBA103CA0DE6 /* CarbonWindowContentView.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = CarbonWindowContentView.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F7EBEE9303F9DBA103CA0DE6 /* CarbonWindowContentView.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = CarbonWindowContentView.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F7EBEE9403F9DBA103CA0DE6 /* CarbonWindowFrame.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = CarbonWindowFrame.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F7EBEE9503F9DBA103CA0DE6 /* CarbonWindowFrame.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = CarbonWindowFrame.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F7EBEE9A03F9DBA103CA0DE6 /* HIViewAdapter.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = HIViewAdapter.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F7EBEE9B03F9DBA103CA0DE6 /* HIViewAdapter.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = HIViewAdapter.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F7EBEEAA03F9DBA103CA0DE6 /* HIWebView.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = HIWebView.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F7EBEEAB03F9DBA103CA0DE6 /* HIWebView.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 30; path = HIWebView.mm; sourceTree = ""; usesTabs = 0; }; + F834AAD50E64B1C700E2737C /* WebTextIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebTextIterator.h; sourceTree = ""; }; + F834AAD60E64B1C700E2737C /* WebTextIterator.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebTextIterator.mm; sourceTree = ""; }; + F8CA15B5029A39D901000122 /* WebAuthenticationPanel.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebAuthenticationPanel.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + F8CA15B6029A39D901000122 /* WebAuthenticationPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebAuthenticationPanel.m; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 939811270824BF01008DF038 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 034768DFFF38A50411DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + 939811330824BF01008DF038 /* WebKit.framework */, + ); + name = Products; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 0867D691FE84028FC02AAC07 /* WebKit */ = { + isa = PBXGroup; + children = ( + 1C6CB03E0AA6391D00D23BFD /* MigrateHeaders.make */, + F5F732D202FF4D4F01A80180 /* WebKit.exp */, + F5C283730284676D018635CA /* WebKitPrefix.h */, + 6508A4A7099B375F00BCBF45 /* Default Delegates */, + F57D194A034E732C01A80180 /* DOM */, + 25A8176801B5474B0ECA149E /* History */, + 254DC334016E1D3F0ECA149E /* Misc */, + F8CA15B4029A399401000122 /* Panels */, + F5EBC45202134BB601CA1520 /* Plugins */, + 511F3FC30CECC7E200852565 /* Storage */, + F5B36B400281DE87018635CB /* WebCoreSupport */, + 9C7CABBB0190A37C0ECA16EA /* WebView */, + 1C68F63F095B5F9C00C2984E /* WebInspector */, + F7EBEE5903F9DB2203CA0DE6 /* Carbon */, + 089C1665FE841158C02AAC07 /* Resources */, + 0867D69AFE84028FC02AAC07 /* Frameworks and Libraries */, + 034768DFFF38A50411DB9C8B /* Products */, + 1C904FCE0BA9DCF20081E9D0 /* Configurations */, + ); + name = WebKit; + sourceTree = ""; + }; + 0867D69AFE84028FC02AAC07 /* Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + F5C2869402846DCD018635CA /* Carbon.framework */, + F5C2869502846DCD018635CA /* Cocoa.framework */, + 5D4DE0981479CBDF00EA3DF4 /* DiskArbitration.framework */, + CD8EAC7211CAC9A300774075 /* IOKit.framework */, + F738C9E903FAD3DF0321FBE0 /* JavaScriptCore.framework */, + 93D623DD051E791F002F47DD /* libicucore.dylib */, + 0ACE917210FE47E30096A45F /* OpenGL.framework */, + 1A20D08A0ED384F20043FA9F /* QuartzCore.framework */, + 830E81E005853AC000AD0891 /* Security.framework */, + F738C9EA03FAD3DF0321FBE0 /* WebCore.framework */, + ); + name = "Frameworks and Libraries"; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 089C1665FE841158C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 1C9F5EFB1651CDF700C480F8 /* Dock.pdf */, + 939811320824BF01008DF038 /* Info.plist */, + F5B67130023EDF8901C1A525 /* url_icon.tiff */, + 5DE83A740D0F7F9400CAD12A /* WebJavaScriptTextInputPanel.nib */, + ); + name = Resources; + path = mac/Resources; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 1A1F91430ECBB16F006351DA /* Hosted */ = { + isa = PBXGroup; + children = ( + 1A8DED4E0EE88B8A00F25022 /* HostedNetscapePluginStream.h */, + 1A8DED4F0EE88B8A00F25022 /* HostedNetscapePluginStream.mm */, + 1AAF5CE40EDDE1FE008D883D /* NetscapePluginHostManager.h */, + 1AAF5CE50EDDE1FE008D883D /* NetscapePluginHostManager.mm */, + 1AAF5CE60EDDE1FE008D883D /* NetscapePluginHostProxy.h */, + 1AAF5CE70EDDE1FE008D883D /* NetscapePluginHostProxy.mm */, + 1AAF5CE80EDDE1FE008D883D /* NetscapePluginInstanceProxy.h */, + 1AAF5CE90EDDE1FE008D883D /* NetscapePluginInstanceProxy.mm */, + 1A2DBE9D0F251E3A0036F8A6 /* ProxyInstance.h */, + 1A2DBE9E0F251E3A0036F8A6 /* ProxyInstance.mm */, + E169836111346D1B00894115 /* ProxyRuntimeObject.h */, + E169836B11346D5600894115 /* ProxyRuntimeObject.mm */, + 1AAF5FBD0EDE3A92008D883D /* WebHostedNetscapePluginView.h */, + 1AAF5FBE0EDE3A92008D883D /* WebHostedNetscapePluginView.mm */, + 1AAF588A0EDCCEA3008D883D /* WebKitPluginAgent.defs */, + 1AAF588B0EDCCEA3008D883D /* WebKitPluginAgentReply.defs */, + 1AAF588C0EDCCEA3008D883D /* WebKitPluginClient.defs */, + 1AAF588D0EDCCEA3008D883D /* WebKitPluginHost.defs */, + 1AAF588E0EDCCEA3008D883D /* WebKitPluginHostTypes.defs */, + 1AAF5D080EDDE71D008D883D /* WebKitPluginHostTypes.h */, + 1A74A28C0F4F75400082E228 /* WebTextInputWindowController.h */, + 1A74A28D0F4F75400082E228 /* WebTextInputWindowController.m */, + ); + path = Hosted; + sourceTree = ""; + }; + 1A9C78030EBBC455008599D4 /* Events */ = { + isa = PBXGroup; + children = ( + 1AEA66D20DC6B1FF003D12BF /* WebNetscapePluginEventHandler.h */, + 1AEA66D30DC6B1FF003D12BF /* WebNetscapePluginEventHandler.mm */, + 1AEA66D60DC6B209003D12BF /* WebNetscapePluginEventHandlerCarbon.h */, + 1AEA66D70DC6B209003D12BF /* WebNetscapePluginEventHandlerCarbon.mm */, + 1AEA6A4E0DC8CE2F003D12BF /* WebNetscapePluginEventHandlerCocoa.h */, + 1AEA6A4F0DC8CE2F003D12BF /* WebNetscapePluginEventHandlerCocoa.mm */, + ); + name = Events; + sourceTree = ""; + }; + 1C68F63F095B5F9C00C2984E /* WebInspector */ = { + isa = PBXGroup; + children = ( + 5D7BF8120C2A1D90008CE06D /* WebInspector.h */, + 5D7BF8130C2A1D90008CE06D /* WebInspector.mm */, + B804176D1217A83100466BAE /* WebInspectorFrontend.h */, + B804176E1217A83100466BAE /* WebInspectorFrontend.mm */, + 7A8FF0D01075024A00A80A08 /* WebInspectorPrivate.h */, + 1C68F663095B5FC100C2984E /* WebNodeHighlight.h */, + 1C68F664095B5FC100C2984E /* WebNodeHighlight.mm */, + A5687BD8135B791A0074CBCB /* WebNodeHighlighter.h */, + A5687BD9135B791A0074CBCB /* WebNodeHighlighter.mm */, + 1C68F665095B5FC100C2984E /* WebNodeHighlightView.h */, + 1C68F666095B5FC100C2984E /* WebNodeHighlightView.mm */, + ); + name = WebInspector; + path = mac/WebInspector; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 1C904FCE0BA9DCF20081E9D0 /* Configurations */ = { + isa = PBXGroup; + children = ( + 1C904FD50BA9DD0F0081E9D0 /* Base.xcconfig */, + 1C904FD40BA9DD0F0081E9D0 /* DebugRelease.xcconfig */, + 449098B90F8F82DF0076A327 /* FeatureDefines.xcconfig */, + 1C904FD30BA9DD0F0081E9D0 /* Version.xcconfig */, + 1C904FD20BA9DD0F0081E9D0 /* WebKit.xcconfig */, + ); + name = Configurations; + path = mac/Configurations; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 254DC334016E1D3F0ECA149E /* Misc */ = { + isa = PBXGroup; + children = ( + A864B3E5123ED83D00C2A612 /* MailQuirksUserScript.js */, + 1CCFFD120B1F81F2002EE926 /* OldWebAssertions.c */, + 29AEF95D134C755400FE5096 /* OutlookQuirksUserScript.js */, + 5DE92FEE0BD7017E0059A5FD /* WebAssertions.h */, + 5241ADF30B1BC48A004012BD /* WebCache.h */, + 5241ADF40B1BC48A004012BD /* WebCache.mm */, + F59EAE3E0253C7EE018635CA /* WebCoreStatistics.h */, + F59EAE410253C8DE018635CA /* WebCoreStatistics.mm */, + 6578F5DE045F817400000128 /* WebDownload.h */, + E15663180FB61C1F00C199CA /* WebDownload.mm */, + ABDDF20C08EB0DDC001E1241 /* WebDownloadInternal.h */, + DD89681E09AA87240097E7F0 /* WebElementDictionary.h */, + DD89681F09AA87240097E7F0 /* WebElementDictionary.mm */, + F528E3E9031E91AD01CA2ACA /* WebIconDatabase.h */, + F528E3EA031E91AD01CA2ACA /* WebIconDatabase.mm */, + 51B2A0FF0ADB15D0002A9BEE /* WebIconDatabaseDelegate.h */, + 9304B2FF0B02341500F7850D /* WebIconDatabaseInternal.h */, + F528E3EB031E91AD01CA2ACA /* WebIconDatabasePrivate.h */, + 2568C72C0174912D0ECA149E /* WebKit.h */, + F5927D4E02D26C5E01CA2DBB /* WebKitErrors.h */, + 83730F9803FB1E660004736E /* WebKitErrors.m */, + 84CA5F7E042685E800CA2ACA /* WebKitErrorsPrivate.h */, + 93AEB17D032C1735008635CE /* WebKitLogging.h */, + 93AEB17E032C1735008635CE /* WebKitLogging.m */, + 7082F56F038EADAA00A80180 /* WebKitNSStringExtras.h */, + 7082F570038EADAA00A80180 /* WebKitNSStringExtras.mm */, + F53444CE02E87CBA018635CA /* WebKitStatistics.h */, + F53444CF02E87CBA018635CA /* WebKitStatistics.m */, + F53444D202E87D4B018635CA /* WebKitStatisticsPrivate.h */, + BEE52D4A0473032500CA289C /* WebKitSystemBits.h */, + BEE52D4B0473032500CA289C /* WebKitSystemBits.m */, + 1C0D40850AC1C8F40009C113 /* WebKitVersionChecks.h */, + 1C0D40860AC1C8F40009C113 /* WebKitVersionChecks.m */, + BEE18F990472B73200CA289C /* WebLocalizableStrings.h */, + ED5B9523111B725A00472298 /* WebLocalizableStrings.mm */, + BC42D322131ED1E00075FA4B /* WebLocalizableStringsInternal.h */, + BC42D34C131ED3880075FA4B /* WebLocalizableStringsInternal.mm */, + EDE9837E0BCDF5FE00FDAE28 /* WebNSArrayExtras.h */, + EDE9837F0BCDF5FE00FDAE28 /* WebNSArrayExtras.m */, + 9345DDB20365FFD0008635CE /* WebNSControlExtras.h */, + 9345DDB30365FFD0008635CE /* WebNSControlExtras.m */, + BECD14290565830A005BB09C /* WebNSDataExtras.h */, + BECD142A0565830A005BB09C /* WebNSDataExtras.m */, + ED7F6D8A0980683500C235ED /* WebNSDataExtrasPrivate.h */, + 65488D9F084FBCCB00831AD0 /* WebNSDictionaryExtras.h */, + 65488DA0084FBCCB00831AD0 /* WebNSDictionaryExtras.m */, + BE887BFF056D3A6E009BB3E7 /* WebNSEventExtras.h */, + BE887C00056D3A6E009BB3E7 /* WebNSEventExtras.m */, + 65EEDE55084FFC9E0002DB25 /* WebNSFileManagerExtras.h */, + 65EEDE56084FFC9E0002DB25 /* WebNSFileManagerExtras.mm */, + 8398847A03426FB000BC5F5E /* WebNSImageExtras.h */, + 8398847B03426FB000BC5F5E /* WebNSImageExtras.m */, + 51494D220C7EC1B6004178C5 /* WebNSNotificationCenterExtras.h */, + 51494D230C7EC1B7004178C5 /* WebNSNotificationCenterExtras.m */, + 93D1FE13067EB10B009CE68A /* WebNSObjectExtras.h */, + 934C4A900F01406C009372C0 /* WebNSObjectExtras.mm */, + ED2B2474033A2DA800C1A526 /* WebNSPasteboardExtras.h */, + ED2B2475033A2DA800C1A526 /* WebNSPasteboardExtras.mm */, + EDD1A5C605C83987008E3150 /* WebNSPrintOperationExtras.h */, + EDD1A5C705C83987008E3150 /* WebNSPrintOperationExtras.m */, + BE6DC39904C62C4E004D0EF6 /* WebNSURLExtras.h */, + BE6DC39A04C62C4E004D0EF6 /* WebNSURLExtras.mm */, + 65E0F88208500917007E5CB9 /* WebNSURLRequestExtras.h */, + 65E0F88308500917007E5CB9 /* WebNSURLRequestExtras.m */, + 65E0F9E408500F23007E5CB9 /* WebNSUserDefaultsExtras.h */, + 65E0F9E508500F23007E5CB9 /* WebNSUserDefaultsExtras.mm */, + F508946902B71D59018A9CD4 /* WebNSViewExtras.h */, + F508946A02B71D59018A9CD4 /* WebNSViewExtras.m */, + 9345DDAE0365FB27008635CE /* WebNSWindowExtras.h */, + 9345DDAF0365FB27008635CE /* WebNSWindowExtras.m */, + A57E2F22120749E600048DF3 /* WebQuotaManager.h */, + F59668C802AD2923018635CA /* WebStringTruncator.h */, + F59668C902AD2923018635CA /* WebStringTruncator.mm */, + DD7CDEE60A23BA9E00069928 /* WebTypesInternal.h */, + C0C5B3EC1177A4A0002B0AEF /* WebUserContentURLPattern.h */, + C0C5B3ED1177A4A0002B0AEF /* WebUserContentURLPattern.mm */, + ); + name = Misc; + path = mac/Misc; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 25A8176801B5474B0ECA149E /* History */ = { + isa = PBXGroup; + children = ( + 1A60518D17502A5D00BC62F5 /* BinaryPropertyList.cpp */, + 1A60518E17502A5D00BC62F5 /* BinaryPropertyList.h */, + 1A60518F17502A5D00BC62F5 /* HistoryPropertyList.cpp */, + 1A60519017502A5D00BC62F5 /* HistoryPropertyList.h */, + 3944607D020F50ED0ECA1767 /* WebBackForwardList.h */, + 3944607E020F50ED0ECA1767 /* WebBackForwardList.mm */, + 51C714FA0B20F79F00E5E33C /* WebBackForwardListInternal.h */, + 22F219CB08D236730030E078 /* WebBackForwardListPrivate.h */, + F520FB190221DEFD01C1A525 /* WebHistory.h */, + 65DA2608052CC18700A97B31 /* WebHistory.mm */, + 93FDE9320D79CAF30074F029 /* WebHistoryInternal.h */, + 3944607F020F50ED0ECA1767 /* WebHistoryItem.h */, + 39446080020F50ED0ECA1767 /* WebHistoryItem.mm */, + 516F296F03A6C45A00CA2D3A /* WebHistoryItemInternal.h */, + 51FDC4D20B0AF5C100F84EB3 /* WebHistoryItemPrivate.h */, + F5B92B820223191D01C1A525 /* WebHistoryPrivate.h */, + F5E0A76E02B8FEE401C1A525 /* WebURLsWithTitles.h */, + F5E0A76F02B8FEE401C1A525 /* WebURLsWithTitles.m */, + ); + name = History; + path = mac/History; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 511F3FC30CECC7E200852565 /* Storage */ = { + isa = PBXGroup; + children = ( + 511F3FD10CECC88F00852565 /* WebDatabaseManager.mm */, + 511F3FD30CECC88F00852565 /* WebDatabaseManagerClient.h */, + 511F3FD40CECC88F00852565 /* WebDatabaseManagerClient.mm */, + 511F3FD20CECC88F00852565 /* WebDatabaseManagerPrivate.h */, + A5DEFC0D11D5343E00885273 /* WebDatabaseQuotaManager.h */, + A5DEFC0E11D5343E00885273 /* WebDatabaseQuotaManager.mm */, + 3AB02AF512C1319B00FBB694 /* WebStorageManager.mm */, + 3AE15D4F12DBDED4009323C8 /* WebStorageManagerInternal.h */, + 3AB02AFF12C132B200FBB694 /* WebStorageManagerPrivate.h */, + 3ABB3C781309C3B500E93D94 /* WebStorageTrackerClient.h */, + 3ABB3C791309C3B500E93D94 /* WebStorageTrackerClient.mm */, + ); + name = Storage; + path = mac/Storage; + sourceTree = ""; + }; + 51E94C0706C02CA300A9B09E /* PDF */ = { + isa = PBXGroup; + children = ( + 37D1DCA61065928C0068F7EF /* WebJSPDFDoc.h */, + 37D1DCA71065928C0068F7EF /* WebJSPDFDoc.mm */, + 37B6FB4C1063530C000FDB3B /* WebPDFDocumentExtras.h */, + 37B6FB4D1063530C000FDB3B /* WebPDFDocumentExtras.mm */, + 51E94C6806C0347500A9B09E /* WebPDFRepresentation.h */, + 51E94C6906C0347500A9B09E /* WebPDFRepresentation.mm */, + 51E94C3406C0321200A9B09E /* WebPDFView.h */, + 51E94C3506C0321200A9B09E /* WebPDFView.mm */, + ); + name = PDF; + sourceTree = ""; + }; + 6508A4A7099B375F00BCBF45 /* Default Delegates */ = { + isa = PBXGroup; + children = ( + 5152FADD033FC50400CA2ACD /* WebDefaultContextMenuDelegate.h */, + 5152FADE033FC50400CA2ACD /* WebDefaultContextMenuDelegate.mm */, + BE95BEE605FD0805006E1513 /* WebDefaultEditingDelegate.h */, + BE95BEE505FD0805006E1513 /* WebDefaultEditingDelegate.m */, + 5152FADF033FC50400CA2ACD /* WebDefaultPolicyDelegate.h */, + 5152FAE0033FC50400CA2ACD /* WebDefaultPolicyDelegate.m */, + 515E27CF0458CA4B00CA2D3A /* WebDefaultUIDelegate.h */, + 515E27D00458CA4B00CA2D3A /* WebDefaultUIDelegate.m */, + ); + name = "Default Delegates"; + path = mac/DefaultDelegates; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 848DFF410365F6FB00CA2ACA /* Netscape Plug-ins */ = { + isa = PBXGroup; + children = ( + 1A9C78030EBBC455008599D4 /* Events */, + 1A1F91430ECBB16F006351DA /* Hosted */, + F5F717230288493C018635CA /* npapi.mm */, + 1A4DF5E20EC8D104006BD4B4 /* WebBaseNetscapePluginView.h */, + 1A4DF5E30EC8D104006BD4B4 /* WebBaseNetscapePluginView.mm */, + 0AB752350FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.h */, + 0AB752360FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm */, + 0AEBFF610F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.h */, + 0AEBFF620F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.mm */, + F5F7171E0288493C018635CA /* WebNetscapePluginPackage.h */, + F5F7171F0288493C018635CA /* WebNetscapePluginPackage.mm */, + F5A672B90263866E01000102 /* WebNetscapePluginStream.h */, + F5A672BA0263866E01000102 /* WebNetscapePluginStream.mm */, + 1A4DF5200EC8C74D006BD4B4 /* WebNetscapePluginView.h */, + 1A4DF5210EC8C74D006BD4B4 /* WebNetscapePluginView.mm */, + 1A77B02C0EE7730500C8A1F9 /* WebPluginRequest.h */, + 1A77B02D0EE7730500C8A1F9 /* WebPluginRequest.m */, + ); + name = "Netscape Plug-ins"; + sourceTree = ""; + }; + 848DFF430365F71500CA2ACA /* WebKit Plug-ins */ = { + isa = PBXGroup; + children = ( + 848DFF840365FE6A00CA2ACA /* WebPlugin.h */, + 848DFF850365FE6A00CA2ACA /* WebPluginContainer.h */, + 65E1150307EFFEBF009B8BF7 /* WebPluginContainerCheck.h */, + 65E1150407EFFEBF009B8BF7 /* WebPluginContainerCheck.mm */, + 65836F5E07EE425900682F95 /* WebPluginContainerPrivate.h */, + 8467275C0367158500CA2ACA /* WebPluginController.h */, + 8467275D0367158500CA2ACA /* WebPluginController.mm */, + 83E4AF4B036659440000E506 /* WebPluginPackage.h */, + 83E4AF4C036659440000E506 /* WebPluginPackage.mm */, + 225F881409F97E8A00423A40 /* WebPluginPrivate.h */, + 848DFF860365FE6A00CA2ACA /* WebPluginViewFactory.h */, + 83E679780726D7CF006C7A36 /* WebPluginViewFactoryPrivate.h */, + ); + name = "WebKit Plug-ins"; + sourceTree = ""; + }; + 9C7CABBB0190A37C0ECA16EA /* WebView */ = { + isa = PBXGroup; + children = ( + F52CA6BD02DF9D0F018635CA /* HTML */, + 51E94C0706C02CA300A9B09E /* PDF */, + 8373435A0624EE0D00F3B289 /* WebArchive.h */, + 8373435B0624EE0D00F3B289 /* WebArchive.mm */, + 44BB8B131241A022001E3A22 /* WebArchiveInternal.h */, + 933D659903413FF2008635CE /* WebClipView.h */, + 933D659A03413FF2008635CE /* WebClipView.mm */, + 93E2A1A2123B0B3C009FE12A /* WebDashboardRegion.h */, + 93E2A1A3123B0B3C009FE12A /* WebDashboardRegion.mm */, + 39446070020F50ED0ECA1767 /* WebDataSource.h */, + 39446071020F50ED0ECA1767 /* WebDataSource.mm */, + 658A40950A14853B005E6987 /* WebDataSourceInternal.h */, + 39446072020F50ED0ECA1767 /* WebDataSourcePrivate.h */, + BC542C400FD7766F00D8AB5D /* WebDelegateImplementationCaching.h */, + BC542C410FD7766F00D8AB5D /* WebDelegateImplementationCaching.mm */, + 598AD91F1201CF0700ABAE4E /* WebDeviceOrientation.h */, + 598AD9211201CF1000ABAE4E /* WebDeviceOrientation.mm */, + 598AD9231201CF1900ABAE4E /* WebDeviceOrientationInternal.h */, + 598ADA451202275000ABAE4E /* WebDeviceOrientationProvider.h */, + 598AD9251201CF2500ABAE4E /* WebDeviceOrientationProviderMock.h */, + 598AD9271201CF3200ABAE4E /* WebDeviceOrientationProviderMock.mm */, + 598AD9291201CF3B00ABAE4E /* WebDeviceOrientationProviderMockInternal.h */, + 35081DAE02B6D4F50ACA2ACA /* WebDocument.h */, + ED21B9810528F7AA003299AC /* WebDocumentInternal.h */, + 65FFB7FA0AD0B7D30048CD05 /* WebDocumentLoaderMac.h */, + 65FFB7FB0AD0B7D30048CD05 /* WebDocumentLoaderMac.mm */, + 833987810543012D00EE146E /* WebDocumentPrivate.h */, + 3944606B020F50ED0ECA1767 /* WebDynamicScrollBarsView.h */, + 3944606C020F50ED0ECA1767 /* WebDynamicScrollBarsView.mm */, + 934C11660D8710BB00C32ABD /* WebDynamicScrollBarsViewInternal.h */, + BE4FBECB0653DF47005EDE15 /* WebEditingDelegate.h */, + 1C8CB0790AE9830C00B1F6E9 /* WebEditingDelegatePrivate.h */, + 2D81DAB203EB0B2D00A80166 /* WebFormDelegate.h */, + 2D81DAB303EB0B2D00A80166 /* WebFormDelegate.m */, + 2D36FD5E03F78F9E00A80166 /* WebFormDelegatePrivate.h */, + 39446074020F50ED0ECA1767 /* WebFrame.h */, + F5143A370221DCCE01A80181 /* WebFrame.mm */, + 930D02BD06275F710076701E /* WebFrameInternal.h */, + 5152FAE5033FC52200CA2ACD /* WebFrameLoadDelegate.h */, + C0B88E8A10A08F3D00FBB3F5 /* WebFrameLoadDelegatePrivate.h */, + 9CF0E249021361B00ECA16EA /* WebFramePrivate.h */, + 51A8B52E04282B5900CA2D3A /* WebFrameView.h */, + 51A8B52F04282B5900CA2D3A /* WebFrameView.mm */, + 51A8B53204282BD200CA2D3A /* WebFrameViewInternal.h */, + 93C6F14507920B93002449CD /* WebFrameViewPrivate.h */, + CDA62AE0125F87C2007FD118 /* WebFullScreenController.h */, + CDA62AE1125F87C2007FD118 /* WebFullScreenController.mm */, + BC7F889C10C9D30C00D6133D /* WebGeolocationPosition.h */, + BC7F889D10C9D30C00D6133D /* WebGeolocationPosition.mm */, + BC7F88A410C9D88B00D6133D /* WebGeolocationPositionInternal.h */, + 5158F6EE106D862A00AF457C /* WebHistoryDelegate.h */, + 5185F62510712B80007AA393 /* WebNavigationData.h */, + 5185F62710712B97007AA393 /* WebNavigationData.mm */, + 312E2FE314E48182007CCA18 /* WebNotification.h */, + 312E2FE414E48182007CCA18 /* WebNotification.mm */, + 312E2FE814E48215007CCA18 /* WebNotificationInternal.h */, + 51443F9A0429392B00CA2D3A /* WebPolicyDelegate.h */, + 51443F9B0429392B00CA2D3A /* WebPolicyDelegate.mm */, + 51443F9C0429392B00CA2D3A /* WebPolicyDelegatePrivate.h */, + EDE850CD06ECC79E005FAB05 /* WebPreferenceKeysPrivate.h */, + 3944606E020F50ED0ECA1767 /* WebPreferences.h */, + F5AEBB3D024A527601C1A526 /* WebPreferences.mm */, + 9CAE9D070252A4130ECA16EA /* WebPreferencesPrivate.h */, + 0F30985D11ECFE4400F559DF /* WebRenderLayer.h */, + 0F30985E11ECFE4500F559DF /* WebRenderLayer.mm */, + F5F81C3902B67C26018635CA /* WebRenderNode.h */, + F5F81C3A02B67C26018635CA /* WebRenderNode.mm */, + 84311A1205EAAAF00088EDA4 /* WebResource.h */, + 84311A1305EAAAF00088EDA4 /* WebResource.mm */, + 934C4A9F0F0141F7009372C0 /* WebResourceInternal.h */, + 513D422E034CF55A00CA2ACD /* WebResourceLoadDelegate.h */, + 656D333D0AF21AE900212169 /* WebResourceLoadDelegatePrivate.h */, + 84311AF105EAB12B0088EDA4 /* WebResourcePrivate.h */, + 7E6FEF0508985A7200C44C3F /* WebScriptDebugDelegate.h */, + 7E6FEF0608985A7200C44C3F /* WebScriptDebugDelegate.mm */, + C0167BF60D7F5DD00028696E /* WebScriptDebugger.h */, + C0167BF70D7F5DD00028696E /* WebScriptDebugger.mm */, + C0B1F7E510AC8E3100C925D9 /* WebScriptWorld.h */, + C0B1F7E610AC8E3100C925D9 /* WebScriptWorld.mm */, + C0B1F7E710AC8E3100C925D9 /* WebScriptWorldInternal.h */, + BC26C69D10B743F400B687ED /* WebSerializedJSValue.h */, + BC26C6A410B7447A00B687ED /* WebSerializedJSValue.mm */, + F67DD7E5125E4527007BDCB8 /* WebSerializedJSValuePrivate.h */, + 936A2DE90FD2D08400D312DB /* WebTextCompletionController.h */, + 936A2DE70FD2D08000D312DB /* WebTextCompletionController.mm */, + F834AAD50E64B1C700E2737C /* WebTextIterator.h */, + F834AAD60E64B1C700E2737C /* WebTextIterator.mm */, + 515E27CC0458C86500CA2D3A /* WebUIDelegate.h */, + 65A7D44A0568AB2600E70EF6 /* WebUIDelegatePrivate.h */, + 51A8B579042834F700CA2D3A /* WebView.h */, + 51A8B57A042834F700CA2D3A /* WebView.mm */, + BC2E464B0FD8A96800A9D9DE /* WebViewData.h */, + BC2E464C0FD8A96800A9D9DE /* WebViewData.mm */, + 930D02BB06275F640076701E /* WebViewInternal.h */, + 51A8B57D0428353A00CA2D3A /* WebViewPrivate.h */, + ); + name = WebView; + path = mac/WebView; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + F52CA6BD02DF9D0F018635CA /* HTML */ = { + isa = PBXGroup; + children = ( + 35081D9202B6D4D80ACA2ACA /* WebHTMLRepresentation.h */, + 35081D9302B6D4D80ACA2ACA /* WebHTMLRepresentation.mm */, + F5A55DC702BAA2E8018635CC /* WebHTMLRepresentationPrivate.h */, + 35081D9402B6D4D80ACA2ACA /* WebHTMLView.h */, + 35081D9502B6D4D80ACA2ACA /* WebHTMLView.mm */, + 93185DB506679F42005D5E7E /* WebHTMLViewInternal.h */, + 35081D9602B6D4D80ACA2ACA /* WebHTMLViewPrivate.h */, + ); + name = HTML; + sourceTree = ""; + }; + F57D194A034E732C01A80180 /* DOM */ = { + isa = PBXGroup; + children = ( + 846171F90624AE5B0071A4A3 /* WebDOMOperations.h */, + 846171FA0624AE5B0071A4A3 /* WebDOMOperations.mm */, + AB9FBBBA0F8582B0006ADC43 /* WebDOMOperationsInternal.h */, + 84AE905F062DE6A80075BBF9 /* WebDOMOperationsPrivate.h */, + ); + name = DOM; + path = mac/DOM; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + F5B36B400281DE87018635CB /* WebCoreSupport */ = { + isa = PBXGroup; + children = ( + B82958D1132707D0000D0E79 /* CorrectionPanel.h */, + B82958D2132707D0000D0E79 /* CorrectionPanel.mm */, + 7C01CB81173435C900C5D807 /* PopupMenuMac.h */, + 7C01CB82173435C900C5D807 /* PopupMenuMac.mm */, + 7C01CB83173435C900C5D807 /* SearchPopupMenuMac.h */, + 7C01CB84173435C900C5D807 /* SearchPopupMenuMac.mm */, + CEDA12DA152CBE6800D9E08D /* WebAlternativeTextClient.h */, + CEDA12D9152CBE6800D9E08D /* WebAlternativeTextClient.mm */, + B68049710FFBCEC1009F7F62 /* WebApplicationCache.h */, + B68049720FFBCEC1009F7F62 /* WebApplicationCache.mm */, + A5DEFC1111D5344B00885273 /* WebApplicationCacheQuotaManager.h */, + A5DEFC1211D5344B00885273 /* WebApplicationCacheQuotaManager.mm */, + 51CBFCAC0D10E6C5002DBF51 /* WebCachedFramePlatformData.h */, + 14D8252D0AF955090004F057 /* WebChromeClient.h */, + 14D8252E0AF955090004F057 /* WebChromeClient.mm */, + 065AD5A10B0C32C7005A2B1D /* WebContextMenuClient.h */, + 065AD5A20B0C32C7005A2B1D /* WebContextMenuClient.mm */, + 598AD9191201CEC900ABAE4E /* WebDeviceOrientationClient.h */, + 598AD91D1201CECF00ABAE4E /* WebDeviceOrientationClient.mm */, + A70936AD0B5608DC00CDB48E /* WebDragClient.h */, + A70936AE0B5608DC00CDB48E /* WebDragClient.mm */, + 4BF99F8E0AE050BC00815C2B /* WebEditorClient.h */, + 4BF99F8F0AE050BC00815C2B /* WebEditorClient.mm */, + 931633EA0AEDFF930062B92D /* WebFrameLoaderClient.h */, + 931633EE0AEDFFAE0062B92D /* WebFrameLoaderClient.mm */, + 9391F273121B38BD00EBF7E8 /* WebFrameNetworkingContext.h */, + 9391F274121B38BD00EBF7E8 /* WebFrameNetworkingContext.mm */, + BC7F884910C8775A00D6133D /* WebGeolocationClient.h */, + BC7F884A10C8775A00D6133D /* WebGeolocationClient.mm */, + 51494CD40C7EBDE0004178C5 /* WebIconDatabaseClient.h */, + 51494CD50C7EBDE0004178C5 /* WebIconDatabaseClient.mm */, + 06693DDA0BFBA85200216072 /* WebInspectorClient.h */, + 06693DDB0BFBA85200216072 /* WebInspectorClient.mm */, + 1C7B0C650EB2464D00A28502 /* WebInspectorClientCF.cpp */, + 9345D4EA0365C5B2008635CE /* WebJavaScriptTextInputPanel.h */, + 9345D4EB0365C5B2008635CE /* WebJavaScriptTextInputPanel.m */, + 84723BE3056D719E0044BFEA /* WebKeyGenerator.h */, + 84723BE4056D719E0044BFEA /* WebKeyGenerator.mm */, + CD8BFCE615531224005AFB25 /* WebKitFullScreenListener.h */, + CD8BFCE515531224005AFB25 /* WebKitFullScreenListener.mm */, + 31C11A6C1476552E0049A4CC /* WebNotificationClient.h */, + 31C11A6D1476552E0049A4CC /* WebNotificationClient.mm */, + A58A5797143E727000125F50 /* WebOpenPanelResultListener.h */, + A58A5798143E727000125F50 /* WebOpenPanelResultListener.mm */, + 1AA879B411CBE9BF003C664F /* WebPlatformStrategies.h */, + 1AA879B511CBE9BF003C664F /* WebPlatformStrategies.mm */, + A5DEFC0711D5331C00885273 /* WebSecurityOrigin.mm */, + A5DEFC0811D5331C00885273 /* WebSecurityOriginInternal.h */, + A5DEFC0911D5331C00885273 /* WebSecurityOriginPrivate.h */, + 93EB178E09F88D510091F8FF /* WebSystemInterface.h */, + 93EB178C09F88D460091F8FF /* WebSystemInterface.mm */, + ); + name = WebCoreSupport; + path = mac/WebCoreSupport; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + F5EBC45202134BB601CA1520 /* Plugins */ = { + isa = PBXGroup; + children = ( + 848DFF410365F6FB00CA2ACA /* Netscape Plug-ins */, + 848DFF430365F71500CA2ACA /* WebKit Plug-ins */, + 83E4AF46036652150000E506 /* WebBasePluginPackage.h */, + 83E4AF47036652150000E506 /* WebBasePluginPackage.mm */, + F5F717200288493C018635CA /* WebPluginDatabase.h */, + F5F717210288493C018635CA /* WebPluginDatabase.mm */, + 224100F2091818D900D2D266 /* WebPluginsPrivate.h */, + 224100F80918190100D2D266 /* WebPluginsPrivate.m */, + ); + name = Plugins; + path = mac/Plugins; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + F7EBEE5903F9DB2203CA0DE6 /* Carbon */ = { + isa = PBXGroup; + children = ( + F7EBEECF03F9DBBD03CA0DE6 /* AppKit Overrides */, + F7EBEED103F9DBEB03CA0DE6 /* C API */, + F7EBEED203F9DBFE03CA0DE6 /* Glue */, + ); + name = Carbon; + path = mac/Carbon; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + F7EBEECF03F9DBBD03CA0DE6 /* AppKit Overrides */ = { + isa = PBXGroup; + children = ( + F7EBEE9003F9DBA103CA0DE6 /* CarbonWindowAdapter.h */, + F7EBEE9103F9DBA103CA0DE6 /* CarbonWindowAdapter.mm */, + F7EBEE9203F9DBA103CA0DE6 /* CarbonWindowContentView.h */, + F7EBEE9303F9DBA103CA0DE6 /* CarbonWindowContentView.m */, + F7EBEE9403F9DBA103CA0DE6 /* CarbonWindowFrame.h */, + F7EBEE9503F9DBA103CA0DE6 /* CarbonWindowFrame.m */, + F7EBEE9A03F9DBA103CA0DE6 /* HIViewAdapter.h */, + F7EBEE9B03F9DBA103CA0DE6 /* HIViewAdapter.m */, + ); + name = "AppKit Overrides"; + sourceTree = ""; + }; + F7EBEED103F9DBEB03CA0DE6 /* C API */ = { + isa = PBXGroup; + children = ( + F7EBEEAA03F9DBA103CA0DE6 /* HIWebView.h */, + F7EBEEAB03F9DBA103CA0DE6 /* HIWebView.mm */, + ); + name = "C API"; + sourceTree = ""; + }; + F7EBEED203F9DBFE03CA0DE6 /* Glue */ = { + isa = PBXGroup; + children = ( + F79B974804019934036909D2 /* CarbonUtils.h */, + F79B974904019934036909D2 /* CarbonUtils.m */, + ); + name = Glue; + sourceTree = ""; + }; + F8CA15B4029A399401000122 /* Panels */ = { + isa = PBXGroup; + children = ( + F8CA15B5029A39D901000122 /* WebAuthenticationPanel.h */, + F8CA15B6029A39D901000122 /* WebAuthenticationPanel.m */, + 9345D17B0365BF35008635CE /* WebAuthenticationPanel.nib */, + 93154EF103A41270008635CE /* WebPanelAuthenticationHandler.h */, + 93154EF203A41270008635CE /* WebPanelAuthenticationHandler.m */, + ); + name = Panels; + path = mac/Panels; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 9398100D0824BF01008DF038 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A60519217502A5D00BC62F5 /* BinaryPropertyList.h in Headers */, + 9398106A0824BF01008DF038 /* CarbonUtils.h in Headers */, + 939810650824BF01008DF038 /* CarbonWindowAdapter.h in Headers */, + 939810660824BF01008DF038 /* CarbonWindowContentView.h in Headers */, + 939810670824BF01008DF038 /* CarbonWindowFrame.h in Headers */, + B82958D3132707D0000D0E79 /* CorrectionPanel.h in Headers */, + 1A60519417502A5D00BC62F5 /* HistoryPropertyList.h in Headers */, + 939810680824BF01008DF038 /* HIViewAdapter.h in Headers */, + 939810690824BF01008DF038 /* HIWebView.h in Headers */, + 1A8DED500EE88B8A00F25022 /* HostedNetscapePluginStream.h in Headers */, + 1AAF5CEA0EDDE1FE008D883D /* NetscapePluginHostManager.h in Headers */, + 1AAF5CEC0EDDE1FE008D883D /* NetscapePluginHostProxy.h in Headers */, + 1AAF5CEE0EDDE1FE008D883D /* NetscapePluginInstanceProxy.h in Headers */, + 7C01CB85173435C900C5D807 /* PopupMenuMac.h in Headers */, + 1A2DBE9F0F251E3A0036F8A6 /* ProxyInstance.h in Headers */, + E169836211346D1B00894115 /* ProxyRuntimeObject.h in Headers */, + 7C01CB87173435C900C5D807 /* SearchPopupMenuMac.h in Headers */, + CEDA12DC152CBE6800D9E08D /* WebAlternativeTextClient.h in Headers */, + B6CE5C25100BC5F500219936 /* WebApplicationCache.h in Headers */, + A5DEFC1311D5344B00885273 /* WebApplicationCacheQuotaManager.h in Headers */, + 9398109A0824BF01008DF038 /* WebArchive.h in Headers */, + 44BB8B141241A022001E3A22 /* WebArchiveInternal.h in Headers */, + 5DE92FEF0BD7017E0059A5FD /* WebAssertions.h in Headers */, + 939810290824BF01008DF038 /* WebAuthenticationPanel.h in Headers */, + 939810110824BF01008DF038 /* WebBackForwardList.h in Headers */, + 51C714FB0B20F79F00E5E33C /* WebBackForwardListInternal.h in Headers */, + 22F219CC08D236730030E078 /* WebBackForwardListPrivate.h in Headers */, + 1A4DF5E40EC8D104006BD4B4 /* WebBaseNetscapePluginView.h in Headers */, + 9398102E0824BF01008DF038 /* WebBasePluginPackage.h in Headers */, + 5241ADF50B1BC48A004012BD /* WebCache.h in Headers */, + 51CBFCAD0D10E6C5002DBF51 /* WebCachedFramePlatformData.h in Headers */, + 14D8252F0AF955090004F057 /* WebChromeClient.h in Headers */, + 939810490824BF01008DF038 /* WebClipView.h in Headers */, + 065AD5A30B0C32C7005A2B1D /* WebContextMenuClient.h in Headers */, + 939810160824BF01008DF038 /* WebCoreStatistics.h in Headers */, + 93E2A1A4123B0B3C009FE12A /* WebDashboardRegion.h in Headers */, + 511F3FD70CECC88F00852565 /* WebDatabaseManagerClient.h in Headers */, + 511F3FD60CECC88F00852565 /* WebDatabaseManagerPrivate.h in Headers */, + A5DEFC0F11D5343E00885273 /* WebDatabaseQuotaManager.h in Headers */, + 9398104B0824BF01008DF038 /* WebDataSource.h in Headers */, + 658A40960A14853B005E6987 /* WebDataSourceInternal.h in Headers */, + 9398104C0824BF01008DF038 /* WebDataSourcePrivate.h in Headers */, + 9398104E0824BF01008DF038 /* WebDefaultContextMenuDelegate.h in Headers */, + 9398108D0824BF01008DF038 /* WebDefaultEditingDelegate.h in Headers */, + 9398104F0824BF01008DF038 /* WebDefaultPolicyDelegate.h in Headers */, + 939810760824BF01008DF038 /* WebDefaultUIDelegate.h in Headers */, + BC542C420FD7766F00D8AB5D /* WebDelegateImplementationCaching.h in Headers */, + 598AD9201201CF0700ABAE4E /* WebDeviceOrientation.h in Headers */, + 598AD91A1201CEC900ABAE4E /* WebDeviceOrientationClient.h in Headers */, + 598AD9241201CF1900ABAE4E /* WebDeviceOrientationInternal.h in Headers */, + 598ADA461202275000ABAE4E /* WebDeviceOrientationProvider.h in Headers */, + 598AD9261201CF2500ABAE4E /* WebDeviceOrientationProviderMock.h in Headers */, + 598AD92A1201CF3B00ABAE4E /* WebDeviceOrientationProviderMockInternal.h in Headers */, + 939810500824BF01008DF038 /* WebDocument.h in Headers */, + 9398107F0824BF01008DF038 /* WebDocumentInternal.h in Headers */, + 65FFB7FC0AD0B7D30048CD05 /* WebDocumentLoaderMac.h in Headers */, + 939810800824BF01008DF038 /* WebDocumentPrivate.h in Headers */, + 939810990824BF01008DF038 /* WebDOMOperations.h in Headers */, + AB9FBBBB0F8582B0006ADC43 /* WebDOMOperationsInternal.h in Headers */, + 9398109D0824BF01008DF038 /* WebDOMOperationsPrivate.h in Headers */, + 939810770824BF01008DF038 /* WebDownload.h in Headers */, + ABDDF20D08EB0DDC001E1241 /* WebDownloadInternal.h in Headers */, + A70936AF0B5608DC00CDB48E /* WebDragClient.h in Headers */, + 939810510824BF01008DF038 /* WebDynamicScrollBarsView.h in Headers */, + 934C11670D8710BB00C32ABD /* WebDynamicScrollBarsViewInternal.h in Headers */, + 9398109E0824BF01008DF038 /* WebEditingDelegate.h in Headers */, + 1C8CB07A0AE9830C00B1F6E9 /* WebEditingDelegatePrivate.h in Headers */, + 4BF99F900AE050BC00815C2B /* WebEditorClient.h in Headers */, + DD89682009AA87240097E7F0 /* WebElementDictionary.h in Headers */, + 939810520824BF01008DF038 /* WebFormDelegate.h in Headers */, + 939810640824BF01008DF038 /* WebFormDelegatePrivate.h in Headers */, + 939810530824BF01008DF038 /* WebFrame.h in Headers */, + 9398109C0824BF01008DF038 /* WebFrameInternal.h in Headers */, + 9398105B0824BF01008DF038 /* WebFrameLoadDelegate.h in Headers */, + C0B88E8B10A08F3D00FBB3F5 /* WebFrameLoadDelegatePrivate.h in Headers */, + 931633EB0AEDFF930062B92D /* WebFrameLoaderClient.h in Headers */, + 9391F275121B38BD00EBF7E8 /* WebFrameNetworkingContext.h in Headers */, + 939810540824BF01008DF038 /* WebFramePrivate.h in Headers */, + 9398106E0824BF01008DF038 /* WebFrameView.h in Headers */, + 9398106F0824BF01008DF038 /* WebFrameViewInternal.h in Headers */, + 939810AF0824BF01008DF038 /* WebFrameViewPrivate.h in Headers */, + CDA62AE2125F87C2007FD118 /* WebFullScreenController.h in Headers */, + BC7F884B10C8775A00D6133D /* WebGeolocationClient.h in Headers */, + BC7F889E10C9D30C00D6133D /* WebGeolocationPosition.h in Headers */, + BC7F88A510C9D88B00D6133D /* WebGeolocationPositionInternal.h in Headers */, + 939810120824BF01008DF038 /* WebHistory.h in Headers */, + 5158F6EF106D862A00AF457C /* WebHistoryDelegate.h in Headers */, + 93FDE9330D79CAF30074F029 /* WebHistoryInternal.h in Headers */, + 939810130824BF01008DF038 /* WebHistoryItem.h in Headers */, + 939810630824BF01008DF038 /* WebHistoryItemInternal.h in Headers */, + 51FDC4D30B0AF5C100F84EB3 /* WebHistoryItemPrivate.h in Headers */, + 939810140824BF01008DF038 /* WebHistoryPrivate.h in Headers */, + 1AAF5FBF0EDE3A92008D883D /* WebHostedNetscapePluginView.h in Headers */, + 939810550824BF01008DF038 /* WebHTMLRepresentation.h in Headers */, + 939810560824BF01008DF038 /* WebHTMLRepresentationPrivate.h in Headers */, + 939810570824BF01008DF038 /* WebHTMLView.h in Headers */, + 939810A10824BF01008DF038 /* WebHTMLViewInternal.h in Headers */, + 939810580824BF01008DF038 /* WebHTMLViewPrivate.h in Headers */, + 939810180824BF01008DF038 /* WebIconDatabase.h in Headers */, + 51494CD60C7EBDE0004178C5 /* WebIconDatabaseClient.h in Headers */, + 51B2A1000ADB15D0002A9BEE /* WebIconDatabaseDelegate.h in Headers */, + 9304B3000B02341500F7850D /* WebIconDatabaseInternal.h in Headers */, + 939810190824BF01008DF038 /* WebIconDatabasePrivate.h in Headers */, + 5D7BF8140C2A1D90008CE06D /* WebInspector.h in Headers */, + 06693DDC0BFBA85200216072 /* WebInspectorClient.h in Headers */, + B804176F1217A83100466BAE /* WebInspectorFrontend.h in Headers */, + 7A8FF0D11075024A00A80A08 /* WebInspectorPrivate.h in Headers */, + 939810420824BF01008DF038 /* WebJavaScriptTextInputPanel.h in Headers */, + 37D1DCA81065928C0068F7EF /* WebJSPDFDoc.h in Headers */, + 939810850824BF01008DF038 /* WebKeyGenerator.h in Headers */, + 9398101B0824BF01008DF038 /* WebKit.h in Headers */, + 9398101C0824BF01008DF038 /* WebKitErrors.h in Headers */, + 9398106D0824BF01008DF038 /* WebKitErrorsPrivate.h in Headers */, + CD8BFCE815531224005AFB25 /* WebKitFullScreenListener.h in Headers */, + 9398101D0824BF01008DF038 /* WebKitLogging.h in Headers */, + 9398101E0824BF01008DF038 /* WebKitNSStringExtras.h in Headers */, + 1AAF58940EDCCF15008D883D /* WebKitPluginAgent.defs in Headers */, + 1AAF58950EDCCF15008D883D /* WebKitPluginAgentReply.defs in Headers */, + 1AAF58960EDCCF15008D883D /* WebKitPluginClient.defs in Headers */, + 1AAF58970EDCCF15008D883D /* WebKitPluginHost.defs in Headers */, + 1AAF58980EDCCF15008D883D /* WebKitPluginHostTypes.defs in Headers */, + 1AAF5D090EDDE71D008D883D /* WebKitPluginHostTypes.h in Headers */, + 939810470824BF01008DF038 /* WebKitPrefix.h in Headers */, + 9398101F0824BF01008DF038 /* WebKitStatistics.h in Headers */, + 939810200824BF01008DF038 /* WebKitStatisticsPrivate.h in Headers */, + 9398107A0824BF01008DF038 /* WebKitSystemBits.h in Headers */, + 1C0D40870AC1C8F40009C113 /* WebKitVersionChecks.h in Headers */, + 939810790824BF01008DF038 /* WebLocalizableStrings.h in Headers */, + BC42D324131ED1E00075FA4B /* WebLocalizableStringsInternal.h in Headers */, + 5185F62610712B80007AA393 /* WebNavigationData.h in Headers */, + 0AB752370FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.h in Headers */, + 0AEBFF630F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.h in Headers */, + 1AEA66D40DC6B1FF003D12BF /* WebNetscapePluginEventHandler.h in Headers */, + 1AEA66D80DC6B209003D12BF /* WebNetscapePluginEventHandlerCarbon.h in Headers */, + 1AEA6A500DC8CE2F003D12BF /* WebNetscapePluginEventHandlerCocoa.h in Headers */, + 939810310824BF01008DF038 /* WebNetscapePluginPackage.h in Headers */, + 9398102B0824BF01008DF038 /* WebNetscapePluginStream.h in Headers */, + 1A4DF5220EC8C74D006BD4B4 /* WebNetscapePluginView.h in Headers */, + 1C68F66F095B5FC100C2984E /* WebNodeHighlight.h in Headers */, + A5687BDA135B791A0074CBCB /* WebNodeHighlighter.h in Headers */, + 1C68F671095B5FC100C2984E /* WebNodeHighlightView.h in Headers */, + 312E2FE514E48182007CCA18 /* WebNotification.h in Headers */, + 31C11A6E1476552E0049A4CC /* WebNotificationClient.h in Headers */, + 312E2FE914E48215007CCA18 /* WebNotificationInternal.h in Headers */, + EDE983800BCDF5FE00FDAE28 /* WebNSArrayExtras.h in Headers */, + 939810210824BF01008DF038 /* WebNSControlExtras.h in Headers */, + 939810820824BF01008DF038 /* WebNSDataExtras.h in Headers */, + ED7F6D8B0980683500C235ED /* WebNSDataExtrasPrivate.h in Headers */, + 65488DA1084FBCCB00831AD0 /* WebNSDictionaryExtras.h in Headers */, + 939810840824BF01008DF038 /* WebNSEventExtras.h in Headers */, + 65EEDE57084FFC9E0002DB25 /* WebNSFileManagerExtras.h in Headers */, + 939810220824BF01008DF038 /* WebNSImageExtras.h in Headers */, + 51494D240C7EC1B7004178C5 /* WebNSNotificationCenterExtras.h in Headers */, + 939810A20824BF01008DF038 /* WebNSObjectExtras.h in Headers */, + 939810230824BF01008DF038 /* WebNSPasteboardExtras.h in Headers */, + 939810870824BF01008DF038 /* WebNSPrintOperationExtras.h in Headers */, + 9398107E0824BF01008DF038 /* WebNSURLExtras.h in Headers */, + 65E0F88408500917007E5CB9 /* WebNSURLRequestExtras.h in Headers */, + 65E0F9E608500F23007E5CB9 /* WebNSUserDefaultsExtras.h in Headers */, + 939810240824BF01008DF038 /* WebNSViewExtras.h in Headers */, + 939810250824BF01008DF038 /* WebNSWindowExtras.h in Headers */, + A58A5799143E727000125F50 /* WebOpenPanelResultListener.h in Headers */, + 9398102A0824BF01008DF038 /* WebPanelAuthenticationHandler.h in Headers */, + 37B6FB4E1063530C000FDB3B /* WebPDFDocumentExtras.h in Headers */, + 939810A50824BF01008DF038 /* WebPDFRepresentation.h in Headers */, + 939810A40824BF01008DF038 /* WebPDFView.h in Headers */, + 1AA879B611CBE9BF003C664F /* WebPlatformStrategies.h in Headers */, + 939810350824BF01008DF038 /* WebPlugin.h in Headers */, + 939810360824BF01008DF038 /* WebPluginContainer.h in Headers */, + 939810B10824BF01008DF038 /* WebPluginContainerCheck.h in Headers */, + 939810B00824BF01008DF038 /* WebPluginContainerPrivate.h in Headers */, + 939810370824BF01008DF038 /* WebPluginController.h in Headers */, + 939810380824BF01008DF038 /* WebPluginDatabase.h in Headers */, + 939810390824BF01008DF038 /* WebPluginPackage.h in Headers */, + 225F881509F97E8A00423A40 /* WebPluginPrivate.h in Headers */, + 1A77B02E0EE7730500C8A1F9 /* WebPluginRequest.h in Headers */, + 224100F3091818D900D2D266 /* WebPluginsPrivate.h in Headers */, + 9398103A0824BF01008DF038 /* WebPluginViewFactory.h in Headers */, + 939810AC0824BF01008DF038 /* WebPluginViewFactoryPrivate.h in Headers */, + 939810720824BF01008DF038 /* WebPolicyDelegate.h in Headers */, + 939810730824BF01008DF038 /* WebPolicyDelegatePrivate.h in Headers */, + 939810A80824BF01008DF038 /* WebPreferenceKeysPrivate.h in Headers */, + 9398105D0824BF01008DF038 /* WebPreferences.h in Headers */, + 9398105E0824BF01008DF038 /* WebPreferencesPrivate.h in Headers */, + A57E2F24120749E600048DF3 /* WebQuotaManager.h in Headers */, + 0F30985F11ECFE4500F559DF /* WebRenderLayer.h in Headers */, + 9398105F0824BF01008DF038 /* WebRenderNode.h in Headers */, + 939810880824BF01008DF038 /* WebResource.h in Headers */, + 934C4AA00F0141F7009372C0 /* WebResourceInternal.h in Headers */, + 939810600824BF01008DF038 /* WebResourceLoadDelegate.h in Headers */, + 656D333E0AF21AE900212169 /* WebResourceLoadDelegatePrivate.h in Headers */, + 939810890824BF01008DF038 /* WebResourcePrivate.h in Headers */, + 7E6FEF0808985A7200C44C3F /* WebScriptDebugDelegate.h in Headers */, + C0167BF80D7F5DD00028696E /* WebScriptDebugger.h in Headers */, + C0B1F7E810AC8E3100C925D9 /* WebScriptWorld.h in Headers */, + C0B1F7EA10AC8E3100C925D9 /* WebScriptWorldInternal.h in Headers */, + A5DEFC0B11D5331C00885273 /* WebSecurityOriginInternal.h in Headers */, + A5DEFC0C11D5331C00885273 /* WebSecurityOriginPrivate.h in Headers */, + BC26C69E10B743F400B687ED /* WebSerializedJSValue.h in Headers */, + F67DD7E6125E4527007BDCB8 /* WebSerializedJSValuePrivate.h in Headers */, + 3AE15D5012DBDED4009323C8 /* WebStorageManagerInternal.h in Headers */, + 3AB02B0012C132B200FBB694 /* WebStorageManagerPrivate.h in Headers */, + 3ABB3C7A1309C3B500E93D94 /* WebStorageTrackerClient.h in Headers */, + 939810270824BF01008DF038 /* WebStringTruncator.h in Headers */, + 93EB178F09F88D510091F8FF /* WebSystemInterface.h in Headers */, + 936A2DEA0FD2D08400D312DB /* WebTextCompletionController.h in Headers */, + 1A74A28E0F4F75400082E228 /* WebTextInputWindowController.h in Headers */, + F834AAD70E64B1C700E2737C /* WebTextIterator.h in Headers */, + DD7CDEE70A23BA9E00069928 /* WebTypesInternal.h in Headers */, + 939810750824BF01008DF038 /* WebUIDelegate.h in Headers */, + 939810830824BF01008DF038 /* WebUIDelegatePrivate.h in Headers */, + 939810150824BF01008DF038 /* WebURLsWithTitles.h in Headers */, + C0C5B3EE1177A4A0002B0AEF /* WebUserContentURLPattern.h in Headers */, + 939810700824BF01008DF038 /* WebView.h in Headers */, + BC2E464D0FD8A96800A9D9DE /* WebViewData.h in Headers */, + 9398109B0824BF01008DF038 /* WebViewInternal.h in Headers */, + 939810710824BF01008DF038 /* WebViewPrivate.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 9398100A0824BF01008DF038 /* WebKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 149C282D08902B0F008A9EFC /* Build configuration list for PBXNativeTarget "WebKit" */; + buildPhases = ( + 5D2F7DB70C687A5A00B5B72B /* Update Info.plist with version information */, + 1C6CB0510AA63EB000D23BFD /* Migrate Headers */, + 939811300824BF01008DF038 /* Make Frameworks Symbolic Link */, + 9398100D0824BF01008DF038 /* Headers */, + 939810B20824BF01008DF038 /* Resources */, + 939810BB0824BF01008DF038 /* Sources */, + 1C395DE20C6BE8E0000D1E52 /* Generate 64-bit Export File */, + 939811270824BF01008DF038 /* Frameworks */, + 5D0D54210E98631D0029E223 /* Check For Weak VTables and Externals */, + 3713F018142905B70036387F /* Check For Inappropriate Objective-C Class Names */, + 5D88EE6C11407DE800BC3ABC /* Check For Framework Include Consistency */, + A55DEAA516703F9F003DB841 /* Check For Inappropriate Macros in External Headers */, + 5DE6D18C0FCF231B002DE28C /* Symlink WebKitPluginHost in to place */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = WebKit; + productInstallPath = /System/Library/Frameworks; + productName = WebKit; + productReference = 939811330824BF01008DF038 /* WebKit.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0440; + }; + buildConfigurationList = 149C283208902B0F008A9EFC /* Build configuration list for PBXProject "WebKit" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + Spanish, + Dutch, + Italian, + ); + mainGroup = 0867D691FE84028FC02AAC07 /* WebKit */; + productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9398100A0824BF01008DF038 /* WebKit */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 939810B20824BF01008DF038 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1C9F5EFC1651CDF700C480F8 /* Dock.pdf in Resources */, + A864B3F6123ED9FA00C2A612 /* MailQuirksUserScript.js in Resources */, + 29AEF960134C76FB00FE5096 /* OutlookQuirksUserScript.js in Resources */, + 939810B70824BF01008DF038 /* url_icon.tiff in Resources */, + 939810B50824BF01008DF038 /* WebAuthenticationPanel.nib in Resources */, + 5DE83A7A0D0F7F9400CAD12A /* WebJavaScriptTextInputPanel.nib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 1C395DE20C6BE8E0000D1E52 /* Generate 64-bit Export File */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(PROJECT_DIR)/mac/WebKit.exp", + ); + name = "Generate 64-bit Export File"; + outputPaths = ( + "$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit/WebKit.LP64.exp", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "mkdir -p \"${BUILT_PRODUCTS_DIR}/DerivedSources/WebKit\"\n\n# exclude Carbon functions on 64-bit\nsed -e s/^_HIWebViewCreate$// -e s/^_HIWebViewGetWebView$// -e s/^_WebConvertNSImageToCGImageRef$// -e s/^_WebInitForCarbon$// \"${PROJECT_DIR}/mac/WebKit.exp\" > \"${BUILT_PRODUCTS_DIR}/DerivedSources/WebKit/WebKit.LP64.exp\"\n"; + }; + 1C6CB0510AA63EB000D23BFD /* Migrate Headers */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(PROJECT_DIR)/mac/MigrateHeaders.make", + ); + name = "Migrate Headers"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "mkdir -p \"${TARGET_BUILD_DIR}/${PRIVATE_HEADERS_FOLDER_PATH}\"\nmkdir -p \"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}\"\nmkdir -p \"${BUILT_PRODUCTS_DIR}/DerivedSources/WebKit\"\n\nif [ \"${ACTION}\" = \"build\" -o \"${ACTION}\" = \"install\" -o \"${ACTION}\" = \"installhdrs\" ]; then\n make -C mac -f \"MigrateHeaders.make\" -j `/usr/sbin/sysctl -n hw.availcpu`\nfi\n"; + }; + 3713F018142905B70036387F /* Check For Inappropriate Objective-C Class Names */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)", + ); + name = "Check For Inappropriate Objective-C Class Names"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${ACTION}\" = \"installhdrs\" ]; then\n exit 0;\nfi\n\nif [ -f ../../Tools/Scripts/check-for-inappropriate-objc-class-names ]; then\n ../../Tools/Scripts/check-for-inappropriate-objc-class-names Web _Web || exit $?\nfi"; + }; + 5D0D54210E98631D0029E223 /* Check For Weak VTables and Externals */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)", + ); + name = "Check For Weak VTables and Externals"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${ACTION}\" = \"installhdrs\" ]; then\n exit 0;\nfi\n\nif [ -f ../../Tools/Scripts/check-for-weak-vtables-and-externals ]; then\n ../../Tools/Scripts/check-for-weak-vtables-and-externals || exit $?\nfi"; + }; + 5D2F7DB70C687A5A00B5B72B /* Update Info.plist with version information */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(PROJECT_DIR)/mac/Configurations/Version.xcconfig", + ); + name = "Update Info.plist with version information"; + outputPaths = ( + "$(PROJECT_DIR)/mac/Info.plist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Touch Info.plist to let Xcode know it needs to copy it into the built product\nif [[ \"${CONFIGURATION}\" != \"Production\" ]]; then\n touch \"${PROJECT_DIR}/mac/Info.plist\";\nfi;\n"; + }; + 5D88EE6C11407DE800BC3ABC /* Check For Framework Include Consistency */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)", + ); + name = "Check For Framework Include Consistency"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${ACTION}\" = \"installhdrs\" ]; then\n exit 0;\nfi\n\nif [ -f ../../Tools/Scripts/check-for-webkit-framework-include-consistency ]; then\n ../../Tools/Scripts/check-for-webkit-framework-include-consistency || exit $?\nfi\n"; + }; + 5DE6D18C0FCF231B002DE28C /* Symlink WebKitPluginHost in to place */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Symlink WebKitPluginHost in to place"; + outputPaths = ( + "$(CONFIGURATION_BUILD_DIR)/WebKit.framework/WebKitPluginHost.app", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [[ \"${MACOSX_DEPLOYMENT_TARGET}\" > \"10.5\" && \"${CONFIGURATION}\" != \"Production\" && \"${ACTION}\" == \"build\" ]]; then\n if [[ ! -e \"${CONFIGURATION_BUILD_DIR}/WebKit.framework/WebKitPluginHost.app\" ]]; then\n ln -s /System/Library/Frameworks/WebKit.framework/WebKitPluginHost.app \"${CONFIGURATION_BUILD_DIR}/WebKit.framework/WebKitPluginHost.app\"\n fi\nfi\n"; + }; + 939811300824BF01008DF038 /* Make Frameworks Symbolic Link */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 8; + files = ( + ); + inputPaths = ( + WebKit.xcodeproj, + ); + name = "Make Frameworks Symbolic Link"; + outputPaths = ( + "$(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/frameworks-symlink-stamp", + ); + runOnlyForDeploymentPostprocessing = 1; + shellPath = /bin/sh; + shellScript = "ln -sf Versions/Current/Frameworks \"$TARGET_BUILD_DIR/WebKit.framework/Frameworks\"\n"; + }; + A55DEAA516703F9F003DB841 /* Check For Inappropriate Macros in External Headers */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)", + ); + name = "Check For Inappropriate Macros in External Headers"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${ACTION}\" = \"installhdrs\" ]; then\n exit 0;\nfi\n\nif [ -f ../../Tools/Scripts/check-for-inappropriate-macros-in-external-headers ]; then\n ../../Tools/Scripts/check-for-inappropriate-macros-in-external-headers Headers || exit $?\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 939810BB0824BF01008DF038 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A60519117502A5D00BC62F5 /* BinaryPropertyList.cpp in Sources */, + 939811010824BF01008DF038 /* CarbonUtils.m in Sources */, + 939810FD0824BF01008DF038 /* CarbonWindowAdapter.mm in Sources */, + 939810FE0824BF01008DF038 /* CarbonWindowContentView.m in Sources */, + 939810FF0824BF01008DF038 /* CarbonWindowFrame.m in Sources */, + B82958D4132707D0000D0E79 /* CorrectionPanel.mm in Sources */, + 1A60519317502A5D00BC62F5 /* HistoryPropertyList.cpp in Sources */, + 939811000824BF01008DF038 /* HIViewAdapter.m in Sources */, + 939811020824BF01008DF038 /* HIWebView.mm in Sources */, + 1A8DED510EE88B8A00F25022 /* HostedNetscapePluginStream.mm in Sources */, + 1AAF5CEB0EDDE1FE008D883D /* NetscapePluginHostManager.mm in Sources */, + 1AAF5CED0EDDE1FE008D883D /* NetscapePluginHostProxy.mm in Sources */, + 1AAF5CEF0EDDE1FE008D883D /* NetscapePluginInstanceProxy.mm in Sources */, + 939810DD0824BF01008DF038 /* npapi.mm in Sources */, + 1CCFFD130B1F81F2002EE926 /* OldWebAssertions.c in Sources */, + 7C01CB86173435C900C5D807 /* PopupMenuMac.mm in Sources */, + 1A2DBEA00F251E3A0036F8A6 /* ProxyInstance.mm in Sources */, + E169836C11346D5600894115 /* ProxyRuntimeObject.mm in Sources */, + 7C01CB88173435C900C5D807 /* SearchPopupMenuMac.mm in Sources */, + CEDA12DB152CBE6800D9E08D /* WebAlternativeTextClient.mm in Sources */, + B6CE5C24100BC5CE00219936 /* WebApplicationCache.mm in Sources */, + A5DEFC1411D5344B00885273 /* WebApplicationCacheQuotaManager.mm in Sources */, + 9398111D0824BF01008DF038 /* WebArchive.mm in Sources */, + 939810CF0824BF01008DF038 /* WebAuthenticationPanel.m in Sources */, + 939810BC0824BF01008DF038 /* WebBackForwardList.mm in Sources */, + 1A4DF5E50EC8D104006BD4B4 /* WebBaseNetscapePluginView.mm in Sources */, + 939810D30824BF01008DF038 /* WebBasePluginPackage.mm in Sources */, + 5241ADF60B1BC48A004012BD /* WebCache.mm in Sources */, + 14D825300AF955090004F057 /* WebChromeClient.mm in Sources */, + 939810EB0824BF01008DF038 /* WebClipView.mm in Sources */, + 065AD5A40B0C32C7005A2B1D /* WebContextMenuClient.mm in Sources */, + 939810BF0824BF01008DF038 /* WebCoreStatistics.mm in Sources */, + 93E2A1A5123B0B3C009FE12A /* WebDashboardRegion.mm in Sources */, + 511F3FD50CECC88F00852565 /* WebDatabaseManager.mm in Sources */, + 511F3FD80CECC88F00852565 /* WebDatabaseManagerClient.mm in Sources */, + A5DEFC1011D5343E00885273 /* WebDatabaseQuotaManager.mm in Sources */, + 939810ED0824BF01008DF038 /* WebDataSource.mm in Sources */, + 939810EF0824BF01008DF038 /* WebDefaultContextMenuDelegate.mm in Sources */, + 9398111B0824BF01008DF038 /* WebDefaultEditingDelegate.m in Sources */, + 939810F00824BF01008DF038 /* WebDefaultPolicyDelegate.m in Sources */, + 9398110A0824BF01008DF038 /* WebDefaultUIDelegate.m in Sources */, + BC542C430FD7766F00D8AB5D /* WebDelegateImplementationCaching.mm in Sources */, + 598AD9221201CF1000ABAE4E /* WebDeviceOrientation.mm in Sources */, + 598AD91E1201CECF00ABAE4E /* WebDeviceOrientationClient.mm in Sources */, + 598AD9281201CF3200ABAE4E /* WebDeviceOrientationProviderMock.mm in Sources */, + 65FFB7FD0AD0B7D30048CD05 /* WebDocumentLoaderMac.mm in Sources */, + 9398111C0824BF01008DF038 /* WebDOMOperations.mm in Sources */, + E15663190FB61C1F00C199CA /* WebDownload.mm in Sources */, + A70936B00B5608DC00CDB48E /* WebDragClient.mm in Sources */, + 939810F10824BF01008DF038 /* WebDynamicScrollBarsView.mm in Sources */, + 4BF99F910AE050BC00815C2B /* WebEditorClient.mm in Sources */, + DD89682109AA87240097E7F0 /* WebElementDictionary.mm in Sources */, + 939810FC0824BF01008DF038 /* WebFormDelegate.m in Sources */, + 939810F20824BF01008DF038 /* WebFrame.mm in Sources */, + 931633EF0AEDFFAE0062B92D /* WebFrameLoaderClient.mm in Sources */, + 9391F276121B38BD00EBF7E8 /* WebFrameNetworkingContext.mm in Sources */, + 939811060824BF01008DF038 /* WebFrameView.mm in Sources */, + CDA62AE3125F87C2007FD118 /* WebFullScreenController.mm in Sources */, + BC7F884C10C8775A00D6133D /* WebGeolocationClient.mm in Sources */, + BC7F889F10C9D30C00D6133D /* WebGeolocationPosition.mm in Sources */, + 939811130824BF01008DF038 /* WebHistory.mm in Sources */, + 939810BD0824BF01008DF038 /* WebHistoryItem.mm in Sources */, + 1AAF5FC00EDE3A92008D883D /* WebHostedNetscapePluginView.mm in Sources */, + 939810F30824BF01008DF038 /* WebHTMLRepresentation.mm in Sources */, + 939810F40824BF01008DF038 /* WebHTMLView.mm in Sources */, + 939810C10824BF01008DF038 /* WebIconDatabase.mm in Sources */, + 51494CD70C7EBDE0004178C5 /* WebIconDatabaseClient.mm in Sources */, + 5D7BF8150C2A1D90008CE06D /* WebInspector.mm in Sources */, + 06693DDD0BFBA85200216072 /* WebInspectorClient.mm in Sources */, + 1C7B0C660EB2464D00A28502 /* WebInspectorClientCF.cpp in Sources */, + B80417701217A83100466BAE /* WebInspectorFrontend.mm in Sources */, + 939810E40824BF01008DF038 /* WebJavaScriptTextInputPanel.m in Sources */, + 37D1DCA91065928C0068F7EF /* WebJSPDFDoc.mm in Sources */, + 939811170824BF01008DF038 /* WebKeyGenerator.mm in Sources */, + 939811030824BF01008DF038 /* WebKitErrors.m in Sources */, + CD8BFCE715531224005AFB25 /* WebKitFullScreenListener.mm in Sources */, + 939810C30824BF01008DF038 /* WebKitLogging.m in Sources */, + 939810C40824BF01008DF038 /* WebKitNSStringExtras.mm in Sources */, + 1AAF5D0F0EDDE7A7008D883D /* WebKitPluginAgent.defs in Sources */, + 1AAF5D000EDDE604008D883D /* WebKitPluginClient.defs in Sources */, + 1AAF5CF10EDDE586008D883D /* WebKitPluginHost.defs in Sources */, + 939810C50824BF01008DF038 /* WebKitStatistics.m in Sources */, + 9398110E0824BF01008DF038 /* WebKitSystemBits.m in Sources */, + 1C0D40880AC1C8F40009C113 /* WebKitVersionChecks.m in Sources */, + ED5B9524111B725A00472298 /* WebLocalizableStrings.mm in Sources */, + BC42D34D131ED3880075FA4B /* WebLocalizableStringsInternal.mm in Sources */, + 5185F62810712B97007AA393 /* WebNavigationData.mm in Sources */, + 0AB752380FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm in Sources */, + 0AEBFF640F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.mm in Sources */, + 1AEA66D50DC6B1FF003D12BF /* WebNetscapePluginEventHandler.mm in Sources */, + 1AEA66D90DC6B209003D12BF /* WebNetscapePluginEventHandlerCarbon.mm in Sources */, + 1AEA6A510DC8CE2F003D12BF /* WebNetscapePluginEventHandlerCocoa.mm in Sources */, + 939810D60824BF01008DF038 /* WebNetscapePluginPackage.mm in Sources */, + 939810D10824BF01008DF038 /* WebNetscapePluginStream.mm in Sources */, + 1A4DF5230EC8C74D006BD4B4 /* WebNetscapePluginView.mm in Sources */, + 1C68F670095B5FC100C2984E /* WebNodeHighlight.mm in Sources */, + A5687BDB135B791A0074CBCB /* WebNodeHighlighter.mm in Sources */, + 1C68F672095B5FC100C2984E /* WebNodeHighlightView.mm in Sources */, + 312E2FE614E48182007CCA18 /* WebNotification.mm in Sources */, + 31C11A6F1476552E0049A4CC /* WebNotificationClient.mm in Sources */, + EDE983810BCDF5FE00FDAE28 /* WebNSArrayExtras.m in Sources */, + 939810C60824BF01008DF038 /* WebNSControlExtras.m in Sources */, + 939811150824BF01008DF038 /* WebNSDataExtras.m in Sources */, + 65488DA2084FBCCB00831AD0 /* WebNSDictionaryExtras.m in Sources */, + 939811160824BF01008DF038 /* WebNSEventExtras.m in Sources */, + 65EEDE58084FFC9E0002DB25 /* WebNSFileManagerExtras.mm in Sources */, + 939810C70824BF01008DF038 /* WebNSImageExtras.m in Sources */, + 51494D250C7EC1B7004178C5 /* WebNSNotificationCenterExtras.m in Sources */, + 934C4A910F01406C009372C0 /* WebNSObjectExtras.mm in Sources */, + 939810C80824BF01008DF038 /* WebNSPasteboardExtras.mm in Sources */, + 939811190824BF01008DF038 /* WebNSPrintOperationExtras.m in Sources */, + 939811120824BF01008DF038 /* WebNSURLExtras.mm in Sources */, + 65E0F88508500917007E5CB9 /* WebNSURLRequestExtras.m in Sources */, + 65E0F9E708500F23007E5CB9 /* WebNSUserDefaultsExtras.mm in Sources */, + 939810C90824BF01008DF038 /* WebNSViewExtras.m in Sources */, + 939810CA0824BF01008DF038 /* WebNSWindowExtras.m in Sources */, + A58A579A143E727000125F50 /* WebOpenPanelResultListener.mm in Sources */, + 939810D00824BF01008DF038 /* WebPanelAuthenticationHandler.m in Sources */, + 37B6FB4F1063530C000FDB3B /* WebPDFDocumentExtras.mm in Sources */, + 9398111F0824BF01008DF038 /* WebPDFRepresentation.mm in Sources */, + 9398111E0824BF01008DF038 /* WebPDFView.mm in Sources */, + 1AA879B711CBE9BF003C664F /* WebPlatformStrategies.mm in Sources */, + 939811260824BF01008DF038 /* WebPluginContainerCheck.mm in Sources */, + 939810DA0824BF01008DF038 /* WebPluginController.mm in Sources */, + 939810DB0824BF01008DF038 /* WebPluginDatabase.mm in Sources */, + 939810DC0824BF01008DF038 /* WebPluginPackage.mm in Sources */, + 1A77B02F0EE7730500C8A1F9 /* WebPluginRequest.m in Sources */, + 224100F90918190100D2D266 /* WebPluginsPrivate.m in Sources */, + 939811080824BF01008DF038 /* WebPolicyDelegate.mm in Sources */, + 939810F80824BF01008DF038 /* WebPreferences.mm in Sources */, + 0F30986011ECFE4500F559DF /* WebRenderLayer.mm in Sources */, + 939810F90824BF01008DF038 /* WebRenderNode.mm in Sources */, + 9398111A0824BF01008DF038 /* WebResource.mm in Sources */, + 7E6FEF0908985A7200C44C3F /* WebScriptDebugDelegate.mm in Sources */, + C0167BF90D7F5DD00028696E /* WebScriptDebugger.mm in Sources */, + C0B1F7E910AC8E3100C925D9 /* WebScriptWorld.mm in Sources */, + A5DEFC0A11D5331C00885273 /* WebSecurityOrigin.mm in Sources */, + BC26C6A510B7447A00B687ED /* WebSerializedJSValue.mm in Sources */, + 3AB02AF612C1319B00FBB694 /* WebStorageManager.mm in Sources */, + 3ABB3C7B1309C3B500E93D94 /* WebStorageTrackerClient.mm in Sources */, + 939810CC0824BF01008DF038 /* WebStringTruncator.mm in Sources */, + 93EB178D09F88D460091F8FF /* WebSystemInterface.mm in Sources */, + 936A2DE80FD2D08000D312DB /* WebTextCompletionController.mm in Sources */, + 1A74A28F0F4F75400082E228 /* WebTextInputWindowController.m in Sources */, + F834AAD80E64B1C700E2737C /* WebTextIterator.mm in Sources */, + 939810BE0824BF01008DF038 /* WebURLsWithTitles.m in Sources */, + C0C5B3EF1177A4A0002B0AEF /* WebUserContentURLPattern.mm in Sources */, + 939811070824BF01008DF038 /* WebView.mm in Sources */, + BC2E464E0FD8A96800A9D9DE /* WebViewData.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 5DE83A740D0F7F9400CAD12A /* WebJavaScriptTextInputPanel.nib */ = { + isa = PBXVariantGroup; + children = ( + 5DE83A750D0F7F9400CAD12A /* English */, + ); + name = WebJavaScriptTextInputPanel.nib; + path = mac/Resources; + sourceTree = SOURCE_ROOT; + }; + 9345D17B0365BF35008635CE /* WebAuthenticationPanel.nib */ = { + isa = PBXVariantGroup; + children = ( + 9345D17C0365BF35008635CE /* English */, + ); + name = WebAuthenticationPanel.nib; + path = ..; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 149C282E08902B0F008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C904FD20BA9DD0F0081E9D0 /* WebKit.xcconfig */; + buildSettings = { + DEBUG_DEFINES = "$(DEBUG_DEFINES_debug) ENABLE_WEBKIT_UNSET_DYLD_FRAMEWORK_PATH"; + INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)"; + OTHER_LDFLAGS = ( + "$(OTHER_LDFLAGS)", + "-l$(WEBKIT_SYSTEM_INTERFACE_LIBRARY)", + ); + }; + name = Debug; + }; + 149C282F08902B0F008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C904FD20BA9DD0F0081E9D0 /* WebKit.xcconfig */; + buildSettings = { + DEBUG_DEFINES = "$(DEBUG_DEFINES_$(CURRENT_VARIANT)) ENABLE_WEBKIT_UNSET_DYLD_FRAMEWORK_PATH"; + INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)"; + OTHER_LDFLAGS = ( + "$(OTHER_LDFLAGS)", + "-l$(WEBKIT_SYSTEM_INTERFACE_LIBRARY)", + ); + }; + name = Release; + }; + 149C283108902B0F008A9EFC /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C904FD20BA9DD0F0081E9D0 /* WebKit.xcconfig */; + buildSettings = { + BUILD_VARIANTS = normal; + OTHER_LDFLAGS = ( + "$(OTHER_LDFLAGS)", + "-lWebKitSystemInterface", + ); + }; + name = Production; + }; + 149C283308902B0F008A9EFC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C904FD40BA9DD0F0081E9D0 /* DebugRelease.xcconfig */; + buildSettings = { + DEBUG_DEFINES = "$(DEBUG_DEFINES_debug)"; + GCC_OPTIMIZATION_LEVEL = "$(GCC_OPTIMIZATION_LEVEL_debug)"; + STRIP_INSTALLED_PRODUCT = "$(STRIP_INSTALLED_PRODUCT_debug)"; + }; + name = Debug; + }; + 149C283408902B0F008A9EFC /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C904FD40BA9DD0F0081E9D0 /* DebugRelease.xcconfig */; + buildSettings = { + STRIP_INSTALLED_PRODUCT = NO; + }; + name = Release; + }; + 149C283608902B0F008A9EFC /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C904FD50BA9DD0F0081E9D0 /* Base.xcconfig */; + buildSettings = { + }; + name = Production; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 149C282D08902B0F008A9EFC /* Build configuration list for PBXNativeTarget "WebKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C282E08902B0F008A9EFC /* Debug */, + 149C282F08902B0F008A9EFC /* Release */, + 149C283108902B0F008A9EFC /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; + 149C283208902B0F008A9EFC /* Build configuration list for PBXProject "WebKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 149C283308902B0F008A9EFC /* Debug */, + 149C283408902B0F008A9EFC /* Release */, + 149C283608902B0F008A9EFC /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/Source/WebKit/qt/Api/qwebelement.cpp b/Source/WebKit/qt/Api/qwebelement.cpp index 26aedc1f507..8f54d4abc1b 100644 --- a/Source/WebKit/qt/Api/qwebelement.cpp +++ b/Source/WebKit/qt/Api/qwebelement.cpp @@ -740,7 +740,14 @@ static bool setupScriptContext(WebCore::Element* element, ScriptState*& state, S } /*! - Executes \a scriptSource with this element as \c this object. + Executes \a scriptSource with this element as \c this object + and returns the result of the last executed statement. + + \note This method may be very inefficient if \a scriptSource returns + a DOM element as a result. See \l{QWebFrame::evaluateJavaScript()} + for more details. + + \sa QWebFrame::evaluateJavaScript() */ QVariant QWebElement::evaluateJavaScript(const QString& scriptSource) { diff --git a/Source/WebKit/qt/Api/qwebhistoryinterface.h b/Source/WebKit/qt/Api/qwebhistoryinterface.h index a49c58684da..3038d22bd8d 100644 --- a/Source/WebKit/qt/Api/qwebhistoryinterface.h +++ b/Source/WebKit/qt/Api/qwebhistoryinterface.h @@ -29,7 +29,7 @@ class QWEBKIT_EXPORT QWebHistoryInterface : public QObject { Q_OBJECT public: - QWebHistoryInterface(QObject *parent = 0); + explicit QWebHistoryInterface(QObject *parent = Q_NULLPTR); ~QWebHistoryInterface(); static void setDefaultInterface(QWebHistoryInterface *defaultInterface); diff --git a/Source/WebKit/qt/Api/qwebpluginfactory.h b/Source/WebKit/qt/Api/qwebpluginfactory.h index 24084fe18ab..26f855066a0 100644 --- a/Source/WebKit/qt/Api/qwebpluginfactory.h +++ b/Source/WebKit/qt/Api/qwebpluginfactory.h @@ -48,7 +48,7 @@ class QWEBKIT_EXPORT QWebPluginFactory : public QObject { QList mimeTypes; }; - explicit QWebPluginFactory(QObject* parent = 0); + explicit QWebPluginFactory(QObject* parent = Q_NULLPTR); virtual ~QWebPluginFactory(); virtual QList plugins() const = 0; @@ -62,7 +62,7 @@ class QWEBKIT_EXPORT QWebPluginFactory : public QObject { {}; class ExtensionReturn {}; - virtual bool extension(Extension extension, const ExtensionOption* option = 0, ExtensionReturn* output = 0); + virtual bool extension(Extension extension, const ExtensionOption* option = Q_NULLPTR, ExtensionReturn* output = Q_NULLPTR); virtual bool supportsExtension(Extension extension) const; private: diff --git a/Source/WebKit/qt/Api/qwebsecurityorigin.cpp b/Source/WebKit/qt/Api/qwebsecurityorigin.cpp index 58fe79519b0..a76ee975cad 100644 --- a/Source/WebKit/qt/Api/qwebsecurityorigin.cpp +++ b/Source/WebKit/qt/Api/qwebsecurityorigin.cpp @@ -224,7 +224,7 @@ QList QWebSecurityOrigin::databases() const to the \c file: scheme. Cross domain restrictions depend on the two web settings QWebSettings::LocalContentCanAccessFileUrls - and QWebSettings::LocalContentCanAccessFileUrls. By default all local schemes are concidered to be + and QWebSettings::LocalContentCanAccessRemoteUrls. By default all local schemes are considered to be in the same security origin, and local schemes can not access remote content. */ void QWebSecurityOrigin::addLocalScheme(const QString& scheme) diff --git a/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp b/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp index c32561c997a..0a114c94fa7 100644 --- a/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp +++ b/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp @@ -1,369 +1,369 @@ -/* - Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include "config.h" -#include "InspectorServerQt.h" - -#include "InspectorClientQt.h" -#include "InspectorController.h" -#include "Page.h" -#include "QWebFrameAdapter.h" -#include "QWebPageAdapter.h" -#include "qhttpheader_p.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace WebCore { - -/*! - Computes the WebSocket handshake response given the input key - */ -static QByteArray generateWebSocketChallengeResponse(const QByteArray& key) -{ - SHA1 sha1; - Vector digest; - Vector encoded; - QByteArray toHash("258EAFA5-E914-47DA-95CA-C5AB0DC85B11"); - toHash.prepend(key); - sha1.addBytes((uint8_t*)toHash.data(), toHash.size()); - sha1.computeHash(digest); - base64Encode((char*)digest.data(), digest.size(), encoded); - return QByteArray(encoded.data(), encoded.size()); -} - -static InspectorServerQt* s_inspectorServer; - -InspectorServerQt* InspectorServerQt::server() -{ - // s_inspectorServer is deleted in unregisterClient() when the last client is unregistered. - if (!s_inspectorServer) - s_inspectorServer = new InspectorServerQt(); - - return s_inspectorServer; -} - -InspectorServerQt::InspectorServerQt() - : QObject() - , m_tcpServer(0) - , m_pageNumber(1) -{ -} - -InspectorServerQt::~InspectorServerQt() -{ - close(); -} - -int InspectorServerQt::listen(quint16 port) -{ - if (m_tcpServer) - return m_tcpServer->serverPort(); - - m_tcpServer = new QTcpServer(); - m_tcpServer->listen(QHostAddress::Any, port); - connect(m_tcpServer, SIGNAL(newConnection()), SLOT(newConnection())); - - return port; -} - -void InspectorServerQt::close() -{ - if (m_tcpServer) { - m_tcpServer->close(); - delete m_tcpServer; - } - m_tcpServer = 0; -} - -InspectorClientQt* InspectorServerQt::inspectorClientForPage(int pageNum) -{ - InspectorClientQt* client = m_inspectorClients.value(pageNum); - return client; -} - -void InspectorServerQt::registerClient(InspectorClientQt* client) -{ - if (!m_inspectorClients.key(client)) - m_inspectorClients.insert(m_pageNumber++, client); -} - -void InspectorServerQt::unregisterClient(InspectorClientQt* client) -{ - int pageNum = m_inspectorClients.key(client, -1); - if (pageNum >= 0) - m_inspectorClients.remove(pageNum); - if (!m_inspectorClients.size()) { - // s_inspectorServer points to this. - s_inspectorServer = 0; - close(); - deleteLater(); - } -} - -void InspectorServerQt::newConnection() -{ - QTcpSocket* tcpConnection = m_tcpServer->nextPendingConnection(); - InspectorServerRequestHandlerQt* handler = new InspectorServerRequestHandlerQt(tcpConnection, this); - handler->setParent(this); -} - -InspectorServerRequestHandlerQt::InspectorServerRequestHandlerQt(QTcpSocket* tcpConnection, InspectorServerQt* server) - : QObject(server) - , m_tcpConnection(tcpConnection) - , m_server(server) - , m_inspectorClient(0) -{ - m_endOfHeaders = false; - m_contentLength = 0; - - connect(m_tcpConnection, SIGNAL(readyRead()), SLOT(tcpReadyRead())); - connect(m_tcpConnection, SIGNAL(disconnected()), SLOT(tcpConnectionDisconnected())); -} - -InspectorServerRequestHandlerQt::~InspectorServerRequestHandlerQt() -{ -} - -void InspectorServerRequestHandlerQt::tcpReadyRead() -{ - WebKit::QHttpRequestHeader header; - bool isWebSocket = false; - if (!m_tcpConnection) - return; - - if (!m_endOfHeaders) { - while (m_tcpConnection->bytesAvailable() && !m_endOfHeaders) { - QByteArray line = m_tcpConnection->readLine(); - m_data.append(line); - if (line == "\r\n") - m_endOfHeaders = true; - } - if (m_endOfHeaders) { - header = WebKit::QHttpRequestHeader(QString::fromLatin1(m_data)); - if (header.isValid()) { - m_path = header.path(); - m_contentType = header.contentType().toLatin1(); - m_contentLength = header.contentLength(); - if (header.hasKey(QLatin1String("Upgrade")) && (header.value(QLatin1String("Upgrade")) == QLatin1String("websocket"))) - isWebSocket = true; - - m_data.clear(); - } - } - } - - if (m_endOfHeaders) { - QStringList pathAndQuery = m_path.split(QLatin1Char('?')); - m_path = pathAndQuery[0]; - QStringList words = m_path.split(QLatin1Char('/')); - - if (isWebSocket) { - // switch to websocket-style WebSocketService messaging - if (m_tcpConnection) { - m_tcpConnection->disconnect(SIGNAL(readyRead())); - connect(m_tcpConnection, SIGNAL(readyRead()), SLOT(webSocketReadyRead()), Qt::QueuedConnection); - - QByteArray key = header.value(QLatin1String("Sec-WebSocket-Key")).toLatin1(); - QString accept = QString::fromLatin1(generateWebSocketChallengeResponse(key)); - - WebKit::QHttpResponseHeader responseHeader(101, QLatin1String("WebSocket Protocol Handshake"), 1, 1); - responseHeader.setValue(QLatin1String("Upgrade"), header.value(QLatin1String("Upgrade"))); - responseHeader.setValue(QLatin1String("Connection"), header.value(QLatin1String("Connection"))); - responseHeader.setValue(QLatin1String("Sec-WebSocket-Accept"), accept); - m_tcpConnection->write(responseHeader.toString().toLatin1()); - m_tcpConnection->flush(); - - if ((words.size() == 4) - && (words[1] == QString::fromLatin1("devtools")) - && (words[2] == QString::fromLatin1("page"))) { - int pageNum = words[3].toInt(); - - m_inspectorClient = m_server->inspectorClientForPage(pageNum); - // Attach remoteFrontendChannel to inspector, also transferring ownership. - if (m_inspectorClient) - m_inspectorClient->attachAndReplaceRemoteFrontend(this); - } - - } - - return; - } - if (m_contentLength && (m_tcpConnection->bytesAvailable() < m_contentLength)) - return; - - QByteArray content = m_tcpConnection->read(m_contentLength); - m_endOfHeaders = false; - - QByteArray response; - int code = 200; - QString text = QString::fromLatin1("OK"); - - // If no path is specified, generate an index page. - if (m_path.isEmpty() || (m_path == QString(QLatin1Char('/')))) { - QString indexHtml = QLatin1String("Remote Web Inspector")); - response = indexHtml.toLatin1(); - } else { - QString path = QString::fromLatin1(":%1").arg(m_path); - QFile file(path); - // It seems that there should be an enum or define for these status codes somewhere in Qt or WebKit, - // but grep fails to turn one up. - // QNetwork uses the numeric values directly. - if (file.exists()) { - file.open(QIODevice::ReadOnly); - response = file.readAll(); - } else { - code = 404; - text = QString::fromLatin1("Not OK"); - } - } - - WebKit::QHttpResponseHeader responseHeader(code, text, 1, 0); - responseHeader.setContentLength(response.size()); - if (!m_contentType.isEmpty()) - responseHeader.setContentType(QString::fromLatin1(m_contentType)); - - QByteArray asciiHeader = responseHeader.toString().toLatin1(); - m_tcpConnection->write(asciiHeader); - - m_tcpConnection->write(response); - m_tcpConnection->flush(); - m_tcpConnection->close(); - - return; - } -} - -void InspectorServerRequestHandlerQt::tcpConnectionDisconnected() -{ - if (m_inspectorClient) - m_inspectorClient->detachRemoteFrontend(); - m_tcpConnection->deleteLater(); - m_tcpConnection = 0; -} - -int InspectorServerRequestHandlerQt::webSocketSend(const QString& message) -{ - QByteArray payload = message.toUtf8(); - return webSocketSend(payload.data(), payload.size()); -} - -int InspectorServerRequestHandlerQt::webSocketSend(const char* data, size_t length) -{ - Q_ASSERT(m_tcpConnection); - m_tcpConnection->putChar(0x81); - if (length <= 125) - m_tcpConnection->putChar(static_cast(length)); - else if (length <= (1<<16)) { - m_tcpConnection->putChar(126); - quint16 length16 = qToBigEndian(static_cast(length)); - m_tcpConnection->write(reinterpret_cast(&length16), 2); - } else { - m_tcpConnection->putChar(127); - quint64 length64 = qToBigEndian(static_cast(length)); - m_tcpConnection->write(reinterpret_cast(&length64), 8); - } - int nBytes = m_tcpConnection->write(data, length); - m_tcpConnection->flush(); - return nBytes; -} - -static QByteArray applyMask(const QByteArray& payload, const QByteArray& maskingKey) -{ - Q_ASSERT(maskingKey.size() == 4); - QByteArray unmaskedPayload; - for (int i = 0; i < payload.size(); ++i) { - char unmaskedByte = payload[i] ^ maskingKey[i % 4]; - unmaskedPayload.append(unmaskedByte); - } - return unmaskedPayload; -} - -void InspectorServerRequestHandlerQt::webSocketReadyRead() -{ - Q_ASSERT(m_tcpConnection); - if (!m_tcpConnection->bytesAvailable()) - return; - QByteArray content = m_tcpConnection->read(m_tcpConnection->bytesAvailable()); - m_data.append(content); - while (m_data.size() > 0) { - const bool isMasked = m_data[1] & 0x80; - quint64 payloadLen = m_data[1] & 0x7F; - int pos = 2; - - if (payloadLen == 126) { - payloadLen = qFromBigEndian(*reinterpret_cast(m_data.mid(pos, 2).data())); - pos = 4; - } else if (payloadLen == 127) { - payloadLen = qFromBigEndian(*reinterpret_cast(m_data.mid(pos, 8).data())); - pos = 8; - } - - QByteArray payload; - if (isMasked) { - QByteArray maskingKey = m_data.mid(pos, 4); - pos += 4; - payload = applyMask(m_data.mid(pos, payloadLen), maskingKey); - } else - payload = m_data.mid(pos, payloadLen); - - // Handle fragmentation - if (!(m_data[0] & 0x80)) { // Non-last fragmented payload - m_fragmentedPayload.append(payload); - m_data = m_data.mid(pos + payloadLen); - continue; - } - - if (!(m_data[0] & 0x0F)) { // Last fragment - m_fragmentedPayload.append(payload); - payload = m_fragmentedPayload; - m_fragmentedPayload.clear(); - } - - // Remove this WebSocket message from m_data (payload, start-of-frame byte, end-of-frame byte). - // Truncate data before delivering message in case of re-entrancy. - m_data = m_data.mid(pos + payloadLen); - -#if ENABLE(INSPECTOR) - if (m_inspectorClient) { - InspectorController* inspectorController = m_inspectorClient->m_inspectedWebPage->page->inspectorController(); - inspectorController->dispatchMessageFromFrontend(QString::fromUtf8(payload)); - } -#endif - - } -} - -} - -#include "moc_InspectorServerQt.cpp" +/* + Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "config.h" +#include "InspectorServerQt.h" + +#include "InspectorClientQt.h" +#include "InspectorController.h" +#include "Page.h" +#include "QWebFrameAdapter.h" +#include "QWebPageAdapter.h" +#include "qhttpheader_p.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace WebCore { + +/*! + Computes the WebSocket handshake response given the input key + */ +static QByteArray generateWebSocketChallengeResponse(const QByteArray& key) +{ + SHA1 sha1; + Vector digest; + Vector encoded; + QByteArray toHash("258EAFA5-E914-47DA-95CA-C5AB0DC85B11"); + toHash.prepend(key); + sha1.addBytes((uint8_t*)toHash.data(), toHash.size()); + sha1.computeHash(digest); + base64Encode((char*)digest.data(), digest.size(), encoded); + return QByteArray(encoded.data(), encoded.size()); +} + +static InspectorServerQt* s_inspectorServer; + +InspectorServerQt* InspectorServerQt::server() +{ + // s_inspectorServer is deleted in unregisterClient() when the last client is unregistered. + if (!s_inspectorServer) + s_inspectorServer = new InspectorServerQt(); + + return s_inspectorServer; +} + +InspectorServerQt::InspectorServerQt() + : QObject() + , m_tcpServer(0) + , m_pageNumber(1) +{ +} + +InspectorServerQt::~InspectorServerQt() +{ + close(); +} + +int InspectorServerQt::listen(quint16 port) +{ + if (m_tcpServer) + return m_tcpServer->serverPort(); + + m_tcpServer = new QTcpServer(); + m_tcpServer->listen(QHostAddress::Any, port); + connect(m_tcpServer, SIGNAL(newConnection()), SLOT(newConnection())); + + return port; +} + +void InspectorServerQt::close() +{ + if (m_tcpServer) { + m_tcpServer->close(); + delete m_tcpServer; + } + m_tcpServer = 0; +} + +InspectorClientQt* InspectorServerQt::inspectorClientForPage(int pageNum) +{ + InspectorClientQt* client = m_inspectorClients.value(pageNum); + return client; +} + +void InspectorServerQt::registerClient(InspectorClientQt* client) +{ + if (!m_inspectorClients.key(client)) + m_inspectorClients.insert(m_pageNumber++, client); +} + +void InspectorServerQt::unregisterClient(InspectorClientQt* client) +{ + int pageNum = m_inspectorClients.key(client, -1); + if (pageNum >= 0) + m_inspectorClients.remove(pageNum); + if (!m_inspectorClients.size()) { + // s_inspectorServer points to this. + s_inspectorServer = 0; + close(); + deleteLater(); + } +} + +void InspectorServerQt::newConnection() +{ + QTcpSocket* tcpConnection = m_tcpServer->nextPendingConnection(); + InspectorServerRequestHandlerQt* handler = new InspectorServerRequestHandlerQt(tcpConnection, this); + handler->setParent(this); +} + +InspectorServerRequestHandlerQt::InspectorServerRequestHandlerQt(QTcpSocket* tcpConnection, InspectorServerQt* server) + : QObject(server) + , m_tcpConnection(tcpConnection) + , m_server(server) + , m_inspectorClient(0) +{ + m_endOfHeaders = false; + m_contentLength = 0; + + connect(m_tcpConnection, SIGNAL(readyRead()), SLOT(tcpReadyRead())); + connect(m_tcpConnection, SIGNAL(disconnected()), SLOT(tcpConnectionDisconnected())); +} + +InspectorServerRequestHandlerQt::~InspectorServerRequestHandlerQt() +{ +} + +void InspectorServerRequestHandlerQt::tcpReadyRead() +{ + WebKit::QHttpRequestHeader header; + bool isWebSocket = false; + if (!m_tcpConnection) + return; + + if (!m_endOfHeaders) { + while (m_tcpConnection->bytesAvailable() && !m_endOfHeaders) { + QByteArray line = m_tcpConnection->readLine(); + m_data.append(line); + if (line == "\r\n") + m_endOfHeaders = true; + } + if (m_endOfHeaders) { + header = WebKit::QHttpRequestHeader(QString::fromLatin1(m_data)); + if (header.isValid()) { + m_path = header.path(); + m_contentType = header.contentType().toLatin1(); + m_contentLength = header.contentLength(); + if (header.hasKey(QLatin1String("Upgrade")) && (header.value(QLatin1String("Upgrade")) == QLatin1String("websocket"))) + isWebSocket = true; + + m_data.clear(); + } + } + } + + if (m_endOfHeaders) { + QStringList pathAndQuery = m_path.split(QLatin1Char('?')); + m_path = pathAndQuery[0]; + QStringList words = m_path.split(QLatin1Char('/')); + + if (isWebSocket) { + // switch to websocket-style WebSocketService messaging + if (m_tcpConnection) { + m_tcpConnection->disconnect(SIGNAL(readyRead())); + connect(m_tcpConnection, SIGNAL(readyRead()), SLOT(webSocketReadyRead()), Qt::QueuedConnection); + + QByteArray key = header.value(QLatin1String("Sec-WebSocket-Key")).toLatin1(); + QString accept = QString::fromLatin1(generateWebSocketChallengeResponse(key)); + + WebKit::QHttpResponseHeader responseHeader(101, QLatin1String("WebSocket Protocol Handshake"), 1, 1); + responseHeader.setValue(QLatin1String("Upgrade"), header.value(QLatin1String("Upgrade"))); + responseHeader.setValue(QLatin1String("Connection"), header.value(QLatin1String("Connection"))); + responseHeader.setValue(QLatin1String("Sec-WebSocket-Accept"), accept); + m_tcpConnection->write(responseHeader.toString().toLatin1()); + m_tcpConnection->flush(); + + if ((words.size() == 4) + && (words[1] == QString::fromLatin1("devtools")) + && (words[2] == QString::fromLatin1("page"))) { + int pageNum = words[3].toInt(); + + m_inspectorClient = m_server->inspectorClientForPage(pageNum); + // Attach remoteFrontendChannel to inspector, also transferring ownership. + if (m_inspectorClient) + m_inspectorClient->attachAndReplaceRemoteFrontend(this); + } + + } + + return; + } + if (m_contentLength && (m_tcpConnection->bytesAvailable() < m_contentLength)) + return; + + QByteArray content = m_tcpConnection->read(m_contentLength); + m_endOfHeaders = false; + + QByteArray response; + int code = 200; + QString text = QString::fromLatin1("OK"); + + // If no path is specified, generate an index page. + if (m_path.isEmpty() || (m_path == QString(QLatin1Char('/')))) { + QString indexHtml = QLatin1String("Remote Web Inspector")); + response = indexHtml.toLatin1(); + } else { + QString path = QString::fromLatin1(":%1").arg(m_path); + QFile file(path); + // It seems that there should be an enum or define for these status codes somewhere in Qt or WebKit, + // but grep fails to turn one up. + // QNetwork uses the numeric values directly. + if (file.exists()) { + file.open(QIODevice::ReadOnly); + response = file.readAll(); + } else { + code = 404; + text = QString::fromLatin1("Not OK"); + } + } + + WebKit::QHttpResponseHeader responseHeader(code, text, 1, 0); + responseHeader.setContentLength(response.size()); + if (!m_contentType.isEmpty()) + responseHeader.setContentType(QString::fromLatin1(m_contentType)); + + QByteArray asciiHeader = responseHeader.toString().toLatin1(); + m_tcpConnection->write(asciiHeader); + + m_tcpConnection->write(response); + m_tcpConnection->flush(); + m_tcpConnection->close(); + + return; + } +} + +void InspectorServerRequestHandlerQt::tcpConnectionDisconnected() +{ + if (m_inspectorClient) + m_inspectorClient->detachRemoteFrontend(); + m_tcpConnection->deleteLater(); + m_tcpConnection = 0; +} + +int InspectorServerRequestHandlerQt::webSocketSend(const QString& message) +{ + QByteArray payload = message.toUtf8(); + return webSocketSend(payload.data(), payload.size()); +} + +int InspectorServerRequestHandlerQt::webSocketSend(const char* data, size_t length) +{ + Q_ASSERT(m_tcpConnection); + m_tcpConnection->putChar(0x81); + if (length <= 125) + m_tcpConnection->putChar(static_cast(length)); + else if (length <= (1<<16)) { + m_tcpConnection->putChar(126); + quint16 length16 = qToBigEndian(static_cast(length)); + m_tcpConnection->write(reinterpret_cast(&length16), 2); + } else { + m_tcpConnection->putChar(127); + quint64 length64 = qToBigEndian(static_cast(length)); + m_tcpConnection->write(reinterpret_cast(&length64), 8); + } + int nBytes = m_tcpConnection->write(data, length); + m_tcpConnection->flush(); + return nBytes; +} + +static QByteArray applyMask(const QByteArray& payload, const QByteArray& maskingKey) +{ + Q_ASSERT(maskingKey.size() == 4); + QByteArray unmaskedPayload; + for (int i = 0; i < payload.size(); ++i) { + char unmaskedByte = payload[i] ^ maskingKey[i % 4]; + unmaskedPayload.append(unmaskedByte); + } + return unmaskedPayload; +} + +void InspectorServerRequestHandlerQt::webSocketReadyRead() +{ + Q_ASSERT(m_tcpConnection); + if (!m_tcpConnection->bytesAvailable()) + return; + QByteArray content = m_tcpConnection->read(m_tcpConnection->bytesAvailable()); + m_data.append(content); + while (m_data.size() > 0) { + const bool isMasked = m_data[1] & 0x80; + quint64 payloadLen = m_data[1] & 0x7F; + int pos = 2; + + if (payloadLen == 126) { + payloadLen = qFromBigEndian(*reinterpret_cast(m_data.mid(pos, 2).data())); + pos = 4; + } else if (payloadLen == 127) { + payloadLen = qFromBigEndian(*reinterpret_cast(m_data.mid(pos, 8).data())); + pos = 8; + } + + QByteArray payload; + if (isMasked) { + QByteArray maskingKey = m_data.mid(pos, 4); + pos += 4; + payload = applyMask(m_data.mid(pos, payloadLen), maskingKey); + } else + payload = m_data.mid(pos, payloadLen); + + // Handle fragmentation + if (!(m_data[0] & 0x80)) { // Non-last fragmented payload + m_fragmentedPayload.append(payload); + m_data = m_data.mid(pos + payloadLen); + continue; + } + + if (!(m_data[0] & 0x0F)) { // Last fragment + m_fragmentedPayload.append(payload); + payload = m_fragmentedPayload; + m_fragmentedPayload.clear(); + } + + // Remove this WebSocket message from m_data (payload, start-of-frame byte, end-of-frame byte). + // Truncate data before delivering message in case of re-entrancy. + m_data = m_data.mid(pos + payloadLen); + +#if ENABLE(INSPECTOR) + if (m_inspectorClient) { + InspectorController* inspectorController = m_inspectorClient->m_inspectedWebPage->page->inspectorController(); + inspectorController->dispatchMessageFromFrontend(QString::fromUtf8(payload)); + } +#endif + + } +} + +} + +#include "moc_InspectorServerQt.cpp" diff --git a/Source/WebKit/qt/WebCoreSupport/PlatformStrategiesQt.cpp b/Source/WebKit/qt/WebCoreSupport/PlatformStrategiesQt.cpp index a8487f2c4c3..7fcf3de45fa 100644 --- a/Source/WebKit/qt/WebCoreSupport/PlatformStrategiesQt.cpp +++ b/Source/WebKit/qt/WebCoreSupport/PlatformStrategiesQt.cpp @@ -200,14 +200,14 @@ bool PlatformStrategiesQt::isLinkVisited(Page* page, LinkHash hash, const KURL& { ASSERT(hash); - Vector url; - visitedURL(baseURL, attributeURL, url); - // If the Qt4.4 interface for the history is used, we will have to fallback // to the old global history. QWebHistoryInterface* iface = QWebHistoryInterface::defaultInterface(); - if (iface) + if (iface) { + Vector url; + visitedURL(baseURL, attributeURL, url); return iface->historyContains(QString(reinterpret_cast(url.data()), url.size())); + } return page->group().isLinkVisited(hash); } diff --git a/Source/WebKit/qt/WidgetApi/qgraphicswebview.h b/Source/WebKit/qt/WidgetApi/qgraphicswebview.h index c9e61f75a76..0d990086f7e 100644 --- a/Source/WebKit/qt/WidgetApi/qgraphicswebview.h +++ b/Source/WebKit/qt/WidgetApi/qgraphicswebview.h @@ -54,7 +54,7 @@ class QWEBKITWIDGETS_EXPORT QGraphicsWebView : public QGraphicsWidget { Q_FLAGS(QPainter::RenderHints) public: - explicit QGraphicsWebView(QGraphicsItem* parent = 0); + explicit QGraphicsWebView(QGraphicsItem* parent = Q_NULLPTR); ~QGraphicsWebView(); QWebPage* page() const; @@ -84,7 +84,7 @@ class QWEBKITWIDGETS_EXPORT QGraphicsWebView : public QGraphicsWidget { QAction* pageAction(QWebPage::WebAction action) const; void triggerPageAction(QWebPage::WebAction action, bool checked = false); - bool findText(const QString& subString, QWebPage::FindFlags options = 0); + bool findText(const QString& subString, QWebPage::FindFlags options = QWebPage::FindFlags()); bool resizesToContents() const; void setResizesToContents(bool enabled); @@ -94,7 +94,7 @@ class QWEBKITWIDGETS_EXPORT QGraphicsWebView : public QGraphicsWidget { virtual void setGeometry(const QRectF& rect); virtual void updateGeometry(); - virtual void paint(QPainter*, const QStyleOptionGraphicsItem* options, QWidget* widget = 0); + virtual void paint(QPainter*, const QStyleOptionGraphicsItem* options, QWidget* widget = Q_NULLPTR); virtual QVariant itemChange(GraphicsItemChange change, const QVariant& value); virtual bool event(QEvent*); diff --git a/Source/WebKit/qt/WidgetApi/qwebframe.cpp b/Source/WebKit/qt/WidgetApi/qwebframe.cpp index b7d3273ff22..379d775f211 100644 --- a/Source/WebKit/qt/WidgetApi/qwebframe.cpp +++ b/Source/WebKit/qt/WidgetApi/qwebframe.cpp @@ -1,1327 +1,1341 @@ -/* - Copyright (C) 2008,2009 Nokia Corporation and/or its subsidiary(-ies) - Copyright (C) 2007 Staikos Computing Services Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include "config.h" -#include "qwebframe.h" - -#include "qwebelement.h" -#include "qwebframe_p.h" -#include "qwebpage.h" -#include "qwebpage_p.h" -#include "qwebscriptworld.h" -#include "qwebscriptworld_p.h" -#include "qwebsecurityorigin.h" -#include "DOMWrapperWorld.h" -#include -#include -#include -#include -#include -#if HAVE(QTPRINTSUPPORT) -#include "QtPrintContext.h" -#include -#endif -#include -#include - -#include "qwebframe_printingaddons_p.h" - -using namespace WebCore; - -// from text/qfont.cpp -QT_BEGIN_NAMESPACE -extern Q_GUI_EXPORT int qt_defaultDpi(); -QT_END_NAMESPACE - -void QWebFramePrivate::setPage(QWebPage* newPage) -{ - if (page == newPage) - return; - - // The QWebFrame is created as a child of QWebPage or a parent QWebFrame. - // That adds it to QObject's internal children list and ensures it will be - // deleted when parent QWebPage is deleted. Reparent if needed. - if (q->parent() == qobject_cast(page)) - q->setParent(newPage); - - page = newPage; - pageAdapter = newPage->handle(); - emit q->pageChanged(); -} - -void QWebFramePrivate::emitUrlChanged() -{ - url = coreFrameUrl(); - emit q->urlChanged(url); -} - -void QWebFramePrivate::didStartProvisionalLoad() -{ - emit q->provisionalLoad(); -} - -void QWebFramePrivate::didClearWindowObject() -{ - emit q->javaScriptWindowObjectCleared(); -} - -bool QWebFramePrivate::handleProgressFinished(QPoint *localPos) -{ - QWidget *view = q->page()->view(); - if (!view || !localPos) - return false; - *localPos = view->mapFromGlobal(QCursor::pos()); - return view->hasFocus() && view->rect().contains(*localPos); -} - -void QWebFramePrivate::emitInitialLayoutCompleted() -{ - emit q->initialLayoutCompleted(); -} - -void QWebFramePrivate::emitIconChanged() -{ - emit q->iconChanged(); -} - -void QWebFramePrivate::emitLoadStarted(bool originatingLoad) -{ - if (page && originatingLoad) - emit page->loadStarted(); - emit q->loadStarted(); -} - -void QWebFramePrivate::emitLoadFinished(bool originatingLoad, bool ok) -{ - if (page && originatingLoad) - emit page->loadFinished(ok); - emit q->loadFinished(ok); -} - -QWebFrameAdapter* QWebFramePrivate::createChildFrame(QWebFrameData* frameData) -{ - QWebFrame* newFrame = new QWebFrame(/*parent frame*/q, frameData); - return newFrame->d; -} - -QWebFrame *QWebFramePrivate::apiHandle() -{ - return q; -} - -QObject *QWebFramePrivate::handle() -{ - return q; -} - -void QWebFramePrivate::contentsSizeDidChange(const QSize &size) -{ - emit q->contentsSizeChanged(size); -} - -int QWebFramePrivate::scrollBarPolicy(Qt::Orientation orientation) const -{ - return (int) q->scrollBarPolicy(orientation); -} - -/*! - \class QWebFrame - \since 4.4 - \brief The QWebFrame class represents a frame in a web page. - - \inmodule QtWebKit - - QWebFrame represents a frame inside a web page. Each QWebPage - object contains at least one frame, the main frame, obtained using - QWebPage::mainFrame(). Additional frames will be created for HTML - \c{} or \c{